/*! For license information please see app.client.js.LICENSE.txt */
(()=>{var e={9703:(e,t,n)=>{var r,o;r=function(){"use strict";var e={exports:{}};!function(e){function t(e){var r=n(e);return function(e){return"#document-fragment"===e.nodeName&&"ShadowRoot"===e.constructor.name}(r)?t(r.host):r}function n(e){return null!=e.parentNode?n(e.parentNode):e}e.exports&&(e.exports=function(e){return"object"==typeof e&&Boolean(e.composed)?t(this):n(this)})}(e);var t,n,r=e.exports;"undefined"!=typeof document&&(n=(t=Element.prototype).matches||t.matchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector,t.matches=t.matchesSelector=n||function(e){var n=(t.getRootNode?t.getRootNode():r.call(t)).querySelectorAll(e),o=this;return Array.prototype.some.call(n,(function(e){return e===o}))});const o=e=>{const t=e.composedPath();return Array.isArray(t)&&t.length>0?t[0]:e.target},i=e=>{const t=o(e);return!t||!t.matches},a=".yfm .yfm-tabs",c=".yfm .yfm-tab-list",l=".yfm .yfm-tab",s=".yfm .yfm-tab-panel",A="active";"undefined"!=typeof document&&document.addEventListener("click",(e=>{const t=o(e);!i(e)&&t.matches(l)&&function(e){const t=e.parentNode;if(!t||!t.matches(c)||!t.parentNode||!t.parentNode.matches(a)||e.classList.contains(A))return;const n=e,r=n.parentNode,o=null==r?void 0:r.parentNode,i=Array.from((null==o?void 0:o.querySelectorAll(l))||[]),u=Array.from((null==o?void 0:o.querySelectorAll(s))||[]),d=i.indexOf(n);for(let e=0;e<i.length;e++){const t=i[e],n=u[e];e===d?(t.classList.toggle(A,!0),t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0"),n.classList.toggle(A,!0)):(t.classList.toggle(A,!1),t.setAttribute("aria-selected","false"),t.setAttribute("tabindex","-1"),n.classList.toggle(A,!1))}}(t)}));"undefined"!=typeof document&&document.addEventListener("click",(e=>{const t=o(e);if(i(e)||!t.matches(".yfm-clipboard-button"))return;const n=t.parentNode;if(!n)return;const r=n.querySelector("pre code");r&&function(e){if(!e)return Promise.resolve();if(navigator.clipboard&&(navigator.clipboard.writeText,1))return navigator.clipboard.writeText(e);const t=document.createElement("textarea");return t.setAttribute("style","position: absolute; left: 1000%"),t.textContent=e,document.body.append(t),t.select(),document.execCommand("copy"),document.body.removeChild(t),Promise.resolve()}(r.innerText).then((()=>{!function(e){if(!e)return;const t=e.getAttribute("data-animation"),n=e.getRootNode().getElementById(`visibileAnimation-${t}`);n&&n.beginElement()}(n.querySelector(".yfm-clipboard-button"))}))}));const u={CUT:".yfm .yfm-cut",TITLE:".yfm .yfm-cut-title",CONTENT:".yfm .yfm-cut-content"},d="open";function p(e){var t;return e instanceof HTMLElement&&(null===(t=null==e?void 0:e.matches)||void 0===t?void 0:t.call(e,u.TITLE))}"undefined"!=typeof document&&document.addEventListener("click",(e=>{if(i(e))return;const t=function(e){var t;const n=o(e);if(p(n))return n;const r=null===(t=e.composedPath)||void 0===t?void 0:t.call(e);return null==r?void 0:r.find(p)}(e);t&&function(e){const t=e.parentNode;t instanceof HTMLElement&&t.classList.toggle(d)}(t)}));const y={TITLE:".yfm .yfm-term_title",CONTENT:".yfm .yfm-term_dfn"},g="open",h=y.CONTENT.replace(/\./g,"")+" "+g;let f=!0;function v(e,t){const{x:n,y:r,right:o,left:i,width:a,height:c}=t.getBoundingClientRect(),l=C(t);if(!l)return;const{right:s,left:A}=l.getBoundingClientRect();if((s<i||A>o)&&!f)return void b(e);f&&l&&(l.addEventListener("scroll",m),f=!1);const u=Number(e.getAttribute("relativeX")),d=Number(e.getAttribute("relativeY"));if(u===n&&d===r)return;e.setAttribute("relativeX",String(n)),e.setAttribute("relativeY",String(r));const p=c+5,y=e.parentElement;if(!y)return;const{width:g}=e.getBoundingClientRect(),{left:h}=y.getBoundingClientRect(),v=g+Number(x(t).left),w=document.body.clientWidth>v?0:g-a,E=x(y).top-y.offsetTop;e.style.top=Number(x(t).top+p-E)+"px",e.style.left=Number(x(t).left-h+y.offsetLeft-w)+"px"}function m(){const e=document.getElementsByClassName(h)[0];if(!e)return;const t=e.getAttribute("term-id")||"",n=document.getElementById(t);n&&v(e,n)}function C(e){return e?e.closest("table")||e.closest("code")||e.parentElement:null}function b(e){e.classList.remove(g);const t=e.getAttribute("term-id")||"",n=C(document.getElementById(t));n&&(n.removeEventListener("scroll",m),f=!0)}function x(e){const t=e.getBoundingClientRect(),n=document.body,r=document.documentElement,o=window.pageYOffset||r.scrollTop||n.scrollTop,i=window.pageXOffset||r.scrollLeft||n.scrollLeft,a=r.clientTop||n.clientTop||0,c=r.clientLeft||n.clientLeft||0,l=t.top+o-a,s=t.left+i-c;return{top:Math.round(l),left:Math.round(s)}}"undefined"!=typeof document&&(document.addEventListener("click",(e=>{const t=document.getElementsByClassName(h)[0],n=o(e),r=n.getAttribute("id"),a=n.getAttribute("term-key");let c=document.getElementById(a+"_element");if(a&&!c&&(c=function(e){var t;const n=e.getAttribute("term-key"),r=document.getElementById(`${n}_template`),o=null==r?void 0:r.content.cloneNode(!0).firstChild;return null===(t=null==r?void 0:r.parentElement)||void 0===t||t.appendChild(o),r.remove(),o}(n)),t&&r===t.getAttribute("term-id"))return void b(t);const l=n.closest([y.CONTENT.replace(" ",""),g].join("."));t&&!l&&b(t),!i(e)&&n.matches(y.TITLE)&&c&&(function(e,t){const n=t.getAttribute("id")||Math.random().toString(36).substr(2,8);null==e||e.setAttribute("term-id",n)}(c,n),v(c,n),c.classList.toggle(g))})),document.addEventListener("keydown",(e=>{const t=document.getElementsByClassName(h)[0];"Escape"===e.key&&t&&b(t)})),window.addEventListener("resize",(()=>{const e=document.getElementsByClassName(h)[0];if(!e)return;const t=e.getAttribute("term-id")||"",n=document.getElementById(t);n?v(e,n):e.classList.toggle(g)})))},void 0===(o=r.call(t,n,t,e))||(e.exports=o)},2406:(e,t,n)=>{"use strict";var r=n(2175),o=r.setup();function i(e){var t=o(e);function n(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var r,o=e.shift(),i=e[0],a=e[1];return"string"==typeof o&&"string"!=typeof i||(a=i,i=null),r=t(o,i),a&&(r=r.mix(a)),r.toString()}return n.builder=function(){return t},n}i.setup=function(e){o=r.setup(e)},i.reset=function(){o=r.setup()},t.Z=i},9380:()=>{var e,t;"undefined"!=typeof Element&&(t=(e=Element.prototype).matches||e.matchesSelector||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector,e.matches=e.matchesSelector=t||function(e){var t=this;return Array.prototype.some.call(document.querySelectorAll(e),(function(e){return e===t}))}),"undefined"!=typeof document&&document.addEventListener("click",(function(e){var t=e.target.href,n=window.location.origin;if(e.target.matches(".dc-doc-layout__center a")&&t.startsWith(n)){e.preventDefault();var r=".html";if(t.endsWith("/"))return void(window.location.href="".concat(t).concat("index").concat(r));var o=t.split("#");if(o.length>0&&!o[0].endsWith(r))return o[0]+=r,void(window.location.href=o.join("#"));window.location.href=t}}))},2853:(e,t,n)=>{"use strict";var r=n(2175),o=(0,r.setup)();function i(e){return"string"==typeof e}function a(e){var t=o(e);function n(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var r,o,a=e.shift(),c=e[0],l=e[1];return("string"!=typeof a||i(o=c)||Array.isArray(o)&&o.every(i))&&(l=c,c=null),r=t(a,c),l&&(r=r.mix(l)),r.toString()}return n.builder=function(){return t},n}a.setup=function(e){o=(0,r.setup)(e)},a.reset=function(){o=(0,r.setup)()},t.Z=a},2175:function(e){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1);t.ERROR_BLOCK_NAME_TYPE="Block name should be a string",t.ERROR_BLOCK_NAME_EMPTY="Block name should be non-empty";var o={ns:"",el:"__",mod:"_",modValue:"_"},i=function(e){return"string"==typeof e},a=function(e){return"string"!=typeof e},c=function(e,t){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var i=r.assign({},t);return i.mixes=i.mixes.concat(n),u(i,e)},l=function(e,t,n){for(var o=[],i=3;i<arguments.length;i++)o[i-3]=arguments[i];var a=r.assign({},t),c=r.assign({},a.states||{});return c[n]=r.assign.apply(void 0,[{},c[n]||{}].concat(o)),a.states=c,u(a,e)},s=function(e,t,n,r){return String.prototype.split.call(A(e,t),n,r)},A=function(e,t){var n=t.name,r=t.mods,o=t.mixes,i=t.states,a=[n];if(r&&(a=a.concat(Object.keys(r).filter((function(e){return r[e]})).map((function(t){var o=r[t];return!0===o?n+e.mod+t:n+e.mod+t+e.modValue+o})))),i&&Object.keys(i).forEach((function(e){var t=i[e];a=a.concat(Object.keys(t).filter((function(e){return t[e]})).map((function(t){return e+t})))})),e.ns&&(a=a.map((function(t){return e.ns+t}))),o&&(a=a.concat(function(e){return void 0===e&&(e=[]),e.map((function(e){return Array.isArray(e)?e.join(" "):"object"==typeof e&&null!==e||"function"==typeof e?e.toString():"string"==typeof e?e:""})).filter((function(e){return!!e}))}(o))),e.classMap){var c=e.classMap;a=a.map((function(e){return c[e]||e}))}return a.join(" ")},u=function(e,t){return{mix:c.bind(null,t,e),split:s.bind(null,t,e),is:l.bind(null,t,e,"is-"),has:l.bind(null,t,e,"has-"),state:l.bind(null,t,e,"is-"),toString:A.bind(null,t,e)}},d=function(e,t){var n={name:e,mods:{},mixes:[],states:{"is-":{},"has-":{}}},o=function(e,t){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];if(!n.length)return A(e,t);var c=r.assign({},t),l=n.filter(i).reduce((function(t,n){return t+e.el+n}),"");l&&(c.name=c.name+l);var s=n.filter(a).reduce((function(e,t){return r.assign(e,t)}),{});return c.mods=r.assign({},c.mods,s),u(c,e)}.bind(null,t,n);return o.mix=c.bind(null,t,n),o.split=s.bind(null,t,n),o.is=l.bind(null,t,n,"is-"),o.has=l.bind(null,t,n,"has-"),o.state=l.bind(null,t,n,"is-"),o.toString=A.bind(null,t,n),o};t.setup=function(e){return void 0===e&&(e={}),function(n){if("string"!=typeof n)throw new Error(t.ERROR_BLOCK_NAME_TYPE);var i=n.trim();if(!i)throw new Error(t.ERROR_BLOCK_NAME_EMPTY);return d(i,r.assign({},o,e))}},t.block=t.setup(),t.default=t.block},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=0;r<t.length;r++){var o=t[r];for(var i in o)o.hasOwnProperty(i)&&(e[i]=o[i])}return e}}])},640:(e,t,n)=>{"use strict";var r=n(1742),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,i,a,c,l,s,A=!1;t||(t={}),n=t.debug||!1;try{if(a=r(),c=document.createRange(),l=document.getSelection(),(s=document.createElement("span")).textContent=e,s.ariaHidden="true",s.style.all="unset",s.style.position="fixed",s.style.top=0,s.style.clip="rect(0, 0, 0, 0)",s.style.whiteSpace="pre",s.style.webkitUserSelect="text",s.style.MozUserSelect="text",s.style.msUserSelect="text",s.style.userSelect="text",s.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=o[t.format]||o.default;window.clipboardData.setData(i,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(s),c.selectNodeContents(s),l.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");A=!0}catch(r){n&&console.error("unable to copy using execCommand: ",r),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),A=!0}catch(r){n&&console.error("unable to copy using clipboardData: ",r),n&&console.error("falling back to prompt"),i=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,e)}}finally{l&&("function"==typeof l.removeRange?l.removeRange(c):l.removeAllRanges()),s&&document.body.removeChild(s),a()}return A}},9447:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yfm-sandbox__column{display:flex;flex-direction:column}.yfm-sandbox__card-text{padding:16px;display:block;text-align:initial}.yfm-sandbox__card-wrapper{position:relative}.yfm-sandbox__card{overflow-x:auto}.yfm-sandbox__loader-container{height:300px;display:flex;align-items:center;justify-content:center}.yfm-sandbox .yfm-sandbox__pre{margin:0}.yfm-sandbox .yfm-sandbox__possible-reasons{margin-top:15px}.yfm-sandbox__clipboard-button{position:absolute;top:16px;right:16px;display:none}.yfm-sandbox__card-wrapper:hover .yfm-sandbox__clipboard-button{display:block}.openapi__required{color:var(--yc-color-text-danger)}","",{version:3,sources:["webpack://./node_modules/@diplodoc/openapi-extension/runtime/index.min.css"],names:[],mappings:"AAAA,qBAAA,YAAA,CAAA,qBAAA,CAAA,wBAAA,YAAA,CAAA,aAAA,CAAA,kBAAA,CAAA,2BAAA,iBAAA,CAAA,mBAAA,eAAA,CAAA,+BAAA,YAAA,CAAA,YAAA,CAAA,kBAAA,CAAA,sBAAA,CAAA,+BAAA,QAAA,CAAA,4CAAA,eAAA,CAAA,+BAAA,iBAAA,CAAA,QAAA,CAAA,UAAA,CAAA,YAAA,CAAA,gEAAA,aAAA,CAAA,mBAAA,iCAAA",sourcesContent:[".yfm-sandbox__column{display:flex;flex-direction:column}.yfm-sandbox__card-text{padding:16px;display:block;text-align:initial}.yfm-sandbox__card-wrapper{position:relative}.yfm-sandbox__card{overflow-x:auto}.yfm-sandbox__loader-container{height:300px;display:flex;align-items:center;justify-content:center}.yfm-sandbox .yfm-sandbox__pre{margin:0}.yfm-sandbox .yfm-sandbox__possible-reasons{margin-top:15px}.yfm-sandbox__clipboard-button{position:absolute;top:16px;right:16px;display:none}.yfm-sandbox__card-wrapper:hover .yfm-sandbox__clipboard-button{display:block}.openapi__required{color:var(--yc-color-text-danger)}\n/*# sourceMappingURL=index.min.css.map */\n"],sourceRoot:""}]);const c=a},6921:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-bookmark-button{vertical-align:middle;margin:0 4px 4px 4px}.dc-bookmark-button:hover::before{background-color:rgba(0,0,0,0)}.dc-bookmark-button_active .dc-bookmark-button__icon{color:var(--yc-color-base-special)}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/BookmarkButton/BookmarkButton.scss"],names:[],mappings:"AAAA,oBACI,qBAAA,CACA,oBAAA,CAEA,kCACI,8BAAA,CAGJ,qDACI,kCAAA",sourcesContent:[".dc-bookmark-button {\n    vertical-align: middle;\n    margin: 0 4px 4px 4px;\n\n    &:hover::before {\n        background-color: transparent;\n    }\n\n    &_active &__icon {\n        color: var(--yc-color-base-special);\n    }\n}\n"],sourceRoot:""}]);const c=a},181:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'.dc-breadcrumbs{font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height);width:100%}.dc-breadcrumbs__items{margin:0;padding:0;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--yc-color-text-secondary)}.dc-breadcrumbs__item{display:inline}.dc-breadcrumbs__item::after{content:" / ";margin:0 5px;color:var(--yc-color-text-hint)}.dc-breadcrumbs__item:last-child::after{display:none}.dc-breadcrumbs__item:last-child{color:var(--yc-color-text-primary)}.dc-breadcrumbs__text{white-space:nowrap}',"",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Breadcrumbs/Breadcrumbs.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAAA,gBAGA,yCAAA,CAAA,6CCCI,CAAA,UDCA,CAAA,uBAEA,QCCA,CAAA,SACA,CAAA,eACA,CAAA,kBAAA,CAAA,eDCI,CAAA,sBACA,CAAA,oCAEA,CAAA,sBAGJ,cACI,CAAA,6BAEA,aACI,CAAA,YACA,CAAA,+BACA,CAAA,wCAGJ,YACI,CAAA,iCAEJ,kCACI,CAAA,sBAIR,kBACI",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n.dc-breadcrumbs {\n    @include text-size(body-1);\n    width: 100%;\n\n    &__items {\n        @include reset-list-style();\n\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n\n        color: var(--yc-color-text-secondary);\n    }\n\n    &__item {\n        display: inline;\n\n        &::after {\n            content: '\\a0/ ';\n            margin: 0 5px;\n            color: var(--yc-color-text-hint);\n        }\n\n        &:last-child::after {\n            display: none;\n        }\n        &:last-child {\n            color: var(--yc-color-text-primary);\n        }\n    }\n\n    &__text {\n        white-space: nowrap;\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},7108:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".contributor-avatars__one_contributor{display:flex;margin:0 1.5px}.contributor-avatars__one_contributor a,.contributor-avatars__one_contributor a:hover,.contributor-avatars__one_contributor a:visited,.contributor-avatars__one_contributor a:active{color:inherit;text-decoration:none;display:flex}.contributor-avatars__one_contributor a{cursor:pointer}.contributor-avatars__one_contributor>*{font-size:13px;font-weight:400;margin-right:5px;align-self:center}@media screen and (max-width: 577px){.contributor-avatars__one_contributor_onlyAuthor>*:last-child{margin-left:5px}.contributor-avatars__one_contributor>*:last-child,.contributor-avatars__one_contributor>.desktop{display:none}.contributor-avatars__one_contributor_onlyAuthor>*:last-child{display:block}.contributor-avatars__one_contributor>*:not(:last-child){margin-right:0px}}@media screen and (min-width: 577px){.contributor-avatars__one_contributor>.mobile{display:none}.contributor-avatars__one_contributor>*:last-child{margin-right:0px}}.contributor-avatars__avatar{border-radius:50%;box-shadow:0 0 0 1.5px var(--yc-color-line-generic-accent)}.contributor-avatars__avatar_size_small{height:23px;width:23px}.contributor-avatars__avatar_size_big{height:33px;width:33px}.contributor-avatars__avatar_default{text-align:center;display:flex;flex-direction:column;justify-content:center;font-size:12px;font-weight:500}.contributor-avatars__displayed_avatars{display:flex}.contributor-avatars__displayed_avatars a,.contributor-avatars__displayed_avatars a:hover,.contributor-avatars__displayed_avatars a:visited,.contributor-avatars__displayed_avatars a:active{color:inherit;text-decoration:none;display:flex}.contributor-avatars__displayed_avatars a{cursor:pointer}.contributor-avatars__displayed_avatars>*{margin-left:1.5px;margin-right:calc(1.5px + 2px)}.contributor-avatars__hidden_avatars{font-size:12px;font-weight:500;color:var(--yc-color-text-secondary);border-radius:50%;text-align:center;cursor:pointer}.contributor-avatars__hidden_avatars>*{background:var(--yc-color-base-misc);flex-direction:column;text-align:center;display:flex;justify-content:center;padding-left:3px;padding-right:1px;margin:0 1.5px;box-shadow:0 0 0 1.5px var(--yc-color-line-generic-accent)}.contributor-avatars__details{display:flex}.contributor-avatars__details>div:last-child{font-size:13px;font-weight:400;margin:auto 12px}.contributor-avatars__details_name{color:var(--yc-color-text-primary);line-height:18px}.contributor-avatars__popup{box-shadow:0px 3px 24px rgba(0,0,0,.2)}.contributor-avatars__popup a,.contributor-avatars__popup a:hover,.contributor-avatars__popup a:visited,.contributor-avatars__popup a:active{color:inherit;text-decoration:none;display:flex}.contributor-avatars__popup a{cursor:pointer}.contributor-avatars__popup>*:not(:first-child){margin:12px}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/ContributorAvatars/ContributorAvatars.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AA6BI,sCACI,YAAA,CACA,cAAA,CAjBJ,qLAII,aAAA,CACA,oBAAA,CACA,YAAA,CAGJ,wCACI,cAAA,CAUA,wCC6CJ,cAAA,CACA,eAAA,CACA,gBAAA,CACA,iBAAA,CD5CI,qCACI,8DACI,eAAA,CAGJ,kGAEI,YAAA,CAGJ,8DACI,aAAA,CAGJ,yDACI,gBAAA,CAAA,CAIR,qCACI,8CACI,YAAA,CAGJ,mDACI,gBAAA,CAAA,CAMR,6BACI,iBAAA,CACA,0DAAA,CAGJ,wCACI,WAjEa,CAkEb,UAlEa,CAqEjB,sCACI,WArEW,CAsEX,UAtEW,CAyEf,qCACI,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,cArFS,CAsFT,eArFW,CAyFnB,wCACI,YAAA,CAjFJ,6LAII,aAAA,CACA,oBAAA,CACA,YAAA,CAGJ,0CACI,cAAA,CA0EA,0CACI,iBA5FG,CA6FH,8BAAA,CAIR,qCACI,cArGa,CAsGb,eArGe,CAsGf,oCAAA,CACA,iBAAA,CACA,iBAAA,CACA,cAAA,CAEA,uCACI,oCAAA,CACA,qBAAA,CACA,iBAAA,CACA,YAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CACA,cAAA,CACA,0DAAA,CAIR,8BACI,YAAA,CAEA,6CACI,cAAA,CACA,eAAA,CACA,gBAAA,CAIR,mCACI,kCAAA,CACA,gBAjIS,CAoIb,4BACI,sCAAA,CA/HJ,6IAII,aAAA,CACA,oBAAA,CACA,YAAA,CAGJ,8BACI,cAAA,CAwHA,gDACI,WA3II",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n$avatarsDistance: 2px;\n$avatarTextFontSize: 12px;\n$avatarTextFontWeight: 500;\n$detailsIndent: 12px;\n$avatarBorder: 1.5px;\n$textLineHeight: 18px;\n\n$avatarWrapperSmallSize: 23px;\n$avatarWrapperBigSize: 33px;\n\n@mixin disable-link-styles {\n    a,\n    a:hover,\n    a:visited,\n    a:active {\n        color: inherit;\n        text-decoration: none;\n        display: flex;\n    }\n\n    a {\n        cursor: pointer;\n    }\n}\n\n.contributor-avatars {\n    &__one_contributor {\n        display: flex;\n        margin: 0 $avatarBorder;\n        @include disable-link-styles;\n\n        & > * {\n            @include contributors-text();\n        }\n\n        @media screen and (max-width: map-get($screenBreakpoints, 'sm')) {\n            &_onlyAuthor > *:last-child {\n                margin-left: 5px;\n            }\n\n            & > *:last-child,\n            & > .desktop {\n                display: none;\n            }\n\n            &_onlyAuthor > *:last-child {\n                display: block;\n            }\n\n            & > *:not(:last-child) {\n                margin-right: 0px;\n            }\n        }\n\n        @media screen and (min-width: map-get($screenBreakpoints, 'sm')) {\n            & > .mobile {\n                display: none;\n            }\n\n            & > *:last-child {\n                margin-right: 0px;\n            }\n        }\n    }\n\n    &__avatar {\n        & {\n            border-radius: 50%;\n            box-shadow: 0 0 0 $avatarBorder var(--yc-color-line-generic-accent);\n        }\n\n        &_size_small {\n            height: $avatarWrapperSmallSize;\n            width: $avatarWrapperSmallSize;\n        }\n\n        &_size_big {\n            height: $avatarWrapperBigSize;\n            width: $avatarWrapperBigSize;\n        }\n\n        &_default {\n            text-align: center;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            font-size: $avatarTextFontSize;\n            font-weight: $avatarTextFontWeight;\n        }\n    }\n\n    &__displayed_avatars {\n        display: flex;\n        @include disable-link-styles;\n\n        & > * {\n            margin-left: $avatarBorder;\n            margin-right: calc(#{$avatarBorder} + #{$avatarsDistance});\n        }\n    }\n\n    &__hidden_avatars {\n        font-size: $avatarTextFontSize;\n        font-weight: $avatarTextFontWeight;\n        color: var(--yc-color-text-secondary);\n        border-radius: 50%;\n        text-align: center;\n        cursor: pointer;\n\n        & > * {\n            background: var(--yc-color-base-misc);\n            flex-direction: column;\n            text-align: center;\n            display: flex;\n            justify-content: center;\n            padding-left: 3px;\n            padding-right: 1px;\n            margin: 0 $avatarBorder;\n            box-shadow: 0 0 0 $avatarBorder var(--yc-color-line-generic-accent);\n        }\n    }\n\n    &__details {\n        display: flex;\n\n        & > div:last-child {\n            font-size: 13px;\n            font-weight: 400;\n            margin: auto $detailsIndent;\n        }\n    }\n\n    &__details_name {\n        color: var(--yc-color-text-primary);\n        line-height: $textLineHeight;\n    }\n\n    &__popup {\n        box-shadow: 0px 3px 24px rgba(0, 0, 0, 0.2);\n        @include disable-link-styles;\n\n        & > *:not(:first-child) {\n            margin: $detailsIndent;\n        }\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},1088:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".contributors{display:flex;margin:0 0 32px}.contributors__title{font-size:13px;font-weight:400;margin-right:5px;align-self:center}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Contributors/Contributors.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAEA,cACI,YAAA,CACA,eAAA,CAEA,qBCyEA,cAAA,CACA,eAAA,CACA,gBAAA,CACA,iBAAA",sourcesContent:["@import '../../../styles/mixins';\n\n.contributors {\n    display: flex;\n    margin: 0 0 32px;\n\n    &__title {\n        @include contributors-text();\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},3484:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-control__tooltip{display:flex;align-items:center;padding:4px 8px;border:none;height:26px}.dc-control__tooltip-text{font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height);display:block;white-space:nowrap}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Control/Control.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAGI,qBACI,YAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,WAAA,CAGJ,0BCRA,yCAAA,CACA,6CAAA,CDSI,aAAA,CACA,kBAAA",sourcesContent:["@import '../../../styles/mixins';\n\n.dc-control {\n    &__tooltip {\n        display: flex;\n        align-items: center;\n        padding: 4px 8px;\n        border: none;\n        height: 26px;\n    }\n\n    &__tooltip-text {\n        @include text-size(body-1);\n        display: block;\n        white-space: nowrap;\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},7227:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-controls{display:flex;align-items:center;font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height)}.dc-controls__control:not(:last-child),.dc-controls__divider{margin-right:4px}.dc-controls__list{padding:4px 0}.dc-controls__list_langs{width:120px}.dc-controls__list-icon{margin-right:8px}.dc-controls__lang-item{display:flex;padding:6px 12px;width:100%}@media(min-width: 769px){.dc-controls_vertical{flex-direction:column}.dc-controls_vertical .dc-controls__divider{height:1px;width:16px}.dc-controls_vertical .dc-controls__control:not(:last-child),.dc-controls_vertical .dc-controls__divider{margin-right:0;margin-bottom:4px}}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Controls/Controls.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAGA,aACI,YAAA,CACA,kBAAA,CCFA,yCAAA,CACA,6CAAA,CDIA,6DAEI,gBAAA,CAGJ,mBACI,aAAA,CAEA,yBACI,WAAA,CAIR,wBACI,gBAAA,CAGJ,wBACI,YAAA,CACA,gBAAA,CACA,UAAA,CAGJ,yBACI,sBACI,qBAAA,CAGJ,4CACI,UAAA,CACA,UAAA,CAGJ,yGAEI,cAAA,CACA,iBAAA,CAAA",sourcesContent:["@import '../../../styles/mixins';\n@import '../../../styles/variables';\n\n.dc-controls {\n    display: flex;\n    align-items: center;\n    @include text-size(body-1);\n\n    &__control:not(:last-child),\n    &__divider {\n        margin-right: 4px;\n    }\n\n    &__list {\n        padding: 4px 0;\n\n        &_langs {\n            width: 120px;\n        }\n    }\n\n    &__list-icon {\n        margin-right: 8px;\n    }\n\n    &__lang-item {\n        display: flex;\n        padding: 6px 12px;\n        width: 100%;\n    }\n\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        &_vertical {\n            flex-direction: column;\n        }\n\n        &_vertical &__divider {\n            height: 1px;\n            width: 16px;\n        }\n\n        &_vertical &__control:not(:last-child),\n        &_vertical &__divider {\n            margin-right: 0;\n            margin-bottom: 4px;\n        }\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},6798:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-divider-control{background:var(--yc-color-line-generic)}.dc-divider-control:first-child{display:none}.dc-divider-control:not(.dc-divider-control_vertical){width:100%;height:1px}.dc-divider-control_vertical{width:1px}.dc-divider-control.dc-divider-control_vertical.dc-divider-control_size_m{height:16px}.dc-divider-control.dc-divider-control_vertical.dc-divider-control_size_l{height:24px}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Controls/single-controls/DividerControl/DividerControl.scss"],names:[],mappings:"AAAA,oBACI,uCAAA,CAEA,gCACI,YAAA,CAGJ,sDACI,UAAA,CACA,UAAA,CAGJ,6BACI,SAAA,CAGJ,0EACI,WAAA,CAEJ,0EACI,WAAA",sourcesContent:[".dc-divider-control {\n    background: var(--yc-color-line-generic);\n\n    &:first-child {\n        display: none;\n    }\n\n    &:not(&_vertical) {\n        width: 100%;\n        height: 1px;\n    }\n\n    &_vertical {\n        width: 1px;\n    }\n\n    &#{&}_vertical#{&}_size_m {\n        height: 16px;\n    }\n    &#{&}_vertical#{&}_size_l {\n        height: 24px;\n    }\n}\n"],sourceRoot:""}]);const c=a},4565:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-settings-control__text-size-control{display:flex;align-items:center}.dc-settings-control__text-size-button_s{font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height)}.dc-settings-control__text-size-button_m{font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height)}.dc-settings-control__text-size-button_l{font-size:var(--yc-text-body-3-font-size);line-height:var(--yc-text-body-3-line-height)}.dc-settings-control__text-size-button-icon_active{color:var(--yc-color-base-special)}.dc-settings-control__popup{width:230px;font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height)}.dc-settings-control__list{padding:4px 0;width:230px}.dc-settings-control__list .yc-list__item_active{background:rgba(0,0,0,0)}.dc-settings-control__list-icon{margin-right:8px}.dc-settings-control__list-item{display:flex;padding:12px;width:100%}.dc-settings-control__list-item-description{color:var(--yc-color-text-secondary)}.dc-settings-control__list-item-control{display:flex;align-items:center;margin-left:auto}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Controls/single-controls/SettingsControl/SettingsControl.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAGI,wCACI,YAAA,CACA,kBAAA,CAIA,yCCNJ,yCAAA,CACA,6CAAA,CDQI,yCCTJ,yCAAA,CACA,6CAAA,CDWI,yCCZJ,yCAAA,CACA,6CAAA,CDiBI,mDACI,kCAAA,CAIR,4BACI,WAAA,CCxBJ,yCAAA,CACA,6CAAA,CD2BA,2BACI,aAAA,CACA,WAAA,CAEA,iDACI,wBAAA,CAIR,gCACI,gBAAA,CAGJ,gCACI,YAAA,CACA,YAAA,CACA,UAAA,CAGJ,4CACI,oCAAA,CAGJ,wCACI,YAAA,CACA,kBAAA,CACA,gBAAA",sourcesContent:["@import '../../../../../styles/mixins';\n\n.dc-settings-control {\n    &__text-size-control {\n        display: flex;\n        align-items: center;\n    }\n\n    &__text-size-button {\n        &_s {\n            @include text-size(body-1);\n        }\n        &_m {\n            @include text-size(body-2);\n        }\n        &_l {\n            @include text-size(body-3);\n        }\n    }\n\n    &__text-size-button-icon {\n        &_active {\n            color: var(--yc-color-base-special);\n        }\n    }\n\n    &__popup {\n        width: 230px;\n        @include text-size(body-1);\n    }\n\n    &__list {\n        padding: 4px 0;\n        width: 230px;\n\n        .yc-list__item_active {\n            background: transparent;\n        }\n    }\n\n    &__list-icon {\n        margin-right: 8px;\n    }\n\n    &__list-item {\n        display: flex;\n        padding: 12px;\n        width: 100%;\n    }\n\n    &__list-item-description {\n        color: var(--yc-color-text-secondary);\n    }\n\n    &__list-item-control {\n        display: flex;\n        align-items: center;\n        margin-left: auto;\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},8925:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-doc-layout{display:flex;align-items:center;margin:0 auto;height:100%;background:var(--yc-color-base-background)}@media(max-width: 768px){.dc-doc-layout{align-items:normal}}.dc-doc-layout__left,.dc-doc-layout__right{flex:0 0 auto;box-sizing:content-box}.dc-doc-layout__right{width:176px;padding-right:24px}.dc-doc-layout__right_full-screen,.dc-doc-layout__right_hidden-right{flex:initial}.dc-doc-layout__left{width:276px}.dc-doc-layout__left_full-screen{flex:initial}.dc-doc-layout__center{flex:1 1 auto;position:relative;min-width:0}.dc-doc-layout__center.dc-doc-layout__center_hidden-right.dc-doc-layout__center_regular-page-width:not(.dc-doc-layout__center_full-screen){max-width:824px}.dc-doc-layout__center_full-screen{flex:0 0 auto;width:100%}.dc-doc-layout__center_loading{height:calc(100vh - var(--dc-header-height, 0px));overflow:hidden}.dc-doc-layout__toc{position:fixed;z-index:100;top:var(--dc-header-height, 0px);padding-left:24px;width:252px;background-color:var(--yc-color-base-background);font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height)}.mobile .dc-doc-layout__desktop-only{display:none}.desktop .dc-doc-layout__mobile-only{display:none}@media(max-width: 768px){.dc-doc-layout{flex-direction:column-reverse}.dc-doc-layout__right{display:none}.dc-doc-layout__left{width:auto}.dc-doc-layout__toc{position:static;width:auto;height:auto}.dc-doc-layout__toc .dc-toc{height:100% !important}}@media screen and (min-width: 1280px){.dc-doc-layout__center .dc-doc-layout.dc-doc-layout_hidden-right.dc-doc-layout_regular-page-width:not(.dc-doc-layout_full-screen){max-width:836px}.dc-doc-layout__right{width:200px}.dc-doc-layout__toc{width:252px}.dc-doc-layout__left{width:276px}}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/DocLayout/DocLayout.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAGA,eACI,YAAA,CACA,kBAAA,CACA,aAAA,CACA,WAAA,CACA,0CAAA,CAEA,yBAPJ,eAQQ,kBAAA,CAAA,CAGJ,2CAEI,aAAA,CACA,sBAAA,CAGJ,sBACI,WAAA,CACA,kBAAA,CACA,qEAEI,YAAA,CAIR,qBACI,WAAA,CAEA,iCACI,YAAA,CAIR,uBACI,aAAA,CACA,iBAAA,CACA,WAAA,CAEA,2IACI,eAAA,CAGJ,mCACI,aAAA,CACA,UAAA,CAGJ,+BACI,iDAAA,CACA,eAAA,CAIR,oBACI,cAAA,CACA,WAAA,CACA,gCAAA,CACA,iBAAA,CACA,WAAA,CACA,gDAAA,CC5DJ,yCAAA,CACA,6CAAA,CDgEI,qCACI,YAAA,CAKJ,qCACI,YAAA,CAIR,yBA5EJ,eA6EQ,6BAAA,CAEA,sBACI,YAAA,CAGJ,qBACI,UAAA,CAGJ,oBACI,eAAA,CACA,UAAA,CACA,WAAA,CAEA,4BAEI,sBAAA,CAAA,CAKZ,sCACI,kIACI,eAAA,CAGJ,sBACI,WAAA,CAGJ,oBACI,WAAA,CAGJ,qBACI,WAAA,CAAA",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n.dc-doc-layout {\n    display: flex;\n    align-items: center;\n    margin: 0 auto;\n    height: 100%;\n    background: var(--yc-color-base-background);\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        align-items: normal;\n    }\n\n    &__left,\n    &__right {\n        flex: 0 0 auto;\n        box-sizing: content-box;\n    }\n\n    &__right {\n        width: 176px;\n        padding-right: 24px;\n        &_full-screen,\n        &_hidden-right {\n            flex: initial;\n        }\n    }\n\n    &__left {\n        width: 276px;\n\n        &_full-screen {\n            flex: initial;\n        }\n    }\n\n    &__center {\n        flex: 1 1 auto;\n        position: relative;\n        min-width: 0;\n\n        &#{&}_hidden-right#{&}_regular-page-width:not(#{&}_full-screen) {\n            max-width: calc(736px + 176px / 2);\n        }\n\n        &_full-screen {\n            flex: 0 0 auto;\n            width: 100%;\n        }\n\n        &_loading {\n            height: calc(100vh - var(--dc-header-height, #{$headerHeight}));\n            overflow: hidden;\n        }\n    }\n\n    &__toc {\n        position: fixed;\n        z-index: 100;\n        top: var(--dc-header-height, #{$headerHeight});\n        padding-left: 24px;\n        width: 252px;\n        background-color: var(--yc-color-base-background);\n        @include text-size(body-1);\n    }\n\n    &__desktop-only {\n        .mobile & {\n            display: none;\n        }\n    }\n\n    &__mobile-only {\n        .desktop & {\n            display: none;\n        }\n    }\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        flex-direction: column-reverse;\n\n        &__right {\n            display: none;\n        }\n\n        &__left {\n            width: auto;\n        }\n\n        &__toc {\n            position: static;\n            width: auto;\n            height: auto;\n\n            .dc-toc {\n                /* stylelint-disable-next-line declaration-no-important */\n                height: 100% !important;\n            }\n        }\n    }\n\n    @media screen and (min-width: 1280px) {\n        &__center &#{&}_hidden-right#{&}_regular-page-width:not(#{&}_full-screen) {\n            max-width: calc(736px + 200px / 2);\n        }\n\n        &__right {\n            width: 200px;\n        }\n\n        &__toc {\n            width: 252px;\n        }\n\n        &__left {\n            width: 276px;\n        }\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},9153:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-doc-leading-page{display:flex;max-width:1440px;font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height)}.dc-doc-leading-page_regular-page-width{max-width:1280px}.dc-doc-leading-page__main{margin-bottom:40px;padding:0 40px}.dc-doc-leading-page__title{margin:40px 0 20px;font-size:var(--yc-text-display-2-font-size);line-height:var(--yc-text-display-2-line-height)}.dc-doc-leading-page__description a{outline:none;color:var(--yc-color-text-link);text-decoration:none;cursor:pointer}.utilityfocus .dc-doc-leading-page__description a:focus{outline:2px solid #ffdb4d}.dc-doc-leading-page__description a:hover,.dc-doc-leading-page__description a:active{color:var(--yc-color-text-link-hover)}.dc-doc-leading-page__description a:not([href]){color:inherit}.dc-doc-leading-page__links{margin:0;padding:0;list-style:none;display:flex;justify-content:space-between;flex-flow:column wrap}.dc-doc-leading-page__links_root{flex-direction:row;margin-top:70px;margin-bottom:-20px}.dc-doc-leading-page__links-left{padding-right:10px}.dc-doc-leading-page__links-item_root{display:flex;min-width:280px;max-width:400px;width:calc(50% - 20px);padding-bottom:40px;margin-bottom:20px;border-bottom:1px solid var(--yc-color-line-generic)}.dc-doc-leading-page__links-title_root{font-size:var(--yc-text-header-1-font-size);line-height:var(--yc-text-header-1-line-height);font-weight:500;margin-bottom:10px;font-weight:500}.dc-doc-leading-page__links-link{outline:none;color:var(--yc-color-text-link);text-decoration:none;cursor:pointer}.utilityfocus .dc-doc-leading-page__links-link:focus{outline:2px solid #ffdb4d}.dc-doc-leading-page__links-link:hover,.dc-doc-leading-page__links-link:active{color:var(--yc-color-text-link-hover)}@media(max-width: 768px){.dc-doc-leading-page__main{margin-left:0;margin-bottom:40px;padding:0 20px}.dc-doc-leading-page__links-item{width:100%}}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/DocLeadingPage/DocLeadingPage.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss","webpack://./node_modules/@doc-tools/components/styles/variables.scss"],names:[],mappings:"AAGA,qBACI,YAAA,CACA,gBAAA,CCFA,yCAAA,CACA,6CAAA,CDKA,wCACI,gBAAA,CAGJ,2BACI,kBAAA,CACA,cAAA,CAGJ,4BACI,kBAAA,CChBJ,4CAAA,CACA,gDAAA,CDqBI,oCCDJ,YAAA,CAUA,+BAAA,CACA,oBAAA,CACA,cAAA,CAVA,wDACI,yBAAA,CAWJ,qFAEI,qCAAA,CDZI,gDACI,aAAA,CAKZ,4BC1BA,QAAA,CACA,SAAA,CACA,eAAA,CD2BI,YAAA,CACA,6BAAA,CACA,qBAAA,CAEA,iCACI,kBAAA,CACA,eAAA,CACA,mBAAA,CAIR,iCACI,kBAAA,CAIA,sCACI,YAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,mBAAA,CACA,kBEvDa,CFwDb,oDAAA,CAKJ,uCC9DJ,2CAAA,CACA,+CAAA,CA6DA,eAAA,CDGQ,kBAAA,CACA,eAAA,CAIR,iCCjDA,YAAA,CAUA,+BAAA,CACA,oBAAA,CACA,cAAA,CAVA,qDACI,yBAAA,CAWJ,+EAEI,qCAAA,CDqCJ,yBACI,2BACI,aAAA,CACA,kBAAA,CACA,cAAA,CAGJ,iCACI,UAAA,CAAA",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n.dc-doc-leading-page {\n    display: flex;\n    max-width: 1440px;\n\n    @include text-size(body-2);\n\n    &_regular-page-width {\n        max-width: 1280px;\n    }\n\n    &__main {\n        margin-bottom: 40px;\n        padding: 0 40px;\n    }\n\n    &__title {\n        margin: 40px 0 $normalOffset;\n\n        @include text-size(display-2);\n    }\n\n    &__description {\n        a {\n            @include link();\n\n            &:not([href]) {\n                color: inherit;\n            }\n        }\n    }\n\n    &__links {\n        @include reset-list-style();\n\n        display: flex;\n        justify-content: space-between;\n        flex-flow: column wrap;\n\n        &_root {\n            flex-direction: row;\n            margin-top: 70px;\n            margin-bottom: -$blockMarginBottomLarge;\n        }\n    }\n\n    &__links-left {\n        padding-right: 10px;\n    }\n\n    &__links-item {\n        &_root {\n            display: flex;\n            min-width: 280px;\n            max-width: 400px;\n            width: calc(50% - 20px);\n            padding-bottom: 40px;\n            margin-bottom: $blockMarginBottomLarge;\n            border-bottom: 1px solid var(--yc-color-line-generic);\n        }\n    }\n\n    &__links-title {\n        &_root {\n            @include heading4();\n\n            margin-bottom: 10px;\n            font-weight: 500;\n        }\n    }\n\n    &__links-link {\n        @include link();\n    }\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        &__main {\n            margin-left: 0;\n            margin-bottom: 40px;\n            padding: 0 20px;\n        }\n\n        &__links-item {\n            width: 100%;\n        }\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n","// Sizes\n$headerHeight: 0px;\n$normalOffset: 20px;\n$miniTocOffset: 56px;\n$blockMarginBottomLarge: 20px;\n$blockMarginBottomMedium: 15px;\n$headerMarginTopLarge: 40px;\n$headerMarginTopMedium: 32px;\n$popupPadding: 16px;\n$centerBlockMaxWidth: 736px;\n\n$screenBreakpoints: (\n    'xs': 375px,\n    'sm': 577px,\n    'md': 769px,\n    'lg': 1081px,\n    'xl': 1185px,\n);\n"],sourceRoot:""}]);const c=a},3343:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-doc-page{position:relative;font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);width:1440px}.dc-doc-page__aside{position:fixed;top:calc(var(--dc-header-height, 0px) + var(--dc-subheader-height));padding-top:24px;width:176px;font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height)}@media screen and (min-width: 1280px){.dc-doc-page__aside{width:200px}}.dc-doc-page__main{padding:20px 36px 24px;overflow:hidden;display:flex;flex-direction:column;min-height:calc(100vh - var(--dc-header-height, 0px) - var(--dc-subheader-height))}.dc-doc-page__loader-wrapper{background:var(--yc-color-base-background);padding-top:calc((100vh - var(--dc-header-height, 0px))/2);display:flex;justify-content:center;position:absolute;width:100%;top:0;z-index:101;height:100%}.dc-doc-page__controls{display:flex;top:var(--dc-header-height, 0px);align-items:center;height:40px;z-index:102;position:absolute;right:7px}.dc-doc-page__controls>.dc-controls{position:fixed;top:calc(6px + var(--dc-header-height, 0px))}@media(max-width: 768px){.dc-doc-page__controls>.dc-controls{position:static}}@media(min-width: 769px){.dc-doc-page__controls_vertical{top:calc(6px + var(--dc-header-height, 0px));justify-content:center;height:auto;width:36px;position:absolute;right:0}}.dc-doc-page__body_text-size_s.yfm{font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height);--dc-code-font-size: 12px;--dc-code-line-height: 18px;--dc-code-short-font-size: 12px;--dc-code-short-line-height: 14px;--dc-code-short-padding: 1px 2px}.dc-doc-page__body_text-size_m.yfm{font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);--dc-code-font-size: 14px;--dc-code-line-height: 20px;--dc-code-short-font-size: 14px;--dc-code-short-line-height: 16px;--dc-code-short-padding: 1px 4px}.dc-doc-page__body_text-size_l.yfm{font-size:var(--yc-text-body-3-font-size);line-height:var(--yc-text-body-3-line-height);--dc-code-font-size: 16px;--dc-code-line-height: 24px;--dc-code-short-font-size: 16px;--dc-code-short-line-height: 20px;--dc-code-short-padding: 1px 6px}.dc-doc-page__breadcrumbs{height:40px;display:flex;align-items:center;padding:0 36px}.dc-doc-page__feedback{margin-top:84px}.dc-doc-page__title{margin-bottom:8px;font-size:var(--yc-text-display-2-font-size);line-height:var(--yc-text-display-2-line-height)}.dc-doc-page__content{flex:1;margin-bottom:50px}.dc-doc-page__content-mini-toc{display:none;margin-bottom:20px}.dc-doc-page__search-bar{background:var(--yc-color-base-background);width:100%;height:40px;position:sticky;top:calc(var(--dc-header-height, 0px) + 6px);z-index:101;padding:0 36px}@media(max-width: 768px){.dc-doc-page__search-bar{padding:0 10px}}.dc-doc-page__search-bar+.dc-doc-page__breadcrumbs{margin-top:12px}.dc-doc-page_full-screen{--dc-header-height: 0px}.dc-doc-page_full-screen .dc-doc-page__breadcrumbs{padding:0 24px}.dc-doc-page_full-screen .dc-doc-page__main,.dc-doc-page_full-screen .dc-nav-toc-panel__content{padding-left:64px;padding-right:64px}.dc-doc-page_regular-page-width{width:1280px}.dc-doc-page.dc-doc-page_single-page .dc-doc-page__header-container{position:relative;padding-right:200px}.dc-doc-page.dc-doc-page_full-screen.dc-doc-page_regular-page-width{max-width:736px}.dc-doc-page.dc-doc-page_full-screen.dc-doc-page_regular-page-width .dc-doc-page__main{padding-left:0;padding-right:0}.dc-doc-page.dc-doc-page_full-screen.dc-doc-page_regular-page-width .dc-doc-page__breadcrumbs{padding:0}.dc-doc-page.dc-doc-page_full-screen.dc-doc-page_regular-page-width .dc-nav-toc-panel__content{max-width:736px;padding:0}@media(max-width: 768px){.dc-doc-page__main{padding:0 20px}.dc-doc-page__breadcrumbs{padding:0 20px}.dc-doc-page__content-mini-toc{display:block}.dc-doc-page__toc-nav-panel{padding-bottom:50px}.dc-doc-page__controls{padding-left:20px;position:static}}.dc-doc-page__separator{margin:0 5px 32px 0;align-self:center}.dc-doc-page__page-contributors{display:flex}@media screen and (max-width: 1440px){.dc-doc-page:not(.dc-doc-page_regular-page-width){width:100%}}@media screen and (max-width: 1136px){.dc-doc-page_regular-page-width{width:100%}}@media screen and (min-width: 1024px){.dc-doc-page.dc-doc-page_full-screen.dc-doc-page_regular-page-width .dc-doc-page__controls_vertical{right:-36px}}@media screen and (max-width: 1280px){.dc-doc-page_full-screen .dc-doc-page__main,.dc-doc-page_full-screen .dc-nav-toc-panel__content{padding-left:40px !important;padding-right:40px !important}.dc-doc-page_full-screen .dc-doc-page__breadcrumbs{padding-left:24px !important;padding-right:24px !important}}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/DocPage/DocPage.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAGA,aACI,iBAAA,CCDA,yCAAA,CACA,6CAAA,CDEA,YAAA,CAIA,oBACI,cAAA,CACA,mEAAA,CAEA,gBAAA,CACA,WAAA,CCZJ,yCAAA,CACA,6CAAA,CDeI,sCACI,oBACI,WAAA,CAAA,CAKZ,mBACI,sBAAA,CACA,eAAA,CACA,YAAA,CACA,qBAAA,CACA,kFAAA,CAKJ,6BACI,0CAAA,CACA,0DAAA,CACA,YAAA,CACA,sBAAA,CACA,iBAAA,CACA,UAAA,CACA,KAAA,CACA,WAAA,CACA,WAAA,CAGJ,uBACI,YAAA,CACA,gCAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,iBAAA,CACA,SAAA,CAEA,oCACI,cAAA,CACA,4CAAA,CAEA,yBAJJ,oCAKQ,eAAA,CAAA,CAIR,yBACI,gCACI,4CAAA,CACA,sBAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CAAA,CAOJ,mCC7ER,yCAAA,CACA,6CAAA,CD+EY,yBAAA,CACA,2BAAA,CAEA,+BAAA,CACA,iCAAA,CACA,gCAAA,CAGJ,mCCxFR,yCAAA,CACA,6CAAA,CD0FY,yBAAA,CACA,2BAAA,CAEA,+BAAA,CACA,iCAAA,CACA,gCAAA,CAGJ,mCCnGR,yCAAA,CACA,6CAAA,CDqGY,yBAAA,CACA,2BAAA,CAEA,+BAAA,CACA,iCAAA,CACA,gCAAA,CAKZ,0BACI,WAAA,CACA,YAAA,CACA,kBAAA,CACA,cAAA,CAGJ,uBACI,eAAA,CAGJ,oBACI,iBAAA,CC5HJ,4CAAA,CACA,gDAAA,CDgIA,sBACI,MAAA,CACA,kBAAA,CAGJ,+BACI,YAAA,CACA,kBAAA,CAGJ,yBACI,0CAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,4CAAA,CACA,WAAA,CACA,cAAA,CAEA,yBATJ,yBAUQ,cAAA,CAAA,CAIR,mDACI,eAAA,CAGJ,yBACI,uBAAA,CAEA,mDACI,cAAA,CAGJ,gGAEI,iBAAA,CACA,kBAAA,CAIR,gCACI,YAAA,CAGJ,oEACI,iBAAA,CACA,mBAAA,CAGJ,oEACI,eAAA,CAEA,uFACI,cAAA,CACA,eAAA,CAGJ,8FACI,SAAA,CAGJ,+FACI,eAAA,CACA,SAAA,CAIR,yBACI,mBACI,cAAA,CAGJ,0BACI,cAAA,CAGJ,+BACI,aAAA,CAGJ,4BACI,mBAAA,CAGJ,uBACI,iBAAA,CAEA,eAAA,CAAA,CAIR,wBACI,mBAAA,CACA,iBAAA,CAGJ,gCACI,YAAA,CAGJ,sCACI,kDACI,UAAA,CAAA,CAIR,sCACI,gCACI,UAAA,CAAA,CAIR,sCACI,oGACI,WAAA,CAAA,CAIR,sCACI,gGAEI,4BAAA,CACA,6BAAA,CAEJ,mDACI,4BAAA,CACA,6BAAA,CAAA",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n.dc-doc-page {\n    position: relative;\n    @include text-size(body-2);\n    width: 1440px;\n\n    $block: &;\n\n    &__aside {\n        position: fixed;\n        top: calc(var(--dc-header-height, #{$headerHeight}) + var(--dc-subheader-height));\n\n        padding-top: 24px;\n        width: 176px;\n\n        @include text-size(body-1);\n\n        @media screen and (min-width: 1280px) {\n            & {\n                width: 200px;\n            }\n        }\n    }\n\n    &__main {\n        padding: 20px 36px 24px;\n        overflow: hidden;\n        display: flex;\n        flex-direction: column;\n        min-height: calc(\n            100vh - var(--dc-header-height, #{$headerHeight}) - var(--dc-subheader-height)\n        );\n    }\n\n    &__loader-wrapper {\n        background: var(--yc-color-base-background);\n        padding-top: calc((100vh - var(--dc-header-height, #{$headerHeight})) / 2);\n        display: flex;\n        justify-content: center;\n        position: absolute;\n        width: 100%;\n        top: 0;\n        z-index: 101;\n        height: 100%;\n    }\n\n    &__controls {\n        display: flex;\n        top: var(--dc-header-height, #{$headerHeight});\n        align-items: center;\n        height: 40px;\n        z-index: 102;\n        position: absolute;\n        right: 7px;\n\n        & > .dc-controls {\n            position: fixed;\n            top: calc(6px + var(--dc-header-height, #{$headerHeight}));\n\n            @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n                position: static;\n            }\n        }\n\n        @media (min-width: map-get($screenBreakpoints, 'md')) {\n            &_vertical {\n                top: calc(6px + var(--dc-header-height, #{$headerHeight}));\n                justify-content: center;\n                height: auto;\n                width: 36px;\n                position: absolute;\n                right: 0;\n            }\n        }\n    }\n\n    &__body {\n        &_text-size {\n            &_s.yfm {\n                @include text-size(body-1);\n\n                --dc-code-font-size: 12px;\n                --dc-code-line-height: 18px;\n\n                --dc-code-short-font-size: 12px;\n                --dc-code-short-line-height: 14px;\n                --dc-code-short-padding: 1px 2px;\n            }\n\n            &_m.yfm {\n                @include text-size(body-2);\n\n                --dc-code-font-size: 14px;\n                --dc-code-line-height: 20px;\n\n                --dc-code-short-font-size: 14px;\n                --dc-code-short-line-height: 16px;\n                --dc-code-short-padding: 1px 4px;\n            }\n\n            &_l.yfm {\n                @include text-size(body-3);\n\n                --dc-code-font-size: 16px;\n                --dc-code-line-height: 24px;\n\n                --dc-code-short-font-size: 16px;\n                --dc-code-short-line-height: 20px;\n                --dc-code-short-padding: 1px 6px;\n            }\n        }\n    }\n\n    &__breadcrumbs {\n        height: 40px;\n        display: flex;\n        align-items: center;\n        padding: 0 36px;\n    }\n\n    &__feedback {\n        margin-top: 84px;\n    }\n\n    &__title {\n        margin-bottom: 8px;\n\n        @include text-size(display-2);\n    }\n\n    &__content {\n        flex: 1;\n        margin-bottom: 50px;\n    }\n\n    &__content-mini-toc {\n        display: none;\n        margin-bottom: 20px;\n    }\n\n    &__search-bar {\n        background: var(--yc-color-base-background);\n        width: 100%;\n        height: 40px;\n        position: sticky;\n        top: calc(var(--dc-header-height, #{$headerHeight}) + 6px);\n        z-index: 101;\n        padding: 0 36px;\n\n        @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n            padding: 0 10px;\n        }\n    }\n\n    &__search-bar + &__breadcrumbs {\n        margin-top: 12px;\n    }\n\n    &_full-screen {\n        --dc-header-height: 0px;\n\n        & #{$block}__breadcrumbs {\n            padding: 0 24px;\n        }\n\n        #{$block}__main,\n        & .dc-nav-toc-panel__content {\n            padding-left: 64px;\n            padding-right: 64px;\n        }\n    }\n\n    &_regular-page-width {\n        width: 1280px;\n    }\n\n    &#{&}_single-page &__header-container {\n        position: relative;\n        padding-right: 200px;\n    }\n\n    &#{&}_full-screen#{&}_regular-page-width {\n        max-width: 736px;\n\n        #{$block}__main {\n            padding-left: 0;\n            padding-right: 0;\n        }\n\n        #{$block}__breadcrumbs {\n            padding: 0;\n        }\n\n        & .dc-nav-toc-panel__content {\n            max-width: 736px;\n            padding: 0;\n        }\n    }\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        &__main {\n            padding: 0 20px;\n        }\n\n        &__breadcrumbs {\n            padding: 0 20px;\n        }\n\n        &__content-mini-toc {\n            display: block;\n        }\n\n        &__toc-nav-panel {\n            padding-bottom: 50px;\n        }\n\n        &__controls {\n            padding-left: 20px;\n\n            position: static;\n        }\n    }\n\n    &__separator {\n        margin: 0 5px 32px 0;\n        align-self: center;\n    }\n\n    &__page-contributors {\n        display: flex;\n    }\n\n    @media screen and (max-width: 1440px) {\n        &:not(&_regular-page-width) {\n            width: 100%;\n        }\n    }\n\n    @media screen and (max-width: 1136px) {\n        &_regular-page-width {\n            width: 100%;\n        }\n    }\n\n    @media screen and (min-width: 1024px) {\n        &#{&}_full-screen#{&}_regular-page-width &__controls_vertical {\n            right: -36px;\n        }\n    }\n    /* stylelint-disable declaration-no-important */\n    @media screen and (max-width: 1280px) {\n        &_full-screen &__main,\n        &_full-screen .dc-nav-toc-panel__content {\n            padding-left: 40px !important;\n            padding-right: 40px !important;\n        }\n        &_full-screen &__breadcrumbs {\n            padding-left: 24px !important;\n            padding-right: 24px !important;\n        }\n    }\n    /* stylelint-enable declaration-no-important */\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},2782:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-doc-page-title{position:relative}.dc-doc-page-title__label{position:absolute;left:0;top:-11px}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/DocPageTitle/DocPageTitle.scss"],names:[],mappings:"AAAA,mBACI,iBAAA,CAEA,0BACI,iBAAA,CACA,MAAA,CACA,SAAA",sourcesContent:[".dc-doc-page-title {\n    position: relative;\n\n    &__label {\n        position: absolute;\n        left: 0;\n        top: -11px;\n    }\n}\n"],sourceRoot:""}]);const c=a},276:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-edit-button{position:absolute;right:0}.dc-edit-button__text{margin-left:8px}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/EditButton/EditButton.scss"],names:[],mappings:"AAAA,gBACI,iBAAA,CACA,OAAA,CAEA,sBACI,eAAA",sourcesContent:[".dc-edit-button {\n    position: absolute;\n    right: 0;\n\n    &__text {\n        margin-left: 8px;\n    }\n}\n"],sourceRoot:""}]);const c=a},6870:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-feedback__container_view_wide{display:flex;align-items:center;flex-direction:column;width:100%}.dc-feedback__container-row{display:flex;justify-content:center;width:100%;padding:28px;border:1px solid var(--yc-color-line-generic);border-radius:8px}.dc-feedback__container-row_view_wide{display:flex;align-items:center}.dc-feedback__like-button_active{color:var(--yc-color-base-special)}.dc-feedback__success-popup{padding:16px 50px 16px 16px;width:320px}@media screen and (max-width: 375px){.dc-feedback__success-popup_view_wide{right:0 !important;left:0 !important;margin:auto}}.dc-feedback__variants-popup{padding:16px;width:320px}@media screen and (max-width: 375px){.dc-feedback__variants-popup_view_wide{right:0 !important;left:0 !important;margin:auto}}.dc-feedback__popup-title{font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);padding-bottom:8px}.dc-feedback__popup-text{font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height)}.dc-feedback__variants{display:flex;flex-direction:column;padding:8px 0}.dc-feedback__variant{margin-bottom:8px;white-space:normal}.dc-feedback__variant:last-child{margin-bottom:0}.dc-feedback__variants-actions{padding-top:8px;display:flex;justify-content:flex-end}.dc-feedback__variants-action{margin-left:10px}.dc-feedback__textarea{padding:8px 0}.dc-feedback__title_view_wide{font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);margin-right:16px;font-weight:400}.dc-feedback__controls{display:flex;gap:10px}.dc-feedback__controls_view_wide{display:flex}.dc-feedback__control:last-child{font-size:13px;line-height:18px;display:flex;align-items:center}.dc-feedback__control_view_wide{margin-right:12px}.dc-feedback__control_view_wide:last-child{margin-right:0}.dc-feedback__control_view_regular{margin-right:4px}.dc-feedback__control_view_regular:last-child{margin-right:0}.dc-feedback__feedback-button_active{color:var(--yc-color-base-special)}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Feedback/Feedback.scss","webpack://./node_modules/@doc-tools/components/styles/variables.scss"],names:[],mappings:"AAkBQ,kCACI,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,UAAA,CAIR,4BACI,YAAA,CACA,sBAAA,CACA,UAAA,CACA,YAAA,CAEA,6CAAA,CACA,iBAAA,CAEA,sCACI,YAAA,CACA,kBAAA,CAKJ,iCACI,kCAAA,CAIR,4BACI,2BAAA,CACA,WA9CK,CAGT,qCACI,sCAEI,kBAAA,CACA,iBAAA,CACA,WAAA,CAAA,CA6CR,6BACI,YCjDO,CDkDP,WAvDK,CAGT,qCACI,uCAEI,kBAAA,CACA,iBAAA,CACA,WAAA,CAAA,CAsDR,0BACI,yCAAA,CACA,6CAAA,CACA,kBAAA,CAGJ,yBACI,6CAAA,CACA,iDAAA,CAGJ,uBACI,YAAA,CACA,qBAAA,CACA,aAAA,CAGJ,sBACI,iBAAA,CACA,kBAAA,CAGJ,iCACI,eAAA,CAGJ,+BACI,eAAA,CACA,YAAA,CACA,wBAAA,CAGJ,8BACI,gBAAA,CAGJ,uBACI,aAAA,CAIA,8BACI,yCAAA,CACA,6CAAA,CACA,iBAAA,CACA,eAAA,CAIR,uBACI,YAAA,CACA,QAAA,CAEA,iCACI,YAAA,CAKJ,iCACI,cAAA,CACA,gBAAA,CACA,YAAA,CACA,kBAAA,CAGJ,gCACI,iBAAA,CAEA,2CACI,cAAA,CAIR,mCACI,gBAAA,CAEA,8CACI,cAAA,CAMR,qCACI,kCAAA",sourcesContent:["@import '../../../styles/mixins';\n@import '../../../styles/variables';\n\n$popupWidth: 320px;\n\n@mixin tooltip-in-center {\n    @media screen and (max-width: map-get($screenBreakpoints, 'xs')) {\n        & {\n            // stylelint-disable declaration-no-important\n            right: 0 !important;\n            left: 0 !important;\n            margin: auto;\n        }\n    }\n}\n\n.dc-feedback {\n    &__container {\n        &_view_wide {\n            display: flex;\n            align-items: center;\n            flex-direction: column;\n            width: 100%;\n        }\n    }\n\n    &__container-row {\n        display: flex;\n        justify-content: center;\n        width: 100%;\n        padding: 28px;\n\n        border: 1px solid var(--yc-color-line-generic);\n        border-radius: 8px;\n\n        &_view_wide {\n            display: flex;\n            align-items: center;\n        }\n    }\n\n    &__like-button {\n        &_active {\n            color: var(--yc-color-base-special);\n        }\n    }\n\n    &__success-popup {\n        padding: $popupPadding 50px $popupPadding $popupPadding;\n        width: $popupWidth;\n\n        &_view_wide {\n            @include tooltip-in-center();\n        }\n    }\n\n    &__variants-popup {\n        padding: $popupPadding;\n        width: $popupWidth;\n\n        &_view_wide {\n            @include tooltip-in-center();\n        }\n    }\n\n    &__popup-title {\n        font-size: var(--yc-text-body-2-font-size);\n        line-height: var(--yc-text-body-2-line-height);\n        padding-bottom: 8px;\n    }\n\n    &__popup-text {\n        font-size: var(--yc-text-body-short-font-size);\n        line-height: var(--yc-text-body-short-line-height);\n    }\n\n    &__variants {\n        display: flex;\n        flex-direction: column;\n        padding: 8px 0;\n    }\n\n    &__variant {\n        margin-bottom: 8px;\n        white-space: normal;\n    }\n\n    &__variant:last-child {\n        margin-bottom: 0;\n    }\n\n    &__variants-actions {\n        padding-top: 8px;\n        display: flex;\n        justify-content: flex-end;\n    }\n\n    &__variants-action {\n        margin-left: 10px;\n    }\n\n    &__textarea {\n        padding: 8px 0;\n    }\n\n    &__title {\n        &_view_wide {\n            font-size: var(--yc-text-body-2-font-size);\n            line-height: var(--yc-text-body-2-line-height);\n            margin-right: 16px;\n            font-weight: 400;\n        }\n    }\n\n    &__controls {\n        display: flex;\n        gap: 10px;\n\n        &_view_wide {\n            display: flex;\n        }\n    }\n\n    &__control {\n        &:last-child {\n            font-size: 13px;\n            line-height: 18px;\n            display: flex;\n            align-items: center;\n        }\n\n        &_view_wide {\n            margin-right: 12px;\n\n            &:last-child {\n                margin-right: 0;\n            }\n        }\n\n        &_view_regular {\n            margin-right: 4px;\n\n            &:last-child {\n                margin-right: 0;\n            }\n        }\n    }\n\n    &__feedback-button {\n        &_active {\n            color: var(--yc-color-base-special);\n        }\n    }\n}\n","// Sizes\n$headerHeight: 0px;\n$normalOffset: 20px;\n$miniTocOffset: 56px;\n$blockMarginBottomLarge: 20px;\n$blockMarginBottomMedium: 15px;\n$headerMarginTopLarge: 40px;\n$headerMarginTopMedium: 32px;\n$popupPadding: 16px;\n$centerBlockMaxWidth: 736px;\n\n$screenBreakpoints: (\n    'xs': 375px,\n    'sm': 577px,\n    'md': 769px,\n    'lg': 1081px,\n    'xl': 1185px,\n);\n"],sourceRoot:""}]);const c=a},7505:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'.dc-mark{display:inline-block;font-family:"YS Text",sans-serif;font-weight:bold;line-height:1}.dc-mark_color_blue{color:#67b0f8}.dc-mark_color_green{color:#56bd67}.dc-mark_size_s{font-size:10px;letter-spacing:.25px}.dc-mark_size_m{font-size:12px;letter-spacing:.3px}',"",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Mark/Mark.scss"],names:[],mappings:"AAAA,SACI,oBAAA,CACA,gCAAA,CACA,gBAAA,CACA,aAAA,CAGI,oBACI,aAAA,CAGJ,qBACI,aAAA,CAKJ,gBACI,cAAA,CACA,oBAAA,CAGJ,gBACI,cAAA,CACA,mBAAA",sourcesContent:[".dc-mark {\n    display: inline-block;\n    font-family: 'YS Text', sans-serif;\n    font-weight: bold;\n    line-height: 1;\n\n    &_color {\n        &_blue {\n            color: #67b0f8;\n        }\n\n        &_green {\n            color: #56bd67;\n        }\n    }\n\n    &_size {\n        &_s {\n            font-size: 10px;\n            letter-spacing: 0.25px;\n        }\n\n        &_m {\n            font-size: 12px;\n            letter-spacing: 0.3px;\n        }\n    }\n}\n"],sourceRoot:""}]);const c=a},2143:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-mini-toc__title{font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);font-weight:500;color:var(--yc-color-text-primary);margin-bottom:12px}.dc-mini-toc__sections{margin:0;padding:0;list-style:none;height:calc(\n            100vh - var(--dc-header-height, 0px) - 56px - var(--dc-subheader-height)\n        );overflow-y:auto;overflow-x:hidden}.dc-mini-toc__section{display:block}.dc-mini-toc__section>.dc-mini-toc__section-link{border-left-color:var(--yc-color-line-generic)}.dc-mini-toc__section-link{display:flex;align-items:center;padding:6px 6px 6px 12px;min-height:28px;color:var(--yc-color-text-secondary);border-left:2px solid rgba(0,0,0,0);text-decoration:none}.dc-mini-toc__section-link:hover{color:var(--yc-color-text-complementary)}.dc-mini-toc__section_child .dc-mini-toc__section-link{padding-left:25px}.dc-mini-toc__section_active>.dc-mini-toc__section-link{color:var(--yc-color-text-primary);border-left-color:var(--yc-color-text-primary)}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/MiniToc/MiniToc.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAMI,oBCHA,yCAAA,CACA,6CAAA,CDII,eAAA,CACA,kCAAA,CACA,kBAAA,CAGJ,uBCLA,QAAA,CACA,SAAA,CACA,eAAA,CDMI;;SAAA,CAGA,eAAA,CACA,iBAAA,CAGJ,sBACI,aAAA,CAEA,iDACI,8CAAA,CAGJ,2BACI,YAAA,CACA,kBAAA,CACA,wBAAA,CACA,eAAA,CAEA,oCAAA,CACA,mCAAA,CACA,oBAAA,CAEA,iCACI,wCAAA,CAKJ,uDACI,iBAAA,CAIR,wDACI,kCAAA,CACA,8CAAA",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n.dc-mini-toc {\n    $class: &;\n\n    &__title {\n        @include text-size(body-2);\n        font-weight: 500;\n        color: var(--yc-color-text-primary);\n        margin-bottom: 12px;\n    }\n\n    &__sections {\n        @include reset-list-style();\n\n        height: calc(\n            100vh - var(--dc-header-height, #{$headerHeight}) - #{$miniTocOffset} - var(--dc-subheader-height)\n        );\n        overflow-y: auto;\n        overflow-x: hidden;\n    }\n\n    &__section {\n        display: block;\n\n        & > #{$class}__section-link {\n            border-left-color: var(--yc-color-line-generic);\n        }\n\n        &-link {\n            display: flex;\n            align-items: center;\n            padding: 6px 6px 6px 12px;\n            min-height: 28px;\n\n            color: var(--yc-color-text-secondary);\n            border-left: 2px solid transparent;\n            text-decoration: none;\n\n            &:hover {\n                color: var(--yc-color-text-complementary);\n            }\n        }\n\n        &_child {\n            #{$class}__section-link {\n                padding-left: 25px;\n            }\n        }\n\n        &_active > #{$class}__section-link {\n            color: var(--yc-color-text-primary);\n            border-left-color: var(--yc-color-text-primary);\n        }\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},7883:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-search-bar{width:100%;height:100%;border-radius:5px;box-shadow:0px 3px 10px var(--yc-color-sfx-shadow);padding:11px;display:flex;align-items:center;justify-content:space-between;font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height)}.dc-search-bar__search-query-label{color:var(--yc-color-text-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media(max-width: 770px){.dc-search-bar__search-query-label{display:none}}.dc-search-bar__search-query{max-width:400px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media(max-width: 770px){.dc-search-bar__search-query{display:none}}.dc-search-bar__left{width:90%;display:flex;align-items:center}.dc-search-bar__navigation{display:flex;align-items:center;margin-right:11px}.dc-search-bar__next-arrow{transform:rotate(-180deg)}.dc-search-bar__counter{margin:0 4px}.dc-search-highlighted{background:var(--dc-text-highlight)}.dc-search-highlighted_selected{background:var(--dc-text-highlight-selected)}.yc-root_theme_dark .dc-search-highlighted,.yc-root_theme_dark .dc-search-highlighted_selected{color:var(--yc-color-text-inverted-primary)}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/SearchBar/SearchBar.scss"],names:[],mappings:"AAGA,eACI,UAAA,CACA,WAAA,CACA,iBAAA,CACA,kDAAA,CACA,YAAA,CACA,YAAA,CACA,kBAAA,CACA,6BAAA,CAEA,6CAAA,CACA,iDAAA,CAEA,mCACI,oCAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAEA,yBANJ,mCAOQ,YAAA,CAAA,CAIR,6BACI,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CAEA,yBANJ,6BAOQ,YAAA,CAAA,CAIR,qBACI,SAAA,CACA,YAAA,CACA,kBAAA,CAGJ,2BACI,YAAA,CACA,kBAAA,CACA,iBAAA,CAGJ,2BACI,yBAAA,CAGJ,wBACI,YAAA,CAMR,uBACI,mCAAA,CAEA,gCACI,4CAAA,CAKJ,+FAEI,2CAAA",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n.dc-search-bar {\n    width: 100%;\n    height: 100%;\n    border-radius: 5px;\n    box-shadow: 0px 3px 10px var(--yc-color-sfx-shadow);\n    padding: 11px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n\n    font-size: var(--yc-text-body-short-font-size);\n    line-height: var(--yc-text-body-short-line-height);\n\n    &__search-query-label {\n        color: var(--yc-color-text-secondary);\n        white-space: nowrap;\n        text-overflow: ellipsis;\n        overflow: hidden;\n\n        @media (max-width: map-get($screenBreakpoints, 'md') + 1) {\n            display: none;\n        }\n    }\n\n    &__search-query {\n        max-width: 400px;\n        white-space: nowrap;\n        text-overflow: ellipsis;\n        overflow: hidden;\n\n        @media (max-width: map-get($screenBreakpoints, 'md') + 1) {\n            display: none;\n        }\n    }\n\n    &__left {\n        width: 90%;\n        display: flex;\n        align-items: center;\n    }\n\n    &__navigation {\n        display: flex;\n        align-items: center;\n        margin-right: 11px;\n    }\n\n    &__next-arrow {\n        transform: rotate(-180deg);\n    }\n\n    &__counter {\n        margin: 0 4px;\n    }\n}\n\n$hl-class: '.dc-search-highlighted';\n\n#{$hl-class} {\n    background: var(--dc-text-highlight);\n\n    &_selected {\n        background: var(--dc-text-highlight-selected);\n    }\n}\n\n.yc-root_theme_dark {\n    & #{$hl-class},\n    & #{$hl-class}_selected {\n        color: var(--yc-color-text-inverted-primary);\n    }\n}\n"],sourceRoot:""}]);const c=a},738:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-subscribe__container_view_wide{display:flex;align-items:center;flex-direction:column;width:100%}.dc-subscribe__container-row{display:flex;justify-content:center;width:100%;padding:28px;border:1px solid var(--yc-color-line-generic);border-radius:8px}.dc-subscribe__container-row_view_wide{display:flex;align-items:center}.dc-subscribe__success-popup{padding:16px;width:320px}@media screen and (max-width: 375px){.dc-subscribe__success-popup_view_wide{right:0 !important;left:0 !important;margin:auto}}.dc-subscribe__variants-popup{padding:16px;width:320px}@media screen and (max-width: 375px){.dc-subscribe__variants-popup_view_wide{right:0 !important;left:0 !important;margin:auto}}.dc-subscribe__popup-title{font-size:var(--yc-text-body2-font-size);line-height:var(--yc-text-body2-line-height);padding-bottom:8px}.dc-subscribe__popup-text{font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height)}.dc-subscribe__variants-actions{display:flex;justify-content:flex-end}.dc-subscribe__variants-action{margin-left:10px}.dc-subscribe__variant__list-item{padding:6px 12px}.dc-subscribe__textarea{padding:8px 0}.dc-subscribe__title_view_wide{font-size:var(--yc-text-body2-font-size);line-height:var(--yc-text-body2-line-height);margin-right:16px;font-weight:400}.dc-subscribe__controls{display:flex}.dc-subscribe__controls_view_wide{display:flex}.dc-subscribe__control:last-child{font-size:13px;line-height:18px;display:flex;align-items:center}.dc-subscribe__control_view_wide{margin-right:12px}.dc-subscribe__control_view_wide:last-child{margin-right:0}.dc-subscribe__control_view_regular{margin-right:4px}.dc-subscribe__control_view_regular:last-child{margin-right:0}.dc-subscribe__subscribe-button{width:16px;height:16px}.dc-subscribe__subscribe-button_view_wide{margin-right:8px}.dc-subscribe__subscribe-button_active{color:var(--yc-color-button-accent-background)}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Subscribe/Subscribe.scss","webpack://./node_modules/@doc-tools/components/styles/variables.scss"],names:[],mappings:"AAkBQ,mCACI,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,UAAA,CAIR,6BACI,YAAA,CACA,sBAAA,CACA,UAAA,CACA,YAAA,CAEA,6CAAA,CACA,iBAAA,CAEA,uCACI,YAAA,CACA,kBAAA,CAIR,6BACI,YClCO,CDmCP,WAxCK,CAGT,qCACI,uCAEI,kBAAA,CACA,iBAAA,CACA,WAAA,CAAA,CAuCR,8BACI,YC3CO,CD4CP,WAjDK,CAGT,qCACI,wCAEI,kBAAA,CACA,iBAAA,CACA,WAAA,CAAA,CAgDR,2BACI,wCAAA,CACA,4CAAA,CACA,kBAAA,CAGJ,0BACI,yCAAA,CACA,6CAAA,CAGJ,gCACI,YAAA,CACA,wBAAA,CAGJ,+BACI,gBAAA,CAGJ,kCACI,gBAAA,CAGJ,wBACI,aAAA,CAIA,+BACI,wCAAA,CACA,4CAAA,CACA,iBAAA,CACA,eAAA,CAIR,wBACI,YAAA,CAEA,kCACI,YAAA,CAKJ,kCACI,cAAA,CACA,gBAAA,CACA,YAAA,CACA,kBAAA,CAGJ,iCACI,iBAAA,CAEA,4CACI,cAAA,CAIR,oCACI,gBAAA,CAEA,+CACI,cAAA,CAKZ,gCACI,UAAA,CACA,WAAA,CAEA,0CACI,gBAAA,CAGJ,uCACI,8CAAA",sourcesContent:["@import '../../../styles/mixins';\n@import '../../../styles/variables';\n\n$popupWidth: 320px;\n\n@mixin tooltip-in-center {\n    @media screen and (max-width: map-get($screenBreakpoints, 'xs')) {\n        & {\n            // stylelint-disable declaration-no-important\n            right: 0 !important;\n            left: 0 !important;\n            margin: auto;\n        }\n    }\n}\n\n.dc-subscribe {\n    &__container {\n        &_view_wide {\n            display: flex;\n            align-items: center;\n            flex-direction: column;\n            width: 100%;\n        }\n    }\n\n    &__container-row {\n        display: flex;\n        justify-content: center;\n        width: 100%;\n        padding: 28px;\n\n        border: 1px solid var(--yc-color-line-generic);\n        border-radius: 8px;\n\n        &_view_wide {\n            display: flex;\n            align-items: center;\n        }\n    }\n\n    &__success-popup {\n        padding: $popupPadding;\n        width: $popupWidth;\n\n        &_view_wide {\n            @include tooltip-in-center();\n        }\n    }\n\n    &__variants-popup {\n        padding: $popupPadding;\n        width: $popupWidth;\n\n        &_view_wide {\n            @include tooltip-in-center();\n        }\n    }\n\n    &__popup-title {\n        font-size: var(--yc-text-body2-font-size);\n        line-height: var(--yc-text-body2-line-height);\n        padding-bottom: 8px;\n    }\n\n    &__popup-text {\n        font-size: var(--yc-text-body-1-font-size);\n        line-height: var(--yc-text-body-1-line-height);\n    }\n\n    &__variants-actions {\n        display: flex;\n        justify-content: flex-end;\n    }\n\n    &__variants-action {\n        margin-left: 10px;\n    }\n\n    &__variant__list-item {\n        padding: 6px 12px;\n    }\n\n    &__textarea {\n        padding: 8px 0;\n    }\n\n    &__title {\n        &_view_wide {\n            font-size: var(--yc-text-body2-font-size);\n            line-height: var(--yc-text-body2-line-height);\n            margin-right: 16px;\n            font-weight: 400;\n        }\n    }\n\n    &__controls {\n        display: flex;\n\n        &_view_wide {\n            display: flex;\n        }\n    }\n\n    &__control {\n        &:last-child {\n            font-size: 13px;\n            line-height: 18px;\n            display: flex;\n            align-items: center;\n        }\n\n        &_view_wide {\n            margin-right: 12px;\n\n            &:last-child {\n                margin-right: 0;\n            }\n        }\n\n        &_view_regular {\n            margin-right: 4px;\n\n            &:last-child {\n                margin-right: 0;\n            }\n        }\n    }\n\n    &__subscribe-button {\n        width: 16px;\n        height: 16px;\n\n        &_view_wide {\n            margin-right: 8px;\n        }\n\n        &_active {\n            color: var(--yc-color-button-accent-background);\n        }\n    }\n}\n","// Sizes\n$headerHeight: 0px;\n$normalOffset: 20px;\n$miniTocOffset: 56px;\n$blockMarginBottomLarge: 20px;\n$blockMarginBottomMedium: 15px;\n$headerMarginTopLarge: 40px;\n$headerMarginTopMedium: 32px;\n$popupPadding: 16px;\n$centerBlockMaxWidth: 736px;\n\n$screenBreakpoints: (\n    'xs': 375px,\n    'sm': 577px,\n    'md': 769px,\n    'lg': 1081px,\n    'xl': 1185px,\n);\n"],sourceRoot:""}]);const c=a},751:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-toc{display:flex;flex-direction:column;height:calc(100vh - var(--dc-header-height, 0px));overflow-y:hidden;border-right:1px solid var(--yc-color-line-generic)}.dc-toc__empty{padding:5px 15px 5px 24px}.dc-toc__top{flex-grow:0;flex-shrink:0;display:flex;align-items:center;padding:10px 10px 8px 0}.dc-toc__top_scrolled{border-bottom:1px solid var(--yc-color-line-generic)}.dc-toc__top-header-icon{display:flex;margin-right:5px;flex-shrink:0}.dc-toc__top-header{flex-grow:0;position:relative;font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);font-weight:500}.dc-toc__top-header_link{color:inherit;text-decoration:none;display:flex;align-items:center}.dc-toc__top-header_link:hover{outline:none;color:var(--yc-color-text-link);text-decoration:none;cursor:pointer;color:var(--yc-color-text-primary)}.utilityfocus .dc-toc__top-header_link:hover:focus{outline:2px solid #ffdb4d}.dc-toc__top-header_link:hover:hover,.dc-toc__top-header_link:hover:active{color:var(--yc-color-text-link-hover)}.dc-toc__bottom{flex-grow:0;flex-shrink:0;display:flex;align-items:center;padding:4px 10px 20px 0}.dc-toc__bottom_scrolled{border-top:1px solid var(--yc-color-line-generic)}.dc-toc__content{--yc-scrollbar-width: 6px;--yc-scrollbar-thin-width: 6px;position:relative;flex-grow:1;overflow-y:auto;scrollbar-width:thin}.dc-toc__content_offset_top{padding-top:24px}.dc-toc__list{margin:0;padding:0;list-style:none;display:block}.dc-toc__list-item{cursor:pointer;user-select:none}.dc-toc__list-item_main>*:first-child{color:var(--yc-color-text-primary)}.dc-toc__list-item:not(.dc-toc__list-item_opened)>.dc-toc__list{display:none}.dc-toc__list-item>.dc-toc__list{padding-left:20px}.dc-toc__content>.dc-toc__list{padding-right:21px;padding-bottom:30px}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/Toc/Toc.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAYA,QAGI,YAAA,CACA,qBAAA,CACA,iDAAA,CACA,iBAAA,CACA,mDAAA,CAEA,eACI,yBAAA,CAGJ,aACI,WAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,uBAAA,CAEA,sBACI,oDAAA,CAGJ,yBACI,YAAA,CACA,gBAAA,CACA,aAAA,CAGJ,oBACI,WAAA,CAEA,iBAAA,CC1CR,yCAAA,CACA,6CAAA,CD4CQ,eAAA,CAEA,yBC/BR,aAAA,CACA,oBAAA,CDgCY,YAAA,CACA,kBAAA,CAEA,+BC/BZ,YAAA,CAUA,+BAAA,CACA,oBAAA,CACA,cAAA,CDsBgB,kCAAA,CChChB,mDACI,yBAAA,CAWJ,2EAEI,qCAAA,CDwBJ,gBACI,WAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,uBAAA,CAEA,yBACI,iDAAA,CAIR,iBACI,yBAAA,CACA,8BAAA,CAEA,iBAAA,CACA,WAAA,CACA,eAAA,CACA,oBAAA,CAEA,4BACI,gBAAA,CAIR,cClFA,QAAA,CACA,SAAA,CACA,eAAA,CDmFI,aAAA,CAEA,mBACI,cAAA,CACA,gBAAA,CAEA,sCACI,kCAAA,CAGJ,gEACI,YAAA,CAIJ,iCACI,iBAAA,CAKZ,+BACI,kBAAA,CACA,mBAAA",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n$iconSize: 18px;\n$toggleSize: 10px;\n$leftOffset: 57px;\n\n@mixin toc-header {\n    @include text-size(body-2);\n    font-weight: 500;\n}\n\n.dc-toc {\n    $class: &;\n\n    display: flex;\n    flex-direction: column;\n    height: calc(100vh - var(--dc-header-height, #{$headerHeight}));\n    overflow-y: hidden;\n    border-right: 1px solid var(--yc-color-line-generic);\n\n    &__empty {\n        padding: 5px 15px 5px 24px;\n    }\n\n    &__top {\n        flex-grow: 0;\n        flex-shrink: 0;\n        display: flex;\n        align-items: center;\n        padding: 10px 10px 8px 0;\n\n        &_scrolled {\n            border-bottom: 1px solid var(--yc-color-line-generic);\n        }\n\n        &-header-icon {\n            display: flex;\n            margin-right: 5px;\n            flex-shrink: 0;\n        }\n\n        &-header {\n            flex-grow: 0;\n            $headerClass: &;\n            position: relative;\n\n            @include text-size(body-2);\n            font-weight: 500;\n\n            &_link {\n                @include reset-link-style();\n                display: flex;\n                align-items: center;\n\n                &:hover {\n                    @include link();\n\n                    color: var(--yc-color-text-primary);\n                }\n            }\n        }\n    }\n\n    &__bottom {\n        flex-grow: 0;\n        flex-shrink: 0;\n        display: flex;\n        align-items: center;\n        padding: 4px 10px 20px 0;\n\n        &_scrolled {\n            border-top: 1px solid var(--yc-color-line-generic);\n        }\n    }\n\n    &__content {\n        --yc-scrollbar-width: 6px;\n        --yc-scrollbar-thin-width: 6px;\n\n        position: relative;\n        flex-grow: 1;\n        overflow-y: auto;\n        scrollbar-width: thin;\n\n        &_offset_top {\n            padding-top: 24px;\n        }\n    }\n\n    &__list {\n        @include reset-list-style();\n\n        display: block;\n\n        &-item {\n            cursor: pointer;\n            user-select: none;\n\n            &_main > *:first-child {\n                color: var(--yc-color-text-primary);\n            }\n\n            &:not(&_opened) > #{$class}__list {\n                display: none;\n            }\n\n            // recurcive padding\n            > #{$class}__list {\n                padding-left: 20px;\n            }\n        }\n    }\n\n    &__content > &__list {\n        padding-right: 21px;\n        padding-bottom: 30px;\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},5350:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'.dc-toc-item{cursor:pointer;user-select:none}.dc-toc-item__link{display:block;text-decoration:none}.dc-toc-item__text{position:relative;padding:7px 12px 7px 20px;word-break:break-word;color:var(--yc-color-text-primary)}.dc-toc-item__text_active{border-radius:3px;background:var(--yc-color-base-selection)}.dc-toc-item__text::before{content:"";position:absolute;top:0;right:0;left:-100vw;height:100%}.dc-toc-item__text:hover{border-radius:3px;background:var(--yc-color-base-simple-hover)}.dc-toc-item__icon{position:absolute;left:0}',"",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/TocItem/TocItem.scss"],names:[],mappings:"AAGA,aACI,cAAA,CACA,gBAAA,CAEA,mBACI,aAAA,CACA,oBAAA,CAGJ,mBACI,iBAAA,CACA,yBAAA,CACA,qBAAA,CAEA,kCAAA,CAEA,0BACI,iBAAA,CACA,yCAAA,CAGJ,2BACI,UAAA,CACA,iBAAA,CACA,KAAA,CACA,OAAA,CAEA,WAAA,CACA,WAAA,CAGJ,yBACI,iBAAA,CACA,4CAAA,CAIR,mBACI,iBAAA,CACA,MAAA",sourcesContent:["@import '../../../styles/variables';\n@import '../../../styles/mixins';\n\n.dc-toc-item {\n    cursor: pointer;\n    user-select: none;\n\n    &__link {\n        display: block;\n        text-decoration: none;\n    }\n\n    &__text {\n        position: relative;\n        padding: 7px 12px 7px 20px;\n        word-break: break-word;\n\n        color: var(--yc-color-text-primary);\n\n        &_active {\n            border-radius: 3px;\n            background: var(--yc-color-base-selection);\n        }\n\n        &::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            right: 0;\n            // hack: to be shure that it will always start from the left of the TOC\n            left: -100vw;\n            height: 100%;\n        }\n\n        &:hover {\n            border-radius: 3px;\n            background: var(--yc-color-base-simple-hover);\n        }\n    }\n\n    &__icon {\n        position: absolute;\n        left: 0;\n    }\n}\n"],sourceRoot:""}]);const c=a},9128:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-nav-toc-panel{display:flex;justify-content:center;width:100%;background:var(--yc-color-base-background);font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height)}.dc-nav-toc-panel_fixed{position:fixed;bottom:0;z-index:1000;left:0;border-top:1px solid var(--yc-color-line-generic)}.dc-nav-toc-panel_fixed .dc-nav-toc-panel__control-hint{display:none}.dc-nav-toc-panel_fixed .dc-nav-toc-panel__content{padding:0 40px}.dc-nav-toc-panel__content{display:flex;justify-content:space-between;flex:1;max-width:1440px}.dc-nav-toc-panel__control{display:flex;flex-direction:column;width:48%}.dc-nav-toc-panel__control_left{align-items:flex-start}.dc-nav-toc-panel__control_right{align-items:flex-end}.dc-nav-toc-panel__control svg{margin-top:-1px;min-width:16px}.dc-nav-toc-panel__control_left svg{margin-right:6px}.dc-nav-toc-panel__control_right svg{margin-left:6px}.dc-nav-toc-panel__control-hint{color:var(--yc-color-text-hint)}.dc-nav-toc-panel__control-text{display:flex;align-items:center}.dc-nav-toc-panel__link{display:flex;align-items:center;min-height:32px;color:var(--yc-color-text-primary);font-weight:500}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/TocNavPanel/TocNavPanel.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAEA,kBACI,YAAA,CACA,sBAAA,CACA,UAAA,CACA,0CAAA,CCHA,yCAAA,CACA,6CAAA,CDMA,wBACI,cAAA,CACA,QAAA,CACA,YAAA,CACA,MAAA,CACA,iDAAA,CAGJ,wDACI,YAAA,CAGJ,mDACI,cAAA,CAGJ,2BACI,YAAA,CACA,6BAAA,CACA,MAAA,CACA,gBAAA,CAGJ,2BACI,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,gCACI,sBAAA,CAGJ,iCACI,oBAAA,CAGJ,+BACI,eAAA,CACA,cAAA,CAGJ,oCACI,gBAAA,CAGJ,qCACI,eAAA,CAIR,gCACI,+BAAA,CAGJ,gCACI,YAAA,CACA,kBAAA,CAGJ,wBACI,YAAA,CACA,kBAAA,CACA,eAAA,CACA,kCAAA,CACA,eAAA",sourcesContent:["@import '../../../styles/mixins';\n\n.dc-nav-toc-panel {\n    display: flex;\n    justify-content: center;\n    width: 100%;\n    background: var(--yc-color-base-background);\n\n    @include text-size(body-1);\n\n    &_fixed {\n        position: fixed;\n        bottom: 0;\n        z-index: 1000;\n        left: 0;\n        border-top: 1px solid var(--yc-color-line-generic);\n    }\n\n    &_fixed &__control-hint {\n        display: none;\n    }\n\n    &_fixed &__content {\n        padding: 0 40px;\n    }\n\n    &__content {\n        display: flex;\n        justify-content: space-between;\n        flex: 1;\n        max-width: 1440px;\n    }\n\n    &__control {\n        display: flex;\n        flex-direction: column;\n        width: 48%;\n\n        &_left {\n            align-items: flex-start;\n        }\n\n        &_right {\n            align-items: flex-end;\n        }\n\n        & svg {\n            margin-top: -1px;\n            min-width: 16px;\n        }\n\n        &_left svg {\n            margin-right: 6px;\n        }\n\n        &_right svg {\n            margin-left: 6px;\n        }\n    }\n\n    &__control-hint {\n        color: var(--yc-color-text-hint);\n    }\n\n    &__control-text {\n        display: flex;\n        align-items: center;\n    }\n\n    &__link {\n        display: flex;\n        align-items: center;\n        min-height: 32px;\n        color: var(--yc-color-text-primary);\n        font-weight: 500;\n    }\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},1930:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".dc-toggle-arrow{transition:transform .15s;stroke-width:2px}.dc-toggle-arrow_type_horizontal{transform:rotate(0deg)}.dc-toggle-arrow_type_vertical{transform:rotate(90deg)}.dc-toggle-arrow_open.dc-toggle-arrow_type_horizontal{transform:rotate(90deg)}.dc-toggle-arrow_open.dc-toggle-arrow_type_vertical{transform:rotate(-90deg)}.dc-toggle-arrow_thin{stroke-width:1px}.dc-toggle-arrow_slow{transition-duration:.3s}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/build/components/ToggleArrow/ToggleArrow.scss"],names:[],mappings:"AAAA,iBACI,yBAAA,CACA,gBAAA,CAII,iCACI,sBAAA,CAGJ,+BACI,uBAAA,CAKJ,sDACI,uBAAA,CAGJ,oDACI,wBAAA,CAIR,sBACI,gBAAA,CAGJ,sBACI,uBAAA",sourcesContent:[".dc-toggle-arrow {\n    transition: transform 0.15s;\n    stroke-width: 2px;\n    $root: &;\n\n    &_type {\n        &_horizontal {\n            transform: rotate(0deg);\n        }\n\n        &_vertical {\n            transform: rotate(90deg);\n        }\n    }\n\n    &_open {\n        &#{$root}_type_horizontal {\n            transform: rotate(90deg);\n        }\n\n        &#{$root}_type_vertical {\n            transform: rotate(-90deg);\n        }\n    }\n\n    &_thin {\n        stroke-width: 1px;\n    }\n\n    &_slow {\n        transition-duration: 0.3s;\n    }\n}\n"],sourceRoot:""}]);const c=a},9438:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i),c=n(1667),l=n.n(c),s=new URL(n(9514),n.b),A=a()(o()),u=l()(s);A.push([e.id,"*,*::before,*::after{box-sizing:inherit}html,body{margin:0;padding:0;box-sizing:border-box;--dc-header-height: 0;--dc-subheader-height: 40px;--dc-error-image-403: url("+u+");--dc-error-image-404: url("+u+");--dc-error-image-500: url("+u+")}html .yc-root,body .yc-root{--yc-scrollbar-thin-width: 6px}html .yc-root::-webkit-scrollbar,html .yc-root *::-webkit-scrollbar,body .yc-root::-webkit-scrollbar,body .yc-root *::-webkit-scrollbar{height:var(--yc-scrollbar-thin-width);background:rgba(0,0,0,0)}html .yc-root::-webkit-scrollbar-track,html .yc-root *::-webkit-scrollbar-track,body .yc-root::-webkit-scrollbar-track,body .yc-root *::-webkit-scrollbar-track{background:rgba(0,0,0,0)}#root{min-height:100vh}","",{version:3,sources:["webpack://./node_modules/@doc-tools/components/styles/default.scss"],names:[],mappings:"AAAA,qBAGI,kBAAA,CAGJ,UAEI,QAAA,CACA,SAAA,CACA,qBAAA,CAEA,qBAAA,CACA,2BAAA,CAEA,6DAAA,CACA,6DAAA,CACA,6DAAA,CAEA,4BACI,8BAAA,CAEA,wIAEI,qCAAA,CACA,wBAAA,CAGJ,gKAEI,wBAAA,CAKZ,MACI,gBAAA",sourcesContent:["*,\n*::before,\n*::after {\n    box-sizing: inherit;\n}\n\nhtml,\nbody {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n\n    --dc-header-height: 0;\n    --dc-subheader-height: 40px;\n\n    --dc-error-image-403: url('data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=');\n    --dc-error-image-404: url('data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=');\n    --dc-error-image-500: url('data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=');\n\n    .yc-root {\n        --yc-scrollbar-thin-width: 6px;\n\n        &::-webkit-scrollbar,\n        *::-webkit-scrollbar {\n            height: var(--yc-scrollbar-thin-width);\n            background: transparent;\n        }\n\n        &::-webkit-scrollbar-track,\n        *::-webkit-scrollbar-track {\n            background: transparent;\n        }\n    }\n}\n\n#root {\n    min-height: 100vh;\n}\n"],sourceRoot:""}]);const d=A},1333:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i),c=n(1667),l=n.n(c),s=new URL(n(208),n.b),A=a()(o()),u=l()(s);A.push([e.id,'.yc-root{--yc-font-family-sans: "Helvetica Neue", "Arial", "Helvetica", sans-serif;--yc-font-family-monospace: "Menlo", "Monaco", "Consolas", "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", "Courier", monospace;--yc-text-body-font-family: var(--yc-font-family-sans);--yc-text-code-font-family: var(--yc-font-family-monospace);--yc-text-header-font-weight: 900;--yc-text-subheader-font-weight: 900;--yc-text-display-font-weight: 900;--yc-text-code-font-weight: 400;--yc-text-body-font-weight: 400;--yc-text-caption-font-weight: 400;--yc-text-accent-font-weight: 900;--yc-text-body-1-font-size: 13px;--yc-text-body-1-line-height: 18px;--yc-text-body-2-font-size: 15px;--yc-text-body-2-line-height: 20px;--yc-text-body-3-font-size: 17px;--yc-text-body-3-line-height: 24px;--yc-text-body-short-font-size: 13px;--yc-text-body-short-line-height: 16px;--yc-text-caption-1-font-size: 9px;--yc-text-caption-1-line-height: 12px;--yc-text-caption-2-font-size: 11px;--yc-text-caption-2-line-height: 16px;--yc-text-header-1-font-size: 20px;--yc-text-header-1-line-height: 24px;--yc-text-header-2-font-size: 24px;--yc-text-header-2-line-height: 28px;--yc-text-subheader-1-font-size: 13px;--yc-text-subheader-1-line-height: 18px;--yc-text-subheader-2-font-size: 15px;--yc-text-subheader-2-line-height: 20px;--yc-text-subheader-3-font-size: 17px;--yc-text-subheader-3-line-height: 24px;--yc-text-display-1-font-size: 28px;--yc-text-display-1-line-height: 36px;--yc-text-display-2-font-size: 32px;--yc-text-display-2-line-height: 40px;--yc-text-display-3-font-size: 40px;--yc-text-display-3-line-height: 48px;--yc-text-display-4-font-size: 48px;--yc-text-display-4-line-height: 52px;--yc-text-code-1-font-size: 12px;--yc-text-code-1-line-height: 18px;--yc-text-code-2-font-size: 14px;--yc-text-code-2-line-height: 20px;--yc-text-code-3-font-size: 16px;--yc-text-code-3-line-height: 24px;--yc-text-code-inline-1-font-size: 12px;--yc-text-code-inline-1-line-height: 14px;--yc-text-code-inline-2-font-size: 14px;--yc-text-code-inline-2-line-height: 16px;--yc-text-code-inline-3-font-size: 16px;--yc-text-code-inline-3-line-height: 20px;font-family:var(--yc-text-body-font-family);font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height);font-weight:var(--yc-text-body-font-weight);--yc-my-scrollbar-width: 12px;--yc-my-border-radius-xs: 5px;--yc-my-border-radius-s: 5px;--yc-my-border-radius-m: 6px;--yc-my-border-radius-l: 8px;--yc-my-border-radius-xl: 10px;--yc-color-telegram: #51a4db;--yc-color-facebook: #4968ad;--yc-color-twitter: #4aa0eb;--yc-color-vk: #436eab;--yc-color-youtube: #eb3323;--yc-color-github: #25292e;--yc-color-rss: #f29c39;--yc-color-linkedin: #0a66c2;--yc-space-base: 4px;--yc-spacing-0: calc(var(--yc-space-base) * 0);--yc-spacing-half: calc(var(--yc-space-base) * 0.5);--yc-spacing-1: var(--yc-space-base);--yc-spacing-2: calc(var(--yc-space-base) * 2);--yc-spacing-3: calc(var(--yc-space-base) * 3);--yc-spacing-4: calc(var(--yc-space-base) * 4);--yc-spacing-5: calc(var(--yc-space-base) * 5);--yc-spacing-6: calc(var(--yc-space-base) * 6);--yc-spacing-7: calc(var(--yc-space-base) * 7);--yc-spacing-8: calc(var(--yc-space-base) * 8);--yc-spacing-9: calc(var(--yc-space-base) * 9);--yc-spacing-10: calc(var(--yc-space-base) * 10);--yc-scrollbar-width: var(--yc-my-scrollbar-width);--yc-border-radius-xs: var(--yc-my-border-radius-xs);--yc-border-radius-s: var(--yc-my-border-radius-s);--yc-border-radius-m: var(--yc-my-border-radius-m);--yc-border-radius-l: var(--yc-my-border-radius-l);--yc-border-radius-xl: var(--yc-my-border-radius-xl)}.yc-root_theme_light{--yc-color-private-white-150: rgba(255, 255, 255, 0.15);--yc-color-private-white-300: rgba(255, 255, 255, 0.3);--yc-color-private-white-500: rgba(255, 255, 255, 0.5);--yc-color-private-white-700: rgba(255, 255, 255, 0.7);--yc-color-private-white-850: rgba(255, 255, 255, 0.85);--yc-color-private-white-950: rgba(255, 255, 255, 0.95);--yc-color-private-white-1000: rgba(255, 255, 255, 1);--yc-color-private-black-50: rgba(0, 0, 0, 0.05);--yc-color-private-black-70: rgba(0, 0, 0, 0.07);--yc-color-private-black-100: rgba(0, 0, 0, 0.1);--yc-color-private-black-150: rgba(0, 0, 0, 0.15);--yc-color-private-black-250: rgba(0, 0, 0, 0.25);--yc-color-private-black-300: rgba(0, 0, 0, 0.3);--yc-color-private-black-500: rgba(0, 0, 0, 0.5);--yc-color-private-black-550: rgba(0, 0, 0, 0.55);--yc-color-private-black-700: rgba(0, 0, 0, 0.7);--yc-color-private-black-850: rgba(0, 0, 0, 0.85);--yc-color-private-black-20-solid: rgba(250, 250, 250, 1);--yc-color-private-black-50-solid: rgba(243, 243, 243, 1);--yc-color-private-black-100-solid: rgba(229, 229, 229, 1);--yc-color-private-black-150-solid: rgba(218, 218, 218, 1);--yc-color-private-black-700-solid: rgb(76, 76, 76, 1);--yc-color-private-blue-50: rgba(82, 130, 255, 0.1);--yc-color-private-blue-100: rgba(82, 130, 255, 0.16);--yc-color-private-blue-300: rgba(82, 130, 255, 0.5);--yc-color-private-blue-450: rgba(82, 130, 255, 0.75);--yc-color-private-blue-500: rgba(82, 130, 255, 0.9);--yc-color-private-blue-550: rgba(82, 130, 255, 1);--yc-color-private-blue-600: rgba(74, 113, 214, 1);--yc-color-private-blue-800: rgba(63, 87, 153, 1);--yc-color-private-blue-50-solid: rgba(238, 243, 255, 1);--yc-color-private-blue-100-solid: rgba(227, 235, 255, 1);--yc-color-private-blue-450-solid: rgba(125, 161, 255, 1);--yc-color-private-green-50: rgba(59, 201, 53, 0.1);--yc-color-private-green-100: rgba(59, 201, 53, 0.14);--yc-color-private-green-150: rgba(59, 201, 53, 0.25);--yc-color-private-green-200: rgba(59, 201, 53, 0.35);--yc-color-private-green-300: rgba(59, 201, 53, 0.5);--yc-color-private-green-450: rgba(63, 201, 46, 0.75);--yc-color-private-green-550: rgba(59, 201, 53, 1);--yc-color-private-green-600: rgba(7, 163, 0, 1);--yc-color-private-green-450-solid: rgba(111, 214, 98, 1);--yc-color-private-yellow-100: rgba(255, 219, 77, 0.3);--yc-color-private-yellow-200: rgba(255, 219, 77, 0.4);--yc-color-private-yellow-550: rgba(255, 219, 77, 1);--yc-color-private-yellow-600: rgba(245, 202, 69, 1);--yc-color-private-yellow-650: rgba(245, 171, 25, 1);--yc-color-private-yellow-700: rgba(224, 181, 9, 1);--yc-color-private-yellow-800: rgba(209, 119, 0, 1);--yc-color-private-red-50: rgba(235, 50, 38, 0.08);--yc-color-private-red-100: rgba(235, 50, 38, 0.17);--yc-color-private-red-300: rgba(255, 4, 0, 0.5);--yc-color-private-red-450: rgba(255, 4, 0, 0.7);--yc-color-private-red-500: rgba(255, 4, 0, 0.8);--yc-color-private-red-550: rgba(255, 4, 0, 1);--yc-color-private-red-450-solid: rgba(255, 80, 77, 1);--yc-color-private-purple-550: rgba(154, 50, 166, 1);--yc-color-private-purple-800: rgba(94, 62, 101, 1);--yc-color-private-cool-grey-50: rgba(107, 132, 153, 0.12);--yc-color-private-cool-grey-100: rgba(107, 132, 153, 0.2);--yc-color-private-cool-grey-300: rgba(107, 132, 153, 0.55);--yc-color-private-cool-grey-450: rgba(107, 132, 153, 0.75);--yc-color-private-cool-grey-550: rgba(107, 132, 153, 1);--yc-color-private-cool-grey-800: rgba(59, 96, 128, 1);--yc-color-private-cool-grey-50-solid: rgba(237, 240, 243, 1);--yc-color-private-cool-grey-450-solid: rgba(144, 163, 178, 1);--yc-color-private-orange-50: rgba(255, 119, 0, 0.15);--yc-color-private-orange-100: rgba(255, 119, 0, 0.2);--yc-color-private-orange-300: rgba(255, 119, 0, 0.5);--yc-color-private-orange-450: rgba(255, 180, 34, 1);--yc-color-private-orange-550: rgba(255, 119, 0, 1);--yc-my-color-brand-normal: var(--yc-color-private-blue-550);--yc-my-color-brand-normal-hover: var(--yc-color-private-blue-600);--yc-my-color-brand-light: var(--yc-color-private-blue-300);--yc-my-color-brand-selection: var(--yc-color-private-blue-50);--yc-my-color-brand-selection-hover: var(--yc-color-private-blue-100);--yc-my-color-brand-link: var(--yc-my-color-brand-normal);--yc-my-color-brand-link-hover: var(--yc-color-private-blue-800);--yc-my-color-brand-text: var(--yc-my-color-brand-normal);--yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);--yc-my-color-brand-link-visited: var(--yc-color-private-purple-550);--yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-800);--yc-color-text-primary: var(--yc-color-private-black-850);--yc-color-text-complementary: var(--yc-color-private-black-700);--yc-color-text-secondary: var(--yc-color-private-black-500);--yc-color-text-hint: var(--yc-color-private-black-300);--yc-color-text-info: var(--yc-color-private-blue-550);--yc-color-text-positive: var(--yc-color-private-green-600);--yc-color-text-warning: var(--yc-color-private-yellow-700);--yc-color-text-danger: var(--yc-color-private-red-500);--yc-color-text-utility: var(--yc-color-private-purple-550);--yc-color-text-misc: var(--yc-color-private-cool-grey-800);--yc-color-text-info-heavy: var(--yc-color-private-blue-550);--yc-color-text-positive-heavy: var(--yc-color-private-green-600);--yc-color-text-warning-heavy: var(--yc-color-private-yellow-800);--yc-color-text-danger-heavy: var(--yc-color-private-red-500);--yc-color-text-utility-heavy: var(--yc-color-private-purple-550);--yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-800);--yc-color-text-special: var(--yc-my-color-brand-normal);--yc-color-text-link: var(--yc-my-color-brand-link);--yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);--yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);--yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);--yc-color-text-yandex-red: var(--yc-color-private-red-550);--yc-color-text-dark-primary: var(--yc-color-private-black-850);--yc-color-text-dark-complementary: var(--yc-color-private-black-700);--yc-color-text-dark-secondary: var(--yc-color-private-black-500);--yc-color-text-light-primary: var(--yc-color-private-white-1000);--yc-color-text-light-complementary: var(--yc-color-private-white-850);--yc-color-text-light-secondary: var(--yc-color-private-white-700);--yc-color-text-light-hint: var(--yc-color-private-white-500);--yc-color-text-inverted-primary: var(--yc-color-private-white-1000);--yc-color-text-inverted-complementary: var(--yc-color-private-white-850);--yc-color-text-inverted-secondary: var(--yc-color-private-white-700);--yc-color-text-inverted-hint: var(--yc-color-private-white-500);--yc-color-base-background: var(--yc-color-private-white-1000);--yc-color-base-generic: var(--yc-color-private-black-50);--yc-color-base-generic-hover: var(--yc-color-private-black-150);--yc-color-base-generic-medium: var(--yc-color-private-black-150);--yc-color-base-generic-medium-hover: var(--yc-color-private-black-250);--yc-color-base-generic-accent: var(--yc-color-private-black-150);--yc-color-base-generic-accent-disabled: var(--yc-color-private-black-70);--yc-color-base-generic-ultralight: var(--yc-color-private-black-20-solid);--yc-color-base-simple-hover: var(--yc-color-private-black-50);--yc-color-base-simple-hover-solid: var(--yc-color-private-black-50-solid);--yc-color-base-selection: var(--yc-my-color-brand-selection);--yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);--yc-color-base-special: var(--yc-my-color-brand-normal);--yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);--yc-color-base-action: var(--yc-color-base-special);--yc-color-base-action-hover: var(--yc-color-base-special-hover);--yc-color-base-info: var(--yc-color-private-blue-50);--yc-color-base-info-hover: var(--yc-color-private-blue-100);--yc-color-base-positive: var(--yc-color-private-green-50);--yc-color-base-positive-hover: var(--yc-color-private-green-100);--yc-color-base-warning: var(--yc-color-private-yellow-100);--yc-color-base-warning-hover: var(--yc-color-private-yellow-200);--yc-color-base-danger: var(--yc-color-private-red-50);--yc-color-base-danger-hover: var(--yc-color-private-red-100);--yc-color-base-misc: var(--yc-color-private-cool-grey-50);--yc-color-base-misc-hover: var(--yc-color-private-cool-grey-100);--yc-color-base-neutral: var(--yc-color-private-black-50);--yc-color-base-neutral-hover: var(--yc-color-private-black-150);--yc-color-base-positive-medium: var(--yc-color-private-green-150);--yc-color-base-positive-medium-hover: var(--yc-color-private-green-200);--yc-color-base-info-heavy: var(--yc-color-private-blue-450);--yc-color-base-positive-heavy: var(--yc-color-private-green-450);--yc-color-base-warning-heavy: var(--yc-color-private-yellow-550);--yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-600);--yc-color-base-danger-heavy: var(--yc-color-private-red-450);--yc-color-base-danger-heavy-hover: var(--yc-color-private-red-500);--yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450-solid);--yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);--yc-color-base-light: var(--yc-color-private-white-1000);--yc-color-base-light-hover: var(--yc-color-private-white-850);--yc-color-base-light-simple-hover: var(--yc-color-private-white-150);--yc-color-base-light-disabled: var(--yc-color-private-white-150);--yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);--yc-color-base-float: var(--yc-color-private-white-1000);--yc-color-base-float-hover: var(--yc-color-private-black-50-solid);--yc-color-base-float-heavy: var(--yc-color-private-black-700-solid);--yc-color-base-float-accent: var(--yc-color-private-white-1000);--yc-color-base-float-accent-hover: var(--yc-color-private-white-850);--yc-color-base-float-announcement: var(--yc-color-private-cool-grey-50-solid);--yc-color-base-modal: var(--yc-color-private-white-1000);--yc-color-line-generic: var(--yc-color-private-black-100);--yc-color-line-generic-hover: var(--yc-color-private-black-150);--yc-color-line-generic-active: var(--yc-color-private-black-300);--yc-color-line-generic-accent: var(--yc-color-private-black-150);--yc-color-line-generic-accent-hover: var(--yc-color-private-black-300);--yc-color-line-solid: var(--yc-color-private-black-100-solid);--yc-color-line-selection-hover: var(--yc-my-color-brand-light);--yc-color-line-selection-active: var(--yc-my-color-brand-normal);--yc-color-line-link: var(--yc-my-color-brand-normal);--yc-color-line-info: var(--yc-color-private-blue-450);--yc-color-line-positive: var(--yc-color-private-green-450);--yc-color-line-warning: var(--yc-color-private-yellow-600);--yc-color-line-danger: var(--yc-color-private-red-450);--yc-color-line-misc: var(--yc-color-private-cool-grey-450);--yc-color-line-hint: var(--yc-color-private-blue-550);--yc-color-line-light: var(--yc-color-private-white-500);--yc-color-infographics-info-light: var(--yc-color-private-blue-50);--yc-color-infographics-positive-light: var(--yc-color-private-green-50);--yc-color-infographics-warning-light: var(--yc-color-private-orange-50);--yc-color-infographics-danger-light: var(--yc-color-private-red-50);--yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-50);--yc-color-infographics-neutral-light: var(--yc-color-private-black-50);--yc-color-infographics-info-medium: var(--yc-color-private-blue-300);--yc-color-infographics-positive-medium: var(--yc-color-private-green-300);--yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);--yc-color-infographics-danger-medium: var(--yc-color-private-red-300);--yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);--yc-color-infographics-neutral-medium: var(--yc-color-private-black-150);--yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);--yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);--yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);--yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);--yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);--yc-color-infographics-neutral-heavy: var(--yc-color-private-black-300);--yc-color-infographics-axis: var(--yc-color-private-black-150-solid);--yc-color-infographics-tooltip-bg: var(--yc-color-private-white-950);--yc-color-sfx-veil: var(--yc-color-private-black-250);--yc-color-sfx-shadow: var(--yc-color-private-black-150);--yc-color-sfx-shadow-heavy: var(--yc-color-private-black-500);--yc-color-sfx-shadow-light: var(--yc-color-private-black-50);--yc-color-sfx-fade: var(--yc-color-private-white-300);--yc-color-promo-base-silver: #eff2f8;--yc-color-promo-base-gold: #ffdb4d;--yc-color-promo-base-asphalt: #313538;--yc-color-promo-base-tomato: #ff5958;--yc-color-promo-base-copper: #ffab3b;--yc-color-promo-base-mint: #5ecf71;--yc-color-promo-base-sky: #49a0f6;--yc-color-promo-base-neon: #9f6fee;--yc-color-promo-highlight-silver: #edf2f7;--yc-color-promo-highlight-gold: #fff1b8;--yc-color-promo-highlight-asphalt: #eaebeb;--yc-color-promo-highlight-tomato: #ffdede;--yc-color-promo-highlight-copper: #ffe6c4;--yc-color-promo-highlight-mint: #ccf0d2;--yc-color-promo-highlight-sky: #d6e9fd;--yc-color-promo-highlight-neon: #ece2fc;--yc-color-promo-accent-silver: #969a9e;--yc-color-promo-accent-gold: #ffdb4d;--yc-color-promo-accent-asphalt: #313538;--yc-color-promo-accent-tomato: #ff5958;--yc-color-promo-accent-copper: #ffab3b;--yc-color-promo-accent-mint: #5ecf71;--yc-color-promo-accent-sky: #49a0f6;--yc-color-promo-accent-neon: #9f6fee;--yc-color-promo-accent-hover-silver: #727578;--yc-color-promo-accent-hover-gold: #edbe28;--yc-color-promo-accent-hover-asphalt: #000000;--yc-color-promo-accent-hover-tomato: #ee4f4e;--yc-color-promo-accent-hover-copper: #f28d04;--yc-color-promo-accent-hover-mint: #3bbc51;--yc-color-promo-accent-hover-sky: #2180de;--yc-color-promo-accent-hover-neon: #7b47cf;--yc-color-promo-text-silver: #969a9e;--yc-color-promo-text-gold: #ebb409;--yc-color-promo-text-asphalt: #313538;--yc-color-promo-text-tomato: #ff5958;--yc-color-promo-text-copper: #ffab3b;--yc-color-promo-text-mint: #5ecf71;--yc-color-promo-text-sky: #49a0f6;--yc-color-promo-text-neon: #9f6fee;--yc-color-scroll-track: var(--yc-color-base-background);--yc-color-scroll-handle: var(--yc-color-private-black-100);--yc-color-scroll-handle-hover: var(--yc-color-private-black-150);--yc-color-scroll-corner: var(--yc-color-private-black-100);background:var(--yc-color-base-background);color:var(--yc-color-text-primary)}.yc-root_theme_dark{--yc-color-private-white-50: rgba(255, 255, 255, 0.05);--yc-color-private-white-70: rgba(255, 255, 255, 0.07);--yc-color-private-white-100: rgba(255, 255, 255, 0.1);--yc-color-private-white-150: rgba(255, 255, 255, 0.15);--yc-color-private-white-250: rgba(255, 255, 255, 0.25);--yc-color-private-white-300: rgba(255, 255, 255, 0.3);--yc-color-private-white-500: rgba(255, 255, 255, 0.5);--yc-color-private-white-700: rgba(255, 255, 255, 0.7);--yc-color-private-white-850: rgba(255, 255, 255, 0.85);--yc-color-private-white-opaque-150: rgba(76, 75, 81, 0.95);--yc-color-private-black-200: rgba(0, 0, 0, 0.2);--yc-color-private-black-300: rgba(0, 0, 0, 0.3);--yc-color-private-black-400: rgba(0, 0, 0, 0.4);--yc-color-private-black-500: rgba(0, 0, 0, 0.5);--yc-color-private-black-600: rgba(0, 0, 0, 0.6);--yc-color-private-black-700: rgba(0, 0, 0, 0.7);--yc-color-private-black-900: rgba(0, 0, 0, 0.9);--yc-color-private-black-rock-850: rgba(45, 44, 51, 1);--yc-color-private-white-20-solid: rgba(49, 48, 55, 1);--yc-color-private-white-100-solid: rgba(66, 65, 71, 1);--yc-color-private-white-150-solid: rgba(76, 76, 82, 1);--yc-color-private-white-200-solid: rgba(87, 86, 92, 1);--yc-color-private-blue-100: rgba(133, 168, 255, 0.15);--yc-color-private-blue-150: rgba(133, 168, 255, 0.25);--yc-color-private-blue-300: rgba(133, 168, 255, 0.5);--yc-color-private-blue-450: rgba(87, 126, 214, 0.8);--yc-color-private-blue-550: rgba(87, 126, 214, 1);--yc-color-private-blue-700: rgba(98, 146, 255, 1);--yc-color-private-blue-850: rgba(133, 168, 255, 1);--yc-color-private-blue-150-solid: rgba(67, 75, 102, 1);--yc-color-private-blue-300-solid: rgba(89, 106, 153, 1);--yc-color-private-blue-450-solid: rgba(79, 110, 181, 1);--yc-color-private-green-100: rgba(59, 201, 53, 0.12);--yc-color-private-green-150: rgba(59, 201, 53, 0.16);--yc-color-private-green-300: rgba(186, 255, 184, 0.6);--yc-color-private-green-350: rgba(186, 255, 184, 0.68);--yc-color-private-green-450: rgba(59, 201, 53, 0.58);--yc-color-private-green-550: rgba(59, 201, 53, 0.75);--yc-color-private-green-450-solid: rgba(53, 135, 52, 1);--yc-color-private-yellow-100: rgba(255, 219, 77, 0.25);--yc-color-private-yellow-150: rgba(255, 219, 77, 0.4);--yc-color-private-yellow-450: rgba(255, 219, 77, 0.64);--yc-color-private-yellow-550: rgba(255, 219, 77, 0.8);--yc-color-private-yellow-700: rgba(224, 189, 52, 1);--yc-color-private-red-100: rgba(191, 50, 48, 0.3);--yc-color-private-red-150: rgba(191, 50, 48, 0.45);--yc-color-private-red-300: rgba(255, 77, 73, 0.5);--yc-color-private-red-450: rgba(208, 71, 69, 0.88);--yc-color-private-red-550: rgba(208, 71, 69, 1);--yc-color-private-red-450-solid: rgba(162, 49, 48, 1);--yc-color-private-purple-550: rgba(166, 62, 178, 1);--yc-color-private-purple-700: rgba(177, 78, 198, 1);--yc-color-private-purple-850: rgba(200, 121, 216, 1);--yc-color-private-cool-grey-100: rgba(95, 115, 133, 0.18);--yc-color-private-cool-grey-150: rgba(107, 132, 153, 0.3);--yc-color-private-cool-grey-300: rgba(95, 115, 133, 0.6);--yc-color-private-cool-grey-450: rgba(95, 115, 133, 0.8);--yc-color-private-cool-grey-550: rgba(95, 115, 133, 1);--yc-color-private-cool-grey-700: rgba(142, 162, 180, 1);--yc-color-private-cool-grey-450-solid: rgba(85, 101, 117, 1);--yc-color-private-orange-50: rgba(204, 104, 16, 0.2);--yc-color-private-orange-100: rgba(204, 104, 16, 0.3);--yc-color-private-orange-150: rgba(204, 104, 16, 0.5);--yc-color-private-orange-300: rgba(255, 160, 66, 0.5);--yc-color-private-orange-450: rgba(204, 104, 16, 0.8);--yc-color-private-orange-550: rgba(204, 104, 16, 1);--yc-color-private-orange-450-solid: rgba(172, 92, 23, 1);--yc-my-color-brand-normal: var(--yc-color-private-blue-550);--yc-my-color-brand-normal-hover: var(--yc-color-private-blue-700);--yc-my-color-brand-light: var(--yc-color-private-blue-300);--yc-my-color-brand-selection: var(--yc-color-private-blue-150);--yc-my-color-brand-selection-hover: var(--yc-color-private-blue-300);--yc-my-color-brand-link: var(--yc-color-private-blue-700);--yc-my-color-brand-link-hover: var(--yc-color-private-blue-850);--yc-my-color-brand-text: var(--yc-color-private-blue-700);--yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);--yc-my-color-brand-link-visited: var(--yc-color-private-purple-700);--yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-850);--yc-color-text-primary: var(--yc-color-private-white-850);--yc-color-text-complementary: var(--yc-color-private-white-700);--yc-color-text-secondary: var(--yc-color-private-white-500);--yc-color-text-hint: var(--yc-color-private-white-300);--yc-color-text-info: var(--yc-color-private-blue-700);--yc-color-text-positive: var(--yc-color-private-green-550);--yc-color-text-warning: var(--yc-color-private-yellow-700);--yc-color-text-danger: var(--yc-color-private-red-550);--yc-color-text-utility: var(--yc-color-private-purple-550);--yc-color-text-misc: var(--yc-color-private-cool-grey-700);--yc-color-text-info-heavy: var(--yc-color-private-blue-700);--yc-color-text-positive-heavy: var(--yc-color-private-green-550);--yc-color-text-warning-heavy: var(--yc-color-private-yellow-700);--yc-color-text-danger-heavy: var(--yc-color-private-red-550);--yc-color-text-utility-heavy: var(--yc-color-private-purple-550);--yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-700);--yc-color-text-special: var(--yc-my-color-brand-normal);--yc-color-text-link: var(--yc-my-color-brand-link);--yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);--yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);--yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);--yc-color-text-yandex-red: var(--yc-color-private-red-550);--yc-color-text-dark-primary: var(--yc-color-private-black-900);--yc-color-text-dark-complementary: var(--yc-color-private-black-700);--yc-color-text-dark-secondary: var(--yc-color-private-black-500);--yc-color-text-light-primary: var(--yc-color-private-white-850);--yc-color-text-light-complementary: var(--yc-color-private-white-700);--yc-color-text-light-secondary: var(--yc-color-private-white-500);--yc-color-text-light-hint: var(--yc-color-private-white-300);--yc-color-text-inverted-primary: var(--yc-color-private-black-900);--yc-color-text-inverted-complementary: var(--yc-color-private-black-700);--yc-color-text-inverted-secondary: var(--yc-color-private-black-500);--yc-color-text-inverted-hint: var(--yc-color-private-black-300);--yc-color-base-background: var(--yc-color-private-black-rock-850);--yc-color-base-generic: var(--yc-color-private-white-100);--yc-color-base-generic-hover: var(--yc-color-private-white-150);--yc-color-base-generic-medium: var(--yc-color-private-white-250);--yc-color-base-generic-medium-hover: var(--yc-color-private-white-300);--yc-color-base-generic-accent: var(--yc-color-private-white-150);--yc-color-base-generic-accent-disabled: var(--yc-color-private-white-70);--yc-color-base-generic-ultralight: var(--yc-color-private-white-20-solid);--yc-color-base-simple-hover: var(--yc-color-private-white-100);--yc-color-base-simple-hover-solid: var(--yc-color-private-white-100-solid);--yc-color-base-selection: var(--yc-my-color-brand-selection);--yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);--yc-color-base-special: var(--yc-my-color-brand-normal);--yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);--yc-color-base-action: var(--yc-color-base-special);--yc-color-base-action-hover: var(--yc-color-base-special-hover);--yc-color-base-info: var(--yc-color-private-blue-100);--yc-color-base-info-hover: var(--yc-color-private-blue-150);--yc-color-base-positive: var(--yc-color-private-green-100);--yc-color-base-positive-hover: var(--yc-color-private-green-150);--yc-color-base-warning: var(--yc-color-private-yellow-100);--yc-color-base-warning-hover: var(--yc-color-private-yellow-150);--yc-color-base-danger: var(--yc-color-private-red-100);--yc-color-base-danger-hover: var(--yc-color-private-red-150);--yc-color-base-misc: var(--yc-color-private-cool-grey-100);--yc-color-base-misc-hover: var(--yc-color-private-cool-grey-150);--yc-color-base-neutral: var(--yc-color-private-white-100);--yc-color-base-neutral-hover: var(--yc-color-private-white-150);--yc-color-base-positive-medium: var(--yc-color-private-green-300);--yc-color-base-positive-medium-hover: var(--yc-color-private-green-350);--yc-color-base-info-heavy: var(--yc-color-private-blue-450);--yc-color-base-positive-heavy: var(--yc-color-private-green-450);--yc-color-base-warning-heavy: var(--yc-color-private-yellow-550);--yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-700);--yc-color-base-danger-heavy: var(--yc-color-private-red-450);--yc-color-base-danger-heavy-hover: var(--yc-color-private-red-550);--yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450-solid);--yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);--yc-color-base-light: var(--yc-color-private-white-850);--yc-color-base-light-hover: var(--yc-color-private-white-700);--yc-color-base-light-simple-hover: var(--yc-color-private-white-150);--yc-color-base-light-disabled: var(--yc-color-private-white-150);--yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);--yc-color-base-float: var(--yc-color-private-white-100-solid);--yc-color-base-float-hover: var(--yc-color-private-white-150-solid);--yc-color-base-float-heavy: var(--yc-color-private-white-150-solid);--yc-color-base-float-accent: var(--yc-color-private-white-150-solid);--yc-color-base-float-accent-hover: var(--yc-color-private-white-200-solid);--yc-color-base-float-announcement: var(--yc-color-private-white-150-solid);--yc-color-base-modal: var(--yc-color-private-black-rock-850);--yc-color-line-generic: var(--yc-color-private-white-150);--yc-color-line-generic-hover: var(--yc-color-private-white-250);--yc-color-line-generic-active: var(--yc-color-private-white-300);--yc-color-line-generic-accent: var(--yc-color-private-white-150);--yc-color-line-generic-accent-hover: var(--yc-color-private-white-300);--yc-color-line-solid: var(--yc-color-private-white-150-solid);--yc-color-line-selection-hover: var(--yc-my-color-brand-light);--yc-color-line-selection-active: var(--yc-my-color-brand-normal);--yc-color-line-link: var(--yc-my-color-brand-normal);--yc-color-line-info: var(--yc-color-private-blue-450);--yc-color-line-positive: var(--yc-color-private-green-450);--yc-color-line-warning: var(--yc-color-private-yellow-150);--yc-color-line-danger: var(--yc-color-private-red-450);--yc-color-line-misc: var(--yc-color-private-cool-grey-450);--yc-color-line-hint: var(--yc-color-private-blue-550);--yc-color-line-light: var(--yc-color-private-white-500);--yc-color-infographics-info-light: var(--yc-color-private-blue-150);--yc-color-infographics-positive-light: var(--yc-color-private-green-150);--yc-color-infographics-warning-light: var(--yc-color-private-orange-150);--yc-color-infographics-danger-light: var(--yc-color-private-red-150);--yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-150);--yc-color-infographics-neutral-light: var(--yc-color-private-white-150);--yc-color-infographics-info-medium: var(--yc-color-private-blue-300);--yc-color-infographics-positive-medium: var(--yc-color-private-green-300);--yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);--yc-color-infographics-danger-medium: var(--yc-color-private-red-300);--yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);--yc-color-infographics-neutral-medium: var(--yc-color-private-white-150);--yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);--yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);--yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);--yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);--yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);--yc-color-infographics-neutral-heavy: var(--yc-color-private-white-300);--yc-color-infographics-axis: var(--yc-color-private-white-150-solid);--yc-color-infographics-tooltip-bg: var(--yc-color-private-white-opaque-150);--yc-color-sfx-veil: var(--yc-color-private-black-600);--yc-color-sfx-shadow: var(--yc-color-private-black-200);--yc-color-sfx-shadow-heavy: var(--yc-color-private-black-500);--yc-color-sfx-shadow-light: var(--yc-color-private-black-50);--yc-color-sfx-fade: var(--yc-color-private-white-250);--yc-color-promo-base-silver: #bcc0c4;--yc-color-promo-base-gold: #ffde5d;--yc-color-promo-base-asphalt: #474d52;--yc-color-promo-base-tomato: #ff6b6a;--yc-color-promo-base-copper: #ffb95a;--yc-color-promo-base-mint: #7fd68e;--yc-color-promo-base-sky: #69b4ff;--yc-color-promo-base-neon: #b384ff;--yc-color-promo-highlight-silver: #616366;--yc-color-promo-highlight-gold: #99832e;--yc-color-promo-highlight-asphalt: #5d656b;--yc-color-promo-highlight-tomato: #998585;--yc-color-promo-highlight-copper: #7f7262;--yc-color-promo-highlight-mint: #758978;--yc-color-promo-highlight-sky: #94a2af;--yc-color-promo-highlight-neon: #aea6ba;--yc-color-scroll-track: var(--yc-color-base-background);--yc-color-scroll-handle: var(--yc-color-private-white-150);--yc-color-scroll-handle-hover: var(--yc-color-private-white-250);--yc-color-scroll-corner: var(--yc-color-private-white-150);background:var(--yc-color-base-background);color:var(--yc-color-text-primary)}.yc-root_theme_light-hc{--yc-color-private-white-50: rgba(255, 255, 255, 0.05);--yc-color-private-white-70: rgba(255, 255, 255, 0.07);--yc-color-private-white-100: rgba(255, 255, 255, 0.1);--yc-color-private-white-150: rgba(255, 255, 255, 0.15);--yc-color-private-white-200: rgba(255, 255, 255, 0.2);--yc-color-private-white-250: rgba(255, 255, 255, 0.25);--yc-color-private-white-300: rgba(255, 255, 255, 0.3);--yc-color-private-white-350: rgba(255, 255, 255, 0.35);--yc-color-private-white-400: rgba(255, 255, 255, 0.4);--yc-color-private-white-450: rgba(255, 255, 255, 0.45);--yc-color-private-white-500: rgba(255, 255, 255, 0.5);--yc-color-private-white-550: rgba(255, 255, 255, 0.55);--yc-color-private-white-600: rgba(255, 255, 255, 0.6);--yc-color-private-white-650: rgba(255, 255, 255, 0.65);--yc-color-private-white-700: rgba(255, 255, 255, 0.7);--yc-color-private-white-750: rgba(255, 255, 255, 0.75);--yc-color-private-white-800: rgba(255, 255, 255, 0.8);--yc-color-private-white-850: rgba(255, 255, 255, 0.85);--yc-color-private-white-900: rgba(255, 255, 255, 0.9);--yc-color-private-white-950: rgba(255, 255, 255, 0.95);--yc-color-private-white-1000: rgba(255, 255, 255, 1);--yc-color-private-black-50: rgba(0, 0, 0, 0.05);--yc-color-private-black-100: rgba(0, 0, 0, 0.1);--yc-color-private-black-150: rgba(0, 0, 0, 0.15);--yc-color-private-black-200: rgba(0, 0, 0, 0.2);--yc-color-private-black-250: rgba(0, 0, 0, 0.25);--yc-color-private-black-300: rgba(0, 0, 0, 0.3);--yc-color-private-black-350: rgba(0, 0, 0, 0.35);--yc-color-private-black-400: rgba(0, 0, 0, 0.4);--yc-color-private-black-450: rgba(0, 0, 0, 0.45);--yc-color-private-black-500: rgba(0, 0, 0, 0.5);--yc-color-private-black-550: rgba(0, 0, 0, 0.55);--yc-color-private-black-600: rgba(0, 0, 0, 0.6);--yc-color-private-black-650: rgba(0, 0, 0, 0.65);--yc-color-private-black-700: rgba(0, 0, 0, 0.7);--yc-color-private-black-750: rgba(0, 0, 0, 0.75);--yc-color-private-black-800: rgba(0, 0, 0, 0.8);--yc-color-private-black-850: rgba(0, 0, 0, 0.85);--yc-color-private-black-900: rgba(0, 0, 0, 0.9);--yc-color-private-black-950: rgba(0, 0, 0, 0.95);--yc-color-private-black-1000: rgba(0, 0, 0, 1);--yc-color-private-black-20-solid: rgba(250, 250, 250, 1);--yc-color-private-black-50-solid: rgba(242, 242, 242, 1);--yc-color-private-black-100-solid: rgba(229, 229, 229, 1);--yc-color-private-black-150-solid: rgba(217, 217, 217, 1);--yc-color-private-black-200-solid: rgba(204, 204, 204, 1);--yc-color-private-black-250-solid: rgba(191, 191, 191, 1);--yc-color-private-black-300-solid: rgba(179, 179, 179, 1);--yc-color-private-black-350-solid: rgba(166, 166, 166, 1);--yc-color-private-black-400-solid: rgba(153, 153, 153, 1);--yc-color-private-black-450-solid: rgba(140, 140, 140, 1);--yc-color-private-black-500-solid: rgba(128, 128, 128, 1);--yc-color-private-black-550-solid: rgba(115, 115, 115, 1);--yc-color-private-black-600-solid: rgba(102, 102, 102, 1);--yc-color-private-black-650-solid: rgba(89, 89, 89, 1);--yc-color-private-black-700-solid: rgba(76, 76, 76, 1);--yc-color-private-black-750-solid: rgba(64, 64, 64, 1);--yc-color-private-black-800-solid: rgba(51, 51, 51, 1);--yc-color-private-black-850-solid: rgba(38, 38, 38, 1);--yc-color-private-black-900-solid: rgba(26, 26, 26, 1);--yc-color-private-black-950-solid: rgba(13, 13, 13, 1);--yc-color-private-black-1000-solid: rgba(0, 0, 0, 1);--yc-color-private-blue-600: #4a71d6;--yc-color-private-blue-800: #3f5799;--yc-color-private-blue-50: rgba(82, 130, 255, 0.05);--yc-color-private-blue-100: rgba(82, 130, 255, 0.1);--yc-color-private-blue-150: rgba(82, 130, 255, 0.2);--yc-color-private-blue-200: rgba(82, 130, 255, 0.3);--yc-color-private-blue-250: rgba(82, 130, 255, 0.4);--yc-color-private-blue-300: rgba(82, 130, 255, 0.5);--yc-color-private-blue-350: rgba(82, 130, 255, 0.6);--yc-color-private-blue-400: rgba(82, 130, 255, 0.7);--yc-color-private-blue-450: rgba(82, 130, 255, 0.8);--yc-color-private-blue-500: rgba(82, 130, 255, 0.9);--yc-color-private-blue-550: rgba(82, 130, 255, 1);--yc-color-private-blue-50-solid: rgba(246, 249, 255, 1);--yc-color-private-blue-100-solid: rgba(238, 243, 255, 1);--yc-color-private-blue-150-solid: rgba(220, 230, 255, 1);--yc-color-private-blue-200-solid: rgba(203, 218, 255, 1);--yc-color-private-blue-250-solid: rgba(186, 205, 255, 1);--yc-color-private-blue-300-solid: rgba(168, 193, 255, 1);--yc-color-private-blue-350-solid: rgba(151, 180, 255, 1);--yc-color-private-blue-400-solid: rgba(134, 168, 255, 1);--yc-color-private-blue-450-solid: rgba(116, 155, 255, 1);--yc-color-private-blue-500-solid: rgba(99, 143, 255, 1);--yc-color-private-blue-550-solid: rgba(82, 130, 255, 1);--yc-color-private-blue-600-solid: rgba(77, 121, 233, 1);--yc-color-private-blue-650-solid: rgba(72, 111, 212, 1);--yc-color-private-blue-700-solid: rgba(67, 102, 190, 1);--yc-color-private-blue-750-solid: rgba(63, 92, 168, 1);--yc-color-private-blue-800-solid: rgba(58, 83, 147, 1);--yc-color-private-blue-850-solid: rgba(53, 73, 125, 1);--yc-color-private-blue-900-solid: rgba(48, 64, 103, 1);--yc-color-private-blue-950-solid: rgba(44, 54, 81, 1);--yc-color-private-blue-1000-solid: rgba(39, 45, 60, 1);--yc-color-private-green-50: rgba(59, 201, 53, 0.05);--yc-color-private-green-100: rgba(59, 201, 53, 0.1);--yc-color-private-green-150: rgba(59, 201, 53, 0.2);--yc-color-private-green-200: rgba(59, 201, 53, 0.3);--yc-color-private-green-250: rgba(59, 201, 53, 0.4);--yc-color-private-green-300: rgba(59, 201, 53, 0.5);--yc-color-private-green-350: rgba(59, 201, 53, 0.6);--yc-color-private-green-400: rgba(59, 201, 53, 0.7);--yc-color-private-green-450: rgba(59, 201, 53, 0.8);--yc-color-private-green-500: rgba(59, 201, 53, 0.9);--yc-color-private-green-550: rgba(59, 201, 53, 1);--yc-color-private-green-50-solid: rgba(245, 252, 245, 1);--yc-color-private-green-100-solid: rgba(235, 250, 235, 1);--yc-color-private-green-150-solid: rgba(216, 244, 215, 1);--yc-color-private-green-200-solid: rgba(196, 239, 194, 1);--yc-color-private-green-250-solid: rgba(177, 233, 174, 1);--yc-color-private-green-300-solid: rgba(157, 228, 154, 1);--yc-color-private-green-350-solid: rgba(137, 223, 134, 1);--yc-color-private-green-400-solid: rgba(118, 217, 114, 1);--yc-color-private-green-450-solid: rgba(98, 212, 93, 1);--yc-color-private-green-500-solid: rgba(79, 206, 73, 1);--yc-color-private-green-550-solid: rgba(59, 201, 53, 1);--yc-color-private-green-600-solid: rgba(56, 184, 51, 1);--yc-color-private-green-650-solid: rgba(54, 168, 50, 1);--yc-color-private-green-700-solid: rgba(51, 151, 48, 1);--yc-color-private-green-750-solid: rgba(49, 135, 47, 1);--yc-color-private-green-800-solid: rgba(47, 118, 46, 1);--yc-color-private-green-850-solid: rgba(44, 101, 44, 1);--yc-color-private-green-900-solid: rgba(41, 85, 43, 1);--yc-color-private-green-950-solid: rgba(39, 68, 41, 1);--yc-color-private-green-1000-solid: rgba(36, 52, 40, 1);--yc-color-private-yellow-50: rgba(255, 219, 77, 0.05);--yc-color-private-yellow-100: rgba(255, 219, 77, 0.1);--yc-color-private-yellow-150: rgba(255, 219, 77, 0.2);--yc-color-private-yellow-200: rgba(255, 219, 77, 0.3);--yc-color-private-yellow-250: rgba(255, 219, 77, 0.4);--yc-color-private-yellow-300: rgba(255, 219, 77, 0.5);--yc-color-private-yellow-350: rgba(255, 219, 77, 0.6);--yc-color-private-yellow-400: rgba(255, 219, 77, 0.7);--yc-color-private-yellow-450: rgba(255, 219, 77, 0.8);--yc-color-private-yellow-500: rgba(255, 219, 77, 0.9);--yc-color-private-yellow-550: rgba(255, 219, 77, 1);--yc-color-private-yellow-50-solid: rgba(255, 253, 246, 1);--yc-color-private-yellow-100-solid: rgba(255, 251, 237, 1);--yc-color-private-yellow-150-solid: rgba(255, 248, 219, 1);--yc-color-private-yellow-200-solid: rgba(255, 244, 202, 1);--yc-color-private-yellow-250-solid: rgba(255, 241, 184, 1);--yc-color-private-yellow-300-solid: rgba(255, 237, 166, 1);--yc-color-private-yellow-350-solid: rgba(255, 233, 148, 1);--yc-color-private-yellow-400-solid: rgba(255, 230, 130, 1);--yc-color-private-yellow-450-solid: rgba(255, 226, 113, 1);--yc-color-private-yellow-500-solid: rgba(255, 223, 95, 1);--yc-color-private-yellow-550-solid: rgba(255, 219, 77, 1);--yc-color-private-yellow-600-solid: rgba(233, 201, 73, 1);--yc-color-private-yellow-650-solid: rgba(211, 182, 69, 1);--yc-color-private-yellow-700-solid: rgba(189, 164, 65, 1);--yc-color-private-yellow-750-solid: rgba(167, 145, 61, 1);--yc-color-private-yellow-800-solid: rgba(144, 127, 58, 1);--yc-color-private-yellow-850-solid: rgba(122, 109, 54, 1);--yc-color-private-yellow-900-solid: rgba(100, 90, 50, 1);--yc-color-private-yellow-950-solid: rgba(78, 72, 46, 1);--yc-color-private-yellow-1000-solid: rgba(56, 53, 42, 1);--yc-color-private-red-50: rgba(255, 4, 0, 0.05);--yc-color-private-red-100: rgba(255, 4, 0, 0.1);--yc-color-private-red-150: rgba(255, 4, 0, 0.2);--yc-color-private-red-200: rgba(255, 4, 0, 0.3);--yc-color-private-red-250: rgba(255, 4, 0, 0.4);--yc-color-private-red-300: rgba(255, 4, 0, 0.5);--yc-color-private-red-350: rgba(255, 4, 0, 0.6);--yc-color-private-red-400: rgba(255, 4, 0, 0.7);--yc-color-private-red-450: rgba(255, 4, 0, 0.8);--yc-color-private-red-500: rgba(255, 4, 0, 0.9);--yc-color-private-red-550: rgba(255, 4, 0, 1);--yc-color-private-red-50-solid: rgba(255, 243, 242, 1);--yc-color-private-red-100-solid: rgba(255, 230, 229, 1);--yc-color-private-red-150-solid: rgba(255, 205, 204, 1);--yc-color-private-red-200-solid: rgba(255, 180, 179, 1);--yc-color-private-red-250-solid: rgba(255, 155, 153, 1);--yc-color-private-red-300-solid: rgba(255, 130, 128, 1);--yc-color-private-red-350-solid: rgba(255, 105, 102, 1);--yc-color-private-red-400-solid: rgba(255, 80, 76, 1);--yc-color-private-red-450-solid: rgba(255, 55, 51, 1);--yc-color-private-red-500-solid: rgba(255, 30, 26, 1);--yc-color-private-red-550-solid: rgba(255, 4, 0, 1);--yc-color-private-red-600-solid: rgba(233, 8, 4, 1);--yc-color-private-red-650-solid: rgba(211, 11, 8, 1);--yc-color-private-red-700-solid: rgba(189, 14, 11, 1);--yc-color-private-red-750-solid: rgba(166, 17, 15, 1);--yc-color-private-red-800-solid: rgba(144, 20, 19, 1);--yc-color-private-red-850-solid: rgba(122, 23, 23, 1);--yc-color-private-red-900-solid: rgba(100, 26, 27, 1);--yc-color-private-red-950-solid: rgba(78, 29, 30, 1);--yc-color-private-red-1000-solid: rgba(56, 32, 34, 1);--yc-color-private-purple-50: rgba(154, 50, 166, 0.05);--yc-color-private-purple-100: rgba(154, 50, 166, 0.1);--yc-color-private-purple-150: rgba(154, 50, 166, 0.2);--yc-color-private-purple-200: rgba(154, 50, 166, 0.3);--yc-color-private-purple-250: rgba(154, 50, 166, 0.4);--yc-color-private-purple-300: rgba(154, 50, 166, 0.5);--yc-color-private-purple-350: rgba(154, 50, 166, 0.6);--yc-color-private-purple-400: rgba(154, 50, 166, 0.7);--yc-color-private-purple-450: rgba(154, 50, 166, 0.8);--yc-color-private-purple-500: rgba(154, 50, 166, 0.9);--yc-color-private-purple-550: rgba(154, 50, 166, 1);--yc-color-private-purple-50-solid: rgba(250, 245, 251, 1);--yc-color-private-purple-100-solid: rgba(245, 234, 246, 1);--yc-color-private-purple-150-solid: rgba(235, 214, 237, 1);--yc-color-private-purple-200-solid: rgba(225, 193, 228, 1);--yc-color-private-purple-250-solid: rgba(215, 173, 219, 1);--yc-color-private-purple-300-solid: rgba(204, 153, 210, 1);--yc-color-private-purple-350-solid: rgba(194, 132, 202, 1);--yc-color-private-purple-400-solid: rgba(184, 111, 193, 1);--yc-color-private-purple-450-solid: rgba(174, 91, 184, 1);--yc-color-private-purple-500-solid: rgba(164, 71, 175, 1);--yc-color-private-purple-550-solid: rgba(154, 50, 166, 1);--yc-color-private-purple-600-solid: rgba(142, 49, 153, 1);--yc-color-private-purple-650-solid: rgba(130, 47, 140, 1);--yc-color-private-purple-700-solid: rgba(118, 45, 128, 1);--yc-color-private-purple-750-solid: rgba(106, 44, 115, 1);--yc-color-private-purple-800-solid: rgba(94, 42, 102, 1);--yc-color-private-purple-850-solid: rgba(82, 41, 89, 1);--yc-color-private-purple-900-solid: rgba(70, 40, 76, 1);--yc-color-private-purple-950-solid: rgba(58, 38, 64, 1);--yc-color-private-purple-1000-solid: rgba(46, 36, 51, 1);--yc-color-private-cool-grey-50: rgba(107, 132, 153, 0.05);--yc-color-private-cool-grey-100: rgba(107, 132, 153, 0.1);--yc-color-private-cool-grey-150: rgba(107, 132, 153, 0.2);--yc-color-private-cool-grey-200: rgba(107, 132, 153, 0.3);--yc-color-private-cool-grey-250: rgba(107, 132, 153, 0.4);--yc-color-private-cool-grey-300: rgba(107, 132, 153, 0.5);--yc-color-private-cool-grey-350: rgba(107, 132, 153, 0.6);--yc-color-private-cool-grey-400: rgba(107, 132, 153, 0.7);--yc-color-private-cool-grey-450: rgba(107, 132, 153, 0.8);--yc-color-private-cool-grey-500: rgba(107, 132, 153, 0.9);--yc-color-private-cool-grey-550: rgba(107, 132, 153, 1);--yc-color-private-cool-grey-50-solid: rgba(248, 249, 250, 1);--yc-color-private-cool-grey-100-solid: rgba(240, 243, 245, 1);--yc-color-private-cool-grey-150-solid: rgba(225, 230, 235, 1);--yc-color-private-cool-grey-200-solid: rgba(211, 218, 224, 1);--yc-color-private-cool-grey-250-solid: rgba(196, 206, 214, 1);--yc-color-private-cool-grey-300-solid: rgba(181, 193, 204, 1);--yc-color-private-cool-grey-350-solid: rgba(166, 181, 194, 1);--yc-color-private-cool-grey-400-solid: rgba(151, 169, 184, 1);--yc-color-private-cool-grey-450-solid: rgba(137, 157, 173, 1);--yc-color-private-cool-grey-500-solid: rgba(122, 144, 163, 1);--yc-color-private-cool-grey-550-solid: rgba(107, 132, 153, 1);--yc-color-private-cool-grey-600-solid: rgba(100, 122, 142, 1);--yc-color-private-cool-grey-650-solid: rgba(92, 113, 130, 1);--yc-color-private-cool-grey-700-solid: rgba(85, 103, 118, 1);--yc-color-private-cool-grey-750-solid: rgba(78, 93, 107, 1);--yc-color-private-cool-grey-800-solid: rgba(70, 83, 96, 1);--yc-color-private-cool-grey-850-solid: rgba(63, 74, 84, 1);--yc-color-private-cool-grey-900-solid: rgba(56, 64, 73, 1);--yc-color-private-cool-grey-950-solid: rgba(49, 54, 61, 1);--yc-color-private-cool-grey-1000-solid: rgba(41, 45, 49, 1);--yc-color-private-orange-50: rgba(255, 119, 0, 0.05);--yc-color-private-orange-100: rgba(255, 119, 0, 0.1);--yc-color-private-orange-150: rgba(255, 119, 0, 0.2);--yc-color-private-orange-200: rgba(255, 119, 0, 0.3);--yc-color-private-orange-250: rgba(255, 119, 0, 0.4);--yc-color-private-orange-300: rgba(255, 119, 0, 0.5);--yc-color-private-orange-350: rgba(255, 119, 0, 0.6);--yc-color-private-orange-400: rgba(255, 119, 0, 0.7);--yc-color-private-orange-450: rgba(255, 119, 0, 0.8);--yc-color-private-orange-500: rgba(255, 119, 0, 0.9);--yc-color-private-orange-550: rgba(255, 119, 0, 1);--yc-color-private-orange-50-solid: rgba(255, 248, 242, 1);--yc-color-private-orange-100-solid: rgba(255, 241, 229, 1);--yc-color-private-orange-150-solid: rgba(255, 228, 204, 1);--yc-color-private-orange-200-solid: rgba(255, 214, 179, 1);--yc-color-private-orange-250-solid: rgba(255, 201, 153, 1);--yc-color-private-orange-300-solid: rgba(255, 187, 128, 1);--yc-color-private-orange-350-solid: rgba(255, 173, 102, 1);--yc-color-private-orange-400-solid: rgba(255, 160, 76, 1);--yc-color-private-orange-450-solid: rgba(255, 146, 51, 1);--yc-color-private-orange-500-solid: rgba(255, 133, 26, 1);--yc-color-private-orange-550-solid: rgba(255, 119, 0, 1);--yc-color-private-orange-600-solid: rgba(233, 111, 4, 1);--yc-color-private-orange-650-solid: rgba(211, 102, 8, 1);--yc-color-private-orange-700-solid: rgba(189, 94, 11, 1);--yc-color-private-orange-750-solid: rgba(167, 85, 15, 1);--yc-color-private-orange-800-solid: rgba(144, 77, 19, 1);--yc-color-private-orange-850-solid: rgba(122, 69, 23, 1);--yc-color-private-orange-900-solid: rgba(100, 60, 27, 1);--yc-color-private-orange-950-solid: rgba(78, 52, 30, 1);--yc-color-private-orange-1000-solid: rgba(56, 43, 34, 1);--yc-my-color-brand-normal: var(--yc-color-private-blue-550);--yc-my-color-brand-normal-hover: var(--yc-color-private-blue-800);--yc-my-color-brand-light: var(--yc-color-private-blue-300);--yc-my-color-brand-selection: var(--yc-color-private-blue-250);--yc-my-color-brand-selection-hover: var(--yc-color-private-blue-450);--yc-my-color-brand-link: var(--yc-color-private-blue-650-solid);--yc-my-color-brand-link-hover: var(--yc-color-private-blue-850-solid);--yc-my-color-brand-text: var(--yc-color-private-blue-900-solid);--yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);--yc-my-color-brand-link-visited: var(--yc-color-private-purple-600-solid);--yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-850-solid);--yc-color-text-primary: var(--yc-color-private-black-1000);--yc-color-text-complementary: var(--yc-color-private-black-850);--yc-color-text-secondary: var(--yc-color-private-black-700);--yc-color-text-hint: var(--yc-color-private-black-500);--yc-color-text-info: var(--yc-color-private-blue-600-solid);--yc-color-text-positive: var(--yc-color-private-green-650-solid);--yc-color-text-warning: var(--yc-color-private-yellow-650-solid);--yc-color-text-danger: var(--yc-color-private-red-600-solid);--yc-color-text-utility: var(--yc-color-private-purple-600-solid);--yc-color-text-misc: var(--yc-color-private-cool-grey-650-solid);--yc-color-text-info-heavy: var(--yc-color-private-blue-900-solid);--yc-color-text-positive-heavy: var(--yc-color-private-green-900-solid);--yc-color-text-warning-heavy: var(--yc-color-private-orange-900-solid);--yc-color-text-danger-heavy: var(--yc-color-private-red-900-solid);--yc-color-text-utility-heavy: var(--yc-color-private-purple-900-solid);--yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-950-solid);--yc-color-text-special: var(--yc-my-color-brand-normal);--yc-color-text-link: var(--yc-my-color-brand-link);--yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);--yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);--yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);--yc-color-text-yandex-red: var(--yc-color-private-red-550);--yc-color-text-dark-primary: var(--yc-color-private-black-1000);--yc-color-text-dark-complementary: var(--yc-color-private-black-800);--yc-color-text-dark-secondary: var(--yc-color-private-black-600);--yc-color-text-light-primary: var(--yc-color-private-white-1000);--yc-color-text-light-complementary: var(--yc-color-private-white-850);--yc-color-text-light-secondary: var(--yc-color-private-white-700);--yc-color-text-light-hint: var(--yc-color-private-white-500);--yc-color-text-inverted-primary: var(--yc-color-private-white-1000);--yc-color-text-inverted-complementary: var(--yc-color-private-white-850);--yc-color-text-inverted-secondary: var(--yc-color-private-white-700);--yc-color-text-inverted-hint: var(--yc-color-private-white-500);--yc-color-base-background: var(--yc-color-private-white-1000);--yc-color-base-generic: var(--yc-color-private-black-150);--yc-color-base-generic-hover: var(--yc-color-private-black-300);--yc-color-base-generic-medium: var(--yc-color-private-black-250);--yc-color-base-generic-medium-hover: var(--yc-color-private-black-350);--yc-color-base-generic-accent: var(--yc-color-private-black-250);--yc-color-base-generic-accent-disabled: var(--yc-color-private-black-150);--yc-color-base-generic-ultralight: var(--yc-color-private-black-50-solid);--yc-color-base-simple-hover: var(--yc-color-private-black-150);--yc-color-base-simple-hover-solid: var(--yc-color-private-black-100-solid);--yc-color-base-selection: var(--yc-my-color-brand-selection);--yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);--yc-color-base-special: var(--yc-my-color-brand-normal);--yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);--yc-color-base-action: var(--yc-color-base-special);--yc-color-base-action-hover: var(--yc-color-base-special-hover);--yc-color-base-info: var(--yc-color-private-blue-250);--yc-color-base-info-hover: var(--yc-color-private-blue-350);--yc-color-base-positive: var(--yc-color-private-green-250);--yc-color-base-positive-hover: var(--yc-color-private-green-350);--yc-color-base-warning: var(--yc-color-private-yellow-300);--yc-color-base-warning-hover: var(--yc-color-private-yellow-550);--yc-color-base-danger: var(--yc-color-private-red-250);--yc-color-base-danger-hover: var(--yc-color-private-red-350);--yc-color-base-misc: var(--yc-color-private-cool-grey-250);--yc-color-base-misc-hover: var(--yc-color-private-cool-grey-350);--yc-color-base-neutral: var(--yc-color-private-black-150);--yc-color-base-neutral-hover: var(--yc-color-private-black-300);--yc-color-base-positive-medium: var(--yc-color-private-green-350);--yc-color-base-positive-medium-hover: var(--yc-color-private-green-400);--yc-color-base-info-heavy: var(--yc-color-private-blue-450);--yc-color-base-positive-heavy: var(--yc-color-private-green-450);--yc-color-base-warning-heavy: var(--yc-color-private-yellow-450);--yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-700);--yc-color-base-danger-heavy: var(--yc-color-private-red-450);--yc-color-base-danger-heavy-hover: var(--yc-color-private-red-450);--yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450);--yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);--yc-color-base-light: var(--yc-color-private-white-1000);--yc-color-base-light-hover: var(--yc-color-private-white-850);--yc-color-base-light-simple-hover: var(--yc-color-private-white-300);--yc-color-base-light-disabled: var(--yc-color-private-white-150);--yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);--yc-color-base-float: var(--yc-color-private-white-1000);--yc-color-base-float-hover: var(--yc-color-private-black-150-solid);--yc-color-base-float-heavy: var(--yc-color-private-black-700-solid);--yc-color-base-float-accent: var(--yc-color-private-white-1000);--yc-color-base-float-accent-hover: var(--yc-color-private-white-850);--yc-color-base-float-announcement: var(--yc-color-private-cool-grey-150-solid);--yc-color-base-modal: var(--yc-color-private-white-1000);--yc-color-line-generic: var(--yc-color-private-black-200);--yc-color-line-generic-hover: var(--yc-color-private-black-400);--yc-color-line-generic-active: var(--yc-color-private-black-700);--yc-color-line-generic-accent: var(--yc-color-private-black-300);--yc-color-line-generic-accent-hover: var(--yc-color-private-black-700);--yc-color-line-solid: var(--yc-color-private-black-200-solid);--yc-color-line-selection-hover: var(--yc-my-color-brand-light);--yc-color-line-selection-active: var(--yc-my-color-brand-normal);--yc-color-line-link: var(--yc-my-color-brand-normal);--yc-color-line-info: var(--yc-color-private-blue-450);--yc-color-line-positive: var(--yc-color-private-green-450);--yc-color-line-warning: var(--yc-color-private-yellow-600-solid);--yc-color-line-danger: var(--yc-color-private-red-450);--yc-color-line-misc: var(--yc-color-private-cool-grey-450);--yc-color-line-hint: var(--yc-color-private-blue-550);--yc-color-line-light: var(--yc-color-private-white-500);--yc-color-infographics-info-light: var(--yc-color-private-blue-50);--yc-color-infographics-positive-light: var(--yc-color-private-green-50);--yc-color-infographics-warning-light: var(--yc-color-private-orange-50);--yc-color-infographics-danger-light: var(--yc-color-private-red-50);--yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-50);--yc-color-infographics-neutral-light: var(--yc-color-private-black-50);--yc-color-infographics-info-medium: var(--yc-color-private-blue-300);--yc-color-infographics-positive-medium: var(--yc-color-private-green-300);--yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);--yc-color-infographics-danger-medium: var(--yc-color-private-red-300);--yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);--yc-color-infographics-neutral-medium: var(--yc-color-private-black-150);--yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);--yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);--yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);--yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);--yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);--yc-color-infographics-neutral-heavy: var(--yc-color-private-black-300);--yc-color-infographics-axis: var(--yc-color-private-black-150-solid);--yc-color-infographics-tooltip-bg: var(--yc-color-private-white-950);--yc-color-sfx-veil: var(--yc-color-private-black-450);--yc-color-sfx-shadow: var(--yc-color-private-black-300);--yc-color-sfx-shadow-heavy: var(--yc-color-private-black-600);--yc-color-sfx-shadow-light: var(--yc-color-private-black-100);--yc-color-sfx-fade: var(--yc-color-private-white-300);--yc-color-promo-base-silver: #edf2f7;--yc-color-promo-base-gold: #ffdb4d;--yc-color-promo-base-asphalt: #313538;--yc-color-promo-base-tomato: #ff5958;--yc-color-promo-base-copper: #ffab3b;--yc-color-promo-base-mint: #5ecf71;--yc-color-promo-base-sky: #49a0f6;--yc-color-promo-base-neon: #9f6fee;--yc-color-promo-highlight-silver: #edf2f7;--yc-color-promo-highlight-gold: #fff1b8;--yc-color-promo-highlight-asphalt: #eaebeb;--yc-color-promo-highlight-tomato: #ffdede;--yc-color-promo-highlight-copper: #ffe6c4;--yc-color-promo-highlight-mint: #ccf0d2;--yc-color-promo-highlight-sky: #d6e9fd;--yc-color-promo-highlight-neon: #ece2fc;--yc-color-promo-accent-silver: #969a9e;--yc-color-promo-accent-gold: #ffdb4d;--yc-color-promo-accent-asphalt: #313538;--yc-color-promo-accent-tomato: #ff5958;--yc-color-promo-accent-copper: #ffab3b;--yc-color-promo-accent-mint: #5ecf71;--yc-color-promo-accent-sky: #49a0f6;--yc-color-promo-accent-neon: #9f6fee;--yc-color-promo-accent-hover-silver: #727578;--yc-color-promo-accent-hover-gold: #edbe28;--yc-color-promo-accent-hover-asphalt: #000;--yc-color-promo-accent-hover-tomato: #ee4f4e;--yc-color-promo-accent-hover-copper: #f28d04;--yc-color-promo-accent-hover-mint: #3bbc51;--yc-color-promo-accent-hover-sky: #2180de;--yc-color-promo-accent-hover-neon: #7b47cf;--yc-color-promo-text-silver: #969a9e;--yc-color-promo-text-gold: #ebb409;--yc-color-promo-text-asphalt: #313538;--yc-color-promo-text-tomato: #ff5958;--yc-color-promo-text-copper: #ffab3b;--yc-color-promo-text-mint: #5ecf71;--yc-color-promo-text-sky: #49a0f6;--yc-color-promo-text-neon: #9f6fee;--yc-color-scroll-track: var(--yc-color-base-background);--yc-color-scroll-handle: var(--yc-color-private-black-100);--yc-color-scroll-handle-hover: var(--yc-color-private-black-150);--yc-color-scroll-corner: var(--yc-color-private-black-100);background:var(--yc-color-base-background);color:var(--yc-color-text-primary)}.yc-root_theme_dark-hc{--yc-color-private-white-50: rgba(255, 255, 255, 0.05);--yc-color-private-white-70: rgba(255, 255, 255, 0.07);--yc-color-private-white-100: rgba(255, 255, 255, 0.1);--yc-color-private-white-150: rgba(255, 255, 255, 0.15);--yc-color-private-white-200: rgba(255, 255, 255, 0.2);--yc-color-private-white-250: rgba(255, 255, 255, 0.25);--yc-color-private-white-300: rgba(255, 255, 255, 0.3);--yc-color-private-white-350: rgba(255, 255, 255, 0.35);--yc-color-private-white-400: rgba(255, 255, 255, 0.4);--yc-color-private-white-450: rgba(255, 255, 255, 0.45);--yc-color-private-white-500: rgba(255, 255, 255, 0.5);--yc-color-private-white-550: rgba(255, 255, 255, 0.55);--yc-color-private-white-600: rgba(255, 255, 255, 0.6);--yc-color-private-white-650: rgba(255, 255, 255, 0.65);--yc-color-private-white-700: rgba(255, 255, 255, 0.7);--yc-color-private-white-750: rgba(255, 255, 255, 0.75);--yc-color-private-white-800: rgba(255, 255, 255, 0.8);--yc-color-private-white-850: rgba(255, 255, 255, 0.85);--yc-color-private-white-900: rgba(255, 255, 255, 0.9);--yc-color-private-white-950: rgba(255, 255, 255, 0.95);--yc-color-private-white-1000: rgba(255, 255, 255, 1);--yc-color-private-white-opaque-150: rgba(56, 57, 60, 0.97);--yc-color-private-black-20: rgba(0, 0, 0, 0.02);--yc-color-private-black-50: rgba(0, 0, 0, 0.05);--yc-color-private-black-100: rgba(0, 0, 0, 0.1);--yc-color-private-black-150: rgba(0, 0, 0, 0.15);--yc-color-private-black-200: rgba(0, 0, 0, 0.2);--yc-color-private-black-250: rgba(0, 0, 0, 0.25);--yc-color-private-black-300: rgba(0, 0, 0, 0.3);--yc-color-private-black-350: rgba(0, 0, 0, 0.35);--yc-color-private-black-400: rgba(0, 0, 0, 0.4);--yc-color-private-black-450: rgba(0, 0, 0, 0.45);--yc-color-private-black-500: rgba(0, 0, 0, 0.5);--yc-color-private-black-550: rgba(0, 0, 0, 0.55);--yc-color-private-black-600: rgba(0, 0, 0, 0.6);--yc-color-private-black-650: rgba(0, 0, 0, 0.65);--yc-color-private-black-700: rgba(0, 0, 0, 0.7);--yc-color-private-black-750: rgba(0, 0, 0, 0.75);--yc-color-private-black-800: rgba(0, 0, 0, 0.8);--yc-color-private-black-850: rgba(0, 0, 0, 0.85);--yc-color-private-black-900: rgba(0, 0, 0, 0.9);--yc-color-private-black-950: rgba(0, 0, 0, 0.95);--yc-color-private-black-1000: rgba(0, 0, 0, 1);--yc-color-private-black-rock-850: #2d2c33;--yc-color-private-black-rock-950: rgba(34, 35, 38, 1);--yc-color-private-white-20-solid: rgba(38, 39, 42, 1);--yc-color-private-white-50-solid: rgba(45, 46, 49, 1);--yc-color-private-white-100-solid: rgba(56, 57, 60, 1);--yc-color-private-white-150-solid: rgba(67, 68, 71, 1);--yc-color-private-white-200-solid: rgba(78, 79, 81, 1);--yc-color-private-white-250-solid: rgba(89, 90, 92, 1);--yc-color-private-white-300-solid: rgba(100, 101, 103, 1);--yc-color-private-white-350-solid: rgba(111, 112, 114, 1);--yc-color-private-white-400-solid: rgba(122, 123, 125, 1);--yc-color-private-white-450-solid: rgba(133, 134, 136, 1);--yc-color-private-white-500-solid: rgba(144, 145, 147, 1);--yc-color-private-white-550-solid: rgba(156, 156, 157, 1);--yc-color-private-white-600-solid: rgba(167, 167, 168, 1);--yc-color-private-white-650-solid: rgba(178, 178, 179, 1);--yc-color-private-white-700-solid: rgba(189, 189, 190, 1);--yc-color-private-white-750-solid: rgba(200, 200, 201, 1);--yc-color-private-white-800-solid: rgba(211, 211, 212, 1);--yc-color-private-white-850-solid: rgba(222, 222, 223, 1);--yc-color-private-white-900-solid: rgba(233, 233, 233, 1);--yc-color-private-white-950-solid: rgba(244, 244, 244, 1);--yc-color-private-white-1000-solid: rgba(255, 255, 255, 1);--yc-color-private-blue-50: rgba(98, 146, 255, 0.05);--yc-color-private-blue-100: rgba(98, 146, 255, 0.1);--yc-color-private-blue-150: rgba(98, 146, 255, 0.2);--yc-color-private-blue-200: rgba(98, 146, 255, 0.3);--yc-color-private-blue-250: rgba(98, 146, 255, 0.5);--yc-color-private-blue-300: rgba(98, 146, 255, 0.5);--yc-color-private-blue-350: rgba(98, 146, 255, 0.6);--yc-color-private-blue-400: rgba(98, 146, 255, 0.7);--yc-color-private-blue-450: rgba(98, 146, 255, 0.8);--yc-color-private-blue-500: rgba(98, 146, 255, 0.9);--yc-color-private-blue-550: rgba(98, 146, 255, 1);--yc-color-private-blue-700: rgba(145, 179, 255, 1);--yc-color-private-blue-850: rgba(192, 211, 255, 1);--yc-color-private-blue-50-solid: rgba(37, 41, 49, 1);--yc-color-private-blue-100-solid: rgba(40, 46, 60, 1);--yc-color-private-blue-150-solid: rgba(47, 57, 81, 1);--yc-color-private-blue-200-solid: rgba(53, 68, 103, 1);--yc-color-private-blue-250-solid: rgba(60, 79, 125, 1);--yc-color-private-blue-300-solid: rgba(66, 91, 147, 1);--yc-color-private-blue-350-solid: rgba(72, 102, 168, 1);--yc-color-private-blue-400-solid: rgba(79, 113, 190, 1);--yc-color-private-blue-450-solid: rgba(85, 124, 212, 1);--yc-color-private-blue-500-solid: rgba(92, 135, 233, 1);--yc-color-private-blue-550-solid: rgba(98, 146, 255, 1);--yc-color-private-blue-600-solid: rgba(114, 157, 255, 1);--yc-color-private-blue-650-solid: rgba(129, 168, 255, 1);--yc-color-private-blue-700-solid: rgba(145, 179, 255, 1);--yc-color-private-blue-750-solid: rgba(161, 190, 255, 1);--yc-color-private-blue-800-solid: rgba(177, 200, 255, 1);--yc-color-private-blue-850-solid: rgba(192, 211, 255, 1);--yc-color-private-blue-900-solid: rgba(208, 222, 255, 1);--yc-color-private-blue-950-solid: rgba(223, 233, 255, 1);--yc-color-private-blue-1000-solid: rgba(239, 244, 255, 1);--yc-color-private-green-50: rgba(91, 181, 87, 0.05);--yc-color-private-green-100: rgba(91, 181, 87, 0.1);--yc-color-private-green-150: rgba(91, 181, 87, 0.2);--yc-color-private-green-200: rgba(91, 181, 87, 0.3);--yc-color-private-green-250: rgba(91, 181, 87, 0.4);--yc-color-private-green-300: rgba(91, 181, 87, 0.5);--yc-color-private-green-350: rgba(91, 181, 87, 0.6);--yc-color-private-green-400: rgba(91, 181, 87, 0.7);--yc-color-private-green-450: rgba(91, 181, 87, 0.8);--yc-color-private-green-500: rgba(91, 181, 87, 0.9);--yc-color-private-green-550: rgba(91, 181, 87, 1);--yc-color-private-green-50-solid: rgba(37, 42, 40, 1);--yc-color-private-green-100-solid: rgba(40, 50, 43, 1);--yc-color-private-green-150-solid: rgba(45, 64, 48, 1);--yc-color-private-green-200-solid: rgba(51, 79, 53, 1);--yc-color-private-green-250-solid: rgba(57, 93, 58, 1);--yc-color-private-green-300-solid: rgba(63, 108, 63, 1);--yc-color-private-green-350-solid: rgba(68, 123, 67, 1);--yc-color-private-green-400-solid: rgba(74, 137, 72, 1);--yc-color-private-green-450-solid: rgba(80, 152, 77, 1);--yc-color-private-green-500-solid: rgba(85, 166, 82, 1);--yc-color-private-green-550-solid: rgba(91, 181, 87, 1);--yc-color-private-green-600-solid: rgba(107, 188, 104, 1);--yc-color-private-green-650-solid: rgba(124, 196, 121, 1);--yc-color-private-green-700-solid: rgba(140, 203, 137, 1);--yc-color-private-green-750-solid: rgba(157, 211, 154, 1);--yc-color-private-green-800-solid: rgba(173, 218, 171, 1);--yc-color-private-green-850-solid: rgba(189, 225, 188, 1);--yc-color-private-green-900-solid: rgba(206, 233, 205, 1);--yc-color-private-green-950-solid: rgba(222, 240, 221, 1);--yc-color-private-green-1000-solid: rgba(239, 248, 238, 1);--yc-color-private-yellow-700: #e0bd34;--yc-color-private-yellow-50: rgba(255, 203, 0, 0.05);--yc-color-private-yellow-100: rgba(255, 203, 0, 0.1);--yc-color-private-yellow-150: rgba(255, 203, 0, 0.2);--yc-color-private-yellow-200: rgba(255, 203, 0, 0.3);--yc-color-private-yellow-250: rgba(255, 203, 0, 0.4);--yc-color-private-yellow-300: rgba(255, 203, 0, 0.5);--yc-color-private-yellow-350: rgba(255, 203, 0, 0.6);--yc-color-private-yellow-400: rgba(255, 203, 0, 0.7);--yc-color-private-yellow-450: rgba(255, 203, 0, 0.8);--yc-color-private-yellow-500: rgba(255, 203, 0, 0.9);--yc-color-private-yellow-550: rgba(255, 203, 0, 1);--yc-color-private-yellow-50-solid: rgba(45, 43, 36, 1);--yc-color-private-yellow-100-solid: rgba(56, 52, 34, 1);--yc-color-private-yellow-150-solid: rgba(78, 69, 30, 1);--yc-color-private-yellow-200-solid: rgba(100, 85, 27, 1);--yc-color-private-yellow-250-solid: rgba(122, 102, 23, 1);--yc-color-private-yellow-300-solid: rgba(144, 119, 19, 1);--yc-color-private-yellow-350-solid: rgba(167, 136, 15, 1);--yc-color-private-yellow-400-solid: rgba(189, 153, 11, 1);--yc-color-private-yellow-450-solid: rgba(211, 169, 8, 1);--yc-color-private-yellow-500-solid: rgba(233, 186, 4, 1);--yc-color-private-yellow-550-solid: rgba(255, 203, 0, 1);--yc-color-private-yellow-600-solid: rgba(255, 208, 26, 1);--yc-color-private-yellow-650-solid: rgba(255, 213, 51, 1);--yc-color-private-yellow-700-solid: rgba(255, 219, 76, 1);--yc-color-private-yellow-750-solid: rgba(255, 224, 102, 1);--yc-color-private-yellow-800-solid: rgba(255, 229, 128, 1);--yc-color-private-yellow-850-solid: rgba(255, 234, 153, 1);--yc-color-private-yellow-900-solid: rgba(255, 239, 179, 1);--yc-color-private-yellow-950-solid: rgba(255, 245, 204, 1);--yc-color-private-yellow-1000-solid: rgba(255, 250, 229, 1);--yc-color-private-red-50: rgba(232, 73, 69, 0.05);--yc-color-private-red-100: rgba(232, 73, 69, 0.1);--yc-color-private-red-150: rgba(232, 73, 69, 0.2);--yc-color-private-red-200: rgba(232, 73, 69, 0.3);--yc-color-private-red-250: rgba(232, 73, 69, 0.4);--yc-color-private-red-300: rgba(232, 73, 69, 0.5);--yc-color-private-red-350: rgba(232, 73, 69, 0.6);--yc-color-private-red-400: rgba(232, 73, 69, 0.7);--yc-color-private-red-450: rgba(232, 73, 69, 0.8);--yc-color-private-red-500: rgba(232, 73, 69, 0.9);--yc-color-private-red-550: rgba(232, 73, 69, 1);--yc-color-private-red-50-solid: rgba(44, 37, 40, 1);--yc-color-private-red-100-solid: rgba(54, 39, 41, 1);--yc-color-private-red-150-solid: rgba(74, 43, 44, 1);--yc-color-private-red-200-solid: rgba(93, 46, 47, 1);--yc-color-private-red-250-solid: rgba(113, 50, 51, 1);--yc-color-private-red-300-solid: rgba(133, 54, 54, 1);--yc-color-private-red-350-solid: rgba(153, 58, 57, 1);--yc-color-private-red-400-solid: rgba(172, 61, 60, 1);--yc-color-private-red-450-solid: rgba(192, 65, 63, 1);--yc-color-private-red-500-solid: rgba(212, 69, 66, 1);--yc-color-private-red-550-solid: rgba(232, 73, 69, 1);--yc-color-private-red-600-solid: rgba(234, 91, 88, 1);--yc-color-private-red-650-solid: rgba(236, 109, 107, 1);--yc-color-private-red-700-solid: rgba(239, 127, 125, 1);--yc-color-private-red-750-solid: rgba(241, 146, 144, 1);--yc-color-private-red-800-solid: rgba(243, 164, 162, 1);--yc-color-private-red-850-solid: rgba(246, 182, 181, 1);--yc-color-private-red-900-solid: rgba(248, 200, 199, 1);--yc-color-private-red-950-solid: rgba(250, 219, 218, 1);--yc-color-private-red-1000-solid: rgba(253, 237, 236, 1);--yc-color-private-purple-50: rgba(223, 46, 243, 0.05);--yc-color-private-purple-100: rgba(223, 46, 243, 0.1);--yc-color-private-purple-150: rgba(223, 46, 243, 0.2);--yc-color-private-purple-200: rgba(223, 46, 243, 0.3);--yc-color-private-purple-250: rgba(223, 46, 243, 0.4);--yc-color-private-purple-300: rgba(223, 46, 243, 0.5);--yc-color-private-purple-350: rgba(223, 46, 243, 0.6);--yc-color-private-purple-400: rgba(223, 46, 243, 0.7);--yc-color-private-purple-450: rgba(223, 46, 243, 0.8);--yc-color-private-purple-500: rgba(223, 46, 243, 0.9);--yc-color-private-purple-550: rgba(223, 46, 243, 1);--yc-color-private-purple-50-solid: rgba(43, 36, 48, 1);--yc-color-private-purple-100-solid: rgba(53, 36, 59, 1);--yc-color-private-purple-150-solid: rgba(72, 37, 79, 1);--yc-color-private-purple-200-solid: rgba(91, 38, 100, 1);--yc-color-private-purple-250-solid: rgba(110, 39, 120, 1);--yc-color-private-purple-300-solid: rgba(128, 40, 141, 1);--yc-color-private-purple-350-solid: rgba(147, 41, 161, 1);--yc-color-private-purple-400-solid: rgba(166, 42, 182, 1);--yc-color-private-purple-450-solid: rgba(185, 43, 202, 1);--yc-color-private-purple-500-solid: rgba(204, 45, 223, 1);--yc-color-private-purple-550-solid: rgba(223, 46, 243, 1);--yc-color-private-purple-600-solid: rgba(226, 67, 245, 1);--yc-color-private-purple-650-solid: rgba(229, 88, 246, 1);--yc-color-private-purple-700-solid: rgba(232, 108, 247, 1);--yc-color-private-purple-750-solid: rgba(236, 129, 248, 1);--yc-color-private-purple-800-solid: rgba(239, 150, 249, 1);--yc-color-private-purple-850-solid: rgba(242, 171, 250, 1);--yc-color-private-purple-900-solid: rgba(245, 192, 252, 1);--yc-color-private-purple-950-solid: rgba(249, 213, 253, 1);--yc-color-private-purple-1000-solid: rgba(252, 234, 254, 1);--yc-color-private-cool-grey-50: rgba(96, 128, 156, 0.05);--yc-color-private-cool-grey-100: rgba(96, 128, 156, 0.1);--yc-color-private-cool-grey-150: rgba(96, 128, 156, 0.2);--yc-color-private-cool-grey-200: rgba(96, 128, 156, 0.3);--yc-color-private-cool-grey-250: rgba(96, 128, 156, 0.4);--yc-color-private-cool-grey-300: rgba(96, 128, 156, 0.5);--yc-color-private-cool-grey-350: rgba(96, 128, 156, 0.6);--yc-color-private-cool-grey-400: rgba(96, 128, 156, 0.7);--yc-color-private-cool-grey-450: rgba(96, 128, 156, 0.8);--yc-color-private-cool-grey-500: rgba(96, 128, 156, 0.9);--yc-color-private-cool-grey-550: rgba(96, 128, 156, 1);--yc-color-private-cool-grey-50-solid: rgba(37, 40, 44, 1);--yc-color-private-cool-grey-100-solid: rgba(40, 44, 50, 1);--yc-color-private-cool-grey-150-solid: rgba(46, 54, 62, 1);--yc-color-private-cool-grey-200-solid: rgba(53, 63, 73, 1);--yc-color-private-cool-grey-250-solid: rgba(59, 72, 85, 1);--yc-color-private-cool-grey-300-solid: rgba(65, 81, 97, 1);--yc-color-private-cool-grey-350-solid: rgba(71, 91, 109, 1);--yc-color-private-cool-grey-400-solid: rgba(77, 100, 121, 1);--yc-color-private-cool-grey-450-solid: rgba(84, 109, 132, 1);--yc-color-private-cool-grey-500-solid: rgba(90, 119, 144, 1);--yc-color-private-cool-grey-550-solid: rgba(96, 128, 156, 1);--yc-color-private-cool-grey-600-solid: rgba(112, 141, 166, 1);--yc-color-private-cool-grey-650-solid: rgba(128, 153, 176, 1);--yc-color-private-cool-grey-700-solid: rgba(144, 166, 186, 1);--yc-color-private-cool-grey-750-solid: rgba(160, 179, 195, 1);--yc-color-private-cool-grey-800-solid: rgba(176, 191, 205, 1);--yc-color-private-cool-grey-850-solid: rgba(191, 204, 215, 1);--yc-color-private-cool-grey-900-solid: rgba(207, 217, 225, 1);--yc-color-private-cool-grey-950-solid: rgba(223, 230, 235, 1);--yc-color-private-cool-grey-1000-solid: rgba(239, 242, 245, 1);--yc-color-private-orange-50: rgba(200, 99, 12, 0.05);--yc-color-private-orange-100: rgba(200, 99, 12, 0.1);--yc-color-private-orange-150: rgba(200, 99, 12, 0.2);--yc-color-private-orange-200: rgba(200, 99, 12, 0.3);--yc-color-private-orange-250: rgba(200, 99, 12, 0.4);--yc-color-private-orange-300: rgba(200, 99, 12, 0.5);--yc-color-private-orange-350: rgba(200, 99, 12, 0.6);--yc-color-private-orange-400: rgba(200, 99, 12, 0.7);--yc-color-private-orange-450: rgba(200, 99, 12, 0.8);--yc-color-private-orange-500: rgba(200, 99, 12, 0.9);--yc-color-private-orange-550: rgba(200, 99, 12, 1);--yc-color-private-orange-50-solid: rgba(42, 38, 37, 1);--yc-color-private-orange-100-solid: rgba(51, 41, 35, 1);--yc-color-private-orange-150-solid: rgba(67, 48, 33, 1);--yc-color-private-orange-200-solid: rgba(84, 54, 30, 1);--yc-color-private-orange-250-solid: rgba(100, 61, 28, 1);--yc-color-private-orange-300-solid: rgba(117, 67, 25, 1);--yc-color-private-orange-350-solid: rgba(134, 73, 22, 1);--yc-color-private-orange-400-solid: rgba(150, 80, 20, 1);--yc-color-private-orange-450-solid: rgba(167, 86, 17, 1);--yc-color-private-orange-500-solid: rgba(183, 93, 15, 1);--yc-color-private-orange-550-solid: rgba(200, 99, 12, 1);--yc-color-private-orange-600-solid: rgba(206, 115, 36, 1);--yc-color-private-orange-650-solid: rgba(211, 130, 61, 1);--yc-color-private-orange-700-solid: rgba(216, 146, 85, 1);--yc-color-private-orange-750-solid: rgba(222, 161, 109, 1);--yc-color-private-orange-800-solid: rgba(227, 177, 133, 1);--yc-color-private-orange-850-solid: rgba(233, 193, 158, 1);--yc-color-private-orange-900-solid: rgba(239, 208, 182, 1);--yc-color-private-orange-950-solid: rgba(244, 224, 206, 1);--yc-color-private-orange-1000-solid: rgba(250, 239, 231, 1);--yc-my-color-brand-normal: var(--yc-color-private-blue-450-solid);--yc-my-color-brand-normal-hover: var(--yc-color-private-blue-650-solid);--yc-my-color-brand-light: var(--yc-color-private-blue-300);--yc-my-color-brand-selection: var(--yc-color-private-blue-350);--yc-my-color-brand-selection-hover: var(--yc-color-private-blue-600-solid);--yc-my-color-brand-link: var(--yc-color-private-blue-550);--yc-my-color-brand-link-hover: var(--yc-color-private-blue-750-solid);--yc-my-color-brand-text: var(--yc-color-private-blue-850-solid);--yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);--yc-my-color-brand-link-visited: var(--yc-color-private-purple-650-solid);--yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-800-solid);--yc-color-text-primary: var(--yc-color-private-white-1000);--yc-color-text-complementary: var(--yc-color-private-white-800);--yc-color-text-secondary: var(--yc-color-private-white-600);--yc-color-text-hint: var(--yc-color-private-white-400);--yc-color-text-info: var(--yc-color-private-blue-600-solid);--yc-color-text-positive: var(--yc-color-private-green-600-solid);--yc-color-text-warning: var(--yc-color-private-yellow-600-solid);--yc-color-text-danger: var(--yc-color-private-red-600-solid);--yc-color-text-utility: var(--yc-color-private-purple-600-solid);--yc-color-text-misc: var(--yc-color-private-cool-grey-600-solid);--yc-color-text-info-heavy: var(--yc-color-private-blue-850-solid);--yc-color-text-positive-heavy: var(--yc-color-private-green-850-solid);--yc-color-text-warning-heavy: var(--yc-color-private-yellow-850-solid);--yc-color-text-danger-heavy: var(--yc-color-private-red-850-solid);--yc-color-text-utility-heavy: var(--yc-color-private-purple-850-solid);--yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-850-solid);--yc-color-text-special: var(--yc-my-color-brand-normal);--yc-color-text-link: var(--yc-my-color-brand-link);--yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);--yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);--yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);--yc-color-text-yandex-red: var(--yc-color-private-red-550);--yc-color-text-dark-primary: var(--yc-color-private-black-1000);--yc-color-text-dark-complementary: var(--yc-color-private-black-800);--yc-color-text-dark-secondary: var(--yc-color-private-black-600);--yc-color-text-light-primary: var(--yc-color-private-white-1000);--yc-color-text-light-complementary: var(--yc-color-private-white-800);--yc-color-text-light-secondary: var(--yc-color-private-white-600);--yc-color-text-light-hint: var(--yc-color-private-white-400);--yc-color-text-inverted-primary: var(--yc-color-private-black-1000);--yc-color-text-inverted-complementary: var(--yc-color-private-black-800);--yc-color-text-inverted-secondary: var(--yc-color-private-black-600);--yc-color-text-inverted-hint: var(--yc-color-private-black-400);--yc-color-base-background: var(--yc-color-private-black-rock-950);--yc-color-base-generic: var(--yc-color-private-white-100);--yc-color-base-generic-hover: var(--yc-color-private-white-250);--yc-color-base-generic-medium: var(--yc-color-private-white-250);--yc-color-base-generic-medium-hover: var(--yc-color-private-white-400);--yc-color-base-generic-accent: var(--yc-color-private-white-200);--yc-color-base-generic-accent-disabled: var(--yc-color-private-white-150);--yc-color-base-generic-ultralight: var(--yc-color-private-white-50);--yc-color-base-simple-hover: var(--yc-color-private-white-250);--yc-color-base-simple-hover-solid: var(--yc-color-private-white-250-solid);--yc-color-base-selection: var(--yc-my-color-brand-selection);--yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);--yc-color-base-special: var(--yc-my-color-brand-normal);--yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);--yc-color-base-action: var(--yc-color-base-special);--yc-color-base-action-hover: var(--yc-color-base-special-hover);--yc-color-base-info: var(--yc-color-private-blue-250);--yc-color-base-info-hover: var(--yc-color-private-blue-400);--yc-color-base-positive: var(--yc-color-private-green-250);--yc-color-base-positive-hover: var(--yc-color-private-green-400);--yc-color-base-warning: var(--yc-color-private-yellow-250);--yc-color-base-warning-hover: var(--yc-color-private-yellow-400);--yc-color-base-danger: var(--yc-color-private-red-250);--yc-color-base-danger-hover: var(--yc-color-private-red-400);--yc-color-base-misc: var(--yc-color-private-cool-grey-250);--yc-color-base-misc-hover: var(--yc-color-private-cool-grey-400);--yc-color-base-neutral: var(--yc-color-private-white-100);--yc-color-base-neutral-hover: var(--yc-color-private-white-250);--yc-color-base-positive-medium: var(--yc-color-private-green-350);--yc-color-base-positive-medium-hover: var(--yc-color-private-green-400);--yc-color-base-info-heavy: var(--yc-color-private-blue-450);--yc-color-base-positive-heavy: var(--yc-color-private-green-450);--yc-color-base-warning-heavy: var(--yc-color-private-yellow-450);--yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-700);--yc-color-base-danger-heavy: var(--yc-color-private-red-450);--yc-color-base-danger-heavy-hover: var(--yc-color-private-red-450);--yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450);--yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);--yc-color-base-light: var(--yc-color-private-white-850);--yc-color-base-light-hover: var(--yc-color-private-white-700);--yc-color-base-light-simple-hover: var(--yc-color-private-white-150);--yc-color-base-light-disabled: var(--yc-color-private-white-150);--yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);--yc-color-base-float: var(--yc-color-private-white-100-solid);--yc-color-base-float-hover: var(--yc-color-private-white-200-solid);--yc-color-base-float-heavy: var(--yc-color-private-white-200-solid);--yc-color-base-float-accent: var(--yc-color-private-white-300-solid);--yc-color-base-float-accent-hover: var(--yc-color-private-white-400-solid);--yc-color-base-float-announcement: var(--yc-color-private-white-200-solid);--yc-color-base-modal: var(--yc-color-private-black-rock-850);--yc-color-line-generic: var(--yc-color-private-white-150);--yc-color-line-generic-hover: var(--yc-color-private-white-250);--yc-color-line-generic-active: var(--yc-color-private-white-600);--yc-color-line-generic-accent: var(--yc-color-private-white-350);--yc-color-line-generic-accent-hover: var(--yc-color-private-white-800);--yc-color-line-solid: var(--yc-color-private-white-150-solid);--yc-color-line-selection-hover: var(--yc-my-color-brand-light);--yc-color-line-selection-active: var(--yc-my-color-brand-normal);--yc-color-line-link: var(--yc-my-color-brand-normal);--yc-color-line-info: var(--yc-color-private-blue-550);--yc-color-line-positive: var(--yc-color-private-green-550);--yc-color-line-warning: var(--yc-color-private-yellow-100);--yc-color-line-danger: var(--yc-color-private-red-550);--yc-color-line-misc: var(--yc-color-private-cool-grey-550);--yc-color-line-hint: var(--yc-color-private-blue-550);--yc-color-line-light: var(--yc-color-private-white-500);--yc-color-infographics-info-light: var(--yc-color-private-blue-150);--yc-color-infographics-positive-light: var(--yc-color-private-green-150);--yc-color-infographics-warning-light: var(--yc-color-private-orange-150);--yc-color-infographics-danger-light: var(--yc-color-private-red-150);--yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-150);--yc-color-infographics-neutral-light: var(--yc-color-private-white-150);--yc-color-infographics-info-medium: var(--yc-color-private-blue-300);--yc-color-infographics-positive-medium: var(--yc-color-private-green-300);--yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);--yc-color-infographics-danger-medium: var(--yc-color-private-red-300);--yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);--yc-color-infographics-neutral-medium: var(--yc-color-private-white-150);--yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);--yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);--yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);--yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);--yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);--yc-color-infographics-neutral-heavy: var(--yc-color-private-white-300);--yc-color-infographics-axis: var(--yc-color-private-white-150-solid);--yc-color-infographics-tooltip-bg: var(--yc-color-private-white-opaque-150);--yc-color-sfx-veil: var(--yc-color-private-black-700);--yc-color-sfx-shadow: var(--yc-color-private-black-200);--yc-color-sfx-shadow-heavy: var(--yc-color-private-black-400);--yc-color-sfx-shadow-light: var(--yc-color-private-black-100);--yc-color-sfx-fade: var(--yc-color-private-white-250);--yc-color-promo-base-silver: #bcc0c4;--yc-color-promo-base-gold: #ffde5d;--yc-color-promo-base-asphalt: #474d52;--yc-color-promo-base-tomato: #ff6b6a;--yc-color-promo-base-copper: #ffb95a;--yc-color-promo-base-mint: #7fd68e;--yc-color-promo-base-sky: #69b4ff;--yc-color-promo-base-neon: #b384ff;--yc-color-promo-highlight-silver: #616366;--yc-color-promo-highlight-gold: #99832e;--yc-color-promo-highlight-asphalt: #5d656b;--yc-color-promo-highlight-tomato: #998585;--yc-color-promo-highlight-copper: #7f7262;--yc-color-promo-highlight-mint: #758978;--yc-color-promo-highlight-sky: #94a2af;--yc-color-promo-highlight-neon: #aea6ba;--yc-color-scroll-track: var(--yc-color-base-background);--yc-color-scroll-handle: var(--yc-color-private-white-150);--yc-color-scroll-handle-hover: var(--yc-color-private-white-250);--yc-color-scroll-corner: var(--yc-color-private-white-150);background:var(--yc-color-base-background);color:var(--yc-color-text-primary)}body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar){scrollbar-width:var(--yc-scrollbar-width);scrollbar-color:var(--yc-color-scroll-handle) var(--yc-color-scroll-track)}body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar)::-webkit-scrollbar,body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar) *::-webkit-scrollbar{width:var(--yc-scrollbar-width);height:var(--yc-scrollbar-width);background:var(--yc-color-scroll-track)}body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar)::-webkit-scrollbar-track,body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar) *::-webkit-scrollbar-track{background:var(--yc-color-scroll-track)}body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar)::-webkit-scrollbar-corner,body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar) *::-webkit-scrollbar-corner{background:var(--yc-color-scroll-corner)}body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar)::-webkit-scrollbar-thumb,body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar) *::-webkit-scrollbar-thumb{background:var(--yc-color-scroll-handle)}body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar)::-webkit-scrollbar-thumb:hover,body.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar) *::-webkit-scrollbar-thumb:hover{background:var(--yc-color-scroll-handle-hover)}@keyframes yc-loading-animation{from{background-position:-12px 0}to{background-position:0 0}}.dc-doc-page .yfm{color:var(--yc-color-text-primary);--yfm-color-hljs-background: var(--yc-color-base-background);--yfm-color-hljs-subst: var(--yc-color-text-complementary);--yfm-color-hljs-comment: var(--yc-color-text-secondary);--yfm-color-hljs-deletion: var(--yc-color-line-danger);--yfm-color-hljs-section: var(--yc-color-line-danger)}.dc-doc-page .yfm a{color:var(--yc-color-text-link)}.dc-doc-page .yfm a:hover,.dc-doc-page .yfm a:active{color:var(--yc-color-text-link-hover)}.dc-doc-page .yfm img{background-color:var(--yc-color-base-background)}.dc-doc-page .yfm.yfm-accent-info{background:var(--yc-color-base-info)}.dc-doc-page .yfm.yfm-accent-tip{background:var(--yc-color-base-positive)}.dc-doc-page .yfm.yfm-accent-alert{background:var(--yc-color-base-danger)}.dc-doc-page .yfm.yfm-accent-warning{background:var(--yc-color-base-warning)}.dc-doc-page .yfm code{font-size:var(--dc-code-short-font-size);line-height:var(--dc-code-short-line-height);padding:var(--dc-code-short-padding);background:var(--yc-color-base-misc);color:var(--yc-color-text-misc)}.dc-doc-page .yfm pre>code{font-size:var(--dc-code-font-size);line-height:var(--dc-code-line-height);padding:16px;background:var(--yc-color-base-misc);color:var(--yc-color-text-complementary)}.dc-doc-page .yfm dfn{background:var(--yc-color-base-float);box-shadow:0 8px 20px var(--yc-color-sfx-shadow)}.dc-doc-page .yfm dfn:before{box-shadow:0 0 0 1px var(--yc-popup-border-color)}.dc-doc-page .yfm table{color:var(--yc-color-text-primary);border-color:var(--yc-color-line-generic);background:var(--yc-color-base-background)}.dc-doc-page .yfm table thead,.dc-doc-page .yfm table tr:nth-child(2n){background:var(--yc-color-base-generic)}.dc-doc-page .yfm hr{background-color:var(--yc-color-base-background)}.dc-doc-page .yfm blockquote{border-left-color:var(--yc-color-base-special)}.dc-doc-page .yfm .yfm-tab-list{border-bottom-color:var(--yc-color-line-generic)}.dc-doc-page .yfm .yfm-tab:hover,.dc-doc-page .yfm .yfm-tab:active{color:var(--yc-color-text-link-hover)}.dc-doc-page .yfm .yfm-tab.active{border-bottom-color:var(--yc-color-base-special)}.dc-doc-page .yfm .yfm-cut{margin-bottom:15px}.dc-doc-page .yfm .yfm-cut.open .yfm-cut-content{padding:5px 0 0 30px}.dc-doc-page .yfm .yfm-term_title:hover{color:var(--yc-color-text-link-hover)}.dc-doc-page .yfm h1,.dc-doc-page .yfm h2{padding-top:calc(var(--dc-header-height, 0px));margin-top:calc(calc(40px - 15px) - var(--dc-header-height, 0px));margin-bottom:20px}.dc-doc-page .yfm h3,.dc-doc-page .yfm h4,.dc-doc-page .yfm h5,.dc-doc-page .yfm h6{padding-top:calc(var(--dc-header-height, 0px));margin-top:calc(calc(32px - 15px) - var(--dc-header-height, 0px))}.dc-doc-page .yfm h1+h2,.dc-doc-page .yfm h2+h3,.dc-doc-page .yfm h3+h4,.dc-doc-page .yfm h4+h5,.dc-doc-page .yfm h5+h6{padding-top:calc(var(--dc-header-height, 0px));margin-top:calc(0px - var(--dc-header-height, 0px))}.dc-doc-page .yfm h1:first-child,.dc-doc-page .yfm h2:first-child,.dc-doc-page .yfm h3:first-child,.dc-doc-page .yfm h4:first-child,.dc-doc-page .yfm h5:first-child,.dc-doc-page .yfm h6:first-child{padding-top:calc(var(--dc-header-height, 0px));margin-top:calc(0px - var(--dc-header-height, 0px))}.dc-doc-page .yfm .yfm-page__delimeter{height:4px;border-radius:2px;background:var(--yc-color-line-generic);margin-top:20px;margin-bottom:0}.dc-doc-page .yfm .yfm-page__delimeter+h1,.dc-doc-page .yfm .yfm-page__delimeter+h2,.dc-doc-page .yfm .yfm-page__delimeter+h3,.dc-doc-page .yfm .yfm-page__delimeter+h4,.dc-doc-page .yfm .yfm-page__delimeter+h5,.dc-doc-page .yfm .yfm-page__delimeter+h6{padding-top:calc(var(--dc-header-height, 0px));margin-top:calc(40px - var(--dc-header-height, 0px))}.dc-doc-page .yfm .yfm-original-link:before{content:none}.dc-doc-page .yfm .yfm-original-link svg{visibility:hidden}.dc-doc-page .yfm h1 .yfm-original-link::before,.dc-doc-page .yfm h2 .yfm-original-link::before,.dc-doc-page .yfm h3 .yfm-original-link::before,.dc-doc-page .yfm h4 .yfm-original-link::before,.dc-doc-page .yfm h5 .yfm-original-link::before,.dc-doc-page .yfm h6 .yfm-original-link::before{content:none}.dc-doc-page .yfm h1 .yfm-original-link svg,.dc-doc-page .yfm h2 .yfm-original-link svg,.dc-doc-page .yfm h3 .yfm-original-link svg,.dc-doc-page .yfm h4 .yfm-original-link svg,.dc-doc-page .yfm h5 .yfm-original-link svg,.dc-doc-page .yfm h6 .yfm-original-link svg{visibility:hidden}.dc-doc-page .yfm h1:hover .yfm-original-link svg,.dc-doc-page .yfm h2:hover .yfm-original-link svg,.dc-doc-page .yfm h3:hover .yfm-original-link svg,.dc-doc-page .yfm h4:hover .yfm-original-link svg,.dc-doc-page .yfm h5:hover .yfm-original-link svg,.dc-doc-page .yfm h6:hover .yfm-original-link svg{visibility:visible}.dc-doc-page .yfm .yfm-anchor_hidden{visibility:hidden}.dc-doc-page .yfm .yfm-anchor_hidden:before{visibility:hidden !important}.yc-root_theme_dark .dc-doc-page .yfm .yfm-cut-title:before{background-image:url('+u+")}.yc-root{--dc-text-highlight: var(--yc-color-base-warning-heavy);--dc-text-highlight-selected: #ffab3b}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/styles/styles.scss","webpack://./node_modules/@gravity-ui/uikit/styles/typography.scss","webpack://./node_modules/@gravity-ui/uikit/styles/brand.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/social.scss","webpack://./node_modules/@gravity-ui/uikit/styles/spacing.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/private/light.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/text/light.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/base/light.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/line/light.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/infographics/light.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/sfx/light.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/promo/light.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/system.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/private/dark.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/text/dark.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/base/dark.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/line/dark.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/infographics/dark.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/sfx/dark.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/promo/dark.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/private/light-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/text/light-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/base/light-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/line/light-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/infographics/light-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/sfx/light-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/promo/light-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/private/dark-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/text/dark-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/base/dark-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/line/dark-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/infographics/dark-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/sfx/dark-hc.scss","webpack://./node_modules/@gravity-ui/uikit/styles/colors/promo/dark-hc.scss","webpack://./node_modules/@doc-tools/components/styles/yfm.scss","webpack://./node_modules/@doc-tools/components/styles/variables.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss","webpack://./node_modules/@doc-tools/components/styles/themes.scss"],names:[],mappings:"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",sourcesContent:["@import './colors/private/light';\n@import './colors/private/dark';\n@import './colors/private/light-hc';\n@import './colors/private/dark-hc';\n@import './colors/text/light';\n@import './colors/text/dark';\n@import './colors/text/light-hc';\n@import './colors/text/dark-hc';\n@import './colors/base/light';\n@import './colors/base/dark';\n@import './colors/base/light-hc';\n@import './colors/base/dark-hc';\n@import './colors/line/light';\n@import './colors/line/dark';\n@import './colors/line/light-hc';\n@import './colors/line/dark-hc';\n@import './colors/infographics/light';\n@import './colors/infographics/dark';\n@import './colors/infographics/light-hc';\n@import './colors/infographics/dark-hc';\n@import './colors/sfx/light';\n@import './colors/sfx/dark';\n@import './colors/sfx/light-hc';\n@import './colors/sfx/dark-hc';\n@import './colors/promo/light';\n@import './colors/promo/dark';\n@import './colors/promo/light-hc';\n@import './colors/promo/dark-hc';\n@import './colors/social';\n@import './colors/system';\n@import './typography';\n@import './brand';\n@import './spacing';\n\n.yc-root {\n    @include yc-typography;\n    @include yc-brand;\n    @include yc-colors-social;\n    @include yc-spacing;\n\n    --yc-scrollbar-width: var(--yc-my-scrollbar-width);\n\n    --yc-border-radius-xs: var(--yc-my-border-radius-xs);\n    --yc-border-radius-s: var(--yc-my-border-radius-s);\n    --yc-border-radius-m: var(--yc-my-border-radius-m);\n    --yc-border-radius-l: var(--yc-my-border-radius-l);\n    --yc-border-radius-xl: var(--yc-my-border-radius-xl);\n\n    &_theme_light {\n        @include yc-colors-private-light;\n        @include yc-colors-brand-light;\n        @include yc-colors-text-light;\n        @include yc-colors-base-light;\n        @include yc-colors-line-light;\n        @include yc-colors-infographics-light;\n        @include yc-colors-sfx-light;\n        @include yc-colors-promo-light;\n        @include yc-colors-system-light;\n\n        background: var(--yc-color-base-background);\n        color: var(--yc-color-text-primary);\n    }\n\n    &_theme_dark {\n        @include yc-colors-private-dark;\n        @include yc-colors-brand-dark;\n        @include yc-colors-text-dark;\n        @include yc-colors-base-dark;\n        @include yc-colors-line-dark;\n        @include yc-colors-infographics-dark;\n        @include yc-colors-sfx-dark;\n        @include yc-colors-promo-dark;\n        @include yc-colors-system-dark;\n\n        background: var(--yc-color-base-background);\n        color: var(--yc-color-text-primary);\n    }\n\n    &_theme_light-hc {\n        @include yc-colors-private-light-hc;\n        @include yc-colors-brand-light-hc;\n        @include yc-colors-text-light-hc;\n        @include yc-colors-base-light-hc;\n        @include yc-colors-line-light-hc;\n        @include yc-colors-infographics-light-hc;\n        @include yc-colors-sfx-light-hc;\n        @include yc-colors-promo-light-hc;\n        @include yc-colors-system-light-hc;\n\n        background: var(--yc-color-base-background);\n        color: var(--yc-color-text-primary);\n    }\n\n    &_theme_dark-hc {\n        @include yc-colors-private-dark-hc;\n        @include yc-colors-brand-dark-hc;\n        @include yc-colors-text-dark-hc;\n        @include yc-colors-base-dark-hc;\n        @include yc-colors-line-dark-hc;\n        @include yc-colors-infographics-dark-hc;\n        @include yc-colors-sfx-dark-hc;\n        @include yc-colors-promo-dark-hc;\n        @include yc-colors-system-dark-hc;\n\n        background: var(--yc-color-base-background);\n        color: var(--yc-color-text-primary);\n    }\n}\n\nbody.yc-root:not(.yc-root_mobile):not(.yc-root_native-scrollbar) {\n    &::-webkit-scrollbar,\n    *::-webkit-scrollbar {\n        width: var(--yc-scrollbar-width);\n        height: var(--yc-scrollbar-width);\n        background: var(--yc-color-scroll-track);\n    }\n\n    &::-webkit-scrollbar-track,\n    *::-webkit-scrollbar-track {\n        background: var(--yc-color-scroll-track);\n    }\n\n    &::-webkit-scrollbar-corner,\n    *::-webkit-scrollbar-corner {\n        background: var(--yc-color-scroll-corner);\n    }\n\n    &::-webkit-scrollbar-thumb,\n    *::-webkit-scrollbar-thumb {\n        background: var(--yc-color-scroll-handle);\n    }\n\n    &::-webkit-scrollbar-thumb:hover,\n    *::-webkit-scrollbar-thumb:hover {\n        background: var(--yc-color-scroll-handle-hover);\n    }\n\n    // stylelint-disable-next-line property-no-unknown\n    scrollbar-width: var(--yc-scrollbar-width);\n    // stylelint-disable-next-line property-no-unknown\n    scrollbar-color: var(--yc-color-scroll-handle) var(--yc-color-scroll-track);\n}\n\n@keyframes yc-loading-animation {\n    from {\n        background-position: -12px 0;\n    }\n    to {\n        background-position: 0 0;\n    }\n}\n","@mixin yc-typography {\n    --yc-font-family-sans: 'Helvetica Neue', 'Arial', 'Helvetica', sans-serif;\n    --yc-font-family-monospace: 'Menlo', 'Monaco', 'Consolas', 'Ubuntu Mono', 'Liberation Mono',\n        'DejaVu Sans Mono', 'Courier New', 'Courier', monospace;\n\n    --yc-text-body-font-family: var(--yc-font-family-sans);\n    --yc-text-code-font-family: var(--yc-font-family-monospace);\n\n    --yc-text-header-font-weight: 900;\n    --yc-text-subheader-font-weight: 900;\n    --yc-text-display-font-weight: 900;\n    --yc-text-code-font-weight: 400;\n    --yc-text-body-font-weight: 400;\n    --yc-text-caption-font-weight: 400;\n    --yc-text-accent-font-weight: 900;\n\n    --yc-text-body-1-font-size: 13px;\n    --yc-text-body-1-line-height: 18px;\n\n    --yc-text-body-2-font-size: 15px;\n    --yc-text-body-2-line-height: 20px;\n\n    --yc-text-body-3-font-size: 17px;\n    --yc-text-body-3-line-height: 24px;\n\n    --yc-text-body-short-font-size: 13px;\n    --yc-text-body-short-line-height: 16px;\n\n    --yc-text-caption-1-font-size: 9px;\n    --yc-text-caption-1-line-height: 12px;\n\n    --yc-text-caption-2-font-size: 11px;\n    --yc-text-caption-2-line-height: 16px;\n\n    --yc-text-header-1-font-size: 20px;\n    --yc-text-header-1-line-height: 24px;\n\n    --yc-text-header-2-font-size: 24px;\n    --yc-text-header-2-line-height: 28px;\n\n    --yc-text-subheader-1-font-size: 13px;\n    --yc-text-subheader-1-line-height: 18px;\n\n    --yc-text-subheader-2-font-size: 15px;\n    --yc-text-subheader-2-line-height: 20px;\n\n    --yc-text-subheader-3-font-size: 17px;\n    --yc-text-subheader-3-line-height: 24px;\n\n    --yc-text-display-1-font-size: 28px;\n    --yc-text-display-1-line-height: 36px;\n\n    --yc-text-display-2-font-size: 32px;\n    --yc-text-display-2-line-height: 40px;\n\n    --yc-text-display-3-font-size: 40px;\n    --yc-text-display-3-line-height: 48px;\n\n    --yc-text-display-4-font-size: 48px;\n    --yc-text-display-4-line-height: 52px;\n\n    --yc-text-code-1-font-size: 12px;\n    --yc-text-code-1-line-height: 18px;\n\n    --yc-text-code-2-font-size: 14px;\n    --yc-text-code-2-line-height: 20px;\n\n    --yc-text-code-3-font-size: 16px;\n    --yc-text-code-3-line-height: 24px;\n\n    --yc-text-code-inline-1-font-size: 12px;\n    --yc-text-code-inline-1-line-height: 14px;\n\n    --yc-text-code-inline-2-font-size: 14px;\n    --yc-text-code-inline-2-line-height: 16px;\n\n    --yc-text-code-inline-3-font-size: 16px;\n    --yc-text-code-inline-3-line-height: 20px;\n\n    font-family: var(--yc-text-body-font-family);\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n","@mixin yc-brand {\n    --yc-my-scrollbar-width: 12px;\n\n    --yc-my-border-radius-xs: 5px;\n    --yc-my-border-radius-s: 5px;\n    --yc-my-border-radius-m: 6px;\n    --yc-my-border-radius-l: 8px;\n    --yc-my-border-radius-xl: 10px;\n}\n\n@mixin yc-colors-brand-light {\n    --yc-my-color-brand-normal: var(--yc-color-private-blue-550);\n    --yc-my-color-brand-normal-hover: var(--yc-color-private-blue-600);\n    --yc-my-color-brand-light: var(--yc-color-private-blue-300);\n    --yc-my-color-brand-selection: var(--yc-color-private-blue-50);\n    --yc-my-color-brand-selection-hover: var(--yc-color-private-blue-100);\n    --yc-my-color-brand-link: var(--yc-my-color-brand-normal);\n    --yc-my-color-brand-link-hover: var(--yc-color-private-blue-800);\n    --yc-my-color-brand-text: var(--yc-my-color-brand-normal);\n    --yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);\n    --yc-my-color-brand-link-visited: var(--yc-color-private-purple-550);\n    --yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-800);\n}\n\n@mixin yc-colors-brand-dark {\n    --yc-my-color-brand-normal: var(--yc-color-private-blue-550);\n    --yc-my-color-brand-normal-hover: var(--yc-color-private-blue-700);\n    --yc-my-color-brand-light: var(--yc-color-private-blue-300);\n    --yc-my-color-brand-selection: var(--yc-color-private-blue-150);\n    --yc-my-color-brand-selection-hover: var(--yc-color-private-blue-300);\n    --yc-my-color-brand-link: var(--yc-color-private-blue-700);\n    --yc-my-color-brand-link-hover: var(--yc-color-private-blue-850);\n    --yc-my-color-brand-text: var(--yc-color-private-blue-700);\n    --yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);\n    --yc-my-color-brand-link-visited: var(--yc-color-private-purple-700);\n    --yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-850);\n}\n\n@mixin yc-colors-brand-light-hc {\n    --yc-my-color-brand-normal: var(--yc-color-private-blue-550);\n    --yc-my-color-brand-normal-hover: var(--yc-color-private-blue-800);\n    --yc-my-color-brand-light: var(--yc-color-private-blue-300);\n    --yc-my-color-brand-selection: var(--yc-color-private-blue-250);\n    --yc-my-color-brand-selection-hover: var(--yc-color-private-blue-450);\n    --yc-my-color-brand-link: var(--yc-color-private-blue-650-solid);\n    --yc-my-color-brand-link-hover: var(--yc-color-private-blue-850-solid);\n    --yc-my-color-brand-text: var(--yc-color-private-blue-900-solid);\n    --yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);\n    --yc-my-color-brand-link-visited: var(--yc-color-private-purple-600-solid);\n    --yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-850-solid);\n}\n\n@mixin yc-colors-brand-dark-hc {\n    --yc-my-color-brand-normal: var(--yc-color-private-blue-450-solid);\n    --yc-my-color-brand-normal-hover: var(--yc-color-private-blue-650-solid);\n    --yc-my-color-brand-light: var(--yc-color-private-blue-300);\n    --yc-my-color-brand-selection: var(--yc-color-private-blue-350);\n    --yc-my-color-brand-selection-hover: var(--yc-color-private-blue-600-solid);\n    --yc-my-color-brand-link: var(--yc-color-private-blue-550);\n    --yc-my-color-brand-link-hover: var(--yc-color-private-blue-750-solid);\n    --yc-my-color-brand-text: var(--yc-color-private-blue-850-solid);\n    --yc-my-color-brand-text-contrast: var(--yc-color-text-light-primary);\n    --yc-my-color-brand-link-visited: var(--yc-color-private-purple-650-solid);\n    --yc-my-color-brand-link-visited-hover: var(--yc-color-private-purple-800-solid);\n}\n","@mixin yc-colors-social {\n    // Social palette\n\n    --yc-color-telegram: #51a4db;\n    --yc-color-facebook: #4968ad;\n    --yc-color-twitter: #4aa0eb;\n    --yc-color-vk: #436eab;\n    --yc-color-youtube: #eb3323;\n    --yc-color-github: #25292e;\n    --yc-color-rss: #f29c39;\n    --yc-color-linkedin: #0a66c2;\n}\n","@mixin yc-spacing {\n    --yc-space-base: 4px;\n\n    --yc-spacing-0: calc(var(--yc-space-base) * 0);\n    --yc-spacing-half: calc(var(--yc-space-base) * 0.5);\n    --yc-spacing-1: var(--yc-space-base);\n    --yc-spacing-2: calc(var(--yc-space-base) * 2);\n    --yc-spacing-3: calc(var(--yc-space-base) * 3);\n    --yc-spacing-4: calc(var(--yc-space-base) * 4);\n    --yc-spacing-5: calc(var(--yc-space-base) * 5);\n    --yc-spacing-6: calc(var(--yc-space-base) * 6);\n    --yc-spacing-7: calc(var(--yc-space-base) * 7);\n    --yc-spacing-8: calc(var(--yc-space-base) * 8);\n    --yc-spacing-9: calc(var(--yc-space-base) * 9);\n    --yc-spacing-10: calc(var(--yc-space-base) * 10);\n}\n","@mixin yc-colors-private-light {\n    // Low level - https://figma.com/file/albZah2AMImAQDBhFMohdz\n\n    --yc-color-private-white-150: rgba(255, 255, 255, 0.15);\n    --yc-color-private-white-300: rgba(255, 255, 255, 0.3);\n    --yc-color-private-white-500: rgba(255, 255, 255, 0.5);\n    --yc-color-private-white-700: rgba(255, 255, 255, 0.7);\n    --yc-color-private-white-850: rgba(255, 255, 255, 0.85);\n    --yc-color-private-white-950: rgba(255, 255, 255, 0.95);\n    --yc-color-private-white-1000: rgba(255, 255, 255, 1);\n\n    --yc-color-private-black-50: rgba(0, 0, 0, 0.05);\n    --yc-color-private-black-70: rgba(0, 0, 0, 0.07);\n    --yc-color-private-black-100: rgba(0, 0, 0, 0.1);\n    --yc-color-private-black-150: rgba(0, 0, 0, 0.15);\n    --yc-color-private-black-250: rgba(0, 0, 0, 0.25);\n    --yc-color-private-black-300: rgba(0, 0, 0, 0.3);\n    --yc-color-private-black-500: rgba(0, 0, 0, 0.5);\n    --yc-color-private-black-550: rgba(0, 0, 0, 0.55);\n    --yc-color-private-black-700: rgba(0, 0, 0, 0.7);\n    --yc-color-private-black-850: rgba(0, 0, 0, 0.85);\n\n    --yc-color-private-black-20-solid: rgba(250, 250, 250, 1);\n    --yc-color-private-black-50-solid: rgba(243, 243, 243, 1);\n    --yc-color-private-black-100-solid: rgba(229, 229, 229, 1);\n    --yc-color-private-black-150-solid: rgba(218, 218, 218, 1);\n    --yc-color-private-black-700-solid: rgb(76, 76, 76, 1);\n\n    --yc-color-private-blue-50: rgba(82, 130, 255, 0.1);\n    --yc-color-private-blue-100: rgba(82, 130, 255, 0.16);\n    --yc-color-private-blue-300: rgba(82, 130, 255, 0.5);\n    --yc-color-private-blue-450: rgba(82, 130, 255, 0.75);\n    --yc-color-private-blue-500: rgba(82, 130, 255, 0.9);\n    --yc-color-private-blue-550: rgba(82, 130, 255, 1);\n    --yc-color-private-blue-600: rgba(74, 113, 214, 1);\n    --yc-color-private-blue-800: rgba(63, 87, 153, 1);\n\n    --yc-color-private-blue-50-solid: rgba(238, 243, 255, 1);\n    --yc-color-private-blue-100-solid: rgba(227, 235, 255, 1);\n    --yc-color-private-blue-450-solid: rgba(125, 161, 255, 1);\n\n    --yc-color-private-green-50: rgba(59, 201, 53, 0.1);\n    --yc-color-private-green-100: rgba(59, 201, 53, 0.14);\n    --yc-color-private-green-150: rgba(59, 201, 53, 0.25);\n    --yc-color-private-green-200: rgba(59, 201, 53, 0.35);\n    --yc-color-private-green-300: rgba(59, 201, 53, 0.5);\n    --yc-color-private-green-450: rgba(63, 201, 46, 0.75);\n    --yc-color-private-green-550: rgba(59, 201, 53, 1);\n    --yc-color-private-green-600: rgba(7, 163, 0, 1);\n\n    --yc-color-private-green-450-solid: rgba(111, 214, 98, 1);\n\n    --yc-color-private-yellow-100: rgba(255, 219, 77, 0.3);\n    --yc-color-private-yellow-200: rgba(255, 219, 77, 0.4);\n    --yc-color-private-yellow-550: rgba(255, 219, 77, 1);\n    --yc-color-private-yellow-600: rgba(245, 202, 69, 1);\n    --yc-color-private-yellow-650: rgba(245, 171, 25, 1);\n    --yc-color-private-yellow-700: rgba(224, 181, 9, 1);\n    --yc-color-private-yellow-800: rgba(209, 119, 0, 1);\n\n    --yc-color-private-red-50: rgba(235, 50, 38, 0.08);\n    --yc-color-private-red-100: rgba(235, 50, 38, 0.17);\n    --yc-color-private-red-300: rgba(255, 4, 0, 0.5);\n    --yc-color-private-red-450: rgba(255, 4, 0, 0.7);\n    --yc-color-private-red-500: rgba(255, 4, 0, 0.8);\n    --yc-color-private-red-550: rgba(255, 4, 0, 1);\n\n    --yc-color-private-red-450-solid: rgba(255, 80, 77, 1);\n\n    --yc-color-private-purple-550: rgba(154, 50, 166, 1);\n    --yc-color-private-purple-800: rgba(94, 62, 101, 1);\n\n    --yc-color-private-cool-grey-50: rgba(107, 132, 153, 0.12);\n    --yc-color-private-cool-grey-100: rgba(107, 132, 153, 0.2);\n    --yc-color-private-cool-grey-300: rgba(107, 132, 153, 0.55);\n    --yc-color-private-cool-grey-450: rgba(107, 132, 153, 0.75);\n    --yc-color-private-cool-grey-550: rgba(107, 132, 153, 1);\n    --yc-color-private-cool-grey-800: rgba(59, 96, 128, 1);\n\n    --yc-color-private-cool-grey-50-solid: rgba(237, 240, 243, 1);\n    --yc-color-private-cool-grey-450-solid: rgba(144, 163, 178, 1);\n\n    --yc-color-private-orange-50: rgba(255, 119, 0, 0.15);\n    --yc-color-private-orange-100: rgba(255, 119, 0, 0.2);\n    --yc-color-private-orange-300: rgba(255, 119, 0, 0.5);\n    --yc-color-private-orange-450: rgba(255, 180, 34, 1);\n    --yc-color-private-orange-550: rgba(255, 119, 0, 1);\n}\n","@mixin yc-colors-text-light {\n    --yc-color-text-primary: var(--yc-color-private-black-850);\n    --yc-color-text-complementary: var(--yc-color-private-black-700);\n    --yc-color-text-secondary: var(--yc-color-private-black-500);\n    --yc-color-text-hint: var(--yc-color-private-black-300);\n\n    --yc-color-text-info: var(--yc-color-private-blue-550);\n    --yc-color-text-positive: var(--yc-color-private-green-600);\n    --yc-color-text-warning: var(--yc-color-private-yellow-700);\n    --yc-color-text-danger: var(--yc-color-private-red-500);\n    --yc-color-text-utility: var(--yc-color-private-purple-550);\n    --yc-color-text-misc: var(--yc-color-private-cool-grey-800);\n\n    --yc-color-text-info-heavy: var(--yc-color-private-blue-550);\n    --yc-color-text-positive-heavy: var(--yc-color-private-green-600);\n    --yc-color-text-warning-heavy: var(--yc-color-private-yellow-800);\n    --yc-color-text-danger-heavy: var(--yc-color-private-red-500);\n    --yc-color-text-utility-heavy: var(--yc-color-private-purple-550);\n    --yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-800);\n\n    --yc-color-text-special: var(--yc-my-color-brand-normal);\n    --yc-color-text-link: var(--yc-my-color-brand-link);\n    --yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);\n    --yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);\n    --yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);\n    --yc-color-text-yandex-red: var(--yc-color-private-red-550);\n\n    --yc-color-text-dark-primary: var(--yc-color-private-black-850);\n    --yc-color-text-dark-complementary: var(--yc-color-private-black-700);\n    --yc-color-text-dark-secondary: var(--yc-color-private-black-500);\n\n    --yc-color-text-light-primary: var(--yc-color-private-white-1000);\n    --yc-color-text-light-complementary: var(--yc-color-private-white-850);\n    --yc-color-text-light-secondary: var(--yc-color-private-white-700);\n    --yc-color-text-light-hint: var(--yc-color-private-white-500);\n\n    --yc-color-text-inverted-primary: var(--yc-color-private-white-1000);\n    --yc-color-text-inverted-complementary: var(--yc-color-private-white-850);\n    --yc-color-text-inverted-secondary: var(--yc-color-private-white-700);\n    --yc-color-text-inverted-hint: var(--yc-color-private-white-500);\n}\n","@mixin yc-colors-base-light {\n    --yc-color-base-background: var(--yc-color-private-white-1000);\n    --yc-color-base-generic: var(--yc-color-private-black-50);\n    --yc-color-base-generic-hover: var(--yc-color-private-black-150);\n    --yc-color-base-generic-medium: var(--yc-color-private-black-150);\n    --yc-color-base-generic-medium-hover: var(--yc-color-private-black-250);\n    --yc-color-base-generic-accent: var(--yc-color-private-black-150);\n    --yc-color-base-generic-accent-disabled: var(--yc-color-private-black-70);\n    --yc-color-base-generic-ultralight: var(--yc-color-private-black-20-solid);\n    --yc-color-base-simple-hover: var(--yc-color-private-black-50);\n    --yc-color-base-simple-hover-solid: var(--yc-color-private-black-50-solid);\n    --yc-color-base-selection: var(--yc-my-color-brand-selection);\n    --yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);\n\n    --yc-color-base-special: var(--yc-my-color-brand-normal);\n    --yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);\n    --yc-color-base-action: var(--yc-color-base-special);\n    --yc-color-base-action-hover: var(--yc-color-base-special-hover);\n\n    --yc-color-base-info: var(--yc-color-private-blue-50);\n    --yc-color-base-info-hover: var(--yc-color-private-blue-100);\n    --yc-color-base-positive: var(--yc-color-private-green-50);\n    --yc-color-base-positive-hover: var(--yc-color-private-green-100);\n    --yc-color-base-warning: var(--yc-color-private-yellow-100);\n    --yc-color-base-warning-hover: var(--yc-color-private-yellow-200);\n    --yc-color-base-danger: var(--yc-color-private-red-50);\n    --yc-color-base-danger-hover: var(--yc-color-private-red-100);\n    --yc-color-base-misc: var(--yc-color-private-cool-grey-50);\n    --yc-color-base-misc-hover: var(--yc-color-private-cool-grey-100);\n    --yc-color-base-neutral: var(--yc-color-private-black-50);\n    --yc-color-base-neutral-hover: var(--yc-color-private-black-150);\n\n    --yc-color-base-positive-medium: var(--yc-color-private-green-150);\n    --yc-color-base-positive-medium-hover: var(--yc-color-private-green-200);\n\n    --yc-color-base-info-heavy: var(--yc-color-private-blue-450);\n    --yc-color-base-positive-heavy: var(--yc-color-private-green-450);\n    --yc-color-base-warning-heavy: var(--yc-color-private-yellow-550);\n    --yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-600);\n    --yc-color-base-danger-heavy: var(--yc-color-private-red-450);\n    --yc-color-base-danger-heavy-hover: var(--yc-color-private-red-500);\n    --yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450-solid);\n    --yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);\n\n    --yc-color-base-light: var(--yc-color-private-white-1000);\n    --yc-color-base-light-hover: var(--yc-color-private-white-850);\n    --yc-color-base-light-simple-hover: var(--yc-color-private-white-150);\n    --yc-color-base-light-disabled: var(--yc-color-private-white-150);\n    --yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);\n\n    --yc-color-base-float: var(--yc-color-private-white-1000);\n    --yc-color-base-float-hover: var(--yc-color-private-black-50-solid);\n    --yc-color-base-float-heavy: var(--yc-color-private-black-700-solid);\n    --yc-color-base-float-accent: var(--yc-color-private-white-1000);\n    --yc-color-base-float-accent-hover: var(--yc-color-private-white-850);\n    --yc-color-base-float-announcement: var(--yc-color-private-cool-grey-50-solid);\n    --yc-color-base-modal: var(--yc-color-private-white-1000);\n}\n","@mixin yc-colors-line-light {\n    --yc-color-line-generic: var(--yc-color-private-black-100);\n    --yc-color-line-generic-hover: var(--yc-color-private-black-150);\n    --yc-color-line-generic-active: var(--yc-color-private-black-300);\n    --yc-color-line-generic-accent: var(--yc-color-private-black-150);\n    --yc-color-line-generic-accent-hover: var(--yc-color-private-black-300);\n    --yc-color-line-solid: var(--yc-color-private-black-100-solid);\n    --yc-color-line-selection-hover: var(--yc-my-color-brand-light);\n    --yc-color-line-selection-active: var(--yc-my-color-brand-normal);\n    --yc-color-line-link: var(--yc-my-color-brand-normal);\n\n    --yc-color-line-info: var(--yc-color-private-blue-450);\n    --yc-color-line-positive: var(--yc-color-private-green-450);\n    --yc-color-line-warning: var(--yc-color-private-yellow-600);\n    --yc-color-line-danger: var(--yc-color-private-red-450);\n    --yc-color-line-misc: var(--yc-color-private-cool-grey-450);\n    --yc-color-line-hint: var(--yc-color-private-blue-550);\n\n    --yc-color-line-light: var(--yc-color-private-white-500);\n}\n","@mixin yc-colors-infographics-light {\n    --yc-color-infographics-info-light: var(--yc-color-private-blue-50);\n    --yc-color-infographics-positive-light: var(--yc-color-private-green-50);\n    --yc-color-infographics-warning-light: var(--yc-color-private-orange-50);\n    --yc-color-infographics-danger-light: var(--yc-color-private-red-50);\n    --yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-50);\n    --yc-color-infographics-neutral-light: var(--yc-color-private-black-50);\n\n    --yc-color-infographics-info-medium: var(--yc-color-private-blue-300);\n    --yc-color-infographics-positive-medium: var(--yc-color-private-green-300);\n    --yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);\n    --yc-color-infographics-danger-medium: var(--yc-color-private-red-300);\n    --yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);\n    --yc-color-infographics-neutral-medium: var(--yc-color-private-black-150);\n\n    --yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);\n    --yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);\n    --yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);\n    --yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);\n    --yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);\n    --yc-color-infographics-neutral-heavy: var(--yc-color-private-black-300);\n\n    --yc-color-infographics-axis: var(--yc-color-private-black-150-solid);\n\n    --yc-color-infographics-tooltip-bg: var(--yc-color-private-white-950);\n}\n","@mixin yc-colors-sfx-light {\n    --yc-color-sfx-veil: var(--yc-color-private-black-250);\n    --yc-color-sfx-shadow: var(--yc-color-private-black-150);\n    --yc-color-sfx-shadow-heavy: var(--yc-color-private-black-500);\n    --yc-color-sfx-shadow-light: var(--yc-color-private-black-50);\n    --yc-color-sfx-fade: var(--yc-color-private-white-300);\n}\n","@mixin yc-colors-promo-light {\n    --yc-color-promo-base-silver: #eff2f8;\n    --yc-color-promo-base-gold: #ffdb4d;\n    --yc-color-promo-base-asphalt: #313538;\n    --yc-color-promo-base-tomato: #ff5958;\n    --yc-color-promo-base-copper: #ffab3b;\n    --yc-color-promo-base-mint: #5ecf71;\n    --yc-color-promo-base-sky: #49a0f6;\n    --yc-color-promo-base-neon: #9f6fee;\n\n    --yc-color-promo-highlight-silver: #edf2f7;\n    --yc-color-promo-highlight-gold: #fff1b8;\n    --yc-color-promo-highlight-asphalt: #eaebeb;\n    --yc-color-promo-highlight-tomato: #ffdede;\n    --yc-color-promo-highlight-copper: #ffe6c4;\n    --yc-color-promo-highlight-mint: #ccf0d2;\n    --yc-color-promo-highlight-sky: #d6e9fd;\n    --yc-color-promo-highlight-neon: #ece2fc;\n\n    --yc-color-promo-accent-silver: #969a9e;\n    --yc-color-promo-accent-gold: #ffdb4d;\n    --yc-color-promo-accent-asphalt: #313538;\n    --yc-color-promo-accent-tomato: #ff5958;\n    --yc-color-promo-accent-copper: #ffab3b;\n    --yc-color-promo-accent-mint: #5ecf71;\n    --yc-color-promo-accent-sky: #49a0f6;\n    --yc-color-promo-accent-neon: #9f6fee;\n\n    --yc-color-promo-accent-hover-silver: #727578;\n    --yc-color-promo-accent-hover-gold: #edbe28;\n    --yc-color-promo-accent-hover-asphalt: #000000;\n    --yc-color-promo-accent-hover-tomato: #ee4f4e;\n    --yc-color-promo-accent-hover-copper: #f28d04;\n    --yc-color-promo-accent-hover-mint: #3bbc51;\n    --yc-color-promo-accent-hover-sky: #2180de;\n    --yc-color-promo-accent-hover-neon: #7b47cf;\n\n    --yc-color-promo-text-silver: #969a9e;\n    --yc-color-promo-text-gold: #ebb409;\n    --yc-color-promo-text-asphalt: #313538;\n    --yc-color-promo-text-tomato: #ff5958;\n    --yc-color-promo-text-copper: #ffab3b;\n    --yc-color-promo-text-mint: #5ecf71;\n    --yc-color-promo-text-sky: #49a0f6;\n    --yc-color-promo-text-neon: #9f6fee;\n}\n","@mixin yc-colors-system-light {\n    --yc-color-scroll-track: var(--yc-color-base-background);\n    --yc-color-scroll-handle: var(--yc-color-private-black-100);\n    --yc-color-scroll-handle-hover: var(--yc-color-private-black-150);\n    --yc-color-scroll-corner: var(--yc-color-private-black-100);\n}\n\n@mixin yc-colors-system-dark {\n    --yc-color-scroll-track: var(--yc-color-base-background);\n    --yc-color-scroll-handle: var(--yc-color-private-white-150);\n    --yc-color-scroll-handle-hover: var(--yc-color-private-white-250);\n    --yc-color-scroll-corner: var(--yc-color-private-white-150);\n}\n\n@mixin yc-colors-system-light-hc {\n    --yc-color-scroll-track: var(--yc-color-base-background);\n    --yc-color-scroll-handle: var(--yc-color-private-black-100);\n    --yc-color-scroll-handle-hover: var(--yc-color-private-black-150);\n    --yc-color-scroll-corner: var(--yc-color-private-black-100);\n}\n\n@mixin yc-colors-system-dark-hc {\n    --yc-color-scroll-track: var(--yc-color-base-background);\n    --yc-color-scroll-handle: var(--yc-color-private-white-150);\n    --yc-color-scroll-handle-hover: var(--yc-color-private-white-250);\n    --yc-color-scroll-corner: var(--yc-color-private-white-150);\n}\n","@mixin yc-colors-private-dark {\n    // Low level - https://figma.com/file/albZah2AMImAQDBhFMohdz\n\n    --yc-color-private-white-50: rgba(255, 255, 255, 0.05);\n    --yc-color-private-white-70: rgba(255, 255, 255, 0.07);\n    --yc-color-private-white-100: rgba(255, 255, 255, 0.1);\n    --yc-color-private-white-150: rgba(255, 255, 255, 0.15);\n    --yc-color-private-white-250: rgba(255, 255, 255, 0.25);\n    --yc-color-private-white-300: rgba(255, 255, 255, 0.3);\n    --yc-color-private-white-500: rgba(255, 255, 255, 0.5);\n    --yc-color-private-white-700: rgba(255, 255, 255, 0.7);\n    --yc-color-private-white-850: rgba(255, 255, 255, 0.85);\n\n    --yc-color-private-white-opaque-150: rgba(76, 75, 81, 0.95);\n\n    --yc-color-private-black-200: rgba(0, 0, 0, 0.2);\n    --yc-color-private-black-300: rgba(0, 0, 0, 0.3);\n    --yc-color-private-black-400: rgba(0, 0, 0, 0.4);\n    --yc-color-private-black-500: rgba(0, 0, 0, 0.5);\n    --yc-color-private-black-600: rgba(0, 0, 0, 0.6);\n    --yc-color-private-black-700: rgba(0, 0, 0, 0.7);\n    --yc-color-private-black-900: rgba(0, 0, 0, 0.9);\n\n    --yc-color-private-black-rock-850: rgba(45, 44, 51, 1);\n\n    --yc-color-private-white-20-solid: rgba(49, 48, 55, 1);\n    --yc-color-private-white-100-solid: rgba(66, 65, 71, 1);\n    --yc-color-private-white-150-solid: rgba(76, 76, 82, 1);\n    --yc-color-private-white-200-solid: rgba(87, 86, 92, 1);\n\n    --yc-color-private-blue-100: rgba(133, 168, 255, 0.15);\n    --yc-color-private-blue-150: rgba(133, 168, 255, 0.25);\n    --yc-color-private-blue-300: rgba(133, 168, 255, 0.5);\n    --yc-color-private-blue-450: rgba(87, 126, 214, 0.8);\n    --yc-color-private-blue-550: rgba(87, 126, 214, 1);\n    --yc-color-private-blue-700: rgba(98, 146, 255, 1);\n    --yc-color-private-blue-850: rgba(133, 168, 255, 1);\n\n    --yc-color-private-blue-150-solid: rgba(67, 75, 102, 1);\n    --yc-color-private-blue-300-solid: rgba(89, 106, 153, 1);\n    --yc-color-private-blue-450-solid: rgba(79, 110, 181, 1);\n\n    --yc-color-private-green-100: rgba(59, 201, 53, 0.12);\n    --yc-color-private-green-150: rgba(59, 201, 53, 0.16);\n    --yc-color-private-green-300: rgba(186, 255, 184, 0.6);\n    --yc-color-private-green-350: rgba(186, 255, 184, 0.68);\n    --yc-color-private-green-450: rgba(59, 201, 53, 0.58);\n    --yc-color-private-green-550: rgba(59, 201, 53, 0.75);\n\n    --yc-color-private-green-450-solid: rgba(53, 135, 52, 1);\n\n    --yc-color-private-yellow-100: rgba(255, 219, 77, 0.25);\n    --yc-color-private-yellow-150: rgba(255, 219, 77, 0.4);\n    --yc-color-private-yellow-450: rgba(255, 219, 77, 0.64);\n    --yc-color-private-yellow-550: rgba(255, 219, 77, 0.8);\n    --yc-color-private-yellow-700: rgba(224, 189, 52, 1);\n\n    --yc-color-private-red-100: rgba(191, 50, 48, 0.3);\n    --yc-color-private-red-150: rgba(191, 50, 48, 0.45);\n    --yc-color-private-red-300: rgba(255, 77, 73, 0.5);\n    --yc-color-private-red-450: rgba(208, 71, 69, 0.88);\n    --yc-color-private-red-550: rgba(208, 71, 69, 1);\n\n    --yc-color-private-red-450-solid: rgba(162, 49, 48, 1);\n\n    --yc-color-private-purple-550: rgba(166, 62, 178, 1);\n    --yc-color-private-purple-700: rgba(177, 78, 198, 1);\n    --yc-color-private-purple-850: rgba(200, 121, 216, 1);\n\n    --yc-color-private-cool-grey-100: rgba(95, 115, 133, 0.18);\n    --yc-color-private-cool-grey-150: rgba(107, 132, 153, 0.3);\n    --yc-color-private-cool-grey-300: rgba(95, 115, 133, 0.6);\n    --yc-color-private-cool-grey-450: rgba(95, 115, 133, 0.8);\n    --yc-color-private-cool-grey-550: rgba(95, 115, 133, 1);\n    --yc-color-private-cool-grey-700: rgba(142, 162, 180, 1);\n\n    --yc-color-private-cool-grey-450-solid: rgba(85, 101, 117, 1);\n\n    --yc-color-private-orange-50: rgba(204, 104, 16, 0.2);\n    --yc-color-private-orange-100: rgba(204, 104, 16, 0.3);\n    --yc-color-private-orange-150: rgba(204, 104, 16, 0.5);\n    --yc-color-private-orange-300: rgba(255, 160, 66, 0.5);\n    --yc-color-private-orange-450: rgba(204, 104, 16, 0.8);\n    --yc-color-private-orange-550: rgba(204, 104, 16, 1);\n\n    --yc-color-private-orange-450-solid: rgba(172, 92, 23, 1);\n}\n","@mixin yc-colors-text-dark {\n    --yc-color-text-primary: var(--yc-color-private-white-850);\n    --yc-color-text-complementary: var(--yc-color-private-white-700);\n    --yc-color-text-secondary: var(--yc-color-private-white-500);\n    --yc-color-text-hint: var(--yc-color-private-white-300);\n\n    --yc-color-text-info: var(--yc-color-private-blue-700);\n    --yc-color-text-positive: var(--yc-color-private-green-550);\n    --yc-color-text-warning: var(--yc-color-private-yellow-700);\n    --yc-color-text-danger: var(--yc-color-private-red-550);\n    --yc-color-text-utility: var(--yc-color-private-purple-550);\n    --yc-color-text-misc: var(--yc-color-private-cool-grey-700);\n\n    --yc-color-text-info-heavy: var(--yc-color-private-blue-700);\n    --yc-color-text-positive-heavy: var(--yc-color-private-green-550);\n    --yc-color-text-warning-heavy: var(--yc-color-private-yellow-700);\n    --yc-color-text-danger-heavy: var(--yc-color-private-red-550);\n    --yc-color-text-utility-heavy: var(--yc-color-private-purple-550);\n    --yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-700);\n\n    --yc-color-text-special: var(--yc-my-color-brand-normal);\n    --yc-color-text-link: var(--yc-my-color-brand-link);\n    --yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);\n    --yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);\n    --yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);\n    --yc-color-text-yandex-red: var(--yc-color-private-red-550);\n\n    --yc-color-text-dark-primary: var(--yc-color-private-black-900);\n    --yc-color-text-dark-complementary: var(--yc-color-private-black-700);\n    --yc-color-text-dark-secondary: var(--yc-color-private-black-500);\n\n    --yc-color-text-light-primary: var(--yc-color-private-white-850);\n    --yc-color-text-light-complementary: var(--yc-color-private-white-700);\n    --yc-color-text-light-secondary: var(--yc-color-private-white-500);\n    --yc-color-text-light-hint: var(--yc-color-private-white-300);\n\n    --yc-color-text-inverted-primary: var(--yc-color-private-black-900);\n    --yc-color-text-inverted-complementary: var(--yc-color-private-black-700);\n    --yc-color-text-inverted-secondary: var(--yc-color-private-black-500);\n    --yc-color-text-inverted-hint: var(--yc-color-private-black-300);\n}\n","@mixin yc-colors-base-dark {\n    --yc-color-base-background: var(--yc-color-private-black-rock-850);\n    --yc-color-base-generic: var(--yc-color-private-white-100);\n    --yc-color-base-generic-hover: var(--yc-color-private-white-150);\n    --yc-color-base-generic-medium: var(--yc-color-private-white-250);\n    --yc-color-base-generic-medium-hover: var(--yc-color-private-white-300);\n    --yc-color-base-generic-accent: var(--yc-color-private-white-150);\n    --yc-color-base-generic-accent-disabled: var(--yc-color-private-white-70);\n    --yc-color-base-generic-ultralight: var(--yc-color-private-white-20-solid);\n    --yc-color-base-simple-hover: var(--yc-color-private-white-100);\n    --yc-color-base-simple-hover-solid: var(--yc-color-private-white-100-solid);\n    --yc-color-base-selection: var(--yc-my-color-brand-selection);\n    --yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);\n\n    --yc-color-base-special: var(--yc-my-color-brand-normal);\n    --yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);\n    --yc-color-base-action: var(--yc-color-base-special);\n    --yc-color-base-action-hover: var(--yc-color-base-special-hover);\n\n    --yc-color-base-info: var(--yc-color-private-blue-100);\n    --yc-color-base-info-hover: var(--yc-color-private-blue-150);\n    --yc-color-base-positive: var(--yc-color-private-green-100);\n    --yc-color-base-positive-hover: var(--yc-color-private-green-150);\n    --yc-color-base-warning: var(--yc-color-private-yellow-100);\n    --yc-color-base-warning-hover: var(--yc-color-private-yellow-150);\n    --yc-color-base-danger: var(--yc-color-private-red-100);\n    --yc-color-base-danger-hover: var(--yc-color-private-red-150);\n    --yc-color-base-misc: var(--yc-color-private-cool-grey-100);\n    --yc-color-base-misc-hover: var(--yc-color-private-cool-grey-150);\n    --yc-color-base-neutral: var(--yc-color-private-white-100);\n    --yc-color-base-neutral-hover: var(--yc-color-private-white-150);\n\n    --yc-color-base-positive-medium: var(--yc-color-private-green-300);\n    --yc-color-base-positive-medium-hover: var(--yc-color-private-green-350);\n\n    --yc-color-base-info-heavy: var(--yc-color-private-blue-450);\n    --yc-color-base-positive-heavy: var(--yc-color-private-green-450);\n    --yc-color-base-warning-heavy: var(--yc-color-private-yellow-550);\n    --yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-700);\n    --yc-color-base-danger-heavy: var(--yc-color-private-red-450);\n    --yc-color-base-danger-heavy-hover: var(--yc-color-private-red-550);\n    --yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450-solid);\n    --yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);\n\n    --yc-color-base-light: var(--yc-color-private-white-850);\n    --yc-color-base-light-hover: var(--yc-color-private-white-700);\n    --yc-color-base-light-simple-hover: var(--yc-color-private-white-150);\n    --yc-color-base-light-disabled: var(--yc-color-private-white-150);\n    --yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);\n\n    --yc-color-base-float: var(--yc-color-private-white-100-solid);\n    --yc-color-base-float-hover: var(--yc-color-private-white-150-solid);\n    --yc-color-base-float-heavy: var(--yc-color-private-white-150-solid);\n    --yc-color-base-float-accent: var(--yc-color-private-white-150-solid);\n    --yc-color-base-float-accent-hover: var(--yc-color-private-white-200-solid);\n    --yc-color-base-float-announcement: var(--yc-color-private-white-150-solid);\n    --yc-color-base-modal: var(--yc-color-private-black-rock-850);\n}\n","@mixin yc-colors-line-dark {\n    --yc-color-line-generic: var(--yc-color-private-white-150);\n    --yc-color-line-generic-hover: var(--yc-color-private-white-250);\n    --yc-color-line-generic-active: var(--yc-color-private-white-300);\n    --yc-color-line-generic-accent: var(--yc-color-private-white-150);\n    --yc-color-line-generic-accent-hover: var(--yc-color-private-white-300);\n    --yc-color-line-solid: var(--yc-color-private-white-150-solid);\n    --yc-color-line-selection-hover: var(--yc-my-color-brand-light);\n    --yc-color-line-selection-active: var(--yc-my-color-brand-normal);\n    --yc-color-line-link: var(--yc-my-color-brand-normal);\n\n    --yc-color-line-info: var(--yc-color-private-blue-450);\n    --yc-color-line-positive: var(--yc-color-private-green-450);\n    --yc-color-line-warning: var(--yc-color-private-yellow-150);\n    --yc-color-line-danger: var(--yc-color-private-red-450);\n    --yc-color-line-misc: var(--yc-color-private-cool-grey-450);\n    --yc-color-line-hint: var(--yc-color-private-blue-550);\n\n    --yc-color-line-light: var(--yc-color-private-white-500);\n}\n","@mixin yc-colors-infographics-dark {\n    --yc-color-infographics-info-light: var(--yc-color-private-blue-150);\n    --yc-color-infographics-positive-light: var(--yc-color-private-green-150);\n    --yc-color-infographics-warning-light: var(--yc-color-private-orange-150);\n    --yc-color-infographics-danger-light: var(--yc-color-private-red-150);\n    --yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-150);\n    --yc-color-infographics-neutral-light: var(--yc-color-private-white-150);\n\n    --yc-color-infographics-info-medium: var(--yc-color-private-blue-300);\n    --yc-color-infographics-positive-medium: var(--yc-color-private-green-300);\n    --yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);\n    --yc-color-infographics-danger-medium: var(--yc-color-private-red-300);\n    --yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);\n    --yc-color-infographics-neutral-medium: var(--yc-color-private-white-150);\n\n    --yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);\n    --yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);\n    --yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);\n    --yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);\n    --yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);\n    --yc-color-infographics-neutral-heavy: var(--yc-color-private-white-300);\n\n    --yc-color-infographics-axis: var(--yc-color-private-white-150-solid);\n\n    --yc-color-infographics-tooltip-bg: var(--yc-color-private-white-opaque-150);\n}\n","@mixin yc-colors-sfx-dark {\n    --yc-color-sfx-veil: var(--yc-color-private-black-600);\n    --yc-color-sfx-shadow: var(--yc-color-private-black-200);\n    --yc-color-sfx-shadow-heavy: var(--yc-color-private-black-500);\n    --yc-color-sfx-shadow-light: var(--yc-color-private-black-50);\n    --yc-color-sfx-fade: var(--yc-color-private-white-250);\n}\n","@mixin yc-colors-promo-dark {\n    --yc-color-promo-base-silver: #bcc0c4;\n    --yc-color-promo-base-gold: #ffde5d;\n    --yc-color-promo-base-asphalt: #474d52;\n    --yc-color-promo-base-tomato: #ff6b6a;\n    --yc-color-promo-base-copper: #ffb95a;\n    --yc-color-promo-base-mint: #7fd68e;\n    --yc-color-promo-base-sky: #69b4ff;\n    --yc-color-promo-base-neon: #b384ff;\n\n    --yc-color-promo-highlight-silver: #616366;\n    --yc-color-promo-highlight-gold: #99832e;\n    --yc-color-promo-highlight-asphalt: #5d656b;\n    --yc-color-promo-highlight-tomato: #998585;\n    --yc-color-promo-highlight-copper: #7f7262;\n    --yc-color-promo-highlight-mint: #758978;\n    --yc-color-promo-highlight-sky: #94a2af;\n    --yc-color-promo-highlight-neon: #aea6ba;\n}\n","@mixin yc-colors-private-light-hc {\n    // Low level - https://figma.com/file/albZah2AMImAQDBhFMohdz\n\n    --yc-color-private-white-50: rgba(255, 255, 255, 0.05);\n    --yc-color-private-white-70: rgba(255, 255, 255, 0.07);\n    --yc-color-private-white-100: rgba(255, 255, 255, 0.1);\n    --yc-color-private-white-150: rgba(255, 255, 255, 0.15);\n    --yc-color-private-white-200: rgba(255, 255, 255, 0.2);\n    --yc-color-private-white-250: rgba(255, 255, 255, 0.25);\n    --yc-color-private-white-300: rgba(255, 255, 255, 0.3);\n    --yc-color-private-white-350: rgba(255, 255, 255, 0.35);\n    --yc-color-private-white-400: rgba(255, 255, 255, 0.4);\n    --yc-color-private-white-450: rgba(255, 255, 255, 0.45);\n    --yc-color-private-white-500: rgba(255, 255, 255, 0.5);\n    --yc-color-private-white-550: rgba(255, 255, 255, 0.55);\n    --yc-color-private-white-600: rgba(255, 255, 255, 0.6);\n    --yc-color-private-white-650: rgba(255, 255, 255, 0.65);\n    --yc-color-private-white-700: rgba(255, 255, 255, 0.7);\n    --yc-color-private-white-750: rgba(255, 255, 255, 0.75);\n    --yc-color-private-white-800: rgba(255, 255, 255, 0.8);\n    --yc-color-private-white-850: rgba(255, 255, 255, 0.85);\n    --yc-color-private-white-900: rgba(255, 255, 255, 0.9);\n    --yc-color-private-white-950: rgba(255, 255, 255, 0.95);\n    --yc-color-private-white-1000: rgba(255, 255, 255, 1);\n\n    --yc-color-private-black-50: rgba(0, 0, 0, 0.05);\n    --yc-color-private-black-100: rgba(0, 0, 0, 0.1);\n    --yc-color-private-black-150: rgba(0, 0, 0, 0.15);\n    --yc-color-private-black-200: rgba(0, 0, 0, 0.2);\n    --yc-color-private-black-250: rgba(0, 0, 0, 0.25);\n    --yc-color-private-black-300: rgba(0, 0, 0, 0.3);\n    --yc-color-private-black-350: rgba(0, 0, 0, 0.35);\n    --yc-color-private-black-400: rgba(0, 0, 0, 0.4);\n    --yc-color-private-black-450: rgba(0, 0, 0, 0.45);\n    --yc-color-private-black-500: rgba(0, 0, 0, 0.5);\n    --yc-color-private-black-550: rgba(0, 0, 0, 0.55);\n    --yc-color-private-black-600: rgba(0, 0, 0, 0.6);\n    --yc-color-private-black-650: rgba(0, 0, 0, 0.65);\n    --yc-color-private-black-700: rgba(0, 0, 0, 0.7);\n    --yc-color-private-black-750: rgba(0, 0, 0, 0.75);\n    --yc-color-private-black-800: rgba(0, 0, 0, 0.8);\n    --yc-color-private-black-850: rgba(0, 0, 0, 0.85);\n    --yc-color-private-black-900: rgba(0, 0, 0, 0.9);\n    --yc-color-private-black-950: rgba(0, 0, 0, 0.95);\n    --yc-color-private-black-1000: rgba(0, 0, 0, 1);\n\n    --yc-color-private-black-20-solid: rgba(250, 250, 250, 1);\n    --yc-color-private-black-50-solid: rgba(242, 242, 242, 1);\n    --yc-color-private-black-100-solid: rgba(229, 229, 229, 1);\n    --yc-color-private-black-150-solid: rgba(217, 217, 217, 1);\n    --yc-color-private-black-200-solid: rgba(204, 204, 204, 1);\n    --yc-color-private-black-250-solid: rgba(191, 191, 191, 1);\n    --yc-color-private-black-300-solid: rgba(179, 179, 179, 1);\n    --yc-color-private-black-350-solid: rgba(166, 166, 166, 1);\n    --yc-color-private-black-400-solid: rgba(153, 153, 153, 1);\n    --yc-color-private-black-450-solid: rgba(140, 140, 140, 1);\n    --yc-color-private-black-500-solid: rgba(128, 128, 128, 1);\n    --yc-color-private-black-550-solid: rgba(115, 115, 115, 1);\n    --yc-color-private-black-600-solid: rgba(102, 102, 102, 1);\n    --yc-color-private-black-650-solid: rgba(89, 89, 89, 1);\n    --yc-color-private-black-700-solid: rgba(76, 76, 76, 1);\n    --yc-color-private-black-750-solid: rgba(64, 64, 64, 1);\n    --yc-color-private-black-800-solid: rgba(51, 51, 51, 1);\n    --yc-color-private-black-850-solid: rgba(38, 38, 38, 1);\n    --yc-color-private-black-900-solid: rgba(26, 26, 26, 1);\n    --yc-color-private-black-950-solid: rgba(13, 13, 13, 1);\n    --yc-color-private-black-1000-solid: rgba(0, 0, 0, 1);\n\n    --yc-color-private-blue-600: #4a71d6;\n    --yc-color-private-blue-800: #3f5799;\n\n    --yc-color-private-blue-50: rgba(82, 130, 255, 0.05);\n    --yc-color-private-blue-100: rgba(82, 130, 255, 0.1);\n    --yc-color-private-blue-150: rgba(82, 130, 255, 0.2);\n    --yc-color-private-blue-200: rgba(82, 130, 255, 0.3);\n    --yc-color-private-blue-250: rgba(82, 130, 255, 0.4);\n    --yc-color-private-blue-300: rgba(82, 130, 255, 0.5);\n    --yc-color-private-blue-350: rgba(82, 130, 255, 0.6);\n    --yc-color-private-blue-400: rgba(82, 130, 255, 0.7);\n    --yc-color-private-blue-450: rgba(82, 130, 255, 0.8);\n    --yc-color-private-blue-500: rgba(82, 130, 255, 0.9);\n    --yc-color-private-blue-550: rgba(82, 130, 255, 1);\n\n    --yc-color-private-blue-50-solid: rgba(246, 249, 255, 1);\n    --yc-color-private-blue-100-solid: rgba(238, 243, 255, 1);\n    --yc-color-private-blue-150-solid: rgba(220, 230, 255, 1);\n    --yc-color-private-blue-200-solid: rgba(203, 218, 255, 1);\n    --yc-color-private-blue-250-solid: rgba(186, 205, 255, 1);\n    --yc-color-private-blue-300-solid: rgba(168, 193, 255, 1);\n    --yc-color-private-blue-350-solid: rgba(151, 180, 255, 1);\n    --yc-color-private-blue-400-solid: rgba(134, 168, 255, 1);\n    --yc-color-private-blue-450-solid: rgba(116, 155, 255, 1);\n    --yc-color-private-blue-500-solid: rgba(99, 143, 255, 1);\n    --yc-color-private-blue-550-solid: rgba(82, 130, 255, 1);\n    --yc-color-private-blue-600-solid: rgba(77, 121, 233, 1);\n    --yc-color-private-blue-650-solid: rgba(72, 111, 212, 1);\n    --yc-color-private-blue-700-solid: rgba(67, 102, 190, 1);\n    --yc-color-private-blue-750-solid: rgba(63, 92, 168, 1);\n    --yc-color-private-blue-800-solid: rgba(58, 83, 147, 1);\n    --yc-color-private-blue-850-solid: rgba(53, 73, 125, 1);\n    --yc-color-private-blue-900-solid: rgba(48, 64, 103, 1);\n    --yc-color-private-blue-950-solid: rgba(44, 54, 81, 1);\n    --yc-color-private-blue-1000-solid: rgba(39, 45, 60, 1);\n\n    --yc-color-private-green-50: rgba(59, 201, 53, 0.05);\n    --yc-color-private-green-100: rgba(59, 201, 53, 0.1);\n    --yc-color-private-green-150: rgba(59, 201, 53, 0.2);\n    --yc-color-private-green-200: rgba(59, 201, 53, 0.3);\n    --yc-color-private-green-250: rgba(59, 201, 53, 0.4);\n    --yc-color-private-green-300: rgba(59, 201, 53, 0.5);\n    --yc-color-private-green-350: rgba(59, 201, 53, 0.6);\n    --yc-color-private-green-400: rgba(59, 201, 53, 0.7);\n    --yc-color-private-green-450: rgba(59, 201, 53, 0.8);\n    --yc-color-private-green-500: rgba(59, 201, 53, 0.9);\n    --yc-color-private-green-550: rgba(59, 201, 53, 1);\n\n    --yc-color-private-green-50-solid: rgba(245, 252, 245, 1);\n    --yc-color-private-green-100-solid: rgba(235, 250, 235, 1);\n    --yc-color-private-green-150-solid: rgba(216, 244, 215, 1);\n    --yc-color-private-green-200-solid: rgba(196, 239, 194, 1);\n    --yc-color-private-green-250-solid: rgba(177, 233, 174, 1);\n    --yc-color-private-green-300-solid: rgba(157, 228, 154, 1);\n    --yc-color-private-green-350-solid: rgba(137, 223, 134, 1);\n    --yc-color-private-green-400-solid: rgba(118, 217, 114, 1);\n    --yc-color-private-green-450-solid: rgba(98, 212, 93, 1);\n    --yc-color-private-green-500-solid: rgba(79, 206, 73, 1);\n    --yc-color-private-green-550-solid: rgba(59, 201, 53, 1);\n    --yc-color-private-green-600-solid: rgba(56, 184, 51, 1);\n    --yc-color-private-green-650-solid: rgba(54, 168, 50, 1);\n    --yc-color-private-green-700-solid: rgba(51, 151, 48, 1);\n    --yc-color-private-green-750-solid: rgba(49, 135, 47, 1);\n    --yc-color-private-green-800-solid: rgba(47, 118, 46, 1);\n    --yc-color-private-green-850-solid: rgba(44, 101, 44, 1);\n    --yc-color-private-green-900-solid: rgba(41, 85, 43, 1);\n    --yc-color-private-green-950-solid: rgba(39, 68, 41, 1);\n    --yc-color-private-green-1000-solid: rgba(36, 52, 40, 1);\n\n    --yc-color-private-yellow-50: rgba(255, 219, 77, 0.05);\n    --yc-color-private-yellow-100: rgba(255, 219, 77, 0.1);\n    --yc-color-private-yellow-150: rgba(255, 219, 77, 0.2);\n    --yc-color-private-yellow-200: rgba(255, 219, 77, 0.3);\n    --yc-color-private-yellow-250: rgba(255, 219, 77, 0.4);\n    --yc-color-private-yellow-300: rgba(255, 219, 77, 0.5);\n    --yc-color-private-yellow-350: rgba(255, 219, 77, 0.6);\n    --yc-color-private-yellow-400: rgba(255, 219, 77, 0.7);\n    --yc-color-private-yellow-450: rgba(255, 219, 77, 0.8);\n    --yc-color-private-yellow-500: rgba(255, 219, 77, 0.9);\n    --yc-color-private-yellow-550: rgba(255, 219, 77, 1);\n\n    --yc-color-private-yellow-50-solid: rgba(255, 253, 246, 1);\n    --yc-color-private-yellow-100-solid: rgba(255, 251, 237, 1);\n    --yc-color-private-yellow-150-solid: rgba(255, 248, 219, 1);\n    --yc-color-private-yellow-200-solid: rgba(255, 244, 202, 1);\n    --yc-color-private-yellow-250-solid: rgba(255, 241, 184, 1);\n    --yc-color-private-yellow-300-solid: rgba(255, 237, 166, 1);\n    --yc-color-private-yellow-350-solid: rgba(255, 233, 148, 1);\n    --yc-color-private-yellow-400-solid: rgba(255, 230, 130, 1);\n    --yc-color-private-yellow-450-solid: rgba(255, 226, 113, 1);\n    --yc-color-private-yellow-500-solid: rgba(255, 223, 95, 1);\n    --yc-color-private-yellow-550-solid: rgba(255, 219, 77, 1);\n    --yc-color-private-yellow-600-solid: rgba(233, 201, 73, 1);\n    --yc-color-private-yellow-650-solid: rgba(211, 182, 69, 1);\n    --yc-color-private-yellow-700-solid: rgba(189, 164, 65, 1);\n    --yc-color-private-yellow-750-solid: rgba(167, 145, 61, 1);\n    --yc-color-private-yellow-800-solid: rgba(144, 127, 58, 1);\n    --yc-color-private-yellow-850-solid: rgba(122, 109, 54, 1);\n    --yc-color-private-yellow-900-solid: rgba(100, 90, 50, 1);\n    --yc-color-private-yellow-950-solid: rgba(78, 72, 46, 1);\n    --yc-color-private-yellow-1000-solid: rgba(56, 53, 42, 1);\n\n    --yc-color-private-red-50: rgba(255, 4, 0, 0.05);\n    --yc-color-private-red-100: rgba(255, 4, 0, 0.1);\n    --yc-color-private-red-150: rgba(255, 4, 0, 0.2);\n    --yc-color-private-red-200: rgba(255, 4, 0, 0.3);\n    --yc-color-private-red-250: rgba(255, 4, 0, 0.4);\n    --yc-color-private-red-300: rgba(255, 4, 0, 0.5);\n    --yc-color-private-red-350: rgba(255, 4, 0, 0.6);\n    --yc-color-private-red-400: rgba(255, 4, 0, 0.7);\n    --yc-color-private-red-450: rgba(255, 4, 0, 0.8);\n    --yc-color-private-red-500: rgba(255, 4, 0, 0.9);\n    --yc-color-private-red-550: rgba(255, 4, 0, 1);\n\n    --yc-color-private-red-50-solid: rgba(255, 243, 242, 1);\n    --yc-color-private-red-100-solid: rgba(255, 230, 229, 1);\n    --yc-color-private-red-150-solid: rgba(255, 205, 204, 1);\n    --yc-color-private-red-200-solid: rgba(255, 180, 179, 1);\n    --yc-color-private-red-250-solid: rgba(255, 155, 153, 1);\n    --yc-color-private-red-300-solid: rgba(255, 130, 128, 1);\n    --yc-color-private-red-350-solid: rgba(255, 105, 102, 1);\n    --yc-color-private-red-400-solid: rgba(255, 80, 76, 1);\n    --yc-color-private-red-450-solid: rgba(255, 55, 51, 1);\n    --yc-color-private-red-500-solid: rgba(255, 30, 26, 1);\n    --yc-color-private-red-550-solid: rgba(255, 4, 0, 1);\n    --yc-color-private-red-600-solid: rgba(233, 8, 4, 1);\n    --yc-color-private-red-650-solid: rgba(211, 11, 8, 1);\n    --yc-color-private-red-700-solid: rgba(189, 14, 11, 1);\n    --yc-color-private-red-750-solid: rgba(166, 17, 15, 1);\n    --yc-color-private-red-800-solid: rgba(144, 20, 19, 1);\n    --yc-color-private-red-850-solid: rgba(122, 23, 23, 1);\n    --yc-color-private-red-900-solid: rgba(100, 26, 27, 1);\n    --yc-color-private-red-950-solid: rgba(78, 29, 30, 1);\n    --yc-color-private-red-1000-solid: rgba(56, 32, 34, 1);\n\n    --yc-color-private-purple-50: rgba(154, 50, 166, 0.05);\n    --yc-color-private-purple-100: rgba(154, 50, 166, 0.1);\n    --yc-color-private-purple-150: rgba(154, 50, 166, 0.2);\n    --yc-color-private-purple-200: rgba(154, 50, 166, 0.3);\n    --yc-color-private-purple-250: rgba(154, 50, 166, 0.4);\n    --yc-color-private-purple-300: rgba(154, 50, 166, 0.5);\n    --yc-color-private-purple-350: rgba(154, 50, 166, 0.6);\n    --yc-color-private-purple-400: rgba(154, 50, 166, 0.7);\n    --yc-color-private-purple-450: rgba(154, 50, 166, 0.8);\n    --yc-color-private-purple-500: rgba(154, 50, 166, 0.9);\n    --yc-color-private-purple-550: rgba(154, 50, 166, 1);\n\n    --yc-color-private-purple-50-solid: rgba(250, 245, 251, 1);\n    --yc-color-private-purple-100-solid: rgba(245, 234, 246, 1);\n    --yc-color-private-purple-150-solid: rgba(235, 214, 237, 1);\n    --yc-color-private-purple-200-solid: rgba(225, 193, 228, 1);\n    --yc-color-private-purple-250-solid: rgba(215, 173, 219, 1);\n    --yc-color-private-purple-300-solid: rgba(204, 153, 210, 1);\n    --yc-color-private-purple-350-solid: rgba(194, 132, 202, 1);\n    --yc-color-private-purple-400-solid: rgba(184, 111, 193, 1);\n    --yc-color-private-purple-450-solid: rgba(174, 91, 184, 1);\n    --yc-color-private-purple-500-solid: rgba(164, 71, 175, 1);\n    --yc-color-private-purple-550-solid: rgba(154, 50, 166, 1);\n    --yc-color-private-purple-600-solid: rgba(142, 49, 153, 1);\n    --yc-color-private-purple-650-solid: rgba(130, 47, 140, 1);\n    --yc-color-private-purple-700-solid: rgba(118, 45, 128, 1);\n    --yc-color-private-purple-750-solid: rgba(106, 44, 115, 1);\n    --yc-color-private-purple-800-solid: rgba(94, 42, 102, 1);\n    --yc-color-private-purple-850-solid: rgba(82, 41, 89, 1);\n    --yc-color-private-purple-900-solid: rgba(70, 40, 76, 1);\n    --yc-color-private-purple-950-solid: rgba(58, 38, 64, 1);\n    --yc-color-private-purple-1000-solid: rgba(46, 36, 51, 1);\n\n    --yc-color-private-cool-grey-50: rgba(107, 132, 153, 0.05);\n    --yc-color-private-cool-grey-100: rgba(107, 132, 153, 0.1);\n    --yc-color-private-cool-grey-150: rgba(107, 132, 153, 0.2);\n    --yc-color-private-cool-grey-200: rgba(107, 132, 153, 0.3);\n    --yc-color-private-cool-grey-250: rgba(107, 132, 153, 0.4);\n    --yc-color-private-cool-grey-300: rgba(107, 132, 153, 0.5);\n    --yc-color-private-cool-grey-350: rgba(107, 132, 153, 0.6);\n    --yc-color-private-cool-grey-400: rgba(107, 132, 153, 0.7);\n    --yc-color-private-cool-grey-450: rgba(107, 132, 153, 0.8);\n    --yc-color-private-cool-grey-500: rgba(107, 132, 153, 0.9);\n    --yc-color-private-cool-grey-550: rgba(107, 132, 153, 1);\n\n    --yc-color-private-cool-grey-50-solid: rgba(248, 249, 250, 1);\n    --yc-color-private-cool-grey-100-solid: rgba(240, 243, 245, 1);\n    --yc-color-private-cool-grey-150-solid: rgba(225, 230, 235, 1);\n    --yc-color-private-cool-grey-200-solid: rgba(211, 218, 224, 1);\n    --yc-color-private-cool-grey-250-solid: rgba(196, 206, 214, 1);\n    --yc-color-private-cool-grey-300-solid: rgba(181, 193, 204, 1);\n    --yc-color-private-cool-grey-350-solid: rgba(166, 181, 194, 1);\n    --yc-color-private-cool-grey-400-solid: rgba(151, 169, 184, 1);\n    --yc-color-private-cool-grey-450-solid: rgba(137, 157, 173, 1);\n    --yc-color-private-cool-grey-500-solid: rgba(122, 144, 163, 1);\n    --yc-color-private-cool-grey-550-solid: rgba(107, 132, 153, 1);\n    --yc-color-private-cool-grey-600-solid: rgba(100, 122, 142, 1);\n    --yc-color-private-cool-grey-650-solid: rgba(92, 113, 130, 1);\n    --yc-color-private-cool-grey-700-solid: rgba(85, 103, 118, 1);\n    --yc-color-private-cool-grey-750-solid: rgba(78, 93, 107, 1);\n    --yc-color-private-cool-grey-800-solid: rgba(70, 83, 96, 1);\n    --yc-color-private-cool-grey-850-solid: rgba(63, 74, 84, 1);\n    --yc-color-private-cool-grey-900-solid: rgba(56, 64, 73, 1);\n    --yc-color-private-cool-grey-950-solid: rgba(49, 54, 61, 1);\n    --yc-color-private-cool-grey-1000-solid: rgba(41, 45, 49, 1);\n\n    --yc-color-private-orange-50: rgba(255, 119, 0, 0.05);\n    --yc-color-private-orange-100: rgba(255, 119, 0, 0.1);\n    --yc-color-private-orange-150: rgba(255, 119, 0, 0.2);\n    --yc-color-private-orange-200: rgba(255, 119, 0, 0.3);\n    --yc-color-private-orange-250: rgba(255, 119, 0, 0.4);\n    --yc-color-private-orange-300: rgba(255, 119, 0, 0.5);\n    --yc-color-private-orange-350: rgba(255, 119, 0, 0.6);\n    --yc-color-private-orange-400: rgba(255, 119, 0, 0.7);\n    --yc-color-private-orange-450: rgba(255, 119, 0, 0.8);\n    --yc-color-private-orange-500: rgba(255, 119, 0, 0.9);\n    --yc-color-private-orange-550: rgba(255, 119, 0, 1);\n\n    --yc-color-private-orange-50-solid: rgba(255, 248, 242, 1);\n    --yc-color-private-orange-100-solid: rgba(255, 241, 229, 1);\n    --yc-color-private-orange-150-solid: rgba(255, 228, 204, 1);\n    --yc-color-private-orange-200-solid: rgba(255, 214, 179, 1);\n    --yc-color-private-orange-250-solid: rgba(255, 201, 153, 1);\n    --yc-color-private-orange-300-solid: rgba(255, 187, 128, 1);\n    --yc-color-private-orange-350-solid: rgba(255, 173, 102, 1);\n    --yc-color-private-orange-400-solid: rgba(255, 160, 76, 1);\n    --yc-color-private-orange-450-solid: rgba(255, 146, 51, 1);\n    --yc-color-private-orange-500-solid: rgba(255, 133, 26, 1);\n    --yc-color-private-orange-550-solid: rgba(255, 119, 0, 1);\n    --yc-color-private-orange-600-solid: rgba(233, 111, 4, 1);\n    --yc-color-private-orange-650-solid: rgba(211, 102, 8, 1);\n    --yc-color-private-orange-700-solid: rgba(189, 94, 11, 1);\n    --yc-color-private-orange-750-solid: rgba(167, 85, 15, 1);\n    --yc-color-private-orange-800-solid: rgba(144, 77, 19, 1);\n    --yc-color-private-orange-850-solid: rgba(122, 69, 23, 1);\n    --yc-color-private-orange-900-solid: rgba(100, 60, 27, 1);\n    --yc-color-private-orange-950-solid: rgba(78, 52, 30, 1);\n    --yc-color-private-orange-1000-solid: rgba(56, 43, 34, 1);\n}\n","@mixin yc-colors-text-light-hc {\n    --yc-color-text-primary: var(--yc-color-private-black-1000);\n    --yc-color-text-complementary: var(--yc-color-private-black-850);\n    --yc-color-text-secondary: var(--yc-color-private-black-700);\n    --yc-color-text-hint: var(--yc-color-private-black-500);\n\n    --yc-color-text-info: var(--yc-color-private-blue-600-solid);\n    --yc-color-text-positive: var(--yc-color-private-green-650-solid);\n    --yc-color-text-warning: var(--yc-color-private-yellow-650-solid);\n    --yc-color-text-danger: var(--yc-color-private-red-600-solid);\n    --yc-color-text-utility: var(--yc-color-private-purple-600-solid);\n    --yc-color-text-misc: var(--yc-color-private-cool-grey-650-solid);\n\n    --yc-color-text-info-heavy: var(--yc-color-private-blue-900-solid);\n    --yc-color-text-positive-heavy: var(--yc-color-private-green-900-solid);\n    --yc-color-text-warning-heavy: var(--yc-color-private-orange-900-solid);\n    --yc-color-text-danger-heavy: var(--yc-color-private-red-900-solid);\n    --yc-color-text-utility-heavy: var(--yc-color-private-purple-900-solid);\n    --yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-950-solid);\n\n    --yc-color-text-special: var(--yc-my-color-brand-normal);\n    --yc-color-text-link: var(--yc-my-color-brand-link);\n    --yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);\n    --yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);\n    --yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);\n\n    --yc-color-text-yandex-red: var(--yc-color-private-red-550);\n\n    --yc-color-text-dark-primary: var(--yc-color-private-black-1000);\n    --yc-color-text-dark-complementary: var(--yc-color-private-black-800);\n    --yc-color-text-dark-secondary: var(--yc-color-private-black-600);\n\n    --yc-color-text-light-primary: var(--yc-color-private-white-1000);\n    --yc-color-text-light-complementary: var(--yc-color-private-white-850);\n    --yc-color-text-light-secondary: var(--yc-color-private-white-700);\n    --yc-color-text-light-hint: var(--yc-color-private-white-500);\n\n    --yc-color-text-inverted-primary: var(--yc-color-private-white-1000);\n    --yc-color-text-inverted-complementary: var(--yc-color-private-white-850);\n    --yc-color-text-inverted-secondary: var(--yc-color-private-white-700);\n    --yc-color-text-inverted-hint: var(--yc-color-private-white-500);\n}\n","@mixin yc-colors-base-light-hc {\n    --yc-color-base-background: var(--yc-color-private-white-1000);\n    --yc-color-base-generic: var(--yc-color-private-black-150);\n    --yc-color-base-generic-hover: var(--yc-color-private-black-300);\n    --yc-color-base-generic-medium: var(--yc-color-private-black-250);\n    --yc-color-base-generic-medium-hover: var(--yc-color-private-black-350);\n    --yc-color-base-generic-accent: var(--yc-color-private-black-250);\n    --yc-color-base-generic-accent-disabled: var(--yc-color-private-black-150);\n\n    --yc-color-base-generic-ultralight: var(--yc-color-private-black-50-solid);\n\n    --yc-color-base-simple-hover: var(--yc-color-private-black-150);\n\n    --yc-color-base-simple-hover-solid: var(--yc-color-private-black-100-solid);\n    --yc-color-base-selection: var(--yc-my-color-brand-selection);\n\n    --yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);\n    --yc-color-base-special: var(--yc-my-color-brand-normal);\n    --yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);\n    --yc-color-base-action: var(--yc-color-base-special);\n    --yc-color-base-action-hover: var(--yc-color-base-special-hover);\n\n    --yc-color-base-info: var(--yc-color-private-blue-250);\n    --yc-color-base-info-hover: var(--yc-color-private-blue-350);\n\n    --yc-color-base-positive: var(--yc-color-private-green-250);\n    --yc-color-base-positive-hover: var(--yc-color-private-green-350);\n\n    --yc-color-base-warning: var(--yc-color-private-yellow-300);\n    --yc-color-base-warning-hover: var(--yc-color-private-yellow-550);\n    --yc-color-base-danger: var(--yc-color-private-red-250);\n    --yc-color-base-danger-hover: var(--yc-color-private-red-350);\n    --yc-color-base-misc: var(--yc-color-private-cool-grey-250);\n    --yc-color-base-misc-hover: var(--yc-color-private-cool-grey-350);\n    --yc-color-base-neutral: var(--yc-color-private-black-150);\n    --yc-color-base-neutral-hover: var(--yc-color-private-black-300);\n\n    --yc-color-base-positive-medium: var(--yc-color-private-green-350);\n    --yc-color-base-positive-medium-hover: var(--yc-color-private-green-400);\n    --yc-color-base-info-heavy: var(--yc-color-private-blue-450);\n    --yc-color-base-positive-heavy: var(--yc-color-private-green-450);\n    --yc-color-base-warning-heavy: var(--yc-color-private-yellow-450);\n    --yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-700);\n    --yc-color-base-danger-heavy: var(--yc-color-private-red-450);\n    --yc-color-base-danger-heavy-hover: var(--yc-color-private-red-450);\n    --yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450);\n    --yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);\n\n    --yc-color-base-light: var(--yc-color-private-white-1000);\n    --yc-color-base-light-hover: var(--yc-color-private-white-850);\n    --yc-color-base-light-simple-hover: var(--yc-color-private-white-300);\n    --yc-color-base-light-disabled: var(--yc-color-private-white-150);\n    --yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);\n\n    --yc-color-base-float: var(--yc-color-private-white-1000);\n    --yc-color-base-float-hover: var(--yc-color-private-black-150-solid);\n    --yc-color-base-float-heavy: var(--yc-color-private-black-700-solid);\n    --yc-color-base-float-accent: var(--yc-color-private-white-1000);\n    --yc-color-base-float-accent-hover: var(--yc-color-private-white-850);\n    --yc-color-base-float-announcement: var(--yc-color-private-cool-grey-150-solid);\n\n    --yc-color-base-modal: var(--yc-color-private-white-1000);\n}\n","@mixin yc-colors-line-light-hc {\n    --yc-color-line-generic: var(--yc-color-private-black-200);\n    --yc-color-line-generic-hover: var(--yc-color-private-black-400);\n    --yc-color-line-generic-active: var(--yc-color-private-black-700);\n    --yc-color-line-generic-accent: var(--yc-color-private-black-300);\n    --yc-color-line-generic-accent-hover: var(--yc-color-private-black-700);\n    --yc-color-line-solid: var(--yc-color-private-black-200-solid);\n\n    --yc-color-line-selection-hover: var(--yc-my-color-brand-light);\n    --yc-color-line-selection-active: var(--yc-my-color-brand-normal);\n    --yc-color-line-link: var(--yc-my-color-brand-normal);\n    --yc-color-line-info: var(--yc-color-private-blue-450);\n    --yc-color-line-positive: var(--yc-color-private-green-450);\n    --yc-color-line-warning: var(--yc-color-private-yellow-600-solid);\n    --yc-color-line-danger: var(--yc-color-private-red-450);\n    --yc-color-line-misc: var(--yc-color-private-cool-grey-450);\n    --yc-color-line-hint: var(--yc-color-private-blue-550);\n    --yc-color-line-light: var(--yc-color-private-white-500);\n}\n","@mixin yc-colors-infographics-light-hc {\n    --yc-color-infographics-info-light: var(--yc-color-private-blue-50);\n    --yc-color-infographics-positive-light: var(--yc-color-private-green-50);\n    --yc-color-infographics-warning-light: var(--yc-color-private-orange-50);\n    --yc-color-infographics-danger-light: var(--yc-color-private-red-50);\n    --yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-50);\n    --yc-color-infographics-neutral-light: var(--yc-color-private-black-50);\n\n    --yc-color-infographics-info-medium: var(--yc-color-private-blue-300);\n    --yc-color-infographics-positive-medium: var(--yc-color-private-green-300);\n    --yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);\n    --yc-color-infographics-danger-medium: var(--yc-color-private-red-300);\n    --yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);\n    --yc-color-infographics-neutral-medium: var(--yc-color-private-black-150);\n\n    --yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);\n    --yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);\n    --yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);\n    --yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);\n    --yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);\n    --yc-color-infographics-neutral-heavy: var(--yc-color-private-black-300);\n\n    --yc-color-infographics-axis: var(--yc-color-private-black-150-solid);\n\n    --yc-color-infographics-tooltip-bg: var(--yc-color-private-white-950);\n}\n","@mixin yc-colors-sfx-light-hc {\n    --yc-color-sfx-veil: var(--yc-color-private-black-450);\n    --yc-color-sfx-shadow: var(--yc-color-private-black-300);\n    --yc-color-sfx-shadow-heavy: var(--yc-color-private-black-600);\n    --yc-color-sfx-shadow-light: var(--yc-color-private-black-100);\n    --yc-color-sfx-fade: var(--yc-color-private-white-300);\n}\n","@mixin yc-colors-promo-light-hc {\n    --yc-color-promo-base-silver: #edf2f7;\n    --yc-color-promo-base-gold: #ffdb4d;\n    --yc-color-promo-base-asphalt: #313538;\n    --yc-color-promo-base-tomato: #ff5958;\n    --yc-color-promo-base-copper: #ffab3b;\n    --yc-color-promo-base-mint: #5ecf71;\n    --yc-color-promo-base-sky: #49a0f6;\n    --yc-color-promo-base-neon: #9f6fee;\n\n    --yc-color-promo-highlight-silver: #edf2f7;\n    --yc-color-promo-highlight-gold: #fff1b8;\n    --yc-color-promo-highlight-asphalt: #eaebeb;\n    --yc-color-promo-highlight-tomato: #ffdede;\n    --yc-color-promo-highlight-copper: #ffe6c4;\n    --yc-color-promo-highlight-mint: #ccf0d2;\n    --yc-color-promo-highlight-sky: #d6e9fd;\n    --yc-color-promo-highlight-neon: #ece2fc;\n\n    --yc-color-promo-accent-silver: #969a9e;\n    --yc-color-promo-accent-gold: #ffdb4d;\n    --yc-color-promo-accent-asphalt: #313538;\n    --yc-color-promo-accent-tomato: #ff5958;\n    --yc-color-promo-accent-copper: #ffab3b;\n    --yc-color-promo-accent-mint: #5ecf71;\n    --yc-color-promo-accent-sky: #49a0f6;\n    --yc-color-promo-accent-neon: #9f6fee;\n\n    --yc-color-promo-accent-hover-silver: #727578;\n    --yc-color-promo-accent-hover-gold: #edbe28;\n    --yc-color-promo-accent-hover-asphalt: #000;\n    --yc-color-promo-accent-hover-tomato: #ee4f4e;\n    --yc-color-promo-accent-hover-copper: #f28d04;\n    --yc-color-promo-accent-hover-mint: #3bbc51;\n    --yc-color-promo-accent-hover-sky: #2180de;\n    --yc-color-promo-accent-hover-neon: #7b47cf;\n\n    --yc-color-promo-text-silver: #969a9e;\n    --yc-color-promo-text-gold: #ebb409;\n    --yc-color-promo-text-asphalt: #313538;\n    --yc-color-promo-text-tomato: #ff5958;\n    --yc-color-promo-text-copper: #ffab3b;\n    --yc-color-promo-text-mint: #5ecf71;\n    --yc-color-promo-text-sky: #49a0f6;\n    --yc-color-promo-text-neon: #9f6fee;\n}\n","@mixin yc-colors-private-dark-hc {\n    // Low level - https://figma.com/file/albZah2AMImAQDBhFMohdz\n\n    --yc-color-private-white-50: rgba(255, 255, 255, 0.05);\n    --yc-color-private-white-70: rgba(255, 255, 255, 0.07);\n    --yc-color-private-white-100: rgba(255, 255, 255, 0.1);\n    --yc-color-private-white-150: rgba(255, 255, 255, 0.15);\n    --yc-color-private-white-200: rgba(255, 255, 255, 0.2);\n    --yc-color-private-white-250: rgba(255, 255, 255, 0.25);\n    --yc-color-private-white-300: rgba(255, 255, 255, 0.3);\n    --yc-color-private-white-350: rgba(255, 255, 255, 0.35);\n    --yc-color-private-white-400: rgba(255, 255, 255, 0.4);\n    --yc-color-private-white-450: rgba(255, 255, 255, 0.45);\n    --yc-color-private-white-500: rgba(255, 255, 255, 0.5);\n    --yc-color-private-white-550: rgba(255, 255, 255, 0.55);\n    --yc-color-private-white-600: rgba(255, 255, 255, 0.6);\n    --yc-color-private-white-650: rgba(255, 255, 255, 0.65);\n    --yc-color-private-white-700: rgba(255, 255, 255, 0.7);\n    --yc-color-private-white-750: rgba(255, 255, 255, 0.75);\n    --yc-color-private-white-800: rgba(255, 255, 255, 0.8);\n    --yc-color-private-white-850: rgba(255, 255, 255, 0.85);\n    --yc-color-private-white-900: rgba(255, 255, 255, 0.9);\n    --yc-color-private-white-950: rgba(255, 255, 255, 0.95);\n    --yc-color-private-white-1000: rgba(255, 255, 255, 1);\n\n    /*————————— To review opaque —————————*/\n    --yc-color-private-white-opaque-150: rgba(56, 57, 60, 0.97);\n\n    --yc-color-private-black-20: rgba(0, 0, 0, 0.02);\n    --yc-color-private-black-50: rgba(0, 0, 0, 0.05);\n    --yc-color-private-black-100: rgba(0, 0, 0, 0.1);\n    --yc-color-private-black-150: rgba(0, 0, 0, 0.15);\n    --yc-color-private-black-200: rgba(0, 0, 0, 0.2);\n    --yc-color-private-black-250: rgba(0, 0, 0, 0.25);\n    --yc-color-private-black-300: rgba(0, 0, 0, 0.3);\n    --yc-color-private-black-350: rgba(0, 0, 0, 0.35);\n    --yc-color-private-black-400: rgba(0, 0, 0, 0.4);\n    --yc-color-private-black-450: rgba(0, 0, 0, 0.45);\n    --yc-color-private-black-500: rgba(0, 0, 0, 0.5);\n    --yc-color-private-black-550: rgba(0, 0, 0, 0.55);\n    --yc-color-private-black-600: rgba(0, 0, 0, 0.6);\n    --yc-color-private-black-650: rgba(0, 0, 0, 0.65);\n    --yc-color-private-black-700: rgba(0, 0, 0, 0.7);\n    --yc-color-private-black-750: rgba(0, 0, 0, 0.75);\n    --yc-color-private-black-800: rgba(0, 0, 0, 0.8);\n    --yc-color-private-black-850: rgba(0, 0, 0, 0.85);\n    --yc-color-private-black-900: rgba(0, 0, 0, 0.9);\n    --yc-color-private-black-950: rgba(0, 0, 0, 0.95);\n    --yc-color-private-black-1000: rgba(0, 0, 0, 1);\n\n    --yc-color-private-black-rock-850: #2d2c33;\n    --yc-color-private-black-rock-950: rgba(34, 35, 38, 1);\n\n    /*————————— To review 20-solid  —> should be deleted  —————————*/\n    --yc-color-private-white-20-solid: rgba(38, 39, 42, 1);\n\n    --yc-color-private-white-50-solid: rgba(45, 46, 49, 1);\n    --yc-color-private-white-100-solid: rgba(56, 57, 60, 1);\n    --yc-color-private-white-150-solid: rgba(67, 68, 71, 1);\n    --yc-color-private-white-200-solid: rgba(78, 79, 81, 1);\n    --yc-color-private-white-250-solid: rgba(89, 90, 92, 1);\n    --yc-color-private-white-300-solid: rgba(100, 101, 103, 1);\n    --yc-color-private-white-350-solid: rgba(111, 112, 114, 1);\n    --yc-color-private-white-400-solid: rgba(122, 123, 125, 1);\n    --yc-color-private-white-450-solid: rgba(133, 134, 136, 1);\n    --yc-color-private-white-500-solid: rgba(144, 145, 147, 1);\n    --yc-color-private-white-550-solid: rgba(156, 156, 157, 1);\n    --yc-color-private-white-600-solid: rgba(167, 167, 168, 1);\n    --yc-color-private-white-650-solid: rgba(178, 178, 179, 1);\n    --yc-color-private-white-700-solid: rgba(189, 189, 190, 1);\n    --yc-color-private-white-750-solid: rgba(200, 200, 201, 1);\n    --yc-color-private-white-800-solid: rgba(211, 211, 212, 1);\n    --yc-color-private-white-850-solid: rgba(222, 222, 223, 1);\n    --yc-color-private-white-900-solid: rgba(233, 233, 233, 1);\n    --yc-color-private-white-950-solid: rgba(244, 244, 244, 1);\n    --yc-color-private-white-1000-solid: rgba(255, 255, 255, 1);\n\n    --yc-color-private-blue-50: rgba(98, 146, 255, 0.05);\n    --yc-color-private-blue-100: rgba(98, 146, 255, 0.1);\n    --yc-color-private-blue-150: rgba(98, 146, 255, 0.2);\n    --yc-color-private-blue-200: rgba(98, 146, 255, 0.3);\n    --yc-color-private-blue-250: rgba(98, 146, 255, 0.5);\n    --yc-color-private-blue-300: rgba(98, 146, 255, 0.5);\n    --yc-color-private-blue-350: rgba(98, 146, 255, 0.6);\n    --yc-color-private-blue-400: rgba(98, 146, 255, 0.7);\n    --yc-color-private-blue-450: rgba(98, 146, 255, 0.8);\n    --yc-color-private-blue-500: rgba(98, 146, 255, 0.9);\n    --yc-color-private-blue-550: rgba(98, 146, 255, 1);\n    --yc-color-private-blue-700: rgba(145, 179, 255, 1);\n    --yc-color-private-blue-850: rgba(192, 211, 255, 1);\n\n    --yc-color-private-blue-50-solid: rgba(37, 41, 49, 1);\n    --yc-color-private-blue-100-solid: rgba(40, 46, 60, 1);\n    --yc-color-private-blue-150-solid: rgba(47, 57, 81, 1);\n    --yc-color-private-blue-200-solid: rgba(53, 68, 103, 1);\n    --yc-color-private-blue-250-solid: rgba(60, 79, 125, 1);\n    --yc-color-private-blue-300-solid: rgba(66, 91, 147, 1);\n    --yc-color-private-blue-350-solid: rgba(72, 102, 168, 1);\n    --yc-color-private-blue-400-solid: rgba(79, 113, 190, 1);\n    --yc-color-private-blue-450-solid: rgba(85, 124, 212, 1);\n    --yc-color-private-blue-500-solid: rgba(92, 135, 233, 1);\n    --yc-color-private-blue-550-solid: rgba(98, 146, 255, 1);\n    --yc-color-private-blue-600-solid: rgba(114, 157, 255, 1);\n    --yc-color-private-blue-650-solid: rgba(129, 168, 255, 1);\n    --yc-color-private-blue-700-solid: rgba(145, 179, 255, 1);\n    --yc-color-private-blue-750-solid: rgba(161, 190, 255, 1);\n    --yc-color-private-blue-800-solid: rgba(177, 200, 255, 1);\n    --yc-color-private-blue-850-solid: rgba(192, 211, 255, 1);\n    --yc-color-private-blue-900-solid: rgba(208, 222, 255, 1);\n    --yc-color-private-blue-950-solid: rgba(223, 233, 255, 1);\n    --yc-color-private-blue-1000-solid: rgba(239, 244, 255, 1);\n\n    --yc-color-private-green-50: rgba(91, 181, 87, 0.05);\n    --yc-color-private-green-100: rgba(91, 181, 87, 0.1);\n    --yc-color-private-green-150: rgba(91, 181, 87, 0.2);\n    --yc-color-private-green-200: rgba(91, 181, 87, 0.3);\n    --yc-color-private-green-250: rgba(91, 181, 87, 0.4);\n    --yc-color-private-green-300: rgba(91, 181, 87, 0.5);\n    --yc-color-private-green-350: rgba(91, 181, 87, 0.6);\n    --yc-color-private-green-400: rgba(91, 181, 87, 0.7);\n    --yc-color-private-green-450: rgba(91, 181, 87, 0.8);\n    --yc-color-private-green-500: rgba(91, 181, 87, 0.9);\n    --yc-color-private-green-550: rgba(91, 181, 87, 1);\n\n    --yc-color-private-green-50-solid: rgba(37, 42, 40, 1);\n    --yc-color-private-green-100-solid: rgba(40, 50, 43, 1);\n    --yc-color-private-green-150-solid: rgba(45, 64, 48, 1);\n    --yc-color-private-green-200-solid: rgba(51, 79, 53, 1);\n    --yc-color-private-green-250-solid: rgba(57, 93, 58, 1);\n    --yc-color-private-green-300-solid: rgba(63, 108, 63, 1);\n    --yc-color-private-green-350-solid: rgba(68, 123, 67, 1);\n    --yc-color-private-green-400-solid: rgba(74, 137, 72, 1);\n    --yc-color-private-green-450-solid: rgba(80, 152, 77, 1);\n    --yc-color-private-green-500-solid: rgba(85, 166, 82, 1);\n    --yc-color-private-green-550-solid: rgba(91, 181, 87, 1);\n    --yc-color-private-green-600-solid: rgba(107, 188, 104, 1);\n    --yc-color-private-green-650-solid: rgba(124, 196, 121, 1);\n    --yc-color-private-green-700-solid: rgba(140, 203, 137, 1);\n    --yc-color-private-green-750-solid: rgba(157, 211, 154, 1);\n    --yc-color-private-green-800-solid: rgba(173, 218, 171, 1);\n    --yc-color-private-green-850-solid: rgba(189, 225, 188, 1);\n    --yc-color-private-green-900-solid: rgba(206, 233, 205, 1);\n    --yc-color-private-green-950-solid: rgba(222, 240, 221, 1);\n    --yc-color-private-green-1000-solid: rgba(239, 248, 238, 1);\n\n    /*—————————  should be deleted and changed with -solid  —————————*/\n    --yc-color-private-yellow-700: #e0bd34;\n\n    --yc-color-private-yellow-50: rgba(255, 203, 0, 0.05);\n    --yc-color-private-yellow-100: rgba(255, 203, 0, 0.1);\n    --yc-color-private-yellow-150: rgba(255, 203, 0, 0.2);\n    --yc-color-private-yellow-200: rgba(255, 203, 0, 0.3);\n    --yc-color-private-yellow-250: rgba(255, 203, 0, 0.4);\n    --yc-color-private-yellow-300: rgba(255, 203, 0, 0.5);\n    --yc-color-private-yellow-350: rgba(255, 203, 0, 0.6);\n    --yc-color-private-yellow-400: rgba(255, 203, 0, 0.7);\n    --yc-color-private-yellow-450: rgba(255, 203, 0, 0.8);\n    --yc-color-private-yellow-500: rgba(255, 203, 0, 0.9);\n    --yc-color-private-yellow-550: rgba(255, 203, 0, 1);\n\n    --yc-color-private-yellow-50-solid: rgba(45, 43, 36, 1);\n    --yc-color-private-yellow-100-solid: rgba(56, 52, 34, 1);\n    --yc-color-private-yellow-150-solid: rgba(78, 69, 30, 1);\n    --yc-color-private-yellow-200-solid: rgba(100, 85, 27, 1);\n    --yc-color-private-yellow-250-solid: rgba(122, 102, 23, 1);\n    --yc-color-private-yellow-300-solid: rgba(144, 119, 19, 1);\n    --yc-color-private-yellow-350-solid: rgba(167, 136, 15, 1);\n    --yc-color-private-yellow-400-solid: rgba(189, 153, 11, 1);\n    --yc-color-private-yellow-450-solid: rgba(211, 169, 8, 1);\n    --yc-color-private-yellow-500-solid: rgba(233, 186, 4, 1);\n    --yc-color-private-yellow-550-solid: rgba(255, 203, 0, 1);\n    --yc-color-private-yellow-600-solid: rgba(255, 208, 26, 1);\n    --yc-color-private-yellow-650-solid: rgba(255, 213, 51, 1);\n    --yc-color-private-yellow-700-solid: rgba(255, 219, 76, 1);\n    --yc-color-private-yellow-750-solid: rgba(255, 224, 102, 1);\n    --yc-color-private-yellow-800-solid: rgba(255, 229, 128, 1);\n    --yc-color-private-yellow-850-solid: rgba(255, 234, 153, 1);\n    --yc-color-private-yellow-900-solid: rgba(255, 239, 179, 1);\n    --yc-color-private-yellow-950-solid: rgba(255, 245, 204, 1);\n    --yc-color-private-yellow-1000-solid: rgba(255, 250, 229, 1);\n\n    --yc-color-private-red-50: rgba(232, 73, 69, 0.05);\n    --yc-color-private-red-100: rgba(232, 73, 69, 0.1);\n    --yc-color-private-red-150: rgba(232, 73, 69, 0.2);\n    --yc-color-private-red-200: rgba(232, 73, 69, 0.3);\n    --yc-color-private-red-250: rgba(232, 73, 69, 0.4);\n    --yc-color-private-red-300: rgba(232, 73, 69, 0.5);\n    --yc-color-private-red-350: rgba(232, 73, 69, 0.6);\n    --yc-color-private-red-400: rgba(232, 73, 69, 0.7);\n    --yc-color-private-red-450: rgba(232, 73, 69, 0.8);\n    --yc-color-private-red-500: rgba(232, 73, 69, 0.9);\n    --yc-color-private-red-550: rgba(232, 73, 69, 1);\n\n    --yc-color-private-red-50-solid: rgba(44, 37, 40, 1);\n    --yc-color-private-red-100-solid: rgba(54, 39, 41, 1);\n    --yc-color-private-red-150-solid: rgba(74, 43, 44, 1);\n    --yc-color-private-red-200-solid: rgba(93, 46, 47, 1);\n    --yc-color-private-red-250-solid: rgba(113, 50, 51, 1);\n    --yc-color-private-red-300-solid: rgba(133, 54, 54, 1);\n    --yc-color-private-red-350-solid: rgba(153, 58, 57, 1);\n    --yc-color-private-red-400-solid: rgba(172, 61, 60, 1);\n    --yc-color-private-red-450-solid: rgba(192, 65, 63, 1);\n    --yc-color-private-red-500-solid: rgba(212, 69, 66, 1);\n    --yc-color-private-red-550-solid: rgba(232, 73, 69, 1);\n    --yc-color-private-red-600-solid: rgba(234, 91, 88, 1);\n    --yc-color-private-red-650-solid: rgba(236, 109, 107, 1);\n    --yc-color-private-red-700-solid: rgba(239, 127, 125, 1);\n    --yc-color-private-red-750-solid: rgba(241, 146, 144, 1);\n    --yc-color-private-red-800-solid: rgba(243, 164, 162, 1);\n    --yc-color-private-red-850-solid: rgba(246, 182, 181, 1);\n    --yc-color-private-red-900-solid: rgba(248, 200, 199, 1);\n    --yc-color-private-red-950-solid: rgba(250, 219, 218, 1);\n    --yc-color-private-red-1000-solid: rgba(253, 237, 236, 1);\n\n    --yc-color-private-purple-50: rgba(223, 46, 243, 0.05);\n    --yc-color-private-purple-100: rgba(223, 46, 243, 0.1);\n    --yc-color-private-purple-150: rgba(223, 46, 243, 0.2);\n    --yc-color-private-purple-200: rgba(223, 46, 243, 0.3);\n    --yc-color-private-purple-250: rgba(223, 46, 243, 0.4);\n    --yc-color-private-purple-300: rgba(223, 46, 243, 0.5);\n    --yc-color-private-purple-350: rgba(223, 46, 243, 0.6);\n    --yc-color-private-purple-400: rgba(223, 46, 243, 0.7);\n    --yc-color-private-purple-450: rgba(223, 46, 243, 0.8);\n    --yc-color-private-purple-500: rgba(223, 46, 243, 0.9);\n    --yc-color-private-purple-550: rgba(223, 46, 243, 1);\n\n    --yc-color-private-purple-50-solid: rgba(43, 36, 48, 1);\n    --yc-color-private-purple-100-solid: rgba(53, 36, 59, 1);\n    --yc-color-private-purple-150-solid: rgba(72, 37, 79, 1);\n    --yc-color-private-purple-200-solid: rgba(91, 38, 100, 1);\n    --yc-color-private-purple-250-solid: rgba(110, 39, 120, 1);\n    --yc-color-private-purple-300-solid: rgba(128, 40, 141, 1);\n    --yc-color-private-purple-350-solid: rgba(147, 41, 161, 1);\n    --yc-color-private-purple-400-solid: rgba(166, 42, 182, 1);\n    --yc-color-private-purple-450-solid: rgba(185, 43, 202, 1);\n    --yc-color-private-purple-500-solid: rgba(204, 45, 223, 1);\n    --yc-color-private-purple-550-solid: rgba(223, 46, 243, 1);\n    --yc-color-private-purple-600-solid: rgba(226, 67, 245, 1);\n    --yc-color-private-purple-650-solid: rgba(229, 88, 246, 1);\n    --yc-color-private-purple-700-solid: rgba(232, 108, 247, 1);\n    --yc-color-private-purple-750-solid: rgba(236, 129, 248, 1);\n    --yc-color-private-purple-800-solid: rgba(239, 150, 249, 1);\n    --yc-color-private-purple-850-solid: rgba(242, 171, 250, 1);\n    --yc-color-private-purple-900-solid: rgba(245, 192, 252, 1);\n    --yc-color-private-purple-950-solid: rgba(249, 213, 253, 1);\n    --yc-color-private-purple-1000-solid: rgba(252, 234, 254, 1);\n\n    --yc-color-private-cool-grey-50: rgba(96, 128, 156, 0.05);\n    --yc-color-private-cool-grey-100: rgba(96, 128, 156, 0.1);\n    --yc-color-private-cool-grey-150: rgba(96, 128, 156, 0.2);\n    --yc-color-private-cool-grey-200: rgba(96, 128, 156, 0.3);\n    --yc-color-private-cool-grey-250: rgba(96, 128, 156, 0.4);\n    --yc-color-private-cool-grey-300: rgba(96, 128, 156, 0.5);\n    --yc-color-private-cool-grey-350: rgba(96, 128, 156, 0.6);\n    --yc-color-private-cool-grey-400: rgba(96, 128, 156, 0.7);\n    --yc-color-private-cool-grey-450: rgba(96, 128, 156, 0.8);\n    --yc-color-private-cool-grey-500: rgba(96, 128, 156, 0.9);\n    --yc-color-private-cool-grey-550: rgba(96, 128, 156, 1);\n\n    --yc-color-private-cool-grey-50-solid: rgba(37, 40, 44, 1);\n    --yc-color-private-cool-grey-100-solid: rgba(40, 44, 50, 1);\n    --yc-color-private-cool-grey-150-solid: rgba(46, 54, 62, 1);\n    --yc-color-private-cool-grey-200-solid: rgba(53, 63, 73, 1);\n    --yc-color-private-cool-grey-250-solid: rgba(59, 72, 85, 1);\n    --yc-color-private-cool-grey-300-solid: rgba(65, 81, 97, 1);\n    --yc-color-private-cool-grey-350-solid: rgba(71, 91, 109, 1);\n    --yc-color-private-cool-grey-400-solid: rgba(77, 100, 121, 1);\n    --yc-color-private-cool-grey-450-solid: rgba(84, 109, 132, 1);\n    --yc-color-private-cool-grey-500-solid: rgba(90, 119, 144, 1);\n    --yc-color-private-cool-grey-550-solid: rgba(96, 128, 156, 1);\n    --yc-color-private-cool-grey-600-solid: rgba(112, 141, 166, 1);\n    --yc-color-private-cool-grey-650-solid: rgba(128, 153, 176, 1);\n    --yc-color-private-cool-grey-700-solid: rgba(144, 166, 186, 1);\n    --yc-color-private-cool-grey-750-solid: rgba(160, 179, 195, 1);\n    --yc-color-private-cool-grey-800-solid: rgba(176, 191, 205, 1);\n    --yc-color-private-cool-grey-850-solid: rgba(191, 204, 215, 1);\n    --yc-color-private-cool-grey-900-solid: rgba(207, 217, 225, 1);\n    --yc-color-private-cool-grey-950-solid: rgba(223, 230, 235, 1);\n    --yc-color-private-cool-grey-1000-solid: rgba(239, 242, 245, 1);\n\n    --yc-color-private-orange-50: rgba(200, 99, 12, 0.05);\n    --yc-color-private-orange-100: rgba(200, 99, 12, 0.1);\n    --yc-color-private-orange-150: rgba(200, 99, 12, 0.2);\n    --yc-color-private-orange-200: rgba(200, 99, 12, 0.3);\n    --yc-color-private-orange-250: rgba(200, 99, 12, 0.4);\n    --yc-color-private-orange-300: rgba(200, 99, 12, 0.5);\n    --yc-color-private-orange-350: rgba(200, 99, 12, 0.6);\n    --yc-color-private-orange-400: rgba(200, 99, 12, 0.7);\n    --yc-color-private-orange-450: rgba(200, 99, 12, 0.8);\n    --yc-color-private-orange-500: rgba(200, 99, 12, 0.9);\n    --yc-color-private-orange-550: rgba(200, 99, 12, 1);\n\n    --yc-color-private-orange-50-solid: rgba(42, 38, 37, 1);\n    --yc-color-private-orange-100-solid: rgba(51, 41, 35, 1);\n    --yc-color-private-orange-150-solid: rgba(67, 48, 33, 1);\n    --yc-color-private-orange-200-solid: rgba(84, 54, 30, 1);\n    --yc-color-private-orange-250-solid: rgba(100, 61, 28, 1);\n    --yc-color-private-orange-300-solid: rgba(117, 67, 25, 1);\n    --yc-color-private-orange-350-solid: rgba(134, 73, 22, 1);\n    --yc-color-private-orange-400-solid: rgba(150, 80, 20, 1);\n    --yc-color-private-orange-450-solid: rgba(167, 86, 17, 1);\n    --yc-color-private-orange-500-solid: rgba(183, 93, 15, 1);\n    --yc-color-private-orange-550-solid: rgba(200, 99, 12, 1);\n    --yc-color-private-orange-600-solid: rgba(206, 115, 36, 1);\n    --yc-color-private-orange-650-solid: rgba(211, 130, 61, 1);\n    --yc-color-private-orange-700-solid: rgba(216, 146, 85, 1);\n    --yc-color-private-orange-750-solid: rgba(222, 161, 109, 1);\n    --yc-color-private-orange-800-solid: rgba(227, 177, 133, 1);\n    --yc-color-private-orange-850-solid: rgba(233, 193, 158, 1);\n    --yc-color-private-orange-900-solid: rgba(239, 208, 182, 1);\n    --yc-color-private-orange-950-solid: rgba(244, 224, 206, 1);\n    --yc-color-private-orange-1000-solid: rgba(250, 239, 231, 1);\n}\n","@mixin yc-colors-text-dark-hc {\n    --yc-color-text-primary: var(--yc-color-private-white-1000);\n    --yc-color-text-complementary: var(--yc-color-private-white-800);\n    --yc-color-text-secondary: var(--yc-color-private-white-600);\n    --yc-color-text-hint: var(--yc-color-private-white-400);\n\n    --yc-color-text-info: var(--yc-color-private-blue-600-solid);\n    --yc-color-text-positive: var(--yc-color-private-green-600-solid);\n    --yc-color-text-warning: var(--yc-color-private-yellow-600-solid);\n    --yc-color-text-danger: var(--yc-color-private-red-600-solid);\n    --yc-color-text-utility: var(--yc-color-private-purple-600-solid);\n    --yc-color-text-misc: var(--yc-color-private-cool-grey-600-solid);\n\n    --yc-color-text-info-heavy: var(--yc-color-private-blue-850-solid);\n    --yc-color-text-positive-heavy: var(--yc-color-private-green-850-solid);\n    --yc-color-text-warning-heavy: var(--yc-color-private-yellow-850-solid);\n    --yc-color-text-danger-heavy: var(--yc-color-private-red-850-solid);\n    --yc-color-text-utility-heavy: var(--yc-color-private-purple-850-solid);\n    --yc-color-text-misc-heavy: var(--yc-color-private-cool-grey-850-solid);\n\n    --yc-color-text-special: var(--yc-my-color-brand-normal);\n    --yc-color-text-link: var(--yc-my-color-brand-link);\n    --yc-color-text-link-hover: var(--yc-my-color-brand-link-hover);\n    --yc-color-text-link-visited: var(--yc-my-color-brand-link-visited);\n    --yc-color-text-link-visited-hover: var(--yc-my-color-brand-link-visited-hover);\n\n    --yc-color-text-yandex-red: var(--yc-color-private-red-550);\n\n    --yc-color-text-dark-primary: var(--yc-color-private-black-1000);\n    --yc-color-text-dark-complementary: var(--yc-color-private-black-800);\n    --yc-color-text-dark-secondary: var(--yc-color-private-black-600);\n\n    --yc-color-text-light-primary: var(--yc-color-private-white-1000);\n    --yc-color-text-light-complementary: var(--yc-color-private-white-800);\n    --yc-color-text-light-secondary: var(--yc-color-private-white-600);\n    --yc-color-text-light-hint: var(--yc-color-private-white-400);\n\n    --yc-color-text-inverted-primary: var(--yc-color-private-black-1000);\n    --yc-color-text-inverted-complementary: var(--yc-color-private-black-800);\n    --yc-color-text-inverted-secondary: var(--yc-color-private-black-600);\n    --yc-color-text-inverted-hint: var(--yc-color-private-black-400);\n}\n","@mixin yc-colors-base-dark-hc {\n    --yc-color-base-background: var(--yc-color-private-black-rock-950);\n\n    --yc-color-base-generic: var(--yc-color-private-white-100);\n    --yc-color-base-generic-hover: var(--yc-color-private-white-250);\n    --yc-color-base-generic-medium: var(--yc-color-private-white-250);\n    --yc-color-base-generic-medium-hover: var(--yc-color-private-white-400);\n    --yc-color-base-generic-accent: var(--yc-color-private-white-200);\n    --yc-color-base-generic-accent-disabled: var(--yc-color-private-white-150);\n\n    --yc-color-base-generic-ultralight: var(--yc-color-private-white-50);\n\n    --yc-color-base-simple-hover: var(--yc-color-private-white-250);\n    --yc-color-base-simple-hover-solid: var(--yc-color-private-white-250-solid);\n\n    --yc-color-base-selection: var(--yc-my-color-brand-selection);\n    --yc-color-base-selection-hover: var(--yc-my-color-brand-selection-hover);\n    --yc-color-base-special: var(--yc-my-color-brand-normal);\n    --yc-color-base-special-hover: var(--yc-my-color-brand-normal-hover);\n    --yc-color-base-action: var(--yc-color-base-special);\n    --yc-color-base-action-hover: var(--yc-color-base-special-hover);\n\n    --yc-color-base-info: var(--yc-color-private-blue-250);\n    --yc-color-base-info-hover: var(--yc-color-private-blue-400);\n    --yc-color-base-positive: var(--yc-color-private-green-250);\n    --yc-color-base-positive-hover: var(--yc-color-private-green-400);\n    --yc-color-base-warning: var(--yc-color-private-yellow-250);\n    --yc-color-base-warning-hover: var(--yc-color-private-yellow-400);\n    --yc-color-base-danger: var(--yc-color-private-red-250);\n    --yc-color-base-danger-hover: var(--yc-color-private-red-400);\n    --yc-color-base-misc: var(--yc-color-private-cool-grey-250);\n    --yc-color-base-misc-hover: var(--yc-color-private-cool-grey-400);\n    --yc-color-base-neutral: var(--yc-color-private-white-100);\n    --yc-color-base-neutral-hover: var(--yc-color-private-white-250);\n\n    --yc-color-base-positive-medium: var(--yc-color-private-green-350);\n    --yc-color-base-positive-medium-hover: var(--yc-color-private-green-400);\n\n    --yc-color-base-info-heavy: var(--yc-color-private-blue-450);\n    --yc-color-base-positive-heavy: var(--yc-color-private-green-450);\n    --yc-color-base-warning-heavy: var(--yc-color-private-yellow-450);\n    --yc-color-base-warning-heavy-hover: var(--yc-color-private-yellow-700);\n    --yc-color-base-danger-heavy: var(--yc-color-private-red-450);\n    --yc-color-base-danger-heavy-hover: var(--yc-color-private-red-450);\n    --yc-color-base-misc-heavy: var(--yc-color-private-cool-grey-450);\n    --yc-color-base-misc-heavy-hover: var(--yc-color-private-cool-grey-550);\n\n    --yc-color-base-light: var(--yc-color-private-white-850);\n    --yc-color-base-light-hover: var(--yc-color-private-white-700);\n    --yc-color-base-light-simple-hover: var(--yc-color-private-white-150);\n    --yc-color-base-light-disabled: var(--yc-color-private-white-150);\n    --yc-color-base-light-accent-disabled: var(--yc-color-private-white-300);\n\n    --yc-color-base-float: var(--yc-color-private-white-100-solid);\n\n    --yc-color-base-float-hover: var(--yc-color-private-white-200-solid);\n    --yc-color-base-float-heavy: var(--yc-color-private-white-200-solid);\n    --yc-color-base-float-accent: var(--yc-color-private-white-300-solid);\n    --yc-color-base-float-accent-hover: var(--yc-color-private-white-400-solid);\n\n    --yc-color-base-float-announcement: var(--yc-color-private-white-200-solid);\n\n    --yc-color-base-modal: var(--yc-color-private-black-rock-850);\n}\n","@mixin yc-colors-line-dark-hc {\n    --yc-color-line-generic: var(--yc-color-private-white-150);\n    --yc-color-line-generic-hover: var(--yc-color-private-white-250);\n    --yc-color-line-generic-active: var(--yc-color-private-white-600);\n    --yc-color-line-generic-accent: var(--yc-color-private-white-350);\n    --yc-color-line-generic-accent-hover: var(--yc-color-private-white-800);\n\n    --yc-color-line-solid: var(--yc-color-private-white-150-solid);\n    --yc-color-line-selection-hover: var(--yc-my-color-brand-light);\n    --yc-color-line-selection-active: var(--yc-my-color-brand-normal);\n    --yc-color-line-link: var(--yc-my-color-brand-normal);\n    --yc-color-line-info: var(--yc-color-private-blue-550);\n    --yc-color-line-positive: var(--yc-color-private-green-550);\n    --yc-color-line-warning: var(--yc-color-private-yellow-100);\n    --yc-color-line-danger: var(--yc-color-private-red-550);\n    --yc-color-line-misc: var(--yc-color-private-cool-grey-550);\n    --yc-color-line-hint: var(--yc-color-private-blue-550);\n    --yc-color-line-light: var(--yc-color-private-white-500);\n}\n","@mixin yc-colors-infographics-dark-hc {\n    --yc-color-infographics-info-light: var(--yc-color-private-blue-150);\n    --yc-color-infographics-positive-light: var(--yc-color-private-green-150);\n    --yc-color-infographics-warning-light: var(--yc-color-private-orange-150);\n    --yc-color-infographics-danger-light: var(--yc-color-private-red-150);\n    --yc-color-infographics-misc-light: var(--yc-color-private-cool-grey-150);\n    --yc-color-infographics-neutral-light: var(--yc-color-private-white-150);\n\n    --yc-color-infographics-info-medium: var(--yc-color-private-blue-300);\n    --yc-color-infographics-positive-medium: var(--yc-color-private-green-300);\n    --yc-color-infographics-warning-medium: var(--yc-color-private-orange-300);\n    --yc-color-infographics-danger-medium: var(--yc-color-private-red-300);\n    --yc-color-infographics-misc-medium: var(--yc-color-private-cool-grey-300);\n    --yc-color-infographics-neutral-medium: var(--yc-color-private-white-150);\n\n    --yc-color-infographics-info-heavy: var(--yc-color-private-blue-550);\n    --yc-color-infographics-positive-heavy: var(--yc-color-private-green-550);\n    --yc-color-infographics-warning-heavy: var(--yc-color-private-yellow-550);\n    --yc-color-infographics-danger-heavy: var(--yc-color-private-red-550);\n    --yc-color-infographics-misc-heavy: var(--yc-color-private-cool-grey-550);\n    --yc-color-infographics-neutral-heavy: var(--yc-color-private-white-300);\n\n    --yc-color-infographics-axis: var(--yc-color-private-white-150-solid);\n\n    --yc-color-infographics-tooltip-bg: var(--yc-color-private-white-opaque-150);\n}\n","@mixin yc-colors-sfx-dark-hc {\n    --yc-color-sfx-veil: var(--yc-color-private-black-700);\n    --yc-color-sfx-shadow: var(--yc-color-private-black-200);\n    --yc-color-sfx-shadow-heavy: var(--yc-color-private-black-400);\n    --yc-color-sfx-shadow-light: var(--yc-color-private-black-100);\n    --yc-color-sfx-fade: var(--yc-color-private-white-250);\n}\n","@mixin yc-colors-promo-dark-hc {\n    --yc-color-promo-base-silver: #bcc0c4;\n    --yc-color-promo-base-gold: #ffde5d;\n    --yc-color-promo-base-asphalt: #474d52;\n    --yc-color-promo-base-tomato: #ff6b6a;\n    --yc-color-promo-base-copper: #ffb95a;\n    --yc-color-promo-base-mint: #7fd68e;\n    --yc-color-promo-base-sky: #69b4ff;\n    --yc-color-promo-base-neon: #b384ff;\n\n    --yc-color-promo-highlight-silver: #616366;\n    --yc-color-promo-highlight-gold: #99832e;\n    --yc-color-promo-highlight-asphalt: #5d656b;\n    --yc-color-promo-highlight-tomato: #998585;\n    --yc-color-promo-highlight-copper: #7f7262;\n    --yc-color-promo-highlight-mint: #758978;\n    --yc-color-promo-highlight-sky: #94a2af;\n    --yc-color-promo-highlight-neon: #aea6ba;\n}\n","@import './mixins';\n@import './variables';\n\n.dc-doc-page .yfm {\n    color: var(--yc-color-text-primary);\n\n    --yfm-color-hljs-background: var(--yc-color-base-background);\n    --yfm-color-hljs-subst: var(--yc-color-text-complementary);\n    --yfm-color-hljs-comment: var(--yc-color-text-secondary);\n    --yfm-color-hljs-deletion: var(--yc-color-line-danger);\n    --yfm-color-hljs-section: var(--yc-color-line-danger);\n\n    a {\n        color: var(--yc-color-text-link);\n\n        &:hover,\n        &:active {\n            color: var(--yc-color-text-link-hover);\n        }\n    }\n\n    img {\n        background-color: var(--yc-color-base-background);\n    }\n\n    $backgroundColors: (\n        yfm-accent-info: var(--yc-color-base-info),\n        yfm-accent-tip: var(--yc-color-base-positive),\n        yfm-accent-alert: var(--yc-color-base-danger),\n        yfm-accent-warning: var(--yc-color-base-warning),\n    );\n\n    @each $type, $color in $backgroundColors {\n        &.#{$type} {\n            background: $color;\n        }\n    }\n\n    code {\n        font-size: var(--dc-code-short-font-size);\n        line-height: var(--dc-code-short-line-height);\n        padding: var(--dc-code-short-padding);\n        background: var(--yc-color-base-misc);\n        color: var(--yc-color-text-misc);\n    }\n\n    pre > code {\n        font-size: var(--dc-code-font-size);\n        line-height: var(--dc-code-line-height);\n        padding: 16px;\n        background: var(--yc-color-base-misc);\n        color: var(--yc-color-text-complementary);\n    }\n\n    dfn {\n        background: var(--yc-color-base-float);\n        box-shadow: 0 8px 20px var(--yc-color-sfx-shadow);\n    }\n\n    dfn:before {\n        box-shadow: 0 0 0 1px var(--yc-popup-border-color);\n    }\n\n    table {\n        color: var(--yc-color-text-primary);\n        border-color: var(--yc-color-line-generic);\n        background: var(--yc-color-base-background);\n    }\n\n    table thead,\n    table tr:nth-child(2n) {\n        background: var(--yc-color-base-generic);\n    }\n\n    hr {\n        background-color: var(--yc-color-base-background);\n    }\n\n    blockquote {\n        border-left-color: var(--yc-color-base-special);\n    }\n\n    .yfm-tab-list {\n        border-bottom-color: var(--yc-color-line-generic);\n    }\n\n    .yfm-tab:hover,\n    .yfm-tab:active {\n        color: var(--yc-color-text-link-hover);\n    }\n\n    .yfm-tab.active {\n        border-bottom-color: var(--yc-color-base-special);\n    }\n\n    /* TODO: move yfm-cut styles to yfm-transform */\n    .yfm-cut {\n        margin-bottom: $blockMarginBottomMedium;\n    }\n\n    .yfm-cut.open .yfm-cut-content {\n        padding: 5px 0 0 30px;\n    }\n\n    .yfm-term_title:hover {\n        color: var(--yc-color-text-link-hover);\n    }\n\n    // Margin collapse is not applied for a block and header with a negative margin.\n    // The margin is summed up. So, we need to take 15px away from the header margin-top\n    h1,\n    h2 {\n        @include fixAnchorPosition(calc(#{$headerMarginTopLarge} - #{$blockMarginBottomMedium}));\n        margin-bottom: $blockMarginBottomLarge;\n    }\n\n    h3,\n    h4,\n    h5,\n    h6 {\n        @include fixAnchorPosition(calc(#{$headerMarginTopMedium} - #{$blockMarginBottomMedium}));\n    }\n\n    h1 + h2,\n    h2 + h3,\n    h3 + h4,\n    h4 + h5,\n    h5 + h6 {\n        @include fixAnchorPosition();\n    }\n\n    // Use 0px for the top offset of the header if it is the first child element,\n    // because it is located after the page title\n    h1,\n    h2,\n    h3,\n    h4,\n    h5,\n    h6 {\n        &:first-child {\n            @include fixAnchorPosition();\n        }\n    }\n\n    .yfm-page__delimeter {\n        height: 4px;\n        border-radius: 2px;\n        background: var(--yc-color-line-generic);\n        margin-top: 20px;\n        margin-bottom: 0;\n\n        & + h1,\n        & + h2,\n        & + h3,\n        & + h4,\n        & + h5,\n        & + h6 {\n            @include fixAnchorPosition(#{$headerMarginTopLarge});\n        }\n    }\n\n    .yfm-original-link {\n        &:before {\n            content: none;\n        }\n        & svg {\n            visibility: hidden;\n        }\n    }\n\n    h1,\n    h2,\n    h3,\n    h4,\n    h5,\n    h6 {\n        .yfm-original-link::before {\n            content: none;\n        }\n        .yfm-original-link svg {\n            visibility: hidden;\n        }\n        &:hover .yfm-original-link svg {\n            visibility: visible;\n        }\n    }\n\n    /* stylelint-disable declaration-no-important */\n    .yfm-anchor_hidden {\n        visibility: hidden;\n        &:before {\n            visibility: hidden !important;\n        }\n    }\n    /* stylelint-enable declaration-no-important */\n}\n\n.yc-root_theme_dark .dc-doc-page .yfm {\n    .yfm-cut-title:before {\n        background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggc3Ryb2tlPSJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykiIGZpbGw9Im5vbmUiIGQ9Ik0zIDZsNSA1IDUtNSI+PC9wYXRoPjwvc3ZnPg==');\n    }\n}\n","// Sizes\n$headerHeight: 0px;\n$normalOffset: 20px;\n$miniTocOffset: 56px;\n$blockMarginBottomLarge: 20px;\n$blockMarginBottomMedium: 15px;\n$headerMarginTopLarge: 40px;\n$headerMarginTopMedium: 32px;\n$popupPadding: 16px;\n$centerBlockMaxWidth: 736px;\n\n$screenBreakpoints: (\n    'xs': 375px,\n    'sm': 577px,\n    'md': 769px,\n    'lg': 1081px,\n    'xl': 1185px,\n);\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n","@import '~@gravity-ui/uikit/styles/styles.scss';\n@import './yfm.scss';\n\n.yc-root {\n    --dc-text-highlight: var(--yc-color-base-warning-heavy);\n    --dc-text-highlight-selected: #ffab3b;\n}\n"],sourceRoot:""}]);const d=A},5342:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'body.yc-root{font-feature-settings:"liga","kern";text-size-adjust:100%;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{margin:0}h1{font-size:var(--yc-text-display-3-font-size);line-height:var(--yc-text-display-3-line-height);font-weight:500}@media(max-width: 768px){h1{font-size:var(--yc-text-display-2-font-size);line-height:var(--yc-text-display-2-line-height)}}h2{font-size:var(--yc-text-display-1-font-size);line-height:var(--yc-text-display-1-line-height);font-weight:500}h3{font-size:var(--yc-text-header-2-font-size);line-height:var(--yc-text-header-2-line-height);font-weight:500}h4{font-size:var(--yc-text-header-1-font-size);line-height:var(--yc-text-header-1-line-height);font-weight:500}h5{font-size:var(--yc-text-body-3-font-size);line-height:var(--yc-text-body-3-line-height);font-weight:500}h6{font-size:var(--yc-text-body-3-font-size);line-height:var(--yc-text-body-3-line-height);font-weight:400}p,div.p{margin:0 0 20px}p:last-child,div.p:last-child{margin-bottom:0}sub,sup{font-size:.75em;line-height:0}a{outline:none;color:var(--yc-color-text-link);text-decoration:none;cursor:pointer}.utilityfocus a:focus{outline:2px solid #ffdb4d}a:hover,a:active{color:var(--yc-color-text-link-hover)}',"",{version:3,sources:["webpack://./node_modules/@doc-tools/components/styles/typography.scss","webpack://./node_modules/@doc-tools/components/styles/mixins.scss"],names:[],mappings:"AAGA,aACI,mCAAA,CACA,qBAAA,CAGA,iCAAA,CAGJ,kBAMI,QAAA,CAGJ,GCjBI,4CAAA,CACA,gDAAA,CA0CA,eAAA,CAEA,yBD5BJ,GCjBI,4CAAA,CACA,gDAAA,CAAA,CDoBJ,GCrBI,4CAAA,CACA,gDAAA,CAmDA,eAAA,CD3BJ,GCzBI,2CAAA,CACA,+CAAA,CAwDA,eAAA,CD5BJ,GC7BI,2CAAA,CACA,+CAAA,CA6DA,eAAA,CD7BJ,GCjCI,yCAAA,CACA,6CAAA,CAkEA,eAAA,CD9BJ,GCrCI,yCAAA,CACA,6CAAA,CAuEA,eAAA,CD/BJ,QAEI,eAAA,CAEA,8BACI,eAAA,CAIR,QAEI,eAAA,CACA,aAAA,CAGJ,ECnCI,YAAA,CAUA,+BAAA,CACA,oBAAA,CACA,cAAA,CAVA,sBACI,yBAAA,CAWJ,iBAEI,qCAAA",sourcesContent:["@import './variables';\n@import './mixins';\n\nbody.yc-root {\n    font-feature-settings: 'liga', 'kern';\n    text-size-adjust: 100%;\n\n    /* stylelint-disable-next-line value-keyword-case */\n    text-rendering: optimizeLegibility;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n    margin: 0;\n}\n\nh1 {\n    @include heading1();\n}\n\nh2 {\n    @include heading2();\n}\n\nh3 {\n    @include heading3();\n}\n\nh4 {\n    @include heading4();\n}\n\nh5 {\n    @include heading5();\n}\n\nh6 {\n    @include heading6();\n}\n\np,\ndiv.p {\n    margin: 0 0 20px;\n\n    &:last-child {\n        margin-bottom: 0;\n    }\n}\n\nsub,\nsup {\n    font-size: 0.75em;\n    line-height: 0;\n}\n\na {\n    @include link();\n}\n","@import './variables';\n\n@mixin text-size($name) {\n    font-size: var(--yc-text-#{$name}-font-size);\n    line-height: var(--yc-text-#{$name}-line-height);\n}\n\n@mixin reset-list-style() {\n    margin: 0;\n    padding: 0;\n    list-style: none;\n}\n\n@mixin fixAnchorPosition($offset: 0px) {\n    padding-top: calc(var(--dc-header-height, #{$headerHeight}));\n    margin-top: calc(#{$offset} - var(--dc-header-height, #{$headerHeight}));\n}\n\n@mixin reset-link-style() {\n    color: inherit;\n    text-decoration: none;\n}\n\n@mixin islands-focus() {\n    outline: none;\n\n    .utilityfocus &:focus {\n        outline: 2px solid #ffdb4d;\n    }\n}\n\n@mixin link() {\n    @include islands-focus();\n\n    color: var(--yc-color-text-link);\n    text-decoration: none;\n    cursor: pointer;\n\n    &:hover,\n    &:active {\n        color: var(--yc-color-text-link-hover);\n    }\n}\n\n@mixin heading1() {\n    @include text-size(display-3);\n    font-weight: 500;\n\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        @include text-size(display-2);\n    }\n}\n\n@mixin heading2() {\n    @include text-size(display-1);\n    font-weight: 500;\n}\n\n@mixin heading3() {\n    @include text-size(header-2);\n    font-weight: 500;\n}\n\n@mixin heading4() {\n    @include text-size(header-1);\n    font-weight: 500;\n}\n\n@mixin heading5() {\n    @include text-size(body-3);\n    font-weight: 500;\n}\n\n@mixin heading6() {\n    @include text-size(body-3);\n    font-weight: 400;\n}\n\n@mixin contributors-text() {\n    font-size: 13px;\n    font-weight: 400;\n    margin-right: 5px;\n    align-self: center;\n}\n\n@mixin text-body-1() {\n    font-size: var(--yc-text-body-1-font-size);\n    line-height: var(--yc-text-body-1-line-height);\n    font-weight: var(--yc-text-body-font-weight);\n}\n\n@mixin desktop-only() {\n    @media (max-width: map-get($screenBreakpoints, 'md') - 1) {\n        display: none;\n    }\n}\n\n@mixin desktop-tablet-only() {\n    @media (max-width: map-get($screenBreakpoints, 'sm') - 1) {\n        display: none;\n    }\n}\n\n@mixin mobile-tablet-only() {\n    @media (min-width: map-get($screenBreakpoints, 'md')) {\n        display: none;\n    }\n}\n\n@mixin mobile-only() {\n    @media (min-width: map-get($screenBreakpoints, 'sm')) {\n        display: none;\n    }\n}\n"],sourceRoot:""}]);const c=a},66:(e,t,n)=>{"use strict";n.d(t,{Z:()=>x});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i),c=n(1667),l=n.n(c),s=new URL(n(136),n.b),A=new URL(n(9146),n.b),u=new URL(n(6005),n.b),d=new URL(n(5684),n.b),p=new URL(n(1032),n.b),y=new URL(n(6320),n.b),g=a()(o()),h=l()(s),f=l()(A),v=l()(u),m=l()(d),C=l()(p),b=l()(y);g.push([e.id,'.yfm{font-family:var(--yfm-font-family-sans);font-size:15px;line-height:20px;word-wrap:break-word;color:rgba(0,0,0,.7);--yfm-color-hljs-background: rgba(107, 132, 153, 0.12);--yfm-color-hljs-subst: #444;--yfm-color-hljs-comment: #888888;--yfm-color-hljs-deletion: #880000;--yfm-color-hljs-section: #880000;--yfm-color-hljs-pseudo: #BC6060;--yfm-color-hljs-literal: #78A960;--yfm-color-hljs-addition: #397300;--yfm-color-hljs-meta: #1f7199;--yfm-color-hljs-meta-string: #4d99bf;--yfm-font-family-monospace: "Menlo", "Monaco", "Consolas", "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", "Courier", monospace;--yfm-font-family-sans: "Segoe UI", Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"}.yfm *{box-sizing:border-box}.yfm>*:not(h2):not(h3):not(h4):not(h5):not(h6):first-child{margin-top:0 !important}.yfm>*:last-child{margin-bottom:0 !important}.yfm h1,.yfm h2,.yfm h3,.yfm h4,.yfm h5,.yfm h6{margin-bottom:15px;font-weight:500}.yfm h1{font-size:32px;line-height:40px}.yfm h2{font-size:24px;line-height:28px}.yfm h3{font-size:20px;line-height:24px}.yfm h4{font-size:17px;line-height:24px}.yfm h5{font-size:15px;line-height:20px}.yfm h6{font-size:13px;line-height:18px}.yfm a{background-color:rgba(0,0,0,0);color:#027bf3;text-decoration:none}.yfm a:hover,.yfm a:active{color:#004080}.yfm a:not([href]){color:inherit}.yfm strong{font-weight:700}.yfm img,.yfm svg{box-sizing:content-box;max-width:100%;border:none;vertical-align:middle}.yfm img[align=right],.yfm svg[align=right]{padding-left:20px}.yfm img[align=left],.yfm svg[align=left]{padding-right:20px}.yfm img{background-color:#fff}.yfm svg{height:auto}.yfm .katex svg{height:initial}.yfm img+small{display:block}.yfm p,.yfm blockquote,.yfm ul,.yfm ol,.yfm dl,.yfm table,.yfm pre{margin:0 0 15px 0}.yfm ul pre,.yfm ol pre,.yfm dl pre{margin-top:15px}.yfm code,.yfm kbd,.yfm pre{font-family:var(--yfm-font-family-monospace);font-size:1em;font-feature-settings:normal}.yfm input{margin:0;overflow:visible;font-family:inherit;font-size:inherit;line-height:inherit}.yfm input[type=checkbox]{position:relative;top:1px;box-sizing:border-box;padding:0}.yfm table{color:#333;display:inline-block;max-width:100%;width:auto;overflow:auto;position:relative;z-index:1;border:1px solid rgba(0,0,0,.07);box-sizing:border-box;border-radius:8px;border-collapse:collapse;border-spacing:0;background:#fff}.yfm table thead,.yfm table tr:nth-child(2n){background-color:rgba(0,0,0,.02)}.yfm table th,.yfm table td{padding:10px 15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.yfm table th{font-weight:500;text-align:left}.yfm table td{white-space:normal;vertical-align:baseline}.yfm hr{box-sizing:content-box;height:.25em;padding:0;margin:1.5em 0;overflow:hidden;background-color:rgba(0,0,0,.07);border:none}.yfm hr::before{content:"";display:table}.yfm hr::after{content:"";display:table;clear:both}.yfm blockquote{position:relative;padding-left:12px;border-left:3px solid #027bf3}.yfm blockquote>*:first-child{margin-top:0}.yfm blockquote>*:last-child{margin-bottom:0}.yfm dl{padding:0}.yfm dl>*:first-child{margin-top:0}.yfm dl>*:last-child{margin-bottom:0}.yfm dl dt{margin-bottom:5px;font-size:1em;font-weight:500;font-style:italic}.yfm dl dd{margin-bottom:15px;padding:0 15px}.yfm dd{margin-left:0}.yfm dd>ol:first-child,.yfm dd>ul:first-child,.yfm dd>dd:first-child{padding-left:0}.yfm ul,.yfm ol{padding-left:2.2em}.yfm ul ul,.yfm ul ol,.yfm ol ol,.yfm ol ul{margin-top:0;margin-bottom:0}.yfm:not(.yfm_no-list-reset) ol{list-style-type:none;counter-reset:list}.yfm:not(.yfm_no-list-reset) ol>li{position:relative;counter-increment:list}.yfm:not(.yfm_no-list-reset) ol>li::before{position:absolute;right:100%;margin-right:4px;content:counters(list, ".") ". "}.yfm li{word-wrap:break-word}.yfm li+li{margin-top:.33em}.yfm li p,.yfm li blockquote{margin-top:15px}.yfm code{padding:.1em .4em .15em;background-color:rgba(107,132,153,.12);border-radius:4px;font-size:.875em;white-space:normal;color:#3b6080}.yfm pre{word-wrap:normal}.yfm table code{white-space:nowrap}.yfm pre * code{display:inline;padding:0;margin:0;overflow:visible;word-wrap:normal;background-color:rgba(0,0,0,0);border:0;color:rgba(0,0,0,.7)}.yfm pre>code{display:block;padding:16px;overflow:auto;background-color:rgba(107,132,153,.12);color:rgba(0,0,0,.7);white-space:pre}.yfm sup,.yfm sub{line-height:0}.yfm .yfm-note{max-width:1296px;margin:20px 0;padding:20px 20px 20px 64px;border-radius:10px}.yfm .yfm-note .yfm-note-title{font-weight:700}.yfm .yfm-note>p{margin:0 0 10px 0}.yfm .yfm-note>p:first-child::before{box-sizing:content-box;display:block;width:24px;height:24px;margin-top:-2px;margin-left:-44px;padding-right:20px;float:left}.yfm .yfm-note>p:last-child{margin-bottom:0}.yfm .yfm-note.yfm-accent-info>p:first-child::before{content:url('+h+")}.yfm .yfm-note.yfm-accent-tip>p:first-child::before{content:url("+f+")}.yfm .yfm-note.yfm-accent-alert>p:first-child::before{content:url("+v+")}.yfm .yfm-note.yfm-accent-warning>p:first-child::before{content:url("+m+')}.yfm .yfm-note.yfm-accent-info{background:rgba(2,123,243,.08)}.yfm .yfm-note.yfm-accent-tip{background:rgba(63,201,46,.1)}.yfm .yfm-note.yfm-accent-alert{background:rgba(235,50,38,.08)}.yfm .yfm-note.yfm-accent-warning{background:rgba(255,136,0,.15)}.yfm h1 .yfm-anchor,.yfm h2 .yfm-anchor,.yfm h3 .yfm-anchor,.yfm h4 .yfm-anchor,.yfm h5 .yfm-anchor,.yfm h6 .yfm-anchor{display:inline-block;width:24px;padding-right:4px;margin-left:-24px;float:left;text-align:center;font-size:18px}.yfm h1 .yfm-anchor::before,.yfm h2 .yfm-anchor::before,.yfm h3 .yfm-anchor::before,.yfm h4 .yfm-anchor::before,.yfm h5 .yfm-anchor::before,.yfm h6 .yfm-anchor::before{content:"#";visibility:hidden}.yfm h1:hover .yfm-anchor::before,.yfm h2:hover .yfm-anchor::before,.yfm h3:hover .yfm-anchor::before,.yfm h4:hover .yfm-anchor::before,.yfm h5:hover .yfm-anchor::before,.yfm h6:hover .yfm-anchor::before{visibility:visible}.yfm .yfm-tabs{margin-bottom:15px}.yfm .yfm-tabs ol{counter-reset:tabs-list}.yfm .yfm-tabs ol>li{counter-increment:tabs-list}.yfm .yfm-tabs ol>li::before{content:counters(tabs-list, ".") ". "}.yfm .yfm-tab-list{display:flex;flex-wrap:wrap;margin-bottom:15px;border-bottom:1px solid rgba(0,0,0,.07)}.yfm .yfm-tab{margin-bottom:-1px;margin-right:20px;border-bottom:2px solid rgba(0,0,0,0);padding:6px 0 7px 0;font-weight:700;outline:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:break-spaces}.yfm .yfm-tab:last-child{margin-right:0}.yfm .yfm-tab:hover,.yfm .yfm-tab:active{color:#004080}.yfm .yfm-tab.active{border-bottom-color:#027bf3}.yfm .yfm-tab-panel{display:none}.yfm .yfm-tab-panel:first-child{margin-top:0 !important}.yfm .yfm-tab-panel:last-child{margin-bottom:0 !important}.yfm .yfm-tab-panel.active{display:block}.yfm .hljs{display:block;overflow-x:auto;padding:16px;background:rgba(107,132,153,.12);background:var(--yfm-color-hljs-background)}.yfm .hljs,.yfm .hljs-subst{color:#444;color:var(--yfm-color-hljs-subst)}.yfm .hljs-comment{color:#888;color:var(--yfm-color-hljs-comment)}.yfm .hljs-keyword,.yfm .hljs-attribute,.yfm .hljs-selector-tag,.yfm .hljs-meta-keyword,.yfm .hljs-doctag,.yfm .hljs-name{font-weight:bold}.yfm .hljs-type,.yfm .hljs-string,.yfm .hljs-number,.yfm .hljs-selector-id,.yfm .hljs-selector-class,.yfm .hljs-quote,.yfm .hljs-template-tag,.yfm .hljs-deletion{color:#800;color:var(--yfm-color-hljs-deletion)}.yfm .hljs-title,.yfm .hljs-section{color:#800;color:var(--yfm-color-hljs-section);font-weight:bold}.yfm .hljs-regexp,.yfm .hljs-symbol,.yfm .hljs-variable,.yfm .hljs-template-variable,.yfm .hljs-link,.yfm .hljs-selector-attr,.yfm .hljs-selector-pseudo{color:#bc6060;color:var(--yfm-color-hljs-pseudo)}.yfm .hljs-literal{color:#78a960;color:var(--yfm-color-hljs-literal)}.yfm .hljs-built_in,.yfm .hljs-bullet,.yfm .hljs-code,.yfm .hljs-addition{color:#397300;color:var(--yfm-color-hljs-addition)}.yfm .hljs-meta{color:#1f7199;color:var(--yfm-color-hljs-meta)}.yfm .hljs-meta-string{color:#4d99bf;color:var(--yfm-color-hljs-meta-string)}.yfm .hljs-emphasis{font-style:italic}.yfm .hljs-strong{font-weight:bold}.yfm-clipboard{position:relative}.yfm-clipboard:hover .yfm-clipboard-button{display:block}.yfm-clipboard>pre{border-radius:10px;overflow:hidden}.yfm-clipboard-button{display:none;position:absolute;cursor:pointer;top:16px;right:16px;z-index:1}@media print{.tab-list{display:none !important}.tab-panel:before{content:attr(data-title);margin-bottom:-1px;margin-right:20px;border-bottom:2px solid rgba(0,0,0,0);line-height:33px;font-weight:700;outline:0;cursor:pointer}.tab-panel{display:block !important}}.yfm-cut-title{cursor:pointer;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px 0 5px 30px}.yfm-cut-title:before{content:"";z-index:100;left:0;top:50%;background-image:url('+C+");transform:translateY(-50%) rotate(-90deg);transition:transform .3s ease;height:20px;width:20px;position:absolute}.yfm-cut-content{height:0;overflow:hidden;transition:height .3s ease-in-out}.yfm-cut.open>.yfm-cut-content{padding:5px 0 15px 30px;height:auto}.yfm-cut.open>.yfm-cut-title:before{transform:translateY(-50%)}.yfm-file__icon{---yfm-file-icon-img: var(--yfm-file-icon, url("+b+'));display:inline-block;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:16px;margin:0 2px;color:var(--yfm-file-icon-color, rgba(0, 0, 0, 0.7));background-color:currentColor;background-repeat:no-repeat;background-position:50%;background-size:100%;-webkit-mask-image:var(---yfm-file-icon-img);mask-image:var(---yfm-file-icon-img);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.yfm-file__icon::before{content:" "}.yfm-term_title{color:#027bf3;cursor:pointer;border-bottom:1px dotted;font-size:inherit;line-height:inherit;font-style:normal}.yfm-term_title:hover{color:#004080}.yfm-term_dfn{position:absolute;z-index:1000;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;max-width:450px;visibility:hidden;opacity:0;padding:10px;background-color:#fff;font-size:inherit;line-height:inherit;font-style:normal;border-radius:4px;box-shadow:0 8px 20px rgba(0,0,0,.15);outline:none}@media screen and (max-width: 600px){.yfm-term_dfn{max-width:80%}}.yfm-term_dfn::before{content:"";position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:0 0 0 1px #e5e5e5}.yfm-term_dfn.open{visibility:visible;-webkit-animation-name:popup;animation-name:popup;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes popup{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}@keyframes popup{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}',"",{version:3,sources:["webpack://./node_modules/@doc-tools/transform/dist/css/yfm.css"],names:[],mappings:"AAAA,KAAA,uCACE,CAAA,cACA,CAAA,gBACA,CAAA,oBACA,CAAA,oBACA,CAAA,sDACA,CAAA,4BACA,CAAA,iCACA,CAAA,kCACA,CAAA,iCACA,CAAA,gCACA,CAAA,iCACA,CAAA,kCACA,CAAA,8BACA,CAAA,qCACA,CAAA,qJACA,CAAA,0HACA,CAAA,OACA,qBACE,CAAA,2DACF,uBACE,CAAA,kBACF,0BACE,CAAA,gDACF,kBACE,CAAA,eACA,CAAA,QACF,cACE,CAAA,gBACA,CAAA,QACF,cACE,CAAA,gBACA,CAAA,QACF,cACE,CAAA,gBACA,CAAA,QACF,cACE,CAAA,gBACA,CAAA,QACF,cACE,CAAA,gBACA,CAAA,QACF,cACE,CAAA,gBACA,CAAA,OACF,8BACE,CAAA,aACA,CAAA,oBACA,CAAA,2BACA,aACE,CAAA,mBACF,aACE,CAAA,YACJ,eACE,CAAA,kBACF,sBACE,CAAA,cACA,CAAA,WACA,CAAA,qBACA,CAAA,4CACA,iBACE,CAAA,0CACF,kBACE,CAAA,SACJ,qBACE,CAAA,SACF,WACE,CAAA,gBACF,cACE,CAAA,eACF,aACE,CAAA,mEACF,iBAOE,CAAA,oCACF,eACE,CAAA,4BACF,4CAGE,CAAA,aACA,CAAA,4BACA,CAAA,WACF,QACE,CAAA,gBACA,CAAA,mBACA,CAAA,iBACA,CAAA,mBACA,CAAA,0BACA,iBACE,CAAA,OACA,CAAA,qBACA,CAAA,SACA,CAAA,WACJ,UACE,CAAA,oBACA,CAAA,cACA,CAAA,UACA,CAAA,aACA,CAAA,iBACA,CAAA,SACA,CAAA,gCACA,CAAA,qBACA,CAAA,iBACA,CAAA,wBACA,CAAA,gBACA,CAAA,eACA,CAAA,6CACA,gCACE,CAAA,4BACF,iBACE,CAAA,kBACA,CAAA,eACA,CAAA,sBACA,CAAA,cACF,eACE,CAAA,eACA,CAAA,cACF,kBACE,CAAA,uBACA,CAAA,QACJ,sBACE,CAAA,YACA,CAAA,SACA,CAAA,cACA,CAAA,eACA,CAAA,gCACA,CAAA,WACA,CAAA,gBACA,UACE,CAAA,aACA,CAAA,eACF,UACE,CAAA,aACA,CAAA,UACA,CAAA,gBACJ,iBACE,CAAA,iBACA,CAAA,6BACA,CAAA,8BACA,YACE,CAAA,6BACF,eACE,CAAA,QACJ,SACE,CAAA,sBACA,YACE,CAAA,qBACF,eACE,CAAA,WACF,iBACE,CAAA,aACA,CAAA,eACA,CAAA,iBACA,CAAA,WACF,kBACE,CAAA,cACA,CAAA,QACJ,aACE,CAAA,qEACA,cAGE,CAAA,gBACJ,kBACE,CAAA,4CACF,YAIE,CAAA,eACA,CAAA,gCACF,oBACE,CAAA,kBACA,CAAA,mCACA,iBACE,CAAA,sBACA,CAAA,2CACA,iBACE,CAAA,UACA,CAAA,gBACA,CAAA,gCACA,CAAA,QACN,oBACE,CAAA,WACF,gBACE,CAAA,6BACF,eAEE,CAAA,UACF,uBACE,CAAA,sCACA,CAAA,iBACA,CAAA,gBACA,CAAA,kBACA,CAAA,aACA,CAAA,SACF,gBACE,CAAA,gBACF,kBACE,CAAA,gBACF,cACE,CAAA,SACA,CAAA,QACA,CAAA,gBACA,CAAA,gBACA,CAAA,8BACA,CAAA,QACA,CAAA,oBACA,CAAA,cACF,aACE,CAAA,YACA,CAAA,aACA,CAAA,sCACA,CAAA,oBACA,CAAA,eACA,CAAA,kBACF,aACE,CAAA,eAEJ,gBACE,CAAA,aACA,CAAA,2BACA,CAAA,kBACA,CAAA,+BACA,eACE,CAAA,iBACF,iBACE,CAAA,qCACA,sBACE,CAAA,aACA,CAAA,UACA,CAAA,WACA,CAAA,eACA,CAAA,iBACA,CAAA,kBACA,CAAA,UACA,CAAA,4BACF,eACE,CAAA,qDACJ,+CACE,CAAA,oDACF,+CACE,CAAA,sDACF,+CACE,CAAA,wDACF,+CACE,CAAA,+BACF,8BACE,CAAA,8BACF,6BACE,CAAA,gCACF,8BACE,CAAA,kCACF,8BACE,CAAA,wHAEJ,oBACE,CAAA,UACA,CAAA,iBACA,CAAA,iBACA,CAAA,UACA,CAAA,iBACA,CAAA,cACA,CAAA,wKAEF,WACE,CAAA,iBACA,CAAA,4MAEF,kBACE,CAAA,eAEF,kBACE,CAAA,kBACA,uBACE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",sourcesContent:['.yfm {\n  font-family: var(--yfm-font-family-sans);\n  font-size: 15px;\n  line-height: 20px;\n  word-wrap: break-word;\n  color: rgba(0, 0, 0, 0.7);\n  --yfm-color-hljs-background: rgba(107, 132, 153, 0.12);\n  --yfm-color-hljs-subst: #444;\n  --yfm-color-hljs-comment: #888888;\n  --yfm-color-hljs-deletion: #880000;\n  --yfm-color-hljs-section: #880000;\n  --yfm-color-hljs-pseudo: #BC6060;\n  --yfm-color-hljs-literal: #78A960;\n  --yfm-color-hljs-addition: #397300;\n  --yfm-color-hljs-meta: #1f7199;\n  --yfm-color-hljs-meta-string: #4d99bf;\n  --yfm-font-family-monospace: "Menlo", "Monaco", "Consolas", "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", "Courier", monospace;\n  --yfm-font-family-sans: \'Segoe UI\', Arial, Helvetica, sans-serif, \'Apple Color Emoji\', \'Segoe UI Emoji\', \'Segoe UI Symbol\'; }\n  .yfm * {\n    box-sizing: border-box; }\n  .yfm > *:not(h2):not(h3):not(h4):not(h5):not(h6):first-child {\n    margin-top: 0 !important; }\n  .yfm > *:last-child {\n    margin-bottom: 0 !important; }\n  .yfm h1, .yfm h2, .yfm h3, .yfm h4, .yfm h5, .yfm h6 {\n    margin-bottom: 15px;\n    font-weight: 500; }\n  .yfm h1 {\n    font-size: 32px;\n    line-height: 40px; }\n  .yfm h2 {\n    font-size: 24px;\n    line-height: 28px; }\n  .yfm h3 {\n    font-size: 20px;\n    line-height: 24px; }\n  .yfm h4 {\n    font-size: 17px;\n    line-height: 24px; }\n  .yfm h5 {\n    font-size: 15px;\n    line-height: 20px; }\n  .yfm h6 {\n    font-size: 13px;\n    line-height: 18px; }\n  .yfm a {\n    background-color: transparent;\n    color: #027bf3;\n    text-decoration: none; }\n    .yfm a:hover, .yfm a:active {\n      color: #004080; }\n    .yfm a:not([href]) {\n      color: inherit; }\n  .yfm strong {\n    font-weight: 700; }\n  .yfm img, .yfm svg {\n    box-sizing: content-box;\n    max-width: 100%;\n    border: none;\n    vertical-align: middle; }\n    .yfm img[align=right], .yfm svg[align=right] {\n      padding-left: 20px; }\n    .yfm img[align=left], .yfm svg[align=left] {\n      padding-right: 20px; }\n  .yfm img {\n    background-color: #ffffff; }\n  .yfm svg {\n    height: auto; }\n  .yfm .katex svg {\n    height: initial; }\n  .yfm img + small {\n    display: block; }\n  .yfm p,\n  .yfm blockquote,\n  .yfm ul,\n  .yfm ol,\n  .yfm dl,\n  .yfm table,\n  .yfm pre {\n    margin: 0 0 15px 0; }\n  .yfm ul pre, .yfm ol pre, .yfm dl pre {\n    margin-top: 15px; }\n  .yfm code,\n  .yfm kbd,\n  .yfm pre {\n    font-family: var(--yfm-font-family-monospace);\n    font-size: 1em;\n    font-feature-settings: normal; }\n  .yfm input {\n    margin: 0;\n    overflow: visible;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit; }\n    .yfm input[type=\'checkbox\'] {\n      position: relative;\n      top: 1px;\n      box-sizing: border-box;\n      padding: 0; }\n  .yfm table {\n    color: #333333;\n    display: inline-block;\n    max-width: 100%;\n    width: auto;\n    overflow: auto;\n    position: relative;\n    z-index: 1;\n    border: 1px solid rgba(0, 0, 0, 0.07);\n    box-sizing: border-box;\n    border-radius: 8px;\n    border-collapse: collapse;\n    border-spacing: 0;\n    background: #ffffff; }\n    .yfm table thead, .yfm table tr:nth-child(2n) {\n      background-color: rgba(0, 0, 0, 0.02); }\n    .yfm table th, .yfm table td {\n      padding: 10px 15px;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis; }\n    .yfm table th {\n      font-weight: 500;\n      text-align: left; }\n    .yfm table td {\n      white-space: normal;\n      vertical-align: baseline; }\n  .yfm hr {\n    box-sizing: content-box;\n    height: 0.25em;\n    padding: 0;\n    margin: 1.5em 0;\n    overflow: hidden;\n    background-color: rgba(0, 0, 0, 0.07);\n    border: none; }\n    .yfm hr::before {\n      content: \'\';\n      display: table; }\n    .yfm hr::after {\n      content: \'\';\n      display: table;\n      clear: both; }\n  .yfm blockquote {\n    position: relative;\n    padding-left: 12px;\n    border-left: 3px solid #027bf3; }\n    .yfm blockquote > *:first-child {\n      margin-top: 0; }\n    .yfm blockquote > *:last-child {\n      margin-bottom: 0; }\n  .yfm dl {\n    padding: 0; }\n    .yfm dl > *:first-child {\n      margin-top: 0; }\n    .yfm dl > *:last-child {\n      margin-bottom: 0; }\n    .yfm dl dt {\n      margin-bottom: 5px;\n      font-size: 1em;\n      font-weight: 500;\n      font-style: italic; }\n    .yfm dl dd {\n      margin-bottom: 15px;\n      padding: 0 15px; }\n  .yfm dd {\n    margin-left: 0; }\n    .yfm dd > ol:first-child,\n    .yfm dd > ul:first-child,\n    .yfm dd > dd:first-child {\n      padding-left: 0; }\n  .yfm ul, .yfm ol {\n    padding-left: 2.2em; }\n  .yfm ul ul,\n  .yfm ul ol,\n  .yfm ol ol,\n  .yfm ol ul {\n    margin-top: 0;\n    margin-bottom: 0; }\n  .yfm:not(.yfm_no-list-reset) ol {\n    list-style-type: none;\n    counter-reset: list; }\n    .yfm:not(.yfm_no-list-reset) ol > li {\n      position: relative;\n      counter-increment: list; }\n      .yfm:not(.yfm_no-list-reset) ol > li::before {\n        position: absolute;\n        right: 100%;\n        margin-right: 4px;\n        content: counters(list, ".") ". "; }\n  .yfm li {\n    word-wrap: break-word; }\n  .yfm li + li {\n    margin-top: 0.33em; }\n  .yfm li p,\n  .yfm li blockquote {\n    margin-top: 15px; }\n  .yfm code {\n    padding: 0.1em 0.4em 0.15em;\n    background-color: rgba(107, 132, 153, 0.12);\n    border-radius: 4px;\n    font-size: 0.875em;\n    white-space: normal;\n    color: #3b6080; }\n  .yfm pre {\n    word-wrap: normal; }\n  .yfm table code {\n    white-space: nowrap; }\n  .yfm pre * code {\n    display: inline;\n    padding: 0;\n    margin: 0;\n    overflow: visible;\n    word-wrap: normal;\n    background-color: transparent;\n    border: 0;\n    color: rgba(0, 0, 0, 0.7); }\n  .yfm pre > code {\n    display: block;\n    padding: 16px;\n    overflow: auto;\n    background-color: rgba(107, 132, 153, 0.12);\n    color: rgba(0, 0, 0, 0.7);\n    white-space: pre; }\n  .yfm sup, .yfm sub {\n    line-height: 0; }\n\n.yfm .yfm-note {\n  max-width: 1296px;\n  margin: 20px 0;\n  padding: 20px 20px 20px 64px;\n  border-radius: 10px; }\n  .yfm .yfm-note .yfm-note-title {\n    font-weight: 700; }\n  .yfm .yfm-note > p {\n    margin: 0 0 10px 0; }\n    .yfm .yfm-note > p:first-child::before {\n      box-sizing: content-box;\n      display: block;\n      width: 24px;\n      height: 24px;\n      margin-top: -2px;\n      margin-left: -44px;\n      padding-right: 20px;\n      float: left; }\n    .yfm .yfm-note > p:last-child {\n      margin-bottom: 0; }\n  .yfm .yfm-note.yfm-accent-info > p:first-child::before {\n    content: url(\'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb(2,123,243)"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E\'); }\n  .yfm .yfm-note.yfm-accent-tip > p:first-child::before {\n    content: url(\'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb(86,189,103)"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E\'); }\n  .yfm .yfm-note.yfm-accent-alert > p:first-child::before {\n    content: url(\'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb(255,70,69)"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E\'); }\n  .yfm .yfm-note.yfm-accent-warning > p:first-child::before {\n    content: url(\'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb(241,149,24)"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E\'); }\n  .yfm .yfm-note.yfm-accent-info {\n    background: rgba(2, 123, 243, 0.08); }\n  .yfm .yfm-note.yfm-accent-tip {\n    background: rgba(63, 201, 46, 0.1); }\n  .yfm .yfm-note.yfm-accent-alert {\n    background: rgba(235, 50, 38, 0.08); }\n  .yfm .yfm-note.yfm-accent-warning {\n    background: rgba(255, 136, 0, 0.15); }\n\n.yfm h1 .yfm-anchor, .yfm h2 .yfm-anchor, .yfm h3 .yfm-anchor, .yfm h4 .yfm-anchor, .yfm h5 .yfm-anchor, .yfm h6 .yfm-anchor {\n  display: inline-block;\n  width: 24px;\n  padding-right: 4px;\n  margin-left: -24px;\n  float: left;\n  text-align: center;\n  font-size: 18px; }\n\n.yfm h1 .yfm-anchor::before, .yfm h2 .yfm-anchor::before, .yfm h3 .yfm-anchor::before, .yfm h4 .yfm-anchor::before, .yfm h5 .yfm-anchor::before, .yfm h6 .yfm-anchor::before {\n  content: \'#\';\n  visibility: hidden; }\n\n.yfm h1:hover .yfm-anchor::before, .yfm h2:hover .yfm-anchor::before, .yfm h3:hover .yfm-anchor::before, .yfm h4:hover .yfm-anchor::before, .yfm h5:hover .yfm-anchor::before, .yfm h6:hover .yfm-anchor::before {\n  visibility: visible; }\n\n.yfm .yfm-tabs {\n  margin-bottom: 15px; }\n  .yfm .yfm-tabs ol {\n    counter-reset: tabs-list; }\n    .yfm .yfm-tabs ol > li {\n      counter-increment: tabs-list; }\n      .yfm .yfm-tabs ol > li::before {\n        content: counters(tabs-list, ".") ". "; }\n\n.yfm .yfm-tab-list {\n  display: flex;\n  flex-wrap: wrap;\n  margin-bottom: 15px;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.07); }\n\n.yfm .yfm-tab {\n  margin-bottom: -1px;\n  margin-right: 20px;\n  border-bottom: 2px solid transparent;\n  padding: 6px 0 7px 0;\n  font-weight: 700;\n  outline: none;\n  cursor: pointer;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  white-space: break-spaces; }\n  .yfm .yfm-tab:last-child {\n    margin-right: 0; }\n  .yfm .yfm-tab:hover, .yfm .yfm-tab:active {\n    color: #004080; }\n  .yfm .yfm-tab.active {\n    border-bottom-color: #027bf3; }\n\n.yfm .yfm-tab-panel {\n  display: none; }\n  .yfm .yfm-tab-panel:first-child {\n    margin-top: 0 !important; }\n  .yfm .yfm-tab-panel:last-child {\n    margin-bottom: 0 !important; }\n  .yfm .yfm-tab-panel.active {\n    display: block; }\n\n.yfm .hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 16px;\n  background: rgba(107, 132, 153, 0.12);\n  background: var(--yfm-color-hljs-background); }\n\n.yfm .hljs,\n.yfm .hljs-subst {\n  color: #444;\n  color: var(--yfm-color-hljs-subst); }\n\n.yfm .hljs-comment {\n  color: #888888;\n  color: var(--yfm-color-hljs-comment); }\n\n.yfm .hljs-keyword,\n.yfm .hljs-attribute,\n.yfm .hljs-selector-tag,\n.yfm .hljs-meta-keyword,\n.yfm .hljs-doctag,\n.yfm .hljs-name {\n  font-weight: bold; }\n\n.yfm .hljs-type,\n.yfm .hljs-string,\n.yfm .hljs-number,\n.yfm .hljs-selector-id,\n.yfm .hljs-selector-class,\n.yfm .hljs-quote,\n.yfm .hljs-template-tag,\n.yfm .hljs-deletion {\n  color: #880000;\n  color: var(--yfm-color-hljs-deletion); }\n\n.yfm .hljs-title,\n.yfm .hljs-section {\n  color: #880000;\n  color: var(--yfm-color-hljs-section);\n  font-weight: bold; }\n\n.yfm .hljs-regexp,\n.yfm .hljs-symbol,\n.yfm .hljs-variable,\n.yfm .hljs-template-variable,\n.yfm .hljs-link,\n.yfm .hljs-selector-attr,\n.yfm .hljs-selector-pseudo {\n  color: #BC6060;\n  color: var(--yfm-color-hljs-pseudo); }\n\n.yfm .hljs-literal {\n  color: #78A960;\n  color: var(--yfm-color-hljs-literal); }\n\n.yfm .hljs-built_in,\n.yfm .hljs-bullet,\n.yfm .hljs-code,\n.yfm .hljs-addition {\n  color: #397300;\n  color: var(--yfm-color-hljs-addition); }\n\n.yfm .hljs-meta {\n  color: #1f7199;\n  color: var(--yfm-color-hljs-meta); }\n\n.yfm .hljs-meta-string {\n  color: #4d99bf;\n  color: var(--yfm-color-hljs-meta-string); }\n\n.yfm .hljs-emphasis {\n  font-style: italic; }\n\n.yfm .hljs-strong {\n  font-weight: bold; }\n\n.yfm-clipboard {\n  position: relative; }\n  .yfm-clipboard:hover .yfm-clipboard-button {\n    display: block; }\n  .yfm-clipboard > pre {\n    border-radius: 10px;\n    overflow: hidden; }\n\n.yfm-clipboard-button {\n  display: none;\n  position: absolute;\n  cursor: pointer;\n  top: 16px;\n  right: 16px;\n  z-index: 1; }\n\n@media print {\n  .tab-list {\n    display: none !important; }\n  .tab-panel:before {\n    content: attr(data-title);\n    margin-bottom: -1px;\n    margin-right: 20px;\n    border-bottom: 2px solid transparent;\n    line-height: 33px;\n    font-weight: 700;\n    outline: 0;\n    cursor: pointer; }\n  .tab-panel {\n    display: block !important; } }\n\n.yfm-cut-title {\n  cursor: pointer;\n  position: relative;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  padding: 5px 0 5px 30px; }\n  .yfm-cut-title:before {\n    content: \'\';\n    z-index: 100;\n    left: 0;\n    top: 50%;\n    background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgICA8cGF0aCBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0ibm9uZSIgZD0iTTMgNmw1IDUgNS01Ii8+Cjwvc3ZnPgo=");\n    transform: translateY(-50%) rotate(-90deg);\n    transition: transform 0.3s ease;\n    height: 20px;\n    width: 20px;\n    position: absolute; }\n\n.yfm-cut-content {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.3s ease-in-out; }\n\n.yfm-cut.open > .yfm-cut-content {\n  padding: 5px 0 15px 30px;\n  height: auto; }\n\n.yfm-cut.open > .yfm-cut-title:before {\n  transform: translateY(-50%); }\n\n/**\n    Public CSS variables:\n    --yfm-file-icon             sets file icon image\n    --yfm-file-icon-color       sets file icon color\n*/\n.yfm-file__icon {\n  ---yfm-file-icon-img: var(--yfm-file-icon, url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzODQgNTEyIj48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6bS0yMi42IDIyLjdjMi4xIDIuMSAzLjUgNC42IDQuMiA3LjRIMjU2VjMyLjVjMi44LjcgNS4zIDIuMSA3LjQgNC4ybDgzLjkgODMuOXpNMzM2IDQ4MEg0OGMtOC44IDAtMTYtNy4yLTE2LTE2VjQ4YzAtOC44IDcuMi0xNiAxNi0xNmgxNzZ2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYzMDRjMCA4LjgtNy4yIDE2LTE2IDE2em0tNDgtMjQ0djhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem0wIDY0djhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem0wIDY0djhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyeiIvPjwvc3ZnPg=="));\n  display: inline-block;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  width: 16px;\n  margin: 0 2px;\n  color: var(--yfm-file-icon-color, rgba(0, 0, 0, 0.7));\n  background-color: currentColor;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100%;\n  -webkit-mask-image: var(---yfm-file-icon-img);\n  mask-image: var(---yfm-file-icon-img);\n  -webkit-mask-position: center;\n  mask-position: center;\n  -webkit-mask-repeat: no-repeat;\n  mask-repeat: no-repeat; }\n  .yfm-file__icon::before {\n    content: \'\\a0\'; }\n\n.yfm-term_title {\n  color: #027bf3;\n  cursor: pointer;\n  border-bottom: 1px dotted;\n  font-size: inherit;\n  line-height: inherit;\n  font-style: normal; }\n  .yfm-term_title:hover {\n    color: #004080; }\n\n.yfm-term_dfn {\n  position: absolute;\n  z-index: 1000;\n  width: -webkit-fit-content;\n  width: -moz-fit-content;\n  width: fit-content;\n  max-width: 450px;\n  visibility: hidden;\n  opacity: 0;\n  padding: 10px;\n  background-color: white;\n  font-size: inherit;\n  line-height: inherit;\n  font-style: normal;\n  border-radius: 4px;\n  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);\n  outline: none; }\n  @media screen and (max-width: 600px) {\n    .yfm-term_dfn {\n      max-width: 80%; } }\n  .yfm-term_dfn::before {\n    content: \'\';\n    position: absolute;\n    z-index: -1;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    border-radius: inherit;\n    box-shadow: 0 0 0 1px #e5e5e5; }\n  .yfm-term_dfn.open {\n    visibility: visible;\n    -webkit-animation-name: popup;\n    animation-name: popup;\n    -webkit-animation-duration: 0.1s;\n    animation-duration: 0.1s;\n    -webkit-animation-timing-function: ease-out;\n    animation-timing-function: ease-out;\n    -webkit-animation-fill-mode: forwards;\n    animation-fill-mode: forwards; }\n\n@-webkit-keyframes popup {\n  0% {\n    opacity: 0;\n    transform: translateY(10px); }\n  100% {\n    opacity: 1;\n    transform: translateY(0); } }\n\n@keyframes popup {\n  0% {\n    opacity: 0;\n    transform: translateY(10px); }\n  100% {\n    opacity: 1;\n    transform: translateY(0); } }\n'],sourceRoot:""}]);const x=g},6919:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'.yc-button{--yc-button-height: 0;--yc-button-background-color: transparent;--yc-button-background-color-hover: transparent;margin:0;padding:0;font-family:var(--yc-text-body-font-family);font-size:inherit;font-weight:400;color:inherit;background:none;border:none;outline:none;cursor:pointer;display:inline-block;position:relative;overflow:visible;box-sizing:border-box;height:var(--yc-button-height);line-height:var(--yc-button-height);user-select:none;text-align:center;white-space:nowrap;text-decoration:none;background:rgba(0,0,0,0);touch-action:manipulation;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:transform .1s ease-out,color .15s linear;transform:scale(1)}.yc-button::before{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;background-color:var(--yc-button-background-color);transition:background-color .15s linear}.yc-button:hover::before{background-color:var(--yc-button-background-color-hover)}.yc-button:focus::before{box-shadow:0 0 0 2px var(--yc-color-line-misc)}.yc-button:focus:not(:focus-visible)::before{box-shadow:none}.yc-button::after{content:"";position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;transform:scale(1);transition:none}.yc-button:active{transition:none;transform:scale(0.96)}.yc-button:active::after{transform:scale(1.042)}.yc-button_size_xs{--yc-button-height: 20px;font-size:13px;--yc-button-border-radius: var(--yc-border-radius-xs)}.yc-button_size_xs .yc-button__text{margin:0 6px}.yc-button_size_xs .yc-button__icon{width:var(--yc-button-height)}.yc-button_size_xs .yc-button__icon_side_left~.yc-button__text{margin-left:18px}.yc-button_size_xs .yc-button__icon_side_right~.yc-button__text{margin-right:18px}.yc-button_size_s{--yc-button-height: 24px;font-size:13px;--yc-button-border-radius: var(--yc-border-radius-s)}.yc-button_size_s .yc-button__text{margin:0 10px}.yc-button_size_s .yc-button__icon{width:var(--yc-button-height)}.yc-button_size_s .yc-button__icon_side_left~.yc-button__text{margin-left:22px}.yc-button_size_s .yc-button__icon_side_right~.yc-button__text{margin-right:22px}.yc-button_size_m{--yc-button-height: 28px;font-size:13px;--yc-button-border-radius: var(--yc-border-radius-m)}.yc-button_size_m .yc-button__text{margin:0 13px}.yc-button_size_m .yc-button__icon{width:var(--yc-button-height)}.yc-button_size_m .yc-button__icon_side_left~.yc-button__text{margin-left:25px}.yc-button_size_m .yc-button__icon_side_right~.yc-button__text{margin-right:25px}.yc-button_size_l{--yc-button-height: 36px;font-size:13px;--yc-button-border-radius: var(--yc-border-radius-l)}.yc-button_size_l .yc-button__text{margin:0 18px}.yc-button_size_l .yc-button__icon{width:var(--yc-button-height)}.yc-button_size_l .yc-button__icon_side_left~.yc-button__text{margin-left:33px}.yc-button_size_l .yc-button__icon_side_right~.yc-button__text{margin-right:33px}.yc-button_size_xl{--yc-button-height: 44px;font-size:15px;--yc-button-border-radius: var(--yc-border-radius-xl)}.yc-button_size_xl .yc-button__text{margin:0 25px}.yc-button_size_xl .yc-button__icon{width:var(--yc-button-height)}.yc-button_size_xl .yc-button__icon_side_left~.yc-button__text{margin-left:40px}.yc-button_size_xl .yc-button__icon_side_right~.yc-button__text{margin-right:40px}.yc-button_view_normal{--yc-button-background-color: var(--yc-color-base-generic);--yc-button-background-color-hover: var(--yc-color-base-generic-hover)}.yc-button_view_normal,.yc-button_view_normal:link,.yc-button_view_normal:visited,.yc-button_view_normal:active,.yc-button_view_normal:focus{color:var(--yc-color-text-primary)}.yc-button_view_normal:hover{color:var(--yc-color-text-primary)}.yc-button_view_normal.yc-button_selected{--yc-button-background-color: var(--yc-color-base-selection);--yc-button-background-color-hover: var(--yc-color-base-selection-hover)}.yc-button_view_normal.yc-button_selected,.yc-button_view_normal.yc-button_selected:link,.yc-button_view_normal.yc-button_selected:visited,.yc-button_view_normal.yc-button_selected:active,.yc-button_view_normal.yc-button_selected:focus{color:var(--yc-my-color-brand-text, var(--yc-color-text-special))}.yc-button_view_normal.yc-button_selected:hover{color:var(--yc-my-color-brand-text, var(--yc-color-text-special))}.yc-button_view_action{--yc-button-background-color: var(--yc-color-base-special);--yc-button-background-color-hover: var(--yc-color-base-special-hover)}.yc-button_view_action,.yc-button_view_action:link,.yc-button_view_action:visited,.yc-button_view_action:active,.yc-button_view_action:focus{color:var(--yc-my-color-brand-text-contrast)}.yc-button_view_action:hover{color:var(--yc-my-color-brand-text-contrast)}.yc-button_view_outlined,.yc-button_view_outlined-info,.yc-button_view_outlined-danger{--yc-button-background-color: transparent;--yc-button-background-color-hover: var(--yc-color-base-simple-hover)}.yc-button_view_outlined,.yc-button_view_outlined:link,.yc-button_view_outlined:visited,.yc-button_view_outlined:active,.yc-button_view_outlined:focus{color:var(--yc-color-text-primary)}.yc-button_view_outlined:hover{color:var(--yc-color-text-primary)}.yc-button_view_outlined::before{border:1px solid var(--yc-color-line-generic)}.yc-button_view_outlined-info,.yc-button_view_outlined-info:link,.yc-button_view_outlined-info:visited,.yc-button_view_outlined-info:active,.yc-button_view_outlined-info:focus{color:var(--yc-color-text-info)}.yc-button_view_outlined-info:hover{color:var(--yc-color-text-info)}.yc-button_view_outlined-info::before{border:1px solid var(--yc-color-line-info)}.yc-button_view_outlined-danger,.yc-button_view_outlined-danger:link,.yc-button_view_outlined-danger:visited,.yc-button_view_outlined-danger:active,.yc-button_view_outlined-danger:focus{color:var(--yc-color-text-danger)}.yc-button_view_outlined-danger:hover{color:var(--yc-color-text-danger)}.yc-button_view_outlined-danger::before{border:1px solid var(--yc-color-line-danger)}.yc-button_view_raised{--yc-button-background-color: var(--yc-color-base-float);--yc-button-background-color-hover: var(--yc-color-base-float-hover)}.yc-button_view_raised,.yc-button_view_raised:link,.yc-button_view_raised:visited,.yc-button_view_raised:active,.yc-button_view_raised:focus{color:var(--yc-color-text-primary)}.yc-button_view_raised:hover{color:var(--yc-color-text-primary)}.yc-button_view_raised::before{box-shadow:0 3px 5px var(--yc-color-sfx-shadow)}.yc-button_view_raised:focus:not(:focus-visible)::before{box-shadow:0 3px 5px var(--yc-color-sfx-shadow)}.yc-button_view_raised:active::before{box-shadow:0 1px 2px var(--yc-color-sfx-shadow)}.yc-button_view_raised:active:focus::before{box-shadow:0 0 0 2px var(--yc-color-line-misc)}.yc-button_view_raised:active:focus:not(:focus-visible)::before{box-shadow:0 1px 2px var(--yc-color-sfx-shadow)}.yc-button_view_flat,.yc-button_view_flat-info,.yc-button_view_flat-danger,.yc-button_view_flat-secondary{--yc-button-background-color: transparent;--yc-button-background-color-hover: var(--yc-color-base-simple-hover)}.yc-button_view_flat,.yc-button_view_flat:link,.yc-button_view_flat:visited,.yc-button_view_flat:active,.yc-button_view_flat:focus{color:var(--yc-color-text-primary)}.yc-button_view_flat:hover{color:var(--yc-color-text-primary)}.yc-button_view_flat-info,.yc-button_view_flat-info:link,.yc-button_view_flat-info:visited,.yc-button_view_flat-info:active,.yc-button_view_flat-info:focus{color:var(--yc-color-text-info)}.yc-button_view_flat-info:hover{color:var(--yc-color-text-info)}.yc-button_view_flat-danger,.yc-button_view_flat-danger:link,.yc-button_view_flat-danger:visited,.yc-button_view_flat-danger:active,.yc-button_view_flat-danger:focus{color:var(--yc-color-text-danger)}.yc-button_view_flat-danger:hover{color:var(--yc-color-text-danger)}.yc-button_view_flat-secondary,.yc-button_view_flat-secondary:link,.yc-button_view_flat-secondary:visited,.yc-button_view_flat-secondary:active,.yc-button_view_flat-secondary:focus{color:var(--yc-color-text-secondary)}.yc-button_view_flat-secondary:hover{color:var(--yc-color-text-primary)}.yc-button_view_normal-contrast{--yc-button-background-color: var(--yc-color-base-light);--yc-button-background-color-hover: var(--yc-color-base-light-hover)}.yc-button_view_normal-contrast,.yc-button_view_normal-contrast:link,.yc-button_view_normal-contrast:visited,.yc-button_view_normal-contrast:active,.yc-button_view_normal-contrast:focus{color:var(--yc-color-text-dark-primary)}.yc-button_view_normal-contrast:hover{color:var(--yc-color-text-dark-primary)}.yc-button_view_outlined-contrast{--yc-button-background-color: transparent;--yc-button-background-color-hover: var(--yc-color-base-light-simple-hover)}.yc-button_view_outlined-contrast,.yc-button_view_outlined-contrast:link,.yc-button_view_outlined-contrast:visited,.yc-button_view_outlined-contrast:active,.yc-button_view_outlined-contrast:focus{color:var(--yc-color-text-light-primary)}.yc-button_view_outlined-contrast:hover{color:var(--yc-color-text-light-primary)}.yc-button_view_outlined-contrast::before{border:1px solid var(--yc-color-line-light)}.yc-button_view_flat-contrast{--yc-button-background-color: transparent;--yc-button-background-color-hover: var(--yc-color-base-light-simple-hover)}.yc-button_view_flat-contrast,.yc-button_view_flat-contrast:link,.yc-button_view_flat-contrast:visited,.yc-button_view_flat-contrast:active,.yc-button_view_flat-contrast:focus{color:var(--yc-color-text-light-primary)}.yc-button_view_flat-contrast:hover{color:var(--yc-color-text-light-primary)}.yc-button_view_flat.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-info.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-info.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-danger.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-danger.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color: transparent;--yc-button-background-color-hover: transparent;color:var(--yc-color-text-hint)}.yc-button_view_flat-contrast.yc-button_disabled:not(.yc-button_loading),.yc-button_view_flat-contrast.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color: transparent;--yc-button-background-color-hover: transparent;color:var(--yc-color-text-light-hint)}.yc-button_view_normal-contrast.yc-button_disabled:not(.yc-button_loading),.yc-button_view_normal-contrast.yc-button_disabled:not(.yc-button_loading),.yc-button_view_outlined-contrast.yc-button_disabled:not(.yc-button_loading),.yc-button_view_outlined-contrast.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color: var(--yc-color-base-light-disabled);--yc-button-background-color-hover: var(--yc-color-base-light-disabled);color:var(--yc-color-text-light-secondary)}.yc-button.yc-button_pin_round-round::before{border-radius:var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-brick::before{border-radius:0}.yc-button.yc-button_pin_clear-clear::before{border-radius:0;border-left:0;border-right:0}.yc-button.yc-button_pin_circle-circle::before{border-radius:100px}.yc-button.yc-button_pin_round-brick::before{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-round::before{border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0}.yc-button.yc-button_pin_round-clear::before{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);border-right:0}.yc-button.yc-button_pin_clear-round::before{border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0;border-left:0}.yc-button.yc-button_pin_brick-clear::before{border-radius:0;border-right:0}.yc-button.yc-button_pin_clear-brick::before{border-radius:0;border-left:0}.yc-button.yc-button_pin_circle-brick::before{border-radius:100px 0 0 100px}.yc-button.yc-button_pin_brick-circle::before{border-radius:0 100px 100px 0}.yc-button.yc-button_pin_circle-clear::before{border-radius:100px 0 0 100px;border-right:0}.yc-button.yc-button_pin_clear-circle::before{border-radius:0 100px 100px 0;border-left:0}.yc-button.yc-button_pin_round-round::after{border-radius:var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-brick::after{border-radius:0}.yc-button.yc-button_pin_clear-clear::after{border-radius:0;border-left:0;border-right:0}.yc-button.yc-button_pin_circle-circle::after{border-radius:100px}.yc-button.yc-button_pin_round-brick::after{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius)}.yc-button.yc-button_pin_brick-round::after{border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0}.yc-button.yc-button_pin_round-clear::after{border-radius:var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);border-right:0}.yc-button.yc-button_pin_clear-round::after{border-radius:0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0;border-left:0}.yc-button.yc-button_pin_brick-clear::after{border-radius:0;border-right:0}.yc-button.yc-button_pin_clear-brick::after{border-radius:0;border-left:0}.yc-button.yc-button_pin_circle-brick::after{border-radius:100px 0 0 100px}.yc-button.yc-button_pin_brick-circle::after{border-radius:0 100px 100px 0}.yc-button.yc-button_pin_circle-clear::after{border-radius:100px 0 0 100px;border-right:0}.yc-button.yc-button_pin_clear-circle::after{border-radius:0 100px 100px 0;border-left:0}.yc-button__text{display:inline-block;white-space:nowrap}.yc-button__icon{display:inline-block;position:relative;height:100%;pointer-events:none}.yc-button__icon::after{content:" ";visibility:hidden}.yc-button__icon-inner{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center}.yc-button__icon_side_left,.yc-button__icon_side_right{position:absolute;top:0}.yc-button__icon_side_left{left:0}.yc-button__icon_side_right{right:0}.yc-button_disabled{cursor:default;pointer-events:none}.yc-button_disabled:not(.yc-button_loading){--yc-button-background-color: var(--yc-color-base-generic-accent-disabled);--yc-button-background-color-hover: var(--yc-color-base-generic-accent-disabled);color:var(--yc-color-text-hint)}.yc-button_disabled:not(.yc-button_loading)::before,.yc-button_disabled:not(.yc-button_loading):hover::before{border:none}.yc-button_disabled:active{transform:scale(1)}.yc-button_loading::before{background-image:repeating-linear-gradient(-45deg, var(--yc-button-background-color), var(--yc-button-background-color) 4px, var(--yc-button-background-color-hover) 4px, var(--yc-button-background-color-hover) 8px);background-size:150%;background-clip:padding-box;animation:yc-loading-animation .5s linear infinite}.yc-button_width_auto{max-width:100%}.yc-button_width_max{width:100%}.yc-button_width_auto .yc-button__text,.yc-button_width_max .yc-button__text{display:block;overflow:hidden;text-overflow:ellipsis}',"",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Button/Button.css"],names:[],mappings:"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",sourcesContent:['@charset "UTF-8";\n.yc-button {\n  --yc-button-height: 0;\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: transparent;\n  margin: 0;\n  padding: 0;\n  font-family: var(--yc-text-body-font-family);\n  font-size: inherit;\n  font-weight: 400;\n  color: inherit;\n  background: none;\n  border: none;\n  outline: none;\n  cursor: pointer;\n  display: inline-block;\n  position: relative;\n  overflow: visible;\n  box-sizing: border-box;\n  height: var(--yc-button-height);\n  line-height: var(--yc-button-height);\n  user-select: none;\n  text-align: center;\n  white-space: nowrap;\n  text-decoration: none;\n  background: transparent;\n  touch-action: manipulation;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  transition: transform 0.1s ease-out, color 0.15s linear;\n  transform: scale(1);\n}\n.yc-button::before {\n  content: "";\n  position: absolute;\n  z-index: -1;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: var(--yc-button-background-color);\n  transition: background-color 0.15s linear;\n}\n.yc-button:hover::before {\n  background-color: var(--yc-button-background-color-hover);\n}\n.yc-button:focus::before {\n  box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.yc-button:focus:not(:focus-visible)::before {\n  box-shadow: none;\n}\n.yc-button::after {\n  content: "";\n  position: absolute;\n  z-index: -1;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  transform: scale(1);\n  transition: none;\n}\n.yc-button:active {\n  transition: none;\n  transform: scale(0.96);\n}\n.yc-button:active::after {\n  transform: scale(1.042);\n}\n.yc-button_size_xs {\n  --yc-button-height: 20px;\n  font-size: 13px;\n  --yc-button-border-radius: var(--yc-border-radius-xs);\n}\n.yc-button_size_xs .yc-button__text {\n  margin: 0 6px;\n}\n.yc-button_size_xs .yc-button__icon {\n  width: var(--yc-button-height);\n}\n.yc-button_size_xs .yc-button__icon_side_left ~ .yc-button__text {\n  margin-left: 18px;\n}\n.yc-button_size_xs .yc-button__icon_side_right ~ .yc-button__text {\n  margin-right: 18px;\n}\n.yc-button_size_s {\n  --yc-button-height: 24px;\n  font-size: 13px;\n  --yc-button-border-radius: var(--yc-border-radius-s);\n}\n.yc-button_size_s .yc-button__text {\n  margin: 0 10px;\n}\n.yc-button_size_s .yc-button__icon {\n  width: var(--yc-button-height);\n}\n.yc-button_size_s .yc-button__icon_side_left ~ .yc-button__text {\n  margin-left: 22px;\n}\n.yc-button_size_s .yc-button__icon_side_right ~ .yc-button__text {\n  margin-right: 22px;\n}\n.yc-button_size_m {\n  --yc-button-height: 28px;\n  font-size: 13px;\n  --yc-button-border-radius: var(--yc-border-radius-m);\n}\n.yc-button_size_m .yc-button__text {\n  margin: 0 13px;\n}\n.yc-button_size_m .yc-button__icon {\n  width: var(--yc-button-height);\n}\n.yc-button_size_m .yc-button__icon_side_left ~ .yc-button__text {\n  margin-left: 25px;\n}\n.yc-button_size_m .yc-button__icon_side_right ~ .yc-button__text {\n  margin-right: 25px;\n}\n.yc-button_size_l {\n  --yc-button-height: 36px;\n  font-size: 13px;\n  --yc-button-border-radius: var(--yc-border-radius-l);\n}\n.yc-button_size_l .yc-button__text {\n  margin: 0 18px;\n}\n.yc-button_size_l .yc-button__icon {\n  width: var(--yc-button-height);\n}\n.yc-button_size_l .yc-button__icon_side_left ~ .yc-button__text {\n  margin-left: 33px;\n}\n.yc-button_size_l .yc-button__icon_side_right ~ .yc-button__text {\n  margin-right: 33px;\n}\n.yc-button_size_xl {\n  --yc-button-height: 44px;\n  font-size: 15px;\n  --yc-button-border-radius: var(--yc-border-radius-xl);\n}\n.yc-button_size_xl .yc-button__text {\n  margin: 0 25px;\n}\n.yc-button_size_xl .yc-button__icon {\n  width: var(--yc-button-height);\n}\n.yc-button_size_xl .yc-button__icon_side_left ~ .yc-button__text {\n  margin-left: 40px;\n}\n.yc-button_size_xl .yc-button__icon_side_right ~ .yc-button__text {\n  margin-right: 40px;\n}\n.yc-button_view_normal {\n  --yc-button-background-color: var(--yc-color-base-generic);\n  --yc-button-background-color-hover: var(--yc-color-base-generic-hover);\n}\n.yc-button_view_normal, .yc-button_view_normal:link, .yc-button_view_normal:visited, .yc-button_view_normal:active, .yc-button_view_normal:focus {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_normal:hover {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_normal.yc-button_selected {\n  --yc-button-background-color: var(--yc-color-base-selection);\n  --yc-button-background-color-hover: var(--yc-color-base-selection-hover);\n}\n.yc-button_view_normal.yc-button_selected, .yc-button_view_normal.yc-button_selected:link, .yc-button_view_normal.yc-button_selected:visited, .yc-button_view_normal.yc-button_selected:active, .yc-button_view_normal.yc-button_selected:focus {\n  color: var(--yc-my-color-brand-text, var(--yc-color-text-special));\n}\n.yc-button_view_normal.yc-button_selected:hover {\n  color: var(--yc-my-color-brand-text, var(--yc-color-text-special));\n}\n.yc-button_view_action {\n  --yc-button-background-color: var(--yc-color-base-special);\n  --yc-button-background-color-hover: var(--yc-color-base-special-hover);\n}\n.yc-button_view_action, .yc-button_view_action:link, .yc-button_view_action:visited, .yc-button_view_action:active, .yc-button_view_action:focus {\n  color: var(--yc-my-color-brand-text-contrast);\n}\n.yc-button_view_action:hover {\n  color: var(--yc-my-color-brand-text-contrast);\n}\n.yc-button_view_outlined, .yc-button_view_outlined-info, .yc-button_view_outlined-danger {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: var(--yc-color-base-simple-hover);\n}\n.yc-button_view_outlined, .yc-button_view_outlined:link, .yc-button_view_outlined:visited, .yc-button_view_outlined:active, .yc-button_view_outlined:focus {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_outlined:hover {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_outlined::before {\n  border: 1px solid var(--yc-color-line-generic);\n}\n.yc-button_view_outlined-info, .yc-button_view_outlined-info:link, .yc-button_view_outlined-info:visited, .yc-button_view_outlined-info:active, .yc-button_view_outlined-info:focus {\n  color: var(--yc-color-text-info);\n}\n.yc-button_view_outlined-info:hover {\n  color: var(--yc-color-text-info);\n}\n.yc-button_view_outlined-info::before {\n  border: 1px solid var(--yc-color-line-info);\n}\n.yc-button_view_outlined-danger, .yc-button_view_outlined-danger:link, .yc-button_view_outlined-danger:visited, .yc-button_view_outlined-danger:active, .yc-button_view_outlined-danger:focus {\n  color: var(--yc-color-text-danger);\n}\n.yc-button_view_outlined-danger:hover {\n  color: var(--yc-color-text-danger);\n}\n.yc-button_view_outlined-danger::before {\n  border: 1px solid var(--yc-color-line-danger);\n}\n.yc-button_view_raised {\n  --yc-button-background-color: var(--yc-color-base-float);\n  --yc-button-background-color-hover: var(--yc-color-base-float-hover);\n}\n.yc-button_view_raised, .yc-button_view_raised:link, .yc-button_view_raised:visited, .yc-button_view_raised:active, .yc-button_view_raised:focus {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_raised:hover {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_raised::before {\n  box-shadow: 0 3px 5px var(--yc-color-sfx-shadow);\n}\n.yc-button_view_raised:focus:not(:focus-visible)::before {\n  box-shadow: 0 3px 5px var(--yc-color-sfx-shadow);\n}\n.yc-button_view_raised:active::before {\n  box-shadow: 0 1px 2px var(--yc-color-sfx-shadow);\n}\n.yc-button_view_raised:active:focus::before {\n  box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.yc-button_view_raised:active:focus:not(:focus-visible)::before {\n  box-shadow: 0 1px 2px var(--yc-color-sfx-shadow);\n}\n.yc-button_view_flat, .yc-button_view_flat-info, .yc-button_view_flat-danger, .yc-button_view_flat-secondary {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: var(--yc-color-base-simple-hover);\n}\n.yc-button_view_flat, .yc-button_view_flat:link, .yc-button_view_flat:visited, .yc-button_view_flat:active, .yc-button_view_flat:focus {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_flat:hover {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_flat-info, .yc-button_view_flat-info:link, .yc-button_view_flat-info:visited, .yc-button_view_flat-info:active, .yc-button_view_flat-info:focus {\n  color: var(--yc-color-text-info);\n}\n.yc-button_view_flat-info:hover {\n  color: var(--yc-color-text-info);\n}\n.yc-button_view_flat-danger, .yc-button_view_flat-danger:link, .yc-button_view_flat-danger:visited, .yc-button_view_flat-danger:active, .yc-button_view_flat-danger:focus {\n  color: var(--yc-color-text-danger);\n}\n.yc-button_view_flat-danger:hover {\n  color: var(--yc-color-text-danger);\n}\n.yc-button_view_flat-secondary, .yc-button_view_flat-secondary:link, .yc-button_view_flat-secondary:visited, .yc-button_view_flat-secondary:active, .yc-button_view_flat-secondary:focus {\n  color: var(--yc-color-text-secondary);\n}\n.yc-button_view_flat-secondary:hover {\n  color: var(--yc-color-text-primary);\n}\n.yc-button_view_normal-contrast {\n  --yc-button-background-color: var(--yc-color-base-light);\n  --yc-button-background-color-hover: var(--yc-color-base-light-hover);\n}\n.yc-button_view_normal-contrast, .yc-button_view_normal-contrast:link, .yc-button_view_normal-contrast:visited, .yc-button_view_normal-contrast:active, .yc-button_view_normal-contrast:focus {\n  color: var(--yc-color-text-dark-primary);\n}\n.yc-button_view_normal-contrast:hover {\n  color: var(--yc-color-text-dark-primary);\n}\n.yc-button_view_outlined-contrast {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: var(--yc-color-base-light-simple-hover);\n}\n.yc-button_view_outlined-contrast, .yc-button_view_outlined-contrast:link, .yc-button_view_outlined-contrast:visited, .yc-button_view_outlined-contrast:active, .yc-button_view_outlined-contrast:focus {\n  color: var(--yc-color-text-light-primary);\n}\n.yc-button_view_outlined-contrast:hover {\n  color: var(--yc-color-text-light-primary);\n}\n.yc-button_view_outlined-contrast::before {\n  border: 1px solid var(--yc-color-line-light);\n}\n.yc-button_view_flat-contrast {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: var(--yc-color-base-light-simple-hover);\n}\n.yc-button_view_flat-contrast, .yc-button_view_flat-contrast:link, .yc-button_view_flat-contrast:visited, .yc-button_view_flat-contrast:active, .yc-button_view_flat-contrast:focus {\n  color: var(--yc-color-text-light-primary);\n}\n.yc-button_view_flat-contrast:hover {\n  color: var(--yc-color-text-light-primary);\n}\n.yc-button_view_flat.yc-button_disabled:not(.yc-button_loading), .yc-button_view_flat.yc-button_disabled:not(.yc-button_loading), .yc-button_view_flat-info.yc-button_disabled:not(.yc-button_loading), .yc-button_view_flat-info.yc-button_disabled:not(.yc-button_loading), .yc-button_view_flat-danger.yc-button_disabled:not(.yc-button_loading), .yc-button_view_flat-danger.yc-button_disabled:not(.yc-button_loading) {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: transparent;\n  color: var(--yc-color-text-hint);\n}\n.yc-button_view_flat-contrast.yc-button_disabled:not(.yc-button_loading), .yc-button_view_flat-contrast.yc-button_disabled:not(.yc-button_loading) {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: transparent;\n  color: var(--yc-color-text-light-hint);\n}\n.yc-button_view_normal-contrast.yc-button_disabled:not(.yc-button_loading), .yc-button_view_normal-contrast.yc-button_disabled:not(.yc-button_loading), .yc-button_view_outlined-contrast.yc-button_disabled:not(.yc-button_loading), .yc-button_view_outlined-contrast.yc-button_disabled:not(.yc-button_loading) {\n  --yc-button-background-color: var(--yc-color-base-light-disabled);\n  --yc-button-background-color-hover: var(--yc-color-base-light-disabled);\n  color: var(--yc-color-text-light-secondary);\n}\n.yc-button.yc-button_pin_round-round::before {\n  border-radius: var(--yc-button-border-radius);\n}\n.yc-button.yc-button_pin_brick-brick::before {\n  border-radius: 0;\n}\n.yc-button.yc-button_pin_clear-clear::before {\n  border-radius: 0;\n  border-left: 0;\n  border-right: 0;\n}\n.yc-button.yc-button_pin_circle-circle::before {\n  border-radius: 100px;\n}\n.yc-button.yc-button_pin_round-brick::before {\n  border-radius: var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);\n}\n.yc-button.yc-button_pin_brick-round::before {\n  border-radius: 0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0;\n}\n.yc-button.yc-button_pin_round-clear::before {\n  border-radius: var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);\n  border-right: 0;\n}\n.yc-button.yc-button_pin_clear-round::before {\n  border-radius: 0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0;\n  border-left: 0;\n}\n.yc-button.yc-button_pin_brick-clear::before {\n  border-radius: 0;\n  border-right: 0;\n}\n.yc-button.yc-button_pin_clear-brick::before {\n  border-radius: 0;\n  border-left: 0;\n}\n.yc-button.yc-button_pin_circle-brick::before {\n  border-radius: 100px 0 0 100px;\n}\n.yc-button.yc-button_pin_brick-circle::before {\n  border-radius: 0 100px 100px 0;\n}\n.yc-button.yc-button_pin_circle-clear::before {\n  border-radius: 100px 0 0 100px;\n  border-right: 0;\n}\n.yc-button.yc-button_pin_clear-circle::before {\n  border-radius: 0 100px 100px 0;\n  border-left: 0;\n}\n.yc-button.yc-button_pin_round-round::after {\n  border-radius: var(--yc-button-border-radius);\n}\n.yc-button.yc-button_pin_brick-brick::after {\n  border-radius: 0;\n}\n.yc-button.yc-button_pin_clear-clear::after {\n  border-radius: 0;\n  border-left: 0;\n  border-right: 0;\n}\n.yc-button.yc-button_pin_circle-circle::after {\n  border-radius: 100px;\n}\n.yc-button.yc-button_pin_round-brick::after {\n  border-radius: var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);\n}\n.yc-button.yc-button_pin_brick-round::after {\n  border-radius: 0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0;\n}\n.yc-button.yc-button_pin_round-clear::after {\n  border-radius: var(--yc-button-border-radius) 0 0 var(--yc-button-border-radius);\n  border-right: 0;\n}\n.yc-button.yc-button_pin_clear-round::after {\n  border-radius: 0 var(--yc-button-border-radius) var(--yc-button-border-radius) 0;\n  border-left: 0;\n}\n.yc-button.yc-button_pin_brick-clear::after {\n  border-radius: 0;\n  border-right: 0;\n}\n.yc-button.yc-button_pin_clear-brick::after {\n  border-radius: 0;\n  border-left: 0;\n}\n.yc-button.yc-button_pin_circle-brick::after {\n  border-radius: 100px 0 0 100px;\n}\n.yc-button.yc-button_pin_brick-circle::after {\n  border-radius: 0 100px 100px 0;\n}\n.yc-button.yc-button_pin_circle-clear::after {\n  border-radius: 100px 0 0 100px;\n  border-right: 0;\n}\n.yc-button.yc-button_pin_clear-circle::after {\n  border-radius: 0 100px 100px 0;\n  border-left: 0;\n}\n.yc-button__text {\n  display: inline-block;\n  white-space: nowrap;\n}\n.yc-button__icon {\n  display: inline-block;\n  position: relative;\n  height: 100%;\n  pointer-events: none;\n}\n.yc-button__icon::after {\n  content: " ";\n  visibility: hidden;\n}\n.yc-button__icon-inner {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.yc-button__icon_side_left, .yc-button__icon_side_right {\n  position: absolute;\n  top: 0;\n}\n.yc-button__icon_side_left {\n  left: 0;\n}\n.yc-button__icon_side_right {\n  right: 0;\n}\n.yc-button_disabled {\n  cursor: default;\n  pointer-events: none;\n}\n.yc-button_disabled:not(.yc-button_loading) {\n  --yc-button-background-color: var(--yc-color-base-generic-accent-disabled);\n  --yc-button-background-color-hover: var(--yc-color-base-generic-accent-disabled);\n  color: var(--yc-color-text-hint);\n}\n.yc-button_disabled:not(.yc-button_loading)::before, .yc-button_disabled:not(.yc-button_loading):hover::before {\n  border: none;\n}\n.yc-button_disabled:active {\n  transform: scale(1);\n}\n.yc-button_loading::before {\n  background-image: repeating-linear-gradient(-45deg, var(--yc-button-background-color), var(--yc-button-background-color) 4px, var(--yc-button-background-color-hover) 4px, var(--yc-button-background-color-hover) 8px);\n  background-size: 150%;\n  background-clip: padding-box;\n  animation: yc-loading-animation 0.5s linear infinite;\n}\n.yc-button_width_auto {\n  max-width: 100%;\n}\n.yc-button_width_max {\n  width: 100%;\n}\n.yc-button_width_auto .yc-button__text, .yc-button_width_max .yc-button__text {\n  display: block;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}'],sourceRoot:""}]);const c=a},2377:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'.yc-card{--yc-card-box-shadow: none;--yc-card-border-radius: 8px;background-color:rgba(0,0,0,0);box-shadow:var(--yc-card-box-shadow);box-sizing:border-box;border-radius:var(--yc-card-border-radius)}.yc-card_type_action{background-color:var(--yc-color-base-float);--yc-card-box-shadow: 0px 1px 5px var(--yc-color-sfx-shadow)}.yc-card_type_action.yc-card_clickable:hover{--yc-card-box-shadow: 0px 3px 10px var(--yc-color-sfx-shadow);cursor:pointer}.yc-card_type_selection{position:relative;border:1px solid var(--yc-color-line-generic)}.yc-card_type_selection::before{position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;border-radius:var(--yc-card-border-radius);pointer-events:none}.yc-card_type_selection.yc-card_clickable:hover{border-color:rgba(0,0,0,0);cursor:pointer}.yc-card_type_selection.yc-card_clickable:hover::before{content:"";border:2px solid var(--yc-color-line-selection-hover)}.yc-card_type_selection.yc-card_selected:not(.yc-card_disabled){border-color:rgba(0,0,0,0)}.yc-card_type_selection.yc-card_selected:not(.yc-card_disabled)::before{content:"";border:2px solid var(--yc-color-line-selection-active)}.yc-card_type_selection.yc-card_view_clear{border-color:rgba(0,0,0,0)}.yc-card_type_container.yc-card_theme_normal.yc-card_view_outlined{border:1px solid var(--yc-color-line-generic)}.yc-card_type_container.yc-card_theme_normal.yc-card_view_filled{background-color:var(--yc-color-base-generic)}.yc-card_type_container.yc-card_theme_info.yc-card_view_outlined{border:1px solid var(--yc-color-line-info)}.yc-card_type_container.yc-card_theme_info.yc-card_view_filled{background-color:var(--yc-color-base-info)}.yc-card_type_container.yc-card_theme_positive.yc-card_view_outlined{border:1px solid var(--yc-color-line-positive)}.yc-card_type_container.yc-card_theme_positive.yc-card_view_filled{background-color:var(--yc-color-base-positive)}.yc-card_type_container.yc-card_theme_warning.yc-card_view_outlined{border:1px solid var(--yc-color-line-warning)}.yc-card_type_container.yc-card_theme_warning.yc-card_view_filled{background-color:var(--yc-color-base-warning)}.yc-card_type_container.yc-card_theme_danger.yc-card_view_outlined{border:1px solid var(--yc-color-line-danger)}.yc-card_type_container.yc-card_theme_danger.yc-card_view_filled{background-color:var(--yc-color-base-danger)}.yc-card_type_container.yc-card_view_raised{background-color:var(--yc-color-base-float)}.yc-card_type_container.yc-card_view_raised.yc-card_size_m{--yc-card-box-shadow: 0px 1px 5px var(--yc-color-sfx-shadow)}.yc-card_type_container.yc-card_view_raised.yc-card_size_l{--yc-card-box-shadow: 0px 1px 6px var(--yc-color-sfx-shadow-light), 1px 3px 13px var(--yc-color-sfx-shadow-light)}.yc-card_size_m{--yc-card-border-radius: 8px}.yc-card_size_l{--yc-card-border-radius: 16px}',"",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Card/Card.css"],names:[],mappings:"AAAA,SACE,0BAAA,CACA,4BAAA,CACA,8BAAA,CACA,oCAAA,CACA,qBAAA,CACA,0CAAA,CAEF,qBACE,2CAAA,CACA,4DAAA,CAEF,6CACE,6DAAA,CACA,cAAA,CAEF,wBACE,iBAAA,CACA,6CAAA,CAEF,gCACE,iBAAA,CACA,QAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,0CAAA,CACA,mBAAA,CAEF,gDACE,0BAAA,CACA,cAAA,CAEF,wDACE,UAAA,CACA,qDAAA,CAEF,gEACE,0BAAA,CAEF,wEACE,UAAA,CACA,sDAAA,CAEF,2CACE,0BAAA,CAEF,mEACE,6CAAA,CAEF,iEACE,6CAAA,CAEF,iEACE,0CAAA,CAEF,+DACE,0CAAA,CAEF,qEACE,8CAAA,CAEF,mEACE,8CAAA,CAEF,oEACE,6CAAA,CAEF,kEACE,6CAAA,CAEF,mEACE,4CAAA,CAEF,iEACE,4CAAA,CAEF,4CACE,2CAAA,CAEF,2DACE,4DAAA,CAGF,2DACE,iHAAA,CAIF,gBACE,4BAAA,CAEF,gBACE,6BAAA",sourcesContent:['.yc-card {\n  --yc-card-box-shadow: none;\n  --yc-card-border-radius: 8px;\n  background-color: transparent;\n  box-shadow: var(--yc-card-box-shadow);\n  box-sizing: border-box;\n  border-radius: var(--yc-card-border-radius);\n}\n.yc-card_type_action {\n  background-color: var(--yc-color-base-float);\n  --yc-card-box-shadow: 0px 1px 5px var(--yc-color-sfx-shadow);\n}\n.yc-card_type_action.yc-card_clickable:hover {\n  --yc-card-box-shadow: 0px 3px 10px var(--yc-color-sfx-shadow);\n  cursor: pointer;\n}\n.yc-card_type_selection {\n  position: relative;\n  border: 1px solid var(--yc-color-line-generic);\n}\n.yc-card_type_selection::before {\n  position: absolute;\n  top: -1px;\n  left: -1px;\n  right: -1px;\n  bottom: -1px;\n  border-radius: var(--yc-card-border-radius);\n  pointer-events: none;\n}\n.yc-card_type_selection.yc-card_clickable:hover {\n  border-color: transparent;\n  cursor: pointer;\n}\n.yc-card_type_selection.yc-card_clickable:hover::before {\n  content: "";\n  border: 2px solid var(--yc-color-line-selection-hover);\n}\n.yc-card_type_selection.yc-card_selected:not(.yc-card_disabled) {\n  border-color: transparent;\n}\n.yc-card_type_selection.yc-card_selected:not(.yc-card_disabled)::before {\n  content: "";\n  border: 2px solid var(--yc-color-line-selection-active);\n}\n.yc-card_type_selection.yc-card_view_clear {\n  border-color: transparent;\n}\n.yc-card_type_container.yc-card_theme_normal.yc-card_view_outlined {\n  border: 1px solid var(--yc-color-line-generic);\n}\n.yc-card_type_container.yc-card_theme_normal.yc-card_view_filled {\n  background-color: var(--yc-color-base-generic);\n}\n.yc-card_type_container.yc-card_theme_info.yc-card_view_outlined {\n  border: 1px solid var(--yc-color-line-info);\n}\n.yc-card_type_container.yc-card_theme_info.yc-card_view_filled {\n  background-color: var(--yc-color-base-info);\n}\n.yc-card_type_container.yc-card_theme_positive.yc-card_view_outlined {\n  border: 1px solid var(--yc-color-line-positive);\n}\n.yc-card_type_container.yc-card_theme_positive.yc-card_view_filled {\n  background-color: var(--yc-color-base-positive);\n}\n.yc-card_type_container.yc-card_theme_warning.yc-card_view_outlined {\n  border: 1px solid var(--yc-color-line-warning);\n}\n.yc-card_type_container.yc-card_theme_warning.yc-card_view_filled {\n  background-color: var(--yc-color-base-warning);\n}\n.yc-card_type_container.yc-card_theme_danger.yc-card_view_outlined {\n  border: 1px solid var(--yc-color-line-danger);\n}\n.yc-card_type_container.yc-card_theme_danger.yc-card_view_filled {\n  background-color: var(--yc-color-base-danger);\n}\n.yc-card_type_container.yc-card_view_raised {\n  background-color: var(--yc-color-base-float);\n}\n.yc-card_type_container.yc-card_view_raised.yc-card_size_m {\n  --yc-card-box-shadow: 0px 1px 5px var(--yc-color-sfx-shadow);\n}\n\n.yc-card_type_container.yc-card_view_raised.yc-card_size_l {\n  --yc-card-box-shadow: 0px 1px 6px var(--yc-color-sfx-shadow-light),\n      1px 3px 13px var(--yc-color-sfx-shadow-light);\n}\n\n.yc-card_size_m {\n  --yc-card-border-radius: 8px;\n}\n.yc-card_size_l {\n  --yc-card-border-radius: 16px;\n}'],sourceRoot:""}]);const c=a},4030:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'.yc-checkbox__indicator{display:inline-block;position:relative;cursor:inherit}.yc-checkbox__indicator::before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0);border:1px solid var(--yc-color-line-generic-accent);border-radius:4px;transition:background .1s linear}.yc-checkbox__indicator::after{content:" ";visibility:hidden}.yc-checkbox__icon{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;pointer-events:none;visibility:hidden;color:rgba(0,0,0,0);transform:translateY(-5px);transition:color .1s,transform .2s}.yc-checkbox__control{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;opacity:0;background:none;border:none;outline:none;cursor:inherit}.yc-checkbox__outline{position:absolute;top:0;left:0;width:100%;height:100%;background:none;pointer-events:none;border-radius:4px}.yc-checkbox__control:focus+.yc-checkbox__outline{box-shadow:0 0 0 2px var(--yc-color-line-misc)}.yc-checkbox__control:focus:not(:focus-visible)+.yc-checkbox__outline{box-shadow:none}.yc-checkbox_size_m .yc-checkbox__icon-svg_type_tick{width:8px;height:10px}.yc-checkbox_size_m .yc-checkbox__icon-svg_type_dash{width:12px;height:12px}.yc-checkbox_size_m .yc-checkbox__indicator{width:14px;height:14px}.yc-checkbox_size_l .yc-checkbox__icon-svg_type_tick{width:11px;height:9px}.yc-checkbox_size_l .yc-checkbox__icon-svg_type_dash{width:15px;height:15px}.yc-checkbox_size_l .yc-checkbox__indicator{width:17px;height:17px}.yc-checkbox:hover .yc-checkbox__indicator::before{border-color:var(--yc-color-line-generic-accent-hover)}.yc-checkbox_checked .yc-checkbox__indicator::before,.yc-checkbox_indeterminate .yc-checkbox__indicator::before{background-color:var(--yc-color-base-special);border:rgba(0,0,0,0)}.yc-checkbox_checked .yc-checkbox__icon,.yc-checkbox_indeterminate .yc-checkbox__icon{visibility:visible;color:var(--yc-my-color-brand-text-contrast);transform:translateX(0)}.yc-checkbox_disabled .yc-checkbox__indicator::before{background-color:var(--yc-color-base-generic-accent-disabled);border:rgba(0,0,0,0)}.yc-checkbox_disabled.yc-checkbox_checked .yc-checkbox__indicator::before,.yc-checkbox_disabled.yc-checkbox_indeterminate .yc-checkbox__indicator::before{background-color:var(--yc-color-base-special);opacity:.5}',"",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Checkbox/Checkbox.css"],names:[],mappings:"AAAA,wBACA,oBACE,CAAA,iBACA,CAAA,cACA,CAAA,gCAEF,UACE,CAAA,iBACA,CAAA,KACA,CAAA,MACA,CAAA,OACA,CAAA,QACA,CAAA,8BACA,CAAA,oDACA,CAAA,iBACA,CAAA,gCACA,CAAA,+BAEF,WACE,CAAA,iBACA,CAAA,mBAEF,iBACE,CAAA,KACA,CAAA,MACA,CAAA,OACA,CAAA,QACA,CAAA,YACA,CAAA,kBACA,CAAA,sBACA,CAAA,mBACA,CAAA,iBACA,CAAA,mBACA,CAAA,0BACA,CAAA,kCACA,CAAA,sBAEF,iBACE,CAAA,KACA,CAAA,MACA,CAAA,UACA,CAAA,WACA,CAAA,QACA,CAAA,SACA,CAAA,SACA,CAAA,eACA,CAAA,WACA,CAAA,YACA,CAAA,cACA,CAAA,sBAEF,iBACE,CAAA,KACA,CAAA,MACA,CAAA,UACA,CAAA,WACA,CAAA,eACA,CAAA,mBACA,CAAA,iBACA,CAAA,kDAEF,8CACE,CAAA,sEAEF,eACE,CAAA,qDAEF,SACE,CAAA,WACA,CAAA,qDAEF,UACE,CAAA,WACA,CAAA,4CAEF,UACE,CAAA,WACA,CAAA,qDAEF,UACE,CAAA,UACA,CAAA,qDAEF,UACE,CAAA,WACA,CAAA,4CAEF,UACE,CAAA,WACA,CAAA,mDAEF,sDACE,CAAA,gHAEF,6CACE,CAAA,oBACA,CAAA,sFAEF,kBACE,CAAA,4CACA,CAAA,uBACA,CAAA,sDAEF,6DACE,CAAA,oBACA,CAAA,0JAEF,6CACE,CAAA,UACA",sourcesContent:['@charset "UTF-8";\n.yc-checkbox__indicator {\n  display: inline-block;\n  position: relative;\n  cursor: inherit;\n}\n.yc-checkbox__indicator::before {\n  content: "";\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: transparent;\n  border: 1px solid var(--yc-color-line-generic-accent);\n  border-radius: 4px;\n  transition: background 0.1s linear;\n}\n.yc-checkbox__indicator::after {\n  content: " ";\n  visibility: hidden;\n}\n.yc-checkbox__icon {\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  pointer-events: none;\n  visibility: hidden;\n  color: transparent;\n  transform: translateY(-5px);\n  transition: color 0.1s, transform 0.2s;\n}\n.yc-checkbox__control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  opacity: 0;\n  background: none;\n  border: none;\n  outline: none;\n  cursor: inherit;\n}\n.yc-checkbox__outline {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background: none;\n  pointer-events: none;\n  border-radius: 4px;\n}\n.yc-checkbox__control:focus + .yc-checkbox__outline {\n  box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.yc-checkbox__control:focus:not(:focus-visible) + .yc-checkbox__outline {\n  box-shadow: none;\n}\n.yc-checkbox_size_m .yc-checkbox__icon-svg_type_tick {\n  width: 8px;\n  height: 10px;\n}\n.yc-checkbox_size_m .yc-checkbox__icon-svg_type_dash {\n  width: 12px;\n  height: 12px;\n}\n.yc-checkbox_size_m .yc-checkbox__indicator {\n  width: 14px;\n  height: 14px;\n}\n.yc-checkbox_size_l .yc-checkbox__icon-svg_type_tick {\n  width: 11px;\n  height: 9px;\n}\n.yc-checkbox_size_l .yc-checkbox__icon-svg_type_dash {\n  width: 15px;\n  height: 15px;\n}\n.yc-checkbox_size_l .yc-checkbox__indicator {\n  width: 17px;\n  height: 17px;\n}\n.yc-checkbox:hover .yc-checkbox__indicator::before {\n  border-color: var(--yc-color-line-generic-accent-hover);\n}\n.yc-checkbox_checked .yc-checkbox__indicator::before, .yc-checkbox_indeterminate .yc-checkbox__indicator::before {\n  background-color: var(--yc-color-base-special);\n  border: transparent;\n}\n.yc-checkbox_checked .yc-checkbox__icon, .yc-checkbox_indeterminate .yc-checkbox__icon {\n  visibility: visible;\n  color: var(--yc-my-color-brand-text-contrast);\n  transform: translateX(0);\n}\n.yc-checkbox_disabled .yc-checkbox__indicator::before {\n  background-color: var(--yc-color-base-generic-accent-disabled);\n  border: transparent;\n}\n.yc-checkbox_disabled.yc-checkbox_checked .yc-checkbox__indicator::before, .yc-checkbox_disabled.yc-checkbox_indeterminate .yc-checkbox__indicator::before {\n  background-color: var(--yc-color-base-special);\n  opacity: 0.5;\n}'],sourceRoot:""}]);const c=a},4907:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-clipboard-button{--yc-button-background-color: transparent;--yc-button-background-color-hover: transparent}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/ClipboardButton/ClipboardButton.css"],names:[],mappings:"AAAA,qBACE,yCAAA,CACA,+CAAA",sourcesContent:[".yc-clipboard-button {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: transparent;\n}"],sourceRoot:""}]);const c=a},4762:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-clipboard-icon__state{animation:yc-clipboard-icon-state-dash 1s}@keyframes yc-clipboard-icon-state-dash{0%{stroke-dasharray:0 15}40%{stroke-dasharray:15 0}100%{stroke-dasharray:15 0}}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/ClipboardIcon/ClipboardIcon.css"],names:[],mappings:"AAAA,0BACE,yCAAA,CAGF,wCACE,GACE,qBAAA,CAEF,IACE,qBAAA,CAEF,KACE,qBAAA,CAAA",sourcesContent:[".yc-clipboard-icon__state {\n  animation: yc-clipboard-icon-state-dash 1s;\n}\n\n@keyframes yc-clipboard-icon-state-dash {\n  0% {\n    stroke-dasharray: 0 15;\n  }\n  40% {\n    stroke-dasharray: 15 0;\n  }\n  100% {\n    stroke-dasharray: 15 0;\n  }\n}"],sourceRoot:""}]);const c=a},4249:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-control-label{display:inline-flex;font-family:var(--yc-text-body-font-family);font-weight:normal;color:var(--yc-color-text-primary);user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer}.yc-control-label_disabled{cursor:default;pointer-events:none}.yc-control-label_size_m{font-size:13px;line-height:15px}.yc-control-label_size_l{font-size:15px;line-height:18px}.yc-control-label__indicator{flex-shrink:0}.yc-control-label__text{flex-grow:1;white-space:normal}.yc-control-label_disabled .yc-control-label__text{opacity:.6}.yc-control-label_size_m .yc-control-label__text{margin-left:5px}.yc-control-label_size_l .yc-control-label__text{margin-left:7px}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/ControlLabel/ControlLabel.css"],names:[],mappings:"AAAA,kBACE,mBAAA,CACA,2CAAA,CACA,kBAAA,CACA,kCAAA,CACA,gBAAA,CACA,yBAAA,CACA,yCAAA,CACA,cAAA,CAEF,2BACE,cAAA,CACA,mBAAA,CAEF,yBACE,cAAA,CACA,gBAAA,CAEF,yBACE,cAAA,CACA,gBAAA,CAEF,6BACE,aAAA,CAEF,wBACE,WAAA,CACA,kBAAA,CAEF,mDACE,UAAA,CAEF,iDACE,eAAA,CAEF,iDACE,eAAA",sourcesContent:[".yc-control-label {\n  display: inline-flex;\n  font-family: var(--yc-text-body-font-family);\n  font-weight: normal;\n  color: var(--yc-color-text-primary);\n  user-select: none;\n  touch-action: manipulation;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  cursor: pointer;\n}\n.yc-control-label_disabled {\n  cursor: default;\n  pointer-events: none;\n}\n.yc-control-label_size_m {\n  font-size: 13px;\n  line-height: 15px;\n}\n.yc-control-label_size_l {\n  font-size: 15px;\n  line-height: 18px;\n}\n.yc-control-label__indicator {\n  flex-shrink: 0;\n}\n.yc-control-label__text {\n  flex-grow: 1;\n  white-space: normal;\n}\n.yc-control-label_disabled .yc-control-label__text {\n  opacity: 0.6;\n}\n.yc-control-label_size_m .yc-control-label__text {\n  margin-left: 5px;\n}\n.yc-control-label_size_l .yc-control-label__text {\n  margin-left: 7px;\n}"],sourceRoot:""}]);const c=a},2988:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-icon{color:inherit;line-height:0;vertical-align:top}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Icon/Icon.css"],names:[],mappings:"AAAA,SACE,aAAA,CACA,aAAA,CACA,kBAAA",sourcesContent:[".yc-icon {\n  color: inherit;\n  line-height: 0;\n  vertical-align: top;\n}"],sourceRoot:""}]);const c=a},3799:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-list{outline:none;display:flex;flex-direction:column;flex:1 1 auto;width:100%}.yc-list__filter{padding:0 var(--yc-list-margin);margin-bottom:8px;flex:0 0 auto}.yc-list__items{flex:1 1 auto}.yc-list__items_virtualized{height:var(--yc-list-height)}.yc-list__item,.yc-list__empty-placeholder{box-sizing:border-box;display:flex;align-items:center;padding:0 var(--yc-list-margin);user-select:none;overflow:hidden}.yc-list__item{height:var(--yc-list-item-height)}.yc-list__item_sortable{cursor:move}.yc-list__item_sorting{z-index:100001;background:var(--yc-color-base-simple-hover-solid);padding:0 var(--yc-list-margin);cursor:move}.yc-list__item_active{background:var(--yc-color-base-simple-hover)}.yc-list__item_selected{background:var(--yc-color-base-selection)}.yc-list__item_sort-handle-align_right{flex-direction:row-reverse}.yc-list__item_sort-handle-align_right .yc-list__item-sort-icon{margin-left:10px;margin-right:0}.yc-list__empty-placeholder{box-sizing:border-box;color:var(--yc-color-text-hint);min-height:36px;padding-top:8px;padding-bottom:8px}.yc-list__item-content{flex:1 1 auto;display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;height:100%}.yc-list__item-sort-icon{display:flex;align-items:center;width:6px;margin-right:10px;flex:0 0 auto;color:var(--yc-color-text-hint)}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/List/List.css"],names:[],mappings:"AAAA,SACE,YAAA,CACA,YAAA,CACA,qBAAA,CACA,aAAA,CACA,UAAA,CAEF,iBACE,+BAAA,CACA,iBAAA,CACA,aAAA,CAEF,gBACE,aAAA,CAEF,4BACE,4BAAA,CAEF,2CACE,qBAAA,CACA,YAAA,CACA,kBAAA,CACA,+BAAA,CACA,gBAAA,CACA,eAAA,CAEF,eACE,iCAAA,CAEF,wBACE,WAAA,CAEF,uBACE,cAAA,CACA,kDAAA,CACA,+BAAA,CACA,WAAA,CAEF,sBACE,4CAAA,CAEF,wBACE,yCAAA,CAEF,uCACE,0BAAA,CAEF,gEACE,gBAAA,CACA,cAAA,CAEF,4BACE,qBAAA,CACA,+BAAA,CACA,eAAA,CACA,eAAA,CACA,kBAAA,CAEF,uBACE,aAAA,CACA,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CAEF,yBACE,YAAA,CACA,kBAAA,CACA,SAAA,CACA,iBAAA,CACA,aAAA,CACA,+BAAA",sourcesContent:[".yc-list {\n  outline: none;\n  display: flex;\n  flex-direction: column;\n  flex: 1 1 auto;\n  width: 100%;\n}\n.yc-list__filter {\n  padding: 0 var(--yc-list-margin);\n  margin-bottom: 8px;\n  flex: 0 0 auto;\n}\n.yc-list__items {\n  flex: 1 1 auto;\n}\n.yc-list__items_virtualized {\n  height: var(--yc-list-height);\n}\n.yc-list__item, .yc-list__empty-placeholder {\n  box-sizing: border-box;\n  display: flex;\n  align-items: center;\n  padding: 0 var(--yc-list-margin);\n  user-select: none;\n  overflow: hidden;\n}\n.yc-list__item {\n  height: var(--yc-list-item-height);\n}\n.yc-list__item_sortable {\n  cursor: move;\n}\n.yc-list__item_sorting {\n  z-index: 100001;\n  background: var(--yc-color-base-simple-hover-solid);\n  padding: 0 var(--yc-list-margin);\n  cursor: move;\n}\n.yc-list__item_active {\n  background: var(--yc-color-base-simple-hover);\n}\n.yc-list__item_selected {\n  background: var(--yc-color-base-selection);\n}\n.yc-list__item_sort-handle-align_right {\n  flex-direction: row-reverse;\n}\n.yc-list__item_sort-handle-align_right .yc-list__item-sort-icon {\n  margin-left: 10px;\n  margin-right: 0;\n}\n.yc-list__empty-placeholder {\n  box-sizing: border-box;\n  color: var(--yc-color-text-hint);\n  min-height: 36px;\n  padding-top: 8px;\n  padding-bottom: 8px;\n}\n.yc-list__item-content {\n  flex: 1 1 auto;\n  display: flex;\n  align-items: center;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  height: 100%;\n}\n.yc-list__item-sort-icon {\n  display: flex;\n  align-items: center;\n  width: 6px;\n  margin-right: 10px;\n  flex: 0 0 auto;\n  color: var(--yc-color-text-hint);\n}"],sourceRoot:""}]);const c=a},9686:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,"@keyframes yc-pulse{50%{opacity:15%}}.yc-loader{display:inline-flex;align-items:center}.yc-loader__left,.yc-loader__center,.yc-loader__right{background:var(--yc-color-base-special);animation:yc-pulse ease 800ms infinite}.yc-loader__left{animation-delay:200ms}.yc-loader__center{animation-delay:400ms}.yc-loader__right{animation-delay:600ms}.yc-loader_size_s .yc-loader__left{height:13.3333333333px;width:5px}.yc-loader_size_s .yc-loader__center{width:5px;height:20px;margin-left:5px}.yc-loader_size_s .yc-loader__right{height:13.3333333333px;width:5px;margin-left:5px}.yc-loader_size_m .yc-loader__left{height:18.6666666667px;width:7px}.yc-loader_size_m .yc-loader__center{width:7px;height:28px;margin-left:7px}.yc-loader_size_m .yc-loader__right{height:18.6666666667px;width:7px;margin-left:7px}.yc-loader_size_l .yc-loader__left{height:24px;width:9px}.yc-loader_size_l .yc-loader__center{width:9px;height:36px;margin-left:9px}.yc-loader_size_l .yc-loader__right{height:24px;width:9px;margin-left:9px}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Loader/Loader.css"],names:[],mappings:"AAAA,oBACE,IACE,WAAA,CAAA,CAGJ,WACE,mBAAA,CACA,kBAAA,CAEF,sDACE,uCAAA,CACA,sCAAA,CAEF,iBACE,qBAAA,CAEF,mBACE,qBAAA,CAEF,kBACE,qBAAA,CAEF,mCACE,sBAAA,CACA,SAAA,CAEF,qCACE,SAAA,CACA,WAAA,CACA,eAAA,CAEF,oCACE,sBAAA,CACA,SAAA,CACA,eAAA,CAEF,mCACE,sBAAA,CACA,SAAA,CAEF,qCACE,SAAA,CACA,WAAA,CACA,eAAA,CAEF,oCACE,sBAAA,CACA,SAAA,CACA,eAAA,CAEF,mCACE,WAAA,CACA,SAAA,CAEF,qCACE,SAAA,CACA,WAAA,CACA,eAAA,CAEF,oCACE,WAAA,CACA,SAAA,CACA,eAAA",sourcesContent:["@keyframes yc-pulse {\n  50% {\n    opacity: 15%;\n  }\n}\n.yc-loader {\n  display: inline-flex;\n  align-items: center;\n}\n.yc-loader__left, .yc-loader__center, .yc-loader__right {\n  background: var(--yc-color-base-special);\n  animation: yc-pulse ease 800ms infinite;\n}\n.yc-loader__left {\n  animation-delay: 200ms;\n}\n.yc-loader__center {\n  animation-delay: 400ms;\n}\n.yc-loader__right {\n  animation-delay: 600ms;\n}\n.yc-loader_size_s .yc-loader__left {\n  height: calc(20px / 1.5);\n  width: 5px;\n}\n.yc-loader_size_s .yc-loader__center {\n  width: 5px;\n  height: 20px;\n  margin-left: 5px;\n}\n.yc-loader_size_s .yc-loader__right {\n  height: calc(20px / 1.5);\n  width: 5px;\n  margin-left: 5px;\n}\n.yc-loader_size_m .yc-loader__left {\n  height: calc(28px / 1.5);\n  width: 7px;\n}\n.yc-loader_size_m .yc-loader__center {\n  width: 7px;\n  height: 28px;\n  margin-left: 7px;\n}\n.yc-loader_size_m .yc-loader__right {\n  height: calc(28px / 1.5);\n  width: 7px;\n  margin-left: 7px;\n}\n.yc-loader_size_l .yc-loader__left {\n  height: calc(36px / 1.5);\n  width: 9px;\n}\n.yc-loader_size_l .yc-loader__center {\n  width: 9px;\n  height: 36px;\n  margin-left: 9px;\n}\n.yc-loader_size_l .yc-loader__right {\n  height: calc(36px / 1.5);\n  width: 9px;\n  margin-left: 9px;\n}"],sourceRoot:""}]);const c=a},1212:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-popup{--yc-popup-background-color: var(--yc-color-base-float);--yc-popup-border-color: var(--yc-color-line-solid);--yc-popup-border-width: 1px;position:relative;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:forwards;border-radius:4px;background-color:var(--yc-popup-background-color);box-shadow:0 0 0 var(--yc-popup-border-width) var(--yc-popup-border-color),0 8px 20px var(--yc-popup-border-width) var(--yc-color-sfx-shadow);outline:none}.yc-popup>:first-child:not(.yc-popup__arrow),.yc-popup>.yc-popup__arrow+*{border-top-left-radius:inherit;border-top-right-radius:inherit}.yc-popup>:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.yc-popup__arrow-content{width:18px;height:18px;position:relative;overflow:hidden;display:flex}.yc-popup__arrow-circle-wrapper{background-color:rgba(0,0,0,0);overflow:hidden;width:9px;height:9px;position:relative}.yc-popup__arrow-circle{box-sizing:border-box;border-radius:50%;box-shadow:inset 0 0 0 calc(5px - var(--yc-popup-border-width)) var(--yc-popup-background-color),inset 0 0 0 5px var(--yc-popup-border-color);width:28px;height:30px;position:absolute}.yc-popup__arrow-circle_left{right:-5px;bottom:-4px}.yc-popup__arrow-circle_right{left:-5px;bottom:-4px}.yc-popup-wrapper{z-index:1000;visibility:hidden}.yc-popup-wrapper_open,.yc-popup-wrapper_exit_active{visibility:visible}.yc-popup-wrapper_exit_active[data-popper-placement*=bottom] .yc-popup{animation-name:yc-popup-bottom}.yc-popup-wrapper_exit_active[data-popper-placement*=top] .yc-popup{animation-name:yc-popup-top}.yc-popup-wrapper_exit_active[data-popper-placement*=left] .yc-popup{animation-name:yc-popup-left}.yc-popup-wrapper_exit_active[data-popper-placement*=right] .yc-popup{animation-name:yc-popup-right}.yc-popup-wrapper_enter_active[data-popper-placement*=bottom] .yc-popup,.yc-popup-wrapper_appear_active[data-popper-placement*=bottom] .yc-popup{animation-name:yc-popup-bottom-open}.yc-popup-wrapper_enter_active[data-popper-placement*=top] .yc-popup,.yc-popup-wrapper_appear_active[data-popper-placement*=top] .yc-popup{animation-name:yc-popup-top-open}.yc-popup-wrapper_enter_active[data-popper-placement*=left] .yc-popup,.yc-popup-wrapper_appear_active[data-popper-placement*=left] .yc-popup{animation-name:yc-popup-left-open}.yc-popup-wrapper_enter_active[data-popper-placement*=right] .yc-popup,.yc-popup-wrapper_appear_active[data-popper-placement*=right] .yc-popup{animation-name:yc-popup-right-open}.yc-popup-wrapper[data-popper-placement*=bottom] .yc-popup__arrow{top:-9px}.yc-popup-wrapper[data-popper-placement*=top] .yc-popup__arrow{bottom:-9px}.yc-popup-wrapper[data-popper-placement*=top] .yc-popup__arrow-content{transform:rotate(180deg)}.yc-popup-wrapper[data-popper-placement*=left] .yc-popup__arrow{right:-9px}.yc-popup-wrapper[data-popper-placement*=left] .yc-popup__arrow-content{transform:rotate(90deg)}.yc-popup-wrapper[data-popper-placement*=right] .yc-popup__arrow{left:-9px}.yc-popup-wrapper[data-popper-placement*=right] .yc-popup__arrow-content{transform:rotate(-90deg)}@keyframes yc-popup-bottom{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(10px)}}@keyframes yc-popup-bottom-open{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:translateY(0)}}@keyframes yc-popup-top{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-10px)}}@keyframes yc-popup-top-open{0%{opacity:0;transform:translateY(-10px)}100%{opacity:1;transform:translateY(0)}}@keyframes yc-popup-left{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-10px)}}@keyframes yc-popup-left-open{0%{opacity:0;transform:translateX(-10px)}100%{opacity:1;transform:translateX(0)}}@keyframes yc-popup-right{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(10px)}}@keyframes yc-popup-right-open{0%{opacity:0;transform:translateX(10px)}100%{opacity:1;transform:translateX(0)}}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Popup/Popup.css"],names:[],mappings:"AAAA,UACE,uDAAA,CACA,mDAAA,CACA,4BAAA,CACA,iBAAA,CACA,sBAAA,CACA,kCAAA,CACA,4BAAA,CACA,iBAAA,CACA,iDAAA,CACA,6IAAA,CACA,YAAA,CAEF,0EACE,8BAAA,CACA,+BAAA,CAEF,sBACE,iCAAA,CACA,kCAAA,CAEF,yBACE,UAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CACA,YAAA,CAEF,gCACE,8BAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,iBAAA,CAEF,wBACE,qBAAA,CACA,iBAAA,CACA,6IAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CAEF,6BACE,UAAA,CACA,WAAA,CAEF,8BACE,SAAA,CACA,WAAA,CAGF,kBACE,YAAA,CACA,iBAAA,CAEF,qDACE,kBAAA,CAEF,uEACE,8BAAA,CAEF,oEACE,2BAAA,CAEF,qEACE,4BAAA,CAEF,sEACE,6BAAA,CAEF,iJACE,mCAAA,CAEF,2IACE,gCAAA,CAEF,6IACE,iCAAA,CAEF,+IACE,kCAAA,CAEF,kEACE,QAAA,CAEF,+DACE,WAAA,CAEF,uEACE,wBAAA,CAEF,gEACE,UAAA,CAEF,wEACE,uBAAA,CAEF,iEACE,SAAA,CAEF,yEACE,wBAAA,CAGF,2BACE,GACE,SAAA,CACA,uBAAA,CAEF,KACE,SAAA,CACA,0BAAA,CAAA,CAGJ,gCACE,GACE,SAAA,CACA,0BAAA,CAEF,KACE,SAAA,CACA,uBAAA,CAAA,CAGJ,wBACE,GACE,SAAA,CACA,uBAAA,CAEF,KACE,SAAA,CACA,2BAAA,CAAA,CAGJ,6BACE,GACE,SAAA,CACA,2BAAA,CAEF,KACE,SAAA,CACA,uBAAA,CAAA,CAGJ,yBACE,GACE,SAAA,CACA,uBAAA,CAEF,KACE,SAAA,CACA,2BAAA,CAAA,CAGJ,8BACE,GACE,SAAA,CACA,2BAAA,CAEF,KACE,SAAA,CACA,uBAAA,CAAA,CAGJ,0BACE,GACE,SAAA,CACA,uBAAA,CAEF,KACE,SAAA,CACA,0BAAA,CAAA,CAGJ,+BACE,GACE,SAAA,CACA,0BAAA,CAEF,KACE,SAAA,CACA,uBAAA,CAAA",sourcesContent:[".yc-popup {\n  --yc-popup-background-color: var(--yc-color-base-float);\n  --yc-popup-border-color: var(--yc-color-line-solid);\n  --yc-popup-border-width: 1px;\n  position: relative;\n  animation-duration: 0.1s;\n  animation-timing-function: ease-out;\n  animation-fill-mode: forwards;\n  border-radius: 4px;\n  background-color: var(--yc-popup-background-color);\n  box-shadow: 0 0 0 var(--yc-popup-border-width) var(--yc-popup-border-color), 0 8px 20px var(--yc-popup-border-width) var(--yc-color-sfx-shadow);\n  outline: none;\n}\n.yc-popup > :first-child:not(.yc-popup__arrow), .yc-popup > .yc-popup__arrow + * {\n  border-top-left-radius: inherit;\n  border-top-right-radius: inherit;\n}\n.yc-popup > :last-child {\n  border-bottom-left-radius: inherit;\n  border-bottom-right-radius: inherit;\n}\n.yc-popup__arrow-content {\n  width: 18px;\n  height: 18px;\n  position: relative;\n  overflow: hidden;\n  display: flex;\n}\n.yc-popup__arrow-circle-wrapper {\n  background-color: transparent;\n  overflow: hidden;\n  width: 9px;\n  height: 9px;\n  position: relative;\n}\n.yc-popup__arrow-circle {\n  box-sizing: border-box;\n  border-radius: 50%;\n  box-shadow: inset 0 0 0 calc(5px - var(--yc-popup-border-width)) var(--yc-popup-background-color), inset 0 0 0 5px var(--yc-popup-border-color);\n  width: 28px;\n  height: 30px;\n  position: absolute;\n}\n.yc-popup__arrow-circle_left {\n  right: -5px;\n  bottom: -4px;\n}\n.yc-popup__arrow-circle_right {\n  left: -5px;\n  bottom: -4px;\n}\n\n.yc-popup-wrapper {\n  z-index: 1000;\n  visibility: hidden;\n}\n.yc-popup-wrapper_open, .yc-popup-wrapper_exit_active {\n  visibility: visible;\n}\n.yc-popup-wrapper_exit_active[data-popper-placement*=bottom] .yc-popup {\n  animation-name: yc-popup-bottom;\n}\n.yc-popup-wrapper_exit_active[data-popper-placement*=top] .yc-popup {\n  animation-name: yc-popup-top;\n}\n.yc-popup-wrapper_exit_active[data-popper-placement*=left] .yc-popup {\n  animation-name: yc-popup-left;\n}\n.yc-popup-wrapper_exit_active[data-popper-placement*=right] .yc-popup {\n  animation-name: yc-popup-right;\n}\n.yc-popup-wrapper_enter_active[data-popper-placement*=bottom] .yc-popup, .yc-popup-wrapper_appear_active[data-popper-placement*=bottom] .yc-popup {\n  animation-name: yc-popup-bottom-open;\n}\n.yc-popup-wrapper_enter_active[data-popper-placement*=top] .yc-popup, .yc-popup-wrapper_appear_active[data-popper-placement*=top] .yc-popup {\n  animation-name: yc-popup-top-open;\n}\n.yc-popup-wrapper_enter_active[data-popper-placement*=left] .yc-popup, .yc-popup-wrapper_appear_active[data-popper-placement*=left] .yc-popup {\n  animation-name: yc-popup-left-open;\n}\n.yc-popup-wrapper_enter_active[data-popper-placement*=right] .yc-popup, .yc-popup-wrapper_appear_active[data-popper-placement*=right] .yc-popup {\n  animation-name: yc-popup-right-open;\n}\n.yc-popup-wrapper[data-popper-placement*=bottom] .yc-popup__arrow {\n  top: -9px;\n}\n.yc-popup-wrapper[data-popper-placement*=top] .yc-popup__arrow {\n  bottom: -9px;\n}\n.yc-popup-wrapper[data-popper-placement*=top] .yc-popup__arrow-content {\n  transform: rotate(180deg);\n}\n.yc-popup-wrapper[data-popper-placement*=left] .yc-popup__arrow {\n  right: -9px;\n}\n.yc-popup-wrapper[data-popper-placement*=left] .yc-popup__arrow-content {\n  transform: rotate(90deg);\n}\n.yc-popup-wrapper[data-popper-placement*=right] .yc-popup__arrow {\n  left: -9px;\n}\n.yc-popup-wrapper[data-popper-placement*=right] .yc-popup__arrow-content {\n  transform: rotate(-90deg);\n}\n\n@keyframes yc-popup-bottom {\n  0% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n  100% {\n    opacity: 0;\n    transform: translateY(10px);\n  }\n}\n@keyframes yc-popup-bottom-open {\n  0% {\n    opacity: 0;\n    transform: translateY(10px);\n  }\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n@keyframes yc-popup-top {\n  0% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n  100% {\n    opacity: 0;\n    transform: translateY(-10px);\n  }\n}\n@keyframes yc-popup-top-open {\n  0% {\n    opacity: 0;\n    transform: translateY(-10px);\n  }\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n@keyframes yc-popup-left {\n  0% {\n    opacity: 1;\n    transform: translateX(0);\n  }\n  100% {\n    opacity: 0;\n    transform: translateX(-10px);\n  }\n}\n@keyframes yc-popup-left-open {\n  0% {\n    opacity: 0;\n    transform: translateX(-10px);\n  }\n  100% {\n    opacity: 1;\n    transform: translateX(0);\n  }\n}\n@keyframes yc-popup-right {\n  0% {\n    opacity: 1;\n    transform: translateX(0);\n  }\n  100% {\n    opacity: 0;\n    transform: translateX(10px);\n  }\n}\n@keyframes yc-popup-right-open {\n  0% {\n    opacity: 0;\n    transform: translateX(10px);\n  }\n  100% {\n    opacity: 1;\n    transform: translateX(0);\n  }\n}"],sourceRoot:""}]);const c=a},1536:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,'.yc-switch{position:relative}.yc-switch__control{opacity:0;cursor:pointer}.yc-switch__indicator{display:inline-block;position:relative}.yc-switch__indicator::before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--yc-color-base-generic-medium);transition:background .1s linear}.yc-switch__indicator::after{content:" ";visibility:hidden}.yc-switch__slider{position:absolute;content:"";border-radius:50%;background-color:var(--yc-color-base-background);transition:transform .15s ease-out}.yc-switch__outline{position:absolute;top:0;left:0;width:100%;height:100%;background:none;pointer-events:none}.yc-switch__control:focus+.yc-switch__outline{box-shadow:0 0 0 2px var(--yc-color-line-misc)}.yc-switch__control:focus:not(:focus-visible)+.yc-switch__outline{box-shadow:none}.yc-switch_size_m .yc-switch__indicator,.yc-switch_size_m .yc-switch__indicator::before,.yc-switch_size_m .yc-switch__outline{width:36px;height:20px;border-radius:10px}.yc-switch_size_m .yc-switch__slider{top:2px;left:2px;width:16px;height:16px}.yc-switch_size_m .yc-switch__text{margin-top:3px}.yc-switch_size_l .yc-switch__indicator,.yc-switch_size_l .yc-switch__indicator::before,.yc-switch_size_l .yc-switch__outline{width:42px;height:24px;border-radius:12px}.yc-switch_size_l .yc-switch__slider{top:3px;left:3px;width:18px;height:18px}.yc-switch_size_l .yc-switch__text{margin-top:4px}.yc-switch:hover .yc-switch__indicator::before{background-color:var(--yc-color-base-generic-medium-hover)}.yc-switch_checked .yc-switch__slider{transform:translateX(100%)}.yc-switch_checked .yc-switch__indicator::before,.yc-switch_checked:hover .yc-switch__indicator::before{background-color:var(--yc-color-base-special)}.yc-switch_disabled .yc-switch__indicator::before{background-color:var(--yc-color-base-generic-accent-disabled)}.yc-switch_disabled.yc-switch_checked .yc-switch__indicator::before{background-color:var(--yc-color-base-special);opacity:.5}',"",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Switch/Switch.css"],names:[],mappings:"AAAA,WACA,iBACE,CAAA,oBAEF,SACE,CAAA,cACA,CAAA,sBAEF,oBACE,CAAA,iBACA,CAAA,8BAEF,UACE,CAAA,iBACA,CAAA,KACA,CAAA,MACA,CAAA,OACA,CAAA,QACA,CAAA,oDACA,CAAA,gCACA,CAAA,6BAEF,WACE,CAAA,iBACA,CAAA,mBAEF,iBACE,CAAA,UACA,CAAA,iBACA,CAAA,gDACA,CAAA,kCACA,CAAA,oBAEF,iBACE,CAAA,KACA,CAAA,MACA,CAAA,UACA,CAAA,WACA,CAAA,eACA,CAAA,mBACA,CAAA,8CAEF,8CACE,CAAA,kEAEF,eACE,CAAA,8HAEF,UAGE,CAAA,WACA,CAAA,kBACA,CAAA,qCAEF,OACE,CAAA,QACA,CAAA,UACA,CAAA,WACA,CAAA,mCAEF,cACE,CAAA,8HAEF,UAGE,CAAA,WACA,CAAA,kBACA,CAAA,qCAEF,OACE,CAAA,QACA,CAAA,UACA,CAAA,WACA,CAAA,mCAEF,cACE,CAAA,+CAEF,0DACE,CAAA,sCAEF,0BACE,CAAA,wGAEF,6CACE,CAAA,kDAEF,6DACE,CAAA,oEAEF,6CACE,CAAA,UACA",sourcesContent:['@charset "UTF-8";\n.yc-switch {\n  position: relative;\n}\n.yc-switch__control {\n  opacity: 0;\n  cursor: pointer;\n}\n.yc-switch__indicator {\n  display: inline-block;\n  position: relative;\n}\n.yc-switch__indicator::before {\n  content: "";\n  position: absolute;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  background-color: var(--yc-color-base-generic-medium);\n  transition: background 0.1s linear;\n}\n.yc-switch__indicator::after {\n  content: " ";\n  visibility: hidden;\n}\n.yc-switch__slider {\n  position: absolute;\n  content: "";\n  border-radius: 50%;\n  background-color: var(--yc-color-base-background);\n  transition: transform 0.15s ease-out;\n}\n.yc-switch__outline {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  background: none;\n  pointer-events: none;\n}\n.yc-switch__control:focus + .yc-switch__outline {\n  box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.yc-switch__control:focus:not(:focus-visible) + .yc-switch__outline {\n  box-shadow: none;\n}\n.yc-switch_size_m .yc-switch__indicator,\n.yc-switch_size_m .yc-switch__indicator::before,\n.yc-switch_size_m .yc-switch__outline {\n  width: 36px;\n  height: 20px;\n  border-radius: 10px;\n}\n.yc-switch_size_m .yc-switch__slider {\n  top: 2px;\n  left: 2px;\n  width: 16px;\n  height: 16px;\n}\n.yc-switch_size_m .yc-switch__text {\n  margin-top: 3px;\n}\n.yc-switch_size_l .yc-switch__indicator,\n.yc-switch_size_l .yc-switch__indicator::before,\n.yc-switch_size_l .yc-switch__outline {\n  width: 42px;\n  height: 24px;\n  border-radius: 12px;\n}\n.yc-switch_size_l .yc-switch__slider {\n  top: 3px;\n  left: 3px;\n  width: 18px;\n  height: 18px;\n}\n.yc-switch_size_l .yc-switch__text {\n  margin-top: 4px;\n}\n.yc-switch:hover .yc-switch__indicator::before {\n  background-color: var(--yc-color-base-generic-medium-hover);\n}\n.yc-switch_checked .yc-switch__slider {\n  transform: translateX(100%);\n}\n.yc-switch_checked .yc-switch__indicator::before, .yc-switch_checked:hover .yc-switch__indicator::before {\n  background-color: var(--yc-color-base-special);\n}\n.yc-switch_disabled .yc-switch__indicator::before {\n  background-color: var(--yc-color-base-generic-accent-disabled);\n}\n.yc-switch_disabled.yc-switch_checked .yc-switch__indicator::before {\n  background-color: var(--yc-color-base-special);\n  opacity: 0.5;\n}'],sourceRoot:""}]);const c=a},7456:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-color-text_color_primary{color:var(--yc-color-text-primary)}.yc-color-text_color_complementary{color:var(--yc-color-text-complementary)}.yc-color-text_color_secondary{color:var(--yc-color-text-secondary)}.yc-color-text_color_hint{color:var(--yc-color-text-hint)}.yc-color-text_color_info{color:var(--yc-color-text-info)}.yc-color-text_color_info-heavy{color:var(--yc-color-text-info-heavy)}.yc-color-text_color_positive{color:var(--yc-color-text-positive)}.yc-color-text_color_positive-heavy{color:var(--yc-color-text-positive-heavy)}.yc-color-text_color_warning{color:var(--yc-color-text-warning)}.yc-color-text_color_warning-heavy{color:var(--yc-color-text-warning-heavy)}.yc-color-text_color_danger{color:var(--yc-color-text-danger)}.yc-color-text_color_danger-heavy{color:var(--yc-color-text-danger-heavy)}.yc-color-text_color_utility{color:var(--yc-color-text-utility)}.yc-color-text_color_utility-heavy{color:var(--yc-color-text-utility-heavy)}.yc-color-text_color_misc{color:var(--yc-color-text-misc)}.yc-color-text_color_misc-heavy{color:var(--yc-color-text-misc-heavy)}.yc-color-text_color_special{color:var(--yc-color-text-special)}.yc-color-text_color_link{color:var(--yc-color-text-link)}.yc-color-text_color_link-hover{color:var(--yc-color-text-link-hover)}.yc-color-text_color_link-visited{color:var(--yc-color-text-link-visited)}.yc-color-text_color_link-visited-hover{color:var(--yc-color-text-link-visited-hover)}.yc-color-text_color_yandex-red{color:var(--yc-color-text-yandex-red)}.yc-color-text_color_dark-primary{color:var(--yc-color-text-dark-primary)}.yc-color-text_color_dark-complementary{color:var(--yc-color-text-dark-complementary)}.yc-color-text_color_dark-secondary{color:var(--yc-color-text-dark-secondary)}.yc-color-text_color_light-primary{color:var(--yc-color-text-light-primary)}.yc-color-text_color_light-complementary{color:var(--yc-color-text-light-complementary)}.yc-color-text_color_light-secondary{color:var(--yc-color-text-light-secondary)}.yc-color-text_color_light-hint{color:var(--yc-color-text-light-hint)}.yc-color-text_color_inverted-primary{color:var(--yc-color-text-inverted-primary)}.yc-color-text_color_inverted-complementary{color:var(--yc-color-text-inverted-complementary)}.yc-color-text_color_inverted-secondary{color:var(--yc-color-text-inverted-secondary)}.yc-color-text_color_inverted-hint{color:var(--yc-color-text-inverted-hint)}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Text/colorText/colorText.css"],names:[],mappings:"AAAA,6BACE,kCAAA,CAEF,mCACE,wCAAA,CAEF,+BACE,oCAAA,CAEF,0BACE,+BAAA,CAEF,0BACE,+BAAA,CAEF,gCACE,qCAAA,CAEF,8BACE,mCAAA,CAEF,oCACE,yCAAA,CAEF,6BACE,kCAAA,CAEF,mCACE,wCAAA,CAEF,4BACE,iCAAA,CAEF,kCACE,uCAAA,CAEF,6BACE,kCAAA,CAEF,mCACE,wCAAA,CAEF,0BACE,+BAAA,CAEF,gCACE,qCAAA,CAEF,6BACE,kCAAA,CAEF,0BACE,+BAAA,CAEF,gCACE,qCAAA,CAEF,kCACE,uCAAA,CAEF,wCACE,6CAAA,CAEF,gCACE,qCAAA,CAEF,kCACE,uCAAA,CAEF,wCACE,6CAAA,CAEF,oCACE,yCAAA,CAEF,mCACE,wCAAA,CAEF,yCACE,8CAAA,CAEF,qCACE,0CAAA,CAEF,gCACE,qCAAA,CAEF,sCACE,2CAAA,CAEF,4CACE,iDAAA,CAEF,wCACE,6CAAA,CAEF,mCACE,wCAAA",sourcesContent:[".yc-color-text_color_primary {\n  color: var(--yc-color-text-primary);\n}\n.yc-color-text_color_complementary {\n  color: var(--yc-color-text-complementary);\n}\n.yc-color-text_color_secondary {\n  color: var(--yc-color-text-secondary);\n}\n.yc-color-text_color_hint {\n  color: var(--yc-color-text-hint);\n}\n.yc-color-text_color_info {\n  color: var(--yc-color-text-info);\n}\n.yc-color-text_color_info-heavy {\n  color: var(--yc-color-text-info-heavy);\n}\n.yc-color-text_color_positive {\n  color: var(--yc-color-text-positive);\n}\n.yc-color-text_color_positive-heavy {\n  color: var(--yc-color-text-positive-heavy);\n}\n.yc-color-text_color_warning {\n  color: var(--yc-color-text-warning);\n}\n.yc-color-text_color_warning-heavy {\n  color: var(--yc-color-text-warning-heavy);\n}\n.yc-color-text_color_danger {\n  color: var(--yc-color-text-danger);\n}\n.yc-color-text_color_danger-heavy {\n  color: var(--yc-color-text-danger-heavy);\n}\n.yc-color-text_color_utility {\n  color: var(--yc-color-text-utility);\n}\n.yc-color-text_color_utility-heavy {\n  color: var(--yc-color-text-utility-heavy);\n}\n.yc-color-text_color_misc {\n  color: var(--yc-color-text-misc);\n}\n.yc-color-text_color_misc-heavy {\n  color: var(--yc-color-text-misc-heavy);\n}\n.yc-color-text_color_special {\n  color: var(--yc-color-text-special);\n}\n.yc-color-text_color_link {\n  color: var(--yc-color-text-link);\n}\n.yc-color-text_color_link-hover {\n  color: var(--yc-color-text-link-hover);\n}\n.yc-color-text_color_link-visited {\n  color: var(--yc-color-text-link-visited);\n}\n.yc-color-text_color_link-visited-hover {\n  color: var(--yc-color-text-link-visited-hover);\n}\n.yc-color-text_color_yandex-red {\n  color: var(--yc-color-text-yandex-red);\n}\n.yc-color-text_color_dark-primary {\n  color: var(--yc-color-text-dark-primary);\n}\n.yc-color-text_color_dark-complementary {\n  color: var(--yc-color-text-dark-complementary);\n}\n.yc-color-text_color_dark-secondary {\n  color: var(--yc-color-text-dark-secondary);\n}\n.yc-color-text_color_light-primary {\n  color: var(--yc-color-text-light-primary);\n}\n.yc-color-text_color_light-complementary {\n  color: var(--yc-color-text-light-complementary);\n}\n.yc-color-text_color_light-secondary {\n  color: var(--yc-color-text-light-secondary);\n}\n.yc-color-text_color_light-hint {\n  color: var(--yc-color-text-light-hint);\n}\n.yc-color-text_color_inverted-primary {\n  color: var(--yc-color-text-inverted-primary);\n}\n.yc-color-text_color_inverted-complementary {\n  color: var(--yc-color-text-inverted-complementary);\n}\n.yc-color-text_color_inverted-secondary {\n  color: var(--yc-color-text-inverted-secondary);\n}\n.yc-color-text_color_inverted-hint {\n  color: var(--yc-color-text-inverted-hint);\n}"],sourceRoot:""}]);const c=a},2176:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-text_variant_display-1{font-size:var(--yc-text-display-1-font-size);line-height:var(--yc-text-display-1-line-height);font-weight:var(--yc-text-display-font-weight)}.yc-text_variant_display-2{font-size:var(--yc-text-display-2-font-size);line-height:var(--yc-text-display-2-line-height);font-weight:var(--yc-text-display-font-weight)}.yc-text_variant_display-3{font-size:var(--yc-text-display-3-font-size);line-height:var(--yc-text-display-3-line-height);font-weight:var(--yc-text-display-font-weight)}.yc-text_variant_display-4{font-size:var(--yc-text-display-4-font-size);line-height:var(--yc-text-display-4-line-height);font-weight:var(--yc-text-display-font-weight)}.yc-text_variant_code-1{font-family:var(--yc-text-code-font-family);font-size:var(--yc-text-code-1-font-size);line-height:var(--yc-text-code-1-line-height);font-weight:var(--yc-text-code-font-weight)}.yc-text_variant_code-2{font-family:var(--yc-text-code-font-family);font-size:var(--yc-text-code-2-font-size);line-height:var(--yc-text-code-2-line-height);font-weight:var(--yc-text-code-font-weight)}.yc-text_variant_code-3{font-family:var(--yc-text-code-font-family);font-size:var(--yc-text-code-3-font-size);line-height:var(--yc-text-code-3-line-height);font-weight:var(--yc-text-code-font-weight)}.yc-text_variant_code-inline-1{font-family:var(--yc-text-code-font-family);font-size:var(--yc-text-code-inline-1-font-size);line-height:var(--yc-text-code-inline-1-line-height);font-weight:var(--yc-text-code-font-weight)}.yc-text_variant_code-inline-2{font-family:var(--yc-text-code-font-family);font-size:var(--yc-text-code-inline-2-font-size);line-height:var(--yc-text-code-inline-2-line-height);font-weight:var(--yc-text-code-inline-font-weight)}.yc-text_variant_code-inline-3{font-family:var(--yc-text-code-font-family);font-size:var(--yc-text-code-inline-3-font-size);line-height:var(--yc-text-code-inline-3-line-height);font-weight:var(--yc-text-code-font-weight)}.yc-text_variant_body-1{font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text_variant_body-2{font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text_variant_body-3{font-size:var(--yc-text-body-3-font-size);line-height:var(--yc-text-body-3-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text_variant_body-short{font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text_variant_caption-1{font-size:var(--yc-text-caption-1-font-size);line-height:var(--yc-text-caption-1-line-height);font-weight:var(--yc-text-caption-font-weight)}.yc-text_variant_caption-2{font-size:var(--yc-text-caption-2-font-size);line-height:var(--yc-text-caption-2-line-height);font-weight:var(--yc-text-caption-font-weight)}.yc-text_variant_header-1{font-size:var(--yc-text-header-1-font-size);line-height:var(--yc-text-header-1-line-height);font-weight:var(--yc-text-header-font-weight)}.yc-text_variant_header-2{font-size:var(--yc-text-header-2-font-size);line-height:var(--yc-text-header-2-line-height);font-weight:var(--yc-text-header-font-weight)}.yc-text_variant_subheader-1{font-size:var(--yc-text-subheader-1-font-size);line-height:var(--yc-text-subheader-1-line-height);font-weight:var(--yc-text-subheader-font-weight)}.yc-text_variant_subheader-2{font-size:var(--yc-text-subheader-2-font-size);line-height:var(--yc-text-subheader-2-line-height);font-weight:var(--yc-text-subheader-font-weight)}.yc-text_variant_subheader-3{font-size:var(--yc-text-subheader-3-font-size);line-height:var(--yc-text-subheader-3-line-height);font-weight:var(--yc-text-subheader-font-weight)}.yc-text_ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.yc-text_ws_nowrap{white-space:nowrap}.yc-text_ws_break-spaces{white-space:break-spaces}.yc-text_wb_break-all{word-break:break-all}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/Text/text/text.css"],names:[],mappings:"AAAA,2BACE,4CAAA,CACA,gDAAA,CACA,8CAAA,CAEF,2BACE,4CAAA,CACA,gDAAA,CACA,8CAAA,CAEF,2BACE,4CAAA,CACA,gDAAA,CACA,8CAAA,CAEF,2BACE,4CAAA,CACA,gDAAA,CACA,8CAAA,CAEF,wBACE,2CAAA,CACA,yCAAA,CACA,6CAAA,CACA,2CAAA,CAEF,wBACE,2CAAA,CACA,yCAAA,CACA,6CAAA,CACA,2CAAA,CAEF,wBACE,2CAAA,CACA,yCAAA,CACA,6CAAA,CACA,2CAAA,CAEF,+BACE,2CAAA,CACA,gDAAA,CACA,oDAAA,CACA,2CAAA,CAEF,+BACE,2CAAA,CACA,gDAAA,CACA,oDAAA,CACA,kDAAA,CAEF,+BACE,2CAAA,CACA,gDAAA,CACA,oDAAA,CACA,2CAAA,CAEF,wBACE,yCAAA,CACA,6CAAA,CACA,2CAAA,CAEF,wBACE,yCAAA,CACA,6CAAA,CACA,2CAAA,CAEF,wBACE,yCAAA,CACA,6CAAA,CACA,2CAAA,CAEF,4BACE,6CAAA,CACA,iDAAA,CACA,2CAAA,CAEF,2BACE,4CAAA,CACA,gDAAA,CACA,8CAAA,CAEF,2BACE,4CAAA,CACA,gDAAA,CACA,8CAAA,CAEF,0BACE,2CAAA,CACA,+CAAA,CACA,6CAAA,CAEF,0BACE,2CAAA,CACA,+CAAA,CACA,6CAAA,CAEF,6BACE,8CAAA,CACA,kDAAA,CACA,gDAAA,CAEF,6BACE,8CAAA,CACA,kDAAA,CACA,gDAAA,CAEF,6BACE,8CAAA,CACA,kDAAA,CACA,gDAAA,CAEF,kBACE,kBAAA,CACA,eAAA,CACA,sBAAA,CAEF,mBACE,kBAAA,CAEF,yBACE,wBAAA,CAEF,sBACE,oBAAA",sourcesContent:[".yc-text_variant_display-1 {\n  font-size: var(--yc-text-display-1-font-size);\n  line-height: var(--yc-text-display-1-line-height);\n  font-weight: var(--yc-text-display-font-weight);\n}\n.yc-text_variant_display-2 {\n  font-size: var(--yc-text-display-2-font-size);\n  line-height: var(--yc-text-display-2-line-height);\n  font-weight: var(--yc-text-display-font-weight);\n}\n.yc-text_variant_display-3 {\n  font-size: var(--yc-text-display-3-font-size);\n  line-height: var(--yc-text-display-3-line-height);\n  font-weight: var(--yc-text-display-font-weight);\n}\n.yc-text_variant_display-4 {\n  font-size: var(--yc-text-display-4-font-size);\n  line-height: var(--yc-text-display-4-line-height);\n  font-weight: var(--yc-text-display-font-weight);\n}\n.yc-text_variant_code-1 {\n  font-family: var(--yc-text-code-font-family);\n  font-size: var(--yc-text-code-1-font-size);\n  line-height: var(--yc-text-code-1-line-height);\n  font-weight: var(--yc-text-code-font-weight);\n}\n.yc-text_variant_code-2 {\n  font-family: var(--yc-text-code-font-family);\n  font-size: var(--yc-text-code-2-font-size);\n  line-height: var(--yc-text-code-2-line-height);\n  font-weight: var(--yc-text-code-font-weight);\n}\n.yc-text_variant_code-3 {\n  font-family: var(--yc-text-code-font-family);\n  font-size: var(--yc-text-code-3-font-size);\n  line-height: var(--yc-text-code-3-line-height);\n  font-weight: var(--yc-text-code-font-weight);\n}\n.yc-text_variant_code-inline-1 {\n  font-family: var(--yc-text-code-font-family);\n  font-size: var(--yc-text-code-inline-1-font-size);\n  line-height: var(--yc-text-code-inline-1-line-height);\n  font-weight: var(--yc-text-code-font-weight);\n}\n.yc-text_variant_code-inline-2 {\n  font-family: var(--yc-text-code-font-family);\n  font-size: var(--yc-text-code-inline-2-font-size);\n  line-height: var(--yc-text-code-inline-2-line-height);\n  font-weight: var(--yc-text-code-inline-font-weight);\n}\n.yc-text_variant_code-inline-3 {\n  font-family: var(--yc-text-code-font-family);\n  font-size: var(--yc-text-code-inline-3-font-size);\n  line-height: var(--yc-text-code-inline-3-line-height);\n  font-weight: var(--yc-text-code-font-weight);\n}\n.yc-text_variant_body-1 {\n  font-size: var(--yc-text-body-1-font-size);\n  line-height: var(--yc-text-body-1-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text_variant_body-2 {\n  font-size: var(--yc-text-body-2-font-size);\n  line-height: var(--yc-text-body-2-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text_variant_body-3 {\n  font-size: var(--yc-text-body-3-font-size);\n  line-height: var(--yc-text-body-3-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text_variant_body-short {\n  font-size: var(--yc-text-body-short-font-size);\n  line-height: var(--yc-text-body-short-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text_variant_caption-1 {\n  font-size: var(--yc-text-caption-1-font-size);\n  line-height: var(--yc-text-caption-1-line-height);\n  font-weight: var(--yc-text-caption-font-weight);\n}\n.yc-text_variant_caption-2 {\n  font-size: var(--yc-text-caption-2-font-size);\n  line-height: var(--yc-text-caption-2-line-height);\n  font-weight: var(--yc-text-caption-font-weight);\n}\n.yc-text_variant_header-1 {\n  font-size: var(--yc-text-header-1-font-size);\n  line-height: var(--yc-text-header-1-line-height);\n  font-weight: var(--yc-text-header-font-weight);\n}\n.yc-text_variant_header-2 {\n  font-size: var(--yc-text-header-2-font-size);\n  line-height: var(--yc-text-header-2-line-height);\n  font-weight: var(--yc-text-header-font-weight);\n}\n.yc-text_variant_subheader-1 {\n  font-size: var(--yc-text-subheader-1-font-size);\n  line-height: var(--yc-text-subheader-1-line-height);\n  font-weight: var(--yc-text-subheader-font-weight);\n}\n.yc-text_variant_subheader-2 {\n  font-size: var(--yc-text-subheader-2-font-size);\n  line-height: var(--yc-text-subheader-2-line-height);\n  font-weight: var(--yc-text-subheader-font-weight);\n}\n.yc-text_variant_subheader-3 {\n  font-size: var(--yc-text-subheader-3-font-size);\n  line-height: var(--yc-text-subheader-3-line-height);\n  font-weight: var(--yc-text-subheader-font-weight);\n}\n.yc-text_ellipsis {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.yc-text_ws_nowrap {\n  white-space: nowrap;\n}\n.yc-text_ws_break-spaces {\n  white-space: break-spaces;\n}\n.yc-text_wb_break-all {\n  word-break: break-all;\n}"],sourceRoot:""}]);const c=a},9322:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".yc-text-input{display:inline-block;width:100%;position:relative}.yc-text-input__content{box-sizing:border-box;display:flex;width:100%}.yc-text-input__control{box-sizing:border-box;display:inline-block;flex-grow:1;vertical-align:top;position:relative;margin:0;padding:0;width:100%;font-weight:normal;font-family:var(--yc-text-body-font-family);color:var(--yc-color-text-primary);background-color:rgba(0,0,0,0);border:none}.yc-text-input__control::placeholder{color:var(--yc-color-text-hint)}.yc-text-input__control:focus{outline:none}.yc-text-input__control_type_textarea{resize:none;overflow-x:hidden}.yc-text-input__control_type_textarea:not(.yc-text-input__control_autosize){height:auto}.yc-text-input__control[type=number]{appearance:textfield}.yc-text-input__label{position:absolute;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;z-index:1}.yc-text-input__error{font-size:var(--yc-text-body-1-font-size);line-height:var(--yc-text-body-1-line-height);font-weight:var(--yc-text-body-font-weight);color:var(--yc-color-text-danger);margin-top:2px}.yc-text-input__clear[class]{--yc-button-background-color: transparent;--yc-button-background-color-hover: transparent;color:var(--yc-color-text-hint)}.yc-text-input__clear[class]:hover{color:var(--yc-color-text-primary)}.yc-text-input__clear_textarea{position:absolute;top:0;right:0}.yc-text-input__clear:not(.yc-text-input__clear_textarea){margin:-1px}.yc-text-input__additional-content{display:flex;align-items:center}.yc-text-input_size_s{--yc-text-input-border-radius: var(--yc-border-radius-s)}.yc-text-input_size_s .yc-text-input__control{height:22px;padding:4px 8px;font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text-input_size_s.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea{padding-right:26px}.yc-text-input_size_s .yc-text-input__label{height:22px;padding:4px 8px;font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height);font-weight:var(--yc-text-body-font-weight);font-weight:var(--yc-text-accent-font-weight);padding-right:4px;padding-top:0;padding-bottom:0;line-height:22px}.yc-text-input_size_s.yc-text-input_has-left-content .yc-text-input__label{padding-left:2px}.yc-text-input_size_s .yc-text-input__additional-content{height:22px}.yc-text-input_size_s .yc-text-input__additional-content_placement_left{padding-left:1px}.yc-text-input_size_s .yc-text-input__additional-content_placement_right{padding-right:1px}.yc-text-input_size_m{--yc-text-input-border-radius: var(--yc-border-radius-m)}.yc-text-input_size_m .yc-text-input__control{height:26px;padding:6px 8px;font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text-input_size_m.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea{padding-right:26px}.yc-text-input_size_m .yc-text-input__label{height:26px;padding:6px 8px;font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height);font-weight:var(--yc-text-body-font-weight);font-weight:var(--yc-text-accent-font-weight);padding-right:4px;padding-top:0;padding-bottom:0;line-height:26px}.yc-text-input_size_m.yc-text-input_has-left-content .yc-text-input__label{padding-left:2px}.yc-text-input_size_m .yc-text-input__additional-content{height:26px}.yc-text-input_size_m .yc-text-input__additional-content_placement_left{padding-left:1px}.yc-text-input_size_m .yc-text-input__additional-content_placement_right{padding-right:1px}.yc-text-input_size_l{--yc-text-input-border-radius: var(--yc-border-radius-l)}.yc-text-input_size_l .yc-text-input__control{height:34px;padding:10px 12px;font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text-input_size_l.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea{padding-right:36px}.yc-text-input_size_l .yc-text-input__label{height:34px;padding:10px 12px;font-size:var(--yc-text-body-short-font-size);line-height:var(--yc-text-body-short-line-height);font-weight:var(--yc-text-body-font-weight);font-weight:var(--yc-text-accent-font-weight);padding-right:4px;padding-top:0;padding-bottom:0;line-height:34px}.yc-text-input_size_l.yc-text-input_has-left-content .yc-text-input__label{padding-left:3px}.yc-text-input_size_l .yc-text-input__additional-content{height:34px}.yc-text-input_size_l .yc-text-input__additional-content_placement_left{padding-left:3px}.yc-text-input_size_l .yc-text-input__additional-content_placement_right{padding-right:3px}.yc-text-input_size_xl{--yc-text-input-border-radius: var(--yc-border-radius-xl)}.yc-text-input_size_xl .yc-text-input__control{height:42px;padding:12px;font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);font-weight:var(--yc-text-body-font-weight)}.yc-text-input_size_xl.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea{padding-right:36px}.yc-text-input_size_xl .yc-text-input__label{height:42px;padding:12px;font-size:var(--yc-text-body-2-font-size);line-height:var(--yc-text-body-2-line-height);font-weight:var(--yc-text-body-font-weight);font-weight:var(--yc-text-accent-font-weight);padding-right:4px;padding-top:0;padding-bottom:0;line-height:42px}.yc-text-input_size_xl.yc-text-input_has-left-content .yc-text-input__label{padding-left:3px}.yc-text-input_size_xl .yc-text-input__additional-content{height:42px}.yc-text-input_size_xl .yc-text-input__additional-content_placement_left{padding-left:3px}.yc-text-input_size_xl .yc-text-input__additional-content_placement_right{padding-right:3px}.yc-text-input_view_normal .yc-text-input__content{border:1px solid var(--yc-color-line-generic)}.yc-text-input_view_normal .yc-text-input__content:hover{border-color:var(--yc-color-line-generic-hover)}.yc-text-input_view_normal .yc-text-input__content:focus-within{border-color:var(--yc-color-line-generic-active)}.yc-text-input_view_clear .yc-text-input__content{border:1px solid rgba(0,0,0,0);border-left:0;border-right:0;border-radius:0}.yc-text-input_view_clear .yc-text-input__control{padding-left:0;padding-right:0}.yc-text-input.yc-text-input_pin_round-round .yc-text-input__content{border-radius:var(--yc-text-input-border-radius)}.yc-text-input.yc-text-input_pin_brick-brick .yc-text-input__content{border-radius:0}.yc-text-input.yc-text-input_pin_clear-clear .yc-text-input__content{border-radius:0;border-left:0;border-right:0}.yc-text-input.yc-text-input_pin_circle-circle .yc-text-input__content{border-radius:100px}.yc-text-input.yc-text-input_pin_round-brick .yc-text-input__content{border-radius:var(--yc-text-input-border-radius) 0 0 var(--yc-text-input-border-radius)}.yc-text-input.yc-text-input_pin_brick-round .yc-text-input__content{border-radius:0 var(--yc-text-input-border-radius) var(--yc-text-input-border-radius) 0}.yc-text-input.yc-text-input_pin_round-clear .yc-text-input__content{border-radius:var(--yc-text-input-border-radius) 0 0 var(--yc-text-input-border-radius);border-right:0}.yc-text-input.yc-text-input_pin_clear-round .yc-text-input__content{border-radius:0 var(--yc-text-input-border-radius) var(--yc-text-input-border-radius) 0;border-left:0}.yc-text-input.yc-text-input_pin_brick-clear .yc-text-input__content{border-radius:0;border-right:0}.yc-text-input.yc-text-input_pin_clear-brick .yc-text-input__content{border-radius:0;border-left:0}.yc-text-input.yc-text-input_pin_circle-brick .yc-text-input__content{border-radius:100px 0 0 100px}.yc-text-input.yc-text-input_pin_brick-circle .yc-text-input__content{border-radius:0 100px 100px 0}.yc-text-input.yc-text-input_pin_circle-clear .yc-text-input__content{border-radius:100px 0 0 100px;border-right:0}.yc-text-input.yc-text-input_pin_clear-circle .yc-text-input__content{border-radius:0 100px 100px 0;border-left:0}.yc-text-input_disabled .yc-text-input__content{background-color:var(--yc-color-base-generic-accent-disabled);color:var(--yc-color-text-hint);border-color:rgba(0,0,0,0)}.yc-text-input_disabled .yc-text-input__content:hover{border-color:rgba(0,0,0,0)}.yc-text-input_disabled .yc-text-input__control{color:var(--yc-color-text-hint)}.yc-text-input_disabled .yc-text-input__label{color:var(--yc-color-text-hint)}.yc-text-input_has-scrollbar .yc-text-input__clear{right:var(--yc-scrollbar-width)}.yc-text-input_has-left-content .yc-text-input__control{padding-left:2px}.yc-text-input_has-right-content .yc-text-input__control{padding-right:2px}.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content{border-color:var(--yc-color-line-danger)}.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content:hover,.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content:focus-within{border-color:var(--yc-color-line-danger)}.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content{border-bottom:1px solid var(--yc-color-line-danger)}.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content:hover,.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content:focus-within{border-bottom:1px solid var(--yc-color-line-danger)}","",{version:3,sources:["webpack://./node_modules/@gravity-ui/uikit/build/esm/components/TextInput/TextInput.css"],names:[],mappings:"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",sourcesContent:[".yc-text-input {\n  display: inline-block;\n  width: 100%;\n  position: relative;\n}\n.yc-text-input__content {\n  box-sizing: border-box;\n  display: flex;\n  width: 100%;\n}\n.yc-text-input__control {\n  box-sizing: border-box;\n  display: inline-block;\n  flex-grow: 1;\n  vertical-align: top;\n  position: relative;\n  margin: 0;\n  padding: 0;\n  width: 100%;\n  font-weight: normal;\n  font-family: var(--yc-text-body-font-family);\n  color: var(--yc-color-text-primary);\n  background-color: transparent;\n  border: none;\n}\n.yc-text-input__control::placeholder {\n  color: var(--yc-color-text-hint);\n}\n.yc-text-input__control:focus {\n  outline: none;\n}\n.yc-text-input__control_type_textarea {\n  resize: none;\n  overflow-x: hidden;\n}\n.yc-text-input__control_type_textarea:not(.yc-text-input__control_autosize) {\n  height: auto;\n}\n.yc-text-input__control[type=number] {\n  appearance: textfield;\n}\n.yc-text-input__label {\n  position: absolute;\n  box-sizing: border-box;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  z-index: 1;\n}\n.yc-text-input__error {\n  font-size: var(--yc-text-body-1-font-size);\n  line-height: var(--yc-text-body-1-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n  color: var(--yc-color-text-danger);\n  margin-top: 2px;\n}\n.yc-text-input__clear {\n  /* increase css specificity to rewrite Button styles */\n}\n.yc-text-input__clear[class] {\n  --yc-button-background-color: transparent;\n  --yc-button-background-color-hover: transparent;\n  color: var(--yc-color-text-hint);\n}\n.yc-text-input__clear[class]:hover {\n  color: var(--yc-color-text-primary);\n}\n.yc-text-input__clear_textarea {\n  position: absolute;\n  top: 0;\n  right: 0;\n}\n.yc-text-input__clear:not(.yc-text-input__clear_textarea) {\n  margin: -1px;\n}\n.yc-text-input__additional-content {\n  display: flex;\n  align-items: center;\n}\n.yc-text-input_size_s {\n  --yc-text-input-border-radius: var(--yc-border-radius-s);\n}\n.yc-text-input_size_s .yc-text-input__control {\n  height: 22px;\n  padding: 4px 8px;\n  font-size: var(--yc-text-body-short-font-size);\n  line-height: var(--yc-text-body-short-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text-input_size_s.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea {\n  padding-right: 26px;\n}\n.yc-text-input_size_s .yc-text-input__label {\n  height: 22px;\n  padding: 4px 8px;\n  font-size: var(--yc-text-body-short-font-size);\n  line-height: var(--yc-text-body-short-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n  font-weight: var(--yc-text-accent-font-weight);\n  padding-right: 4px;\n  padding-top: 0;\n  padding-bottom: 0;\n  line-height: 22px;\n}\n.yc-text-input_size_s.yc-text-input_has-left-content .yc-text-input__label {\n  padding-left: 2px;\n}\n.yc-text-input_size_s .yc-text-input__additional-content {\n  height: 22px;\n}\n.yc-text-input_size_s .yc-text-input__additional-content_placement_left {\n  padding-left: 1px;\n}\n.yc-text-input_size_s .yc-text-input__additional-content_placement_right {\n  padding-right: 1px;\n}\n.yc-text-input_size_m {\n  --yc-text-input-border-radius: var(--yc-border-radius-m);\n}\n.yc-text-input_size_m .yc-text-input__control {\n  height: 26px;\n  padding: 6px 8px;\n  font-size: var(--yc-text-body-short-font-size);\n  line-height: var(--yc-text-body-short-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text-input_size_m.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea {\n  padding-right: 26px;\n}\n.yc-text-input_size_m .yc-text-input__label {\n  height: 26px;\n  padding: 6px 8px;\n  font-size: var(--yc-text-body-short-font-size);\n  line-height: var(--yc-text-body-short-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n  font-weight: var(--yc-text-accent-font-weight);\n  padding-right: 4px;\n  padding-top: 0;\n  padding-bottom: 0;\n  line-height: 26px;\n}\n.yc-text-input_size_m.yc-text-input_has-left-content .yc-text-input__label {\n  padding-left: 2px;\n}\n.yc-text-input_size_m .yc-text-input__additional-content {\n  height: 26px;\n}\n.yc-text-input_size_m .yc-text-input__additional-content_placement_left {\n  padding-left: 1px;\n}\n.yc-text-input_size_m .yc-text-input__additional-content_placement_right {\n  padding-right: 1px;\n}\n.yc-text-input_size_l {\n  --yc-text-input-border-radius: var(--yc-border-radius-l);\n}\n.yc-text-input_size_l .yc-text-input__control {\n  height: 34px;\n  padding: 10px 12px;\n  font-size: var(--yc-text-body-short-font-size);\n  line-height: var(--yc-text-body-short-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text-input_size_l.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea {\n  padding-right: 36px;\n}\n.yc-text-input_size_l .yc-text-input__label {\n  height: 34px;\n  padding: 10px 12px;\n  font-size: var(--yc-text-body-short-font-size);\n  line-height: var(--yc-text-body-short-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n  font-weight: var(--yc-text-accent-font-weight);\n  padding-right: 4px;\n  padding-top: 0;\n  padding-bottom: 0;\n  line-height: 34px;\n}\n.yc-text-input_size_l.yc-text-input_has-left-content .yc-text-input__label {\n  padding-left: 3px;\n}\n.yc-text-input_size_l .yc-text-input__additional-content {\n  height: 34px;\n}\n.yc-text-input_size_l .yc-text-input__additional-content_placement_left {\n  padding-left: 3px;\n}\n.yc-text-input_size_l .yc-text-input__additional-content_placement_right {\n  padding-right: 3px;\n}\n.yc-text-input_size_xl {\n  --yc-text-input-border-radius: var(--yc-border-radius-xl);\n}\n.yc-text-input_size_xl .yc-text-input__control {\n  height: 42px;\n  padding: 12px;\n  font-size: var(--yc-text-body-2-font-size);\n  line-height: var(--yc-text-body-2-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n}\n.yc-text-input_size_xl.yc-text-input_has-clear .yc-text-input__control.yc-text-input__control_type_textarea {\n  padding-right: 36px;\n}\n.yc-text-input_size_xl .yc-text-input__label {\n  height: 42px;\n  padding: 12px;\n  font-size: var(--yc-text-body-2-font-size);\n  line-height: var(--yc-text-body-2-line-height);\n  font-weight: var(--yc-text-body-font-weight);\n  font-weight: var(--yc-text-accent-font-weight);\n  padding-right: 4px;\n  padding-top: 0;\n  padding-bottom: 0;\n  line-height: 42px;\n}\n.yc-text-input_size_xl.yc-text-input_has-left-content .yc-text-input__label {\n  padding-left: 3px;\n}\n.yc-text-input_size_xl .yc-text-input__additional-content {\n  height: 42px;\n}\n.yc-text-input_size_xl .yc-text-input__additional-content_placement_left {\n  padding-left: 3px;\n}\n.yc-text-input_size_xl .yc-text-input__additional-content_placement_right {\n  padding-right: 3px;\n}\n.yc-text-input_view_normal .yc-text-input__content {\n  border: 1px solid var(--yc-color-line-generic);\n}\n.yc-text-input_view_normal .yc-text-input__content:hover {\n  border-color: var(--yc-color-line-generic-hover);\n}\n.yc-text-input_view_normal .yc-text-input__content:focus-within {\n  border-color: var(--yc-color-line-generic-active);\n}\n.yc-text-input_view_clear .yc-text-input__content {\n  border: 1px solid transparent;\n  border-left: 0;\n  border-right: 0;\n  border-radius: 0;\n}\n.yc-text-input_view_clear .yc-text-input__control {\n  padding-left: 0;\n  padding-right: 0;\n}\n.yc-text-input.yc-text-input_pin_round-round .yc-text-input__content {\n  border-radius: var(--yc-text-input-border-radius);\n}\n.yc-text-input.yc-text-input_pin_brick-brick .yc-text-input__content {\n  border-radius: 0;\n}\n.yc-text-input.yc-text-input_pin_clear-clear .yc-text-input__content {\n  border-radius: 0;\n  border-left: 0;\n  border-right: 0;\n}\n.yc-text-input.yc-text-input_pin_circle-circle .yc-text-input__content {\n  border-radius: 100px;\n}\n.yc-text-input.yc-text-input_pin_round-brick .yc-text-input__content {\n  border-radius: var(--yc-text-input-border-radius) 0 0 var(--yc-text-input-border-radius);\n}\n.yc-text-input.yc-text-input_pin_brick-round .yc-text-input__content {\n  border-radius: 0 var(--yc-text-input-border-radius) var(--yc-text-input-border-radius) 0;\n}\n.yc-text-input.yc-text-input_pin_round-clear .yc-text-input__content {\n  border-radius: var(--yc-text-input-border-radius) 0 0 var(--yc-text-input-border-radius);\n  border-right: 0;\n}\n.yc-text-input.yc-text-input_pin_clear-round .yc-text-input__content {\n  border-radius: 0 var(--yc-text-input-border-radius) var(--yc-text-input-border-radius) 0;\n  border-left: 0;\n}\n.yc-text-input.yc-text-input_pin_brick-clear .yc-text-input__content {\n  border-radius: 0;\n  border-right: 0;\n}\n.yc-text-input.yc-text-input_pin_clear-brick .yc-text-input__content {\n  border-radius: 0;\n  border-left: 0;\n}\n.yc-text-input.yc-text-input_pin_circle-brick .yc-text-input__content {\n  border-radius: 100px 0 0 100px;\n}\n.yc-text-input.yc-text-input_pin_brick-circle .yc-text-input__content {\n  border-radius: 0 100px 100px 0;\n}\n.yc-text-input.yc-text-input_pin_circle-clear .yc-text-input__content {\n  border-radius: 100px 0 0 100px;\n  border-right: 0;\n}\n.yc-text-input.yc-text-input_pin_clear-circle .yc-text-input__content {\n  border-radius: 0 100px 100px 0;\n  border-left: 0;\n}\n.yc-text-input_disabled .yc-text-input__content {\n  background-color: var(--yc-color-base-generic-accent-disabled);\n  color: var(--yc-color-text-hint);\n  border-color: transparent;\n}\n.yc-text-input_disabled .yc-text-input__content:hover {\n  border-color: transparent;\n}\n.yc-text-input_disabled .yc-text-input__control {\n  color: var(--yc-color-text-hint);\n}\n.yc-text-input_disabled .yc-text-input__label {\n  color: var(--yc-color-text-hint);\n}\n.yc-text-input_has-scrollbar .yc-text-input__clear {\n  right: var(--yc-scrollbar-width);\n}\n.yc-text-input_has-left-content .yc-text-input__control {\n  padding-left: 2px;\n}\n.yc-text-input_has-right-content .yc-text-input__control {\n  padding-right: 2px;\n}\n.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content {\n  border-color: var(--yc-color-line-danger);\n}\n.yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content:hover, .yc-text-input_state_error.yc-text-input_view_normal .yc-text-input__content:focus-within {\n  border-color: var(--yc-color-line-danger);\n}\n.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content {\n  border-bottom: 1px solid var(--yc-color-line-danger);\n}\n.yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content:hover, .yc-text-input_state_error.yc-text-input_view_clear .yc-text-input__content:focus-within {\n  border-bottom: 1px solid var(--yc-color-line-danger);\n}"],sourceRoot:""}]);const c=a},2429:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7537),o=n.n(r),i=n(3645),a=n.n(i)()(o());a.push([e.id,".App{margin:0;min-height:100vh}.yc-root{--dc-header-height: 0px}","",{version:3,sources:["webpack://./src/components/App/App.scss"],names:[],mappings:"AAAA,KACI,QAAA,CACA,gBAAA,CAGJ,SACI,uBAAA",sourcesContent:[".App {\n    margin: 0;\n    min-height: 100vh;\n}\n\n.yc-root {\n    --dc-header-height: 0px;\n}\n"],sourceRoot:""}]);const c=a},3645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,o,i){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var c=0;c<this.length;c++){var l=this[c][0];null!=l&&(a[l]=!0)}for(var s=0;s<e.length;s++){var A=[].concat(e[s]);r&&a[A[0]]||(void 0!==i&&(void 0===A[5]||(A[1]="@layer".concat(A[5].length>0?" ".concat(A[5]):""," {").concat(A[1],"}")),A[5]=i),n&&(A[2]?(A[1]="@media ".concat(A[2]," {").concat(A[1],"}"),A[2]=n):A[2]=n),o&&(A[4]?(A[1]="@supports (".concat(A[4],") {").concat(A[1],"}"),A[4]=o):A[4]="".concat(o)),t.push(A))}},t}},1667:e=>{"use strict";e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},7537:e=>{"use strict";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if("function"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),o="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(r),i="/*# ".concat(o," */");return[t].concat([i]).join("\n")}return[t].join("\n")}},1143:e=>{"use strict";e.exports=function(e,t,n,r,o,i,a,c){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,o,i,a,c],A=0;(l=new Error(t.replace(/%s/g,(function(){return s[A++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5457:e=>{e.exports=[{name:"Abkhaz",local:"Аҧсуа",1:"ab",2:"abk","2T":"abk","2B":"abk",3:"abk"},{name:"Afar",local:"Afaraf",1:"aa",2:"aar","2T":"aar","2B":"aar",3:"aar"},{name:"Afrikaans",local:"Afrikaans",1:"af",2:"afr","2T":"afr","2B":"afr",3:"afr"},{name:"Akan",local:"Akan",1:"ak",2:"aka","2T":"aka","2B":"aka",3:"aka"},{name:"Albanian",local:"Shqip",1:"sq",2:"sqi","2T":"sqi","2B":"alb",3:"sqi"},{name:"Amharic",local:"አማርኛ",1:"am",2:"amh","2T":"amh","2B":"amh",3:"amh"},{name:"Arabic",local:"العربية",1:"ar",2:"ara","2T":"ara","2B":"ara",3:"ara"},{name:"Aragonese",local:"Aragonés",1:"an",2:"arg","2T":"arg","2B":"arg",3:"arg"},{name:"Armenian",local:"Հայերեն",1:"hy",2:"hye","2T":"hye","2B":"arm",3:"hye"},{name:"Assamese",local:"অসমীয়া",1:"as",2:"asm","2T":"asm","2B":"asm",3:"asm"},{name:"Avaric",local:"Авар",1:"av",2:"ava","2T":"ava","2B":"ava",3:"ava"},{name:"Avestan",local:"avesta",1:"ae",2:"ave","2T":"ave","2B":"ave",3:"ave"},{name:"Aymara",local:"Aymar",1:"ay",2:"aym","2T":"aym","2B":"aym",3:"aym"},{name:"Azerbaijani",local:"Azərbaycanca",1:"az",2:"aze","2T":"aze","2B":"aze",3:"aze"},{name:"Bambara",local:"Bamanankan",1:"bm",2:"bam","2T":"bam","2B":"bam",3:"bam"},{name:"Bashkir",local:"Башҡортса",1:"ba",2:"bak","2T":"bak","2B":"bak",3:"bak"},{name:"Basque",local:"Euskara",1:"eu",2:"eus","2T":"eus","2B":"baq",3:"eus"},{name:"Belarusian",local:"Беларуская",1:"be",2:"bel","2T":"bel","2B":"bel",3:"bel"},{name:"Bengali",local:"বাংলা",1:"bn",2:"ben","2T":"ben","2B":"ben",3:"ben"},{name:"Bihari",local:"भोजपुरी",1:"bh",2:"bih","2T":"bih","2B":"bih",3:"bih"},{name:"Bislama",local:"Bislama",1:"bi",2:"bis","2T":"bis","2B":"bis",3:"bis"},{name:"Bosnian",local:"Bosanski",1:"bs",2:"bos","2T":"bos","2B":"bos",3:"bos"},{name:"Breton",local:"Brezhoneg",1:"br",2:"bre","2T":"bre","2B":"bre",3:"bre"},{name:"Bulgarian",local:"Български",1:"bg",2:"bul","2T":"bul","2B":"bul",3:"bul"},{name:"Burmese",local:"မြန်မာဘာသာ",1:"my",2:"mya","2T":"mya","2B":"bur",3:"mya"},{name:"Catalan",local:"Català",1:"ca",2:"cat","2T":"cat","2B":"cat",3:"cat"},{name:"Chamorro",local:"Chamoru",1:"ch",2:"cha","2T":"cha","2B":"cha",3:"cha"},{name:"Chechen",local:"Нохчийн",1:"ce",2:"che","2T":"che","2B":"che",3:"che"},{name:"Chichewa",local:"Chichewa",1:"ny",2:"nya","2T":"nya","2B":"nya",3:"nya"},{name:"Chinese",local:"中文",1:"zh",2:"zho","2T":"zho","2B":"chi",3:"zho"},{name:"Chuvash",local:"Чӑвашла",1:"cv",2:"chv","2T":"chv","2B":"chv",3:"chv"},{name:"Cornish",local:"Kernewek",1:"kw",2:"cor","2T":"cor","2B":"cor",3:"cor"},{name:"Corsican",local:"Corsu",1:"co",2:"cos","2T":"cos","2B":"cos",3:"cos"},{name:"Cree",local:"ᓀᐦᐃᔭᐍᐏᐣ",1:"cr",2:"cre","2T":"cre","2B":"cre",3:"cre"},{name:"Croatian",local:"Hrvatski",1:"hr",2:"hrv","2T":"hrv","2B":"hrv",3:"hrv"},{name:"Czech",local:"Čeština",1:"cs",2:"ces","2T":"ces","2B":"cze",3:"ces"},{name:"Danish",local:"Dansk",1:"da",2:"dan","2T":"dan","2B":"dan",3:"dan"},{name:"Divehi",local:"Divehi",1:"dv",2:"div","2T":"div","2B":"div",3:"div"},{name:"Dutch",local:"Nederlands",1:"nl",2:"nld","2T":"nld","2B":"dut",3:"nld"},{name:"Dzongkha",local:"རྫོང་ཁ",1:"dz",2:"dzo","2T":"dzo","2B":"dzo",3:"dzo"},{name:"English",local:"English",1:"en",2:"eng","2T":"eng","2B":"eng",3:"eng"},{name:"Esperanto",local:"Esperanto",1:"eo",2:"epo","2T":"epo","2B":"epo",3:"epo"},{name:"Estonian",local:"Eesti",1:"et",2:"est","2T":"est","2B":"est",3:"est"},{name:"Ewe",local:"Eʋegbe",1:"ee",2:"ewe","2T":"ewe","2B":"ewe",3:"ewe"},{name:"Faroese",local:"Føroyskt",1:"fo",2:"fao","2T":"fao","2B":"fao",3:"fao"},{name:"Fijian",local:"Na Vosa Vaka-Viti",1:"fj",2:"fij","2T":"fij","2B":"fij",3:"fij"},{name:"Finnish",local:"Suomi",1:"fi",2:"fin","2T":"fin","2B":"fin",3:"fin"},{name:"French",local:"Français",1:"fr",2:"fra","2T":"fra","2B":"fre",3:"fra"},{name:"Fula",local:"Fulfulde",1:"ff",2:"ful","2T":"ful","2B":"ful",3:"ful"},{name:"Galician",local:"Galego",1:"gl",2:"glg","2T":"glg","2B":"glg",3:"glg"},{name:"Georgian",local:"ქართული",1:"ka",2:"kat","2T":"kat","2B":"geo",3:"kat"},{name:"German",local:"Deutsch",1:"de",2:"deu","2T":"deu","2B":"ger",3:"deu"},{name:"Greek",local:"Ελληνικά",1:"el",2:"ell","2T":"ell","2B":"gre",3:"ell"},{name:"Guaraní",local:"Avañe'ẽ",1:"gn",2:"grn","2T":"grn","2B":"grn",3:"grn"},{name:"Gujarati",local:"ગુજરાતી",1:"gu",2:"guj","2T":"guj","2B":"guj",3:"guj"},{name:"Haitian",local:"Kreyòl Ayisyen",1:"ht",2:"hat","2T":"hat","2B":"hat",3:"hat"},{name:"Hausa",local:"هَوُسَ",1:"ha",2:"hau","2T":"hau","2B":"hau",3:"hau"},{name:"Hebrew",local:"עברית",1:"he",2:"heb","2T":"heb","2B":"heb",3:"heb"},{name:"Herero",local:"Otjiherero",1:"hz",2:"her","2T":"her","2B":"her",3:"her"},{name:"Hindi",local:"हिन्दी",1:"hi",2:"hin","2T":"hin","2B":"hin",3:"hin"},{name:"Hiri Motu",local:"Hiri Motu",1:"ho",2:"hmo","2T":"hmo","2B":"hmo",3:"hmo"},{name:"Hungarian",local:"Magyar",1:"hu",2:"hun","2T":"hun","2B":"hun",3:"hun"},{name:"Interlingua",local:"Interlingua",1:"ia",2:"ina","2T":"ina","2B":"ina",3:"ina"},{name:"Indonesian",local:"Bahasa Indonesia",1:"id",2:"ind","2T":"ind","2B":"ind",3:"ind"},{name:"Interlingue",local:"Interlingue",1:"ie",2:"ile","2T":"ile","2B":"ile",3:"ile"},{name:"Irish",local:"Gaeilge",1:"ga",2:"gle","2T":"gle","2B":"gle",3:"gle"},{name:"Igbo",local:"Igbo",1:"ig",2:"ibo","2T":"ibo","2B":"ibo",3:"ibo"},{name:"Inupiaq",local:"Iñupiak",1:"ik",2:"ipk","2T":"ipk","2B":"ipk",3:"ipk"},{name:"Ido",local:"Ido",1:"io",2:"ido","2T":"ido","2B":"ido",3:"ido"},{name:"Icelandic",local:"Íslenska",1:"is",2:"isl","2T":"isl","2B":"ice",3:"isl"},{name:"Italian",local:"Italiano",1:"it",2:"ita","2T":"ita","2B":"ita",3:"ita"},{name:"Inuktitut",local:"ᐃᓄᒃᑎᑐᑦ",1:"iu",2:"iku","2T":"iku","2B":"iku",3:"iku"},{name:"Japanese",local:"日本語",1:"ja",2:"jpn","2T":"jpn","2B":"jpn",3:"jpn"},{name:"Javanese",local:"Basa Jawa",1:"jv",2:"jav","2T":"jav","2B":"jav",3:"jav"},{name:"Kalaallisut",local:"Kalaallisut",1:"kl",2:"kal","2T":"kal","2B":"kal",3:"kal"},{name:"Kannada",local:"ಕನ್ನಡ",1:"kn",2:"kan","2T":"kan","2B":"kan",3:"kan"},{name:"Kanuri",local:"Kanuri",1:"kr",2:"kau","2T":"kau","2B":"kau",3:"kau"},{name:"Kashmiri",local:"كشميري",1:"ks",2:"kas","2T":"kas","2B":"kas",3:"kas"},{name:"Kazakh",local:"Қазақша",1:"kk",2:"kaz","2T":"kaz","2B":"kaz",3:"kaz"},{name:"Khmer",local:"ភាសាខ្មែរ",1:"km",2:"khm","2T":"khm","2B":"khm",3:"khm"},{name:"Kikuyu",local:"Gĩkũyũ",1:"ki",2:"kik","2T":"kik","2B":"kik",3:"kik"},{name:"Kinyarwanda",local:"Kinyarwanda",1:"rw",2:"kin","2T":"kin","2B":"kin",3:"kin"},{name:"Kyrgyz",local:"Кыргызча",1:"ky",2:"kir","2T":"kir","2B":"kir",3:"kir"},{name:"Komi",local:"Коми",1:"kv",2:"kom","2T":"kom","2B":"kom",3:"kom"},{name:"Kongo",local:"Kongo",1:"kg",2:"kon","2T":"kon","2B":"kon",3:"kon"},{name:"Korean",local:"한국어",1:"ko",2:"kor","2T":"kor","2B":"kor",3:"kor"},{name:"Kurdish",local:"Kurdî",1:"ku",2:"kur","2T":"kur","2B":"kur",3:"kur"},{name:"Kwanyama",local:"Kuanyama",1:"kj",2:"kua","2T":"kua","2B":"kua",3:"kua"},{name:"Latin",local:"Latina",1:"la",2:"lat","2T":"lat","2B":"lat",3:"lat"},{name:"Luxembourgish",local:"Lëtzebuergesch",1:"lb",2:"ltz","2T":"ltz","2B":"ltz",3:"ltz"},{name:"Ganda",local:"Luganda",1:"lg",2:"lug","2T":"lug","2B":"lug",3:"lug"},{name:"Limburgish",local:"Limburgs",1:"li",2:"lim","2T":"lim","2B":"lim",3:"lim"},{name:"Lingala",local:"Lingála",1:"ln",2:"lin","2T":"lin","2B":"lin",3:"lin"},{name:"Lao",local:"ພາສາລາວ",1:"lo",2:"lao","2T":"lao","2B":"lao",3:"lao"},{name:"Lithuanian",local:"Lietuvių",1:"lt",2:"lit","2T":"lit","2B":"lit",3:"lit"},{name:"Luba-Katanga",local:"Tshiluba",1:"lu",2:"lub","2T":"lub","2B":"lub",3:"lub"},{name:"Latvian",local:"Latviešu",1:"lv",2:"lav","2T":"lav","2B":"lav",3:"lav"},{name:"Manx",local:"Gaelg",1:"gv",2:"glv","2T":"glv","2B":"glv",3:"glv"},{name:"Macedonian",local:"Македонски",1:"mk",2:"mkd","2T":"mkd","2B":"mac",3:"mkd"},{name:"Malagasy",local:"Malagasy",1:"mg",2:"mlg","2T":"mlg","2B":"mlg",3:"mlg"},{name:"Malay",local:"Bahasa Melayu",1:"ms",2:"msa","2T":"msa","2B":"may",3:"msa"},{name:"Malayalam",local:"മലയാളം",1:"ml",2:"mal","2T":"mal","2B":"mal",3:"mal"},{name:"Maltese",local:"Malti",1:"mt",2:"mlt","2T":"mlt","2B":"mlt",3:"mlt"},{name:"Māori",local:"Māori",1:"mi",2:"mri","2T":"mri","2B":"mao",3:"mri"},{name:"Marathi",local:"मराठी",1:"mr",2:"mar","2T":"mar","2B":"mar",3:"mar"},{name:"Marshallese",local:"Kajin M̧ajeļ",1:"mh",2:"mah","2T":"mah","2B":"mah",3:"mah"},{name:"Mongolian",local:"Монгол",1:"mn",2:"mon","2T":"mon","2B":"mon",3:"mon"},{name:"Nauru",local:"Dorerin Naoero",1:"na",2:"nau","2T":"nau","2B":"nau",3:"nau"},{name:"Navajo",local:"Diné Bizaad",1:"nv",2:"nav","2T":"nav","2B":"nav",3:"nav"},{name:"Northern Ndebele",local:"isiNdebele",1:"nd",2:"nde","2T":"nde","2B":"nde",3:"nde"},{name:"Nepali",local:"नेपाली",1:"ne",2:"nep","2T":"nep","2B":"nep",3:"nep"},{name:"Ndonga",local:"Owambo",1:"ng",2:"ndo","2T":"ndo","2B":"ndo",3:"ndo"},{name:"Norwegian Bokmål",local:"Norsk (Bokmål)",1:"nb",2:"nob","2T":"nob","2B":"nob",3:"nob"},{name:"Norwegian Nynorsk",local:"Norsk (Nynorsk)",1:"nn",2:"nno","2T":"nno","2B":"nno",3:"nno"},{name:"Norwegian",local:"Norsk",1:"no",2:"nor","2T":"nor","2B":"nor",3:"nor"},{name:"Nuosu",local:"ꆈꌠ꒿ Nuosuhxop",1:"ii",2:"iii","2T":"iii","2B":"iii",3:"iii"},{name:"Southern Ndebele",local:"isiNdebele",1:"nr",2:"nbl","2T":"nbl","2B":"nbl",3:"nbl"},{name:"Occitan",local:"Occitan",1:"oc",2:"oci","2T":"oci","2B":"oci",3:"oci"},{name:"Ojibwe",local:"ᐊᓂᔑᓈᐯᒧᐎᓐ",1:"oj",2:"oji","2T":"oji","2B":"oji",3:"oji"},{name:"Old Church Slavonic",local:"Словѣ́ньскъ",1:"cu",2:"chu","2T":"chu","2B":"chu",3:"chu"},{name:"Oromo",local:"Afaan Oromoo",1:"om",2:"orm","2T":"orm","2B":"orm",3:"orm"},{name:"Oriya",local:"ଓଡି଼ଆ",1:"or",2:"ori","2T":"ori","2B":"ori",3:"ori"},{name:"Ossetian",local:"Ирон æвзаг",1:"os",2:"oss","2T":"oss","2B":"oss",3:"oss"},{name:"Panjabi",local:"ਪੰਜਾਬੀ",1:"pa",2:"pan","2T":"pan","2B":"pan",3:"pan"},{name:"Pāli",local:"पाऴि",1:"pi",2:"pli","2T":"pli","2B":"pli",3:"pli"},{name:"Persian",local:"فارسی",1:"fa",2:"fas","2T":"fas","2B":"per",3:"fas"},{name:"Polish",local:"Polski",1:"pl",2:"pol","2T":"pol","2B":"pol",3:"pol"},{name:"Pashto",local:"پښتو",1:"ps",2:"pus","2T":"pus","2B":"pus",3:"pus"},{name:"Portuguese",local:"Português",1:"pt",2:"por","2T":"por","2B":"por",3:"por"},{name:"Quechua",local:"Runa Simi",1:"qu",2:"que","2T":"que","2B":"que",3:"que"},{name:"Romansh",local:"Rumantsch",1:"rm",2:"roh","2T":"roh","2B":"roh",3:"roh"},{name:"Kirundi",local:"Kirundi",1:"rn",2:"run","2T":"run","2B":"run",3:"run"},{name:"Romanian",local:"Română",1:"ro",2:"ron","2T":"ron","2B":"rum",3:"ron"},{name:"Russian",local:"Русский",1:"ru",2:"rus","2T":"rus","2B":"rus",3:"rus"},{name:"Sanskrit",local:"संस्कृतम्",1:"sa",2:"san","2T":"san","2B":"san",3:"san"},{name:"Sardinian",local:"Sardu",1:"sc",2:"srd","2T":"srd","2B":"srd",3:"srd"},{name:"Sindhi",local:"سنڌي‎",1:"sd",2:"snd","2T":"snd","2B":"snd",3:"snd"},{name:"Northern Sami",local:"Sámegiella",1:"se",2:"sme","2T":"sme","2B":"sme",3:"sme"},{name:"Samoan",local:"Gagana Sāmoa",1:"sm",2:"smo","2T":"smo","2B":"smo",3:"smo"},{name:"Sango",local:"Sängö",1:"sg",2:"sag","2T":"sag","2B":"sag",3:"sag"},{name:"Serbian",local:"Српски",1:"sr",2:"srp","2T":"srp","2B":"srp",3:"srp"},{name:"Gaelic",local:"Gàidhlig",1:"gd",2:"gla","2T":"gla","2B":"gla",3:"gla"},{name:"Shona",local:"ChiShona",1:"sn",2:"sna","2T":"sna","2B":"sna",3:"sna"},{name:"Sinhala",local:"සිංහල",1:"si",2:"sin","2T":"sin","2B":"sin",3:"sin"},{name:"Slovak",local:"Slovenčina",1:"sk",2:"slk","2T":"slk","2B":"slo",3:"slk"},{name:"Slovene",local:"Slovenščina",1:"sl",2:"slv","2T":"slv","2B":"slv",3:"slv"},{name:"Somali",local:"Soomaaliga",1:"so",2:"som","2T":"som","2B":"som",3:"som"},{name:"Southern Sotho",local:"Sesotho",1:"st",2:"sot","2T":"sot","2B":"sot",3:"sot"},{name:"Spanish",local:"Español",1:"es",2:"spa","2T":"spa","2B":"spa",3:"spa"},{name:"Sundanese",local:"Basa Sunda",1:"su",2:"sun","2T":"sun","2B":"sun",3:"sun"},{name:"Swahili",local:"Kiswahili",1:"sw",2:"swa","2T":"swa","2B":"swa",3:"swa"},{name:"Swati",local:"SiSwati",1:"ss",2:"ssw","2T":"ssw","2B":"ssw",3:"ssw"},{name:"Swedish",local:"Svenska",1:"sv",2:"swe","2T":"swe","2B":"swe",3:"swe"},{name:"Tamil",local:"தமிழ்",1:"ta",2:"tam","2T":"tam","2B":"tam",3:"tam"},{name:"Telugu",local:"తెలుగు",1:"te",2:"tel","2T":"tel","2B":"tel",3:"tel"},{name:"Tajik",local:"Тоҷикӣ",1:"tg",2:"tgk","2T":"tgk","2B":"tgk",3:"tgk"},{name:"Thai",local:"ภาษาไทย",1:"th",2:"tha","2T":"tha","2B":"tha",3:"tha"},{name:"Tigrinya",local:"ትግርኛ",1:"ti",2:"tir","2T":"tir","2B":"tir",3:"tir"},{name:"Tibetan Standard",local:"བོད་ཡིག",1:"bo",2:"bod","2T":"bod","2B":"tib",3:"bod"},{name:"Turkmen",local:"Türkmençe",1:"tk",2:"tuk","2T":"tuk","2B":"tuk",3:"tuk"},{name:"Tagalog",local:"Tagalog",1:"tl",2:"tgl","2T":"tgl","2B":"tgl",3:"tgl"},{name:"Tswana",local:"Setswana",1:"tn",2:"tsn","2T":"tsn","2B":"tsn",3:"tsn"},{name:"Tonga",local:"faka Tonga",1:"to",2:"ton","2T":"ton","2B":"ton",3:"ton"},{name:"Turkish",local:"Türkçe",1:"tr",2:"tur","2T":"tur","2B":"tur",3:"tur"},{name:"Tsonga",local:"Xitsonga",1:"ts",2:"tso","2T":"tso","2B":"tso",3:"tso"},{name:"Tatar",local:"Татарча",1:"tt",2:"tat","2T":"tat","2B":"tat",3:"tat"},{name:"Twi",local:"Twi",1:"tw",2:"twi","2T":"twi","2B":"twi",3:"twi"},{name:"Tahitian",local:"Reo Mā’ohi",1:"ty",2:"tah","2T":"tah","2B":"tah",3:"tah"},{name:"Uyghur",local:"ئۇيغۇرچه",1:"ug",2:"uig","2T":"uig","2B":"uig",3:"uig"},{name:"Ukrainian",local:"Українська",1:"uk",2:"ukr","2T":"ukr","2B":"ukr",3:"ukr"},{name:"Urdu",local:"اردو",1:"ur",2:"urd","2T":"urd","2B":"urd",3:"urd"},{name:"Uzbek",local:"O‘zbek",1:"uz",2:"uzb","2T":"uzb","2B":"uzb",3:"uzb"},{name:"Venda",local:"Tshivenḓa",1:"ve",2:"ven","2T":"ven","2B":"ven",3:"ven"},{name:"Vietnamese",local:"Tiếng Việt",1:"vi",2:"vie","2T":"vie","2B":"vie",3:"vie"},{name:"Volapük",local:"Volapük",1:"vo",2:"vol","2T":"vol","2B":"vol",3:"vol"},{name:"Walloon",local:"Walon",1:"wa",2:"wln","2T":"wln","2B":"wln",3:"wln"},{name:"Welsh",local:"Cymraeg",1:"cy",2:"cym","2T":"cym","2B":"wel",3:"cym"},{name:"Wolof",local:"Wolof",1:"wo",2:"wol","2T":"wol","2B":"wol",3:"wol"},{name:"Western Frisian",local:"Frysk",1:"fy",2:"fry","2T":"fry","2B":"fry",3:"fry"},{name:"Xhosa",local:"isiXhosa",1:"xh",2:"xho","2T":"xho","2B":"xho",3:"xho"},{name:"Yiddish",local:"ייִדיש",1:"yi",2:"yid","2T":"yid","2B":"yid",3:"yid"},{name:"Yoruba",local:"Yorùbá",1:"yo",2:"yor","2T":"yor","2B":"yor",3:"yor"},{name:"Zhuang",local:"Cuengh",1:"za",2:"zha","2T":"zha","2B":"zha",3:"zha"},{name:"Zulu",local:"isiZulu",1:"zu",2:"zul","2T":"zul","2B":"zul",3:"zul"}]},7576:(e,t,n)=>{var r=n(5457),o={all:function(){return r},has:function(e,t){return void 0!==i(e,t)},codes:function(e){if(function(e){return-1!==[1,2,3,"1","2","2B","2T","3"].indexOf(e)}(e))return a(r,(function(t){return t[e]}))},names:function(e){return a(r,(function(t){return e?t.local:t.name}))},where:i};function i(e,t){for(var n=0;n<r.length;n++)if(t===r[n][e])return r[n]}function a(e,t){var n,r=[];for(n=0;n<e.length;n++)r.push(t(e[n],n));return r}e.exports=o},2705:(e,t,n)=>{var r=n(5639).Symbol;e.exports=r},4239:(e,t,n)=>{var r=n(2705),o=n(9607),i=n(2333),a=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?o(e):i(e)}},98:e=>{var t=Math.ceil,n=Math.max;e.exports=function(e,r,o,i){for(var a=-1,c=n(t((r-e)/(o||1)),0),l=Array(c);c--;)l[i?c:++a]=e,e+=o;return l}},7561:(e,t,n)=>{var r=n(7990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(o,""):e}},7445:(e,t,n)=>{var r=n(98),o=n(6612),i=n(8601);e.exports=function(e){return function(t,n,a){return a&&"number"!=typeof a&&o(t,n,a)&&(n=a=void 0),t=i(t),void 0===n?(n=t,t=0):n=i(n),a=void 0===a?t<n?1:-1:i(a),r(t,n,a,e)}}},1957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},9607:(e,t,n)=>{var r=n(2705),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,c=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,c),n=e[c];try{e[c]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[c]=n:delete e[c]),o}},5776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e<n}},6612:(e,t,n)=>{var r=n(7813),o=n(8612),i=n(5776),a=n(3218);e.exports=function(e,t,n){if(!a(n))return!1;var c=typeof t;return!!("number"==c?o(n)&&i(t,n.length):"string"==c&&t in n)&&r(n[t],e)}},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5639:(e,t,n)=>{var r=n(1957),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},7990:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},3279:(e,t,n)=>{var r=n(3218),o=n(7771),i=n(4841),a=Math.max,c=Math.min;e.exports=function(e,t,n){var l,s,A,u,d,p,y=0,g=!1,h=!1,f=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function v(t){var n=l,r=s;return l=s=void 0,y=t,u=e.apply(r,n)}function m(e){var n=e-p;return void 0===p||n>=t||n<0||h&&e-y>=A}function C(){var e=o();if(m(e))return b(e);d=setTimeout(C,function(e){var n=t-(e-p);return h?c(n,A-(e-y)):n}(e))}function b(e){return d=void 0,f&&l?v(e):(l=s=void 0,u)}function x(){var e=o(),n=m(e);if(l=arguments,s=this,p=e,n){if(void 0===d)return function(e){return y=e,d=setTimeout(C,t),g?v(e):u}(p);if(h)return clearTimeout(d),d=setTimeout(C,t),v(p)}return void 0===d&&(d=setTimeout(C,t)),u}return t=i(t)||0,r(n)&&(g=!!n.leading,A=(h="maxWait"in n)?a(i(n.maxWait)||0,t):A,f="trailing"in n?!!n.trailing:f),x.cancel=function(){void 0!==d&&clearTimeout(d),y=0,l=p=s=d=void 0},x.flush=function(){return void 0===d?u:b(o())},x}},7813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},8612:(e,t,n)=>{var r=n(3560),o=n(1780);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},3560:(e,t,n)=>{var r=n(4239),o=n(3218);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},1780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},3218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},7005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},3448:(e,t,n)=>{var r=n(4239),o=n(7005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},6486:function(e,t,n){var r;e=n.nmd(e),function(){var o,i="Expected a function",a="__lodash_hash_undefined__",c="__lodash_placeholder__",l=32,s=128,A=1/0,u=9007199254740991,d=NaN,p=4294967295,y=[["ary",s],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",l],["partialRight",64],["rearg",256]],g="[object Arguments]",h="[object Array]",f="[object Boolean]",v="[object Date]",m="[object Error]",C="[object Function]",b="[object GeneratorFunction]",x="[object Map]",w="[object Number]",E="[object Object]",_="[object Promise]",k="[object RegExp]",B="[object Set]",I="[object String]",S="[object Symbol]",D="[object WeakMap]",z="[object ArrayBuffer]",T="[object DataView]",Q="[object Float32Array]",M="[object Float64Array]",F="[object Int8Array]",O="[object Int16Array]",N="[object Int32Array]",P="[object Uint8Array]",R="[object Uint8ClampedArray]",j="[object Uint16Array]",L="[object Uint32Array]",q=/\b__p \+= '';/g,U=/\b(__p \+=) '' \+/g,V=/(__e\(.*?\)|\b__t\)) \+\n'';/g,W=/&(?:amp|lt|gt|quot|#39);/g,G=/[&<>"']/g,Y=RegExp(W.source),H=RegExp(G.source),Z=/<%-([\s\S]+?)%>/g,J=/<%([\s\S]+?)%>/g,K=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$=/^\w*$/,ee=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,te=/[\\^$.*+?()[\]{}|]/g,ne=RegExp(te.source),re=/^\s+/,oe=/\s/,ie=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ae=/\{\n\/\* \[wrapped with (.+)\] \*/,ce=/,? & /,le=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,se=/[()=,{}\[\]\/\s]/,Ae=/\\(\\)?/g,ue=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,de=/\w*$/,pe=/^[-+]0x[0-9a-f]+$/i,ye=/^0b[01]+$/i,ge=/^\[object .+?Constructor\]$/,he=/^0o[0-7]+$/i,fe=/^(?:0|[1-9]\d*)$/,ve=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,me=/($^)/,Ce=/['\n\r\u2028\u2029\\]/g,be="\\ud800-\\udfff",xe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",we="\\u2700-\\u27bf",Ee="a-z\\xdf-\\xf6\\xf8-\\xff",_e="A-Z\\xc0-\\xd6\\xd8-\\xde",ke="\\ufe0e\\ufe0f",Be="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Ie="["+be+"]",Se="["+Be+"]",De="["+xe+"]",ze="\\d+",Te="["+we+"]",Qe="["+Ee+"]",Me="[^"+be+Be+ze+we+Ee+_e+"]",Fe="\\ud83c[\\udffb-\\udfff]",Oe="[^"+be+"]",Ne="(?:\\ud83c[\\udde6-\\uddff]){2}",Pe="[\\ud800-\\udbff][\\udc00-\\udfff]",Re="["+_e+"]",je="\\u200d",Le="(?:"+Qe+"|"+Me+")",qe="(?:"+Re+"|"+Me+")",Ue="(?:['’](?:d|ll|m|re|s|t|ve))?",Ve="(?:['’](?:D|LL|M|RE|S|T|VE))?",We="(?:"+De+"|"+Fe+")?",Ge="["+ke+"]?",Ye=Ge+We+"(?:"+je+"(?:"+[Oe,Ne,Pe].join("|")+")"+Ge+We+")*",He="(?:"+[Te,Ne,Pe].join("|")+")"+Ye,Ze="(?:"+[Oe+De+"?",De,Ne,Pe,Ie].join("|")+")",Je=RegExp("['’]","g"),Ke=RegExp(De,"g"),Xe=RegExp(Fe+"(?="+Fe+")|"+Ze+Ye,"g"),$e=RegExp([Re+"?"+Qe+"+"+Ue+"(?="+[Se,Re,"$"].join("|")+")",qe+"+"+Ve+"(?="+[Se,Re+Le,"$"].join("|")+")",Re+"?"+Le+"+"+Ue,Re+"+"+Ve,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ze,He].join("|"),"g"),et=RegExp("["+je+be+xe+ke+"]"),tt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,nt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],rt=-1,ot={};ot[Q]=ot[M]=ot[F]=ot[O]=ot[N]=ot[P]=ot[R]=ot[j]=ot[L]=!0,ot[g]=ot[h]=ot[z]=ot[f]=ot[T]=ot[v]=ot[m]=ot[C]=ot[x]=ot[w]=ot[E]=ot[k]=ot[B]=ot[I]=ot[D]=!1;var it={};it[g]=it[h]=it[z]=it[T]=it[f]=it[v]=it[Q]=it[M]=it[F]=it[O]=it[N]=it[x]=it[w]=it[E]=it[k]=it[B]=it[I]=it[S]=it[P]=it[R]=it[j]=it[L]=!0,it[m]=it[C]=it[D]=!1;var at={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ct=parseFloat,lt=parseInt,st="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,At="object"==typeof self&&self&&self.Object===Object&&self,ut=st||At||Function("return this")(),dt=t&&!t.nodeType&&t,pt=dt&&e&&!e.nodeType&&e,yt=pt&&pt.exports===dt,gt=yt&&st.process,ht=function(){try{return pt&&pt.require&&pt.require("util").types||gt&&gt.binding&&gt.binding("util")}catch(e){}}(),ft=ht&&ht.isArrayBuffer,vt=ht&&ht.isDate,mt=ht&&ht.isMap,Ct=ht&&ht.isRegExp,bt=ht&&ht.isSet,xt=ht&&ht.isTypedArray;function wt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Et(e,t,n,r){for(var o=-1,i=null==e?0:e.length;++o<i;){var a=e[o];t(r,a,n(a),e)}return r}function _t(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}function kt(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function Bt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0}function It(e,t){for(var n=-1,r=null==e?0:e.length,o=0,i=[];++n<r;){var a=e[n];t(a,n,e)&&(i[o++]=a)}return i}function St(e,t){return!(null==e||!e.length)&&Rt(e,t,0)>-1}function Dt(e,t,n){for(var r=-1,o=null==e?0:e.length;++r<o;)if(n(t,e[r]))return!0;return!1}function zt(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}function Tt(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}function Qt(e,t,n,r){var o=-1,i=null==e?0:e.length;for(r&&i&&(n=e[++o]);++o<i;)n=t(n,e[o],o,e);return n}function Mt(e,t,n,r){var o=null==e?0:e.length;for(r&&o&&(n=e[--o]);o--;)n=t(n,e[o],o,e);return n}function Ft(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var Ot=Ut("length");function Nt(e,t,n){var r;return n(e,(function(e,n,o){if(t(e,n,o))return r=n,!1})),r}function Pt(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i<o;)if(t(e[i],i,e))return i;return-1}function Rt(e,t,n){return t==t?function(e,t,n){for(var r=n-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}(e,t,n):Pt(e,Lt,n)}function jt(e,t,n,r){for(var o=n-1,i=e.length;++o<i;)if(r(e[o],t))return o;return-1}function Lt(e){return e!=e}function qt(e,t){var n=null==e?0:e.length;return n?Gt(e,t)/n:d}function Ut(e){return function(t){return null==t?o:t[e]}}function Vt(e){return function(t){return null==e?o:e[t]}}function Wt(e,t,n,r,o){return o(e,(function(e,o,i){n=r?(r=!1,e):t(n,e,o,i)})),n}function Gt(e,t){for(var n,r=-1,i=e.length;++r<i;){var a=t(e[r]);a!==o&&(n=n===o?a:n+a)}return n}function Yt(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function Ht(e){return e?e.slice(0,dn(e)+1).replace(re,""):e}function Zt(e){return function(t){return e(t)}}function Jt(e,t){return zt(t,(function(t){return e[t]}))}function Kt(e,t){return e.has(t)}function Xt(e,t){for(var n=-1,r=e.length;++n<r&&Rt(t,e[n],0)>-1;);return n}function $t(e,t){for(var n=e.length;n--&&Rt(t,e[n],0)>-1;);return n}var en=Vt({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",Ĳ:"IJ",ĳ:"ij",Œ:"Oe",œ:"oe",ŉ:"'n",ſ:"s"}),tn=Vt({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function nn(e){return"\\"+at[e]}function rn(e){return et.test(e)}function on(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function an(e,t){return function(n){return e(t(n))}}function cn(e,t){for(var n=-1,r=e.length,o=0,i=[];++n<r;){var a=e[n];a!==t&&a!==c||(e[n]=c,i[o++]=n)}return i}function ln(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}function sn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=[e,e]})),n}function An(e){return rn(e)?function(e){for(var t=Xe.lastIndex=0;Xe.test(e);)++t;return t}(e):Ot(e)}function un(e){return rn(e)?function(e){return e.match(Xe)||[]}(e):function(e){return e.split("")}(e)}function dn(e){for(var t=e.length;t--&&oe.test(e.charAt(t)););return t}var pn=Vt({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),yn=function e(t){var n,r=(t=null==t?ut:yn.defaults(ut.Object(),t,yn.pick(ut,nt))).Array,oe=t.Date,be=t.Error,xe=t.Function,we=t.Math,Ee=t.Object,_e=t.RegExp,ke=t.String,Be=t.TypeError,Ie=r.prototype,Se=xe.prototype,De=Ee.prototype,ze=t["__core-js_shared__"],Te=Se.toString,Qe=De.hasOwnProperty,Me=0,Fe=(n=/[^.]+$/.exec(ze&&ze.keys&&ze.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Oe=De.toString,Ne=Te.call(Ee),Pe=ut._,Re=_e("^"+Te.call(Qe).replace(te,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),je=yt?t.Buffer:o,Le=t.Symbol,qe=t.Uint8Array,Ue=je?je.allocUnsafe:o,Ve=an(Ee.getPrototypeOf,Ee),We=Ee.create,Ge=De.propertyIsEnumerable,Ye=Ie.splice,He=Le?Le.isConcatSpreadable:o,Ze=Le?Le.iterator:o,Xe=Le?Le.toStringTag:o,et=function(){try{var e=si(Ee,"defineProperty");return e({},"",{}),e}catch(e){}}(),at=t.clearTimeout!==ut.clearTimeout&&t.clearTimeout,st=oe&&oe.now!==ut.Date.now&&oe.now,At=t.setTimeout!==ut.setTimeout&&t.setTimeout,dt=we.ceil,pt=we.floor,gt=Ee.getOwnPropertySymbols,ht=je?je.isBuffer:o,Ot=t.isFinite,Vt=Ie.join,gn=an(Ee.keys,Ee),hn=we.max,fn=we.min,vn=oe.now,mn=t.parseInt,Cn=we.random,bn=Ie.reverse,xn=si(t,"DataView"),wn=si(t,"Map"),En=si(t,"Promise"),_n=si(t,"Set"),kn=si(t,"WeakMap"),Bn=si(Ee,"create"),In=kn&&new kn,Sn={},Dn=Ni(xn),zn=Ni(wn),Tn=Ni(En),Qn=Ni(_n),Mn=Ni(kn),Fn=Le?Le.prototype:o,On=Fn?Fn.valueOf:o,Nn=Fn?Fn.toString:o;function Pn(e){if(ec(e)&&!Ua(e)&&!(e instanceof qn)){if(e instanceof Ln)return e;if(Qe.call(e,"__wrapped__"))return Pi(e)}return new Ln(e)}var Rn=function(){function e(){}return function(t){if(!$a(t))return{};if(We)return We(t);e.prototype=t;var n=new e;return e.prototype=o,n}}();function jn(){}function Ln(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=o}function qn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=p,this.__views__=[]}function Un(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Vn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Wn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Gn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Wn;++t<n;)this.add(e[t])}function Yn(e){var t=this.__data__=new Vn(e);this.size=t.size}function Hn(e,t){var n=Ua(e),r=!n&&qa(e),o=!n&&!r&&Ya(e),i=!n&&!r&&!o&&lc(e),a=n||r||o||i,c=a?Yt(e.length,ke):[],l=c.length;for(var s in e)!t&&!Qe.call(e,s)||a&&("length"==s||o&&("offset"==s||"parent"==s)||i&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||hi(s,l))||c.push(s);return c}function Zn(e){var t=e.length;return t?e[Wr(0,t-1)]:o}function Jn(e,t){return Ti(Bo(e),ir(t,0,e.length))}function Kn(e){return Ti(Bo(e))}function Xn(e,t,n){(n!==o&&!Ra(e[t],n)||n===o&&!(t in e))&&rr(e,t,n)}function $n(e,t,n){var r=e[t];Qe.call(e,t)&&Ra(r,n)&&(n!==o||t in e)||rr(e,t,n)}function er(e,t){for(var n=e.length;n--;)if(Ra(e[n][0],t))return n;return-1}function tr(e,t,n,r){return Ar(e,(function(e,o,i){t(r,e,n(e),i)})),r}function nr(e,t){return e&&Io(t,Dc(t),e)}function rr(e,t,n){"__proto__"==t&&et?et(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function or(e,t){for(var n=-1,i=t.length,a=r(i),c=null==e;++n<i;)a[n]=c?o:_c(e,t[n]);return a}function ir(e,t,n){return e==e&&(n!==o&&(e=e<=n?e:n),t!==o&&(e=e>=t?e:t)),e}function ar(e,t,n,r,i,a){var c,l=1&t,s=2&t,A=4&t;if(n&&(c=i?n(e,r,i,a):n(e)),c!==o)return c;if(!$a(e))return e;var u=Ua(e);if(u){if(c=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Qe.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!l)return Bo(e,c)}else{var d=di(e),p=d==C||d==b;if(Ya(e))return bo(e,l);if(d==E||d==g||p&&!i){if(c=s||p?{}:yi(e),!l)return s?function(e,t){return Io(e,ui(e),t)}(e,function(e,t){return e&&Io(t,zc(t),e)}(c,e)):function(e,t){return Io(e,Ai(e),t)}(e,nr(c,e))}else{if(!it[d])return i?e:{};c=function(e,t,n){var r,o=e.constructor;switch(t){case z:return xo(e);case f:case v:return new o(+e);case T:return function(e,t){var n=t?xo(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case Q:case M:case F:case O:case N:case P:case R:case j:case L:return wo(e,n);case x:return new o;case w:case I:return new o(e);case k:return function(e){var t=new e.constructor(e.source,de.exec(e));return t.lastIndex=e.lastIndex,t}(e);case B:return new o;case S:return r=e,On?Ee(On.call(r)):{}}}(e,d,l)}}a||(a=new Yn);var y=a.get(e);if(y)return y;a.set(e,c),ic(e)?e.forEach((function(r){c.add(ar(r,t,n,r,e,a))})):tc(e)&&e.forEach((function(r,o){c.set(o,ar(r,t,n,o,e,a))}));var h=u?o:(A?s?ni:ti:s?zc:Dc)(e);return _t(h||e,(function(r,o){h&&(r=e[o=r]),$n(c,o,ar(r,t,n,o,e,a))})),c}function cr(e,t,n){var r=n.length;if(null==e)return!r;for(e=Ee(e);r--;){var i=n[r],a=t[i],c=e[i];if(c===o&&!(i in e)||!a(c))return!1}return!0}function lr(e,t,n){if("function"!=typeof e)throw new Be(i);return Ii((function(){e.apply(o,n)}),t)}function sr(e,t,n,r){var o=-1,i=St,a=!0,c=e.length,l=[],s=t.length;if(!c)return l;n&&(t=zt(t,Zt(n))),r?(i=Dt,a=!1):t.length>=200&&(i=Kt,a=!1,t=new Gn(t));e:for(;++o<c;){var A=e[o],u=null==n?A:n(A);if(A=r||0!==A?A:0,a&&u==u){for(var d=s;d--;)if(t[d]===u)continue e;l.push(A)}else i(t,u,r)||l.push(A)}return l}Pn.templateSettings={escape:Z,evaluate:J,interpolate:K,variable:"",imports:{_:Pn}},Pn.prototype=jn.prototype,Pn.prototype.constructor=Pn,Ln.prototype=Rn(jn.prototype),Ln.prototype.constructor=Ln,qn.prototype=Rn(jn.prototype),qn.prototype.constructor=qn,Un.prototype.clear=function(){this.__data__=Bn?Bn(null):{},this.size=0},Un.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Un.prototype.get=function(e){var t=this.__data__;if(Bn){var n=t[e];return n===a?o:n}return Qe.call(t,e)?t[e]:o},Un.prototype.has=function(e){var t=this.__data__;return Bn?t[e]!==o:Qe.call(t,e)},Un.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Bn&&t===o?a:t,this},Vn.prototype.clear=function(){this.__data__=[],this.size=0},Vn.prototype.delete=function(e){var t=this.__data__,n=er(t,e);return!(n<0||(n==t.length-1?t.pop():Ye.call(t,n,1),--this.size,0))},Vn.prototype.get=function(e){var t=this.__data__,n=er(t,e);return n<0?o:t[n][1]},Vn.prototype.has=function(e){return er(this.__data__,e)>-1},Vn.prototype.set=function(e,t){var n=this.__data__,r=er(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Wn.prototype.clear=function(){this.size=0,this.__data__={hash:new Un,map:new(wn||Vn),string:new Un}},Wn.prototype.delete=function(e){var t=ci(this,e).delete(e);return this.size-=t?1:0,t},Wn.prototype.get=function(e){return ci(this,e).get(e)},Wn.prototype.has=function(e){return ci(this,e).has(e)},Wn.prototype.set=function(e,t){var n=ci(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Gn.prototype.add=Gn.prototype.push=function(e){return this.__data__.set(e,a),this},Gn.prototype.has=function(e){return this.__data__.has(e)},Yn.prototype.clear=function(){this.__data__=new Vn,this.size=0},Yn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Yn.prototype.get=function(e){return this.__data__.get(e)},Yn.prototype.has=function(e){return this.__data__.has(e)},Yn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Vn){var r=n.__data__;if(!wn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Wn(r)}return n.set(e,t),this.size=n.size,this};var Ar=zo(vr),ur=zo(mr,!0);function dr(e,t){var n=!0;return Ar(e,(function(e,r,o){return n=!!t(e,r,o)})),n}function pr(e,t,n){for(var r=-1,i=e.length;++r<i;){var a=e[r],c=t(a);if(null!=c&&(l===o?c==c&&!cc(c):n(c,l)))var l=c,s=a}return s}function yr(e,t){var n=[];return Ar(e,(function(e,r,o){t(e,r,o)&&n.push(e)})),n}function gr(e,t,n,r,o){var i=-1,a=e.length;for(n||(n=gi),o||(o=[]);++i<a;){var c=e[i];t>0&&n(c)?t>1?gr(c,t-1,n,r,o):Tt(o,c):r||(o[o.length]=c)}return o}var hr=To(),fr=To(!0);function vr(e,t){return e&&hr(e,t,Dc)}function mr(e,t){return e&&fr(e,t,Dc)}function Cr(e,t){return It(t,(function(t){return Ja(e[t])}))}function br(e,t){for(var n=0,r=(t=fo(t,e)).length;null!=e&&n<r;)e=e[Oi(t[n++])];return n&&n==r?e:o}function xr(e,t,n){var r=t(e);return Ua(e)?r:Tt(r,n(e))}function wr(e){return null==e?e===o?"[object Undefined]":"[object Null]":Xe&&Xe in Ee(e)?function(e){var t=Qe.call(e,Xe),n=e[Xe];try{e[Xe]=o;var r=!0}catch(e){}var i=Oe.call(e);return r&&(t?e[Xe]=n:delete e[Xe]),i}(e):function(e){return Oe.call(e)}(e)}function Er(e,t){return e>t}function _r(e,t){return null!=e&&Qe.call(e,t)}function kr(e,t){return null!=e&&t in Ee(e)}function Br(e,t,n){for(var i=n?Dt:St,a=e[0].length,c=e.length,l=c,s=r(c),A=1/0,u=[];l--;){var d=e[l];l&&t&&(d=zt(d,Zt(t))),A=fn(d.length,A),s[l]=!n&&(t||a>=120&&d.length>=120)?new Gn(l&&d):o}d=e[0];var p=-1,y=s[0];e:for(;++p<a&&u.length<A;){var g=d[p],h=t?t(g):g;if(g=n||0!==g?g:0,!(y?Kt(y,h):i(u,h,n))){for(l=c;--l;){var f=s[l];if(!(f?Kt(f,h):i(e[l],h,n)))continue e}y&&y.push(h),u.push(g)}}return u}function Ir(e,t,n){var r=null==(e=_i(e,t=fo(t,e)))?e:e[Oi(Zi(t))];return null==r?o:wt(r,e,n)}function Sr(e){return ec(e)&&wr(e)==g}function Dr(e,t,n,r,i){return e===t||(null==e||null==t||!ec(e)&&!ec(t)?e!=e&&t!=t:function(e,t,n,r,i,a){var c=Ua(e),l=Ua(t),s=c?h:di(e),A=l?h:di(t),u=(s=s==g?E:s)==E,d=(A=A==g?E:A)==E,p=s==A;if(p&&Ya(e)){if(!Ya(t))return!1;c=!0,u=!1}if(p&&!u)return a||(a=new Yn),c||lc(e)?$o(e,t,n,r,i,a):function(e,t,n,r,o,i,a){switch(n){case T:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case z:return!(e.byteLength!=t.byteLength||!i(new qe(e),new qe(t)));case f:case v:case w:return Ra(+e,+t);case m:return e.name==t.name&&e.message==t.message;case k:case I:return e==t+"";case x:var c=on;case B:var l=1&r;if(c||(c=ln),e.size!=t.size&&!l)return!1;var s=a.get(e);if(s)return s==t;r|=2,a.set(e,t);var A=$o(c(e),c(t),r,o,i,a);return a.delete(e),A;case S:if(On)return On.call(e)==On.call(t)}return!1}(e,t,s,n,r,i,a);if(!(1&n)){var y=u&&Qe.call(e,"__wrapped__"),C=d&&Qe.call(t,"__wrapped__");if(y||C){var b=y?e.value():e,_=C?t.value():t;return a||(a=new Yn),i(b,_,n,r,a)}}return!!p&&(a||(a=new Yn),function(e,t,n,r,i,a){var c=1&n,l=ti(e),s=l.length;if(s!=ti(t).length&&!c)return!1;for(var A=s;A--;){var u=l[A];if(!(c?u in t:Qe.call(t,u)))return!1}var d=a.get(e),p=a.get(t);if(d&&p)return d==t&&p==e;var y=!0;a.set(e,t),a.set(t,e);for(var g=c;++A<s;){var h=e[u=l[A]],f=t[u];if(r)var v=c?r(f,h,u,t,e,a):r(h,f,u,e,t,a);if(!(v===o?h===f||i(h,f,n,r,a):v)){y=!1;break}g||(g="constructor"==u)}if(y&&!g){var m=e.constructor,C=t.constructor;m==C||!("constructor"in e)||!("constructor"in t)||"function"==typeof m&&m instanceof m&&"function"==typeof C&&C instanceof C||(y=!1)}return a.delete(e),a.delete(t),y}(e,t,n,r,i,a))}(e,t,n,r,Dr,i))}function zr(e,t,n,r){var i=n.length,a=i,c=!r;if(null==e)return!a;for(e=Ee(e);i--;){var l=n[i];if(c&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<a;){var s=(l=n[i])[0],A=e[s],u=l[1];if(c&&l[2]){if(A===o&&!(s in e))return!1}else{var d=new Yn;if(r)var p=r(A,u,s,e,t,d);if(!(p===o?Dr(u,A,3,r,d):p))return!1}}return!0}function Tr(e){return!(!$a(e)||(t=e,Fe&&Fe in t))&&(Ja(e)?Re:ge).test(Ni(e));var t}function Qr(e){return"function"==typeof e?e:null==e?nl:"object"==typeof e?Ua(e)?Pr(e[0],e[1]):Nr(e):ul(e)}function Mr(e){if(!bi(e))return gn(e);var t=[];for(var n in Ee(e))Qe.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Fr(e,t){return e<t}function Or(e,t){var n=-1,o=Wa(e)?r(e.length):[];return Ar(e,(function(e,r,i){o[++n]=t(e,r,i)})),o}function Nr(e){var t=li(e);return 1==t.length&&t[0][2]?wi(t[0][0],t[0][1]):function(n){return n===e||zr(n,e,t)}}function Pr(e,t){return vi(e)&&xi(t)?wi(Oi(e),t):function(n){var r=_c(n,e);return r===o&&r===t?kc(n,e):Dr(t,r,3)}}function Rr(e,t,n,r,i){e!==t&&hr(t,(function(a,c){if(i||(i=new Yn),$a(a))!function(e,t,n,r,i,a,c){var l=ki(e,n),s=ki(t,n),A=c.get(s);if(A)Xn(e,n,A);else{var u=a?a(l,s,n+"",e,t,c):o,d=u===o;if(d){var p=Ua(s),y=!p&&Ya(s),g=!p&&!y&&lc(s);u=s,p||y||g?Ua(l)?u=l:Ga(l)?u=Bo(l):y?(d=!1,u=bo(s,!0)):g?(d=!1,u=wo(s,!0)):u=[]:rc(s)||qa(s)?(u=l,qa(l)?u=hc(l):$a(l)&&!Ja(l)||(u=yi(s))):d=!1}d&&(c.set(s,u),i(u,s,r,a,c),c.delete(s)),Xn(e,n,u)}}(e,t,c,n,Rr,r,i);else{var l=r?r(ki(e,c),a,c+"",e,t,i):o;l===o&&(l=a),Xn(e,c,l)}}),zc)}function jr(e,t){var n=e.length;if(n)return hi(t+=t<0?n:0,n)?e[t]:o}function Lr(e,t,n){t=t.length?zt(t,(function(e){return Ua(e)?function(t){return br(t,1===e.length?e[0]:e)}:e})):[nl];var r=-1;t=zt(t,Zt(ai()));var o=Or(e,(function(e,n,o){var i=zt(t,(function(t){return t(e)}));return{criteria:i,index:++r,value:e}}));return function(e,t){var r=e.length;for(e.sort((function(e,t){return function(e,t,n){for(var r=-1,o=e.criteria,i=t.criteria,a=o.length,c=n.length;++r<a;){var l=Eo(o[r],i[r]);if(l)return r>=c?l:l*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}));r--;)e[r]=e[r].value;return e}(o)}function qr(e,t,n){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],c=br(e,a);n(c,a)&&Jr(i,fo(a,e),c)}return i}function Ur(e,t,n,r){var o=r?jt:Rt,i=-1,a=t.length,c=e;for(e===t&&(t=Bo(t)),n&&(c=zt(e,Zt(n)));++i<a;)for(var l=0,s=t[i],A=n?n(s):s;(l=o(c,A,l,r))>-1;)c!==e&&Ye.call(c,l,1),Ye.call(e,l,1);return e}function Vr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var o=t[n];if(n==r||o!==i){var i=o;hi(o)?Ye.call(e,o,1):lo(e,o)}}return e}function Wr(e,t){return e+pt(Cn()*(t-e+1))}function Gr(e,t){var n="";if(!e||t<1||t>u)return n;do{t%2&&(n+=e),(t=pt(t/2))&&(e+=e)}while(t);return n}function Yr(e,t){return Si(Ei(e,t,nl),e+"")}function Hr(e){return Zn(Rc(e))}function Zr(e,t){var n=Rc(e);return Ti(n,ir(t,0,n.length))}function Jr(e,t,n,r){if(!$a(e))return e;for(var i=-1,a=(t=fo(t,e)).length,c=a-1,l=e;null!=l&&++i<a;){var s=Oi(t[i]),A=n;if("__proto__"===s||"constructor"===s||"prototype"===s)return e;if(i!=c){var u=l[s];(A=r?r(u,s,l):o)===o&&(A=$a(u)?u:hi(t[i+1])?[]:{})}$n(l,s,A),l=l[s]}return e}var Kr=In?function(e,t){return In.set(e,t),e}:nl,Xr=et?function(e,t){return et(e,"toString",{configurable:!0,enumerable:!1,value:$c(t),writable:!0})}:nl;function $r(e){return Ti(Rc(e))}function eo(e,t,n){var o=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=r(i);++o<i;)a[o]=e[o+t];return a}function to(e,t){var n;return Ar(e,(function(e,r,o){return!(n=t(e,r,o))})),!!n}function no(e,t,n){var r=0,o=null==e?r:e.length;if("number"==typeof t&&t==t&&o<=2147483647){for(;r<o;){var i=r+o>>>1,a=e[i];null!==a&&!cc(a)&&(n?a<=t:a<t)?r=i+1:o=i}return o}return ro(e,t,nl,n)}function ro(e,t,n,r){var i=0,a=null==e?0:e.length;if(0===a)return 0;for(var c=(t=n(t))!=t,l=null===t,s=cc(t),A=t===o;i<a;){var u=pt((i+a)/2),d=n(e[u]),p=d!==o,y=null===d,g=d==d,h=cc(d);if(c)var f=r||g;else f=A?g&&(r||p):l?g&&p&&(r||!y):s?g&&p&&!y&&(r||!h):!y&&!h&&(r?d<=t:d<t);f?i=u+1:a=u}return fn(a,4294967294)}function oo(e,t){for(var n=-1,r=e.length,o=0,i=[];++n<r;){var a=e[n],c=t?t(a):a;if(!n||!Ra(c,l)){var l=c;i[o++]=0===a?0:a}}return i}function io(e){return"number"==typeof e?e:cc(e)?d:+e}function ao(e){if("string"==typeof e)return e;if(Ua(e))return zt(e,ao)+"";if(cc(e))return Nn?Nn.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function co(e,t,n){var r=-1,o=St,i=e.length,a=!0,c=[],l=c;if(n)a=!1,o=Dt;else if(i>=200){var s=t?null:Yo(e);if(s)return ln(s);a=!1,o=Kt,l=new Gn}else l=t?[]:c;e:for(;++r<i;){var A=e[r],u=t?t(A):A;if(A=n||0!==A?A:0,a&&u==u){for(var d=l.length;d--;)if(l[d]===u)continue e;t&&l.push(u),c.push(A)}else o(l,u,n)||(l!==c&&l.push(u),c.push(A))}return c}function lo(e,t){return null==(e=_i(e,t=fo(t,e)))||delete e[Oi(Zi(t))]}function so(e,t,n,r){return Jr(e,t,n(br(e,t)),r)}function Ao(e,t,n,r){for(var o=e.length,i=r?o:-1;(r?i--:++i<o)&&t(e[i],i,e););return n?eo(e,r?0:i,r?i+1:o):eo(e,r?i+1:0,r?o:i)}function uo(e,t){var n=e;return n instanceof qn&&(n=n.value()),Qt(t,(function(e,t){return t.func.apply(t.thisArg,Tt([e],t.args))}),n)}function po(e,t,n){var o=e.length;if(o<2)return o?co(e[0]):[];for(var i=-1,a=r(o);++i<o;)for(var c=e[i],l=-1;++l<o;)l!=i&&(a[i]=sr(a[i]||c,e[l],t,n));return co(gr(a,1),t,n)}function yo(e,t,n){for(var r=-1,i=e.length,a=t.length,c={};++r<i;){var l=r<a?t[r]:o;n(c,e[r],l)}return c}function go(e){return Ga(e)?e:[]}function ho(e){return"function"==typeof e?e:nl}function fo(e,t){return Ua(e)?e:vi(e,t)?[e]:Fi(fc(e))}var vo=Yr;function mo(e,t,n){var r=e.length;return n=n===o?r:n,!t&&n>=r?e:eo(e,t,n)}var Co=at||function(e){return ut.clearTimeout(e)};function bo(e,t){if(t)return e.slice();var n=e.length,r=Ue?Ue(n):new e.constructor(n);return e.copy(r),r}function xo(e){var t=new e.constructor(e.byteLength);return new qe(t).set(new qe(e)),t}function wo(e,t){var n=t?xo(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Eo(e,t){if(e!==t){var n=e!==o,r=null===e,i=e==e,a=cc(e),c=t!==o,l=null===t,s=t==t,A=cc(t);if(!l&&!A&&!a&&e>t||a&&c&&s&&!l&&!A||r&&c&&s||!n&&s||!i)return 1;if(!r&&!a&&!A&&e<t||A&&n&&i&&!r&&!a||l&&n&&i||!c&&i||!s)return-1}return 0}function _o(e,t,n,o){for(var i=-1,a=e.length,c=n.length,l=-1,s=t.length,A=hn(a-c,0),u=r(s+A),d=!o;++l<s;)u[l]=t[l];for(;++i<c;)(d||i<a)&&(u[n[i]]=e[i]);for(;A--;)u[l++]=e[i++];return u}function ko(e,t,n,o){for(var i=-1,a=e.length,c=-1,l=n.length,s=-1,A=t.length,u=hn(a-l,0),d=r(u+A),p=!o;++i<u;)d[i]=e[i];for(var y=i;++s<A;)d[y+s]=t[s];for(;++c<l;)(p||i<a)&&(d[y+n[c]]=e[i++]);return d}function Bo(e,t){var n=-1,o=e.length;for(t||(t=r(o));++n<o;)t[n]=e[n];return t}function Io(e,t,n,r){var i=!n;n||(n={});for(var a=-1,c=t.length;++a<c;){var l=t[a],s=r?r(n[l],e[l],l,n,e):o;s===o&&(s=e[l]),i?rr(n,l,s):$n(n,l,s)}return n}function So(e,t){return function(n,r){var o=Ua(n)?Et:tr,i=t?t():{};return o(n,e,ai(r,2),i)}}function Do(e){return Yr((function(t,n){var r=-1,i=n.length,a=i>1?n[i-1]:o,c=i>2?n[2]:o;for(a=e.length>3&&"function"==typeof a?(i--,a):o,c&&fi(n[0],n[1],c)&&(a=i<3?o:a,i=1),t=Ee(t);++r<i;){var l=n[r];l&&e(t,l,r,a)}return t}))}function zo(e,t){return function(n,r){if(null==n)return n;if(!Wa(n))return e(n,r);for(var o=n.length,i=t?o:-1,a=Ee(n);(t?i--:++i<o)&&!1!==r(a[i],i,a););return n}}function To(e){return function(t,n,r){for(var o=-1,i=Ee(t),a=r(t),c=a.length;c--;){var l=a[e?c:++o];if(!1===n(i[l],l,i))break}return t}}function Qo(e){return function(t){var n=rn(t=fc(t))?un(t):o,r=n?n[0]:t.charAt(0),i=n?mo(n,1).join(""):t.slice(1);return r[e]()+i}}function Mo(e){return function(t){return Qt(Jc(qc(t).replace(Je,"")),e,"")}}function Fo(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=Rn(e.prototype),r=e.apply(n,t);return $a(r)?r:n}}function Oo(e){return function(t,n,r){var i=Ee(t);if(!Wa(t)){var a=ai(n,3);t=Dc(t),n=function(e){return a(i[e],e,i)}}var c=e(t,n,r);return c>-1?i[a?t[c]:c]:o}}function No(e){return ei((function(t){var n=t.length,r=n,a=Ln.prototype.thru;for(e&&t.reverse();r--;){var c=t[r];if("function"!=typeof c)throw new Be(i);if(a&&!l&&"wrapper"==oi(c))var l=new Ln([],!0)}for(r=l?r:n;++r<n;){var s=oi(c=t[r]),A="wrapper"==s?ri(c):o;l=A&&mi(A[0])&&424==A[1]&&!A[4].length&&1==A[9]?l[oi(A[0])].apply(l,A[3]):1==c.length&&mi(c)?l[s]():l.thru(c)}return function(){var e=arguments,r=e[0];if(l&&1==e.length&&Ua(r))return l.plant(r).value();for(var o=0,i=n?t[o].apply(this,e):r;++o<n;)i=t[o].call(this,i);return i}}))}function Po(e,t,n,i,a,c,l,A,u,d){var p=t&s,y=1&t,g=2&t,h=24&t,f=512&t,v=g?o:Fo(e);return function s(){for(var m=arguments.length,C=r(m),b=m;b--;)C[b]=arguments[b];if(h)var x=ii(s),w=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}(C,x);if(i&&(C=_o(C,i,a,h)),c&&(C=ko(C,c,l,h)),m-=w,h&&m<d){var E=cn(C,x);return Wo(e,t,Po,s.placeholder,n,C,E,A,u,d-m)}var _=y?n:this,k=g?_[e]:e;return m=C.length,A?C=function(e,t){for(var n=e.length,r=fn(t.length,n),i=Bo(e);r--;){var a=t[r];e[r]=hi(a,n)?i[a]:o}return e}(C,A):f&&m>1&&C.reverse(),p&&u<m&&(C.length=u),this&&this!==ut&&this instanceof s&&(k=v||Fo(k)),k.apply(_,C)}}function Ro(e,t){return function(n,r){return function(e,t,n,r){return vr(e,(function(e,o,i){t(r,n(e),o,i)})),r}(n,e,t(r),{})}}function jo(e,t){return function(n,r){var i;if(n===o&&r===o)return t;if(n!==o&&(i=n),r!==o){if(i===o)return r;"string"==typeof n||"string"==typeof r?(n=ao(n),r=ao(r)):(n=io(n),r=io(r)),i=e(n,r)}return i}}function Lo(e){return ei((function(t){return t=zt(t,Zt(ai())),Yr((function(n){var r=this;return e(t,(function(e){return wt(e,r,n)}))}))}))}function qo(e,t){var n=(t=t===o?" ":ao(t)).length;if(n<2)return n?Gr(t,e):t;var r=Gr(t,dt(e/An(t)));return rn(t)?mo(un(r),0,e).join(""):r.slice(0,e)}function Uo(e){return function(t,n,i){return i&&"number"!=typeof i&&fi(t,n,i)&&(n=i=o),t=dc(t),n===o?(n=t,t=0):n=dc(n),function(e,t,n,o){for(var i=-1,a=hn(dt((t-e)/(n||1)),0),c=r(a);a--;)c[o?a:++i]=e,e+=n;return c}(t,n,i=i===o?t<n?1:-1:dc(i),e)}}function Vo(e){return function(t,n){return"string"==typeof t&&"string"==typeof n||(t=gc(t),n=gc(n)),e(t,n)}}function Wo(e,t,n,r,i,a,c,s,A,u){var d=8&t;t|=d?l:64,4&(t&=~(d?64:l))||(t&=-4);var p=[e,t,i,d?a:o,d?c:o,d?o:a,d?o:c,s,A,u],y=n.apply(o,p);return mi(e)&&Bi(y,p),y.placeholder=r,Di(y,e,t)}function Go(e){var t=we[e];return function(e,n){if(e=gc(e),(n=null==n?0:fn(pc(n),292))&&Ot(e)){var r=(fc(e)+"e").split("e");return+((r=(fc(t(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return t(e)}}var Yo=_n&&1/ln(new _n([,-0]))[1]==A?function(e){return new _n(e)}:cl;function Ho(e){return function(t){var n=di(t);return n==x?on(t):n==B?sn(t):function(e,t){return zt(t,(function(t){return[t,e[t]]}))}(t,e(t))}}function Zo(e,t,n,a,A,u,d,p){var y=2&t;if(!y&&"function"!=typeof e)throw new Be(i);var g=a?a.length:0;if(g||(t&=-97,a=A=o),d=d===o?d:hn(pc(d),0),p=p===o?p:pc(p),g-=A?A.length:0,64&t){var h=a,f=A;a=A=o}var v=y?o:ri(e),m=[e,t,n,a,A,h,f,u,d,p];if(v&&function(e,t){var n=e[1],r=t[1],o=n|r,i=o<131,a=r==s&&8==n||r==s&&256==n&&e[7].length<=t[8]||384==r&&t[7].length<=t[8]&&8==n;if(!i&&!a)return e;1&r&&(e[2]=t[2],o|=1&n?0:4);var l=t[3];if(l){var A=e[3];e[3]=A?_o(A,l,t[4]):l,e[4]=A?cn(e[3],c):t[4]}(l=t[5])&&(A=e[5],e[5]=A?ko(A,l,t[6]):l,e[6]=A?cn(e[5],c):t[6]),(l=t[7])&&(e[7]=l),r&s&&(e[8]=null==e[8]?t[8]:fn(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=o}(m,v),e=m[0],t=m[1],n=m[2],a=m[3],A=m[4],!(p=m[9]=m[9]===o?y?0:e.length:hn(m[9]-g,0))&&24&t&&(t&=-25),t&&1!=t)C=8==t||16==t?function(e,t,n){var i=Fo(e);return function a(){for(var c=arguments.length,l=r(c),s=c,A=ii(a);s--;)l[s]=arguments[s];var u=c<3&&l[0]!==A&&l[c-1]!==A?[]:cn(l,A);return(c-=u.length)<n?Wo(e,t,Po,a.placeholder,o,l,u,o,o,n-c):wt(this&&this!==ut&&this instanceof a?i:e,this,l)}}(e,t,p):t!=l&&33!=t||A.length?Po.apply(o,m):function(e,t,n,o){var i=1&t,a=Fo(e);return function t(){for(var c=-1,l=arguments.length,s=-1,A=o.length,u=r(A+l),d=this&&this!==ut&&this instanceof t?a:e;++s<A;)u[s]=o[s];for(;l--;)u[s++]=arguments[++c];return wt(d,i?n:this,u)}}(e,t,n,a);else var C=function(e,t,n){var r=1&t,o=Fo(e);return function t(){return(this&&this!==ut&&this instanceof t?o:e).apply(r?n:this,arguments)}}(e,t,n);return Di((v?Kr:Bi)(C,m),e,t)}function Jo(e,t,n,r){return e===o||Ra(e,De[n])&&!Qe.call(r,n)?t:e}function Ko(e,t,n,r,i,a){return $a(e)&&$a(t)&&(a.set(t,e),Rr(e,t,o,Ko,a),a.delete(t)),e}function Xo(e){return rc(e)?o:e}function $o(e,t,n,r,i,a){var c=1&n,l=e.length,s=t.length;if(l!=s&&!(c&&s>l))return!1;var A=a.get(e),u=a.get(t);if(A&&u)return A==t&&u==e;var d=-1,p=!0,y=2&n?new Gn:o;for(a.set(e,t),a.set(t,e);++d<l;){var g=e[d],h=t[d];if(r)var f=c?r(h,g,d,t,e,a):r(g,h,d,e,t,a);if(f!==o){if(f)continue;p=!1;break}if(y){if(!Ft(t,(function(e,t){if(!Kt(y,t)&&(g===e||i(g,e,n,r,a)))return y.push(t)}))){p=!1;break}}else if(g!==h&&!i(g,h,n,r,a)){p=!1;break}}return a.delete(e),a.delete(t),p}function ei(e){return Si(Ei(e,o,Vi),e+"")}function ti(e){return xr(e,Dc,Ai)}function ni(e){return xr(e,zc,ui)}var ri=In?function(e){return In.get(e)}:cl;function oi(e){for(var t=e.name+"",n=Sn[t],r=Qe.call(Sn,t)?n.length:0;r--;){var o=n[r],i=o.func;if(null==i||i==e)return o.name}return t}function ii(e){return(Qe.call(Pn,"placeholder")?Pn:e).placeholder}function ai(){var e=Pn.iteratee||rl;return e=e===rl?Qr:e,arguments.length?e(arguments[0],arguments[1]):e}function ci(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function li(e){for(var t=Dc(e),n=t.length;n--;){var r=t[n],o=e[r];t[n]=[r,o,xi(o)]}return t}function si(e,t){var n=function(e,t){return null==e?o:e[t]}(e,t);return Tr(n)?n:o}var Ai=gt?function(e){return null==e?[]:(e=Ee(e),It(gt(e),(function(t){return Ge.call(e,t)})))}:yl,ui=gt?function(e){for(var t=[];e;)Tt(t,Ai(e)),e=Ve(e);return t}:yl,di=wr;function pi(e,t,n){for(var r=-1,o=(t=fo(t,e)).length,i=!1;++r<o;){var a=Oi(t[r]);if(!(i=null!=e&&n(e,a)))break;e=e[a]}return i||++r!=o?i:!!(o=null==e?0:e.length)&&Xa(o)&&hi(a,o)&&(Ua(e)||qa(e))}function yi(e){return"function"!=typeof e.constructor||bi(e)?{}:Rn(Ve(e))}function gi(e){return Ua(e)||qa(e)||!!(He&&e&&e[He])}function hi(e,t){var n=typeof e;return!!(t=null==t?u:t)&&("number"==n||"symbol"!=n&&fe.test(e))&&e>-1&&e%1==0&&e<t}function fi(e,t,n){if(!$a(n))return!1;var r=typeof t;return!!("number"==r?Wa(n)&&hi(t,n.length):"string"==r&&t in n)&&Ra(n[t],e)}function vi(e,t){if(Ua(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!cc(e))||$.test(e)||!X.test(e)||null!=t&&e in Ee(t)}function mi(e){var t=oi(e),n=Pn[t];if("function"!=typeof n||!(t in qn.prototype))return!1;if(e===n)return!0;var r=ri(n);return!!r&&e===r[0]}(xn&&di(new xn(new ArrayBuffer(1)))!=T||wn&&di(new wn)!=x||En&&di(En.resolve())!=_||_n&&di(new _n)!=B||kn&&di(new kn)!=D)&&(di=function(e){var t=wr(e),n=t==E?e.constructor:o,r=n?Ni(n):"";if(r)switch(r){case Dn:return T;case zn:return x;case Tn:return _;case Qn:return B;case Mn:return D}return t});var Ci=ze?Ja:gl;function bi(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||De)}function xi(e){return e==e&&!$a(e)}function wi(e,t){return function(n){return null!=n&&n[e]===t&&(t!==o||e in Ee(n))}}function Ei(e,t,n){return t=hn(t===o?e.length-1:t,0),function(){for(var o=arguments,i=-1,a=hn(o.length-t,0),c=r(a);++i<a;)c[i]=o[t+i];i=-1;for(var l=r(t+1);++i<t;)l[i]=o[i];return l[t]=n(c),wt(e,this,l)}}function _i(e,t){return t.length<2?e:br(e,eo(t,0,-1))}function ki(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var Bi=zi(Kr),Ii=At||function(e,t){return ut.setTimeout(e,t)},Si=zi(Xr);function Di(e,t,n){var r=t+"";return Si(e,function(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(ie,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return _t(y,(function(n){var r="_."+n[0];t&n[1]&&!St(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(ae);return t?t[1].split(ce):[]}(r),n)))}function zi(e){var t=0,n=0;return function(){var r=vn(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(o,arguments)}}function Ti(e,t){var n=-1,r=e.length,i=r-1;for(t=t===o?r:t;++n<t;){var a=Wr(n,i),c=e[a];e[a]=e[n],e[n]=c}return e.length=t,e}var Qi,Mi,Fi=(Qi=Qa((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(ee,(function(e,n,r,o){t.push(r?o.replace(Ae,"$1"):n||e)})),t}),(function(e){return 500===Mi.size&&Mi.clear(),e})),Mi=Qi.cache,Qi);function Oi(e){if("string"==typeof e||cc(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Ni(e){if(null!=e){try{return Te.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function Pi(e){if(e instanceof qn)return e.clone();var t=new Ln(e.__wrapped__,e.__chain__);return t.__actions__=Bo(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var Ri=Yr((function(e,t){return Ga(e)?sr(e,gr(t,1,Ga,!0)):[]})),ji=Yr((function(e,t){var n=Zi(t);return Ga(n)&&(n=o),Ga(e)?sr(e,gr(t,1,Ga,!0),ai(n,2)):[]})),Li=Yr((function(e,t){var n=Zi(t);return Ga(n)&&(n=o),Ga(e)?sr(e,gr(t,1,Ga,!0),o,n):[]}));function qi(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:pc(n);return o<0&&(o=hn(r+o,0)),Pt(e,ai(t,3),o)}function Ui(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return n!==o&&(i=pc(n),i=n<0?hn(r+i,0):fn(i,r-1)),Pt(e,ai(t,3),i,!0)}function Vi(e){return null!=e&&e.length?gr(e,1):[]}function Wi(e){return e&&e.length?e[0]:o}var Gi=Yr((function(e){var t=zt(e,go);return t.length&&t[0]===e[0]?Br(t):[]})),Yi=Yr((function(e){var t=Zi(e),n=zt(e,go);return t===Zi(n)?t=o:n.pop(),n.length&&n[0]===e[0]?Br(n,ai(t,2)):[]})),Hi=Yr((function(e){var t=Zi(e),n=zt(e,go);return(t="function"==typeof t?t:o)&&n.pop(),n.length&&n[0]===e[0]?Br(n,o,t):[]}));function Zi(e){var t=null==e?0:e.length;return t?e[t-1]:o}var Ji=Yr(Ki);function Ki(e,t){return e&&e.length&&t&&t.length?Ur(e,t):e}var Xi=ei((function(e,t){var n=null==e?0:e.length,r=or(e,t);return Vr(e,zt(t,(function(e){return hi(e,n)?+e:e})).sort(Eo)),r}));function $i(e){return null==e?e:bn.call(e)}var ea=Yr((function(e){return co(gr(e,1,Ga,!0))})),ta=Yr((function(e){var t=Zi(e);return Ga(t)&&(t=o),co(gr(e,1,Ga,!0),ai(t,2))})),na=Yr((function(e){var t=Zi(e);return t="function"==typeof t?t:o,co(gr(e,1,Ga,!0),o,t)}));function ra(e){if(!e||!e.length)return[];var t=0;return e=It(e,(function(e){if(Ga(e))return t=hn(e.length,t),!0})),Yt(t,(function(t){return zt(e,Ut(t))}))}function oa(e,t){if(!e||!e.length)return[];var n=ra(e);return null==t?n:zt(n,(function(e){return wt(t,o,e)}))}var ia=Yr((function(e,t){return Ga(e)?sr(e,t):[]})),aa=Yr((function(e){return po(It(e,Ga))})),ca=Yr((function(e){var t=Zi(e);return Ga(t)&&(t=o),po(It(e,Ga),ai(t,2))})),la=Yr((function(e){var t=Zi(e);return t="function"==typeof t?t:o,po(It(e,Ga),o,t)})),sa=Yr(ra),Aa=Yr((function(e){var t=e.length,n=t>1?e[t-1]:o;return n="function"==typeof n?(e.pop(),n):o,oa(e,n)}));function ua(e){var t=Pn(e);return t.__chain__=!0,t}function da(e,t){return t(e)}var pa=ei((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return or(t,e)};return!(t>1||this.__actions__.length)&&r instanceof qn&&hi(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:da,args:[i],thisArg:o}),new Ln(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(o),e}))):this.thru(i)})),ya=So((function(e,t,n){Qe.call(e,n)?++e[n]:rr(e,n,1)})),ga=Oo(qi),ha=Oo(Ui);function fa(e,t){return(Ua(e)?_t:Ar)(e,ai(t,3))}function va(e,t){return(Ua(e)?kt:ur)(e,ai(t,3))}var ma=So((function(e,t,n){Qe.call(e,n)?e[n].push(t):rr(e,n,[t])})),Ca=Yr((function(e,t,n){var o=-1,i="function"==typeof t,a=Wa(e)?r(e.length):[];return Ar(e,(function(e){a[++o]=i?wt(t,e,n):Ir(e,t,n)})),a})),ba=So((function(e,t,n){rr(e,n,t)}));function xa(e,t){return(Ua(e)?zt:Or)(e,ai(t,3))}var wa=So((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]})),Ea=Yr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&fi(e,t[0],t[1])?t=[]:n>2&&fi(t[0],t[1],t[2])&&(t=[t[0]]),Lr(e,gr(t,1),[])})),_a=st||function(){return ut.Date.now()};function ka(e,t,n){return t=n?o:t,t=e&&null==t?e.length:t,Zo(e,s,o,o,o,o,t)}function Ba(e,t){var n;if("function"!=typeof t)throw new Be(i);return e=pc(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=o),n}}var Ia=Yr((function(e,t,n){var r=1;if(n.length){var o=cn(n,ii(Ia));r|=l}return Zo(e,r,t,n,o)})),Sa=Yr((function(e,t,n){var r=3;if(n.length){var o=cn(n,ii(Sa));r|=l}return Zo(t,r,e,n,o)}));function Da(e,t,n){var r,a,c,l,s,A,u=0,d=!1,p=!1,y=!0;if("function"!=typeof e)throw new Be(i);function g(t){var n=r,i=a;return r=a=o,u=t,l=e.apply(i,n)}function h(e){var n=e-A;return A===o||n>=t||n<0||p&&e-u>=c}function f(){var e=_a();if(h(e))return v(e);s=Ii(f,function(e){var n=t-(e-A);return p?fn(n,c-(e-u)):n}(e))}function v(e){return s=o,y&&r?g(e):(r=a=o,l)}function m(){var e=_a(),n=h(e);if(r=arguments,a=this,A=e,n){if(s===o)return function(e){return u=e,s=Ii(f,t),d?g(e):l}(A);if(p)return Co(s),s=Ii(f,t),g(A)}return s===o&&(s=Ii(f,t)),l}return t=gc(t)||0,$a(n)&&(d=!!n.leading,c=(p="maxWait"in n)?hn(gc(n.maxWait)||0,t):c,y="trailing"in n?!!n.trailing:y),m.cancel=function(){s!==o&&Co(s),u=0,r=A=a=s=o},m.flush=function(){return s===o?l:v(_a())},m}var za=Yr((function(e,t){return lr(e,1,t)})),Ta=Yr((function(e,t,n){return lr(e,gc(t)||0,n)}));function Qa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new Be(i);var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=n.cache;if(i.has(o))return i.get(o);var a=e.apply(this,r);return n.cache=i.set(o,a)||i,a};return n.cache=new(Qa.Cache||Wn),n}function Ma(e){if("function"!=typeof e)throw new Be(i);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Qa.Cache=Wn;var Fa=vo((function(e,t){var n=(t=1==t.length&&Ua(t[0])?zt(t[0],Zt(ai())):zt(gr(t,1),Zt(ai()))).length;return Yr((function(r){for(var o=-1,i=fn(r.length,n);++o<i;)r[o]=t[o].call(this,r[o]);return wt(e,this,r)}))})),Oa=Yr((function(e,t){var n=cn(t,ii(Oa));return Zo(e,l,o,t,n)})),Na=Yr((function(e,t){var n=cn(t,ii(Na));return Zo(e,64,o,t,n)})),Pa=ei((function(e,t){return Zo(e,256,o,o,o,t)}));function Ra(e,t){return e===t||e!=e&&t!=t}var ja=Vo(Er),La=Vo((function(e,t){return e>=t})),qa=Sr(function(){return arguments}())?Sr:function(e){return ec(e)&&Qe.call(e,"callee")&&!Ge.call(e,"callee")},Ua=r.isArray,Va=ft?Zt(ft):function(e){return ec(e)&&wr(e)==z};function Wa(e){return null!=e&&Xa(e.length)&&!Ja(e)}function Ga(e){return ec(e)&&Wa(e)}var Ya=ht||gl,Ha=vt?Zt(vt):function(e){return ec(e)&&wr(e)==v};function Za(e){if(!ec(e))return!1;var t=wr(e);return t==m||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!rc(e)}function Ja(e){if(!$a(e))return!1;var t=wr(e);return t==C||t==b||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ka(e){return"number"==typeof e&&e==pc(e)}function Xa(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=u}function $a(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ec(e){return null!=e&&"object"==typeof e}var tc=mt?Zt(mt):function(e){return ec(e)&&di(e)==x};function nc(e){return"number"==typeof e||ec(e)&&wr(e)==w}function rc(e){if(!ec(e)||wr(e)!=E)return!1;var t=Ve(e);if(null===t)return!0;var n=Qe.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Te.call(n)==Ne}var oc=Ct?Zt(Ct):function(e){return ec(e)&&wr(e)==k},ic=bt?Zt(bt):function(e){return ec(e)&&di(e)==B};function ac(e){return"string"==typeof e||!Ua(e)&&ec(e)&&wr(e)==I}function cc(e){return"symbol"==typeof e||ec(e)&&wr(e)==S}var lc=xt?Zt(xt):function(e){return ec(e)&&Xa(e.length)&&!!ot[wr(e)]},sc=Vo(Fr),Ac=Vo((function(e,t){return e<=t}));function uc(e){if(!e)return[];if(Wa(e))return ac(e)?un(e):Bo(e);if(Ze&&e[Ze])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ze]());var t=di(e);return(t==x?on:t==B?ln:Rc)(e)}function dc(e){return e?(e=gc(e))===A||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function pc(e){var t=dc(e),n=t%1;return t==t?n?t-n:t:0}function yc(e){return e?ir(pc(e),0,p):0}function gc(e){if("number"==typeof e)return e;if(cc(e))return d;if($a(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=$a(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Ht(e);var n=ye.test(e);return n||he.test(e)?lt(e.slice(2),n?2:8):pe.test(e)?d:+e}function hc(e){return Io(e,zc(e))}function fc(e){return null==e?"":ao(e)}var vc=Do((function(e,t){if(bi(t)||Wa(t))Io(t,Dc(t),e);else for(var n in t)Qe.call(t,n)&&$n(e,n,t[n])})),mc=Do((function(e,t){Io(t,zc(t),e)})),Cc=Do((function(e,t,n,r){Io(t,zc(t),e,r)})),bc=Do((function(e,t,n,r){Io(t,Dc(t),e,r)})),xc=ei(or),wc=Yr((function(e,t){e=Ee(e);var n=-1,r=t.length,i=r>2?t[2]:o;for(i&&fi(t[0],t[1],i)&&(r=1);++n<r;)for(var a=t[n],c=zc(a),l=-1,s=c.length;++l<s;){var A=c[l],u=e[A];(u===o||Ra(u,De[A])&&!Qe.call(e,A))&&(e[A]=a[A])}return e})),Ec=Yr((function(e){return e.push(o,Ko),wt(Qc,o,e)}));function _c(e,t,n){var r=null==e?o:br(e,t);return r===o?n:r}function kc(e,t){return null!=e&&pi(e,t,kr)}var Bc=Ro((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=Oe.call(t)),e[t]=n}),$c(nl)),Ic=Ro((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=Oe.call(t)),Qe.call(e,t)?e[t].push(n):e[t]=[n]}),ai),Sc=Yr(Ir);function Dc(e){return Wa(e)?Hn(e):Mr(e)}function zc(e){return Wa(e)?Hn(e,!0):function(e){if(!$a(e))return function(e){var t=[];if(null!=e)for(var n in Ee(e))t.push(n);return t}(e);var t=bi(e),n=[];for(var r in e)("constructor"!=r||!t&&Qe.call(e,r))&&n.push(r);return n}(e)}var Tc=Do((function(e,t,n){Rr(e,t,n)})),Qc=Do((function(e,t,n,r){Rr(e,t,n,r)})),Mc=ei((function(e,t){var n={};if(null==e)return n;var r=!1;t=zt(t,(function(t){return t=fo(t,e),r||(r=t.length>1),t})),Io(e,ni(e),n),r&&(n=ar(n,7,Xo));for(var o=t.length;o--;)lo(n,t[o]);return n})),Fc=ei((function(e,t){return null==e?{}:function(e,t){return qr(e,t,(function(t,n){return kc(e,n)}))}(e,t)}));function Oc(e,t){if(null==e)return{};var n=zt(ni(e),(function(e){return[e]}));return t=ai(t),qr(e,n,(function(e,n){return t(e,n[0])}))}var Nc=Ho(Dc),Pc=Ho(zc);function Rc(e){return null==e?[]:Jt(e,Dc(e))}var jc=Mo((function(e,t,n){return t=t.toLowerCase(),e+(n?Lc(t):t)}));function Lc(e){return Zc(fc(e).toLowerCase())}function qc(e){return(e=fc(e))&&e.replace(ve,en).replace(Ke,"")}var Uc=Mo((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Vc=Mo((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Wc=Qo("toLowerCase"),Gc=Mo((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()})),Yc=Mo((function(e,t,n){return e+(n?" ":"")+Zc(t)})),Hc=Mo((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Zc=Qo("toUpperCase");function Jc(e,t,n){return e=fc(e),(t=n?o:t)===o?function(e){return tt.test(e)}(e)?function(e){return e.match($e)||[]}(e):function(e){return e.match(le)||[]}(e):e.match(t)||[]}var Kc=Yr((function(e,t){try{return wt(e,o,t)}catch(e){return Za(e)?e:new be(e)}})),Xc=ei((function(e,t){return _t(t,(function(t){t=Oi(t),rr(e,t,Ia(e[t],e))})),e}));function $c(e){return function(){return e}}var el=No(),tl=No(!0);function nl(e){return e}function rl(e){return Qr("function"==typeof e?e:ar(e,1))}var ol=Yr((function(e,t){return function(n){return Ir(n,e,t)}})),il=Yr((function(e,t){return function(n){return Ir(e,n,t)}}));function al(e,t,n){var r=Dc(t),o=Cr(t,r);null!=n||$a(t)&&(o.length||!r.length)||(n=t,t=e,e=this,o=Cr(t,Dc(t)));var i=!($a(n)&&"chain"in n&&!n.chain),a=Ja(e);return _t(o,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__);return(n.__actions__=Bo(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,Tt([this.value()],arguments))})})),e}function cl(){}var ll=Lo(zt),sl=Lo(Bt),Al=Lo(Ft);function ul(e){return vi(e)?Ut(Oi(e)):function(e){return function(t){return br(t,e)}}(e)}var dl=Uo(),pl=Uo(!0);function yl(){return[]}function gl(){return!1}var hl,fl=jo((function(e,t){return e+t}),0),vl=Go("ceil"),ml=jo((function(e,t){return e/t}),1),Cl=Go("floor"),bl=jo((function(e,t){return e*t}),1),xl=Go("round"),wl=jo((function(e,t){return e-t}),0);return Pn.after=function(e,t){if("function"!=typeof t)throw new Be(i);return e=pc(e),function(){if(--e<1)return t.apply(this,arguments)}},Pn.ary=ka,Pn.assign=vc,Pn.assignIn=mc,Pn.assignInWith=Cc,Pn.assignWith=bc,Pn.at=xc,Pn.before=Ba,Pn.bind=Ia,Pn.bindAll=Xc,Pn.bindKey=Sa,Pn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Ua(e)?e:[e]},Pn.chain=ua,Pn.chunk=function(e,t,n){t=(n?fi(e,t,n):t===o)?1:hn(pc(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var a=0,c=0,l=r(dt(i/t));a<i;)l[c++]=eo(e,a,a+=t);return l},Pn.compact=function(e){for(var t=-1,n=null==e?0:e.length,r=0,o=[];++t<n;){var i=e[t];i&&(o[r++]=i)}return o},Pn.concat=function(){var e=arguments.length;if(!e)return[];for(var t=r(e-1),n=arguments[0],o=e;o--;)t[o-1]=arguments[o];return Tt(Ua(n)?Bo(n):[n],gr(t,1))},Pn.cond=function(e){var t=null==e?0:e.length,n=ai();return e=t?zt(e,(function(e){if("function"!=typeof e[1])throw new Be(i);return[n(e[0]),e[1]]})):[],Yr((function(n){for(var r=-1;++r<t;){var o=e[r];if(wt(o[0],this,n))return wt(o[1],this,n)}}))},Pn.conforms=function(e){return function(e){var t=Dc(e);return function(n){return cr(n,e,t)}}(ar(e,1))},Pn.constant=$c,Pn.countBy=ya,Pn.create=function(e,t){var n=Rn(e);return null==t?n:nr(n,t)},Pn.curry=function e(t,n,r){var i=Zo(t,8,o,o,o,o,o,n=r?o:n);return i.placeholder=e.placeholder,i},Pn.curryRight=function e(t,n,r){var i=Zo(t,16,o,o,o,o,o,n=r?o:n);return i.placeholder=e.placeholder,i},Pn.debounce=Da,Pn.defaults=wc,Pn.defaultsDeep=Ec,Pn.defer=za,Pn.delay=Ta,Pn.difference=Ri,Pn.differenceBy=ji,Pn.differenceWith=Li,Pn.drop=function(e,t,n){var r=null==e?0:e.length;return r?eo(e,(t=n||t===o?1:pc(t))<0?0:t,r):[]},Pn.dropRight=function(e,t,n){var r=null==e?0:e.length;return r?eo(e,0,(t=r-(t=n||t===o?1:pc(t)))<0?0:t):[]},Pn.dropRightWhile=function(e,t){return e&&e.length?Ao(e,ai(t,3),!0,!0):[]},Pn.dropWhile=function(e,t){return e&&e.length?Ao(e,ai(t,3),!0):[]},Pn.fill=function(e,t,n,r){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&fi(e,t,n)&&(n=0,r=i),function(e,t,n,r){var i=e.length;for((n=pc(n))<0&&(n=-n>i?0:i+n),(r=r===o||r>i?i:pc(r))<0&&(r+=i),r=n>r?0:yc(r);n<r;)e[n++]=t;return e}(e,t,n,r)):[]},Pn.filter=function(e,t){return(Ua(e)?It:yr)(e,ai(t,3))},Pn.flatMap=function(e,t){return gr(xa(e,t),1)},Pn.flatMapDeep=function(e,t){return gr(xa(e,t),A)},Pn.flatMapDepth=function(e,t,n){return n=n===o?1:pc(n),gr(xa(e,t),n)},Pn.flatten=Vi,Pn.flattenDeep=function(e){return null!=e&&e.length?gr(e,A):[]},Pn.flattenDepth=function(e,t){return null!=e&&e.length?gr(e,t=t===o?1:pc(t)):[]},Pn.flip=function(e){return Zo(e,512)},Pn.flow=el,Pn.flowRight=tl,Pn.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,r={};++t<n;){var o=e[t];r[o[0]]=o[1]}return r},Pn.functions=function(e){return null==e?[]:Cr(e,Dc(e))},Pn.functionsIn=function(e){return null==e?[]:Cr(e,zc(e))},Pn.groupBy=ma,Pn.initial=function(e){return null!=e&&e.length?eo(e,0,-1):[]},Pn.intersection=Gi,Pn.intersectionBy=Yi,Pn.intersectionWith=Hi,Pn.invert=Bc,Pn.invertBy=Ic,Pn.invokeMap=Ca,Pn.iteratee=rl,Pn.keyBy=ba,Pn.keys=Dc,Pn.keysIn=zc,Pn.map=xa,Pn.mapKeys=function(e,t){var n={};return t=ai(t,3),vr(e,(function(e,r,o){rr(n,t(e,r,o),e)})),n},Pn.mapValues=function(e,t){var n={};return t=ai(t,3),vr(e,(function(e,r,o){rr(n,r,t(e,r,o))})),n},Pn.matches=function(e){return Nr(ar(e,1))},Pn.matchesProperty=function(e,t){return Pr(e,ar(t,1))},Pn.memoize=Qa,Pn.merge=Tc,Pn.mergeWith=Qc,Pn.method=ol,Pn.methodOf=il,Pn.mixin=al,Pn.negate=Ma,Pn.nthArg=function(e){return e=pc(e),Yr((function(t){return jr(t,e)}))},Pn.omit=Mc,Pn.omitBy=function(e,t){return Oc(e,Ma(ai(t)))},Pn.once=function(e){return Ba(2,e)},Pn.orderBy=function(e,t,n,r){return null==e?[]:(Ua(t)||(t=null==t?[]:[t]),Ua(n=r?o:n)||(n=null==n?[]:[n]),Lr(e,t,n))},Pn.over=ll,Pn.overArgs=Fa,Pn.overEvery=sl,Pn.overSome=Al,Pn.partial=Oa,Pn.partialRight=Na,Pn.partition=wa,Pn.pick=Fc,Pn.pickBy=Oc,Pn.property=ul,Pn.propertyOf=function(e){return function(t){return null==e?o:br(e,t)}},Pn.pull=Ji,Pn.pullAll=Ki,Pn.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?Ur(e,t,ai(n,2)):e},Pn.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?Ur(e,t,o,n):e},Pn.pullAt=Xi,Pn.range=dl,Pn.rangeRight=pl,Pn.rearg=Pa,Pn.reject=function(e,t){return(Ua(e)?It:yr)(e,Ma(ai(t,3)))},Pn.remove=function(e,t){var n=[];if(!e||!e.length)return n;var r=-1,o=[],i=e.length;for(t=ai(t,3);++r<i;){var a=e[r];t(a,r,e)&&(n.push(a),o.push(r))}return Vr(e,o),n},Pn.rest=function(e,t){if("function"!=typeof e)throw new Be(i);return Yr(e,t=t===o?t:pc(t))},Pn.reverse=$i,Pn.sampleSize=function(e,t,n){return t=(n?fi(e,t,n):t===o)?1:pc(t),(Ua(e)?Jn:Zr)(e,t)},Pn.set=function(e,t,n){return null==e?e:Jr(e,t,n)},Pn.setWith=function(e,t,n,r){return r="function"==typeof r?r:o,null==e?e:Jr(e,t,n,r)},Pn.shuffle=function(e){return(Ua(e)?Kn:$r)(e)},Pn.slice=function(e,t,n){var r=null==e?0:e.length;return r?(n&&"number"!=typeof n&&fi(e,t,n)?(t=0,n=r):(t=null==t?0:pc(t),n=n===o?r:pc(n)),eo(e,t,n)):[]},Pn.sortBy=Ea,Pn.sortedUniq=function(e){return e&&e.length?oo(e):[]},Pn.sortedUniqBy=function(e,t){return e&&e.length?oo(e,ai(t,2)):[]},Pn.split=function(e,t,n){return n&&"number"!=typeof n&&fi(e,t,n)&&(t=n=o),(n=n===o?p:n>>>0)?(e=fc(e))&&("string"==typeof t||null!=t&&!oc(t))&&!(t=ao(t))&&rn(e)?mo(un(e),0,n):e.split(t,n):[]},Pn.spread=function(e,t){if("function"!=typeof e)throw new Be(i);return t=null==t?0:hn(pc(t),0),Yr((function(n){var r=n[t],o=mo(n,0,t);return r&&Tt(o,r),wt(e,this,o)}))},Pn.tail=function(e){var t=null==e?0:e.length;return t?eo(e,1,t):[]},Pn.take=function(e,t,n){return e&&e.length?eo(e,0,(t=n||t===o?1:pc(t))<0?0:t):[]},Pn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?eo(e,(t=r-(t=n||t===o?1:pc(t)))<0?0:t,r):[]},Pn.takeRightWhile=function(e,t){return e&&e.length?Ao(e,ai(t,3),!1,!0):[]},Pn.takeWhile=function(e,t){return e&&e.length?Ao(e,ai(t,3)):[]},Pn.tap=function(e,t){return t(e),e},Pn.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new Be(i);return $a(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),Da(e,t,{leading:r,maxWait:t,trailing:o})},Pn.thru=da,Pn.toArray=uc,Pn.toPairs=Nc,Pn.toPairsIn=Pc,Pn.toPath=function(e){return Ua(e)?zt(e,Oi):cc(e)?[e]:Bo(Fi(fc(e)))},Pn.toPlainObject=hc,Pn.transform=function(e,t,n){var r=Ua(e),o=r||Ya(e)||lc(e);if(t=ai(t,4),null==n){var i=e&&e.constructor;n=o?r?new i:[]:$a(e)&&Ja(i)?Rn(Ve(e)):{}}return(o?_t:vr)(e,(function(e,r,o){return t(n,e,r,o)})),n},Pn.unary=function(e){return ka(e,1)},Pn.union=ea,Pn.unionBy=ta,Pn.unionWith=na,Pn.uniq=function(e){return e&&e.length?co(e):[]},Pn.uniqBy=function(e,t){return e&&e.length?co(e,ai(t,2)):[]},Pn.uniqWith=function(e,t){return t="function"==typeof t?t:o,e&&e.length?co(e,o,t):[]},Pn.unset=function(e,t){return null==e||lo(e,t)},Pn.unzip=ra,Pn.unzipWith=oa,Pn.update=function(e,t,n){return null==e?e:so(e,t,ho(n))},Pn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:o,null==e?e:so(e,t,ho(n),r)},Pn.values=Rc,Pn.valuesIn=function(e){return null==e?[]:Jt(e,zc(e))},Pn.without=ia,Pn.words=Jc,Pn.wrap=function(e,t){return Oa(ho(t),e)},Pn.xor=aa,Pn.xorBy=ca,Pn.xorWith=la,Pn.zip=sa,Pn.zipObject=function(e,t){return yo(e||[],t||[],$n)},Pn.zipObjectDeep=function(e,t){return yo(e||[],t||[],Jr)},Pn.zipWith=Aa,Pn.entries=Nc,Pn.entriesIn=Pc,Pn.extend=mc,Pn.extendWith=Cc,al(Pn,Pn),Pn.add=fl,Pn.attempt=Kc,Pn.camelCase=jc,Pn.capitalize=Lc,Pn.ceil=vl,Pn.clamp=function(e,t,n){return n===o&&(n=t,t=o),n!==o&&(n=(n=gc(n))==n?n:0),t!==o&&(t=(t=gc(t))==t?t:0),ir(gc(e),t,n)},Pn.clone=function(e){return ar(e,4)},Pn.cloneDeep=function(e){return ar(e,5)},Pn.cloneDeepWith=function(e,t){return ar(e,5,t="function"==typeof t?t:o)},Pn.cloneWith=function(e,t){return ar(e,4,t="function"==typeof t?t:o)},Pn.conformsTo=function(e,t){return null==t||cr(e,t,Dc(t))},Pn.deburr=qc,Pn.defaultTo=function(e,t){return null==e||e!=e?t:e},Pn.divide=ml,Pn.endsWith=function(e,t,n){e=fc(e),t=ao(t);var r=e.length,i=n=n===o?r:ir(pc(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},Pn.eq=Ra,Pn.escape=function(e){return(e=fc(e))&&H.test(e)?e.replace(G,tn):e},Pn.escapeRegExp=function(e){return(e=fc(e))&&ne.test(e)?e.replace(te,"\\$&"):e},Pn.every=function(e,t,n){var r=Ua(e)?Bt:dr;return n&&fi(e,t,n)&&(t=o),r(e,ai(t,3))},Pn.find=ga,Pn.findIndex=qi,Pn.findKey=function(e,t){return Nt(e,ai(t,3),vr)},Pn.findLast=ha,Pn.findLastIndex=Ui,Pn.findLastKey=function(e,t){return Nt(e,ai(t,3),mr)},Pn.floor=Cl,Pn.forEach=fa,Pn.forEachRight=va,Pn.forIn=function(e,t){return null==e?e:hr(e,ai(t,3),zc)},Pn.forInRight=function(e,t){return null==e?e:fr(e,ai(t,3),zc)},Pn.forOwn=function(e,t){return e&&vr(e,ai(t,3))},Pn.forOwnRight=function(e,t){return e&&mr(e,ai(t,3))},Pn.get=_c,Pn.gt=ja,Pn.gte=La,Pn.has=function(e,t){return null!=e&&pi(e,t,_r)},Pn.hasIn=kc,Pn.head=Wi,Pn.identity=nl,Pn.includes=function(e,t,n,r){e=Wa(e)?e:Rc(e),n=n&&!r?pc(n):0;var o=e.length;return n<0&&(n=hn(o+n,0)),ac(e)?n<=o&&e.indexOf(t,n)>-1:!!o&&Rt(e,t,n)>-1},Pn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=null==n?0:pc(n);return o<0&&(o=hn(r+o,0)),Rt(e,t,o)},Pn.inRange=function(e,t,n){return t=dc(t),n===o?(n=t,t=0):n=dc(n),function(e,t,n){return e>=fn(t,n)&&e<hn(t,n)}(e=gc(e),t,n)},Pn.invoke=Sc,Pn.isArguments=qa,Pn.isArray=Ua,Pn.isArrayBuffer=Va,Pn.isArrayLike=Wa,Pn.isArrayLikeObject=Ga,Pn.isBoolean=function(e){return!0===e||!1===e||ec(e)&&wr(e)==f},Pn.isBuffer=Ya,Pn.isDate=Ha,Pn.isElement=function(e){return ec(e)&&1===e.nodeType&&!rc(e)},Pn.isEmpty=function(e){if(null==e)return!0;if(Wa(e)&&(Ua(e)||"string"==typeof e||"function"==typeof e.splice||Ya(e)||lc(e)||qa(e)))return!e.length;var t=di(e);if(t==x||t==B)return!e.size;if(bi(e))return!Mr(e).length;for(var n in e)if(Qe.call(e,n))return!1;return!0},Pn.isEqual=function(e,t){return Dr(e,t)},Pn.isEqualWith=function(e,t,n){var r=(n="function"==typeof n?n:o)?n(e,t):o;return r===o?Dr(e,t,o,n):!!r},Pn.isError=Za,Pn.isFinite=function(e){return"number"==typeof e&&Ot(e)},Pn.isFunction=Ja,Pn.isInteger=Ka,Pn.isLength=Xa,Pn.isMap=tc,Pn.isMatch=function(e,t){return e===t||zr(e,t,li(t))},Pn.isMatchWith=function(e,t,n){return n="function"==typeof n?n:o,zr(e,t,li(t),n)},Pn.isNaN=function(e){return nc(e)&&e!=+e},Pn.isNative=function(e){if(Ci(e))throw new be("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Tr(e)},Pn.isNil=function(e){return null==e},Pn.isNull=function(e){return null===e},Pn.isNumber=nc,Pn.isObject=$a,Pn.isObjectLike=ec,Pn.isPlainObject=rc,Pn.isRegExp=oc,Pn.isSafeInteger=function(e){return Ka(e)&&e>=-9007199254740991&&e<=u},Pn.isSet=ic,Pn.isString=ac,Pn.isSymbol=cc,Pn.isTypedArray=lc,Pn.isUndefined=function(e){return e===o},Pn.isWeakMap=function(e){return ec(e)&&di(e)==D},Pn.isWeakSet=function(e){return ec(e)&&"[object WeakSet]"==wr(e)},Pn.join=function(e,t){return null==e?"":Vt.call(e,t)},Pn.kebabCase=Uc,Pn.last=Zi,Pn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=pc(n))<0?hn(r+i,0):fn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):Pt(e,Lt,i,!0)},Pn.lowerCase=Vc,Pn.lowerFirst=Wc,Pn.lt=sc,Pn.lte=Ac,Pn.max=function(e){return e&&e.length?pr(e,nl,Er):o},Pn.maxBy=function(e,t){return e&&e.length?pr(e,ai(t,2),Er):o},Pn.mean=function(e){return qt(e,nl)},Pn.meanBy=function(e,t){return qt(e,ai(t,2))},Pn.min=function(e){return e&&e.length?pr(e,nl,Fr):o},Pn.minBy=function(e,t){return e&&e.length?pr(e,ai(t,2),Fr):o},Pn.stubArray=yl,Pn.stubFalse=gl,Pn.stubObject=function(){return{}},Pn.stubString=function(){return""},Pn.stubTrue=function(){return!0},Pn.multiply=bl,Pn.nth=function(e,t){return e&&e.length?jr(e,pc(t)):o},Pn.noConflict=function(){return ut._===this&&(ut._=Pe),this},Pn.noop=cl,Pn.now=_a,Pn.pad=function(e,t,n){e=fc(e);var r=(t=pc(t))?An(e):0;if(!t||r>=t)return e;var o=(t-r)/2;return qo(pt(o),n)+e+qo(dt(o),n)},Pn.padEnd=function(e,t,n){e=fc(e);var r=(t=pc(t))?An(e):0;return t&&r<t?e+qo(t-r,n):e},Pn.padStart=function(e,t,n){e=fc(e);var r=(t=pc(t))?An(e):0;return t&&r<t?qo(t-r,n)+e:e},Pn.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),mn(fc(e).replace(re,""),t||0)},Pn.random=function(e,t,n){if(n&&"boolean"!=typeof n&&fi(e,t,n)&&(t=n=o),n===o&&("boolean"==typeof t?(n=t,t=o):"boolean"==typeof e&&(n=e,e=o)),e===o&&t===o?(e=0,t=1):(e=dc(e),t===o?(t=e,e=0):t=dc(t)),e>t){var r=e;e=t,t=r}if(n||e%1||t%1){var i=Cn();return fn(e+i*(t-e+ct("1e-"+((i+"").length-1))),t)}return Wr(e,t)},Pn.reduce=function(e,t,n){var r=Ua(e)?Qt:Wt,o=arguments.length<3;return r(e,ai(t,4),n,o,Ar)},Pn.reduceRight=function(e,t,n){var r=Ua(e)?Mt:Wt,o=arguments.length<3;return r(e,ai(t,4),n,o,ur)},Pn.repeat=function(e,t,n){return t=(n?fi(e,t,n):t===o)?1:pc(t),Gr(fc(e),t)},Pn.replace=function(){var e=arguments,t=fc(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Pn.result=function(e,t,n){var r=-1,i=(t=fo(t,e)).length;for(i||(i=1,e=o);++r<i;){var a=null==e?o:e[Oi(t[r])];a===o&&(r=i,a=n),e=Ja(a)?a.call(e):a}return e},Pn.round=xl,Pn.runInContext=e,Pn.sample=function(e){return(Ua(e)?Zn:Hr)(e)},Pn.size=function(e){if(null==e)return 0;if(Wa(e))return ac(e)?An(e):e.length;var t=di(e);return t==x||t==B?e.size:Mr(e).length},Pn.snakeCase=Gc,Pn.some=function(e,t,n){var r=Ua(e)?Ft:to;return n&&fi(e,t,n)&&(t=o),r(e,ai(t,3))},Pn.sortedIndex=function(e,t){return no(e,t)},Pn.sortedIndexBy=function(e,t,n){return ro(e,t,ai(n,2))},Pn.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var r=no(e,t);if(r<n&&Ra(e[r],t))return r}return-1},Pn.sortedLastIndex=function(e,t){return no(e,t,!0)},Pn.sortedLastIndexBy=function(e,t,n){return ro(e,t,ai(n,2),!0)},Pn.sortedLastIndexOf=function(e,t){if(null!=e&&e.length){var n=no(e,t,!0)-1;if(Ra(e[n],t))return n}return-1},Pn.startCase=Yc,Pn.startsWith=function(e,t,n){return e=fc(e),n=null==n?0:ir(pc(n),0,e.length),t=ao(t),e.slice(n,n+t.length)==t},Pn.subtract=wl,Pn.sum=function(e){return e&&e.length?Gt(e,nl):0},Pn.sumBy=function(e,t){return e&&e.length?Gt(e,ai(t,2)):0},Pn.template=function(e,t,n){var r=Pn.templateSettings;n&&fi(e,t,n)&&(t=o),e=fc(e),t=Cc({},t,r,Jo);var i,a,c=Cc({},t.imports,r.imports,Jo),l=Dc(c),s=Jt(c,l),A=0,u=t.interpolate||me,d="__p += '",p=_e((t.escape||me).source+"|"+u.source+"|"+(u===K?ue:me).source+"|"+(t.evaluate||me).source+"|$","g"),y="//# sourceURL="+(Qe.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++rt+"]")+"\n";e.replace(p,(function(t,n,r,o,c,l){return r||(r=o),d+=e.slice(A,l).replace(Ce,nn),n&&(i=!0,d+="' +\n__e("+n+") +\n'"),c&&(a=!0,d+="';\n"+c+";\n__p += '"),r&&(d+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),A=l+t.length,t})),d+="';\n";var g=Qe.call(t,"variable")&&t.variable;if(g){if(se.test(g))throw new be("Invalid `variable` option passed into `_.template`")}else d="with (obj) {\n"+d+"\n}\n";d=(a?d.replace(q,""):d).replace(U,"$1").replace(V,"$1;"),d="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var h=Kc((function(){return xe(l,y+"return "+d).apply(o,s)}));if(h.source=d,Za(h))throw h;return h},Pn.times=function(e,t){if((e=pc(e))<1||e>u)return[];var n=p,r=fn(e,p);t=ai(t),e-=p;for(var o=Yt(r,t);++n<e;)t(n);return o},Pn.toFinite=dc,Pn.toInteger=pc,Pn.toLength=yc,Pn.toLower=function(e){return fc(e).toLowerCase()},Pn.toNumber=gc,Pn.toSafeInteger=function(e){return e?ir(pc(e),-9007199254740991,u):0===e?e:0},Pn.toString=fc,Pn.toUpper=function(e){return fc(e).toUpperCase()},Pn.trim=function(e,t,n){if((e=fc(e))&&(n||t===o))return Ht(e);if(!e||!(t=ao(t)))return e;var r=un(e),i=un(t);return mo(r,Xt(r,i),$t(r,i)+1).join("")},Pn.trimEnd=function(e,t,n){if((e=fc(e))&&(n||t===o))return e.slice(0,dn(e)+1);if(!e||!(t=ao(t)))return e;var r=un(e);return mo(r,0,$t(r,un(t))+1).join("")},Pn.trimStart=function(e,t,n){if((e=fc(e))&&(n||t===o))return e.replace(re,"");if(!e||!(t=ao(t)))return e;var r=un(e);return mo(r,Xt(r,un(t))).join("")},Pn.truncate=function(e,t){var n=30,r="...";if($a(t)){var i="separator"in t?t.separator:i;n="length"in t?pc(t.length):n,r="omission"in t?ao(t.omission):r}var a=(e=fc(e)).length;if(rn(e)){var c=un(e);a=c.length}if(n>=a)return e;var l=n-An(r);if(l<1)return r;var s=c?mo(c,0,l).join(""):e.slice(0,l);if(i===o)return s+r;if(c&&(l+=s.length-l),oc(i)){if(e.slice(l).search(i)){var A,u=s;for(i.global||(i=_e(i.source,fc(de.exec(i))+"g")),i.lastIndex=0;A=i.exec(u);)var d=A.index;s=s.slice(0,d===o?l:d)}}else if(e.indexOf(ao(i),l)!=l){var p=s.lastIndexOf(i);p>-1&&(s=s.slice(0,p))}return s+r},Pn.unescape=function(e){return(e=fc(e))&&Y.test(e)?e.replace(W,pn):e},Pn.uniqueId=function(e){var t=++Me;return fc(e)+t},Pn.upperCase=Hc,Pn.upperFirst=Zc,Pn.each=fa,Pn.eachRight=va,Pn.first=Wi,al(Pn,(hl={},vr(Pn,(function(e,t){Qe.call(Pn.prototype,t)||(hl[t]=e)})),hl),{chain:!1}),Pn.VERSION="4.17.21",_t(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Pn[e].placeholder=Pn})),_t(["drop","take"],(function(e,t){qn.prototype[e]=function(n){n=n===o?1:hn(pc(n),0);var r=this.__filtered__&&!t?new qn(this):this.clone();return r.__filtered__?r.__takeCount__=fn(n,r.__takeCount__):r.__views__.push({size:fn(n,p),type:e+(r.__dir__<0?"Right":"")}),r},qn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),_t(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;qn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:ai(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),_t(["head","last"],(function(e,t){var n="take"+(t?"Right":"");qn.prototype[e]=function(){return this[n](1).value()[0]}})),_t(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");qn.prototype[e]=function(){return this.__filtered__?new qn(this):this[n](1)}})),qn.prototype.compact=function(){return this.filter(nl)},qn.prototype.find=function(e){return this.filter(e).head()},qn.prototype.findLast=function(e){return this.reverse().find(e)},qn.prototype.invokeMap=Yr((function(e,t){return"function"==typeof e?new qn(this):this.map((function(n){return Ir(n,e,t)}))})),qn.prototype.reject=function(e){return this.filter(Ma(ai(e)))},qn.prototype.slice=function(e,t){e=pc(e);var n=this;return n.__filtered__&&(e>0||t<0)?new qn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==o&&(n=(t=pc(t))<0?n.dropRight(-t):n.take(t-e)),n)},qn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},qn.prototype.toArray=function(){return this.take(p)},vr(qn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=Pn[r?"take"+("last"==t?"Right":""):t],a=r||/^find/.test(t);i&&(Pn.prototype[t]=function(){var t=this.__wrapped__,c=r?[1]:arguments,l=t instanceof qn,s=c[0],A=l||Ua(t),u=function(e){var t=i.apply(Pn,Tt([e],c));return r&&d?t[0]:t};A&&n&&"function"==typeof s&&1!=s.length&&(l=A=!1);var d=this.__chain__,p=!!this.__actions__.length,y=a&&!d,g=l&&!p;if(!a&&A){t=g?t:new qn(this);var h=e.apply(t,c);return h.__actions__.push({func:da,args:[u],thisArg:o}),new Ln(h,d)}return y&&g?e.apply(this,c):(h=this.thru(u),y?r?h.value()[0]:h.value():h)})})),_t(["pop","push","shift","sort","splice","unshift"],(function(e){var t=Ie[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Pn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var o=this.value();return t.apply(Ua(o)?o:[],e)}return this[n]((function(n){return t.apply(Ua(n)?n:[],e)}))}})),vr(qn.prototype,(function(e,t){var n=Pn[t];if(n){var r=n.name+"";Qe.call(Sn,r)||(Sn[r]=[]),Sn[r].push({name:t,func:n})}})),Sn[Po(o,2).name]=[{name:"wrapper",func:o}],qn.prototype.clone=function(){var e=new qn(this.__wrapped__);return e.__actions__=Bo(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Bo(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=Bo(this.__views__),e},qn.prototype.reverse=function(){if(this.__filtered__){var e=new qn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},qn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ua(e),r=t<0,o=n?e.length:0,i=function(e,t,n){for(var r=-1,o=n.length;++r<o;){var i=n[r],a=i.size;switch(i.type){case"drop":e+=a;break;case"dropRight":t-=a;break;case"take":t=fn(t,e+a);break;case"takeRight":e=hn(e,t-a)}}return{start:e,end:t}}(0,o,this.__views__),a=i.start,c=i.end,l=c-a,s=r?c:a-1,A=this.__iteratees__,u=A.length,d=0,p=fn(l,this.__takeCount__);if(!n||!r&&o==l&&p==l)return uo(e,this.__actions__);var y=[];e:for(;l--&&d<p;){for(var g=-1,h=e[s+=t];++g<u;){var f=A[g],v=f.iteratee,m=f.type,C=v(h);if(2==m)h=C;else if(!C){if(1==m)continue e;break e}}y[d++]=h}return y},Pn.prototype.at=pa,Pn.prototype.chain=function(){return ua(this)},Pn.prototype.commit=function(){return new Ln(this.value(),this.__chain__)},Pn.prototype.next=function(){this.__values__===o&&(this.__values__=uc(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?o:this.__values__[this.__index__++]}},Pn.prototype.plant=function(e){for(var t,n=this;n instanceof jn;){var r=Pi(n);r.__index__=0,r.__values__=o,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},Pn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof qn){var t=e;return this.__actions__.length&&(t=new qn(this)),(t=t.reverse()).__actions__.push({func:da,args:[$i],thisArg:o}),new Ln(t,this.__chain__)}return this.thru($i)},Pn.prototype.toJSON=Pn.prototype.valueOf=Pn.prototype.value=function(){return uo(this.__wrapped__,this.__actions__)},Pn.prototype.first=Pn.prototype.head,Ze&&(Pn.prototype[Ze]=function(){return this}),Pn}();ut._=yn,(r=function(){return yn}.call(t,n,t,e))===o||(e.exports=r)}.call(this)},7771:(e,t,n)=>{var r=n(5639);e.exports=function(){return r.Date.now()}},6026:(e,t,n)=>{var r=n(7445)();e.exports=r},3493:(e,t,n)=>{var r=n(3279),o=n(3218);e.exports=function(e,t,n){var i=!0,a=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return o(n)&&(i="leading"in n?!!n.leading:i,a="trailing"in n?!!n.trailing:a),r(e,t,{leading:i,maxWait:t,trailing:a})}},8601:(e,t,n)=>{var r=n(4841);e.exports=function(e){return e?Infinity===(e=r(e))||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},4841:(e,t,n)=>{var r=n(7561),o=n(3218),i=n(3448),a=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,s=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(i(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=c.test(e);return n||l.test(e)?s(e.slice(2),n?2:8):a.test(e)?NaN:+e}},7724:(e,t)=>{"use strict";class n{constructor(e,t=[]){this.ctx=e,this.exclude=t}static matches(e,t){const n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){let t=!1;return n.every((n=>!r.call(e,n)||(t=!0,!1))),t}return!1}getContexts(){let e,t=[];return e=void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[],e.forEach((e=>{const n=t.filter((t=>t.contains(e))).length>0;-1!==t.indexOf(e)||n||t.push(e)})),t}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}getIteratorNode(e){const t=e.previousNode();let n;return n=(null===t||e.nextNode())&&e.nextNode(),{prevNode:t,node:n}}iterateThroughNodes(e,t,n,r,o){const i=this.createIterator(t,e,r);let a,c=[];const l=()=>this.getIteratorNode(i).node;for(;a=l();)c.push(a);c.forEach((e=>{n(e)})),o()}forEachNode(e,t,n,r=(()=>{})){const o=this.getContexts();let i=o.length;i||r(),o.forEach((o=>{this.iterateThroughNodes(e,o,t,n,(()=>{--i<=0&&r()}))}))}}t.Z=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return this._iterator||(this._iterator=new n(this.ctx,this.opt.exclude)),this._iterator}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&"object"==typeof n&&"function"==typeof n[t]&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),this.opt.ignoreJoiners&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),this.opt.ignoreJoiners&&(e=this.createIgnoreJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),this.createAccuracyRegExp(e)}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i";for(let r in t)if(t.hasOwnProperty(r)){const o=t[r],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(r):this.escapeStr(r),a="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==a&&(e=e.replace(new RegExp(`(${i}|${a})`,`gm${n}`),`(${i}|${a})`))}return e}setupWildcardsRegExp(e){return(e=e.replace(/(?:\\)*\?/g,(e=>"\\"===e.charAt(0)?"?":""))).replace(/(?:\\)*\*/g,(e=>"\\"===e.charAt(0)?"*":""))}createWildcardsRegExp(e){let t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,((e,t,n)=>{let r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}createIgnoreJoinersRegExp(e){return e.split("\0").join("[\\u00ad|\\u200b|\\u200c|\\u200d]?")}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáâãäåāąă","AÀÁÂÃÄÅĀĄĂ","cçćč","CÇĆČ","dđď","DĐĎ","eèéêëěēę","EÈÉÊËĚĒĘ","iìíîïī","IÌÍÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóôõöøō","OÒÓÔÕÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúûüůū","UÙÚÛÜŮŪ","yÿý","YŸÝ","zžżź","ZŽŻŹ"]:["aàáâãäåāąăAÀÁÂÃÄÅĀĄĂ","cçćčCÇĆČ","dđďDĐĎ","eèéêëěēęEÈÉÊËĚĒĘ","iìíîïīIÌÍÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóôõöøōOÒÓÔÕÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúûüůūUÙÚÛÜŮŪ","yÿýYŸÝ","zžżźZŽŻŹ"],r=[];return e.split("").forEach((o=>{n.every((n=>{if(-1!==n.indexOf(o)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp(`[${n}]`,`gm${t}`),`[${n}]`),r.push(n)}return!0}))})),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gim,"[\\s]+")}createAccuracyRegExp(e){let t=this.opt.accuracy,n="string"==typeof t?t:t.value,r="string"==typeof t?[]:t.limiters,o="";switch(r.forEach((e=>{o+=`|${this.escapeStr(e)}`})),n){case"partially":default:return`()(${e})`;case"complementary":return o="\\s"+(o||this.escapeStr("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿")),`()([^${o}]*${e}[^${o}]*)`;case"exactly":return`(^|\\s${o})(${e})(?=$|\\s${o})`}}getSeparatedKeywords(e){let t=[];return e.forEach((e=>{this.opt.separateWordSearch?e.split(" ").forEach((e=>{e.trim()&&-1===t.indexOf(e)&&t.push(e)})):e.trim()&&-1===t.indexOf(e)&&t.push(e)})),{keywords:t.sort(((e,t)=>t.length-e.length)),length:t.length}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(e=>{n.push({start:t.length,end:(t+=e.textContent).length,node:e})}),(e=>this.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT),(()=>{e({value:t,nodes:n})}))}matchesExclude(e){return n.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const r=this.opt.element?this.opt.element:"mark",o=e.splitText(t),i=o.splitText(n-t);let a=document.createElement(r);return a.setAttribute("data-markjs","true"),this.opt.className&&a.setAttribute("class",this.opt.className),a.textContent=o.textContent,o.parentNode.replaceChild(a,o),i}wrapRangeInMappedTextNode(e,t,n,r,o){e.nodes.every(((i,a)=>{const c=e.nodes[a+1];if(void 0===c||c.start>t){if(!r(i.node))return!1;const c=t-i.start,l=(n>i.end?i.end:n)-i.start,s=e.value.substr(0,i.start),A=e.value.substr(l+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,l),e.value=s+A,e.nodes.forEach(((t,n)=>{n>=a&&(e.nodes[n].start>0&&n!==a&&(e.nodes[n].start-=l),e.nodes[n].end-=l)})),n-=l,o(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}wrapMatches(e,t,n,r,o){const i=0===t?0:t+1;this.getTextNodes((t=>{t.nodes.forEach((t=>{let o;for(t=t.node;null!==(o=e.exec(t.textContent))&&""!==o[i];){if(!n(o[i],t))continue;let a=o.index;if(0!==i)for(let e=1;e<i;e++)a+=o[e].length;t=this.wrapRangeInTextNode(t,a,a+o[i].length),r(t.previousSibling),e.lastIndex=0}})),o()}))}wrapMatchesAcrossElements(e,t,n,r,o){const i=0===t?0:t+1;this.getTextNodes((t=>{let a;for(;null!==(a=e.exec(t.value))&&""!==a[i];){let o=a.index;if(0!==i)for(let e=1;e<i;e++)o+=a[e].length;const c=o+a[i].length;this.wrapRangeInMappedTextNode(t,o,c,(e=>n(a[i],e)),((t,n)=>{e.lastIndex=n,r(t)}))}o()}))}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,r="wrapMatches";this.opt.acrossElements&&(r="wrapMatchesAcrossElements"),this[r](e,this.opt.ignoreGroups,((e,t)=>this.opt.filter(t,e,n)),(e=>{n++,this.opt.each(e)}),(()=>{0===n&&this.opt.noMatch(e),this.opt.done(n)}))}mark(e,t){this.opt=t;let n=0;const r=this.opt.caseSensitive?"":"i",o=this.opt.acrossElements?"wrapMatchesAcrossElements":"wrapMatches",{keywords:i,length:a}=this.getSeparatedKeywords("string"==typeof e?[e]:e);if(!a)return this.opt.done(n);const c=e=>{let t=new RegExp(this.createRegExp(e),`gm${r}`),l=0;this.log(`Searching with expression "${t}"`),this[o](t,1,((t,r)=>this.opt.filter(r,e,n,l)),(e=>{l++,n++,this.opt.each(e)}),(()=>{0===l&&this.opt.noMatch(e),i[a-1]===e?this.opt.done(n):c(i[i.indexOf(e)+1])}))};c(i[0])}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(e=>{this.unwrapMatches(e)}),(e=>{const r=n.matches(e,t),o=this.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}}},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,n,r,o){n=n||"&",r=r||"=";var i={};if("string"!=typeof e||0===e.length)return i;var a=/\+/g;e=e.split(n);var c=1e3;o&&"number"==typeof o.maxKeys&&(c=o.maxKeys);var l=e.length;c>0&&l>c&&(l=c);for(var s=0;s<l;++s){var A,u,d,p,y=e[s].replace(a,"%20"),g=y.indexOf(r);g>=0?(A=y.substr(0,g),u=y.substr(g+1)):(A=y,u=""),d=decodeURIComponent(A),p=decodeURIComponent(u),t(i,d)?Array.isArray(i[d])?i[d].push(p):i[d]=[i[d],p]:i[d]=p}return i}},2361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,n,r,o){return n=n||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(o){var i=encodeURIComponent(t(o))+r;return Array.isArray(e[o])?e[o].map((function(e){return i+encodeURIComponent(t(e))})).join(n):i+encodeURIComponent(t(e[o]))})).join(n):o?encodeURIComponent(t(o))+r+encodeURIComponent(t(e)):""}},7673:(e,t,n)=>{"use strict";t.decode=t.parse=n(2587),t.encode=t.stringify=n(2361)},4300:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=c(n(7294)),i=c(n(640)),a=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){y(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function A(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function u(e,t){return u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},u(e,t)}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&u(e,t)}(h,e);var t,n,c,l,g=(c=h,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=p(c);if(l){var n=p(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===r(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return d(e)}(this,e)});function h(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,h);for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return y(d(e=g.call.apply(g,[this].concat(n))),"onClick",(function(t){var n=e.props,r=n.text,a=n.onCopy,c=n.children,l=n.options,s=o.default.Children.only(c),A=(0,i.default)(r,l);a&&a(r,A),s&&s.props&&"function"==typeof s.props.onClick&&s.props.onClick(t)})),e}return t=h,(n=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),n=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,a),r=o.default.Children.only(t);return o.default.cloneElement(r,s(s({},n),{},{onClick:this.onClick}))}}])&&A(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),h}(o.default.PureComponent);t.CopyToClipboard=g,y(g,"defaultProps",{onCopy:void 0,options:void 0})},4855:(e,t,n)=>{"use strict";var r=n(4300).CopyToClipboard;r.CopyToClipboard=r,e.exports=r},7774:(e,t,n)=>{"use strict";var r=n(7294);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=Object.prototype.hasOwnProperty,a=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,c={},l={};function s(e){return!!i.call(l,e)||!i.call(c,e)&&(a.test(e)?l[e]=!0:(c[e]=!0,!1))}function A(e,t,n,r,o,i,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var u={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){u[e]=new A(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];u[t]=new A(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){u[e]=new A(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){u[e]=new A(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){u[e]=new A(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){u[e]=new A(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){u[e]=new A(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){u[e]=new A(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){u[e]=new A(e,5,!1,e.toLowerCase(),null,!1,!1)}));var d=/[\-:]([a-z])/g;function p(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(d,p);u[t]=new A(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(d,p);u[t]=new A(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(d,p);u[t]=new A(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){u[e]=new A(e,1,!1,e.toLowerCase(),null,!1,!1)})),u.xlinkHref=new A("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){u[e]=new A(e,1,!1,e.toLowerCase(),null,!0,!0)}));var y={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},g=["Webkit","ms","Moz","O"];Object.keys(y).forEach((function(e){g.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),y[t]=y[e]}))}));var h=/["'&<>]/;function f(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=h.exec(e);if(t){var n,r="",o=0;for(n=t.index;n<e.length;n++){switch(e.charCodeAt(n)){case 34:t="&quot;";break;case 38:t="&amp;";break;case 39:t="&#x27;";break;case 60:t="&lt;";break;case 62:t="&gt;";break;default:continue}o!==n&&(r+=e.substring(o,n)),o=n+1,r+=t}e=o!==n?r+e.substring(o,n):r}return e}var v=/([A-Z])/g,m=/^ms-/,C=Array.isArray;function b(e,t){return{insertionMode:e,selectedValue:t}}var x=new Map;function w(e,t,n){if("object"!=typeof n)throw Error(o(62));for(var r in t=!0,n)if(i.call(n,r)){var a=n[r];if(null!=a&&"boolean"!=typeof a&&""!==a){if(0===r.indexOf("--")){var c=f(r);a=f((""+a).trim())}else{c=r;var l=x.get(c);void 0!==l||(l=f(c.replace(v,"-$1").toLowerCase().replace(m,"-ms-")),x.set(c,l)),c=l,a="number"==typeof a?0===a||i.call(y,r)?""+a:a+"px":f((""+a).trim())}t?(t=!1,e.push(' style="',c,":",a)):e.push(";",c,":",a)}}t||e.push('"')}function E(e,t,n,r){switch(n){case"style":return void w(e,t,r);case"defaultValue":case"defaultChecked":case"innerHTML":case"suppressContentEditableWarning":case"suppressHydrationWarning":return}if(!(2<n.length)||"o"!==n[0]&&"O"!==n[0]||"n"!==n[1]&&"N"!==n[1])if(null!==(t=u.hasOwnProperty(n)?u[n]:null)){switch(typeof r){case"function":case"symbol":return;case"boolean":if(!t.acceptsBooleans)return}switch(n=t.attributeName,t.type){case 3:r&&e.push(" ",n,'=""');break;case 4:!0===r?e.push(" ",n,'=""'):!1!==r&&e.push(" ",n,'="',f(r),'"');break;case 5:isNaN(r)||e.push(" ",n,'="',f(r),'"');break;case 6:!isNaN(r)&&1<=r&&e.push(" ",n,'="',f(r),'"');break;default:t.sanitizeURL&&(r=""+r),e.push(" ",n,'="',f(r),'"')}}else if(s(n)){switch(typeof r){case"function":case"symbol":return;case"boolean":if("data-"!==(t=n.toLowerCase().slice(0,5))&&"aria-"!==t)return}e.push(" ",n,'="',f(r),'"')}}function _(e,t,n){if(null!=t){if(null!=n)throw Error(o(60));if("object"!=typeof t||!("__html"in t))throw Error(o(61));null!=(t=t.__html)&&e.push(""+t)}}function k(e,t,n,r){e.push(S(n));var o,a=n=null;for(o in t)if(i.call(t,o)){var c=t[o];if(null!=c)switch(o){case"children":n=c;break;case"dangerouslySetInnerHTML":a=c;break;default:E(e,r,o,c)}}return e.push(">"),_(e,a,n),"string"==typeof n?(e.push(f(n)),null):n}var B=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,I=new Map;function S(e){var t=I.get(e);if(void 0===t){if(!B.test(e))throw Error(o(65,e));t="<"+e,I.set(e,t)}return t}function D(e,t,n){if(e.push('\x3c!--$?--\x3e<template id="'),null===n)throw Error(o(395));return e.push(n),e.push('"></template>')}var z=/[<\u2028\u2029]/g;function T(e){return JSON.stringify(e).replace(z,(function(e){switch(e){case"<":return"\\u003c";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw Error("escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React")}}))}function Q(e,t,n,r){return n.generateStaticMarkup?(e.push(f(t)),!1):(""===t?e=r:(r&&e.push("\x3c!-- --\x3e"),e.push(f(t)),e=!0),e)}var M=Object.assign,F=Symbol.for("react.element"),O=Symbol.for("react.portal"),N=Symbol.for("react.fragment"),P=Symbol.for("react.strict_mode"),R=Symbol.for("react.profiler"),j=Symbol.for("react.provider"),L=Symbol.for("react.context"),q=Symbol.for("react.forward_ref"),U=Symbol.for("react.suspense"),V=Symbol.for("react.suspense_list"),W=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),Y=Symbol.for("react.scope"),H=Symbol.for("react.debug_trace_mode"),Z=Symbol.for("react.legacy_hidden"),J=Symbol.for("react.default_value"),K=Symbol.iterator;function X(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case N:return"Fragment";case O:return"Portal";case R:return"Profiler";case P:return"StrictMode";case U:return"Suspense";case V:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case L:return(e.displayName||"Context")+".Consumer";case j:return(e._context.displayName||"Context")+".Provider";case q:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case W:return null!==(t=e.displayName||null)?t:X(e.type)||"Memo";case G:t=e._payload,e=e._init;try{return X(e(t))}catch(e){}}return null}var $={};function ee(e,t){if(!(e=e.contextTypes))return $;var n,r={};for(n in e)r[n]=t[n];return r}var te=null;function ne(e,t){if(e!==t){e.context._currentValue2=e.parentValue,e=e.parent;var n=t.parent;if(null===e){if(null!==n)throw Error(o(401))}else{if(null===n)throw Error(o(401));ne(e,n)}t.context._currentValue2=t.value}}function re(e){e.context._currentValue2=e.parentValue,null!==(e=e.parent)&&re(e)}function oe(e){var t=e.parent;null!==t&&oe(t),e.context._currentValue2=e.value}function ie(e,t){if(e.context._currentValue2=e.parentValue,null===(e=e.parent))throw Error(o(402));e.depth===t.depth?ne(e,t):ie(e,t)}function ae(e,t){var n=t.parent;if(null===n)throw Error(o(402));e.depth===n.depth?ne(e,n):ae(e,n),t.context._currentValue2=t.value}function ce(e){var t=te;t!==e&&(null===t?oe(e):null===e?re(t):t.depth===e.depth?ne(t,e):t.depth>e.depth?ie(t,e):ae(t,e),te=e)}var le={isMounted:function(){return!1},enqueueSetState:function(e,t){null!==(e=e._reactInternals).queue&&e.queue.push(t)},enqueueReplaceState:function(e,t){(e=e._reactInternals).replace=!0,e.queue=[t]},enqueueForceUpdate:function(){}};function se(e,t,n,r){var o=void 0!==e.state?e.state:null;e.updater=le,e.props=n,e.state=o;var i={queue:[],replace:!1};e._reactInternals=i;var a=t.contextType;if(e.context="object"==typeof a&&null!==a?a._currentValue2:r,"function"==typeof(a=t.getDerivedStateFromProps)&&(o=null==(a=a(n,o))?o:M({},o,a),e.state=o),"function"!=typeof t.getDerivedStateFromProps&&"function"!=typeof e.getSnapshotBeforeUpdate&&("function"==typeof e.UNSAFE_componentWillMount||"function"==typeof e.componentWillMount))if(t=e.state,"function"==typeof e.componentWillMount&&e.componentWillMount(),"function"==typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),t!==e.state&&le.enqueueReplaceState(e,e.state,null),null!==i.queue&&0<i.queue.length)if(t=i.queue,a=i.replace,i.queue=null,i.replace=!1,a&&1===t.length)e.state=t[0];else{for(i=a?t[0]:e.state,o=!0,a=a?1:0;a<t.length;a++){var c=t[a];null!=(c="function"==typeof c?c.call(e,i,n,r):c)&&(o?(o=!1,i=M({},i,c)):M(i,c))}e.state=i}else i.queue=null}var Ae={id:1,overflow:""};function ue(e,t,n){var r=e.id;e=e.overflow;var o=32-de(r)-1;r&=~(1<<o),n+=1;var i=32-de(t)+o;if(30<i){var a=o-o%5;return i=(r&(1<<a)-1).toString(32),r>>=a,o-=a,{id:1<<32-de(t)+o|n<<o|r,overflow:i+e}}return{id:1<<i|n<<o|r,overflow:e}}var de=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(pe(e)/ye|0)|0},pe=Math.log,ye=Math.LN2,ge="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},he=null,fe=null,ve=null,me=null,Ce=!1,be=!1,xe=0,we=null,Ee=0;function _e(){if(null===he)throw Error(o(321));return he}function ke(){if(0<Ee)throw Error(o(312));return{memoizedState:null,queue:null,next:null}}function Be(){return null===me?null===ve?(Ce=!1,ve=me=ke()):(Ce=!0,me=ve):null===me.next?(Ce=!1,me=me.next=ke()):(Ce=!0,me=me.next),me}function Ie(){fe=he=null,be=!1,ve=null,Ee=0,me=we=null}function Se(e,t){return"function"==typeof t?t(e):t}function De(e,t,n){if(he=_e(),me=Be(),Ce){var r=me.queue;if(t=r.dispatch,null!==we&&void 0!==(n=we.get(r))){we.delete(r),r=me.memoizedState;do{r=e(r,n.action),n=n.next}while(null!==n);return me.memoizedState=r,[r,t]}return[me.memoizedState,t]}return e=e===Se?"function"==typeof t?t():t:void 0!==n?n(t):t,me.memoizedState=e,e=(e=me.queue={last:null,dispatch:null}).dispatch=Te.bind(null,he,e),[me.memoizedState,e]}function ze(e,t){if(he=_e(),t=void 0===t?null:t,null!==(me=Be())){var n=me.memoizedState;if(null!==n&&null!==t){var r=n[1];e:if(null===r)r=!1;else{for(var o=0;o<r.length&&o<t.length;o++)if(!ge(t[o],r[o])){r=!1;break e}r=!0}if(r)return n[0]}}return e=e(),me.memoizedState=[e,t],e}function Te(e,t,n){if(25<=Ee)throw Error(o(301));if(e===he)if(be=!0,e={action:n,next:null},null===we&&(we=new Map),void 0===(n=we.get(t)))we.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}}function Qe(){throw Error(o(394))}function Me(){}var Fe={readContext:function(e){return e._currentValue2},useContext:function(e){return _e(),e._currentValue2},useMemo:ze,useReducer:De,useRef:function(e){he=_e();var t=(me=Be()).memoizedState;return null===t?(e={current:e},me.memoizedState=e):t},useState:function(e){return De(Se,e)},useInsertionEffect:Me,useLayoutEffect:function(){},useCallback:function(e,t){return ze((function(){return e}),t)},useImperativeHandle:Me,useEffect:Me,useDebugValue:Me,useDeferredValue:function(e){return _e(),e},useTransition:function(){return _e(),[!1,Qe]},useId:function(){var e=fe.treeContext,t=e.overflow;e=((e=e.id)&~(1<<32-de(e)-1)).toString(32)+t;var n=Oe;if(null===n)throw Error(o(404));return t=xe++,e=":"+n.idPrefix+"R"+e,0<t&&(e+="H"+t.toString(32)),e+":"},useMutableSource:function(e,t){return _e(),t(e._source)},useSyncExternalStore:function(e,t,n){if(void 0===n)throw Error(o(407));return n()}},Oe=null,Ne=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function Pe(e){return console.error(e),null}function Re(){}function je(e,t,n,r,o,i,a,c){e.allPendingTasks++,null===n?e.pendingRootTasks++:n.pendingTasks++;var l={node:t,ping:function(){var t=e.pingedTasks;t.push(l),1===t.length&&tt(e)},blockedBoundary:n,blockedSegment:r,abortSet:o,legacyContext:i,context:a,treeContext:c};return o.add(l),l}function Le(e,t,n,r,o,i){return{status:0,id:-1,index:t,parentFlushed:!1,chunks:[],children:[],formatContext:r,boundary:n,lastPushedText:o,textEmbedded:i}}function qe(e,t){if(null!=(e=e.onError(t))&&"string"!=typeof e)throw Error('onError returned something with a type other than "string". onError should return a string and may return null or undefined but must not return anything else. It received something of type "'+typeof e+'" instead');return e}function Ue(e,t){var n=e.onShellError;n(t),(n=e.onFatalError)(t),null!==e.destination?(e.status=2,e.destination.destroy(t)):(e.status=1,e.fatalError=t)}function Ve(e,t,n,r,o){for(he={},fe=t,xe=0,e=n(r,o);be;)be=!1,xe=0,Ee+=1,me=null,e=n(r,o);return Ie(),e}function We(e,t,n,r){var i=n.render(),a=r.childContextTypes;if(null!=a){var c=t.legacyContext;if("function"!=typeof n.getChildContext)r=c;else{for(var l in n=n.getChildContext())if(!(l in a))throw Error(o(108,X(r)||"Unknown",l));r=M({},c,n)}t.legacyContext=r,He(e,t,i),t.legacyContext=c}else He(e,t,i)}function Ge(e,t){if(e&&e.defaultProps){for(var n in t=M({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function Ye(e,t,n,a,c){if("function"==typeof n)if(n.prototype&&n.prototype.isReactComponent){c=ee(n,t.legacyContext);var l=n.contextType;se(l=new n(a,"object"==typeof l&&null!==l?l._currentValue2:c),n,a,c),We(e,t,l,n)}else{c=Ve(e,t,n,a,l=ee(n,t.legacyContext));var A=0!==xe;if("object"==typeof c&&null!==c&&"function"==typeof c.render&&void 0===c.$$typeof)se(c,n,a,l),We(e,t,c,n);else if(A){a=t.treeContext,t.treeContext=ue(a,1,0);try{He(e,t,c)}finally{t.treeContext=a}}else He(e,t,c)}else{if("string"!=typeof n){switch(n){case Z:case H:case P:case R:case N:case V:return void He(e,t,a.children);case Y:throw Error(o(343));case U:e:{n=t.blockedBoundary,c=t.blockedSegment,l=a.fallback,a=a.children;var u={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:A=new Set,errorDigest:null},d=Le(0,c.chunks.length,u,c.formatContext,!1,!1);c.children.push(d),c.lastPushedText=!1;var p=Le(0,0,null,c.formatContext,!1,!1);p.parentFlushed=!0,t.blockedBoundary=u,t.blockedSegment=p;try{if(Je(e,t,a),e.responseState.generateStaticMarkup||p.lastPushedText&&p.textEmbedded&&p.chunks.push("\x3c!-- --\x3e"),p.status=1,$e(u,p),0===u.pendingTasks)break e}catch(t){p.status=4,u.forceClientRender=!0,u.errorDigest=qe(e,t)}finally{t.blockedBoundary=n,t.blockedSegment=c}t=je(e,l,n,d,A,t.legacyContext,t.context,t.treeContext),e.pingedTasks.push(t)}return}if("object"==typeof n&&null!==n)switch(n.$$typeof){case q:if(a=Ve(e,t,n.render,a,c),0!==xe){n=t.treeContext,t.treeContext=ue(n,1,0);try{He(e,t,a)}finally{t.treeContext=n}}else He(e,t,a);return;case W:return void Ye(e,t,n=n.type,a=Ge(n,a),c);case j:if(c=a.children,n=n._context,a=a.value,l=n._currentValue2,n._currentValue2=a,te=a={parent:A=te,depth:null===A?0:A.depth+1,context:n,parentValue:l,value:a},t.context=a,He(e,t,c),null===(e=te))throw Error(o(403));return a=e.parentValue,e.context._currentValue2=a===J?e.context._defaultValue:a,e=te=e.parent,void(t.context=e);case L:return void He(e,t,a=(a=a.children)(n._currentValue2));case G:return void Ye(e,t,n=(c=n._init)(n._payload),a=Ge(n,a),void 0)}throw Error(o(130,null==n?n:typeof n,""))}switch(l=function(e,t,n,a,c){switch(t){case"select":e.push(S("select"));var l=null,A=null;for(y in n)if(i.call(n,y)){var u=n[y];if(null!=u)switch(y){case"children":l=u;break;case"dangerouslySetInnerHTML":A=u;break;case"defaultValue":case"value":break;default:E(e,a,y,u)}}return e.push(">"),_(e,A,l),l;case"option":A=c.selectedValue,e.push(S("option"));var d=u=null,p=null,y=null;for(l in n)if(i.call(n,l)){var g=n[l];if(null!=g)switch(l){case"children":u=g;break;case"selected":p=g;break;case"dangerouslySetInnerHTML":y=g;break;case"value":d=g;default:E(e,a,l,g)}}if(null!=A)if(n=null!==d?""+d:function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(u),C(A)){for(a=0;a<A.length;a++)if(""+A[a]===n){e.push(' selected=""');break}}else""+A===n&&e.push(' selected=""');else p&&e.push(' selected=""');return e.push(">"),_(e,y,u),u;case"textarea":for(u in e.push(S("textarea")),y=A=l=null,n)if(i.call(n,u)&&null!=(d=n[u]))switch(u){case"children":y=d;break;case"value":l=d;break;case"defaultValue":A=d;break;case"dangerouslySetInnerHTML":throw Error(o(91));default:E(e,a,u,d)}if(null===l&&null!==A&&(l=A),e.push(">"),null!=y){if(null!=l)throw Error(o(92));if(C(y)&&1<y.length)throw Error(o(93));l=""+y}return"string"==typeof l&&"\n"===l[0]&&e.push("\n"),null!==l&&e.push(f(""+l)),null;case"input":for(A in e.push(S("input")),d=y=u=l=null,n)if(i.call(n,A)&&null!=(p=n[A]))switch(A){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,"input"));case"defaultChecked":d=p;break;case"defaultValue":u=p;break;case"checked":y=p;break;case"value":l=p;break;default:E(e,a,A,p)}return null!==y?E(e,a,"checked",y):null!==d&&E(e,a,"checked",d),null!==l?E(e,a,"value",l):null!==u&&E(e,a,"value",u),e.push("/>"),null;case"menuitem":for(var h in e.push(S("menuitem")),n)if(i.call(n,h)&&null!=(l=n[h]))switch(h){case"children":case"dangerouslySetInnerHTML":throw Error(o(400));default:E(e,a,h,l)}return e.push(">"),null;case"title":for(g in e.push(S("title")),l=null,n)if(i.call(n,g)&&null!=(A=n[g]))switch(g){case"children":l=A;break;case"dangerouslySetInnerHTML":throw Error(o(434));default:E(e,a,g,A)}return e.push(">"),l;case"listing":case"pre":for(d in e.push(S(t)),A=l=null,n)if(i.call(n,d)&&null!=(u=n[d]))switch(d){case"children":l=u;break;case"dangerouslySetInnerHTML":A=u;break;default:E(e,a,d,u)}if(e.push(">"),null!=A){if(null!=l)throw Error(o(60));if("object"!=typeof A||!("__html"in A))throw Error(o(61));null!=(n=A.__html)&&("string"==typeof n&&0<n.length&&"\n"===n[0]?e.push("\n",n):e.push(""+n))}return"string"==typeof l&&"\n"===l[0]&&e.push("\n"),l;case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":for(var v in e.push(S(t)),n)if(i.call(n,v)&&null!=(l=n[v]))switch(v){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,t));default:E(e,a,v,l)}return e.push("/>"),null;case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return k(e,n,t,a);case"html":return 0===c.insertionMode&&e.push("<!DOCTYPE html>"),k(e,n,t,a);default:if(-1===t.indexOf("-")&&"string"!=typeof n.is)return k(e,n,t,a);for(p in e.push(S(t)),A=l=null,n)if(i.call(n,p)&&null!=(u=n[p]))switch(p){case"children":l=u;break;case"dangerouslySetInnerHTML":A=u;break;case"style":w(e,a,u);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":break;default:s(p)&&"function"!=typeof u&&"symbol"!=typeof u&&e.push(" ",p,'="',f(u),'"')}return e.push(">"),_(e,A,l),l}}((c=t.blockedSegment).chunks,n,a,e.responseState,c.formatContext),c.lastPushedText=!1,A=c.formatContext,c.formatContext=function(e,t,n){switch(t){case"select":return b(1,null!=n.value?n.value:n.defaultValue);case"svg":return b(2,null);case"math":return b(3,null);case"foreignObject":return b(1,null);case"table":return b(4,null);case"thead":case"tbody":case"tfoot":return b(5,null);case"colgroup":return b(7,null);case"tr":return b(6,null)}return 4<=e.insertionMode||0===e.insertionMode?b(1,null):e}(A,n,a),Je(e,t,l),c.formatContext=A,n){case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"input":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":break;default:c.chunks.push("</",n,">")}c.lastPushedText=!1}}function He(e,t,n){if(t.node=n,"object"==typeof n&&null!==n){switch(n.$$typeof){case F:return void Ye(e,t,n.type,n.props,n.ref);case O:throw Error(o(257));case G:var r=n._init;return void He(e,t,n=r(n._payload))}if(C(n))return void Ze(e,t,n);if((r=null===n||"object"!=typeof n?null:"function"==typeof(r=K&&n[K]||n["@@iterator"])?r:null)&&(r=r.call(n))){if(!(n=r.next()).done){var i=[];do{i.push(n.value),n=r.next()}while(!n.done);Ze(e,t,i)}return}throw e=Object.prototype.toString.call(n),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(n).join(", ")+"}":e))}"string"==typeof n?(r=t.blockedSegment).lastPushedText=Q(t.blockedSegment.chunks,n,e.responseState,r.lastPushedText):"number"==typeof n&&((r=t.blockedSegment).lastPushedText=Q(t.blockedSegment.chunks,""+n,e.responseState,r.lastPushedText))}function Ze(e,t,n){for(var r=n.length,o=0;o<r;o++){var i=t.treeContext;t.treeContext=ue(i,r,o);try{Je(e,t,n[o])}finally{t.treeContext=i}}}function Je(e,t,n){var r=t.blockedSegment.formatContext,o=t.legacyContext,i=t.context;try{return He(e,t,n)}catch(l){if(Ie(),"object"!=typeof l||null===l||"function"!=typeof l.then)throw t.blockedSegment.formatContext=r,t.legacyContext=o,t.context=i,ce(i),l;n=l;var a=t.blockedSegment,c=Le(0,a.chunks.length,null,a.formatContext,a.lastPushedText,!0);a.children.push(c),a.lastPushedText=!1,e=je(e,t.node,t.blockedBoundary,c,t.abortSet,t.legacyContext,t.context,t.treeContext).ping,n.then(e,e),t.blockedSegment.formatContext=r,t.legacyContext=o,t.context=i,ce(i)}}function Ke(e){var t=e.blockedBoundary;(e=e.blockedSegment).status=3,et(this,t,e)}function Xe(e,t,n){var r=e.blockedBoundary;e.blockedSegment.status=3,null===r?(t.allPendingTasks--,2!==t.status&&(t.status=2,null!==t.destination&&t.destination.push(null))):(r.pendingTasks--,r.forceClientRender||(r.forceClientRender=!0,e=void 0===n?Error(o(432)):n,r.errorDigest=t.onError(e),r.parentFlushed&&t.clientRenderedBoundaries.push(r)),r.fallbackAbortableTasks.forEach((function(e){return Xe(e,t,n)})),r.fallbackAbortableTasks.clear(),t.allPendingTasks--,0===t.allPendingTasks&&(r=t.onAllReady)())}function $e(e,t){if(0===t.chunks.length&&1===t.children.length&&null===t.children[0].boundary){var n=t.children[0];n.id=t.id,n.parentFlushed=!0,1===n.status&&$e(e,n)}else e.completedSegments.push(t)}function et(e,t,n){if(null===t){if(n.parentFlushed){if(null!==e.completedRootSegment)throw Error(o(389));e.completedRootSegment=n}e.pendingRootTasks--,0===e.pendingRootTasks&&(e.onShellError=Re,(t=e.onShellReady)())}else t.pendingTasks--,t.forceClientRender||(0===t.pendingTasks?(n.parentFlushed&&1===n.status&&$e(t,n),t.parentFlushed&&e.completedBoundaries.push(t),t.fallbackAbortableTasks.forEach(Ke,e),t.fallbackAbortableTasks.clear()):n.parentFlushed&&1===n.status&&($e(t,n),1===t.completedSegments.length&&t.parentFlushed&&e.partialBoundaries.push(t)));e.allPendingTasks--,0===e.allPendingTasks&&(e=e.onAllReady)()}function tt(e){if(2!==e.status){var t=te,n=Ne.current;Ne.current=Fe;var r=Oe;Oe=e.responseState;try{var o,i=e.pingedTasks;for(o=0;o<i.length;o++){var a=i[o],c=e,l=a.blockedSegment;if(0===l.status){ce(a.context);try{He(c,a,a.node),c.responseState.generateStaticMarkup||l.lastPushedText&&l.textEmbedded&&l.chunks.push("\x3c!-- --\x3e"),a.abortSet.delete(a),l.status=1,et(c,a.blockedBoundary,l)}catch(e){if(Ie(),"object"==typeof e&&null!==e&&"function"==typeof e.then){var s=a.ping;e.then(s,s)}else{a.abortSet.delete(a),l.status=4;var A=a.blockedBoundary,u=e,d=qe(c,u);null===A?Ue(c,u):(A.pendingTasks--,A.forceClientRender||(A.forceClientRender=!0,A.errorDigest=d,A.parentFlushed&&c.clientRenderedBoundaries.push(A))),c.allPendingTasks--,0===c.allPendingTasks&&(0,c.onAllReady)()}}}}i.splice(0,o),null!==e.destination&&ct(e,e.destination)}catch(t){qe(e,t),Ue(e,t)}finally{Oe=r,Ne.current=n,n===Fe&&ce(t)}}}function nt(e,t,n){switch(n.parentFlushed=!0,n.status){case 0:var r=n.id=e.nextSegmentId++;return n.lastPushedText=!1,n.textEmbedded=!1,e=e.responseState,t.push('<template id="'),t.push(e.placeholderPrefix),e=r.toString(16),t.push(e),t.push('"></template>');case 1:n.status=2;var i=!0;r=n.chunks;var a=0;n=n.children;for(var c=0;c<n.length;c++){for(i=n[c];a<i.index;a++)t.push(r[a]);i=rt(e,t,i)}for(;a<r.length-1;a++)t.push(r[a]);return a<r.length&&(i=t.push(r[a])),i;default:throw Error(o(390))}}function rt(e,t,n){var r=n.boundary;if(null===r)return nt(e,t,n);if(r.parentFlushed=!0,r.forceClientRender)return e.responseState.generateStaticMarkup||(r=r.errorDigest,t.push("\x3c!--$!--\x3e"),t.push("<template"),r&&(t.push(' data-dgst="'),r=f(r),t.push(r),t.push('"')),t.push("></template>")),nt(e,t,n),!!e.responseState.generateStaticMarkup||t.push("\x3c!--/$--\x3e");if(0<r.pendingTasks){r.rootSegmentID=e.nextSegmentId++,0<r.completedSegments.length&&e.partialBoundaries.push(r);var i=e.responseState,a=i.nextSuspenseID++;return i=i.boundaryPrefix+a.toString(16),r=r.id=i,D(t,e.responseState,r),nt(e,t,n),t.push("\x3c!--/$--\x3e")}if(r.byteSize>e.progressiveChunkSize)return r.rootSegmentID=e.nextSegmentId++,e.completedBoundaries.push(r),D(t,e.responseState,r.id),nt(e,t,n),t.push("\x3c!--/$--\x3e");if(e.responseState.generateStaticMarkup||t.push("\x3c!--$--\x3e"),1!==(n=r.completedSegments).length)throw Error(o(391));return rt(e,t,n[0]),!!e.responseState.generateStaticMarkup||t.push("\x3c!--/$--\x3e")}function ot(e,t,n){return function(e,t,n,r){switch(n.insertionMode){case 0:case 1:return e.push('<div hidden id="'),e.push(t.segmentPrefix),t=r.toString(16),e.push(t),e.push('">');case 2:return e.push('<svg aria-hidden="true" style="display:none" id="'),e.push(t.segmentPrefix),t=r.toString(16),e.push(t),e.push('">');case 3:return e.push('<math aria-hidden="true" style="display:none" id="'),e.push(t.segmentPrefix),t=r.toString(16),e.push(t),e.push('">');case 4:return e.push('<table hidden id="'),e.push(t.segmentPrefix),t=r.toString(16),e.push(t),e.push('">');case 5:return e.push('<table hidden><tbody id="'),e.push(t.segmentPrefix),t=r.toString(16),e.push(t),e.push('">');case 6:return e.push('<table hidden><tr id="'),e.push(t.segmentPrefix),t=r.toString(16),e.push(t),e.push('">');case 7:return e.push('<table hidden><colgroup id="'),e.push(t.segmentPrefix),t=r.toString(16),e.push(t),e.push('">');default:throw Error(o(397))}}(t,e.responseState,n.formatContext,n.id),rt(e,t,n),function(e,t){switch(t.insertionMode){case 0:case 1:return e.push("</div>");case 2:return e.push("</svg>");case 3:return e.push("</math>");case 4:return e.push("</table>");case 5:return e.push("</tbody></table>");case 6:return e.push("</tr></table>");case 7:return e.push("</colgroup></table>");default:throw Error(o(397))}}(t,n.formatContext)}function it(e,t,n){for(var r=n.completedSegments,i=0;i<r.length;i++)at(e,t,n,r[i]);if(r.length=0,e=e.responseState,r=n.id,n=n.rootSegmentID,t.push(e.startInlineScript),e.sentCompleteBoundaryFunction?t.push('$RC("'):(e.sentCompleteBoundaryFunction=!0,t.push('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d)if(0===e)break;else e--;else"$"!==d&&"$?"!==d&&"$!"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data="$";a._reactRetry&&a._reactRetry()}};$RC("')),null===r)throw Error(o(395));return n=n.toString(16),t.push(r),t.push('","'),t.push(e.segmentPrefix),t.push(n),t.push('")<\/script>')}function at(e,t,n,r){if(2===r.status)return!0;var i=r.id;if(-1===i){if(-1===(r.id=n.rootSegmentID))throw Error(o(392));return ot(e,t,r)}return ot(e,t,r),e=e.responseState,t.push(e.startInlineScript),e.sentCompleteSegmentFunction?t.push('$RS("'):(e.sentCompleteSegmentFunction=!0,t.push('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS("')),t.push(e.segmentPrefix),i=i.toString(16),t.push(i),t.push('","'),t.push(e.placeholderPrefix),t.push(i),t.push('")<\/script>')}function ct(e,t){try{var n=e.completedRootSegment;if(null!==n&&0===e.pendingRootTasks){rt(e,t,n),e.completedRootSegment=null;var r=e.responseState.bootstrapChunks;for(n=0;n<r.length-1;n++)t.push(r[n]);n<r.length&&t.push(r[n])}var i,a=e.clientRenderedBoundaries;for(i=0;i<a.length;i++){var c=a[i];r=t;var l=e.responseState,s=c.id,A=c.errorDigest,u=c.errorMessage,d=c.errorComponentStack;if(r.push(l.startInlineScript),l.sentClientRenderFunction?r.push('$RX("'):(l.sentClientRenderFunction=!0,r.push('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data="$!",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX("')),null===s)throw Error(o(395));if(r.push(s),r.push('"'),A||u||d){r.push(",");var p=T(A||"");r.push(p)}if(u||d){r.push(",");var y=T(u||"");r.push(y)}if(d){r.push(",");var g=T(d);r.push(g)}if(!r.push(")<\/script>"))return e.destination=null,i++,void a.splice(0,i)}a.splice(0,i);var h=e.completedBoundaries;for(i=0;i<h.length;i++)if(!it(e,t,h[i]))return e.destination=null,i++,void h.splice(0,i);h.splice(0,i);var f=e.partialBoundaries;for(i=0;i<f.length;i++){var v=f[i];e:{a=e,c=t;var m=v.completedSegments;for(l=0;l<m.length;l++)if(!at(a,c,v,m[l])){l++,m.splice(0,l);var C=!1;break e}m.splice(0,l),C=!0}if(!C)return e.destination=null,i++,void f.splice(0,i)}f.splice(0,i);var b=e.completedBoundaries;for(i=0;i<b.length;i++)if(!it(e,t,b[i]))return e.destination=null,i++,void b.splice(0,i);b.splice(0,i)}finally{0===e.allPendingTasks&&0===e.pingedTasks.length&&0===e.clientRenderedBoundaries.length&&0===e.completedBoundaries.length&&t.push(null)}}function lt(e,t){try{var n=e.abortableTasks;n.forEach((function(n){return Xe(n,e,t)})),n.clear(),null!==e.destination&&ct(e,e.destination)}catch(t){qe(e,t),Ue(e,t)}}function st(){}function At(e,t,n,r){var i=!1,a=null,c="",l={push:function(e){return null!==e&&(c+=e),!0},destroy:function(e){i=!0,a=e}},s=!1;if(e=function(e,t,n,r,o,i,a,c,l){var s=[],A=new Set;return(n=Le(t={destination:null,responseState:t,progressiveChunkSize:r,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:A,pingedTasks:s,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===o?Pe:o,onAllReady:Re,onShellReady:void 0===a?Re:a,onShellError:Re,onFatalError:Re},0,null,n,!1,!1)).parentFlushed=!0,e=je(t,e,null,n,A,$,null,Ae),s.push(e),t}(e,function(e,t){return{bootstrapChunks:[],startInlineScript:"<script>",placeholderPrefix:(t=void 0===t?"":t)+"P:",segmentPrefix:t+"S:",boundaryPrefix:t+"B:",idPrefix:t,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1,generateStaticMarkup:e}}(n,t?t.identifierPrefix:void 0),{insertionMode:1,selectedValue:null},1/0,st,0,(function(){s=!0})),tt(e),lt(e,r),1===e.status)e.status=2,l.destroy(e.fatalError);else if(2!==e.status&&null===e.destination){e.destination=l;try{ct(e,l)}catch(t){qe(e,t),Ue(e,t)}}if(i)throw a;if(!s)throw Error(o(426));return c}t.renderToNodeStream=function(){throw Error(o(207))},t.renderToStaticMarkup=function(e,t){return At(e,t,!0,'The server used "renderToStaticMarkup" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server')},t.renderToStaticNodeStream=function(){throw Error(o(208))},t.renderToString=function(e,t){return At(e,t,!1,'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server')},t.version="18.2.0"},8698:(e,t,n)=>{"use strict";var r=n(7294);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=null,a=0;function c(e,t){if(0!==t.length)if(512<t.length)0<a&&(e.enqueue(new Uint8Array(i.buffer,0,a)),i=new Uint8Array(512),a=0),e.enqueue(t);else{var n=i.length-a;n<t.length&&(0===n?e.enqueue(i):(i.set(t.subarray(0,n),a),e.enqueue(i),t=t.subarray(n)),i=new Uint8Array(512),a=0),i.set(t,a),a+=t.length}}function l(e,t){return c(e,t),!0}function s(e){i&&0<a&&(e.enqueue(new Uint8Array(i.buffer,0,a)),i=null,a=0)}var A=new TextEncoder;function u(e){return A.encode(e)}function d(e){return A.encode(e)}function p(e,t){"function"==typeof e.error?e.error(t):e.close()}var y=Object.prototype.hasOwnProperty,g=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,h={},f={};function v(e){return!!y.call(f,e)||!y.call(h,e)&&(g.test(e)?f[e]=!0:(h[e]=!0,!1))}function m(e,t,n,r,o,i,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var C={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){C[e]=new m(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];C[t]=new m(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){C[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){C[e]=new m(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){C[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){C[e]=new m(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){C[e]=new m(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){C[e]=new m(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){C[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function x(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(b,x);C[t]=new m(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,x);C[t]=new m(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,x);C[t]=new m(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){C[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),C.xlinkHref=new m("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){C[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},E=["Webkit","ms","Moz","O"];Object.keys(w).forEach((function(e){E.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),w[t]=w[e]}))}));var _=/["'&<>]/;function k(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=_.exec(e);if(t){var n,r="",o=0;for(n=t.index;n<e.length;n++){switch(e.charCodeAt(n)){case 34:t="&quot;";break;case 38:t="&amp;";break;case 39:t="&#x27;";break;case 60:t="&lt;";break;case 62:t="&gt;";break;default:continue}o!==n&&(r+=e.substring(o,n)),o=n+1,r+=t}e=o!==n?r+e.substring(o,n):r}return e}var B=/([A-Z])/g,I=/^ms-/,S=Array.isArray,D=d("<script>"),z=d("<\/script>"),T=d('<script src="'),Q=d('<script type="module" src="'),M=d('" async=""><\/script>'),F=/(<\/|<)(s)(cript)/gi;function O(e,t,n,r){return t+("s"===n?"\\u0073":"\\u0053")+r}function N(e,t){return{insertionMode:e,selectedValue:t}}var P=d("\x3c!-- --\x3e");function R(e,t,n,r){return""===t?r:(r&&e.push(P),e.push(u(k(t))),!0)}var j=new Map,L=d(' style="'),q=d(":"),U=d(";");function V(e,t,n){if("object"!=typeof n)throw Error(o(62));for(var r in t=!0,n)if(y.call(n,r)){var i=n[r];if(null!=i&&"boolean"!=typeof i&&""!==i){if(0===r.indexOf("--")){var a=u(k(r));i=u(k((""+i).trim()))}else{a=r;var c=j.get(a);void 0!==c||(c=d(k(a.replace(B,"-$1").toLowerCase().replace(I,"-ms-"))),j.set(a,c)),a=c,i="number"==typeof i?0===i||y.call(w,r)?u(""+i):u(i+"px"):u(k((""+i).trim()))}t?(t=!1,e.push(L,a,q,i)):e.push(U,a,q,i)}}t||e.push(Y)}var W=d(" "),G=d('="'),Y=d('"'),H=d('=""');function Z(e,t,n,r){switch(n){case"style":return void V(e,t,r);case"defaultValue":case"defaultChecked":case"innerHTML":case"suppressContentEditableWarning":case"suppressHydrationWarning":return}if(!(2<n.length)||"o"!==n[0]&&"O"!==n[0]||"n"!==n[1]&&"N"!==n[1])if(null!==(t=C.hasOwnProperty(n)?C[n]:null)){switch(typeof r){case"function":case"symbol":return;case"boolean":if(!t.acceptsBooleans)return}switch(n=u(t.attributeName),t.type){case 3:r&&e.push(W,n,H);break;case 4:!0===r?e.push(W,n,H):!1!==r&&e.push(W,n,G,u(k(r)),Y);break;case 5:isNaN(r)||e.push(W,n,G,u(k(r)),Y);break;case 6:!isNaN(r)&&1<=r&&e.push(W,n,G,u(k(r)),Y);break;default:t.sanitizeURL&&(r=""+r),e.push(W,n,G,u(k(r)),Y)}}else if(v(n)){switch(typeof r){case"function":case"symbol":return;case"boolean":if("data-"!==(t=n.toLowerCase().slice(0,5))&&"aria-"!==t)return}e.push(W,u(n),G,u(k(r)),Y)}}var J=d(">"),K=d("/>");function X(e,t,n){if(null!=t){if(null!=n)throw Error(o(60));if("object"!=typeof t||!("__html"in t))throw Error(o(61));null!=(t=t.__html)&&e.push(u(""+t))}}var $=d(' selected=""');function ee(e,t,n,r){e.push(oe(n));var o,i=n=null;for(o in t)if(y.call(t,o)){var a=t[o];if(null!=a)switch(o){case"children":n=a;break;case"dangerouslySetInnerHTML":i=a;break;default:Z(e,r,o,a)}}return e.push(J),X(e,i,n),"string"==typeof n?(e.push(u(k(n))),null):n}var te=d("\n"),ne=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,re=new Map;function oe(e){var t=re.get(e);if(void 0===t){if(!ne.test(e))throw Error(o(65,e));t=d("<"+e),re.set(e,t)}return t}var ie=d("<!DOCTYPE html>");var ae=d("</"),ce=d(">"),le=d('<template id="'),se=d('"></template>'),Ae=d("\x3c!--$--\x3e"),ue=d('\x3c!--$?--\x3e<template id="'),de=d('"></template>'),pe=d("\x3c!--$!--\x3e"),ye=d("\x3c!--/$--\x3e"),ge=d("<template"),he=d('"'),fe=d(' data-dgst="');d(' data-msg="'),d(' data-stck="');var ve=d("></template>");function me(e,t,n){if(c(e,ue),null===n)throw Error(o(395));return c(e,n),l(e,de)}var Ce=d('<div hidden id="'),be=d('">'),xe=d("</div>"),we=d('<svg aria-hidden="true" style="display:none" id="'),Ee=d('">'),_e=d("</svg>"),ke=d('<math aria-hidden="true" style="display:none" id="'),Be=d('">'),Ie=d("</math>"),Se=d('<table hidden id="'),De=d('">'),ze=d("</table>"),Te=d('<table hidden><tbody id="'),Qe=d('">'),Me=d("</tbody></table>"),Fe=d('<table hidden><tr id="'),Oe=d('">'),Ne=d("</tr></table>"),Pe=d('<table hidden><colgroup id="'),Re=d('">'),je=d("</colgroup></table>"),Le=d('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS("'),qe=d('$RS("'),Ue=d('","'),Ve=d('")<\/script>'),We=d('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d)if(0===e)break;else e--;else"$"!==d&&"$?"!==d&&"$!"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data="$";a._reactRetry&&a._reactRetry()}};$RC("'),Ge=d('$RC("'),Ye=d('","'),He=d('")<\/script>'),Ze=d('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data="$!",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX("'),Je=d('$RX("'),Ke=d('"'),Xe=d(")<\/script>"),$e=d(","),et=/[<\u2028\u2029]/g;function tt(e){return JSON.stringify(e).replace(et,(function(e){switch(e){case"<":return"\\u003c";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw Error("escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React")}}))}var nt=Object.assign,rt=Symbol.for("react.element"),ot=Symbol.for("react.portal"),it=Symbol.for("react.fragment"),at=Symbol.for("react.strict_mode"),ct=Symbol.for("react.profiler"),lt=Symbol.for("react.provider"),st=Symbol.for("react.context"),At=Symbol.for("react.forward_ref"),ut=Symbol.for("react.suspense"),dt=Symbol.for("react.suspense_list"),pt=Symbol.for("react.memo"),yt=Symbol.for("react.lazy"),gt=Symbol.for("react.scope"),ht=Symbol.for("react.debug_trace_mode"),ft=Symbol.for("react.legacy_hidden"),vt=Symbol.for("react.default_value"),mt=Symbol.iterator;function Ct(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case it:return"Fragment";case ot:return"Portal";case ct:return"Profiler";case at:return"StrictMode";case ut:return"Suspense";case dt:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case st:return(e.displayName||"Context")+".Consumer";case lt:return(e._context.displayName||"Context")+".Provider";case At:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case pt:return null!==(t=e.displayName||null)?t:Ct(e.type)||"Memo";case yt:t=e._payload,e=e._init;try{return Ct(e(t))}catch(e){}}return null}var bt={};function xt(e,t){if(!(e=e.contextTypes))return bt;var n,r={};for(n in e)r[n]=t[n];return r}var wt=null;function Et(e,t){if(e!==t){e.context._currentValue=e.parentValue,e=e.parent;var n=t.parent;if(null===e){if(null!==n)throw Error(o(401))}else{if(null===n)throw Error(o(401));Et(e,n)}t.context._currentValue=t.value}}function _t(e){e.context._currentValue=e.parentValue,null!==(e=e.parent)&&_t(e)}function kt(e){var t=e.parent;null!==t&&kt(t),e.context._currentValue=e.value}function Bt(e,t){if(e.context._currentValue=e.parentValue,null===(e=e.parent))throw Error(o(402));e.depth===t.depth?Et(e,t):Bt(e,t)}function It(e,t){var n=t.parent;if(null===n)throw Error(o(402));e.depth===n.depth?Et(e,n):It(e,n),t.context._currentValue=t.value}function St(e){var t=wt;t!==e&&(null===t?kt(e):null===e?_t(t):t.depth===e.depth?Et(t,e):t.depth>e.depth?Bt(t,e):It(t,e),wt=e)}var Dt={isMounted:function(){return!1},enqueueSetState:function(e,t){null!==(e=e._reactInternals).queue&&e.queue.push(t)},enqueueReplaceState:function(e,t){(e=e._reactInternals).replace=!0,e.queue=[t]},enqueueForceUpdate:function(){}};function zt(e,t,n,r){var o=void 0!==e.state?e.state:null;e.updater=Dt,e.props=n,e.state=o;var i={queue:[],replace:!1};e._reactInternals=i;var a=t.contextType;if(e.context="object"==typeof a&&null!==a?a._currentValue:r,"function"==typeof(a=t.getDerivedStateFromProps)&&(o=null==(a=a(n,o))?o:nt({},o,a),e.state=o),"function"!=typeof t.getDerivedStateFromProps&&"function"!=typeof e.getSnapshotBeforeUpdate&&("function"==typeof e.UNSAFE_componentWillMount||"function"==typeof e.componentWillMount))if(t=e.state,"function"==typeof e.componentWillMount&&e.componentWillMount(),"function"==typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),t!==e.state&&Dt.enqueueReplaceState(e,e.state,null),null!==i.queue&&0<i.queue.length)if(t=i.queue,a=i.replace,i.queue=null,i.replace=!1,a&&1===t.length)e.state=t[0];else{for(i=a?t[0]:e.state,o=!0,a=a?1:0;a<t.length;a++){var c=t[a];null!=(c="function"==typeof c?c.call(e,i,n,r):c)&&(o?(o=!1,i=nt({},i,c)):nt(i,c))}e.state=i}else i.queue=null}var Tt={id:1,overflow:""};function Qt(e,t,n){var r=e.id;e=e.overflow;var o=32-Mt(r)-1;r&=~(1<<o),n+=1;var i=32-Mt(t)+o;if(30<i){var a=o-o%5;return i=(r&(1<<a)-1).toString(32),r>>=a,o-=a,{id:1<<32-Mt(t)+o|n<<o|r,overflow:i+e}}return{id:1<<i|n<<o|r,overflow:e}}var Mt=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(Ft(e)/Ot|0)|0},Ft=Math.log,Ot=Math.LN2,Nt="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},Pt=null,Rt=null,jt=null,Lt=null,qt=!1,Ut=!1,Vt=0,Wt=null,Gt=0;function Yt(){if(null===Pt)throw Error(o(321));return Pt}function Ht(){if(0<Gt)throw Error(o(312));return{memoizedState:null,queue:null,next:null}}function Zt(){return null===Lt?null===jt?(qt=!1,jt=Lt=Ht()):(qt=!0,Lt=jt):null===Lt.next?(qt=!1,Lt=Lt.next=Ht()):(qt=!0,Lt=Lt.next),Lt}function Jt(){Rt=Pt=null,Ut=!1,jt=null,Gt=0,Lt=Wt=null}function Kt(e,t){return"function"==typeof t?t(e):t}function Xt(e,t,n){if(Pt=Yt(),Lt=Zt(),qt){var r=Lt.queue;if(t=r.dispatch,null!==Wt&&void 0!==(n=Wt.get(r))){Wt.delete(r),r=Lt.memoizedState;do{r=e(r,n.action),n=n.next}while(null!==n);return Lt.memoizedState=r,[r,t]}return[Lt.memoizedState,t]}return e=e===Kt?"function"==typeof t?t():t:void 0!==n?n(t):t,Lt.memoizedState=e,e=(e=Lt.queue={last:null,dispatch:null}).dispatch=en.bind(null,Pt,e),[Lt.memoizedState,e]}function $t(e,t){if(Pt=Yt(),t=void 0===t?null:t,null!==(Lt=Zt())){var n=Lt.memoizedState;if(null!==n&&null!==t){var r=n[1];e:if(null===r)r=!1;else{for(var o=0;o<r.length&&o<t.length;o++)if(!Nt(t[o],r[o])){r=!1;break e}r=!0}if(r)return n[0]}}return e=e(),Lt.memoizedState=[e,t],e}function en(e,t,n){if(25<=Gt)throw Error(o(301));if(e===Pt)if(Ut=!0,e={action:n,next:null},null===Wt&&(Wt=new Map),void 0===(n=Wt.get(t)))Wt.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}}function tn(){throw Error(o(394))}function nn(){}var rn={readContext:function(e){return e._currentValue},useContext:function(e){return Yt(),e._currentValue},useMemo:$t,useReducer:Xt,useRef:function(e){Pt=Yt();var t=(Lt=Zt()).memoizedState;return null===t?(e={current:e},Lt.memoizedState=e):t},useState:function(e){return Xt(Kt,e)},useInsertionEffect:nn,useLayoutEffect:function(){},useCallback:function(e,t){return $t((function(){return e}),t)},useImperativeHandle:nn,useEffect:nn,useDebugValue:nn,useDeferredValue:function(e){return Yt(),e},useTransition:function(){return Yt(),[!1,tn]},useId:function(){var e=Rt.treeContext,t=e.overflow;e=((e=e.id)&~(1<<32-Mt(e)-1)).toString(32)+t;var n=on;if(null===n)throw Error(o(404));return t=Vt++,e=":"+n.idPrefix+"R"+e,0<t&&(e+="H"+t.toString(32)),e+":"},useMutableSource:function(e,t){return Yt(),t(e._source)},useSyncExternalStore:function(e,t,n){if(void 0===n)throw Error(o(407));return n()}},on=null,an=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function cn(e){return console.error(e),null}function ln(){}function sn(e,t,n,r,o,i,a,c){e.allPendingTasks++,null===n?e.pendingRootTasks++:n.pendingTasks++;var l={node:t,ping:function(){var t=e.pingedTasks;t.push(l),1===t.length&&En(e)},blockedBoundary:n,blockedSegment:r,abortSet:o,legacyContext:i,context:a,treeContext:c};return o.add(l),l}function An(e,t,n,r,o,i){return{status:0,id:-1,index:t,parentFlushed:!1,chunks:[],children:[],formatContext:r,boundary:n,lastPushedText:o,textEmbedded:i}}function un(e,t){if(null!=(e=e.onError(t))&&"string"!=typeof e)throw Error('onError returned something with a type other than "string". onError should return a string and may return null or undefined but must not return anything else. It received something of type "'+typeof e+'" instead');return e}function dn(e,t){var n=e.onShellError;n(t),(n=e.onFatalError)(t),null!==e.destination?(e.status=2,p(e.destination,t)):(e.status=1,e.fatalError=t)}function pn(e,t,n,r,o){for(Pt={},Rt=t,Vt=0,e=n(r,o);Ut;)Ut=!1,Vt=0,Gt+=1,Lt=null,e=n(r,o);return Jt(),e}function yn(e,t,n,r){var i=n.render(),a=r.childContextTypes;if(null!=a){var c=t.legacyContext;if("function"!=typeof n.getChildContext)r=c;else{for(var l in n=n.getChildContext())if(!(l in a))throw Error(o(108,Ct(r)||"Unknown",l));r=nt({},c,n)}t.legacyContext=r,fn(e,t,i),t.legacyContext=c}else fn(e,t,i)}function gn(e,t){if(e&&e.defaultProps){for(var n in t=nt({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function hn(e,t,n,i,a){if("function"==typeof n)if(n.prototype&&n.prototype.isReactComponent){a=xt(n,t.legacyContext);var c=n.contextType;zt(c=new n(i,"object"==typeof c&&null!==c?c._currentValue:a),n,i,a),yn(e,t,c,n)}else{a=pn(e,t,n,i,c=xt(n,t.legacyContext));var l=0!==Vt;if("object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof)zt(a,n,i,c),yn(e,t,a,n);else if(l){i=t.treeContext,t.treeContext=Qt(i,1,0);try{fn(e,t,a)}finally{t.treeContext=i}}else fn(e,t,a)}else{if("string"!=typeof n){switch(n){case ft:case ht:case at:case ct:case it:case dt:return void fn(e,t,i.children);case gt:throw Error(o(343));case ut:e:{n=t.blockedBoundary,a=t.blockedSegment,c=i.fallback,i=i.children;var s={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:l=new Set,errorDigest:null},A=An(0,a.chunks.length,s,a.formatContext,!1,!1);a.children.push(A),a.lastPushedText=!1;var d=An(0,0,null,a.formatContext,!1,!1);d.parentFlushed=!0,t.blockedBoundary=s,t.blockedSegment=d;try{if(mn(e,t,i),d.lastPushedText&&d.textEmbedded&&d.chunks.push(P),d.status=1,xn(s,d),0===s.pendingTasks)break e}catch(t){d.status=4,s.forceClientRender=!0,s.errorDigest=un(e,t)}finally{t.blockedBoundary=n,t.blockedSegment=a}t=sn(e,c,n,A,l,t.legacyContext,t.context,t.treeContext),e.pingedTasks.push(t)}return}if("object"==typeof n&&null!==n)switch(n.$$typeof){case At:if(i=pn(e,t,n.render,i,a),0!==Vt){n=t.treeContext,t.treeContext=Qt(n,1,0);try{fn(e,t,i)}finally{t.treeContext=n}}else fn(e,t,i);return;case pt:return void hn(e,t,n=n.type,i=gn(n,i),a);case lt:if(a=i.children,n=n._context,i=i.value,c=n._currentValue,n._currentValue=i,wt=i={parent:l=wt,depth:null===l?0:l.depth+1,context:n,parentValue:c,value:i},t.context=i,fn(e,t,a),null===(e=wt))throw Error(o(403));return i=e.parentValue,e.context._currentValue=i===vt?e.context._defaultValue:i,e=wt=e.parent,void(t.context=e);case st:return void fn(e,t,i=(i=i.children)(n._currentValue));case yt:return void hn(e,t,n=(a=n._init)(n._payload),i=gn(n,i),void 0)}throw Error(o(130,null==n?n:typeof n,""))}switch(c=function(e,t,n,i,a){switch(t){case"select":e.push(oe("select"));var c=null,l=null;for(p in n)if(y.call(n,p)){var s=n[p];if(null!=s)switch(p){case"children":c=s;break;case"dangerouslySetInnerHTML":l=s;break;case"defaultValue":case"value":break;default:Z(e,i,p,s)}}return e.push(J),X(e,l,c),c;case"option":l=a.selectedValue,e.push(oe("option"));var A=s=null,d=null,p=null;for(c in n)if(y.call(n,c)){var g=n[c];if(null!=g)switch(c){case"children":s=g;break;case"selected":d=g;break;case"dangerouslySetInnerHTML":p=g;break;case"value":A=g;default:Z(e,i,c,g)}}if(null!=l)if(n=null!==A?""+A:function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(s),S(l)){for(i=0;i<l.length;i++)if(""+l[i]===n){e.push($);break}}else""+l===n&&e.push($);else d&&e.push($);return e.push(J),X(e,p,s),s;case"textarea":for(s in e.push(oe("textarea")),p=l=c=null,n)if(y.call(n,s)&&null!=(A=n[s]))switch(s){case"children":p=A;break;case"value":c=A;break;case"defaultValue":l=A;break;case"dangerouslySetInnerHTML":throw Error(o(91));default:Z(e,i,s,A)}if(null===c&&null!==l&&(c=l),e.push(J),null!=p){if(null!=c)throw Error(o(92));if(S(p)&&1<p.length)throw Error(o(93));c=""+p}return"string"==typeof c&&"\n"===c[0]&&e.push(te),null!==c&&e.push(u(k(""+c))),null;case"input":for(l in e.push(oe("input")),A=p=s=c=null,n)if(y.call(n,l)&&null!=(d=n[l]))switch(l){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,"input"));case"defaultChecked":A=d;break;case"defaultValue":s=d;break;case"checked":p=d;break;case"value":c=d;break;default:Z(e,i,l,d)}return null!==p?Z(e,i,"checked",p):null!==A&&Z(e,i,"checked",A),null!==c?Z(e,i,"value",c):null!==s&&Z(e,i,"value",s),e.push(K),null;case"menuitem":for(var h in e.push(oe("menuitem")),n)if(y.call(n,h)&&null!=(c=n[h]))switch(h){case"children":case"dangerouslySetInnerHTML":throw Error(o(400));default:Z(e,i,h,c)}return e.push(J),null;case"title":for(g in e.push(oe("title")),c=null,n)if(y.call(n,g)&&null!=(l=n[g]))switch(g){case"children":c=l;break;case"dangerouslySetInnerHTML":throw Error(o(434));default:Z(e,i,g,l)}return e.push(J),c;case"listing":case"pre":for(A in e.push(oe(t)),l=c=null,n)if(y.call(n,A)&&null!=(s=n[A]))switch(A){case"children":c=s;break;case"dangerouslySetInnerHTML":l=s;break;default:Z(e,i,A,s)}if(e.push(J),null!=l){if(null!=c)throw Error(o(60));if("object"!=typeof l||!("__html"in l))throw Error(o(61));null!=(n=l.__html)&&("string"==typeof n&&0<n.length&&"\n"===n[0]?e.push(te,u(n)):e.push(u(""+n)))}return"string"==typeof c&&"\n"===c[0]&&e.push(te),c;case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":for(var f in e.push(oe(t)),n)if(y.call(n,f)&&null!=(c=n[f]))switch(f){case"children":case"dangerouslySetInnerHTML":throw Error(o(399,t));default:Z(e,i,f,c)}return e.push(K),null;case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return ee(e,n,t,i);case"html":return 0===a.insertionMode&&e.push(ie),ee(e,n,t,i);default:if(-1===t.indexOf("-")&&"string"!=typeof n.is)return ee(e,n,t,i);for(d in e.push(oe(t)),l=c=null,n)if(y.call(n,d)&&null!=(s=n[d]))switch(d){case"children":c=s;break;case"dangerouslySetInnerHTML":l=s;break;case"style":V(e,i,s);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":break;default:v(d)&&"function"!=typeof s&&"symbol"!=typeof s&&e.push(W,u(d),G,u(k(s)),Y)}return e.push(J),X(e,l,c),c}}((a=t.blockedSegment).chunks,n,i,e.responseState,a.formatContext),a.lastPushedText=!1,l=a.formatContext,a.formatContext=function(e,t,n){switch(t){case"select":return N(1,null!=n.value?n.value:n.defaultValue);case"svg":return N(2,null);case"math":return N(3,null);case"foreignObject":return N(1,null);case"table":return N(4,null);case"thead":case"tbody":case"tfoot":return N(5,null);case"colgroup":return N(7,null);case"tr":return N(6,null)}return 4<=e.insertionMode||0===e.insertionMode?N(1,null):e}(l,n,i),mn(e,t,c),a.formatContext=l,n){case"area":case"base":case"br":case"col":case"embed":case"hr":case"img":case"input":case"keygen":case"link":case"meta":case"param":case"source":case"track":case"wbr":break;default:a.chunks.push(ae,u(n),ce)}a.lastPushedText=!1}}function fn(e,t,n){if(t.node=n,"object"==typeof n&&null!==n){switch(n.$$typeof){case rt:return void hn(e,t,n.type,n.props,n.ref);case ot:throw Error(o(257));case yt:var r=n._init;return void fn(e,t,n=r(n._payload))}if(S(n))return void vn(e,t,n);if((r=null===n||"object"!=typeof n?null:"function"==typeof(r=mt&&n[mt]||n["@@iterator"])?r:null)&&(r=r.call(n))){if(!(n=r.next()).done){var i=[];do{i.push(n.value),n=r.next()}while(!n.done);vn(e,t,i)}return}throw e=Object.prototype.toString.call(n),Error(o(31,"[object Object]"===e?"object with keys {"+Object.keys(n).join(", ")+"}":e))}"string"==typeof n?(r=t.blockedSegment).lastPushedText=R(t.blockedSegment.chunks,n,e.responseState,r.lastPushedText):"number"==typeof n&&((r=t.blockedSegment).lastPushedText=R(t.blockedSegment.chunks,""+n,e.responseState,r.lastPushedText))}function vn(e,t,n){for(var r=n.length,o=0;o<r;o++){var i=t.treeContext;t.treeContext=Qt(i,r,o);try{mn(e,t,n[o])}finally{t.treeContext=i}}}function mn(e,t,n){var r=t.blockedSegment.formatContext,o=t.legacyContext,i=t.context;try{return fn(e,t,n)}catch(l){if(Jt(),"object"!=typeof l||null===l||"function"!=typeof l.then)throw t.blockedSegment.formatContext=r,t.legacyContext=o,t.context=i,St(i),l;n=l;var a=t.blockedSegment,c=An(0,a.chunks.length,null,a.formatContext,a.lastPushedText,!0);a.children.push(c),a.lastPushedText=!1,e=sn(e,t.node,t.blockedBoundary,c,t.abortSet,t.legacyContext,t.context,t.treeContext).ping,n.then(e,e),t.blockedSegment.formatContext=r,t.legacyContext=o,t.context=i,St(i)}}function Cn(e){var t=e.blockedBoundary;(e=e.blockedSegment).status=3,wn(this,t,e)}function bn(e,t,n){var r=e.blockedBoundary;e.blockedSegment.status=3,null===r?(t.allPendingTasks--,2!==t.status&&(t.status=2,null!==t.destination&&t.destination.close())):(r.pendingTasks--,r.forceClientRender||(r.forceClientRender=!0,e=void 0===n?Error(o(432)):n,r.errorDigest=t.onError(e),r.parentFlushed&&t.clientRenderedBoundaries.push(r)),r.fallbackAbortableTasks.forEach((function(e){return bn(e,t,n)})),r.fallbackAbortableTasks.clear(),t.allPendingTasks--,0===t.allPendingTasks&&(r=t.onAllReady)())}function xn(e,t){if(0===t.chunks.length&&1===t.children.length&&null===t.children[0].boundary){var n=t.children[0];n.id=t.id,n.parentFlushed=!0,1===n.status&&xn(e,n)}else e.completedSegments.push(t)}function wn(e,t,n){if(null===t){if(n.parentFlushed){if(null!==e.completedRootSegment)throw Error(o(389));e.completedRootSegment=n}e.pendingRootTasks--,0===e.pendingRootTasks&&(e.onShellError=ln,(t=e.onShellReady)())}else t.pendingTasks--,t.forceClientRender||(0===t.pendingTasks?(n.parentFlushed&&1===n.status&&xn(t,n),t.parentFlushed&&e.completedBoundaries.push(t),t.fallbackAbortableTasks.forEach(Cn,e),t.fallbackAbortableTasks.clear()):n.parentFlushed&&1===n.status&&(xn(t,n),1===t.completedSegments.length&&t.parentFlushed&&e.partialBoundaries.push(t)));e.allPendingTasks--,0===e.allPendingTasks&&(e=e.onAllReady)()}function En(e){if(2!==e.status){var t=wt,n=an.current;an.current=rn;var r=on;on=e.responseState;try{var o,i=e.pingedTasks;for(o=0;o<i.length;o++){var a=i[o],c=e,l=a.blockedSegment;if(0===l.status){St(a.context);try{fn(c,a,a.node),l.lastPushedText&&l.textEmbedded&&l.chunks.push(P),a.abortSet.delete(a),l.status=1,wn(c,a.blockedBoundary,l)}catch(e){if(Jt(),"object"==typeof e&&null!==e&&"function"==typeof e.then){var s=a.ping;e.then(s,s)}else{a.abortSet.delete(a),l.status=4;var A=a.blockedBoundary,u=e,d=un(c,u);null===A?dn(c,u):(A.pendingTasks--,A.forceClientRender||(A.forceClientRender=!0,A.errorDigest=d,A.parentFlushed&&c.clientRenderedBoundaries.push(A))),c.allPendingTasks--,0===c.allPendingTasks&&(0,c.onAllReady)()}}}}i.splice(0,o),null!==e.destination&&Dn(e,e.destination)}catch(t){un(e,t),dn(e,t)}finally{on=r,an.current=n,n===rn&&St(t)}}}function _n(e,t,n){switch(n.parentFlushed=!0,n.status){case 0:var r=n.id=e.nextSegmentId++;return n.lastPushedText=!1,n.textEmbedded=!1,e=e.responseState,c(t,le),c(t,e.placeholderPrefix),c(t,e=u(r.toString(16))),l(t,se);case 1:n.status=2;var i=!0;r=n.chunks;var a=0;n=n.children;for(var s=0;s<n.length;s++){for(i=n[s];a<i.index;a++)c(t,r[a]);i=kn(e,t,i)}for(;a<r.length-1;a++)c(t,r[a]);return a<r.length&&(i=l(t,r[a])),i;default:throw Error(o(390))}}function kn(e,t,n){var r=n.boundary;if(null===r)return _n(e,t,n);if(r.parentFlushed=!0,r.forceClientRender)r=r.errorDigest,l(t,pe),c(t,ge),r&&(c(t,fe),c(t,u(k(r))),c(t,he)),l(t,ve),_n(e,t,n);else if(0<r.pendingTasks){r.rootSegmentID=e.nextSegmentId++,0<r.completedSegments.length&&e.partialBoundaries.push(r);var i=e.responseState,a=i.nextSuspenseID++;i=d(i.boundaryPrefix+a.toString(16)),r=r.id=i,me(t,e.responseState,r),_n(e,t,n)}else if(r.byteSize>e.progressiveChunkSize)r.rootSegmentID=e.nextSegmentId++,e.completedBoundaries.push(r),me(t,e.responseState,r.id),_n(e,t,n);else{if(l(t,Ae),1!==(n=r.completedSegments).length)throw Error(o(391));kn(e,t,n[0])}return l(t,ye)}function Bn(e,t,n){return function(e,t,n,r){switch(n.insertionMode){case 0:case 1:return c(e,Ce),c(e,t.segmentPrefix),c(e,u(r.toString(16))),l(e,be);case 2:return c(e,we),c(e,t.segmentPrefix),c(e,u(r.toString(16))),l(e,Ee);case 3:return c(e,ke),c(e,t.segmentPrefix),c(e,u(r.toString(16))),l(e,Be);case 4:return c(e,Se),c(e,t.segmentPrefix),c(e,u(r.toString(16))),l(e,De);case 5:return c(e,Te),c(e,t.segmentPrefix),c(e,u(r.toString(16))),l(e,Qe);case 6:return c(e,Fe),c(e,t.segmentPrefix),c(e,u(r.toString(16))),l(e,Oe);case 7:return c(e,Pe),c(e,t.segmentPrefix),c(e,u(r.toString(16))),l(e,Re);default:throw Error(o(397))}}(t,e.responseState,n.formatContext,n.id),kn(e,t,n),function(e,t){switch(t.insertionMode){case 0:case 1:return l(e,xe);case 2:return l(e,_e);case 3:return l(e,Ie);case 4:return l(e,ze);case 5:return l(e,Me);case 6:return l(e,Ne);case 7:return l(e,je);default:throw Error(o(397))}}(t,n.formatContext)}function In(e,t,n){for(var r=n.completedSegments,i=0;i<r.length;i++)Sn(e,t,n,r[i]);if(r.length=0,e=e.responseState,r=n.id,n=n.rootSegmentID,c(t,e.startInlineScript),e.sentCompleteBoundaryFunction?c(t,Ge):(e.sentCompleteBoundaryFunction=!0,c(t,We)),null===r)throw Error(o(395));return n=u(n.toString(16)),c(t,r),c(t,Ye),c(t,e.segmentPrefix),c(t,n),l(t,He)}function Sn(e,t,n,r){if(2===r.status)return!0;var i=r.id;if(-1===i){if(-1===(r.id=n.rootSegmentID))throw Error(o(392));return Bn(e,t,r)}return Bn(e,t,r),c(t,(e=e.responseState).startInlineScript),e.sentCompleteSegmentFunction?c(t,qe):(e.sentCompleteSegmentFunction=!0,c(t,Le)),c(t,e.segmentPrefix),c(t,i=u(i.toString(16))),c(t,Ue),c(t,e.placeholderPrefix),c(t,i),l(t,Ve)}function Dn(e,t){i=new Uint8Array(512),a=0;try{var n=e.completedRootSegment;if(null!==n&&0===e.pendingRootTasks){kn(e,t,n),e.completedRootSegment=null;var r=e.responseState.bootstrapChunks;for(n=0;n<r.length-1;n++)c(t,r[n]);n<r.length&&l(t,r[n])}var A,d=e.clientRenderedBoundaries;for(A=0;A<d.length;A++){var p=d[A];r=t;var y=e.responseState,g=p.id,h=p.errorDigest,f=p.errorMessage,v=p.errorComponentStack;if(c(r,y.startInlineScript),y.sentClientRenderFunction?c(r,Je):(y.sentClientRenderFunction=!0,c(r,Ze)),null===g)throw Error(o(395));if(c(r,g),c(r,Ke),(h||f||v)&&(c(r,$e),c(r,u(tt(h||"")))),(f||v)&&(c(r,$e),c(r,u(tt(f||"")))),v&&(c(r,$e),c(r,u(tt(v)))),!l(r,Xe))return e.destination=null,A++,void d.splice(0,A)}d.splice(0,A);var m=e.completedBoundaries;for(A=0;A<m.length;A++)if(!In(e,t,m[A]))return e.destination=null,A++,void m.splice(0,A);m.splice(0,A),s(t),i=new Uint8Array(512),a=0;var C=e.partialBoundaries;for(A=0;A<C.length;A++){var b=C[A];e:{d=e,p=t;var x=b.completedSegments;for(y=0;y<x.length;y++)if(!Sn(d,p,b,x[y])){y++,x.splice(0,y);var w=!1;break e}x.splice(0,y),w=!0}if(!w)return e.destination=null,A++,void C.splice(0,A)}C.splice(0,A);var E=e.completedBoundaries;for(A=0;A<E.length;A++)if(!In(e,t,E[A]))return e.destination=null,A++,void E.splice(0,A);E.splice(0,A)}finally{s(t),0===e.allPendingTasks&&0===e.pingedTasks.length&&0===e.clientRenderedBoundaries.length&&0===e.completedBoundaries.length&&t.close()}}function zn(e,t){try{var n=e.abortableTasks;n.forEach((function(n){return bn(n,e,t)})),n.clear(),null!==e.destination&&Dn(e,e.destination)}catch(t){un(e,t),dn(e,t)}}t.renderToReadableStream=function(e,t){return new Promise((function(n,r){var o,i,a=new Promise((function(e,t){i=e,o=t})),c=function(e,t,n,r,o,i,a,c,l){var s=[],A=new Set;return(n=An(t={destination:null,responseState:t,progressiveChunkSize:void 0===r?12800:r,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:A,pingedTasks:s,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===o?cn:o,onAllReady:void 0===i?ln:i,onShellReady:void 0===a?ln:a,onShellError:void 0===c?ln:c,onFatalError:void 0===l?ln:l},0,null,n,!1,!1)).parentFlushed=!0,e=sn(t,e,null,n,A,bt,null,Tt),s.push(e),t}(e,function(e,t,n,r,o){e=void 0===e?"":e,t=void 0===t?D:d('<script nonce="'+k(t)+'">');var i=[];if(void 0!==n&&i.push(t,u((""+n).replace(F,O)),z),void 0!==r)for(n=0;n<r.length;n++)i.push(T,u(k(r[n])),M);if(void 0!==o)for(r=0;r<o.length;r++)i.push(Q,u(k(o[r])),M);return{bootstrapChunks:i,startInlineScript:t,placeholderPrefix:d(e+"P:"),segmentPrefix:d(e+"S:"),boundaryPrefix:e+"B:",idPrefix:e,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1}}(t?t.identifierPrefix:void 0,t?t.nonce:void 0,t?t.bootstrapScriptContent:void 0,t?t.bootstrapScripts:void 0,t?t.bootstrapModules:void 0),function(e){return N("http://www.w3.org/2000/svg"===e?2:"http://www.w3.org/1998/Math/MathML"===e?3:0,null)}(t?t.namespaceURI:void 0),t?t.progressiveChunkSize:void 0,t?t.onError:void 0,i,(function(){var e=new ReadableStream({type:"bytes",pull:function(e){if(1===c.status)c.status=2,p(e,c.fatalError);else if(2!==c.status&&null===c.destination){c.destination=e;try{Dn(c,e)}catch(e){un(c,e),dn(c,e)}}},cancel:function(){zn(c)}},{highWaterMark:0});e.allReady=a,n(e)}),(function(e){a.catch((function(){})),r(e)}),o);if(t&&t.signal){var l=t.signal,s=function(){zn(c,l.reason),l.removeEventListener("abort",s)};l.addEventListener("abort",s)}En(c)}))},t.version="18.2.0"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var a=new Set,c={};function l(e,t){s(e,t),s(e+"Capture",t)}function s(e,t){for(c[e]=t,e=0;e<t.length;e++)a.add(t[e])}var A=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),u=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},y={};function g(e,t,n,r,o,i,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var h={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){h[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];h[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){h[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){h[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){h[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){h[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){h[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){h[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){h[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var f=/[\-:]([a-z])/g;function v(e){return e[1].toUpperCase()}function m(e,t,n,r){var o=h.hasOwnProperty(t)?h[t]:null;(null!==o?0!==o.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!u.call(y,e)||!u.call(p,e)&&(d.test(e)?y[e]=!0:(p[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(f,v);h[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(f,v);h[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(f,v);h[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),h.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var C=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,b=Symbol.for("react.element"),x=Symbol.for("react.portal"),w=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),k=Symbol.for("react.provider"),B=Symbol.for("react.context"),I=Symbol.for("react.forward_ref"),S=Symbol.for("react.suspense"),D=Symbol.for("react.suspense_list"),z=Symbol.for("react.memo"),T=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var Q=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var M=Symbol.iterator;function F(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=M&&e[M]||e["@@iterator"])?e:null}var O,N=Object.assign;function P(e){if(void 0===O)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);O=t&&t[1]||""}return"\n"+O+e}var R=!1;function j(e,t){if(!e||R)return"";R=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&"string"==typeof t.stack){for(var o=t.stack.split("\n"),i=r.stack.split("\n"),a=o.length-1,c=i.length-1;1<=a&&0<=c&&o[a]!==i[c];)c--;for(;1<=a&&0<=c;a--,c--)if(o[a]!==i[c]){if(1!==a||1!==c)do{if(a--,0>--c||o[a]!==i[c]){var l="\n"+o[a].replace(" at new "," at ");return e.displayName&&l.includes("<anonymous>")&&(l=l.replace("<anonymous>",e.displayName)),l}}while(1<=a&&0<=c);break}}}finally{R=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?P(e):""}function L(e){switch(e.tag){case 5:return P(e.type);case 16:return P("Lazy");case 13:return P("Suspense");case 19:return P("SuspenseList");case 0:case 2:case 15:return j(e.type,!1);case 11:return j(e.type.render,!1);case 1:return j(e.type,!0);default:return""}}function q(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case w:return"Fragment";case x:return"Portal";case _:return"Profiler";case E:return"StrictMode";case S:return"Suspense";case D:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case B:return(e.displayName||"Context")+".Consumer";case k:return(e._context.displayName||"Context")+".Provider";case I:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case z:return null!==(t=e.displayName||null)?t:q(e.type)||"Memo";case T:t=e._payload,e=e._init;try{return q(e(t))}catch(e){}}return null}function U(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return q(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function V(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function G(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Y(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function H(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Z(e,t){var n=t.checked;return N({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function J(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=V(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function K(e,t){null!=(t=t.checked)&&m(e,"checked",t,!1)}function X(e,t){K(e,t);var n=V(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,V(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function $(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&H(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+V(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return N({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(te(n)){if(1<n.length)throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:V(n)}}function ie(e,t){var n=V(t.value),r=V(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ae(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function ce(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function le(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?ce(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var se,Ae,ue=(Ae=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((se=se||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=se.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return Ae(e,t)}))}:Ae);function de(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ye=["Webkit","ms","Moz","O"];function ge(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&&pe[e]?(""+t).trim():t+"px"}function he(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ge(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(pe).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var fe=N({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ve(e,t){if(t){if(fe[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function me(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ce=null;function be(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,we=null,Ee=null;function _e(e){if(e=Co(e)){if("function"!=typeof xe)throw Error(i(280));var t=e.stateNode;t&&(t=xo(t),xe(e.stateNode,e.type,t))}}function ke(e){we?Ee?Ee.push(e):Ee=[e]:we=e}function Be(){if(we){var e=we,t=Ee;if(Ee=we=null,_e(e),t)for(e=0;e<t.length;e++)_e(t[e])}}function Ie(e,t){return e(t)}function Se(){}var De=!1;function ze(e,t,n){if(De)return e(t,n);De=!0;try{return Ie(e,t,n)}finally{De=!1,(null!==we||null!==Ee)&&(Se(),Be())}}function Te(e,t){var n=e.stateNode;if(null===n)return null;var r=xo(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var Qe=!1;if(A)try{var Me={};Object.defineProperty(Me,"passive",{get:function(){Qe=!0}}),window.addEventListener("test",Me,Me),window.removeEventListener("test",Me,Me)}catch(Ae){Qe=!1}function Fe(e,t,n,r,o,i,a,c,l){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}}var Oe=!1,Ne=null,Pe=!1,Re=null,je={onError:function(e){Oe=!0,Ne=e}};function Le(e,t,n,r,o,i,a,c,l){Oe=!1,Ne=null,Fe.apply(je,arguments)}function qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ue(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function Ve(e){if(qe(e)!==e)throw Error(i(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=qe(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var a=o.alternate;if(null===a){if(null!==(r=o.return)){n=r;continue}break}if(o.child===a.child){for(a=o.child;a;){if(a===n)return Ve(o),e;if(a===r)return Ve(o),t;a=a.sibling}throw Error(i(188))}if(n.return!==r.return)n=o,r=a;else{for(var c=!1,l=o.child;l;){if(l===n){c=!0,n=o,r=a;break}if(l===r){c=!0,r=o,n=a;break}l=l.sibling}if(!c){for(l=a.child;l;){if(l===n){c=!0,n=a,r=o;break}if(l===r){c=!0,r=a,n=o;break}l=l.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e))?Ge(e):null}function Ge(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ge(e);if(null!==t)return t;e=e.sibling}return null}var Ye=o.unstable_scheduleCallback,He=o.unstable_cancelCallback,Ze=o.unstable_shouldYield,Je=o.unstable_requestPaint,Ke=o.unstable_now,Xe=o.unstable_getCurrentPriorityLevel,$e=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,it=null,at=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(ct(e)/lt|0)|0},ct=Math.log,lt=Math.LN2,st=64,At=4194304;function ut(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=268435455&n;if(0!==a){var c=a&~o;0!==c?r=ut(c):0!=(i&=a)&&(r=ut(i))}else 0!=(a=n&~o)?r=ut(a):0!==i&&(r=ut(i));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&o)&&((o=r&-r)>=(i=t&-t)||16===o&&0!=(4194240&i)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-at(t)),r|=e[n],t&=~o;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function yt(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function gt(){var e=st;return 0==(4194240&(st<<=1))&&(st=64),e}function ht(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ft(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-at(t)]=n}function vt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-at(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var mt=0;function Ct(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var bt,xt,wt,Et,_t,kt=!1,Bt=[],It=null,St=null,Dt=null,zt=new Map,Tt=new Map,Qt=[],Mt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function Ft(e,t){switch(e){case"focusin":case"focusout":It=null;break;case"dragenter":case"dragleave":St=null;break;case"mouseover":case"mouseout":Dt=null;break;case"pointerover":case"pointerout":zt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Tt.delete(t.pointerId)}}function Ot(e,t,n,r,o,i){return null===e||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:i,targetContainers:[o]},null!==t&&null!==(t=Co(t))&&xt(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function Nt(e){var t=mo(e.target);if(null!==t){var n=qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ue(n)))return e.blockedOn=t,void _t(e.priority,(function(){wt(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Pt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Zt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=Co(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);Ce=r,n.target.dispatchEvent(r),Ce=null,t.shift()}return!0}function Rt(e,t,n){Pt(e)&&n.delete(t)}function jt(){kt=!1,null!==It&&Pt(It)&&(It=null),null!==St&&Pt(St)&&(St=null),null!==Dt&&Pt(Dt)&&(Dt=null),zt.forEach(Rt),Tt.forEach(Rt)}function Lt(e,t){e.blockedOn===t&&(e.blockedOn=null,kt||(kt=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,jt)))}function qt(e){function t(t){return Lt(t,e)}if(0<Bt.length){Lt(Bt[0],e);for(var n=1;n<Bt.length;n++){var r=Bt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==It&&Lt(It,e),null!==St&&Lt(St,e),null!==Dt&&Lt(Dt,e),zt.forEach(t),Tt.forEach(t),n=0;n<Qt.length;n++)(r=Qt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Qt.length&&null===(n=Qt[0]).blockedOn;)Nt(n),null===n.blockedOn&&Qt.shift()}var Ut=C.ReactCurrentBatchConfig,Vt=!0;function Wt(e,t,n,r){var o=mt,i=Ut.transition;Ut.transition=null;try{mt=1,Yt(e,t,n,r)}finally{mt=o,Ut.transition=i}}function Gt(e,t,n,r){var o=mt,i=Ut.transition;Ut.transition=null;try{mt=4,Yt(e,t,n,r)}finally{mt=o,Ut.transition=i}}function Yt(e,t,n,r){if(Vt){var o=Zt(e,t,n,r);if(null===o)Vr(e,t,r,Ht,n),Ft(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return It=Ot(It,e,t,n,r,o),!0;case"dragenter":return St=Ot(St,e,t,n,r,o),!0;case"mouseover":return Dt=Ot(Dt,e,t,n,r,o),!0;case"pointerover":var i=o.pointerId;return zt.set(i,Ot(zt.get(i)||null,e,t,n,r,o)),!0;case"gotpointercapture":return i=o.pointerId,Tt.set(i,Ot(Tt.get(i)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(Ft(e,r),4&t&&-1<Mt.indexOf(e)){for(;null!==o;){var i=Co(o);if(null!==i&&bt(i),null===(i=Zt(e,t,n,r))&&Vr(e,t,r,Ht,n),i===o)break;o=i}null!==o&&r.stopPropagation()}else Vr(e,t,r,null,n)}}var Ht=null;function Zt(e,t,n,r){if(Ht=null,null!==(e=mo(e=be(r))))if(null===(t=qe(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=Ue(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Ht=e,null}function Jt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case $e:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Kt=null,Xt=null,$t=null;function en(){if($t)return $t;var e,t,n=Xt,r=n.length,o="value"in Kt?Kt.value:Kt.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return $t=o.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,i){for(var a in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=i,this.currentTarget=null,e)e.hasOwnProperty(a)&&(t=e[a],this[a]=t?t(o):o[a]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return N(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,cn,ln,sn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},An=on(sn),un=N({},sn,{view:0,detail:0}),dn=on(un),pn=N({},un,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_n,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ln&&(ln&&"mousemove"===e.type?(an=e.screenX-ln.screenX,cn=e.screenY-ln.screenY):cn=an=0,ln=e),an)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),yn=on(pn),gn=on(N({},pn,{dataTransfer:0})),hn=on(N({},un,{relatedTarget:0})),fn=on(N({},sn,{animationName:0,elapsedTime:0,pseudoElement:0})),vn=N({},sn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),mn=on(vn),Cn=on(N({},sn,{data:0})),bn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},wn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=wn[e])&&!!t[e]}function _n(){return En}var kn=N({},un,{key:function(e){if(e.key){var t=bn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_n,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Bn=on(kn),In=on(N({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Sn=on(N({},un,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_n})),Dn=on(N({},sn,{propertyName:0,elapsedTime:0,pseudoElement:0})),zn=N({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Tn=on(zn),Qn=[9,13,27,32],Mn=A&&"CompositionEvent"in window,Fn=null;A&&"documentMode"in document&&(Fn=document.documentMode);var On=A&&"TextEvent"in window&&!Fn,Nn=A&&(!Mn||Fn&&8<Fn&&11>=Fn),Pn=String.fromCharCode(32),Rn=!1;function jn(e,t){switch(e){case"keyup":return-1!==Qn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ln(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var qn=!1,Un={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Un[e.type]:"textarea"===t}function Wn(e,t,n,r){ke(r),0<(t=Gr(t,"onChange")).length&&(n=new An("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Gn=null,Yn=null;function Hn(e){Pr(e,0)}function Zn(e){if(Y(bo(e)))return e}function Jn(e,t){if("change"===e)return t}var Kn=!1;if(A){var Xn;if(A){var $n="oninput"in document;if(!$n){var er=document.createElement("div");er.setAttribute("oninput","return;"),$n="function"==typeof er.oninput}Xn=$n}else Xn=!1;Kn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){Gn&&(Gn.detachEvent("onpropertychange",nr),Yn=Gn=null)}function nr(e){if("value"===e.propertyName&&Zn(Yn)){var t=[];Wn(t,Yn,e,be(e)),ze(Hn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Yn=n,(Gn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Zn(Yn)}function ir(e,t){if("click"===e)return Zn(t)}function ar(e,t){if("input"===e||"change"===e)return Zn(t)}var cr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function lr(e,t){if(cr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!u.call(t,o)||!cr(e[o],t[o]))return!1}return!0}function sr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Ar(e,t){var n,r=sr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=sr(r)}}function ur(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?ur(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=H();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=H((e=t.contentWindow).document)}return t}function pr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function yr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&ur(n.ownerDocument.documentElement,n)){if(null!==r&&pr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=void 0===r.end?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=Ar(n,i);var a=Ar(n,r);o&&a&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var gr=A&&"documentMode"in document&&11>=document.documentMode,hr=null,fr=null,vr=null,mr=!1;function Cr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;mr||null==hr||hr!==H(r)||(r="selectionStart"in(r=hr)&&pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},vr&&lr(vr,r)||(vr=r,0<(r=Gr(fr,"onSelect")).length&&(t=new An("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=hr)))}function br(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:br("Animation","AnimationEnd"),animationiteration:br("Animation","AnimationIteration"),animationstart:br("Animation","AnimationStart"),transitionend:br("Transition","TransitionEnd")},wr={},Er={};function _r(e){if(wr[e])return wr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return wr[e]=n[t];return e}A&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var kr=_r("animationend"),Br=_r("animationiteration"),Ir=_r("animationstart"),Sr=_r("transitionend"),Dr=new Map,zr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Tr(e,t){Dr.set(e,t),l(t,[e])}for(var Qr=0;Qr<zr.length;Qr++){var Mr=zr[Qr];Tr(Mr.toLowerCase(),"on"+(Mr[0].toUpperCase()+Mr.slice(1)))}Tr(kr,"onAnimationEnd"),Tr(Br,"onAnimationIteration"),Tr(Ir,"onAnimationStart"),Tr("dblclick","onDoubleClick"),Tr("focusin","onFocus"),Tr("focusout","onBlur"),Tr(Sr,"onTransitionEnd"),s("onMouseEnter",["mouseout","mouseover"]),s("onMouseLeave",["mouseout","mouseover"]),s("onPointerEnter",["pointerout","pointerover"]),s("onPointerLeave",["pointerout","pointerover"]),l("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),l("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),l("onBeforeInput",["compositionend","keypress","textInput","paste"]),l("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Fr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Or=new Set("cancel close invalid load scroll toggle".split(" ").concat(Fr));function Nr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,a,c,l,s){if(Le.apply(this,arguments),Oe){if(!Oe)throw Error(i(198));var A=Ne;Oe=!1,Ne=null,Pe||(Pe=!0,Re=A)}}(r,t,void 0,e),e.currentTarget=null}function Pr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var i=void 0;if(t)for(var a=r.length-1;0<=a;a--){var c=r[a],l=c.instance,s=c.currentTarget;if(c=c.listener,l!==i&&o.isPropagationStopped())break e;Nr(o,c,s),i=l}else for(a=0;a<r.length;a++){if(l=(c=r[a]).instance,s=c.currentTarget,c=c.listener,l!==i&&o.isPropagationStopped())break e;Nr(o,c,s),i=l}}}if(Pe)throw e=Re,Pe=!1,Re=null,e}function Rr(e,t){var n=t[ho];void 0===n&&(n=t[ho]=new Set);var r=e+"__bubble";n.has(r)||(Ur(t,e,2,!1),n.add(r))}function jr(e,t,n){var r=0;t&&(r|=4),Ur(n,e,r,t)}var Lr="_reactListening"+Math.random().toString(36).slice(2);function qr(e){if(!e[Lr]){e[Lr]=!0,a.forEach((function(t){"selectionchange"!==t&&(Or.has(t)||jr(t,!1,e),jr(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[Lr]||(t[Lr]=!0,jr("selectionchange",!1,t))}}function Ur(e,t,n,r){switch(Jt(t)){case 1:var o=Wt;break;case 4:o=Gt;break;default:o=Yt}n=o.bind(null,t,n,e),o=void 0,!Qe||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Vr(e,t,n,r,o){var i=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var a=r.tag;if(3===a||4===a){var c=r.stateNode.containerInfo;if(c===o||8===c.nodeType&&c.parentNode===o)break;if(4===a)for(a=r.return;null!==a;){var l=a.tag;if((3===l||4===l)&&((l=a.stateNode.containerInfo)===o||8===l.nodeType&&l.parentNode===o))return;a=a.return}for(;null!==c;){if(null===(a=mo(c)))return;if(5===(l=a.tag)||6===l){r=i=a;continue e}c=c.parentNode}}r=r.return}ze((function(){var r=i,o=be(n),a=[];e:{var c=Dr.get(e);if(void 0!==c){var l=An,s=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":l=Bn;break;case"focusin":s="focus",l=hn;break;case"focusout":s="blur",l=hn;break;case"beforeblur":case"afterblur":l=hn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=yn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=gn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=Sn;break;case kr:case Br:case Ir:l=fn;break;case Sr:l=Dn;break;case"scroll":l=dn;break;case"wheel":l=Tn;break;case"copy":case"cut":case"paste":l=mn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=In}var A=0!=(4&t),u=!A&&"scroll"===e,d=A?null!==c?c+"Capture":null:c;A=[];for(var p,y=r;null!==y;){var g=(p=y).stateNode;if(5===p.tag&&null!==g&&(p=g,null!==d&&null!=(g=Te(y,d))&&A.push(Wr(y,g,p))),u)break;y=y.return}0<A.length&&(c=new l(c,s,null,n,o),a.push({event:c,listeners:A}))}}if(0==(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(c="mouseover"===e||"pointerover"===e)||n===Ce||!(s=n.relatedTarget||n.fromElement)||!mo(s)&&!s[go])&&(l||c)&&(c=o.window===o?o:(c=o.ownerDocument)?c.defaultView||c.parentWindow:window,l?(l=r,null!==(s=(s=n.relatedTarget||n.toElement)?mo(s):null)&&(s!==(u=qe(s))||5!==s.tag&&6!==s.tag)&&(s=null)):(l=null,s=r),l!==s)){if(A=yn,g="onMouseLeave",d="onMouseEnter",y="mouse","pointerout"!==e&&"pointerover"!==e||(A=In,g="onPointerLeave",d="onPointerEnter",y="pointer"),u=null==l?c:bo(l),p=null==s?c:bo(s),(c=new A(g,y+"leave",l,n,o)).target=u,c.relatedTarget=p,g=null,mo(o)===r&&((A=new A(d,y+"enter",s,n,o)).target=p,A.relatedTarget=u,g=A),u=g,l&&s)e:{for(d=s,y=0,p=A=l;p;p=Yr(p))y++;for(p=0,g=d;g;g=Yr(g))p++;for(;0<y-p;)A=Yr(A),y--;for(;0<p-y;)d=Yr(d),p--;for(;y--;){if(A===d||null!==d&&A===d.alternate)break e;A=Yr(A),d=Yr(d)}A=null}else A=null;null!==l&&Hr(a,c,l,A,!1),null!==s&&null!==u&&Hr(a,u,s,A,!0)}if("select"===(l=(c=r?bo(r):window).nodeName&&c.nodeName.toLowerCase())||"input"===l&&"file"===c.type)var h=Jn;else if(Vn(c))if(Kn)h=ar;else{h=or;var f=rr}else(l=c.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===c.type||"radio"===c.type)&&(h=ir);switch(h&&(h=h(e,r))?Wn(a,h,n,o):(f&&f(e,c,r),"focusout"===e&&(f=c._wrapperState)&&f.controlled&&"number"===c.type&&ee(c,"number",c.value)),f=r?bo(r):window,e){case"focusin":(Vn(f)||"true"===f.contentEditable)&&(hr=f,fr=r,vr=null);break;case"focusout":vr=fr=hr=null;break;case"mousedown":mr=!0;break;case"contextmenu":case"mouseup":case"dragend":mr=!1,Cr(a,n,o);break;case"selectionchange":if(gr)break;case"keydown":case"keyup":Cr(a,n,o)}var v;if(Mn)e:{switch(e){case"compositionstart":var m="onCompositionStart";break e;case"compositionend":m="onCompositionEnd";break e;case"compositionupdate":m="onCompositionUpdate";break e}m=void 0}else qn?jn(e,n)&&(m="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(m="onCompositionStart");m&&(Nn&&"ko"!==n.locale&&(qn||"onCompositionStart"!==m?"onCompositionEnd"===m&&qn&&(v=en()):(Xt="value"in(Kt=o)?Kt.value:Kt.textContent,qn=!0)),0<(f=Gr(r,m)).length&&(m=new Cn(m,e,null,n,o),a.push({event:m,listeners:f}),(v||null!==(v=Ln(n)))&&(m.data=v))),(v=On?function(e,t){switch(e){case"compositionend":return Ln(t);case"keypress":return 32!==t.which?null:(Rn=!0,Pn);case"textInput":return(e=t.data)===Pn&&Rn?null:e;default:return null}}(e,n):function(e,t){if(qn)return"compositionend"===e||!Mn&&jn(e,t)?(e=en(),$t=Xt=Kt=null,qn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Nn&&"ko"!==t.locale?null:t.data}}(e,n))&&0<(r=Gr(r,"onBeforeInput")).length&&(o=new Cn("onBeforeInput","beforeinput",null,n,o),a.push({event:o,listeners:r}),o.data=v)}Pr(a,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Gr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,i=o.stateNode;5===o.tag&&null!==i&&(o=i,null!=(i=Te(e,n))&&r.unshift(Wr(e,i,o)),null!=(i=Te(e,t))&&r.push(Wr(e,i,o))),e=e.return}return r}function Yr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Hr(e,t,n,r,o){for(var i=t._reactName,a=[];null!==n&&n!==r;){var c=n,l=c.alternate,s=c.stateNode;if(null!==l&&l===r)break;5===c.tag&&null!==s&&(c=s,o?null!=(l=Te(n,i))&&a.unshift(Wr(n,l,c)):o||null!=(l=Te(n,i))&&a.push(Wr(n,l,c))),n=n.return}0!==a.length&&e.push({event:t,listeners:a})}var Zr=/\r\n?/g,Jr=/\u0000|\uFFFD/g;function Kr(e){return("string"==typeof e?e:""+e).replace(Zr,"\n").replace(Jr,"")}function Xr(e,t,n){if(t=Kr(t),Kr(e)!==t&&n)throw Error(i(425))}function $r(){}var eo=null,to=null;function no(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ro="function"==typeof setTimeout?setTimeout:void 0,oo="function"==typeof clearTimeout?clearTimeout:void 0,io="function"==typeof Promise?Promise:void 0,ao="function"==typeof queueMicrotask?queueMicrotask:void 0!==io?function(e){return io.resolve(null).then(e).catch(co)}:ro;function co(e){setTimeout((function(){throw e}))}function lo(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&8===o.nodeType)if("/$"===(n=o.data)){if(0===r)return e.removeChild(o),void qt(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=o}while(n);qt(t)}function so(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function Ao(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var uo=Math.random().toString(36).slice(2),po="__reactFiber$"+uo,yo="__reactProps$"+uo,go="__reactContainer$"+uo,ho="__reactEvents$"+uo,fo="__reactListeners$"+uo,vo="__reactHandles$"+uo;function mo(e){var t=e[po];if(t)return t;for(var n=e.parentNode;n;){if(t=n[go]||n[po]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Ao(e);null!==e;){if(n=e[po])return n;e=Ao(e)}return t}n=(e=n).parentNode}return null}function Co(e){return!(e=e[po]||e[go])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function bo(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function xo(e){return e[yo]||null}var wo=[],Eo=-1;function _o(e){return{current:e}}function ko(e){0>Eo||(e.current=wo[Eo],wo[Eo]=null,Eo--)}function Bo(e,t){Eo++,wo[Eo]=e.current,e.current=t}var Io={},So=_o(Io),Do=_o(!1),zo=Io;function To(e,t){var n=e.type.contextTypes;if(!n)return Io;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Qo(e){return null!=e.childContextTypes}function Mo(){ko(Do),ko(So)}function Fo(e,t,n){if(So.current!==Io)throw Error(i(168));Bo(So,t),Bo(Do,n)}function Oo(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(i(108,U(e)||"Unknown",o));return N({},n,r)}function No(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Io,zo=So.current,Bo(So,e),Bo(Do,Do.current),!0}function Po(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=Oo(e,t,zo),r.__reactInternalMemoizedMergedChildContext=e,ko(Do),ko(So),Bo(So,e)):ko(Do),Bo(Do,n)}var Ro=null,jo=!1,Lo=!1;function qo(e){null===Ro?Ro=[e]:Ro.push(e)}function Uo(){if(!Lo&&null!==Ro){Lo=!0;var e=0,t=mt;try{var n=Ro;for(mt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Ro=null,jo=!1}catch(t){throw null!==Ro&&(Ro=Ro.slice(e+1)),Ye($e,Uo),t}finally{mt=t,Lo=!1}}return null}var Vo=[],Wo=0,Go=null,Yo=0,Ho=[],Zo=0,Jo=null,Ko=1,Xo="";function $o(e,t){Vo[Wo++]=Yo,Vo[Wo++]=Go,Go=e,Yo=t}function ei(e,t,n){Ho[Zo++]=Ko,Ho[Zo++]=Xo,Ho[Zo++]=Jo,Jo=e;var r=Ko;e=Xo;var o=32-at(r)-1;r&=~(1<<o),n+=1;var i=32-at(t)+o;if(30<i){var a=o-o%5;i=(r&(1<<a)-1).toString(32),r>>=a,o-=a,Ko=1<<32-at(t)+o|n<<o|r,Xo=i+e}else Ko=1<<i|n<<o|r,Xo=e}function ti(e){null!==e.return&&($o(e,1),ei(e,1,0))}function ni(e){for(;e===Go;)Go=Vo[--Wo],Vo[Wo]=null,Yo=Vo[--Wo],Vo[Wo]=null;for(;e===Jo;)Jo=Ho[--Zo],Ho[Zo]=null,Xo=Ho[--Zo],Ho[Zo]=null,Ko=Ho[--Zo],Ho[Zo]=null}var ri=null,oi=null,ii=!1,ai=null;function ci(e,t){var n=Ts(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function li(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,ri=e,oi=so(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ri=e,oi=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Jo?{id:Ko,overflow:Xo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Ts(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ri=e,oi=null,!0);default:return!1}}function si(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function Ai(e){if(ii){var t=oi;if(t){var n=t;if(!li(e,t)){if(si(e))throw Error(i(418));t=so(n.nextSibling);var r=ri;t&&li(e,t)?ci(r,n):(e.flags=-4097&e.flags|2,ii=!1,ri=e)}}else{if(si(e))throw Error(i(418));e.flags=-4097&e.flags|2,ii=!1,ri=e}}}function ui(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ri=e}function di(e){if(e!==ri)return!1;if(!ii)return ui(e),ii=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!no(e.type,e.memoizedProps)),t&&(t=oi)){if(si(e))throw pi(),Error(i(418));for(;t;)ci(e,t),t=so(t.nextSibling)}if(ui(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){oi=so(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}oi=null}}else oi=ri?so(e.stateNode.nextSibling):null;return!0}function pi(){for(var e=oi;e;)e=so(e.nextSibling)}function yi(){oi=ri=null,ii=!1}function gi(e){null===ai?ai=[e]:ai.push(e)}var hi=C.ReactCurrentBatchConfig;function fi(e,t){if(e&&e.defaultProps){for(var n in t=N({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var vi=_o(null),mi=null,Ci=null,bi=null;function xi(){bi=Ci=mi=null}function wi(e){var t=vi.current;ko(vi),e._currentValue=t}function Ei(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function _i(e,t){mi=e,bi=Ci=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Cc=!0),e.firstContext=null)}function ki(e){var t=e._currentValue;if(bi!==e)if(e={context:e,memoizedValue:t,next:null},null===Ci){if(null===mi)throw Error(i(308));Ci=e,mi.dependencies={lanes:0,firstContext:e}}else Ci=Ci.next=e;return t}var Bi=null;function Ii(e){null===Bi?Bi=[e]:Bi.push(e)}function Si(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Ii(t)):(n.next=o.next,o.next=n),t.interleaved=n,Di(e,r)}function Di(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var zi=!1;function Ti(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Qi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Mi(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Fi(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Sl)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Di(e,n)}return null===(o=r.interleaved)?(t.next=t,Ii(r)):(t.next=o.next,o.next=t),r.interleaved=t,Di(e,n)}function Oi(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,vt(e,n)}}function Ni(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,i=null;if(null!==(n=n.firstBaseUpdate)){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===i?o=i=a:i=i.next=a,n=n.next}while(null!==n);null===i?o=i=t:i=i.next=t}else o=i=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Pi(e,t,n,r){var o=e.updateQueue;zi=!1;var i=o.firstBaseUpdate,a=o.lastBaseUpdate,c=o.shared.pending;if(null!==c){o.shared.pending=null;var l=c,s=l.next;l.next=null,null===a?i=s:a.next=s,a=l;var A=e.alternate;null!==A&&(c=(A=A.updateQueue).lastBaseUpdate)!==a&&(null===c?A.firstBaseUpdate=s:c.next=s,A.lastBaseUpdate=l)}if(null!==i){var u=o.baseState;for(a=0,A=s=l=null,c=i;;){var d=c.lane,p=c.eventTime;if((r&d)===d){null!==A&&(A=A.next={eventTime:p,lane:0,tag:c.tag,payload:c.payload,callback:c.callback,next:null});e:{var y=e,g=c;switch(d=t,p=n,g.tag){case 1:if("function"==typeof(y=g.payload)){u=y.call(p,u,d);break e}u=y;break e;case 3:y.flags=-65537&y.flags|128;case 0:if(null==(d="function"==typeof(y=g.payload)?y.call(p,u,d):y))break e;u=N({},u,d);break e;case 2:zi=!0}}null!==c.callback&&0!==c.lane&&(e.flags|=64,null===(d=o.effects)?o.effects=[c]:d.push(c))}else p={eventTime:p,lane:d,tag:c.tag,payload:c.payload,callback:c.callback,next:null},null===A?(s=A=p,l=u):A=A.next=p,a|=d;if(null===(c=c.next)){if(null===(c=o.shared.pending))break;c=(d=c).next,d.next=null,o.lastBaseUpdate=d,o.shared.pending=null}}if(null===A&&(l=u),o.baseState=l,o.firstBaseUpdate=s,o.lastBaseUpdate=A,null!==(t=o.shared.interleaved)){o=t;do{a|=o.lane,o=o.next}while(o!==t)}else null===i&&(o.shared.lanes=0);Nl|=a,e.lanes=a,e.memoizedState=u}}function Ri(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(i(191,o));o.call(r)}}}var ji=(new r.Component).refs;function Li(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:N({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var qi={isMounted:function(e){return!!(e=e._reactInternals)&&qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ts(),o=ns(e),i=Mi(r,o);i.payload=t,null!=n&&(i.callback=n),null!==(t=Fi(e,i,o))&&(rs(t,e,o,r),Oi(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ts(),o=ns(e),i=Mi(r,o);i.tag=1,i.payload=t,null!=n&&(i.callback=n),null!==(t=Fi(e,i,o))&&(rs(t,e,o,r),Oi(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ts(),r=ns(e),o=Mi(n,r);o.tag=2,null!=t&&(o.callback=t),null!==(t=Fi(e,o,r))&&(rs(t,e,r,n),Oi(t,e,r))}};function Ui(e,t,n,r,o,i,a){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!(t.prototype&&t.prototype.isPureReactComponent&&lr(n,r)&&lr(o,i))}function Vi(e,t,n){var r=!1,o=Io,i=t.contextType;return"object"==typeof i&&null!==i?i=ki(i):(o=Qo(t)?zo:So.current,i=(r=null!=(r=t.contextTypes))?To(e,o):Io),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=qi,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=i),t}function Wi(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&qi.enqueueReplaceState(t,t.state,null)}function Gi(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=ji,Ti(e);var i=t.contextType;"object"==typeof i&&null!==i?o.context=ki(i):(i=Qo(t)?zo:So.current,o.context=To(e,i)),o.state=e.memoizedState,"function"==typeof(i=t.getDerivedStateFromProps)&&(Li(e,t,i,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&qi.enqueueReplaceState(o,o.state,null),Pi(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4194308)}function Yi(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var o=r,a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=o.refs;t===ji&&(t=o.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Hi(e,t){throw e=Object.prototype.toString.call(t),Error(i(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Zi(e){return(0,e._init)(e._payload)}function Ji(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Ms(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function c(t){return e&&null===t.alternate&&(t.flags|=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Ps(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function s(e,t,n,r){var i=n.type;return i===w?u(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===i||"object"==typeof i&&null!==i&&i.$$typeof===T&&Zi(i)===t.type)?((r=o(t,n.props)).ref=Yi(e,t,n),r.return=e,r):((r=Fs(n.type,n.key,n.props,null,e.mode,r)).ref=Yi(e,t,n),r.return=e,r)}function A(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Rs(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function u(e,t,n,r,i){return null===t||7!==t.tag?((t=Os(n,e.mode,r,i)).return=e,t):((t=o(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Ps(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case b:return(n=Fs(t.type,t.key,t.props,null,e.mode,n)).ref=Yi(e,null,t),n.return=e,n;case x:return(t=Rs(t,e.mode,n)).return=e,t;case T:return d(e,(0,t._init)(t._payload),n)}if(te(t)||F(t))return(t=Os(t,e.mode,n,null)).return=e,t;Hi(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case b:return n.key===o?s(e,t,n,r):null;case x:return n.key===o?A(e,t,n,r):null;case T:return p(e,t,(o=n._init)(n._payload),r)}if(te(n)||F(n))return null!==o?null:u(e,t,n,r,null);Hi(e,n)}return null}function y(e,t,n,r,o){if("string"==typeof r&&""!==r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case b:return s(t,e=e.get(null===r.key?n:r.key)||null,r,o);case x:return A(t,e=e.get(null===r.key?n:r.key)||null,r,o);case T:return y(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||F(r))return u(t,e=e.get(n)||null,r,o,null);Hi(t,r)}return null}function g(o,i,c,l){for(var s=null,A=null,u=i,g=i=0,h=null;null!==u&&g<c.length;g++){u.index>g?(h=u,u=null):h=u.sibling;var f=p(o,u,c[g],l);if(null===f){null===u&&(u=h);break}e&&u&&null===f.alternate&&t(o,u),i=a(f,i,g),null===A?s=f:A.sibling=f,A=f,u=h}if(g===c.length)return n(o,u),ii&&$o(o,g),s;if(null===u){for(;g<c.length;g++)null!==(u=d(o,c[g],l))&&(i=a(u,i,g),null===A?s=u:A.sibling=u,A=u);return ii&&$o(o,g),s}for(u=r(o,u);g<c.length;g++)null!==(h=y(u,o,g,c[g],l))&&(e&&null!==h.alternate&&u.delete(null===h.key?g:h.key),i=a(h,i,g),null===A?s=h:A.sibling=h,A=h);return e&&u.forEach((function(e){return t(o,e)})),ii&&$o(o,g),s}function h(o,c,l,s){var A=F(l);if("function"!=typeof A)throw Error(i(150));if(null==(l=A.call(l)))throw Error(i(151));for(var u=A=null,g=c,h=c=0,f=null,v=l.next();null!==g&&!v.done;h++,v=l.next()){g.index>h?(f=g,g=null):f=g.sibling;var m=p(o,g,v.value,s);if(null===m){null===g&&(g=f);break}e&&g&&null===m.alternate&&t(o,g),c=a(m,c,h),null===u?A=m:u.sibling=m,u=m,g=f}if(v.done)return n(o,g),ii&&$o(o,h),A;if(null===g){for(;!v.done;h++,v=l.next())null!==(v=d(o,v.value,s))&&(c=a(v,c,h),null===u?A=v:u.sibling=v,u=v);return ii&&$o(o,h),A}for(g=r(o,g);!v.done;h++,v=l.next())null!==(v=y(g,o,h,v.value,s))&&(e&&null!==v.alternate&&g.delete(null===v.key?h:v.key),c=a(v,c,h),null===u?A=v:u.sibling=v,u=v);return e&&g.forEach((function(e){return t(o,e)})),ii&&$o(o,h),A}return function e(r,i,a,l){if("object"==typeof a&&null!==a&&a.type===w&&null===a.key&&(a=a.props.children),"object"==typeof a&&null!==a){switch(a.$$typeof){case b:e:{for(var s=a.key,A=i;null!==A;){if(A.key===s){if((s=a.type)===w){if(7===A.tag){n(r,A.sibling),(i=o(A,a.props.children)).return=r,r=i;break e}}else if(A.elementType===s||"object"==typeof s&&null!==s&&s.$$typeof===T&&Zi(s)===A.type){n(r,A.sibling),(i=o(A,a.props)).ref=Yi(r,A,a),i.return=r,r=i;break e}n(r,A);break}t(r,A),A=A.sibling}a.type===w?((i=Os(a.props.children,r.mode,l,a.key)).return=r,r=i):((l=Fs(a.type,a.key,a.props,null,r.mode,l)).ref=Yi(r,i,a),l.return=r,r=l)}return c(r);case x:e:{for(A=a.key;null!==i;){if(i.key===A){if(4===i.tag&&i.stateNode.containerInfo===a.containerInfo&&i.stateNode.implementation===a.implementation){n(r,i.sibling),(i=o(i,a.children||[])).return=r,r=i;break e}n(r,i);break}t(r,i),i=i.sibling}(i=Rs(a,r.mode,l)).return=r,r=i}return c(r);case T:return e(r,i,(A=a._init)(a._payload),l)}if(te(a))return g(r,i,a,l);if(F(a))return h(r,i,a,l);Hi(r,a)}return"string"==typeof a&&""!==a||"number"==typeof a?(a=""+a,null!==i&&6===i.tag?(n(r,i.sibling),(i=o(i,a)).return=r,r=i):(n(r,i),(i=Ps(a,r.mode,l)).return=r,r=i),c(r)):n(r,i)}}var Ki=Ji(!0),Xi=Ji(!1),$i={},ea=_o($i),ta=_o($i),na=_o($i);function ra(e){if(e===$i)throw Error(i(174));return e}function oa(e,t){switch(Bo(na,t),Bo(ta,e),Bo(ea,$i),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:le(null,"");break;default:t=le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ko(ea),Bo(ea,t)}function ia(){ko(ea),ko(ta),ko(na)}function aa(e){ra(na.current);var t=ra(ea.current),n=le(t,e.type);t!==n&&(Bo(ta,e),Bo(ea,n))}function ca(e){ta.current===e&&(ko(ea),ko(ta))}var la=_o(0);function sa(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Aa=[];function ua(){for(var e=0;e<Aa.length;e++)Aa[e]._workInProgressVersionPrimary=null;Aa.length=0}var da=C.ReactCurrentDispatcher,pa=C.ReactCurrentBatchConfig,ya=0,ga=null,ha=null,fa=null,va=!1,ma=!1,Ca=0,ba=0;function xa(){throw Error(i(321))}function wa(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!cr(e[n],t[n]))return!1;return!0}function Ea(e,t,n,r,o,a){if(ya=a,ga=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,da.current=null===e||null===e.memoizedState?cc:lc,e=n(r,o),ma){a=0;do{if(ma=!1,Ca=0,25<=a)throw Error(i(301));a+=1,fa=ha=null,t.updateQueue=null,da.current=sc,e=n(r,o)}while(ma)}if(da.current=ac,t=null!==ha&&null!==ha.next,ya=0,fa=ha=ga=null,va=!1,t)throw Error(i(300));return e}function _a(){var e=0!==Ca;return Ca=0,e}function ka(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===fa?ga.memoizedState=fa=e:fa=fa.next=e,fa}function Ba(){if(null===ha){var e=ga.alternate;e=null!==e?e.memoizedState:null}else e=ha.next;var t=null===fa?ga.memoizedState:fa.next;if(null!==t)fa=t,ha=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ha=e).memoizedState,baseState:ha.baseState,baseQueue:ha.baseQueue,queue:ha.queue,next:null},null===fa?ga.memoizedState=fa=e:fa=fa.next=e}return fa}function Ia(e,t){return"function"==typeof t?t(e):t}function Sa(e){var t=Ba(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ha,o=r.baseQueue,a=n.pending;if(null!==a){if(null!==o){var c=o.next;o.next=a.next,a.next=c}r.baseQueue=o=a,n.pending=null}if(null!==o){a=o.next,r=r.baseState;var l=c=null,s=null,A=a;do{var u=A.lane;if((ya&u)===u)null!==s&&(s=s.next={lane:0,action:A.action,hasEagerState:A.hasEagerState,eagerState:A.eagerState,next:null}),r=A.hasEagerState?A.eagerState:e(r,A.action);else{var d={lane:u,action:A.action,hasEagerState:A.hasEagerState,eagerState:A.eagerState,next:null};null===s?(l=s=d,c=r):s=s.next=d,ga.lanes|=u,Nl|=u}A=A.next}while(null!==A&&A!==a);null===s?c=r:s.next=l,cr(r,t.memoizedState)||(Cc=!0),t.memoizedState=r,t.baseState=c,t.baseQueue=s,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{a=o.lane,ga.lanes|=a,Nl|=a,o=o.next}while(o!==e)}else null===o&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Da(e){var t=Ba(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var c=o=o.next;do{a=e(a,c.action),c=c.next}while(c!==o);cr(a,t.memoizedState)||(Cc=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function za(){}function Ta(e,t){var n=ga,r=Ba(),o=t(),a=!cr(r.memoizedState,o);if(a&&(r.memoizedState=o,Cc=!0),r=r.queue,Va(Fa.bind(null,n,r,e),[e]),r.getSnapshot!==t||a||null!==fa&&1&fa.memoizedState.tag){if(n.flags|=2048,Ra(9,Ma.bind(null,n,r,o,t),void 0,null),null===Dl)throw Error(i(349));0!=(30&ya)||Qa(n,t,o)}return o}function Qa(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=ga.updateQueue)?(t={lastEffect:null,stores:null},ga.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ma(e,t,n,r){t.value=n,t.getSnapshot=r,Oa(t)&&Na(e)}function Fa(e,t,n){return n((function(){Oa(t)&&Na(e)}))}function Oa(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!cr(e,n)}catch(e){return!0}}function Na(e){var t=Di(e,1);null!==t&&rs(t,e,1,-1)}function Pa(e){var t=ka();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ia,lastRenderedState:e},t.queue=e,e=e.dispatch=nc.bind(null,ga,e),[t.memoizedState,e]}function Ra(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=ga.updateQueue)?(t={lastEffect:null,stores:null},ga.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ja(){return Ba().memoizedState}function La(e,t,n,r){var o=ka();ga.flags|=e,o.memoizedState=Ra(1|t,n,void 0,void 0===r?null:r)}function qa(e,t,n,r){var o=Ba();r=void 0===r?null:r;var i=void 0;if(null!==ha){var a=ha.memoizedState;if(i=a.destroy,null!==r&&wa(r,a.deps))return void(o.memoizedState=Ra(t,n,i,r))}ga.flags|=e,o.memoizedState=Ra(1|t,n,i,r)}function Ua(e,t){return La(8390656,8,e,t)}function Va(e,t){return qa(2048,8,e,t)}function Wa(e,t){return qa(4,2,e,t)}function Ga(e,t){return qa(4,4,e,t)}function Ya(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ha(e,t,n){return n=null!=n?n.concat([e]):null,qa(4,4,Ya.bind(null,t,e),n)}function Za(){}function Ja(e,t){var n=Ba();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&wa(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ka(e,t){var n=Ba();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&wa(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Xa(e,t,n){return 0==(21&ya)?(e.baseState&&(e.baseState=!1,Cc=!0),e.memoizedState=n):(cr(n,t)||(n=gt(),ga.lanes|=n,Nl|=n,e.baseState=!0),t)}function $a(e,t){var n=mt;mt=0!==n&&4>n?n:4,e(!0);var r=pa.transition;pa.transition={};try{e(!1),t()}finally{mt=n,pa.transition=r}}function ec(){return Ba().memoizedState}function tc(e,t,n){var r=ns(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rc(e)?oc(t,n):null!==(n=Si(e,t,n,r))&&(rs(n,e,r,ts()),ic(n,t,r))}function nc(e,t,n){var r=ns(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rc(e))oc(t,o);else{var i=e.alternate;if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var a=t.lastRenderedState,c=i(a,n);if(o.hasEagerState=!0,o.eagerState=c,cr(c,a)){var l=t.interleaved;return null===l?(o.next=o,Ii(t)):(o.next=l.next,l.next=o),void(t.interleaved=o)}}catch(e){}null!==(n=Si(e,t,o,r))&&(rs(n,e,r,o=ts()),ic(n,t,r))}}function rc(e){var t=e.alternate;return e===ga||null!==t&&t===ga}function oc(e,t){ma=va=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ic(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,vt(e,n)}}var ac={readContext:ki,useCallback:xa,useContext:xa,useEffect:xa,useImperativeHandle:xa,useInsertionEffect:xa,useLayoutEffect:xa,useMemo:xa,useReducer:xa,useRef:xa,useState:xa,useDebugValue:xa,useDeferredValue:xa,useTransition:xa,useMutableSource:xa,useSyncExternalStore:xa,useId:xa,unstable_isNewReconciler:!1},cc={readContext:ki,useCallback:function(e,t){return ka().memoizedState=[e,void 0===t?null:t],e},useContext:ki,useEffect:Ua,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,La(4194308,4,Ya.bind(null,t,e),n)},useLayoutEffect:function(e,t){return La(4194308,4,e,t)},useInsertionEffect:function(e,t){return La(4,2,e,t)},useMemo:function(e,t){var n=ka();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=ka();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tc.bind(null,ga,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},ka().memoizedState=e},useState:Pa,useDebugValue:Za,useDeferredValue:function(e){return ka().memoizedState=e},useTransition:function(){var e=Pa(!1),t=e[0];return e=$a.bind(null,e[1]),ka().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ga,o=ka();if(ii){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===Dl)throw Error(i(349));0!=(30&ya)||Qa(r,t,n)}o.memoizedState=n;var a={value:n,getSnapshot:t};return o.queue=a,Ua(Fa.bind(null,r,a,e),[e]),r.flags|=2048,Ra(9,Ma.bind(null,r,a,n,t),void 0,null),n},useId:function(){var e=ka(),t=Dl.identifierPrefix;if(ii){var n=Xo;t=":"+t+"R"+(n=(Ko&~(1<<32-at(Ko)-1)).toString(32)+n),0<(n=Ca++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=ba++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},lc={readContext:ki,useCallback:Ja,useContext:ki,useEffect:Va,useImperativeHandle:Ha,useInsertionEffect:Wa,useLayoutEffect:Ga,useMemo:Ka,useReducer:Sa,useRef:ja,useState:function(){return Sa(Ia)},useDebugValue:Za,useDeferredValue:function(e){return Xa(Ba(),ha.memoizedState,e)},useTransition:function(){return[Sa(Ia)[0],Ba().memoizedState]},useMutableSource:za,useSyncExternalStore:Ta,useId:ec,unstable_isNewReconciler:!1},sc={readContext:ki,useCallback:Ja,useContext:ki,useEffect:Va,useImperativeHandle:Ha,useInsertionEffect:Wa,useLayoutEffect:Ga,useMemo:Ka,useReducer:Da,useRef:ja,useState:function(){return Da(Ia)},useDebugValue:Za,useDeferredValue:function(e){var t=Ba();return null===ha?t.memoizedState=e:Xa(t,ha.memoizedState,e)},useTransition:function(){return[Da(Ia)[0],Ba().memoizedState]},useMutableSource:za,useSyncExternalStore:Ta,useId:ec,unstable_isNewReconciler:!1};function Ac(e,t){try{var n="",r=t;do{n+=L(r),r=r.return}while(r);var o=n}catch(e){o="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:o,digest:null}}function uc(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dc(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var pc="function"==typeof WeakMap?WeakMap:Map;function yc(e,t,n){(n=Mi(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Wl||(Wl=!0,Gl=r),dc(0,t)},n}function gc(e,t,n){(n=Mi(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){dc(0,t)}}var i=e.stateNode;return null!==i&&"function"==typeof i.componentDidCatch&&(n.callback=function(){dc(0,t),"function"!=typeof r&&(null===Yl?Yl=new Set([this]):Yl.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function hc(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pc;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=ks.bind(null,e,t,n),t.then(e,e))}function fc(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function vc(e,t,n,r,o){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Mi(-1,1)).tag=2,Fi(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var mc=C.ReactCurrentOwner,Cc=!1;function bc(e,t,n,r){t.child=null===e?Xi(t,null,n,r):Ki(t,e.child,n,r)}function xc(e,t,n,r,o){n=n.render;var i=t.ref;return _i(t,o),r=Ea(e,t,n,r,i,o),n=_a(),null===e||Cc?(ii&&n&&ti(t),t.flags|=1,bc(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Wc(e,t,o))}function wc(e,t,n,r,o){if(null===e){var i=n.type;return"function"!=typeof i||Qs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Fs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Ec(e,t,i,r,o))}if(i=e.child,0==(e.lanes&o)){var a=i.memoizedProps;if((n=null!==(n=n.compare)?n:lr)(a,r)&&e.ref===t.ref)return Wc(e,t,o)}return t.flags|=1,(e=Ms(i,r)).ref=t.ref,e.return=t,t.child=e}function Ec(e,t,n,r,o){if(null!==e){var i=e.memoizedProps;if(lr(i,r)&&e.ref===t.ref){if(Cc=!1,t.pendingProps=r=i,0==(e.lanes&o))return t.lanes=e.lanes,Wc(e,t,o);0!=(131072&e.flags)&&(Cc=!0)}}return Bc(e,t,n,r,o)}function _c(e,t,n){var r=t.pendingProps,o=r.children,i=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Bo(Ml,Ql),Ql|=n;else{if(0==(1073741824&n))return e=null!==i?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Bo(Ml,Ql),Ql|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==i?i.baseLanes:n,Bo(Ml,Ql),Ql|=r}else null!==i?(r=i.baseLanes|n,t.memoizedState=null):r=n,Bo(Ml,Ql),Ql|=r;return bc(e,t,o,n),t.child}function kc(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Bc(e,t,n,r,o){var i=Qo(n)?zo:So.current;return i=To(t,i),_i(t,o),n=Ea(e,t,n,r,i,o),r=_a(),null===e||Cc?(ii&&r&&ti(t),t.flags|=1,bc(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Wc(e,t,o))}function Ic(e,t,n,r,o){if(Qo(n)){var i=!0;No(t)}else i=!1;if(_i(t,o),null===t.stateNode)Vc(e,t),Vi(t,n,r),Gi(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,c=t.memoizedProps;a.props=c;var l=a.context,s=n.contextType;s="object"==typeof s&&null!==s?ki(s):To(t,s=Qo(n)?zo:So.current);var A=n.getDerivedStateFromProps,u="function"==typeof A||"function"==typeof a.getSnapshotBeforeUpdate;u||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(c!==r||l!==s)&&Wi(t,a,r,s),zi=!1;var d=t.memoizedState;a.state=d,Pi(t,r,a,o),l=t.memoizedState,c!==r||d!==l||Do.current||zi?("function"==typeof A&&(Li(t,n,A,r),l=t.memoizedState),(c=zi||Ui(t,n,c,r,d,l,s))?(u||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.flags|=4194308)):("function"==typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),a.props=r,a.state=l,a.context=s,r=c):("function"==typeof a.componentDidMount&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,Qi(e,t),c=t.memoizedProps,s=t.type===t.elementType?c:fi(t.type,c),a.props=s,u=t.pendingProps,d=a.context,l="object"==typeof(l=n.contextType)&&null!==l?ki(l):To(t,l=Qo(n)?zo:So.current);var p=n.getDerivedStateFromProps;(A="function"==typeof p||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(c!==u||d!==l)&&Wi(t,a,r,l),zi=!1,d=t.memoizedState,a.state=d,Pi(t,r,a,o);var y=t.memoizedState;c!==u||d!==y||Do.current||zi?("function"==typeof p&&(Li(t,n,p,r),y=t.memoizedState),(s=zi||Ui(t,n,s,r,d,y,l)||!1)?(A||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,y,l),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,y,l)),"function"==typeof a.componentDidUpdate&&(t.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof a.componentDidUpdate||c===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||c===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=y),a.props=r,a.state=y,a.context=l,r=s):("function"!=typeof a.componentDidUpdate||c===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||c===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return Sc(e,t,n,r,i,o)}function Sc(e,t,n,r,o,i){kc(e,t);var a=0!=(128&t.flags);if(!r&&!a)return o&&Po(t,n,!1),Wc(e,t,i);r=t.stateNode,mc.current=t;var c=a&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&a?(t.child=Ki(t,e.child,null,i),t.child=Ki(t,null,c,i)):bc(e,t,c,i),t.memoizedState=r.state,o&&Po(t,n,!0),t.child}function Dc(e){var t=e.stateNode;t.pendingContext?Fo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Fo(0,t.context,!1),oa(e,t.containerInfo)}function zc(e,t,n,r,o){return yi(),gi(o),t.flags|=256,bc(e,t,n,r),t.child}var Tc,Qc,Mc,Fc,Oc={dehydrated:null,treeContext:null,retryLane:0};function Nc(e){return{baseLanes:e,cachePool:null,transitions:null}}function Pc(e,t,n){var r,o=t.pendingProps,a=la.current,c=!1,l=0!=(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&0!=(2&a)),r?(c=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(a|=1),Bo(la,1&a),null===e)return Ai(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(l=o.children,e=o.fallback,c?(o=t.mode,c=t.child,l={mode:"hidden",children:l},0==(1&o)&&null!==c?(c.childLanes=0,c.pendingProps=l):c=Ns(l,o,0,null),e=Os(e,o,n,null),c.return=t,e.return=t,c.sibling=e,t.child=c,t.child.memoizedState=Nc(n),t.memoizedState=Oc,e):Rc(t,l));if(null!==(a=e.memoizedState)&&null!==(r=a.dehydrated))return function(e,t,n,r,o,a,c){if(n)return 256&t.flags?(t.flags&=-257,jc(e,t,c,r=uc(Error(i(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(a=r.fallback,o=t.mode,r=Ns({mode:"visible",children:r.children},o,0,null),(a=Os(a,o,c,null)).flags|=2,r.return=t,a.return=t,r.sibling=a,t.child=r,0!=(1&t.mode)&&Ki(t,e.child,null,c),t.child.memoizedState=Nc(c),t.memoizedState=Oc,a);if(0==(1&t.mode))return jc(e,t,c,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var l=r.dgst;return r=l,jc(e,t,c,r=uc(a=Error(i(419)),r,void 0))}if(l=0!=(c&e.childLanes),Cc||l){if(null!==(r=Dl)){switch(c&-c){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=0!=(o&(r.suspendedLanes|c))?0:o)&&o!==a.retryLane&&(a.retryLane=o,Di(e,o),rs(r,e,o,-1))}return hs(),jc(e,t,c,r=uc(Error(i(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Is.bind(null,e),o._reactRetry=t,null):(e=a.treeContext,oi=so(o.nextSibling),ri=t,ii=!0,ai=null,null!==e&&(Ho[Zo++]=Ko,Ho[Zo++]=Xo,Ho[Zo++]=Jo,Ko=e.id,Xo=e.overflow,Jo=t),(t=Rc(t,r.children)).flags|=4096,t)}(e,t,l,o,r,a,n);if(c){c=o.fallback,l=t.mode,r=(a=e.child).sibling;var s={mode:"hidden",children:o.children};return 0==(1&l)&&t.child!==a?((o=t.child).childLanes=0,o.pendingProps=s,t.deletions=null):(o=Ms(a,s)).subtreeFlags=14680064&a.subtreeFlags,null!==r?c=Ms(r,c):(c=Os(c,l,n,null)).flags|=2,c.return=t,o.return=t,o.sibling=c,t.child=o,o=c,c=t.child,l=null===(l=e.child.memoizedState)?Nc(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},c.memoizedState=l,c.childLanes=e.childLanes&~n,t.memoizedState=Oc,o}return e=(c=e.child).sibling,o=Ms(c,{mode:"visible",children:o.children}),0==(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Rc(e,t){return(t=Ns({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function jc(e,t,n,r){return null!==r&&gi(r),Ki(t,e.child,null,n),(e=Rc(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Lc(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Ei(e.return,t,n)}function qc(e,t,n,r,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o)}function Uc(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(bc(e,t,r.children,n),0!=(2&(r=la.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Lc(e,n,t);else if(19===e.tag)Lc(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Bo(la,r),0==(1&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===sa(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),qc(t,!1,o,n,i);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===sa(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}qc(t,!0,n,null,i);break;case"together":qc(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Vc(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Wc(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Nl|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Ms(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ms(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Gc(e,t){if(!ii)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Yc(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Hc(e,t,n){var r=t.pendingProps;switch(ni(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Yc(t),null;case 1:case 17:return Qo(t.type)&&Mo(),Yc(t),null;case 3:return r=t.stateNode,ia(),ko(Do),ko(So),ua(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(di(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==ai&&(cs(ai),ai=null))),Qc(e,t),Yc(t),null;case 5:ca(t);var o=ra(na.current);if(n=t.type,null!==e&&null!=t.stateNode)Mc(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(i(166));return Yc(t),null}if(e=ra(ea.current),di(t)){r=t.stateNode,n=t.type;var a=t.memoizedProps;switch(r[po]=t,r[yo]=a,e=0!=(1&t.mode),n){case"dialog":Rr("cancel",r),Rr("close",r);break;case"iframe":case"object":case"embed":Rr("load",r);break;case"video":case"audio":for(o=0;o<Fr.length;o++)Rr(Fr[o],r);break;case"source":Rr("error",r);break;case"img":case"image":case"link":Rr("error",r),Rr("load",r);break;case"details":Rr("toggle",r);break;case"input":J(r,a),Rr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!a.multiple},Rr("invalid",r);break;case"textarea":oe(r,a),Rr("invalid",r)}for(var l in ve(n,a),o=null,a)if(a.hasOwnProperty(l)){var s=a[l];"children"===l?"string"==typeof s?r.textContent!==s&&(!0!==a.suppressHydrationWarning&&Xr(r.textContent,s,e),o=["children",s]):"number"==typeof s&&r.textContent!==""+s&&(!0!==a.suppressHydrationWarning&&Xr(r.textContent,s,e),o=["children",""+s]):c.hasOwnProperty(l)&&null!=s&&"onScroll"===l&&Rr("scroll",r)}switch(n){case"input":G(r),$(r,a,!0);break;case"textarea":G(r),ae(r);break;case"select":case"option":break;default:"function"==typeof a.onClick&&(r.onclick=$r)}r=o,t.updateQueue=r,null!==r&&(t.flags|=4)}else{l=9===o.nodeType?o:o.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=ce(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),"select"===n&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[po]=t,e[yo]=r,Tc(e,t,!1,!1),t.stateNode=e;e:{switch(l=me(n,r),n){case"dialog":Rr("cancel",e),Rr("close",e),o=r;break;case"iframe":case"object":case"embed":Rr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Fr.length;o++)Rr(Fr[o],e);o=r;break;case"source":Rr("error",e),o=r;break;case"img":case"image":case"link":Rr("error",e),Rr("load",e),o=r;break;case"details":Rr("toggle",e),o=r;break;case"input":J(e,r),o=Z(e,r),Rr("invalid",e);break;case"option":default:o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=N({},r,{value:void 0}),Rr("invalid",e);break;case"textarea":oe(e,r),o=re(e,r),Rr("invalid",e)}for(a in ve(n,o),s=o)if(s.hasOwnProperty(a)){var A=s[a];"style"===a?he(e,A):"dangerouslySetInnerHTML"===a?null!=(A=A?A.__html:void 0)&&ue(e,A):"children"===a?"string"==typeof A?("textarea"!==n||""!==A)&&de(e,A):"number"==typeof A&&de(e,""+A):"suppressContentEditableWarning"!==a&&"suppressHydrationWarning"!==a&&"autoFocus"!==a&&(c.hasOwnProperty(a)?null!=A&&"onScroll"===a&&Rr("scroll",e):null!=A&&m(e,a,A,l))}switch(n){case"input":G(e),$(e,r,!1);break;case"textarea":G(e),ae(e);break;case"option":null!=r.value&&e.setAttribute("value",""+V(r.value));break;case"select":e.multiple=!!r.multiple,null!=(a=r.value)?ne(e,!!r.multiple,a,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=$r)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Yc(t),null;case 6:if(e&&null!=t.stateNode)Fc(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));if(n=ra(na.current),ra(ea.current),di(t)){if(r=t.stateNode,n=t.memoizedProps,r[po]=t,(a=r.nodeValue!==n)&&null!==(e=ri))switch(e.tag){case 3:Xr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,0!=(1&e.mode))}a&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[po]=t,t.stateNode=r}return Yc(t),null;case 13:if(ko(la),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ii&&null!==oi&&0!=(1&t.mode)&&0==(128&t.flags))pi(),yi(),t.flags|=98560,a=!1;else if(a=di(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(i(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(i(317));a[po]=t}else yi(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Yc(t),a=!1}else null!==ai&&(cs(ai),ai=null),a=!0;if(!a)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!=(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&la.current)?0===Fl&&(Fl=3):hs())),null!==t.updateQueue&&(t.flags|=4),Yc(t),null);case 4:return ia(),Qc(e,t),null===e&&qr(t.stateNode.containerInfo),Yc(t),null;case 10:return wi(t.type._context),Yc(t),null;case 19:if(ko(la),null===(a=t.memoizedState))return Yc(t),null;if(r=0!=(128&t.flags),null===(l=a.rendering))if(r)Gc(a,!1);else{if(0!==Fl||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(l=sa(e))){for(t.flags|=128,Gc(a,!1),null!==(r=l.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(a=n).flags&=14680066,null===(l=a.alternate)?(a.childLanes=0,a.lanes=e,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=l.childLanes,a.lanes=l.lanes,a.child=l.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=l.memoizedProps,a.memoizedState=l.memoizedState,a.updateQueue=l.updateQueue,a.type=l.type,e=l.dependencies,a.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Bo(la,1&la.current|2),t.child}e=e.sibling}null!==a.tail&&Ke()>Ul&&(t.flags|=128,r=!0,Gc(a,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=sa(l))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Gc(a,!0),null===a.tail&&"hidden"===a.tailMode&&!l.alternate&&!ii)return Yc(t),null}else 2*Ke()-a.renderingStartTime>Ul&&1073741824!==n&&(t.flags|=128,r=!0,Gc(a,!1),t.lanes=4194304);a.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=a.last)?n.sibling=l:t.child=l,a.last=l)}return null!==a.tail?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Ke(),t.sibling=null,n=la.current,Bo(la,r?1&n|2:1&n),t):(Yc(t),null);case 22:case 23:return ds(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&Ql)&&(Yc(t),6&t.subtreeFlags&&(t.flags|=8192)):Yc(t),null;case 24:case 25:return null}throw Error(i(156,t.tag))}function Zc(e,t){switch(ni(t),t.tag){case 1:return Qo(t.type)&&Mo(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return ia(),ko(Do),ko(So),ua(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return ca(t),null;case 13:if(ko(la),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));yi()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return ko(la),null;case 4:return ia(),null;case 10:return wi(t.type._context),null;case 22:case 23:return ds(),null;default:return null}}Tc=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Qc=function(){},Mc=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,ra(ea.current);var i,a=null;switch(n){case"input":o=Z(e,o),r=Z(e,r),a=[];break;case"select":o=N({},o,{value:void 0}),r=N({},r,{value:void 0}),a=[];break;case"textarea":o=re(e,o),r=re(e,r),a=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=$r)}for(A in ve(n,r),n=null,o)if(!r.hasOwnProperty(A)&&o.hasOwnProperty(A)&&null!=o[A])if("style"===A){var l=o[A];for(i in l)l.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==A&&"children"!==A&&"suppressContentEditableWarning"!==A&&"suppressHydrationWarning"!==A&&"autoFocus"!==A&&(c.hasOwnProperty(A)?a||(a=[]):(a=a||[]).push(A,null));for(A in r){var s=r[A];if(l=null!=o?o[A]:void 0,r.hasOwnProperty(A)&&s!==l&&(null!=s||null!=l))if("style"===A)if(l){for(i in l)!l.hasOwnProperty(i)||s&&s.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in s)s.hasOwnProperty(i)&&l[i]!==s[i]&&(n||(n={}),n[i]=s[i])}else n||(a||(a=[]),a.push(A,n)),n=s;else"dangerouslySetInnerHTML"===A?(s=s?s.__html:void 0,l=l?l.__html:void 0,null!=s&&l!==s&&(a=a||[]).push(A,s)):"children"===A?"string"!=typeof s&&"number"!=typeof s||(a=a||[]).push(A,""+s):"suppressContentEditableWarning"!==A&&"suppressHydrationWarning"!==A&&(c.hasOwnProperty(A)?(null!=s&&"onScroll"===A&&Rr("scroll",e),a||l===s||(a=[])):(a=a||[]).push(A,s))}n&&(a=a||[]).push("style",n);var A=a;(t.updateQueue=A)&&(t.flags|=4)}},Fc=function(e,t,n,r){n!==r&&(t.flags|=4)};var Jc=!1,Kc=!1,Xc="function"==typeof WeakSet?WeakSet:Set,$c=null;function el(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(n){_s(e,t,n)}else n.current=null}function tl(e,t,n){try{n()}catch(n){_s(e,t,n)}}var nl=!1;function rl(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,void 0!==i&&tl(t,n,i)}o=o.next}while(o!==r)}}function ol(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function il(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function al(e){var t=e.alternate;null!==t&&(e.alternate=null,al(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(t=e.stateNode)&&(delete t[po],delete t[yo],delete t[ho],delete t[fo],delete t[vo]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function cl(e){return 5===e.tag||3===e.tag||4===e.tag}function ll(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||cl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function sl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=$r));else if(4!==r&&null!==(e=e.child))for(sl(e,t,n),e=e.sibling;null!==e;)sl(e,t,n),e=e.sibling}function Al(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(Al(e,t,n),e=e.sibling;null!==e;)Al(e,t,n),e=e.sibling}var ul=null,dl=!1;function pl(e,t,n){for(n=n.child;null!==n;)yl(e,t,n),n=n.sibling}function yl(e,t,n){if(it&&"function"==typeof it.onCommitFiberUnmount)try{it.onCommitFiberUnmount(ot,n)}catch(e){}switch(n.tag){case 5:Kc||el(n,t);case 6:var r=ul,o=dl;ul=null,pl(e,t,n),dl=o,null!==(ul=r)&&(dl?(e=ul,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):ul.removeChild(n.stateNode));break;case 18:null!==ul&&(dl?(e=ul,n=n.stateNode,8===e.nodeType?lo(e.parentNode,n):1===e.nodeType&&lo(e,n),qt(e)):lo(ul,n.stateNode));break;case 4:r=ul,o=dl,ul=n.stateNode.containerInfo,dl=!0,pl(e,t,n),ul=r,dl=o;break;case 0:case 11:case 14:case 15:if(!Kc&&null!==(r=n.updateQueue)&&null!==(r=r.lastEffect)){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,void 0!==a&&(0!=(2&i)||0!=(4&i))&&tl(n,t,a),o=o.next}while(o!==r)}pl(e,t,n);break;case 1:if(!Kc&&(el(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){_s(n,t,e)}pl(e,t,n);break;case 21:pl(e,t,n);break;case 22:1&n.mode?(Kc=(r=Kc)||null!==n.memoizedState,pl(e,t,n),Kc=r):pl(e,t,n);break;default:pl(e,t,n)}}function gl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Xc),t.forEach((function(t){var r=Ss.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function hl(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r];try{var a=e,c=t,l=c;e:for(;null!==l;){switch(l.tag){case 5:ul=l.stateNode,dl=!1;break e;case 3:case 4:ul=l.stateNode.containerInfo,dl=!0;break e}l=l.return}if(null===ul)throw Error(i(160));yl(a,c,o),ul=null,dl=!1;var s=o.alternate;null!==s&&(s.return=null),o.return=null}catch(e){_s(o,t,e)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)fl(t,e),t=t.sibling}function fl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(hl(t,e),vl(e),4&r){try{rl(3,e,e.return),ol(3,e)}catch(t){_s(e,e.return,t)}try{rl(5,e,e.return)}catch(t){_s(e,e.return,t)}}break;case 1:hl(t,e),vl(e),512&r&&null!==n&&el(n,n.return);break;case 5:if(hl(t,e),vl(e),512&r&&null!==n&&el(n,n.return),32&e.flags){var o=e.stateNode;try{de(o,"")}catch(t){_s(e,e.return,t)}}if(4&r&&null!=(o=e.stateNode)){var a=e.memoizedProps,c=null!==n?n.memoizedProps:a,l=e.type,s=e.updateQueue;if(e.updateQueue=null,null!==s)try{"input"===l&&"radio"===a.type&&null!=a.name&&K(o,a),me(l,c);var A=me(l,a);for(c=0;c<s.length;c+=2){var u=s[c],d=s[c+1];"style"===u?he(o,d):"dangerouslySetInnerHTML"===u?ue(o,d):"children"===u?de(o,d):m(o,u,d,A)}switch(l){case"input":X(o,a);break;case"textarea":ie(o,a);break;case"select":var p=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!a.multiple;var y=a.value;null!=y?ne(o,!!a.multiple,y,!1):p!==!!a.multiple&&(null!=a.defaultValue?ne(o,!!a.multiple,a.defaultValue,!0):ne(o,!!a.multiple,a.multiple?[]:"",!1))}o[yo]=a}catch(t){_s(e,e.return,t)}}break;case 6:if(hl(t,e),vl(e),4&r){if(null===e.stateNode)throw Error(i(162));o=e.stateNode,a=e.memoizedProps;try{o.nodeValue=a}catch(t){_s(e,e.return,t)}}break;case 3:if(hl(t,e),vl(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{qt(t.containerInfo)}catch(t){_s(e,e.return,t)}break;case 4:default:hl(t,e),vl(e);break;case 13:hl(t,e),vl(e),8192&(o=e.child).flags&&(a=null!==o.memoizedState,o.stateNode.isHidden=a,!a||null!==o.alternate&&null!==o.alternate.memoizedState||(ql=Ke())),4&r&&gl(e);break;case 22:if(u=null!==n&&null!==n.memoizedState,1&e.mode?(Kc=(A=Kc)||u,hl(t,e),Kc=A):hl(t,e),vl(e),8192&r){if(A=null!==e.memoizedState,(e.stateNode.isHidden=A)&&!u&&0!=(1&e.mode))for($c=e,u=e.child;null!==u;){for(d=$c=u;null!==$c;){switch(y=(p=$c).child,p.tag){case 0:case 11:case 14:case 15:rl(4,p,p.return);break;case 1:el(p,p.return);var g=p.stateNode;if("function"==typeof g.componentWillUnmount){r=p,n=p.return;try{t=r,g.props=t.memoizedProps,g.state=t.memoizedState,g.componentWillUnmount()}catch(e){_s(r,n,e)}}break;case 5:el(p,p.return);break;case 22:if(null!==p.memoizedState){xl(d);continue}}null!==y?(y.return=p,$c=y):xl(d)}u=u.sibling}e:for(u=null,d=e;;){if(5===d.tag){if(null===u){u=d;try{o=d.stateNode,A?"function"==typeof(a=o.style).setProperty?a.setProperty("display","none","important"):a.display="none":(l=d.stateNode,c=null!=(s=d.memoizedProps.style)&&s.hasOwnProperty("display")?s.display:null,l.style.display=ge("display",c))}catch(t){_s(e,e.return,t)}}}else if(6===d.tag){if(null===u)try{d.stateNode.nodeValue=A?"":d.memoizedProps}catch(t){_s(e,e.return,t)}}else if((22!==d.tag&&23!==d.tag||null===d.memoizedState||d===e)&&null!==d.child){d.child.return=d,d=d.child;continue}if(d===e)break e;for(;null===d.sibling;){if(null===d.return||d.return===e)break e;u===d&&(u=null),d=d.return}u===d&&(u=null),d.sibling.return=d.return,d=d.sibling}}break;case 19:hl(t,e),vl(e),4&r&&gl(e);case 21:}}function vl(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(cl(n)){var r=n;break e}n=n.return}throw Error(i(160))}switch(r.tag){case 5:var o=r.stateNode;32&r.flags&&(de(o,""),r.flags&=-33),Al(e,ll(e),o);break;case 3:case 4:var a=r.stateNode.containerInfo;sl(e,ll(e),a);break;default:throw Error(i(161))}}catch(t){_s(e,e.return,t)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function ml(e,t,n){$c=e,Cl(e,t,n)}function Cl(e,t,n){for(var r=0!=(1&e.mode);null!==$c;){var o=$c,i=o.child;if(22===o.tag&&r){var a=null!==o.memoizedState||Jc;if(!a){var c=o.alternate,l=null!==c&&null!==c.memoizedState||Kc;c=Jc;var s=Kc;if(Jc=a,(Kc=l)&&!s)for($c=o;null!==$c;)l=(a=$c).child,22===a.tag&&null!==a.memoizedState?wl(o):null!==l?(l.return=a,$c=l):wl(o);for(;null!==i;)$c=i,Cl(i,t,n),i=i.sibling;$c=o,Jc=c,Kc=s}bl(e)}else 0!=(8772&o.subtreeFlags)&&null!==i?(i.return=o,$c=i):bl(e)}}function bl(e){for(;null!==$c;){var t=$c;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Kc||ol(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Kc)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:fi(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var a=t.updateQueue;null!==a&&Ri(t,a,r);break;case 3:var c=t.updateQueue;if(null!==c){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ri(t,c,n)}break;case 5:var l=t.stateNode;if(null===n&&4&t.flags){n=l;var s=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":s.autoFocus&&n.focus();break;case"img":s.src&&(n.src=s.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var A=t.alternate;if(null!==A){var u=A.memoizedState;if(null!==u){var d=u.dehydrated;null!==d&&qt(d)}}}break;default:throw Error(i(163))}Kc||512&t.flags&&il(t)}catch(e){_s(t,t.return,e)}}if(t===e){$c=null;break}if(null!==(n=t.sibling)){n.return=t.return,$c=n;break}$c=t.return}}function xl(e){for(;null!==$c;){var t=$c;if(t===e){$c=null;break}var n=t.sibling;if(null!==n){n.return=t.return,$c=n;break}$c=t.return}}function wl(e){for(;null!==$c;){var t=$c;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{ol(4,t)}catch(e){_s(t,n,e)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(e){_s(t,o,e)}}var i=t.return;try{il(t)}catch(e){_s(t,i,e)}break;case 5:var a=t.return;try{il(t)}catch(e){_s(t,a,e)}}}catch(e){_s(t,t.return,e)}if(t===e){$c=null;break}var c=t.sibling;if(null!==c){c.return=t.return,$c=c;break}$c=t.return}}var El,_l=Math.ceil,kl=C.ReactCurrentDispatcher,Bl=C.ReactCurrentOwner,Il=C.ReactCurrentBatchConfig,Sl=0,Dl=null,zl=null,Tl=0,Ql=0,Ml=_o(0),Fl=0,Ol=null,Nl=0,Pl=0,Rl=0,jl=null,Ll=null,ql=0,Ul=1/0,Vl=null,Wl=!1,Gl=null,Yl=null,Hl=!1,Zl=null,Jl=0,Kl=0,Xl=null,$l=-1,es=0;function ts(){return 0!=(6&Sl)?Ke():-1!==$l?$l:$l=Ke()}function ns(e){return 0==(1&e.mode)?1:0!=(2&Sl)&&0!==Tl?Tl&-Tl:null!==hi.transition?(0===es&&(es=gt()),es):0!==(e=mt)?e:e=void 0===(e=window.event)?16:Jt(e.type)}function rs(e,t,n,r){if(50<Kl)throw Kl=0,Xl=null,Error(i(185));ft(e,n,r),0!=(2&Sl)&&e===Dl||(e===Dl&&(0==(2&Sl)&&(Pl|=n),4===Fl&&ls(e,Tl)),os(e,r),1===n&&0===Sl&&0==(1&t.mode)&&(Ul=Ke()+500,jo&&Uo()))}function os(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,i=e.pendingLanes;0<i;){var a=31-at(i),c=1<<a,l=o[a];-1===l?0!=(c&n)&&0==(c&r)||(o[a]=pt(c,t)):l<=t&&(e.expiredLanes|=c),i&=~c}}(e,t);var r=dt(e,e===Dl?Tl:0);if(0===r)null!==n&&He(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&He(n),1===t)0===e.tag?function(e){jo=!0,qo(e)}(ss.bind(null,e)):qo(ss.bind(null,e)),ao((function(){0==(6&Sl)&&Uo()})),n=null;else{switch(Ct(r)){case 1:n=$e;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Ds(n,is.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function is(e,t){if($l=-1,es=0,0!=(6&Sl))throw Error(i(327));var n=e.callbackNode;if(ws()&&e.callbackNode!==n)return null;var r=dt(e,e===Dl?Tl:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=fs(e,r);else{t=r;var o=Sl;Sl|=2;var a=gs();for(Dl===e&&Tl===t||(Vl=null,Ul=Ke()+500,ps(e,t));;)try{ms();break}catch(t){ys(e,t)}xi(),kl.current=a,Sl=o,null!==zl?t=0:(Dl=null,Tl=0,t=Fl)}if(0!==t){if(2===t&&0!==(o=yt(e))&&(r=o,t=as(e,o)),1===t)throw n=Ol,ps(e,0),ls(e,r),os(e,Ke()),n;if(6===t)ls(e,r);else{if(o=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var o=n[r],i=o.getSnapshot;o=o.value;try{if(!cr(i(),o))return!1}catch(e){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)&&(2===(t=fs(e,r))&&0!==(a=yt(e))&&(r=a,t=as(e,a)),1===t))throw n=Ol,ps(e,0),ls(e,r),os(e,Ke()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(i(345));case 2:case 5:xs(e,Ll,Vl);break;case 3:if(ls(e,r),(130023424&r)===r&&10<(t=ql+500-Ke())){if(0!==dt(e,0))break;if(((o=e.suspendedLanes)&r)!==r){ts(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=ro(xs.bind(null,e,Ll,Vl),t);break}xs(e,Ll,Vl);break;case 4:if(ls(e,r),(4194240&r)===r)break;for(t=e.eventTimes,o=-1;0<r;){var c=31-at(r);a=1<<c,(c=t[c])>o&&(o=c),r&=~a}if(r=o,10<(r=(120>(r=Ke()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*_l(r/1960))-r)){e.timeoutHandle=ro(xs.bind(null,e,Ll,Vl),r);break}xs(e,Ll,Vl);break;default:throw Error(i(329))}}}return os(e,Ke()),e.callbackNode===n?is.bind(null,e):null}function as(e,t){var n=jl;return e.current.memoizedState.isDehydrated&&(ps(e,t).flags|=256),2!==(e=fs(e,t))&&(t=Ll,Ll=n,null!==t&&cs(t)),e}function cs(e){null===Ll?Ll=e:Ll.push.apply(Ll,e)}function ls(e,t){for(t&=~Rl,t&=~Pl,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-at(t),r=1<<n;e[n]=-1,t&=~r}}function ss(e){if(0!=(6&Sl))throw Error(i(327));ws();var t=dt(e,0);if(0==(1&t))return os(e,Ke()),null;var n=fs(e,t);if(0!==e.tag&&2===n){var r=yt(e);0!==r&&(t=r,n=as(e,r))}if(1===n)throw n=Ol,ps(e,0),ls(e,t),os(e,Ke()),n;if(6===n)throw Error(i(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,xs(e,Ll,Vl),os(e,Ke()),null}function As(e,t){var n=Sl;Sl|=1;try{return e(t)}finally{0===(Sl=n)&&(Ul=Ke()+500,jo&&Uo())}}function us(e){null!==Zl&&0===Zl.tag&&0==(6&Sl)&&ws();var t=Sl;Sl|=1;var n=Il.transition,r=mt;try{if(Il.transition=null,mt=1,e)return e()}finally{mt=r,Il.transition=n,0==(6&(Sl=t))&&Uo()}}function ds(){Ql=Ml.current,ko(Ml)}function ps(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,oo(n)),null!==zl)for(n=zl.return;null!==n;){var r=n;switch(ni(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Mo();break;case 3:ia(),ko(Do),ko(So),ua();break;case 5:ca(r);break;case 4:ia();break;case 13:case 19:ko(la);break;case 10:wi(r.type._context);break;case 22:case 23:ds()}n=n.return}if(Dl=e,zl=e=Ms(e.current,null),Tl=Ql=t,Fl=0,Ol=null,Rl=Pl=Nl=0,Ll=jl=null,null!==Bi){for(t=0;t<Bi.length;t++)if(null!==(r=(n=Bi[t]).interleaved)){n.interleaved=null;var o=r.next,i=n.pending;if(null!==i){var a=i.next;i.next=o,r.next=a}n.pending=r}Bi=null}return e}function ys(e,t){for(;;){var n=zl;try{if(xi(),da.current=ac,va){for(var r=ga.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}va=!1}if(ya=0,fa=ha=ga=null,ma=!1,Ca=0,Bl.current=null,null===n||null===n.return){Fl=1,Ol=t,zl=null;break}e:{var a=e,c=n.return,l=n,s=t;if(t=Tl,l.flags|=32768,null!==s&&"object"==typeof s&&"function"==typeof s.then){var A=s,u=l,d=u.tag;if(0==(1&u.mode)&&(0===d||11===d||15===d)){var p=u.alternate;p?(u.updateQueue=p.updateQueue,u.memoizedState=p.memoizedState,u.lanes=p.lanes):(u.updateQueue=null,u.memoizedState=null)}var y=fc(c);if(null!==y){y.flags&=-257,vc(y,c,l,0,t),1&y.mode&&hc(a,A,t),s=A;var g=(t=y).updateQueue;if(null===g){var h=new Set;h.add(s),t.updateQueue=h}else g.add(s);break e}if(0==(1&t)){hc(a,A,t),hs();break e}s=Error(i(426))}else if(ii&&1&l.mode){var f=fc(c);if(null!==f){0==(65536&f.flags)&&(f.flags|=256),vc(f,c,l,0,t),gi(Ac(s,l));break e}}a=s=Ac(s,l),4!==Fl&&(Fl=2),null===jl?jl=[a]:jl.push(a),a=c;do{switch(a.tag){case 3:a.flags|=65536,t&=-t,a.lanes|=t,Ni(a,yc(0,s,t));break e;case 1:l=s;var v=a.type,m=a.stateNode;if(0==(128&a.flags)&&("function"==typeof v.getDerivedStateFromError||null!==m&&"function"==typeof m.componentDidCatch&&(null===Yl||!Yl.has(m)))){a.flags|=65536,t&=-t,a.lanes|=t,Ni(a,gc(a,l,t));break e}}a=a.return}while(null!==a)}bs(n)}catch(e){t=e,zl===n&&null!==n&&(zl=n=n.return);continue}break}}function gs(){var e=kl.current;return kl.current=ac,null===e?ac:e}function hs(){0!==Fl&&3!==Fl&&2!==Fl||(Fl=4),null===Dl||0==(268435455&Nl)&&0==(268435455&Pl)||ls(Dl,Tl)}function fs(e,t){var n=Sl;Sl|=2;var r=gs();for(Dl===e&&Tl===t||(Vl=null,ps(e,t));;)try{vs();break}catch(t){ys(e,t)}if(xi(),Sl=n,kl.current=r,null!==zl)throw Error(i(261));return Dl=null,Tl=0,Fl}function vs(){for(;null!==zl;)Cs(zl)}function ms(){for(;null!==zl&&!Ze();)Cs(zl)}function Cs(e){var t=El(e.alternate,e,Ql);e.memoizedProps=e.pendingProps,null===t?bs(e):zl=t,Bl.current=null}function bs(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Hc(n,t,Ql)))return void(zl=n)}else{if(null!==(n=Zc(n,t)))return n.flags&=32767,void(zl=n);if(null===e)return Fl=6,void(zl=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(zl=t);zl=t=e}while(null!==t);0===Fl&&(Fl=5)}function xs(e,t,n){var r=mt,o=Il.transition;try{Il.transition=null,mt=1,function(e,t,n,r){do{ws()}while(null!==Zl);if(0!=(6&Sl))throw Error(i(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null,e.callbackPriority=0;var a=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-at(n),i=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~i}}(e,a),e===Dl&&(zl=Dl=null,Tl=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Hl||(Hl=!0,Ds(tt,(function(){return ws(),null}))),a=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||a){a=Il.transition,Il.transition=null;var c=mt;mt=1;var l=Sl;Sl|=4,Bl.current=null,function(e,t){if(eo=Vt,pr(e=dr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch(e){n=null;break e}var c=0,l=-1,s=-1,A=0,u=0,d=e,p=null;t:for(;;){for(var y;d!==n||0!==o&&3!==d.nodeType||(l=c+o),d!==a||0!==r&&3!==d.nodeType||(s=c+r),3===d.nodeType&&(c+=d.nodeValue.length),null!==(y=d.firstChild);)p=d,d=y;for(;;){if(d===e)break t;if(p===n&&++A===o&&(l=c),p===a&&++u===r&&(s=c),null!==(y=d.nextSibling))break;p=(d=p).parentNode}d=y}n=-1===l||-1===s?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Vt=!1,$c=t;null!==$c;)if(e=(t=$c).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,$c=e;else for(;null!==$c;){t=$c;try{var g=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==g){var h=g.memoizedProps,f=g.memoizedState,v=t.stateNode,m=v.getSnapshotBeforeUpdate(t.elementType===t.type?h:fi(t.type,h),f);v.__reactInternalSnapshotBeforeUpdate=m}break;case 3:var C=t.stateNode.containerInfo;1===C.nodeType?C.textContent="":9===C.nodeType&&C.documentElement&&C.removeChild(C.documentElement);break;default:throw Error(i(163))}}catch(e){_s(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,$c=e;break}$c=t.return}g=nl,nl=!1}(e,n),fl(n,e),yr(to),Vt=!!eo,to=eo=null,e.current=n,ml(n,e,o),Je(),Sl=l,mt=c,Il.transition=a}else e.current=n;if(Hl&&(Hl=!1,Zl=e,Jl=o),0===(a=e.pendingLanes)&&(Yl=null),function(e){if(it&&"function"==typeof it.onCommitFiberRoot)try{it.onCommitFiberRoot(ot,e,void 0,128==(128&e.current.flags))}catch(e){}}(n.stateNode),os(e,Ke()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)r((o=t[n]).value,{componentStack:o.stack,digest:o.digest});if(Wl)throw Wl=!1,e=Gl,Gl=null,e;0!=(1&Jl)&&0!==e.tag&&ws(),0!=(1&(a=e.pendingLanes))?e===Xl?Kl++:(Kl=0,Xl=e):Kl=0,Uo()}(e,t,n,r)}finally{Il.transition=o,mt=r}return null}function ws(){if(null!==Zl){var e=Ct(Jl),t=Il.transition,n=mt;try{if(Il.transition=null,mt=16>e?16:e,null===Zl)var r=!1;else{if(e=Zl,Zl=null,Jl=0,0!=(6&Sl))throw Error(i(331));var o=Sl;for(Sl|=4,$c=e.current;null!==$c;){var a=$c,c=a.child;if(0!=(16&$c.flags)){var l=a.deletions;if(null!==l){for(var s=0;s<l.length;s++){var A=l[s];for($c=A;null!==$c;){var u=$c;switch(u.tag){case 0:case 11:case 15:rl(8,u,a)}var d=u.child;if(null!==d)d.return=u,$c=d;else for(;null!==$c;){var p=(u=$c).sibling,y=u.return;if(al(u),u===A){$c=null;break}if(null!==p){p.return=y,$c=p;break}$c=y}}}var g=a.alternate;if(null!==g){var h=g.child;if(null!==h){g.child=null;do{var f=h.sibling;h.sibling=null,h=f}while(null!==h)}}$c=a}}if(0!=(2064&a.subtreeFlags)&&null!==c)c.return=a,$c=c;else e:for(;null!==$c;){if(0!=(2048&(a=$c).flags))switch(a.tag){case 0:case 11:case 15:rl(9,a,a.return)}var v=a.sibling;if(null!==v){v.return=a.return,$c=v;break e}$c=a.return}}var m=e.current;for($c=m;null!==$c;){var C=(c=$c).child;if(0!=(2064&c.subtreeFlags)&&null!==C)C.return=c,$c=C;else e:for(c=m;null!==$c;){if(0!=(2048&(l=$c).flags))try{switch(l.tag){case 0:case 11:case 15:ol(9,l)}}catch(e){_s(l,l.return,e)}if(l===c){$c=null;break e}var b=l.sibling;if(null!==b){b.return=l.return,$c=b;break e}$c=l.return}}if(Sl=o,Uo(),it&&"function"==typeof it.onPostCommitFiberRoot)try{it.onPostCommitFiberRoot(ot,e)}catch(e){}r=!0}return r}finally{mt=n,Il.transition=t}}return!1}function Es(e,t,n){e=Fi(e,t=yc(0,t=Ac(n,t),1),1),t=ts(),null!==e&&(ft(e,1,t),os(e,t))}function _s(e,t,n){if(3===e.tag)Es(e,e,n);else for(;null!==t;){if(3===t.tag){Es(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Yl||!Yl.has(r))){t=Fi(t,e=gc(t,e=Ac(n,e),1),1),e=ts(),null!==t&&(ft(t,1,e),os(t,e));break}}t=t.return}}function ks(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ts(),e.pingedLanes|=e.suspendedLanes&n,Dl===e&&(Tl&n)===n&&(4===Fl||3===Fl&&(130023424&Tl)===Tl&&500>Ke()-ql?ps(e,0):Rl|=n),os(e,t)}function Bs(e,t){0===t&&(0==(1&e.mode)?t=1:(t=At,0==(130023424&(At<<=1))&&(At=4194304)));var n=ts();null!==(e=Di(e,t))&&(ft(e,t,n),os(e,n))}function Is(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Bs(e,n)}function Ss(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(i(314))}null!==r&&r.delete(t),Bs(e,n)}function Ds(e,t){return Ye(e,t)}function zs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ts(e,t,n,r){return new zs(e,t,n,r)}function Qs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ms(e,t){var n=e.alternate;return null===n?((n=Ts(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Fs(e,t,n,r,o,a){var c=2;if(r=e,"function"==typeof e)Qs(e)&&(c=1);else if("string"==typeof e)c=5;else e:switch(e){case w:return Os(n.children,o,a,t);case E:c=8,o|=8;break;case _:return(e=Ts(12,n,t,2|o)).elementType=_,e.lanes=a,e;case S:return(e=Ts(13,n,t,o)).elementType=S,e.lanes=a,e;case D:return(e=Ts(19,n,t,o)).elementType=D,e.lanes=a,e;case Q:return Ns(n,o,a,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case k:c=10;break e;case B:c=9;break e;case I:c=11;break e;case z:c=14;break e;case T:c=16,r=null;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Ts(c,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function Os(e,t,n,r){return(e=Ts(7,e,r,t)).lanes=n,e}function Ns(e,t,n,r){return(e=Ts(22,e,r,t)).elementType=Q,e.lanes=n,e.stateNode={isHidden:!1},e}function Ps(e,t,n){return(e=Ts(6,e,null,t)).lanes=n,e}function Rs(e,t,n){return(t=Ts(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function js(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ht(0),this.expirationTimes=ht(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ht(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Ls(e,t,n,r,o,i,a,c,l){return e=new js(e,t,n,c,l),1===t?(t=1,!0===i&&(t|=8)):t=0,i=Ts(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ti(i),e}function qs(e){if(!e)return Io;e:{if(qe(e=e._reactInternals)!==e||1!==e.tag)throw Error(i(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Qo(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(i(171))}if(1===e.tag){var n=e.type;if(Qo(n))return Oo(e,n,t)}return t}function Us(e,t,n,r,o,i,a,c,l){return(e=Ls(n,r,!0,e,0,i,0,c,l)).context=qs(null),n=e.current,(i=Mi(r=ts(),o=ns(n))).callback=null!=t?t:null,Fi(n,i,o),e.current.lanes=o,ft(e,o,r),os(e,r),e}function Vs(e,t,n,r){var o=t.current,i=ts(),a=ns(o);return n=qs(n),null===t.context?t.context=n:t.pendingContext=n,(t=Mi(i,a)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Fi(o,t,a))&&(rs(e,o,a,i),Oi(e,o,a)),a}function Ws(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Gs(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Ys(e,t){Gs(e,t),(e=e.alternate)&&Gs(e,t)}El=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Do.current)Cc=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return Cc=!1,function(e,t,n){switch(t.tag){case 3:Dc(t),yi();break;case 5:aa(t);break;case 1:Qo(t.type)&&No(t);break;case 4:oa(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;Bo(vi,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Bo(la,1&la.current),t.flags|=128,null):0!=(n&t.child.childLanes)?Pc(e,t,n):(Bo(la,1&la.current),null!==(e=Wc(e,t,n))?e.sibling:null);Bo(la,1&la.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return Uc(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),Bo(la,la.current),r)break;return null;case 22:case 23:return t.lanes=0,_c(e,t,n)}return Wc(e,t,n)}(e,t,n);Cc=0!=(131072&e.flags)}else Cc=!1,ii&&0!=(1048576&t.flags)&&ei(t,Yo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Vc(e,t),e=t.pendingProps;var o=To(t,So.current);_i(t,n),o=Ea(null,t,r,e,o,n);var a=_a();return t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Qo(r)?(a=!0,No(t)):a=!1,t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,Ti(t),o.updater=qi,t.stateNode=o,o._reactInternals=t,Gi(t,r,e,n),t=Sc(null,t,r,!0,a,n)):(t.tag=0,ii&&a&&ti(t),bc(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Vc(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return Qs(e)?1:0;if(null!=e){if((e=e.$$typeof)===I)return 11;if(e===z)return 14}return 2}(r),e=fi(r,e),o){case 0:t=Bc(null,t,r,e,n);break e;case 1:t=Ic(null,t,r,e,n);break e;case 11:t=xc(null,t,r,e,n);break e;case 14:t=wc(null,t,r,fi(r.type,e),n);break e}throw Error(i(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,Bc(e,t,r,o=t.elementType===r?o:fi(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ic(e,t,r,o=t.elementType===r?o:fi(r,o),n);case 3:e:{if(Dc(t),null===e)throw Error(i(387));r=t.pendingProps,o=(a=t.memoizedState).element,Qi(e,t),Pi(t,r,null,n);var c=t.memoizedState;if(r=c.element,a.isDehydrated){if(a={element:r,isDehydrated:!1,cache:c.cache,pendingSuspenseBoundaries:c.pendingSuspenseBoundaries,transitions:c.transitions},t.updateQueue.baseState=a,t.memoizedState=a,256&t.flags){t=zc(e,t,r,n,o=Ac(Error(i(423)),t));break e}if(r!==o){t=zc(e,t,r,n,o=Ac(Error(i(424)),t));break e}for(oi=so(t.stateNode.containerInfo.firstChild),ri=t,ii=!0,ai=null,n=Xi(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(yi(),r===o){t=Wc(e,t,n);break e}bc(e,t,r,n)}t=t.child}return t;case 5:return aa(t),null===e&&Ai(t),r=t.type,o=t.pendingProps,a=null!==e?e.memoizedProps:null,c=o.children,no(r,o)?c=null:null!==a&&no(r,a)&&(t.flags|=32),kc(e,t),bc(e,t,c,n),t.child;case 6:return null===e&&Ai(t),null;case 13:return Pc(e,t,n);case 4:return oa(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Ki(t,null,r,n):bc(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,xc(e,t,r,o=t.elementType===r?o:fi(r,o),n);case 7:return bc(e,t,t.pendingProps,n),t.child;case 8:case 12:return bc(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,a=t.memoizedProps,c=o.value,Bo(vi,r._currentValue),r._currentValue=c,null!==a)if(cr(a.value,c)){if(a.children===o.children&&!Do.current){t=Wc(e,t,n);break e}}else for(null!==(a=t.child)&&(a.return=t);null!==a;){var l=a.dependencies;if(null!==l){c=a.child;for(var s=l.firstContext;null!==s;){if(s.context===r){if(1===a.tag){(s=Mi(-1,n&-n)).tag=2;var A=a.updateQueue;if(null!==A){var u=(A=A.shared).pending;null===u?s.next=s:(s.next=u.next,u.next=s),A.pending=s}}a.lanes|=n,null!==(s=a.alternate)&&(s.lanes|=n),Ei(a.return,n,t),l.lanes|=n;break}s=s.next}}else if(10===a.tag)c=a.type===t.type?null:a.child;else if(18===a.tag){if(null===(c=a.return))throw Error(i(341));c.lanes|=n,null!==(l=c.alternate)&&(l.lanes|=n),Ei(c,n,t),c=a.sibling}else c=a.child;if(null!==c)c.return=a;else for(c=a;null!==c;){if(c===t){c=null;break}if(null!==(a=c.sibling)){a.return=c.return,c=a;break}c=c.return}a=c}bc(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,_i(t,n),r=r(o=ki(o)),t.flags|=1,bc(e,t,r,n),t.child;case 14:return o=fi(r=t.type,t.pendingProps),wc(e,t,r,o=fi(r.type,o),n);case 15:return Ec(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:fi(r,o),Vc(e,t),t.tag=1,Qo(r)?(e=!0,No(t)):e=!1,_i(t,n),Vi(t,r,o),Gi(t,r,o,n),Sc(null,t,r,!0,e,n);case 19:return Uc(e,t,n);case 22:return _c(e,t,n)}throw Error(i(156,t.tag))};var Hs="function"==typeof reportError?reportError:function(e){console.error(e)};function Zs(e){this._internalRoot=e}function Js(e){this._internalRoot=e}function Ks(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Xs(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function $s(){}function eA(e,t,n,r,o){var i=n._reactRootContainer;if(i){var a=i;if("function"==typeof o){var c=o;o=function(){var e=Ws(a);c.call(e)}}Vs(t,a,e,o)}else a=function(e,t,n,r,o){if(o){if("function"==typeof r){var i=r;r=function(){var e=Ws(a);i.call(e)}}var a=Us(t,r,e,0,null,!1,0,"",$s);return e._reactRootContainer=a,e[go]=a.current,qr(8===e.nodeType?e.parentNode:e),us(),a}for(;o=e.lastChild;)e.removeChild(o);if("function"==typeof r){var c=r;r=function(){var e=Ws(l);c.call(e)}}var l=Ls(e,0,!1,null,0,!1,0,"",$s);return e._reactRootContainer=l,e[go]=l.current,qr(8===e.nodeType?e.parentNode:e),us((function(){Vs(t,l,n,r)})),l}(n,t,e,o,r);return Ws(a)}Js.prototype.render=Zs.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(i(409));Vs(e,t,null,null)},Js.prototype.unmount=Zs.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;us((function(){Vs(null,e,null,null)})),t[go]=null}},Js.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Qt.length&&0!==t&&t<Qt[n].priority;n++);Qt.splice(n,0,e),0===n&&Nt(e)}},bt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ut(t.pendingLanes);0!==n&&(vt(t,1|n),os(t,Ke()),0==(6&Sl)&&(Ul=Ke()+500,Uo()))}break;case 13:us((function(){var t=Di(e,1);if(null!==t){var n=ts();rs(t,e,1,n)}})),Ys(e,1)}},xt=function(e){if(13===e.tag){var t=Di(e,134217728);null!==t&&rs(t,e,134217728,ts()),Ys(e,134217728)}},wt=function(e){if(13===e.tag){var t=ns(e),n=Di(e,t);null!==n&&rs(n,e,t,ts()),Ys(e,t)}},Et=function(){return mt},_t=function(e,t){var n=mt;try{return mt=e,t()}finally{mt=n}},xe=function(e,t,n){switch(t){case"input":if(X(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=xo(r);if(!o)throw Error(i(90));Y(r),X(r,o)}}}break;case"textarea":ie(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Ie=As,Se=us;var tA={usingClientEntryPoint:!1,Events:[Co,bo,xo,ke,Be,As]},nA={findFiberByHostInstance:mo,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},rA={bundleType:nA.bundleType,version:nA.version,rendererPackageName:nA.rendererPackageName,rendererConfig:nA.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:C.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:nA.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var oA=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!oA.isDisabled&&oA.supportsFiber)try{ot=oA.inject(rA),it=oA}catch(Ae){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tA,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Ks(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Ks(e))throw Error(i(299));var n=!1,r="",o=Hs;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=Ls(e,1,!1,null,0,n,0,r,o),e[go]=t.current,qr(8===e.nodeType?e.parentNode:e),new Zs(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(i(188));throw e=Object.keys(e).join(","),Error(i(268,e))}return null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return us(e)},t.hydrate=function(e,t,n){if(!Xs(t))throw Error(i(200));return eA(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Ks(e))throw Error(i(405));var r=null!=n&&n.hydratedSources||null,o=!1,a="",c=Hs;if(null!=n&&(!0===n.unstable_strictMode&&(o=!0),void 0!==n.identifierPrefix&&(a=n.identifierPrefix),void 0!==n.onRecoverableError&&(c=n.onRecoverableError)),t=Us(t,null,e,1,null!=n?n:null,o,0,a,c),e[go]=t.current,qr(e),r)for(e=0;e<r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Js(t)},t.render=function(e,t,n){if(!Xs(t))throw Error(i(200));return eA(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Xs(e))throw Error(i(40));return!!e._reactRootContainer&&(us((function(){eA(null,null,e,!1,(function(){e._reactRootContainer=null,e[go]=null}))})),!0)},t.unstable_batchedUpdates=As,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Xs(n))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return eA(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},745:(e,t,n)=>{"use strict";var r=n(3935);t.s=r.createRoot,t.a=r.hydrateRoot},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(4448)},7762:(e,t,n)=>{"use strict";var r,o;r=n(7774),o=n(8698),t.version=r.version,t.renderToString=r.renderToString,t.renderToStaticMarkup=r.renderToStaticMarkup,t.renderToNodeStream=r.renderToNodeStream,t.renderToStaticNodeStream=r.renderToStaticNodeStream,t.renderToReadableStream=o.renderToReadableStream},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function i(e,a){if(e===a)return!0;if(e&&a&&"object"==typeof e&&"object"==typeof a){if(e.constructor!==a.constructor)return!1;var c,l,s,A;if(Array.isArray(e)){if((c=e.length)!=a.length)return!1;for(l=c;0!=l--;)if(!i(e[l],a[l]))return!1;return!0}if(n&&e instanceof Map&&a instanceof Map){if(e.size!==a.size)return!1;for(A=e.entries();!(l=A.next()).done;)if(!a.has(l.value[0]))return!1;for(A=e.entries();!(l=A.next()).done;)if(!i(l.value[1],a.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&a instanceof Set){if(e.size!==a.size)return!1;for(A=e.entries();!(l=A.next()).done;)if(!a.has(l.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(a)){if((c=e.length)!=a.length)return!1;for(l=c;0!=l--;)if(e[l]!==a[l])return!1;return!0}if(e.constructor===RegExp)return e.source===a.source&&e.flags===a.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof a.valueOf)return e.valueOf()===a.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof a.toString)return e.toString()===a.toString();if((c=(s=Object.keys(e)).length)!==Object.keys(a).length)return!1;for(l=c;0!=l--;)if(!Object.prototype.hasOwnProperty.call(a,s[l]))return!1;if(t&&e instanceof Element)return!1;for(l=c;0!=l--;)if(("_owner"!==s[l]&&"__v"!==s[l]&&"__o"!==s[l]||!e.$$typeof)&&!i(e[s[l]],a[s[l]]))return!1;return!0}return e!=e&&a!=a}e.exports=function(e,t){try{return i(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}},2408:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),l=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),A=Symbol.for("react.suspense"),u=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.iterator,y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,h={};function f(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||y}function v(){}function m(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||y}f.prototype.isReactComponent={},f.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},f.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=f.prototype;var C=m.prototype=new v;C.constructor=m,g(C,f.prototype),C.isPureReactComponent=!0;var b=Array.isArray,x=Object.prototype.hasOwnProperty,w={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,r){var o,i={},a=null,c=null;if(null!=t)for(o in void 0!==t.ref&&(c=t.ref),void 0!==t.key&&(a=""+t.key),t)x.call(t,o)&&!E.hasOwnProperty(o)&&(i[o]=t[o]);var l=arguments.length-2;if(1===l)i.children=r;else if(1<l){for(var s=Array(l),A=0;A<l;A++)s[A]=arguments[A+2];i.children=s}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===i[o]&&(i[o]=l[o]);return{$$typeof:n,type:e,key:a,ref:c,props:i,_owner:w.current}}function k(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var B=/\/+/g;function I(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function S(e,t,o,i,a){var c=typeof e;"undefined"!==c&&"boolean"!==c||(e=null);var l=!1;if(null===e)l=!0;else switch(c){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case n:case r:l=!0}}if(l)return a=a(l=e),e=""===i?"."+I(l,0):i,b(a)?(o="",null!=e&&(o=e.replace(B,"$&/")+"/"),S(a,t,o,"",(function(e){return e}))):null!=a&&(k(a)&&(a=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(a,o+(!a.key||l&&l.key===a.key?"":(""+a.key).replace(B,"$&/")+"/")+e)),t.push(a)),1;if(l=0,i=""===i?".":i+":",b(e))for(var s=0;s<e.length;s++){var A=i+I(c=e[s],s);l+=S(c,t,o,A,a)}else if(A=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof A)for(e=A.call(e),s=0;!(c=e.next()).done;)l+=S(c=c.value,t,o,A=i+I(c,s++),a);else if("object"===c)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return l}function D(e,t,n){if(null==e)return e;var r=[],o=0;return S(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function z(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var T={current:null},Q={transition:null},M={ReactCurrentDispatcher:T,ReactCurrentBatchConfig:Q,ReactCurrentOwner:w};t.Children={map:D,forEach:function(e,t,n){D(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return D(e,(function(){t++})),t},toArray:function(e){return D(e,(function(e){return e}))||[]},only:function(e){if(!k(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=f,t.Fragment=o,t.Profiler=a,t.PureComponent=m,t.StrictMode=i,t.Suspense=A,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=M,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=g({},e.props),i=e.key,a=e.ref,c=e._owner;if(null!=t){if(void 0!==t.ref&&(a=t.ref,c=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(s in t)x.call(t,s)&&!E.hasOwnProperty(s)&&(o[s]=void 0===t[s]&&void 0!==l?l[s]:t[s])}var s=arguments.length-2;if(1===s)o.children=r;else if(1<s){l=Array(s);for(var A=0;A<s;A++)l[A]=arguments[A+2];o.children=l}return{$$typeof:n,type:e.type,key:i,ref:a,props:o,_owner:c}},t.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:c,_context:e},e.Consumer=e},t.createElement=_,t.createFactory=function(e){var t=_.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=k,t.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:z}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=Q.transition;Q.transition={};try{e()}finally{Q.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return T.current.useCallback(e,t)},t.useContext=function(e){return T.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return T.current.useDeferredValue(e)},t.useEffect=function(e,t){return T.current.useEffect(e,t)},t.useId=function(){return T.current.useId()},t.useImperativeHandle=function(e,t,n){return T.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return T.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return T.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return T.current.useMemo(e,t)},t.useReducer=function(e,t,n){return T.current.useReducer(e,t,n)},t.useRef=function(e){return T.current.useRef(e)},t.useState=function(e){return T.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return T.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return T.current.useTransition()},t.version="18.2.0"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<i(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,a=o>>>1;r<a;){var c=2*(r+1)-1,l=e[c],s=c+1,A=e[s];if(0>i(l,n))s<o&&0>i(A,l)?(e[r]=A,e[s]=n,r=s):(e[r]=l,e[c]=n,r=c);else{if(!(s<o&&0>i(A,n)))break e;e[r]=A,e[s]=n,r=s}}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var a=performance;t.unstable_now=function(){return a.now()}}else{var c=Date,l=c.now();t.unstable_now=function(){return c.now()-l}}var s=[],A=[],u=1,d=null,p=3,y=!1,g=!1,h=!1,f="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,m="undefined"!=typeof setImmediate?setImmediate:null;function C(e){for(var t=r(A);null!==t;){if(null===t.callback)o(A);else{if(!(t.startTime<=e))break;o(A),t.sortIndex=t.expirationTime,n(s,t)}t=r(A)}}function b(e){if(h=!1,C(e),!g)if(null!==r(s))g=!0,Q(x);else{var t=r(A);null!==t&&M(b,t.startTime-e)}}function x(e,n){g=!1,h&&(h=!1,v(k),k=-1),y=!0;var i=p;try{for(C(n),d=r(s);null!==d&&(!(d.expirationTime>n)||e&&!S());){var a=d.callback;if("function"==typeof a){d.callback=null,p=d.priorityLevel;var c=a(d.expirationTime<=n);n=t.unstable_now(),"function"==typeof c?d.callback=c:d===r(s)&&o(s),C(n)}else o(s);d=r(s)}if(null!==d)var l=!0;else{var u=r(A);null!==u&&M(b,u.startTime-n),l=!1}return l}finally{d=null,p=i,y=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var w,E=!1,_=null,k=-1,B=5,I=-1;function S(){return!(t.unstable_now()-I<B)}function D(){if(null!==_){var e=t.unstable_now();I=e;var n=!0;try{n=_(!0,e)}finally{n?w():(E=!1,_=null)}}else E=!1}if("function"==typeof m)w=function(){m(D)};else if("undefined"!=typeof MessageChannel){var z=new MessageChannel,T=z.port2;z.port1.onmessage=D,w=function(){T.postMessage(null)}}else w=function(){f(D,0)};function Q(e){_=e,E||(E=!0,w())}function M(e,n){k=f((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){g||y||(g=!0,Q(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):B=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(s)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,o,i){var a=t.unstable_now();switch(i="object"==typeof i&&null!==i&&"number"==typeof(i=i.delay)&&0<i?a+i:a,e){case 1:var c=-1;break;case 2:c=250;break;case 5:c=1073741823;break;case 4:c=1e4;break;default:c=5e3}return e={id:u++,callback:o,priorityLevel:e,startTime:i,expirationTime:c=i+c,sortIndex:-1},i>a?(e.sortIndex=i,n(A,e),null===r(s)&&e===r(A)&&(h?(v(k),k=-1):h=!0,M(b,i-a))):(e.sortIndex=c,n(s,e),g||y||(g=!0,Q(x))),e},t.unstable_shouldYield=S,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},3379:e=>{"use strict";var t=[];function n(e){for(var n=-1,r=0;r<t.length;r++)if(t[r].identifier===e){n=r;break}return n}function r(e,r){for(var i={},a=[],c=0;c<e.length;c++){var l=e[c],s=r.base?l[0]+r.base:l[0],A=i[s]||0,u="".concat(s," ").concat(A);i[s]=A+1;var d=n(u),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==d)t[d].references++,t[d].updater(p);else{var y=o(p,r);r.byIndex=c,t.splice(c,0,{identifier:u,updater:y,references:1})}a.push(u)}return a}function o(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,o){var i=r(e=e||[],o=o||{});return function(e){e=e||[];for(var a=0;a<i.length;a++){var c=n(i[a]);t[c].references--}for(var l=r(e,o),s=0;s<i.length;s++){var A=n(i[s]);0===t[A].references&&(t[A].updater(),t.splice(A,1))}i=l}}},9216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},3565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},7795:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var r="";n.supports&&(r+="@supports (".concat(n.supports,") {")),n.media&&(r+="@media ".concat(n.media," {"));var o=void 0!==n.layer;o&&(r+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),r+=n.css,o&&(r+="}"),n.media&&(r+="}"),n.supports&&(r+="}");var i=n.sourceMap;i&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleTagTransform(r,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},4589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},1742:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r<e.rangeCount;r++)n.push(e.getRangeAt(r));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||n.forEach((function(t){e.addRange(t)})),t&&t.focus()}}},2511:function(e,t,n){var r;e=n.nmd(e),function(o){t&&t.nodeType,e&&e.nodeType;var i="object"==typeof n.g&&n.g;i.global!==i&&i.window!==i&&i.self;var a,c=2147483647,l=36,s=26,A=38,u=700,d=/^xn--/,p=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,g={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=l-1,f=Math.floor,v=String.fromCharCode;function m(e){throw RangeError(g[e])}function C(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function b(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+C((e=e.replace(y,".")).split("."),t).join(".")}function x(e){for(var t,n,r=[],o=0,i=e.length;o<i;)(t=e.charCodeAt(o++))>=55296&&t<=56319&&o<i?56320==(64512&(n=e.charCodeAt(o++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),o--):r.push(t);return r}function w(e){return C(e,(function(e){var t="";return e>65535&&(t+=v((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+v(e)})).join("")}function E(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function _(e,t,n){var r=0;for(e=n?f(e/u):e>>1,e+=f(e/t);e>h*s>>1;r+=l)e=f(e/h);return f(r+(h+1)*e/(e+A))}function k(e){var t,n,r,o,i,a,A,u,d,p,y,g=[],h=e.length,v=0,C=128,b=72;for((n=e.lastIndexOf("-"))<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&m("not-basic"),g.push(e.charCodeAt(r));for(o=n>0?n+1:0;o<h;){for(i=v,a=1,A=l;o>=h&&m("invalid-input"),((u=(y=e.charCodeAt(o++))-48<10?y-22:y-65<26?y-65:y-97<26?y-97:l)>=l||u>f((c-v)/a))&&m("overflow"),v+=u*a,!(u<(d=A<=b?1:A>=b+s?s:A-b));A+=l)a>f(c/(p=l-d))&&m("overflow"),a*=p;b=_(v-i,t=g.length+1,0==i),f(v/t)>c-C&&m("overflow"),C+=f(v/t),v%=t,g.splice(v++,0,C)}return w(g)}function B(e){var t,n,r,o,i,a,A,u,d,p,y,g,h,C,b,w=[];for(g=(e=x(e)).length,t=128,n=0,i=72,a=0;a<g;++a)(y=e[a])<128&&w.push(v(y));for(r=o=w.length,o&&w.push("-");r<g;){for(A=c,a=0;a<g;++a)(y=e[a])>=t&&y<A&&(A=y);for(A-t>f((c-n)/(h=r+1))&&m("overflow"),n+=(A-t)*h,t=A,a=0;a<g;++a)if((y=e[a])<t&&++n>c&&m("overflow"),y==t){for(u=n,d=l;!(u<(p=d<=i?1:d>=i+s?s:d-i));d+=l)b=u-p,C=l-p,w.push(v(E(p+b%C,0))),u=f(b/C);w.push(v(E(u,0))),i=_(n,h,r==o),n=0,++r}++n,++t}return w.join("")}a={version:"1.3.2",ucs2:{decode:x,encode:w},decode:k,encode:B,toASCII:function(e){return b(e,(function(e){return p.test(e)?"xn--"+B(e):e}))},toUnicode:function(e){return b(e,(function(e){return d.test(e)?k(e.slice(4).toLowerCase()):e}))}},void 0===(r=function(){return a}.call(t,n,t,e))||(e.exports=r)}()},8575:(e,t,n)=>{"use strict";var r=n(2511),o=n(2502);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.Qc=m;var a=/^([a-z0-9.+-]+:)/i,c=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),A=["'"].concat(s),u=["%","/","?",";","#"].concat(A),d=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,y=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},h={javascript:!0,"javascript:":!0},f={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(7673);function m(e,t,n){if(e&&o.isObject(e)&&e instanceof i)return e;var r=new i;return r.parse(e,t,n),r}i.prototype.parse=function(e,t,n){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),c=-1!==i&&i<e.indexOf("#")?"?":"#",s=e.split(c);s[0]=s[0].replace(/\\/g,"/");var m=e=s.join(c);if(m=m.trim(),!n&&1===e.split("#").length){var C=l.exec(m);if(C)return this.path=m,this.href=m,this.pathname=C[1],C[2]?(this.search=C[2],this.query=t?v.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var b=a.exec(m);if(b){var x=(b=b[0]).toLowerCase();this.protocol=x,m=m.substr(b.length)}if(n||b||m.match(/^\/\/[^@\/]+@[^@\/]+/)){var w="//"===m.substr(0,2);!w||b&&h[b]||(m=m.substr(2),this.slashes=!0)}if(!h[b]&&(w||b&&!f[b])){for(var E,_,k=-1,B=0;B<d.length;B++)-1!==(I=m.indexOf(d[B]))&&(-1===k||I<k)&&(k=I);for(-1!==(_=-1===k?m.lastIndexOf("@"):m.lastIndexOf("@",k))&&(E=m.slice(0,_),m=m.slice(_+1),this.auth=decodeURIComponent(E)),k=-1,B=0;B<u.length;B++){var I;-1!==(I=m.indexOf(u[B]))&&(-1===k||I<k)&&(k=I)}-1===k&&(k=m.length),this.host=m.slice(0,k),m=m.slice(k),this.parseHost(),this.hostname=this.hostname||"";var S="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!S)for(var D=this.hostname.split(/\./),z=(B=0,D.length);B<z;B++){var T=D[B];if(T&&!T.match(p)){for(var Q="",M=0,F=T.length;M<F;M++)T.charCodeAt(M)>127?Q+="x":Q+=T[M];if(!Q.match(p)){var O=D.slice(0,B),N=D.slice(B+1),P=T.match(y);P&&(O.push(P[1]),N.unshift(P[2])),N.length&&(m="/"+N.join(".")+m),this.hostname=O.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),S||(this.hostname=r.toASCII(this.hostname));var R=this.port?":"+this.port:"",j=this.hostname||"";this.host=j+R,this.href+=this.host,S&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==m[0]&&(m="/"+m))}if(!g[x])for(B=0,z=A.length;B<z;B++){var L=A[B];if(-1!==m.indexOf(L)){var q=encodeURIComponent(L);q===L&&(q=escape(L)),m=m.split(L).join(q)}}var U=m.indexOf("#");-1!==U&&(this.hash=m.substr(U),m=m.slice(0,U));var V=m.indexOf("?");if(-1!==V?(this.search=m.substr(V),this.query=m.substr(V+1),t&&(this.query=v.parse(this.query)),m=m.slice(0,V)):t&&(this.search="",this.query={}),m&&(this.pathname=m),f[x]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){R=this.pathname||"";var W=this.search||"";this.path=R+W}return this.href=this.format(),this},i.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,a="";this.host?i=e+this.host:this.hostname&&(i=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(a=v.stringify(this.query));var c=this.search||a&&"?"+a||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||f[t])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),c&&"?"!==c.charAt(0)&&(c="?"+c),t+i+(n=n.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(c=c.replace("#","%23"))+r},i.prototype.resolve=function(e){return this.resolveObject(m(e,!1,!0)).format()},i.prototype.resolveObject=function(e){if(o.isString(e)){var t=new i;t.parse(e,!1,!0),e=t}for(var n=new i,r=Object.keys(this),a=0;a<r.length;a++){var c=r[a];n[c]=this[c]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var l=Object.keys(e),s=0;s<l.length;s++){var A=l[s];"protocol"!==A&&(n[A]=e[A])}return f[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!f[e.protocol]){for(var u=Object.keys(e),d=0;d<u.length;d++){var p=u[d];n[p]=e[p]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||h[e.protocol])n.pathname=e.pathname;else{for(var y=(e.pathname||"").split("/");y.length&&!(e.host=y.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==y[0]&&y.unshift(""),y.length<2&&y.unshift(""),n.pathname=y.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var g=n.pathname||"",v=n.search||"";n.path=g+v}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var m=n.pathname&&"/"===n.pathname.charAt(0),C=e.host||e.pathname&&"/"===e.pathname.charAt(0),b=C||m||n.host&&e.pathname,x=b,w=n.pathname&&n.pathname.split("/")||[],E=(y=e.pathname&&e.pathname.split("/")||[],n.protocol&&!f[n.protocol]);if(E&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===y[0]?y[0]=e.host:y.unshift(e.host)),e.host=null),b=b&&(""===y[0]||""===w[0])),C)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,w=y;else if(y.length)w||(w=[]),w.pop(),w=w.concat(y),n.search=e.search,n.query=e.query;else if(!o.isNullOrUndefined(e.search))return E&&(n.hostname=n.host=w.shift(),(S=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=S.shift(),n.host=n.hostname=S.shift())),n.search=e.search,n.query=e.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var _=w.slice(-1)[0],k=(n.host||e.host||w.length>1)&&("."===_||".."===_)||""===_,B=0,I=w.length;I>=0;I--)"."===(_=w[I])?w.splice(I,1):".."===_?(w.splice(I,1),B++):B&&(w.splice(I,1),B--);if(!b&&!x)for(;B--;B)w.unshift("..");!b||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),k&&"/"!==w.join("/").substr(-1)&&w.push("");var S,D=""===w[0]||w[0]&&"/"===w[0].charAt(0);return E&&(n.hostname=n.host=D?"":w.length?w.shift():"",(S=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=S.shift(),n.host=n.hostname=S.shift())),(b=b||n.host&&w.length)&&!D&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=c.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},2502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},9514:e=>{"use strict";e.exports="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},136:e=>{"use strict";e.exports='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb%282,123,243%29"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E'},5684:e=>{"use strict";e.exports='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb%28241,149,24%29"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E'},6005:e=>{"use strict";e.exports='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb%28255,70,69%29"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E'},9146:e=>{"use strict";e.exports='data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16"%3E%3Ccircle cx="8" cy="8" r="8" fill="rgb%2886,189,103%29"/%3E%3Crect width="1" height="5" x="7.5" y="6.5" stroke="%23fff" rx=".5"/%3E%3Ccircle cx="8" cy="4" r="1" fill="%23fff"/%3E%3C/svg%3E'},1032:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgICA8cGF0aCBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0ibm9uZSIgZD0iTTMgNmw1IDUgNS01Ii8+Cjwvc3ZnPgo="},208:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggc3Ryb2tlPSJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykiIGZpbGw9Im5vbmUiIGQ9Ik0zIDZsNSA1IDUtNSI+PC9wYXRoPjwvc3ZnPg=="},6320:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzODQgNTEyIj48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0zNjkuOSA5Ny45TDI4NiAxNEMyNzcgNSAyNjQuOC0uMSAyNTIuMS0uMUg0OEMyMS41IDAgMCAyMS41IDAgNDh2NDE2YzAgMjYuNSAyMS41IDQ4IDQ4IDQ4aDI4OGMyNi41IDAgNDgtMjEuNSA0OC00OFYxMzEuOWMwLTEyLjctNS4xLTI1LTE0LjEtMzR6bS0yMi42IDIyLjdjMi4xIDIuMSAzLjUgNC42IDQuMiA3LjRIMjU2VjMyLjVjMi44LjcgNS4zIDIuMSA3LjQgNC4ybDgzLjkgODMuOXpNMzM2IDQ4MEg0OGMtOC44IDAtMTYtNy4yLTE2LTE2VjQ4YzAtOC44IDcuMi0xNiAxNi0xNmgxNzZ2MTA0YzAgMTMuMyAxMC43IDI0IDI0IDI0aDEwNHYzMDRjMCA4LjgtNy4yIDE2LTE2IDE2em0tNDgtMjQ0djhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem0wIDY0djhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyem0wIDY0djhjMCA2LjYtNS40IDEyLTEyIDEySDEwOGMtNi42IDAtMTItNS40LTEyLTEydi04YzAtNi42IDUuNC0xMiAxMi0xMmgxNjhjNi42IDAgMTIgNS40IDEyIDEyeiIvPjwvc3ZnPg=="}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.loaded=!0,i.exports}n.m=e,n.amdO={},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.b=document.baseURI||self.location.href,n.nc=void 0,(()=>{"use strict";var e=n(7294),t=n(745),r=n(7762);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o.apply(this,arguments)}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function a(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,o=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(e,t)||a(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function s(e){var t=function(e,t){if("object"!==l(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===l(t)?t:String(t)}function A(e,t,n){return(t=s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?Object(arguments[t]):{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&r.push.apply(r,Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach((function(t){A(e,t,n[t])}))}return e}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,s(r.key),r)}}function y(e,t,n){return t&&p(e.prototype,t),n&&p(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function g(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e,t){if(t&&("object"===l(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return g(e)}function f(e){return f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},f(e)}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function m(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&v(e,t)}var C={type:"logger",log:function(e){this.output("log",e)},warn:function(e){this.output("warn",e)},error:function(e){this.output("error",e)},output:function(e,t){console&&console[e]&&console[e].apply(console,t)}},b=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};d(this,e),this.init(t,n)}return y(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=t.prefix||"i18next:",this.logger=e||C,this.options=t,this.debug=t.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,t,n,r){return r&&!this.debug?null:("string"==typeof e[0]&&(e[0]="".concat(n).concat(this.prefix," ").concat(e[0])),this.logger[t](e))}},{key:"create",value:function(t){return new e(this.logger,u({},{prefix:"".concat(this.prefix,":").concat(t,":")},this.options))}}]),e}(),x=new b,w=function(){function e(){d(this,e),this.observers={}}return y(e,[{key:"on",value:function(e,t){var n=this;return e.split(" ").forEach((function(e){n.observers[e]=n.observers[e]||[],n.observers[e].push(t)})),this}},{key:"off",value:function(e,t){this.observers[e]&&(t?this.observers[e]=this.observers[e].filter((function(e){return e!==t})):delete this.observers[e])}},{key:"emit",value:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];this.observers[e]&&[].concat(this.observers[e]).forEach((function(e){e.apply(void 0,n)})),this.observers["*"]&&[].concat(this.observers["*"]).forEach((function(t){t.apply(t,[e].concat(n))}))}}]),e}();function E(){var e,t,n=new Promise((function(n,r){e=n,t=r}));return n.resolve=e,n.reject=t,n}function _(e){return null==e?"":""+e}function k(e,t,n){function r(e){return e&&e.indexOf("###")>-1?e.replace(/###/g,"."):e}function o(){return!e||"string"==typeof e}for(var i="string"!=typeof t?[].concat(t):t.split(".");i.length>1;){if(o())return{};var a=r(i.shift());!e[a]&&n&&(e[a]=new n),e=Object.prototype.hasOwnProperty.call(e,a)?e[a]:{}}return o()?{}:{obj:e,k:r(i.shift())}}function B(e,t,n){var r=k(e,t,Object);r.obj[r.k]=n}function I(e,t){var n=k(e,t),r=n.obj,o=n.k;if(r)return r[o]}function S(e,t,n){var r=I(e,n);return void 0!==r?r:I(t,n)}function D(e,t,n){for(var r in t)"__proto__"!==r&&"constructor"!==r&&(r in e?"string"==typeof e[r]||e[r]instanceof String||"string"==typeof t[r]||t[r]instanceof String?n&&(e[r]=t[r]):D(e[r],t[r],n):e[r]=t[r]);return e}function z(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var T={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function Q(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return T[e]})):e}var M="undefined"!=typeof window&&window.navigator&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,F=function(e){function t(e){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return d(this,t),n=h(this,f(t).call(this)),M&&w.call(g(n)),n.data=e||{},n.options=r,void 0===n.options.keySeparator&&(n.options.keySeparator="."),n}return m(t,e),y(t,[{key:"addNamespaces",value:function(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}},{key:"removeNamespaces",value:function(e){var t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}},{key:"getResource",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,i=[e,t];return n&&"string"!=typeof n&&(i=i.concat(n)),n&&"string"==typeof n&&(i=i.concat(o?n.split(o):n)),e.indexOf(".")>-1&&(i=e.split(".")),I(this.data,i)}},{key:"addResource",value:function(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},i=this.options.keySeparator;void 0===i&&(i=".");var a=[e,t];n&&(a=a.concat(i?n.split(i):n)),e.indexOf(".")>-1&&(r=t,t=(a=e.split("."))[1]),this.addNamespaces(t),B(this.data,a,r),o.silent||this.emit("added",e,t,n,r)}},{key:"addResources",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var o in n)"string"!=typeof n[o]&&"[object Array]"!==Object.prototype.toString.apply(n[o])||this.addResource(e,t,o,n[o],{silent:!0});r.silent||this.emit("added",e,t,n)}},{key:"addResourceBundle",value:function(e,t,n,r,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[e,t];e.indexOf(".")>-1&&(r=n,n=t,t=(a=e.split("."))[1]),this.addNamespaces(t);var c=I(this.data,a)||{};r?D(c,n,o):c=u({},c,n),B(this.data,a,c),i.silent||this.emit("added",e,t,n)}},{key:"removeResourceBundle",value:function(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}},{key:"hasResourceBundle",value:function(e,t){return void 0!==this.getResource(e,t)}},{key:"getResourceBundle",value:function(e,t){return t||(t=this.options.defaultNS),"v1"===this.options.compatibilityAPI?u({},{},this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"toJSON",value:function(){return this.data}}]),t}(w),O={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,n,r,o){var i=this;return e.forEach((function(e){i.processors[e]&&(t=i.processors[e].process(t,n,r,o))})),t}},N={},P=function(e){function t(e){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return d(this,t),n=h(this,f(t).call(this)),M&&w.call(g(n)),function(e,t,n){["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach((function(e){t[e]&&(n[e]=t[e])}))}(0,e,g(n)),n.options=r,void 0===n.options.keySeparator&&(n.options.keySeparator="."),n.logger=x.create("translator"),n}return m(t,e),y(t,[{key:"changeLanguage",value:function(e){e&&(this.language=e)}},{key:"exists",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},n=this.resolve(e,t);return n&&void 0!==n.res}},{key:"extractFromKey",value:function(e,t){var n=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===n&&(n=":");var r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,o=t.ns||this.options.defaultNS;if(n&&e.indexOf(n)>-1){var i=e.match(this.interpolator.nestingRegexp);if(i&&i.length>0)return{key:e,namespaces:o};var a=e.split(n);(n!==r||n===r&&this.options.ns.indexOf(a[0])>-1)&&(o=a.shift()),e=a.join(r)}return"string"==typeof o&&(o=[o]),{key:e,namespaces:o}}},{key:"translate",value:function(e,n,r){var o=this;if("object"!==l(n)&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),n||(n={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var i=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator,a=this.extractFromKey(e[e.length-1],n),c=a.key,s=a.namespaces,A=s[s.length-1],d=n.lng||this.language,p=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&"cimode"===d.toLowerCase()){if(p){var y=n.nsSeparator||this.options.nsSeparator;return A+y+c}return c}var g=this.resolve(e,n),h=g&&g.res,f=g&&g.usedKey||c,v=g&&g.exactUsedKey||c,m=Object.prototype.toString.apply(h),C=void 0!==n.joinArrays?n.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject;if(b&&h&&"string"!=typeof h&&"boolean"!=typeof h&&"number"!=typeof h&&["[object Number]","[object Function]","[object RegExp]"].indexOf(m)<0&&("string"!=typeof C||"[object Array]"!==m)){if(!n.returnObjects&&!this.options.returnObjects)return this.logger.warn("accessing an object - but returnObjects options is not enabled!"),this.options.returnedObjectHandler?this.options.returnedObjectHandler(f,h,n):"key '".concat(c," (").concat(this.language,")' returned an object instead of string.");if(i){var x="[object Array]"===m,w=x?[]:{},E=x?v:f;for(var _ in h)if(Object.prototype.hasOwnProperty.call(h,_)){var k="".concat(E).concat(i).concat(_);w[_]=this.translate(k,u({},n,{joinArrays:!1,ns:s})),w[_]===k&&(w[_]=h[_])}h=w}}else if(b&&"string"==typeof C&&"[object Array]"===m)(h=h.join(C))&&(h=this.extendTranslation(h,e,n,r));else{var B=!1,I=!1,S=void 0!==n.count&&"string"!=typeof n.count,D=t.hasDefaultValue(n),z=S?this.pluralResolver.getSuffix(d,n.count):"",T=n["defaultValue".concat(z)]||n.defaultValue;!this.isValidLookup(h)&&D&&(B=!0,h=T),this.isValidLookup(h)||(I=!0,h=c);var Q=D&&T!==h&&this.options.updateMissing;if(I||B||Q){if(this.logger.log(Q?"updateKey":"missingKey",d,A,c,Q?T:h),i){var M=this.resolve(c,u({},n,{keySeparator:!1}));M&&M.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var F=[],O=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if("fallback"===this.options.saveMissingTo&&O&&O[0])for(var N=0;N<O.length;N++)F.push(O[N]);else"all"===this.options.saveMissingTo?F=this.languageUtils.toResolveHierarchy(n.lng||this.language):F.push(n.lng||this.language);var P=function(e,t,r){o.options.missingKeyHandler?o.options.missingKeyHandler(e,A,t,Q?r:h,Q,n):o.backendConnector&&o.backendConnector.saveMissing&&o.backendConnector.saveMissing(e,A,t,Q?r:h,Q,n),o.emit("missingKey",e,A,t,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&S?F.forEach((function(e){o.pluralResolver.getSuffixes(e).forEach((function(t){P([e],c+t,n["defaultValue".concat(t)]||T)}))})):P(F,c,T))}h=this.extendTranslation(h,e,n,g,r),I&&h===c&&this.options.appendNamespaceToMissingKey&&(h="".concat(A,":").concat(c)),I&&this.options.parseMissingKeyHandler&&(h=this.options.parseMissingKeyHandler(h))}return h}},{key:"extendTranslation",value:function(e,t,n,r,o){var i=this;if(this.i18nFormat&&this.i18nFormat.parse)e=this.i18nFormat.parse(e,n,r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init(u({},n,{interpolation:u({},this.options.interpolation,n.interpolation)}));var a,c=n.interpolation&&n.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables;if(c){var l=e.match(this.interpolator.nestingRegexp);a=l&&l.length}var s=n.replace&&"string"!=typeof n.replace?n.replace:n;if(this.options.interpolation.defaultVariables&&(s=u({},this.options.interpolation.defaultVariables,s)),e=this.interpolator.interpolate(e,s,n.lng||this.language,n),c){var A=e.match(this.interpolator.nestingRegexp);a<(A&&A.length)&&(n.nest=!1)}!1!==n.nest&&(e=this.interpolator.nest(e,(function(){for(var e=arguments.length,r=new Array(e),a=0;a<e;a++)r[a]=arguments[a];return o&&o[0]===r[0]&&!n.context?(i.logger.warn("It seems you are nesting recursively key: ".concat(r[0]," in key: ").concat(t[0])),null):i.translate.apply(i,r.concat([t]))}),n)),n.interpolation&&this.interpolator.reset()}var d=n.postProcess||this.options.postProcess,p="string"==typeof d?[d]:d;return null!=e&&p&&p.length&&!1!==n.applyPostProcessor&&(e=O.handle(p,e,t,this.options&&this.options.postProcessPassResolved?u({i18nResolved:r},n):n,this)),e}},{key:"resolve",value:function(e){var t,n,r,o,i,a=this,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!a.isValidLookup(t)){var l=a.extractFromKey(e,c),s=l.key;n=s;var A=l.namespaces;a.options.fallbackNS&&(A=A.concat(a.options.fallbackNS));var u=void 0!==c.count&&"string"!=typeof c.count,d=void 0!==c.context&&"string"==typeof c.context&&""!==c.context,p=c.lngs?c.lngs:a.languageUtils.toResolveHierarchy(c.lng||a.language,c.fallbackLng);A.forEach((function(e){a.isValidLookup(t)||(i=e,!N["".concat(p[0],"-").concat(e)]&&a.utils&&a.utils.hasLoadedNamespace&&!a.utils.hasLoadedNamespace(i)&&(N["".concat(p[0],"-").concat(e)]=!0,a.logger.warn('key "'.concat(n,'" for languages "').concat(p.join(", "),'" won\'t get resolved as namespace "').concat(i,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),p.forEach((function(n){if(!a.isValidLookup(t)){o=n;var i,l,A=s,p=[A];for(a.i18nFormat&&a.i18nFormat.addLookupKeys?a.i18nFormat.addLookupKeys(p,s,n,e,c):(u&&(i=a.pluralResolver.getSuffix(n,c.count)),u&&d&&p.push(A+i),d&&p.push(A+="".concat(a.options.contextSeparator).concat(c.context)),u&&p.push(A+=i));l=p.pop();)a.isValidLookup(t)||(r=l,t=a.getResource(n,e,l,c))}})))}))}})),{res:t,usedKey:n,exactUsedKey:r,usedLng:o,usedNS:i}}},{key:"isValidLookup",value:function(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}},{key:"getResource",value:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}}],[{key:"hasDefaultValue",value:function(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&"defaultValue"===t.substring(0,12)&&void 0!==e[t])return!0;return!1}}]),t}(w);function R(e){return e.charAt(0).toUpperCase()+e.slice(1)}var j=function(){function e(t){d(this,e),this.options=t,this.whitelist=this.options.supportedLngs||!1,this.supportedLngs=this.options.supportedLngs||!1,this.logger=x.create("languageUtils")}return y(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var t=e.split("-");return this.formatLanguageCode(t[0])}},{key:"formatLanguageCode",value:function(e){if("string"==typeof e&&e.indexOf("-")>-1){var t=["hans","hant","latn","cyrl","cans","mong","arab"],n=e.split("-");return this.options.lowerCaseLng?n=n.map((function(e){return e.toLowerCase()})):2===n.length?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=R(n[1].toLowerCase()))):3===n.length&&(n[0]=n[0].toLowerCase(),2===n[1].length&&(n[1]=n[1].toUpperCase()),"sgn"!==n[0]&&2===n[2].length&&(n[2]=n[2].toUpperCase()),t.indexOf(n[1].toLowerCase())>-1&&(n[1]=R(n[1].toLowerCase())),t.indexOf(n[2].toLowerCase())>-1&&(n[2]=R(n[2].toLowerCase()))),n.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isWhitelisted",value:function(e){return this.logger.deprecate("languageUtils.isWhitelisted",'function "isWhitelisted" will be renamed to "isSupportedCode" in the next major - please make sure to rename it\'s usage asap.'),this.isSupportedCode(e)}},{key:"isSupportedCode",value:function(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var t,n=this;return e?(e.forEach((function(e){if(!t){var r=n.formatLanguageCode(e);n.options.supportedLngs&&!n.isSupportedCode(r)||(t=r)}})),!t&&this.options.supportedLngs&&e.forEach((function(e){if(!t){var r=n.getLanguagePartFromCode(e);if(n.isSupportedCode(r))return t=r;t=n.options.supportedLngs.find((function(e){if(0===e.indexOf(r))return e}))}})),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t):null}},{key:"getFallbackCodes",value:function(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),"string"==typeof e&&(e=[e]),"[object Array]"===Object.prototype.toString.apply(e))return e;if(!t)return e.default||[];var n=e[t];return n||(n=e[this.getScriptPartFromCode(t)]),n||(n=e[this.formatLanguageCode(t)]),n||(n=e[this.getLanguagePartFromCode(t)]),n||(n=e.default),n||[]}},{key:"toResolveHierarchy",value:function(e,t){var n=this,r=this.getFallbackCodes(t||this.options.fallbackLng||[],e),o=[],i=function(e){e&&(n.isSupportedCode(e)?o.push(e):n.logger.warn("rejecting language code not found in supportedLngs: ".concat(e)))};return"string"==typeof e&&e.indexOf("-")>-1?("languageOnly"!==this.options.load&&i(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&i(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&i(this.getLanguagePartFromCode(e))):"string"==typeof e&&i(this.formatLanguageCode(e)),r.forEach((function(e){o.indexOf(e)<0&&i(n.formatLanguageCode(e))})),o}}]),e}(),L=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","kk","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],q={1:function(e){return Number(e>1)},2:function(e){return Number(1!=e)},3:function(e){return 0},4:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},5:function(e){return Number(0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5)},6:function(e){return Number(1==e?0:e>=2&&e<=4?1:2)},7:function(e){return Number(1==e?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2)},8:function(e){return Number(1==e?0:2==e?1:8!=e&&11!=e?2:3)},9:function(e){return Number(e>=2)},10:function(e){return Number(1==e?0:2==e?1:e<7?2:e<11?3:4)},11:function(e){return Number(1==e||11==e?0:2==e||12==e?1:e>2&&e<20?2:3)},12:function(e){return Number(e%10!=1||e%100==11)},13:function(e){return Number(0!==e)},14:function(e){return Number(1==e?0:2==e?1:3==e?2:3)},15:function(e){return Number(e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2)},16:function(e){return Number(e%10==1&&e%100!=11?0:0!==e?1:2)},17:function(e){return Number(1==e||e%10==1&&e%100!=11?0:1)},18:function(e){return Number(0==e?0:1==e?1:2)},19:function(e){return Number(1==e?0:0==e||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3)},20:function(e){return Number(1==e?0:0==e||e%100>0&&e%100<20?1:2)},21:function(e){return Number(e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0)},22:function(e){return Number(1==e?0:2==e?1:(e<0||e>10)&&e%10==0?2:3)}},U=function(){function e(t){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};d(this,e),this.languageUtils=t,this.options=r,this.logger=x.create("pluralResolver"),this.rules=(n={},L.forEach((function(e){e.lngs.forEach((function(t){n[t]={numbers:e.nr,plurals:q[e.fc]}}))})),n)}return y(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=this.getRule(e);return t&&t.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){return this.getSuffixes(e).map((function(e){return t+e}))}},{key:"getSuffixes",value:function(e){var t=this,n=this.getRule(e);return n?n.numbers.map((function(n){return t.getSuffix(e,n)})):[]}},{key:"getSuffix",value:function(e,t){var n=this,r=this.getRule(e);if(r){var o=r.noAbs?r.plurals(t):r.plurals(Math.abs(t)),i=r.numbers[o];this.options.simplifyPluralSuffix&&2===r.numbers.length&&1===r.numbers[0]&&(2===i?i="plural":1===i&&(i=""));var a=function(){return n.options.prepend&&i.toString()?n.options.prepend+i.toString():i.toString()};return"v1"===this.options.compatibilityJSON?1===i?"":"number"==typeof i?"_plural_".concat(i.toString()):a():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===r.numbers.length&&1===r.numbers[0]?a():this.options.prepend&&o.toString()?this.options.prepend+o.toString():o.toString()}return this.logger.warn("no plural rule found for: ".concat(e)),""}}]),e}(),V=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};d(this,e),this.logger=x.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return y(e,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var t=e.interpolation;this.escape=void 0!==t.escape?t.escape:Q,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?z(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?z(t.suffix):t.suffixEscaped||"}}",this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||",",this.unescapePrefix=t.unescapeSuffix?"":t.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":t.unescapeSuffix||"",this.nestingPrefix=t.nestingPrefix?z(t.nestingPrefix):t.nestingPrefixEscaped||z("$t("),this.nestingSuffix=t.nestingSuffix?z(t.nestingSuffix):t.nestingSuffixEscaped||z(")"),this.nestingOptionsSeparator=t.nestingOptionsSeparator?t.nestingOptionsSeparator:t.nestingOptionsSeparator||",",this.maxReplaces=t.maxReplaces?t.maxReplaces:1e3,this.alwaysFormat=void 0!==t.alwaysFormat&&t.alwaysFormat,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var t="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(t,"g");var n="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(n,"g")}},{key:"interpolate",value:function(e,t,n,r){var o,i,a,c=this,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function s(e){return e.replace(/\$/g,"$$$$")}var A=function(e){if(e.indexOf(c.formatSeparator)<0){var o=S(t,l,e);return c.alwaysFormat?c.format(o,void 0,n):o}var i=e.split(c.formatSeparator),a=i.shift().trim(),s=i.join(c.formatSeparator).trim();return c.format(S(t,l,a),s,n,r)};this.resetRegExp();var u=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler,d=r&&r.interpolation&&r.interpolation.skipOnVariables||this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return s(e)}},{regex:this.regexp,safeValue:function(e){return c.escapeValue?s(c.escape(e)):s(e)}}].forEach((function(t){for(a=0;o=t.regex.exec(e);){if(void 0===(i=A(o[1].trim())))if("function"==typeof u){var n=u(e,o,r);i="string"==typeof n?n:""}else{if(d){i=o[0];continue}c.logger.warn("missed to pass in variable ".concat(o[1]," for interpolating ").concat(e)),i=""}else"string"==typeof i||c.useRawValueToEscape||(i=_(i));if(e=e.replace(o[0],t.safeValue(i)),t.regex.lastIndex=0,++a>=c.maxReplaces)break}})),e}},{key:"nest",value:function(e,t){var n,r,o=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=u({},i);function c(e,t){var n=this.nestingOptionsSeparator;if(e.indexOf(n)<0)return e;var r=e.split(new RegExp("".concat(n,"[ ]*{"))),o="{".concat(r[1]);e=r[0],o=(o=this.interpolate(o,a)).replace(/'/g,'"');try{a=JSON.parse(o),t&&(a=u({},t,a))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(n).concat(o)}return delete a.defaultValue,e}for(a.applyPostProcessor=!1,delete a.defaultValue;n=this.nestingRegexp.exec(e);){var l=[],s=!1;if(n[0].includes(this.formatSeparator)&&!/{.*}/.test(n[1])){var A=n[1].split(this.formatSeparator).map((function(e){return e.trim()}));n[1]=A.shift(),l=A,s=!0}if((r=t(c.call(this,n[1].trim(),a),a))&&n[0]===e&&"string"!=typeof r)return r;"string"!=typeof r&&(r=_(r)),r||(this.logger.warn("missed to resolve ".concat(n[1]," for nesting ").concat(e)),r=""),s&&(r=l.reduce((function(e,t){return o.format(e,t,i.lng,i)}),r.trim())),e=e.replace(n[0],r),this.regexp.lastIndex=0}return e}}]),e}(),W=function(e){function t(e,n,r){var o,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return d(this,t),o=h(this,f(t).call(this)),M&&w.call(g(o)),o.backend=e,o.store=n,o.services=r,o.languageUtils=r.languageUtils,o.options=i,o.logger=x.create("backendConnector"),o.state={},o.queue=[],o.backend&&o.backend.init&&o.backend.init(r,i.backend,i),o}return m(t,e),y(t,[{key:"queueLoad",value:function(e,t,n,r){var o=this,i=[],a=[],c=[],l=[];return e.forEach((function(e){var r=!0;t.forEach((function(t){var c="".concat(e,"|").concat(t);!n.reload&&o.store.hasResourceBundle(e,t)?o.state[c]=2:o.state[c]<0||(1===o.state[c]?a.indexOf(c)<0&&a.push(c):(o.state[c]=1,r=!1,a.indexOf(c)<0&&a.push(c),i.indexOf(c)<0&&i.push(c),l.indexOf(t)<0&&l.push(t)))})),r||c.push(e)})),(i.length||a.length)&&this.queue.push({pending:a,loaded:{},errors:[],callback:r}),{toLoad:i,pending:a,toLoadLanguages:c,toLoadNamespaces:l}}},{key:"loaded",value:function(e,t,n){var r=e.split("|"),o=r[0],i=r[1];t&&this.emit("failedLoading",o,i,t),n&&this.store.addResourceBundle(o,i,n),this.state[e]=t?-1:2;var a={};this.queue.forEach((function(n){!function(e,t,n,r){var o=k(e,t,Object),i=o.obj,a=o.k;i[a]=i[a]||[],i[a].push(n)}(n.loaded,[o],i),function(e,t){for(var n=e.indexOf(t);-1!==n;)e.splice(n,1),n=e.indexOf(t)}(n.pending,e),t&&n.errors.push(t),0!==n.pending.length||n.done||(Object.keys(n.loaded).forEach((function(e){a[e]||(a[e]=[]),n.loaded[e].length&&n.loaded[e].forEach((function(t){a[e].indexOf(t)<0&&a[e].push(t)}))})),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())})),this.emit("loaded",a),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,t,n){var r=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:350,a=arguments.length>5?arguments[5]:void 0;return e.length?this.backend[n](e,t,(function(c,l){c&&l&&o<5?setTimeout((function(){r.read.call(r,e,t,n,o+1,2*i,a)}),i):a(c,l)})):a(null,{})}},{key:"prepareLoading",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),o&&o();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var i=this.queueLoad(e,t,r,o);if(!i.toLoad.length)return i.pending.length||o(),null;i.toLoad.forEach((function(e){n.loadOne(e)}))}},{key:"load",value:function(e,t,n){this.prepareLoading(e,t,{},n)}},{key:"reload",value:function(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}},{key:"loadOne",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=e.split("|"),o=r[0],i=r[1];this.read(o,i,"read",void 0,void 0,(function(r,a){r&&t.logger.warn("".concat(n,"loading namespace ").concat(i," for language ").concat(o," failed"),r),!r&&a&&t.logger.log("".concat(n,"loaded namespace ").concat(i," for language ").concat(o),a),t.loaded(e,r,a)}))}},{key:"saveMissing",value:function(e,t,n,r,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(t)?this.logger.warn('did not save key "'.concat(n,'" as the namespace "').concat(t,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!"):null!=n&&""!==n&&(this.backend&&this.backend.create&&this.backend.create(e,t,n,r,null,u({},i,{isUpdate:o})),e&&e[0]&&this.store.addResource(e[0],t,n,r))}}]),t}(w);function G(e){return"string"==typeof e.ns&&(e.ns=[e.ns]),"string"==typeof e.fallbackLng&&(e.fallbackLng=[e.fallbackLng]),"string"==typeof e.fallbackNS&&(e.fallbackNS=[e.fallbackNS]),e.whitelist&&(e.whitelist&&e.whitelist.indexOf("cimode")<0&&(e.whitelist=e.whitelist.concat(["cimode"])),e.supportedLngs=e.whitelist),e.nonExplicitWhitelist&&(e.nonExplicitSupportedLngs=e.nonExplicitWhitelist),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function Y(){}var H=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;if(d(this,t),e=h(this,f(t).call(this)),M&&w.call(g(e)),e.options=G(n),e.services={},e.logger=x,e.modules={external:[]},r&&!e.isInitialized&&!n.isClone){if(!e.options.initImmediate)return e.init(n,r),h(e,g(e));setTimeout((function(){e.init(n,r)}),0)}return e}return m(t,e),y(t,[{key:"init",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;function r(e){return e?"function"==typeof e?new e:e:null}if("function"==typeof t&&(n=t,t={}),t.whitelist&&!t.supportedLngs&&this.logger.deprecate("whitelist",'option "whitelist" will be renamed to "supportedLngs" in the next major - please make sure to rename this option asap.'),t.nonExplicitWhitelist&&!t.nonExplicitSupportedLngs&&this.logger.deprecate("whitelist",'options "nonExplicitWhitelist" will be renamed to "nonExplicitSupportedLngs" in the next major - please make sure to rename this option asap.'),this.options=u({},{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,whitelist:!1,nonExplicitWhitelist:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(e){var t={};if("object"===l(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===l(e[2])||"object"===l(e[3])){var n=e[3]||e[2];Object.keys(n).forEach((function(e){t[e]=n[e]}))}return t},interpolation:{escapeValue:!0,format:function(e,t,n,r){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!1}},this.options,G(t)),this.format=this.options.interpolation.format,n||(n=Y),!this.options.isClone){this.modules.logger?x.init(r(this.modules.logger),this.options):x.init(null,this.options);var o=new j(this.options);this.store=new F(this.options.resources,this.options);var i=this.services;i.logger=x,i.resourceStore=this.store,i.languageUtils=o,i.pluralResolver=new U(o,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),i.interpolator=new V(this.options),i.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},i.backendConnector=new W(r(this.modules.backend),i.resourceStore,i,this.options),i.backendConnector.on("*",(function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];e.emit.apply(e,[t].concat(r))})),this.modules.languageDetector&&(i.languageDetector=r(this.modules.languageDetector),i.languageDetector.init(i,this.options.detection,this.options)),this.modules.i18nFormat&&(i.i18nFormat=r(this.modules.i18nFormat),i.i18nFormat.init&&i.i18nFormat.init(this)),this.translator=new P(this.services,this.options),this.translator.on("*",(function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];e.emit.apply(e,[t].concat(r))})),this.modules.external.forEach((function(t){t.init&&t.init(e)}))}if(this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){var a=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);a.length>0&&"dev"!==a[0]&&(this.options.lng=a[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((function(t){e[t]=function(){var n;return(n=e.store)[t].apply(n,arguments)}})),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((function(t){e[t]=function(){var n;return(n=e.store)[t].apply(n,arguments),e}}));var c=E(),s=function(){var t=function(t,r){e.isInitialized&&e.logger.warn("init: i18next is already initialized. You should call init just once!"),e.isInitialized=!0,e.options.isClone||e.logger.log("initialized",e.options),e.emit("initialized",e.options),c.resolve(r),n(t,r)};if(e.languages&&"v1"!==e.options.compatibilityAPI&&!e.isInitialized)return t(null,e.t.bind(e));e.changeLanguage(e.options.lng,t)};return this.options.resources||!this.options.initImmediate?s():setTimeout(s,0),c}},{key:"loadResources",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Y,r="string"==typeof e?e:this.language;if("function"==typeof e&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r&&"cimode"===r.toLowerCase())return n();var o=[],i=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach((function(e){o.indexOf(e)<0&&o.push(e)}))};r?i(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((function(e){return i(e)})),this.options.preload&&this.options.preload.forEach((function(e){return i(e)})),this.services.backendConnector.load(o,this.options.ns,n)}else n(null)}},{key:"reloadResources",value:function(e,t,n){var r=E();return e||(e=this.languages),t||(t=this.options.ns),n||(n=Y),this.services.backendConnector.reload(e,t,(function(e){r.resolve(),n(e)})),r}},{key:"use",value:function(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&O.addPostProcessor(e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"changeLanguage",value:function(e,t){var n=this;this.isLanguageChangingTo=e;var r=E();this.emit("languageChanging",e);var o=function(e){var o="string"==typeof e?e:n.services.languageUtils.getBestMatchFromCodes(e);o&&(n.language||(n.language=o,n.languages=n.services.languageUtils.toResolveHierarchy(o)),n.translator.language||n.translator.changeLanguage(o),n.services.languageDetector&&n.services.languageDetector.cacheUserLanguage(o)),n.loadResources(o,(function(e){!function(e,o){o?(n.language=o,n.languages=n.services.languageUtils.toResolveHierarchy(o),n.translator.changeLanguage(o),n.isLanguageChangingTo=void 0,n.emit("languageChanged",o),n.logger.log("languageChanged",o)):n.isLanguageChangingTo=void 0,r.resolve((function(){return n.t.apply(n,arguments)})),t&&t(e,(function(){return n.t.apply(n,arguments)}))}(e,o)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(o):o(e):o(this.services.languageDetector.detect()),r}},{key:"getFixedT",value:function(e,t){var n=this,r=function e(t,r){var o;if("object"!==l(r)){for(var i=arguments.length,a=new Array(i>2?i-2:0),c=2;c<i;c++)a[c-2]=arguments[c];o=n.options.overloadTranslationOptionHandler([t,r].concat(a))}else o=u({},r);return o.lng=o.lng||e.lng,o.lngs=o.lngs||e.lngs,o.ns=o.ns||e.ns,n.t(t,o)};return"string"==typeof e?r.lng=e:r.lngs=e,r.ns=t,r}},{key:"t",value:function(){var e;return this.translator&&(e=this.translator).translate.apply(e,arguments)}},{key:"exists",value:function(){var e;return this.translator&&(e=this.translator).exists.apply(e,arguments)}},{key:"setDefaultNamespace",value:function(e){this.options.defaultNS=e}},{key:"hasLoadedNamespace",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var r=this.languages[0],o=!!this.options&&this.options.fallbackLng,i=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;var a=function(e,n){var r=t.services.backendConnector.state["".concat(e,"|").concat(n)];return-1===r||2===r};if(n.precheck){var c=n.precheck(this,a);if(void 0!==c)return c}return!!this.hasResourceBundle(r,e)||!this.services.backendConnector.backend||!(!a(r,e)||o&&!a(i,e))}},{key:"loadNamespaces",value:function(e,t){var n=this,r=E();return this.options.ns?("string"==typeof e&&(e=[e]),e.forEach((function(e){n.options.ns.indexOf(e)<0&&n.options.ns.push(e)})),this.loadResources((function(e){r.resolve(),t&&t(e)})),r):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var n=E();"string"==typeof e&&(e=[e]);var r=this.options.preload||[],o=e.filter((function(e){return r.indexOf(e)<0}));return o.length?(this.options.preload=r.concat(o),this.loadResources((function(e){n.resolve(),t&&t(e)})),n):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){return e||(e=this.languages&&this.languages.length>0?this.languages[0]:this.language),e?["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>=0?"rtl":"ltr":"rtl"}},{key:"createInstance",value:function(){return new t(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}},{key:"cloneInstance",value:function(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Y,o=u({},this.options,n,{isClone:!0}),i=new t(o);return["store","services","language"].forEach((function(t){i[t]=e[t]})),i.services=u({},this.services),i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i.translator=new P(i.services,i.options),i.translator.on("*",(function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];i.emit.apply(i,[e].concat(n))})),i.init(o,r),i.translator.options=i.options,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}}]),t}(w);const Z=new H;function J(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?J(Object(n),!0).forEach((function(t){A(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):J(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var X,$={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0},ee=e.createContext(),te=function(){function e(){d(this,e),this.usedNamespaces={}}return y(e,[{key:"addUsedNamespaces",value:function(e){var t=this;e.forEach((function(e){t.usedNamespaces[e]||(t.usedNamespaces[e]=!0)}))}},{key:"getUsedNamespaces",value:function(){return Object.keys(this.usedNamespaces)}}]),e}();var ne,re,oe,ie,ae,ce,le,se={type:"3rdParty",init:function(e){!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};$=K(K({},$),e)}(e.options.react),function(e){X=e}(e)}};!function(e){e.Light="light",e.Dark="dark"}(ne||(ne={})),function(e){e.S="s",e.M="m",e.L="l"}(re||(re={})),function(e){e.M="m",e.L="l"}(oe||(oe={})),function(e){e.Github="github",e.Arcanum="arcanum"}(ie||(ie={})),function(e){e.Ru="ru",e.En="en"}(ae||(ae={})),function(e){e.like="like",e.dislike="dislike",e.indeterminate="indeterminate"}(ce||(ce={})),function(e){e.documentation="documentation",e.page="page"}(le||(le={}));const Ae=JSON.parse('{"controls":{"label_wide_format":"Широкий формат","description_wide_format_enabled":"Включен","description_wide_format_disabled":"Выключен","label_show_mini_toc":"Навигация по текущей статье","description_show_mini_toc":"Показывать навигацию","label_dark_theme":"Темная тема","description_enabled_dark_theme":"Включена","description_disabled_dark_theme":"Выключена","label_text_size":"Размер текста","description_s_text_size":"Уменьшенный","description_m_text_size":"По умолчанию","description_l_text_size":"Увеличенный","full-screen-text-enabled":"Выйти из режима чтения (Esc)","full-screen-text-disabled":"Режим чтения","single-page-text-enabled":"Выйти из одностраничного режима","single-page-text-disabled":"Одностраничный режим","pdf-text":"PDF","edit-text-github":"Редактировать на GitHub","edit-text-arcanum":"Редактировать в Arcanum","edit-text":"Редактировать","settings-text":"Настройки","lang-text":"Язык","like-text":"Статья полезна","dislike-text":"Статья не полезна","cancel-like-text":"Стало хуже","cancel-dislike-text":"Стало лучше","feedback-success-title":"Спасибо!","feedback-success-text":"Ваш ответ поможет сделать документацию лучше","subscribe-text":"Подписаться","subscribe-documentation-title":"Подписаться на весь документ","unsubscribe-documentation-title":"Отписаться от документации","subscribe-documentation-placeholder":"Введите свой email","subscribe-page-title":"Подписаться на текущую страницу","unsubscribe-page-title":"Отписаться от страницы","email-text-invalid":"Неверный адрес электронной почты","email-request-fail":"Произошла ошибка. Пожалуйста, повторите попытку через несколько минут","verify-title":"Подтвердите свою почту","verify-text":"На Ваш почтовый ящик отправлено письмо, содержащее ссылку для подтверждения правильности e-mail адреса. Пожалуйста, перейдите по ссылке в письме для завершения подписки.","dislike-variants-title":"Расскажите, что не так со статьей","send-action-text":"Отправить","skip-action-text":"Пропустить","feedback-comment-placeholder":"Дополнительная информация будет полезна","lang-control-text-ru":"Русский","lang-control-text-en":"English"},"mini-toc":{"title":"В этой статье"},"toc-nav-panel":{"hint_previous":"Предыдущая","hint_next":"Следующая"},"authors":{"title":"Статья создана"},"contributors":{"title":"улучшена"},"feedback":{"like-text":"Статья полезна","dislike-text":"Статья не полезна","cancel-like-text":"Стало хуже","cancel-dislike-text":"Стало лучше","success-title":"Спасибо!","success-text":"Ваш ответ поможет сделать документацию лучше","dislike-variants-title":"Расскажите, что не так со статьей","send-action-text":"Отправить","comment-placeholder":"Дополнительная информация будет полезна","button-like-text":"Да","button-dislike-text":"Нет","main-question":"Была ли статья полезна?"},"search-bar":{"search-query-label":"Найдено по запросу","close":"Закрыть","prev":"Предыдущий","next":"Следующий"},"error":{"label_meta-title-403":"Нет доступа","label_meta-title-404":"Страница не найдена","label_meta-title-500":"Произошла ошибка","label_title-code":"Ошибка {{code}}","label_title-403_project":"Нет доступа к проекту","label_title-403_page-group":"Нет доступа к странице","label_title-404":"Такой страницы нет","label_title-500":"Сервер не смог загрузить страницу","label_description-1":"Мы уже работаем над этим","label_description-link":"Перезагрузить страницу","label_description-2":".","label_link-main":"Вернуться на главную","label_link-access":"Запросить доступ"},"search":{"search_placeholder":"Поиск","search_action":"Найти","search_request-query":"Результаты по запросу","search_not-found-title":"По вашему запросу ничего не найдено","search_not-found-text":"Пожалуйста, проверьте правильность написания или попробуйте другие ключевые слова.","search_mark_like":"то, что нужно","search_mark_dislike":"вообще не про то","search_mark-result-text":"Спасибо за оценку!"}}'),ue=JSON.parse('{"controls":{"label_wide_format":"Wide format","description_wide_format_enabled":"Enabled","description_wide_format_disabled":"Disabled","label_show_mini_toc":"Navigation for the article","description_show_mini_toc":"Show navigation","label_dark_theme":"Dark theme","description_enabled_dark_theme":"Enabled","description_disabled_dark_theme":"Disabled","label_text_size":"Font size","description_s_text_size":"Small","description_m_text_size":"Default","description_l_text_size":"Large","full-screen-text-enabled":"Exit from reading mode (Esc)","full-screen-text-disabled":"Reading mode","single-page-text-enabled":"Exit from single-page mode","single-page-text-disabled":"Single-page mode","pdf-text":"PDF","edit-text-github":"Edit on GitHub","edit-text-arcanum":"Edit on Arcanum","edit-text":"Edit","settings-text":"Settings","lang-text":"Language","like-text":"Helpful","dislike-text":"Not helpful","cancel-like-text":"It got worse","cancel-dislike-text":"It got better","feedback-success-title":"Thank you!","feedback-success-text":"Your answer will help make the documentation better","dislike-variants-title":"Tell us what\'s wrong with the article","subscribe-text":"Subscribe","subscribe-documentation-title":"Subscribe to documentation","unsubscribe-documentation-title":"Unsubscribe from documentation","subscribe-documentation-placeholder":"Enter your email","subscribe-page-title":"Subscribe to current page","unsubscribe-page-title":"Unsubscribe from page","email-text-invalid":"Invalid email address","email-request-fail":"Sorry, the subscription request failed, please try again later","verify-title":"Verify your email","verify-text":"Thanks for subscribing, your verification email has been sent. Please follow the link in email to complete your subscription.","send-action-text":"Send","skip-action-text":"Skip","feedback-comment-placeholder":"Additional information will be useful","lang-control-text-ru":"Русский","lang-control-text-en":"English"},"mini-toc":{"title":"In this article"},"toc-nav-panel":{"hint_previous":"Previous","hint_next":"Next"},"authors":{"title":"Written by"},"contributors":{"title":"improved by"},"feedback":{"like-text":"Helpful","dislike-text":"Not helpful","cancel-like-text":"It got worse","cancel-dislike-text":"It got better","success-title":"Thank you!","success-text":"Your answer will help make the documentation better","dislike-variants-title":"Tell us what\'s wrong with the article","send-action-text":"Send","comment-placeholder":"Additional information will be useful","button-like-text":"Yes","button-dislike-text":"No","main-question":"Was the article helpful?"},"search-bar":{"search-query-label":"Found on request","close":"Close","prev":"Previous","next":"Next"},"error":{"label_meta-title-403":"No access","label_meta-title-404":"Page not found","label_meta-title-500":"An error occurred","label_title-code":"Error {{code}}","label_title-403_project":"No access to the project","label_title-403_page-group":"No access to the page","label_title-404":"Page doesn\'t exist","label_title-500":"The server could not load the page","label_description-1":"We are already working on this","label_description-link":"Refresh the page","label_description-2":".","label_link-main":"Back to main page","label_link-access":"Request access"},"search":{"search_placeholder":"Search","search_action":"Search","search_request-query":"Search results","search_not-found-title":"No results found for your request","search_not-found-text":"Please check the spelling or try another keywords.","search_mark_like":"like","search_mark_dislike":"dislike","search_mark-result-text":"Thank you for your rating!"}}');Z.use(se).init({fallbackLng:ae.En,ns:["controls","mini-toc","toc-nav-panel","authors"],resources:{ru:Ae,en:ue},interpolation:{escapeValue:!1}});var de=n(2853),pe=n(8575);function ye(e){return null==e?void 0:e.replace(/\/index$/,"/")}function ge(e){return e&&e.startsWith("#")?e.substring(1):e}function he(e,t,n){return n?ge(e.hash)===ge((0,pe.Qc)(t).hash):ye(e.pathname)===ye((0,pe.Qc)(t).pathname)}function fe(e){return e.startsWith("http")||e.startsWith("//")}function ve(e,t,n){return[e?"showMiniToc":"",t?"wideFormat":"",n?"singlePage":""].join("|")}function me(e,t){if("function"==typeof e)return e(t);if(void 0===e)return t;throw new Error("Path converter should be a function")}function Ce(e){let t=e;for(;!be(t)&&"BODY"!==t.tagName&&t.parentElement;)t=t.parentElement;return be(t)&&"BODY"!==t.tagName?t:null}function be(e){return["H1","H2","H3","H4","H5","H6"].includes(e.tagName)}function xe(e){const t=document.createElement("div");return t.innerHTML=e.trim(),t.firstChild}const we=()=>Math.random();var Ee=n(6486),_e=n.n(Ee);function ke(){return ke=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ke.apply(this,arguments)}const Be=({styles:t={},...n})=>e.createElement("svg",ke({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16"},n),e.createElement("path",{stroke:"currentColor",fill:"none",d:"M6 12l4-4-4-4"}));var Ie=n(3379),Se=n.n(Ie),De=n(7795),ze=n.n(De),Te=n(3565),Qe=n.n(Te),Me=n(9216),Fe=n.n(Me),Oe=n(4589),Ne=n.n(Oe),Pe=n(1930),Re={};Re.styleTagTransform=Ne(),Re.setAttributes=Qe(),Re.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Re.domAPI=ze(),Re.insertStyleElement=Fe(),Se()(Pe.Z,Re),Pe.Z&&Pe.Z.locals&&Pe.Z.locals;const je=(0,de.Z)("dc-toggle-arrow"),Le=({type:t="horizontal",open:n=!1,size:r=16,thin:o=!1,slow:i=!1,className:a})=>e.createElement(Be,{className:je({type:t,open:n,thin:o,slow:i},a),width:r,height:r});var qe=n(5350),Ue={};Ue.styleTagTransform=Ne(),Ue.setAttributes=Qe(),Ue.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Ue.domAPI=ze(),Ue.insertStyleElement=Fe(),Se()(qe.Z,Ue),qe.Z&&qe.Z.locals&&qe.Z.locals;const Ve=(0,de.Z)("dc-toc-item");class We extends e.Component{constructor(){super(...arguments),this.contentRef=e.createRef(),this.scrollToItem=()=>{var e;if(!this.contentRef.current)return;const t=this.contentRef.current,n=null!==(e=t.offsetHeight)&&void 0!==e?e:0,r=t.offsetTop,o=t.offsetParent;if(!o)return;const i=o.offsetHeight,a=o.scrollTop;r>=a&&r<=a+i-n||(o.scrollTop=r-Math.floor(i/2)+n)},this.handleClick=()=>{const{id:e,href:t,active:n,expanded:r,toggleItem:o}=this.props;!n&&t||o(e,r)}}render(){const{name:t,href:n,active:r,expandable:o,expanded:i}=this.props,a=e.createElement("span",null,t),c=o?e.createElement(Le,{className:Ve("icon"),open:i,thin:!0}):null,l=e.createElement("div",{ref:n?null:this.contentRef,className:Ve("text",{active:r}),onClick:o&&!n?this.handleClick:void 0},c,a);if(!n)return l;const s=fe(n),A={href:n,target:s?"_blank":"_self",rel:s?"noopener noreferrer":void 0};return e.createElement("a",Object.assign({},A,{className:Ve("link"),onClick:o&&n?this.handleClick:void 0,"data-router-shallow":!0}),l)}}const Ge=We,Ye=({children:t,block:n=!1,className:r})=>t?e.createElement(n?"div":"span",{dangerouslySetInnerHTML:{__html:t},className:r}):null;function He(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}function Ze(){if(console&&console.warn){for(var e,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];"string"==typeof n[0]&&(n[0]="react-i18next:: ".concat(n[0])),(e=console).warn.apply(e,n)}}var Je={};function Ke(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];"string"==typeof t[0]&&Je[t[0]]||("string"==typeof t[0]&&(Je[t[0]]=new Date),Ze.apply(void 0,t))}function Xe(e,t,n){e.loadNamespaces(t,(function(){e.isInitialized?n():e.on("initialized",(function t(){setTimeout((function(){e.off("initialized",t)}),0),n()}))}))}function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function et(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach((function(t){A(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function tt(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.i18n,o=(0,e.useContext)(ee)||{},i=o.i18n,a=o.defaultNS,l=r||i||X;if(l&&!l.reportNamespaces&&(l.reportNamespaces=new te),!l){Ke("You will need to pass in an i18next instance by using initReactI18next");var s=function(e){return Array.isArray(e)?e[e.length-1]:e},A=[s,{},!1];return A.t=s,A.i18n={},A.ready=!1,A}l.options.react&&void 0!==l.options.react.wait&&Ke("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");var u=et(et(et({},$),l.options.react),n),d=u.useSuspense,p=u.keyPrefix,y=t||a||l.options&&l.options.defaultNS;y="string"==typeof y?[y]:y||["translation"],l.reportNamespaces.addUsedNamespaces&&l.reportNamespaces.addUsedNamespaces(y);var g=(l.isInitialized||l.initializedStoreOnce)&&y.every((function(e){return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t.languages||!t.languages.length)return Ke("i18n.languages were undefined or empty",t.languages),!0;var r=t.languages[0],o=!!t.options&&t.options.fallbackLng,i=t.languages[t.languages.length-1];if("cimode"===r.toLowerCase())return!0;var a=function(e,n){var r=t.services.backendConnector.state["".concat(e,"|").concat(n)];return-1===r||2===r};return!(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!a(t.isLanguageChangingTo,e)||!t.hasResourceBundle(r,e)&&t.services.backendConnector.backend&&(!a(r,e)||o&&!a(i,e)))}(e,l,u)}));function h(){return l.getFixedT(null,"fallback"===u.nsMode?y:y[0],p)}var f=c((0,e.useState)(h),2),v=f[0],m=f[1],C=(0,e.useRef)(!0);(0,e.useEffect)((function(){var e=u.bindI18n,t=u.bindI18nStore;function n(){C.current&&m(h)}return C.current=!0,g||d||Xe(l,y,(function(){C.current&&m(h)})),e&&l&&l.on(e,n),t&&l&&l.store.on(t,n),function(){C.current=!1,e&&l&&e.split(" ").forEach((function(e){return l.off(e,n)})),t&&l&&t.split(" ").forEach((function(e){return l.store.off(e,n)}))}}),[l,y.join()]);var b=(0,e.useRef)(!0);(0,e.useEffect)((function(){C.current&&!b.current&&m(h),b.current=!1}),[l]);var x=[v,l,g];if(x.t=v,x.i18n=l,x.ready=g,g)return x;if(!g&&!d)return x;throw new Promise((function(e){Xe(l,y,(function(){e()}))}))}var nt=["forwardedRef"];function rt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ot(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?rt(Object(n),!0).forEach((function(t){A(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function it(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(r){function o(o){var i=o.forwardedRef,a=function(e,t){if(null==e)return{};var n,r,o=He(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(o,nt),l=c(tt(t,a),3),s=l[0],A=l[1],u=l[2],d=ot(ot({},a),{},{t:s,i18n:A,tReady:u});return n.withRef&&i?d.ref=i:!n.withRef&&i&&(d.forwardedRef=i),e.createElement(r,d)}var i;return o.displayName="withI18nextTranslation(".concat((i=r).displayName||i.name||("string"==typeof i&&i.length>0?i:"Unknown"),")"),o.WrappedComponent=r,n.withRef?e.forwardRef((function(t,n){return e.createElement(o,Object.assign({},t,{forwardedRef:n}))})):o}}var at=n(2406);const ct="yc-";function lt(e){return(0,at.Z)(`${ct}${e}`)}function st(e){return e.split(/\s(.*)/)[1]}function At(t){return function(n){if(!(0,e.isValidElement)(n))return!1;const{type:r}=n;return r===t||r.displayName===t.displayName}}function ut(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}Object.create,Object.create;const dt=new class{constructor(e){this.subscriptions=[],this.componentPrefix=e}subscribe(e){this.subscriptions.push(e)}unsubscribe(e){const t=this.subscriptions.indexOf(e);t>-1&&this.subscriptions.splice(t,1)}publish(e){var{componentId:t}=e,n=ut(e,["componentId"]);this.subscriptions.forEach((e=>e(Object.assign(Object.assign({},n),{componentId:this.componentPrefix?`${this.componentPrefix}${t}`:t}))))}withEventPublisher(e,t){return n=>{this.publish(Object.assign(Object.assign({},n),{componentId:e,qa:t}))}}}(ct),pt=lt("button"),yt=({side:t,className:n,children:r})=>e.createElement("span",{className:pt("icon",{side:t},n)},e.createElement("span",{className:pt("icon-inner")},r));yt.displayName="Button.Icon";const gt={"aria-hidden":!0};function ht(e){return"object"==typeof e}function ft(e){return"string"==typeof e}var vt=n(2988),mt={};mt.styleTagTransform=Ne(),mt.setAttributes=Qe(),mt.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},mt.domAPI=ze(),mt.insertStyleElement=Fe(),Se()(vt.Z,mt),vt.Z&&vt.Z.locals&&vt.Z.locals;const Ct=lt("icon");function bt({data:t,width:n,height:r,size:o,className:i,fill:a="currentColor",stroke:c="none",qa:l}){let s,A,u;if(o&&(s=o,A=o),n&&(s=n),r&&(A=r),ht(t))({viewBox:u}=t);else if(ft(t))u=function(e){const t=e.match(/viewBox=(["']?)([\d\s,-]+)\1/);return t?t[2]:void 0}(t);else if(function(e){return"object"==typeof e&&"defaultProps"in e}(t))({viewBox:u}=t.defaultProps);else if(function(e){return!("function"!=typeof e||e.prototype&&e.prototype.render)}(t)){const e=t({});e&&({viewBox:u}=e.props)}if(u&&(!s||!A)){const e=u.split(/\s+|\s*,\s*/);s||(s=e[2]),A||(A=e[3])}const d=Object.assign({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:s,height:A,className:Ct(null,i),fill:a,stroke:c,"data-qa":l},gt);if(ft(t)){const n=function(e){return e.replace(/(width|height)=(["']?)\d+\2/g,"")}(t);return e.createElement("svg",Object.assign({},d,{dangerouslySetInnerHTML:{__html:n}}))}if(ht(t)){const n=bt.prefix+(t.url||`#${t.id}`);return e.createElement("svg",Object.assign({},d,{viewBox:u}),e.createElement("use",{href:n,xlinkHref:n}))}const p=t;return p.defaultProps&&(p.defaultProps.width=p.defaultProps.height=void 0),e.createElement("svg",Object.assign({},d),e.createElement(p,{width:void 0,height:void 0}))}bt.displayName="Icon",bt.prefix="";let xt=1;const wt=At(bt);var Et=n(6919),_t={};_t.styleTagTransform=Ne(),_t.setAttributes=Qe(),_t.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},_t.domAPI=ze(),_t.insertStyleElement=Fe(),Se()(Et.Z,_t),Et.Z&&Et.Z.locals&&Et.Z.locals;const kt=lt("button"),Bt=e.forwardRef((function({view:t="normal",size:n="m",pin:r="round-round",selected:o=!1,disabled:i=!1,loading:a=!1,width:c,title:l,tabIndex:s,type:A="button",component:u,href:d,target:p,rel:y,extraProps:g,onClick:h,onMouseEnter:f,onMouseLeave:v,onFocus:m,onBlur:C,children:b,id:x,style:w,className:E,qa:_},k){const B={title:l,tabIndex:s,onClick:h,onClickCapture:e.useCallback((e=>{dt.publish({componentId:"Button",eventId:"click",domEvent:e,meta:{content:e.currentTarget.textContent,view:t}})}),[t]),onMouseEnter:f,onMouseLeave:v,onFocus:m,onBlur:C,id:x,style:w,className:kt({view:t,size:n,pin:r,selected:o,disabled:i||a,loading:a,width:c},E),"data-qa":_};if("string"==typeof d||u){const t={href:d,target:p,rel:"_blank"!==p||y?y:"noopener noreferrer"};return e.createElement(u||"a",Object.assign(Object.assign(Object.assign(Object.assign({},g),B),u?{}:t),{ref:k,"aria-disabled":i||a}),Dt(b))}return e.createElement("button",Object.assign({},g,B,{ref:k,type:A,disabled:i||a}),Dt(b))}));Bt.displayName="Button";const It=Object.assign(Bt,{Icon:yt}),St=At(yt);function Dt(t){const n=e.Children.toArray(t);if(1===n.length){const t=n[0];return St(t)?t:wt(t)?e.createElement(It.Icon,{key:"icon"},t):e.createElement("span",{key:"text",className:kt("text")},t)}{let t,r,o;const i=[];for(const o of n){const n=wt(o),a=St(o);if(n||a)if(t||0!==i.length){if(!r&&0!==i.length){const t="icon-right",i="right";r=n?e.createElement(It.Icon,{key:t,side:i},o):(0,e.cloneElement)(o,{side:i})}}else{const r="icon-left",i="left";t=n?e.createElement(It.Icon,{key:r,side:i},o):(0,e.cloneElement)(o,{side:i})}else i.push(o)}return i.length>0&&(o=e.createElement("span",{key:"text",className:kt("text")},i)),[t,r,o]}}function zt(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,v(e,t)}function Tt(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}var Qt=n(3935);const Mt=e.createContext(null);var Ft=function(e){return e.scrollTop},Ot="unmounted",Nt="exited",Pt="entering",Rt="entered",jt="exiting",Lt=function(t){function n(e,n){var r;r=t.call(this,e,n)||this;var o,i=n&&!n.isMounting?e.enter:e.appear;return r.appearStatus=null,e.in?i?(o=Nt,r.appearStatus=Pt):o=Rt:o=e.unmountOnExit||e.mountOnEnter?Ot:Nt,r.state={status:o},r.nextCallback=null,r}zt(n,t),n.getDerivedStateFromProps=function(e,t){return e.in&&t.status===Ot?{status:Nt}:null};var r=n.prototype;return r.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},r.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Pt&&n!==Rt&&(t=Pt):n!==Pt&&n!==Rt||(t=jt)}this.updateStatus(!1,t)},r.componentWillUnmount=function(){this.cancelNextCallback()},r.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!=typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},r.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===Pt){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:Qt.findDOMNode(this);n&&Ft(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Nt&&this.setState({status:Ot})},r.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[Qt.findDOMNode(this),r],i=o[0],a=o[1],c=this.getTimeouts(),l=r?c.appear:c.enter;e||n?(this.props.onEnter(i,a),this.safeSetState({status:Pt},(function(){t.props.onEntering(i,a),t.onTransitionEnd(l,(function(){t.safeSetState({status:Rt},(function(){t.props.onEntered(i,a)}))}))}))):this.safeSetState({status:Rt},(function(){t.props.onEntered(i)}))},r.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:Qt.findDOMNode(this);t?(this.props.onExit(r),this.safeSetState({status:jt},(function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:Nt},(function(){e.props.onExited(r)}))}))}))):this.safeSetState({status:Nt},(function(){e.props.onExited(r)}))},r.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},r.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},r.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},r.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:Qt.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],i=o[0],a=o[1];this.props.addEndListener(i,a)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},r.render=function(){var t=this.state.status;if(t===Ot)return null;var n=this.props,r=n.children,o=(n.in,n.mountOnEnter,n.unmountOnExit,n.appear,n.enter,n.exit,n.timeout,n.addEndListener,n.onEnter,n.onEntering,n.onEntered,n.onExit,n.onExiting,n.onExited,n.nodeRef,He(n,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return e.createElement(Mt.Provider,{value:null},"function"==typeof r?r(t,o):e.cloneElement(e.Children.only(r),o))},n}(e.Component);function qt(){}Lt.contextType=Mt,Lt.propTypes={},Lt.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:qt,onEntering:qt,onEntered:qt,onExit:qt,onExiting:qt,onExited:qt},Lt.UNMOUNTED=Ot,Lt.EXITED=Nt,Lt.ENTERING=Pt,Lt.ENTERED=Rt,Lt.EXITING=jt;const Ut=Lt;var Vt=function(e,t){return e&&t&&t.split(" ").forEach((function(t){return r=t,void((n=e).classList?n.classList.remove(r):"string"==typeof n.className?n.className=Tt(n.className,r):n.setAttribute("class",Tt(n.className&&n.className.baseVal||"",r)));var n,r}))},Wt=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).appliedClasses={appear:{},enter:{},exit:{}},e.onEnter=function(t,n){var r=e.resolveArguments(t,n),o=r[0],i=r[1];e.removeClasses(o,"exit"),e.addClass(o,i?"appear":"enter","base"),e.props.onEnter&&e.props.onEnter(t,n)},e.onEntering=function(t,n){var r=e.resolveArguments(t,n),o=r[0],i=r[1]?"appear":"enter";e.addClass(o,i,"active"),e.props.onEntering&&e.props.onEntering(t,n)},e.onEntered=function(t,n){var r=e.resolveArguments(t,n),o=r[0],i=r[1]?"appear":"enter";e.removeClasses(o,i),e.addClass(o,i,"done"),e.props.onEntered&&e.props.onEntered(t,n)},e.onExit=function(t){var n=e.resolveArguments(t)[0];e.removeClasses(n,"appear"),e.removeClasses(n,"enter"),e.addClass(n,"exit","base"),e.props.onExit&&e.props.onExit(t)},e.onExiting=function(t){var n=e.resolveArguments(t)[0];e.addClass(n,"exit","active"),e.props.onExiting&&e.props.onExiting(t)},e.onExited=function(t){var n=e.resolveArguments(t)[0];e.removeClasses(n,"exit"),e.addClass(n,"exit","done"),e.props.onExited&&e.props.onExited(t)},e.resolveArguments=function(t,n){return e.props.nodeRef?[e.props.nodeRef.current,t]:[t,n]},e.getClassNames=function(t){var n=e.props.classNames,r="string"==typeof n,o=r?(r&&n?n+"-":"")+t:n[t];return{baseClassName:o,activeClassName:r?o+"-active":n[t+"Active"],doneClassName:r?o+"-done":n[t+"Done"]}},e}zt(n,t);var r=n.prototype;return r.addClass=function(e,t,n){var r=this.getClassNames(t)[n+"ClassName"],o=this.getClassNames("enter").doneClassName;"appear"===t&&"done"===n&&o&&(r+=" "+o),"active"===n&&e&&Ft(e),r&&(this.appliedClasses[t][n]=r,function(e,t){e&&t&&t.split(" ").forEach((function(t){return r=t,void((n=e).classList?n.classList.add(r):function(e,t){return e.classList?!!t&&e.classList.contains(t):-1!==(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")}(n,r)||("string"==typeof n.className?n.className=n.className+" "+r:n.setAttribute("class",(n.className&&n.className.baseVal||"")+" "+r)));var n,r}))}(e,r))},r.removeClasses=function(e,t){var n=this.appliedClasses[t],r=n.base,o=n.active,i=n.done;this.appliedClasses[t]={},r&&Vt(e,r),o&&Vt(e,o),i&&Vt(e,i)},r.render=function(){var t=this.props,n=(t.classNames,He(t,["classNames"]));return e.createElement(Ut,o({},n,{onEnter:this.onEnter,onEntered:this.onEntered,onEntering:this.onEntering,onExit:this.onExit,onExiting:this.onExiting,onExited:this.onExited}))},n}(e.Component);Wt.defaultProps={classNames:""},Wt.propTypes={};const Gt=Wt;function Yt(e){return{appear:st(e({appear:!0})),appearActive:st(e({appear:"active"})),appearDone:st(e({appear:"done"})),enter:st(e({enter:!0})),enterActive:st(e({enter:"active"})),enterDone:st(e({enter:"done"})),exit:st(e({exit:!0})),exitActive:st(e({exit:"active"})),exitDone:st(e({exit:"done"}))}}const Ht=e.createContext({current:null});function Zt({container:t,children:n,disablePortal:r}){const o=function(){var t;const n=(0,e.useContext)(Ht);let r=null;return"object"==typeof window&&(r=window.document.body),null!==(t=n.current)&&void 0!==t?t:r}(),i=null!=t?t:o;return r?e.createElement(e.Fragment,null,n):i?Qt.createPortal(n,i):null}Ht.displayName="PortalContext";const Jt=new class{constructor(){this.stack=[],this.handleDocumentKeyDown=e=>{var t,n,r;if("Escape"===e.code){const r=this.getTopLayer();r.disableEscapeKeyDown||(null===(t=r.onEscapeKeyDown)||void 0===t||t.call(r,e),null===(n=r.onClose)||void 0===n||n.call(r,e,"escapeKeyDown"))}if("Enter"===e.code){const t=this.getTopLayer();null===(r=t.onEnterKeyDown)||void 0===r||r.call(t,e)}},this.handleDocumentClick=e=>{var t,n;let r,o=null;if(this.mouseDownLayerTarget){if(r=this.mouseDownLayerTarget.layer,o=this.mouseDownLayerTarget.target,this.mouseDownLayerTarget=void 0,!this.stack.includes(r))return}else r=this.getTopLayer();!r.disableOutsideClick&&this.isOutsideClick(r,e,o)&&(null===(t=r.onOutsideClick)||void 0===t||t.call(r,e),null===(n=r.onClose)||void 0===n||n.call(r,e,"outsideClick"))},this.handleDocumentMouseDown=e=>{const t=this.getTopLayer();t&&(this.mouseDownLayerTarget={layer:t,target:e.target})}}add(e){this.stack.push(e),1===this.stack.length&&this.addListeners(),this.notifyLayersChange()}remove(e){const t=this.stack.indexOf(e);this.stack.splice(t,1),0===this.stack.length&&this.removeListeners(),this.notifyLayersChange()}getLayersCount(){return this.stack.length}addListeners(){document.addEventListener("keydown",this.handleDocumentKeyDown),document.addEventListener("click",this.handleDocumentClick,!0),document.addEventListener("mousedown",this.handleDocumentMouseDown,!0)}removeListeners(){document.removeEventListener("keydown",this.handleDocumentKeyDown),document.removeEventListener("click",this.handleDocumentClick,!0),document.removeEventListener("mousedown",this.handleDocumentMouseDown,!0)}notifyLayersChange(){dt.publish({componentId:"LayerManager",eventId:"layerschange",meta:{layersCount:this.getLayersCount()}})}getTopLayer(){return this.stack[this.stack.length-1]}isOutsideClick(e,t,n=null){const r=e.contentRefs||[],{target:o}=t,i="function"==typeof t.composedPath?t.composedPath():[];return r.length>0&&!r.some((e=>{var t,r,a,c;return(null===(r=null===(t=null==e?void 0:e.current)||void 0===t?void 0:t.contains)||void 0===r?void 0:r.call(t,o))||(null===(c=null===(a=null==e?void 0:e.current)||void 0===a?void 0:a.contains)||void 0===c?void 0:c.call(a,n))||i.includes(null==e?void 0:e.current)}))}};function Kt(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Xt(e){return e instanceof Kt(e).Element||e instanceof Element}function $t(e){return e instanceof Kt(e).HTMLElement||e instanceof HTMLElement}function en(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Kt(e).ShadowRoot||e instanceof ShadowRoot)}var tn=Math.max,nn=Math.min,rn=Math.round;function on(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function an(){return!/^((?!chrome|android).)*safari/i.test(on())}function cn(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),o=1,i=1;t&&$t(e)&&(o=e.offsetWidth>0&&rn(r.width)/e.offsetWidth||1,i=e.offsetHeight>0&&rn(r.height)/e.offsetHeight||1);var a=(Xt(e)?Kt(e):window).visualViewport,c=!an()&&n,l=(r.left+(c&&a?a.offsetLeft:0))/o,s=(r.top+(c&&a?a.offsetTop:0))/i,A=r.width/o,u=r.height/i;return{width:A,height:u,top:s,right:l+A,bottom:s+u,left:l,x:l,y:s}}function ln(e){var t=Kt(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function sn(e){return e?(e.nodeName||"").toLowerCase():null}function An(e){return((Xt(e)?e.ownerDocument:e.document)||window.document).documentElement}function un(e){return cn(An(e)).left+ln(e).scrollLeft}function dn(e){return Kt(e).getComputedStyle(e)}function pn(e){var t=dn(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function yn(e,t,n){void 0===n&&(n=!1);var r,o,i=$t(t),a=$t(t)&&function(e){var t=e.getBoundingClientRect(),n=rn(t.width)/e.offsetWidth||1,r=rn(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),c=An(t),l=cn(e,a,n),s={scrollLeft:0,scrollTop:0},A={x:0,y:0};return(i||!i&&!n)&&(("body"!==sn(t)||pn(c))&&(s=(r=t)!==Kt(r)&&$t(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:ln(r)),$t(t)?((A=cn(t,!0)).x+=t.clientLeft,A.y+=t.clientTop):c&&(A.x=un(c))),{x:l.left+s.scrollLeft-A.x,y:l.top+s.scrollTop-A.y,width:l.width,height:l.height}}function gn(e){var t=cn(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function hn(e){return"html"===sn(e)?e:e.assignedSlot||e.parentNode||(en(e)?e.host:null)||An(e)}function fn(e){return["html","body","#document"].indexOf(sn(e))>=0?e.ownerDocument.body:$t(e)&&pn(e)?e:fn(hn(e))}function vn(e,t){var n;void 0===t&&(t=[]);var r=fn(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),i=Kt(r),a=o?[i].concat(i.visualViewport||[],pn(r)?r:[]):r,c=t.concat(a);return o?c:c.concat(vn(hn(a)))}function mn(e){return["table","td","th"].indexOf(sn(e))>=0}function Cn(e){return $t(e)&&"fixed"!==dn(e).position?e.offsetParent:null}function bn(e){for(var t=Kt(e),n=Cn(e);n&&mn(n)&&"static"===dn(n).position;)n=Cn(n);return n&&("html"===sn(n)||"body"===sn(n)&&"static"===dn(n).position)?t:n||function(e){var t=/firefox/i.test(on());if(/Trident/i.test(on())&&$t(e)&&"fixed"===dn(e).position)return null;var n=hn(e);for(en(n)&&(n=n.host);$t(n)&&["html","body"].indexOf(sn(n))<0;){var r=dn(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}var xn="top",wn="bottom",En="right",_n="left",kn="auto",Bn=[xn,wn,En,_n],In="start",Sn="end",Dn="viewport",zn="popper",Tn=Bn.reduce((function(e,t){return e.concat([t+"-"+In,t+"-"+Sn])}),[]),Qn=[].concat(Bn,[kn]).reduce((function(e,t){return e.concat([t,t+"-"+In,t+"-"+Sn])}),[]),Mn=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Fn(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}var On={placement:"bottom",modifiers:[],strategy:"absolute"};function Nn(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some((function(e){return!(e&&"function"==typeof e.getBoundingClientRect)}))}function Pn(e){void 0===e&&(e={});var t=e,n=t.defaultModifiers,r=void 0===n?[]:n,o=t.defaultOptions,i=void 0===o?On:o;return function(e,t,n){void 0===n&&(n=i);var o,a,c={placement:"bottom",orderedModifiers:[],options:Object.assign({},On,i),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],s=!1,A={state:c,setOptions:function(n){var o="function"==typeof n?n(c.options):n;u(),c.options=Object.assign({},i,c.options,o),c.scrollParents={reference:Xt(e)?vn(e):e.contextElement?vn(e.contextElement):[],popper:vn(t)};var a,s,d=function(e){var t=Fn(e);return Mn.reduce((function(e,n){return e.concat(t.filter((function(e){return e.phase===n})))}),[])}((a=[].concat(r,c.options.modifiers),s=a.reduce((function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e}),{}),Object.keys(s).map((function(e){return s[e]}))));return c.orderedModifiers=d.filter((function(e){return e.enabled})),c.orderedModifiers.forEach((function(e){var t=e.name,n=e.options,r=void 0===n?{}:n,o=e.effect;if("function"==typeof o){var i=o({state:c,name:t,instance:A,options:r});l.push(i||function(){})}})),A.update()},forceUpdate:function(){if(!s){var e=c.elements,t=e.reference,n=e.popper;if(Nn(t,n)){c.rects={reference:yn(t,bn(n),"fixed"===c.options.strategy),popper:gn(n)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach((function(e){return c.modifiersData[e.name]=Object.assign({},e.data)}));for(var r=0;r<c.orderedModifiers.length;r++)if(!0!==c.reset){var o=c.orderedModifiers[r],i=o.fn,a=o.options,l=void 0===a?{}:a,u=o.name;"function"==typeof i&&(c=i({state:c,options:l,name:u,instance:A})||c)}else c.reset=!1,r=-1}}},update:(o=function(){return new Promise((function(e){A.forceUpdate(),e(c)}))},function(){return a||(a=new Promise((function(e){Promise.resolve().then((function(){a=void 0,e(o())}))}))),a}),destroy:function(){u(),s=!0}};if(!Nn(e,t))return A;function u(){l.forEach((function(e){return e()})),l=[]}return A.setOptions(n).then((function(e){!s&&n.onFirstUpdate&&n.onFirstUpdate(e)})),A}}var Rn={passive:!0};const jn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=void 0===o||o,a=r.resize,c=void 0===a||a,l=Kt(t.elements.popper),s=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&s.forEach((function(e){e.addEventListener("scroll",n.update,Rn)})),c&&l.addEventListener("resize",n.update,Rn),function(){i&&s.forEach((function(e){e.removeEventListener("scroll",n.update,Rn)})),c&&l.removeEventListener("resize",n.update,Rn)}},data:{}};function Ln(e){return e.split("-")[0]}function qn(e){return e.split("-")[1]}function Un(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Vn(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?Ln(o):null,a=o?qn(o):null,c=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(i){case xn:t={x:c,y:n.y-r.height};break;case wn:t={x:c,y:n.y+n.height};break;case En:t={x:n.x+n.width,y:l};break;case _n:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var s=i?Un(i):null;if(null!=s){var A="y"===s?"height":"width";switch(a){case In:t[s]=t[s]-(n[A]/2-r[A]/2);break;case Sn:t[s]=t[s]+(n[A]/2-r[A]/2)}}return t}var Wn={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Gn(e){var t,n=e.popper,r=e.popperRect,o=e.placement,i=e.variation,a=e.offsets,c=e.position,l=e.gpuAcceleration,s=e.adaptive,A=e.roundOffsets,u=e.isFixed,d=a.x,p=void 0===d?0:d,y=a.y,g=void 0===y?0:y,h="function"==typeof A?A({x:p,y:g}):{x:p,y:g};p=h.x,g=h.y;var f=a.hasOwnProperty("x"),v=a.hasOwnProperty("y"),m=_n,C=xn,b=window;if(s){var x=bn(n),w="clientHeight",E="clientWidth";x===Kt(n)&&"static"!==dn(x=An(n)).position&&"absolute"===c&&(w="scrollHeight",E="scrollWidth"),(o===xn||(o===_n||o===En)&&i===Sn)&&(C=wn,g-=(u&&x===b&&b.visualViewport?b.visualViewport.height:x[w])-r.height,g*=l?1:-1),o!==_n&&(o!==xn&&o!==wn||i!==Sn)||(m=En,p-=(u&&x===b&&b.visualViewport?b.visualViewport.width:x[E])-r.width,p*=l?1:-1)}var _,k=Object.assign({position:c},s&&Wn),B=!0===A?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:rn(n*o)/o||0,y:rn(r*o)/o||0}}({x:p,y:g},Kt(n)):{x:p,y:g};return p=B.x,g=B.y,l?Object.assign({},k,((_={})[C]=v?"0":"",_[m]=f?"0":"",_.transform=(b.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",_)):Object.assign({},k,((t={})[C]=v?g+"px":"",t[m]=f?p+"px":"",t.transform="",t))}const Yn={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,c=n.roundOffsets,l=void 0===c||c,s={placement:Ln(t.placement),variation:qn(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Gn(Object.assign({},s,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Gn(Object.assign({},s,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Hn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=Qn.reduce((function(e,n){return e[n]=function(e,t,n){var r=Ln(e),o=[_n,xn].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],c=i[1];return a=a||0,c=(c||0)*o,[_n,En].indexOf(r)>=0?{x:c,y:a}:{x:a,y:c}}(n,t.rects,i),e}),{}),c=a[t.placement],l=c.x,s=c.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=s),t.modifiersData[r]=a}};var Zn={left:"right",right:"left",bottom:"top",top:"bottom"};function Jn(e){return e.replace(/left|right|bottom|top/g,(function(e){return Zn[e]}))}var Kn={start:"end",end:"start"};function Xn(e){return e.replace(/start|end/g,(function(e){return Kn[e]}))}function $n(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&en(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function er(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function tr(e,t,n){return t===Dn?er(function(e,t){var n=Kt(e),r=An(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,c=0,l=0;if(o){i=o.width,a=o.height;var s=an();(s||!s&&"fixed"===t)&&(c=o.offsetLeft,l=o.offsetTop)}return{width:i,height:a,x:c+un(e),y:l}}(e,n)):Xt(t)?function(e,t){var n=cn(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):er(function(e){var t,n=An(e),r=ln(e),o=null==(t=e.ownerDocument)?void 0:t.body,i=tn(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=tn(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),c=-r.scrollLeft+un(e),l=-r.scrollTop;return"rtl"===dn(o||n).direction&&(c+=tn(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:c,y:l}}(An(e)))}function nr(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function rr(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function or(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,i=n.strategy,a=void 0===i?e.strategy:i,c=n.boundary,l=void 0===c?"clippingParents":c,s=n.rootBoundary,A=void 0===s?Dn:s,u=n.elementContext,d=void 0===u?zn:u,p=n.altBoundary,y=void 0!==p&&p,g=n.padding,h=void 0===g?0:g,f=nr("number"!=typeof h?h:rr(h,Bn)),v=d===zn?"reference":zn,m=e.rects.popper,C=e.elements[y?v:d],b=function(e,t,n,r){var o="clippingParents"===t?function(e){var t=vn(hn(e)),n=["absolute","fixed"].indexOf(dn(e).position)>=0&&$t(e)?bn(e):e;return Xt(n)?t.filter((function(e){return Xt(e)&&$n(e,n)&&"body"!==sn(e)})):[]}(e):[].concat(t),i=[].concat(o,[n]),a=i[0],c=i.reduce((function(t,n){var o=tr(e,n,r);return t.top=tn(o.top,t.top),t.right=nn(o.right,t.right),t.bottom=nn(o.bottom,t.bottom),t.left=tn(o.left,t.left),t}),tr(e,a,r));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c}(Xt(C)?C:C.contextElement||An(e.elements.popper),l,A,a),x=cn(e.elements.reference),w=Vn({reference:x,element:m,strategy:"absolute",placement:o}),E=er(Object.assign({},m,w)),_=d===zn?E:x,k={top:b.top-_.top+f.top,bottom:_.bottom-b.bottom+f.bottom,left:b.left-_.left+f.left,right:_.right-b.right+f.right},B=e.modifiersData.offset;if(d===zn&&B){var I=B[o];Object.keys(k).forEach((function(e){var t=[En,wn].indexOf(e)>=0?1:-1,n=[xn,wn].indexOf(e)>=0?"y":"x";k[e]+=I[n]*t}))}return k}const ir={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,c=void 0===a||a,l=n.fallbackPlacements,s=n.padding,A=n.boundary,u=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,y=void 0===p||p,g=n.allowedAutoPlacements,h=t.options.placement,f=Ln(h),v=l||(f!==h&&y?function(e){if(Ln(e)===kn)return[];var t=Jn(e);return[Xn(e),t,Xn(t)]}(h):[Jn(h)]),m=[h].concat(v).reduce((function(e,n){return e.concat(Ln(n)===kn?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,c=n.flipVariations,l=n.allowedAutoPlacements,s=void 0===l?Qn:l,A=qn(r),u=A?c?Tn:Tn.filter((function(e){return qn(e)===A})):Bn,d=u.filter((function(e){return s.indexOf(e)>=0}));0===d.length&&(d=u);var p=d.reduce((function(t,n){return t[n]=or(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[Ln(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}(t,{placement:n,boundary:A,rootBoundary:u,padding:s,flipVariations:y,allowedAutoPlacements:g}):n)}),[]),C=t.rects.reference,b=t.rects.popper,x=new Map,w=!0,E=m[0],_=0;_<m.length;_++){var k=m[_],B=Ln(k),I=qn(k)===In,S=[xn,wn].indexOf(B)>=0,D=S?"width":"height",z=or(t,{placement:k,boundary:A,rootBoundary:u,altBoundary:d,padding:s}),T=S?I?En:_n:I?wn:xn;C[D]>b[D]&&(T=Jn(T));var Q=Jn(T),M=[];if(i&&M.push(z[B]<=0),c&&M.push(z[T]<=0,z[Q]<=0),M.every((function(e){return e}))){E=k,w=!1;break}x.set(k,M)}if(w)for(var F=function(e){var t=m.find((function(t){var n=x.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},O=y?3:1;O>0&&"break"!==F(O);O--);t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ar(e,t,n){return tn(e,nn(t,n))}const cr={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,i=void 0===o||o,a=n.altAxis,c=void 0!==a&&a,l=n.boundary,s=n.rootBoundary,A=n.altBoundary,u=n.padding,d=n.tether,p=void 0===d||d,y=n.tetherOffset,g=void 0===y?0:y,h=or(t,{boundary:l,rootBoundary:s,padding:u,altBoundary:A}),f=Ln(t.placement),v=qn(t.placement),m=!v,C=Un(f),b="x"===C?"y":"x",x=t.modifiersData.popperOffsets,w=t.rects.reference,E=t.rects.popper,_="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,k="number"==typeof _?{mainAxis:_,altAxis:_}:Object.assign({mainAxis:0,altAxis:0},_),B=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(x){if(i){var S,D="y"===C?xn:_n,z="y"===C?wn:En,T="y"===C?"height":"width",Q=x[C],M=Q+h[D],F=Q-h[z],O=p?-E[T]/2:0,N=v===In?w[T]:E[T],P=v===In?-E[T]:-w[T],R=t.elements.arrow,j=p&&R?gn(R):{width:0,height:0},L=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},q=L[D],U=L[z],V=ar(0,w[T],j[T]),W=m?w[T]/2-O-V-q-k.mainAxis:N-V-q-k.mainAxis,G=m?-w[T]/2+O+V+U+k.mainAxis:P+V+U+k.mainAxis,Y=t.elements.arrow&&bn(t.elements.arrow),H=Y?"y"===C?Y.clientTop||0:Y.clientLeft||0:0,Z=null!=(S=null==B?void 0:B[C])?S:0,J=Q+G-Z,K=ar(p?nn(M,Q+W-Z-H):M,Q,p?tn(F,J):F);x[C]=K,I[C]=K-Q}if(c){var X,$="x"===C?xn:_n,ee="x"===C?wn:En,te=x[b],ne="y"===b?"height":"width",re=te+h[$],oe=te-h[ee],ie=-1!==[xn,_n].indexOf(f),ae=null!=(X=null==B?void 0:B[b])?X:0,ce=ie?re:te-w[ne]-E[ne]-ae+k.altAxis,le=ie?te+w[ne]+E[ne]-ae-k.altAxis:oe,se=p&&ie?function(e,t,n){var r=ar(e,t,n);return r>n?n:r}(ce,te,le):ar(p?ce:re,te,p?le:oe);x[b]=se,I[b]=se-te}t.modifiersData[r]=I}},requiresIfExists:["offset"]},lr={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,c=Ln(n.placement),l=Un(c),s=[_n,En].indexOf(c)>=0?"height":"width";if(i&&a){var A=function(e,t){return nr("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:rr(e,Bn))}(o.padding,n),u=gn(i),d="y"===l?xn:_n,p="y"===l?wn:En,y=n.rects.reference[s]+n.rects.reference[l]-a[l]-n.rects.popper[s],g=a[l]-n.rects.reference[l],h=bn(i),f=h?"y"===l?h.clientHeight||0:h.clientWidth||0:0,v=y/2-g/2,m=A[d],C=f-u[s]-A[p],b=f/2-u[s]/2+v,x=ar(m,b,C),w=l;n.modifiersData[r]=((t={})[w]=x,t.centerOffset=x-b,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&$n(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function sr(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Ar(e){return[xn,En,wn,_n].some((function(t){return e[t]>=0}))}var ur=Pn({defaultModifiers:[jn,{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=Vn({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},Yn,{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];$t(o)&&sn(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});$t(r)&&sn(r)&&(Object.assign(r.style,i),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]},Hn,ir,cr,lr,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=or(t,{elementContext:"reference"}),c=or(t,{altBoundary:!0}),l=sr(a,r),s=sr(c,o,i),A=Ar(l),u=Ar(s);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:s,isReferenceHidden:A,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":A,"data-popper-escaped":u})}}]}),dr=n(9590),pr=n.n(dr),yr=function(e){return e.reduce((function(e,t){var n=t[0],r=t[1];return e[n]=r,e}),{})},gr="undefined"!=typeof window&&window.document&&window.document.createElement?e.useLayoutEffect:e.useEffect,hr=[];const fr=["bottom-start","bottom","bottom-end","top-start","top","top-end","right-start","right","right-end","left-start","left","left-end"];function vr(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function mr(...t){return e.useMemo((()=>t.every((e=>null==e))?null:e=>{for(const n of t)vr(n,e)}),t)}var Cr=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],br=Cr.join(","),xr="undefined"==typeof Element,wr=xr?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Er=!xr&&Element.prototype.getRootNode?function(e){var t;return null==e||null===(t=e.getRootNode)||void 0===t?void 0:t.call(e)}:function(e){return null==e?void 0:e.ownerDocument},_r=function e(t,n){var r;void 0===n&&(n=!0);var o=null==t||null===(r=t.getAttribute)||void 0===r?void 0:r.call(t,"inert");return""===o||"true"===o||n&&t&&e(t.parentNode)},kr=function(e){return"INPUT"===e.tagName},Br=function(e){var t=e.getBoundingClientRect(),n=t.width,r=t.height;return 0===n&&0===r},Ir=function(e,t){return!(t.disabled||_r(t)||function(e){return kr(e)&&"hidden"===e.type}(t)||function(e,t){var n=t.displayCheck,r=t.getShadowRoot;if("hidden"===getComputedStyle(e).visibility)return!0;var o=wr.call(e,"details>summary:first-of-type")?e.parentElement:e;if(wr.call(o,"details:not([open]) *"))return!0;if(n&&"full"!==n&&"legacy-full"!==n){if("non-zero-area"===n)return Br(e)}else{if("function"==typeof r){for(var i=e;e;){var a=e.parentElement,c=Er(e);if(a&&!a.shadowRoot&&!0===r(a))return Br(e);e=e.assignedSlot?e.assignedSlot:a||c===e.ownerDocument?a:c.host}e=i}if(function(e){var t,n,r,o,i=e&&Er(e),a=null===(t=i)||void 0===t?void 0:t.host,c=!1;if(i&&i!==e)for(c=!!(null!==(n=a)&&void 0!==n&&null!==(r=n.ownerDocument)&&void 0!==r&&r.contains(a)||null!=e&&null!==(o=e.ownerDocument)&&void 0!==o&&o.contains(e));!c&&a;){var l,s,A;c=!(null===(s=a=null===(l=i=Er(a))||void 0===l?void 0:l.host)||void 0===s||null===(A=s.ownerDocument)||void 0===A||!A.contains(a))}return c}(e))return!e.getClientRects().length;if("legacy-full"!==n)return!0}return!1}(t,e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(t)||function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if("FIELDSET"===t.tagName&&t.disabled){for(var n=0;n<t.children.length;n++){var r=t.children.item(n);if("LEGEND"===r.tagName)return!!wr.call(t,"fieldset[disabled] *")||!r.contains(e)}return!0}t=t.parentElement}return!1}(t))},Sr=function(e,t){return!(function(e){return function(e){return kr(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||Er(e),r=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=r(window.CSS.escape(e.name));else try{t=r(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var o=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!o||o===e}(e)}(t)||function(e,t){return e.tabIndex<0&&(t||/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||function(e){var t,n=null==e||null===(t=e.getAttribute)||void 0===t?void 0:t.call(e,"contenteditable");return""===n||"true"===n}(e))&&isNaN(parseInt(e.getAttribute("tabindex"),10))?0:e.tabIndex}(t)<0||!Ir(e,t))},Dr=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==wr.call(e,br)&&Sr(t,e)},zr=Cr.concat("iframe").join(","),Tr=n(1212),Qr={};Qr.styleTagTransform=Ne(),Qr.setAttributes=Qe(),Qr.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Qr.domAPI=ze(),Qr.insertStyleElement=Fe(),Se()(Tr.Z,Qr),Tr.Z&&Tr.Z.locals&&Tr.Z.locals;const Mr=lt("popup");function Fr({styles:t,attributes:n,setArrowRef:r}){return e.createElement("div",Object.assign({"data-popper-arrow":!0,ref:r,className:Mr("arrow"),style:t},n),e.createElement("div",{className:Mr("arrow-content")},e.createElement("div",{className:Mr("arrow-circle-wrapper")},e.createElement("div",{className:Mr("arrow-circle",{left:!0})})),e.createElement("div",{className:Mr("arrow-circle-wrapper")},e.createElement("div",{className:Mr("arrow-circle",{right:!0})}))))}function Or(){return e.useRef(`${ct}uniq-${xt++}`).current}const Nr=e.createContext(void 0),Pr=lt("popup"),Rr=lt("popup-wrapper");function jr({keepMounted:t=!1,hasArrow:n=!1,offset:r=[0,4],open:o,placement:i,anchorRef:a,disableEscapeKeyDown:c,disableOutsideClick:l,disableLayer:s,style:A,className:u,modifiers:d=[],children:p,onEscapeKeyDown:y,onOutsideClick:g,onClose:h,onClick:f,onMouseEnter:v,onMouseLeave:m,disablePortal:C,container:b,strategy:x,qa:w,restoreFocus:E,restoreFocusRef:_}){const k=e.useRef(null);!function({open:t,disableEscapeKeyDown:n,disableOutsideClick:r,onEscapeKeyDown:o,onEnterKeyDown:i,onOutsideClick:a,onClose:c,contentRefs:l,enabled:s=!0}){const A=e.useRef({disableEscapeKeyDown:n,disableOutsideClick:r,onEscapeKeyDown:o,onEnterKeyDown:i,onOutsideClick:a,onClose:c,contentRefs:l});e.useEffect((()=>{Object.assign(A.current,{disableEscapeKeyDown:n,disableOutsideClick:r,onEscapeKeyDown:o,onEnterKeyDown:i,onOutsideClick:a,onClose:c,contentRefs:l,enabled:s})}),[n,r,o,i,a,c,l,s]),e.useEffect((()=>{if(t&&s){const e=A.current;return Jt.add(e),()=>{Jt.remove(e)}}}),[t,s])}({open:o,disableEscapeKeyDown:c,disableOutsideClick:l,onEscapeKeyDown:y,onOutsideClick:g,onClose:h,contentRefs:[a,k],enabled:!s});const{attributes:B,styles:I,setPopperRef:S,setArrowRef:D}=function({anchorRef:t,placement:n=fr,offset:r,modifiers:o=[],strategy:i,altBoundary:a}){const[c,l]=e.useState(null),[s,A]=e.useState(null),u=Array.isArray(n)?n:[n],{attributes:d,styles:p}=function(t,n,r){void 0===r&&(r={});var o=e.useRef(null),i={onFirstUpdate:r.onFirstUpdate,placement:r.placement||"bottom",strategy:r.strategy||"absolute",modifiers:r.modifiers||hr},a=e.useState({styles:{popper:{position:i.strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),c=a[0],l=a[1],s=e.useMemo((function(){return{name:"updateState",enabled:!0,phase:"write",fn:function(e){var t=e.state,n=Object.keys(t.elements);Qt.flushSync((function(){l({styles:yr(n.map((function(e){return[e,t.styles[e]||{}]}))),attributes:yr(n.map((function(e){return[e,t.attributes[e]]})))})}))},requires:["computeStyles"]}}),[]),A=e.useMemo((function(){var e={onFirstUpdate:i.onFirstUpdate,placement:i.placement,strategy:i.strategy,modifiers:[].concat(i.modifiers,[s,{name:"applyStyles",enabled:!1}])};return pr()(o.current,e)?o.current||e:(o.current=e,e)}),[i.onFirstUpdate,i.placement,i.strategy,i.modifiers,s]),u=e.useRef();return gr((function(){u.current&&u.current.setOptions(A)}),[A]),gr((function(){if(null!=t&&null!=n){var e=(r.createPopper||ur)(t,n,A);return u.current=e,function(){e.destroy(),u.current=null}}}),[t,n,r.createPopper]),{state:u.current?u.current.state:null,styles:c.styles,attributes:c.attributes,update:u.current?u.current.update:null,forceUpdate:u.current?u.current.forceUpdate:null}}(null==t?void 0:t.current,c,{strategy:i,modifiers:[{name:"arrow",options:{element:s}},{name:"offset",options:{offset:r,altBoundary:a}},{name:"flip",options:{fallbackPlacements:u.slice(1),altBoundary:a}},...o],placement:u[0]});return{attributes:d,styles:p,setPopperRef:l,setArrowRef:A}}({anchorRef:a,placement:i,offset:n?[r[0],r[1]+8]:r,strategy:x,altBoundary:C,modifiers:[{name:"arrow",options:{enabled:n,padding:4}},{name:"preventOverflow",options:{padding:1,altBoundary:C}},...d]}),z=mr(S,k,function(){const t=(0,e.useContext)(Nr),n=Or();return e.useMemo((()=>{if(t)return e=>{e?t.addNode(n,e):t.removeNode(n)}}),[t,n])}()),T=function({enabled:t,restoreFocusRef:n,focusTrapped:r}){const o=e.useRef(null),i=e.useRef(null),a=e.useRef(null);return e.useEffect((()=>{if(!t)return;const e=e=>{const t=e.target;!r&&t instanceof HTMLElement&&Dr(t)&&(a.current=t)},n=e=>{const t=e.target;t instanceof HTMLElement&&Dr(t)?a.current=t:a.current=null};return window.addEventListener("focusin",e),window.addEventListener("mousedown",n),window.addEventListener("touchstart",n),()=>{window.removeEventListener("focusin",e),window.removeEventListener("mousedown",n),window.removeEventListener("touchstart",n)}}),[t,r]),e.useEffect((()=>{var e;o.current=null!==(e=(null==n?void 0:n.current)||i.current)&&void 0!==e?e:null})),e.useEffect((()=>{if(t)return()=>{let e=o.current;const t=a.current;t&&document.contains(t)&&Dr(t)&&(e=t),e&&"function"==typeof e.focus&&document.contains(e)&&function(e,t){if(t=t||{},!e)throw new Error("No node provided");return!1!==wr.call(e,zr)&&Ir(t,e)}(e)&&(e!==document.activeElement&&setTimeout((()=>{null==e||e.focus()}),0),i.current=null,a.current=null)}}),[t]),{onFocus:e=>{t&&null===i.current&&(i.current=e.relatedTarget,a.current=i.current)}}}({enabled:Boolean(E&&o),restoreFocusRef:_});return e.createElement(Zt,{container:b,disablePortal:C},e.createElement(Gt,{nodeRef:k,in:o,addEndListener:e=>{var t;return null===(t=k.current)||void 0===t?void 0:t.addEventListener("animationend",e)},classNames:Yt(Rr),mountOnEnter:!t,unmountOnExit:!t,appear:!0},e.createElement("div",Object.assign({ref:z,style:I.popper},B.popper,T,{className:Rr({open:o})}),e.createElement("div",{onClick:f,onMouseEnter:v,onMouseLeave:m,className:Pr({open:o},u),style:A,"data-qa":w},n&&e.createElement(Fr,{styles:I.arrow,attributes:B.arrow,setArrowRef:D}),p))))}var Lr;!function(e){e.BOTTOM_START="bottom-start",e.BOTTOM="bottom",e.BOTTOM_END="bottom-end",e.TOP_START="top-start",e.TOP="top",e.TOP_END="top-end",e.RIGHT_START="right-start",e.RIGHT="right",e.RIGHT_END="right-end",e.LEFT_START="left-start",e.LEFT="left",e.LEFT_END="left-end"}(Lr||(Lr={})),Object.values(Lr);var qr=n(3484),Ur={};Ur.styleTagTransform=Ne(),Ur.setAttributes=Qe(),Ur.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Ur.domAPI=ze(),Ur.insertStyleElement=Fe(),Se()(qr.Z,Ur),qr.Z&&qr.Z.locals&&qr.Z.locals;const Vr=(0,de.Z)("dc-control"),Wr={[oe.M]:16,[oe.L]:20},Gr=t=>{const{onClick:n,className:r,tooltipText:o,isVerticalView:i,setRef:a,size:c=oe.M,icon:l,popupPosition:s}=t,A=(0,e.useRef)(null),[u,d]=(0,e.useState)(!1),p=()=>d(!1),y=(0,e.useCallback)((()=>s||(i?Lr.LEFT_START:Lr.BOTTOM_END)),[i,s]),g=(0,e.useCallback)((e=>{A.current=e,a&&a(e)}),[a]),h=y(),f=l,v=Wr[c];return e.createElement(e.Fragment,null,e.createElement(It,{view:"flat-secondary",onClick:n,ref:g,onMouseEnter:()=>d(!0),onMouseLeave:p,className:Vr(null,r),size:c},e.createElement(It.Icon,null,e.createElement(f,{width:v,height:v}))),e.createElement(jr,{anchorRef:A,open:u,onOutsideClick:p,className:Vr("tooltip"),placement:h},e.createElement("span",{className:Vr("tooltip-text")},o)))};Gr.displayName="DCControl";const Yr=Gr;var Hr=n(4249),Zr={};Zr.styleTagTransform=Ne(),Zr.setAttributes=Qe(),Zr.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Zr.domAPI=ze(),Zr.insertStyleElement=Fe(),Se()(Hr.Z,Zr),Hr.Z&&Hr.Z.locals&&Hr.Z.locals;const Jr=lt("control-label"),Kr=(0,e.forwardRef)((({children:t,className:n,labelClassName:r,title:o,style:i,disabled:a=!1,control:c,size:l="m",qa:s},A)=>{const u=(0,e.cloneElement)(c,{className:Jr("indicator",c.props.className)});return e.createElement("label",{ref:A,title:o,style:i,className:Jr({size:l,disabled:a},n),"data-qa":s},u,t?e.createElement("span",{className:Jr("text",r)},t):null)}));function Xr({name:t,value:n,id:r,defaultChecked:o,checked:i,indeterminate:a,onUpdate:c,onChange:l,controlRef:s,controlProps:A,onFocus:u,onBlur:d,disabled:p}){const y=e.useRef(null),[g,h]=e.useState(null!=o&&o),f="boolean"==typeof i,v=f?i:g,m=!a&&i,C=a?"mixed":v,b=mr(s,y);e.useLayoutEffect((()=>{y.current&&(y.current.indeterminate=Boolean(a))}),[a]);const x=e.useCallback((e=>{dt.publish({componentId:"Checkbox",eventId:"click",domEvent:e,meta:{checked:e.target.checked}})}),[]);return{checked:v,inputProps:Object.assign(Object.assign({},A),{name:t,value:n,id:r,onFocus:u,onBlur:d,disabled:p,type:"checkbox",onChange:e=>{f||h(e.target.checked),l&&l(e),c&&c(e.target.checked)},onClickCapture:x,defaultChecked:o,checked:m,"aria-checked":C,ref:b})}}function $r(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 12 10",width:"16",height:"16",fill:"currentColor"},t),e.createElement("path",{d:"M.49 5.385l1.644-1.644 4.385 4.385L4.874 9.77.49 5.385zm4.384 1.096L10.356 1 12 2.644 6.519 8.126 4.874 6.48v.001z"}))}function eo(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 17 17",width:"16",height:"16",fill:"currentColor"},t),e.createElement("path",{d:"M4 7h9v3H4z"}))}Kr.displayName="ControlLabel";var to=n(4030),no={};no.styleTagTransform=Ne(),no.setAttributes=Qe(),no.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},no.domAPI=ze(),no.insertStyleElement=Fe(),Se()(to.Z,no),to.Z&&to.Z.locals&&to.Z.locals;const ro=lt("checkbox"),oo=e.forwardRef((function(t,n){const{size:r="m",indeterminate:o,disabled:i=!1,content:a,children:c,title:l,style:s,className:A,qa:u}=t,{checked:d,inputProps:p}=Xr(t),y=a||c,g=e.createElement("span",{className:ro("indicator")},e.createElement("span",{className:ro("icon"),"aria-hidden":!0},o?e.createElement(eo,{className:ro("icon-svg",{type:"dash"})}):e.createElement($r,{className:ro("icon-svg",{type:"tick"})})),e.createElement("input",Object.assign({},p,{className:ro("control")})),e.createElement("span",{className:ro("outline")}));return e.createElement(Kr,{ref:n,title:l,style:s,size:r,disabled:i,className:ro({size:r,disabled:i,indeterminate:o,checked:d},A),qa:u,control:g},y)}));var io=function(){if("undefined"!=typeof Map)return Map;function e(e,t){var n=-1;return e.some((function(e,r){return e[0]===t&&(n=r,!0)})),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){void 0===t&&(t=null);for(var n=0,r=this.__entries__;n<r.length;n++){var o=r[n];e.call(t,o[1],o[0])}},t}()}(),ao="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,co=void 0!==n.g&&n.g.Math===Math?n.g:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),lo="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(co):function(e){return setTimeout((function(){return e(Date.now())}),1e3/60)},so=["top","right","bottom","left","width","height","size","weight"],Ao="undefined"!=typeof MutationObserver,uo=function(){function e(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(e,t){var n=!1,r=!1,o=0;function i(){n&&(n=!1,e()),r&&c()}function a(){lo(i)}function c(){var e=Date.now();if(n){if(e-o<2)return;r=!0}else n=!0,r=!1,setTimeout(a,t);o=e}return c}(this.refresh.bind(this),20)}return e.prototype.addObserver=function(e){~this.observers_.indexOf(e)||this.observers_.push(e),this.connected_||this.connect_()},e.prototype.removeObserver=function(e){var t=this.observers_,n=t.indexOf(e);~n&&t.splice(n,1),!t.length&&this.connected_&&this.disconnect_()},e.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},e.prototype.updateObservers_=function(){var e=this.observers_.filter((function(e){return e.gatherActive(),e.hasActive()}));return e.forEach((function(e){return e.broadcastActive()})),e.length>0},e.prototype.connect_=function(){ao&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Ao?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){ao&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;so.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),po=function(e,t){for(var n=0,r=Object.keys(t);n<r.length;n++){var o=r[n];Object.defineProperty(e,o,{value:t[o],enumerable:!1,writable:!1,configurable:!0})}return e},yo=function(e){return e&&e.ownerDocument&&e.ownerDocument.defaultView||co},go=Co(0,0,0,0);function ho(e){return parseFloat(e)||0}function fo(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return t.reduce((function(t,n){return t+ho(e["border-"+n+"-width"])}),0)}var vo="undefined"!=typeof SVGGraphicsElement?function(e){return e instanceof yo(e).SVGGraphicsElement}:function(e){return e instanceof yo(e).SVGElement&&"function"==typeof e.getBBox};function mo(e){return ao?vo(e)?function(e){var t=e.getBBox();return Co(0,0,t.width,t.height)}(e):function(e){var t=e.clientWidth,n=e.clientHeight;if(!t&&!n)return go;var r=yo(e).getComputedStyle(e),o=function(e){for(var t={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var o=r[n],i=e["padding-"+o];t[o]=ho(i)}return t}(r),i=o.left+o.right,a=o.top+o.bottom,c=ho(r.width),l=ho(r.height);if("border-box"===r.boxSizing&&(Math.round(c+i)!==t&&(c-=fo(r,"left","right")+i),Math.round(l+a)!==n&&(l-=fo(r,"top","bottom")+a)),!function(e){return e===yo(e).document.documentElement}(e)){var s=Math.round(c+i)-t,A=Math.round(l+a)-n;1!==Math.abs(s)&&(c-=s),1!==Math.abs(A)&&(l-=A)}return Co(o.left,o.top,c,l)}(e):go}function Co(e,t,n,r){return{x:e,y:t,width:n,height:r}}var bo=function(){function e(e){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=Co(0,0,0,0),this.target=e}return e.prototype.isActive=function(){var e=mo(this.target);return this.contentRect_=e,e.width!==this.broadcastWidth||e.height!==this.broadcastHeight},e.prototype.broadcastRect=function(){var e=this.contentRect_;return this.broadcastWidth=e.width,this.broadcastHeight=e.height,e},e}(),xo=function(e,t){var n,r,o,i,a,c,l,s=(r=(n=t).x,o=n.y,i=n.width,a=n.height,c="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,l=Object.create(c.prototype),po(l,{x:r,y:o,width:i,height:a,top:o,right:r+i,bottom:a+o,left:r}),l);po(this,{target:e,contentRect:s})},wo=function(){function e(e,t,n){if(this.activeObservations_=[],this.observations_=new io,"function"!=typeof e)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=e,this.controller_=t,this.callbackCtx_=n}return e.prototype.observe=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof yo(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)||(t.set(e,new bo(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(e instanceof yo(e).Element))throw new TypeError('parameter 1 is not of type "Element".');var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach((function(t){t.isActive()&&e.activeObservations_.push(t)}))},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map((function(e){return new xo(e.target,e.broadcastRect())}));this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),Eo="undefined"!=typeof WeakMap?new WeakMap:new io,_o=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=uo.getInstance(),r=new wo(t,n,this);Eo.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){_o.prototype[e]=function(){var t;return(t=Eo.get(this))[e].apply(t,arguments)}}));const ko=void 0!==co.ResizeObserver?co.ResizeObserver:_o;var Bo=n(3493),Io=n.n(Bo);function So(t,n){const[r,o]=(0,e.useState)({width:0,height:0});return(0,e.useLayoutEffect)((()=>{if(!(null==t?void 0:t.current))return;const e=new ko(Io()((e=>{if(!Array.isArray(e))return;const t=e[0];if(t.borderBoxSize){const e=t.borderBoxSize[0]?t.borderBoxSize[0]:t.borderBoxSize;o({width:Math.round(e.inlineSize),height:Math.round(e.blockSize)})}else{const e=t.target;o({width:Math.round(e.offsetWidth),height:Math.round(e.offsetHeight)})}}),16));return e.observe(t.current),()=>{e.disconnect()}}),[t,n]),r}const Do=lt("text-input");function zo(t){const{type:n,name:r,id:o,tabIndex:i,autoFocus:a,autoComplete:c,placeholder:l,value:s,defaultValue:A,onChange:u,onFocus:d,onBlur:p,onKeyDown:y,onKeyUp:g,onKeyPress:h,controlProps:f,controlRef:v,disabled:m}=t;return e.createElement("input",Object.assign({},f,{ref:v,className:Do("control",{type:"input"},null==f?void 0:f.className),type:n,name:r,id:o,tabIndex:i,placeholder:l,value:s,defaultValue:A,autoFocus:a,autoComplete:c,onChange:u,onFocus:d,onBlur:p,onKeyDown:y,onKeyUp:g,onKeyPress:h,disabled:m}))}const To=lt("text-input");function Qo(t){var n;const{name:r,id:o,tabIndex:i,autoFocus:a,autoComplete:c,placeholder:l,value:s,defaultValue:A,onChange:u,onFocus:d,onBlur:p,onKeyDown:y,onKeyUp:g,onKeyPress:h,controlRef:f,controlProps:v,disabled:m,rows:C,minRows:b=1,maxRows:x}=t,w=e.useRef(null),E=mr(f,w),_=C||b,k=e.useCallback((()=>{const e=null==w?void 0:w.current;if(e&&!C){const t=((s||e.value).match(/\n/g)||[]).length+1,n=getComputedStyle(e),r=parseInt(n.getPropertyValue("line-height"),10),o=parseInt(n.getPropertyValue("border-top-width"),10),i=parseInt(n.getPropertyValue("padding-top"),10),a=Math.floor(e.scrollHeight/r);x&&x<Math.max(a,t)?(e.style.height="auto",e.style.height=x*r+2*i+2*o+"px"):(e.style.height="auto",e.style.height=`${e.scrollHeight+2*o}px`)}}),[C,x,s]);return e.useEffect(k,[k]),e.createElement("textarea",Object.assign({},v,{ref:E,style:Object.assign(Object.assign({},null===(n=v)||void 0===n?void 0:n.style),{height:C?"auto":void 0}),className:To("control",{type:"textarea"},null==v?void 0:v.className),name:r,id:o,tabIndex:i,placeholder:l,value:s,defaultValue:A,rows:_,autoFocus:a,autoComplete:c,onChange:e=>{u?u(e):k()},onFocus:d,onBlur:p,onKeyDown:y,onKeyUp:g,onKeyPress:h,disabled:m}))}function Mo(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 10 10",width:"10",height:"10",fill:"currentColor"},gt,t),e.createElement("path",{d:"M9.75592 8.57741C10.0814 8.90285 10.0814 9.43049 9.75592 9.75592C9.43049 10.0814 8.90285 10.0814 8.57741 9.75592L5 6.17851L1.42259 9.75592C1.09715 10.0814 0.569515 10.0814 0.244078 9.75592C-0.0813592 9.43049 -0.0813592 8.90285 0.244078 8.57741L3.82149 5L0.244078 1.42259C-0.0813592 1.09715 -0.0813592 0.569515 0.244078 0.244078C0.569515 -0.0813592 1.09715 -0.0813592 1.42259 0.244078L5 3.82149L8.57741 0.244078C8.90285 -0.0813592 9.43049 -0.0813592 9.75592 0.244078C10.0814 0.569515 10.0814 1.09715 9.75592 1.42259L6.17851 5L9.75592 8.57741Z"}))}const Fo=/{{(.*?)}}/g;var Oo,No;function Po(e,t){return 0===e?t.None:1===e||-1===e?t.One:t.Many}function Ro(e,t){const n=Math.abs(e%10),r=Math.abs(e%100);return 0===e?t.None:1===n&&11!==r?t.One:n>1&&n<5&&(r<10||r>20)?t.Few:t.Many}!function(e){e[e.One=0]="One",e[e.Few=1]="Few",e[e.Many=2]="Many",e[e.None=3]="None"}(Oo||(Oo={})),function(e){e.Ru="ru",e.En="en"}(No||(No={}));const jo={lang:No.En},Lo=new class{constructor(e){this.data={},this.lang=void 0,this.pluralizers={en:Po,ru:Ro},this.logger=null,this.logger=(null==e?void 0:e.logger)||null}setLang(e){this.lang=e}configurePluralization(e){this.pluralizers=Object.assign({},this.pluralizers,e)}registerKeyset(e,t,n={}){if(this.data[e]&&Object.prototype.hasOwnProperty.call(this.data[e],t))throw new Error(`Keyset '${t}' is already registered, aborting!`);this.data[e]=Object.assign({},this.data[e],{[t]:n})}registerKeysets(e,t){Object.keys(t).forEach((n=>{this.registerKeyset(e,n,t[n])}))}has(e,t,n){const r=this.getLanguageData(n);return Boolean(r&&r[e]&&r[e][t])}i18n(e,t,n){const r=this.getLanguageData(this.lang);if(void 0===r)throw new Error(`Language '${this.lang}' is not defined, make sure you call setLang for the same language you called registerKeysets for!`);if(0===Object.keys(r).length)return this.warn("Language data is empty."),t;const o=r[e];if(!o)return this.warn("Keyset not found.",e),t;if(0===Object.keys(o).length)return this.warn("Keyset is empty.",e),t;const i=o&&o[t];let a;if(void 0===i)return this.warn("Missing key.",e,t),t;if(Array.isArray(i)){if(i.length<3)return this.warn("Missing required plurals",e,t),t;const r=Number(null==n?void 0:n.count);if(Number.isNaN(r))return this.warn("Missing params.count for key.",e,t),t;a=i[this.getLanguagePluralizer(this.lang)(r,Oo)]||i[Oo.Many],void 0===i[Oo.None]&&this.warn("Missing key for 0",e,t)}else a=i;return n&&(a=function(e,t){let n,r="",o=Fo.lastIndex=0;for(;n=Fo.exec(e);){o!==n.index&&(r+=e.slice(o,n.index)),o=Fo.lastIndex;const[i,a]=n;Object.prototype.hasOwnProperty.call(t,a)?r+=t[a]:r+=i}return o<e.length&&(r+=e.slice(o)),r}(a,n)),a}keyset(e){return(t,n)=>this.i18n(e,t,n)}warn(e,t,n){var r;let o="";t?(o+=t,n&&(o+=`.${n}`)):o="languageData",null===(r=this.logger)||void 0===r||r.log(`I18n: ${e}`,{level:"info",logger:o,extra:{type:"i18n"}})}getLanguageData(e){const t=e||this.lang;return t?this.data[t]:void 0}getLanguagePluralizer(e){const t=e?this.pluralizers[e]:void 0;return t||this.warn(`Pluralization is not configured for language '${e}', falling back to the english ruleset`),t||Po}};Lo.setLang(jo.lang),[].push((e=>{Lo.setLang(e.lang)}));const qo=(Uo={en:JSON.parse('{"label_clear-button":"Clear input value"}'),ru:JSON.parse('{"label_clear-button":"Очистить введённое значение"}')},Vo="text-input",Object.entries(Uo).forEach((([e,t])=>Lo.registerKeyset(e,Vo,t))),Lo.keyset(Vo));var Uo,Vo;const Wo=lt("text-input"),Go=t=>{const{size:n,className:r,onClick:o}=t;return e.createElement(It,{size:n,className:Wo("clear",r),onClick:o,extraProps:{"aria-label":qo("label_clear-button")}},e.createElement(bt,{data:Mo,size:10}))},Yo=lt("text-input"),Ho=e.forwardRef((function({placement:t,children:n,onClick:r},o){return n?e.createElement("div",{ref:o,className:Yo("additional-content",{placement:t}),onClick:r},n):null}));var Zo=n(9322),Jo={};Jo.styleTagTransform=Ne(),Jo.setAttributes=Qe(),Jo.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Jo.domAPI=ze(),Jo.insertStyleElement=Fe(),Se()(Zo.Z,Jo),Zo.Z&&Zo.Z.locals&&Zo.Z.locals;const Ko=lt("text-input"),Xo=e=>"boolean"==typeof e?e?"on":"off":e,$o=e.forwardRef((function(t,n){const{view:r="normal",size:o="m",pin:i="round-round",name:a,value:c,defaultValue:l,label:s,disabled:A=!1,multiline:u=!1,hasClear:d=!1,error:p,autoComplete:y,onUpdate:g,onChange:h,id:f,tabIndex:v,style:m,className:C,qa:b,controlProps:x,leftContent:w,rightContent:E}=t,[_,k]=e.useState(null!=l?l:""),B=e.useRef(null),I=mr(t.controlRef,B),S=e.useRef(null),D=e.useRef(null),[z,T]=e.useState(!1),Q=e.useMemo((()=>((e={})=>{const{error:t}=e;return t?"error":void 0})({error:p})),[p]),M=void 0!==c,F=M?c:_,O=!u&&Boolean(s),N="string"==typeof p,P=Boolean(d&&!A&&F),R=Boolean(w&&!u),j=Boolean(E&&!u),L=O&&!f&&!a&&void 0===y,q=Or(),U=O?f||q:f,V=So(O?S:null,o),W=So(R?D:null,o),G=Object.assign(Object.assign({},x),{style:Object.assign(Object.assign({},null==x?void 0:x.style),O&&V.width?{paddingLeft:`${V.width}px`}:{})}),Y={id:U,tabIndex:v,name:a,onChange(e){const t=e.target.value;M||k(t),h&&h(e),g&&g(t)},autoComplete:L?"off":Xo(y),controlProps:G},H=e=>{var t,n;const r=e.currentTarget.contains(document.activeElement),o=Boolean(null===(t=document.getSelection())||void 0===t?void 0:t.toString());r||o||null===(n=B.current)||void 0===n||n.focus()};return e.useEffect((()=>{const e=B.current;if(e&&u){const t=e.scrollHeight>e.clientHeight;z!==t&&T(t)}}),[u,F,z]),e.createElement("span",{ref:n,style:m,className:Ko({view:r,size:o,disabled:A,state:Q,pin:"clear"===r?void 0:i,"has-clear":P,"has-left-content":R&&!u,"has-right-content":(P||j)&&!u,"has-scrollbar":z},C),"data-qa":b},e.createElement("span",{className:Ko("content")},R&&e.createElement(Ho,{ref:D,placement:"left",onClick:H},w),O&&e.createElement("label",{ref:S,style:{left:R?W.width:void 0,maxWidth:`calc(50% - ${W.width}px)`},className:Ko("label"),title:s,htmlFor:U},`${s}`),u?e.createElement(Qo,Object.assign({},t,Y,{controlRef:I})):e.createElement(zo,Object.assign({},t,Y,{controlRef:I})),P&&e.createElement(Go,{className:st(Ko("clear",{textarea:u})),size:o,onClick:e=>{const t=B.current;if(t){t.focus();const n=Object.create(e);n.target=t,n.currentTarget=t,t.value="",h&&h(n),g&&g("")}M||k("")}}),j&&e.createElement(Ho,{placement:"right",onClick:H},E)),N&&e.createElement("div",{className:Ko("error")},p))})),ei={[ae.Ru]:["Нет ответа на мой вопрос","Рекомендации не помогли","Содержание не соответствует заголовку","Другое"],[ae.En]:["No answer to my question","Recommendations didn't help","The content doesn't match the title","Other"]},ti={fullScreen:!1,singlePage:!1,wideFormat:!1,showMiniToc:!0,bookmarkedPage:!1,theme:ne.Dark,textSize:re.M,isLiked:!1,isDisliked:!1,isPinned:!1};function ni(){return ni=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ni.apply(this,arguments)}const ri=({styles:t={},...n})=>e.createElement("svg",ni({width:"14",height:"14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M3.14 6.313H1.11a.601.601 0 00-.61.609v6.094c0 .355.254.609.61.609h2.03c.33 0 .61-.254.61-.61V6.923c0-.33-.28-.61-.61-.61zm-1.015 6.296a.587.587 0 01-.61-.609c0-.33.255-.61.61-.61.33 0 .61.28.61.61 0 .355-.28.61-.61.61zm8.125-9.902C10.25.828 9.031.625 8.422.625c-.533 0-.762 1.016-.863 1.473-.153.558-.28 1.117-.66 1.498-.813.838-1.245 1.879-2.26 2.869a.41.41 0 00-.077.228v5.434c0 .152.127.28.28.305.406 0 .94.228 1.346.406.812.355 1.802.787 3.021.787h.076c1.092 0 2.387 0 2.895-.736.228-.305.279-.686.152-1.143.432-.431.635-1.244.432-1.904.431-.584.482-1.422.228-2.006.305-.305.508-.787.483-1.244 0-.787-.66-1.498-1.498-1.498h-2.59c.203-.711.863-1.32.863-2.387z",fill:"currentColor"}));function oi(){return oi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},oi.apply(this,arguments)}const ii=({styles:t={},...n})=>e.createElement("svg",oi({width:"14",height:"14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M.5 2.047V8.14c0 .355.254.609.61.609h2.03c.33 0 .61-.254.61-.61V2.048c0-.33-.28-.61-.61-.61H1.11c-.356 0-.61.28-.61.61zm1.016 5.078c0-.33.254-.61.609-.61.33 0 .61.28.61.61 0 .355-.28.61-.61.61a.587.587 0 01-.61-.61zm6.906 6.5c.61 0 1.828-.203 1.828-2.057 0-1.066-.66-1.675-.863-2.412h2.59c.838 0 1.498-.685 1.523-1.472 0-.457-.203-.94-.508-1.245.254-.584.203-1.421-.228-2.005.203-.66 0-1.473-.432-1.905.127-.457.076-.838-.152-1.142C11.672.65 10.377.625 9.285.625H9.21C7.99.65 7 1.082 6.188 1.438c-.407.177-.94.406-1.346.406-.153.025-.28.152-.28.304v5.434c0 .076.026.178.077.229 1.015.99 1.447 2.03 2.26 2.869.38.38.507.94.66 1.498.101.457.33 1.447.863 1.447z",fill:"currentColor"}));var ai=n(6870),ci={};ci.styleTagTransform=Ne(),ci.setAttributes=Qe(),ci.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},ci.domAPI=ze(),ci.insertStyleElement=Fe(),Se()(ai.Z,ci),ai.Z&&ai.Z.locals&&ai.Z.locals;const li=(0,de.Z)("dc-feedback");var si;!function(e){e.Wide="wide",e.Regular="regular"}(si||(si={}));const Ai=it("feedback")((t=>{const{lang:n,singlePage:r,isLiked:o,isDisliked:i,dislikeVariants:a=ei[n],isVerticalView:c,onSendFeedback:l,view:s,classNameControl:A,i18n:u,popupPosition:d,t:p}=t,y=(0,e.useRef)(null),g=(0,e.useRef)(null),h=(0,e.useRef)(),[f,v]=(0,e.useState)(i),[m,C]=(0,e.useState)(""),[b,x]=(0,e.useState)({}),[w,E]=(0,e.useState)(!1),[_,k]=(0,e.useState)(!1),[B,I]=(0,e.useState)(!1),S=(0,e.useCallback)((()=>{k(!1),E(!1),I(!1)}),[]),D=(0,e.useCallback)((()=>{C(""),x({})}),[]);(0,e.useEffect)((()=>{v(i)}),[i]),(0,e.useEffect)((()=>{u.changeLanguage(n)}),[u,n]);const z=(0,e.useCallback)((e=>{h.current=setTimeout((async()=>{e()}),3e3)}),[]),T=(0,e.useCallback)((()=>{clearTimeout(h.current),h.current=void 0}),[]);(0,e.useEffect)((()=>{(w||_)&&z((()=>{k(!1),E(!1),T()}))}),[i,T,z,w,_]);const Q=(0,e.useCallback)((e=>{y.current=e}),[]),M=(0,e.useCallback)((e=>{g.current=e}),[]),F=(0,e.useCallback)((()=>{S(),B&&f&&!i&&v(!1)}),[i,f,S,v,B]),O=(0,e.useCallback)((()=>{if(k(!0),E(!1),I(!1),l){const e=ce.dislike,t=function(e,t){return{comment:e,answers:Object.keys(t).reduce(((e,n)=>(t[n]&&e.push(n),e)),[])}}(m,b),n=Object.assign({type:e},t);l(n),D()}}),[l,m,b,D]),N=(0,e.useCallback)((()=>s&&s!==si.Regular?Lr.RIGHT:c?Lr.LEFT_START:Lr.BOTTOM_END),[c,s]),P=(0,e.useCallback)((()=>{E(!0),k(!1),I(!1),v(!1),l&&l({type:o?ce.indeterminate:ce.like})}),[o,l]),R=(0,e.useCallback)((()=>{i||f?!i&&f?(S(),v(!1)):i&&f&&(S(),v(!1),l&&l({type:ce.indeterminate})):(I(!0),v(!0),E(!1),k(!1),o&&l&&l({type:ce.indeterminate}))}),[f,i,o,l,S]),j=(0,e.useCallback)((()=>e.createElement(Yr,{onClick:P,className:li("control",{view:s},A),isVerticalView:c,tooltipText:p((o?"cancel-":"")+"like-text"),setRef:Q,icon:t=>e.createElement(bt,Object.assign({data:ri,className:li("like-button",{active:o,view:s})},t)),popupPosition:d})),[P,A,s,c,o,Q,d,p]),L=(0,e.useCallback)((()=>e.createElement(Yr,{onClick:R,className:li("control",{view:s},A),isVerticalView:c,tooltipText:p((f?"cancel-":"")+"dislike-text"),setRef:M,icon:t=>e.createElement(bt,Object.assign({data:ii,className:li("like-button",{active:f,view:s})},t))})),[f,R,A,s,c,M,p]),q=(0,e.useCallback)((()=>e.createElement(e.Fragment,null,j(),L())),[j,L]),U=(0,e.useCallback)((()=>e.createElement("div",{className:li("container",{view:s})},e.createElement("div",{className:li("container-row",{view:s})},e.createElement("h3",{className:li("title",{view:s})},p("main-question")),e.createElement("div",{className:li("controls",{view:s})},e.createElement(It,{size:"m",view:"normal",ref:Q,onClick:P,className:li("control",{view:s})},e.createElement(It.Icon,null,e.createElement(bt,{data:ri,size:14,className:li("feedback-button",{active:o})})),p("button-like-text")),e.createElement(It,{view:"normal",ref:M,onClick:R,className:li("control",{view:s})},e.createElement(It.Icon,null,e.createElement(bt,{data:ii,size:14,className:li("feedback-button",{active:f})})),p("button-dislike-text")))))),[f,o,s,p,Q,M,P,R]),V=(0,e.useCallback)((()=>s===si.Regular?q():U()),[s,q,U]),W=(0,e.useCallback)((()=>{const t=w?y:g,n=w||_;return n?e.createElement(jr,{anchorRef:t,open:n,onOutsideClick:S,className:li("success-popup",{view:s}),placement:N()},e.createElement("h3",{className:li("popup-title")},p("success-title")),e.createElement("p",{className:li("popup-text")},p("success-text"))):null}),[w,_,S,s,N,p]),G=(0,e.useCallback)((()=>a.length?e.createElement("div",{className:li("variants")},a.map(((t,n)=>e.createElement(oo,{key:n,className:li("variant"),checked:b[t],onUpdate:e=>{x(Object.assign(Object.assign({},b),{[t]:e}))},content:t})))):null),[a,b]),Y=(0,e.useCallback)((()=>e.createElement("div",{className:li("textarea")},e.createElement($o,{multiline:!0,size:"m",rows:6,placeholder:p("comment-placeholder"),hasClear:!0,value:m,onChange:e=>{C(e.target.value)}}))),[m,p]),H=(0,e.useCallback)((()=>e.createElement("div",{className:li("variants-actions")},e.createElement(It,{view:"action",className:li("variants-action"),onClick:O},p("send-action-text")))),[O,p]),Z=(0,e.useCallback)((()=>e.createElement(e.Fragment,null,e.createElement("h3",{className:li("popup-title")},p("dislike-variants-title")),G(),Y(),H())),[p,G,Y,H]),J=(0,e.useCallback)((()=>B?e.createElement(jr,{anchorRef:g,open:B,onOutsideClick:F,className:li("variants-popup",{view:s}),placement:N()},Z()):null),[B,F,s,N,Z]);return r||!l?null:e.createElement(e.Fragment,null,V(),W(),J())})),ui="undefined"==typeof window?e.useEffect:e.useLayoutEffect,di=(e,t)=>t&&t!==Za.Regular?Lr.RIGHT:e?Lr.LEFT_START:Lr.BOTTOM_END,pi=(0,de.Z)("dc-subscribe"),yi=(0,e.memo)((t=>{const{t:n,visible:r,setVisible:o,anchor:i,isVerticalView:a,view:c}=t,l=(0,e.useCallback)((()=>o(!1)),[o]);return function(t,n){const r=(0,e.useRef)(t);ui((()=>{r.current=t}),[t]),(0,e.useEffect)((()=>{if(!n&&0!==n)return;const e=setTimeout((()=>r.current()),n);return()=>clearTimeout(e)}),[n])}(l,6e4),e.createElement(jr,{anchorRef:i,open:r,onOutsideClick:l,className:pi("success-popup",{view:c}),placement:di(a,c)},e.createElement("h3",{className:pi("popup-title")},n("verify-title")),e.createElement("p",{className:pi("popup-text")},n("verify-text")))}));yi.displayName="SubscribeSuccessPopup";const gi=it("controls")(yi);var hi=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),fi=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vi=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},mi=void 0;mi="undefined"!=typeof window?window:"undefined"!=typeof self?self:n.g;var Ci=null,bi=null,xi=mi.clearTimeout,wi=mi.setTimeout,Ei=mi.cancelAnimationFrame||mi.mozCancelAnimationFrame||mi.webkitCancelAnimationFrame,_i=mi.requestAnimationFrame||mi.mozRequestAnimationFrame||mi.webkitRequestAnimationFrame;null==Ei||null==_i?(Ci=xi,bi=function(e){return wi(e,20)}):(Ci=function(e){var t=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,c=e[Symbol.iterator]();!(r=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&c.return&&c.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}(e,2),n=t[0],r=t[1];Ei(n),xi(r)},bi=function(e){var t=_i((function(){xi(n),e()})),n=wi((function(){Ei(t),e()}),20);return[t,n]});var ki=function(t){function n(){var e,t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n);for(var o=arguments.length,i=Array(o),a=0;a<o;a++)i[a]=arguments[a];return t=r=vi(this,(e=n.__proto__||Object.getPrototypeOf(n)).call.apply(e,[this].concat(i))),r.state={height:r.props.defaultHeight||0,width:r.props.defaultWidth||0},r._onResize=function(){var e=r.props,t=e.disableHeight,n=e.disableWidth,o=e.onResize;if(r._parentNode){var i=r._parentNode.offsetHeight||0,a=r._parentNode.offsetWidth||0,c=window.getComputedStyle(r._parentNode)||{},l=parseInt(c.paddingLeft,10)||0,s=parseInt(c.paddingRight,10)||0,A=parseInt(c.paddingTop,10)||0,u=parseInt(c.paddingBottom,10)||0,d=i-A-u,p=a-l-s;(!t&&r.state.height!==d||!n&&r.state.width!==p)&&(r.setState({height:i-A-u,width:a-l-s}),o({height:i,width:a}))}},r._setRef=function(e){r._autoSizer=e},vi(r,t)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,t),hi(n,[{key:"componentDidMount",value:function(){var e=this.props.nonce;this._autoSizer&&this._autoSizer.parentNode&&this._autoSizer.parentNode.ownerDocument&&this._autoSizer.parentNode.ownerDocument.defaultView&&this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement&&(this._parentNode=this._autoSizer.parentNode,this._detectElementResize=function(e){var t=void 0,n=void 0,r=void 0,o=void 0,i=void 0,a=void 0,c=void 0,l="undefined"!=typeof document&&document.attachEvent;if(!l){a=function(e){var t=e.__resizeTriggers__,n=t.firstElementChild,r=t.lastElementChild,o=n.firstElementChild;r.scrollLeft=r.scrollWidth,r.scrollTop=r.scrollHeight,o.style.width=n.offsetWidth+1+"px",o.style.height=n.offsetHeight+1+"px",n.scrollLeft=n.scrollWidth,n.scrollTop=n.scrollHeight},i=function(e){return e.offsetWidth!==e.__resizeLast__.width||e.offsetHeight!==e.__resizeLast__.height},c=function(e){if(!(e.target.className&&"function"==typeof e.target.className.indexOf&&e.target.className.indexOf("contract-trigger")<0&&e.target.className.indexOf("expand-trigger")<0)){var t=this;a(this),this.__resizeRAF__&&Ci(this.__resizeRAF__),this.__resizeRAF__=bi((function(){i(t)&&(t.__resizeLast__.width=t.offsetWidth,t.__resizeLast__.height=t.offsetHeight,t.__resizeListeners__.forEach((function(n){n.call(t,e)})))}))}};var s=!1,A="";r="animationstart";var u="Webkit Moz O ms".split(" "),d="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),p=document.createElement("fakeelement");if(void 0!==p.style.animationName&&(s=!0),!1===s)for(var y=0;y<u.length;y++)if(void 0!==p.style[u[y]+"AnimationName"]){A="-"+u[y].toLowerCase()+"-",r=d[y],s=!0;break}t="@"+A+"keyframes "+(n="resizeanim")+" { from { opacity: 0; } to { opacity: 0; } } ",o=A+"animation: 1ms "+n+"; "}return{addResizeListener:function(i,s){if(l)i.attachEvent("onresize",s);else{if(!i.__resizeTriggers__){var A=i.ownerDocument,u=mi.getComputedStyle(i);u&&"static"===u.position&&(i.style.position="relative"),function(n){if(!n.getElementById("detectElementResize")){var r=(t||"")+".resize-triggers { "+(o||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',i=n.head||n.getElementsByTagName("head")[0],a=n.createElement("style");a.id="detectElementResize",a.type="text/css",null!=e&&a.setAttribute("nonce",e),a.styleSheet?a.styleSheet.cssText=r:a.appendChild(n.createTextNode(r)),i.appendChild(a)}}(A),i.__resizeLast__={},i.__resizeListeners__=[],(i.__resizeTriggers__=A.createElement("div")).className="resize-triggers";var d=A.createElement("div");d.className="expand-trigger",d.appendChild(A.createElement("div"));var p=A.createElement("div");p.className="contract-trigger",i.__resizeTriggers__.appendChild(d),i.__resizeTriggers__.appendChild(p),i.appendChild(i.__resizeTriggers__),a(i),i.addEventListener("scroll",c,!0),r&&(i.__resizeTriggers__.__animationListener__=function(e){e.animationName===n&&a(i)},i.__resizeTriggers__.addEventListener(r,i.__resizeTriggers__.__animationListener__))}i.__resizeListeners__.push(s)}},removeResizeListener:function(e,t){if(l)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",c,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(r,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(e){}}}}}(e),this._detectElementResize.addResizeListener(this._parentNode,this._onResize),this._onResize())}},{key:"componentWillUnmount",value:function(){this._detectElementResize&&this._parentNode&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize)}},{key:"render",value:function(){var t=this.props,n=t.children,r=t.className,o=t.disableHeight,i=t.disableWidth,a=t.style,c=this.state,l=c.height,s=c.width,A={overflow:"visible"},u={},d=!1;return o||(0===l&&(d=!0),A.height=0,u.height=l),i||(0===s&&(d=!0),A.width=0,u.width=s),(0,e.createElement)("div",{className:r,ref:this._setRef,style:fi({},A,a)},!d&&n(u))}}]),n}(e.PureComponent);ki.defaultProps={onResize:function(){},disableHeight:!1,disableWidth:!1,style:{}};const Bi=ki;var Ii=Number.isNaN||function(e){return"number"==typeof e&&e!=e};function Si(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!((r=e[n])===(o=t[n])||Ii(r)&&Ii(o)))return!1;var r,o;return!0}const Di=function(e,t){var n;void 0===t&&(t=Si);var r,o=[],i=!1;return function(){for(var a=[],c=0;c<arguments.length;c++)a[c]=arguments[c];return i&&n===this&&t(a,o)||(r=e.apply(this,a),i=!0,n=this,o=a),r}};var zi="object"==typeof performance&&"function"==typeof performance.now?function(){return performance.now()}:function(){return Date.now()};function Ti(e){cancelAnimationFrame(e.id)}var Qi=-1;function Mi(e){if(void 0===e&&(e=!1),-1===Qi||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",document.body.appendChild(t),Qi=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return Qi}var Fi=null;function Oi(e){if(void 0===e&&(e=!1),null===Fi||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var r=document.createElement("div"),o=r.style;return o.width="100px",o.height="100px",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?Fi="positive-descending":(t.scrollLeft=1,Fi=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),Fi}return Fi}var Ni=function(e,t){return e};function Pi(t){var n,r=t.getItemOffset,i=t.getEstimatedTotalSize,a=t.getItemSize,c=t.getOffsetForIndexAndAlignment,l=t.getStartIndexForOffset,s=t.getStopIndexForStartIndex,A=t.initInstanceProps,u=t.shouldResetStyleCacheOnItemSizeChange,d=t.validateProps;return n=function(t){function n(e){var n;return(n=t.call(this,e)||this)._instanceProps=A(n.props,g(n)),n._outerRef=void 0,n._resetIsScrollingTimeoutId=null,n.state={instance:g(n),isScrolling:!1,scrollDirection:"forward",scrollOffset:"number"==typeof n.props.initialScrollOffset?n.props.initialScrollOffset:0,scrollUpdateWasRequested:!1},n._callOnItemsRendered=void 0,n._callOnItemsRendered=Di((function(e,t,r,o){return n.props.onItemsRendered({overscanStartIndex:e,overscanStopIndex:t,visibleStartIndex:r,visibleStopIndex:o})})),n._callOnScroll=void 0,n._callOnScroll=Di((function(e,t,r){return n.props.onScroll({scrollDirection:e,scrollOffset:t,scrollUpdateWasRequested:r})})),n._getItemStyle=void 0,n._getItemStyle=function(e){var t,o=n.props,i=o.direction,c=o.itemSize,l=o.layout,s=n._getItemStyleCache(u&&c,u&&l,u&&i);if(s.hasOwnProperty(e))t=s[e];else{var A=r(n.props,e,n._instanceProps),d=a(n.props,e,n._instanceProps),p="horizontal"===i||"horizontal"===l,y="rtl"===i,g=p?A:0;s[e]=t={position:"absolute",left:y?void 0:g,right:y?g:void 0,top:p?0:A,height:p?"100%":d,width:p?d:"100%"}}return t},n._getItemStyleCache=void 0,n._getItemStyleCache=Di((function(e,t,n){return{}})),n._onScrollHorizontal=function(e){var t=e.currentTarget,r=t.clientWidth,o=t.scrollLeft,i=t.scrollWidth;n.setState((function(e){if(e.scrollOffset===o)return null;var t=n.props.direction,a=o;if("rtl"===t)switch(Oi()){case"negative":a=-o;break;case"positive-descending":a=i-r-o}return a=Math.max(0,Math.min(a,i-r)),{isScrolling:!0,scrollDirection:e.scrollOffset<o?"forward":"backward",scrollOffset:a,scrollUpdateWasRequested:!1}}),n._resetIsScrollingDebounced)},n._onScrollVertical=function(e){var t=e.currentTarget,r=t.clientHeight,o=t.scrollHeight,i=t.scrollTop;n.setState((function(e){if(e.scrollOffset===i)return null;var t=Math.max(0,Math.min(i,o-r));return{isScrolling:!0,scrollDirection:e.scrollOffset<t?"forward":"backward",scrollOffset:t,scrollUpdateWasRequested:!1}}),n._resetIsScrollingDebounced)},n._outerRefSetter=function(e){var t=n.props.outerRef;n._outerRef=e,"function"==typeof t?t(e):null!=t&&"object"==typeof t&&t.hasOwnProperty("current")&&(t.current=e)},n._resetIsScrollingDebounced=function(){null!==n._resetIsScrollingTimeoutId&&Ti(n._resetIsScrollingTimeoutId),n._resetIsScrollingTimeoutId=function(e,t){var n=zi(),r={id:requestAnimationFrame((function o(){zi()-n>=t?e.call(null):r.id=requestAnimationFrame(o)}))};return r}(n._resetIsScrolling,150)},n._resetIsScrolling=function(){n._resetIsScrollingTimeoutId=null,n.setState({isScrolling:!1},(function(){n._getItemStyleCache(-1,null)}))},n}zt(n,t),n.getDerivedStateFromProps=function(e,t){return Ri(e,t),d(e),null};var p=n.prototype;return p.scrollTo=function(e){e=Math.max(0,e),this.setState((function(t){return t.scrollOffset===e?null:{scrollDirection:t.scrollOffset<e?"forward":"backward",scrollOffset:e,scrollUpdateWasRequested:!0}}),this._resetIsScrollingDebounced)},p.scrollToItem=function(e,t){void 0===t&&(t="auto");var n=this.props,r=n.itemCount,o=n.layout,i=this.state.scrollOffset;e=Math.max(0,Math.min(e,r-1));var a=0;if(this._outerRef){var l=this._outerRef;a="vertical"===o?l.scrollWidth>l.clientWidth?Mi():0:l.scrollHeight>l.clientHeight?Mi():0}this.scrollTo(c(this.props,e,t,i,this._instanceProps,a))},p.componentDidMount=function(){var e=this.props,t=e.direction,n=e.initialScrollOffset,r=e.layout;if("number"==typeof n&&null!=this._outerRef){var o=this._outerRef;"horizontal"===t||"horizontal"===r?o.scrollLeft=n:o.scrollTop=n}this._callPropsCallbacks()},p.componentDidUpdate=function(){var e=this.props,t=e.direction,n=e.layout,r=this.state,o=r.scrollOffset;if(r.scrollUpdateWasRequested&&null!=this._outerRef){var i=this._outerRef;if("horizontal"===t||"horizontal"===n)if("rtl"===t)switch(Oi()){case"negative":i.scrollLeft=-o;break;case"positive-ascending":i.scrollLeft=o;break;default:var a=i.clientWidth,c=i.scrollWidth;i.scrollLeft=c-a-o}else i.scrollLeft=o;else i.scrollTop=o}this._callPropsCallbacks()},p.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&Ti(this._resetIsScrollingTimeoutId)},p.render=function(){var t=this.props,n=t.children,r=t.className,a=t.direction,c=t.height,l=t.innerRef,s=t.innerElementType,A=t.innerTagName,u=t.itemCount,d=t.itemData,p=t.itemKey,y=void 0===p?Ni:p,g=t.layout,h=t.outerElementType,f=t.outerTagName,v=t.style,m=t.useIsScrolling,C=t.width,b=this.state.isScrolling,x="horizontal"===a||"horizontal"===g,w=x?this._onScrollHorizontal:this._onScrollVertical,E=this._getRangeToRender(),_=E[0],k=E[1],B=[];if(u>0)for(var I=_;I<=k;I++)B.push((0,e.createElement)(n,{data:d,key:y(I,d),index:I,isScrolling:m?b:void 0,style:this._getItemStyle(I)}));var S=i(this.props,this._instanceProps);return(0,e.createElement)(h||f||"div",{className:r,onScroll:w,ref:this._outerRefSetter,style:o({position:"relative",height:c,width:C,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:a},v)},(0,e.createElement)(s||A||"div",{children:B,ref:l,style:{height:x?"100%":S,pointerEvents:b?"none":void 0,width:x?S:"100%"}}))},p._callPropsCallbacks=function(){if("function"==typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],r=e[2],o=e[3];this._callOnItemsRendered(t,n,r,o)}if("function"==typeof this.props.onScroll){var i=this.state,a=i.scrollDirection,c=i.scrollOffset,l=i.scrollUpdateWasRequested;this._callOnScroll(a,c,l)}},p._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,r=this.state,o=r.isScrolling,i=r.scrollDirection,a=r.scrollOffset;if(0===t)return[0,0,0,0];var c=l(this.props,a,this._instanceProps),A=s(this.props,c,a,this._instanceProps),u=o&&"backward"!==i?1:Math.max(1,n),d=o&&"forward"!==i?1:Math.max(1,n);return[Math.max(0,c-u),Math.max(0,Math.min(t-1,A+d)),c,A]},n}(e.PureComponent),n.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},n}var Ri=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},ji=function(e,t,n){var r=e.itemSize,o=n.itemMetadataMap,i=n.lastMeasuredIndex;if(t>i){var a=0;if(i>=0){var c=o[i];a=c.offset+c.size}for(var l=i+1;l<=t;l++){var s=r(l);o[l]={offset:a,size:s},a+=s}n.lastMeasuredIndex=t}return o[t]},Li=function(e,t,n,r,o){for(;r<=n;){var i=r+Math.floor((n-r)/2),a=ji(e,i,t).offset;if(a===o)return i;a<o?r=i+1:a>o&&(n=i-1)}return r>0?r-1:0},qi=function(e,t){var n=e.itemCount,r=t.itemMetadataMap,o=t.estimatedItemSize,i=t.lastMeasuredIndex,a=0;if(i>=n&&(i=n-1),i>=0){var c=r[i];a=c.offset+c.size}return a+(n-i-1)*o},Ui=Pi({getItemOffset:function(e,t,n){return ji(e,t,n).offset},getItemSize:function(e,t,n){return n.itemMetadataMap[t].size},getEstimatedTotalSize:qi,getOffsetForIndexAndAlignment:function(e,t,n,r,o,i){var a=e.direction,c=e.height,l=e.layout,s=e.width,A="horizontal"===a||"horizontal"===l?s:c,u=ji(e,t,o),d=qi(e,o),p=Math.max(0,Math.min(d-A,u.offset)),y=Math.max(0,u.offset-A+u.size+i);switch("smart"===n&&(n=r>=y-A&&r<=p+A?"auto":"center"),n){case"start":return p;case"end":return y;case"center":return Math.round(y+(p-y)/2);default:return r>=y&&r<=p?r:r<y?y:p}},getStartIndexForOffset:function(e,t,n){return function(e,t,n){var r=t.itemMetadataMap,o=t.lastMeasuredIndex;return(o>0?r[o].offset:0)>=n?Li(e,t,o,0,n):function(e,t,n,r){for(var o=e.itemCount,i=1;n<o&&ji(e,n,t).offset<r;)n+=i,i*=2;return Li(e,t,Math.min(n,o-1),Math.floor(n/2),r)}(e,t,Math.max(0,o),n)}(e,n,t)},getStopIndexForStartIndex:function(e,t,n,r){for(var o=e.direction,i=e.height,a=e.itemCount,c=e.layout,l=e.width,s="horizontal"===o||"horizontal"===c?l:i,A=ji(e,t,r),u=n+s,d=A.offset+A.size,p=t;p<a-1&&d<u;)p++,d+=ji(e,p,r).size;return p},initInstanceProps:function(e,t){var n={itemMetadataMap:{},estimatedItemSize:e.estimatedItemSize||50,lastMeasuredIndex:-1};return t.resetAfterIndex=function(e,r){void 0===r&&(r=!0),n.lastMeasuredIndex=Math.min(n.lastMeasuredIndex,e-1),t._getItemStyleCache(-1),r&&t.forceUpdate()},n},shouldResetStyleCacheOnItemSizeChange:!1,validateProps:function(e){e.itemSize}}),Vi=n(1143),Wi=n.n(Vi);var Gi=n(5697),Yi=n.n(Gi),Hi=function(){function e(){d(this,e),A(this,"refs",{})}return y(e,[{key:"add",value:function(e,t){this.refs[e]||(this.refs[e]=[]),this.refs[e].push(t)}},{key:"remove",value:function(e,t){var n=this.getIndex(e,t);-1!==n&&this.refs[e].splice(n,1)}},{key:"isActive",value:function(){return this.active}},{key:"getActive",value:function(){var e=this;return this.refs[this.active.collection].find((function(t){return t.node.sortableInfo.index==e.active.index}))}},{key:"getIndex",value:function(e,t){return this.refs[e].indexOf(t)}},{key:"getOrderedRefs",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.active.collection;return this.refs[e].sort(Zi)}}]),e}();function Zi(e,t){return e.node.sortableInfo.index-t.node.sortableInfo.index}function Ji(e,t){return Object.keys(e).reduce((function(n,r){return-1===t.indexOf(r)&&(n[r]=e[r]),n}),{})}var Ki={end:["touchend","touchcancel","mouseup"],move:["touchmove","mousemove"],start:["touchstart","mousedown"]},Xi=function(){if("undefined"==typeof window||"undefined"==typeof document)return"";var e=window.getComputedStyle(document.documentElement,"")||["-moz-hidden-iframe"],t=(Array.prototype.slice.call(e).join("").match(/-(moz|webkit|ms)-/)||""===e.OLink&&["","o"])[1];return"ms"===t?"ms":t&&t.length?t[0].toUpperCase()+t.substr(1):""}();function $i(e,t){Object.keys(t).forEach((function(n){e.style[n]=t[n]}))}function ea(e,t){e.style["".concat(Xi,"Transform")]=null==t?"":"translate3d(".concat(t.x,"px,").concat(t.y,"px,0)")}function ta(e,t){e.style["".concat(Xi,"TransitionDuration")]=null==t?"":"".concat(t,"ms")}function na(e,t){for(;e;){if(t(e))return e;e=e.parentNode}return null}function ra(e,t,n){return Math.max(e,Math.min(n,t))}function oa(e){return"px"===e.substr(-2)?parseFloat(e):0}function ia(e,t){var n=t.displayName||t.name;return n?"".concat(e,"(").concat(n,")"):e}function aa(e,t){var n=e.getBoundingClientRect();return{top:n.top+t.top,left:n.left+t.left}}function ca(e){return e.touches&&e.touches.length?{x:e.touches[0].pageX,y:e.touches[0].pageY}:e.changedTouches&&e.changedTouches.length?{x:e.changedTouches[0].pageX,y:e.changedTouches[0].pageY}:{x:e.pageX,y:e.pageY}}function la(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{left:0,top:0};if(e){var r={left:n.left+e.offsetLeft,top:n.top+e.offsetTop};return e.parentNode===t?r:la(e.parentNode,t,r)}}function sa(e){var t=e.lockOffset,n=e.width,r=e.height,o=t,i=t,a="px";if("string"==typeof t){var c=/^[+-]?\d*(?:\.\d*)?(px|%)$/.exec(t);Wi()(null!==c,'lockOffset value should be a number or a string of a number followed by "px" or "%". Given %s',t),o=parseFloat(t),i=parseFloat(t),a=c[1]}return Wi()(isFinite(o)&&isFinite(i),"lockOffset value should be a finite. Given %s",t),"%"===a&&(o=o*n/100,i=i*r/100),{x:o,y:i}}function Aa(e){return e instanceof HTMLElement?function(e){var t=window.getComputedStyle(e),n=/(auto|scroll)/;return["overflow","overflowX","overflowY"].find((function(e){return n.test(t[e])}))}(e)?e:Aa(e.parentNode):null}var ua={Anchor:"A",Button:"BUTTON",Canvas:"CANVAS",Input:"INPUT",Option:"OPTION",Textarea:"TEXTAREA",Select:"SELECT"};function da(e){return null!=e.sortableHandle}var pa=function(){function e(t,n){d(this,e),this.container=t,this.onScrollCallback=n}return y(e,[{key:"clear",value:function(){null!=this.interval&&(clearInterval(this.interval),this.interval=null)}},{key:"update",value:function(e){var t=this,n=e.translate,r=e.minTranslate,o=e.maxTranslate,i=e.width,a=e.height,c={x:0,y:0},l={x:1,y:1},s=this.container,A=s.scrollTop,u=s.scrollLeft,d=s.scrollHeight,p=s.scrollWidth,y=0===A,g=d-A-s.clientHeight==0,h=0===u,f=p-u-s.clientWidth==0;n.y>=o.y-a/2&&!g?(c.y=1,l.y=10*Math.abs((o.y-a/2-n.y)/a)):n.x>=o.x-i/2&&!f?(c.x=1,l.x=10*Math.abs((o.x-i/2-n.x)/i)):n.y<=r.y+a/2&&!y?(c.y=-1,l.y=10*Math.abs((n.y-a/2-r.y)/a)):n.x<=r.x+i/2&&!h&&(c.x=-1,l.x=10*Math.abs((n.x-i/2-r.x)/i)),this.interval&&(this.clear(),this.isAutoScrolling=!1),0===c.x&&0===c.y||(this.interval=setInterval((function(){t.isAutoScrolling=!0;var e={left:l.x*c.x,top:l.y*c.y};t.container.scrollTop+=e.top,t.container.scrollLeft+=e.left,t.onScrollCallback(e)}),5))}}]),e}(),ya={axis:Yi().oneOf(["x","y","xy"]),contentWindow:Yi().any,disableAutoscroll:Yi().bool,distance:Yi().number,getContainer:Yi().func,getHelperDimensions:Yi().func,helperClass:Yi().string,helperContainer:Yi().oneOfType([Yi().func,"undefined"==typeof HTMLElement?Yi().any:Yi().instanceOf(HTMLElement)]),hideSortableGhost:Yi().bool,keyboardSortingTransitionDuration:Yi().number,lockAxis:Yi().string,lockOffset:Yi().oneOfType([Yi().number,Yi().string,Yi().arrayOf(Yi().oneOfType([Yi().number,Yi().string]))]),lockToContainerEdges:Yi().bool,onSortEnd:Yi().func,onSortMove:Yi().func,onSortOver:Yi().func,onSortStart:Yi().func,pressDelay:Yi().number,pressThreshold:Yi().number,keyCodes:Yi().shape({lift:Yi().arrayOf(Yi().number),drop:Yi().arrayOf(Yi().number),cancel:Yi().arrayOf(Yi().number),up:Yi().arrayOf(Yi().number),down:Yi().arrayOf(Yi().number)}),shouldCancelStart:Yi().func,transitionDuration:Yi().number,updateBeforeSortStart:Yi().func,useDragHandle:Yi().bool,useWindowAsScrollContainer:Yi().bool},ga={lift:[32],drop:[32],cancel:[27],up:[38,37],down:[40,39]},ha={axis:"y",disableAutoscroll:!1,distance:0,getHelperDimensions:function(e){var t=e.node;return{height:t.offsetHeight,width:t.offsetWidth}},hideSortableGhost:!0,lockOffset:"50%",lockToContainerEdges:!1,pressDelay:0,pressThreshold:5,keyCodes:ga,shouldCancelStart:function(e){return-1!==[ua.Input,ua.Textarea,ua.Select,ua.Option,ua.Button].indexOf(e.target.tagName)||!!na(e.target,(function(e){return"true"===e.contentEditable}))},transitionDuration:300,useWindowAsScrollContainer:!1},fa=Object.keys(ya),va=(0,e.createContext)({manager:{}});function ma(t){var n,r,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{withRef:!1};return r=n=function(n){function r(t){var n;d(this,r),A(g(g(n=h(this,f(r).call(this,t)))),"state",{}),A(g(g(n)),"handleStart",(function(e){var t=n.props,r=t.distance,o=t.shouldCancelStart;if(2!==e.button&&!o(e)){n.touched=!0,n.position=ca(e);var i=na(e.target,(function(e){return null!=e.sortableInfo}));if(i&&i.sortableInfo&&n.nodeIsChild(i)&&!n.state.sorting){var a=n.props.useDragHandle,c=i.sortableInfo,l=c.index,s=c.collection;if(c.disabled)return;if(a&&!na(e.target,da))return;n.manager.active={collection:s,index:l},function(e){return e.touches&&e.touches.length||e.changedTouches&&e.changedTouches.length}(e)||e.target.tagName!==ua.Anchor||e.preventDefault(),r||(0===n.props.pressDelay?n.handlePress(e):n.pressTimer=setTimeout((function(){return n.handlePress(e)}),n.props.pressDelay))}}})),A(g(g(n)),"nodeIsChild",(function(e){return e.sortableInfo.manager===n.manager})),A(g(g(n)),"handleMove",(function(e){var t=n.props,r=t.distance,o=t.pressThreshold;if(!n.state.sorting&&n.touched&&!n._awaitingUpdateBeforeSortStart){var i=ca(e),a={x:n.position.x-i.x,y:n.position.y-i.y},c=Math.abs(a.x)+Math.abs(a.y);n.delta=a,r||o&&!(c>=o)?r&&c>=r&&n.manager.isActive()&&n.handlePress(e):(clearTimeout(n.cancelTimer),n.cancelTimer=setTimeout(n.cancel,0))}})),A(g(g(n)),"handleEnd",(function(){n.touched=!1,n.cancel()})),A(g(g(n)),"cancel",(function(){var e=n.props.distance;n.state.sorting||(e||clearTimeout(n.pressTimer),n.manager.active=null)})),A(g(g(n)),"handlePress",(function(e){try{var t=n.manager.getActive(),r=function(){if(t){var r=function(){var t,r,o,d,v,m,C,b=g.sortableInfo.index,x=(t=g,{bottom:oa((r=window.getComputedStyle(t)).marginBottom),left:oa(r.marginLeft),right:oa(r.marginRight),top:oa(r.marginTop)}),w=function(e){var t=window.getComputedStyle(e);return"grid"===t.display?{x:oa(t.gridColumnGap),y:oa(t.gridRowGap)}:{x:0,y:0}}(n.container),E=n.scrollContainer.getBoundingClientRect(),_=l({index:b,node:g,collection:h});if(n.node=g,n.margin=x,n.gridGap=w,n.width=_.width,n.height=_.height,n.marginOffset={x:n.margin.left+n.margin.right+n.gridGap.x,y:Math.max(n.margin.top,n.margin.bottom,n.gridGap.y)},n.boundingClientRect=g.getBoundingClientRect(),n.containerBoundingRect=E,n.index=b,n.newIndex=b,n.axis={x:c.indexOf("x")>=0,y:c.indexOf("y")>=0},n.offsetEdge=la(g,n.container),n.initialOffset=ca(f?u({},e,{pageX:n.boundingClientRect.left,pageY:n.boundingClientRect.top}):e),n.initialScroll={left:n.scrollContainer.scrollLeft,top:n.scrollContainer.scrollTop},n.initialWindowScroll={left:window.pageXOffset,top:window.pageYOffset},n.helper=n.helperContainer.appendChild((d="input, textarea, select, canvas, [contenteditable]",v=(o=g).querySelectorAll(d),(C=(m=o.cloneNode(!0)).querySelectorAll(d),function(e){if(Array.isArray(e))return i(e)}(C)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(C)||a(C)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).forEach((function(e,t){"file"!==e.type&&(e.value=v[t].value),"radio"===e.type&&e.name&&(e.name="__sortableClone__".concat(e.name)),e.tagName===ua.Canvas&&v[t].width>0&&v[t].height>0&&e.getContext("2d").drawImage(v[t],0,0)})),m)),$i(n.helper,{boxSizing:"border-box",height:"".concat(n.height,"px"),left:"".concat(n.boundingClientRect.left-x.left,"px"),pointerEvents:"none",position:"fixed",top:"".concat(n.boundingClientRect.top-x.top,"px"),width:"".concat(n.width,"px")}),f&&n.helper.focus(),A&&(n.sortableGhost=g,$i(g,{opacity:0,visibility:"hidden"})),n.minTranslate={},n.maxTranslate={},f){var k=y?{top:0,left:0,width:n.contentWindow.innerWidth,height:n.contentWindow.innerHeight}:n.containerBoundingRect,B=k.top,I=k.left,S=k.width,D=B+k.height,z=I+S;n.axis.x&&(n.minTranslate.x=I-n.boundingClientRect.left,n.maxTranslate.x=z-(n.boundingClientRect.left+n.width)),n.axis.y&&(n.minTranslate.y=B-n.boundingClientRect.top,n.maxTranslate.y=D-(n.boundingClientRect.top+n.height))}else n.axis.x&&(n.minTranslate.x=(y?0:E.left)-n.boundingClientRect.left-n.width/2,n.maxTranslate.x=(y?n.contentWindow.innerWidth:E.left+E.width)-n.boundingClientRect.left-n.width/2),n.axis.y&&(n.minTranslate.y=(y?0:E.top)-n.boundingClientRect.top-n.height/2,n.maxTranslate.y=(y?n.contentWindow.innerHeight:E.top+E.height)-n.boundingClientRect.top-n.height/2);s&&s.split(" ").forEach((function(e){return n.helper.classList.add(e)})),n.listenerNode=e.touches?e.target:n.contentWindow,f?(n.listenerNode.addEventListener("wheel",n.handleKeyEnd,!0),n.listenerNode.addEventListener("mousedown",n.handleKeyEnd,!0),n.listenerNode.addEventListener("keydown",n.handleKeyDown)):(Ki.move.forEach((function(e){return n.listenerNode.addEventListener(e,n.handleSortMove,!1)})),Ki.end.forEach((function(e){return n.listenerNode.addEventListener(e,n.handleSortEnd,!1)}))),n.setState({sorting:!0,sortingIndex:b}),p&&p({node:g,index:b,collection:h,isKeySorting:f,nodes:n.manager.getOrderedRefs(),helper:n.helper},e),f&&n.keyMove(0)},o=n.props,c=o.axis,l=o.getHelperDimensions,s=o.helperClass,A=o.hideSortableGhost,d=o.updateBeforeSortStart,p=o.onSortStart,y=o.useWindowAsScrollContainer,g=t.node,h=t.collection,f=n.manager.isKeySorting,v=function(){if("function"==typeof d){n._awaitingUpdateBeforeSortStart=!0;var t=function(t,n){try{var r=(o=g.sortableInfo.index,Promise.resolve(d({collection:h,index:o,node:g,isKeySorting:f},e)).then((function(){})))}catch(e){return n(!0,e)}var o;return r&&r.then?r.then(n.bind(null,!1),n.bind(null,!0)):n(!1,value)}(0,(function(e,t){if(n._awaitingUpdateBeforeSortStart=!1,e)throw t;return t}));if(t&&t.then)return t.then((function(){}))}}();return v&&v.then?v.then(r):r()}}();return Promise.resolve(r&&r.then?r.then((function(){})):void 0)}catch(e){return Promise.reject(e)}})),A(g(g(n)),"handleSortMove",(function(e){var t=n.props.onSortMove;"function"==typeof e.preventDefault&&e.cancelable&&e.preventDefault(),n.updateHelperPosition(e),n.animateNodes(),n.autoscroll(),t&&t(e)})),A(g(g(n)),"handleSortEnd",(function(e){var t=n.props,r=t.hideSortableGhost,o=t.onSortEnd,i=n.manager,a=i.active.collection,c=i.isKeySorting,l=n.manager.getOrderedRefs();n.listenerNode&&(c?(n.listenerNode.removeEventListener("wheel",n.handleKeyEnd,!0),n.listenerNode.removeEventListener("mousedown",n.handleKeyEnd,!0),n.listenerNode.removeEventListener("keydown",n.handleKeyDown)):(Ki.move.forEach((function(e){return n.listenerNode.removeEventListener(e,n.handleSortMove)})),Ki.end.forEach((function(e){return n.listenerNode.removeEventListener(e,n.handleSortEnd)})))),n.helper.parentNode.removeChild(n.helper),r&&n.sortableGhost&&$i(n.sortableGhost,{opacity:"",visibility:""});for(var s=0,A=l.length;s<A;s++){var u=l[s],d=u.node;u.edgeOffset=null,u.boundingClientRect=null,ea(d,null),ta(d,null),u.translate=null}n.autoScroller.clear(),n.manager.active=null,n.manager.isKeySorting=!1,n.setState({sorting:!1,sortingIndex:null}),"function"==typeof o&&o({collection:a,newIndex:n.newIndex,oldIndex:n.index,isKeySorting:c,nodes:l},e),n.touched=!1})),A(g(g(n)),"autoscroll",(function(){var e=n.props.disableAutoscroll,t=n.manager.isKeySorting;if(e)n.autoScroller.clear();else{if(t){var r=u({},n.translate),o=0,i=0;return n.axis.x&&(r.x=Math.min(n.maxTranslate.x,Math.max(n.minTranslate.x,n.translate.x)),o=n.translate.x-r.x),n.axis.y&&(r.y=Math.min(n.maxTranslate.y,Math.max(n.minTranslate.y,n.translate.y)),i=n.translate.y-r.y),n.translate=r,ea(n.helper,n.translate),n.scrollContainer.scrollLeft+=o,void(n.scrollContainer.scrollTop+=i)}n.autoScroller.update({height:n.height,maxTranslate:n.maxTranslate,minTranslate:n.minTranslate,translate:n.translate,width:n.width})}})),A(g(g(n)),"onAutoScroll",(function(e){n.translate.x+=e.left,n.translate.y+=e.top,n.animateNodes()})),A(g(g(n)),"handleKeyDown",(function(e){var t=e.keyCode,r=n.props,o=r.shouldCancelStart,i=r.keyCodes,a=u({},ga,void 0===i?{}:i);n.manager.active&&!n.manager.isKeySorting||!(n.manager.active||a.lift.includes(t)&&!o(e)&&n.isValidSortingTarget(e))||(e.stopPropagation(),e.preventDefault(),a.lift.includes(t)&&!n.manager.active?n.keyLift(e):a.drop.includes(t)&&n.manager.active?n.keyDrop(e):a.cancel.includes(t)?(n.newIndex=n.manager.active.index,n.keyDrop(e)):a.up.includes(t)?n.keyMove(-1):a.down.includes(t)&&n.keyMove(1))})),A(g(g(n)),"keyLift",(function(e){var t=e.target,r=na(t,(function(e){return null!=e.sortableInfo})).sortableInfo,o=r.index,i=r.collection;n.initialFocusedNode=t,n.manager.isKeySorting=!0,n.manager.active={index:o,collection:i},n.handlePress(e)})),A(g(g(n)),"keyMove",(function(e){var t=n.manager.getOrderedRefs(),r=t[t.length-1].node.sortableInfo.index,o=n.newIndex+e,i=n.newIndex;if(!(o<0||o>r)){n.prevIndex=i,n.newIndex=o;var a=function(e,t,n){return e<n&&e>t?e-1:e>n&&e<t?e+1:e}(n.newIndex,n.prevIndex,n.index),c=t.find((function(e){return e.node.sortableInfo.index===a})),l=c.node,s=n.containerScrollDelta,A=c.boundingClientRect||aa(l,s),u=c.translate||{x:0,y:0},d=A.top+u.y-s.top,p=A.left+u.x-s.left,y=i<o,g=y&&n.axis.x?l.offsetWidth-n.width:0,h=y&&n.axis.y?l.offsetHeight-n.height:0;n.handleSortMove({pageX:p+g,pageY:d+h,ignoreTransition:0===e})}})),A(g(g(n)),"keyDrop",(function(e){n.handleSortEnd(e),n.initialFocusedNode&&n.initialFocusedNode.focus()})),A(g(g(n)),"handleKeyEnd",(function(e){n.manager.active&&n.keyDrop(e)})),A(g(g(n)),"isValidSortingTarget",(function(e){var t=n.props.useDragHandle,r=e.target,o=na(r,(function(e){return null!=e.sortableInfo}));return o&&o.sortableInfo&&!o.sortableInfo.disabled&&(t?da(r):r.sortableInfo)}));var o=new Hi;return function(e){Wi()(!(e.distance&&e.pressDelay),"Attempted to set both `pressDelay` and `distance` on SortableContainer, you may only use one or the other, not both at the same time.")}(t),n.manager=o,n.wrappedInstance=(0,e.createRef)(),n.sortableContextValue={manager:o},n.events={end:n.handleEnd,move:n.handleMove,start:n.handleStart},n}return m(r,n),y(r,[{key:"componentDidMount",value:function(){var e=this,t=this.props.useWindowAsScrollContainer,n=this.getContainer();Promise.resolve(n).then((function(n){e.container=n,e.document=e.container.ownerDocument||document;var r=e.props.contentWindow||e.document.defaultView||window;e.contentWindow="function"==typeof r?r():r,e.scrollContainer=t?e.document.scrollingElement||e.document.documentElement:Aa(e.container)||e.container,e.autoScroller=new pa(e.scrollContainer,e.onAutoScroll),Object.keys(e.events).forEach((function(t){return Ki[t].forEach((function(n){return e.container.addEventListener(n,e.events[t],!1)}))})),e.container.addEventListener("keydown",e.handleKeyDown)}))}},{key:"componentWillUnmount",value:function(){var e=this;this.helper&&this.helper.parentNode&&this.helper.parentNode.removeChild(this.helper),this.container&&(Object.keys(this.events).forEach((function(t){return Ki[t].forEach((function(n){return e.container.removeEventListener(n,e.events[t])}))})),this.container.removeEventListener("keydown",this.handleKeyDown))}},{key:"updateHelperPosition",value:function(e){var t=this.props,n=t.lockAxis,r=t.lockOffset,o=t.lockToContainerEdges,i=t.transitionDuration,a=t.keyboardSortingTransitionDuration,l=void 0===a?i:a,s=this.manager.isKeySorting,A=e.ignoreTransition,u=ca(e),d={x:u.x-this.initialOffset.x,y:u.y-this.initialOffset.y};if(d.y-=window.pageYOffset-this.initialWindowScroll.top,d.x-=window.pageXOffset-this.initialWindowScroll.left,this.translate=d,o){var p=function(e){var t=e.height,n=e.width,r=e.lockOffset,o=Array.isArray(r)?r:[r,r];Wi()(2===o.length,"lockOffset prop of SortableContainer should be a single value or an array of exactly two values. Given %s",r);var i=c(o,2),a=i[0],l=i[1];return[sa({height:t,lockOffset:a,width:n}),sa({height:t,lockOffset:l,width:n})]}({height:this.height,lockOffset:r,width:this.width}),y=c(p,2),g=y[0],h=y[1],f={x:this.width/2-g.x,y:this.height/2-g.y},v={x:this.width/2-h.x,y:this.height/2-h.y};d.x=ra(this.minTranslate.x+f.x,this.maxTranslate.x-v.x,d.x),d.y=ra(this.minTranslate.y+f.y,this.maxTranslate.y-v.y,d.y)}"x"===n?d.y=0:"y"===n&&(d.x=0),s&&l&&!A&&ta(this.helper,l),ea(this.helper,d)}},{key:"animateNodes",value:function(){var e=this.props,t=e.transitionDuration,n=e.hideSortableGhost,r=e.onSortOver,o=this.containerScrollDelta,i=this.windowScrollDelta,a=this.manager.getOrderedRefs(),c=this.offsetEdge.left+this.translate.x+o.left,l=this.offsetEdge.top+this.translate.y+o.top,s=this.manager.isKeySorting,A=this.newIndex;this.newIndex=null;for(var u=0,d=a.length;u<d;u++){var p=a[u].node,y=p.sortableInfo.index,g=p.offsetWidth,h=p.offsetHeight,f={height:this.height>h?h/2:this.height/2,width:this.width>g?g/2:this.width/2},v=s&&y>this.index&&y<=A,m=s&&y<this.index&&y>=A,C={x:0,y:0},b=a[u].edgeOffset;b||(b=la(p,this.container),a[u].edgeOffset=b,s&&(a[u].boundingClientRect=aa(p,o)));var x=u<a.length-1&&a[u+1],w=u>0&&a[u-1];x&&!x.edgeOffset&&(x.edgeOffset=la(x.node,this.container),s&&(x.boundingClientRect=aa(x.node,o))),y!==this.index?(t&&ta(p,t),this.axis.x?this.axis.y?m||y<this.index&&(c+i.left-f.width<=b.left&&l+i.top<=b.top+f.height||l+i.top+f.height<=b.top)?(C.x=this.width+this.marginOffset.x,b.left+C.x>this.containerBoundingRect.width-f.width&&x&&(C.x=x.edgeOffset.left-b.left,C.y=x.edgeOffset.top-b.top),null===this.newIndex&&(this.newIndex=y)):(v||y>this.index&&(c+i.left+f.width>=b.left&&l+i.top+f.height>=b.top||l+i.top+f.height>=b.top+h))&&(C.x=-(this.width+this.marginOffset.x),b.left+C.x<this.containerBoundingRect.left+f.width&&w&&(C.x=w.edgeOffset.left-b.left,C.y=w.edgeOffset.top-b.top),this.newIndex=y):v||y>this.index&&c+i.left+f.width>=b.left?(C.x=-(this.width+this.marginOffset.x),this.newIndex=y):(m||y<this.index&&c+i.left<=b.left+f.width)&&(C.x=this.width+this.marginOffset.x,null==this.newIndex&&(this.newIndex=y)):this.axis.y&&(v||y>this.index&&l+i.top+f.height>=b.top?(C.y=-(this.height+this.marginOffset.y),this.newIndex=y):(m||y<this.index&&l+i.top<=b.top+f.height)&&(C.y=this.height+this.marginOffset.y,null==this.newIndex&&(this.newIndex=y))),ea(p,C),a[u].translate=C):n&&(this.sortableGhost=p,$i(p,{opacity:0,visibility:"hidden"}))}null==this.newIndex&&(this.newIndex=this.index),s&&(this.newIndex=A);var E=s?this.prevIndex:A;r&&this.newIndex!==E&&r({collection:this.manager.active.collection,index:this.index,newIndex:this.newIndex,oldIndex:E,isKeySorting:s,nodes:a,helper:this.helper})}},{key:"getWrappedInstance",value:function(){return Wi()(l.withRef,"To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableContainer() call"),this.wrappedInstance.current}},{key:"getContainer",value:function(){var e=this.props.getContainer;return"function"!=typeof e?(0,Qt.findDOMNode)(this):e(l.withRef?this.getWrappedInstance():void 0)}},{key:"render",value:function(){var n=l.withRef?this.wrappedInstance:null;return(0,e.createElement)(va.Provider,{value:this.sortableContextValue},(0,e.createElement)(t,o({ref:n},Ji(this.props,fa))))}},{key:"helperContainer",get:function(){var e=this.props.helperContainer;return"function"==typeof e?e():this.props.helperContainer||this.document.body}},{key:"containerScrollDelta",get:function(){return this.props.useWindowAsScrollContainer?{left:0,top:0}:{left:this.scrollContainer.scrollLeft-this.initialScroll.left,top:this.scrollContainer.scrollTop-this.initialScroll.top}}},{key:"windowScrollDelta",get:function(){return{left:this.contentWindow.pageXOffset-this.initialWindowScroll.left,top:this.contentWindow.pageYOffset-this.initialWindowScroll.top}}}]),r}(e.Component),A(n,"displayName",ia("sortableList",t)),A(n,"defaultProps",ha),A(n,"propTypes",ya),r}var Ca,ba={index:Yi().number.isRequired,collection:Yi().oneOfType([Yi().number,Yi().string]),disabled:Yi().bool},xa=Object.keys(ba);!function(e){e.IOS="ios",e.ANDROID="android",e.BROWSER="browser"}(Ca||(Ca={})),lt("root")({mobile:!0}).split(/\s+/)[1];const wa={mobile:!1,platform:Ca.BROWSER,useHistory:()=>({action:"",replace(){},push(){},goBack(){}}),useLocation:()=>({pathname:"",search:"",hash:""}),setMobile:()=>{},setPlatform:()=>{}},Ea=e.createContext(wa),_a=["Tab"];function ka(t){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 6 10",width:"6",height:"10",fill:"currentColor"},gt,t),e.createElement("path",{d:"M0 0h2v2H0zm0 4h2v2H0zm0 4h2v2H0zm4-8h2v2H4zm0 4h2v2H4zm0 4h2v2H4z"}))}const Ba=lt("list"),Ia=e=>String(e);class Sa extends e.Component{constructor(){super(...arguments),this.ref=e.createRef(),this.getRef=()=>this.ref,this.onClick=()=>{var e,t;return null===(t=(e=this.props).onClick)||void 0===t?void 0:t.call(e,this.props.item,this.props.itemIndex)},this.onClickCapture=e=>{Sa.publishEvent({domEvent:e,eventId:"click"})},this.onMouseEnter=()=>!this.props.item.disabled&&this.props.onActivate(this.props.itemIndex),this.onMouseLeave=()=>this.props.onActivate(void 0)}render(){const{item:t,style:n,sortable:r,sortHandleAlign:o,itemClassName:i,selected:a,active:c}=this.props;return e.createElement("div",{role:"listitem","data-qa":c?"list-active-item":void 0,className:Ba("item",{sortable:r,active:c,selected:a,inactive:t.disabled,"sort-handle-align":o},i),style:n,onClick:t.disabled?void 0:this.onClick,onClickCapture:t.disabled?void 0:this.onClickCapture,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,ref:this.ref},this.renderSortIcon(),this.renderContent())}renderSortIcon(){const{sortable:t}=this.props;return t?e.createElement("div",{className:Ba("item-sort-icon")},e.createElement(ka,null)):null}renderContent(){const{renderItem:t=Ia,item:n,active:r,itemIndex:o}=this.props;return e.createElement("div",{className:Ba("item-content")},t(n,r,o))}}Sa.publishEvent=dt.withEventPublisher("List");var Da=n(6026),za=n.n(Da);function Ta(t){return za()(t).reduce(((t,n)=>(t[n]=e.createRef(),t)),{})}class Qa extends e.Component{static getDerivedStateFromProps({itemCount:e},t){return e===Object.keys(t).length?t:Ta(e)}constructor(e){super(e),this.state=Ta(e.itemCount)}render(){const t=e.Children.map(this.props.children,((t,n)=>e.cloneElement(t,{ref:this.state[n]})));return e.createElement("div",null,t)}scrollToItem(e){var t,n,r;const o=null===(t=this.state[e])||void 0===t?void 0:t.current;if(o&&"function"==typeof o.getRef){const e=o.getRef();e.current&&(null===(r=(n=e.current).scrollIntoView)||void 0===r||r.call(n,{block:"nearest"}))}}}var Ma=n(3799),Fa={};Fa.styleTagTransform=Ne(),Fa.setAttributes=Qe(),Fa.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Fa.domAPI=ze(),Fa.insertStyleElement=Fe(),Se()(Ma.Z,Fa),Ma.Z&&Ma.Z.locals&&Ma.Z.locals;const Oa=lt("list"),Na=function(t){var n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{withRef:!1};return r=n=function(n){function r(){var t,n;d(this,r);for(var o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];return A(g(g(n=h(this,(t=f(r)).call.apply(t,[this].concat(i))))),"wrappedInstance",(0,e.createRef)()),n}return m(r,n),y(r,[{key:"componentDidMount",value:function(){this.register()}},{key:"componentDidUpdate",value:function(e){this.node&&(e.index!==this.props.index&&(this.node.sortableInfo.index=this.props.index),e.disabled!==this.props.disabled&&(this.node.sortableInfo.disabled=this.props.disabled)),e.collection!==this.props.collection&&(this.unregister(e.collection),this.register())}},{key:"componentWillUnmount",value:function(){this.unregister()}},{key:"register",value:function(){var e=this.props,t=e.collection,n=e.disabled,r=e.index,o=(0,Qt.findDOMNode)(this);o.sortableInfo={collection:t,disabled:n,index:r,manager:this.context.manager},this.node=o,this.ref={node:o},this.context.manager.add(t,this.ref)}},{key:"unregister",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.props.collection;this.context.manager.remove(e,this.ref)}},{key:"getWrappedInstance",value:function(){return Wi()(i.withRef,"To access the wrapped instance, you need to pass in {withRef: true} as the second argument of the SortableElement() call"),this.wrappedInstance.current}},{key:"render",value:function(){var n=i.withRef?this.wrappedInstance:null;return(0,e.createElement)(t,o({ref:n},Ji(this.props,xa)))}}]),r}(e.Component),A(n,"displayName",ia("sortableElement",t)),A(n,"contextType",va),A(n,"propTypes",ba),A(n,"defaultProps",{collection:0}),r}(Sa),Pa=ma(Ui,{withRef:!0}),Ra=ma(Qa,{withRef:!0});class ja extends e.Component{constructor(){super(...arguments),this.state={items:this.props.items,filter:""},this.refFilter=e.createRef(),this.refContainer=e.createRef(),this.blurTimer=null,this.onKeyDown=e=>{const{activeItem:t,pageSize:n}=this.state;if(!_a.includes(e.key))switch(e.key){case"ArrowDown":this.handleKeyMove(e,1,-1);break;case"ArrowUp":this.handleKeyMove(e,-1);break;case"PageDown":this.handleKeyMove(e,n);break;case"PageUp":this.handleKeyMove(e,-n);break;case"Home":this.handleKeyMove(e,this.state.items.length-(t||0));break;case"End":this.handleKeyMove(e,-(t||0)-1);break;case"Enter":"number"==typeof t&&this.props.onItemClick&&this.props.onItemClick(this.state.items[t],t,!0);break;default:this.refFilter.current&&this.refFilter.current.focus()}},this.renderItem=({index:t,style:n})=>{const{sortHandleAlign:r}=this.props,{items:o,activeItem:i}=this.state,a=o[t],c=this.props.sortable&&o.length>1&&!this.getFilter(),l=t===i||t===this.props.activeItemIndex,s=c?Na:Sa;return e.createElement(s,{key:t,style:n,index:t,itemIndex:t,item:a,sortable:c,sortHandleAlign:r,renderItem:this.props.renderItem,itemClassName:this.props.itemClassName,active:l,selected:t===this.props.selectedItemIndex,onActivate:this.onItemActivate,onClick:this.props.onItemClick})},this.filterItem=e=>t=>String(t).includes(e),this.scrollToIndex=e=>{const t=this.getContainer();t&&t.scrollToItem(e)},this.deactivate=()=>{this.blurTimer&&this.props.deactivateOnLeave&&this.setState({activeItem:void 0})},this.handleFocus=()=>{this.blurTimer&&(clearTimeout(this.blurTimer),this.blurTimer=null)},this.handleBlur=()=>{this.blurTimer||(this.blurTimer=setTimeout(this.deactivate,50))},this.onUpdateFilterInternal=e=>{const{items:t,filterItem:n=this.filterItem,onFilterEnd:r}=this.props;this.setState({filter:e,items:e?t.filter(n(e)):t},(()=>{r&&r({items:this.state.items})}))},this.onFilterUpdate=e=>{this.props.onFilterUpdate?this.props.onFilterUpdate(e):this.onUpdateFilterInternal(e)},this.onItemsRendered=({visibleStartIndex:e,visibleStopIndex:t})=>{this.setState({pageSize:t-e})},this.onItemActivate=e=>{this.state.sorting||this.activateItem(e,!1)},this.onMouseLeave=()=>{this.deactivate()},this.onSortStart=()=>{this.setState({sorting:!0})},this.onSortEnd=e=>{this.props.onSortEnd&&this.props.onSortEnd(e),this.setState({sorting:!1,activeItem:e.newIndex})},this.getItemHeight=e=>{const{itemHeight:t}=this.props;if("function"==typeof t){const{items:n}=this.state;return t(n[e],e)}return t},this.getVirtualizedItemHeight=e=>this.getItemHeight(e)||28}static moveListElement(e,t,n){if(t!==n){const[r]=e.splice(t,1);e.splice(n,0,r)}return e}static findNextIndex(e,t,n){const r=e.length;let o=(t+r)%r;for(let t=0;t<r;t+=1){if(e[o]&&!e[o].disabled)return o;o=(o+r+n)%r}}componentDidUpdate(e){if(this.props.items!==e.items){const e=this.getFilter();e&&!this.props.onFilterUpdate?this.onUpdateFilterInternal(e):this.setState({items:this.props.items})}this.props.activeItemIndex!==e.activeItemIndex&&this.activateItem(this.props.activeItemIndex)}componentWillUnmount(){this.blurTimer=null}render(){const{emptyPlaceholder:t,virtualized:n,className:r,itemsClassName:o,qa:i}=this.props,{items:a}=this.state;return e.createElement(Ea.Consumer,null,(({mobile:c})=>e.createElement("div",{className:Oa({mobile:c},r),"data-qa":i,tabIndex:-1,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.onKeyDown},this.renderFilter(),e.createElement("div",{className:Oa("items",{virtualized:n},o),style:this.getItemsStyle(),onMouseLeave:this.onMouseLeave},this.renderItems(),0===a.length&&Boolean(t)&&e.createElement("div",{className:Oa("empty-placeholder")},t)))))}getItems(){return this.state.items}getActiveItem(){return"number"==typeof this.state.activeItem?this.state.activeItem:null}activateItem(e,t=!0){"number"==typeof e&&t&&this.scrollToIndex(e),this.setState({activeItem:e})}renderFilter(){const{size:t,filterable:n,filter:r=this.state.filter,filterPlaceholder:o,filterClassName:i="",autoFocus:a}=this.props;return n?e.createElement("div",{className:Oa("filter",i)},e.createElement($o,{controlRef:this.refFilter,size:t,placeholder:o,value:r,hasClear:!0,onUpdate:this.onFilterUpdate,autoFocus:a})):null}renderSimpleContainer(){const{sortable:t}=this.props,{items:n}=this.state,r=t?Ra:Qa;return e.createElement(r,{helperClass:Oa("item",{sorting:!0}),distance:5,lockAxis:"y",onSortStart:this.onSortStart,onSortEnd:this.onSortEnd,itemCount:n.length,ref:this.refContainer},n.map(((e,t)=>this.renderItem({index:t,style:{height:this.getItemHeight(t)}}))))}renderVirtualizedContainer(){const t=this.props.sortable?Pa:Ui;return e.createElement(Bi,null,(({width:n,height:r})=>e.createElement(t,{ref:this.refContainer,width:n,height:r,itemSize:this.getVirtualizedItemHeight,itemData:this.state.items,itemCount:this.state.items.length,overscanCount:10,helperClass:Oa("item",{sorting:!0}),distance:5,lockAxis:"y",onItemsRendered:this.onItemsRendered,onSortStart:this.onSortStart,onSortEnd:this.onSortEnd,activeItem:this.state.activeItem},this.renderItem)))}renderItems(){return this.props.virtualized?this.renderVirtualizedContainer():this.renderSimpleContainer()}getContainer(){const e=this.refContainer.current,t=e&&"getWrappedInstance"in e&&"function"==typeof e.getWrappedInstance&&e.getWrappedInstance();return this.props.sortable?t:e}getFilter(){const{filter:e=this.state.filter}=this.props;return e}getItemsStyle(){let{itemsHeight:e}=this.props;return"function"==typeof e&&(e=e(this.state.items)),e?{height:e}:void 0}handleKeyMove(e,t,n=0){e.preventDefault();const{activeItem:r=n}=this.state;this.activateItem(ja.findNextIndex(this.state.items,r+t,Math.sign(t)))}}ja.defaultProps={items:[],itemClassName:"",filterable:!0,sortable:!1,virtualized:!0,deactivateOnLeave:!0};const La=(0,de.Z)("dc-subscribe"),qa=(0,e.memo)((t=>{const{t:n,visible:r,setVisible:o,anchor:i,view:a,isVerticalView:c,onSubscribe:l,onSubmit:s}=t,A=(0,e.useCallback)((()=>o(!1)),[o]),[u,d]=(0,e.useState)(""),[p,y]=(0,e.useState)(""),[g,h]=(0,e.useState)(le.documentation),f=(0,e.useCallback)((()=>{d("")}),[]),v=(0,e.useCallback)((e=>{if(e.preventDefault(),function(e){return!/\S+@\S+/.test(e)}(u))y(n("email-text-invalid"));else if(y(""),l){try{l({email:u,type:g}),s()}catch(e){console.error(e),y(n("email-request-fail"))}f()}}),[l,u,f,g,s,n]),m=(0,e.useCallback)((()=>{const t=[{value:le.documentation,text:n("subscribe-documentation-title")},{value:le.page,text:n("subscribe-page-title")}],r=36*t.length,o=t.findIndex((({value:e})=>e===g));return e.createElement(ja,{filterable:!1,items:t,onItemClick:e=>h(e.value),selectedItemIndex:o,itemHeight:36,itemsHeight:r,renderItem:t=>e.createElement("div",{className:La("variant__list-item")},t.text)})}),[g,n]),C=(0,e.useCallback)((()=>e.createElement("form",{onSubmit:v},e.createElement("div",{className:La("textarea")},e.createElement($o,{size:"l",placeholder:n("subscribe-documentation-placeholder"),error:p||void 0,value:u,onUpdate:d})),e.createElement("div",{className:La("variants-actions")},e.createElement(It,{view:"action",className:La("variants-action"),type:"submit"},n("subscribe-text"))))),[u,p,v,n]);return e.createElement(jr,{anchorRef:i,open:r,onOutsideClick:A,className:La("variants-popup",{view:a}),placement:di(c,a)},m(),C())}));qa.displayName="SubscribeVariantsPopup";const Ua=it("controls")(qa);function Va(){return Va=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Va.apply(this,arguments)}const Wa=({styles:t={},...n})=>e.createElement("svg",Va({width:"14",height:"10",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M13.246 3.475c-.584.457-1.32 1.015-3.91 2.894C8.828 6.75 7.889 7.588 7 7.588c-.914 0-1.828-.838-2.361-1.219C2.049 4.49 1.312 3.932.729 3.475c-.102-.077-.229 0-.229.127v5.18C.5 9.466 1.033 10 1.719 10H12.28a1.22 1.22 0 001.219-1.219v-5.18c0-.126-.152-.203-.254-.126zM7 6.75c.584.025 1.422-.736 1.854-1.041 3.377-2.438 3.63-2.666 4.392-3.275a.578.578 0 00.254-.483V1.47c0-.66-.559-1.219-1.219-1.219H1.72A1.218 1.218 0 00.5 1.469v.482c0 .203.076.381.229.483.761.609 1.015.837 4.392 3.275.432.305 1.27 1.066 1.879 1.041z"}),e.createElement("path",{d:"M13.246 3.475l-.06-.08h-.002l.062.08zm-3.91 2.894l-.059-.08h-.001l.06.08zm-4.697 0l-.06.081h.002l.058-.08zM.729 3.475l.061-.08-.06.08zM7 6.75l.004-.1h-.008l.004.1zm1.854-1.041l.057.082h.001l-.058-.082zm4.392-3.275l-.056-.084-.006.006.062.078zm-12.517 0l.062-.079-.007-.005-.055.084zM5.12 5.709l-.058.081.058-.081zm8.064-2.313c-.583.456-1.318 1.013-3.908 2.892l.118.162c2.59-1.879 3.327-2.438 3.913-2.897l-.123-.157zm-3.91 2.893c-.26.195-.613.493-1.017.748-.405.254-.843.45-1.258.45v.2c.473 0 .95-.221 1.364-.481.414-.26.784-.571 1.032-.757l-.12-.16zM7 7.488c-.428 0-.866-.197-1.27-.451-.408-.256-.756-.551-1.033-.75l-.116.164c.256.183.63.497 1.042.755.415.26.891.482 1.377.482v-.2zm-2.303-1.2C2.107 4.41 1.373 3.852.79 3.396l-.123.157c.585.459 1.323 1.018 3.913 2.897l.117-.162zM.79 3.395a.236.236 0 00-.262-.02.258.258 0 00-.127.227h.2c0-.03.014-.046.026-.053a.032.032 0 01.018-.005c.006 0 .014.003.025.01l.12-.16zm-.39.207v5.18h.2v-5.18H.4zm0 5.18c0 .74.578 1.318 1.319 1.318v-.2C1.089 9.9.6 9.412.6 8.781H.4zM1.719 10.1H12.28v-.2H1.72v.2zm10.562 0A1.32 1.32 0 0013.6 8.781h-.2A1.12 1.12 0 0112.281 9.9v.2zM13.6 8.781v-5.18h-.2v5.18h.2zm0-5.18a.26.26 0 00-.414-.206l.12.16a.054.054 0 01.06-.004c.022.011.034.03.034.05h.2zM6.996 6.85c.167.007.345-.042.52-.117a3.42 3.42 0 00.524-.297c.17-.114.336-.239.485-.353.15-.115.28-.218.386-.292l-.115-.164c-.11.078-.246.185-.393.297-.148.114-.31.235-.475.346-.165.111-.333.21-.492.28a1.014 1.014 0 01-.432.1l-.008.2zm1.916-1.06c3.378-2.438 3.633-2.668 4.397-3.278l-.125-.156c-.76.608-1.013.835-4.389 3.272l.117.162zm4.39-3.273a.678.678 0 00.298-.566h-.2a.48.48 0 01-.21.4l.112.166zm.298-.566V1.47h-.2v.482h.2zm0-.482C13.6.753 12.997.15 12.281.15v.2c.605 0 1.119.514 1.119 1.119h.2zM12.281.15H1.72v.2h10.56v-.2zM1.72.15A1.32 1.32 0 00.4 1.469h.2C.6.862 1.09.35 1.719.35v-.2zM.4 1.469v.482h.2V1.47H.4zm0 .482c0 .227.086.441.273.566l.111-.167C.666 2.272.6 2.13.6 1.951H.4zm.266.56c.763.611 1.019.84 4.397 3.28l.117-.163C1.804 3.19 1.55 2.964.79 2.356l-.125.156zm4.397 3.28c.106.074.237.177.387.292.15.114.316.239.489.354.172.114.353.22.532.296.178.076.36.124.533.117l-.008-.2a1.064 1.064 0 01-.447-.101 3.178 3.178 0 01-.5-.28 8.812 8.812 0 01-.477-.345c-.147-.112-.283-.22-.393-.297l-.116.164z"}));var Ga=n(738),Ya={};Ya.styleTagTransform=Ne(),Ya.setAttributes=Qe(),Ya.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Ya.domAPI=ze(),Ya.insertStyleElement=Fe(),Se()(Ga.Z,Ya),Ga.Z&&Ga.Z.locals&&Ga.Z.locals;const Ha=(0,de.Z)("dc-subscribe");var Za;!function(e){e.Wide="wide",e.Regular="regular"}(Za||(Za={}));const Ja=e.memo((t=>{const{isVerticalView:n,onSubscribe:r,view:o,classNameControl:i,popupPosition:a,t:c}=t,l=(0,e.useRef)(null),[s,A]=(0,e.useState)(!1),[u,d]=(0,e.useState)(!1),p=(0,e.useCallback)((e=>{l.current=e}),[]),y=(0,e.useCallback)((()=>{d(!u),A(!1)}),[u]),g=(0,e.useCallback)((()=>e.createElement(Yr,{onClick:y,className:Ha("control",{view:o},i),isVerticalView:n,tooltipText:c("subscribe-text"),setRef:p,icon:t=>e.createElement(Wa,Object.assign({},t)),popupPosition:a})),[i,o,n,p,y,a,c]),h=(0,e.useCallback)((()=>e.createElement("div",{className:Ha("container",{view:o})},e.createElement("div",{className:Ha("container-row",{view:o})},e.createElement("h3",{className:Ha("title",{view:o})},c("main-question")),e.createElement("div",{className:Ha("controls",{view:o})},e.createElement(It,{view:"flat-secondary",ref:p,onClick:y,className:Ha("control",{view:o})},e.createElement(Wa,{className:Ha("subscribe-button")}),c("button-Subscribe-text")))))),[o,p,y,c]),f=(0,e.useCallback)((()=>o===Za.Regular?g():h()),[o,g,h]);return e.createElement(e.Fragment,null,f(),s&&l.current&&e.createElement(gi,Object.assign({visible:s,setVisible:A},{view:o,isVerticalView:n,anchor:l,t:c})),u&&l.current&&e.createElement(Ua,Object.assign({visible:u,setVisible:d,onSubscribe:r,onSubmit:()=>{d(!1),A(!0)}},{view:o,isVerticalView:n,anchor:l,t:c})))}));Ja.displayName="Subscribe";const Ka=it("controls")(Ja);var Xa=n(6798),$a={};$a.styleTagTransform=Ne(),$a.setAttributes=Qe(),$a.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},$a.domAPI=ze(),$a.insertStyleElement=Fe(),Se()(Xa.Z,$a),Xa.Z&&Xa.Z.locals&&Xa.Z.locals;const ec=(0,de.Z)("dc-divider-control"),tc=({size:t=oe.M,className:n,isVerticalView:r=!0})=>e.createElement("div",{className:ec({size:t,vertical:r},n)});function nc(){return nc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},nc.apply(this,arguments)}const rc=({styles:t={},...n})=>e.createElement("svg",nc({width:"12",height:"12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M11.383 4.5a.309.309 0 00.305-.305v-.61a.328.328 0 00-.305-.304h-2.54V.742A.328.328 0 008.54.438h-.61a.309.309 0 00-.304.304v3.149c0 .355.254.609.61.609h3.148zm-7.008-.61V.743A.328.328 0 004.07.438h-.61a.309.309 0 00-.304.304v2.54H.617a.309.309 0 00-.304.304v.61c0 .177.126.304.304.304h3.149c.33 0 .609-.254.609-.61zm0 7.618V8.359c0-.33-.28-.609-.61-.609H.618a.309.309 0 00-.304.305v.61c0 .177.126.304.304.304h2.54v2.539c0 .178.126.305.304.305h.61a.309.309 0 00.304-.305zm4.469 0v-2.54h2.539a.309.309 0 00.305-.304v-.61a.328.328 0 00-.305-.304H8.234a.602.602 0 00-.609.61v3.148c0 .178.127.305.305.305h.61a.309.309 0 00.304-.305z",fill:"currentColor"}));function oc(){return oc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},oc.apply(this,arguments)}const ic=({styles:t={},...n})=>e.createElement("svg",oc({width:"14",height:"14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M.438 5.148c0 .206.146.352.351.352h.703a.356.356 0 00.352-.352v-2.93h2.93a.356.356 0 00.351-.35v-.704a.378.378 0 00-.352-.351H1.141a.694.694 0 00-.704.703v3.632zm8.437-3.984v.703c0 .205.146.352.352.352h2.93v2.93c0 .205.146.351.35.351h.704a.356.356 0 00.351-.352V1.516a.713.713 0 00-.703-.704H9.227a.356.356 0 00-.352.352zm4.336 8.086h-.703a.356.356 0 00-.352.352v2.93h-2.93a.356.356 0 00-.351.35v.704c0 .205.146.351.352.351h3.632a.694.694 0 00.704-.703V9.602a.378.378 0 00-.352-.352zm-8.086 4.336v-.703a.378.378 0 00-.352-.352h-2.93v-2.93a.378.378 0 00-.35-.351H.788a.356.356 0 00-.352.352v3.632c0 .41.293.704.704.704h3.632a.356.356 0 00.352-.352z",fill:"currentColor"})),ac=it("controls")((t=>{const{className:n,isVerticalView:r,size:o,value:i,onChange:a,lang:c,popupPosition:l,i18n:s,t:A}=t,u=(0,e.useCallback)((()=>{a&&a(!i)}),[i,a]),d=(0,e.useCallback)((e=>{"Escape"===e.key&&i&&u()}),[u,i]);(0,e.useEffect)((()=>(document.addEventListener("keydown",d),()=>{document.removeEventListener("keydown",d)})),[d]),(0,e.useEffect)((()=>{s.changeLanguage(c)}),[s,c]);const p=i?"enabled":"disabled";return a?e.createElement(Yr,{size:o,onClick:u,className:n,isVerticalView:r,tooltipText:A(`full-screen-text-${p}`),icon:t=>e.createElement(bt,Object.assign({data:i?rc:ic},t)),popupPosition:l}):null}));var cc=n(1536),lc={};lc.styleTagTransform=Ne(),lc.setAttributes=Qe(),lc.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},lc.domAPI=ze(),lc.insertStyleElement=Fe(),Se()(cc.Z,lc),cc.Z&&cc.Z.locals&&cc.Z.locals;const sc=lt("switch"),Ac=e.forwardRef((function(t,n){const{size:r="m",disabled:o=!1,content:i,children:a,title:c,style:l,className:s,qa:A}=t,{checked:u,inputProps:d}=Xr(t),p=i||a,y=e.createElement("span",{className:sc("indicator")},e.createElement("input",Object.assign({},d,{className:sc("control")})),e.createElement("span",{className:sc("outline")}),e.createElement("span",{className:sc("slider")}));return e.createElement(Kr,{ref:n,title:c,style:l,size:r,disabled:o,className:sc({size:r,disabled:o,checked:u},s),labelClassName:sc("text"),qa:A,control:y},p)}));function uc(){return uc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},uc.apply(this,arguments)}const dc=({styles:t={},...n})=>e.createElement("svg",uc({width:"15",height:"15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M13.242 6.818l.938-.527a.694.694 0 00.322-.791c-.322-1.23-.996-2.344-1.875-3.252-.234-.205-.586-.264-.85-.117l-.937.557a5.197 5.197 0 00-.967-.557V1.047c0-.293-.234-.615-.527-.674a7.28 7.28 0 00-3.721 0 .687.687 0 00-.527.674V2.13c-.293.117-.733.38-.967.557l-.938-.557c-.263-.147-.615-.088-.85.117C1.466 3.156.792 4.27.47 5.5a.694.694 0 00.322.791l.938.527c-.03.176-.03.41-.03.557 0 .176 0 .41.03.557l-.938.556a.694.694 0 00-.322.791c.322 1.23.996 2.344 1.875 3.252.234.205.586.264.85.117l.937-.556c.234.176.674.44.967.556v1.084c0 .293.234.616.527.674a7.28 7.28 0 003.72 0 .687.687 0 00.528-.674v-1.084c.293-.117.732-.38.967-.556l.937.556c.264.147.616.088.85-.117.879-.908 1.553-2.021 1.875-3.252a.694.694 0 00-.322-.79l-.938-.557c.03-.352.03-.733 0-1.114zM11.69 8.693l1.29.733c-.176.527-.645 1.289-.997 1.699l-1.289-.732c-.937.79-1.054.878-2.226 1.289v1.494c-.264.03-.703.088-.967.088-.293 0-.732-.059-.996-.088v-1.494c-1.172-.41-1.318-.498-2.227-1.29l-1.289.733c-.351-.41-.82-1.172-.996-1.7l1.29-.732c-.235-1.23-.235-1.377 0-2.607l-1.29-.732c.235-.616.557-1.202.996-1.7l1.29.733c.937-.791 1.054-.88 2.226-1.29V1.605c.264-.03.703-.088.996-.088.264 0 .703.058.967.088v1.494c1.172.41 1.318.498 2.226 1.289l1.29-.733c.351.41.82 1.172.995 1.7l-1.288.732c.234 1.23.234 1.377 0 2.607zM7.5 4.563c-1.553 0-2.813 1.289-2.813 2.812A2.813 2.813 0 007.5 10.188c1.523 0 2.813-1.26 2.813-2.813 0-1.523-1.29-2.813-2.813-2.813zm0 4.218a1.388 1.388 0 01-1.406-1.406c0-.762.615-1.406 1.406-1.406.762 0 1.406.644 1.406 1.406 0 .791-.644 1.406-1.406 1.406z",fill:"currentColor"})),pc=e=>e?Lr.LEFT_START:Lr.BOTTOM_END;var yc=n(4565),gc={};gc.styleTagTransform=Ne(),gc.setAttributes=Qe(),gc.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},gc.domAPI=ze(),gc.insertStyleElement=Fe(),Se()(yc.Z,gc),yc.Z&&yc.Z.locals&&yc.Z.locals;const hc=(0,de.Z)("dc-settings-control"),fc=it("controls")((t=>{const{className:n,isVerticalView:r,size:o,lang:i,i18n:a,textSize:c,theme:l,wideFormat:s,showMiniToc:A,fullScreen:u,singlePage:d,onChangeTheme:p,onChangeWideFormat:y,onChangeShowMiniToc:g,onChangeTextSize:h,popupPosition:f,t:v}=t,m=(0,e.useRef)(null),[C,b]=(0,e.useState)(!1),x=(0,e.useCallback)((e=>()=>{h&&h(e)}),[h]),w=(0,e.useCallback)((()=>{p&&p(l===ne.Dark?ne.Light:ne.Dark)}),[l,p]),E=(0,e.useCallback)((()=>{y&&y(!s)}),[s,y]),_=(0,e.useCallback)((()=>{g&&g(!A)}),[A,g]),k=(0,e.useCallback)((()=>{const t=Object.values(re),n=u||d;return[y?{text:v("label_wide_format"),description:v("description_wide_format_"+(s?"enabled":"disabled")),control:e.createElement(Ac,{checked:s,onChange:E})}:null,g?{text:v("label_show_mini_toc"),description:v("description_show_mini_toc"),control:e.createElement(Ac,{disabled:n,checked:A,onChange:_})}:null,p?{text:v("label_dark_theme"),description:ne.Light===l?v("description_disabled_dark_theme"):v("description_enabled_dark_theme"),control:e.createElement(Ac,{checked:l===ne.Dark,onChange:w})}:null,h?{text:v("label_text_size"),description:v(`description_${c}_text_size`),control:e.createElement("div",{className:hc("text-size-control")},t.map((t=>e.createElement(It,{key:t,className:hc("text-size-button",{[t]:!0}),view:"flat",onClick:x(t)},e.createElement(It.Icon,{className:hc("text-size-button-icon",{active:c===t})},"A")))))}:null].filter(Boolean)}),[v,c,l,s,A,u,d,p,y,g,w,E,_,h,x]);(0,e.useEffect)((()=>{a.changeLanguage(i)}),[a,i]);const B=(0,e.useCallback)((e=>{m.current=e}),[]);if(!(y||p||g||h))return null;const I=k();return e.createElement(e.Fragment,null,e.createElement(Yr,{size:o,onClick:()=>b(!0),className:n,isVerticalView:r,tooltipText:v("settings-text"),setRef:B,popupPosition:f,icon:t=>e.createElement(bt,Object.assign({data:dc},t))}),e.createElement(jr,{anchorRef:m,open:C,className:hc("popup"),onOutsideClick:()=>b(!1),placement:pc(r)},e.createElement(ja,{items:I,className:hc("list"),itemHeight:48,itemsHeight:48*I.length,filterable:!1,renderItem:t=>e.createElement("div",{className:hc("list-item")},e.createElement("div",{className:hc("list-item-content")},e.createElement("div",{className:hc("list-item-text")},t.text),e.createElement("div",{className:hc("list-item-description")},t.description)),e.createElement("div",{className:hc("list-item-control")},t.control))})))}));var vc=n(7576),mc=n.n(vc);function Cc(){return Cc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Cc.apply(this,arguments)}const bc=({styles:t={},...n})=>e.createElement("svg",Cc({width:"24",height:"24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10zm7.865-11.491a1.012 1.012 0 00-.153.033c-.979.295-2.055.522-3.228.68-.12-2.881-.895-5.251-1.833-6.867 2.666.948 4.687 3.285 5.214 6.154zm.117 2.038c-.217 3.293-2.378 6.048-5.331 7.098.887-1.528 1.628-3.73 1.808-6.402a23.817 23.817 0 003.523-.696zm-5.49-1.126C14.367 7.166 12.904 4 12 4c-.904 0-2.367 3.166-2.492 7.42.794.053 1.624.08 2.492.08.868 0 1.698-.026 2.492-.08v.001zm-6.95 1.821a23.83 23.83 0 01-3.524-.695c.217 3.293 2.378 6.048 5.331 7.098-.887-1.528-1.628-3.73-1.808-6.403h.001zm-.026-2.02c.12-2.881.895-5.251 1.833-6.867-2.666.948-4.687 3.285-5.214 6.154.051.007.102.018.153.033a21.17 21.17 0 003.228.68zm6.932 2.206A39.82 39.82 0 0112 13.5c-.847 0-1.663-.024-2.449-.072C9.828 17.247 11.157 20 12 20c.843 0 2.172-2.752 2.448-6.572z",fill:"currentColor"}));function xc(){return xc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},xc.apply(this,arguments)}function wc(){return wc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wc.apply(this,arguments)}var Ec=n(7227),_c={};_c.styleTagTransform=Ne(),_c.setAttributes=Qe(),_c.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},_c.domAPI=ze(),_c.insertStyleElement=Fe(),Se()(Ec.Z,_c),Ec.Z&&Ec.Z.locals&&Ec.Z.locals;const kc=[{value:ae.En,text:"English",icon:e.createElement((({styles:t={},...n})=>e.createElement("svg",wc({width:"24",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink"},n),e.createElement("rect",{width:"24",height:"15.99",rx:"2",fill:"url(#eng)"}),e.createElement("defs",null,e.createElement("pattern",{id:"eng",patternContentUnits:"objectBoundingBox",width:"1",height:"1"},e.createElement("use",{xlinkHref:"#image1",transform:"matrix(.00158 0 0 .00238 -.133 0)"})),e.createElement("image",{id:"image1",width:"800",height:"421",xlinkHref:"data:image/png;base64,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"})))),null)},{value:ae.Ru,text:"Русский",icon:e.createElement((({styles:t={},...n})=>e.createElement("svg",xc({width:"24",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink"},n),e.createElement("rect",{width:"24",height:"15.99",rx:"2",fill:"url(#rus)"}),e.createElement("defs",null,e.createElement("pattern",{id:"rus",patternContentUnits:"objectBoundingBox",width:"1",height:"1"},e.createElement("use",{xlinkHref:"#image0",transform:"scale(.00125 .00188)"})),e.createElement("image",{id:"image0",width:"800",height:"533",xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAIVCAYAAAApsJvCAAAgAElEQVR4Ae3bwUntYBhF0UQCwmvAHpzYpH0IwuvAegR7EKcRLGJPzroNHP7FN9lwc973fR9+BAgQIECAAAECBAgQCAQegg0TBAgQIECAAAECBAgQ+BMQIA6BAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFMQIBk1IYIECBAgAABAgQIEBAgboAAAQIECBAgQIAAgUxAgGTUhggQIECAAAECBAgQECBugAABAgQIECBAgACBTECAZNSGCBAgQIAAAQIECBAQIG6AAAECBAgQIECAAIFM4Hr7+MzGDBEgQIAAAQIECBAgsC1wHi/v9zaB1xMgQIAAAQIECBAgUAlcx7+r2rJDgAABAgQIECBAgMC4gG9Axg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXECDjB+D5BAgQIECAAAECBEoBAVJq2yJAgAABAgQIECAwLiBAxg/A8wkQIECAAAECBAiUAgKk1LZFgAABAgQIECBAYFxAgIwfgOcTIECAAAECBAgQKAUESKltiwABAgQIECBAgMC4gAAZPwDPJ0CAAAECBAgQIFAKCJBS2xYBAgQIECBAgACBcQEBMn4Ank+AAAECBAgQIECgFBAgpbYtAgQIECBAgAABAuMCAmT8ADyfAAECBAgQIECAQCkgQEptWwQIECBAgAABAgTGBQTI+AF4PgECBAgQIECAAIFSQICU2rYIECBAgAABAgQIjAsIkPED8HwCBAgQIECAAAECpYAAKbVtESBAgAABAgQIEBgXuI7zcZzA8wkQIECAAAECBAgQqASu15//1ZYdAgQIECBAgAABAgTGBc6v56d73MDzCRAgQIAAAQIECBCIBK5vf8GKqM0QIECAAAECBAgQIOAjdDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIBXG7MUAAAJdSURBVECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAmIEAyakMECBAgQIAAAQIECAgQN0CAAAECBAgQIECAQCYgQDJqQwQIECBAgAABAgQICBA3QIAAAQIECBAgQIBAJiBAMmpDBAgQIECAAAECBAgIEDdAgAABAgQIECBAgEAm8AuurxGBzEpnDQAAAABJRU5ErkJggg=="})))),null)}],Bc=(0,de.Z)("dc-controls"),Ic=it("controls")((t=>{const{className:n,isVerticalView:r,size:o,lang:i,langs:a=[],i18n:c,onChangeLang:l,popupPosition:s,t:A}=t,[u,d]=(0,e.useState)(kc),p=(0,e.useRef)(null),[y,g]=(0,e.useState)(!1),h=(0,e.useCallback)((e=>{l&&l(e)}),[l]);(0,e.useEffect)((()=>{const e=a.map((e=>{const t=mc().where("1",e);return t?{text:t.name,value:t[1]}:void 0})).filter(Boolean);e.length?d(e):d(kc)}),[a]),(0,e.useEffect)((()=>{c.changeLanguage(i)}),[c,i]);const f=(0,e.useCallback)((e=>{p.current=e}),[]);if(!l)return null;const v=36*u.length,m=u.findIndex((({value:e})=>e===i));return e.createElement(e.Fragment,null,e.createElement(Yr,{size:o,onClick:()=>g(!0),className:n,isVerticalView:r,tooltipText:A("lang-text"),icon:t=>e.createElement(bt,Object.assign({data:bc},t)),setRef:f,popupPosition:s}),e.createElement(jr,{anchorRef:p,open:y,onOutsideClick:()=>g(!1),placement:pc(r)},e.createElement(ja,{filterable:!1,className:Bc("list",{langs:!0}),items:u,onItemClick:e=>{h(e.value)},selectedItemIndex:m,itemHeight:36,itemsHeight:v,renderItem:t=>e.createElement("div",{className:Bc("lang-item")},e.createElement("div",{className:Bc("list-icon")},t.icon)," ",t.text)})))}));function Sc(){return Sc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Sc.apply(this,arguments)}const Dc=({styles:t={},...n})=>e.createElement("svg",Sc({width:"16",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M6.784 7.39a.418.418 0 00-.407.407v.406a.4.4 0 00.407.406H9.22a.418.418 0 00.406-.406v-.406a.437.437 0 00-.406-.406H6.784zm8.125 0h-3.25a.418.418 0 00-.407.407v.406a.4.4 0 00.407.406h3.25a.418.418 0 00.406-.406v-.406a.437.437 0 00-.406-.406zm-10.157.813v-.406a.437.437 0 00-.406-.406h-3.25a.418.418 0 00-.406.406v.406a.4.4 0 00.406.406h3.25a.418.418 0 00.406-.406zm3.008 2.892l-1.828 1.828c-.178.204-.05.534.229.534h1.244v2.132c0 .153.127.305.304.305h.61a.328.328 0 00.305-.305v-2.133h1.218c.28 0 .406-.33.229-.533l-1.828-1.828a.353.353 0 00-.483 0zm.483-6.19l1.828-1.828c.178-.203.05-.534-.229-.534H8.598V.411a.309.309 0 00-.305-.305h-.609a.328.328 0 00-.305.305v2.132H6.161c-.28 0-.407.33-.229.534L7.76 4.905a.353.353 0 00.483 0z",fill:"currentColor"}));function zc(){return zc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},zc.apply(this,arguments)}const Tc=({styles:t={},...n})=>e.createElement("svg",zc({width:"16",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M4.844 2.87l4.062-.026v2.844c0 .228.178.406.406.406h2.844v1.015h1.219V4.977c-.025-.254-.178-.66-.38-.864l-2.108-2.107c-.203-.203-.61-.381-.864-.381l-5.585.025a.802.802 0 00-.813.813v4.646h1.219V2.87zm5.281.075l1.93 1.93h-1.93v-1.93zM7.281 8.328a.418.418 0 00-.406.406v.407c0 .228.178.406.406.406H9.72a.418.418 0 00.406-.406v-.407a.437.437 0 00-.406-.406H7.28zm4.875 5.078H4.844v-2.64H3.625v3.046c0 .458.355.813.813.813h8.125a.818.818 0 00.812-.813v-3.046h-1.219v2.64zm3.25-5.078h-3.25a.418.418 0 00-.406.406v.407c0 .228.178.406.406.406h3.25a.418.418 0 00.406-.406v-.407a.437.437 0 00-.406-.406zM5.25 9.141v-.407a.437.437 0 00-.406-.406h-3.25a.418.418 0 00-.407.406v.407c0 .228.178.406.407.406h3.25a.418.418 0 00.406-.406z",fill:"currentColor"})),Qc=it("controls")((t=>{const{className:n,isVerticalView:r,size:o,value:i,onChange:a,lang:c,i18n:l,popupPosition:s,t:A}=t,u=(0,e.useCallback)((()=>{a&&a(!i)}),[i,a]);(0,e.useEffect)((()=>{l.changeLanguage(c)}),[l,c]);const d=i?"enabled":"disabled";return a?e.createElement(Yr,{size:o,onClick:u,className:n,isVerticalView:r,tooltipText:A(`single-page-text-${d}`),icon:t=>e.createElement(bt,Object.assign({data:i?Tc:Dc},t)),popupPosition:s}):null}));function Mc(){return Mc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Mc.apply(this,arguments)}const Fc=({styles:t={},...n})=>e.createElement("svg",Mc({xmlns:"http://www.w3.org/2000/svg",width:"38",height:"50",className:(t["yc-icon"]||"yc-icon")+" "+(t["attachment-icon"]||"attachment-icon")+" "+(t["attachment-icon_type_pdf"]||"attachment-icon_type_pdf"),fill:"currentColor","aria-hidden":"true"},n),e.createElement("svg",Mc({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 384 512"},n),e.createElement("path",{d:"M86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zm93.8-218.9c-2.9 0-3 30.9 2 46.9 5.6-10 6.4-46.9-2-46.9zm80.2 142.1c37.1 15.8 42.8 9 42.8 9 4.1-2.7-2.5-11.9-42.8-9zm-79.9-48c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM272 128a16 16 0 01-16-16V0H24A23.94 23.94 0 000 23.88V488a23.94 23.94 0 0023.88 24H360a23.94 23.94 0 0024-23.88V128zm21.9 254.4c-16.9 0-42.3-7.7-64-19.5-24.9 4.1-53.2 14.7-79 23.2-25.4 43.8-43.2 61.8-61.1 61.8-5.5 0-15.9-3.1-21.5-10-19.1-23.5 27.4-54.1 54.5-68 .1 0 .1-.1.2-.1 12.1-21.2 29.2-58.2 40.8-85.8-8.5-32.9-13.1-58.7-8.1-77 5.4-19.7 43.1-22.6 47.8 6.8 5.4 17.6-1.7 45.7-6.2 64.2 9.4 24.8 22.7 41.6 42.7 53.8 19.3-2.5 59.7-6.4 73.6 7.2 11.5 11.4 9.5 43.4-19.7 43.4z",opacity:".4"}),e.createElement("path",{d:"M377 105L279.1 7a24 24 0 00-17-7H256v112a16 16 0 0016 16h112v-6.1a23.9 23.9 0 00-7-16.9zM240 331.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM86.1 428.1c5.8-15.7 28.2-33.9 34.9-40.2-21.7 34.8-34.9 41-34.9 40.2zm93.8-218.9c8.4 0 7.6 36.9 2 46.9-5-16-4.9-46.9-2-46.9zM151.8 366c11.1-19.4 20.7-42.5 28.4-62.7 9.6 17.4 21.8 31.2 34.5 40.8-23.9 4.7-44.6 14.9-62.9 21.9zm151.1-5.7s-5.7 6.8-42.8-9c40.3-2.9 46.9 6.3 42.8 9z",className:t["file-pdf_svg__fa-primary"]||"file-pdf_svg__fa-primary"}))),Oc=it("controls")((t=>{const{className:n,isVerticalView:r,size:o,pdfLink:i,lang:a,i18n:c,popupPosition:l,t:s}=t;return(0,e.useEffect)((()=>{c.changeLanguage(a)}),[c,a]),i?e.createElement("a",{href:i,target:"_blank",rel:"noreferrer noopener"},e.createElement(Yr,{size:o,className:n,isVerticalView:r,tooltipText:s("pdf-text"),icon:t=>e.createElement(bt,Object.assign({data:Fc},t)),popupPosition:l})):null}));function Nc(){return Nc=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nc.apply(this,arguments)}const Pc=({styles:t={},...n})=>e.createElement("svg",Nc({width:"16",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M3.561 14.998H1.319A.317.317 0 011 14.68v-2.242c0-.176.1-.42.222-.54L9.739 3.38a.318.318 0 01.448.005l2.428 2.428a.318.318 0 01.005.447l-8.518 8.518a.867.867 0 01-.541.222zM14.024 4.855a.32.32 0 01-.449-.003l-2.428-2.429a.318.318 0 01-.004-.448l.738-.738c.333-.313.652-.32.96 0l1.92 1.92c.324.32.313.652 0 .96l-.737.738z",fill:"currentColor"})),Rc=(0,de.Z)("dc-controls");class jc extends e.Component{constructor(){super(...arguments),this.renderFeedbackControls=()=>{const{lang:t,singlePage:n,onSendFeedback:r,isLiked:o,isDisliked:i,dislikeVariants:a,isVerticalView:c,hideFeedbackControls:l,popupPosition:s}=this.props;return n||!r||l?null:e.createElement(e.Fragment,null,e.createElement(tc,{className:Rc("divider"),isVerticalView:!c}),e.createElement(Ai,{lang:t,singlePage:n,isLiked:o,isDisliked:i,dislikeVariants:a,onSendFeedback:r,isVerticalView:c,view:si.Regular,classNameControl:Rc("control"),popupPosition:s}))},this.renderSubscribeControls=()=>{const{lang:t,singlePage:n,onSubscribe:r,isVerticalView:o,popupPosition:i}=this.props;return n||!r?null:e.createElement(e.Fragment,null,e.createElement(tc,{className:Rc("divider"),isVerticalView:!o}),e.createElement(Ka,{lang:t,onSubscribe:r,isVerticalView:o,view:Za.Regular,classNameControl:Rc("control"),popupPosition:i}))}}componentDidUpdate(e){const{i18n:t,lang:n}=this.props;e.lang!==n&&t.changeLanguage(n)}render(){const{lang:t,i18n:n,className:r,isVerticalView:o}=this.props;return n.language!==t&&n.changeLanguage(t),e.createElement("div",{className:Rc({vertical:o},r)},this.renderCommonControls(),this.renderEditLink(),this.renderFeedbackControls(),this.renderSubscribeControls())}renderEditLink(){const{vcsUrl:t,vcsType:n,showEditControl:r,singlePage:o,isVerticalView:i,controlSize:a,popupPosition:c,t:l}=this.props;return!r||o?null:e.createElement(e.Fragment,null,e.createElement(tc,{size:a,isVerticalView:!i,className:Rc("divider")}),e.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:Rc("control")},e.createElement(Yr,{size:a,className:Rc("control"),isVerticalView:i,tooltipText:l(`edit-text-${n}`),icon:Pc,popupPosition:c})))}renderCommonControls(){const{fullScreen:t,singlePage:n,theme:r,wideFormat:o,showMiniToc:i,textSize:a,onChangeFullScreen:c,onChangeTheme:l,onChangeShowMiniToc:s,onChangeTextSize:A,onChangeWideFormat:u,onChangeLang:d,onChangeSinglePage:p,isVerticalView:y,controlSize:g,lang:h,langs:f,popupPosition:v,pdfLink:m}=this.props;return e.createElement(e.Fragment,null,e.createElement(ac,{lang:h,size:g,value:t,onChange:c,className:Rc("control"),isVerticalView:y,popupPosition:v}),e.createElement(fc,{lang:h,size:g,theme:r,wideFormat:o,showMiniToc:i,textSize:a,onChangeTheme:l,onChangeShowMiniToc:s,onChangeTextSize:A,onChangeWideFormat:u,className:Rc("control"),isVerticalView:y,popupPosition:v}),e.createElement(Ic,{lang:h,langs:f,size:g,onChangeLang:d,className:Rc("control"),isVerticalView:y,popupPosition:v}),e.createElement(Qc,{lang:h,size:g,value:n,onChange:p,className:Rc("control"),isVerticalView:y,popupPosition:v}),e.createElement(Oc,{lang:h,size:g,pdfLink:m,className:Rc("control"),isVerticalView:y,popupPosition:v}))}}const Lc=it("controls")(jc);class qc{constructor(e,t){this.itemById=new Map,this.parentById=new Map,this.itemIdByUrl=new Map,this.normalizeUrl=t,this.consumeItems(e)}getIdByUrl(e){return this.itemIdByUrl.get(e)}getItemById(e){return this.itemById.get(e)}getParentId(e){return this.parentById.get(e)||""}getParentIds(e){const t=[];let n=this.getParentId(e);for(;n;)t.push(n),n=this.getParentId(n);return t}getChildIds(e){const t=this.itemById.get(e);return t?(t.items||[]).reduce(((e,t)=>e.concat([t.id],this.getChildIds(t.id))),[]):[]}consumeItems(e,t){e.forEach((e=>{if(this.itemById.set(e.id,e),e.href){const[t,n]=e.href.split("#"),r=this.normalizeUrl(t,n);r&&this.itemIdByUrl.set(r,e.id)}t&&this.parentById.set(e.id,t.id),e.items&&this.consumeItems(e.items,e)}))}}var Uc=n(751),Vc={};Vc.styleTagTransform=Ne(),Vc.setAttributes=Qe(),Vc.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Vc.domAPI=ze(),Vc.insertStyleElement=Fe(),Se()(Uc.Z,Vc),Uc.Z&&Uc.Z.locals&&Uc.Z.locals;const Wc=(0,de.Z)("dc-toc"),Gc=0;class Yc extends e.Component{constructor(t){super(t),this.contentRef=e.createRef(),this.rootRef=e.createRef(),this.activeRef=e.createRef(),this.containerEl=null,this.footerEl=null,this.normalizeUrl=(e,t)=>{const{singlePage:n}=this.props;return n?ge(t):ye(e)},this.renderList=t=>{const{toggleItem:n}=this,{singlePage:r}=this.props,{activeId:o,fixedById:i}=this.state,a=o&&this.state.registry.getItemById(o)?(c=[o].concat(this.state.registry.getParentIds(o)),!0,c.reduce(((e,t)=>Object.assign(e,{[t]:true})),{})):{};var c;return e.createElement("ul",{className:Wc("list")},t.map(((t,c)=>{const l=!this.state.registry.getParentId(t.id),s=r&&!o&&0===c&&l||t.id===o,A="opened"===i[t.id],u="closed"===i[t.id],d=Boolean(t.items&&t.items.length>0),p=d&&!u&&(t.expanded||a[t.id]||A),y=s?{ref:this.activeRef}:{};return e.createElement("li",{key:t.id,id:t.id,className:Wc("list-item",{main:l,active:s,opened:p})},e.createElement(Ge,Object.assign({},Object.assign(Object.assign(Object.assign({},t),y),{active:s,expanded:p,expandable:d,toggleItem:n}))),p&&this.renderList(t.items))})))},this.handleScroll=()=>{this.setTocHeight()},this.handleResize=()=>{this.setTocHeight()},this.scrollToActiveItem=()=>{this.activeRef.current&&this.activeRef.current.scrollToItem()},this.handleContentScroll=()=>{const e=this.contentRef.current,t=!!e&&e.scrollTop>0;t!==this.state.contentScrolled&&this.setState({contentScrolled:t})},this.openItem=e=>{this.setState((t=>Object.assign(Object.assign({},t),{fixedById:Object.assign(Object.assign({},t.fixedById),{[e]:"opened"})})))},this.closeItem=e=>{const t=this.state.registry.getChildIds(e);this.setState((n=>Object.assign(Object.assign({},n),{fixedById:Object.assign(Object.assign({},(0,Ee.omit)(n.fixedById,t)),{[e]:"closed"})})))},this.toggleItem=(e,t)=>{t?this.closeItem(e):this.openItem(e)},this.state=this.computeState(this.getInitialState())}getInitialState(){return{registry:new qc(this.props.items,this.normalizeUrl),fixedById:{},activeId:null,contentScrolled:!1}}componentDidMount(){this.containerEl=document.querySelector(".Layout__content"),this.footerEl=document.querySelector(".Footer"),this.setTocHeight(),window.addEventListener("scroll",this.handleScroll),window.addEventListener("resize",this.handleResize),this.contentRef&&this.contentRef.current&&this.contentRef.current.addEventListener("scroll",this.handleContentScroll),this.scrollToActiveItem()}componentDidUpdate(e,t){const{router:n,singlePage:r,items:o}=this.props;let i;e.items!==o&&(i=this.getInitialState()),e.router.pathname!==n.pathname||e.router.hash!==n.hash||e.singlePage!==r?(this.setTocHeight(),i=this.computeState(i||t)):t.activeId!==this.state.activeId&&this.scrollToActiveItem(),i&&this.setState(i)}componentWillUnmount(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("resize",this.handleResize),this.contentRef&&this.contentRef.current&&this.contentRef.current.removeEventListener("scroll",this.handleContentScroll)}render(){const{items:t,hideTocHeader:n}=this.props,r=t?this.renderList(t):this.renderEmpty("");return e.createElement("div",{className:Wc(),ref:this.rootRef},this.renderTop(),e.createElement("div",{className:Wc("content",{offset_top:n}),ref:this.contentRef},r),this.renderBottom())}computeState(e){const{router:t}=this.props,{pathname:n,hash:r}=t,o=this.normalizeUrl(n,r),i=o&&e.registry.getIdByUrl(o);let a=e.fixedById;if(i&&e.activeId&&i!==e.activeId){const t=[i].concat(e.registry.getParentIds(i)).filter((t=>"closed"===e.fixedById[t]));t.length&&(a=(0,Ee.omit)(a,t))}return Object.assign(Object.assign({},e),{activeId:i,fixedById:a})}renderEmpty(t){return e.createElement("div",{className:Wc("empty")},t)}renderTop(){const{router:t,title:n,href:r,tocTitleIcon:o,hideTocHeader:i,singlePage:a}=this.props,{contentScrolled:c}=this.state;let l;if(i)return null;if(r){const o=he(t,r,a);l=e.createElement("a",{href:r,className:Wc("top-header",{active:o,link:!0}),"data-router-shallow":!0},e.createElement(Ye,null,n))}else l=e.createElement("div",{className:Wc("top-header")},e.createElement(Ye,null,n));return e.createElement("div",{className:Wc("top",{scrolled:c})},o?e.createElement("div",{className:Wc("top-header-icon")},o):null,l)}renderBottom(){const{lang:t,singlePage:n,onChangeSinglePage:r,pdfLink:o}=this.props,{contentScrolled:i}=this.state;return e.createElement("div",{className:Wc("bottom",{scrolled:i})},e.createElement(Lc,{lang:t,singlePage:n,onChangeSinglePage:r,popupPosition:Lr.TOP_START,controlSize:oe.L,pdfLink:o}))}setTocHeight(){var e,t,n,r;const{headerHeight:o=Gc}=this.props,i=null!==(t=null===(e=this.containerEl)||void 0===e?void 0:e.offsetHeight)&&void 0!==t?t:0,a=null!==(r=null===(n=this.footerEl)||void 0===n?void 0:n.offsetHeight)&&void 0!==r?r:0,c=window.scrollY+window.innerHeight+a-o-i,l=this.rootRef.current;l&&(c>0?l.style.height=window.innerHeight-o-c+"px":i<window.innerHeight?l.style.height=i-a+"px":l.style.height=window.innerHeight-o+"px")}}const Hc=Yc;var Zc=n(8925),Jc={};Jc.styleTagTransform=Ne(),Jc.setAttributes=Qe(),Jc.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Jc.domAPI=ze(),Jc.insertStyleElement=Fe(),Se()(Zc.Z,Jc),Zc.Z&&Zc.Z.locals&&Zc.Z.locals;const Kc=(0,de.Z)("dc-doc-layout"),Xc=()=>null,$c=()=>null,el=()=>null;class tl extends e.Component{render(){const{children:t,className:n,fullScreen:r=!1,wideFormat:o=!1,hideRight:i=!1,loading:a=!1,footer:c=null}=this.props;let l,s,A;const u={"regular-page-width":!o,"full-screen":r,"hidden-right":i,loading:a};return e.Children.forEach(t,(e=>{if(e)switch(e.type){case Xc:l=e.props.children;break;case $c:s=e.props.children;break;case el:A=e.props.children}})),e.createElement("div",{className:Kc(null,n)},e.createElement("div",{className:Kc("mobile-only")},c),r?null:e.createElement("div",{className:Kc("left",u)},this.renderToc(),l),e.createElement("div",{className:Kc("center",u)},s,e.createElement("div",{className:Kc("desktop-only")},c)),r||i?null:e.createElement("div",{className:Kc("right",u)},A))}renderToc(){const{toc:t,router:n,headerHeight:r,tocTitleIcon:o,hideRight:i,wideFormat:a,hideTocHeader:c,hideToc:l,lang:s,singlePage:A,onChangeSinglePage:u,pdfLink:d}=this.props;return!t||l?null:e.createElement("div",{className:Kc("toc")},e.createElement(Hc,Object.assign({key:ve(i,a,t.singlePage)},t,{router:n,headerHeight:r,tocTitleIcon:o,hideTocHeader:c,lang:s,singlePage:A,onChangeSinglePage:u,pdfLink:d})))}}tl.Left=Xc,tl.Center=$c,tl.Right=el;var nl=n(7505),rl={};rl.styleTagTransform=Ne(),rl.setAttributes=Qe(),rl.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},rl.domAPI=ze(),rl.insertStyleElement=Fe(),Se()(nl.Z,rl),nl.Z&&nl.Z.locals&&nl.Z.locals;const ol=(0,de.Z)("dc-mark"),il=({text:t,color:n="blue",size:r="s",className:o})=>e.createElement("span",{className:ol({color:n,size:r},o)},t.toUpperCase()),al={preview:"blue",new:"green"},cl=Object.keys(al),ll=({stage:t,size:n="s",className:r})=>{if(!t||!cl.includes(t))return null;const o=al[t];return e.createElement(il,{className:r,text:t,color:o,size:n})};function sl(){return sl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},sl.apply(this,arguments)}const Al=({styles:t={},...n})=>e.createElement("svg",sl({xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none"},n),e.createElement("path",{fill:"currentColor",d:"M12 16.88l-4.655 3.334a.5.5 0 01-.768-.558L8.31 14.2 3.7 10.802a.5.5 0 01.294-.902l5.725-.039 1.807-5.434a.5.5 0 01.948 0l1.807 5.434 5.725.039a.5.5 0 01.294.902L15.69 14.2l1.733 5.457a.5.5 0 01-.768.558L12 16.88z"}));function ul(){return ul=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ul.apply(this,arguments)}const dl=({styles:t={},...n})=>e.createElement("svg",ul({xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none"},n),e.createElement("path",{fill:"currentColor",d:"M8.917 17.243L12 15.035l3.083 2.208-1.148-3.614 3.053-2.25-3.792-.025L12 7.755l-1.196 3.599-3.792.025 3.053 2.25-1.148 3.614zM12 16.88l-4.655 3.334a.5.5 0 01-.768-.558L8.31 14.2 3.7 10.802a.5.5 0 01.294-.902l5.725-.039 1.807-5.434a.5.5 0 01.948 0l1.807 5.434 5.725.039a.5.5 0 01.294.902L15.69 14.2l1.733 5.457a.5.5 0 01-.768.558L12 16.88z"}));var pl=n(6921),yl={};yl.styleTagTransform=Ne(),yl.setAttributes=Qe(),yl.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},yl.domAPI=ze(),yl.insertStyleElement=Fe(),Se()(pl.Z,yl),pl.Z&&pl.Z.locals&&pl.Z.locals;const gl=(0,de.Z)("dc-bookmark-button"),hl=({bookmarkedPage:t,onChangeBookmarkPage:n})=>e.createElement(It,{className:gl({active:t}),onClick:()=>{n(!t)},view:"flat-secondary"},e.createElement(It.Icon,{className:gl("icon")},e.createElement(bt,{data:t?Al:dl,size:24})));var fl=n(2782),vl={};vl.styleTagTransform=Ne(),vl.setAttributes=Qe(),vl.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},vl.domAPI=ze(),vl.insertStyleElement=Fe(),Se()(fl.Z,vl),fl.Z&&fl.Z.locals&&fl.Z.locals;const ml=(0,de.Z)("dc-doc-page-title"),Cl=({children:t,stage:n,className:r,bookmarkedPage:o,onChangeBookmarkPage:i})=>{const a="tech-preview"===n?"preview":n,c=e.createElement(ll,{stage:a,className:ml("label")});return e.createElement("h1",{className:ml(null,r)},c,t,void 0!==o&&void 0!==i&&e.createElement(hl,{bookmarkedPage:o,onChangeBookmarkPage:i}))},bl=({data:t="",html:n=!1,block:r=!1})=>{if(!t)return null;const o=Array.isArray(t)?t:[t];return e.createElement(e.Fragment,null,o.map(((t,o)=>e.createElement(r?"div":"p",{key:o,className:r?"p":null},n?e.createElement(Ye,null,t):t))))};var xl=n(9153),wl={};wl.styleTagTransform=Ne(),wl.setAttributes=Qe(),wl.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},wl.domAPI=ze(),wl.insertStyleElement=Fe(),Se()(xl.Z,wl),xl.Z&&xl.Z.locals&&xl.Z.locals;const El=(0,de.Z)("dc-doc-leading-page"),{wideFormat:_l}=ti,kl=({data:t,isRoot:n})=>e.createElement("li",{className:El("links-item",{root:n})},((t,n)=>{const{imgSrc:r}=t;return r&&n?e.createElement("div",{className:El("links-left")},e.createElement("img",{src:r})):null})(t,n),((t,n)=>{const{title:r,description:o,href:i,links:a}=t;let c;return c=i?e.createElement("a",{href:i,className:El("links-link")},r):r,c=n?e.createElement("h2",{className:El("links-title",{root:n})},c):e.createElement("div",{className:El("links-title")},c),e.createElement("div",{className:El("links-right")},c,o&&n?e.createElement("p",{className:El("links-description")},o):null,e.createElement(Bl,{links:a}))})(t,n)),Bl=({links:t,isRoot:n})=>t&&t.length?e.createElement("ul",{className:El("links",{root:n})},t.map(((t,r)=>e.createElement(kl,{key:r,data:t,isRoot:n})))):null,Il=({data:{title:t,description:n,links:r},toc:o,router:i,lang:a,headerHeight:c,wideFormat:l=_l,hideTocHeader:s,hideToc:A,tocTitleIcon:u,footer:d})=>{const p={"regular-page-width":!l};return e.createElement(tl,{toc:o,router:i,lang:a,headerHeight:c,className:El(p),hideTocHeader:s,hideToc:A,tocTitleIcon:u,footer:d},e.createElement("span",null),e.createElement(tl.Center,null,e.createElement("main",{className:El("main")},e.createElement(Cl,{stage:o.stage,className:El("title")},e.createElement(Ye,null,t)),e.createElement("div",{className:El("description")},e.createElement(bl,{data:n,html:!0,block:!0})),e.createElement(Bl,{links:r,isRoot:!0}))))};function Sl(e){return"object"==typeof e&&null!=e&&1===e.nodeType}function Dl(e,t){return(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e}function zl(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return Dl(n.overflowY,t)||Dl(n.overflowX,t)||function(e){var t=function(e){if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}}(e);return!!t&&(t.clientHeight<e.scrollHeight||t.clientWidth<e.scrollWidth)}(e)}return!1}function Tl(e,t,n,r,o,i,a,c){return i<e&&a>t||i>e&&a<t?0:i<=e&&c<=n||a>=t&&c>=n?i-e-r:a>t&&c<n||i<e&&c>n?a-t+o:0}n(9703);var Ql=function(e,t){var n=window,r=t.scrollMode,o=t.block,i=t.inline,a=t.boundary,c=t.skipOverflowHiddenElements,l="function"==typeof a?a:function(e){return e!==a};if(!Sl(e))throw new TypeError("Invalid target");for(var s,A,u=document.scrollingElement||document.documentElement,d=[],p=e;Sl(p)&&l(p);){if((p=null==(A=(s=p).parentElement)?s.getRootNode().host||null:A)===u){d.push(p);break}null!=p&&p===document.body&&zl(p)&&!zl(document.documentElement)||null!=p&&zl(p,c)&&d.push(p)}for(var y=n.visualViewport?n.visualViewport.width:innerWidth,g=n.visualViewport?n.visualViewport.height:innerHeight,h=window.scrollX||pageXOffset,f=window.scrollY||pageYOffset,v=e.getBoundingClientRect(),m=v.height,C=v.width,b=v.top,x=v.right,w=v.bottom,E=v.left,_="start"===o||"nearest"===o?b:"end"===o?w:b+m/2,k="center"===i?E+C/2:"end"===i?x:E,B=[],I=0;I<d.length;I++){var S=d[I],D=S.getBoundingClientRect(),z=D.height,T=D.width,Q=D.top,M=D.right,F=D.bottom,O=D.left;if("if-needed"===r&&b>=0&&E>=0&&w<=g&&x<=y&&b>=Q&&w<=F&&E>=O&&x<=M)return B;var N=getComputedStyle(S),P=parseInt(N.borderLeftWidth,10),R=parseInt(N.borderTopWidth,10),j=parseInt(N.borderRightWidth,10),L=parseInt(N.borderBottomWidth,10),q=0,U=0,V="offsetWidth"in S?S.offsetWidth-S.clientWidth-P-j:0,W="offsetHeight"in S?S.offsetHeight-S.clientHeight-R-L:0,G="offsetWidth"in S?0===S.offsetWidth?0:T/S.offsetWidth:0,Y="offsetHeight"in S?0===S.offsetHeight?0:z/S.offsetHeight:0;if(u===S)q="start"===o?_:"end"===o?_-g:"nearest"===o?Tl(f,f+g,g,R,L,f+_,f+_+m,m):_-g/2,U="start"===i?k:"center"===i?k-y/2:"end"===i?k-y:Tl(h,h+y,y,P,j,h+k,h+k+C,C),q=Math.max(0,q+f),U=Math.max(0,U+h);else{q="start"===o?_-Q-R:"end"===o?_-F+L+W:"nearest"===o?Tl(Q,F,z,R,L+W,_,_+m,m):_-(Q+z/2)+W/2,U="start"===i?k-O-P:"center"===i?k-(O+T/2)+V/2:"end"===i?k-M+j+V:Tl(O,M,T,P,j+V,k,k+C,C);var H=S.scrollLeft,Z=S.scrollTop;_+=Z-(q=Math.max(0,Math.min(Z+q/Y,S.scrollHeight-z/Y+W))),k+=H-(U=Math.max(0,Math.min(H+U/G,S.scrollWidth-T/G+V)))}B.push({el:S,top:q,left:U})}return B};function Ml(e){return e===Object(e)&&0!==Object.keys(e).length}class Fl extends e.Component{constructor(t){super(t),this.containerRef=e.createRef(),this.itemRefs=this.props.items.map((()=>e.createRef())),this.updateScrollValues=()=>{const e=this.containerRef.current;if(!e)return;const{childHeight:t,maxItemsInView:n}=this.getContainerValues(e);this.lastItemIndexInView=Math.round(e.scrollTop/t)+n-1,this.updateFirstItemIndexInView(n)},this.scrollToListItem=()=>{if(!this.props.scrollToListItem)return;let e=this.state.inViewState.findIndex((e=>e));e<0&&(e=0);const t=this.itemRefs[e]&&this.itemRefs[e].current;t&&function(e,t){var n=e.isConnected||e.ownerDocument.documentElement.contains(e);if(Ml(t)&&"function"==typeof t.behavior)return t.behavior(n?Ql(e,t):[]);if(n){var r=function(e){return!1===e?{block:"end",inline:"nearest"}:Ml(e)?e:{block:"start",inline:"nearest"}}(t);(function(e,t){void 0===t&&(t="auto");var n="scrollBehavior"in document.body.style;e.forEach((function(e){var r=e.el,o=e.top,i=e.left;r.scroll&&n?r.scroll({top:o,left:i,behavior:t}):(r.scrollTop=o,r.scrollLeft=i)}))})(Ql(e,r),r.behavior)}}(t,{scrollMode:"if-needed",block:"nearest",inline:"nearest",behavior:"smooth"})},this.initSections=()=>{this.saveActiveItems()},this.handleScroll=()=>{this.scrollByClick&&(window.removeEventListener("scroll",this.handleScrollDebounced),window.addEventListener("scroll",this.handleScroll),this.scrollByClick=!1),this.saveActiveItems()},this.handleScrollDebounced=_e().debounce(this.handleScroll,100),this.handleSectionClick=e=>{const{onSectionClick:t}=this.props,{target:n}=e;n&&"A"===n.tagName&&(e.stopPropagation(),this.pauseScrollHandler(),this.saveActiveItems(n.hash),t&&t(e))},this.state={targetItems:[],inViewState:[]},this.scrollByClick=!1,this.firstItemIndexInView=-1,this.lastItemIndexInView=-1}componentDidMount(){this.initItems(),window.addEventListener("scroll",this.handleScroll);const e=this.containerRef.current;e&&e.addEventListener("scroll",this.updateScrollValues)}componentDidUpdate(e,t){const{items:n,router:r}=this.props,{inViewState:o}=this.state;_e().isEqual(o,t.inViewState)||this.scrollToListItem(),_e().isEqual(n,e.items)&&e.router.pathname===r.pathname||this.initItems(),r.hash!==e.router.hash&&(this.pauseScrollHandler(),this.saveActiveItems(r.hash))}componentWillUnmount(){window.removeEventListener("scroll",this.handleScroll);const e=this.containerRef.current;e&&e.removeEventListener("scroll",this.updateScrollValues)}render(){const{children:t,currentClassName:n,className:r}=this.props,{inViewState:o}=this.state,i=t.map(((t,r)=>{if(!t)return null;const i=t.type;let a=t.props.className;return o[r]&&n.length>0&&(a+=` ${n}`,this.syncScroll(r)),e.createElement(i,{key:t.key,className:a,onClick:this.handleSectionClick,ref:this.itemRefs[r]},t.props.children)}));return e.createElement("ul",{className:r,ref:this.containerRef},i)}updateFirstItemIndexInView(e){this.firstItemIndexInView=Math.max(this.lastItemIndexInView-(e-1),0)}getContainerValues(e){const{children:t}=this.props,n=Math.round(e.scrollHeight/t.length);return{childHeight:n,maxItemsInView:Math.round(e.clientHeight/n)}}syncScroll(e){const{children:t}=this.props,n=this.containerRef.current;if(!n)return;const{childHeight:r,maxItemsInView:o}=this.getContainerValues(n);-1===this.lastItemIndexInView&&(this.lastItemIndexInView=o-1),this.updateFirstItemIndexInView(o);let i=!1;e>=this.lastItemIndexInView?this.lastItemIndexInView=Math.min(e+1,t.length-1):e<=this.firstItemIndexInView?this.lastItemIndexInView=Math.max(e+o-2,o-1):i=!0,this.updateFirstItemIndexInView(o);const a=e+o/2>t.length;i||(n.scrollTop=a?n.scrollHeight:r*this.firstItemIndexInView)}initItems(){const{items:e}=this.props,t=e.map((e=>document.getElementById(e.slice(1)))).filter(Boolean);this.setState({targetItems:t},this.initSections),this.scrollToListItem()}saveActiveItems(e){const t=this.getViewState(e);this.setState({inViewState:t})}getViewState(e){const{targetItems:t,inViewState:n}=this.state,{headerHeight:r}=this.props,o=window.pageYOffset,i=[];let a=!1;const c=e&&e.startsWith("#")?e.substring(1):e;return t.forEach(((e,t)=>{if(!e)return;const n=e.getBoundingClientRect().top<r+1;c?c===e.getAttribute("id")?(i.push(!0),a=!0):i.push(!1):n?(i[t-1]&&(i[t-1]=!1),i.push(!0),a=!0):i.push(!1)})),t&&t.length&&!a&&o<t[0].getBoundingClientRect().top&&(i[0]=!0,a=!0),a?i:n}pauseScrollHandler(){this.scrollByClick=!0,window.removeEventListener("scroll",this.handleScroll),window.addEventListener("scroll",this.handleScrollDebounced)}}Fl.defaultProps={currentClassName:"Scrollspy",sectionOffset:20,headerHeight:0};var Ol=n(2143),Nl={};Nl.styleTagTransform=Ne(),Nl.setAttributes=Qe(),Nl.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Nl.domAPI=ze(),Nl.insertStyleElement=Fe(),Se()(Ol.Z,Nl),Ol.Z&&Ol.Z.locals&&Ol.Z.locals;const Pl=(0,de.Z)("dc-mini-toc");class Rl extends e.Component{constructor(){super(...arguments),this.renderSection=(e,t)=>e.concat(this.renderItem(t),t.items?t.items.map((e=>this.renderItem(e,!0))):[]),this.renderItem=({title:t,href:n},r=!1)=>e.createElement("li",{key:n,"data-hash":n,className:Pl("section",{child:r})},e.createElement("a",{href:n,className:Pl("section-link"),"data-router-shallow":!0},t))}componentDidUpdate(e){const{i18n:t,lang:n}=this.props;e.lang!==n&&t.changeLanguage(n)}render(){const{lang:t,i18n:n,t:r}=this.props;return n.language!==t&&n.changeLanguage(t),e.createElement("div",{className:Pl()},e.createElement("div",{className:Pl("title")},r("title"),":"),this.renderSections())}renderSections(){const{headings:t,router:n,headerHeight:r}=this.props;if(0===t.length)return null;const o=t.reduce(((e,{href:t,items:n})=>{const r=n?n.map((({href:e})=>e)):[];return e.concat(t,r)}),[]);return 0===o.length?null:e.createElement(Fl,{className:Pl("sections"),currentClassName:Pl("section",{active:!0}),items:o,router:n,headerHeight:r},t.reduce(this.renderSection,[]))}}Rl.propTypes={headings:Yi().array.isRequired};const jl=it("mini-toc")(Rl);var Ll=n(181),ql={};ql.styleTagTransform=Ne(),ql.setAttributes=Qe(),ql.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},ql.domAPI=ze(),ql.insertStyleElement=Fe(),Se()(Ll.Z,ql),Ll.Z&&Ll.Z.locals&&Ll.Z.locals;const Ul=(0,de.Z)("dc-breadcrumbs"),Vl=({items:t,className:n})=>t&&t.length?e.createElement("nav",{className:Ul(null,n),"aria-label":"Breadcrumbs"},e.createElement("ol",{className:Ul("items")},t.map((({name:t,url:n},r,o)=>e.createElement("li",{key:r,className:Ul("item")},function({name:t,url:n},r){const o=Boolean(n);return e.createElement(o&&!r?"a":"span",{className:Ul("text",{link:o}),href:n,"aria-current":r?"page":null},t)}({name:t,url:n},r===o.length-1)))))):null;function Wl(){return Wl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wl.apply(this,arguments)}const Gl=({styles:t={},...n})=>e.createElement("svg",Wl({width:"15",height:"10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M5.25 9.406l.625-.625a.389.389 0 00-.031-.531l-2.5-2.438h10.781a.38.38 0 00.375-.375v-.875a.403.403 0 00-.375-.375H3.344l2.5-2.406a.389.389 0 00.031-.531L5.25.625a.423.423 0 00-.531 0L.594 4.75a.423.423 0 000 .531l4.125 4.125a.423.423 0 00.531 0z",fill:"currentColor"}));function Yl(){return Yl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yl.apply(this,arguments)}const Hl=({styles:t={},...n})=>e.createElement("svg",Yl({width:"15",height:"10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{d:"M9.719.625l-.625.625a.389.389 0 00.031.531l2.5 2.407H.875a.38.38 0 00-.375.375v.875c0 .218.156.375.375.375h10.75l-2.5 2.437a.389.389 0 00-.031.531l.625.625a.423.423 0 00.531 0l4.125-4.125a.423.423 0 000-.531L10.25.625a.423.423 0 00-.531 0z",fill:"currentColor"}));var Zl=n(9128),Jl={};Jl.styleTagTransform=Ne(),Jl.setAttributes=Qe(),Jl.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Jl.domAPI=ze(),Jl.insertStyleElement=Fe(),Se()(Zl.Z,Jl),Zl.Z&&Zl.Z.locals&&Zl.Z.locals;const Kl=(0,de.Z)("dc-nav-toc-panel");class Xl extends e.Component{constructor(){super(...arguments),this.state={flatToc:[],activeItemIndex:0}}componentDidMount(){this.setState(this.getState(this.props))}componentDidUpdate(e){const{router:t,i18n:n,lang:r}=this.props;e.router.pathname!==t.pathname&&this.setState(this.getState(this.props)),e.lang!==r&&n.changeLanguage(r)}render(){const{flatToc:t,activeItemIndex:n}=this.state,{fixed:r=!1,className:o}=this.props;if(!t.length)return null;const i=n>0?t[n-1]:null,a=n<t.length-1?t[n+1]:null;return e.createElement("div",{className:Kl({fixed:r},o)},e.createElement("div",{className:Kl("content")},this.renderControl(i),this.renderControl(a,!0)))}renderControl(t,n){const{t:r}=this.props,o=n?"hint_next":"hint_previous";return e.createElement("div",{className:Kl("control",{left:!n,right:n})},t&&e.createElement(e.Fragment,null,e.createElement("div",{className:Kl("control-hint")},r(o)),e.createElement("div",{className:Kl("control-text")},this.renderLink(t,n))))}renderLink(t,n){if(!t)return null;const r=fe(t.href),o={href:t.href,target:r?"_blank":"_self",rel:r?"noopener noreferrer":void 0};return e.createElement("a",Object.assign({},o,{className:Kl("link"),"data-router-shallow":!0}),!n&&e.createElement(Gl,null),t.name,n&&e.createElement(Hl,null))}getState(e){const t=[];let n=0;return function r(o){o.forEach((({href:o,name:i,items:a})=>{a&&r(a),o&&t.push({name:i,href:o}),o&&he(e.router,o)&&(n=t.length-1)}))}(e.items),{flatToc:t,activeItemIndex:n}}}const $l=it("toc-nav-panel")(Xl);var es=n(276),ts={};ts.styleTagTransform=Ne(),ts.setAttributes=Qe(),ts.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},ts.domAPI=ze(),ts.insertStyleElement=Fe(),Se()(es.Z,ts),es.Z&&es.Z.locals&&es.Z.locals;const ns=(0,de.Z)("dc-edit-button");class rs extends e.Component{componentDidUpdate(e){const{i18n:t,lang:n}=this.props;e.lang!==n&&t.changeLanguage(n)}render(){const{t,href:n}=this.props;return e.createElement("a",{href:n,target:"_blank",rel:"noreferrer noopener"},e.createElement(It,{className:ns(),view:"raised"},e.createElement(It.Icon,null,e.createElement(bt,{data:Pc})),e.createElement("span",{className:ns("text")},t("edit-text"))))}}const os=it("controls")(rs);var is="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>0;function as(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r):e.attachEvent&&e.attachEvent("on".concat(t),(function(){n(window.event)}))}function cs(e,t){for(var n=t.slice(0,t.length-1),r=0;r<n.length;r++)n[r]=e[n[r].toLowerCase()];return n}function ls(e){"string"!=typeof e&&(e="");for(var t=(e=e.replace(/\s/g,"")).split(","),n=t.lastIndexOf("");n>=0;)t[n-1]+=",",t.splice(n,1),n=t.lastIndexOf("");return t}for(var ss={backspace:8,tab:9,clear:12,enter:13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,capslock:20,num_0:96,num_1:97,num_2:98,num_3:99,num_4:100,num_5:101,num_6:102,num_7:103,num_8:104,num_9:105,num_multiply:106,num_add:107,num_enter:108,num_subtract:109,num_decimal:110,num_divide:111,"⇪":20,",":188,".":190,"/":191,"`":192,"-":is?173:189,"=":is?61:187,";":is?59:186,"'":222,"[":219,"]":221,"\\":220},As={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,cmd:91,command:91},us={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},ds={16:!1,18:!1,17:!1,91:!1},ps={},ys=1;ys<20;ys++)ss["f".concat(ys)]=111+ys;var gs=[],hs=!1,fs="all",vs=[],ms=function(e){return ss[e.toLowerCase()]||As[e.toLowerCase()]||e.toUpperCase().charCodeAt(0)};function Cs(e){fs=e||"all"}function bs(){return fs||"all"}var xs=function(e){var t=e.key,n=e.scope,r=e.method,o=e.splitKey,i=void 0===o?"+":o;ls(t).forEach((function(e){var t=e.split(i),o=t.length,a=t[o-1],c="*"===a?"*":ms(a);if(ps[c]){n||(n=bs());var l=o>1?cs(As,t):[];ps[c]=ps[c].filter((function(e){return!((!r||e.method===r)&&e.scope===n&&function(e,t){for(var n=e.length>=t.length?e:t,r=e.length>=t.length?t:e,o=!0,i=0;i<n.length;i++)-1===r.indexOf(n[i])&&(o=!1);return o}(e.mods,l))}))}}))};function ws(e,t,n,r){var o;if(t.element===r&&(t.scope===n||"all"===t.scope)){for(var i in o=t.mods.length>0,ds)Object.prototype.hasOwnProperty.call(ds,i)&&(!ds[i]&&t.mods.indexOf(+i)>-1||ds[i]&&-1===t.mods.indexOf(+i))&&(o=!1);(0!==t.mods.length||ds[16]||ds[18]||ds[17]||ds[91])&&!o&&"*"!==t.shortcut||!1===t.method(e,t)&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}function Es(e,t){var n=ps["*"],r=e.keyCode||e.which||e.charCode;if(_s.filter.call(this,e)){if(93!==r&&224!==r||(r=91),-1===gs.indexOf(r)&&229!==r&&gs.push(r),["ctrlKey","altKey","shiftKey","metaKey"].forEach((function(t){var n=us[t];e[t]&&-1===gs.indexOf(n)?gs.push(n):!e[t]&&gs.indexOf(n)>-1?gs.splice(gs.indexOf(n),1):"metaKey"===t&&e[t]&&3===gs.length&&(e.ctrlKey||e.shiftKey||e.altKey||(gs=gs.slice(gs.indexOf(n))))})),r in ds){for(var o in ds[r]=!0,As)As[o]===r&&(_s[o]=!0);if(!n)return}for(var i in ds)Object.prototype.hasOwnProperty.call(ds,i)&&(ds[i]=e[us[i]]);e.getModifierState&&(!e.altKey||e.ctrlKey)&&e.getModifierState("AltGraph")&&(-1===gs.indexOf(17)&&gs.push(17),-1===gs.indexOf(18)&&gs.push(18),ds[17]=!0,ds[18]=!0);var a=bs();if(n)for(var c=0;c<n.length;c++)n[c].scope===a&&("keydown"===e.type&&n[c].keydown||"keyup"===e.type&&n[c].keyup)&&ws(e,n[c],a,t);if(r in ps)for(var l=0;l<ps[r].length;l++)if(("keydown"===e.type&&ps[r][l].keydown||"keyup"===e.type&&ps[r][l].keyup)&&ps[r][l].key){for(var s=ps[r][l],A=s.splitKey,u=s.key.split(A),d=[],p=0;p<u.length;p++)d.push(ms(u[p]));d.sort().join("")===gs.sort().join("")&&ws(e,s,a,t)}}}function _s(e,t,n){gs=[];var r=ls(e),o=[],i="all",a=document,c=0,l=!1,s=!0,A="+",u=!1;for(void 0===n&&"function"==typeof t&&(n=t),"[object Object]"===Object.prototype.toString.call(t)&&(t.scope&&(i=t.scope),t.element&&(a=t.element),t.keyup&&(l=t.keyup),void 0!==t.keydown&&(s=t.keydown),void 0!==t.capture&&(u=t.capture),"string"==typeof t.splitKey&&(A=t.splitKey)),"string"==typeof t&&(i=t);c<r.length;c++)o=[],(e=r[c].split(A)).length>1&&(o=cs(As,e)),(e="*"===(e=e[e.length-1])?"*":ms(e))in ps||(ps[e]=[]),ps[e].push({keyup:l,keydown:s,scope:i,mods:o,shortcut:r[c],method:n,key:r[c],splitKey:A,element:a});void 0!==a&&!function(e){return vs.indexOf(e)>-1}(a)&&window&&(vs.push(a),as(a,"keydown",(function(e){Es(e,a)}),u),hs||(hs=!0,as(window,"focus",(function(){gs=[]}),u)),as(a,"keyup",(function(e){Es(e,a),function(e){var t=e.keyCode||e.which||e.charCode,n=gs.indexOf(t);if(n>=0&&gs.splice(n,1),e.key&&"meta"===e.key.toLowerCase()&&gs.splice(0,gs.length),93!==t&&224!==t||(t=91),t in ds)for(var r in ds[t]=!1,As)As[r]===t&&(_s[r]=!1)}(e)}),u))}var ks={setScope:Cs,getScope:bs,deleteScope:function(e,t){var n,r;for(var o in e||(e=bs()),ps)if(Object.prototype.hasOwnProperty.call(ps,o))for(n=ps[o],r=0;r<n.length;)n[r].scope===e?n.splice(r,1):r++;bs()===e&&Cs(t||"all")},getPressedKeyCodes:function(){return gs.slice(0)},isPressed:function(e){return"string"==typeof e&&(e=ms(e)),-1!==gs.indexOf(e)},filter:function(e){var t=e.target||e.srcElement,n=t.tagName,r=!0;return!t.isContentEditable&&("INPUT"!==n&&"TEXTAREA"!==n&&"SELECT"!==n||t.readOnly)||(r=!1),r},trigger:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"all";Object.keys(ps).forEach((function(n){var r=ps[n].find((function(n){return n.scope===t&&n.shortcut===e}));r&&r.method&&r.method()}))},unbind:function(e){if(void 0===e)Object.keys(ps).forEach((function(e){return delete ps[e]}));else if(Array.isArray(e))e.forEach((function(e){e.key&&xs(e)}));else if("object"==typeof e)e.key&&xs(e);else if("string"==typeof e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o=n[0],i=n[1];"function"==typeof o&&(i=o,o=""),xs({key:e,scope:o,method:i,splitKey:"+"})}},keyMap:ss,modifier:As,modifierMap:us};for(var Bs in ks)Object.prototype.hasOwnProperty.call(ks,Bs)&&(_s[Bs]=ks[Bs]);if("undefined"!=typeof window){var Is=window.hotkeys;_s.noConflict=function(e){return e&&window.hotkeys===_s&&(window.hotkeys=Is),_s},window.hotkeys=_s}_s.filter=function(){return!0};var Ss=function(e,t){var n=e.target,r=n&&n.tagName;return Boolean(r&&t&&t.includes(r))};function Ds(t,n,r,o){r instanceof Array&&(o=r,r=void 0);var i=r||{},a=i.enableOnTags,c=i.filter,l=i.keyup,s=i.keydown,A=i.filterPreventDefault,u=void 0===A||A,d=i.enabled,p=void 0===d||d,y=i.enableOnContentEditable,g=void 0!==y&&y,h=(0,e.useRef)(null),f=(0,e.useCallback)((function(e,t){var r,o;return c&&!c(e)?!u:!!(Ss(e,["INPUT","TEXTAREA","SELECT"])&&!Ss(e,a)||null!=(r=e.target)&&r.isContentEditable&&!g)||!!(null===h.current||document.activeElement===h.current||null!=(o=h.current)&&o.contains(document.activeElement))&&(n(e,t),!0)}),o?[h,a,c].concat(o):[h,a,c]);return(0,e.useEffect)((function(){if(p)return l&&!0!==s&&(r.keydown=!1),_s(t,r||{},f),function(){return _s.unbind(t,f)};_s.unbind(t,f)}),[f,t,p]),h}function zs(){return zs=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},zs.apply(this,arguments)}_s.isPressed;const Ts=({styles:t={},...n})=>e.createElement("svg",zs({width:"10",height:"10",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{fill:"currentColor",d:"M9.756 8.577a.833.833 0 11-1.179 1.179L5 6.179 1.423 9.756A.833.833 0 11.244 8.577L3.821 5 .244 1.423A.833.833 0 111.423.244L5 3.821 8.577.244a.833.833 0 111.179 1.179L6.179 5l3.577 3.577z"}));function Qs(){return Qs=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Qs.apply(this,arguments)}const Ms=({styles:t={},...n})=>e.createElement("svg",Qs({width:"16",height:"16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.136 7.863c0-.412.155-.665.487-.997L10.37 1.12a.875.875 0 111.237 1.237L6.101 7.863l5.506 5.507a.875.875 0 11-1.237 1.237L4.644 8.881c-.34-.339-.508-.606-.508-1.018z",fill:"currentColor"}));var Fs=n(7883),Os={};Os.styleTagTransform=Ne(),Os.setAttributes=Qe(),Os.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Os.domAPI=ze(),Os.insertStyleElement=Fe(),Se()(Fs.Z,Os),Fs.Z&&Fs.Z.locals&&Fs.Z.locals;const Ns=(0,de.Z)("dc-search-bar"),Ps=()=>{},Rs=t=>{const{t:n,i18n:r,lang:o,searchQuery:i,searchCurrentIndex:a,searchCountResults:c,onClickPrevSearch:l=Ps,onClickNextSearch:s=Ps,onCloseSearchBar:A=Ps}=t,u={filterPreventDefault:!0},d="⇧+enter",p="enter";return Ds(d,l,u,[l]),Ds(p,s,u,[s]),r.language!==o&&r.changeLanguage(o),e.createElement("div",{className:Ns()},e.createElement("div",{className:Ns("left")},e.createElement("div",{className:Ns("navigation")},e.createElement(Yr,{onClick:l,tooltipText:`${n("prev")} (${d})`,icon:t=>e.createElement(Ms,Object.assign({},t))}),e.createElement("span",{className:Ns("counter")},a,"/",c),e.createElement(Yr,{onClick:s,tooltipText:`${n("next")} (${p})`,icon:t=>e.createElement(Ms,Object.assign({},t,{className:Ns("next-arrow")}))})),e.createElement("span",{className:Ns("search-query-label")},n("search-query-label"),": "),e.createElement("span",{className:Ns("search-query")},i)),e.createElement("div",{className:Ns("right")},e.createElement(Yr,{onClick:A,tooltipText:n("close"),icon:()=>e.createElement(Ts,{width:"10",height:"10"})})))};Rs.displayName="DCSearchBar";const js=it("search-bar")(Rs);var Ls=n(7724);function qs(e,t=0){return Math.floor(Number(e.getBoundingClientRect().top))-t}function Us({elements:e,offset:t=0,top:n=0,bottom:r=1/0,reverse:o=!1}){let i;for(let a=0;a<e.length;a++){const c=qs(e[a],t);if(c>=n&&c<=r&&(i=a+1,!o))break}return i}function Vs({highlightedDOMElements:e,headerHeight:t,hash:n}){const r=e,o=t;let i=0;if(n&&"undefined"!=typeof document){const e=document.getElementById(n);e&&(i=qs(e,o))}const a=Us({top:i,elements:r,offset:o}),c=Us({top:i+window.innerHeight,elements:r,offset:o}),l=Us({top:-1/0,bottom:i,reverse:!0,elements:r,offset:o});return a||c||l}const Ws="dc-search-highlighted",Gs="dc-search-highlighted_selected",Ys={element:"span",className:Ws,exclude:[`.${Ws}`,"svg *"]};function Hs(e,t=!1){return t?Zs(e):Zs(e).split(" ").reduce(((e,t,n)=>n>0?`${e} ${t.charAt(0)}.`:t),"")}function Zs(e){const{name:t,email:n,login:r}=e;return t||r||n}var Js;!function(e){e.BIG="big",e.SMALL="small"}(Js||(Js={}));var Ks=n(7108),Xs={};Xs.styleTagTransform=Ne(),Xs.setAttributes=Qe(),Xs.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Xs.domAPI=ze(),Xs.insertStyleElement=Fe(),Se()(Ks.Z,Xs),Ks.Z&&Ks.Z.locals&&Ks.Z.locals;const $s=(0,de.Z)("contributor-avatars");function eA(e,t,n){t||n||e.preventDefault()}const tA=t=>{const{avatarData:n,popupData:r,isRedirect:o=!1}=t,{contributor:i,size:a=Js.SMALL,inDetails:c=!1}=n,{changeVisiblilityPopup:l=(()=>{}),ref:s}=r||{},{avatar:A,email:u,login:d}=i,p=`avatar-${d||u}`;if(A)return e.createElement("img",{key:p,className:$s("avatar",{size:a}),src:A,ref:s,onMouseOver:()=>l(!0),onMouseLeave:()=>l(!1),onTouchStart:()=>l(),onTouchEnd:e=>eA(e,c,o)});const y=function(e){return Zs(e).charAt(0).toUpperCase()}(i);return e.createElement("div",{key:p,className:$s("avatar",{size:a,default:!0}),ref:s,onMouseOver:()=>l(!0),onMouseLeave:()=>l(!1),onTouchStart:()=>l(),onTouchEnd:e=>eA(e,c,o)},y)},nA=({children:t,url:n})=>n?e.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer"},t):e.createElement(e.Fragment,null,t),rA=(0,de.Z)("contributor-avatars"),oA=t=>{const{contributors:n,popupData:r}=t,{ref:o,isVisiblePopup:i,changeVisiblilityPopup:a}=r||{},c=n.map((t=>function(t){const{login:n,email:r,url:o}=t,i={contributor:t,size:Js.BIG,inDetails:!0},a=e.createElement(tA,{avatarData:i});return e.createElement(nA,{url:o,key:`details-${n||r}`},e.createElement("div",{className:rA("details")},a,e.createElement("div",{className:rA("details_name")},Hs(t,!0))))}(t)));return e.createElement(jr,{anchorRef:o,open:i,onOutsideClick:()=>a(!1),className:rA("popup"),placement:Lr.BOTTOM,hasArrow:!0},c)},iA=(0,de.Z)("contributor-avatars"),aA=t=>{const{contributors:n,avatarsSize:r}=t,o=n.length,i=(0,e.useRef)(null),[a,c]=(0,e.useState)(!1);if(0===o)return null;const l={ref:i,isVisiblePopup:a,changeVisiblilityPopup:()=>c(!1)},s=o>9?"9+":`+${o}`;return e.createElement(e.Fragment,null,e.createElement("div",{className:iA("avatar",{size:r}),ref:i,onClick:e=>{c(!a),e.preventDefault()}},s),e.createElement(oA,{contributors:n,popupData:l}))},cA=t=>{const{contributor:n,avatarSize:r}=t,o=(0,e.useRef)(null),[i,a]=(0,e.useState)(!1),c={contributor:n,size:r},l={changeVisiblilityPopup:e=>{a(void 0===e?!i:e)},ref:o,isVisiblePopup:i},s=e.createElement(tA,{avatarData:c,popupData:l});return e.createElement(e.Fragment,null,s,e.createElement(oA,{contributors:[n],popupData:l}))},lA=(0,de.Z)("contributor-avatars");function sA(t,n,r=!1){return e.createElement(nA,{url:n},e.createElement(tA,{avatarData:t,isRedirect:r}))}const AA=t=>{const{contributors:n,isAuthor:r=!1,onlyAuthor:o=!1}=t;if(!n||0===n.length)return null;if(1===n.length){const t=function(t,n,r){const o={contributor:t,size:Js.SMALL},i=n?{onlyAuthor:r}:{};return e.createElement("div",{className:lA("one_contributor",i)},e.createElement("div",{className:"desktop"},sA(o,t.url)," "),e.createElement("div",{className:"mobile"},n&&r?sA(o,t.url,!0):e.createElement(cA,{contributor:t,avatarSize:Js.SMALL})),e.createElement("div",null,e.createElement(nA,{url:t.url},Hs(t,n))))}(n[0],r,o);return t}const i=[...n],a=i.splice(3),c=i.map((t=>{const{url:n,login:r,email:o}=t;return e.createElement(nA,{key:`displayed-contributors-${r||o}`,url:n},e.createElement(cA,{contributor:t,avatarSize:Js.SMALL}))})),l=e.createElement(aA,{contributors:a,avatarsSize:Js.SMALL});return e.createElement(e.Fragment,null,e.createElement("div",{className:lA("displayed_avatars")},c),e.createElement("div",{className:lA("hidden_avatars")},l))};var uA=n(1088),dA={};dA.styleTagTransform=Ne(),dA.setAttributes=Qe(),dA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},dA.domAPI=ze(),dA.insertStyleElement=Fe(),Se()(uA.Z,dA),uA.Z&&uA.Z.locals&&uA.Z.locals;const pA=(0,de.Z)("contributors"),yA=t=>{const{users:n,lang:r,onlyAuthor:o=!1,isAuthor:i=!1,translationName:a="contributors"}=t,{t:c,i18n:l}=tt(a);return(0,e.useEffect)((()=>{l.changeLanguage(r)}),[l,r]),e.createElement("div",{className:pA()},e.createElement("div",{className:pA("title")},c("title")),e.createElement(AA,{contributors:n,isAuthor:i,onlyAuthor:o}))};function gA(){return gA=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},gA.apply(this,arguments)}const hA=({styles:t={},...n})=>e.createElement("svg",gA({width:"14",height:"14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n),e.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M13.294 2.214L11.767.684c-.911-.912-2.499-.912-3.41 0L6.83 2.214a2.412 2.412 0 00-.147 3.233L7.936 4.19a.66.66 0 01.132-.738l1.527-1.53a.658.658 0 01.934 0l1.527 1.53a.664.664 0 010 .936l-1.527 1.53a.68.68 0 01-.734.129L8.54 7.306c.43.356.958.559 1.523.559.644 0 1.249-.251 1.705-.707l1.527-1.53a2.42 2.42 0 000-3.414zM9.532 5.69a.876.876 0 00-1.237-1.239l-.082.082-1.238 1.24-1.189 1.19-1.237 1.24-.082.082a.876.876 0 001.237 1.24l.082-.083 1.238-1.239 1.189-1.191 1.237-1.24.082-.082zm-3.601 4.833c.2-.2.24-.494.131-.738L7.316 8.53a2.412 2.412 0 01-.148 3.233l-1.527 1.529A2.392 2.392 0 013.937 14c-.645 0-1.25-.25-1.705-.707l-1.527-1.53a2.421 2.421 0 010-3.415L2.232 6.82c.854-.856 2.299-.898 3.227-.146L4.207 7.927a.65.65 0 00-.737.131l-1.528 1.53a.664.664 0 000 .936l1.527 1.53a.68.68 0 00.935 0l1.527-1.53z",fill:"currentColor"}));var fA=n(66),vA={};vA.styleTagTransform=Ne(),vA.setAttributes=Qe(),vA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},vA.domAPI=ze(),vA.insertStyleElement=Fe(),Se()(fA.Z,vA),fA.Z&&fA.Z.locals&&fA.Z.locals;var mA=n(3343),CA={};CA.styleTagTransform=Ne(),CA.setAttributes=Qe(),CA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},CA.domAPI=ze(),CA.insertStyleElement=Fe(),Se()(mA.Z,CA),mA.Z&&mA.Z.locals&&mA.Z.locals;const bA=(0,de.Z)("dc-doc-page");class xA extends e.Component{constructor(){super(...arguments),this.state={loading:!0,keyDOM:we()},this.bodyRef=null,this.bodyObserver=null,this.handleBodyMutation=e=>{const{onContentMutation:t,onContentLoaded:n}=this.props;this.props.singlePage&&this.bodyObserver&&this.bodyRef&&(this.bodyObserver.disconnect(),this.addLinksToOriginalArticle(),this.bodyObserver.observe(this.bodyRef,{childList:!0,subtree:!0})),t&&setTimeout(t,0),this.setState({loading:!1}),n&&setTimeout((()=>{e.filter((({type:e})=>"childList"===e)).forEach((e=>{[...e.target.querySelectorAll("img")].forEach((e=>{e.addEventListener("load",n,!1)}))}))}),0)},this.setBodyRef=e=>{this.bodyRef=e},this.addLinksToOriginalArticle=()=>{const{singlePage:t,lang:n,convertPathToOriginalArticle:o,generatePathToVcs:i}=this.props;if(t){const t=document.querySelectorAll("[data-original-article]");for(const a of t){const t=a.getAttribute("data-original-article")||"",c=Ce(a);if(c){const a=c.querySelectorAll(".yfm-anchor");for(const e of a)e.classList.add("yfm-anchor_hidden");const l=document.createElement("a");if(l.href=me(o,t),l.className="yfm-anchor yfm-original-link",l.innerHTML=r.renderToStaticMarkup(e.createElement(hA,null)),c.append(l),"function"==typeof i){const o=me(i,t),a=xe(r.renderToStaticMarkup(e.createElement(os,{lang:n,href:o})));c.append(a),c.classList.add(bA("header-container"))}}}}},this.getIsVerticalView=()=>{const{fullScreen:e}=this.props;return!this.showMiniToc||e},this.renderSearchBar=()=>{const{showSearchBar:t,searchQuery:n,searchCurrentIndex:r,searchCountResults:o,onClickPrevSearch:i,onClickNextSearch:a,onCloseSearchBar:c,lang:l,singlePage:s}=this.props;return!t||s?null:e.createElement("div",{className:bA("search-bar")},e.createElement(js,{lang:l,searchCurrentIndex:r,searchCountResults:o,onClickPrevSearch:i,onClickNextSearch:a,onCloseSearchBar:c,searchQuery:n}))}}componentDidMount(){const{singlePage:e}=this.props;e&&this.addLinksToOriginalArticle(),this.setState({loading:!1}),this.addBodyObserver()}componentDidUpdate(e){e.singlePage!==this.props.singlePage&&this.setState({loading:!0}),e.html!==this.props.html&&this.setState({keyDOM:we()})}componentWillUnmount(){this.bodyObserver&&this.bodyObserver.disconnect()}render(){const{toc:t,router:n,lang:r,headerHeight:o,wideFormat:i,fullScreen:a,singlePage:c,tocTitleIcon:l,hideTocHeader:s,hideToc:A,footer:u,onChangeSinglePage:d,pdfLink:p}=this.props,y=!this.showMiniToc,g={"regular-page-width":!i,"full-screen":a,"hidden-mini-toc":y,"single-page":c};return e.createElement(tl,{toc:t,router:n,lang:r,headerHeight:o,className:bA(g),fullScreen:a,hideRight:y,tocTitleIcon:l,wideFormat:i,hideTocHeader:s,hideToc:A,loading:this.state.loading,footer:u,singlePage:c,onChangeSinglePage:d,pdfLink:p},e.createElement(tl.Center,null,this.renderSearchBar(),this.renderBreadcrumbs(),this.renderControls(),e.createElement("div",{className:bA("main")},e.createElement("main",{className:bA("content")},this.renderTitle(),this.renderPageContributors(),y?null:this.renderContentMiniToc(),this.renderBody(),this.renderFeedback()),this.renderTocNavPanel()),this.renderLoader()),e.createElement(tl.Right,null,e.createElement("div",{className:bA("aside"),key:ve(this.showMiniToc,i,c)},y?null:this.renderAsideMiniToc())))}addBodyObserver(){this.bodyObserver||(this.bodyObserver=new MutationObserver(this.handleBodyMutation)),this.bodyRef&&this.bodyObserver.observe(this.bodyRef,{childList:!0,subtree:!0})}renderLoader(){const{renderLoader:t}=this.props,{loading:n}=this.state;return t&&n?e.createElement("div",{className:bA("loader-wrapper")},t()):null}get showMiniToc(){const{showMiniToc:e,singlePage:t,headings:n,toc:r}=this.props;if(t)return!1;const o=0===n.length||r.singlePage,i=1===n.length&&n[0].items&&n[0].items.length>=1;return!(o||!(i||n.length>=2))&&e}renderBreadcrumbs(){const{breadcrumbs:t}=this.props;return!t||t.length<2?null:e.createElement("div",{className:bA("breadcrumbs")},e.createElement(Vl,{items:t}))}renderTitle(){const{title:t,meta:n,bookmarkedPage:r,onChangeBookmarkPage:o}=this.props;return t?e.createElement(Cl,{stage:n.stage,className:bA("title"),bookmarkedPage:r,onChangeBookmarkPage:o},e.createElement(Ye,null,t)):null}renderPageContributors(){var t;const{meta:n,hideContributors:r}=this.props;if(r)return null;const o=this.renderAuthor(!(null===(t=null==n?void 0:n.contributors)||void 0===t?void 0:t.length)),i=this.renderContributors(),a=o&&i&&e.createElement("div",{className:bA("separator")},",");return e.createElement("div",{className:bA("page-contributors")},o," ",a," ",i)}renderAuthor(t){const{meta:n,lang:r}=this.props;return(null==n?void 0:n.author)?e.createElement(yA,{lang:r,users:[n.author],onlyAuthor:t,translationName:"authors",isAuthor:!0}):null}renderContributors(){const{meta:t,lang:n}=this.props;return(null==t?void 0:t.contributors)&&0!==t.contributors.length?e.createElement(yA,{lang:n,users:t.contributors}):null}renderContentMiniToc(){const{headings:t}=this.props;return e.createElement("div",{className:bA("content-mini-toc","yfm")},e.createElement("ul",null,t.map((({title:t,href:n,level:r,items:o},i)=>2!==r?null:e.createElement("li",{key:i},e.createElement("a",{href:n},t),o&&e.createElement("ul",null,o.map((({title:t,href:n,level:r},o)=>3!==r?null:e.createElement("li",{key:o},e.createElement("a",{href:n},t))))))))))}renderBody(){const{html:t,textSize:n}=this.props;return t?e.createElement("div",{ref:this.setBodyRef,className:bA("body",{"text-size":n},"yfm"),dangerouslySetInnerHTML:{__html:t}}):null}renderAsideMiniToc(){const{headings:t,router:n,headerHeight:r,lang:o}=this.props,{keyDOM:i}=this.state;return e.createElement("div",{className:bA("aside-mini-toc")},e.createElement(jl,{headings:t,router:n,headerHeight:r,lang:o,key:i}))}renderFeedback(){const{toc:t,lang:n,singlePage:r,isLiked:o,isDisliked:i,onSendFeedback:a,dislikeVariants:c,hideFeedbackControls:l}=this.props;if(!t||t.singlePage||l)return null;const s=this.getIsVerticalView();return e.createElement("div",{className:bA("feedback")},e.createElement(Ai,{isVerticalView:s,lang:n,singlePage:r,isLiked:o,isDisliked:i,dislikeVariants:c,onSendFeedback:a,view:si.Wide}))}renderTocNavPanel(){const{toc:t,router:n,fullScreen:r,lang:o}=this.props;return!t||t.singlePage?null:e.createElement($l,Object.assign({},t,{lang:o,router:n,fixed:r,className:bA("toc-nav-panel")}))}isEditable(){const{toc:e,meta:t,vcsUrl:n,vcsType:r}=this.props,o="preview"!==e.stage&&"preview"!==t.stage&&!1!==t.editable&&!1!==e.editable;return Boolean(o&&n&&r)}renderControls(){const{lang:t,langs:n,textSize:r,theme:o,wideFormat:i,fullScreen:a,singlePage:c,vcsUrl:l,vcsType:s,onChangeLang:A,onChangeFullScreen:u,onChangeWideFormat:d,onChangeShowMiniToc:p,onChangeTheme:y,onChangeTextSize:g,onSendFeedback:h,onSubscribe:f,isLiked:v,isDisliked:m,dislikeVariants:C,hideControls:b,hideEditControl:x,hideFeedbackControls:w}=this.props;if(b)return null;const E=!x&&!a&&this.isEditable(),_=this.getIsVerticalView();return e.createElement("div",{className:bA("controls",{vertical:_})},e.createElement(Lc,{lang:t,langs:n,textSize:r,theme:o,wideFormat:i,showMiniToc:this.showMiniToc,fullScreen:a,singlePage:c,onChangeLang:A,vcsUrl:l,vcsType:s,isLiked:v,isDisliked:m,dislikeVariants:C,showEditControl:E,onChangeFullScreen:u,onChangeWideFormat:d,onChangeShowMiniToc:p,onChangeTheme:y,onChangeTextSize:g,onSendFeedback:h,onSubscribe:f,isVerticalView:_,hideFeedbackControls:w}))}}xA.defaultProps=ti;const wA=function(t){const n=n=>{const{html:r,searchWords:o=[],showSearchBar:i=!1,onCloseSearchBar:a,onNotFoundWords:c=(()=>{}),onContentMutation:l,onContentLoaded:s,headerHeight:A=0,router:{hash:u}}=n,[d,p]=(0,e.useState)(!0),y=(0,e.useCallback)((()=>p(!1)),[]);(0,e.useEffect)((()=>{p(!1)}),[r,o]);const{highlightedHtml:g,highlightedDOMElements:h,searchBarIsVisible:f,wasChangedDOM:v,onContentMutation:m,onContentLoaded:C}=function({html:t,searchWords:n,showSearchBar:r,onContentMutation:o,onContentLoaded:i,onNotFoundWords:a}){const c=function(t,n,r){const[o,i]=(0,e.useState)(t);return(0,e.useEffect)((()=>{if(!n.length||!r)return void i(t);const e=function({html:e,keywords:t,options:n}){const r=document.createElement("div");return r.innerHTML=e,new Ls.Z(r).mark(t,n),r.innerHTML}({html:t,keywords:n,options:Ys});e.includes(Ws)?i(e):i(t)}),[t,n,r]),o}(t,n,r),{wasChangedDOM:l,onContentMutation:s,onContentLoaded:A}=function({onContentMutation:t,onContentLoaded:n}){const[r,o]=(0,e.useState)(!1);(0,e.useEffect)((()=>{r&&o(!1)}),[r]);const i=(0,e.useCallback)((()=>{t&&t(),o(!0)}),[t]),a=(0,e.useCallback)((()=>{n&&n(),o(!0)}),[n]);return{wasChangedDOM:r,onContentMutation:i,onContentLoaded:a}}({onContentMutation:o,onContentLoaded:i}),u=function(t,n,r){const o=(0,e.useRef)([]);if((0,e.useEffect)((()=>{o.current=[]}),[t]),(0,e.useEffect)((()=>{n&&(o.current=[])}),[n]),o.current.length)return o.current;if(!r||"undefined"==typeof document)return[];const i=document.querySelectorAll(`.${Ws}`);return o.current=[...i],o.current}(c,l,r),d=function({showSearchBar:t,searchWords:n,highlightedHtml:r,html:o}){const[i,a]=(0,e.useState)(t);return(0,e.useEffect)((()=>{a(t&&Boolean(n&&n.length)&&r!==o)}),[t,n,r,o]),i}({showSearchBar:r,searchWords:n,highlightedHtml:c,html:t});return function({showSearchBar:t,highlightedDOMElements:n,onNotFoundWords:r}){(0,e.useEffect)((()=>{r&&t&&!n.length&&r()}),[n,t,r])}({highlightedDOMElements:u,showSearchBar:r,onNotFoundWords:a}),{highlightedHtml:c,highlightedDOMElements:u,searchBarIsVisible:d,wasChangedDOM:l,onContentMutation:s,onContentLoaded:A}}({html:r,searchWords:o,showSearchBar:i,onContentMutation:l,onContentLoaded:s,onNotFoundWords:c}),{searchCurrentIndex:b,setSearchCurrentIndex:x,searchCountResults:w,onClickPrevSearch:E,onClickNextSearch:_}=function({highlightedDOMElements:t,stopSyncOnScroll:n,headerHeight:r,hash:o}){const[i,a]=(0,e.useState)(1),[c,l]=(0,e.useState)(1);(0,e.useEffect)((()=>{const e=Vs({highlightedDOMElements:t,headerHeight:r,hash:o})||1;a(e),l(t.length||1)}),[t,r,o]);const s=(0,e.useCallback)((e=>{if(e.stopPropagation(),e.preventDefault(),n(),!t.length)return;let r=i+1;r>t.length&&(r=1),a(r)}),[t,i,a,n]),A=(0,e.useCallback)((e=>{if(e.stopPropagation(),e.preventDefault(),n(),!t.length)return;let r=i-1;r<1&&(r=t.length),a(r)}),[t,i,a,n]);return{searchCurrentIndex:i,setSearchCurrentIndex:a,searchCountResults:c,onClickPrevSearch:A,onClickNextSearch:s}}({highlightedDOMElements:h,stopSyncOnScroll:y,headerHeight:A,hash:u});return function({searchCurrentIndex:t,highlightedDOMElements:n,wasChangedDOM:r,syncOnScroll:o,hash:i}){(0,e.useEffect)((()=>{try{if(!n||!n.length)return;for(let e=0;e<n.length;e++)n[e].classList.remove(Gs);n[t-1].classList.add(Gs)}catch(e){console.error(e)}}),[n,t,r]),(0,e.useEffect)((()=>{var e;o||(e=n[t-1])&&e.scrollIntoView({block:"center",inline:"center"})}),[r,t,n,o,i])}({searchCurrentIndex:b,highlightedDOMElements:h,wasChangedDOM:v,syncOnScroll:d,hash:u}),function({highlightedDOMElements:t,searchWords:n,syncOnScroll:r,searchBarIsVisible:o,setSearchCurrentIndex:i,headerHeight:a,setSyncOnScroll:c}){const l=(0,e.useRef)(),s=(0,e.useCallback)((()=>{if(l.current&&clearTimeout(l.current),l.current=setTimeout((()=>{c(!0)}),50),!r||!o)return;const e=Vs({highlightedDOMElements:t,headerHeight:a});isNaN(e)||i(e)}),[c,o,r,i,t,a]),A=_e().throttle(s,50);(0,e.useEffect)((()=>(o&&window.addEventListener("scroll",A),()=>{window.removeEventListener("scroll",A)})),[o,n,A])}({highlightedDOMElements:h,searchWords:o,syncOnScroll:d,searchBarIsVisible:f,setSearchCurrentIndex:x,headerHeight:A,setSyncOnScroll:p}),f?e.createElement(t,Object.assign({},n,{html:g,onContentMutation:m,onContentLoaded:C,searchCurrentIndex:b,searchCountResults:w,onCloseSearchBar:a,onClickPrevSearch:E,onClickNextSearch:_})):e.createElement(t,Object.assign({},n,{showSearchBar:!1}))};return r=>{const{useSearchBar:o=!1}=r;return o?e.createElement(n,Object.assign({},r)):e.createElement(t,Object.assign({},r))}}(xA);var EA={theme:ne.Light,textSize:re.M,showMiniToc:!0,wideFormat:!0,fullScreen:!1};function _A(e){return"undefined"==typeof sessionStorage?null:sessionStorage.getItem(e)}function kA(e){return"boolean"==typeof e?e:!!e&&"true"===e}function BA(e,t){return function(n){!function(e,t){"undefined"!=typeof sessionStorage&&sessionStorage.setItem(e,String(t))}(e,n),t(n)}}n(9380);var IA=n(2176),SA={};SA.styleTagTransform=Ne(),SA.setAttributes=Qe(),SA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},SA.domAPI=ze(),SA.insertStyleElement=Fe(),Se()(IA.Z,SA),IA.Z&&IA.Z.locals&&IA.Z.locals;const DA=lt("text"),zA=({variant:e="body-1",ellipsis:t,whiteSpace:n,wordBreak:r},o)=>DA({variant:e,ellipsis:t,ws:n,wb:r},o);var TA=n(7456),QA={};QA.styleTagTransform=Ne(),QA.setAttributes=Qe(),QA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},QA.domAPI=ze(),QA.insertStyleElement=Fe(),Se()(TA.Z,QA),TA.Z&&TA.Z.locals&&TA.Z.locals;const MA=lt("color-text"),FA=({color:e},t)=>MA({color:e},t),OA=e.forwardRef(((t,n)=>{var{as:r,children:o,variant:i,className:a,ellipsis:c,color:l,whiteSpace:s,wordBreak:A}=t,u=ut(t,["as","children","variant","className","ellipsis","color","whiteSpace","wordBreak"]);const d=r||"span";return e.createElement(d,Object.assign({ref:n,className:zA({variant:i,ellipsis:c,whiteSpace:s,wordBreak:A},l?FA({color:l},a):a)},u),o)}));OA.displayName="Text";var NA=n(2377),PA={};PA.styleTagTransform=Ne(),PA.setAttributes=Qe(),PA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},PA.domAPI=ze(),PA.insertStyleElement=Fe(),Se()(NA.Z,PA),NA.Z&&NA.Z.locals&&NA.Z.locals;const RA=lt("card"),jA=e.forwardRef((function(t,n){const{type:r="container",theme:o,view:i,size:a="m",children:c,className:l,onClick:s,disabled:A,selected:u}=t,d="selection"===r,p="container"===r,y=("action"===r||d)&&Boolean(s)&&!(A||u),g=p?"normal":void 0,h=p||d?"outlined":void 0;return e.createElement("div",{ref:n,className:RA({theme:o||g,view:i||h,type:r,selected:u,size:a,disabled:A,clickable:y},l),onClick:y?s:void 0},c)}));var LA;!function(e){e.Pending="pending",e.Success="success",e.Error="error"}(LA||(LA={}));var qA=n(4762),UA={};UA.styleTagTransform=Ne(),UA.setAttributes=Qe(),UA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},UA.domAPI=ze(),UA.insertStyleElement=Fe(),Se()(qA.Z,UA),qA.Z&&qA.Z.locals&&qA.Z.locals;const VA=lt("clipboard-icon"),WA=t=>e.createElement("path",{stroke:"currentColor",fill:"transparent",className:VA("state"),strokeWidth:"1.5",d:t}),GA={[LA.Success]:WA("M9.5 13l3 3l5 -5"),[LA.Error]:WA("M9.5 10l8 8m-8 0l8 -8")};function YA({size:t,status:n,className:r}){return e.createElement("svg",Object.assign({width:t,height:t,viewBox:"0 0 24 24",className:VA(null,r)},gt),e.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}),n===LA.Pending?null:GA[n])}var HA=n(4855),ZA=n.n(HA);class JA extends e.Component{constructor(){super(...arguments),this.state={status:JA.INITIAL_STATUS},this.handleCopy=(e,t)=>{const{timeout:n,onCopy:r}=this.props;this.setState({status:t?LA.Success:LA.Error}),clearTimeout(this.timerId),this.timerId=window.setTimeout((()=>{this.setState({status:JA.INITIAL_STATUS}),this.timerId=void 0}),n),null==r||r(e,t)}}componentWillUnmount(){clearTimeout(this.timerId)}render(){const{children:t,text:n,options:r}=this.props,{status:o}=this.state,i=t(o);if(!e.isValidElement(i))throw new Error("Content must be a valid react element");return e.createElement(ZA(),{text:String(n),onCopy:this.handleCopy,options:r},i)}}JA.INITIAL_STATUS=LA.Pending;var KA=n(4907),XA={};XA.styleTagTransform=Ne(),XA.setAttributes=Qe(),XA.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},XA.domAPI=ze(),XA.insertStyleElement=Fe(),Se()(KA.Z,XA),KA.Z&&KA.Z.locals&&KA.Z.locals;const $A=lt("clipboard-button");function eu({text:t,size:n=24,className:r,qa:o,onCopy:i,timeout:a=1e3,options:c}){const l=(0,e.useRef)(null);return(0,e.useEffect)((()=>{var e;null===(e=null==l?void 0:l.current)||void 0===e||e.style.setProperty("--yc-button-height",`${n}px`)}),[n]),e.createElement(JA,{text:t,timeout:a,onCopy:i,options:c},(t=>e.createElement(It,{ref:l,view:"flat",className:$A(null,r),qa:o},e.createElement(It.Icon,null,e.createElement(YA,{status:t,size:n,className:$A("icon")})))))}var tu=n(9686),nu={};nu.styleTagTransform=Ne(),nu.setAttributes=Qe(),nu.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},nu.domAPI=ze(),nu.insertStyleElement=Fe(),Se()(tu.Z,nu),tu.Z&&tu.Z.locals&&tu.Z.locals;const ru=lt("loader");function ou({size:t="s",className:n}){return e.createElement("div",{className:ru({size:t},n)},e.createElement("div",{className:ru("left")}),e.createElement("div",{className:ru("center")}),e.createElement("div",{className:ru("right")}))}var iu=Object.create,au=Object.defineProperty,cu=Object.defineProperties,lu=Object.getOwnPropertyDescriptor,su=Object.getOwnPropertyDescriptors,Au=Object.getOwnPropertyNames,uu=Object.getOwnPropertySymbols,du=Object.getPrototypeOf,pu=Object.prototype.hasOwnProperty,yu=Object.prototype.propertyIsEnumerable,gu=(e,t,n)=>t in e?au(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hu=(e,t)=>{for(var n in t||(t={}))pu.call(t,n)&&gu(e,n,t[n]);if(uu)for(var n of uu(t))yu.call(t,n)&&gu(e,n,t[n]);return e},fu=(e,t)=>cu(e,su(t)),vu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),mu=(e,t,n)=>new Promise(((r,o)=>{var i=e=>{try{c(n.next(e))}catch(e){o(e)}},a=e=>{try{c(n.throw(e))}catch(e){o(e)}},c=e=>e.done?r(e.value):Promise.resolve(e.value).then(i,a);c((n=n.apply(e,t)).next())})),Cu=vu(((e,t)=>{!function(r,o){"object"==typeof e&&"object"==typeof t?t.exports=o():"function"==typeof define&&n.amdO?define([],o):"object"==typeof e?e.block=o():r.block=o()}(e,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t||4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(1);t.ERROR_BLOCK_NAME_TYPE="Block name should be a string",t.ERROR_BLOCK_NAME_EMPTY="Block name should be non-empty";var o={ns:"",el:"__",mod:"_",modValue:"_"},i=function(e){return"string"==typeof e},a=function(e){return"string"!=typeof e},c=function(e,t){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];var i=r.assign({},t);return i.mixes=i.mixes.concat(n),u(i,e)},l=function(e,t,n){for(var o=[],i=3;i<arguments.length;i++)o[i-3]=arguments[i];var a=r.assign({},t),c=r.assign({},a.states||{});return c[n]=r.assign.apply(void 0,[{},c[n]||{}].concat(o)),a.states=c,u(a,e)},s=function(e,t,n,r){return String.prototype.split.call(A(e,t),n,r)},A=function(e,t){var n,r=t.name,o=t.mods,i=t.mixes,a=t.states,c=[r];if(o&&(c=c.concat(Object.keys(o).filter((function(e){return o[e]})).map((function(t){var n=o[t];return!0===n?r+e.mod+t:r+e.mod+t+e.modValue+n})))),a&&Object.keys(a).forEach((function(e){var t=a[e];c=c.concat(Object.keys(t).filter((function(e){return t[e]})).map((function(t){return e+t})))})),e.ns&&(c=c.map((function(t){return e.ns+t}))),i&&(c=c.concat((void 0===(n=i)&&(n=[]),n.map((function(e){return Array.isArray(e)?e.join(" "):"object"==typeof e&&null!==e||"function"==typeof e?e.toString():"string"==typeof e?e:""})).filter((function(e){return!!e}))))),e.classMap){var l=e.classMap;c=c.map((function(e){return l[e]||e}))}return c.join(" ")},u=function(e,t){return{mix:c.bind(null,t,e),split:s.bind(null,t,e),is:l.bind(null,t,e,"is-"),has:l.bind(null,t,e,"has-"),state:l.bind(null,t,e,"is-"),toString:A.bind(null,t,e)}};t.setup=function(e){return void 0===e&&(e={}),function(n){if("string"!=typeof n)throw new Error(t.ERROR_BLOCK_NAME_TYPE);var d=n.trim();if(!d)throw new Error(t.ERROR_BLOCK_NAME_EMPTY);return function(e,t){var n={name:e,mods:{},mixes:[],states:{"is-":{},"has-":{}}},o=function(e,t){for(var n=[],o=2;o<arguments.length;o++)n[o-2]=arguments[o];if(!n.length)return A(e,t);var c=r.assign({},t),l=n.filter(i).reduce((function(t,n){return t+e.el+n}),"");l&&(c.name=c.name+l);var s=n.filter(a).reduce((function(e,t){return r.assign(e,t)}),{});return c.mods=r.assign({},c.mods,s),u(c,e)}.bind(null,t,n);return o.mix=c.bind(null,t,n),o.split=s.bind(null,t,n),o.is=l.bind(null,t,n,"is-"),o.has=l.bind(null,t,n,"has-"),o.state=l.bind(null,t,n,"is-"),o.toString=A.bind(null,t,n),o}(d,r.assign({},o,e))}},t.block=t.setup(),t.default=t.block},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=0;r<t.length;r++){var o=t[r];for(var i in o)o.hasOwnProperty(i)&&(e[i]=o[i])}return e}}])}))})),bu=vu((e=>{Object.defineProperty(e,"__esModule",{value:!0});var t=Cu(),n=t.setup();function r(e){var t=n(e);function r(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var r,o=e.shift(),i=e[0],a=e[1];return("string"!=typeof o||"string"==typeof i)&&(a=i,i=null),r=t(o,i),a&&(r=r.mix(a)),r.toString()}return r.builder=function(){return t},r}r.setup=function(e){n=t.setup(e)},r.reset=function(){n=t.setup()},e.default=r})),{replace:xu}="",wu=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g,Eu={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"'},_u=e=>Eu[e],ku=((e,t,n)=>(n=null!=e?iu(du(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of Au(t))!pu.call(e,n)&&undefined!==n&&au(e,n,{get:()=>t[n],enumerable:!(r=lu(t,n))||r.enumerable});return e})(e&&e.__esModule?n:au(n,"default",{value:e,enumerable:!0}),e)))(bu()),Bu=(0,ku.default)("yfm-sandbox"),Iu=["CORS","Network Failure",'URL scheme must be "http" or "https" for CORS request.'],Su=({className:t,gap:n=20,children:r})=>{let o={gap:n+"px"};return e.createElement("div",{className:Bu("column",t),style:o},r)},Du=(e,t)=>e.reduce(((e,n)=>Object.assign(e,t(n))),{}),zu=class extends e.Component{constructor(e){super(e),this.createOnChange=e=>t=>{this.setState((n=>({errors:void 0,values:fu(hu({},n.values),{[e]:t})})))},this.state={errors:void 0,values:Du(e.params||[],(e=>{var t;return{[e.name]:null!=(t=e.example)?t:""}}))},this.onchange=Du(e.params||[],(e=>({[e.name]:this.createOnChange(e.name)})))}render(){let{params:t,title:n}=this.props,{values:r,errors:o}=this.state;return t&&t.length?e.createElement(Su,{gap:15},e.createElement(OA,{variant:"header-1"},n),e.createElement(Su,{gap:10},t.map(((t,n)=>e.createElement(Su,{gap:5,key:n},e.createElement(OA,{variant:"body-2"},t.name,!!t.required&&e.createElement(OA,{variant:"body-2",color:"danger"},"*"),":"),e.createElement($o,{value:r[t.name],name:t.name,placeholder:t.placeholder,onUpdate:this.onchange[t.name],error:o&&o[t.name]||!1})))))):null}validate(){let e=function(e,t){let n=Du(e||[],(e=>e.required&&!t[e.name]?{[e.name]:"Required"}:void 0));return Object.keys(n).length?n:void 0}(this.props.params,this.state.values);return this.setState({errors:e}),e}value(){return this.state.values}},Tu=class extends e.Component{constructor(e){super(e),this.state={error:null,value:e.value}}render(){let{error:t,value:n}=this.state;return null==n?null:e.createElement(Su,{gap:10},e.createElement(OA,{variant:"header-1"},"Body"),e.createElement($o,{error:t||!1,multiline:!0,rows:10,name:"body",value:n,onUpdate:e=>{this.setState((t=>fu(hu({},t),{value:e})))}}))}validate(){let e=this.isRequired&&!this.state.value?"Required":void 0;return this.setState({error:e}),e}value(){return this.state.value}get isRequired(){return void 0!==this.props.value&&null!==this.props.value}},Qu=({response:t})=>{let{url:n,status:r,file:o,text:i}=t,[a,c]=(0,e.useState)(null);return(0,e.useEffect)((()=>(o&&c(window.URL.createObjectURL(o.blob)),()=>{a&&window.URL.revokeObjectURL(a)})),[o]),e.createElement(Su,{gap:10},e.createElement(OA,{variant:"header-2"},"Response"),e.createElement("div",null,e.createElement(OA,{variant:"subheader-2",as:"div"},"Status",":"),e.createElement(OA,{variant:"body-2",as:"div"},r)),e.createElement("div",null,e.createElement(OA,{variant:"subheader-2",as:"div"},"Request URL",":"),e.createElement(OA,{variant:"body-2",as:"div"},n)),void 0!==i&&e.createElement("div",null,e.createElement(OA,{variant:"subheader-2"},"Body",":"),e.createElement("div",{className:Bu("card-wrapper")},e.createElement(jA,{theme:"info",type:"container",view:"filled",className:Bu("card")},e.createElement(OA,{variant:"code-2",className:Bu("card-text")},e.createElement("pre",{className:Bu("pre")},i))),e.createElement(eu,{size:16,text:i,className:Bu("clipboard-button")}))),o&&a&&e.createElement("div",null,e.createElement(OA,{variant:"subheader-2",as:"div"},"File from response",":"),e.createElement(OA,{variant:"body-2",as:"div"},e.createElement("a",{href:a,download:o.name,"data-router":"off"},o.name))))},Mu=({message:t})=>e.createElement(Su,null,e.createElement(OA,{variant:"header-1"},"Response error"),e.createElement(jA,{theme:"danger",type:"container",view:"filled",className:Bu("card")},e.createElement(OA,{variant:"code-2",className:Bu("card-text")},t," ",e.createElement("br",null),"Possible Reasons:",e.createElement("ul",{className:Bu("possible-reasons")},Iu.map(((t,n)=>e.createElement("li",{key:n},t))))))),Fu=()=>e.createElement("div",{className:Bu("loader-container")},e.createElement(ou,null)),Ou=e=>{let t=e.headers.get("Content-Disposition");if(t){let e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(t);if(null!==e&&e[1])return e[1].replace(/['"]/g,"")}return"unknown file"};function Nu(e){return mu(this,null,(function*(){let t=e.headers.get("Content-Type")||"";if((e.headers.get("Content-Disposition")||"").includes("attachment"))return{status:e.status,url:e.url,file:{blob:yield e.blob(),name:Ou(e)}};{let n;return n=t.includes("json")?JSON.stringify(yield e.json(),null,2):yield e.text(),{status:e.status,url:e.url,text:n}}}))}var Pu=({request:t})=>{let[n,r]=(0,e.useState)(null),[o,i]=(0,e.useState)(null);return(0,e.useEffect)((()=>{let e=t;return t.then(Nu).then((n=>e===t?r(n):null),(n=>e===t?i(n):null)),()=>{r(null),i(null)}}),[t]),e.createElement(e.Fragment,null,!n&&!o&&e.createElement(Fu,null),n&&e.createElement(Qu,{response:n}),o&&e.createElement(Mu,{message:o.message}))},Ru=t=>{let n=(({headers:e,security:t})=>{let n=e?[...e]:[];return(null==t?void 0:t.find((({type:e})=>"oauth2"===e)))&&n.push({name:"Authorization",schema:{type:"string"},in:"header",required:!0,description:"",example:"Bearer <token>"}),n})(t),r={path:(0,e.useRef)(null),search:(0,e.useRef)(null),headers:(0,e.useRef)(null),body:(0,e.useRef)(null)},[o,i]=(0,e.useState)(null);return e.createElement("form",{onSubmit:e=>mu(void 0,null,(function*(){var n;if(e.preventDefault(),function(e){let t=Object.keys(e).reduce(((t,n)=>{let r=e[n].current;if(!r)return t;let o=r.validate();return o&&(t[n]=o),t}),{});return Object.keys(t).length?t:null}(r))return;let o=function(e){return Object.keys(e).reduce(((t,n)=>{let r=e[n].current;return r&&(t[n]=r.value()),t}),{})}(r),{url:a,headers:c,body:l}=((e,{search:t,headers:n,path:r,body:o})=>{let i=Object.entries(r).reduce(((e,[t,n])=>e.replace(`{${t}}`,encodeURIComponent(n))),e),a=new URLSearchParams;Object.entries(t).forEach((([e,t])=>{a.append(e,t)}));let c=a.toString();return{url:i+(c?"?"+c:""),headers:o?fu(hu({},n),{"Content-Type":"application/json"}):n,body:o?{body:o}:{}}})((null!=(n=t.host)?n:"")+"/"+t.path,o);i(fetch(a,hu({method:t.method,headers:c},l)))})),className:Bu()},e.createElement(Su,null,e.createElement(zu,{ref:r.path,title:"Path params",params:t.pathParams}),e.createElement(zu,{ref:r.search,title:"Query params",params:t.searchParams}),e.createElement(zu,{ref:r.headers,title:"Header params",params:n}),e.createElement(Tu,{ref:r.body,value:t.body}),o&&e.createElement(Pu,{request:o}),e.createElement("div",null,e.createElement(It,{size:"l",view:"action",type:"submit"},"Send"))))},ju=()=>{let[t,n]=(0,e.useState)(null);if((0,e.useEffect)((()=>{n(document.querySelector(".yfm-sandbox-js"))})),!t||!t.dataset.props)return null;try{let n=JSON.parse((e=>xu.call(e,wu,_u))(t.dataset.props));return(0,Qt.createPortal)(e.createElement(Ru,hu({},n)),t)}catch(e){return console.log(e),null}},Lu=n(9447),qu={};qu.styleTagTransform=Ne(),qu.setAttributes=Qe(),qu.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},qu.domAPI=ze(),qu.insertStyleElement=Fe(),Se()(Lu.Z,qu),Lu.Z&&Lu.Z.locals&&Lu.Z.locals;var Uu=n(1333),Vu={};Vu.styleTagTransform=Ne(),Vu.setAttributes=Qe(),Vu.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Vu.domAPI=ze(),Vu.insertStyleElement=Fe(),Se()(Uu.Z,Vu),Uu.Z&&Uu.Z.locals&&Uu.Z.locals;var Wu=n(9438),Gu={};Gu.styleTagTransform=Ne(),Gu.setAttributes=Qe(),Gu.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Gu.domAPI=ze(),Gu.insertStyleElement=Fe(),Se()(Wu.Z,Gu),Wu.Z&&Wu.Z.locals&&Wu.Z.locals;var Yu=n(5342),Hu={};Hu.styleTagTransform=Ne(),Hu.setAttributes=Qe(),Hu.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Hu.domAPI=ze(),Hu.insertStyleElement=Fe(),Se()(Yu.Z,Hu),Yu.Z&&Yu.Z.locals&&Yu.Z.locals;var Zu=n(2429),Ju={};function Ku(t){var n=t.data,r=t.router,i=t.lang,a=function(){var e=EA.theme,t=EA.textSize,n=EA.showMiniToc,r=EA.wideFormat,o=EA.fullScreen,i=_A("theme")||e,a=_A("textSize")||t,c=_A("showMiniToc")||n,l=_A("wideFormat")||r,s=_A("fullScreen")||o;return{theme:i,textSize:a,showMiniToc:kA(c),wideFormat:kA(l),fullScreen:kA(s)}}(),l=c((0,e.useState)("undefined"!=typeof document&&document.body.clientWidth<=900),2),s=l[0],A=l[1],u=c((0,e.useState)(a.wideFormat),2),d=u[0],p=u[1],y=c((0,e.useState)(a.fullScreen),2),g=y[0],h=y[1],f=c((0,e.useState)(a.showMiniToc),2),v=f[0],m=f[1],C=c((0,e.useState)(a.theme),2),b=C[0],x=C[1],w=c((0,e.useState)(a.textSize),2),E=w[0],_=w[1],k={router:r,lang:i,headerHeight:0,wideFormat:d,fullScreen:g,showMiniToc:v,theme:b,textSize:E,onChangeFullScreen:BA("fullScreen",h),onChangeWideFormat:BA("wideFormat",p),onChangeShowMiniToc:BA("showMiniToc",m),onChangeTheme:BA("theme",x),onChangeTextSize:BA("textSize",_)},B=(0,e.useCallback)((function(){A(document.body.clientWidth<=900)}),[]);(0,e.useEffect)((function(){return window.addEventListener("resize",B),function(){return window.removeEventListener("resize",B)}}),[]),(0,e.useEffect)((function(){!function(e){var t="light"===e?"yc-root_theme_light":"yc-root_theme_dark",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1]?"mobile":"";document.body.className="yc-root ".concat(t," ").concat(n)}(b,s)}),[b,s]);var I=function(){const[t,n]=(0,e.useState)(null),r=(0,e.useCallback)(((e,n)=>{return r=this,o=null,i=function*(){if(t)return t.initialize(e),t.run(n)},new Promise(((e,t)=>{var n=e=>{try{c(i.next(e))}catch(e){t(e)}},a=e=>{try{c(i.throw(e))}catch(e){t(e)}},c=t=>t.done?e(t.value):Promise.resolve(t.value).then(n,a);c((i=i.apply(r,o)).next())}));var r,o,i}),[t]);return(0,e.useEffect)((()=>((window.mermaidJsonp=window.mermaidJsonp||[]).push(n),()=>{const e=window.mermaidJsonp.indexOf(n);e>-1&&window.mermaidJsonp.splice(e,1)})),[]),r}();return(0,e.useEffect)((function(){I({theme:b===ne.Dark?"dark":"neutral"})}),[b,I]),e.createElement("div",{className:"App Layout__content"},n.leading?e.createElement(Il,o({},n,k)):e.createElement(wA,o({},n,k)),e.createElement(ju,null))}Ju.styleTagTransform=Ne(),Ju.setAttributes=Qe(),Ju.insert=function(e){const t=document.querySelector("head"),n=document.querySelector("#custom-style"),r=window._lastElementInsertedByStyleLoader;r?r.nextSibling?t.insertBefore(e,r.nextSibling):t.appendChild(e):t.insertBefore(e,n),window._lastElementInsertedByStyleLoader=e},Ju.domAPI=ze(),Ju.insertStyleElement=Fe(),Se()(Zu.Z,Ju),Zu.Z&&Zu.Z.locals&&Zu.Z.locals;var Xu=document.getElementById("root"),$u=window.__DATA__||{};if(!Xu)throw new Error("Root element not found!");window.STATIC_CONTENT?(0,t.a)(Xu,e.createElement(Ku,$u)):(0,t.s)(Xu).render(e.createElement(Ku,$u))})()})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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S0FBTyxVQUFXLE1BQVEsV0FBWSxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUN4RixDQUFDLEtBQU8sU0FBVSxNQUFRLFlBQWEsRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDeEYsQ0FBQyxLQUFPLFlBQWEsTUFBUSxZQUFhLEVBQUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJLE9BQzNGLENBQUMsS0FBTyxVQUFXLE1BQVEsYUFBYyxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUMxRixDQUFDLEtBQU8sVUFBVyxNQUFRLFNBQVUsRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDdEYsQ0FBQyxLQUFPLFdBQVksTUFBUSxVQUFXLEVBQUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJLE9BQ3hGLENBQUMsS0FBTyxVQUFXLE1BQVEsVUFBVyxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUN2RixDQUFDLEtBQU8sV0FBWSxNQUFRLFdBQVksRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDekYsQ0FBQyxLQUFPLFVBQVcsTUFBUSxLQUFNLEVBQUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJLE9BQ2xGLENBQUMsS0FBTyxVQUFXLE1BQVEsVUFBVyxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUN2RixDQUFDLEtBQU8sVUFBVyxNQUFRLFdBQVksRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDeEYsQ0FBQyxLQUFPLFdBQVksTUFBUSxRQUFTLEVBQUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJ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QUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJLE9BQy9FLENBQUMsS0FBTyxZQUFhLE1BQVEsV0FBWSxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUMxRixDQUFDLEtBQU8sVUFBVyxNQUFRLFdBQVksRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDeEYsQ0FBQyxLQUFPLFlBQWEsTUFBUSxTQUFVLEVBQUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJLE9BQ3hGLENBQUMsS0FBTyxXQUFZLE1BQVEsTUFBTyxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUNwRixDQUFDLEtBQU8sV0FBWSxNQUFRLFlBQWEsRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDMUYsQ0FBQyxLQUFPLGNBQWUsTUFBUSxjQUFlLEVBQUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJLE9BQy9GLENBQUMsS0FBTyxVQUFXLE1BQVEsUUFBUyxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUNyRixDQUFDLEtBQU8sU0FBVSxNQUFRLFNBQVUsRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDckYsQ0FBQyxLQUFPLFdBQVksTUFBUSxTQUFVLEVBQUksS0FBTSxFQUFJLE1BQU8sS0FBSyxNQUFPLEtBQUssTUFBTyxFQUFJLE9BQ3ZGLENBQUMsS0FBTyxTQUFVLE1BQVEsVUFBVyxFQUFJLEtBQU0sRUFBSSxNQUFPLEtBQUssTUFBTyxLQUFLLE1BQU8sRUFBSSxPQUN0RixDQUFDLEtBQU8sUUFBUyxNQUFRLFlBQWEsRUFBSSxLQUFNLEVBQUksTUFBTyxLQUFLLE1BQU8sS0FBSyxNQUFPLEVBQUksT0FDdkYsQ0FBQyxLQUFPLFNBQVUs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LEVBQVEsSUFDMUUsRUFBUSxJQUFNLEVBQVEsSUFBSyxFQUFRLElBQUssRUFBUSxJQUNoRCxFQUFRLElBQU0sRUFBUSxJQUFLLEVBQVEsSUFBSyxFQUFRLElBQ2hELEVBQVEsSUFBTSxFQUFRLElBQUssRUFBUSxJQUNuQyxFQUFRLEtBQU0sRUFBUSxLQUN0QixFQUFRLEtBQU0sRUFBUSxLQUN0QixFQUFRLEtBRVIsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQ3pDLEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUN6QyxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3hELEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFDeEQsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN4RCxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN2RSxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN2RSxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3hELEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFDeEQsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN4RCxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN2RSxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN2RSxFQUFVLElBQU0sRUFBVSxJQUMxQixFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFDekMsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFDdkUsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFDdkUsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN4RCxFQUFVLElBQU0sRUFBVSxJ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anhDLEVBQUtpTSxRQUNBbXRKLEVBQUFBLGNBQUNDLEdBQWNDLEVBQUEsR0FBS3Q1SixFQUFVazRKLElBRTlCa0IsRUFBQUEsY0FBQ0csR0FBT0QsRUFBQSxHQUFLdDVKLEVBQVVrNEosSUFFN0JrQixFQUFBQSxjQUFDSSxHQUFjLE1BRzNCLENEdEZBLEdBQVF2MEUsa0JBQW9CLEtBQzVCLEdBQVFMLGNBQWdCLEtBQ3hCLEdBQVFFLE9BQVMsU0FBd0JwdkYsR0FFTCxNQUFNZ0IsRUFBU3pDLFNBQVMyQyxjQUFjLFFBQ2hDdkIsRUFBU3BCLFNBQVMyQyxjQUFjLGlCQUVoQ3VyRyxFQUNGeGxHLE9BQU95bEcsa0NBRU5ELEVBRU1BLEVBQW9CN3ZELFlBQzNCNTdDLEVBQU95Z0YsYUFDSHpoRixFQUNBeXNHLEVBQW9CN3ZELGFBR3hCNTdDLEVBQU84RyxZQUFZOUgsR0FQbkJnQixFQUFPeWdGLGFBQWF6aEYsRUFBU0wsR0FVakNzSCxPQUFPeWxHLGtDQUFvQzFzRyxDQUMvQyxFQUNoQyxHQUFRNHVGLE9BQVMsS0FDakIsR0FBUVUsbUJBQXFCLEtBRWhCLEtBQUksS0FBUyxJQUtKLE1BQVcsYUFBaUIsWUc5QjlDLElBQU05eEYsR0FBT2UsU0FBU2lFLGVBQWUsUUFDL0I0Z0IsR0FBU25jLE9BQWU4OEosVUFBWSxDQUFDLEVBRTNDLElBQUt2bUssR0FDRCxNQUFNLElBQUk0UCxNQUFNLDJCQUdoQm5HLE9BQU8rOEosZ0JBQ1AzNUUsRUFBQUEsRUFBQUEsR0FBWTdzRixHQUFNa21LLEVBQUFBLGNBQUNwQyxHQUFTbCtJLE1BRTVCNG1FLEVBQUFBLEVBQUFBLEdBQVd4c0YsSUFBTTBzRCxPQUFPdzVHLEVBQUFBLGNBQUNwQyxHQUFTbCtJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL3RyYW5zZm9ybS9kaXN0L2pzL3lmbS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L25vZGVfbW9kdWxlcy9iZW0tY24tbGl0ZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL3NyYy9pbnRlcmNlcHRvcnMvbGVhZGluZy1wYWdlLWxpbmtzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvYmVtLWNuLWxpdGUvbGliL2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvYmVtLWNuL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2NvcHktdG8tY2xpcGJvYXJkL2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRpcGxvZG9jL29wZW5hcGktZXh0ZW5zaW9uL3J1bnRpbWUvaW5kZXgubWluLmNzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0Jvb2ttYXJrQnV0dG9uL0Jvb2ttYXJrQnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9CcmVhZGNydW1icy9CcmVhZGNydW1icy5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJpYnV0b3JBdmF0YXJzL0NvbnRyaWJ1dG9yQXZhdGFycy5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJpYnV0b3JzL0NvbnRyaWJ1dG9ycy5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbC9Db250cm9sLnNjc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cm9scy9Db250cm9scy5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL0RpdmlkZXJDb250cm9sL0RpdmlkZXJDb250cm9sLnNjc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cm9scy9zaW5nbGUtY29udHJvbHMvU2V0dGluZ3NDb250cm9sL1NldHRpbmdzQ29udHJvbC5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jTGF5b3V0L0RvY0xheW91dC5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jTGVhZGluZ1BhZ2UvRG9jTGVhZGluZ1BhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0RvY1BhZ2UvRG9jUGFnZS5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jUGFnZVRpdGxlL0RvY1BhZ2VUaXRsZS5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRWRpdEJ1dHRvbi9FZGl0QnV0dG9uLnNjc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9GZWVkYmFjay9GZWVkYmFjay5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvTWFyay9NYXJrLnNjc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9NaW5pVG9jL01pbmlUb2Muc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1NlYXJjaEJhci9TZWFyY2hCYXIuc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1N1YnNjcmliZS9TdWJzY3JpYmUuc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvYy9Ub2Muc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvY0l0ZW0vVG9jSXRlbS5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvVG9jTmF2UGFuZWwvVG9jTmF2UGFuZWwuc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvZ2dsZUFycm93L1RvZ2dsZUFycm93LnNjc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvc3R5bGVzL2RlZmF1bHQuc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvdGhlbWVzLnNjc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvc3R5bGVzL3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvdHJhbnNmb3JtL2Rpc3QvY3NzL3lmbS5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9CdXR0b24vQnV0dG9uLmNzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NhcmQvQ2FyZC5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveC5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9DbGlwYm9hcmRCdXR0b24vQ2xpcGJvYXJkQnV0dG9uLmNzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NsaXBib2FyZEljb24vQ2xpcGJvYXJkSWNvbi5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9Db250cm9sTGFiZWwvQ29udHJvbExhYmVsLmNzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0ljb24vSWNvbi5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9MaXN0L0xpc3QuY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvTG9hZGVyL0xvYWRlci5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9Qb3B1cC9Qb3B1cC5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9Td2l0Y2gvU3dpdGNoLmNzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1RleHQvY29sb3JUZXh0L2NvbG9yVGV4dC5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9UZXh0L3RleHQvdGV4dC5jc3MiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9UZXh0SW5wdXQvVGV4dElucHV0LmNzcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vc3JjL2NvbXBvbmVudHMvQXBwL0FwcC5zY3NzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2ludmFyaWFudC9icm93c2VyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbGFuZ3MvZGF0YS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2xhbmdzL2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRUYWcuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5nZS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRyaW0uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJhbmdlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSW5kZXguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fcm9vdC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdHJpbW1lZEVuZEluZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2RlYm91bmNlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNMZW5ndGguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xvZGFzaC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9ub3cuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcmFuZ2UuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdGhyb3R0bGUuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9GaW5pdGUuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9tYXJrLnRzL2J1aWxkL2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy9kZWNvZGUuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy9lbmNvZGUuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvcHktdG8tY2xpcGJvYXJkL2xpYi9Db21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb3B5LXRvLWNsaXBib2FyZC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS1zZXJ2ZXItbGVnYWN5LmJyb3dzZXIucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS1zZXJ2ZXIuYnJvd3Nlci5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2NsaWVudC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9zZXJ2ZXIuYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LWZhc3QtY29tcGFyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0L2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3RvZ2dsZS1zZWxlY3Rpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy91cmwvbm9kZV9tb2R1bGVzL3B1bnljb2RlL3B1bnljb2RlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvdXJsL3VybC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3VybC91dGlsLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC93ZWJwYWNrL3J1bnRpbWUvYW1kIG9wdGlvbnMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50L3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvd2VicGFjay9ydW50aW1lL25vZGUgbW9kdWxlIGRlY29yYXRvciIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50L3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5TGlrZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2dldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL2kxOG5leHQvZGlzdC9lc20vaTE4bmV4dC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LWkxOG5leHQvZGlzdC9lcy9jb250ZXh0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL21vZGVscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9pMThuL2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9jaGV2cm9uLnN2ZyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvZ2dsZUFycm93L1RvZ2dsZUFycm93LnNjc3M/YTg3OSIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvZ2dsZUFycm93L1RvZ2dsZUFycm93LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvVG9jSXRlbS9Ub2NJdGVtLnNjc3M/YTY2MyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvY0l0ZW0vVG9jSXRlbS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0hUTUwvSFRNTC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pMThuZXh0L2Rpc3QvZXMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pMThuZXh0L2Rpc3QvZXMvdXNlVHJhbnNsYXRpb24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pMThuZXh0L2Rpc3QvZXMvd2l0aFRyYW5zbGF0aW9uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy91dGlscy9jbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL3V0aWxzL2lzT2ZUeXBlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvZXZlbnQtYnJva2VyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbkljb24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy91dGlscy9zdmcuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9JY29uL3V0aWxzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvSWNvbi9JY29uLmNzcz8xNDM0Iiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvSWNvbi9JY29uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvY29tbW9uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5jc3M/NGNiNyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL3JlbW92ZUNsYXNzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vY29uZmlnLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL3V0aWxzL3JlZmxvdy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS9DU1NUcmFuc2l0aW9uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2FkZENsYXNzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvZG9tLWhlbHBlcnMvZXNtL2hhc0NsYXNzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvdHJhbnNpdGlvbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL3V0aWxzL1BvcnRhbFByb3ZpZGVyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvUG9ydGFsL1BvcnRhbC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL3V0aWxzL3VzZVBvcnRhbENvbnRhaW5lci5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL3V0aWxzL0xheWVyTWFuYWdlci5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdXNlckFnZW50LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc0xheW91dFZpZXdwb3J0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRQYXJlbnROb2RlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2VudW1zLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZUJ5TmFtZS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENsaXBwaW5nUmVjdC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LXBvcHBlci9saWIvZXNtL3V0aWxzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvcmVhY3QtcG9wcGVyL2xpYi9lc20vdXNlUG9wcGVyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvdXNlUG9wcGVyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvc2V0UmVmLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvdXNlRm9ya1JlZi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3RhYmJhYmxlL2Rpc3QvaW5kZXguZXNtLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvUG9wdXAvUG9wdXAuY3NzP2FjODQiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9Qb3B1cC9Qb3B1cEFycm93LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvdXNlVW5pcUlkLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvRm9jdXNUcmFwLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvUG9wdXAvUG9wdXAuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy91dGlscy91c2VMYXllci5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL3V0aWxzL3VzZVJlc3RvcmVGb2N1cy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9ob29rcy91c2VQb3BwZXIuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cm9sL0NvbnRyb2wuc2Nzcz84ZDc3Iiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbC9Db250cm9sLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvQ29udHJvbExhYmVsL0NvbnRyb2xMYWJlbC5jc3M/OWQ2NCIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NvbnRyb2xMYWJlbC9Db250cm9sTGFiZWwuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy91dGlscy91c2VDaGVja2JveC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94VGlja0ljb24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveERhc2hJY29uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvQ2hlY2tib3gvQ2hlY2tib3guY3NzPzZhY2EiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3Jlc2l6ZS1vYnNlcnZlci1wb2x5ZmlsbC9kaXN0L1Jlc2l6ZU9ic2VydmVyLmVzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvdXRpbHMvdXNlRWxlbWVudFNpemUuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9UZXh0SW5wdXQvSW5wdXRDb250cm9sL0lucHV0Q29udHJvbC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0QXJlYUNvbnRyb2wvVGV4dEFyZWFDb250cm9sLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvaWNvbnMvQ3Jvc3NJY29uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvaTE4bi9idWlsZC9lc20vcmVwbGFjZS1wYXJhbXMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS9pMThuL2J1aWxkL2VzbS90eXBlcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL3V0aWxzL2NvbmZpZ3VyZS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL2kxOG4vYnVpbGQvZXNtL3BsdXJhbC9lbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL2kxOG4vYnVpbGQvZXNtL3BsdXJhbC9ydS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9pMThuLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvaTE4bi9idWlsZC9lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9UZXh0SW5wdXQvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL3V0aWxzL3JlZ2lzdGVyS2V5c2V0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvVGV4dElucHV0L0NsZWFyQWN0aW9uL0NsZWFyQWN0aW9uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvVGV4dElucHV0L0FkZGl0aW9uYWxDb250ZW50L0FkZGl0aW9uYWxDb250ZW50LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvVGV4dElucHV0L1RleHRJbnB1dC5jc3M/MzNhOSIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0SW5wdXQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29uc3RhbnRzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9saWtlLnN2ZyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9hc3NldHMvaWNvbnMvZGlzbGlrZS5zdmciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9GZWVkYmFjay9GZWVkYmFjay5zY3NzPzAyYzciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9GZWVkYmFjay9GZWVkYmFjay5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9ob29rcy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvU3Vic2NyaWJlL3V0aWxzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvU3Vic2NyaWJlL1N1YnNjcmliZVN1Y2Nlc3NQb3B1cC9TdWJzY3JpYmVTdWNjZXNzUG9wdXAuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvaG9va3MvdXNlVGltZW91dC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LXZpcnR1YWxpemVkLWF1dG8tc2l6ZXIvZGlzdC9pbmRleC5lc20uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9tZW1vaXplLW9uZS9kaXN0L21lbW9pemUtb25lLmVzbS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LXdpbmRvdy9kaXN0L2luZGV4LmVzbS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL3JlYWN0LXNvcnRhYmxlLWhvYy9kaXN0L3JlYWN0LXNvcnRhYmxlLWhvYy5lc20uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vbm9uSXRlcmFibGVTcHJlYWQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9tb2JpbGUvY29uc3RhbnRzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvbW9iaWxlL01vYmlsZUNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9MaXN0L2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0xpc3QvY29tcG9uZW50cy9EcmFnSGFuZGxlSWNvbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0xpc3QvY29tcG9uZW50cy9MaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0xpc3QvY29tcG9uZW50cy9TaW1wbGVDb250YWluZXIuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9MaXN0L0xpc3QuY3NzPzcyMjciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9MaXN0L0xpc3QuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9TdWJzY3JpYmUvU3Vic2NyaWJlVmFyaWFudHNQb3B1cC9TdWJzY3JpYmVWYXJpYW50c1BvcHVwLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9zdWJzY3JpYmUuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvU3Vic2NyaWJlL1N1YnNjcmliZS5zY3NzP2RlYTciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9TdWJzY3JpYmUvU3Vic2NyaWJlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL0RpdmlkZXJDb250cm9sL0RpdmlkZXJDb250cm9sLnNjc3M/ZmM5ZiIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyb2xzL3NpbmdsZS1jb250cm9scy9EaXZpZGVyQ29udHJvbC9EaXZpZGVyQ29udHJvbC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9hc3NldHMvaWNvbnMvZnVsbC1zY3JlZW4tY2xpY2tlZC5zdmciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYXNzZXRzL2ljb25zL2Z1bGwtc2NyZWVuLnN2ZyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyb2xzL3NpbmdsZS1jb250cm9scy9GdWxsU2NyZWVuQ29udHJvbC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1N3aXRjaC9Td2l0Y2guY3NzP2FhMDMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9Td2l0Y2gvU3dpdGNoLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9jb2cuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL3V0aWxzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL1NldHRpbmdzQ29udHJvbC9TZXR0aW5nc0NvbnRyb2wuc2Nzcz83M2M5Iiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL1NldHRpbmdzQ29udHJvbC9TZXR0aW5nc0NvbnRyb2wuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYXNzZXRzL2ljb25zL2xhbmcuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9ydXMuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9lbmcuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvQ29udHJvbHMuc2Nzcz85YWY3Iiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL0xhbmdDb250cm9sLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9zaW5nbGUtcGFnZS5zdmciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYXNzZXRzL2ljb25zL3NpbmdsZS1wYWdlLWNsaWNrZWQuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL1NpbmdsZVBhZ2VDb250cm9sLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9wZGYuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL1BkZkNvbnRyb2wuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYXNzZXRzL2ljb25zL2VkaXQuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvQ29udHJvbHMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Ub2MvVG9jSXRlbVJlZ2lzdHJ5LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvVG9jL1RvYy5zY3NzP2RmMWIiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Ub2MvVG9jLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jTGF5b3V0L0RvY0xheW91dC5zY3NzP2EwYTUiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Eb2NMYXlvdXQvRG9jTGF5b3V0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvTWFyay9NYXJrLnNjc3M/MWIwOCIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL01hcmsvTWFyay5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1N0YWdlTGFiZWwvU3RhZ2VMYWJlbC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9hc3NldHMvaWNvbnMvc3Rhci1hY3RpdmUuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9zdGFyLWluYWN0aXZlLnN2ZyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0Jvb2ttYXJrQnV0dG9uL0Jvb2ttYXJrQnV0dG9uLnNjc3M/OTMwZiIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0Jvb2ttYXJrQnV0dG9uL0Jvb2ttYXJrQnV0dG9uLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jUGFnZVRpdGxlL0RvY1BhZ2VUaXRsZS5zY3NzP2FkNzciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Eb2NQYWdlVGl0bGUvRG9jUGFnZVRpdGxlLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvVGV4dC9UZXh0LmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jTGVhZGluZ1BhZ2UvRG9jTGVhZGluZ1BhZ2Uuc2Nzcz8xZWJhIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jTGVhZGluZ1BhZ2UvRG9jTGVhZGluZ1BhZ2UuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9jb21wdXRlLXNjcm9sbC1pbnRvLXZpZXcvZGlzdC9pbmRleC5tanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9zY3JvbGwtaW50by12aWV3LWlmLW5lZWRlZC9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1Njcm9sbHNweS9TY3JvbGxzcHkuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9NaW5pVG9jL01pbmlUb2Muc2Nzcz8zNGMwIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvTWluaVRvYy9NaW5pVG9jLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQnJlYWRjcnVtYnMvQnJlYWRjcnVtYnMuc2Nzcz9kZjFiIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQnJlYWRjcnVtYnMvQnJlYWRjcnVtYnMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYXNzZXRzL2ljb25zL2Fycm93LWxlZnQuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Ub2NOYXZQYW5lbC9Ub2NOYXZQYW5lbC5zY3NzP2Y3YmMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Ub2NOYXZQYW5lbC9Ub2NOYXZQYW5lbC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0VkaXRCdXR0b24vRWRpdEJ1dHRvbi5zY3NzP2UzMGUiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9FZGl0QnV0dG9uL0VkaXRCdXR0b24uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9ob3RrZXlzLWpzL2Rpc3QvaG90a2V5cy5lc20uanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9yZWFjdC1ob3RrZXlzLWhvb2svZGlzdC9yZWFjdC1ob3RrZXlzLWhvb2suZXNtLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2Fzc2V0cy9pY29ucy9jbG9zZS5zdmciLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYXNzZXRzL2ljb25zL3NlYXJjaC1iYXItYXJyb3cuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvU2VhcmNoQmFyL1NlYXJjaEJhci5zY3NzPzhiZjEiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9TZWFyY2hCYXIvU2VhcmNoQmFyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvU2VhcmNoQmFyL3V0aWxzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvU2VhcmNoQmFyL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyaWJ1dG9yQXZhdGFycy91dGlscy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyaWJ1dG9yQXZhdGFycy9tb2RlbHMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cmlidXRvckF2YXRhcnMvQ29udHJpYnV0b3JBdmF0YXJzLnNjc3M/NTRjYSIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyaWJ1dG9yQXZhdGFycy9BdmF0YXJzL0F2YXRhci5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0xpbmsuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cmlidXRvckF2YXRhcnMvQXZhdGFycy9EZXRhaWxzLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJpYnV0b3JBdmF0YXJzL0F2YXRhcnMvSGlkZGVuQXZhdGFycy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyaWJ1dG9yQXZhdGFycy9BdmF0YXJzL0F2YXRhcldpdGhEZXNjcmlwdGlvbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyaWJ1dG9yQXZhdGFycy9Db250cmlidXRvckF2YXRhcnMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cmlidXRvcnMvQ29udHJpYnV0b3JzLnNjc3M/ODdiMCIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0NvbnRyaWJ1dG9ycy9Db250cmlidXRvcnMuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYXNzZXRzL2ljb25zL2xpbmsuc3ZnIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy90cmFuc2Zvcm0vZGlzdC9jc3MveWZtLmNzcz9kZDYyIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRG9jUGFnZS9Eb2NQYWdlLnNjc3M/OGE1MiIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0RvY1BhZ2UvRG9jUGFnZS5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1NlYXJjaEJhci93aXRoSGlnaGxpZ2h0ZWRTZWFyY2hXb3Jkcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1NlYXJjaEJhci9ob29rcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vc3JjL3V0aWxzLnRzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvVGV4dC90ZXh0L3RleHQuY3NzP2UyMmUiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9UZXh0L3RleHQvdGV4dC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1RleHQvY29sb3JUZXh0L2NvbG9yVGV4dC5jc3M/YzQ0NiIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1RleHQvY29sb3JUZXh0L2NvbG9yVGV4dC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1RleHQvVGV4dC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NhcmQvQ2FyZC5jc3M/NDdmYSIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NhcmQvQ2FyZC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NvcHlUb0NsaXBib2FyZC90eXBlcy5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NsaXBib2FyZEljb24vQ2xpcGJvYXJkSWNvbi5jc3M/YWE2MyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NsaXBib2FyZEljb24vQ2xpcGJvYXJkSWNvbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NvcHlUb0NsaXBib2FyZC9Db3B5VG9DbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9DbGlwYm9hcmRCdXR0b24vQ2xpcGJvYXJkQnV0dG9uLmNzcz8wOTk0Iiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkQnV0dG9uL0NsaXBib2FyZEJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0xvYWRlci9Mb2FkZXIuY3NzPzE0ODUiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9Mb2FkZXIvTG9hZGVyLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRpcGxvZG9jL29wZW5hcGktZXh0ZW5zaW9uL3J1bnRpbWUvaW5kZXgubWluLmpzIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRpcGxvZG9jL29wZW5hcGktZXh0ZW5zaW9uL3J1bnRpbWUvaW5kZXgubWluLmNzcz8xNGNiIiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy90aGVtZXMuc2Nzcz81ZDE2Iiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy9kZWZhdWx0LnNjc3M/NjI3NSIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvdHlwb2dyYXBoeS5zY3NzPzU4MWYiLCJ3ZWJwYWNrOi8vQGRpcGxvZG9jL2NsaWVudC8uL3NyYy9jb21wb25lbnRzL0FwcC9BcHAuc2Nzcz83NTc0Iiwid2VicGFjazovL0BkaXBsb2RvYy9jbGllbnQvLi9zcmMvY29tcG9uZW50cy9BcHAvQXBwLnRzeCIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vbm9kZV9tb2R1bGVzL0BkaXBsb2RvYy9tZXJtYWlkLWV4dGVuc2lvbi9ob29rcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9AZGlwbG9kb2MvY2xpZW50Ly4vc3JjL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDpcbiAgZmFjdG9yeSgpO1xufSkoKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBnZXRSb290Tm9kZVBvbHlmaWxsID0ge2V4cG9ydHM6IHt9fTtcblxuICAoZnVuY3Rpb24gKG1vZHVsZSkge1xuXG4gIFx0Ly8gTm9kZSBnZXRSb290Tm9kZShvcHRpb25hbCBHZXRSb290Tm9kZU9wdGlvbnMgb3B0aW9ucyk7XG5cbiAgXHQvKipcbiAgXHQgKiBSZXR1cm5zIHRoZSBjb250ZXh0IG9iamVjdOKAmXMgc2hhZG93LWluY2x1ZGluZyByb290IGlmIG9wdGlvbnPigJlzIGNvbXBvc2VkIGlzIHRydWUuXG4gIFx0ICogUmV0dXJucyB0aGUgY29udGV4dCBvYmplY3TigJlzIHJvb3Qgb3RoZXJ3aXNlLlxuICBcdCAqXG4gIFx0ICogVGhlIHJvb3Qgb2YgYW4gb2JqZWN0IGlzIGl0c2VsZiwgaWYgaXRzIHBhcmVudCBpcyBudWxsLCBvciBlbHNlIGl0IGlzIHRoZSByb290IG9mIGl0cyBwYXJlbnQuXG4gIFx0ICpcbiAgXHQgKiBUaGUgc2hhZG93LWluY2x1ZGluZyByb290IG9mIGFuIG9iamVjdCBpcyBpdHMgcm9vdOKAmXMgaG9zdOKAmXMgc2hhZG93LWluY2x1ZGluZyByb290LFxuICBcdCAqIGlmIHRoZSBvYmplY3TigJlzIHJvb3QgaXMgYSBzaGFkb3cgcm9vdCwgYW5kIGl0cyByb290IG90aGVyd2lzZS5cbiAgXHQgKlxuICBcdCAqIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9tLW5vZGUtZ2V0cm9vdG5vZGVcbiAgXHQgKlxuICBcdCAqIEBtZW1iZXJvZiBOb2RlLnByb3RvdHlwZVxuICBcdCAqIEBwYXJhbSB7IU9iamVjdH0gW29wdCA9IHt9XSAtIE9wdGlvbnMuXG4gIFx0ICogQHBhcmFtIHshYm9vbGVhbn0gW29wdC5jb21wb3NlZF0gLSBTZWUgYWJvdmUgZGVzY3JpcHRpb24uXG4gIFx0ICogQHJldHVybnMgeyFOb2RlfSBUaGUgcm9vdCBub2RlLlxuICBcdCAqL1xuICBcdGZ1bmN0aW9uIGdldFJvb3ROb2RlKG9wdCkge1xuICBcdCAgdmFyIGNvbXBvc2VkID0gdHlwZW9mIG9wdCA9PT0gJ29iamVjdCcgJiYgQm9vbGVhbihvcHQuY29tcG9zZWQpO1xuXG4gIFx0ICByZXR1cm4gY29tcG9zZWQgPyBnZXRTaGFkb3dJbmNsdWRpbmdSb290KHRoaXMpIDogZ2V0Um9vdCh0aGlzKTtcbiAgXHR9XG5cbiAgXHRmdW5jdGlvbiBnZXRTaGFkb3dJbmNsdWRpbmdSb290KG5vZGUpIHtcbiAgXHQgIHZhciByb290ID0gZ2V0Um9vdChub2RlKTtcblxuICBcdCAgaWYgKGlzU2hhZG93Um9vdChyb290KSkge1xuICBcdCAgICByZXR1cm4gZ2V0U2hhZG93SW5jbHVkaW5nUm9vdChyb290Lmhvc3QpO1xuICBcdCAgfVxuXG4gIFx0ICByZXR1cm4gcm9vdDtcbiAgXHR9XG5cbiAgXHRmdW5jdGlvbiBnZXRSb290KG5vZGUpIHtcbiAgXHQgIGlmIChub2RlLnBhcmVudE5vZGUgIT0gbnVsbCkge1xuICBcdCAgICByZXR1cm4gZ2V0Um9vdChub2RlLnBhcmVudE5vZGUpO1xuICBcdCAgfVxuXG4gIFx0ICByZXR1cm4gbm9kZTtcbiAgXHR9XG5cbiAgXHRmdW5jdGlvbiBpc1NoYWRvd1Jvb3Qobm9kZSkge1xuICBcdCAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjZG9jdW1lbnQtZnJhZ21lbnQnICYmIG5vZGUuY29uc3RydWN0b3IubmFtZSA9PT0gJ1NoYWRvd1Jvb3QnO1xuICBcdH1cblxuICBcdGlmIChtb2R1bGUuZXhwb3J0cykge1xuICBcdCAgbW9kdWxlLmV4cG9ydHMgPSBnZXRSb290Tm9kZTtcbiAgXHR9XG4gIH0gKGdldFJvb3ROb2RlUG9seWZpbGwpKTtcblxuICB2YXIgZ2V0Um9vdE5vZGUgPSBnZXRSb290Tm9kZVBvbHlmaWxsLmV4cG9ydHM7XG5cbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBtYXRjaGVzIHBvbHlmaWxsIGZvciBvbGQgZWRnZVxuICAgIChmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIG1hdGNoZXMgPSBlLm1hdGNoZXMgfHwgZS5tYXRjaGVzU2VsZWN0b3IgfHwgZS53ZWJraXRNYXRjaGVzU2VsZWN0b3IgfHwgZS5tb3pNYXRjaGVzU2VsZWN0b3IgfHwgZS5tc01hdGNoZXNTZWxlY3RvciB8fCBlLm9NYXRjaGVzU2VsZWN0b3I7XG5cbiAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgIGUubWF0Y2hlcyA9IGUubWF0Y2hlc1NlbGVjdG9yID0gbWF0Y2hlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGUubWF0Y2hlcyA9IGUubWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24gbWF0Y2hlcyhzZWxlY3Rvcikge1xuICAgICAgICAgIHZhciByb290Tm9kZSA9IGUuZ2V0Um9vdE5vZGUgPyBlLmdldFJvb3ROb2RlKCkgOiBnZXRSb290Tm9kZS5jYWxsKGUpO1xuICAgICAgICAgIHZhciBtYXRjaGVzID0gcm9vdE5vZGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gICAgICAgICAgdmFyIHRoID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChtYXRjaGVzLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGUgPT09IHRoO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pKEVsZW1lbnQucHJvdG90eXBlKTtcbiAgfVxuXG4gIGNvbnN0IGdldEV2ZW50VGFyZ2V0ID0gKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBwYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKCk7XG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXRoKSAmJiBwYXRoLmxlbmd0aCA+IDAgPyBwYXRoWzBdIDogZXZlbnQudGFyZ2V0O1xuICB9O1xuICBjb25zdCBpc0N1c3RvbSA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICAgICAgcmV0dXJuICF0YXJnZXQgfHwgIXRhcmdldC5tYXRjaGVzO1xuICB9O1xuXG4gIGNvbnN0IFNlbGVjdG9yJDIgPSB7XG4gICAgICBUQUJTOiAnLnlmbSAueWZtLXRhYnMnLFxuICAgICAgVEFCX0xJU1Q6ICcueWZtIC55Zm0tdGFiLWxpc3QnLFxuICAgICAgVEFCOiAnLnlmbSAueWZtLXRhYicsXG4gICAgICBUQUJfUEFORUw6ICcueWZtIC55Zm0tdGFiLXBhbmVsJyxcbiAgfTtcbiAgY29uc3QgQ2xhc3NOYW1lJDEgPSB7XG4gICAgICBBQ1RJVkU6ICdhY3RpdmUnLFxuICB9O1xuICBmdW5jdGlvbiBzZWxlY3RUYWIoZWxlbWVudCkge1xuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgIGlmICghcGFyZW50Tm9kZSB8fFxuICAgICAgICAgICFwYXJlbnROb2RlLm1hdGNoZXMoU2VsZWN0b3IkMi5UQUJfTElTVCkgfHxcbiAgICAgICAgICAhcGFyZW50Tm9kZS5wYXJlbnROb2RlIHx8XG4gICAgICAgICAgIXBhcmVudE5vZGUucGFyZW50Tm9kZS5tYXRjaGVzKFNlbGVjdG9yJDIuVEFCUykgfHxcbiAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDbGFzc05hbWUkMS5BQ1RJVkUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFiID0gZWxlbWVudDtcbiAgICAgIGNvbnN0IHRhYkxpc3QgPSB0YWIucGFyZW50Tm9kZTtcbiAgICAgIGNvbnN0IHRhYnNDb250YWluZXIgPSB0YWJMaXN0ID09PSBudWxsIHx8IHRhYkxpc3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYkxpc3QucGFyZW50Tm9kZTtcbiAgICAgIGNvbnN0IGFsbFRhYnMgPSBBcnJheS5mcm9tKCh0YWJzQ29udGFpbmVyID09PSBudWxsIHx8IHRhYnNDb250YWluZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHRhYnNDb250YWluZXIucXVlcnlTZWxlY3RvckFsbChTZWxlY3RvciQyLlRBQikpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGFsbFBhbmVscyA9IEFycmF5LmZyb20oKHRhYnNDb250YWluZXIgPT09IG51bGwgfHwgdGFic0NvbnRhaW5lciA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFic0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFNlbGVjdG9yJDIuVEFCX1BBTkVMKSkgfHwgW10pO1xuICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBhbGxUYWJzLmluZGV4T2YodGFiKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsVGFicy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGFsbFRhYnNbaV07XG4gICAgICAgICAgY29uc3QgcGFuZWwgPSBhbGxQYW5lbHNbaV07XG4gICAgICAgICAgaWYgKGkgPT09IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgICAgIHRhYi5jbGFzc0xpc3QudG9nZ2xlKENsYXNzTmFtZSQxLkFDVElWRSwgdHJ1ZSk7XG4gICAgICAgICAgICAgIHRhYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICB0YWIuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJyk7XG4gICAgICAgICAgICAgIHBhbmVsLmNsYXNzTGlzdC50b2dnbGUoQ2xhc3NOYW1lJDEuQUNUSVZFLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHRhYi5jbGFzc0xpc3QudG9nZ2xlKENsYXNzTmFtZSQxLkFDVElWRSwgZmFsc2UpO1xuICAgICAgICAgICAgICB0YWIuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgIHRhYi5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgICAgICAgICAgIHBhbmVsLmNsYXNzTGlzdC50b2dnbGUoQ2xhc3NOYW1lJDEuQUNUSVZFLCBmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICB9XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KGV2ZW50KTtcbiAgICAgICAgICBpZiAoaXNDdXN0b20oZXZlbnQpIHx8ICF0YXJnZXQubWF0Y2hlcyhTZWxlY3RvciQyLlRBQikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZWxlY3RUYWIodGFyZ2V0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY29uc3QgQlVUVE9OX1NFTEVDVE9SID0gJy55Zm0tY2xpcGJvYXJkLWJ1dHRvbic7XG4gIGZ1bmN0aW9uIGNvcHlUb0NsaXBib2FyZCh0ZXh0KSB7XG4gICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9XG4gICAgICBpZiAobmF2aWdhdG9yLmNsaXBib2FyZCAmJiB0eXBlb2YgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQpIHtcbiAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XG4gICAgICB0ZXh0YXJlYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTAwMCUnKTtcbiAgICAgIHRleHRhcmVhLnRleHRDb250ZW50ID0gdGV4dDtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHRleHRhcmVhKTtcbiAgICAgIHRleHRhcmVhLnNlbGVjdCgpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dGFyZWEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIGZ1bmN0aW9uIG5vdGlmeVN1Y2Nlc3Moc3ZnQnV0dG9uKSB7XG4gICAgICBpZiAoIXN2Z0J1dHRvbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlkID0gc3ZnQnV0dG9uLmdldEF0dHJpYnV0ZSgnZGF0YS1hbmltYXRpb24nKTtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGNvbnN0IGljb24gPSBzdmdCdXR0b24uZ2V0Um9vdE5vZGUoKS5nZXRFbGVtZW50QnlJZChgdmlzaWJpbGVBbmltYXRpb24tJHtpZH1gKTtcbiAgICAgIGlmICghaWNvbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGljb24uYmVnaW5FbGVtZW50KCk7XG4gIH1cbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICAgICAgICAgIGlmIChpc0N1c3RvbShldmVudCkgfHwgIXRhcmdldC5tYXRjaGVzKEJVVFRPTl9TRUxFQ1RPUikpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICAgICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGNvZGUgPSBwYXJlbnQucXVlcnlTZWxlY3RvcigncHJlIGNvZGUnKTtcbiAgICAgICAgICBpZiAoIWNvZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb3B5VG9DbGlwYm9hcmQoY29kZS5pbm5lclRleHQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBub3RpZnlTdWNjZXNzKHBhcmVudC5xdWVyeVNlbGVjdG9yKCcueWZtLWNsaXBib2FyZC1idXR0b24nKSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IFNlbGVjdG9yJDEgPSB7XG4gICAgICBDVVQ6ICcueWZtIC55Zm0tY3V0JyxcbiAgICAgIFRJVExFOiAnLnlmbSAueWZtLWN1dC10aXRsZScsXG4gICAgICBDT05URU5UOiAnLnlmbSAueWZtLWN1dC1jb250ZW50JyxcbiAgfTtcbiAgY29uc3QgQ2xhc3NOYW1lID0ge1xuICAgICAgT1BFTjogJ29wZW4nLFxuICB9O1xuICBmdW5jdGlvbiB0b2dnbGVDdXQoZWxlbWVudCkge1xuICAgICAgY29uc3QgY3V0Tm9kZSA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgIGlmICghKGN1dE5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjdXROb2RlLmNsYXNzTGlzdC50b2dnbGUoQ2xhc3NOYW1lLk9QRU4pO1xuICB9XG4gIGZ1bmN0aW9uIG1hdGNoVGl0bGUodGFyZ2V0KSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gKF9hID0gdGFyZ2V0ID09PSBudWxsIHx8IHRhcmdldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdGFyZ2V0Lm1hdGNoZXMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHRhcmdldCwgU2VsZWN0b3IkMS5USVRMRSk7XG4gIH1cbiAgZnVuY3Rpb24gZmluZFRpdGxlSW5QYXRoKGV2ZW50KSB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG4gICAgICBpZiAobWF0Y2hUaXRsZSh0YXJnZXQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhdGggPSAoX2EgPSBldmVudC5jb21wb3NlZFBhdGgpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGV2ZW50KTtcbiAgICAgIHJldHVybiBwYXRoID09PSBudWxsIHx8IHBhdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGguZmluZChtYXRjaFRpdGxlKTtcbiAgfVxuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoaXNDdXN0b20oZXZlbnQpKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdGl0bGUgPSBmaW5kVGl0bGVJblBhdGgoZXZlbnQpO1xuICAgICAgICAgIGlmICghdGl0bGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0b2dnbGVDdXQodGl0bGUpO1xuICAgICAgfSk7XG4gIH1cblxuICBjb25zdCBTZWxlY3RvciA9IHtcbiAgICAgIFRJVExFOiAnLnlmbSAueWZtLXRlcm1fdGl0bGUnLFxuICAgICAgQ09OVEVOVDogJy55Zm0gLnlmbS10ZXJtX2RmbicsXG4gIH07XG4gIGNvbnN0IG9wZW5DbGFzcyA9ICdvcGVuJztcbiAgY29uc3Qgb3BlbkRlZmluaXRpb25DbGFzcyA9IFNlbGVjdG9yLkNPTlRFTlQucmVwbGFjZSgvXFwuL2csICcnKSArICcgJyArIG9wZW5DbGFzcztcbiAgbGV0IGlzTGlzdGVuZXJOZWVkZWQgPSB0cnVlO1xuICBmdW5jdGlvbiBjcmVhdGVEZWZpbml0aW9uRWxlbWVudCh0ZXJtRWxlbWVudCkge1xuICAgICAgdmFyIF9hO1xuICAgICAgY29uc3QgdGVybUtleSA9IHRlcm1FbGVtZW50LmdldEF0dHJpYnV0ZSgndGVybS1rZXknKTtcbiAgICAgIGNvbnN0IGRlZmluaXRpb25UZW1wbGF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3Rlcm1LZXl9X3RlbXBsYXRlYCk7XG4gICAgICBjb25zdCBkZWZpbml0aW9uRWxlbWVudCA9IGRlZmluaXRpb25UZW1wbGF0ZSA9PT0gbnVsbCB8fCBkZWZpbml0aW9uVGVtcGxhdGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGRlZmluaXRpb25UZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKS5maXJzdENoaWxkO1xuICAgICAgKF9hID0gZGVmaW5pdGlvblRlbXBsYXRlID09PSBudWxsIHx8IGRlZmluaXRpb25UZW1wbGF0ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmaW5pdGlvblRlbXBsYXRlLnBhcmVudEVsZW1lbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hcHBlbmRDaGlsZChkZWZpbml0aW9uRWxlbWVudCk7XG4gICAgICBkZWZpbml0aW9uVGVtcGxhdGUucmVtb3ZlKCk7XG4gICAgICByZXR1cm4gZGVmaW5pdGlvbkVsZW1lbnQ7XG4gIH1cbiAgZnVuY3Rpb24gc2V0RGVmaW5pdGlvbklkKGRlZmluaXRpb25FbGVtZW50LCB0ZXJtRWxlbWVudCkge1xuICAgICAgY29uc3QgdGVybUlkID0gdGVybUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpIHx8IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA4KTtcbiAgICAgIGRlZmluaXRpb25FbGVtZW50ID09PSBudWxsIHx8IGRlZmluaXRpb25FbGVtZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZWZpbml0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3Rlcm0taWQnLCB0ZXJtSWQpO1xuICB9XG4gIGZ1bmN0aW9uIHNldERlZmluaXRpb25Qb3NpdGlvbihkZWZpbml0aW9uRWxlbWVudCwgdGVybUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHsgeDogdGVybVgsIHk6IHRlcm1ZLCByaWdodDogdGVybVJpZ2h0LCBsZWZ0OiB0ZXJtTGVmdCwgd2lkdGg6IHRlcm1XaWR0aCwgaGVpZ2h0OiB0ZXJtSGVpZ2h0LCB9ID0gdGVybUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCB0ZXJtUGFyZW50ID0gdGVybVBhcmVudEVsZW1lbnQodGVybUVsZW1lbnQpO1xuICAgICAgaWYgKCF0ZXJtUGFyZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgeyByaWdodDogdGVybVBhcmVudFJpZ2h0LCBsZWZ0OiB0ZXJtUGFyZW50TGVmdCB9ID0gdGVybVBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGlmICgodGVybVBhcmVudFJpZ2h0IDwgdGVybUxlZnQgfHwgdGVybVBhcmVudExlZnQgPiB0ZXJtUmlnaHQpICYmICFpc0xpc3RlbmVyTmVlZGVkKSB7XG4gICAgICAgICAgY2xvc2VEZWZpbml0aW9uKGRlZmluaXRpb25FbGVtZW50KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoaXNMaXN0ZW5lck5lZWRlZCAmJiB0ZXJtUGFyZW50KSB7XG4gICAgICAgICAgdGVybVBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0ZXJtT25SZXNpemUpO1xuICAgICAgICAgIGlzTGlzdGVuZXJOZWVkZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlbGF0aXZlWCA9IE51bWJlcihkZWZpbml0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JlbGF0aXZlWCcpKTtcbiAgICAgIGNvbnN0IHJlbGF0aXZlWSA9IE51bWJlcihkZWZpbml0aW9uRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3JlbGF0aXZlWScpKTtcbiAgICAgIGlmIChyZWxhdGl2ZVggPT09IHRlcm1YICYmIHJlbGF0aXZlWSA9PT0gdGVybVkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkZWZpbml0aW9uRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlbGF0aXZlWCcsIFN0cmluZyh0ZXJtWCkpO1xuICAgICAgZGVmaW5pdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWxhdGl2ZVknLCBTdHJpbmcodGVybVkpKTtcbiAgICAgIGNvbnN0IG9mZnNldFRvcCA9IHRlcm1IZWlnaHQgKyA1O1xuICAgICAgY29uc3QgZGVmaW5pdGlvblBhcmVudCA9IGRlZmluaXRpb25FbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAoIWRlZmluaXRpb25QYXJlbnQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IHdpZHRoOiBkZWZpbml0aW9uV2lkdGggfSA9IGRlZmluaXRpb25FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgeyBsZWZ0OiBkZWZpbml0aW9uUGFyZW50TGVmdCB9ID0gZGVmaW5pdGlvblBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIC8vIElmIGRlZmluaXRpb24gbm90IGZpdCBkb2N1bWVudCBjaGFuZ2UgYmFzZSBhbGlnbm1lbnRcbiAgICAgIGNvbnN0IGRlZmluaXRpb25SaWdodENvb3JkaW5hdGUgPSBkZWZpbml0aW9uV2lkdGggKyBOdW1iZXIoZ2V0Q29vcmRzKHRlcm1FbGVtZW50KS5sZWZ0KTtcbiAgICAgIGNvbnN0IGZpdERlZmluaXRpb25Eb2N1bWVudCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPiBkZWZpbml0aW9uUmlnaHRDb29yZGluYXRlID8gMCA6IGRlZmluaXRpb25XaWR0aCAtIHRlcm1XaWR0aDtcbiAgICAgIGNvbnN0IGN1c3RvbUhlYWRlclRvcCA9IGdldENvb3JkcyhkZWZpbml0aW9uUGFyZW50KS50b3AgLSBkZWZpbml0aW9uUGFyZW50Lm9mZnNldFRvcDtcbiAgICAgIGRlZmluaXRpb25FbGVtZW50LnN0eWxlLnRvcCA9XG4gICAgICAgICAgTnVtYmVyKGdldENvb3Jkcyh0ZXJtRWxlbWVudCkudG9wICsgb2Zmc2V0VG9wIC0gY3VzdG9tSGVhZGVyVG9wKSArICdweCc7XG4gICAgICBkZWZpbml0aW9uRWxlbWVudC5zdHlsZS5sZWZ0ID1cbiAgICAgICAgICBOdW1iZXIoZ2V0Q29vcmRzKHRlcm1FbGVtZW50KS5sZWZ0IC1cbiAgICAgICAgICAgICAgZGVmaW5pdGlvblBhcmVudExlZnQgK1xuICAgICAgICAgICAgICBkZWZpbml0aW9uUGFyZW50Lm9mZnNldExlZnQgLVxuICAgICAgICAgICAgICBmaXREZWZpbml0aW9uRG9jdW1lbnQpICsgJ3B4JztcbiAgfVxuICBmdW5jdGlvbiB0ZXJtT25SZXNpemUoKSB7XG4gICAgICBjb25zdCBvcGVuRGVmaW5pdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUob3BlbkRlZmluaXRpb25DbGFzcylbMF07XG4gICAgICBpZiAoIW9wZW5EZWZpbml0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgdGVybUlkID0gb3BlbkRlZmluaXRpb24uZ2V0QXR0cmlidXRlKCd0ZXJtLWlkJykgfHwgJyc7XG4gICAgICBjb25zdCB0ZXJtRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlcm1JZCk7XG4gICAgICBpZiAoIXRlcm1FbGVtZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0RGVmaW5pdGlvblBvc2l0aW9uKG9wZW5EZWZpbml0aW9uLCB0ZXJtRWxlbWVudCk7XG4gIH1cbiAgZnVuY3Rpb24gdGVybVBhcmVudEVsZW1lbnQodGVybSkge1xuICAgICAgaWYgKCF0ZXJtKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBjbG9zZXN0U2Nyb2xsYWJsZVBhcmVudCA9IHRlcm0uY2xvc2VzdCgndGFibGUnKSB8fCB0ZXJtLmNsb3Nlc3QoJ2NvZGUnKTtcbiAgICAgIHJldHVybiBjbG9zZXN0U2Nyb2xsYWJsZVBhcmVudCB8fCB0ZXJtLnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgZnVuY3Rpb24gY2xvc2VEZWZpbml0aW9uKGRlZmluaXRpb24pIHtcbiAgICAgIGRlZmluaXRpb24uY2xhc3NMaXN0LnJlbW92ZShvcGVuQ2xhc3MpO1xuICAgICAgY29uc3QgdGVybUlkID0gZGVmaW5pdGlvbi5nZXRBdHRyaWJ1dGUoJ3Rlcm0taWQnKSB8fCAnJztcbiAgICAgIGNvbnN0IHRlcm1QYXJlbnQgPSB0ZXJtUGFyZW50RWxlbWVudChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXJtSWQpKTtcbiAgICAgIGlmICghdGVybVBhcmVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRlcm1QYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGVybU9uUmVzaXplKTtcbiAgICAgIGlzTGlzdGVuZXJOZWVkZWQgPSB0cnVlO1xuICB9XG4gIGZ1bmN0aW9uIGdldENvb3JkcyhlbGVtKSB7XG4gICAgICBjb25zdCBib3ggPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgICBjb25zdCBkb2NFbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2NFbC5zY3JvbGxUb3AgfHwgYm9keS5zY3JvbGxUb3A7XG4gICAgICBjb25zdCBzY3JvbGxMZWZ0ID0gd2luZG93LnBhZ2VYT2Zmc2V0IHx8IGRvY0VsLnNjcm9sbExlZnQgfHwgYm9keS5zY3JvbGxMZWZ0O1xuICAgICAgY29uc3QgY2xpZW50VG9wID0gZG9jRWwuY2xpZW50VG9wIHx8IGJvZHkuY2xpZW50VG9wIHx8IDA7XG4gICAgICBjb25zdCBjbGllbnRMZWZ0ID0gZG9jRWwuY2xpZW50TGVmdCB8fCBib2R5LmNsaWVudExlZnQgfHwgMDtcbiAgICAgIGNvbnN0IHRvcCA9IGJveC50b3AgKyBzY3JvbGxUb3AgLSBjbGllbnRUb3A7XG4gICAgICBjb25zdCBsZWZ0ID0gYm94LmxlZnQgKyBzY3JvbGxMZWZ0IC0gY2xpZW50TGVmdDtcbiAgICAgIHJldHVybiB7IHRvcDogTWF0aC5yb3VuZCh0b3ApLCBsZWZ0OiBNYXRoLnJvdW5kKGxlZnQpIH07XG4gIH1cblxuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBvcGVuRGVmaW5pdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUob3BlbkRlZmluaXRpb25DbGFzcylbMF07XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICAgICAgICAgIGNvbnN0IHRlcm1JZCA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2lkJyk7XG4gICAgICAgICAgY29uc3QgdGVybUtleSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ3Rlcm0ta2V5Jyk7XG4gICAgICAgICAgbGV0IGRlZmluaXRpb25FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVybUtleSArICdfZWxlbWVudCcpO1xuICAgICAgICAgIGlmICh0ZXJtS2V5ICYmICFkZWZpbml0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uRWxlbWVudCA9IGNyZWF0ZURlZmluaXRpb25FbGVtZW50KHRhcmdldCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzU2FtZVRlcm0gPSBvcGVuRGVmaW5pdGlvbiAmJiB0ZXJtSWQgPT09IG9wZW5EZWZpbml0aW9uLmdldEF0dHJpYnV0ZSgndGVybS1pZCcpO1xuICAgICAgICAgIGlmIChpc1NhbWVUZXJtKSB7XG4gICAgICAgICAgICAgIGNsb3NlRGVmaW5pdGlvbihvcGVuRGVmaW5pdGlvbik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNUYXJnZXREZWZpbml0aW9uQ29udGVudCA9IHRhcmdldC5jbG9zZXN0KFtTZWxlY3Rvci5DT05URU5ULnJlcGxhY2UoJyAnLCAnJyksIG9wZW5DbGFzc10uam9pbignLicpKTtcbiAgICAgICAgICBpZiAob3BlbkRlZmluaXRpb24gJiYgIWlzVGFyZ2V0RGVmaW5pdGlvbkNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgY2xvc2VEZWZpbml0aW9uKG9wZW5EZWZpbml0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlzQ3VzdG9tKGV2ZW50KSB8fCAhdGFyZ2V0Lm1hdGNoZXMoU2VsZWN0b3IuVElUTEUpIHx8ICFkZWZpbml0aW9uRWxlbWVudCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldERlZmluaXRpb25JZChkZWZpbml0aW9uRWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICBzZXREZWZpbml0aW9uUG9zaXRpb24oZGVmaW5pdGlvbkVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgZGVmaW5pdGlvbkVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShvcGVuQ2xhc3MpO1xuICAgICAgfSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3BlbkRlZmluaXRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG9wZW5EZWZpbml0aW9uQ2xhc3MpWzBdO1xuICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmIG9wZW5EZWZpbml0aW9uKSB7XG4gICAgICAgICAgICAgIGNsb3NlRGVmaW5pdGlvbihvcGVuRGVmaW5pdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9wZW5EZWZpbml0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShvcGVuRGVmaW5pdGlvbkNsYXNzKVswXTtcbiAgICAgICAgICBpZiAoIW9wZW5EZWZpbml0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdGVybUlkID0gb3BlbkRlZmluaXRpb24uZ2V0QXR0cmlidXRlKCd0ZXJtLWlkJykgfHwgJyc7XG4gICAgICAgICAgY29uc3QgdGVybUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXJtSWQpO1xuICAgICAgICAgIGlmICghdGVybUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgb3BlbkRlZmluaXRpb24uY2xhc3NMaXN0LnRvZ2dsZShvcGVuQ2xhc3MpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHNldERlZmluaXRpb25Qb3NpdGlvbihvcGVuRGVmaW5pdGlvbiwgdGVybUVsZW1lbnQpO1xuICAgICAgfSk7XG4gIH1cblxufSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9eWZtLmpzLm1hcFxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYmVtX2NuXzEgPSByZXF1aXJlKFwiYmVtLWNuXCIpO1xudmFyIGJsb2NrID0gYmVtX2NuXzEuc2V0dXAoKTtcbmZ1bmN0aW9uIGJlbUNsYXNzTmFtZUxpdGUoYmxvY2tOYW1lKSB7XG4gICAgdmFyIGIgPSBibG9jayhibG9ja05hbWUpO1xuICAgIGZ1bmN0aW9uIGVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVsZW1lbnROYW1lID0gYXJncy5zaGlmdCgpO1xuICAgICAgICB2YXIgbW9kaWZpZXJzID0gYXJnc1swXSwgbWl4aW4gPSBhcmdzWzFdO1xuICAgICAgICB2YXIgcmVzdWx0O1xuICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnROYW1lICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgbW9kaWZpZXJzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbWl4aW4gPSBtb2RpZmllcnM7XG4gICAgICAgICAgICBtb2RpZmllcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGIoZWxlbWVudE5hbWUsIG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChtaXhpbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0Lm1peChtaXhpbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpO1xuICAgIH1cbiAgICBlbGVtZW50LmJ1aWxkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgIH07XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG5iZW1DbGFzc05hbWVMaXRlLnNldHVwID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIGJsb2NrID0gYmVtX2NuXzEuc2V0dXAoY29uZmlnKTtcbn07XG5iZW1DbGFzc05hbWVMaXRlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgIGJsb2NrID0gYmVtX2NuXzEuc2V0dXAoKTtcbn07XG5leHBvcnRzLmRlZmF1bHQgPSBiZW1DbGFzc05hbWVMaXRlO1xuIiwiKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBFbGVtZW50Lm1hdGNoZXMoKSBwb2x5ZmlsbC5cbiAgICAgKiBAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9ydS9kb2NzL1dlYi9BUEkvRWxlbWVudC9tYXRjaGVzXG4gICAgICovXG4gICAgaWYgKHR5cGVvZiBFbGVtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBlLm1hdGNoZXNcbiAgICAgICAgICAgICAgICB8fCBlLm1hdGNoZXNTZWxlY3RvclxuICAgICAgICAgICAgICAgIHx8IGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yXG4gICAgICAgICAgICAgICAgfHwgZS5tb3pNYXRjaGVzU2VsZWN0b3JcbiAgICAgICAgICAgICAgICB8fCBlLm1zTWF0Y2hlc1NlbGVjdG9yXG4gICAgICAgICAgICAgICAgfHwgZS5vTWF0Y2hlc1NlbGVjdG9yO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgIGUubWF0Y2hlcyA9IGUubWF0Y2hlc1NlbGVjdG9yID0gbWF0Y2hlcztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZS5tYXRjaGVzID0gZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGggPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSwgKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWwgPT09IHRoO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KShFbGVtZW50LnByb3RvdHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBldmVudC50YXJnZXQuaHJlZjtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uT3JpZ2luID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcblxuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5tYXRjaGVzKCcuZGMtZG9jLWxheW91dF9fY2VudGVyIGEnKSAmJiBocmVmLnN0YXJ0c1dpdGgobG9jYXRpb25PcmlnaW4pKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1haW5GaWxlTmFtZSA9ICdpbmRleCc7XG4gICAgICAgICAgICAgICAgY29uc3QgZXh0ZW50aW9uID0gJy5odG1sJztcblxuICAgICAgICAgICAgICAgIGlmIChocmVmLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtocmVmfSR7bWFpbkZpbGVOYW1lfSR7ZXh0ZW50aW9ufWA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBodHRwczovLy4uL2ZpbGUtbmFtZSwgaHR0cHM6Ly8uLi9maWxlLW5hbWUjZnJhZ21lbnRcbiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdGVkSHJlZiA9IGhyZWYuc3BsaXQoJyMnKTtcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXRlZEhyZWYubGVuZ3RoID4gMCAmJiAhc3BsaXRlZEhyZWZbMF0uZW5kc1dpdGgoZXh0ZW50aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBzcGxpdGVkSHJlZlswXSArPSBleHRlbnRpb247XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3BsaXRlZEhyZWYuam9pbignIycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59KSgpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYmVtX2NuXzEgPSByZXF1aXJlKFwiYmVtLWNuXCIpO1xudmFyIGJsb2NrID0gKDAsIGJlbV9jbl8xLnNldHVwKSgpO1xuZnVuY3Rpb24gaXNTdHJpbmcoZGF0YSkge1xuICAgIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZyc7XG59XG5mdW5jdGlvbiBoYXNNaXhpblNoYXBlKGRhdGEpIHtcbiAgICByZXR1cm4gaXNTdHJpbmcoZGF0YSkgfHwgKEFycmF5LmlzQXJyYXkoZGF0YSkgJiYgZGF0YS5ldmVyeShpc1N0cmluZykpO1xufVxuZnVuY3Rpb24gYmVtQ2xhc3NOYW1lTGl0ZShibG9ja05hbWUpIHtcbiAgICB2YXIgYiA9IGJsb2NrKGJsb2NrTmFtZSk7XG4gICAgZnVuY3Rpb24gZWxlbWVudCgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZWxlbWVudE5hbWUgPSBhcmdzLnNoaWZ0KCk7XG4gICAgICAgIHZhciBtb2RpZmllcnMgPSBhcmdzWzBdLCBtaXhpbiA9IGFyZ3NbMV07XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh0eXBlb2YgZWxlbWVudE5hbWUgIT09ICdzdHJpbmcnIHx8IGhhc01peGluU2hhcGUobW9kaWZpZXJzKSkge1xuICAgICAgICAgICAgbWl4aW4gPSBtb2RpZmllcnM7XG4gICAgICAgICAgICBtb2RpZmllcnMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGIoZWxlbWVudE5hbWUsIG1vZGlmaWVycyk7XG4gICAgICAgIGlmIChtaXhpbikge1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0Lm1peChtaXhpbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpO1xuICAgIH1cbiAgICBlbGVtZW50LmJ1aWxkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBiO1xuICAgIH07XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG5iZW1DbGFzc05hbWVMaXRlLnNldHVwID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIGJsb2NrID0gKDAsIGJlbV9jbl8xLnNldHVwKShjb25maWcpO1xufTtcbmJlbUNsYXNzTmFtZUxpdGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgYmxvY2sgPSAoMCwgYmVtX2NuXzEuc2V0dXApKCk7XG59O1xuZXhwb3J0cy5kZWZhdWx0ID0gYmVtQ2xhc3NOYW1lTGl0ZTtcbiIsIi8qIVxuICogYmVtLWNuIHYzLjAuMVxuICogRnJpZW5kbHkgQkVNIGNsYXNzIG5hbWVzIGdlbmVyYXRvciwgZ3JlYXRlIGZvciBSZWFjdFxuICogQGF1dGhvciBBbGV4YW5kZXIgQnVydHNldiwgaHR0cHM6Ly9naXRodWIuY29tL2FsYmJ1cnRzZXZcbiAqL1xuIWZ1bmN0aW9uKG4sdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5ibG9jaz10KCk6bi5ibG9jaz10KCl9KHRoaXMsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHQ9e307ZnVuY3Rpb24gZShyKXtpZih0W3JdKXJldHVybiB0W3JdLmV4cG9ydHM7dmFyIG89dFtyXT17aTpyLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bcl0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsZSksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gZS5tPW4sZS5jPXQsZS5kPWZ1bmN0aW9uKG4sdCxyKXtlLm8obix0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sdCx7ZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxlLnI9ZnVuY3Rpb24obil7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkobixTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sZS50PWZ1bmN0aW9uKG4sdCl7aWYoMSZ0JiYobj1lKG4pKSw4JnQpcmV0dXJuIG47aWYoNCZ0JiZcIm9iamVjdFwiPT10eXBlb2YgbiYmbiYmbi5fX2VzTW9kdWxlKXJldHVybiBuO3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZS5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOm59KSwyJnQmJlwic3RyaW5nXCIhPXR5cGVvZiBuKWZvcih2YXIgbyBpbiBuKWUuZChyLG8sZnVuY3Rpb24odCl7cmV0dXJuIG5bdF19LmJpbmQobnVsbCxvKSk7cmV0dXJuIHJ9LGUubj1mdW5jdGlvbihuKXt2YXIgdD1uJiZuLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBufTtyZXR1cm4gZS5kKHQsXCJhXCIsdCksdH0sZS5vPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHQpfSxlLnA9XCJcIixlKGUucz0wKX0oW2Z1bmN0aW9uKG4sdCxlKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1lKDEpO3QuRVJST1JfQkxPQ0tfTkFNRV9UWVBFPVwiQmxvY2sgbmFtZSBzaG91bGQgYmUgYSBzdHJpbmdcIix0LkVSUk9SX0JMT0NLX05BTUVfRU1QVFk9XCJCbG9jayBuYW1lIHNob3VsZCBiZSBub24tZW1wdHlcIjt2YXIgbz17bnM6XCJcIixlbDpcIl9fXCIsbW9kOlwiX1wiLG1vZFZhbHVlOlwiX1wifSxpPWZ1bmN0aW9uKG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBufSx1PWZ1bmN0aW9uKG4pe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiBufSxzPWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPVtdLG89MjtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKWVbby0yXT1hcmd1bWVudHNbb107dmFyIGk9ci5hc3NpZ24oe30sdCk7cmV0dXJuIGkubWl4ZXM9aS5taXhlcy5jb25jYXQoZSksYyhpLG4pfSxhPWZ1bmN0aW9uKG4sdCxlKXtmb3IodmFyIG89W10saT0zO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspb1tpLTNdPWFyZ3VtZW50c1tpXTt2YXIgdT1yLmFzc2lnbih7fSx0KSxzPXIuYXNzaWduKHt9LHUuc3RhdGVzfHx7fSk7cmV0dXJuIHNbZV09ci5hc3NpZ24uYXBwbHkodm9pZCAwLFt7fSxzW2VdfHx7fV0uY29uY2F0KG8pKSx1LnN0YXRlcz1zLGModSxuKX0sbD1mdW5jdGlvbihuLHQsZSxyKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5zcGxpdC5jYWxsKGYobix0KSxlLHIpfSxmPWZ1bmN0aW9uKG4sdCl7dmFyIGU9dC5uYW1lLHI9dC5tb2RzLG89dC5taXhlcyxpPXQuc3RhdGVzLHU9W2VdO2lmKHImJih1PXUuY29uY2F0KE9iamVjdC5rZXlzKHIpLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gcltuXX0pLm1hcChmdW5jdGlvbih0KXt2YXIgbz1yW3RdO3JldHVybiEwPT09bz9lK24ubW9kK3Q6ZStuLm1vZCt0K24ubW9kVmFsdWUrb30pKSksaSYmT2JqZWN0LmtleXMoaSkuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgdD1pW25dO3U9dS5jb25jYXQoT2JqZWN0LmtleXModCkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiB0W25dfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuK3R9KSl9KSxuLm5zJiYodT11Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gbi5ucyt0fSkpLG8mJih1PXUuY29uY2F0KGZ1bmN0aW9uKG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1bXSksbi5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5qb2luKFwiIFwiKTpcIm9iamVjdFwiPT10eXBlb2YgbiYmbnVsbCE9PW4/bi50b1N0cmluZygpOlwiZnVuY3Rpb25cIj09dHlwZW9mIG4/bi50b1N0cmluZygpOlwic3RyaW5nXCI9PXR5cGVvZiBuP246XCJcIn0pLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4hIW59KX0obykpKSxuLmNsYXNzTWFwKXt2YXIgcz1uLmNsYXNzTWFwO3U9dS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHNbbl18fG59KX1yZXR1cm4gdS5qb2luKFwiIFwiKX0sYz1mdW5jdGlvbihuLHQpe3JldHVybnttaXg6cy5iaW5kKG51bGwsdCxuKSxzcGxpdDpsLmJpbmQobnVsbCx0LG4pLGlzOmEuYmluZChudWxsLHQsbixcImlzLVwiKSxoYXM6YS5iaW5kKG51bGwsdCxuLFwiaGFzLVwiKSxzdGF0ZTphLmJpbmQobnVsbCx0LG4sXCJpcy1cIiksdG9TdHJpbmc6Zi5iaW5kKG51bGwsdCxuKX19LGQ9ZnVuY3Rpb24obix0KXt2YXIgZT17bmFtZTpuLG1vZHM6e30sbWl4ZXM6W10sc3RhdGVzOntcImlzLVwiOnt9LFwiaGFzLVwiOnt9fX0sbz1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1bXSxvPTI7bzxhcmd1bWVudHMubGVuZ3RoO28rKyllW28tMl09YXJndW1lbnRzW29dO2lmKCFlLmxlbmd0aClyZXR1cm4gZihuLHQpO3ZhciBzPXIuYXNzaWduKHt9LHQpLGE9ZS5maWx0ZXIoaSkucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrbi5lbCtlfSxcIlwiKTthJiYocy5uYW1lPXMubmFtZSthKTt2YXIgbD1lLmZpbHRlcih1KS5yZWR1Y2UoZnVuY3Rpb24obix0KXtyZXR1cm4gci5hc3NpZ24obix0KX0se30pO3JldHVybiBzLm1vZHM9ci5hc3NpZ24oe30scy5tb2RzLGwpLGMocyxuKX0uYmluZChudWxsLHQsZSk7cmV0dXJuIG8ubWl4PXMuYmluZChudWxsLHQsZSksby5zcGxpdD1sLmJpbmQobnVsbCx0LGUpLG8uaXM9YS5iaW5kKG51bGwsdCxlLFwiaXMtXCIpLG8uaGFzPWEuYmluZChudWxsLHQsZSxcImhhcy1cIiksby5zdGF0ZT1hLmJpbmQobnVsbCx0LGUsXCJpcy1cIiksby50b1N0cmluZz1mLmJpbmQobnVsbCx0LGUpLG99O3Quc2V0dXA9ZnVuY3Rpb24obil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSxmdW5jdGlvbihlKXtpZihcInN0cmluZ1wiIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IodC5FUlJPUl9CTE9DS19OQU1FX1RZUEUpO3ZhciBpPWUudHJpbSgpO2lmKCFpKXRocm93IG5ldyBFcnJvcih0LkVSUk9SX0JMT0NLX05BTUVfRU1QVFkpO3JldHVybiBkKGksci5hc3NpZ24oe30sbyxuKSl9fSx0LmJsb2NrPXQuc2V0dXAoKSx0LmRlZmF1bHQ9dC5ibG9ja30sZnVuY3Rpb24obix0LGUpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYXNzaWduPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXSxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2UtMV09YXJndW1lbnRzW2VdO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdO2Zvcih2YXIgaSBpbiBvKW8uaGFzT3duUHJvcGVydHkoaSkmJihuW2ldPW9baV0pfXJldHVybiBufX1dKX0pOyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgZGVzZWxlY3RDdXJyZW50ID0gcmVxdWlyZShcInRvZ2dsZS1zZWxlY3Rpb25cIik7XG5cbnZhciBjbGlwYm9hcmRUb0lFMTFGb3JtYXR0aW5nID0ge1xuICBcInRleHQvcGxhaW5cIjogXCJUZXh0XCIsXG4gIFwidGV4dC9odG1sXCI6IFwiVXJsXCIsXG4gIFwiZGVmYXVsdFwiOiBcIlRleHRcIlxufVxuXG52YXIgZGVmYXVsdE1lc3NhZ2UgPSBcIkNvcHkgdG8gY2xpcGJvYXJkOiAje2tleX0sIEVudGVyXCI7XG5cbmZ1bmN0aW9uIGZvcm1hdChtZXNzYWdlKSB7XG4gIHZhciBjb3B5S2V5ID0gKC9tYWMgb3MgeC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgPyBcIuKMmFwiIDogXCJDdHJsXCIpICsgXCIrQ1wiO1xuICByZXR1cm4gbWVzc2FnZS5yZXBsYWNlKC8je1xccyprZXlcXHMqfS9nLCBjb3B5S2V5KTtcbn1cblxuZnVuY3Rpb24gY29weSh0ZXh0LCBvcHRpb25zKSB7XG4gIHZhciBkZWJ1ZyxcbiAgICBtZXNzYWdlLFxuICAgIHJlc2VsZWN0UHJldmlvdXMsXG4gICAgcmFuZ2UsXG4gICAgc2VsZWN0aW9uLFxuICAgIG1hcmssXG4gICAgc3VjY2VzcyA9IGZhbHNlO1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgZGVidWcgPSBvcHRpb25zLmRlYnVnIHx8IGZhbHNlO1xuICB0cnkge1xuICAgIHJlc2VsZWN0UHJldmlvdXMgPSBkZXNlbGVjdEN1cnJlbnQoKTtcblxuICAgIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICBzZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcblxuICAgIG1hcmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtcbiAgICBtYXJrLnRleHRDb250ZW50ID0gdGV4dDtcbiAgICAvLyBhdm9pZCBzY3JlZW4gcmVhZGVycyBmcm9tIHJlYWRpbmcgb3V0IGxvdWQgdGhlIHRleHRcbiAgICBtYXJrLmFyaWFIaWRkZW4gPSBcInRydWVcIlxuICAgIC8vIHJlc2V0IHVzZXIgc3R5bGVzIGZvciBzcGFuIGVsZW1lbnRcbiAgICBtYXJrLnN0eWxlLmFsbCA9IFwidW5zZXRcIjtcbiAgICAvLyBwcmV2ZW50cyBzY3JvbGxpbmcgdG8gdGhlIGVuZCBvZiB0aGUgcGFnZVxuICAgIG1hcmsuc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XG4gICAgbWFyay5zdHlsZS50b3AgPSAwO1xuICAgIG1hcmsuc3R5bGUuY2xpcCA9IFwicmVjdCgwLCAwLCAwLCAwKVwiO1xuICAgIC8vIHVzZWQgdG8gcHJlc2VydmUgc3BhY2VzIGFuZCBsaW5lIGJyZWFrc1xuICAgIG1hcmsuc3R5bGUud2hpdGVTcGFjZSA9IFwicHJlXCI7XG4gICAgLy8gZG8gbm90IGluaGVyaXQgdXNlci1zZWxlY3QgKGl0IG1heSBiZSBgbm9uZWApXG4gICAgbWFyay5zdHlsZS53ZWJraXRVc2VyU2VsZWN0ID0gXCJ0ZXh0XCI7XG4gICAgbWFyay5zdHlsZS5Nb3pVc2VyU2VsZWN0ID0gXCJ0ZXh0XCI7XG4gICAgbWFyay5zdHlsZS5tc1VzZXJTZWxlY3QgPSBcInRleHRcIjtcbiAgICBtYXJrLnN0eWxlLnVzZXJTZWxlY3QgPSBcInRleHRcIjtcbiAgICBtYXJrLmFkZEV2ZW50TGlzdGVuZXIoXCJjb3B5XCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBpZiAob3B0aW9ucy5mb3JtYXQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAodHlwZW9mIGUuY2xpcGJvYXJkRGF0YSA9PT0gXCJ1bmRlZmluZWRcIikgeyAvLyBJRSAxMVxuICAgICAgICAgIGRlYnVnICYmIGNvbnNvbGUud2FybihcInVuYWJsZSB0byB1c2UgZS5jbGlwYm9hcmREYXRhXCIpO1xuICAgICAgICAgIGRlYnVnICYmIGNvbnNvbGUud2FybihcInRyeWluZyBJRSBzcGVjaWZpYyBzdHVmZlwiKTtcbiAgICAgICAgICB3aW5kb3cuY2xpcGJvYXJkRGF0YS5jbGVhckRhdGEoKTtcbiAgICAgICAgICB2YXIgZm9ybWF0ID0gY2xpcGJvYXJkVG9JRTExRm9ybWF0dGluZ1tvcHRpb25zLmZvcm1hdF0gfHwgY2xpcGJvYXJkVG9JRTExRm9ybWF0dGluZ1tcImRlZmF1bHRcIl1cbiAgICAgICAgICB3aW5kb3cuY2xpcGJvYXJkRGF0YS5zZXREYXRhKGZvcm1hdCwgdGV4dCk7XG4gICAgICAgIH0gZWxzZSB7IC8vIGFsbCBvdGhlciBicm93c2Vyc1xuICAgICAgICAgIGUuY2xpcGJvYXJkRGF0YS5jbGVhckRhdGEoKTtcbiAgICAgICAgICBlLmNsaXBib2FyZERhdGEuc2V0RGF0YShvcHRpb25zLmZvcm1hdCwgdGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLm9uQ29weSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9wdGlvbnMub25Db3B5KGUuY2xpcGJvYXJkRGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hcmspO1xuXG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG1hcmspO1xuICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG5cbiAgICB2YXIgc3VjY2Vzc2Z1bCA9IGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcbiAgICBpZiAoIXN1Y2Nlc3NmdWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvcHkgY29tbWFuZCB3YXMgdW5zdWNjZXNzZnVsXCIpO1xuICAgIH1cbiAgICBzdWNjZXNzID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZGVidWcgJiYgY29uc29sZS5lcnJvcihcInVuYWJsZSB0byBjb3B5IHVzaW5nIGV4ZWNDb21tYW5kOiBcIiwgZXJyKTtcbiAgICBkZWJ1ZyAmJiBjb25zb2xlLndhcm4oXCJ0cnlpbmcgSUUgc3BlY2lmaWMgc3R1ZmZcIik7XG4gICAgdHJ5IHtcbiAgICAgIHdpbmRvdy5jbGlwYm9hcmREYXRhLnNldERhdGEob3B0aW9ucy5mb3JtYXQgfHwgXCJ0ZXh0XCIsIHRleHQpO1xuICAgICAgb3B0aW9ucy5vbkNvcHkgJiYgb3B0aW9ucy5vbkNvcHkod2luZG93LmNsaXBib2FyZERhdGEpO1xuICAgICAgc3VjY2VzcyA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBkZWJ1ZyAmJiBjb25zb2xlLmVycm9yKFwidW5hYmxlIHRvIGNvcHkgdXNpbmcgY2xpcGJvYXJkRGF0YTogXCIsIGVycik7XG4gICAgICBkZWJ1ZyAmJiBjb25zb2xlLmVycm9yKFwiZmFsbGluZyBiYWNrIHRvIHByb21wdFwiKTtcbiAgICAgIG1lc3NhZ2UgPSBmb3JtYXQoXCJtZXNzYWdlXCIgaW4gb3B0aW9ucyA/IG9wdGlvbnMubWVzc2FnZSA6IGRlZmF1bHRNZXNzYWdlKTtcbiAgICAgIHdpbmRvdy5wcm9tcHQobWVzc2FnZSwgdGV4dCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgIGlmICh0eXBlb2Ygc2VsZWN0aW9uLnJlbW92ZVJhbmdlID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBzZWxlY3Rpb24ucmVtb3ZlUmFuZ2UocmFuZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtYXJrKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG1hcmspO1xuICAgIH1cbiAgICByZXNlbGVjdFByZXZpb3VzKCk7XG4gIH1cblxuICByZXR1cm4gc3VjY2Vzcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb3B5O1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnlmbS1zYW5kYm94X19jb2x1bW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ueWZtLXNhbmRib3hfX2NhcmQtdGV4dHtwYWRkaW5nOjE2cHg7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmluaXRpYWx9LnlmbS1zYW5kYm94X19jYXJkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9LnlmbS1zYW5kYm94X19jYXJke292ZXJmbG93LXg6YXV0b30ueWZtLXNhbmRib3hfX2xvYWRlci1jb250YWluZXJ7aGVpZ2h0OjMwMHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ueWZtLXNhbmRib3ggLnlmbS1zYW5kYm94X19wcmV7bWFyZ2luOjB9LnlmbS1zYW5kYm94IC55Zm0tc2FuZGJveF9fcG9zc2libGUtcmVhc29uc3ttYXJnaW4tdG9wOjE1cHh9LnlmbS1zYW5kYm94X19jbGlwYm9hcmQtYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNnB4O3JpZ2h0OjE2cHg7ZGlzcGxheTpub25lfS55Zm0tc2FuZGJveF9fY2FyZC13cmFwcGVyOmhvdmVyIC55Zm0tc2FuZGJveF9fY2xpcGJvYXJkLWJ1dHRvbntkaXNwbGF5OmJsb2NrfS5vcGVuYXBpX19yZXF1aXJlZHtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWRhbmdlcil9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BkaXBsb2RvYy9vcGVuYXBpLWV4dGVuc2lvbi9ydW50aW1lL2luZGV4Lm1pbi5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEscUJBQUEsWUFBQSxDQUFBLHFCQUFBLENBQUEsd0JBQUEsWUFBQSxDQUFBLGFBQUEsQ0FBQSxrQkFBQSxDQUFBLDJCQUFBLGlCQUFBLENBQUEsbUJBQUEsZUFBQSxDQUFBLCtCQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsa0JBQUEsQ0FBQSxzQkFBQSxDQUFBLCtCQUFBLFFBQUEsQ0FBQSw0Q0FBQSxlQUFBLENBQUEsK0JBQUEsaUJBQUEsQ0FBQSxRQUFBLENBQUEsVUFBQSxDQUFBLFlBQUEsQ0FBQSxnRUFBQSxhQUFBLENBQUEsbUJBQUEsaUNBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnlmbS1zYW5kYm94X19jb2x1bW57ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ueWZtLXNhbmRib3hfX2NhcmQtdGV4dHtwYWRkaW5nOjE2cHg7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmluaXRpYWx9LnlmbS1zYW5kYm94X19jYXJkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9LnlmbS1zYW5kYm94X19jYXJke292ZXJmbG93LXg6YXV0b30ueWZtLXNhbmRib3hfX2xvYWRlci1jb250YWluZXJ7aGVpZ2h0OjMwMHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ueWZtLXNhbmRib3ggLnlmbS1zYW5kYm94X19wcmV7bWFyZ2luOjB9LnlmbS1zYW5kYm94IC55Zm0tc2FuZGJveF9fcG9zc2libGUtcmVhc29uc3ttYXJnaW4tdG9wOjE1cHh9LnlmbS1zYW5kYm94X19jbGlwYm9hcmQtYnV0dG9ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNnB4O3JpZ2h0OjE2cHg7ZGlzcGxheTpub25lfS55Zm0tc2FuZGJveF9fY2FyZC13cmFwcGVyOmhvdmVyIC55Zm0tc2FuZGJveF9fY2xpcGJvYXJkLWJ1dHRvbntkaXNwbGF5OmJsb2NrfS5vcGVuYXBpX19yZXF1aXJlZHtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWRhbmdlcil9XFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWluLmNzcy5tYXAgKi9cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLWJvb2ttYXJrLWJ1dHRvbnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luOjAgNHB4IDRweCA0cHh9LmRjLWJvb2ttYXJrLWJ1dHRvbjpob3Zlcjo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0uZGMtYm9va21hcmstYnV0dG9uX2FjdGl2ZSAuZGMtYm9va21hcmstYnV0dG9uX19pY29ue2NvbG9yOnZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCl9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0Jvb2ttYXJrQnV0dG9uL0Jvb2ttYXJrQnV0dG9uLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsb0JBQ0kscUJBQUEsQ0FDQSxvQkFBQSxDQUVBLGtDQUNJLDhCQUFBLENBR0oscURBQ0ksa0NBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmRjLWJvb2ttYXJrLWJ1dHRvbiB7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICAgIG1hcmdpbjogMCA0cHggNHB4IDRweDtcXG5cXG4gICAgJjpob3Zlcjo6YmVmb3JlIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICB9XFxuXFxuICAgICZfYWN0aXZlICZfX2ljb24ge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kYy1icmVhZGNydW1ic3tmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7d2lkdGg6MTAwJX0uZGMtYnJlYWRjcnVtYnNfX2l0ZW1ze21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KX0uZGMtYnJlYWRjcnVtYnNfX2l0ZW17ZGlzcGxheTppbmxpbmV9LmRjLWJyZWFkY3J1bWJzX19pdGVtOjphZnRlcntjb250ZW50OlxcXCLCoC8gXFxcIjttYXJnaW46MCA1cHg7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1oaW50KX0uZGMtYnJlYWRjcnVtYnNfX2l0ZW06bGFzdC1jaGlsZDo6YWZ0ZXJ7ZGlzcGxheTpub25lfS5kYy1icmVhZGNydW1ic19faXRlbTpsYXN0LWNoaWxke2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LmRjLWJyZWFkY3J1bWJzX190ZXh0e3doaXRlLXNwYWNlOm5vd3JhcH1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQnJlYWRjcnVtYnMvQnJlYWRjcnVtYnMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsZ0JBR0EseUNBQUEsQ0FBQSw2Q0NDSSxDQUFBLFVEQ0EsQ0FBQSx1QkFFQSxRQ0NBLENBQUEsU0FDQSxDQUFBLGVBQ0EsQ0FBQSxrQkFBQSxDQUFBLGVEQ0ksQ0FBQSxzQkFDQSxDQUFBLG9DQUVBLENBQUEsc0JBR0osY0FDSSxDQUFBLDZCQUVBLGFBQ0ksQ0FBQSxZQUNBLENBQUEsK0JBQ0EsQ0FBQSx3Q0FHSixZQUNJLENBQUEsaUNBRUosa0NBQ0ksQ0FBQSxzQkFJUixrQkFDSVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcXG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcXG5cXG4uZGMtYnJlYWRjcnVtYnMge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0xKTtcXG4gICAgd2lkdGg6IDEwMCU7XFxuXFxuICAgICZfX2l0ZW1zIHtcXG4gICAgICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGUoKTtcXG5cXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuXFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xcbiAgICB9XFxuXFxuICAgICZfX2l0ZW0ge1xcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xcblxcbiAgICAgICAgJjo6YWZ0ZXIge1xcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcXFxcYTAvICc7XFxuICAgICAgICAgICAgbWFyZ2luOiAwIDVweDtcXG4gICAgICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1oaW50KTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6bGFzdC1jaGlsZDo6YWZ0ZXIge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICB9XFxuICAgICAgICAmOmxhc3QtY2hpbGQge1xcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX3RleHQge1xcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJy4vdmFyaWFibGVzJztcXG5cXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxufVxcblxcbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcXG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbn1cXG5cXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG5cXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBsaW5rKCkge1xcbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmspO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpob3ZlcixcXG4gICAgJjphY3RpdmUge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcxKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMygpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmc0KCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzUoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzYoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcXG59XFxuXFxuQG1peGluIHRleHQtYm9keS0xKCkge1xcbiAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5jb250cmlidXRvci1hdmF0YXJzX19vbmVfY29udHJpYnV0b3J7ZGlzcGxheTpmbGV4O21hcmdpbjowIDEuNXB4fS5jb250cmlidXRvci1hdmF0YXJzX19vbmVfY29udHJpYnV0b3IgYSwuY29udHJpYnV0b3ItYXZhdGFyc19fb25lX2NvbnRyaWJ1dG9yIGE6aG92ZXIsLmNvbnRyaWJ1dG9yLWF2YXRhcnNfX29uZV9jb250cmlidXRvciBhOnZpc2l0ZWQsLmNvbnRyaWJ1dG9yLWF2YXRhcnNfX29uZV9jb250cmlidXRvciBhOmFjdGl2ZXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6ZmxleH0uY29udHJpYnV0b3ItYXZhdGFyc19fb25lX2NvbnRyaWJ1dG9yIGF7Y3Vyc29yOnBvaW50ZXJ9LmNvbnRyaWJ1dG9yLWF2YXRhcnNfX29uZV9jb250cmlidXRvcj4qe2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW4tcmlnaHQ6NXB4O2FsaWduLXNlbGY6Y2VudGVyfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3N3B4KXsuY29udHJpYnV0b3ItYXZhdGFyc19fb25lX2NvbnRyaWJ1dG9yX29ubHlBdXRob3I+KjpsYXN0LWNoaWxke21hcmdpbi1sZWZ0OjVweH0uY29udHJpYnV0b3ItYXZhdGFyc19fb25lX2NvbnRyaWJ1dG9yPio6bGFzdC1jaGlsZCwuY29udHJpYnV0b3ItYXZhdGFyc19fb25lX2NvbnRyaWJ1dG9yPi5kZXNrdG9we2Rpc3BsYXk6bm9uZX0uY29udHJpYnV0b3ItYXZhdGFyc19fb25lX2NvbnRyaWJ1dG9yX29ubHlBdXRob3I+KjpsYXN0LWNoaWxke2Rpc3BsYXk6YmxvY2t9LmNvbnRyaWJ1dG9yLWF2YXRhcnNfX29uZV9jb250cmlidXRvcj4qOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLXJpZ2h0OjBweH19QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc3cHgpey5jb250cmlidXRvci1hdmF0YXJzX19vbmVfY29udHJpYnV0b3I+Lm1vYmlsZXtkaXNwbGF5Om5vbmV9LmNvbnRyaWJ1dG9yLWF2YXRhcnNfX29uZV9jb250cmlidXRvcj4qOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjBweH19LmNvbnRyaWJ1dG9yLWF2YXRhcnNfX2F2YXRhcntib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjAgMCAwIDEuNXB4IHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQpfS5jb250cmlidXRvci1hdmF0YXJzX19hdmF0YXJfc2l6ZV9zbWFsbHtoZWlnaHQ6MjNweDt3aWR0aDoyM3B4fS5jb250cmlidXRvci1hdmF0YXJzX19hdmF0YXJfc2l6ZV9iaWd7aGVpZ2h0OjMzcHg7d2lkdGg6MzNweH0uY29udHJpYnV0b3ItYXZhdGFyc19fYXZhdGFyX2RlZmF1bHR7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0uY29udHJpYnV0b3ItYXZhdGFyc19fZGlzcGxheWVkX2F2YXRhcnN7ZGlzcGxheTpmbGV4fS5jb250cmlidXRvci1hdmF0YXJzX19kaXNwbGF5ZWRfYXZhdGFycyBhLC5jb250cmlidXRvci1hdmF0YXJzX19kaXNwbGF5ZWRfYXZhdGFycyBhOmhvdmVyLC5jb250cmlidXRvci1hdmF0YXJzX19kaXNwbGF5ZWRfYXZhdGFycyBhOnZpc2l0ZWQsLmNvbnRyaWJ1dG9yLWF2YXRhcnNfX2Rpc3BsYXllZF9hdmF0YXJzIGE6YWN0aXZle2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTpmbGV4fS5jb250cmlidXRvci1hdmF0YXJzX19kaXNwbGF5ZWRfYXZhdGFycyBhe2N1cnNvcjpwb2ludGVyfS5jb250cmlidXRvci1hdmF0YXJzX19kaXNwbGF5ZWRfYXZhdGFycz4qe21hcmdpbi1sZWZ0OjEuNXB4O21hcmdpbi1yaWdodDpjYWxjKDEuNXB4ICsgMnB4KX0uY29udHJpYnV0b3ItYXZhdGFyc19faGlkZGVuX2F2YXRhcnN7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtib3JkZXItcmFkaXVzOjUwJTt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcn0uY29udHJpYnV0b3ItYXZhdGFyc19faGlkZGVuX2F2YXRhcnM+KntiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2UtbWlzYyk7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmctbGVmdDozcHg7cGFkZGluZy1yaWdodDoxcHg7bWFyZ2luOjAgMS41cHg7Ym94LXNoYWRvdzowIDAgMCAxLjVweCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50KX0uY29udHJpYnV0b3ItYXZhdGFyc19fZGV0YWlsc3tkaXNwbGF5OmZsZXh9LmNvbnRyaWJ1dG9yLWF2YXRhcnNfX2RldGFpbHM+ZGl2Omxhc3QtY2hpbGR7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NDAwO21hcmdpbjphdXRvIDEycHh9LmNvbnRyaWJ1dG9yLWF2YXRhcnNfX2RldGFpbHNfbmFtZXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO2xpbmUtaGVpZ2h0OjE4cHh9LmNvbnRyaWJ1dG9yLWF2YXRhcnNfX3BvcHVwe2JveC1zaGFkb3c6MHB4IDNweCAyNHB4IHJnYmEoMCwwLDAsLjIpfS5jb250cmlidXRvci1hdmF0YXJzX19wb3B1cCBhLC5jb250cmlidXRvci1hdmF0YXJzX19wb3B1cCBhOmhvdmVyLC5jb250cmlidXRvci1hdmF0YXJzX19wb3B1cCBhOnZpc2l0ZWQsLmNvbnRyaWJ1dG9yLWF2YXRhcnNfX3BvcHVwIGE6YWN0aXZle2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7ZGlzcGxheTpmbGV4fS5jb250cmlidXRvci1hdmF0YXJzX19wb3B1cCBhe2N1cnNvcjpwb2ludGVyfS5jb250cmlidXRvci1hdmF0YXJzX19wb3B1cD4qOm5vdCg6Zmlyc3QtY2hpbGQpe21hcmdpbjoxMnB4fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cmlidXRvckF2YXRhcnMvQ29udHJpYnV0b3JBdmF0YXJzLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvc3R5bGVzL21peGlucy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQTZCSSxzQ0FDSSxZQUFBLENBQ0EsY0FBQSxDQWpCSixxTEFJSSxhQUFBLENBQ0Esb0JBQUEsQ0FDQSxZQUFBLENBR0osd0NBQ0ksY0FBQSxDQVVBLHdDQzZDSixjQUFBLENBQ0EsZUFBQSxDQUNBLGdCQUFBLENBQ0EsaUJBQUEsQ0Q1Q0kscUNBQ0ksOERBQ0ksZUFBQSxDQUdKLGtHQUVJLFlBQUEsQ0FHSiw4REFDSSxhQUFBLENBR0oseURBQ0ksZ0JBQUEsQ0FBQSxDQUlSLHFDQUNJLDhDQUNJLFlBQUEsQ0FHSixtREFDSSxnQkFBQSxDQUFBLENBTVIsNkJBQ0ksaUJBQUEsQ0FDQSwwREFBQSxDQUdKLHdDQUNJLFdBakVhLENBa0ViLFVBbEVhLENBcUVqQixzQ0FDSSxXQXJFVyxDQXNFWCxVQXRFVyxDQXlFZixxQ0FDSSxpQkFBQSxDQUNBLFlBQUEsQ0FDQSxxQkFBQSxDQUNBLHNCQUFBLENBQ0EsY0FyRlMsQ0FzRlQsZUFyRlcsQ0F5Rm5CLHdDQUNJLFlBQUEsQ0FqRkosNkxBSUksYUFBQSxDQUNBLG9CQUFBLENBQ0EsWUFBQSxDQUdKLDBDQUNJLGNBQUEsQ0EwRUEsMENBQ0ksaUJBNUZHLENBNkZILDhCQUFBLENBSVIscUNBQ0ksY0FyR2EsQ0FzR2IsZUFyR2UsQ0FzR2Ysb0NBQUEsQ0FDQSxpQkFBQSxDQUNBLGlCQUFBLENBQ0EsY0FBQSxDQUVBLHVDQUNJLG9DQUFBLENBQ0EscUJBQUEsQ0FDQSxpQkFBQSxDQUNBLFlBQUEsQ0FDQSxzQkFBQSxDQUNBLGdCQUFBLENBQ0EsaUJBQUEsQ0FDQSxjQUFBLENBQ0EsMERBQUEsQ0FJUiw4QkFDSSxZQUFBLENBRUEsNkNBQ0ksY0FBQSxDQUNBLGVBQUEsQ0FDQSxnQkFBQSxDQUlSLG1DQUNJLGtDQUFBLENBQ0EsZ0JBaklTLENBb0liLDRCQUNJLHNDQUFBLENBL0hKLDZJQUlJLGFBQUEsQ0FDQSxvQkFBQSxDQUNBLFlBQUEsQ0FHSiw4QkFDSSxjQUFBLENBd0hBLGdEQUNJLFdBM0lJXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xcblxcbiRhdmF0YXJzRGlzdGFuY2U6IDJweDtcXG4kYXZhdGFyVGV4dEZvbnRTaXplOiAxMnB4O1xcbiRhdmF0YXJUZXh0Rm9udFdlaWdodDogNTAwO1xcbiRkZXRhaWxzSW5kZW50OiAxMnB4O1xcbiRhdmF0YXJCb3JkZXI6IDEuNXB4O1xcbiR0ZXh0TGluZUhlaWdodDogMThweDtcXG5cXG4kYXZhdGFyV3JhcHBlclNtYWxsU2l6ZTogMjNweDtcXG4kYXZhdGFyV3JhcHBlckJpZ1NpemU6IDMzcHg7XFxuXFxuQG1peGluIGRpc2FibGUtbGluay1zdHlsZXMge1xcbiAgICBhLFxcbiAgICBhOmhvdmVyLFxcbiAgICBhOnZpc2l0ZWQsXFxuICAgIGE6YWN0aXZlIHtcXG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgfVxcblxcbiAgICBhIHtcXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgfVxcbn1cXG5cXG4uY29udHJpYnV0b3ItYXZhdGFycyB7XFxuICAgICZfX29uZV9jb250cmlidXRvciB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgbWFyZ2luOiAwICRhdmF0YXJCb3JkZXI7XFxuICAgICAgICBAaW5jbHVkZSBkaXNhYmxlLWxpbmstc3R5bGVzO1xcblxcbiAgICAgICAgJiA+ICoge1xcbiAgICAgICAgICAgIEBpbmNsdWRlIGNvbnRyaWJ1dG9ycy10ZXh0KCk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcXG4gICAgICAgICAgICAmX29ubHlBdXRob3IgPiAqOmxhc3QtY2hpbGQge1xcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmID4gKjpsYXN0LWNoaWxkLFxcbiAgICAgICAgICAgICYgPiAuZGVza3RvcCB7XFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICZfb25seUF1dGhvciA+ICo6bGFzdC1jaGlsZCB7XFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmID4gKjpub3QoOmxhc3QtY2hpbGQpIHtcXG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XFxuICAgICAgICAgICAgJiA+IC5tb2JpbGUge1xcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmID4gKjpsYXN0LWNoaWxkIHtcXG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwcHg7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2F2YXRhciB7XFxuICAgICAgICAmIHtcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgJGF2YXRhckJvcmRlciB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50KTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfc2l6ZV9zbWFsbCB7XFxuICAgICAgICAgICAgaGVpZ2h0OiAkYXZhdGFyV3JhcHBlclNtYWxsU2l6ZTtcXG4gICAgICAgICAgICB3aWR0aDogJGF2YXRhcldyYXBwZXJTbWFsbFNpemU7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmX3NpemVfYmlnIHtcXG4gICAgICAgICAgICBoZWlnaHQ6ICRhdmF0YXJXcmFwcGVyQmlnU2l6ZTtcXG4gICAgICAgICAgICB3aWR0aDogJGF2YXRhcldyYXBwZXJCaWdTaXplO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9kZWZhdWx0IHtcXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogJGF2YXRhclRleHRGb250U2l6ZTtcXG4gICAgICAgICAgICBmb250LXdlaWdodDogJGF2YXRhclRleHRGb250V2VpZ2h0O1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2Rpc3BsYXllZF9hdmF0YXJzIHtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBAaW5jbHVkZSBkaXNhYmxlLWxpbmstc3R5bGVzO1xcblxcbiAgICAgICAgJiA+ICoge1xcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAkYXZhdGFyQm9yZGVyO1xcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygjeyRhdmF0YXJCb3JkZXJ9ICsgI3skYXZhdGFyc0Rpc3RhbmNlfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9faGlkZGVuX2F2YXRhcnMge1xcbiAgICAgICAgZm9udC1zaXplOiAkYXZhdGFyVGV4dEZvbnRTaXplO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRhdmF0YXJUZXh0Rm9udFdlaWdodDtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XFxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuXFxuICAgICAgICAmID4gKiB7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1taXNjKTtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogM3B4O1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDFweDtcXG4gICAgICAgICAgICBtYXJnaW46IDAgJGF2YXRhckJvcmRlcjtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAkYXZhdGFyQm9yZGVyIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2RldGFpbHMge1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG5cXG4gICAgICAgICYgPiBkaXY6bGFzdC1jaGlsZCB7XFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvICRkZXRhaWxzSW5kZW50O1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2RldGFpbHNfbmFtZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkdGV4dExpbmVIZWlnaHQ7XFxuICAgIH1cXG5cXG4gICAgJl9fcG9wdXAge1xcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gICAgICAgIEBpbmNsdWRlIGRpc2FibGUtbGluay1zdHlsZXM7XFxuXFxuICAgICAgICAmID4gKjpub3QoOmZpcnN0LWNoaWxkKSB7XFxuICAgICAgICAgICAgbWFyZ2luOiAkZGV0YWlsc0luZGVudDtcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJy4vdmFyaWFibGVzJztcXG5cXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxufVxcblxcbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcXG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbn1cXG5cXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG5cXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBsaW5rKCkge1xcbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmspO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpob3ZlcixcXG4gICAgJjphY3RpdmUge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcxKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMygpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmc0KCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzUoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzYoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcXG59XFxuXFxuQG1peGluIHRleHQtYm9keS0xKCkge1xcbiAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5jb250cmlidXRvcnN7ZGlzcGxheTpmbGV4O21hcmdpbjowIDAgMzJweH0uY29udHJpYnV0b3JzX190aXRsZXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo0MDA7bWFyZ2luLXJpZ2h0OjVweDthbGlnbi1zZWxmOmNlbnRlcn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJpYnV0b3JzL0NvbnRyaWJ1dG9ycy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy9taXhpbnMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFQSxjQUNJLFlBQUEsQ0FDQSxlQUFBLENBRUEscUJDeUVBLGNBQUEsQ0FDQSxlQUFBLENBQ0EsZ0JBQUEsQ0FDQSxpQkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcXG5cXG4uY29udHJpYnV0b3JzIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgbWFyZ2luOiAwIDAgMzJweDtcXG5cXG4gICAgJl9fdGl0bGUge1xcbiAgICAgICAgQGluY2x1ZGUgY29udHJpYnV0b3JzLXRleHQoKTtcXG4gICAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJy4vdmFyaWFibGVzJztcXG5cXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxufVxcblxcbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcXG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbn1cXG5cXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG5cXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBsaW5rKCkge1xcbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmspO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpob3ZlcixcXG4gICAgJjphY3RpdmUge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcxKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMygpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmc0KCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzUoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzYoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcXG59XFxuXFxuQG1peGluIHRleHQtYm9keS0xKCkge1xcbiAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kYy1jb250cm9sX190b29sdGlwe2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo0cHggOHB4O2JvcmRlcjpub25lO2hlaWdodDoyNnB4fS5kYy1jb250cm9sX190b29sdGlwLXRleHR7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO2Rpc3BsYXk6YmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Db250cm9sL0NvbnRyb2wuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0kscUJBQ0ksWUFBQSxDQUNBLGtCQUFBLENBQ0EsZUFBQSxDQUNBLFdBQUEsQ0FDQSxXQUFBLENBR0osMEJDUkEseUNBQUEsQ0FDQSw2Q0FBQSxDRFNJLGFBQUEsQ0FDQSxrQkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcXG5cXG4uZGMtY29udHJvbCB7XFxuICAgICZfX3Rvb2x0aXAge1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBwYWRkaW5nOiA0cHggOHB4O1xcbiAgICAgICAgYm9yZGVyOiBub25lO1xcbiAgICAgICAgaGVpZ2h0OiAyNnB4O1xcbiAgICB9XFxuXFxuICAgICZfX3Rvb2x0aXAtdGV4dCB7XFxuICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0xKTtcXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJy4vdmFyaWFibGVzJztcXG5cXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxufVxcblxcbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcXG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbn1cXG5cXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG5cXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBsaW5rKCkge1xcbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmspO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpob3ZlcixcXG4gICAgJjphY3RpdmUge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcxKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMygpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmc0KCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzUoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzYoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcXG59XFxuXFxuQG1peGluIHRleHQtYm9keS0xKCkge1xcbiAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kYy1jb250cm9sc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KX0uZGMtY29udHJvbHNfX2NvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwuZGMtY29udHJvbHNfX2RpdmlkZXJ7bWFyZ2luLXJpZ2h0OjRweH0uZGMtY29udHJvbHNfX2xpc3R7cGFkZGluZzo0cHggMH0uZGMtY29udHJvbHNfX2xpc3RfbGFuZ3N7d2lkdGg6MTIwcHh9LmRjLWNvbnRyb2xzX19saXN0LWljb257bWFyZ2luLXJpZ2h0OjhweH0uZGMtY29udHJvbHNfX2xhbmctaXRlbXtkaXNwbGF5OmZsZXg7cGFkZGluZzo2cHggMTJweDt3aWR0aDoxMDAlfUBtZWRpYShtaW4td2lkdGg6IDc2OXB4KXsuZGMtY29udHJvbHNfdmVydGljYWx7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5kYy1jb250cm9sc192ZXJ0aWNhbCAuZGMtY29udHJvbHNfX2RpdmlkZXJ7aGVpZ2h0OjFweDt3aWR0aDoxNnB4fS5kYy1jb250cm9sc192ZXJ0aWNhbCAuZGMtY29udHJvbHNfX2NvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwuZGMtY29udHJvbHNfdmVydGljYWwgLmRjLWNvbnRyb2xzX19kaXZpZGVye21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206NHB4fX1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvQ29udHJvbHMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0EsYUFDSSxZQUFBLENBQ0Esa0JBQUEsQ0NGQSx5Q0FBQSxDQUNBLDZDQUFBLENESUEsNkRBRUksZ0JBQUEsQ0FHSixtQkFDSSxhQUFBLENBRUEseUJBQ0ksV0FBQSxDQUlSLHdCQUNJLGdCQUFBLENBR0osd0JBQ0ksWUFBQSxDQUNBLGdCQUFBLENBQ0EsVUFBQSxDQUdKLHlCQUNJLHNCQUNJLHFCQUFBLENBR0osNENBQ0ksVUFBQSxDQUNBLFVBQUEsQ0FHSix5R0FFSSxjQUFBLENBQ0EsaUJBQUEsQ0FBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcXG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcXG5cXG4uZGMtY29udHJvbHMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0xKTtcXG5cXG4gICAgJl9fY29udHJvbDpub3QoOmxhc3QtY2hpbGQpLFxcbiAgICAmX19kaXZpZGVyIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICB9XFxuXFxuICAgICZfX2xpc3Qge1xcbiAgICAgICAgcGFkZGluZzogNHB4IDA7XFxuXFxuICAgICAgICAmX2xhbmdzIHtcXG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fbGlzdC1pY29uIHtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgICB9XFxuXFxuICAgICZfX2xhbmctaXRlbSB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XFxuICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgfVxcblxcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICAmX3ZlcnRpY2FsIHtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl92ZXJ0aWNhbCAmX19kaXZpZGVyIHtcXG4gICAgICAgICAgICBoZWlnaHQ6IDFweDtcXG4gICAgICAgICAgICB3aWR0aDogMTZweDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfdmVydGljYWwgJl9fY29udHJvbDpub3QoOmxhc3QtY2hpbGQpLFxcbiAgICAgICAgJl92ZXJ0aWNhbCAmX19kaXZpZGVyIHtcXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XFxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLWRpdmlkZXItY29udHJvbHtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyl9LmRjLWRpdmlkZXItY29udHJvbDpmaXJzdC1jaGlsZHtkaXNwbGF5Om5vbmV9LmRjLWRpdmlkZXItY29udHJvbDpub3QoLmRjLWRpdmlkZXItY29udHJvbF92ZXJ0aWNhbCl7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4fS5kYy1kaXZpZGVyLWNvbnRyb2xfdmVydGljYWx7d2lkdGg6MXB4fS5kYy1kaXZpZGVyLWNvbnRyb2wuZGMtZGl2aWRlci1jb250cm9sX3ZlcnRpY2FsLmRjLWRpdmlkZXItY29udHJvbF9zaXplX217aGVpZ2h0OjE2cHh9LmRjLWRpdmlkZXItY29udHJvbC5kYy1kaXZpZGVyLWNvbnRyb2xfdmVydGljYWwuZGMtZGl2aWRlci1jb250cm9sX3NpemVfbHtoZWlnaHQ6MjRweH1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL0RpdmlkZXJDb250cm9sL0RpdmlkZXJDb250cm9sLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsb0JBQ0ksdUNBQUEsQ0FFQSxnQ0FDSSxZQUFBLENBR0osc0RBQ0ksVUFBQSxDQUNBLFVBQUEsQ0FHSiw2QkFDSSxTQUFBLENBR0osMEVBQ0ksV0FBQSxDQUVKLDBFQUNJLFdBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmRjLWRpdmlkZXItY29udHJvbCB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxuXFxuICAgICY6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcblxcbiAgICAmOm5vdCgmX3ZlcnRpY2FsKSB7XFxuICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgICAgIGhlaWdodDogMXB4O1xcbiAgICB9XFxuXFxuICAgICZfdmVydGljYWwge1xcbiAgICAgICAgd2lkdGg6IDFweDtcXG4gICAgfVxcblxcbiAgICAmI3smfV92ZXJ0aWNhbCN7Jn1fc2l6ZV9tIHtcXG4gICAgICAgIGhlaWdodDogMTZweDtcXG4gICAgfVxcbiAgICAmI3smfV92ZXJ0aWNhbCN7Jn1fc2l6ZV9sIHtcXG4gICAgICAgIGhlaWdodDogMjRweDtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLXNldHRpbmdzLWNvbnRyb2xfX3RleHQtc2l6ZS1jb250cm9se2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmRjLXNldHRpbmdzLWNvbnRyb2xfX3RleHQtc2l6ZS1idXR0b25fc3tmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCl9LmRjLXNldHRpbmdzLWNvbnRyb2xfX3RleHQtc2l6ZS1idXR0b25fbXtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTItZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCl9LmRjLXNldHRpbmdzLWNvbnRyb2xfX3RleHQtc2l6ZS1idXR0b25fbHtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTMtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMy1saW5lLWhlaWdodCl9LmRjLXNldHRpbmdzLWNvbnRyb2xfX3RleHQtc2l6ZS1idXR0b24taWNvbl9hY3RpdmV7Y29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKX0uZGMtc2V0dGluZ3MtY29udHJvbF9fcG9wdXB7d2lkdGg6MjMwcHg7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpfS5kYy1zZXR0aW5ncy1jb250cm9sX19saXN0e3BhZGRpbmc6NHB4IDA7d2lkdGg6MjMwcHh9LmRjLXNldHRpbmdzLWNvbnRyb2xfX2xpc3QgLnljLWxpc3RfX2l0ZW1fYWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKX0uZGMtc2V0dGluZ3MtY29udHJvbF9fbGlzdC1pY29ue21hcmdpbi1yaWdodDo4cHh9LmRjLXNldHRpbmdzLWNvbnRyb2xfX2xpc3QtaXRlbXtkaXNwbGF5OmZsZXg7cGFkZGluZzoxMnB4O3dpZHRoOjEwMCV9LmRjLXNldHRpbmdzLWNvbnRyb2xfX2xpc3QtaXRlbS1kZXNjcmlwdGlvbntjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXNlY29uZGFyeSl9LmRjLXNldHRpbmdzLWNvbnRyb2xfX2xpc3QtaXRlbS1jb250cm9se2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWxlZnQ6YXV0b31cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvQ29udHJvbHMvc2luZ2xlLWNvbnRyb2xzL1NldHRpbmdzQ29udHJvbC9TZXR0aW5nc0NvbnRyb2wuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0ksd0NBQ0ksWUFBQSxDQUNBLGtCQUFBLENBSUEseUNDTkoseUNBQUEsQ0FDQSw2Q0FBQSxDRFFJLHlDQ1RKLHlDQUFBLENBQ0EsNkNBQUEsQ0RXSSx5Q0NaSix5Q0FBQSxDQUNBLDZDQUFBLENEaUJJLG1EQUNJLGtDQUFBLENBSVIsNEJBQ0ksV0FBQSxDQ3hCSix5Q0FBQSxDQUNBLDZDQUFBLENEMkJBLDJCQUNJLGFBQUEsQ0FDQSxXQUFBLENBRUEsaURBQ0ksd0JBQUEsQ0FJUixnQ0FDSSxnQkFBQSxDQUdKLGdDQUNJLFlBQUEsQ0FDQSxZQUFBLENBQ0EsVUFBQSxDQUdKLDRDQUNJLG9DQUFBLENBR0osd0NBQ0ksWUFBQSxDQUNBLGtCQUFBLENBQ0EsZ0JBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCAnLi4vLi4vLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XFxuXFxuLmRjLXNldHRpbmdzLWNvbnRyb2wge1xcbiAgICAmX190ZXh0LXNpemUtY29udHJvbCB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgfVxcblxcbiAgICAmX190ZXh0LXNpemUtYnV0dG9uIHtcXG4gICAgICAgICZfcyB7XFxuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMSk7XFxuICAgICAgICB9XFxuICAgICAgICAmX20ge1xcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTIpO1xcbiAgICAgICAgfVxcbiAgICAgICAgJl9sIHtcXG4gICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX190ZXh0LXNpemUtYnV0dG9uLWljb24ge1xcbiAgICAgICAgJl9hY3RpdmUge1xcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX3BvcHVwIHtcXG4gICAgICAgIHdpZHRoOiAyMzBweDtcXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTEpO1xcbiAgICB9XFxuXFxuICAgICZfX2xpc3Qge1xcbiAgICAgICAgcGFkZGluZzogNHB4IDA7XFxuICAgICAgICB3aWR0aDogMjMwcHg7XFxuXFxuICAgICAgICAueWMtbGlzdF9faXRlbV9hY3RpdmUge1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2xpc3QtaWNvbiB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcXG4gICAgfVxcblxcbiAgICAmX19saXN0LWl0ZW0ge1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIHBhZGRpbmc6IDEycHg7XFxuICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgfVxcblxcbiAgICAmX19saXN0LWl0ZW0tZGVzY3JpcHRpb24ge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcXG4gICAgfVxcblxcbiAgICAmX19saXN0LWl0ZW0tY29udHJvbCB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICB9XFxufVxcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLWRvYy1sYXlvdXR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46MCBhdXRvO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6dmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKX1AbWVkaWEobWF4LXdpZHRoOiA3NjhweCl7LmRjLWRvYy1sYXlvdXR7YWxpZ24taXRlbXM6bm9ybWFsfX0uZGMtZG9jLWxheW91dF9fbGVmdCwuZGMtZG9jLWxheW91dF9fcmlnaHR7ZmxleDowIDAgYXV0bztib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5kYy1kb2MtbGF5b3V0X19yaWdodHt3aWR0aDoxNzZweDtwYWRkaW5nLXJpZ2h0OjI0cHh9LmRjLWRvYy1sYXlvdXRfX3JpZ2h0X2Z1bGwtc2NyZWVuLC5kYy1kb2MtbGF5b3V0X19yaWdodF9oaWRkZW4tcmlnaHR7ZmxleDppbml0aWFsfS5kYy1kb2MtbGF5b3V0X19sZWZ0e3dpZHRoOjI3NnB4fS5kYy1kb2MtbGF5b3V0X19sZWZ0X2Z1bGwtc2NyZWVue2ZsZXg6aW5pdGlhbH0uZGMtZG9jLWxheW91dF9fY2VudGVye2ZsZXg6MSAxIGF1dG87cG9zaXRpb246cmVsYXRpdmU7bWluLXdpZHRoOjB9LmRjLWRvYy1sYXlvdXRfX2NlbnRlci5kYy1kb2MtbGF5b3V0X19jZW50ZXJfaGlkZGVuLXJpZ2h0LmRjLWRvYy1sYXlvdXRfX2NlbnRlcl9yZWd1bGFyLXBhZ2Utd2lkdGg6bm90KC5kYy1kb2MtbGF5b3V0X19jZW50ZXJfZnVsbC1zY3JlZW4pe21heC13aWR0aDo4MjRweH0uZGMtZG9jLWxheW91dF9fY2VudGVyX2Z1bGwtc2NyZWVue2ZsZXg6MCAwIGF1dG87d2lkdGg6MTAwJX0uZGMtZG9jLWxheW91dF9fY2VudGVyX2xvYWRpbmd7aGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpKTtvdmVyZmxvdzpoaWRkZW59LmRjLWRvYy1sYXlvdXRfX3RvY3twb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDt0b3A6dmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KTtwYWRkaW5nLWxlZnQ6MjRweDt3aWR0aDoyNTJweDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpfS5tb2JpbGUgLmRjLWRvYy1sYXlvdXRfX2Rlc2t0b3Atb25seXtkaXNwbGF5Om5vbmV9LmRlc2t0b3AgLmRjLWRvYy1sYXlvdXRfX21vYmlsZS1vbmx5e2Rpc3BsYXk6bm9uZX1AbWVkaWEobWF4LXdpZHRoOiA3NjhweCl7LmRjLWRvYy1sYXlvdXR7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2V9LmRjLWRvYy1sYXlvdXRfX3JpZ2h0e2Rpc3BsYXk6bm9uZX0uZGMtZG9jLWxheW91dF9fbGVmdHt3aWR0aDphdXRvfS5kYy1kb2MtbGF5b3V0X190b2N7cG9zaXRpb246c3RhdGljO3dpZHRoOmF1dG87aGVpZ2h0OmF1dG99LmRjLWRvYy1sYXlvdXRfX3RvYyAuZGMtdG9je2hlaWdodDoxMDAlICFpbXBvcnRhbnR9fUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCl7LmRjLWRvYy1sYXlvdXRfX2NlbnRlciAuZGMtZG9jLWxheW91dC5kYy1kb2MtbGF5b3V0X2hpZGRlbi1yaWdodC5kYy1kb2MtbGF5b3V0X3JlZ3VsYXItcGFnZS13aWR0aDpub3QoLmRjLWRvYy1sYXlvdXRfZnVsbC1zY3JlZW4pe21heC13aWR0aDo4MzZweH0uZGMtZG9jLWxheW91dF9fcmlnaHR7d2lkdGg6MjAwcHh9LmRjLWRvYy1sYXlvdXRfX3RvY3t3aWR0aDoyNTJweH0uZGMtZG9jLWxheW91dF9fbGVmdHt3aWR0aDoyNzZweH19XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0RvY0xheW91dC9Eb2NMYXlvdXQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0EsZUFDSSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSxhQUFBLENBQ0EsV0FBQSxDQUNBLDBDQUFBLENBRUEseUJBUEosZUFRUSxrQkFBQSxDQUFBLENBR0osMkNBRUksYUFBQSxDQUNBLHNCQUFBLENBR0osc0JBQ0ksV0FBQSxDQUNBLGtCQUFBLENBQ0EscUVBRUksWUFBQSxDQUlSLHFCQUNJLFdBQUEsQ0FFQSxpQ0FDSSxZQUFBLENBSVIsdUJBQ0ksYUFBQSxDQUNBLGlCQUFBLENBQ0EsV0FBQSxDQUVBLDJJQUNJLGVBQUEsQ0FHSixtQ0FDSSxhQUFBLENBQ0EsVUFBQSxDQUdKLCtCQUNJLGlEQUFBLENBQ0EsZUFBQSxDQUlSLG9CQUNJLGNBQUEsQ0FDQSxXQUFBLENBQ0EsZ0NBQUEsQ0FDQSxpQkFBQSxDQUNBLFdBQUEsQ0FDQSxnREFBQSxDQzVESix5Q0FBQSxDQUNBLDZDQUFBLENEZ0VJLHFDQUNJLFlBQUEsQ0FLSixxQ0FDSSxZQUFBLENBSVIseUJBNUVKLGVBNkVRLDZCQUFBLENBRUEsc0JBQ0ksWUFBQSxDQUdKLHFCQUNJLFVBQUEsQ0FHSixvQkFDSSxlQUFBLENBQ0EsVUFBQSxDQUNBLFdBQUEsQ0FFQSw0QkFFSSxzQkFBQSxDQUFBLENBS1osc0NBQ0ksa0lBQ0ksZUFBQSxDQUdKLHNCQUNJLFdBQUEsQ0FHSixvQkFDSSxXQUFBLENBR0oscUJBQ0ksV0FBQSxDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xcblxcbi5kYy1kb2MtbGF5b3V0IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgbWFyZ2luOiAwIGF1dG87XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcXG5cXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBub3JtYWw7XFxuICAgIH1cXG5cXG4gICAgJl9fbGVmdCxcXG4gICAgJl9fcmlnaHQge1xcbiAgICAgICAgZmxleDogMCAwIGF1dG87XFxuICAgICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gICAgfVxcblxcbiAgICAmX19yaWdodCB7XFxuICAgICAgICB3aWR0aDogMTc2cHg7XFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xcbiAgICAgICAgJl9mdWxsLXNjcmVlbixcXG4gICAgICAgICZfaGlkZGVuLXJpZ2h0IHtcXG4gICAgICAgICAgICBmbGV4OiBpbml0aWFsO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2xlZnQge1xcbiAgICAgICAgd2lkdGg6IDI3NnB4O1xcblxcbiAgICAgICAgJl9mdWxsLXNjcmVlbiB7XFxuICAgICAgICAgICAgZmxleDogaW5pdGlhbDtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19jZW50ZXIge1xcbiAgICAgICAgZmxleDogMSAxIGF1dG87XFxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgICBtaW4td2lkdGg6IDA7XFxuXFxuICAgICAgICAmI3smfV9oaWRkZW4tcmlnaHQjeyZ9X3JlZ3VsYXItcGFnZS13aWR0aDpub3QoI3smfV9mdWxsLXNjcmVlbikge1xcbiAgICAgICAgICAgIG1heC13aWR0aDogY2FsYyg3MzZweCArIDE3NnB4IC8gMik7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmX2Z1bGwtc2NyZWVuIHtcXG4gICAgICAgICAgICBmbGV4OiAwIDAgYXV0bztcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfbG9hZGluZyB7XFxuICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fdG9jIHtcXG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgICAgIHotaW5kZXg6IDEwMDtcXG4gICAgICAgIHRvcDogdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSk7XFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XFxuICAgICAgICB3aWR0aDogMjUycHg7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMSk7XFxuICAgIH1cXG5cXG4gICAgJl9fZGVza3RvcC1vbmx5IHtcXG4gICAgICAgIC5tb2JpbGUgJiB7XFxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19tb2JpbGUtb25seSB7XFxuICAgICAgICAuZGVza3RvcCAmIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XFxuXFxuICAgICAgICAmX19yaWdodCB7XFxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfX2xlZnQge1xcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9fdG9jIHtcXG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcXG5cXG4gICAgICAgICAgICAuZGMtdG9jIHtcXG4gICAgICAgICAgICAgICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCAqL1xcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgICAmX19jZW50ZXIgJiN7Jn1faGlkZGVuLXJpZ2h0I3smfV9yZWd1bGFyLXBhZ2Utd2lkdGg6bm90KCN7Jn1fZnVsbC1zY3JlZW4pIHtcXG4gICAgICAgICAgICBtYXgtd2lkdGg6IGNhbGMoNzM2cHggKyAyMDBweCAvIDIpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9fcmlnaHQge1xcbiAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfX3RvYyB7XFxuICAgICAgICAgICAgd2lkdGg6IDI1MnB4O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9fbGVmdCB7XFxuICAgICAgICAgICAgd2lkdGg6IDI3NnB4O1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLWRvYy1sZWFkaW5nLXBhZ2V7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxNDQwcHg7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpfS5kYy1kb2MtbGVhZGluZy1wYWdlX3JlZ3VsYXItcGFnZS13aWR0aHttYXgtd2lkdGg6MTI4MHB4fS5kYy1kb2MtbGVhZGluZy1wYWdlX19tYWlue21hcmdpbi1ib3R0b206NDBweDtwYWRkaW5nOjAgNDBweH0uZGMtZG9jLWxlYWRpbmctcGFnZV9fdGl0bGV7bWFyZ2luOjQwcHggMCAyMHB4O2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWRpc3BsYXktMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtZGlzcGxheS0yLWxpbmUtaGVpZ2h0KX0uZGMtZG9jLWxlYWRpbmctcGFnZV9fZGVzY3JpcHRpb24gYXtvdXRsaW5lOm5vbmU7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rKTt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0udXRpbGl0eWZvY3VzIC5kYy1kb2MtbGVhZGluZy1wYWdlX19kZXNjcmlwdGlvbiBhOmZvY3Vze291dGxpbmU6MnB4IHNvbGlkICNmZmRiNGR9LmRjLWRvYy1sZWFkaW5nLXBhZ2VfX2Rlc2NyaXB0aW9uIGE6aG92ZXIsLmRjLWRvYy1sZWFkaW5nLXBhZ2VfX2Rlc2NyaXB0aW9uIGE6YWN0aXZle2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcil9LmRjLWRvYy1sZWFkaW5nLXBhZ2VfX2Rlc2NyaXB0aW9uIGE6bm90KFtocmVmXSl7Y29sb3I6aW5oZXJpdH0uZGMtZG9jLWxlYWRpbmctcGFnZV9fbGlua3N7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47ZmxleC1mbG93OmNvbHVtbiB3cmFwfS5kYy1kb2MtbGVhZGluZy1wYWdlX19saW5rc19yb290e2ZsZXgtZGlyZWN0aW9uOnJvdzttYXJnaW4tdG9wOjcwcHg7bWFyZ2luLWJvdHRvbTotMjBweH0uZGMtZG9jLWxlYWRpbmctcGFnZV9fbGlua3MtbGVmdHtwYWRkaW5nLXJpZ2h0OjEwcHh9LmRjLWRvYy1sZWFkaW5nLXBhZ2VfX2xpbmtzLWl0ZW1fcm9vdHtkaXNwbGF5OmZsZXg7bWluLXdpZHRoOjI4MHB4O21heC13aWR0aDo0MDBweDt3aWR0aDpjYWxjKDUwJSAtIDIwcHgpO3BhZGRpbmctYm90dG9tOjQwcHg7bWFyZ2luLWJvdHRvbToyMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyl9LmRjLWRvYy1sZWFkaW5nLXBhZ2VfX2xpbmtzLXRpdGxlX3Jvb3R7Zm9udC1zaXplOnZhcigtLXljLXRleHQtaGVhZGVyLTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWhlYWRlci0xLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDo1MDA7bWFyZ2luLWJvdHRvbToxMHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZGMtZG9jLWxlYWRpbmctcGFnZV9fbGlua3MtbGlua3tvdXRsaW5lOm5vbmU7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rKTt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0udXRpbGl0eWZvY3VzIC5kYy1kb2MtbGVhZGluZy1wYWdlX19saW5rcy1saW5rOmZvY3Vze291dGxpbmU6MnB4IHNvbGlkICNmZmRiNGR9LmRjLWRvYy1sZWFkaW5nLXBhZ2VfX2xpbmtzLWxpbms6aG92ZXIsLmRjLWRvYy1sZWFkaW5nLXBhZ2VfX2xpbmtzLWxpbms6YWN0aXZle2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcil9QG1lZGlhKG1heC13aWR0aDogNzY4cHgpey5kYy1kb2MtbGVhZGluZy1wYWdlX19tYWlue21hcmdpbi1sZWZ0OjA7bWFyZ2luLWJvdHRvbTo0MHB4O3BhZGRpbmc6MCAyMHB4fS5kYy1kb2MtbGVhZGluZy1wYWdlX19saW5rcy1pdGVte3dpZHRoOjEwMCV9fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Eb2NMZWFkaW5nUGFnZS9Eb2NMZWFkaW5nUGFnZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy9taXhpbnMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0EscUJBQ0ksWUFBQSxDQUNBLGdCQUFBLENDRkEseUNBQUEsQ0FDQSw2Q0FBQSxDREtBLHdDQUNJLGdCQUFBLENBR0osMkJBQ0ksa0JBQUEsQ0FDQSxjQUFBLENBR0osNEJBQ0ksa0JBQUEsQ0NoQkosNENBQUEsQ0FDQSxnREFBQSxDRHFCSSxvQ0NESixZQUFBLENBVUEsK0JBQUEsQ0FDQSxvQkFBQSxDQUNBLGNBQUEsQ0FWQSx3REFDSSx5QkFBQSxDQVdKLHFGQUVJLHFDQUFBLENEWkksZ0RBQ0ksYUFBQSxDQUtaLDRCQzFCQSxRQUFBLENBQ0EsU0FBQSxDQUNBLGVBQUEsQ0QyQkksWUFBQSxDQUNBLDZCQUFBLENBQ0EscUJBQUEsQ0FFQSxpQ0FDSSxrQkFBQSxDQUNBLGVBQUEsQ0FDQSxtQkFBQSxDQUlSLGlDQUNJLGtCQUFBLENBSUEsc0NBQ0ksWUFBQSxDQUNBLGVBQUEsQ0FDQSxlQUFBLENBQ0Esc0JBQUEsQ0FDQSxtQkFBQSxDQUNBLGtCRXZEYSxDRndEYixvREFBQSxDQUtKLHVDQzlESiwyQ0FBQSxDQUNBLCtDQUFBLENBNkRBLGVBQUEsQ0RHUSxrQkFBQSxDQUNBLGVBQUEsQ0FJUixpQ0NqREEsWUFBQSxDQVVBLCtCQUFBLENBQ0Esb0JBQUEsQ0FDQSxjQUFBLENBVkEscURBQ0kseUJBQUEsQ0FXSiwrRUFFSSxxQ0FBQSxDRHFDSix5QkFDSSwyQkFDSSxhQUFBLENBQ0Esa0JBQUEsQ0FDQSxjQUFBLENBR0osaUNBQ0ksVUFBQSxDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xcblxcbi5kYy1kb2MtbGVhZGluZy1wYWdlIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgbWF4LXdpZHRoOiAxNDQwcHg7XFxuXFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTIpO1xcblxcbiAgICAmX3JlZ3VsYXItcGFnZS13aWR0aCB7XFxuICAgICAgICBtYXgtd2lkdGg6IDEyODBweDtcXG4gICAgfVxcblxcbiAgICAmX19tYWluIHtcXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XFxuICAgICAgICBwYWRkaW5nOiAwIDQwcHg7XFxuICAgIH1cXG5cXG4gICAgJl9fdGl0bGUge1xcbiAgICAgICAgbWFyZ2luOiA0MHB4IDAgJG5vcm1hbE9mZnNldDtcXG5cXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xcbiAgICB9XFxuXFxuICAgICZfX2Rlc2NyaXB0aW9uIHtcXG4gICAgICAgIGEge1xcbiAgICAgICAgICAgIEBpbmNsdWRlIGxpbmsoKTtcXG5cXG4gICAgICAgICAgICAmOm5vdChbaHJlZl0pIHtcXG4gICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2xpbmtzIHtcXG4gICAgICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGUoKTtcXG5cXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgICAgICBmbGV4LWZsb3c6IGNvbHVtbiB3cmFwO1xcblxcbiAgICAgICAgJl9yb290IHtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDcwcHg7XFxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLSRibG9ja01hcmdpbkJvdHRvbUxhcmdlO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2xpbmtzLWxlZnQge1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcXG4gICAgfVxcblxcbiAgICAmX19saW5rcy1pdGVtIHtcXG4gICAgICAgICZfcm9vdCB7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBtaW4td2lkdGg6IDI4MHB4O1xcbiAgICAgICAgICAgIG1heC13aWR0aDogNDAwcHg7XFxuICAgICAgICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gMjBweCk7XFxuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwcHg7XFxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJsb2NrTWFyZ2luQm90dG9tTGFyZ2U7XFxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fbGlua3MtdGl0bGUge1xcbiAgICAgICAgJl9yb290IHtcXG4gICAgICAgICAgICBAaW5jbHVkZSBoZWFkaW5nNCgpO1xcblxcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XFxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19saW5rcy1saW5rIHtcXG4gICAgICAgIEBpbmNsdWRlIGxpbmsoKTtcXG4gICAgfVxcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgJl9fbWFpbiB7XFxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XFxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDBweDtcXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmX19saW5rcy1pdGVtIHtcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJy4vdmFyaWFibGVzJztcXG5cXG5AbWl4aW4gdGV4dC1zaXplKCRuYW1lKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1mb250LXNpemUpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC0jeyRuYW1lfS1saW5lLWhlaWdodCk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saXN0LXN0eWxlKCkge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XFxufVxcblxcbkBtaXhpbiBmaXhBbmNob3JQb3NpdGlvbigkb2Zmc2V0OiAwcHgpIHtcXG4gICAgcGFkZGluZy10b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbiAgICBtYXJnaW4tdG9wOiBjYWxjKCN7JG9mZnNldH0gLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxufVxcblxcbkBtaXhpbiByZXNldC1saW5rLXN0eWxlKCkge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbn1cXG5cXG5AbWl4aW4gaXNsYW5kcy1mb2N1cygpIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG5cXG4gICAgLnV0aWxpdHlmb2N1cyAmOmZvY3VzIHtcXG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAjZmZkYjRkO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBsaW5rKCkge1xcbiAgICBAaW5jbHVkZSBpc2xhbmRzLWZvY3VzKCk7XFxuXFxuICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmspO1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG5cXG4gICAgJjpob3ZlcixcXG4gICAgJjphY3RpdmUge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcxKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0zKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG5cXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTIpO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMygpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0yKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmc0KCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTEpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzUoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzYoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbn1cXG5cXG5AbWl4aW4gY29udHJpYnV0b3JzLXRleHQoKSB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XFxuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcXG59XFxuXFxuQG1peGluIHRleHQtYm9keS0xKCkge1xcbiAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gZGVza3RvcC10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSAtIDEpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIG1vYmlsZS10YWJsZXQtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXCIsXCIvLyBTaXplc1xcbiRoZWFkZXJIZWlnaHQ6IDBweDtcXG4kbm9ybWFsT2Zmc2V0OiAyMHB4O1xcbiRtaW5pVG9jT2Zmc2V0OiA1NnB4O1xcbiRibG9ja01hcmdpbkJvdHRvbUxhcmdlOiAyMHB4O1xcbiRibG9ja01hcmdpbkJvdHRvbU1lZGl1bTogMTVweDtcXG4kaGVhZGVyTWFyZ2luVG9wTGFyZ2U6IDQwcHg7XFxuJGhlYWRlck1hcmdpblRvcE1lZGl1bTogMzJweDtcXG4kcG9wdXBQYWRkaW5nOiAxNnB4O1xcbiRjZW50ZXJCbG9ja01heFdpZHRoOiA3MzZweDtcXG5cXG4kc2NyZWVuQnJlYWtwb2ludHM6IChcXG4gICAgJ3hzJzogMzc1cHgsXFxuICAgICdzbSc6IDU3N3B4LFxcbiAgICAnbWQnOiA3NjlweCxcXG4gICAgJ2xnJzogMTA4MXB4LFxcbiAgICAneGwnOiAxMTg1cHgsXFxuKTtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLWRvYy1wYWdle3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0KTt3aWR0aDoxNDQwcHh9LmRjLWRvYy1wYWdlX19hc2lkZXtwb3NpdGlvbjpmaXhlZDt0b3A6Y2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpICsgdmFyKC0tZGMtc3ViaGVhZGVyLWhlaWdodCkpO3BhZGRpbmctdG9wOjI0cHg7d2lkdGg6MTc2cHg7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpfUBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCl7LmRjLWRvYy1wYWdlX19hc2lkZXt3aWR0aDoyMDBweH19LmRjLWRvYy1wYWdlX19tYWlue3BhZGRpbmc6MjBweCAzNnB4IDI0cHg7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLWhlaWdodDpjYWxjKDEwMHZoIC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSAtIHZhcigtLWRjLXN1YmhlYWRlci1oZWlnaHQpKX0uZGMtZG9jLXBhZ2VfX2xvYWRlci13cmFwcGVye2JhY2tncm91bmQ6dmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtwYWRkaW5nLXRvcDpjYWxjKCgxMDB2aCAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsIDBweCkpLzIpO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7dG9wOjA7ei1pbmRleDoxMDE7aGVpZ2h0OjEwMCV9LmRjLWRvYy1wYWdlX19jb250cm9sc3tkaXNwbGF5OmZsZXg7dG9wOnZhcigtLWRjLWhlYWRlci1oZWlnaHQsIDBweCk7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDo0MHB4O3otaW5kZXg6MTAyO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjdweH0uZGMtZG9jLXBhZ2VfX2NvbnRyb2xzPi5kYy1jb250cm9sc3twb3NpdGlvbjpmaXhlZDt0b3A6Y2FsYyg2cHggKyB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpKX1AbWVkaWEobWF4LXdpZHRoOiA3NjhweCl7LmRjLWRvYy1wYWdlX19jb250cm9scz4uZGMtY29udHJvbHN7cG9zaXRpb246c3RhdGljfX1AbWVkaWEobWluLXdpZHRoOiA3NjlweCl7LmRjLWRvYy1wYWdlX19jb250cm9sc192ZXJ0aWNhbHt0b3A6Y2FsYyg2cHggKyB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpKTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2hlaWdodDphdXRvO3dpZHRoOjM2cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MH19LmRjLWRvYy1wYWdlX19ib2R5X3RleHQtc2l6ZV9zLnlmbXtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7LS1kYy1jb2RlLWZvbnQtc2l6ZTogMTJweDstLWRjLWNvZGUtbGluZS1oZWlnaHQ6IDE4cHg7LS1kYy1jb2RlLXNob3J0LWZvbnQtc2l6ZTogMTJweDstLWRjLWNvZGUtc2hvcnQtbGluZS1oZWlnaHQ6IDE0cHg7LS1kYy1jb2RlLXNob3J0LXBhZGRpbmc6IDFweCAycHh9LmRjLWRvYy1wYWdlX19ib2R5X3RleHQtc2l6ZV9tLnlmbXtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTItZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7LS1kYy1jb2RlLWZvbnQtc2l6ZTogMTRweDstLWRjLWNvZGUtbGluZS1oZWlnaHQ6IDIwcHg7LS1kYy1jb2RlLXNob3J0LWZvbnQtc2l6ZTogMTRweDstLWRjLWNvZGUtc2hvcnQtbGluZS1oZWlnaHQ6IDE2cHg7LS1kYy1jb2RlLXNob3J0LXBhZGRpbmc6IDFweCA0cHh9LmRjLWRvYy1wYWdlX19ib2R5X3RleHQtc2l6ZV9sLnlmbXtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTMtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMy1saW5lLWhlaWdodCk7LS1kYy1jb2RlLWZvbnQtc2l6ZTogMTZweDstLWRjLWNvZGUtbGluZS1oZWlnaHQ6IDI0cHg7LS1kYy1jb2RlLXNob3J0LWZvbnQtc2l6ZTogMTZweDstLWRjLWNvZGUtc2hvcnQtbGluZS1oZWlnaHQ6IDIwcHg7LS1kYy1jb2RlLXNob3J0LXBhZGRpbmc6IDFweCA2cHh9LmRjLWRvYy1wYWdlX19icmVhZGNydW1ic3toZWlnaHQ6NDBweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MCAzNnB4fS5kYy1kb2MtcGFnZV9fZmVlZGJhY2t7bWFyZ2luLXRvcDo4NHB4fS5kYy1kb2MtcGFnZV9fdGl0bGV7bWFyZ2luLWJvdHRvbTo4cHg7Zm9udC1zaXplOnZhcigtLXljLXRleHQtZGlzcGxheS0yLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1kaXNwbGF5LTItbGluZS1oZWlnaHQpfS5kYy1kb2MtcGFnZV9fY29udGVudHtmbGV4OjE7bWFyZ2luLWJvdHRvbTo1MHB4fS5kYy1kb2MtcGFnZV9fY29udGVudC1taW5pLXRvY3tkaXNwbGF5Om5vbmU7bWFyZ2luLWJvdHRvbToyMHB4fS5kYy1kb2MtcGFnZV9fc2VhcmNoLWJhcntiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7d2lkdGg6MTAwJTtoZWlnaHQ6NDBweDtwb3NpdGlvbjpzdGlja3k7dG9wOmNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSArIDZweCk7ei1pbmRleDoxMDE7cGFkZGluZzowIDM2cHh9QG1lZGlhKG1heC13aWR0aDogNzY4cHgpey5kYy1kb2MtcGFnZV9fc2VhcmNoLWJhcntwYWRkaW5nOjAgMTBweH19LmRjLWRvYy1wYWdlX19zZWFyY2gtYmFyKy5kYy1kb2MtcGFnZV9fYnJlYWRjcnVtYnN7bWFyZ2luLXRvcDoxMnB4fS5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbnstLWRjLWhlYWRlci1oZWlnaHQ6IDBweH0uZGMtZG9jLXBhZ2VfZnVsbC1zY3JlZW4gLmRjLWRvYy1wYWdlX19icmVhZGNydW1ic3twYWRkaW5nOjAgMjRweH0uZGMtZG9jLXBhZ2VfZnVsbC1zY3JlZW4gLmRjLWRvYy1wYWdlX19tYWluLC5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbiAuZGMtbmF2LXRvYy1wYW5lbF9fY29udGVudHtwYWRkaW5nLWxlZnQ6NjRweDtwYWRkaW5nLXJpZ2h0OjY0cHh9LmRjLWRvYy1wYWdlX3JlZ3VsYXItcGFnZS13aWR0aHt3aWR0aDoxMjgwcHh9LmRjLWRvYy1wYWdlLmRjLWRvYy1wYWdlX3NpbmdsZS1wYWdlIC5kYy1kb2MtcGFnZV9faGVhZGVyLWNvbnRhaW5lcntwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLXJpZ2h0OjIwMHB4fS5kYy1kb2MtcGFnZS5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbi5kYy1kb2MtcGFnZV9yZWd1bGFyLXBhZ2Utd2lkdGh7bWF4LXdpZHRoOjczNnB4fS5kYy1kb2MtcGFnZS5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbi5kYy1kb2MtcGFnZV9yZWd1bGFyLXBhZ2Utd2lkdGggLmRjLWRvYy1wYWdlX19tYWlue3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0uZGMtZG9jLXBhZ2UuZGMtZG9jLXBhZ2VfZnVsbC1zY3JlZW4uZGMtZG9jLXBhZ2VfcmVndWxhci1wYWdlLXdpZHRoIC5kYy1kb2MtcGFnZV9fYnJlYWRjcnVtYnN7cGFkZGluZzowfS5kYy1kb2MtcGFnZS5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbi5kYy1kb2MtcGFnZV9yZWd1bGFyLXBhZ2Utd2lkdGggLmRjLW5hdi10b2MtcGFuZWxfX2NvbnRlbnR7bWF4LXdpZHRoOjczNnB4O3BhZGRpbmc6MH1AbWVkaWEobWF4LXdpZHRoOiA3NjhweCl7LmRjLWRvYy1wYWdlX19tYWlue3BhZGRpbmc6MCAyMHB4fS5kYy1kb2MtcGFnZV9fYnJlYWRjcnVtYnN7cGFkZGluZzowIDIwcHh9LmRjLWRvYy1wYWdlX19jb250ZW50LW1pbmktdG9je2Rpc3BsYXk6YmxvY2t9LmRjLWRvYy1wYWdlX190b2MtbmF2LXBhbmVse3BhZGRpbmctYm90dG9tOjUwcHh9LmRjLWRvYy1wYWdlX19jb250cm9sc3twYWRkaW5nLWxlZnQ6MjBweDtwb3NpdGlvbjpzdGF0aWN9fS5kYy1kb2MtcGFnZV9fc2VwYXJhdG9ye21hcmdpbjowIDVweCAzMnB4IDA7YWxpZ24tc2VsZjpjZW50ZXJ9LmRjLWRvYy1wYWdlX19wYWdlLWNvbnRyaWJ1dG9yc3tkaXNwbGF5OmZsZXh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTQ0MHB4KXsuZGMtZG9jLXBhZ2U6bm90KC5kYy1kb2MtcGFnZV9yZWd1bGFyLXBhZ2Utd2lkdGgpe3dpZHRoOjEwMCV9fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExMzZweCl7LmRjLWRvYy1wYWdlX3JlZ3VsYXItcGFnZS13aWR0aHt3aWR0aDoxMDAlfX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpey5kYy1kb2MtcGFnZS5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbi5kYy1kb2MtcGFnZV9yZWd1bGFyLXBhZ2Utd2lkdGggLmRjLWRvYy1wYWdlX19jb250cm9sc192ZXJ0aWNhbHtyaWdodDotMzZweH19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI4MHB4KXsuZGMtZG9jLXBhZ2VfZnVsbC1zY3JlZW4gLmRjLWRvYy1wYWdlX19tYWluLC5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbiAuZGMtbmF2LXRvYy1wYW5lbF9fY29udGVudHtwYWRkaW5nLWxlZnQ6NDBweCAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6NDBweCAhaW1wb3J0YW50fS5kYy1kb2MtcGFnZV9mdWxsLXNjcmVlbiAuZGMtZG9jLXBhZ2VfX2JyZWFkY3J1bWJze3BhZGRpbmctbGVmdDoyNHB4ICFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDoyNHB4ICFpbXBvcnRhbnR9fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Eb2NQYWdlL0RvY1BhZ2Uuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBR0EsYUFDSSxpQkFBQSxDQ0RBLHlDQUFBLENBQ0EsNkNBQUEsQ0RFQSxZQUFBLENBSUEsb0JBQ0ksY0FBQSxDQUNBLG1FQUFBLENBRUEsZ0JBQUEsQ0FDQSxXQUFBLENDWkoseUNBQUEsQ0FDQSw2Q0FBQSxDRGVJLHNDQUNJLG9CQUNJLFdBQUEsQ0FBQSxDQUtaLG1CQUNJLHNCQUFBLENBQ0EsZUFBQSxDQUNBLFlBQUEsQ0FDQSxxQkFBQSxDQUNBLGtGQUFBLENBS0osNkJBQ0ksMENBQUEsQ0FDQSwwREFBQSxDQUNBLFlBQUEsQ0FDQSxzQkFBQSxDQUNBLGlCQUFBLENBQ0EsVUFBQSxDQUNBLEtBQUEsQ0FDQSxXQUFBLENBQ0EsV0FBQSxDQUdKLHVCQUNJLFlBQUEsQ0FDQSxnQ0FBQSxDQUNBLGtCQUFBLENBQ0EsV0FBQSxDQUNBLFdBQUEsQ0FDQSxpQkFBQSxDQUNBLFNBQUEsQ0FFQSxvQ0FDSSxjQUFBLENBQ0EsNENBQUEsQ0FFQSx5QkFKSixvQ0FLUSxlQUFBLENBQUEsQ0FJUix5QkFDSSxnQ0FDSSw0Q0FBQSxDQUNBLHNCQUFBLENBQ0EsV0FBQSxDQUNBLFVBQUEsQ0FDQSxpQkFBQSxDQUNBLE9BQUEsQ0FBQSxDQU9KLG1DQzdFUix5Q0FBQSxDQUNBLDZDQUFBLENEK0VZLHlCQUFBLENBQ0EsMkJBQUEsQ0FFQSwrQkFBQSxDQUNBLGlDQUFBLENBQ0EsZ0NBQUEsQ0FHSixtQ0N4RlIseUNBQUEsQ0FDQSw2Q0FBQSxDRDBGWSx5QkFBQSxDQUNBLDJCQUFBLENBRUEsK0JBQUEsQ0FDQSxpQ0FBQSxDQUNBLGdDQUFBLENBR0osbUNDbkdSLHlDQUFBLENBQ0EsNkNBQUEsQ0RxR1kseUJBQUEsQ0FDQSwyQkFBQSxDQUVBLCtCQUFBLENBQ0EsaUNBQUEsQ0FDQSxnQ0FBQSxDQUtaLDBCQUNJLFdBQUEsQ0FDQSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSxjQUFBLENBR0osdUJBQ0ksZUFBQSxDQUdKLG9CQUNJLGlCQUFBLENDNUhKLDRDQUFBLENBQ0EsZ0RBQUEsQ0RnSUEsc0JBQ0ksTUFBQSxDQUNBLGtCQUFBLENBR0osK0JBQ0ksWUFBQSxDQUNBLGtCQUFBLENBR0oseUJBQ0ksMENBQUEsQ0FDQSxVQUFBLENBQ0EsV0FBQSxDQUNBLGVBQUEsQ0FDQSw0Q0FBQSxDQUNBLFdBQUEsQ0FDQSxjQUFBLENBRUEseUJBVEoseUJBVVEsY0FBQSxDQUFBLENBSVIsbURBQ0ksZUFBQSxDQUdKLHlCQUNJLHVCQUFBLENBRUEsbURBQ0ksY0FBQSxDQUdKLGdHQUVJLGlCQUFBLENBQ0Esa0JBQUEsQ0FJUixnQ0FDSSxZQUFBLENBR0osb0VBQ0ksaUJBQUEsQ0FDQSxtQkFBQSxDQUdKLG9FQUNJLGVBQUEsQ0FFQSx1RkFDSSxjQUFBLENBQ0EsZUFBQSxDQUdKLDhGQUNJLFNBQUEsQ0FHSiwrRkFDSSxlQUFBLENBQ0EsU0FBQSxDQUlSLHlCQUNJLG1CQUNJLGNBQUEsQ0FHSiwwQkFDSSxjQUFBLENBR0osK0JBQ0ksYUFBQSxDQUdKLDRCQUNJLG1CQUFBLENBR0osdUJBQ0ksaUJBQUEsQ0FFQSxlQUFBLENBQUEsQ0FJUix3QkFDSSxtQkFBQSxDQUNBLGlCQUFBLENBR0osZ0NBQ0ksWUFBQSxDQUdKLHNDQUNJLGtEQUNJLFVBQUEsQ0FBQSxDQUlSLHNDQUNJLGdDQUNJLFVBQUEsQ0FBQSxDQUlSLHNDQUNJLG9HQUNJLFdBQUEsQ0FBQSxDQUlSLHNDQUNJLGdHQUVJLDRCQUFBLENBQ0EsNkJBQUEsQ0FFSixtREFDSSw0QkFBQSxDQUNBLDZCQUFBLENBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XFxuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XFxuXFxuLmRjLWRvYy1wYWdlIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0yKTtcXG4gICAgd2lkdGg6IDE0NDBweDtcXG5cXG4gICAgJGJsb2NrOiAmO1xcblxcbiAgICAmX19hc2lkZSB7XFxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgICAgICB0b3A6IGNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkgKyB2YXIoLS1kYy1zdWJoZWFkZXItaGVpZ2h0KSk7XFxuXFxuICAgICAgICBwYWRkaW5nLXRvcDogMjRweDtcXG4gICAgICAgIHdpZHRoOiAxNzZweDtcXG5cXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTEpO1xcblxcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgICAgICAgJiB7XFxuICAgICAgICAgICAgICAgIHdpZHRoOiAyMDBweDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fbWFpbiB7XFxuICAgICAgICBwYWRkaW5nOiAyMHB4IDM2cHggMjRweDtcXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoXFxuICAgICAgICAgICAgMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSAtIHZhcigtLWRjLXN1YmhlYWRlci1oZWlnaHQpXFxuICAgICAgICApO1xcbiAgICB9XFxuXFxuICAgICZfX2xvYWRlci13cmFwcGVyIHtcXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XFxuICAgICAgICBwYWRkaW5nLXRvcDogY2FsYygoMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSkgLyAyKTtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgdG9wOiAwO1xcbiAgICAgICAgei1pbmRleDogMTAxO1xcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB9XFxuXFxuICAgICZfX2NvbnRyb2xzIHtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICB0b3A6IHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pO1xcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgIHotaW5kZXg6IDEwMjtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHJpZ2h0OiA3cHg7XFxuXFxuICAgICAgICAmID4gLmRjLWNvbnRyb2xzIHtcXG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgICAgICAgICAgdG9wOiBjYWxjKDZweCArIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG5cXG4gICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykpIHtcXG4gICAgICAgICAgICAmX3ZlcnRpY2FsIHtcXG4gICAgICAgICAgICAgICAgdG9wOiBjYWxjKDZweCArIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcXG4gICAgICAgICAgICAgICAgd2lkdGg6IDM2cHg7XFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgICAgICAgICAgcmlnaHQ6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2JvZHkge1xcbiAgICAgICAgJl90ZXh0LXNpemUge1xcbiAgICAgICAgICAgICZfcy55Zm0ge1xcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0xKTtcXG5cXG4gICAgICAgICAgICAgICAgLS1kYy1jb2RlLWZvbnQtc2l6ZTogMTJweDtcXG4gICAgICAgICAgICAgICAgLS1kYy1jb2RlLWxpbmUtaGVpZ2h0OiAxOHB4O1xcblxcbiAgICAgICAgICAgICAgICAtLWRjLWNvZGUtc2hvcnQtZm9udC1zaXplOiAxMnB4O1xcbiAgICAgICAgICAgICAgICAtLWRjLWNvZGUtc2hvcnQtbGluZS1oZWlnaHQ6IDE0cHg7XFxuICAgICAgICAgICAgICAgIC0tZGMtY29kZS1zaG9ydC1wYWRkaW5nOiAxcHggMnB4O1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmX20ueWZtIHtcXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMik7XFxuXFxuICAgICAgICAgICAgICAgIC0tZGMtY29kZS1mb250LXNpemU6IDE0cHg7XFxuICAgICAgICAgICAgICAgIC0tZGMtY29kZS1saW5lLWhlaWdodDogMjBweDtcXG5cXG4gICAgICAgICAgICAgICAgLS1kYy1jb2RlLXNob3J0LWZvbnQtc2l6ZTogMTRweDtcXG4gICAgICAgICAgICAgICAgLS1kYy1jb2RlLXNob3J0LWxpbmUtaGVpZ2h0OiAxNnB4O1xcbiAgICAgICAgICAgICAgICAtLWRjLWNvZGUtc2hvcnQtcGFkZGluZzogMXB4IDRweDtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJl9sLnlmbSB7XFxuICAgICAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTMpO1xcblxcbiAgICAgICAgICAgICAgICAtLWRjLWNvZGUtZm9udC1zaXplOiAxNnB4O1xcbiAgICAgICAgICAgICAgICAtLWRjLWNvZGUtbGluZS1oZWlnaHQ6IDI0cHg7XFxuXFxuICAgICAgICAgICAgICAgIC0tZGMtY29kZS1zaG9ydC1mb250LXNpemU6IDE2cHg7XFxuICAgICAgICAgICAgICAgIC0tZGMtY29kZS1zaG9ydC1saW5lLWhlaWdodDogMjBweDtcXG4gICAgICAgICAgICAgICAgLS1kYy1jb2RlLXNob3J0LXBhZGRpbmc6IDFweCA2cHg7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2JyZWFkY3J1bWJzIHtcXG4gICAgICAgIGhlaWdodDogNDBweDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgcGFkZGluZzogMCAzNnB4O1xcbiAgICB9XFxuXFxuICAgICZfX2ZlZWRiYWNrIHtcXG4gICAgICAgIG1hcmdpbi10b3A6IDg0cHg7XFxuICAgIH1cXG5cXG4gICAgJl9fdGl0bGUge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xcblxcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG5cXG4gICAgJl9fY29udGVudCB7XFxuICAgICAgICBmbGV4OiAxO1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNTBweDtcXG4gICAgfVxcblxcbiAgICAmX19jb250ZW50LW1pbmktdG9jIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xcbiAgICB9XFxuXFxuICAgICZfX3NlYXJjaC1iYXIge1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcXG4gICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xcbiAgICAgICAgcG9zaXRpb246IHN0aWNreTtcXG4gICAgICAgIHRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSArIDZweCk7XFxuICAgICAgICB6LWluZGV4OiAxMDE7XFxuICAgICAgICBwYWRkaW5nOiAwIDM2cHg7XFxuXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19zZWFyY2gtYmFyICsgJl9fYnJlYWRjcnVtYnMge1xcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcXG4gICAgfVxcblxcbiAgICAmX2Z1bGwtc2NyZWVuIHtcXG4gICAgICAgIC0tZGMtaGVhZGVyLWhlaWdodDogMHB4O1xcblxcbiAgICAgICAgJiAjeyRibG9ja31fX2JyZWFkY3J1bWJzIHtcXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDI0cHg7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAjeyRibG9ja31fX21haW4sXFxuICAgICAgICAmIC5kYy1uYXYtdG9jLXBhbmVsX19jb250ZW50IHtcXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDY0cHg7XFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogNjRweDtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX3JlZ3VsYXItcGFnZS13aWR0aCB7XFxuICAgICAgICB3aWR0aDogMTI4MHB4O1xcbiAgICB9XFxuXFxuICAgICYjeyZ9X3NpbmdsZS1wYWdlICZfX2hlYWRlci1jb250YWluZXIge1xcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjAwcHg7XFxuICAgIH1cXG5cXG4gICAgJiN7Jn1fZnVsbC1zY3JlZW4jeyZ9X3JlZ3VsYXItcGFnZS13aWR0aCB7XFxuICAgICAgICBtYXgtd2lkdGg6IDczNnB4O1xcblxcbiAgICAgICAgI3skYmxvY2t9X19tYWluIHtcXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICN7JGJsb2NrfV9fYnJlYWRjcnVtYnMge1xcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmIC5kYy1uYXYtdG9jLXBhbmVsX19jb250ZW50IHtcXG4gICAgICAgICAgICBtYXgtd2lkdGg6IDczNnB4O1xcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgICZfX21haW4ge1xcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfX2JyZWFkY3J1bWJzIHtcXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDIwcHg7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmX19jb250ZW50LW1pbmktdG9jIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfX3RvYy1uYXYtcGFuZWwge1xcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA1MHB4O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9fY29udHJvbHMge1xcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcXG5cXG4gICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX3NlcGFyYXRvciB7XFxuICAgICAgICBtYXJnaW46IDAgNXB4IDMycHggMDtcXG4gICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcXG4gICAgfVxcblxcbiAgICAmX19wYWdlLWNvbnRyaWJ1dG9ycyB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICB9XFxuXFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0NDBweCkge1xcbiAgICAgICAgJjpub3QoJl9yZWd1bGFyLXBhZ2Utd2lkdGgpIHtcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTM2cHgpIHtcXG4gICAgICAgICZfcmVndWxhci1wYWdlLXdpZHRoIHtcXG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcXG4gICAgICAgICYjeyZ9X2Z1bGwtc2NyZWVuI3smfV9yZWd1bGFyLXBhZ2Utd2lkdGggJl9fY29udHJvbHNfdmVydGljYWwge1xcbiAgICAgICAgICAgIHJpZ2h0OiAtMzZweDtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnQgKi9cXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTI4MHB4KSB7XFxuICAgICAgICAmX2Z1bGwtc2NyZWVuICZfX21haW4sXFxuICAgICAgICAmX2Z1bGwtc2NyZWVuIC5kYy1uYXYtdG9jLXBhbmVsX19jb250ZW50IHtcXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDQwcHggIWltcG9ydGFudDtcXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA0MHB4ICFpbXBvcnRhbnQ7XFxuICAgICAgICB9XFxuICAgICAgICAmX2Z1bGwtc2NyZWVuICZfX2JyZWFkY3J1bWJzIHtcXG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHggIWltcG9ydGFudDtcXG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4ICFpbXBvcnRhbnQ7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnQgKi9cXG59XFxuXCIsXCJAaW1wb3J0ICcuL3ZhcmlhYmxlcyc7XFxuXFxuQG1peGluIHRleHQtc2l6ZSgkbmFtZSkge1xcbiAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtI3skbmFtZX0tZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtI3skbmFtZX0tbGluZS1oZWlnaHQpO1xcbn1cXG5cXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSgpIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBsaXN0LXN0eWxlOiBub25lO1xcbn1cXG5cXG5AbWl4aW4gZml4QW5jaG9yUG9zaXRpb24oJG9mZnNldDogMHB4KSB7XFxuICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG4gICAgbWFyZ2luLXRvcDogY2FsYygjeyRvZmZzZXR9IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbn1cXG5cXG5AbWl4aW4gcmVzZXQtbGluay1zdHlsZSgpIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG59XFxuXFxuQG1peGluIGlzbGFuZHMtZm9jdXMoKSB7XFxuICAgIG91dGxpbmU6IG5vbmU7XFxuXFxuICAgIC51dGlsaXR5Zm9jdXMgJjpmb2N1cyB7XFxuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgI2ZmZGI0ZDtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbGluaygpIHtcXG4gICAgQGluY2x1ZGUgaXNsYW5kcy1mb2N1cygpO1xcblxcbiAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rKTtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuXFxuICAgICY6aG92ZXIsXFxuICAgICY6YWN0aXZlIHtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmstaG92ZXIpO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nMSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0yKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzIoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTEpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzMoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMik7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNCgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGhlYWRlci0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmc1KCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmc2KCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0zKTtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG59XFxuXFxuQG1peGluIGNvbnRyaWJ1dG9ycy10ZXh0KCkge1xcbiAgICBmb250LXNpemU6IDEzcHg7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgIG1hcmdpbi1yaWdodDogNXB4O1xcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XFxufVxcblxcbkBtaXhpbiB0ZXh0LWJvZHktMSgpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWJvZHktMS1mb250LXNpemUpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcXG59XFxuXFxuQG1peGluIGRlc2t0b3Atb25seSgpIHtcXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnbWQnKSAtIDEpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGRlc2t0b3AtdGFibGV0LW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3NtJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtdGFibGV0LW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWluLXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykpIHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIG1vYmlsZS1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZGMtZG9jLXBhZ2UtdGl0bGV7cG9zaXRpb246cmVsYXRpdmV9LmRjLWRvYy1wYWdlLXRpdGxlX19sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOi0xMXB4fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Eb2NQYWdlVGl0bGUvRG9jUGFnZVRpdGxlLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsbUJBQ0ksaUJBQUEsQ0FFQSwwQkFDSSxpQkFBQSxDQUNBLE1BQUEsQ0FDQSxTQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5kYy1kb2MtcGFnZS10aXRsZSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG5cXG4gICAgJl9fbGFiZWwge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgbGVmdDogMDtcXG4gICAgICAgIHRvcDogLTExcHg7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kYy1lZGl0LWJ1dHRvbntwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowfS5kYy1lZGl0LWJ1dHRvbl9fdGV4dHttYXJnaW4tbGVmdDo4cHh9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL0VkaXRCdXR0b24vRWRpdEJ1dHRvbi5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGdCQUNJLGlCQUFBLENBQ0EsT0FBQSxDQUVBLHNCQUNJLGVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmRjLWVkaXQtYnV0dG9uIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICByaWdodDogMDtcXG5cXG4gICAgJl9fdGV4dCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogOHB4O1xcbiAgICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZGMtZmVlZGJhY2tfX2NvbnRhaW5lcl92aWV3X3dpZGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJX0uZGMtZmVlZGJhY2tfX2NvbnRhaW5lci1yb3d7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MTAwJTtwYWRkaW5nOjI4cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpO2JvcmRlci1yYWRpdXM6OHB4fS5kYy1mZWVkYmFja19fY29udGFpbmVyLXJvd192aWV3X3dpZGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZGMtZmVlZGJhY2tfX2xpa2UtYnV0dG9uX2FjdGl2ZXtjb2xvcjp2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpfS5kYy1mZWVkYmFja19fc3VjY2Vzcy1wb3B1cHtwYWRkaW5nOjE2cHggNTBweCAxNnB4IDE2cHg7d2lkdGg6MzIwcHh9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzc1cHgpey5kYy1mZWVkYmFja19fc3VjY2Vzcy1wb3B1cF92aWV3X3dpZGV7cmlnaHQ6MCAhaW1wb3J0YW50O2xlZnQ6MCAhaW1wb3J0YW50O21hcmdpbjphdXRvfX0uZGMtZmVlZGJhY2tfX3ZhcmlhbnRzLXBvcHVwe3BhZGRpbmc6MTZweDt3aWR0aDozMjBweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNzVweCl7LmRjLWZlZWRiYWNrX192YXJpYW50cy1wb3B1cF92aWV3X3dpZGV7cmlnaHQ6MCAhaW1wb3J0YW50O2xlZnQ6MCAhaW1wb3J0YW50O21hcmdpbjphdXRvfX0uZGMtZmVlZGJhY2tfX3BvcHVwLXRpdGxle2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0KTtwYWRkaW5nLWJvdHRvbTo4cHh9LmRjLWZlZWRiYWNrX19wb3B1cC10ZXh0e2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpfS5kYy1mZWVkYmFja19fdmFyaWFudHN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtwYWRkaW5nOjhweCAwfS5kYy1mZWVkYmFja19fdmFyaWFudHttYXJnaW4tYm90dG9tOjhweDt3aGl0ZS1zcGFjZTpub3JtYWx9LmRjLWZlZWRiYWNrX192YXJpYW50Omxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfS5kYy1mZWVkYmFja19fdmFyaWFudHMtYWN0aW9uc3twYWRkaW5nLXRvcDo4cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZGMtZmVlZGJhY2tfX3ZhcmlhbnRzLWFjdGlvbnttYXJnaW4tbGVmdDoxMHB4fS5kYy1mZWVkYmFja19fdGV4dGFyZWF7cGFkZGluZzo4cHggMH0uZGMtZmVlZGJhY2tfX3RpdGxlX3ZpZXdfd2lkZXtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTItZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7bWFyZ2luLXJpZ2h0OjE2cHg7Zm9udC13ZWlnaHQ6NDAwfS5kYy1mZWVkYmFja19fY29udHJvbHN7ZGlzcGxheTpmbGV4O2dhcDoxMHB4fS5kYy1mZWVkYmFja19fY29udHJvbHNfdmlld193aWRle2Rpc3BsYXk6ZmxleH0uZGMtZmVlZGJhY2tfX2NvbnRyb2w6bGFzdC1jaGlsZHtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxOHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmRjLWZlZWRiYWNrX19jb250cm9sX3ZpZXdfd2lkZXttYXJnaW4tcmlnaHQ6MTJweH0uZGMtZmVlZGJhY2tfX2NvbnRyb2xfdmlld193aWRlOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmRjLWZlZWRiYWNrX19jb250cm9sX3ZpZXdfcmVndWxhcnttYXJnaW4tcmlnaHQ6NHB4fS5kYy1mZWVkYmFja19fY29udHJvbF92aWV3X3JlZ3VsYXI6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uZGMtZmVlZGJhY2tfX2ZlZWRiYWNrLWJ1dHRvbl9hY3RpdmV7Y29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKX1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvRmVlZGJhY2svRmVlZGJhY2suc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvdmFyaWFibGVzLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBa0JRLGtDQUNJLFlBQUEsQ0FDQSxrQkFBQSxDQUNBLHFCQUFBLENBQ0EsVUFBQSxDQUlSLDRCQUNJLFlBQUEsQ0FDQSxzQkFBQSxDQUNBLFVBQUEsQ0FDQSxZQUFBLENBRUEsNkNBQUEsQ0FDQSxpQkFBQSxDQUVBLHNDQUNJLFlBQUEsQ0FDQSxrQkFBQSxDQUtKLGlDQUNJLGtDQUFBLENBSVIsNEJBQ0ksMkJBQUEsQ0FDQSxXQTlDSyxDQUdULHFDQUNJLHNDQUVJLGtCQUFBLENBQ0EsaUJBQUEsQ0FDQSxXQUFBLENBQUEsQ0E2Q1IsNkJBQ0ksWUNqRE8sQ0RrRFAsV0F2REssQ0FHVCxxQ0FDSSx1Q0FFSSxrQkFBQSxDQUNBLGlCQUFBLENBQ0EsV0FBQSxDQUFBLENBc0RSLDBCQUNJLHlDQUFBLENBQ0EsNkNBQUEsQ0FDQSxrQkFBQSxDQUdKLHlCQUNJLDZDQUFBLENBQ0EsaURBQUEsQ0FHSix1QkFDSSxZQUFBLENBQ0EscUJBQUEsQ0FDQSxhQUFBLENBR0osc0JBQ0ksaUJBQUEsQ0FDQSxrQkFBQSxDQUdKLGlDQUNJLGVBQUEsQ0FHSiwrQkFDSSxlQUFBLENBQ0EsWUFBQSxDQUNBLHdCQUFBLENBR0osOEJBQ0ksZ0JBQUEsQ0FHSix1QkFDSSxhQUFBLENBSUEsOEJBQ0kseUNBQUEsQ0FDQSw2Q0FBQSxDQUNBLGlCQUFBLENBQ0EsZUFBQSxDQUlSLHVCQUNJLFlBQUEsQ0FDQSxRQUFBLENBRUEsaUNBQ0ksWUFBQSxDQUtKLGlDQUNJLGNBQUEsQ0FDQSxnQkFBQSxDQUNBLFlBQUEsQ0FDQSxrQkFBQSxDQUdKLGdDQUNJLGlCQUFBLENBRUEsMkNBQ0ksY0FBQSxDQUlSLG1DQUNJLGdCQUFBLENBRUEsOENBQ0ksY0FBQSxDQU1SLHFDQUNJLGtDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xcblxcbiRwb3B1cFdpZHRoOiAzMjBweDtcXG5cXG5AbWl4aW4gdG9vbHRpcC1pbi1jZW50ZXIge1xcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ3hzJykpIHtcXG4gICAgICAgICYge1xcbiAgICAgICAgICAgIC8vIHN0eWxlbGludC1kaXNhYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudFxcbiAgICAgICAgICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgbGVmdDogMCAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgIG1hcmdpbjogYXV0bztcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cXG4uZGMtZmVlZGJhY2sge1xcbiAgICAmX19jb250YWluZXIge1xcbiAgICAgICAgJl92aWV3X3dpZGUge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2NvbnRhaW5lci1yb3cge1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICBwYWRkaW5nOiAyOHB4O1xcblxcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljKTtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcXG5cXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fbGlrZS1idXR0b24ge1xcbiAgICAgICAgJl9hY3RpdmUge1xcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX3N1Y2Nlc3MtcG9wdXAge1xcbiAgICAgICAgcGFkZGluZzogJHBvcHVwUGFkZGluZyA1MHB4ICRwb3B1cFBhZGRpbmcgJHBvcHVwUGFkZGluZztcXG4gICAgICAgIHdpZHRoOiAkcG9wdXBXaWR0aDtcXG5cXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBAaW5jbHVkZSB0b29sdGlwLWluLWNlbnRlcigpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX3ZhcmlhbnRzLXBvcHVwIHtcXG4gICAgICAgIHBhZGRpbmc6ICRwb3B1cFBhZGRpbmc7XFxuICAgICAgICB3aWR0aDogJHBvcHVwV2lkdGg7XFxuXFxuICAgICAgICAmX3ZpZXdfd2lkZSB7XFxuICAgICAgICAgICAgQGluY2x1ZGUgdG9vbHRpcC1pbi1jZW50ZXIoKTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19wb3B1cC10aXRsZSB7XFxuICAgICAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7XFxuICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO1xcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDtcXG4gICAgfVxcblxcbiAgICAmX19wb3B1cC10ZXh0IHtcXG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7XFxuICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtcXG4gICAgfVxcblxcbiAgICAmX192YXJpYW50cyB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xcbiAgICB9XFxuXFxuICAgICZfX3ZhcmlhbnQge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXG4gICAgfVxcblxcbiAgICAmX192YXJpYW50Omxhc3QtY2hpbGQge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gICAgfVxcblxcbiAgICAmX192YXJpYW50cy1hY3Rpb25zIHtcXG4gICAgICAgIHBhZGRpbmctdG9wOiA4cHg7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgfVxcblxcbiAgICAmX192YXJpYW50cy1hY3Rpb24ge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XFxuICAgIH1cXG5cXG4gICAgJl9fdGV4dGFyZWEge1xcbiAgICAgICAgcGFkZGluZzogOHB4IDA7XFxuICAgIH1cXG5cXG4gICAgJl9fdGl0bGUge1xcbiAgICAgICAgJl92aWV3X3dpZGUge1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTItZm9udC1zaXplKTtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO1xcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDtcXG4gICAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2NvbnRyb2xzIHtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBnYXA6IDEwcHg7XFxuXFxuICAgICAgICAmX3ZpZXdfd2lkZSB7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19jb250cm9sIHtcXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XFxuXFxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcXG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfdmlld19yZWd1bGFyIHtcXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcXG5cXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2ZlZWRiYWNrLWJ1dHRvbiB7XFxuICAgICAgICAmX2FjdGl2ZSB7XFxuICAgICAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7XFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuXCIsXCIvLyBTaXplc1xcbiRoZWFkZXJIZWlnaHQ6IDBweDtcXG4kbm9ybWFsT2Zmc2V0OiAyMHB4O1xcbiRtaW5pVG9jT2Zmc2V0OiA1NnB4O1xcbiRibG9ja01hcmdpbkJvdHRvbUxhcmdlOiAyMHB4O1xcbiRibG9ja01hcmdpbkJvdHRvbU1lZGl1bTogMTVweDtcXG4kaGVhZGVyTWFyZ2luVG9wTGFyZ2U6IDQwcHg7XFxuJGhlYWRlck1hcmdpblRvcE1lZGl1bTogMzJweDtcXG4kcG9wdXBQYWRkaW5nOiAxNnB4O1xcbiRjZW50ZXJCbG9ja01heFdpZHRoOiA3MzZweDtcXG5cXG4kc2NyZWVuQnJlYWtwb2ludHM6IChcXG4gICAgJ3hzJzogMzc1cHgsXFxuICAgICdzbSc6IDU3N3B4LFxcbiAgICAnbWQnOiA3NjlweCxcXG4gICAgJ2xnJzogMTA4MXB4LFxcbiAgICAneGwnOiAxMTg1cHgsXFxuKTtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLW1hcmt7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1mYW1pbHk6XFxcIllTIFRleHRcXFwiLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6Ym9sZDtsaW5lLWhlaWdodDoxfS5kYy1tYXJrX2NvbG9yX2JsdWV7Y29sb3I6IzY3YjBmOH0uZGMtbWFya19jb2xvcl9ncmVlbntjb2xvcjojNTZiZDY3fS5kYy1tYXJrX3NpemVfc3tmb250LXNpemU6MTBweDtsZXR0ZXItc3BhY2luZzouMjVweH0uZGMtbWFya19zaXplX217Zm9udC1zaXplOjEycHg7bGV0dGVyLXNwYWNpbmc6LjNweH1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvTWFyay9NYXJrLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsU0FDSSxvQkFBQSxDQUNBLGdDQUFBLENBQ0EsZ0JBQUEsQ0FDQSxhQUFBLENBR0ksb0JBQ0ksYUFBQSxDQUdKLHFCQUNJLGFBQUEsQ0FLSixnQkFDSSxjQUFBLENBQ0Esb0JBQUEsQ0FHSixnQkFDSSxjQUFBLENBQ0EsbUJBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmRjLW1hcmsge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgIGZvbnQtZmFtaWx5OiAnWVMgVGV4dCcsIHNhbnMtc2VyaWY7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBsaW5lLWhlaWdodDogMTtcXG5cXG4gICAgJl9jb2xvciB7XFxuICAgICAgICAmX2JsdWUge1xcbiAgICAgICAgICAgIGNvbG9yOiAjNjdiMGY4O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9ncmVlbiB7XFxuICAgICAgICAgICAgY29sb3I6ICM1NmJkNjc7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9zaXplIHtcXG4gICAgICAgICZfcyB7XFxuICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjI1cHg7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmX20ge1xcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcXG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zcHg7XFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kYy1taW5pLXRvY19fdGl0bGV7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO21hcmdpbi1ib3R0b206MTJweH0uZGMtbWluaS10b2NfX3NlY3Rpb25ze21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7aGVpZ2h0OmNhbGMoXFxuICAgICAgICAgICAgMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpIC0gNTZweCAtIHZhcigtLWRjLXN1YmhlYWRlci1oZWlnaHQpXFxuICAgICAgICApO292ZXJmbG93LXk6YXV0bztvdmVyZmxvdy14OmhpZGRlbn0uZGMtbWluaS10b2NfX3NlY3Rpb257ZGlzcGxheTpibG9ja30uZGMtbWluaS10b2NfX3NlY3Rpb24+LmRjLW1pbmktdG9jX19zZWN0aW9uLWxpbmt7Ym9yZGVyLWxlZnQtY29sb3I6dmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljKX0uZGMtbWluaS10b2NfX3NlY3Rpb24tbGlua3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6NnB4IDZweCA2cHggMTJweDttaW4taGVpZ2h0OjI4cHg7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1zZWNvbmRhcnkpO2JvcmRlci1sZWZ0OjJweCBzb2xpZCByZ2JhKDAsMCwwLDApO3RleHQtZGVjb3JhdGlvbjpub25lfS5kYy1taW5pLXRvY19fc2VjdGlvbi1saW5rOmhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeSl9LmRjLW1pbmktdG9jX19zZWN0aW9uX2NoaWxkIC5kYy1taW5pLXRvY19fc2VjdGlvbi1saW5re3BhZGRpbmctbGVmdDoyNXB4fS5kYy1taW5pLXRvY19fc2VjdGlvbl9hY3RpdmU+LmRjLW1pbmktdG9jX19zZWN0aW9uLWxpbmt7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtib3JkZXItbGVmdC1jb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9NaW5pVG9jL01pbmlUb2Muc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBTUksb0JDSEEseUNBQUEsQ0FDQSw2Q0FBQSxDRElJLGVBQUEsQ0FDQSxrQ0FBQSxDQUNBLGtCQUFBLENBR0osdUJDTEEsUUFBQSxDQUNBLFNBQUEsQ0FDQSxlQUFBLENETUk7O1NBQUEsQ0FHQSxlQUFBLENBQ0EsaUJBQUEsQ0FHSixzQkFDSSxhQUFBLENBRUEsaURBQ0ksOENBQUEsQ0FHSiwyQkFDSSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSx3QkFBQSxDQUNBLGVBQUEsQ0FFQSxvQ0FBQSxDQUNBLG1DQUFBLENBQ0Esb0JBQUEsQ0FFQSxpQ0FDSSx3Q0FBQSxDQUtKLHVEQUNJLGlCQUFBLENBSVIsd0RBQ0ksa0NBQUEsQ0FDQSw4Q0FBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcXG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcXG5cXG4uZGMtbWluaS10b2Mge1xcbiAgICAkY2xhc3M6ICY7XFxuXFxuICAgICZfX3RpdGxlIHtcXG4gICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTIpO1xcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcXG4gICAgfVxcblxcbiAgICAmX19zZWN0aW9ucyB7XFxuICAgICAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XFxuXFxuICAgICAgICBoZWlnaHQ6IGNhbGMoXFxuICAgICAgICAgICAgMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSAtICN7JG1pbmlUb2NPZmZzZXR9IC0gdmFyKC0tZGMtc3ViaGVhZGVyLWhlaWdodClcXG4gICAgICAgICk7XFxuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xcbiAgICB9XFxuXFxuICAgICZfX3NlY3Rpb24ge1xcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XFxuXFxuICAgICAgICAmID4gI3skY2xhc3N9X19zZWN0aW9uLWxpbmsge1xcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJi1saW5rIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAgcGFkZGluZzogNnB4IDZweCA2cHggMTJweDtcXG4gICAgICAgICAgICBtaW4taGVpZ2h0OiAyOHB4O1xcblxcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXNlY29uZGFyeSk7XFxuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuXFxuICAgICAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWNvbXBsZW1lbnRhcnkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfY2hpbGQge1xcbiAgICAgICAgICAgICN7JGNsYXNzfV9fc2VjdGlvbi1saW5rIHtcXG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAyNXB4O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfYWN0aXZlID4gI3skY2xhc3N9X19zZWN0aW9uLWxpbmsge1xcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLXNlYXJjaC1iYXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXItcmFkaXVzOjVweDtib3gtc2hhZG93OjBweCAzcHggMTBweCB2YXIoLS15Yy1jb2xvci1zZngtc2hhZG93KTtwYWRkaW5nOjExcHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KX0uZGMtc2VhcmNoLWJhcl9fc2VhcmNoLXF1ZXJ5LWxhYmVse2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW59QG1lZGlhKG1heC13aWR0aDogNzcwcHgpey5kYy1zZWFyY2gtYmFyX19zZWFyY2gtcXVlcnktbGFiZWx7ZGlzcGxheTpub25lfX0uZGMtc2VhcmNoLWJhcl9fc2VhcmNoLXF1ZXJ5e21heC13aWR0aDo0MDBweDt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW59QG1lZGlhKG1heC13aWR0aDogNzcwcHgpey5kYy1zZWFyY2gtYmFyX19zZWFyY2gtcXVlcnl7ZGlzcGxheTpub25lfX0uZGMtc2VhcmNoLWJhcl9fbGVmdHt3aWR0aDo5MCU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0uZGMtc2VhcmNoLWJhcl9fbmF2aWdhdGlvbntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1yaWdodDoxMXB4fS5kYy1zZWFyY2gtYmFyX19uZXh0LWFycm93e3RyYW5zZm9ybTpyb3RhdGUoLTE4MGRlZyl9LmRjLXNlYXJjaC1iYXJfX2NvdW50ZXJ7bWFyZ2luOjAgNHB4fS5kYy1zZWFyY2gtaGlnaGxpZ2h0ZWR7YmFja2dyb3VuZDp2YXIoLS1kYy10ZXh0LWhpZ2hsaWdodCl9LmRjLXNlYXJjaC1oaWdobGlnaHRlZF9zZWxlY3RlZHtiYWNrZ3JvdW5kOnZhcigtLWRjLXRleHQtaGlnaGxpZ2h0LXNlbGVjdGVkKX0ueWMtcm9vdF90aGVtZV9kYXJrIC5kYy1zZWFyY2gtaGlnaGxpZ2h0ZWQsLnljLXJvb3RfdGhlbWVfZGFyayAuZGMtc2VhcmNoLWhpZ2hsaWdodGVkX3NlbGVjdGVke2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeSl9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1NlYXJjaEJhci9TZWFyY2hCYXIuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFHQSxlQUNJLFVBQUEsQ0FDQSxXQUFBLENBQ0EsaUJBQUEsQ0FDQSxrREFBQSxDQUNBLFlBQUEsQ0FDQSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSw2QkFBQSxDQUVBLDZDQUFBLENBQ0EsaURBQUEsQ0FFQSxtQ0FDSSxvQ0FBQSxDQUNBLGtCQUFBLENBQ0Esc0JBQUEsQ0FDQSxlQUFBLENBRUEseUJBTkosbUNBT1EsWUFBQSxDQUFBLENBSVIsNkJBQ0ksZUFBQSxDQUNBLGtCQUFBLENBQ0Esc0JBQUEsQ0FDQSxlQUFBLENBRUEseUJBTkosNkJBT1EsWUFBQSxDQUFBLENBSVIscUJBQ0ksU0FBQSxDQUNBLFlBQUEsQ0FDQSxrQkFBQSxDQUdKLDJCQUNJLFlBQUEsQ0FDQSxrQkFBQSxDQUNBLGlCQUFBLENBR0osMkJBQ0kseUJBQUEsQ0FHSix3QkFDSSxZQUFBLENBTVIsdUJBQ0ksbUNBQUEsQ0FFQSxnQ0FDSSw0Q0FBQSxDQUtKLCtGQUVJLDJDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy92YXJpYWJsZXMnO1xcbkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xcblxcbi5kYy1zZWFyY2gtYmFyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xcbiAgICBib3gtc2hhZG93OiAwcHggM3B4IDEwcHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyk7XFxuICAgIHBhZGRpbmc6IDExcHg7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1zaG9ydC1saW5lLWhlaWdodCk7XFxuXFxuICAgICZfX3NlYXJjaC1xdWVyeS1sYWJlbCB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG5cXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgKyAxKSB7XFxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19zZWFyY2gtcXVlcnkge1xcbiAgICAgICAgbWF4LXdpZHRoOiA0MDBweDtcXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuXFxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpICsgMSkge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fbGVmdCB7XFxuICAgICAgICB3aWR0aDogOTAlO1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIH1cXG5cXG4gICAgJl9fbmF2aWdhdGlvbiB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTFweDtcXG4gICAgfVxcblxcbiAgICAmX19uZXh0LWFycm93IHtcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpO1xcbiAgICB9XFxuXFxuICAgICZfX2NvdW50ZXIge1xcbiAgICAgICAgbWFyZ2luOiAwIDRweDtcXG4gICAgfVxcbn1cXG5cXG4kaGwtY2xhc3M6ICcuZGMtc2VhcmNoLWhpZ2hsaWdodGVkJztcXG5cXG4jeyRobC1jbGFzc30ge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kYy10ZXh0LWhpZ2hsaWdodCk7XFxuXFxuICAgICZfc2VsZWN0ZWQge1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGMtdGV4dC1oaWdobGlnaHQtc2VsZWN0ZWQpO1xcbiAgICB9XFxufVxcblxcbi55Yy1yb290X3RoZW1lX2Rhcmsge1xcbiAgICAmICN7JGhsLWNsYXNzfSxcXG4gICAgJiAjeyRobC1jbGFzc31fc2VsZWN0ZWQge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeSk7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kYy1zdWJzY3JpYmVfX2NvbnRhaW5lcl92aWV3X3dpZGV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJX0uZGMtc3Vic2NyaWJlX19jb250YWluZXItcm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjEwMCU7cGFkZGluZzoyOHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljKTtib3JkZXItcmFkaXVzOjhweH0uZGMtc3Vic2NyaWJlX19jb250YWluZXItcm93X3ZpZXdfd2lkZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kYy1zdWJzY3JpYmVfX3N1Y2Nlc3MtcG9wdXB7cGFkZGluZzoxNnB4O3dpZHRoOjMyMHB4fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDM3NXB4KXsuZGMtc3Vic2NyaWJlX19zdWNjZXNzLXBvcHVwX3ZpZXdfd2lkZXtyaWdodDowICFpbXBvcnRhbnQ7bGVmdDowICFpbXBvcnRhbnQ7bWFyZ2luOmF1dG99fS5kYy1zdWJzY3JpYmVfX3ZhcmlhbnRzLXBvcHVwe3BhZGRpbmc6MTZweDt3aWR0aDozMjBweH1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNzVweCl7LmRjLXN1YnNjcmliZV9fdmFyaWFudHMtcG9wdXBfdmlld193aWRle3JpZ2h0OjAgIWltcG9ydGFudDtsZWZ0OjAgIWltcG9ydGFudDttYXJnaW46YXV0b319LmRjLXN1YnNjcmliZV9fcG9wdXAtdGl0bGV7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keTItZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHkyLWxpbmUtaGVpZ2h0KTtwYWRkaW5nLWJvdHRvbTo4cHh9LmRjLXN1YnNjcmliZV9fcG9wdXAtdGV4dHtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCl9LmRjLXN1YnNjcmliZV9fdmFyaWFudHMtYWN0aW9uc3tkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5kYy1zdWJzY3JpYmVfX3ZhcmlhbnRzLWFjdGlvbnttYXJnaW4tbGVmdDoxMHB4fS5kYy1zdWJzY3JpYmVfX3ZhcmlhbnRfX2xpc3QtaXRlbXtwYWRkaW5nOjZweCAxMnB4fS5kYy1zdWJzY3JpYmVfX3RleHRhcmVhe3BhZGRpbmc6OHB4IDB9LmRjLXN1YnNjcmliZV9fdGl0bGVfdmlld193aWRle2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHkyLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5Mi1saW5lLWhlaWdodCk7bWFyZ2luLXJpZ2h0OjE2cHg7Zm9udC13ZWlnaHQ6NDAwfS5kYy1zdWJzY3JpYmVfX2NvbnRyb2xze2Rpc3BsYXk6ZmxleH0uZGMtc3Vic2NyaWJlX19jb250cm9sc192aWV3X3dpZGV7ZGlzcGxheTpmbGV4fS5kYy1zdWJzY3JpYmVfX2NvbnRyb2w6bGFzdC1jaGlsZHtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxOHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmRjLXN1YnNjcmliZV9fY29udHJvbF92aWV3X3dpZGV7bWFyZ2luLXJpZ2h0OjEycHh9LmRjLXN1YnNjcmliZV9fY29udHJvbF92aWV3X3dpZGU6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uZGMtc3Vic2NyaWJlX19jb250cm9sX3ZpZXdfcmVndWxhcnttYXJnaW4tcmlnaHQ6NHB4fS5kYy1zdWJzY3JpYmVfX2NvbnRyb2xfdmlld19yZWd1bGFyOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmRjLXN1YnNjcmliZV9fc3Vic2NyaWJlLWJ1dHRvbnt3aWR0aDoxNnB4O2hlaWdodDoxNnB4fS5kYy1zdWJzY3JpYmVfX3N1YnNjcmliZS1idXR0b25fdmlld193aWRle21hcmdpbi1yaWdodDo4cHh9LmRjLXN1YnNjcmliZV9fc3Vic2NyaWJlLWJ1dHRvbl9hY3RpdmV7Y29sb3I6dmFyKC0teWMtY29sb3ItYnV0dG9uLWFjY2VudC1iYWNrZ3JvdW5kKX1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvU3Vic2NyaWJlL1N1YnNjcmliZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy92YXJpYWJsZXMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFrQlEsbUNBQ0ksWUFBQSxDQUNBLGtCQUFBLENBQ0EscUJBQUEsQ0FDQSxVQUFBLENBSVIsNkJBQ0ksWUFBQSxDQUNBLHNCQUFBLENBQ0EsVUFBQSxDQUNBLFlBQUEsQ0FFQSw2Q0FBQSxDQUNBLGlCQUFBLENBRUEsdUNBQ0ksWUFBQSxDQUNBLGtCQUFBLENBSVIsNkJBQ0ksWUNsQ08sQ0RtQ1AsV0F4Q0ssQ0FHVCxxQ0FDSSx1Q0FFSSxrQkFBQSxDQUNBLGlCQUFBLENBQ0EsV0FBQSxDQUFBLENBdUNSLDhCQUNJLFlDM0NPLENENENQLFdBakRLLENBR1QscUNBQ0ksd0NBRUksa0JBQUEsQ0FDQSxpQkFBQSxDQUNBLFdBQUEsQ0FBQSxDQWdEUiwyQkFDSSx3Q0FBQSxDQUNBLDRDQUFBLENBQ0Esa0JBQUEsQ0FHSiwwQkFDSSx5Q0FBQSxDQUNBLDZDQUFBLENBR0osZ0NBQ0ksWUFBQSxDQUNBLHdCQUFBLENBR0osK0JBQ0ksZ0JBQUEsQ0FHSixrQ0FDSSxnQkFBQSxDQUdKLHdCQUNJLGFBQUEsQ0FJQSwrQkFDSSx3Q0FBQSxDQUNBLDRDQUFBLENBQ0EsaUJBQUEsQ0FDQSxlQUFBLENBSVIsd0JBQ0ksWUFBQSxDQUVBLGtDQUNJLFlBQUEsQ0FLSixrQ0FDSSxjQUFBLENBQ0EsZ0JBQUEsQ0FDQSxZQUFBLENBQ0Esa0JBQUEsQ0FHSixpQ0FDSSxpQkFBQSxDQUVBLDRDQUNJLGNBQUEsQ0FJUixvQ0FDSSxnQkFBQSxDQUVBLCtDQUNJLGNBQUEsQ0FLWixnQ0FDSSxVQUFBLENBQ0EsV0FBQSxDQUVBLDBDQUNJLGdCQUFBLENBR0osdUNBQ0ksOENBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XFxuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XFxuXFxuJHBvcHVwV2lkdGg6IDMyMHB4O1xcblxcbkBtaXhpbiB0b29sdGlwLWluLWNlbnRlciB7XFxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAneHMnKSkge1xcbiAgICAgICAgJiB7XFxuICAgICAgICAgICAgLy8gc3R5bGVsaW50LWRpc2FibGUgZGVjbGFyYXRpb24tbm8taW1wb3J0YW50XFxuICAgICAgICAgICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcXG4gICAgICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XFxuICAgICAgICAgICAgbWFyZ2luOiBhdXRvO1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblxcbi5kYy1zdWJzY3JpYmUge1xcbiAgICAmX19jb250YWluZXIge1xcbiAgICAgICAgJl92aWV3X3dpZGUge1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2NvbnRhaW5lci1yb3cge1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgICBwYWRkaW5nOiAyOHB4O1xcblxcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljKTtcXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcXG5cXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fc3VjY2Vzcy1wb3B1cCB7XFxuICAgICAgICBwYWRkaW5nOiAkcG9wdXBQYWRkaW5nO1xcbiAgICAgICAgd2lkdGg6ICRwb3B1cFdpZHRoO1xcblxcbiAgICAgICAgJl92aWV3X3dpZGUge1xcbiAgICAgICAgICAgIEBpbmNsdWRlIHRvb2x0aXAtaW4tY2VudGVyKCk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fdmFyaWFudHMtcG9wdXAge1xcbiAgICAgICAgcGFkZGluZzogJHBvcHVwUGFkZGluZztcXG4gICAgICAgIHdpZHRoOiAkcG9wdXBXaWR0aDtcXG5cXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBAaW5jbHVkZSB0b29sdGlwLWluLWNlbnRlcigpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX3BvcHVwLXRpdGxlIHtcXG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5Mi1mb250LXNpemUpO1xcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keTItbGluZS1oZWlnaHQpO1xcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDtcXG4gICAgfVxcblxcbiAgICAmX19wb3B1cC10ZXh0IHtcXG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICAgIH1cXG5cXG4gICAgJl9fdmFyaWFudHMtYWN0aW9ucyB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gICAgfVxcblxcbiAgICAmX192YXJpYW50cy1hY3Rpb24ge1xcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XFxuICAgIH1cXG5cXG4gICAgJl9fdmFyaWFudF9fbGlzdC1pdGVtIHtcXG4gICAgICAgIHBhZGRpbmc6IDZweCAxMnB4O1xcbiAgICB9XFxuXFxuICAgICZfX3RleHRhcmVhIHtcXG4gICAgICAgIHBhZGRpbmc6IDhweCAwO1xcbiAgICB9XFxuXFxuICAgICZfX3RpdGxlIHtcXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keTItZm9udC1zaXplKTtcXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5Mi1saW5lLWhlaWdodCk7XFxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fY29udHJvbHMge1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG5cXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2NvbnRyb2wge1xcbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcXG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XFxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE4cHg7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl92aWV3X3dpZGUge1xcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTJweDtcXG5cXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl92aWV3X3JlZ3VsYXIge1xcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcblxcbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XFxuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fc3Vic2NyaWJlLWJ1dHRvbiB7XFxuICAgICAgICB3aWR0aDogMTZweDtcXG4gICAgICAgIGhlaWdodDogMTZweDtcXG5cXG4gICAgICAgICZfdmlld193aWRlIHtcXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICZfYWN0aXZlIHtcXG4gICAgICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItYnV0dG9uLWFjY2VudC1iYWNrZ3JvdW5kKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cIixcIi8vIFNpemVzXFxuJGhlYWRlckhlaWdodDogMHB4O1xcbiRub3JtYWxPZmZzZXQ6IDIwcHg7XFxuJG1pbmlUb2NPZmZzZXQ6IDU2cHg7XFxuJGJsb2NrTWFyZ2luQm90dG9tTGFyZ2U6IDIwcHg7XFxuJGJsb2NrTWFyZ2luQm90dG9tTWVkaXVtOiAxNXB4O1xcbiRoZWFkZXJNYXJnaW5Ub3BMYXJnZTogNDBweDtcXG4kaGVhZGVyTWFyZ2luVG9wTWVkaXVtOiAzMnB4O1xcbiRwb3B1cFBhZGRpbmc6IDE2cHg7XFxuJGNlbnRlckJsb2NrTWF4V2lkdGg6IDczNnB4O1xcblxcbiRzY3JlZW5CcmVha3BvaW50czogKFxcbiAgICAneHMnOiAzNzVweCxcXG4gICAgJ3NtJzogNTc3cHgsXFxuICAgICdtZCc6IDc2OXB4LFxcbiAgICAnbGcnOiAxMDgxcHgsXFxuICAgICd4bCc6IDExODVweCxcXG4pO1xcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuZGMtdG9je2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OmNhbGMoMTAwdmggLSB2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpKTtvdmVyZmxvdy15OmhpZGRlbjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyl9LmRjLXRvY19fZW1wdHl7cGFkZGluZzo1cHggMTVweCA1cHggMjRweH0uZGMtdG9jX190b3B7ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6MTBweCAxMHB4IDhweCAwfS5kYy10b2NfX3RvcF9zY3JvbGxlZHtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpfS5kYy10b2NfX3RvcC1oZWFkZXItaWNvbntkaXNwbGF5OmZsZXg7bWFyZ2luLXJpZ2h0OjVweDtmbGV4LXNocmluazowfS5kYy10b2NfX3RvcC1oZWFkZXJ7ZmxleC1ncm93OjA7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OjUwMH0uZGMtdG9jX190b3AtaGVhZGVyX2xpbmt7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kYy10b2NfX3RvcC1oZWFkZXJfbGluazpob3ZlcntvdXRsaW5lOm5vbmU7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rKTt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcjtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpfS51dGlsaXR5Zm9jdXMgLmRjLXRvY19fdG9wLWhlYWRlcl9saW5rOmhvdmVyOmZvY3Vze291dGxpbmU6MnB4IHNvbGlkICNmZmRiNGR9LmRjLXRvY19fdG9wLWhlYWRlcl9saW5rOmhvdmVyOmhvdmVyLC5kYy10b2NfX3RvcC1oZWFkZXJfbGluazpob3ZlcjphY3RpdmV7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKX0uZGMtdG9jX19ib3R0b217ZmxleC1ncm93OjA7ZmxleC1zaHJpbms6MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3BhZGRpbmc6NHB4IDEwcHggMjBweCAwfS5kYy10b2NfX2JvdHRvbV9zY3JvbGxlZHtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpfS5kYy10b2NfX2NvbnRlbnR7LS15Yy1zY3JvbGxiYXItd2lkdGg6IDZweDstLXljLXNjcm9sbGJhci10aGluLXdpZHRoOiA2cHg7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1ncm93OjE7b3ZlcmZsb3cteTphdXRvO3Njcm9sbGJhci13aWR0aDp0aGlufS5kYy10b2NfX2NvbnRlbnRfb2Zmc2V0X3RvcHtwYWRkaW5nLXRvcDoyNHB4fS5kYy10b2NfX2xpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtkaXNwbGF5OmJsb2NrfS5kYy10b2NfX2xpc3QtaXRlbXtjdXJzb3I6cG9pbnRlcjt1c2VyLXNlbGVjdDpub25lfS5kYy10b2NfX2xpc3QtaXRlbV9tYWluPio6Zmlyc3QtY2hpbGR7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KX0uZGMtdG9jX19saXN0LWl0ZW06bm90KC5kYy10b2NfX2xpc3QtaXRlbV9vcGVuZWQpPi5kYy10b2NfX2xpc3R7ZGlzcGxheTpub25lfS5kYy10b2NfX2xpc3QtaXRlbT4uZGMtdG9jX19saXN0e3BhZGRpbmctbGVmdDoyMHB4fS5kYy10b2NfX2NvbnRlbnQ+LmRjLXRvY19fbGlzdHtwYWRkaW5nLXJpZ2h0OjIxcHg7cGFkZGluZy1ib3R0b206MzBweH1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL2J1aWxkL2NvbXBvbmVudHMvVG9jL1RvYy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy9taXhpbnMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFZQSxRQUdJLFlBQUEsQ0FDQSxxQkFBQSxDQUNBLGlEQUFBLENBQ0EsaUJBQUEsQ0FDQSxtREFBQSxDQUVBLGVBQ0kseUJBQUEsQ0FHSixhQUNJLFdBQUEsQ0FDQSxhQUFBLENBQ0EsWUFBQSxDQUNBLGtCQUFBLENBQ0EsdUJBQUEsQ0FFQSxzQkFDSSxvREFBQSxDQUdKLHlCQUNJLFlBQUEsQ0FDQSxnQkFBQSxDQUNBLGFBQUEsQ0FHSixvQkFDSSxXQUFBLENBRUEsaUJBQUEsQ0MxQ1IseUNBQUEsQ0FDQSw2Q0FBQSxDRDRDUSxlQUFBLENBRUEseUJDL0JSLGFBQUEsQ0FDQSxvQkFBQSxDRGdDWSxZQUFBLENBQ0Esa0JBQUEsQ0FFQSwrQkMvQlosWUFBQSxDQVVBLCtCQUFBLENBQ0Esb0JBQUEsQ0FDQSxjQUFBLENEc0JnQixrQ0FBQSxDQ2hDaEIsbURBQ0kseUJBQUEsQ0FXSiwyRUFFSSxxQ0FBQSxDRHdCSixnQkFDSSxXQUFBLENBQ0EsYUFBQSxDQUNBLFlBQUEsQ0FDQSxrQkFBQSxDQUNBLHVCQUFBLENBRUEseUJBQ0ksaURBQUEsQ0FJUixpQkFDSSx5QkFBQSxDQUNBLDhCQUFBLENBRUEsaUJBQUEsQ0FDQSxXQUFBLENBQ0EsZUFBQSxDQUNBLG9CQUFBLENBRUEsNEJBQ0ksZ0JBQUEsQ0FJUixjQ2xGQSxRQUFBLENBQ0EsU0FBQSxDQUNBLGVBQUEsQ0RtRkksYUFBQSxDQUVBLG1CQUNJLGNBQUEsQ0FDQSxnQkFBQSxDQUVBLHNDQUNJLGtDQUFBLENBR0osZ0VBQ0ksWUFBQSxDQUlKLGlDQUNJLGlCQUFBLENBS1osK0JBQ0ksa0JBQUEsQ0FDQSxtQkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvdmFyaWFibGVzJztcXG5AaW1wb3J0ICcuLi8uLi8uLi9zdHlsZXMvbWl4aW5zJztcXG5cXG4kaWNvblNpemU6IDE4cHg7XFxuJHRvZ2dsZVNpemU6IDEwcHg7XFxuJGxlZnRPZmZzZXQ6IDU3cHg7XFxuXFxuQG1peGluIHRvYy1oZWFkZXIge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0yKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuLmRjLXRvYyB7XFxuICAgICRjbGFzczogJjtcXG5cXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgI3skaGVhZGVySGVpZ2h0fSkpO1xcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XFxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxuXFxuICAgICZfX2VtcHR5IHtcXG4gICAgICAgIHBhZGRpbmc6IDVweCAxNXB4IDVweCAyNHB4O1xcbiAgICB9XFxuXFxuICAgICZfX3RvcCB7XFxuICAgICAgICBmbGV4LWdyb3c6IDA7XFxuICAgICAgICBmbGV4LXNocmluazogMDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgcGFkZGluZzogMTBweCAxMHB4IDhweCAwO1xcblxcbiAgICAgICAgJl9zY3JvbGxlZCB7XFxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmLWhlYWRlci1pY29uIHtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJi1oZWFkZXIge1xcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMDtcXG4gICAgICAgICAgICAkaGVhZGVyQ2xhc3M6ICY7XFxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcblxcbiAgICAgICAgICAgIEBpbmNsdWRlIHRleHQtc2l6ZShib2R5LTIpO1xcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuXFxuICAgICAgICAgICAgJl9saW5rIHtcXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgcmVzZXQtbGluay1zdHlsZSgpO1xcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcXG4gICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIGxpbmsoKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfX2JvdHRvbSB7XFxuICAgICAgICBmbGV4LWdyb3c6IDA7XFxuICAgICAgICBmbGV4LXNocmluazogMDtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgcGFkZGluZzogNHB4IDEwcHggMjBweCAwO1xcblxcbiAgICAgICAgJl9zY3JvbGxlZCB7XFxuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fY29udGVudCB7XFxuICAgICAgICAtLXljLXNjcm9sbGJhci13aWR0aDogNnB4O1xcbiAgICAgICAgLS15Yy1zY3JvbGxiYXItdGhpbi13aWR0aDogNnB4O1xcblxcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICAgICAgZmxleC1ncm93OiAxO1xcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcXG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogdGhpbjtcXG5cXG4gICAgICAgICZfb2Zmc2V0X3RvcCB7XFxuICAgICAgICAgICAgcGFkZGluZy10b3A6IDI0cHg7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fbGlzdCB7XFxuICAgICAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlKCk7XFxuXFxuICAgICAgICBkaXNwbGF5OiBibG9jaztcXG5cXG4gICAgICAgICYtaXRlbSB7XFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xcblxcbiAgICAgICAgICAgICZfbWFpbiA+ICo6Zmlyc3QtY2hpbGQge1xcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJjpub3QoJl9vcGVuZWQpID4gI3skY2xhc3N9X19saXN0IHtcXG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgLy8gcmVjdXJjaXZlIHBhZGRpbmdcXG4gICAgICAgICAgICA+ICN7JGNsYXNzfV9fbGlzdCB7XFxuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgJl9fY29udGVudCA+ICZfX2xpc3Qge1xcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjFweDtcXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAzMHB4O1xcbiAgICB9XFxufVxcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLXRvYy1pdGVte2N1cnNvcjpwb2ludGVyO3VzZXItc2VsZWN0Om5vbmV9LmRjLXRvYy1pdGVtX19saW5re2Rpc3BsYXk6YmxvY2s7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmRjLXRvYy1pdGVtX190ZXh0e3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6N3B4IDEycHggN3B4IDIwcHg7d29yZC1icmVhazpicmVhay13b3JkO2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LmRjLXRvYy1pdGVtX190ZXh0X2FjdGl2ZXtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uKX0uZGMtdG9jLWl0ZW1fX3RleHQ6OmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7bGVmdDotMTAwdnc7aGVpZ2h0OjEwMCV9LmRjLXRvYy1pdGVtX190ZXh0OmhvdmVye2JvcmRlci1yYWRpdXM6M3B4O2JhY2tncm91bmQ6dmFyKC0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXIpfS5kYy10b2MtaXRlbV9faWNvbntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjB9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvY0l0ZW0vVG9jSXRlbS5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUdBLGFBQ0ksY0FBQSxDQUNBLGdCQUFBLENBRUEsbUJBQ0ksYUFBQSxDQUNBLG9CQUFBLENBR0osbUJBQ0ksaUJBQUEsQ0FDQSx5QkFBQSxDQUNBLHFCQUFBLENBRUEsa0NBQUEsQ0FFQSwwQkFDSSxpQkFBQSxDQUNBLHlDQUFBLENBR0osMkJBQ0ksVUFBQSxDQUNBLGlCQUFBLENBQ0EsS0FBQSxDQUNBLE9BQUEsQ0FFQSxXQUFBLENBQ0EsV0FBQSxDQUdKLHlCQUNJLGlCQUFBLENBQ0EsNENBQUEsQ0FJUixtQkFDSSxpQkFBQSxDQUNBLE1BQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL3ZhcmlhYmxlcyc7XFxuQGltcG9ydCAnLi4vLi4vLi4vc3R5bGVzL21peGlucyc7XFxuXFxuLmRjLXRvYy1pdGVtIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG5cXG4gICAgJl9fbGluayB7XFxuICAgICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgfVxcblxcbiAgICAmX190ZXh0IHtcXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICAgIHBhZGRpbmc6IDdweCAxMnB4IDdweCAyMHB4O1xcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcXG5cXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcblxcbiAgICAgICAgJl9hY3RpdmUge1xcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNlbGVjdGlvbik7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmOjpiZWZvcmUge1xcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgICAgICB0b3A6IDA7XFxuICAgICAgICAgICAgcmlnaHQ6IDA7XFxuICAgICAgICAgICAgLy8gaGFjazogdG8gYmUgc2h1cmUgdGhhdCBpdCB3aWxsIGFsd2F5cyBzdGFydCBmcm9tIHRoZSBsZWZ0IG9mIHRoZSBUT0NcXG4gICAgICAgICAgICBsZWZ0OiAtMTAwdnc7XFxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4O1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyKTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19pY29uIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIGxlZnQ6IDA7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5kYy1uYXYtdG9jLXBhbmVse2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjEwMCU7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpO2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KX0uZGMtbmF2LXRvYy1wYW5lbF9maXhlZHtwb3NpdGlvbjpmaXhlZDtib3R0b206MDt6LWluZGV4OjEwMDA7bGVmdDowO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyl9LmRjLW5hdi10b2MtcGFuZWxfZml4ZWQgLmRjLW5hdi10b2MtcGFuZWxfX2NvbnRyb2wtaGludHtkaXNwbGF5Om5vbmV9LmRjLW5hdi10b2MtcGFuZWxfZml4ZWQgLmRjLW5hdi10b2MtcGFuZWxfX2NvbnRlbnR7cGFkZGluZzowIDQwcHh9LmRjLW5hdi10b2MtcGFuZWxfX2NvbnRlbnR7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2ZsZXg6MTttYXgtd2lkdGg6MTQ0MHB4fS5kYy1uYXYtdG9jLXBhbmVsX19jb250cm9se2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6NDglfS5kYy1uYXYtdG9jLXBhbmVsX19jb250cm9sX2xlZnR7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0uZGMtbmF2LXRvYy1wYW5lbF9fY29udHJvbF9yaWdodHthbGlnbi1pdGVtczpmbGV4LWVuZH0uZGMtbmF2LXRvYy1wYW5lbF9fY29udHJvbCBzdmd7bWFyZ2luLXRvcDotMXB4O21pbi13aWR0aDoxNnB4fS5kYy1uYXYtdG9jLXBhbmVsX19jb250cm9sX2xlZnQgc3Zne21hcmdpbi1yaWdodDo2cHh9LmRjLW5hdi10b2MtcGFuZWxfX2NvbnRyb2xfcmlnaHQgc3Zne21hcmdpbi1sZWZ0OjZweH0uZGMtbmF2LXRvYy1wYW5lbF9fY29udHJvbC1oaW50e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtaGludCl9LmRjLW5hdi10b2MtcGFuZWxfX2NvbnRyb2wtdGV4dHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5kYy1uYXYtdG9jLXBhbmVsX19saW5re2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7bWluLWhlaWdodDozMnB4O2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7Zm9udC13ZWlnaHQ6NTAwfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvYnVpbGQvY29tcG9uZW50cy9Ub2NOYXZQYW5lbC9Ub2NOYXZQYW5lbC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy9taXhpbnMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFFQSxrQkFDSSxZQUFBLENBQ0Esc0JBQUEsQ0FDQSxVQUFBLENBQ0EsMENBQUEsQ0NIQSx5Q0FBQSxDQUNBLDZDQUFBLENETUEsd0JBQ0ksY0FBQSxDQUNBLFFBQUEsQ0FDQSxZQUFBLENBQ0EsTUFBQSxDQUNBLGlEQUFBLENBR0osd0RBQ0ksWUFBQSxDQUdKLG1EQUNJLGNBQUEsQ0FHSiwyQkFDSSxZQUFBLENBQ0EsNkJBQUEsQ0FDQSxNQUFBLENBQ0EsZ0JBQUEsQ0FHSiwyQkFDSSxZQUFBLENBQ0EscUJBQUEsQ0FDQSxTQUFBLENBRUEsZ0NBQ0ksc0JBQUEsQ0FHSixpQ0FDSSxvQkFBQSxDQUdKLCtCQUNJLGVBQUEsQ0FDQSxjQUFBLENBR0osb0NBQ0ksZ0JBQUEsQ0FHSixxQ0FDSSxlQUFBLENBSVIsZ0NBQ0ksK0JBQUEsQ0FHSixnQ0FDSSxZQUFBLENBQ0Esa0JBQUEsQ0FHSix3QkFDSSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSxlQUFBLENBQ0Esa0NBQUEsQ0FDQSxlQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgJy4uLy4uLy4uL3N0eWxlcy9taXhpbnMnO1xcblxcbi5kYy1uYXYtdG9jLXBhbmVsIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xcblxcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoYm9keS0xKTtcXG5cXG4gICAgJl9maXhlZCB7XFxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XFxuICAgICAgICBib3R0b206IDA7XFxuICAgICAgICB6LWluZGV4OiAxMDAwO1xcbiAgICAgICAgbGVmdDogMDtcXG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpO1xcbiAgICB9XFxuXFxuICAgICZfZml4ZWQgJl9fY29udHJvbC1oaW50IHtcXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG5cXG4gICAgJl9maXhlZCAmX19jb250ZW50IHtcXG4gICAgICAgIHBhZGRpbmc6IDAgNDBweDtcXG4gICAgfVxcblxcbiAgICAmX19jb250ZW50IHtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgICAgICBmbGV4OiAxO1xcbiAgICAgICAgbWF4LXdpZHRoOiAxNDQwcHg7XFxuICAgIH1cXG5cXG4gICAgJl9fY29udHJvbCB7XFxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgICAgIHdpZHRoOiA0OCU7XFxuXFxuICAgICAgICAmX2xlZnQge1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9yaWdodCB7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJiBzdmcge1xcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xcHg7XFxuICAgICAgICAgICAgbWluLXdpZHRoOiAxNnB4O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl9sZWZ0IHN2ZyB7XFxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmX3JpZ2h0IHN2ZyB7XFxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX19jb250cm9sLWhpbnQge1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtaGludCk7XFxuICAgIH1cXG5cXG4gICAgJl9fY29udHJvbC10ZXh0IHtcXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB9XFxuXFxuICAgICZfX2xpbmsge1xcbiAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICBtaW4taGVpZ2h0OiAzMnB4O1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7XFxuICAgICAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICB9XFxufVxcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmRjLXRvZ2dsZS1hcnJvd3t0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzO3N0cm9rZS13aWR0aDoycHh9LmRjLXRvZ2dsZS1hcnJvd190eXBlX2hvcml6b250YWx7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0uZGMtdG9nZ2xlLWFycm93X3R5cGVfdmVydGljYWx7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LmRjLXRvZ2dsZS1hcnJvd19vcGVuLmRjLXRvZ2dsZS1hcnJvd190eXBlX2hvcml6b250YWx7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9LmRjLXRvZ2dsZS1hcnJvd19vcGVuLmRjLXRvZ2dsZS1hcnJvd190eXBlX3ZlcnRpY2Fse3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKX0uZGMtdG9nZ2xlLWFycm93X3RoaW57c3Ryb2tlLXdpZHRoOjFweH0uZGMtdG9nZ2xlLWFycm93X3Nsb3d7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9idWlsZC9jb21wb25lbnRzL1RvZ2dsZUFycm93L1RvZ2dsZUFycm93LnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsaUJBQ0kseUJBQUEsQ0FDQSxnQkFBQSxDQUlJLGlDQUNJLHNCQUFBLENBR0osK0JBQ0ksdUJBQUEsQ0FLSixzREFDSSx1QkFBQSxDQUdKLG9EQUNJLHdCQUFBLENBSVIsc0JBQ0ksZ0JBQUEsQ0FHSixzQkFDSSx1QkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuZGMtdG9nZ2xlLWFycm93IHtcXG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzO1xcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcXG4gICAgJHJvb3Q6ICY7XFxuXFxuICAgICZfdHlwZSB7XFxuICAgICAgICAmX2hvcml6b250YWwge1xcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgJl92ZXJ0aWNhbCB7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZfb3BlbiB7XFxuICAgICAgICAmI3skcm9vdH1fdHlwZV9ob3Jpem9udGFsIHtcXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmI3skcm9vdH1fdHlwZV92ZXJ0aWNhbCB7XFxuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAmX3RoaW4ge1xcbiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7XFxuICAgIH1cXG5cXG4gICAgJl9zbG93IHtcXG4gICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuM3M7XFxuICAgIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFEL0FDd0FBQUFBQVFBQkFBQUNBRHM9XCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiKiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzppbmhlcml0fWh0bWwsYm9keXttYXJnaW46MDtwYWRkaW5nOjA7Ym94LXNpemluZzpib3JkZXItYm94Oy0tZGMtaGVhZGVyLWhlaWdodDogMDstLWRjLXN1YmhlYWRlci1oZWlnaHQ6IDQwcHg7LS1kYy1lcnJvci1pbWFnZS00MDM6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIik7LS1kYy1lcnJvci1pbWFnZS00MDQ6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIik7LS1kYy1lcnJvci1pbWFnZS01MDA6IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gKyBcIil9aHRtbCAueWMtcm9vdCxib2R5IC55Yy1yb290ey0teWMtc2Nyb2xsYmFyLXRoaW4td2lkdGg6IDZweH1odG1sIC55Yy1yb290Ojotd2Via2l0LXNjcm9sbGJhcixodG1sIC55Yy1yb290ICo6Oi13ZWJraXQtc2Nyb2xsYmFyLGJvZHkgLnljLXJvb3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLGJvZHkgLnljLXJvb3QgKjo6LXdlYmtpdC1zY3JvbGxiYXJ7aGVpZ2h0OnZhcigtLXljLXNjcm9sbGJhci10aGluLXdpZHRoKTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCl9aHRtbCAueWMtcm9vdDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2ssaHRtbCAueWMtcm9vdCAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjayxib2R5IC55Yy1yb290Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayxib2R5IC55Yy1yb290ICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKX0jcm9vdHttaW4taGVpZ2h0OjEwMHZofVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvc3R5bGVzL2RlZmF1bHQuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxxQkFHSSxrQkFBQSxDQUdKLFVBRUksUUFBQSxDQUNBLFNBQUEsQ0FDQSxxQkFBQSxDQUVBLHFCQUFBLENBQ0EsMkJBQUEsQ0FFQSw2REFBQSxDQUNBLDZEQUFBLENBQ0EsNkRBQUEsQ0FFQSw0QkFDSSw4QkFBQSxDQUVBLHdJQUVJLHFDQUFBLENBQ0Esd0JBQUEsQ0FHSixnS0FFSSx3QkFBQSxDQUtaLE1BQ0ksZ0JBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiKixcXG4qOjpiZWZvcmUsXFxuKjo6YWZ0ZXIge1xcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xcbn1cXG5cXG5odG1sLFxcbmJvZHkge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuXFxuICAgIC0tZGMtaGVhZGVyLWhlaWdodDogMDtcXG4gICAgLS1kYy1zdWJoZWFkZXItaGVpZ2h0OiA0MHB4O1xcblxcbiAgICAtLWRjLWVycm9yLWltYWdlLTQwMzogdXJsKCdkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFEL0FDd0FBQUFBQVFBQkFBQUNBRHM9Jyk7XFxuICAgIC0tZGMtZXJyb3ItaW1hZ2UtNDA0OiB1cmwoJ2RhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEFRQUJBQUQvQUN3QUFBQUFBUUFCQUFBQ0FEcz0nKTtcXG4gICAgLS1kYy1lcnJvci1pbWFnZS01MDA6IHVybCgnZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBRC9BQ3dBQUFBQUFRQUJBQUFDQURzPScpO1xcblxcbiAgICAueWMtcm9vdCB7XFxuICAgICAgICAtLXljLXNjcm9sbGJhci10aGluLXdpZHRoOiA2cHg7XFxuXFxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhcixcXG4gICAgICAgICo6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXljLXNjcm9sbGJhci10aGluLXdpZHRoKTtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLFxcbiAgICAgICAgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICAgICAgfVxcbiAgICB9XFxufVxcblxcbiNyb290IHtcXG4gICAgbWluLWhlaWdodDogMTAwdmg7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQXhOaUF4TmlJK1BIQmhkR2dnYzNSeWIydGxQU0p5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURBdU55a2lJR1pwYkd3OUltNXZibVVpSUdROUlrMHpJRFpzTlNBMUlEVXROU0krUEM5d1lYUm9Qand2YzNablBnPT1cIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIueWMtcm9vdHstLXljLWZvbnQtZmFtaWx5LXNhbnM6IFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIFxcXCJBcmlhbFxcXCIsIFxcXCJIZWx2ZXRpY2FcXFwiLCBzYW5zLXNlcmlmOy0teWMtZm9udC1mYW1pbHktbW9ub3NwYWNlOiBcXFwiTWVubG9cXFwiLCBcXFwiTW9uYWNvXFxcIiwgXFxcIkNvbnNvbGFzXFxcIiwgXFxcIlVidW50dSBNb25vXFxcIiwgXFxcIkxpYmVyYXRpb24gTW9ub1xcXCIsIFxcXCJEZWphVnUgU2FucyBNb25vXFxcIiwgXFxcIkNvdXJpZXIgTmV3XFxcIiwgXFxcIkNvdXJpZXJcXFwiLCBtb25vc3BhY2U7LS15Yy10ZXh0LWJvZHktZm9udC1mYW1pbHk6IHZhcigtLXljLWZvbnQtZmFtaWx5LXNhbnMpOy0teWMtdGV4dC1jb2RlLWZvbnQtZmFtaWx5OiB2YXIoLS15Yy1mb250LWZhbWlseS1tb25vc3BhY2UpOy0teWMtdGV4dC1oZWFkZXItZm9udC13ZWlnaHQ6IDkwMDstLXljLXRleHQtc3ViaGVhZGVyLWZvbnQtd2VpZ2h0OiA5MDA7LS15Yy10ZXh0LWRpc3BsYXktZm9udC13ZWlnaHQ6IDkwMDstLXljLXRleHQtY29kZS1mb250LXdlaWdodDogNDAwOy0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0OiA0MDA7LS15Yy10ZXh0LWNhcHRpb24tZm9udC13ZWlnaHQ6IDQwMDstLXljLXRleHQtYWNjZW50LWZvbnQtd2VpZ2h0OiA5MDA7LS15Yy10ZXh0LWJvZHktMS1mb250LXNpemU6IDEzcHg7LS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodDogMThweDstLXljLXRleHQtYm9keS0yLWZvbnQtc2l6ZTogMTVweDstLXljLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0OiAyMHB4Oy0teWMtdGV4dC1ib2R5LTMtZm9udC1zaXplOiAxN3B4Oy0teWMtdGV4dC1ib2R5LTMtbGluZS1oZWlnaHQ6IDI0cHg7LS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplOiAxM3B4Oy0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0OiAxNnB4Oy0teWMtdGV4dC1jYXB0aW9uLTEtZm9udC1zaXplOiA5cHg7LS15Yy10ZXh0LWNhcHRpb24tMS1saW5lLWhlaWdodDogMTJweDstLXljLXRleHQtY2FwdGlvbi0yLWZvbnQtc2l6ZTogMTFweDstLXljLXRleHQtY2FwdGlvbi0yLWxpbmUtaGVpZ2h0OiAxNnB4Oy0teWMtdGV4dC1oZWFkZXItMS1mb250LXNpemU6IDIwcHg7LS15Yy10ZXh0LWhlYWRlci0xLWxpbmUtaGVpZ2h0OiAyNHB4Oy0teWMtdGV4dC1oZWFkZXItMi1mb250LXNpemU6IDI0cHg7LS15Yy10ZXh0LWhlYWRlci0yLWxpbmUtaGVpZ2h0OiAyOHB4Oy0teWMtdGV4dC1zdWJoZWFkZXItMS1mb250LXNpemU6IDEzcHg7LS15Yy10ZXh0LXN1YmhlYWRlci0xLWxpbmUtaGVpZ2h0OiAxOHB4Oy0teWMtdGV4dC1zdWJoZWFkZXItMi1mb250LXNpemU6IDE1cHg7LS15Yy10ZXh0LXN1YmhlYWRlci0yLWxpbmUtaGVpZ2h0OiAyMHB4Oy0teWMtdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemU6IDE3cHg7LS15Yy10ZXh0LXN1YmhlYWRlci0zLWxpbmUtaGVpZ2h0OiAyNHB4Oy0teWMtdGV4dC1kaXNwbGF5LTEtZm9udC1zaXplOiAyOHB4Oy0teWMtdGV4dC1kaXNwbGF5LTEtbGluZS1oZWlnaHQ6IDM2cHg7LS15Yy10ZXh0LWRpc3BsYXktMi1mb250LXNpemU6IDMycHg7LS15Yy10ZXh0LWRpc3BsYXktMi1saW5lLWhlaWdodDogNDBweDstLXljLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZTogNDBweDstLXljLXRleHQtZGlzcGxheS0zLWxpbmUtaGVpZ2h0OiA0OHB4Oy0teWMtdGV4dC1kaXNwbGF5LTQtZm9udC1zaXplOiA0OHB4Oy0teWMtdGV4dC1kaXNwbGF5LTQtbGluZS1oZWlnaHQ6IDUycHg7LS15Yy10ZXh0LWNvZGUtMS1mb250LXNpemU6IDEycHg7LS15Yy10ZXh0LWNvZGUtMS1saW5lLWhlaWdodDogMThweDstLXljLXRleHQtY29kZS0yLWZvbnQtc2l6ZTogMTRweDstLXljLXRleHQtY29kZS0yLWxpbmUtaGVpZ2h0OiAyMHB4Oy0teWMtdGV4dC1jb2RlLTMtZm9udC1zaXplOiAxNnB4Oy0teWMtdGV4dC1jb2RlLTMtbGluZS1oZWlnaHQ6IDI0cHg7LS15Yy10ZXh0LWNvZGUtaW5saW5lLTEtZm9udC1zaXplOiAxMnB4Oy0teWMtdGV4dC1jb2RlLWlubGluZS0xLWxpbmUtaGVpZ2h0OiAxNHB4Oy0teWMtdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZTogMTRweDstLXljLXRleHQtY29kZS1pbmxpbmUtMi1saW5lLWhlaWdodDogMTZweDstLXljLXRleHQtY29kZS1pbmxpbmUtMy1mb250LXNpemU6IDE2cHg7LS15Yy10ZXh0LWNvZGUtaW5saW5lLTMtbGluZS1oZWlnaHQ6IDIwcHg7Zm9udC1mYW1pbHk6dmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTstLXljLW15LXNjcm9sbGJhci13aWR0aDogMTJweDstLXljLW15LWJvcmRlci1yYWRpdXMteHM6IDVweDstLXljLW15LWJvcmRlci1yYWRpdXMtczogNXB4Oy0teWMtbXktYm9yZGVyLXJhZGl1cy1tOiA2cHg7LS15Yy1teS1ib3JkZXItcmFkaXVzLWw6IDhweDstLXljLW15LWJvcmRlci1yYWRpdXMteGw6IDEwcHg7LS15Yy1jb2xvci10ZWxlZ3JhbTogIzUxYTRkYjstLXljLWNvbG9yLWZhY2Vib29rOiAjNDk2OGFkOy0teWMtY29sb3ItdHdpdHRlcjogIzRhYTBlYjstLXljLWNvbG9yLXZrOiAjNDM2ZWFiOy0teWMtY29sb3IteW91dHViZTogI2ViMzMyMzstLXljLWNvbG9yLWdpdGh1YjogIzI1MjkyZTstLXljLWNvbG9yLXJzczogI2YyOWMzOTstLXljLWNvbG9yLWxpbmtlZGluOiAjMGE2NmMyOy0teWMtc3BhY2UtYmFzZTogNHB4Oy0teWMtc3BhY2luZy0wOiBjYWxjKHZhcigtLXljLXNwYWNlLWJhc2UpICogMCk7LS15Yy1zcGFjaW5nLWhhbGY6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiAwLjUpOy0teWMtc3BhY2luZy0xOiB2YXIoLS15Yy1zcGFjZS1iYXNlKTstLXljLXNwYWNpbmctMjogY2FsYyh2YXIoLS15Yy1zcGFjZS1iYXNlKSAqIDIpOy0teWMtc3BhY2luZy0zOiBjYWxjKHZhcigtLXljLXNwYWNlLWJhc2UpICogMyk7LS15Yy1zcGFjaW5nLTQ6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA0KTstLXljLXNwYWNpbmctNTogY2FsYyh2YXIoLS15Yy1zcGFjZS1iYXNlKSAqIDUpOy0teWMtc3BhY2luZy02OiBjYWxjKHZhcigtLXljLXNwYWNlLWJhc2UpICogNik7LS15Yy1zcGFjaW5nLTc6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA3KTstLXljLXNwYWNpbmctODogY2FsYyh2YXIoLS15Yy1zcGFjZS1iYXNlKSAqIDgpOy0teWMtc3BhY2luZy05OiBjYWxjKHZhcigtLXljLXNwYWNlLWJhc2UpICogOSk7LS15Yy1zcGFjaW5nLTEwOiBjYWxjKHZhcigtLXljLXNwYWNlLWJhc2UpICogMTApOy0teWMtc2Nyb2xsYmFyLXdpZHRoOiB2YXIoLS15Yy1teS1zY3JvbGxiYXItd2lkdGgpOy0teWMtYm9yZGVyLXJhZGl1cy14czogdmFyKC0teWMtbXktYm9yZGVyLXJhZGl1cy14cyk7LS15Yy1ib3JkZXItcmFkaXVzLXM6IHZhcigtLXljLW15LWJvcmRlci1yYWRpdXMtcyk7LS15Yy1ib3JkZXItcmFkaXVzLW06IHZhcigtLXljLW15LWJvcmRlci1yYWRpdXMtbSk7LS15Yy1ib3JkZXItcmFkaXVzLWw6IHZhcigtLXljLW15LWJvcmRlci1yYWRpdXMtbCk7LS15Yy1ib3JkZXItcmFkaXVzLXhsOiB2YXIoLS15Yy1teS1ib3JkZXItcmFkaXVzLXhsKX0ueWMtcm9vdF90aGVtZV9saWdodHstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTk1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTA6IHJnYmEoMCwgMCwgMCwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwOiByZ2JhKDAsIDAsIDAsIDAuMDcpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDA6IHJnYmEoMCwgMCwgMCwgMC4xKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwOiByZ2JhKDAsIDAsIDAsIDAuMTUpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yNTA6IHJnYmEoMCwgMCwgMCwgMC4yNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMDogcmdiYSgwLCAwLCAwLCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDA6IHJnYmEoMCwgMCwgMCwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTUwOiByZ2JhKDAsIDAsIDAsIDAuNTUpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDA6IHJnYmEoMCwgMCwgMCwgMC43KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODUwOiByZ2JhKDAsIDAsIDAsIDAuODUpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yMC1zb2xpZDogcmdiYSgyNTAsIDI1MCwgMjUwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAtc29saWQ6IHJnYmEoMjQzLCAyNDMsIDI0MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMC1zb2xpZDogcmdiYSgyMjksIDIyOSwgMjI5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwLXNvbGlkOiByZ2JhKDIxOCwgMjE4LCAyMTgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDAtc29saWQ6IHJnYig3NiwgNzYsIDc2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MDogcmdiYSg4MiwgMTMwLCAyNTUsIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTAwOiByZ2JhKDgyLCAxMzAsIDI1NSwgMC4xNik7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwOiByZ2JhKDgyLCAxMzAsIDI1NSwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjc1KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjkpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MDogcmdiYSg4MiwgMTMwLCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMDogcmdiYSg3NCwgMTEzLCAyMTQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTgwMDogcmdiYSg2MywgODcsIDE1MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTAtc29saWQ6IHJnYmEoMjM4LCAyNDMsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTAwLXNvbGlkOiByZ2JhKDIyNywgMjM1LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MC1zb2xpZDogcmdiYSgxMjUsIDE2MSwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTA6IHJnYmEoNTksIDIwMSwgNTMsIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTEwMDogcmdiYSg1OSwgMjAxLCA1MywgMC4xNCk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTE1MDogcmdiYSg1OSwgMjAxLCA1MywgMC4yNSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMDogcmdiYSg1OSwgMjAxLCA1MywgMC4zNSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTMwMDogcmdiYSg1OSwgMjAxLCA1MywgMC41KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwOiByZ2JhKDYzLCAyMDEsIDQ2LCAwLjc1KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjAwOiByZ2JhKDcsIDE2MywgMCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MC1zb2xpZDogcmdiYSgxMTEsIDIxNCwgOTgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC4zKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTIwMDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuNCk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTA6IHJnYmEoMjU1LCAyMTksIDc3LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTYwMDogcmdiYSgyNDUsIDIwMiwgNjksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjUwOiByZ2JhKDI0NSwgMTcxLCAyNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy03MDA6IHJnYmEoMjI0LCAxODEsIDksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctODAwOiByZ2JhKDIwOSwgMTE5LCAwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwOiByZ2JhKDIzNSwgNTAsIDM4LCAwLjA4KTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTEwMDogcmdiYSgyMzUsIDUwLCAzOCwgMC4xNyk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0zMDA6IHJnYmEoMjU1LCA0LCAwLCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwOiByZ2JhKDI1NSwgNCwgMCwgMC43KTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwMDogcmdiYSgyNTUsIDQsIDAsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTA6IHJnYmEoMjU1LCA0LCAwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MC1zb2xpZDogcmdiYSgyNTUsIDgwLCA3NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01NTA6IHJnYmEoMTU0LCA1MCwgMTY2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTgwMDogcmdiYSg5NCwgNjIsIDEwMSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjEyKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTEwMDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjIpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMzAwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuNTUpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDUwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuNzUpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktODAwOiByZ2JhKDU5LCA5NiwgMTI4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwLXNvbGlkOiByZ2JhKDIzNywgMjQwLCAyNDMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDUwLXNvbGlkOiByZ2JhKDE0NCwgMTYzLCAxNzgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTA6IHJnYmEoMjU1LCAxMTksIDAsIDAuMTUpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTAwOiByZ2JhKDI1NSwgMTE5LCAwLCAwLjIpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwOiByZ2JhKDI1NSwgMTE5LCAwLCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDUwOiByZ2JhKDI1NSwgMTgwLCAzNCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01NTA6IHJnYmEoMjU1LCAxMTksIDAsIDEpOy0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMCk7LS15Yy1teS1jb2xvci1icmFuZC1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMCk7LS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb246IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MCk7LS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDApOy0teWMtbXktY29sb3ItYnJhbmQtbGluazogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTstLXljLW15LWNvbG9yLWJyYW5kLWxpbmstaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04MDApOy0teWMtbXktY29sb3ItYnJhbmQtdGV4dDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTstLXljLW15LWNvbG9yLWJyYW5kLXRleHQtY29udHJhc3Q6IHZhcigtLXljLWNvbG9yLXRleHQtbGlnaHQtcHJpbWFyeSk7LS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTU1MCk7LS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTgwMCk7LS15Yy1jb2xvci10ZXh0LXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODUwKTstLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApOy0teWMtY29sb3ItdGV4dC1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAwKTstLXljLWNvbG9yLXRleHQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApOy0teWMtY29sb3ItdGV4dC1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLWNvbG9yLXRleHQtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjAwKTstLXljLWNvbG9yLXRleHQtd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNzAwKTstLXljLWNvbG9yLXRleHQtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDApOy0teWMtY29sb3ItdGV4dC11dGlsaXR5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01NTApOy0teWMtY29sb3ItdGV4dC1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS04MDApOy0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLWNvbG9yLXRleHQtcG9zaXRpdmUtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjAwKTstLXljLWNvbG9yLXRleHQtd2FybmluZy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctODAwKTstLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDApOy0teWMtY29sb3ItdGV4dC11dGlsaXR5LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01NTApOy0teWMtY29sb3ItdGV4dC1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS04MDApOy0teWMtY29sb3ItdGV4dC1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItdGV4dC1saW5rOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rKTstLXljLWNvbG9yLXRleHQtbGluay1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay1ob3Zlcik7LS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkKTstLXljLWNvbG9yLXRleHQtbGluay12aXNpdGVkLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQtaG92ZXIpOy0teWMtY29sb3ItdGV4dC15YW5kZXgtcmVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApOy0teWMtY29sb3ItdGV4dC1kYXJrLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODUwKTstLXljLWNvbG9yLXRleHQtZGFyay1jb21wbGVtZW50YXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMCk7LS15Yy1jb2xvci10ZXh0LWRhcmstc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMCk7LS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7LS15Yy1jb2xvci10ZXh0LWxpZ2h0LWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTstLXljLWNvbG9yLXRleHQtbGlnaHQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwMCk7LS15Yy1jb2xvci10ZXh0LWxpZ2h0LWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwKTstLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTstLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTApOy0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzAwKTstLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApOy0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwKTstLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLW1lZGl1bS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudC1kaXNhYmxlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtdWx0cmFsaWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yMC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MCk7LS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3Zlci1zb2xpZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLXNlbGVjdGlvbjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtc2VsZWN0aW9uKTstLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXIpOy0teWMtY29sb3ItYmFzZS1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwtaG92ZXIpOy0teWMtY29sb3ItYmFzZS1hY3Rpb246IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7LS15Yy1jb2xvci1iYXNlLWFjdGlvbi1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyKTstLXljLWNvbG9yLWJhc2UtaW5mbzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwKTstLXljLWNvbG9yLWJhc2UtaW5mby1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTUwKTstLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwKTstLXljLWNvbG9yLWJhc2Utd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwKTstLXljLWNvbG9yLWJhc2Utd2FybmluZy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMjAwKTstLXljLWNvbG9yLWJhc2UtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MCk7LS15Yy1jb2xvci1iYXNlLWRhbmdlci1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwKTstLXljLWNvbG9yLWJhc2UtbWlzYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTApOy0teWMtY29sb3ItYmFzZS1taXNjLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDApOy0teWMtY29sb3ItYmFzZS1uZXV0cmFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwKTstLXljLWNvbG9yLWJhc2UtbmV1dHJhbC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTUwKTstLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtbWVkaXVtLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMCk7LS15Yy1jb2xvci1iYXNlLWluZm8taGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTApOy0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTApOy0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy02MDApOy0teWMtY29sb3ItYmFzZS1kYW5nZXItaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7LS15Yy1jb2xvci1iYXNlLWRhbmdlci1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTAwKTstLXljLWNvbG9yLWJhc2UtbWlzYy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDUwLXNvbGlkKTstLXljLWNvbG9yLWJhc2UtbWlzYy1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwKTstLXljLWNvbG9yLWJhc2UtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7LS15Yy1jb2xvci1iYXNlLWxpZ2h0LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7LS15Yy1jb2xvci1iYXNlLWxpZ2h0LXNpbXBsZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApOy0teWMtY29sb3ItYmFzZS1saWdodC1kaXNhYmxlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApOy0teWMtY29sb3ItYmFzZS1saWdodC1hY2NlbnQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLWJhc2UtZmxvYXQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwLXNvbGlkKTstLXljLWNvbG9yLWJhc2UtZmxvYXQtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNzAwLXNvbGlkKTstLXljLWNvbG9yLWJhc2UtZmxvYXQtYWNjZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTstLXljLWNvbG9yLWJhc2UtZmxvYXQtYW5ub3VuY2VtZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLW1vZGFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItbGluZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY3RpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwKTstLXljLWNvbG9yLWxpbmUtc29saWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwLXNvbGlkKTstLXljLWNvbG9yLWxpbmUtc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saWdodCk7LS15Yy1jb2xvci1saW5lLXNlbGVjdGlvbi1hY3RpdmU6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7LS15Yy1jb2xvci1saW5lLWxpbms6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7LS15Yy1jb2xvci1saW5lLWluZm86IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTApOy0teWMtY29sb3ItbGluZS1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTApOy0teWMtY29sb3ItbGluZS13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy02MDApOy0teWMtY29sb3ItbGluZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7LS15Yy1jb2xvci1saW5lLW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MCk7LS15Yy1jb2xvci1saW5lLWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApOy0teWMtY29sb3ItbGluZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8tbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTMwMCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbWlzYy1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTMwMCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWF4aXM6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwLXNvbGlkKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy10b29sdGlwLWJnOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTk1MCk7LS15Yy1jb2xvci1zZngtdmVpbDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yNTApOy0teWMtY29sb3Itc2Z4LXNoYWRvdzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApOy0teWMtY29sb3Itc2Z4LXNoYWRvdy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDApOy0teWMtY29sb3Itc2Z4LXNoYWRvdy1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MCk7LS15Yy1jb2xvci1zZngtZmFkZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDApOy0teWMtY29sb3ItcHJvbW8tYmFzZS1zaWx2ZXI6ICNlZmYyZjg7LS15Yy1jb2xvci1wcm9tby1iYXNlLWdvbGQ6ICNmZmRiNGQ7LS15Yy1jb2xvci1wcm9tby1iYXNlLWFzcGhhbHQ6ICMzMTM1Mzg7LS15Yy1jb2xvci1wcm9tby1iYXNlLXRvbWF0bzogI2ZmNTk1ODstLXljLWNvbG9yLXByb21vLWJhc2UtY29wcGVyOiAjZmZhYjNiOy0teWMtY29sb3ItcHJvbW8tYmFzZS1taW50OiAjNWVjZjcxOy0teWMtY29sb3ItcHJvbW8tYmFzZS1za3k6ICM0OWEwZjY7LS15Yy1jb2xvci1wcm9tby1iYXNlLW5lb246ICM5ZjZmZWU7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtc2lsdmVyOiAjZWRmMmY3Oy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LWdvbGQ6ICNmZmYxYjg7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtYXNwaGFsdDogI2VhZWJlYjstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC10b21hdG86ICNmZmRlZGU7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtY29wcGVyOiAjZmZlNmM0Oy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LW1pbnQ6ICNjY2YwZDI7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtc2t5OiAjZDZlOWZkOy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LW5lb246ICNlY2UyZmM7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtc2lsdmVyOiAjOTY5YTllOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWdvbGQ6ICNmZmRiNGQ7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtYXNwaGFsdDogIzMxMzUzODstLXljLWNvbG9yLXByb21vLWFjY2VudC10b21hdG86ICNmZjU5NTg7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtY29wcGVyOiAjZmZhYjNiOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LW1pbnQ6ICM1ZWNmNzE7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtc2t5OiAjNDlhMGY2Oy0teWMtY29sb3ItcHJvbW8tYWNjZW50LW5lb246ICM5ZjZmZWU7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItc2lsdmVyOiAjNzI3NTc4Oy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLWdvbGQ6ICNlZGJlMjg7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItYXNwaGFsdDogIzAwMDAwMDstLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci10b21hdG86ICNlZTRmNGU7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItY29wcGVyOiAjZjI4ZDA0Oy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLW1pbnQ6ICMzYmJjNTE7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItc2t5OiAjMjE4MGRlOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLW5lb246ICM3YjQ3Y2Y7LS15Yy1jb2xvci1wcm9tby10ZXh0LXNpbHZlcjogIzk2OWE5ZTstLXljLWNvbG9yLXByb21vLXRleHQtZ29sZDogI2ViYjQwOTstLXljLWNvbG9yLXByb21vLXRleHQtYXNwaGFsdDogIzMxMzUzODstLXljLWNvbG9yLXByb21vLXRleHQtdG9tYXRvOiAjZmY1OTU4Oy0teWMtY29sb3ItcHJvbW8tdGV4dC1jb3BwZXI6ICNmZmFiM2I7LS15Yy1jb2xvci1wcm9tby10ZXh0LW1pbnQ6ICM1ZWNmNzE7LS15Yy1jb2xvci1wcm9tby10ZXh0LXNreTogIzQ5YTBmNjstLXljLWNvbG9yLXByb21vLXRleHQtbmVvbjogIzlmNmZlZTstLXljLWNvbG9yLXNjcm9sbC10cmFjazogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTstLXljLWNvbG9yLXNjcm9sbC1oYW5kbGU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwKTstLXljLWNvbG9yLXNjcm9sbC1oYW5kbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTstLXljLWNvbG9yLXNjcm9sbC1jb3JuZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwKTtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KX0ueWMtcm9vdF90aGVtZV9kYXJrey0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS1vcGFxdWUtMTUwOiByZ2JhKDc2LCA3NSwgODEsIDAuOTUpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yMDA6IHJnYmEoMCwgMCwgMCwgMC4yKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwOiByZ2JhKDAsIDAsIDAsIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQwMDogcmdiYSgwLCAwLCAwLCAwLjQpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDA6IHJnYmEoMCwgMCwgMCwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjAwOiByZ2JhKDAsIDAsIDAsIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMDogcmdiYSgwLCAwLCAwLCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay05MDA6IHJnYmEoMCwgMCwgMCwgMC45KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stcm9jay04NTA6IHJnYmEoNDUsIDQ0LCA1MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwLXNvbGlkOiByZ2JhKDQ5LCA0OCwgNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAtc29saWQ6IHJnYmEoNjYsIDY1LCA3MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZDogcmdiYSg3NiwgNzYsIDgyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAwLXNvbGlkOiByZ2JhKDg3LCA4NiwgOTIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMDogcmdiYSgxMzMsIDE2OCwgMjU1LCAwLjE1KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xNTA6IHJnYmEoMTMzLCAxNjgsIDI1NSwgMC4yNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwOiByZ2JhKDEzMywgMTY4LCAyNTUsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwOiByZ2JhKDg3LCAxMjYsIDIxNCwgMC44KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTA6IHJnYmEoODcsIDEyNiwgMjE0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS03MDA6IHJnYmEoOTgsIDE0NiwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04NTA6IHJnYmEoMTMzLCAxNjgsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwLXNvbGlkOiByZ2JhKDY3LCA3NSwgMTAyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDAtc29saWQ6IHJnYmEoODksIDEwNiwgMTUzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTAtc29saWQ6IHJnYmEoNzksIDExMCwgMTgxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjEyKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjE2KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzAwOiByZ2JhKDE4NiwgMjU1LCAxODQsIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MDogcmdiYSgxODYsIDI1NSwgMTg0LCAwLjY4KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjU4KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjc1KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwLXNvbGlkOiByZ2JhKDUzLCAxMzUsIDUyLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTEwMDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuMjUpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTUwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC40KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuNjQpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTUwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC44KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMDogcmdiYSgyMjQsIDE4OSwgNTIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwOiByZ2JhKDE5MSwgNTAsIDQ4LCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTUwOiByZ2JhKDE5MSwgNTAsIDQ4LCAwLjQ1KTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTMwMDogcmdiYSgyNTUsIDc3LCA3MywgMC41KTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MDogcmdiYSgyMDgsIDcxLCA2OSwgMC44OCk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTA6IHJnYmEoMjA4LCA3MSwgNjksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwLXNvbGlkOiByZ2JhKDE2MiwgNDksIDQ4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTU1MDogcmdiYSgxNjYsIDYyLCAxNzgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNzAwOiByZ2JhKDE3NywgNzgsIDE5OCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04NTA6IHJnYmEoMjAwLCAxMjEsIDIxNiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDA6IHJnYmEoOTUsIDExNSwgMTMzLCAwLjE4KTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTE1MDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMzAwOiByZ2JhKDk1LCAxMTUsIDEzMywgMC42KTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MDogcmdiYSg5NSwgMTE1LCAxMzMsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTA6IHJnYmEoOTUsIDExNSwgMTMzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTcwMDogcmdiYSgxNDIsIDE2MiwgMTgwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MC1zb2xpZDogcmdiYSg4NSwgMTAxLCAxMTcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTA6IHJnYmEoMjA0LCAxMDQsIDE2LCAwLjIpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTAwOiByZ2JhKDIwNCwgMTA0LCAxNiwgMC4zKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTE1MDogcmdiYSgyMDQsIDEwNCwgMTYsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDA6IHJnYmEoMjU1LCAxNjAsIDY2LCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDUwOiByZ2JhKDIwNCwgMTA0LCAxNiwgMC44KTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTU1MDogcmdiYSgyMDQsIDEwNCwgMTYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDUwLXNvbGlkOiByZ2JhKDE3MiwgOTIsIDIzLCAxKTstLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7LS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS03MDApOy0teWMtbXktY29sb3ItYnJhbmQtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDApOy0teWMtbXktY29sb3ItYnJhbmQtc2VsZWN0aW9uOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwKTstLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbi1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMCk7LS15Yy1teS1jb2xvci1icmFuZC1saW5rOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzAwKTstLXljLW15LWNvbG9yLWJyYW5kLWxpbmstaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04NTApOy0teWMtbXktY29sb3ItYnJhbmQtdGV4dDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTcwMCk7LS15Yy1teS1jb2xvci1icmFuZC10ZXh0LWNvbnRyYXN0OiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnkpOy0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS03MDApOy0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04NTApOy0teWMtY29sb3ItdGV4dC1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7LS15Yy1jb2xvci10ZXh0LWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzAwKTstLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMCk7LS15Yy1jb2xvci10ZXh0LWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLXRleHQtaW5mbzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTcwMCk7LS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MCk7LS15Yy1jb2xvci10ZXh0LXdhcm5pbmc6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMCk7LS15Yy1jb2xvci10ZXh0LWRhbmdlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTstLXljLWNvbG9yLXRleHQtdXRpbGl0eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwKTstLXljLWNvbG9yLXRleHQtbWlzYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNzAwKTstLXljLWNvbG9yLXRleHQtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTcwMCk7LS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MCk7LS15Yy1jb2xvci10ZXh0LXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMCk7LS15Yy1jb2xvci10ZXh0LWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTstLXljLWNvbG9yLXRleHQtdXRpbGl0eS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwKTstLXljLWNvbG9yLXRleHQtbWlzYy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNzAwKTstLXljLWNvbG9yLXRleHQtc3BlY2lhbDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTstLXljLWNvbG9yLXRleHQtbGluazogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluayk7LS15Yy1jb2xvci10ZXh0LWxpbmstaG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLWxpbmstaG92ZXIpOy0teWMtY29sb3ItdGV4dC1saW5rLXZpc2l0ZWQ6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZCk7LS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZC1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkLWhvdmVyKTstLXljLWNvbG9yLXRleHQteWFuZGV4LXJlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTstLXljLWNvbG9yLXRleHQtZGFyay1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTkwMCk7LS15Yy1jb2xvci10ZXh0LWRhcmstY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApOy0teWMtY29sb3ItdGV4dC1kYXJrLXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDApOy0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7LS15Yy1jb2xvci10ZXh0LWxpZ2h0LWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzAwKTstLXljLWNvbG9yLXRleHQtbGlnaHQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMCk7LS15Yy1jb2xvci10ZXh0LWxpZ2h0LWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay05MDApOy0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1jb21wbGVtZW50YXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMCk7LS15Yy1jb2xvci10ZXh0LWludmVydGVkLXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDApOy0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMCk7LS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stcm9jay04NTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwKTstLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW0taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLXVsdHJhbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAtc29saWQpOy0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwKTstLXljLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyLXNvbGlkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLXNlbGVjdGlvbjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtc2VsZWN0aW9uKTstLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXIpOy0teWMtY29sb3ItYmFzZS1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwtaG92ZXIpOy0teWMtY29sb3ItYmFzZS1hY3Rpb246IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7LS15Yy1jb2xvci1iYXNlLWFjdGlvbi1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyKTstLXljLWNvbG9yLWJhc2UtaW5mbzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMCk7LS15Yy1jb2xvci1iYXNlLWluZm8taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xNTApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xMDApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xNTApOy0teWMtY29sb3ItYmFzZS13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xMDApOy0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xNTApOy0teWMtY29sb3ItYmFzZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTEwMCk7LS15Yy1jb2xvci1iYXNlLWRhbmdlci1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTUwKTstLXljLWNvbG9yLWJhc2UtbWlzYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTAwKTstLXljLWNvbG9yLWJhc2UtbWlzYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTUwKTstLXljLWNvbG9yLWJhc2UtbmV1dHJhbDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDApOy0teWMtY29sb3ItYmFzZS1uZXV0cmFsLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1tZWRpdW0taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzUwKTstLXljLWNvbG9yLWJhc2UtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MCk7LS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MCk7LS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaGVhdnktaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMCk7LS15Yy1jb2xvci1iYXNlLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwKTstLXljLWNvbG9yLWJhc2UtZGFuZ2VyLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApOy0teWMtY29sb3ItYmFzZS1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTAtc29saWQpOy0teWMtY29sb3ItYmFzZS1taXNjLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTApOy0teWMtY29sb3ItYmFzZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTApOy0teWMtY29sb3ItYmFzZS1saWdodC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDApOy0teWMtY29sb3ItYmFzZS1saWdodC1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLWJhc2UtbGlnaHQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLWJhc2UtbGlnaHQtYWNjZW50LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTAtc29saWQpOy0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAwLXNvbGlkKTstLXljLWNvbG9yLWJhc2UtZmxvYXQtYW5ub3VuY2VtZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLW1vZGFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLXJvY2stODUwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApOy0teWMtY29sb3ItbGluZS1nZW5lcmljLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWN0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7LS15Yy1jb2xvci1saW5lLXNvbGlkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7LS15Yy1jb2xvci1saW5lLXNlbGVjdGlvbi1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGlnaHQpOy0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24tYWN0aXZlOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItbGluZS1saW5rOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItbGluZS1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwKTstLXljLWNvbG9yLWxpbmUtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwKTstLXljLWNvbG9yLWxpbmUtd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTUwKTstLXljLWNvbG9yLWxpbmUtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTApOy0teWMtY29sb3ItbGluZS1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTApOy0teWMtY29sb3ItbGluZS1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLWNvbG9yLWxpbmUtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTE1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTE1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8tbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1heGlzOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtdG9vbHRpcC1iZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS1vcGFxdWUtMTUwKTstLXljLWNvbG9yLXNmeC12ZWlsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTYwMCk7LS15Yy1jb2xvci1zZngtc2hhZG93OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMCk7LS15Yy1jb2xvci1zZngtc2hhZG93LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMCk7LS15Yy1jb2xvci1zZngtc2hhZG93LWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwKTstLXljLWNvbG9yLXNmeC1mYWRlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7LS15Yy1jb2xvci1wcm9tby1iYXNlLXNpbHZlcjogI2JjYzBjNDstLXljLWNvbG9yLXByb21vLWJhc2UtZ29sZDogI2ZmZGU1ZDstLXljLWNvbG9yLXByb21vLWJhc2UtYXNwaGFsdDogIzQ3NGQ1MjstLXljLWNvbG9yLXByb21vLWJhc2UtdG9tYXRvOiAjZmY2YjZhOy0teWMtY29sb3ItcHJvbW8tYmFzZS1jb3BwZXI6ICNmZmI5NWE7LS15Yy1jb2xvci1wcm9tby1iYXNlLW1pbnQ6ICM3ZmQ2OGU7LS15Yy1jb2xvci1wcm9tby1iYXNlLXNreTogIzY5YjRmZjstLXljLWNvbG9yLXByb21vLWJhc2UtbmVvbjogI2IzODRmZjstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1zaWx2ZXI6ICM2MTYzNjY7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtZ29sZDogIzk5ODMyZTstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1hc3BoYWx0OiAjNWQ2NTZiOy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXRvbWF0bzogIzk5ODU4NTstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1jb3BwZXI6ICM3ZjcyNjI7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtbWludDogIzc1ODk3ODstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1za3k6ICM5NGEyYWY7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtbmVvbjogI2FlYTZiYTstLXljLWNvbG9yLXNjcm9sbC10cmFjazogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTstLXljLWNvbG9yLXNjcm9sbC1oYW5kbGU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLXNjcm9sbC1oYW5kbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwKTstLXljLWNvbG9yLXNjcm9sbC1jb3JuZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KX0ueWMtcm9vdF90aGVtZV9saWdodC1oY3stLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDcpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNDUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS02MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNjUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS05MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtOTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDogcmdiYSgwLCAwLCAwLCAwLjA1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwOiByZ2JhKDAsIDAsIDAsIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MDogcmdiYSgwLCAwLCAwLCAwLjE1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjAwOiByZ2JhKDAsIDAsIDAsIDAuMik7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTI1MDogcmdiYSgwLCAwLCAwLCAwLjI1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwOiByZ2JhKDAsIDAsIDAsIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTM1MDogcmdiYSgwLCAwLCAwLCAwLjM1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNDAwOiByZ2JhKDAsIDAsIDAsIDAuNCk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQ1MDogcmdiYSgwLCAwLCAwLCAwLjQ1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAwOiByZ2JhKDAsIDAsIDAsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTU1MDogcmdiYSgwLCAwLCAwLCAwLjU1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjAwOiByZ2JhKDAsIDAsIDAsIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTY1MDogcmdiYSgwLCAwLCAwLCAwLjY1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNzAwOiByZ2JhKDAsIDAsIDAsIDAuNyk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTc1MDogcmdiYSgwLCAwLCAwLCAwLjc1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODAwOiByZ2JhKDAsIDAsIDAsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTg1MDogcmdiYSgwLCAwLCAwLCAwLjg1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stOTAwOiByZ2JhKDAsIDAsIDAsIDAuOSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTk1MDogcmdiYSgwLCAwLCAwLCAwLjk1KTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwMDogcmdiYSgwLCAwLCAwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjAtc29saWQ6IHJnYmEoMjUwLCAyNTAsIDI1MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwLXNvbGlkOiByZ2JhKDI0MiwgMjQyLCAyNDIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAtc29saWQ6IHJnYmEoMjI5LCAyMjksIDIyOSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MC1zb2xpZDogcmdiYSgyMTcsIDIxNywgMjE3LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjAwLXNvbGlkOiByZ2JhKDIwNCwgMjA0LCAyMDQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yNTAtc29saWQ6IHJnYmEoMTkxLCAxOTEsIDE5MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMC1zb2xpZDogcmdiYSgxNzksIDE3OSwgMTc5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzUwLXNvbGlkOiByZ2JhKDE2NiwgMTY2LCAxNjYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay00MDAtc29saWQ6IHJnYmEoMTUzLCAxNTMsIDE1MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQ1MC1zb2xpZDogcmdiYSgxNDAsIDE0MCwgMTQwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAwLXNvbGlkOiByZ2JhKDEyOCwgMTI4LCAxMjgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01NTAtc29saWQ6IHJnYmEoMTE1LCAxMTUsIDExNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTYwMC1zb2xpZDogcmdiYSgxMDIsIDEwMiwgMTAyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjUwLXNvbGlkOiByZ2JhKDg5LCA4OSwgODksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDAtc29saWQ6IHJnYmEoNzYsIDc2LCA3NiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTc1MC1zb2xpZDogcmdiYSg2NCwgNjQsIDY0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODAwLXNvbGlkOiByZ2JhKDUxLCA1MSwgNTEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay04NTAtc29saWQ6IHJnYmEoMzgsIDM4LCAzOCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTkwMC1zb2xpZDogcmdiYSgyNiwgMjYsIDI2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stOTUwLXNvbGlkOiByZ2JhKDEzLCAxMywgMTMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAwLXNvbGlkOiByZ2JhKDAsIDAsIDAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMDogIzRhNzFkNjstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04MDA6ICMzZjU3OTk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjA1KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTE1MDogcmdiYSg4MiwgMTMwLCAyNTUsIDAuMik7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMjAwOiByZ2JhKDgyLCAxMzAsIDI1NSwgMC4zKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yNTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjQpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMDogcmdiYSg4MiwgMTMwLCAyNTUsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzUwOiByZ2JhKDgyLCAxMzAsIDI1NSwgMC42KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00MDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MDogcmdiYSg4MiwgMTMwLCAyNTUsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTAwOiByZ2JhKDgyLCAxMzAsIDI1NSwgMC45KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTA6IHJnYmEoODIsIDEzMCwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MC1zb2xpZDogcmdiYSgyNDYsIDI0OSwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDAtc29saWQ6IHJnYmEoMjM4LCAyNDMsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwLXNvbGlkOiByZ2JhKDIyMCwgMjMwLCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTIwMC1zb2xpZDogcmdiYSgyMDMsIDIxOCwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yNTAtc29saWQ6IHJnYmEoMTg2LCAyMDUsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwLXNvbGlkOiByZ2JhKDE2OCwgMTkzLCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTM1MC1zb2xpZDogcmdiYSgxNTEsIDE4MCwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00MDAtc29saWQ6IHJnYmEoMTM0LCAxNjgsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwLXNvbGlkOiByZ2JhKDExNiwgMTU1LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwMC1zb2xpZDogcmdiYSg5OSwgMTQzLCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MC1zb2xpZDogcmdiYSg4MiwgMTMwLCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMC1zb2xpZDogcmdiYSg3NywgMTIxLCAyMzMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTY1MC1zb2xpZDogcmdiYSg3MiwgMTExLCAyMTIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTcwMC1zb2xpZDogcmdiYSg2NywgMTAyLCAxOTAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTc1MC1zb2xpZDogcmdiYSg2MywgOTIsIDE2OCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODAwLXNvbGlkOiByZ2JhKDU4LCA4MywgMTQ3LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04NTAtc29saWQ6IHJnYmEoNTMsIDczLCAxMjUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTkwMC1zb2xpZDogcmdiYSg0OCwgNjQsIDEwMywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtOTUwLXNvbGlkOiByZ2JhKDQ0LCA1NCwgODEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMDAtc29saWQ6IHJnYmEoMzksIDQ1LCA2MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjA1KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xNTA6IHJnYmEoNTksIDIwMSwgNTMsIDAuMik7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMDogcmdiYSg1OSwgMjAxLCA1MywgMC4zKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjUwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjQpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDA6IHJnYmEoNTksIDIwMSwgNTMsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MDogcmdiYSg1OSwgMjAxLCA1MywgMC42KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDAwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTA6IHJnYmEoNTksIDIwMSwgNTMsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTUwMDogcmdiYSg1OSwgMjAxLCA1MywgMC45KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTAtc29saWQ6IHJnYmEoMjQ1LCAyNTIsIDI0NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTEwMC1zb2xpZDogcmdiYSgyMzUsIDI1MCwgMjM1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTUwLXNvbGlkOiByZ2JhKDIxNiwgMjQ0LCAyMTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0yMDAtc29saWQ6IHJnYmEoMTk2LCAyMzksIDE5NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTI1MC1zb2xpZDogcmdiYSgxNzcsIDIzMywgMTc0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzAwLXNvbGlkOiByZ2JhKDE1NywgMjI4LCAxNTQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zNTAtc29saWQ6IHJnYmEoMTM3LCAyMjMsIDEzNCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQwMC1zb2xpZDogcmdiYSgxMTgsIDIxNywgMTE0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwLXNvbGlkOiByZ2JhKDk4LCAyMTIsIDkzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTAwLXNvbGlkOiByZ2JhKDc5LCAyMDYsIDczLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwLXNvbGlkOiByZ2JhKDU5LCAyMDEsIDUzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjAwLXNvbGlkOiByZ2JhKDU2LCAxODQsIDUxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjUwLXNvbGlkOiByZ2JhKDU0LCAxNjgsIDUwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNzAwLXNvbGlkOiByZ2JhKDUxLCAxNTEsIDQ4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNzUwLXNvbGlkOiByZ2JhKDQ5LCAxMzUsIDQ3LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tODAwLXNvbGlkOiByZ2JhKDQ3LCAxMTgsIDQ2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tODUwLXNvbGlkOiByZ2JhKDQ0LCAxMDEsIDQ0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tOTAwLXNvbGlkOiByZ2JhKDQxLCA4NSwgNDMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi05NTAtc29saWQ6IHJnYmEoMzksIDY4LCA0MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTEwMDAtc29saWQ6IHJnYmEoMzYsIDUyLCA0MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuMDUpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC4xKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuMik7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0yMDA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMjUwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC40KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTMwMDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0zNTA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjYpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNDAwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC43KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MDA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjkpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTUwOiByZ2JhKDI1NSwgMjE5LCA3NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MC1zb2xpZDogcmdiYSgyNTUsIDI1MywgMjQ2LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTEwMC1zb2xpZDogcmdiYSgyNTUsIDI1MSwgMjM3LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MC1zb2xpZDogcmdiYSgyNTUsIDI0OCwgMjE5LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTIwMC1zb2xpZDogcmdiYSgyNTUsIDI0NCwgMjAyLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTI1MC1zb2xpZDogcmdiYSgyNTUsIDI0MSwgMTg0LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTMwMC1zb2xpZDogcmdiYSgyNTUsIDIzNywgMTY2LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTM1MC1zb2xpZDogcmdiYSgyNTUsIDIzMywgMTQ4LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQwMC1zb2xpZDogcmdiYSgyNTUsIDIzMCwgMTMwLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MC1zb2xpZDogcmdiYSgyNTUsIDIyNiwgMTEzLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTUwMC1zb2xpZDogcmdiYSgyNTUsIDIyMywgOTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTUwLXNvbGlkOiByZ2JhKDI1NSwgMjE5LCA3NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy02MDAtc29saWQ6IHJnYmEoMjMzLCAyMDEsIDczLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTY1MC1zb2xpZDogcmdiYSgyMTEsIDE4MiwgNjksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNzAwLXNvbGlkOiByZ2JhKDE4OSwgMTY0LCA2NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy03NTAtc29saWQ6IHJnYmEoMTY3LCAxNDUsIDYxLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTgwMC1zb2xpZDogcmdiYSgxNDQsIDEyNywgNTgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctODUwLXNvbGlkOiByZ2JhKDEyMiwgMTA5LCA1NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy05MDAtc29saWQ6IHJnYmEoMTAwLCA5MCwgNTAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctOTUwLXNvbGlkOiByZ2JhKDc4LCA3MiwgNDYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwMC1zb2xpZDogcmdiYSg1NiwgNTMsIDQyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwOiByZ2JhKDI1NSwgNCwgMCwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0xMDA6IHJnYmEoMjU1LCA0LCAwLCAwLjEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTUwOiByZ2JhKDI1NSwgNCwgMCwgMC4yKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTIwMDogcmdiYSgyNTUsIDQsIDAsIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0yNTA6IHJnYmEoMjU1LCA0LCAwLCAwLjQpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwOiByZ2JhKDI1NSwgNCwgMCwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTM1MDogcmdiYSgyNTUsIDQsIDAsIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLXJlZC00MDA6IHJnYmEoMjU1LCA0LCAwLCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwOiByZ2JhKDI1NSwgNCwgMCwgMC44KTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwMDogcmdiYSgyNTUsIDQsIDAsIDAuOSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTA6IHJnYmEoMjU1LCA0LCAwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwLXNvbGlkOiByZ2JhKDI1NSwgMjQzLCAyNDIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwLXNvbGlkOiByZ2JhKDI1NSwgMjMwLCAyMjksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTUwLXNvbGlkOiByZ2JhKDI1NSwgMjA1LCAyMDQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMjAwLXNvbGlkOiByZ2JhKDI1NSwgMTgwLCAxNzksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMjUwLXNvbGlkOiByZ2JhKDI1NSwgMTU1LCAxNTMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwLXNvbGlkOiByZ2JhKDI1NSwgMTMwLCAxMjgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzUwLXNvbGlkOiByZ2JhKDI1NSwgMTA1LCAxMDIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDAwLXNvbGlkOiByZ2JhKDI1NSwgODAsIDc2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MC1zb2xpZDogcmdiYSgyNTUsIDU1LCA1MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDAtc29saWQ6IHJnYmEoMjU1LCAzMCwgMjYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwLXNvbGlkOiByZ2JhKDI1NSwgNCwgMCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC02MDAtc29saWQ6IHJnYmEoMjMzLCA4LCA0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTY1MC1zb2xpZDogcmdiYSgyMTEsIDExLCA4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTcwMC1zb2xpZDogcmdiYSgxODksIDE0LCAxMSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC03NTAtc29saWQ6IHJnYmEoMTY2LCAxNywgMTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtODAwLXNvbGlkOiByZ2JhKDE0NCwgMjAsIDE5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTg1MC1zb2xpZDogcmdiYSgxMjIsIDIzLCAyMywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC05MDAtc29saWQ6IHJnYmEoMTAwLCAyNiwgMjcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtOTUwLXNvbGlkOiByZ2JhKDc4LCAyOSwgMzAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwMC1zb2xpZDogcmdiYSg1NiwgMzIsIDM0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTUwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0xMDA6IHJnYmEoMTU0LCA1MCwgMTY2LCAwLjEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTUwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC4yKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTIwMDogcmdiYSgxNTQsIDUwLCAxNjYsIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0yNTA6IHJnYmEoMTU0LCA1MCwgMTY2LCAwLjQpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMzAwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTM1MDogcmdiYSgxNTQsIDUwLCAxNjYsIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS00MDA6IHJnYmEoMTU0LCA1MCwgMTY2LCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNDUwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC44KTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTUwMDogcmdiYSgxNTQsIDUwLCAxNjYsIDAuOSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01NTA6IHJnYmEoMTU0LCA1MCwgMTY2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTUwLXNvbGlkOiByZ2JhKDI1MCwgMjQ1LCAyNTEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTAwLXNvbGlkOiByZ2JhKDI0NSwgMjM0LCAyNDYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTUwLXNvbGlkOiByZ2JhKDIzNSwgMjE0LCAyMzcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMjAwLXNvbGlkOiByZ2JhKDIyNSwgMTkzLCAyMjgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMjUwLXNvbGlkOiByZ2JhKDIxNSwgMTczLCAyMTksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMzAwLXNvbGlkOiByZ2JhKDIwNCwgMTUzLCAyMTAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMzUwLXNvbGlkOiByZ2JhKDE5NCwgMTMyLCAyMDIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNDAwLXNvbGlkOiByZ2JhKDE4NCwgMTExLCAxOTMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNDUwLXNvbGlkOiByZ2JhKDE3NCwgOTEsIDE4NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01MDAtc29saWQ6IHJnYmEoMTY0LCA3MSwgMTc1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTU1MC1zb2xpZDogcmdiYSgxNTQsIDUwLCAxNjYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNjAwLXNvbGlkOiByZ2JhKDE0MiwgNDksIDE1MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS02NTAtc29saWQ6IHJnYmEoMTMwLCA0NywgMTQwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTcwMC1zb2xpZDogcmdiYSgxMTgsIDQ1LCAxMjgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNzUwLXNvbGlkOiByZ2JhKDEwNiwgNDQsIDExNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04MDAtc29saWQ6IHJnYmEoOTQsIDQyLCAxMDIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtODUwLXNvbGlkOiByZ2JhKDgyLCA0MSwgODksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtOTAwLXNvbGlkOiByZ2JhKDcwLCA0MCwgNzYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtOTUwLXNvbGlkOiByZ2JhKDU4LCAzOCwgNjQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTAwMC1zb2xpZDogcmdiYSg0NiwgMzYsIDUxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuMDUpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTAwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4yKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTIwMDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMjUwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuNCk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC41KTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTM1MDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjYpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDAwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuNyk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC44KTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwMDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjkpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTAtc29saWQ6IHJnYmEoMjQ4LCAyNDksIDI1MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDAtc29saWQ6IHJnYmEoMjQwLCAyNDMsIDI0NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTAtc29saWQ6IHJnYmEoMjI1LCAyMzAsIDIzNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yMDAtc29saWQ6IHJnYmEoMjExLCAyMTgsIDIyNCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yNTAtc29saWQ6IHJnYmEoMTk2LCAyMDYsIDIxNCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDAtc29saWQ6IHJnYmEoMTgxLCAxOTMsIDIwNCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zNTAtc29saWQ6IHJnYmEoMTY2LCAxODEsIDE5NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00MDAtc29saWQ6IHJnYmEoMTUxLCAxNjksIDE4NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTAtc29saWQ6IHJnYmEoMTM3LCAxNTcsIDE3MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MDAtc29saWQ6IHJnYmEoMTIyLCAxNDQsIDE2MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTAtc29saWQ6IHJnYmEoMTA3LCAxMzIsIDE1MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02MDAtc29saWQ6IHJnYmEoMTAwLCAxMjIsIDE0MiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02NTAtc29saWQ6IHJnYmEoOTIsIDExMywgMTMwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTcwMC1zb2xpZDogcmdiYSg4NSwgMTAzLCAxMTgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNzUwLXNvbGlkOiByZ2JhKDc4LCA5MywgMTA3LCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTgwMC1zb2xpZDogcmdiYSg3MCwgODMsIDk2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTg1MC1zb2xpZDogcmdiYSg2MywgNzQsIDg0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTkwMC1zb2xpZDogcmdiYSg1NiwgNjQsIDczLCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTk1MC1zb2xpZDogcmdiYSg0OSwgNTQsIDYxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTEwMDAtc29saWQ6IHJnYmEoNDEsIDQ1LCA0OSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01MDogcmdiYSgyNTUsIDExOSwgMCwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xMDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xNTA6IHJnYmEoMjU1LCAxMTksIDAsIDAuMik7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0yMDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0yNTA6IHJnYmEoMjU1LCAxMTksIDAsIDAuNCk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zNTA6IHJnYmEoMjU1LCAxMTksIDAsIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS00MDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuNyk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS00NTA6IHJnYmEoMjU1LCAxMTksIDAsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01MDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuOSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01NTA6IHJnYmEoMjU1LCAxMTksIDAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTAtc29saWQ6IHJnYmEoMjU1LCAyNDgsIDI0MiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xMDAtc29saWQ6IHJnYmEoMjU1LCAyNDEsIDIyOSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xNTAtc29saWQ6IHJnYmEoMjU1LCAyMjgsIDIwNCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0yMDAtc29saWQ6IHJnYmEoMjU1LCAyMTQsIDE3OSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0yNTAtc29saWQ6IHJnYmEoMjU1LCAyMDEsIDE1MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDAtc29saWQ6IHJnYmEoMjU1LCAxODcsIDEyOCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zNTAtc29saWQ6IHJnYmEoMjU1LCAxNzMsIDEwMiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS00MDAtc29saWQ6IHJnYmEoMjU1LCAxNjAsIDc2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTQ1MC1zb2xpZDogcmdiYSgyNTUsIDE0NiwgNTEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTAwLXNvbGlkOiByZ2JhKDI1NSwgMTMzLCAyNiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01NTAtc29saWQ6IHJnYmEoMjU1LCAxMTksIDAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNjAwLXNvbGlkOiByZ2JhKDIzMywgMTExLCA0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTY1MC1zb2xpZDogcmdiYSgyMTEsIDEwMiwgOCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS03MDAtc29saWQ6IHJnYmEoMTg5LCA5NCwgMTEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNzUwLXNvbGlkOiByZ2JhKDE2NywgODUsIDE1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTgwMC1zb2xpZDogcmdiYSgxNDQsIDc3LCAxOSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS04NTAtc29saWQ6IHJnYmEoMTIyLCA2OSwgMjMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtOTAwLXNvbGlkOiByZ2JhKDEwMCwgNjAsIDI3LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTk1MC1zb2xpZDogcmdiYSg3OCwgNTIsIDMwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTEwMDAtc29saWQ6IHJnYmEoNTYsIDQzLCAzNCwgMSk7LS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApOy0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODAwKTstLXljLW15LWNvbG9yLWJyYW5kLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTstLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTI1MCk7LS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTApOy0teWMtbXktY29sb3ItYnJhbmQtbGluazogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTY1MC1zb2xpZCk7LS15Yy1teS1jb2xvci1icmFuZC1saW5rLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODUwLXNvbGlkKTstLXljLW15LWNvbG9yLWJyYW5kLXRleHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS05MDAtc29saWQpOy0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdDogdmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KTstLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNjAwLXNvbGlkKTstLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtODUwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAwKTstLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay04NTApOy0teWMtY29sb3ItdGV4dC1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNzAwKTstLXljLWNvbG9yLXRleHQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDApOy0teWMtY29sb3ItdGV4dC1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNjAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjUwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjUwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC02MDAtc29saWQpOy0teWMtY29sb3ItdGV4dC11dGlsaXR5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS02MDAtc29saWQpOy0teWMtY29sb3ItdGV4dC1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02NTAtc29saWQpOy0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtOTAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtcG9zaXRpdmUtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tOTAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtd2FybmluZy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtOTAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC05MDAtc29saWQpOy0teWMtY29sb3ItdGV4dC11dGlsaXR5LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS05MDAtc29saWQpOy0teWMtY29sb3ItdGV4dC1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS05NTAtc29saWQpOy0teWMtY29sb3ItdGV4dC1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItdGV4dC1saW5rOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rKTstLXljLWNvbG9yLXRleHQtbGluay1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay1ob3Zlcik7LS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkKTstLXljLWNvbG9yLXRleHQtbGluay12aXNpdGVkLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQtaG92ZXIpOy0teWMtY29sb3ItdGV4dC15YW5kZXgtcmVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApOy0teWMtY29sb3ItdGV4dC1kYXJrLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwMCk7LS15Yy1jb2xvci10ZXh0LWRhcmstY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay04MDApOy0teWMtY29sb3ItdGV4dC1kYXJrLXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay02MDApOy0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItdGV4dC1saWdodC1jb21wbGVtZW50YXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7LS15Yy1jb2xvci10ZXh0LWxpZ2h0LXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDApOy0teWMtY29sb3ItdGV4dC1saWdodC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMCk7LS15Yy1jb2xvci10ZXh0LWludmVydGVkLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7LS15Yy1jb2xvci10ZXh0LWludmVydGVkLWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTstLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwMCk7LS15Yy1jb2xvci10ZXh0LWludmVydGVkLWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwKTstLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTstLXljLWNvbG9yLWJhc2UtZ2VuZXJpYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTI1MCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtbWVkaXVtLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTM1MCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTI1MCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtdWx0cmFsaWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApOy0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXItc29saWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwLXNvbGlkKTstLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24pOy0teWMtY29sb3ItYmFzZS1zZWxlY3Rpb24taG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbi1ob3Zlcik7LS15Yy1jb2xvci1iYXNlLXNwZWNpYWw6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7LS15Yy1jb2xvci1iYXNlLXNwZWNpYWwtaG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbC1ob3Zlcik7LS15Yy1jb2xvci1iYXNlLWFjdGlvbjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTstLXljLWNvbG9yLWJhc2UtYWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwtaG92ZXIpOy0teWMtY29sb3ItYmFzZS1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMjUwKTstLXljLWNvbG9yLWJhc2UtaW5mby1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTM1MCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTI1MCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MCk7LS15Yy1jb2xvci1iYXNlLXdhcm5pbmc6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTMwMCk7LS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MCk7LS15Yy1jb2xvci1iYXNlLWRhbmdlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMjUwKTstLXljLWNvbG9yLWJhc2UtZGFuZ2VyLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0zNTApOy0teWMtY29sb3ItYmFzZS1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yNTApOy0teWMtY29sb3ItYmFzZS1taXNjLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zNTApOy0teWMtY29sb3ItYmFzZS1uZXV0cmFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MCk7LS15Yy1jb2xvci1iYXNlLW5ldXRyYWwtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwKTstLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLW1lZGl1bS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00MDApOy0teWMtY29sb3ItYmFzZS1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwKTstLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwKTstLXljLWNvbG9yLWJhc2Utd2FybmluZy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNDUwKTstLXljLWNvbG9yLWJhc2Utd2FybmluZy1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNzAwKTstLXljLWNvbG9yLWJhc2UtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTApOy0teWMtY29sb3ItYmFzZS1kYW5nZXItaGVhdnktaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7LS15Yy1jb2xvci1iYXNlLW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MCk7LS15Yy1jb2xvci1iYXNlLW1pc2MtaGVhdnktaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MCk7LS15Yy1jb2xvci1iYXNlLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItYmFzZS1saWdodC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTApOy0teWMtY29sb3ItYmFzZS1saWdodC1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLWJhc2UtbGlnaHQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLWJhc2UtbGlnaHQtYWNjZW50LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItYmFzZS1mbG9hdC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTAtc29saWQpOy0teWMtY29sb3ItYmFzZS1mbG9hdC1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDAtc29saWQpOy0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWFjY2VudC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTApOy0teWMtY29sb3ItYmFzZS1mbG9hdC1hbm5vdW5jZW1lbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTE1MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLW1vZGFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItbGluZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNDAwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY3RpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNzAwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNzAwKTstLXljLWNvbG9yLWxpbmUtc29saWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjAwLXNvbGlkKTstLXljLWNvbG9yLWxpbmUtc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saWdodCk7LS15Yy1jb2xvci1saW5lLXNlbGVjdGlvbi1hY3RpdmU6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7LS15Yy1jb2xvci1saW5lLWxpbms6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7LS15Yy1jb2xvci1saW5lLWluZm86IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTApOy0teWMtY29sb3ItbGluZS1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTApOy0teWMtY29sb3ItbGluZS13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy02MDAtc29saWQpOy0teWMtY29sb3ItbGluZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7LS15Yy1jb2xvci1saW5lLW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MCk7LS15Yy1jb2xvci1saW5lLWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApOy0teWMtY29sb3ItbGluZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8tbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTMwMCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbWlzYy1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTMwMCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWF4aXM6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwLXNvbGlkKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy10b29sdGlwLWJnOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTk1MCk7LS15Yy1jb2xvci1zZngtdmVpbDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay00NTApOy0teWMtY29sb3Itc2Z4LXNoYWRvdzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApOy0teWMtY29sb3Itc2Z4LXNoYWRvdy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay02MDApOy0teWMtY29sb3Itc2Z4LXNoYWRvdy1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDApOy0teWMtY29sb3Itc2Z4LWZhZGU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLXByb21vLWJhc2Utc2lsdmVyOiAjZWRmMmY3Oy0teWMtY29sb3ItcHJvbW8tYmFzZS1nb2xkOiAjZmZkYjRkOy0teWMtY29sb3ItcHJvbW8tYmFzZS1hc3BoYWx0OiAjMzEzNTM4Oy0teWMtY29sb3ItcHJvbW8tYmFzZS10b21hdG86ICNmZjU5NTg7LS15Yy1jb2xvci1wcm9tby1iYXNlLWNvcHBlcjogI2ZmYWIzYjstLXljLWNvbG9yLXByb21vLWJhc2UtbWludDogIzVlY2Y3MTstLXljLWNvbG9yLXByb21vLWJhc2Utc2t5OiAjNDlhMGY2Oy0teWMtY29sb3ItcHJvbW8tYmFzZS1uZW9uOiAjOWY2ZmVlOy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXNpbHZlcjogI2VkZjJmNzstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1nb2xkOiAjZmZmMWI4Oy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LWFzcGhhbHQ6ICNlYWViZWI7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtdG9tYXRvOiAjZmZkZWRlOy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LWNvcHBlcjogI2ZmZTZjNDstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1taW50OiAjY2NmMGQyOy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXNreTogI2Q2ZTlmZDstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1uZW9uOiAjZWNlMmZjOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LXNpbHZlcjogIzk2OWE5ZTstLXljLWNvbG9yLXByb21vLWFjY2VudC1nb2xkOiAjZmZkYjRkOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWFzcGhhbHQ6ICMzMTM1Mzg7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtdG9tYXRvOiAjZmY1OTU4Oy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWNvcHBlcjogI2ZmYWIzYjstLXljLWNvbG9yLXByb21vLWFjY2VudC1taW50OiAjNWVjZjcxOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LXNreTogIzQ5YTBmNjstLXljLWNvbG9yLXByb21vLWFjY2VudC1uZW9uOiAjOWY2ZmVlOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLXNpbHZlcjogIzcyNzU3ODstLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1nb2xkOiAjZWRiZTI4Oy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLWFzcGhhbHQ6ICMwMDA7LS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItdG9tYXRvOiAjZWU0ZjRlOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLWNvcHBlcjogI2YyOGQwNDstLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1taW50OiAjM2JiYzUxOy0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLXNreTogIzIxODBkZTstLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1uZW9uOiAjN2I0N2NmOy0teWMtY29sb3ItcHJvbW8tdGV4dC1zaWx2ZXI6ICM5NjlhOWU7LS15Yy1jb2xvci1wcm9tby10ZXh0LWdvbGQ6ICNlYmI0MDk7LS15Yy1jb2xvci1wcm9tby10ZXh0LWFzcGhhbHQ6ICMzMTM1Mzg7LS15Yy1jb2xvci1wcm9tby10ZXh0LXRvbWF0bzogI2ZmNTk1ODstLXljLWNvbG9yLXByb21vLXRleHQtY29wcGVyOiAjZmZhYjNiOy0teWMtY29sb3ItcHJvbW8tdGV4dC1taW50OiAjNWVjZjcxOy0teWMtY29sb3ItcHJvbW8tdGV4dC1za3k6ICM0OWEwZjY7LS15Yy1jb2xvci1wcm9tby10ZXh0LW5lb246ICM5ZjZmZWU7LS15Yy1jb2xvci1zY3JvbGwtdHJhY2s6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7LS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMCk7LS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MCk7LS15Yy1jb2xvci1zY3JvbGwtY29ybmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMCk7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LnljLXJvb3RfdGhlbWVfZGFyay1oY3stLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDcpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNDUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS02MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNjUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS05MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtOTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS1vcGFxdWUtMTUwOiByZ2JhKDU2LCA1NywgNjAsIDAuOTcpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yMDogcmdiYSgwLCAwLCAwLCAwLjAyKTstLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTA6IHJnYmEoMCwgMCwgMCwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMDogcmdiYSgwLCAwLCAwLCAwLjEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTA6IHJnYmEoMCwgMCwgMCwgMC4xNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yNTA6IHJnYmEoMCwgMCwgMCwgMC4yNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMDogcmdiYSgwLCAwLCAwLCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zNTA6IHJnYmEoMCwgMCwgMCwgMC4zNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQwMDogcmdiYSgwLCAwLCAwLCAwLjQpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay00NTA6IHJnYmEoMCwgMCwgMCwgMC40NSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01NTA6IHJnYmEoMCwgMCwgMCwgMC41NSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTYwMDogcmdiYSgwLCAwLCAwLCAwLjYpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay02NTA6IHJnYmEoMCwgMCwgMCwgMC42NSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMDogcmdiYSgwLCAwLCAwLCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03NTA6IHJnYmEoMCwgMCwgMCwgMC43NSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTgwMDogcmdiYSgwLCAwLCAwLCAwLjgpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay04NTA6IHJnYmEoMCwgMCwgMCwgMC44NSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTkwMDogcmdiYSgwLCAwLCAwLCAwLjkpOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay05NTA6IHJnYmEoMCwgMCwgMCwgMC45NSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMDA6IHJnYmEoMCwgMCwgMCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLXJvY2stODUwOiAjMmQyYzMzOy0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay1yb2NrLTk1MDogcmdiYSgzNCwgMzUsIDM4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAtc29saWQ6IHJnYmEoMzgsIDM5LCA0MiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwLXNvbGlkOiByZ2JhKDQ1LCA0NiwgNDksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAtc29saWQ6IHJnYmEoNTYsIDU3LCA2MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZDogcmdiYSg2NywgNjgsIDcxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAwLXNvbGlkOiByZ2JhKDc4LCA3OSwgODEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTAtc29saWQ6IHJnYmEoODksIDkwLCA5MiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMC1zb2xpZDogcmdiYSgxMDAsIDEwMSwgMTAzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzUwLXNvbGlkOiByZ2JhKDExMSwgMTEyLCAxMTQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00MDAtc29saWQ6IHJnYmEoMTIyLCAxMjMsIDEyNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTQ1MC1zb2xpZDogcmdiYSgxMzMsIDEzNCwgMTM2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwLXNvbGlkOiByZ2JhKDE0NCwgMTQ1LCAxNDcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01NTAtc29saWQ6IHJnYmEoMTU2LCAxNTYsIDE1NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTYwMC1zb2xpZDogcmdiYSgxNjcsIDE2NywgMTY4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNjUwLXNvbGlkOiByZ2JhKDE3OCwgMTc4LCAxNzksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDAtc29saWQ6IHJnYmEoMTg5LCAxODksIDE5MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTc1MC1zb2xpZDogcmdiYSgyMDAsIDIwMCwgMjAxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODAwLXNvbGlkOiByZ2JhKDIxMSwgMjExLCAyMTIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTAtc29saWQ6IHJnYmEoMjIyLCAyMjIsIDIyMywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTkwMC1zb2xpZDogcmdiYSgyMzMsIDIzMywgMjMzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtOTUwLXNvbGlkOiByZ2JhKDI0NCwgMjQ0LCAyNDQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwLXNvbGlkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwOiByZ2JhKDk4LCAxNDYsIDI1NSwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTAwOiByZ2JhKDk4LCAxNDYsIDI1NSwgMC4xKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xNTA6IHJnYmEoOTgsIDE0NiwgMjU1LCAwLjIpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTIwMDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMjUwOiByZ2JhKDk4LCAxNDYsIDI1NSwgMC41KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDA6IHJnYmEoOTgsIDE0NiwgMjU1LCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTM1MDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDAwOiByZ2JhKDk4LCAxNDYsIDI1NSwgMC43KTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTA6IHJnYmEoOTgsIDE0NiwgMjU1LCAwLjgpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwMDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuOSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwOiByZ2JhKDk4LCAxNDYsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzAwOiByZ2JhKDE0NSwgMTc5LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTg1MDogcmdiYSgxOTIsIDIxMSwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MC1zb2xpZDogcmdiYSgzNywgNDEsIDQ5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDAtc29saWQ6IHJnYmEoNDAsIDQ2LCA2MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwLXNvbGlkOiByZ2JhKDQ3LCA1NywgODEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTIwMC1zb2xpZDogcmdiYSg1MywgNjgsIDEwMywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMjUwLXNvbGlkOiByZ2JhKDYwLCA3OSwgMTI1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDAtc29saWQ6IHJnYmEoNjYsIDkxLCAxNDcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTM1MC1zb2xpZDogcmdiYSg3MiwgMTAyLCAxNjgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQwMC1zb2xpZDogcmdiYSg3OSwgMTEzLCAxOTAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MC1zb2xpZDogcmdiYSg4NSwgMTI0LCAyMTIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwMC1zb2xpZDogcmdiYSg5MiwgMTM1LCAyMzMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MC1zb2xpZDogcmdiYSg5OCwgMTQ2LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMC1zb2xpZDogcmdiYSgxMTQsIDE1NywgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS02NTAtc29saWQ6IHJnYmEoMTI5LCAxNjgsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzAwLXNvbGlkOiByZ2JhKDE0NSwgMTc5LCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTc1MC1zb2xpZDogcmdiYSgxNjEsIDE5MCwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04MDAtc29saWQ6IHJnYmEoMTc3LCAyMDAsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODUwLXNvbGlkOiByZ2JhKDE5MiwgMjExLCAyNTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTkwMC1zb2xpZDogcmdiYSgyMDgsIDIyMiwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtYmx1ZS05NTAtc29saWQ6IHJnYmEoMjIzLCAyMzMsIDI1NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTAwMC1zb2xpZDogcmdiYSgyMzksIDI0NCwgMjU1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTA6IHJnYmEoOTEsIDE4MSwgODcsIDAuMDUpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xMDA6IHJnYmEoOTEsIDE4MSwgODcsIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTE1MDogcmdiYSg5MSwgMTgxLCA4NywgMC4yKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjAwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0yNTA6IHJnYmEoOTEsIDE4MSwgODcsIDAuNCk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTMwMDogcmdiYSg5MSwgMTgxLCA4NywgMC41KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzUwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjYpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00MDA6IHJnYmEoOTEsIDE4MSwgODcsIDAuNyk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MDogcmdiYSg5MSwgMTgxLCA4NywgMC44KTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTAwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjkpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTA6IHJnYmEoOTEsIDE4MSwgODcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01MC1zb2xpZDogcmdiYSgzNywgNDIsIDQwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwLXNvbGlkOiByZ2JhKDQwLCA1MCwgNDMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xNTAtc29saWQ6IHJnYmEoNDUsIDY0LCA0OCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMC1zb2xpZDogcmdiYSg1MSwgNzksIDUzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjUwLXNvbGlkOiByZ2JhKDU3LCA5MywgNTgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDAtc29saWQ6IHJnYmEoNjMsIDEwOCwgNjMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zNTAtc29saWQ6IHJnYmEoNjgsIDEyMywgNjcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00MDAtc29saWQ6IHJnYmEoNzQsIDEzNywgNzIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTAtc29saWQ6IHJnYmEoODAsIDE1MiwgNzcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01MDAtc29saWQ6IHJnYmEoODUsIDE2NiwgODIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTAtc29saWQ6IHJnYmEoOTEsIDE4MSwgODcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi02MDAtc29saWQ6IHJnYmEoMTA3LCAxODgsIDEwNCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTY1MC1zb2xpZDogcmdiYSgxMjQsIDE5NiwgMTIxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNzAwLXNvbGlkOiByZ2JhKDE0MCwgMjAzLCAxMzcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi03NTAtc29saWQ6IHJnYmEoMTU3LCAyMTEsIDE1NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTgwMC1zb2xpZDogcmdiYSgxNzMsIDIxOCwgMTcxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tODUwLXNvbGlkOiByZ2JhKDE4OSwgMjI1LCAxODgsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi05MDAtc29saWQ6IHJnYmEoMjA2LCAyMzMsIDIwNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTk1MC1zb2xpZDogcmdiYSgyMjIsIDI0MCwgMjIxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwMC1zb2xpZDogcmdiYSgyMzksIDI0OCwgMjM4LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMDogI2UwYmQzNDstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTUwOiByZ2JhKDI1NSwgMjAzLCAwLCAwLjA1KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTEwMDogcmdiYSgyNTUsIDIwMywgMCwgMC4xKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MDogcmdiYSgyNTUsIDIwMywgMCwgMC4yKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTIwMDogcmdiYSgyNTUsIDIwMywgMCwgMC4zKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTI1MDogcmdiYSgyNTUsIDIwMywgMCwgMC40KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTMwMDogcmdiYSgyNTUsIDIwMywgMCwgMC41KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTM1MDogcmdiYSgyNTUsIDIwMywgMCwgMC42KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQwMDogcmdiYSgyNTUsIDIwMywgMCwgMC43KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MDogcmdiYSgyNTUsIDIwMywgMCwgMC44KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTUwMDogcmdiYSgyNTUsIDIwMywgMCwgMC45KTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MDogcmdiYSgyNTUsIDIwMywgMCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MC1zb2xpZDogcmdiYSg0NSwgNDMsIDM2LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTEwMC1zb2xpZDogcmdiYSg1NiwgNTIsIDM0LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MC1zb2xpZDogcmdiYSg3OCwgNjksIDMwLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTIwMC1zb2xpZDogcmdiYSgxMDAsIDg1LCAyNywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0yNTAtc29saWQ6IHJnYmEoMTIyLCAxMDIsIDIzLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTMwMC1zb2xpZDogcmdiYSgxNDQsIDExOSwgMTksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMzUwLXNvbGlkOiByZ2JhKDE2NywgMTM2LCAxNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy00MDAtc29saWQ6IHJnYmEoMTg5LCAxNTMsIDExLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MC1zb2xpZDogcmdiYSgyMTEsIDE2OSwgOCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MDAtc29saWQ6IHJnYmEoMjMzLCAxODYsIDQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTUwLXNvbGlkOiByZ2JhKDI1NSwgMjAzLCAwLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTYwMC1zb2xpZDogcmdiYSgyNTUsIDIwOCwgMjYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjUwLXNvbGlkOiByZ2JhKDI1NSwgMjEzLCA1MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy03MDAtc29saWQ6IHJnYmEoMjU1LCAyMTksIDc2LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTc1MC1zb2xpZDogcmdiYSgyNTUsIDIyNCwgMTAyLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTgwMC1zb2xpZDogcmdiYSgyNTUsIDIyOSwgMTI4LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTg1MC1zb2xpZDogcmdiYSgyNTUsIDIzNCwgMTUzLCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTkwMC1zb2xpZDogcmdiYSgyNTUsIDIzOSwgMTc5LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTk1MC1zb2xpZDogcmdiYSgyNTUsIDI0NSwgMjA0LCAxKTstLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTEwMDAtc29saWQ6IHJnYmEoMjU1LCAyNTAsIDIyOSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDogcmdiYSgyMzIsIDczLCA2OSwgMC4wNSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0xMDA6IHJnYmEoMjMyLCA3MywgNjksIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0xNTA6IHJnYmEoMjMyLCA3MywgNjksIDAuMik7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0yMDA6IHJnYmEoMjMyLCA3MywgNjksIDAuMyk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0yNTA6IHJnYmEoMjMyLCA3MywgNjksIDAuNCk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0zMDA6IHJnYmEoMjMyLCA3MywgNjksIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0zNTA6IHJnYmEoMjMyLCA3MywgNjksIDAuNik7LS15Yy1jb2xvci1wcml2YXRlLXJlZC00MDA6IHJnYmEoMjMyLCA3MywgNjksIDAuNyk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTA6IHJnYmEoMjMyLCA3MywgNjksIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDA6IHJnYmEoMjMyLCA3MywgNjksIDAuOSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTA6IHJnYmEoMjMyLCA3MywgNjksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTAtc29saWQ6IHJnYmEoNDQsIDM3LCA0MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0xMDAtc29saWQ6IHJnYmEoNTQsIDM5LCA0MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0xNTAtc29saWQ6IHJnYmEoNzQsIDQzLCA0NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0yMDAtc29saWQ6IHJnYmEoOTMsIDQ2LCA0NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC0yNTAtc29saWQ6IHJnYmEoMTEzLCA1MCwgNTEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwLXNvbGlkOiByZ2JhKDEzMywgNTQsIDU0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTM1MC1zb2xpZDogcmdiYSgxNTMsIDU4LCA1NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC00MDAtc29saWQ6IHJnYmEoMTcyLCA2MSwgNjAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwLXNvbGlkOiByZ2JhKDE5MiwgNjUsIDYzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwMC1zb2xpZDogcmdiYSgyMTIsIDY5LCA2NiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTAtc29saWQ6IHJnYmEoMjMyLCA3MywgNjksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNjAwLXNvbGlkOiByZ2JhKDIzNCwgOTEsIDg4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTY1MC1zb2xpZDogcmdiYSgyMzYsIDEwOSwgMTA3LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTcwMC1zb2xpZDogcmdiYSgyMzksIDEyNywgMTI1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTc1MC1zb2xpZDogcmdiYSgyNDEsIDE0NiwgMTQ0LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTgwMC1zb2xpZDogcmdiYSgyNDMsIDE2NCwgMTYyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTg1MC1zb2xpZDogcmdiYSgyNDYsIDE4MiwgMTgxLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTkwMC1zb2xpZDogcmdiYSgyNDgsIDIwMCwgMTk5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTk1MC1zb2xpZDogcmdiYSgyNTAsIDIxOSwgMjE4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcmVkLTEwMDAtc29saWQ6IHJnYmEoMjUzLCAyMzcsIDIzNiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01MDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuMDUpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTAwOiByZ2JhKDIyMywgNDYsIDI0MywgMC4xKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTE1MDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuMik7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0yMDA6IHJnYmEoMjIzLCA0NiwgMjQzLCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMjUwOiByZ2JhKDIyMywgNDYsIDI0MywgMC40KTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTMwMDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuNSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0zNTA6IHJnYmEoMjIzLCA0NiwgMjQzLCAwLjYpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNDAwOiByZ2JhKDIyMywgNDYsIDI0MywgMC43KTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTQ1MDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuOCk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01MDA6IHJnYmEoMjIzLCA0NiwgMjQzLCAwLjkpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwOiByZ2JhKDIyMywgNDYsIDI0MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01MC1zb2xpZDogcmdiYSg0MywgMzYsIDQ4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTEwMC1zb2xpZDogcmdiYSg1MywgMzYsIDU5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTE1MC1zb2xpZDogcmdiYSg3MiwgMzcsIDc5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTIwMC1zb2xpZDogcmdiYSg5MSwgMzgsIDEwMCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0yNTAtc29saWQ6IHJnYmEoMTEwLCAzOSwgMTIwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTMwMC1zb2xpZDogcmdiYSgxMjgsIDQwLCAxNDEsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMzUwLXNvbGlkOiByZ2JhKDE0NywgNDEsIDE2MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS00MDAtc29saWQ6IHJnYmEoMTY2LCA0MiwgMTgyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTQ1MC1zb2xpZDogcmdiYSgxODUsIDQzLCAyMDIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTAwLXNvbGlkOiByZ2JhKDIwNCwgNDUsIDIyMywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01NTAtc29saWQ6IHJnYmEoMjIzLCA0NiwgMjQzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTYwMC1zb2xpZDogcmdiYSgyMjYsIDY3LCAyNDUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNjUwLXNvbGlkOiByZ2JhKDIyOSwgODgsIDI0NiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS03MDAtc29saWQ6IHJnYmEoMjMyLCAxMDgsIDI0NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS03NTAtc29saWQ6IHJnYmEoMjM2LCAxMjksIDI0OCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04MDAtc29saWQ6IHJnYmEoMjM5LCAxNTAsIDI0OSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04NTAtc29saWQ6IHJnYmEoMjQyLCAxNzEsIDI1MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS05MDAtc29saWQ6IHJnYmEoMjQ1LCAxOTIsIDI1MiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS05NTAtc29saWQ6IHJnYmEoMjQ5LCAyMTMsIDI1MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0xMDAwLXNvbGlkOiByZ2JhKDI1MiwgMjM0LCAyNTQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTA6IHJnYmEoOTYsIDEyOCwgMTU2LCAwLjA1KTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTEwMDogcmdiYSg5NiwgMTI4LCAxNTYsIDAuMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTA6IHJnYmEoOTYsIDEyOCwgMTU2LCAwLjIpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMjAwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMC4zKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTI1MDogcmdiYSg5NiwgMTI4LCAxNTYsIDAuNCk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDA6IHJnYmEoOTYsIDEyOCwgMTU2LCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMzUwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMC42KTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQwMDogcmdiYSg5NiwgMTI4LCAxNTYsIDAuNyk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTA6IHJnYmEoOTYsIDEyOCwgMTU2LCAwLjgpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTAwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMC45KTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MDogcmdiYSg5NiwgMTI4LCAxNTYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTAtc29saWQ6IHJnYmEoMzcsIDQwLCA0NCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDAtc29saWQ6IHJnYmEoNDAsIDQ0LCA1MCwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTAtc29saWQ6IHJnYmEoNDYsIDU0LCA2MiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yMDAtc29saWQ6IHJnYmEoNTMsIDYzLCA3MywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yNTAtc29saWQ6IHJnYmEoNTksIDcyLCA4NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDAtc29saWQ6IHJnYmEoNjUsIDgxLCA5NywgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zNTAtc29saWQ6IHJnYmEoNzEsIDkxLCAxMDksIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDAwLXNvbGlkOiByZ2JhKDc3LCAxMDAsIDEyMSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTAtc29saWQ6IHJnYmEoODQsIDEwOSwgMTMyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwMC1zb2xpZDogcmdiYSg5MCwgMTE5LCAxNDQsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwLXNvbGlkOiByZ2JhKDk2LCAxMjgsIDE1NiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02MDAtc29saWQ6IHJnYmEoMTEyLCAxNDEsIDE2NiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02NTAtc29saWQ6IHJnYmEoMTI4LCAxNTMsIDE3NiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS03MDAtc29saWQ6IHJnYmEoMTQ0LCAxNjYsIDE4NiwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS03NTAtc29saWQ6IHJnYmEoMTYwLCAxNzksIDE5NSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS04MDAtc29saWQ6IHJnYmEoMTc2LCAxOTEsIDIwNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS04NTAtc29saWQ6IHJnYmEoMTkxLCAyMDQsIDIxNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS05MDAtc29saWQ6IHJnYmEoMjA3LCAyMTcsIDIyNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS05NTAtc29saWQ6IHJnYmEoMjIzLCAyMzAsIDIzNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDAwLXNvbGlkOiByZ2JhKDIzOSwgMjQyLCAyNDUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTA6IHJnYmEoMjAwLCA5OSwgMTIsIDAuMDUpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTAwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTUwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjIpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMjAwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjMpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMjUwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjQpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjUpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzUwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjYpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDAwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjcpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDUwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjgpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTAwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjkpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTUwOiByZ2JhKDIwMCwgOTksIDEyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwLXNvbGlkOiByZ2JhKDQyLCAzOCwgMzcsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTAwLXNvbGlkOiByZ2JhKDUxLCA0MSwgMzUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTUwLXNvbGlkOiByZ2JhKDY3LCA0OCwgMzMsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMjAwLXNvbGlkOiByZ2JhKDg0LCA1NCwgMzAsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMjUwLXNvbGlkOiByZ2JhKDEwMCwgNjEsIDI4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTMwMC1zb2xpZDogcmdiYSgxMTcsIDY3LCAyNSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zNTAtc29saWQ6IHJnYmEoMTM0LCA3MywgMjIsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDAwLXNvbGlkOiByZ2JhKDE1MCwgODAsIDIwLCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTQ1MC1zb2xpZDogcmdiYSgxNjcsIDg2LCAxNywgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01MDAtc29saWQ6IHJnYmEoMTgzLCA5MywgMTUsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTUwLXNvbGlkOiByZ2JhKDIwMCwgOTksIDEyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTYwMC1zb2xpZDogcmdiYSgyMDYsIDExNSwgMzYsIDEpOy0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNjUwLXNvbGlkOiByZ2JhKDIxMSwgMTMwLCA2MSwgMSk7LS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS03MDAtc29saWQ6IHJnYmEoMjE2LCAxNDYsIDg1LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTc1MC1zb2xpZDogcmdiYSgyMjIsIDE2MSwgMTA5LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTgwMC1zb2xpZDogcmdiYSgyMjcsIDE3NywgMTMzLCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTg1MC1zb2xpZDogcmdiYSgyMzMsIDE5MywgMTU4LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTkwMC1zb2xpZDogcmdiYSgyMzksIDIwOCwgMTgyLCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTk1MC1zb2xpZDogcmdiYSgyNDQsIDIyNCwgMjA2LCAxKTstLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTEwMDAtc29saWQ6IHJnYmEoMjUwLCAyMzksIDIzMSwgMSk7LS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTAtc29saWQpOy0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNjUwLXNvbGlkKTstLXljLW15LWNvbG9yLWJyYW5kLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTstLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTM1MCk7LS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS02MDAtc29saWQpOy0teWMtbXktY29sb3ItYnJhbmQtbGluazogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7LS15Yy1teS1jb2xvci1icmFuZC1saW5rLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzUwLXNvbGlkKTstLXljLW15LWNvbG9yLWJyYW5kLXRleHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04NTAtc29saWQpOy0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdDogdmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KTstLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNjUwLXNvbGlkKTstLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtODAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTstLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04MDApOy0teWMtY29sb3ItdGV4dC1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNjAwKTstLXljLWNvbG9yLXRleHQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00MDApOy0teWMtY29sb3ItdGV4dC1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNjAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjAwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC02MDAtc29saWQpOy0teWMtY29sb3ItdGV4dC11dGlsaXR5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS02MDAtc29saWQpOy0teWMtY29sb3ItdGV4dC1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02MDAtc29saWQpOy0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODUwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtcG9zaXRpdmUtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tODUwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtd2FybmluZy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctODUwLXNvbGlkKTstLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC04NTAtc29saWQpOy0teWMtY29sb3ItdGV4dC11dGlsaXR5LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04NTAtc29saWQpOy0teWMtY29sb3ItdGV4dC1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS04NTAtc29saWQpOy0teWMtY29sb3ItdGV4dC1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItdGV4dC1saW5rOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rKTstLXljLWNvbG9yLXRleHQtbGluay1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay1ob3Zlcik7LS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkKTstLXljLWNvbG9yLXRleHQtbGluay12aXNpdGVkLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQtaG92ZXIpOy0teWMtY29sb3ItdGV4dC15YW5kZXgtcmVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApOy0teWMtY29sb3ItdGV4dC1kYXJrLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwMCk7LS15Yy1jb2xvci10ZXh0LWRhcmstY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay04MDApOy0teWMtY29sb3ItdGV4dC1kYXJrLXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay02MDApOy0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApOy0teWMtY29sb3ItdGV4dC1saWdodC1jb21wbGVtZW50YXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTgwMCk7LS15Yy1jb2xvci10ZXh0LWxpZ2h0LXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS02MDApOy0teWMtY29sb3ItdGV4dC1saWdodC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTQwMCk7LS15Yy1jb2xvci10ZXh0LWludmVydGVkLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwMCk7LS15Yy1jb2xvci10ZXh0LWludmVydGVkLWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODAwKTstLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTYwMCk7LS15Yy1jb2xvci10ZXh0LWludmVydGVkLWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNDAwKTstLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay1yb2NrLTk1MCk7LS15Yy1jb2xvci1iYXNlLWdlbmVyaWM6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwKTstLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLW1lZGl1bS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00MDApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yMDApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudC1kaXNhYmxlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApOy0teWMtY29sb3ItYmFzZS1nZW5lcmljLXVsdHJhbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTApOy0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwKTstLXljLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyLXNvbGlkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLXNlbGVjdGlvbjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtc2VsZWN0aW9uKTstLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXIpOy0teWMtY29sb3ItYmFzZS1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwtaG92ZXIpOy0teWMtY29sb3ItYmFzZS1hY3Rpb246IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7LS15Yy1jb2xvci1iYXNlLWFjdGlvbi1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyKTstLXljLWNvbG9yLWJhc2UtaW5mbzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTI1MCk7LS15Yy1jb2xvci1iYXNlLWluZm8taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00MDApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0yNTApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00MDApOy0teWMtY29sb3ItYmFzZS13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0yNTApOy0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy00MDApOy0teWMtY29sb3ItYmFzZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTI1MCk7LS15Yy1jb2xvci1iYXNlLWRhbmdlci1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDAwKTstLXljLWNvbG9yLWJhc2UtbWlzYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMjUwKTstLXljLWNvbG9yLWJhc2UtbWlzYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDAwKTstLXljLWNvbG9yLWJhc2UtbmV1dHJhbDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDApOy0teWMtY29sb3ItYmFzZS1uZXV0cmFsLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zNTApOy0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1tZWRpdW0taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDAwKTstLXljLWNvbG9yLWJhc2UtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MCk7LS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MCk7LS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MCk7LS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaGVhdnktaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMCk7LS15Yy1jb2xvci1iYXNlLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwKTstLXljLWNvbG9yLWJhc2UtZGFuZ2VyLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTApOy0teWMtY29sb3ItYmFzZS1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTApOy0teWMtY29sb3ItYmFzZS1taXNjLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTApOy0teWMtY29sb3ItYmFzZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTApOy0teWMtY29sb3ItYmFzZS1saWdodC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDApOy0teWMtY29sb3ItYmFzZS1saWdodC1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLWJhc2UtbGlnaHQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTstLXljLWNvbG9yLWJhc2UtbGlnaHQtYWNjZW50LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLWZsb2F0LWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDAtc29saWQpOy0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNDAwLXNvbGlkKTstLXljLWNvbG9yLWJhc2UtZmxvYXQtYW5ub3VuY2VtZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZCk7LS15Yy1jb2xvci1iYXNlLW1vZGFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLXJvY2stODUwKTstLXljLWNvbG9yLWxpbmUtZ2VuZXJpYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApOy0teWMtY29sb3ItbGluZS1nZW5lcmljLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWN0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTYwMCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTM1MCk7LS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTgwMCk7LS15Yy1jb2xvci1saW5lLXNvbGlkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7LS15Yy1jb2xvci1saW5lLXNlbGVjdGlvbi1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGlnaHQpOy0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24tYWN0aXZlOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItbGluZS1saW5rOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpOy0teWMtY29sb3ItbGluZS1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLWNvbG9yLWxpbmUtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwKTstLXljLWNvbG9yLWxpbmUtd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwKTstLXljLWNvbG9yLWxpbmUtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApOy0teWMtY29sb3ItbGluZS1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTApOy0teWMtY29sb3ItbGluZS1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTstLXljLWNvbG9yLWxpbmUtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTE1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTE1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8tbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTApOy0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTstLXljLWNvbG9yLWluZm9ncmFwaGljcy1heGlzOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7LS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtdG9vbHRpcC1iZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS1vcGFxdWUtMTUwKTstLXljLWNvbG9yLXNmeC12ZWlsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMCk7LS15Yy1jb2xvci1zZngtc2hhZG93OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMCk7LS15Yy1jb2xvci1zZngtc2hhZG93LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQwMCk7LS15Yy1jb2xvci1zZngtc2hhZG93LWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMCk7LS15Yy1jb2xvci1zZngtZmFkZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApOy0teWMtY29sb3ItcHJvbW8tYmFzZS1zaWx2ZXI6ICNiY2MwYzQ7LS15Yy1jb2xvci1wcm9tby1iYXNlLWdvbGQ6ICNmZmRlNWQ7LS15Yy1jb2xvci1wcm9tby1iYXNlLWFzcGhhbHQ6ICM0NzRkNTI7LS15Yy1jb2xvci1wcm9tby1iYXNlLXRvbWF0bzogI2ZmNmI2YTstLXljLWNvbG9yLXByb21vLWJhc2UtY29wcGVyOiAjZmZiOTVhOy0teWMtY29sb3ItcHJvbW8tYmFzZS1taW50OiAjN2ZkNjhlOy0teWMtY29sb3ItcHJvbW8tYmFzZS1za3k6ICM2OWI0ZmY7LS15Yy1jb2xvci1wcm9tby1iYXNlLW5lb246ICNiMzg0ZmY7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtc2lsdmVyOiAjNjE2MzY2Oy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LWdvbGQ6ICM5OTgzMmU7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtYXNwaGFsdDogIzVkNjU2YjstLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC10b21hdG86ICM5OTg1ODU7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtY29wcGVyOiAjN2Y3MjYyOy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LW1pbnQ6ICM3NTg5Nzg7LS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtc2t5OiAjOTRhMmFmOy0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LW5lb246ICNhZWE2YmE7LS15Yy1jb2xvci1zY3JvbGwtdHJhY2s6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7LS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7LS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7LS15Yy1jb2xvci1zY3JvbGwtY29ybmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9Ym9keS55Yy1yb290Om5vdCgueWMtcm9vdF9tb2JpbGUpOm5vdCgueWMtcm9vdF9uYXRpdmUtc2Nyb2xsYmFyKXtzY3JvbGxiYXItd2lkdGg6dmFyKC0teWMtc2Nyb2xsYmFyLXdpZHRoKTtzY3JvbGxiYXItY29sb3I6dmFyKC0teWMtY29sb3Itc2Nyb2xsLWhhbmRsZSkgdmFyKC0teWMtY29sb3Itc2Nyb2xsLXRyYWNrKX1ib2R5LnljLXJvb3Q6bm90KC55Yy1yb290X21vYmlsZSk6bm90KC55Yy1yb290X25hdGl2ZS1zY3JvbGxiYXIpOjotd2Via2l0LXNjcm9sbGJhcixib2R5LnljLXJvb3Q6bm90KC55Yy1yb290X21vYmlsZSk6bm90KC55Yy1yb290X25hdGl2ZS1zY3JvbGxiYXIpICo6Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOnZhcigtLXljLXNjcm9sbGJhci13aWR0aCk7aGVpZ2h0OnZhcigtLXljLXNjcm9sbGJhci13aWR0aCk7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1zY3JvbGwtdHJhY2spfWJvZHkueWMtcm9vdDpub3QoLnljLXJvb3RfbW9iaWxlKTpub3QoLnljLXJvb3RfbmF0aXZlLXNjcm9sbGJhcik6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLGJvZHkueWMtcm9vdDpub3QoLnljLXJvb3RfbW9iaWxlKTpub3QoLnljLXJvb3RfbmF0aXZlLXNjcm9sbGJhcikgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1zY3JvbGwtdHJhY2spfWJvZHkueWMtcm9vdDpub3QoLnljLXJvb3RfbW9iaWxlKTpub3QoLnljLXJvb3RfbmF0aXZlLXNjcm9sbGJhcik6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcixib2R5LnljLXJvb3Q6bm90KC55Yy1yb290X21vYmlsZSk6bm90KC55Yy1yb290X25hdGl2ZS1zY3JvbGxiYXIpICo6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lcntiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLXNjcm9sbC1jb3JuZXIpfWJvZHkueWMtcm9vdDpub3QoLnljLXJvb3RfbW9iaWxlKTpub3QoLnljLXJvb3RfbmF0aXZlLXNjcm9sbGJhcik6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iLGJvZHkueWMtcm9vdDpub3QoLnljLXJvb3RfbW9iaWxlKTpub3QoLnljLXJvb3RfbmF0aXZlLXNjcm9sbGJhcikgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWJ7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlKX1ib2R5LnljLXJvb3Q6bm90KC55Yy1yb290X21vYmlsZSk6bm90KC55Yy1yb290X25hdGl2ZS1zY3JvbGxiYXIpOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3Zlcixib2R5LnljLXJvb3Q6bm90KC55Yy1yb290X21vYmlsZSk6bm90KC55Yy1yb290X25hdGl2ZS1zY3JvbGxiYXIpICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVye2JhY2tncm91bmQ6dmFyKC0teWMtY29sb3Itc2Nyb2xsLWhhbmRsZS1ob3Zlcil9QGtleWZyYW1lcyB5Yy1sb2FkaW5nLWFuaW1hdGlvbntmcm9te2JhY2tncm91bmQtcG9zaXRpb246LTEycHggMH10b3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH19LmRjLWRvYy1wYWdlIC55Zm17Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTstLXlmbS1jb2xvci1obGpzLWJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7LS15Zm0tY29sb3ItaGxqcy1zdWJzdDogdmFyKC0teWMtY29sb3ItdGV4dC1jb21wbGVtZW50YXJ5KTstLXlmbS1jb2xvci1obGpzLWNvbW1lbnQ6IHZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTstLXlmbS1jb2xvci1obGpzLWRlbGV0aW9uOiB2YXIoLS15Yy1jb2xvci1saW5lLWRhbmdlcik7LS15Zm0tY29sb3ItaGxqcy1zZWN0aW9uOiB2YXIoLS15Yy1jb2xvci1saW5lLWRhbmdlcil9LmRjLWRvYy1wYWdlIC55Zm0gYXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmspfS5kYy1kb2MtcGFnZSAueWZtIGE6aG92ZXIsLmRjLWRvYy1wYWdlIC55Zm0gYTphY3RpdmV7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKX0uZGMtZG9jLXBhZ2UgLnlmbSBpbWd7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpfS5kYy1kb2MtcGFnZSAueWZtLnlmbS1hY2NlbnQtaW5mb3tiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2UtaW5mbyl9LmRjLWRvYy1wYWdlIC55Zm0ueWZtLWFjY2VudC10aXB7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlKX0uZGMtZG9jLXBhZ2UgLnlmbS55Zm0tYWNjZW50LWFsZXJ0e2JhY2tncm91bmQ6dmFyKC0teWMtY29sb3ItYmFzZS1kYW5nZXIpfS5kYy1kb2MtcGFnZSAueWZtLnlmbS1hY2NlbnQtd2FybmluZ3tiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2Utd2FybmluZyl9LmRjLWRvYy1wYWdlIC55Zm0gY29kZXtmb250LXNpemU6dmFyKC0tZGMtY29kZS1zaG9ydC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWRjLWNvZGUtc2hvcnQtbGluZS1oZWlnaHQpO3BhZGRpbmc6dmFyKC0tZGMtY29kZS1zaG9ydC1wYWRkaW5nKTtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2UtbWlzYyk7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1taXNjKX0uZGMtZG9jLXBhZ2UgLnlmbSBwcmU+Y29kZXtmb250LXNpemU6dmFyKC0tZGMtY29kZS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLWRjLWNvZGUtbGluZS1oZWlnaHQpO3BhZGRpbmc6MTZweDtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2UtbWlzYyk7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1jb21wbGVtZW50YXJ5KX0uZGMtZG9jLXBhZ2UgLnlmbSBkZm57YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1iYXNlLWZsb2F0KTtib3gtc2hhZG93OjAgOHB4IDIwcHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyl9LmRjLWRvYy1wYWdlIC55Zm0gZGZuOmJlZm9yZXtib3gtc2hhZG93OjAgMCAwIDFweCB2YXIoLS15Yy1wb3B1cC1ib3JkZXItY29sb3IpfS5kYy1kb2MtcGFnZSAueWZtIHRhYmxle2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7Ym9yZGVyLWNvbG9yOnZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpfS5kYy1kb2MtcGFnZSAueWZtIHRhYmxlIHRoZWFkLC5kYy1kb2MtcGFnZSAueWZtIHRhYmxlIHRyOm50aC1jaGlsZCgybil7YmFja2dyb3VuZDp2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMpfS5kYy1kb2MtcGFnZSAueWZtIGhye2JhY2tncm91bmQtY29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKX0uZGMtZG9jLXBhZ2UgLnlmbSBibG9ja3F1b3Rle2JvcmRlci1sZWZ0LWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCl9LmRjLWRvYy1wYWdlIC55Zm0gLnlmbS10YWItbGlzdHtib3JkZXItYm90dG9tLWNvbG9yOnZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyl9LmRjLWRvYy1wYWdlIC55Zm0gLnlmbS10YWI6aG92ZXIsLmRjLWRvYy1wYWdlIC55Zm0gLnlmbS10YWI6YWN0aXZle2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcil9LmRjLWRvYy1wYWdlIC55Zm0gLnlmbS10YWIuYWN0aXZle2JvcmRlci1ib3R0b20tY29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKX0uZGMtZG9jLXBhZ2UgLnlmbSAueWZtLWN1dHttYXJnaW4tYm90dG9tOjE1cHh9LmRjLWRvYy1wYWdlIC55Zm0gLnlmbS1jdXQub3BlbiAueWZtLWN1dC1jb250ZW50e3BhZGRpbmc6NXB4IDAgMCAzMHB4fS5kYy1kb2MtcGFnZSAueWZtIC55Zm0tdGVybV90aXRsZTpob3Zlcntjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmstaG92ZXIpfS5kYy1kb2MtcGFnZSAueWZtIGgxLC5kYy1kb2MtcGFnZSAueWZtIGgye3BhZGRpbmctdG9wOmNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSk7bWFyZ2luLXRvcDpjYWxjKGNhbGMoNDBweCAtIDE1cHgpIC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSk7bWFyZ2luLWJvdHRvbToyMHB4fS5kYy1kb2MtcGFnZSAueWZtIGgzLC5kYy1kb2MtcGFnZSAueWZtIGg0LC5kYy1kb2MtcGFnZSAueWZtIGg1LC5kYy1kb2MtcGFnZSAueWZtIGg2e3BhZGRpbmctdG9wOmNhbGModmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSk7bWFyZ2luLXRvcDpjYWxjKGNhbGMoMzJweCAtIDE1cHgpIC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSl9LmRjLWRvYy1wYWdlIC55Zm0gaDEraDIsLmRjLWRvYy1wYWdlIC55Zm0gaDIraDMsLmRjLWRvYy1wYWdlIC55Zm0gaDMraDQsLmRjLWRvYy1wYWdlIC55Zm0gaDQraDUsLmRjLWRvYy1wYWdlIC55Zm0gaDUraDZ7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpKTttYXJnaW4tdG9wOmNhbGMoMHB4IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSl9LmRjLWRvYy1wYWdlIC55Zm0gaDE6Zmlyc3QtY2hpbGQsLmRjLWRvYy1wYWdlIC55Zm0gaDI6Zmlyc3QtY2hpbGQsLmRjLWRvYy1wYWdlIC55Zm0gaDM6Zmlyc3QtY2hpbGQsLmRjLWRvYy1wYWdlIC55Zm0gaDQ6Zmlyc3QtY2hpbGQsLmRjLWRvYy1wYWdlIC55Zm0gaDU6Zmlyc3QtY2hpbGQsLmRjLWRvYy1wYWdlIC55Zm0gaDY6Zmlyc3QtY2hpbGR7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAwcHgpKTttYXJnaW4tdG9wOmNhbGMoMHB4IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSl9LmRjLWRvYy1wYWdlIC55Zm0gLnlmbS1wYWdlX19kZWxpbWV0ZXJ7aGVpZ2h0OjRweDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7bWFyZ2luLXRvcDoyMHB4O21hcmdpbi1ib3R0b206MH0uZGMtZG9jLXBhZ2UgLnlmbSAueWZtLXBhZ2VfX2RlbGltZXRlcitoMSwuZGMtZG9jLXBhZ2UgLnlmbSAueWZtLXBhZ2VfX2RlbGltZXRlcitoMiwuZGMtZG9jLXBhZ2UgLnlmbSAueWZtLXBhZ2VfX2RlbGltZXRlcitoMywuZGMtZG9jLXBhZ2UgLnlmbSAueWZtLXBhZ2VfX2RlbGltZXRlcitoNCwuZGMtZG9jLXBhZ2UgLnlmbSAueWZtLXBhZ2VfX2RlbGltZXRlcitoNSwuZGMtZG9jLXBhZ2UgLnlmbSAueWZtLXBhZ2VfX2RlbGltZXRlcitoNntwYWRkaW5nLXRvcDpjYWxjKHZhcigtLWRjLWhlYWRlci1oZWlnaHQsIDBweCkpO21hcmdpbi10b3A6Y2FsYyg0MHB4IC0gdmFyKC0tZGMtaGVhZGVyLWhlaWdodCwgMHB4KSl9LmRjLWRvYy1wYWdlIC55Zm0gLnlmbS1vcmlnaW5hbC1saW5rOmJlZm9yZXtjb250ZW50Om5vbmV9LmRjLWRvYy1wYWdlIC55Zm0gLnlmbS1vcmlnaW5hbC1saW5rIHN2Z3t2aXNpYmlsaXR5OmhpZGRlbn0uZGMtZG9jLXBhZ2UgLnlmbSBoMSAueWZtLW9yaWdpbmFsLWxpbms6OmJlZm9yZSwuZGMtZG9jLXBhZ2UgLnlmbSBoMiAueWZtLW9yaWdpbmFsLWxpbms6OmJlZm9yZSwuZGMtZG9jLXBhZ2UgLnlmbSBoMyAueWZtLW9yaWdpbmFsLWxpbms6OmJlZm9yZSwuZGMtZG9jLXBhZ2UgLnlmbSBoNCAueWZtLW9yaWdpbmFsLWxpbms6OmJlZm9yZSwuZGMtZG9jLXBhZ2UgLnlmbSBoNSAueWZtLW9yaWdpbmFsLWxpbms6OmJlZm9yZSwuZGMtZG9jLXBhZ2UgLnlmbSBoNiAueWZtLW9yaWdpbmFsLWxpbms6OmJlZm9yZXtjb250ZW50Om5vbmV9LmRjLWRvYy1wYWdlIC55Zm0gaDEgLnlmbS1vcmlnaW5hbC1saW5rIHN2ZywuZGMtZG9jLXBhZ2UgLnlmbSBoMiAueWZtLW9yaWdpbmFsLWxpbmsgc3ZnLC5kYy1kb2MtcGFnZSAueWZtIGgzIC55Zm0tb3JpZ2luYWwtbGluayBzdmcsLmRjLWRvYy1wYWdlIC55Zm0gaDQgLnlmbS1vcmlnaW5hbC1saW5rIHN2ZywuZGMtZG9jLXBhZ2UgLnlmbSBoNSAueWZtLW9yaWdpbmFsLWxpbmsgc3ZnLC5kYy1kb2MtcGFnZSAueWZtIGg2IC55Zm0tb3JpZ2luYWwtbGluayBzdmd7dmlzaWJpbGl0eTpoaWRkZW59LmRjLWRvYy1wYWdlIC55Zm0gaDE6aG92ZXIgLnlmbS1vcmlnaW5hbC1saW5rIHN2ZywuZGMtZG9jLXBhZ2UgLnlmbSBoMjpob3ZlciAueWZtLW9yaWdpbmFsLWxpbmsgc3ZnLC5kYy1kb2MtcGFnZSAueWZtIGgzOmhvdmVyIC55Zm0tb3JpZ2luYWwtbGluayBzdmcsLmRjLWRvYy1wYWdlIC55Zm0gaDQ6aG92ZXIgLnlmbS1vcmlnaW5hbC1saW5rIHN2ZywuZGMtZG9jLXBhZ2UgLnlmbSBoNTpob3ZlciAueWZtLW9yaWdpbmFsLWxpbmsgc3ZnLC5kYy1kb2MtcGFnZSAueWZtIGg2OmhvdmVyIC55Zm0tb3JpZ2luYWwtbGluayBzdmd7dmlzaWJpbGl0eTp2aXNpYmxlfS5kYy1kb2MtcGFnZSAueWZtIC55Zm0tYW5jaG9yX2hpZGRlbnt2aXNpYmlsaXR5OmhpZGRlbn0uZGMtZG9jLXBhZ2UgLnlmbSAueWZtLWFuY2hvcl9oaWRkZW46YmVmb3Jle3Zpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnR9LnljLXJvb3RfdGhlbWVfZGFyayAuZGMtZG9jLXBhZ2UgLnlmbSAueWZtLWN1dC10aXRsZTpiZWZvcmV7YmFja2dyb3VuZC1pbWFnZTp1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpfS55Yy1yb290ey0tZGMtdGV4dC1oaWdobGlnaHQ6IHZhcigtLXljLWNvbG9yLWJhc2Utd2FybmluZy1oZWF2eSk7LS1kYy10ZXh0LWhpZ2hsaWdodC1zZWxlY3RlZDogI2ZmYWIzYn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL3N0eWxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL3R5cG9ncmFwaHkuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9icmFuZC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9zb2NpYWwuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9zcGFjaW5nLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL3ByaXZhdGUvbGlnaHQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvdGV4dC9saWdodC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9iYXNlL2xpZ2h0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL2xpbmUvbGlnaHQuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvaW5mb2dyYXBoaWNzL2xpZ2h0LnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL3NmeC9saWdodC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9wcm9tby9saWdodC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9zeXN0ZW0uc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvcHJpdmF0ZS9kYXJrLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL3RleHQvZGFyay5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9iYXNlL2Rhcmsuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvbGluZS9kYXJrLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL2luZm9ncmFwaGljcy9kYXJrLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL3NmeC9kYXJrLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL3Byb21vL2Rhcmsuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvcHJpdmF0ZS9saWdodC1oYy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy90ZXh0L2xpZ2h0LWhjLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL2Jhc2UvbGlnaHQtaGMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvbGluZS9saWdodC1oYy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9pbmZvZ3JhcGhpY3MvbGlnaHQtaGMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvc2Z4L2xpZ2h0LWhjLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL3Byb21vL2xpZ2h0LWhjLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL3ByaXZhdGUvZGFyay1oYy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy90ZXh0L2RhcmstaGMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L3N0eWxlcy9jb2xvcnMvYmFzZS9kYXJrLWhjLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvY29sb3JzL2xpbmUvZGFyay1oYy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9pbmZvZ3JhcGhpY3MvZGFyay1oYy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9zZngvZGFyay1oYy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvc3R5bGVzL2NvbG9ycy9wcm9tby9kYXJrLWhjLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvc3R5bGVzL3lmbS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy92YXJpYWJsZXMuc2Nzc1wiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvbWl4aW5zLnNjc3NcIixcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL2NvbXBvbmVudHMvc3R5bGVzL3RoZW1lcy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQWtDQSxTQ2pDSSx5RUFBQSxDQUNBLG9KQUFBLENBR0Esc0RBQUEsQ0FDQSwyREFBQSxDQUVBLGlDQUFBLENBQ0Esb0NBQUEsQ0FDQSxrQ0FBQSxDQUNBLCtCQUFBLENBQ0EsK0JBQUEsQ0FDQSxrQ0FBQSxDQUNBLGlDQUFBLENBRUEsZ0NBQUEsQ0FDQSxrQ0FBQSxDQUVBLGdDQUFBLENBQ0Esa0NBQUEsQ0FFQSxnQ0FBQSxDQUNBLGtDQUFBLENBRUEsb0NBQUEsQ0FDQSxzQ0FBQSxDQUVBLGtDQUFBLENBQ0EscUNBQUEsQ0FFQSxtQ0FBQSxDQUNBLHFDQUFBLENBRUEsa0NBQUEsQ0FDQSxvQ0FBQSxDQUVBLGtDQUFBLENBQ0Esb0NBQUEsQ0FFQSxxQ0FBQSxDQUNBLHVDQUFBLENBRUEscUNBQUEsQ0FDQSx1Q0FBQSxDQUVBLHFDQUFBLENBQ0EsdUNBQUEsQ0FFQSxtQ0FBQSxDQUNBLHFDQUFBLENBRUEsbUNBQUEsQ0FDQSxxQ0FBQSxDQUVBLG1DQUFBLENBQ0EscUNBQUEsQ0FFQSxtQ0FBQSxDQUNBLHFDQUFBLENBRUEsZ0NBQUEsQ0FDQSxrQ0FBQSxDQUVBLGdDQUFBLENBQ0Esa0NBQUEsQ0FFQSxnQ0FBQSxDQUNBLGtDQUFBLENBRUEsdUNBQUEsQ0FDQSx5Q0FBQSxDQUVBLHVDQUFBLENBQ0EseUNBQUEsQ0FFQSx1Q0FBQSxDQUNBLHlDQUFBLENBRUEsMkNBQUEsQ0FDQSx5Q0FBQSxDQUNBLDZDQUFBLENBQ0EsMkNBQUEsQ0NqRkEsNkJBQUEsQ0FFQSw2QkFBQSxDQUNBLDRCQUFBLENBQ0EsNEJBQUEsQ0FDQSw0QkFBQSxDQUNBLDhCQUFBLENDSkEsNEJBQUEsQ0FDQSw0QkFBQSxDQUNBLDJCQUFBLENBQ0Esc0JBQUEsQ0FDQSwyQkFBQSxDQUNBLDBCQUFB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Q0Esd0NBQUEsQ0FDQSx1Q0FBQSxDQUNBLHdDQUFBLENQVEEsd0RBQUEsQ0FDQSwyREFBQSxDQUNBLGlFQUFBLENBQ0EsMkRBQUEsQ1orREksMENBQUEsQ0FDQSxrQ0FBQSxDQUdKLHdCb0IzRUEsc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0EsdURBQUEsQ0FDQSxzREFBQSxDQUNBLHVEQUFBLENBQ0Esc0RBQUEsQ0FDQSx1REFBQSxDQUNBLHNEQUFBLENBQ0EsdURBQUEsQ0FDQSxzREFBQSxDQUNBLHVEQUFBLENBQ0Esc0RBQUEsQ0FDQSx1REFBQSxDQUNBLHNEQUFBLENBQ0EsdURBQUEsQ0FDQSxzREFBQSxDQUNBLHVEQUFBLENBQ0Esc0RBQUEsQ0FDQSx1REFBQSxDQUNBLHFEQUFBLENBRUEsZ0RBQUEsQ0FDQSxnREFBQSxDQUNBLGlEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxpREFBQSxDQUNBLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSxnREFBQSxDQUNBLGlEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxpREFBQSxDQUNBLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSxnREFBQSxDQUNBLGlEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxpREFBQSxDQUNBLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSwrQ0FBQSxDQUVBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsdURBQUEsQ0FDQSx1REFBQSxDQUNBLHVEQUFBLENBQ0EsdURBQUEsQ0FDQSx1REFBQSxDQUNBLHVEQUFBLENBQ0EsdURBQUEsQ0FDQSxxREFBQSxDQUVBLG9DQUFBLENBQ0Esb0NBQUEsQ0FFQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLGtEQUFBLENBRUEsd0RBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHVEQUFBLENBQ0EsdURBQUEsQ0FDQSx1REFBQSxDQUNBLHVEQUFBLENBQ0Esc0RBQUEsQ0FDQSx1REFBQSxDQUVBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esa0RBQUEsQ0FFQSx5REFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0EsdURBQUEsQ0FDQSx1REFBQSxDQUNBLHdEQUFBLENBRUEsc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxvREFBQSxDQUVBLDBEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSx5REFBQSxDQUNBLHdEQUFBLENBQ0EseURBQUEsQ0FFQSxnREFBQSxDQUNBLGdEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxnREFBQSxDQUNBLGdEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxnREFBQSxDQUNBLGdEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxnREFBQSxDQUNBLDhDQUFBLENBRUEsdURBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0EscURBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0EscURBQUEsQ0FDQSxzREFBQSxDQUVBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esb0RBQUEsQ0FFQSwwREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSx5REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHlEQUFBLENBRUEsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSx3REFBQSxDQUVBLDZEQUFBLENBQ0EsOERBQUEsQ0FDQSw4REFBQSxDQUNBLDhEQUFBLENBQ0EsOERBQUEsQ0FDQSw4REFB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QUFBLENBQ0Esc0RBQUEsQ0FDQSx1REFBQSxDQUNBLHFEQUFBLENBR0EsMkRBQUEsQ0FFQSxnREFBQSxDQUNBLGdEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxpREFBQSxDQUNBLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSxnREFBQSxDQUNBLGlEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxpREFBQSxDQUNBLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSxnREFBQSxDQUNBLGlEQUFBLENBQ0EsZ0RBQUEsQ0FDQSxpREFBQSxDQUNBLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSxnREFBQSxDQUNBLGlEQUFBLENBQ0EsK0NBQUEsQ0FFQSwwQ0FBQSxDQUNBLHNEQUFBLENBR0Esc0RBQUEsQ0FFQSxzREFBQSxDQUNBLHVEQUFBLENBQ0EsdURBQUEsQ0FDQSx1REFBQSxDQUNBLHVEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDJEQUFBLENBRUEsb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxrREFBQSxDQUNBLG1EQUFBLENBQ0EsbURBQUEsQ0FFQSxxREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSx1REFBQSxDQUNBLHVEQUFBLENBQ0EsdURBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLDBEQUFBLENBRUEsb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxvREFBQSxDQUNBLG9EQUFBLENBQ0Esb0RBQUEsQ0FDQSxrREFBQSxDQUVBLHNEQUFBLENBQ0EsdURBQUEsQ0FDQSx1REFBQSxDQUNBLHVEQUFBLENBQ0EsdURBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMkRBQUEsQ0FHQSxzQ0FBQSxDQUVBLHFEQUFBLENBQ0EscURBQUEsQ0FDQSxxREFBQSxDQUNBLHFEQUFBLENBQ0EscURBQUEsQ0FDQSxxREFBQSxDQUNBLHFEQUFBLENBQ0EscURBQUEsQ0FDQSxxREFBQSxDQUNBLHFEQUFBLENBQ0EsbURBQUEsQ0FFQSx1REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx5REFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDREQUFBLENBRUEsa0RBQUEsQ0FDQSxrREFBQSxDQUNBLGtEQUFBLENBQ0Esa0RBQUEsQ0FDQSxrREFBQSxDQUNBLGtEQUFBLENBQ0Esa0RBQUEsQ0FDQSxrREFBQSxDQUNBLGtEQUFBLENBQ0Esa0RBQUEsQ0FDQSxnREFBQSxDQUVBLG9EQUFBLENBQ0EscURBQUEsQ0FDQSxxREFBQSxDQUNBLHFEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0Esd0RBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0EseURBQUEsQ0FFQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLHNEQUFBLENBQ0Esc0RBQUEsQ0FDQSxzREFBQSxDQUNBLG9EQUFBLENBRUEsdURBQUEsQ0FDQSx3REFBQSxDQUNBLHdEQUFBLENBQ0EseURBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwwREFBQSxDQUNBLDBEQUFBLENBQ0EsMERBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSw0REFBQSxDQUVBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EseURBQUEsQ0FDQSx5REFBQSxDQUNBLHlEQUFBLENBQ0EsdURBQUEsQ0FFQSwwREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSwyREFBQSxDQUNBLDJEQUFBLENBQ0EsMkRBQUEsQ0FDQSw0REFBQSxDQUNBLDZEQUFBLENBQ0EsNkRBQUEsQ0FDQSw2REFBQSxDQUNBLDZEQUFBLENBQ0EsOERBQUEsQ0FDQSw4REFBQSxDQUNBLDhEQUFBLENBQ0EsOERBQUEsQ0FDQSw4REFBQSxDQUNBLDhEQUFBLENBQ0EsOERBQUEsQ0FDQSw4REFBQSxDQUNBLCtEQUFBLENBRUEscURBQUEsQ0FDQSxxREFBQSxDQUNBLHFEQUFBLENBQ0EscURBQUEsQ0FDQSxxREFBQSxDQUNBLHFEQUFBLENBQ0EscURBQUEsQ0FDQSxxREFBQSxD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SSxvQkFBQSxDQUdKLHdDQUNJLHFDQUFBLENBS0osMENFaEdBLDhDQUFBLENBQ0EsaUVBQUEsQ0ZrR0ksa0JDN0dpQixDRGdIckIsb0ZFdEdBLDhDQUFBLENBQ0EsaUVBQUEsQ0Y0R0Esd0hFN0dBLDhDQUFBLENBQ0EsbURBQUEsQ0Y0SEksc01FN0hKLDhDQUFBLENBQ0EsbURBQUEsQ0ZpSUEsdUNBQ0ksVUFBQSxDQUNBLGlCQUFBLENBQ0EsdUNBQUEsQ0FDQSxlQUFBLENBQ0EsZUFBQSxDQUVBLDRQRXpJSiw4Q0FBQSxDQUNBLG9EQUFBLENGbUpJLDRDQUNJLFlBQUEsQ0FFSix5Q0FDSSxpQkFBQSxDQVVKLGdTQUNJLFlBQUEsQ0FFSix3UUFDSSxpQkFBQSxDQUVKLDRTQUNJLGtCQUFBLENBS1IscUNBQ0ksaUJBQUEsQ0FDQSw0Q0FDSSw0QkFBQSxDQU9SLDREQUNJLHdEQUFBLENHcE1SLFNBQ0ksdURBQUEsQ0FDQSxxQ0FBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0ICcuL2NvbG9ycy9wcml2YXRlL2xpZ2h0JztcXG5AaW1wb3J0ICcuL2NvbG9ycy9wcml2YXRlL2RhcmsnO1xcbkBpbXBvcnQgJy4vY29sb3JzL3ByaXZhdGUvbGlnaHQtaGMnO1xcbkBpbXBvcnQgJy4vY29sb3JzL3ByaXZhdGUvZGFyay1oYyc7XFxuQGltcG9ydCAnLi9jb2xvcnMvdGV4dC9saWdodCc7XFxuQGltcG9ydCAnLi9jb2xvcnMvdGV4dC9kYXJrJztcXG5AaW1wb3J0ICcuL2NvbG9ycy90ZXh0L2xpZ2h0LWhjJztcXG5AaW1wb3J0ICcuL2NvbG9ycy90ZXh0L2RhcmstaGMnO1xcbkBpbXBvcnQgJy4vY29sb3JzL2Jhc2UvbGlnaHQnO1xcbkBpbXBvcnQgJy4vY29sb3JzL2Jhc2UvZGFyayc7XFxuQGltcG9ydCAnLi9jb2xvcnMvYmFzZS9saWdodC1oYyc7XFxuQGltcG9ydCAnLi9jb2xvcnMvYmFzZS9kYXJrLWhjJztcXG5AaW1wb3J0ICcuL2NvbG9ycy9saW5lL2xpZ2h0JztcXG5AaW1wb3J0ICcuL2NvbG9ycy9saW5lL2RhcmsnO1xcbkBpbXBvcnQgJy4vY29sb3JzL2xpbmUvbGlnaHQtaGMnO1xcbkBpbXBvcnQgJy4vY29sb3JzL2xpbmUvZGFyay1oYyc7XFxuQGltcG9ydCAnLi9jb2xvcnMvaW5mb2dyYXBoaWNzL2xpZ2h0JztcXG5AaW1wb3J0ICcuL2NvbG9ycy9pbmZvZ3JhcGhpY3MvZGFyayc7XFxuQGltcG9ydCAnLi9jb2xvcnMvaW5mb2dyYXBoaWNzL2xpZ2h0LWhjJztcXG5AaW1wb3J0ICcuL2NvbG9ycy9pbmZvZ3JhcGhpY3MvZGFyay1oYyc7XFxuQGltcG9ydCAnLi9jb2xvcnMvc2Z4L2xpZ2h0JztcXG5AaW1wb3J0ICcuL2NvbG9ycy9zZngvZGFyayc7XFxuQGltcG9ydCAnLi9jb2xvcnMvc2Z4L2xpZ2h0LWhjJztcXG5AaW1wb3J0ICcuL2NvbG9ycy9zZngvZGFyay1oYyc7XFxuQGltcG9ydCAnLi9jb2xvcnMvcHJvbW8vbGlnaHQnO1xcbkBpbXBvcnQgJy4vY29sb3JzL3Byb21vL2RhcmsnO1xcbkBpbXBvcnQgJy4vY29sb3JzL3Byb21vL2xpZ2h0LWhjJztcXG5AaW1wb3J0ICcuL2NvbG9ycy9wcm9tby9kYXJrLWhjJztcXG5AaW1wb3J0ICcuL2NvbG9ycy9zb2NpYWwnO1xcbkBpbXBvcnQgJy4vY29sb3JzL3N5c3RlbSc7XFxuQGltcG9ydCAnLi90eXBvZ3JhcGh5JztcXG5AaW1wb3J0ICcuL2JyYW5kJztcXG5AaW1wb3J0ICcuL3NwYWNpbmcnO1xcblxcbi55Yy1yb290IHtcXG4gICAgQGluY2x1ZGUgeWMtdHlwb2dyYXBoeTtcXG4gICAgQGluY2x1ZGUgeWMtYnJhbmQ7XFxuICAgIEBpbmNsdWRlIHljLWNvbG9ycy1zb2NpYWw7XFxuICAgIEBpbmNsdWRlIHljLXNwYWNpbmc7XFxuXFxuICAgIC0teWMtc2Nyb2xsYmFyLXdpZHRoOiB2YXIoLS15Yy1teS1zY3JvbGxiYXItd2lkdGgpO1xcblxcbiAgICAtLXljLWJvcmRlci1yYWRpdXMteHM6IHZhcigtLXljLW15LWJvcmRlci1yYWRpdXMteHMpO1xcbiAgICAtLXljLWJvcmRlci1yYWRpdXMtczogdmFyKC0teWMtbXktYm9yZGVyLXJhZGl1cy1zKTtcXG4gICAgLS15Yy1ib3JkZXItcmFkaXVzLW06IHZhcigtLXljLW15LWJvcmRlci1yYWRpdXMtbSk7XFxuICAgIC0teWMtYm9yZGVyLXJhZGl1cy1sOiB2YXIoLS15Yy1teS1ib3JkZXItcmFkaXVzLWwpO1xcbiAgICAtLXljLWJvcmRlci1yYWRpdXMteGw6IHZhcigtLXljLW15LWJvcmRlci1yYWRpdXMteGwpO1xcblxcbiAgICAmX3RoZW1lX2xpZ2h0IHtcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1wcml2YXRlLWxpZ2h0O1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWJyYW5kLWxpZ2h0O1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLXRleHQtbGlnaHQ7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtYmFzZS1saWdodDtcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1saW5lLWxpZ2h0O1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWluZm9ncmFwaGljcy1saWdodDtcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1zZngtbGlnaHQ7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtcHJvbW8tbGlnaHQ7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtc3lzdGVtLWxpZ2h0O1xcblxcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICB9XFxuXFxuICAgICZfdGhlbWVfZGFyayB7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtcHJpdmF0ZS1kYXJrO1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWJyYW5kLWRhcms7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtdGV4dC1kYXJrO1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWJhc2UtZGFyaztcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1saW5lLWRhcms7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtaW5mb2dyYXBoaWNzLWRhcms7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtc2Z4LWRhcms7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtcHJvbW8tZGFyaztcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1zeXN0ZW0tZGFyaztcXG5cXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG4gICAgfVxcblxcbiAgICAmX3RoZW1lX2xpZ2h0LWhjIHtcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1wcml2YXRlLWxpZ2h0LWhjO1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWJyYW5kLWxpZ2h0LWhjO1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLXRleHQtbGlnaHQtaGM7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtYmFzZS1saWdodC1oYztcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1saW5lLWxpZ2h0LWhjO1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWluZm9ncmFwaGljcy1saWdodC1oYztcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1zZngtbGlnaHQtaGM7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtcHJvbW8tbGlnaHQtaGM7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtc3lzdGVtLWxpZ2h0LWhjO1xcblxcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICB9XFxuXFxuICAgICZfdGhlbWVfZGFyay1oYyB7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtcHJpdmF0ZS1kYXJrLWhjO1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWJyYW5kLWRhcmstaGM7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtdGV4dC1kYXJrLWhjO1xcbiAgICAgICAgQGluY2x1ZGUgeWMtY29sb3JzLWJhc2UtZGFyay1oYztcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1saW5lLWRhcmstaGM7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtaW5mb2dyYXBoaWNzLWRhcmstaGM7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtc2Z4LWRhcmstaGM7XFxuICAgICAgICBAaW5jbHVkZSB5Yy1jb2xvcnMtcHJvbW8tZGFyay1oYztcXG4gICAgICAgIEBpbmNsdWRlIHljLWNvbG9ycy1zeXN0ZW0tZGFyay1oYztcXG5cXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG4gICAgfVxcbn1cXG5cXG5ib2R5LnljLXJvb3Q6bm90KC55Yy1yb290X21vYmlsZSk6bm90KC55Yy1yb290X25hdGl2ZS1zY3JvbGxiYXIpIHtcXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIsXFxuICAgICo6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gICAgICAgIHdpZHRoOiB2YXIoLS15Yy1zY3JvbGxiYXItd2lkdGgpO1xcbiAgICAgICAgaGVpZ2h0OiB2YXIoLS15Yy1zY3JvbGxiYXItd2lkdGgpO1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3Itc2Nyb2xsLXRyYWNrKTtcXG4gICAgfVxcblxcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayxcXG4gICAgKjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3Itc2Nyb2xsLXRyYWNrKTtcXG4gICAgfVxcblxcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIsXFxuICAgICo6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1zY3JvbGwtY29ybmVyKTtcXG4gICAgfVxcblxcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYixcXG4gICAgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3Itc2Nyb2xsLWhhbmRsZSk7XFxuICAgIH1cXG5cXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIsXFxuICAgICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLXNjcm9sbC1oYW5kbGUtaG92ZXIpO1xcbiAgICB9XFxuXFxuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9wZXJ0eS1uby11bmtub3duXFxuICAgIHNjcm9sbGJhci13aWR0aDogdmFyKC0teWMtc2Nyb2xsYmFyLXdpZHRoKTtcXG4gICAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb3BlcnR5LW5vLXVua25vd25cXG4gICAgc2Nyb2xsYmFyLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlKSB2YXIoLS15Yy1jb2xvci1zY3JvbGwtdHJhY2spO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHljLWxvYWRpbmctYW5pbWF0aW9uIHtcXG4gICAgZnJvbSB7XFxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTJweCAwO1xcbiAgICB9XFxuICAgIHRvIHtcXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDtcXG4gICAgfVxcbn1cXG5cIixcIkBtaXhpbiB5Yy10eXBvZ3JhcGh5IHtcXG4gICAgLS15Yy1mb250LWZhbWlseS1zYW5zOiAnSGVsdmV0aWNhIE5ldWUnLCAnQXJpYWwnLCAnSGVsdmV0aWNhJywgc2Fucy1zZXJpZjtcXG4gICAgLS15Yy1mb250LWZhbWlseS1tb25vc3BhY2U6ICdNZW5sbycsICdNb25hY28nLCAnQ29uc29sYXMnLCAnVWJ1bnR1IE1vbm8nLCAnTGliZXJhdGlvbiBNb25vJyxcXG4gICAgICAgICdEZWphVnUgU2FucyBNb25vJywgJ0NvdXJpZXIgTmV3JywgJ0NvdXJpZXInLCBtb25vc3BhY2U7XFxuXFxuICAgIC0teWMtdGV4dC1ib2R5LWZvbnQtZmFtaWx5OiB2YXIoLS15Yy1mb250LWZhbWlseS1zYW5zKTtcXG4gICAgLS15Yy10ZXh0LWNvZGUtZm9udC1mYW1pbHk6IHZhcigtLXljLWZvbnQtZmFtaWx5LW1vbm9zcGFjZSk7XFxuXFxuICAgIC0teWMtdGV4dC1oZWFkZXItZm9udC13ZWlnaHQ6IDkwMDtcXG4gICAgLS15Yy10ZXh0LXN1YmhlYWRlci1mb250LXdlaWdodDogOTAwO1xcbiAgICAtLXljLXRleHQtZGlzcGxheS1mb250LXdlaWdodDogOTAwO1xcbiAgICAtLXljLXRleHQtY29kZS1mb250LXdlaWdodDogNDAwO1xcbiAgICAtLXljLXRleHQtYm9keS1mb250LXdlaWdodDogNDAwO1xcbiAgICAtLXljLXRleHQtY2FwdGlvbi1mb250LXdlaWdodDogNDAwO1xcbiAgICAtLXljLXRleHQtYWNjZW50LWZvbnQtd2VpZ2h0OiA5MDA7XFxuXFxuICAgIC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplOiAxM3B4O1xcbiAgICAtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0OiAxOHB4O1xcblxcbiAgICAtLXljLXRleHQtYm9keS0yLWZvbnQtc2l6ZTogMTVweDtcXG4gICAgLS15Yy10ZXh0LWJvZHktMi1saW5lLWhlaWdodDogMjBweDtcXG5cXG4gICAgLS15Yy10ZXh0LWJvZHktMy1mb250LXNpemU6IDE3cHg7XFxuICAgIC0teWMtdGV4dC1ib2R5LTMtbGluZS1oZWlnaHQ6IDI0cHg7XFxuXFxuICAgIC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZTogMTNweDtcXG4gICAgLS15Yy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQ6IDE2cHg7XFxuXFxuICAgIC0teWMtdGV4dC1jYXB0aW9uLTEtZm9udC1zaXplOiA5cHg7XFxuICAgIC0teWMtdGV4dC1jYXB0aW9uLTEtbGluZS1oZWlnaHQ6IDEycHg7XFxuXFxuICAgIC0teWMtdGV4dC1jYXB0aW9uLTItZm9udC1zaXplOiAxMXB4O1xcbiAgICAtLXljLXRleHQtY2FwdGlvbi0yLWxpbmUtaGVpZ2h0OiAxNnB4O1xcblxcbiAgICAtLXljLXRleHQtaGVhZGVyLTEtZm9udC1zaXplOiAyMHB4O1xcbiAgICAtLXljLXRleHQtaGVhZGVyLTEtbGluZS1oZWlnaHQ6IDI0cHg7XFxuXFxuICAgIC0teWMtdGV4dC1oZWFkZXItMi1mb250LXNpemU6IDI0cHg7XFxuICAgIC0teWMtdGV4dC1oZWFkZXItMi1saW5lLWhlaWdodDogMjhweDtcXG5cXG4gICAgLS15Yy10ZXh0LXN1YmhlYWRlci0xLWZvbnQtc2l6ZTogMTNweDtcXG4gICAgLS15Yy10ZXh0LXN1YmhlYWRlci0xLWxpbmUtaGVpZ2h0OiAxOHB4O1xcblxcbiAgICAtLXljLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplOiAxNXB4O1xcbiAgICAtLXljLXRleHQtc3ViaGVhZGVyLTItbGluZS1oZWlnaHQ6IDIwcHg7XFxuXFxuICAgIC0teWMtdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemU6IDE3cHg7XFxuICAgIC0teWMtdGV4dC1zdWJoZWFkZXItMy1saW5lLWhlaWdodDogMjRweDtcXG5cXG4gICAgLS15Yy10ZXh0LWRpc3BsYXktMS1mb250LXNpemU6IDI4cHg7XFxuICAgIC0teWMtdGV4dC1kaXNwbGF5LTEtbGluZS1oZWlnaHQ6IDM2cHg7XFxuXFxuICAgIC0teWMtdGV4dC1kaXNwbGF5LTItZm9udC1zaXplOiAzMnB4O1xcbiAgICAtLXljLXRleHQtZGlzcGxheS0yLWxpbmUtaGVpZ2h0OiA0MHB4O1xcblxcbiAgICAtLXljLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZTogNDBweDtcXG4gICAgLS15Yy10ZXh0LWRpc3BsYXktMy1saW5lLWhlaWdodDogNDhweDtcXG5cXG4gICAgLS15Yy10ZXh0LWRpc3BsYXktNC1mb250LXNpemU6IDQ4cHg7XFxuICAgIC0teWMtdGV4dC1kaXNwbGF5LTQtbGluZS1oZWlnaHQ6IDUycHg7XFxuXFxuICAgIC0teWMtdGV4dC1jb2RlLTEtZm9udC1zaXplOiAxMnB4O1xcbiAgICAtLXljLXRleHQtY29kZS0xLWxpbmUtaGVpZ2h0OiAxOHB4O1xcblxcbiAgICAtLXljLXRleHQtY29kZS0yLWZvbnQtc2l6ZTogMTRweDtcXG4gICAgLS15Yy10ZXh0LWNvZGUtMi1saW5lLWhlaWdodDogMjBweDtcXG5cXG4gICAgLS15Yy10ZXh0LWNvZGUtMy1mb250LXNpemU6IDE2cHg7XFxuICAgIC0teWMtdGV4dC1jb2RlLTMtbGluZS1oZWlnaHQ6IDI0cHg7XFxuXFxuICAgIC0teWMtdGV4dC1jb2RlLWlubGluZS0xLWZvbnQtc2l6ZTogMTJweDtcXG4gICAgLS15Yy10ZXh0LWNvZGUtaW5saW5lLTEtbGluZS1oZWlnaHQ6IDE0cHg7XFxuXFxuICAgIC0teWMtdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZTogMTRweDtcXG4gICAgLS15Yy10ZXh0LWNvZGUtaW5saW5lLTItbGluZS1oZWlnaHQ6IDE2cHg7XFxuXFxuICAgIC0teWMtdGV4dC1jb2RlLWlubGluZS0zLWZvbnQtc2l6ZTogMTZweDtcXG4gICAgLS15Yy10ZXh0LWNvZGUtaW5saW5lLTMtbGluZS1oZWlnaHQ6IDIwcHg7XFxuXFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC1mYW1pbHkpO1xcbiAgICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1icmFuZCB7XFxuICAgIC0teWMtbXktc2Nyb2xsYmFyLXdpZHRoOiAxMnB4O1xcblxcbiAgICAtLXljLW15LWJvcmRlci1yYWRpdXMteHM6IDVweDtcXG4gICAgLS15Yy1teS1ib3JkZXItcmFkaXVzLXM6IDVweDtcXG4gICAgLS15Yy1teS1ib3JkZXItcmFkaXVzLW06IDZweDtcXG4gICAgLS15Yy1teS1ib3JkZXItcmFkaXVzLWw6IDhweDtcXG4gICAgLS15Yy1teS1ib3JkZXItcmFkaXVzLXhsOiAxMHB4O1xcbn1cXG5cXG5AbWl4aW4geWMtY29sb3JzLWJyYW5kLWxpZ2h0IHtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLWxpbms6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGluay1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTgwMCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtdGV4dDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC10ZXh0LWNvbnRyYXN0OiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnkpO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTgwMCk7XFxufVxcblxcbkBtaXhpbiB5Yy1jb2xvcnMtYnJhbmQtZGFyayB7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS03MDApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb246IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xNTApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbi1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGluazogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTcwMCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGluay1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTg1MCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtdGV4dDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTcwMCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdDogdmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTcwMCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04NTApO1xcbn1cXG5cXG5AbWl4aW4geWMtY29sb3JzLWJyYW5kLWxpZ2h0LWhjIHtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTgwMCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTI1MCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1saW5rOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNjUwLXNvbGlkKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1saW5rLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODUwLXNvbGlkKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC10ZXh0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtOTAwLXNvbGlkKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC10ZXh0LWNvbnRyYXN0OiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnkpO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNjAwLXNvbGlkKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTg1MC1zb2xpZCk7XFxufVxcblxcbkBtaXhpbiB5Yy1jb2xvcnMtYnJhbmQtZGFyay1oYyB7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwLXNvbGlkKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS02NTAtc29saWQpO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb246IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zNTApO1xcbiAgICAtLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbi1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMC1zb2xpZCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGluazogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGluay1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTc1MC1zb2xpZCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtdGV4dDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTg1MC1zb2xpZCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdDogdmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KTtcXG4gICAgLS15Yy1teS1jb2xvci1icmFuZC1saW5rLXZpc2l0ZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTY1MC1zb2xpZCk7XFxuICAgIC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04MDAtc29saWQpO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtc29jaWFsIHtcXG4gICAgLy8gU29jaWFsIHBhbGV0dGVcXG5cXG4gICAgLS15Yy1jb2xvci10ZWxlZ3JhbTogIzUxYTRkYjtcXG4gICAgLS15Yy1jb2xvci1mYWNlYm9vazogIzQ5NjhhZDtcXG4gICAgLS15Yy1jb2xvci10d2l0dGVyOiAjNGFhMGViO1xcbiAgICAtLXljLWNvbG9yLXZrOiAjNDM2ZWFiO1xcbiAgICAtLXljLWNvbG9yLXlvdXR1YmU6ICNlYjMzMjM7XFxuICAgIC0teWMtY29sb3ItZ2l0aHViOiAjMjUyOTJlO1xcbiAgICAtLXljLWNvbG9yLXJzczogI2YyOWMzOTtcXG4gICAgLS15Yy1jb2xvci1saW5rZWRpbjogIzBhNjZjMjtcXG59XFxuXCIsXCJAbWl4aW4geWMtc3BhY2luZyB7XFxuICAgIC0teWMtc3BhY2UtYmFzZTogNHB4O1xcblxcbiAgICAtLXljLXNwYWNpbmctMDogY2FsYyh2YXIoLS15Yy1zcGFjZS1iYXNlKSAqIDApO1xcbiAgICAtLXljLXNwYWNpbmctaGFsZjogY2FsYyh2YXIoLS15Yy1zcGFjZS1iYXNlKSAqIDAuNSk7XFxuICAgIC0teWMtc3BhY2luZy0xOiB2YXIoLS15Yy1zcGFjZS1iYXNlKTtcXG4gICAgLS15Yy1zcGFjaW5nLTI6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiAyKTtcXG4gICAgLS15Yy1zcGFjaW5nLTM6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiAzKTtcXG4gICAgLS15Yy1zcGFjaW5nLTQ6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA0KTtcXG4gICAgLS15Yy1zcGFjaW5nLTU6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA1KTtcXG4gICAgLS15Yy1zcGFjaW5nLTY6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA2KTtcXG4gICAgLS15Yy1zcGFjaW5nLTc6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA3KTtcXG4gICAgLS15Yy1zcGFjaW5nLTg6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA4KTtcXG4gICAgLS15Yy1zcGFjaW5nLTk6IGNhbGModmFyKC0teWMtc3BhY2UtYmFzZSkgKiA5KTtcXG4gICAgLS15Yy1zcGFjaW5nLTEwOiBjYWxjKHZhcigtLXljLXNwYWNlLWJhc2UpICogMTApO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtcHJpdmF0ZS1saWdodCB7XFxuICAgIC8vIExvdyBsZXZlbCAtIGh0dHBzOi8vZmlnbWEuY29tL2ZpbGUvYWxiWmFoMkFNSW1BUURCaEZNb2hkelxcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtOTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNzA6IHJnYmEoMCwgMCwgMCwgMC4wNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDA6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MDogcmdiYSgwLCAwLCAwLCAwLjE1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTI1MDogcmdiYSgwLCAwLCAwLCAwLjI1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMDogcmdiYSgwLCAwLCAwLCAwLjMpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAwOiByZ2JhKDAsIDAsIDAsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01NTA6IHJnYmEoMCwgMCwgMCwgMC41NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDA6IHJnYmEoMCwgMCwgMCwgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTg1MDogcmdiYSgwLCAwLCAwLCAwLjg1KTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwLXNvbGlkOiByZ2JhKDI1MCwgMjUwLCAyNTAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAtc29saWQ6IHJnYmEoMjQzLCAyNDMsIDI0MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAtc29saWQ6IHJnYmEoMjI5LCAyMjksIDIyOSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTAtc29saWQ6IHJnYmEoMjE4LCAyMTgsIDIxOCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDAtc29saWQ6IHJnYig3NiwgNzYsIDc2LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjE2KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwOiByZ2JhKDgyLCAxMzAsIDI1NSwgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwOiByZ2JhKDgyLCAxMzAsIDI1NSwgMC43NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwMDogcmdiYSg4MiwgMTMwLCAyNTUsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MDogcmdiYSg4MiwgMTMwLCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS02MDA6IHJnYmEoNzQsIDExMywgMjE0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODAwOiByZ2JhKDYzLCA4NywgMTUzLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTAtc29saWQ6IHJnYmEoMjM4LCAyNDMsIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMC1zb2xpZDogcmdiYSgyMjcsIDIzNSwgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwLXNvbGlkOiByZ2JhKDEyNSwgMTYxLCAyNTUsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTA6IHJnYmEoNTksIDIwMSwgNTMsIDAuMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xMDA6IHJnYmEoNTksIDIwMSwgNTMsIDAuMTQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjI1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMDogcmdiYSg1OSwgMjAxLCA1MywgMC4zNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDA6IHJnYmEoNTksIDIwMSwgNTMsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTA6IHJnYmEoNjMsIDIwMSwgNDYsIDAuNzUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTYwMDogcmdiYSg3LCAxNjMsIDAsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwLXNvbGlkOiByZ2JhKDExMSwgMjE0LCA5OCwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0yMDA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTYwMDogcmdiYSgyNDUsIDIwMiwgNjksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTY1MDogcmdiYSgyNDUsIDE3MSwgMjUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMDogcmdiYSgyMjQsIDE4MSwgOSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctODAwOiByZ2JhKDIwOSwgMTE5LCAwLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDogcmdiYSgyMzUsIDUwLCAzOCwgMC4wOCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwOiByZ2JhKDIzNSwgNTAsIDM4LCAwLjE3KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0zMDA6IHJnYmEoMjU1LCA0LCAwLCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MDogcmdiYSgyNTUsIDQsIDAsIDAuNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTAwOiByZ2JhKDI1NSwgNCwgMCwgMC44KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTA6IHJnYmEoMjU1LCA0LCAwLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTAtc29saWQ6IHJnYmEoMjU1LCA4MCwgNzcsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTU1MDogcmdiYSgxNTQsIDUwLCAxNjYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTgwMDogcmdiYSg5NCwgNjIsIDEwMSwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4xMik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTAwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuMik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMzAwOiByZ2JhKDEwNywgMTMyLCAxNTMsIDAuNTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjc1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktODAwOiByZ2JhKDU5LCA5NiwgMTI4LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MC1zb2xpZDogcmdiYSgyMzcsIDI0MCwgMjQzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTAtc29saWQ6IHJnYmEoMTQ0LCAxNjMsIDE3OCwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTA6IHJnYmEoMjU1LCAxMTksIDAsIDAuMTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTEwMDogcmdiYSgyNTUsIDExOSwgMCwgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDUwOiByZ2JhKDI1NSwgMTgwLCAzNCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTUwOiByZ2JhKDI1NSwgMTE5LCAwLCAxKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXRleHQtbGlnaHQge1xcbiAgICAtLXljLWNvbG9yLXRleHQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay04NTApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTYwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtdXRpbGl0eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTgwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTYwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy04MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtdXRpbGl0eS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTgwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGluazogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluayk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rLWhvdmVyKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZC1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkLWhvdmVyKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXlhbmRleC1yZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTU1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1kYXJrLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWRhcmstY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFyay1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAwKTtcXG5cXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saWdodC1jb21wbGVtZW50YXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saWdodC1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpZ2h0LWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwKTtcXG5cXG4gICAgLS15Yy1jb2xvci10ZXh0LWludmVydGVkLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1jb21wbGVtZW50YXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWludmVydGVkLWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLWJhc2UtbGlnaHQge1xcbiAgICAtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWdlbmVyaWM6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtbWVkaXVtLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTI1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNzApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy11bHRyYWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXItc29saWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24pO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXIpO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2Utc3BlY2lhbDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwtaG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbC1ob3Zlcik7XFxuICAgIC0teWMtY29sb3ItYmFzZS1hY3Rpb246IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1hY3Rpb24taG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbC1ob3Zlcik7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtaW5mby1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xMDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTIwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWRhbmdlci1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1pc2MtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1uZXV0cmFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW5ldXRyYWwtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtbWVkaXVtLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utd2FybmluZy1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWRhbmdlci1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1taXNjLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTApO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbGlnaHQtc2ltcGxlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1kaXNhYmxlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbGlnaHQtYWNjZW50LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWFubm91bmNlbWVudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbW9kYWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1saW5lLWxpZ2h0IHtcXG4gICAgLS15Yy1jb2xvci1saW5lLWdlbmVyaWM6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWN0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljLWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLXNvbGlkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24taG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLWxpZ2h0KTtcXG4gICAgLS15Yy1jb2xvci1saW5lLXNlbGVjdGlvbi1hY3RpdmU6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1saW5rOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpO1xcblxcbiAgICAtLXljLWNvbG9yLWxpbmUtaW5mbzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjAwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWRhbmdlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1saW5lLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1pbmZvZ3JhcGhpY3MtbGlnaHQge1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MCk7XFxuXFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8tbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTMwMCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0zMDApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbWlzYy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApO1xcblxcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1heGlzOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MC1zb2xpZCk7XFxuXFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXRvb2x0aXAtYmc6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtOTUwKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXNmeC1saWdodCB7XFxuICAgIC0teWMtY29sb3Itc2Z4LXZlaWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjUwKTtcXG4gICAgLS15Yy1jb2xvci1zZngtc2hhZG93OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MCk7XFxuICAgIC0teWMtY29sb3Itc2Z4LXNoYWRvdy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDApO1xcbiAgICAtLXljLWNvbG9yLXNmeC1zaGFkb3ctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTApO1xcbiAgICAtLXljLWNvbG9yLXNmeC1mYWRlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1wcm9tby1saWdodCB7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1zaWx2ZXI6ICNlZmYyZjg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1nb2xkOiAjZmZkYjRkO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtYXNwaGFsdDogIzMxMzUzODtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLXRvbWF0bzogI2ZmNTk1ODtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLWNvcHBlcjogI2ZmYWIzYjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLW1pbnQ6ICM1ZWNmNzE7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1za3k6ICM0OWEwZjY7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1uZW9uOiAjOWY2ZmVlO1xcblxcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1zaWx2ZXI6ICNlZGYyZjc7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LWdvbGQ6ICNmZmYxYjg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LWFzcGhhbHQ6ICNlYWViZWI7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXRvbWF0bzogI2ZmZGVkZTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtY29wcGVyOiAjZmZlNmM0O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1taW50OiAjY2NmMGQyO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1za3k6ICNkNmU5ZmQ7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LW5lb246ICNlY2UyZmM7XFxuXFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LXNpbHZlcjogIzk2OWE5ZTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtZ29sZDogI2ZmZGI0ZDtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtYXNwaGFsdDogIzMxMzUzODtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtdG9tYXRvOiAjZmY1OTU4O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1jb3BwZXI6ICNmZmFiM2I7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LW1pbnQ6ICM1ZWNmNzE7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LXNreTogIzQ5YTBmNjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtbmVvbjogIzlmNmZlZTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItc2lsdmVyOiAjNzI3NTc4O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1nb2xkOiAjZWRiZTI4O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1hc3BoYWx0OiAjMDAwMDAwO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci10b21hdG86ICNlZTRmNGU7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLWNvcHBlcjogI2YyOGQwNDtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItbWludDogIzNiYmM1MTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItc2t5OiAjMjE4MGRlO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1uZW9uOiAjN2I0N2NmO1xcblxcbiAgICAtLXljLWNvbG9yLXByb21vLXRleHQtc2lsdmVyOiAjOTY5YTllO1xcbiAgICAtLXljLWNvbG9yLXByb21vLXRleHQtZ29sZDogI2ViYjQwOTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby10ZXh0LWFzcGhhbHQ6ICMzMTM1Mzg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tdGV4dC10b21hdG86ICNmZjU5NTg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tdGV4dC1jb3BwZXI6ICNmZmFiM2I7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tdGV4dC1taW50OiAjNWVjZjcxO1xcbiAgICAtLXljLWNvbG9yLXByb21vLXRleHQtc2t5OiAjNDlhMGY2O1xcbiAgICAtLXljLWNvbG9yLXByb21vLXRleHQtbmVvbjogIzlmNmZlZTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXN5c3RlbS1saWdodCB7XFxuICAgIC0teWMtY29sb3Itc2Nyb2xsLXRyYWNrOiB2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xcbiAgICAtLXljLWNvbG9yLXNjcm9sbC1oYW5kbGU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwKTtcXG4gICAgLS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MCk7XFxuICAgIC0teWMtY29sb3Itc2Nyb2xsLWNvcm5lcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDApO1xcbn1cXG5cXG5AbWl4aW4geWMtY29sb3JzLXN5c3RlbS1kYXJrIHtcXG4gICAgLS15Yy1jb2xvci1zY3JvbGwtdHJhY2s6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XFxuICAgIC0teWMtY29sb3Itc2Nyb2xsLWhhbmRsZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApO1xcbiAgICAtLXljLWNvbG9yLXNjcm9sbC1oYW5kbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwKTtcXG4gICAgLS15Yy1jb2xvci1zY3JvbGwtY29ybmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxufVxcblxcbkBtaXhpbiB5Yy1jb2xvcnMtc3lzdGVtLWxpZ2h0LWhjIHtcXG4gICAgLS15Yy1jb2xvci1zY3JvbGwtdHJhY2s6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XFxuICAgIC0teWMtY29sb3Itc2Nyb2xsLWhhbmRsZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDApO1xcbiAgICAtLXljLWNvbG9yLXNjcm9sbC1oYW5kbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTtcXG4gICAgLS15Yy1jb2xvci1zY3JvbGwtY29ybmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMCk7XFxufVxcblxcbkBtaXhpbiB5Yy1jb2xvcnMtc3lzdGVtLWRhcmstaGMge1xcbiAgICAtLXljLWNvbG9yLXNjcm9sbC10cmFjazogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcXG4gICAgLS15Yy1jb2xvci1zY3JvbGwtaGFuZGxlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3Itc2Nyb2xsLWhhbmRsZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApO1xcbiAgICAtLXljLWNvbG9yLXNjcm9sbC1jb3JuZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXByaXZhdGUtZGFyayB7XFxuICAgIC8vIExvdyBsZXZlbCAtIGh0dHBzOi8vZmlnbWEuY29tL2ZpbGUvYWxiWmFoMkFNSW1BUURCaEZNb2hkelxcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtb3BhcXVlLTE1MDogcmdiYSg3NiwgNzUsIDgxLCAwLjk1KTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwOiByZ2JhKDAsIDAsIDAsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay00MDA6IHJnYmEoMCwgMCwgMCwgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjAwOiByZ2JhKDAsIDAsIDAsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDA6IHJnYmEoMCwgMCwgMCwgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTkwMDogcmdiYSgwLCAwLCAwLCAwLjkpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stcm9jay04NTA6IHJnYmEoNDUsIDQ0LCA1MSwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yMC1zb2xpZDogcmdiYSg0OSwgNDgsIDU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMC1zb2xpZDogcmdiYSg2NiwgNjUsIDcxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZDogcmdiYSg3NiwgNzYsIDgyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZDogcmdiYSg4NywgODYsIDkyLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTAwOiByZ2JhKDEzMywgMTY4LCAyNTUsIDAuMTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xNTA6IHJnYmEoMTMzLCAxNjgsIDI1NSwgMC4yNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMDogcmdiYSgxMzMsIDE2OCwgMjU1LCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTA6IHJnYmEoODcsIDEyNiwgMjE0LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTA6IHJnYmEoODcsIDEyNiwgMjE0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzAwOiByZ2JhKDk4LCAxNDYsIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTg1MDogcmdiYSgxMzMsIDE2OCwgMjU1LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwLXNvbGlkOiByZ2JhKDY3LCA3NSwgMTAyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwLXNvbGlkOiByZ2JhKDg5LCAxMDYsIDE1MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MC1zb2xpZDogcmdiYSg3OSwgMTEwLCAxODEsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjEyKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTE1MDogcmdiYSg1OSwgMjAxLCA1MywgMC4xNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDA6IHJnYmEoMTg2LCAyNTUsIDE4NCwgMC42KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MDogcmdiYSgxODYsIDI1NSwgMTg0LCAwLjY4KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MDogcmdiYSg1OSwgMjAxLCA1MywgMC41OCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTA6IHJnYmEoNTksIDIwMSwgNTMsIDAuNzUpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwLXNvbGlkOiByZ2JhKDUzLCAxMzUsIDUyLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xMDA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjI1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xNTA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuNjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuOCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNzAwOiByZ2JhKDIyNCwgMTg5LCA1MiwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwOiByZ2JhKDE5MSwgNTAsIDQ4LCAwLjMpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTE1MDogcmdiYSgxOTEsIDUwLCA0OCwgMC40NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwOiByZ2JhKDI1NSwgNzcsIDczLCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MDogcmdiYSgyMDgsIDcxLCA2OSwgMC44OCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwOiByZ2JhKDIwOCwgNzEsIDY5LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTAtc29saWQ6IHJnYmEoMTYyLCA0OSwgNDgsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTU1MDogcmdiYSgxNjYsIDYyLCAxNzgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTcwMDogcmdiYSgxNzcsIDc4LCAxOTgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTg1MDogcmdiYSgyMDAsIDEyMSwgMjE2LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDA6IHJnYmEoOTUsIDExNSwgMTMzLCAwLjE4KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDA6IHJnYmEoOTUsIDExNSwgMTMzLCAwLjYpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MDogcmdiYSg5NSwgMTE1LCAxMzMsIDAuOCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwOiByZ2JhKDk1LCAxMTUsIDEzMywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNzAwOiByZ2JhKDE0MiwgMTYyLCAxODAsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MC1zb2xpZDogcmdiYSg4NSwgMTAxLCAxMTcsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwOiByZ2JhKDIwNCwgMTA0LCAxNiwgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xMDA6IHJnYmEoMjA0LCAxMDQsIDE2LCAwLjMpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTE1MDogcmdiYSgyMDQsIDEwNCwgMTYsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwOiByZ2JhKDI1NSwgMTYwLCA2NiwgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS00NTA6IHJnYmEoMjA0LCAxMDQsIDE2LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTU1MDogcmdiYSgyMDQsIDEwNCwgMTYsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTQ1MC1zb2xpZDogcmdiYSgxNzIsIDkyLCAyMywgMSk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy10ZXh0LWRhcmsge1xcbiAgICAtLXljLWNvbG9yLXRleHQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04NTApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtdXRpbGl0eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTcwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtdXRpbGl0eS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTcwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGluazogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluayk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rLWhvdmVyKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZC1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkLWhvdmVyKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXlhbmRleC1yZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTU1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1kYXJrLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stOTAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWRhcmstY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFyay1zZWNvbmRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTAwKTtcXG5cXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpZ2h0LWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGlnaHQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDApO1xcblxcbiAgICAtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay05MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1iYXNlLWRhcmsge1xcbiAgICAtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay1yb2NrLTg1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW0taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudC1kaXNhYmxlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLXVsdHJhbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXItc29saWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXNlbGVjdGlvbjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtc2VsZWN0aW9uKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXNlbGVjdGlvbi1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtc2VsZWN0aW9uLWhvdmVyKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLXNwZWNpYWw6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwtaG92ZXIpO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtYWN0aW9uOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtYWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwtaG92ZXIpO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtaW5mbzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1pbmZvLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1kYW5nZXItaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbWlzYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW5ldXRyYWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW5ldXRyYWwtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtbWVkaXVtLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utd2FybmluZy1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNzAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWRhbmdlci1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1taXNjLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTApO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWxpZ2h0LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWxpZ2h0LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1hY2NlbnQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZmxvYXQtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZmxvYXQtYWNjZW50LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdC1hbm5vdW5jZW1lbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1vZGFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLXJvY2stODUwKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLWxpbmUtZGFyayB7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljLWFjdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1zb2xpZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saWdodCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24tYWN0aXZlOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtbGluazogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTtcXG5cXG4gICAgLS15Yy1jb2xvci1saW5lLWluZm86IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLXdhcm5pbmc6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItbGluZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtaW5mb2dyYXBoaWNzLWRhcmsge1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3Mtd2FybmluZy1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xNTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1uZXV0cmFsLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8tbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTMwMCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0zMDApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbWlzYy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zMDApO1xcblxcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1heGlzOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZCk7XFxuXFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXRvb2x0aXAtYmc6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtb3BhcXVlLTE1MCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1zZngtZGFyayB7XFxuICAgIC0teWMtY29sb3Itc2Z4LXZlaWw6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjAwKTtcXG4gICAgLS15Yy1jb2xvci1zZngtc2hhZG93OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMCk7XFxuICAgIC0teWMtY29sb3Itc2Z4LXNoYWRvdy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDApO1xcbiAgICAtLXljLWNvbG9yLXNmeC1zaGFkb3ctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTApO1xcbiAgICAtLXljLWNvbG9yLXNmeC1mYWRlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1wcm9tby1kYXJrIHtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLXNpbHZlcjogI2JjYzBjNDtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLWdvbGQ6ICNmZmRlNWQ7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1hc3BoYWx0OiAjNDc0ZDUyO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtdG9tYXRvOiAjZmY2YjZhO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtY29wcGVyOiAjZmZiOTVhO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtbWludDogIzdmZDY4ZTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLXNreTogIzY5YjRmZjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLW5lb246ICNiMzg0ZmY7XFxuXFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXNpbHZlcjogIzYxNjM2NjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtZ29sZDogIzk5ODMyZTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtYXNwaGFsdDogIzVkNjU2YjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtdG9tYXRvOiAjOTk4NTg1O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1jb3BwZXI6ICM3ZjcyNjI7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LW1pbnQ6ICM3NTg5Nzg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXNreTogIzk0YTJhZjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtbmVvbjogI2FlYTZiYTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXByaXZhdGUtbGlnaHQtaGMge1xcbiAgICAvLyBMb3cgbGV2ZWwgLSBodHRwczovL2ZpZ21hLmNvbS9maWxlL2FsYlphaDJBTUltQVFEQmhGTW9oZHpcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0zNTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTQ1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQ1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS02NTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTc1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTgwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS05NTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTA6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDA6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MDogcmdiYSgwLCAwLCAwLCAwLjE1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjUwOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwOiByZ2JhKDAsIDAsIDAsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zNTA6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay00MDA6IHJnYmEoMCwgMCwgMCwgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQ1MDogcmdiYSgwLCAwLCAwLCAwLjQ1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTUwOiByZ2JhKDAsIDAsIDAsIDAuNTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjAwOiByZ2JhKDAsIDAsIDAsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay02NTA6IHJnYmEoMCwgMCwgMCwgMC42NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDA6IHJnYmEoMCwgMCwgMCwgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTc1MDogcmdiYSgwLCAwLCAwLCAwLjc1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTgwMDogcmdiYSgwLCAwLCAwLCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODUwOiByZ2JhKDAsIDAsIDAsIDAuODUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stOTAwOiByZ2JhKDAsIDAsIDAsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay05NTA6IHJnYmEoMCwgMCwgMCwgMC45NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAwOiByZ2JhKDAsIDAsIDAsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjAtc29saWQ6IHJnYmEoMjUwLCAyNTAsIDI1MCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MC1zb2xpZDogcmdiYSgyNDIsIDI0MiwgMjQyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMC1zb2xpZDogcmdiYSgyMjksIDIyOSwgMjI5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MC1zb2xpZDogcmdiYSgyMTcsIDIxNywgMjE3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMC1zb2xpZDogcmdiYSgyMDQsIDIwNCwgMjA0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTI1MC1zb2xpZDogcmdiYSgxOTEsIDE5MSwgMTkxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTMwMC1zb2xpZDogcmdiYSgxNzksIDE3OSwgMTc5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTM1MC1zb2xpZDogcmdiYSgxNjYsIDE2NiwgMTY2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQwMC1zb2xpZDogcmdiYSgxNTMsIDE1MywgMTUzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQ1MC1zb2xpZDogcmdiYSgxNDAsIDE0MCwgMTQwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMC1zb2xpZDogcmdiYSgxMjgsIDEyOCwgMTI4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTU1MC1zb2xpZDogcmdiYSgxMTUsIDExNSwgMTE1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTYwMC1zb2xpZDogcmdiYSgxMDIsIDEwMiwgMTAyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTY1MC1zb2xpZDogcmdiYSg4OSwgODksIDg5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMC1zb2xpZDogcmdiYSg3NiwgNzYsIDc2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTc1MC1zb2xpZDogcmdiYSg2NCwgNjQsIDY0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTgwMC1zb2xpZDogcmdiYSg1MSwgNTEsIDUxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTg1MC1zb2xpZDogcmdiYSgzOCwgMzgsIDM4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTkwMC1zb2xpZDogcmdiYSgyNiwgMjYsIDI2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTk1MC1zb2xpZDogcmdiYSgxMywgMTMsIDEzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMDAtc29saWQ6IHJnYmEoMCwgMCwgMCwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMDogIzRhNzFkNjtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODAwOiAjM2Y1Nzk5O1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MDogcmdiYSg4MiwgMTMwLCAyNTUsIDAuMDUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xNTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yMDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjMpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yNTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zNTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjYpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00MDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MDA6IHJnYmEoODIsIDEzMCwgMjU1LCAwLjkpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTA6IHJnYmEoODIsIDEzMCwgMjU1LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTAtc29saWQ6IHJnYmEoMjQ2LCAyNDksIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMC1zb2xpZDogcmdiYSgyMzgsIDI0MywgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwLXNvbGlkOiByZ2JhKDIyMCwgMjMwLCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yMDAtc29saWQ6IHJnYmEoMjAzLCAyMTgsIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTI1MC1zb2xpZDogcmdiYSgxODYsIDIwNSwgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMzAwLXNvbGlkOiByZ2JhKDE2OCwgMTkzLCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zNTAtc29saWQ6IHJnYmEoMTUxLCAxODAsIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQwMC1zb2xpZDogcmdiYSgxMzQsIDE2OCwgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDUwLXNvbGlkOiByZ2JhKDExNiwgMTU1LCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MDAtc29saWQ6IHJnYmEoOTksIDE0MywgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwLXNvbGlkOiByZ2JhKDgyLCAxMzAsIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMC1zb2xpZDogcmdiYSg3NywgMTIxLCAyMzMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS02NTAtc29saWQ6IHJnYmEoNzIsIDExMSwgMjEyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNzAwLXNvbGlkOiByZ2JhKDY3LCAxMDIsIDE5MCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTc1MC1zb2xpZDogcmdiYSg2MywgOTIsIDE2OCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTgwMC1zb2xpZDogcmdiYSg1OCwgODMsIDE0NywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTg1MC1zb2xpZDogcmdiYSg1MywgNzMsIDEyNSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTkwMC1zb2xpZDogcmdiYSg0OCwgNjQsIDEwMywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTk1MC1zb2xpZDogcmdiYSg0NCwgNTQsIDgxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTAwMC1zb2xpZDogcmdiYSgzOSwgNDUsIDYwLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTUwOiByZ2JhKDU5LCAyMDEsIDUzLCAwLjA1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTEwMDogcmdiYSg1OSwgMjAxLCA1MywgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTE1MDogcmdiYSg1OSwgMjAxLCA1MywgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMDogcmdiYSg1OSwgMjAxLCA1MywgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTI1MDogcmdiYSg1OSwgMjAxLCA1MywgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTMwMDogcmdiYSg1OSwgMjAxLCA1MywgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MDogcmdiYSg1OSwgMjAxLCA1MywgMC42KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQwMDogcmdiYSg1OSwgMjAxLCA1MywgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MDogcmdiYSg1OSwgMjAxLCA1MywgMC44KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTUwMDogcmdiYSg1OSwgMjAxLCA1MywgMC45KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MDogcmdiYSg1OSwgMjAxLCA1MywgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01MC1zb2xpZDogcmdiYSgyNDUsIDI1MiwgMjQ1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTEwMC1zb2xpZDogcmdiYSgyMzUsIDI1MCwgMjM1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTE1MC1zb2xpZDogcmdiYSgyMTYsIDI0NCwgMjE1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTIwMC1zb2xpZDogcmdiYSgxOTYsIDIzOSwgMTk0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTI1MC1zb2xpZDogcmdiYSgxNzcsIDIzMywgMTc0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTMwMC1zb2xpZDogcmdiYSgxNTcsIDIyOCwgMTU0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MC1zb2xpZDogcmdiYSgxMzcsIDIyMywgMTM0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQwMC1zb2xpZDogcmdiYSgxMTgsIDIxNywgMTE0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTQ1MC1zb2xpZDogcmdiYSg5OCwgMjEyLCA5MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01MDAtc29saWQ6IHJnYmEoNzksIDIwNiwgNzMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwLXNvbGlkOiByZ2JhKDU5LCAyMDEsIDUzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTYwMC1zb2xpZDogcmdiYSg1NiwgMTg0LCA1MSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi02NTAtc29saWQ6IHJnYmEoNTQsIDE2OCwgNTAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNzAwLXNvbGlkOiByZ2JhKDUxLCAxNTEsIDQ4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTc1MC1zb2xpZDogcmdiYSg0OSwgMTM1LCA0NywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi04MDAtc29saWQ6IHJnYmEoNDcsIDExOCwgNDYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tODUwLXNvbGlkOiByZ2JhKDQ0LCAxMDEsIDQ0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTkwMC1zb2xpZDogcmdiYSg0MSwgODUsIDQzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTk1MC1zb2xpZDogcmdiYSgzOSwgNjgsIDQxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTEwMDAtc29saWQ6IHJnYmEoMzYsIDUyLCA0MCwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjA1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xMDA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuMik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMjAwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0yNTA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTMwMDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMzUwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC42KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy00MDA6IHJnYmEoMjU1LCAyMTksIDc3LCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MDogcmdiYSgyNTUsIDIxOSwgNzcsIDAuOCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTAwOiByZ2JhKDI1NSwgMjE5LCA3NywgMC45KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTA6IHJnYmEoMjU1LCAyMTksIDc3LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MC1zb2xpZDogcmdiYSgyNTUsIDI1MywgMjQ2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xMDAtc29saWQ6IHJnYmEoMjU1LCAyNTEsIDIzNywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTUwLXNvbGlkOiByZ2JhKDI1NSwgMjQ4LCAyMTksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTIwMC1zb2xpZDogcmdiYSgyNTUsIDI0NCwgMjAyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0yNTAtc29saWQ6IHJnYmEoMjU1LCAyNDEsIDE4NCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMzAwLXNvbGlkOiByZ2JhKDI1NSwgMjM3LCAxNjYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTM1MC1zb2xpZDogcmdiYSgyNTUsIDIzMywgMTQ4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy00MDAtc29saWQ6IHJnYmEoMjU1LCAyMzAsIDEzMCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNDUwLXNvbGlkOiByZ2JhKDI1NSwgMjI2LCAxMTMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTUwMC1zb2xpZDogcmdiYSgyNTUsIDIyMywgOTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MC1zb2xpZDogcmdiYSgyNTUsIDIxOSwgNzcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTYwMC1zb2xpZDogcmdiYSgyMzMsIDIwMSwgNzMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTY1MC1zb2xpZDogcmdiYSgyMTEsIDE4MiwgNjksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMC1zb2xpZDogcmdiYSgxODksIDE2NCwgNjUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTc1MC1zb2xpZDogcmdiYSgxNjcsIDE0NSwgNjEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTgwMC1zb2xpZDogcmdiYSgxNDQsIDEyNywgNTgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTg1MC1zb2xpZDogcmdiYSgxMjIsIDEwOSwgNTQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTkwMC1zb2xpZDogcmdiYSgxMDAsIDkwLCA1MCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctOTUwLXNvbGlkOiByZ2JhKDc4LCA3MiwgNDYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTEwMDAtc29saWQ6IHJnYmEoNTYsIDUzLCA0MiwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTA6IHJnYmEoMjU1LCA0LCAwLCAwLjA1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xMDA6IHJnYmEoMjU1LCA0LCAwLCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTE1MDogcmdiYSgyNTUsIDQsIDAsIDAuMik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMjAwOiByZ2JhKDI1NSwgNCwgMCwgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0yNTA6IHJnYmEoMjU1LCA0LCAwLCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTMwMDogcmdiYSgyNTUsIDQsIDAsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzUwOiByZ2JhKDI1NSwgNCwgMCwgMC42KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC00MDA6IHJnYmEoMjU1LCA0LCAwLCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MDogcmdiYSgyNTUsIDQsIDAsIDAuOCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTAwOiByZ2JhKDI1NSwgNCwgMCwgMC45KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTA6IHJnYmEoMjU1LCA0LCAwLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MC1zb2xpZDogcmdiYSgyNTUsIDI0MywgMjQyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xMDAtc29saWQ6IHJnYmEoMjU1LCAyMzAsIDIyOSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTUwLXNvbGlkOiByZ2JhKDI1NSwgMjA1LCAyMDQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTIwMC1zb2xpZDogcmdiYSgyNTUsIDE4MCwgMTc5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0yNTAtc29saWQ6IHJnYmEoMjU1LCAxNTUsIDE1MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwLXNvbGlkOiByZ2JhKDI1NSwgMTMwLCAxMjgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTM1MC1zb2xpZDogcmdiYSgyNTUsIDEwNSwgMTAyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC00MDAtc29saWQ6IHJnYmEoMjU1LCA4MCwgNzYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MC1zb2xpZDogcmdiYSgyNTUsIDU1LCA1MSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTAwLXNvbGlkOiByZ2JhKDI1NSwgMzAsIDI2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTAtc29saWQ6IHJnYmEoMjU1LCA0LCAwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC02MDAtc29saWQ6IHJnYmEoMjMzLCA4LCA0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC02NTAtc29saWQ6IHJnYmEoMjExLCAxMSwgOCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNzAwLXNvbGlkOiByZ2JhKDE4OSwgMTQsIDExLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC03NTAtc29saWQ6IHJnYmEoMTY2LCAxNywgMTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTgwMC1zb2xpZDogcmdiYSgxNDQsIDIwLCAxOSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtODUwLXNvbGlkOiByZ2JhKDEyMiwgMjMsIDIzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC05MDAtc29saWQ6IHJnYmEoMTAwLCAyNiwgMjcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTk1MC1zb2xpZDogcmdiYSg3OCwgMjksIDMwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xMDAwLXNvbGlkOiByZ2JhKDU2LCAzMiwgMzQsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTUwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTAwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0xNTA6IHJnYmEoMTU0LCA1MCwgMTY2LCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTIwMDogcmdiYSgxNTQsIDUwLCAxNjYsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMjUwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0zMDA6IHJnYmEoMTU0LCA1MCwgMTY2LCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTM1MDogcmdiYSgxNTQsIDUwLCAxNjYsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNDAwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS00NTA6IHJnYmEoMTU0LCA1MCwgMTY2LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTUwMDogcmdiYSgxNTQsIDUwLCAxNjYsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTUwOiByZ2JhKDE1NCwgNTAsIDE2NiwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNTAtc29saWQ6IHJnYmEoMjUwLCAyNDUsIDI1MSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTAwLXNvbGlkOiByZ2JhKDI0NSwgMjM0LCAyNDYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTE1MC1zb2xpZDogcmdiYSgyMzUsIDIxNCwgMjM3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0yMDAtc29saWQ6IHJnYmEoMjI1LCAxOTMsIDIyOCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMjUwLXNvbGlkOiByZ2JhKDIxNSwgMTczLCAyMTksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTMwMC1zb2xpZDogcmdiYSgyMDQsIDE1MywgMjEwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0zNTAtc29saWQ6IHJnYmEoMTk0LCAxMzIsIDIwMiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNDAwLXNvbGlkOiByZ2JhKDE4NCwgMTExLCAxOTMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTQ1MC1zb2xpZDogcmdiYSgxNzQsIDkxLCAxODQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTUwMC1zb2xpZDogcmdiYSgxNjQsIDcxLCAxNzUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTU1MC1zb2xpZDogcmdiYSgxNTQsIDUwLCAxNjYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTYwMC1zb2xpZDogcmdiYSgxNDIsIDQ5LCAxNTMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTY1MC1zb2xpZDogcmdiYSgxMzAsIDQ3LCAxNDAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTcwMC1zb2xpZDogcmdiYSgxMTgsIDQ1LCAxMjgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTc1MC1zb2xpZDogcmdiYSgxMDYsIDQ0LCAxMTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTgwMC1zb2xpZDogcmdiYSg5NCwgNDIsIDEwMiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtODUwLXNvbGlkOiByZ2JhKDgyLCA0MSwgODksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTkwMC1zb2xpZDogcmdiYSg3MCwgNDAsIDc2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS05NTAtc29saWQ6IHJnYmEoNTgsIDM4LCA2NCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTAwMC1zb2xpZDogcmdiYSg0NiwgMzYsIDUxLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjA1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yMDA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yNTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zNTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC42KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00MDA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC44KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MDA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC45KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01NTA6IHJnYmEoMTA3LCAxMzIsIDE1MywgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTAtc29saWQ6IHJnYmEoMjQ4LCAyNDksIDI1MCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTAwLXNvbGlkOiByZ2JhKDI0MCwgMjQzLCAyNDUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTE1MC1zb2xpZDogcmdiYSgyMjUsIDIzMCwgMjM1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yMDAtc29saWQ6IHJnYmEoMjExLCAyMTgsIDIyNCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMjUwLXNvbGlkOiByZ2JhKDE5NiwgMjA2LCAyMTQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTMwMC1zb2xpZDogcmdiYSgxODEsIDE5MywgMjA0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zNTAtc29saWQ6IHJnYmEoMTY2LCAxODEsIDE5NCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDAwLXNvbGlkOiByZ2JhKDE1MSwgMTY5LCAxODQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MC1zb2xpZDogcmdiYSgxMzcsIDE1NywgMTczLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MDAtc29saWQ6IHJnYmEoMTIyLCAxNDQsIDE2MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwLXNvbGlkOiByZ2JhKDEwNywgMTMyLCAxNTMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTYwMC1zb2xpZDogcmdiYSgxMDAsIDEyMiwgMTQyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02NTAtc29saWQ6IHJnYmEoOTIsIDExMywgMTMwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS03MDAtc29saWQ6IHJnYmEoODUsIDEwMywgMTE4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS03NTAtc29saWQ6IHJnYmEoNzgsIDkzLCAxMDcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTgwMC1zb2xpZDogcmdiYSg3MCwgODMsIDk2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS04NTAtc29saWQ6IHJnYmEoNjMsIDc0LCA4NCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktOTAwLXNvbGlkOiByZ2JhKDU2LCA2NCwgNzMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTk1MC1zb2xpZDogcmdiYSg0OSwgNTQsIDYxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xMDAwLXNvbGlkOiByZ2JhKDQxLCA0NSwgNDksIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwOiByZ2JhKDI1NSwgMTE5LCAwLCAwLjA1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xMDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTUwOiByZ2JhKDI1NSwgMTE5LCAwLCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTIwMDogcmdiYSgyNTUsIDExOSwgMCwgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0yNTA6IHJnYmEoMjU1LCAxMTksIDAsIDAuNCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwOiByZ2JhKDI1NSwgMTE5LCAwLCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTM1MDogcmdiYSgyNTUsIDExOSwgMCwgMC42KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS00MDA6IHJnYmEoMjU1LCAxMTksIDAsIDAuNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDUwOiByZ2JhKDI1NSwgMTE5LCAwLCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwMDogcmdiYSgyNTUsIDExOSwgMCwgMC45KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01NTA6IHJnYmEoMjU1LCAxMTksIDAsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwLXNvbGlkOiByZ2JhKDI1NSwgMjQ4LCAyNDIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTEwMC1zb2xpZDogcmdiYSgyNTUsIDI0MSwgMjI5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xNTAtc29saWQ6IHJnYmEoMjU1LCAyMjgsIDIwNCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMjAwLXNvbGlkOiByZ2JhKDI1NSwgMjE0LCAxNzksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTI1MC1zb2xpZDogcmdiYSgyNTUsIDIwMSwgMTUzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zMDAtc29saWQ6IHJnYmEoMjU1LCAxODcsIDEyOCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzUwLXNvbGlkOiByZ2JhKDI1NSwgMTczLCAxMDIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTQwMC1zb2xpZDogcmdiYSgyNTUsIDE2MCwgNzYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTQ1MC1zb2xpZDogcmdiYSgyNTUsIDE0NiwgNTEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTUwMC1zb2xpZDogcmdiYSgyNTUsIDEzMywgMjYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTU1MC1zb2xpZDogcmdiYSgyNTUsIDExOSwgMCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNjAwLXNvbGlkOiByZ2JhKDIzMywgMTExLCA0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS02NTAtc29saWQ6IHJnYmEoMjExLCAxMDIsIDgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTcwMC1zb2xpZDogcmdiYSgxODksIDk0LCAxMSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNzUwLXNvbGlkOiByZ2JhKDE2NywgODUsIDE1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS04MDAtc29saWQ6IHJnYmEoMTQ0LCA3NywgMTksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTg1MC1zb2xpZDogcmdiYSgxMjIsIDY5LCAyMywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtOTAwLXNvbGlkOiByZ2JhKDEwMCwgNjAsIDI3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS05NTAtc29saWQ6IHJnYmEoNzgsIDUyLCAzMCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTAwMC1zb2xpZDogcmdiYSg1NiwgNDMsIDM0LCAxKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXRleHQtbGlnaHQtaGMge1xcbiAgICAtLXljLWNvbG9yLXRleHQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MDApO1xcblxcbiAgICAtLXljLWNvbG9yLXRleHQtaW5mbzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi02NTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtd2FybmluZzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWRhbmdlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNjAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXV0aWxpdHk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTYwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02NTAtc29saWQpO1xcblxcbiAgICAtLXljLWNvbG9yLXRleHQtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTkwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1wb3NpdGl2ZS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi05MDAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtd2FybmluZy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtOTAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWRhbmdlci1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtOTAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXV0aWxpdHktaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTkwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS05NTAtc29saWQpO1xcblxcbiAgICAtLXljLWNvbG9yLXRleHQtc3BlY2lhbDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpbms6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLWxpbmspO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGluay1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay1ob3Zlcik7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saW5rLXZpc2l0ZWQ6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saW5rLXZpc2l0ZWQtaG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLWxpbmstdmlzaXRlZC1ob3Zlcik7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC15YW5kZXgtcmVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApO1xcblxcbiAgICAtLXljLWNvbG9yLXRleHQtZGFyay1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFyay1jb21wbGVtZW50YXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTgwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1kYXJrLXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay02MDApO1xcblxcbiAgICAtLXljLWNvbG9yLXRleHQtbGlnaHQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpZ2h0LWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGlnaHQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApO1xcblxcbiAgICAtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWludmVydGVkLWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWludmVydGVkLXNlY29uZGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtYmFzZS1saWdodC1oYyB7XFxuICAgIC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtbWVkaXVtLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTM1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtdWx0cmFsaWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay01MC1zb2xpZCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3Zlci1zb2xpZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24pO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1zZWxlY3Rpb24taG92ZXIpO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utc3BlY2lhbDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwtaG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbC1ob3Zlcik7XFxuICAgIC0teWMtY29sb3ItYmFzZS1hY3Rpb246IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1hY3Rpb24taG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbC1ob3Zlcik7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMjUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWluZm8taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zNTApO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0zMDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utd2FybmluZy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWRhbmdlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMjUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWRhbmdlci1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTI1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1taXNjLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbmV1dHJhbDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbmV1dHJhbC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1tZWRpdW0taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWluZm8taGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy03MDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZGFuZ2VyLWhlYXZ5LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC00NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbWlzYy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1pc2MtaGVhdnktaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWxpZ2h0LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1zaW1wbGUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWxpZ2h0LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1hY2NlbnQtZGlzYWJsZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZmxvYXQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtODUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWFubm91bmNlbWVudDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTUwLXNvbGlkKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLW1vZGFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtbGluZS1saWdodC1oYyB7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQwMCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljLWFjdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50LWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1zb2xpZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yMDAtc29saWQpO1xcblxcbiAgICAtLXljLWNvbG9yLWxpbmUtc2VsZWN0aW9uLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saWdodCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24tYWN0aXZlOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtbGluazogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWluZm86IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS00NTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtcG9zaXRpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLXdhcm5pbmc6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTYwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1kYW5nZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1taXNjOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtaGludDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDApO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtaW5mb2dyYXBoaWNzLWxpZ2h0LWhjIHtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtcG9zaXRpdmUtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1taXNjLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS01MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTApO1xcblxcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbWlzYy1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTMwMCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8taGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtYXhpczogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xNTAtc29saWQpO1xcblxcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy10b29sdGlwLWJnOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTk1MCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1zZngtbGlnaHQtaGMge1xcbiAgICAtLXljLWNvbG9yLXNmeC12ZWlsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQ1MCk7XFxuICAgIC0teWMtY29sb3Itc2Z4LXNoYWRvdzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zMDApO1xcbiAgICAtLXljLWNvbG9yLXNmeC1zaGFkb3ctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjAwKTtcXG4gICAgLS15Yy1jb2xvci1zZngtc2hhZG93LWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMCk7XFxuICAgIC0teWMtY29sb3Itc2Z4LWZhZGU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXByb21vLWxpZ2h0LWhjIHtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLXNpbHZlcjogI2VkZjJmNztcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLWdvbGQ6ICNmZmRiNGQ7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1hc3BoYWx0OiAjMzEzNTM4O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtdG9tYXRvOiAjZmY1OTU4O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtY29wcGVyOiAjZmZhYjNiO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtbWludDogIzVlY2Y3MTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLXNreTogIzQ5YTBmNjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLW5lb246ICM5ZjZmZWU7XFxuXFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXNpbHZlcjogI2VkZjJmNztcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtZ29sZDogI2ZmZjFiODtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtYXNwaGFsdDogI2VhZWJlYjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtdG9tYXRvOiAjZmZkZWRlO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1jb3BwZXI6ICNmZmU2YzQ7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LW1pbnQ6ICNjY2YwZDI7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LXNreTogI2Q2ZTlmZDtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtbmVvbjogI2VjZTJmYztcXG5cXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtc2lsdmVyOiAjOTY5YTllO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1nb2xkOiAjZmZkYjRkO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1hc3BoYWx0OiAjMzEzNTM4O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC10b21hdG86ICNmZjU5NTg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LWNvcHBlcjogI2ZmYWIzYjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtbWludDogIzVlY2Y3MTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtc2t5OiAjNDlhMGY2O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1uZW9uOiAjOWY2ZmVlO1xcblxcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1zaWx2ZXI6ICM3Mjc1Nzg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLWdvbGQ6ICNlZGJlMjg7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLWFzcGhhbHQ6ICMwMDA7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLXRvbWF0bzogI2VlNGY0ZTtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1hY2NlbnQtaG92ZXItY29wcGVyOiAjZjI4ZDA0O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1taW50OiAjM2JiYzUxO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWFjY2VudC1ob3Zlci1za3k6ICMyMTgwZGU7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYWNjZW50LWhvdmVyLW5lb246ICM3YjQ3Y2Y7XFxuXFxuICAgIC0teWMtY29sb3ItcHJvbW8tdGV4dC1zaWx2ZXI6ICM5NjlhOWU7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tdGV4dC1nb2xkOiAjZWJiNDA5O1xcbiAgICAtLXljLWNvbG9yLXByb21vLXRleHQtYXNwaGFsdDogIzMxMzUzODtcXG4gICAgLS15Yy1jb2xvci1wcm9tby10ZXh0LXRvbWF0bzogI2ZmNTk1ODtcXG4gICAgLS15Yy1jb2xvci1wcm9tby10ZXh0LWNvcHBlcjogI2ZmYWIzYjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby10ZXh0LW1pbnQ6ICM1ZWNmNzE7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tdGV4dC1za3k6ICM0OWEwZjY7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tdGV4dC1uZW9uOiAjOWY2ZmVlO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtcHJpdmF0ZS1kYXJrLWhjIHtcXG4gICAgLy8gTG93IGxldmVsIC0gaHR0cHM6Ly9maWdtYS5jb20vZmlsZS9hbGJaYWgyQU1JbUFRREJoRk1vaGR6XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMzUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00NTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTU1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTYwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNjUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03NTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTkwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtOTUwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTAwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTtcXG5cXG4gICAgLyrigJTigJTigJTigJTigJTigJTigJTigJTigJQgVG8gcmV2aWV3IG9wYXF1ZSDigJTigJTigJTigJTigJTigJTigJTigJTigJQqL1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtb3BhcXVlLTE1MDogcmdiYSg1NiwgNTcsIDYwLCAwLjk3KTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwOiByZ2JhKDAsIDAsIDAsIDAuMDIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTA6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDA6IHJnYmEoMCwgMCwgMCwgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTE1MDogcmdiYSgwLCAwLCAwLCAwLjE1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTIwMDogcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMjUwOiByZ2JhKDAsIDAsIDAsIDAuMjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMzAwOiByZ2JhKDAsIDAsIDAsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0zNTA6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay00MDA6IHJnYmEoMCwgMCwgMCwgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQ1MDogcmdiYSgwLCAwLCAwLCAwLjQ1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTUwMDogcmdiYSgwLCAwLCAwLCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNTUwOiByZ2JhKDAsIDAsIDAsIDAuNTUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNjAwOiByZ2JhKDAsIDAsIDAsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay02NTA6IHJnYmEoMCwgMCwgMCwgMC42NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay03MDA6IHJnYmEoMCwgMCwgMCwgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTc1MDogcmdiYSgwLCAwLCAwLCAwLjc1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTgwMDogcmdiYSgwLCAwLCAwLCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODUwOiByZ2JhKDAsIDAsIDAsIDAuODUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stOTAwOiByZ2JhKDAsIDAsIDAsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay05NTA6IHJnYmEoMCwgMCwgMCwgMC45NSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0xMDAwOiByZ2JhKDAsIDAsIDAsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stcm9jay04NTA6ICMyZDJjMzM7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay1yb2NrLTk1MDogcmdiYSgzNCwgMzUsIDM4LCAxKTtcXG5cXG4gICAgLyrigJTigJTigJTigJTigJTigJTigJTigJTigJQgVG8gcmV2aWV3IDIwLXNvbGlkICDigJQ+IHNob3VsZCBiZSBkZWxldGVkICDigJTigJTigJTigJTigJTigJTigJTigJTigJQqL1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAtc29saWQ6IHJnYmEoMzgsIDM5LCA0MiwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS01MC1zb2xpZDogcmdiYSg0NSwgNDYsIDQ5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMC1zb2xpZDogcmdiYSg1NiwgNTcsIDYwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MC1zb2xpZDogcmdiYSg2NywgNjgsIDcxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZDogcmdiYSg3OCwgNzksIDgxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MC1zb2xpZDogcmdiYSg4OSwgOTAsIDkyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMC1zb2xpZDogcmdiYSgxMDAsIDEwMSwgMTAzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTM1MC1zb2xpZDogcmdiYSgxMTEsIDExMiwgMTE0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTQwMC1zb2xpZDogcmdiYSgxMjIsIDEyMywgMTI1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTQ1MC1zb2xpZDogcmdiYSgxMzMsIDEzNCwgMTM2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwMC1zb2xpZDogcmdiYSgxNDQsIDE0NSwgMTQ3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTU1MC1zb2xpZDogcmdiYSgxNTYsIDE1NiwgMTU3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTYwMC1zb2xpZDogcmdiYSgxNjcsIDE2NywgMTY4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTY1MC1zb2xpZDogcmdiYSgxNzgsIDE3OCwgMTc5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTcwMC1zb2xpZDogcmdiYSgxODksIDE4OSwgMTkwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTc1MC1zb2xpZDogcmdiYSgyMDAsIDIwMCwgMjAxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTgwMC1zb2xpZDogcmdiYSgyMTEsIDIxMSwgMjEyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MC1zb2xpZDogcmdiYSgyMjIsIDIyMiwgMjIzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTkwMC1zb2xpZDogcmdiYSgyMzMsIDIzMywgMjMzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTk1MC1zb2xpZDogcmdiYSgyNDQsIDI0NCwgMjQ0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDAtc29saWQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwOiByZ2JhKDk4LCAxNDYsIDI1NSwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTE1MDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuMik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTIwMDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTI1MDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTM1MDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQwMDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuOCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTUwMDogcmdiYSg5OCwgMTQ2LCAyNTUsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTU1MDogcmdiYSg5OCwgMTQ2LCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS03MDA6IHJnYmEoMTQ1LCAxNzksIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTg1MDogcmdiYSgxOTIsIDIxMSwgMjU1LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTAtc29saWQ6IHJnYmEoMzcsIDQxLCA0OSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTEwMC1zb2xpZDogcmdiYSg0MCwgNDYsIDYwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtMTUwLXNvbGlkOiByZ2JhKDQ3LCA1NywgODEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yMDAtc29saWQ6IHJnYmEoNTMsIDY4LCAxMDMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yNTAtc29saWQ6IHJnYmEoNjAsIDc5LCAxMjUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zMDAtc29saWQ6IHJnYmEoNjYsIDkxLCAxNDcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0zNTAtc29saWQ6IHJnYmEoNzIsIDEwMiwgMTY4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNDAwLXNvbGlkOiByZ2JhKDc5LCAxMTMsIDE5MCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MC1zb2xpZDogcmdiYSg4NSwgMTI0LCAyMTIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01MDAtc29saWQ6IHJnYmEoOTIsIDEzNSwgMjMzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwLXNvbGlkOiByZ2JhKDk4LCAxNDYsIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTYwMC1zb2xpZDogcmdiYSgxMTQsIDE1NywgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNjUwLXNvbGlkOiByZ2JhKDEyOSwgMTY4LCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS03MDAtc29saWQ6IHJnYmEoMTQ1LCAxNzksIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTc1MC1zb2xpZDogcmdiYSgxNjEsIDE5MCwgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODAwLXNvbGlkOiByZ2JhKDE3NywgMjAwLCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS04NTAtc29saWQ6IHJnYmEoMTkyLCAyMTEsIDI1NSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTkwMC1zb2xpZDogcmdiYSgyMDgsIDIyMiwgMjU1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtOTUwLXNvbGlkOiByZ2JhKDIyMywgMjMzLCAyNTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0xMDAwLXNvbGlkOiByZ2JhKDIzOSwgMjQ0LCAyNTUsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTA6IHJnYmEoOTEsIDE4MSwgODcsIDAuMDUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTUwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjAwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjMpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjUwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzAwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzUwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjYpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDAwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTAwOiByZ2JhKDkxLCAxODEsIDg3LCAwLjkpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNTUwOiByZ2JhKDkxLCAxODEsIDg3LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTUwLXNvbGlkOiByZ2JhKDM3LCA0MiwgNDAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwLXNvbGlkOiByZ2JhKDQwLCA1MCwgNDMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTUwLXNvbGlkOiByZ2JhKDQ1LCA2NCwgNDgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjAwLXNvbGlkOiByZ2JhKDUxLCA3OSwgNTMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMjUwLXNvbGlkOiByZ2JhKDU3LCA5MywgNTgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzAwLXNvbGlkOiByZ2JhKDYzLCAxMDgsIDYzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTM1MC1zb2xpZDogcmdiYSg2OCwgMTIzLCA2NywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00MDAtc29saWQ6IHJnYmEoNzQsIDEzNywgNzIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDUwLXNvbGlkOiByZ2JhKDgwLCAxNTIsIDc3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTUwMC1zb2xpZDogcmdiYSg4NSwgMTY2LCA4MiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTAtc29saWQ6IHJnYmEoOTEsIDE4MSwgODcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjAwLXNvbGlkOiByZ2JhKDEwNywgMTg4LCAxMDQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNjUwLXNvbGlkOiByZ2JhKDEyNCwgMTk2LCAxMjEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNzAwLXNvbGlkOiByZ2JhKDE0MCwgMjAzLCAxMzcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNzUwLXNvbGlkOiByZ2JhKDE1NywgMjExLCAxNTQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tODAwLXNvbGlkOiByZ2JhKDE3MywgMjE4LCAxNzEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tODUwLXNvbGlkOiByZ2JhKDE4OSwgMjI1LCAxODgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tOTAwLXNvbGlkOiByZ2JhKDIwNiwgMjMzLCAyMDUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tOTUwLXNvbGlkOiByZ2JhKDIyMiwgMjQwLCAyMjEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMTAwMC1zb2xpZDogcmdiYSgyMzksIDI0OCwgMjM4LCAxKTtcXG5cXG4gICAgLyrigJTigJTigJTigJTigJTigJTigJTigJTigJQgIHNob3VsZCBiZSBkZWxldGVkIGFuZCBjaGFuZ2VkIHdpdGggLXNvbGlkICDigJTigJTigJTigJTigJTigJTigJTigJTigJQqL1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMDogI2UwYmQzNDtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MDogcmdiYSgyNTUsIDIwMywgMCwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTAwOiByZ2JhKDI1NSwgMjAzLCAwLCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTE1MDogcmdiYSgyNTUsIDIwMywgMCwgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0yMDA6IHJnYmEoMjU1LCAyMDMsIDAsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMjUwOiByZ2JhKDI1NSwgMjAzLCAwLCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTMwMDogcmdiYSgyNTUsIDIwMywgMCwgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0zNTA6IHJnYmEoMjU1LCAyMDMsIDAsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNDAwOiByZ2JhKDI1NSwgMjAzLCAwLCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTQ1MDogcmdiYSgyNTUsIDIwMywgMCwgMC44KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MDA6IHJnYmEoMjU1LCAyMDMsIDAsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNTUwOiByZ2JhKDI1NSwgMjAzLCAwLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MC1zb2xpZDogcmdiYSg0NSwgNDMsIDM2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xMDAtc29saWQ6IHJnYmEoNTYsIDUyLCAzNCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMTUwLXNvbGlkOiByZ2JhKDc4LCA2OSwgMzAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTIwMC1zb2xpZDogcmdiYSgxMDAsIDg1LCAyNywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMjUwLXNvbGlkOiByZ2JhKDEyMiwgMTAyLCAyMywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMzAwLXNvbGlkOiByZ2JhKDE0NCwgMTE5LCAxOSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctMzUwLXNvbGlkOiByZ2JhKDE2NywgMTM2LCAxNSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNDAwLXNvbGlkOiByZ2JhKDE4OSwgMTUzLCAxMSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNDUwLXNvbGlkOiByZ2JhKDIxMSwgMTY5LCA4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01MDAtc29saWQ6IHJnYmEoMjMzLCAxODYsIDQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTU1MC1zb2xpZDogcmdiYSgyNTUsIDIwMywgMCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjAwLXNvbGlkOiByZ2JhKDI1NSwgMjA4LCAyNiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNjUwLXNvbGlkOiByZ2JhKDI1NSwgMjEzLCA1MSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNzAwLXNvbGlkOiByZ2JhKDI1NSwgMjE5LCA3NiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNzUwLXNvbGlkOiByZ2JhKDI1NSwgMjI0LCAxMDIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTgwMC1zb2xpZDogcmdiYSgyNTUsIDIyOSwgMTI4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy04NTAtc29saWQ6IHJnYmEoMjU1LCAyMzQsIDE1MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctOTAwLXNvbGlkOiByZ2JhKDI1NSwgMjM5LCAxNzksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTk1MC1zb2xpZDogcmdiYSgyNTUsIDI0NSwgMjA0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xMDAwLXNvbGlkOiByZ2JhKDI1NSwgMjUwLCAyMjksIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwOiByZ2JhKDIzMiwgNzMsIDY5LCAwLjA1KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xMDA6IHJnYmEoMjMyLCA3MywgNjksIDAuMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTUwOiByZ2JhKDIzMiwgNzMsIDY5LCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTIwMDogcmdiYSgyMzIsIDczLCA2OSwgMC4zKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0yNTA6IHJnYmEoMjMyLCA3MywgNjksIDAuNCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwOiByZ2JhKDIzMiwgNzMsIDY5LCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTM1MDogcmdiYSgyMzIsIDczLCA2OSwgMC42KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC00MDA6IHJnYmEoMjMyLCA3MywgNjksIDAuNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwOiByZ2JhKDIzMiwgNzMsIDY5LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwMDogcmdiYSgyMzIsIDczLCA2OSwgMC45KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTA6IHJnYmEoMjMyLCA3MywgNjksIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTUwLXNvbGlkOiByZ2JhKDQ0LCAzNywgNDAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTEwMC1zb2xpZDogcmdiYSg1NCwgMzksIDQxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0xNTAtc29saWQ6IHJnYmEoNzQsIDQzLCA0NCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMjAwLXNvbGlkOiByZ2JhKDkzLCA0NiwgNDcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTI1MC1zb2xpZDogcmdiYSgxMTMsIDUwLCA1MSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwLXNvbGlkOiByZ2JhKDEzMywgNTQsIDU0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC0zNTAtc29saWQ6IHJnYmEoMTUzLCA1OCwgNTcsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQwMC1zb2xpZDogcmdiYSgxNzIsIDYxLCA2MCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNDUwLXNvbGlkOiByZ2JhKDE5MiwgNjUsIDYzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC01MDAtc29saWQ6IHJnYmEoMjEyLCA2OSwgNjYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTU1MC1zb2xpZDogcmdiYSgyMzIsIDczLCA2OSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNjAwLXNvbGlkOiByZ2JhKDIzNCwgOTEsIDg4LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC02NTAtc29saWQ6IHJnYmEoMjM2LCAxMDksIDEwNywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtNzAwLXNvbGlkOiByZ2JhKDIzOSwgMTI3LCAxMjUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTc1MC1zb2xpZDogcmdiYSgyNDEsIDE0NiwgMTQ0LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC04MDAtc29saWQ6IHJnYmEoMjQzLCAxNjQsIDE2MiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtODUwLXNvbGlkOiByZ2JhKDI0NiwgMTgyLCAxODEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcmVkLTkwMC1zb2xpZDogcmdiYSgyNDgsIDIwMCwgMTk5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXJlZC05NTAtc29saWQ6IHJnYmEoMjUwLCAyMTksIDIxOCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTAwMC1zb2xpZDogcmdiYSgyNTMsIDIzNywgMjM2LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01MDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuMDUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTEwMDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMTUwOiByZ2JhKDIyMywgNDYsIDI0MywgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0yMDA6IHJnYmEoMjIzLCA0NiwgMjQzLCAwLjMpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTI1MDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuNCk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMzAwOiByZ2JhKDIyMywgNDYsIDI0MywgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0zNTA6IHJnYmEoMjIzLCA0NiwgMjQzLCAwLjYpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTQwMDogcmdiYSgyMjMsIDQ2LCAyNDMsIDAuNyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNDUwOiByZ2JhKDIyMywgNDYsIDI0MywgMC44KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01MDA6IHJnYmEoMjIzLCA0NiwgMjQzLCAwLjkpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTU1MDogcmdiYSgyMjMsIDQ2LCAyNDMsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTUwLXNvbGlkOiByZ2JhKDQzLCAzNiwgNDgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTEwMC1zb2xpZDogcmdiYSg1MywgMzYsIDU5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0xNTAtc29saWQ6IHJnYmEoNzIsIDM3LCA3OSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtMjAwLXNvbGlkOiByZ2JhKDkxLCAzOCwgMTAwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0yNTAtc29saWQ6IHJnYmEoMTEwLCAzOSwgMTIwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0zMDAtc29saWQ6IHJnYmEoMTI4LCA0MCwgMTQxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0zNTAtc29saWQ6IHJnYmEoMTQ3LCA0MSwgMTYxLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS00MDAtc29saWQ6IHJnYmEoMTY2LCA0MiwgMTgyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS00NTAtc29saWQ6IHJnYmEoMTg1LCA0MywgMjAyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01MDAtc29saWQ6IHJnYmEoMjA0LCA0NSwgMjIzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS01NTAtc29saWQ6IHJnYmEoMjIzLCA0NiwgMjQzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS02MDAtc29saWQ6IHJnYmEoMjI2LCA2NywgMjQ1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS02NTAtc29saWQ6IHJnYmEoMjI5LCA4OCwgMjQ2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS03MDAtc29saWQ6IHJnYmEoMjMyLCAxMDgsIDI0NywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNzUwLXNvbGlkOiByZ2JhKDIzNiwgMTI5LCAyNDgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTgwMC1zb2xpZDogcmdiYSgyMzksIDE1MCwgMjQ5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS04NTAtc29saWQ6IHJnYmEoMjQyLCAxNzEsIDI1MCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtOTAwLXNvbGlkOiByZ2JhKDI0NSwgMTkyLCAyNTIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtcHVycGxlLTk1MC1zb2xpZDogcmdiYSgyNDksIDIxMywgMjUzLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLXB1cnBsZS0xMDAwLXNvbGlkOiByZ2JhKDI1MiwgMjM0LCAyNTQsIDEpO1xcblxcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTAwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMC4xKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0xNTA6IHJnYmEoOTYsIDEyOCwgMTU2LCAwLjIpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTIwMDogcmdiYSg5NiwgMTI4LCAxNTYsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMjUwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMC40KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zMDA6IHJnYmEoOTYsIDEyOCwgMTU2LCAwLjUpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTM1MDogcmdiYSg5NiwgMTI4LCAxNTYsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNDAwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMC43KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTA6IHJnYmEoOTYsIDEyOCwgMTU2LCAwLjgpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwMDogcmdiYSg5NiwgMTI4LCAxNTYsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwOiByZ2JhKDk2LCAxMjgsIDE1NiwgMSk7XFxuXFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTAtc29saWQ6IHJnYmEoMzcsIDQwLCA0NCwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTAwLXNvbGlkOiByZ2JhKDQwLCA0NCwgNTAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTE1MC1zb2xpZDogcmdiYSg0NiwgNTQsIDYyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0yMDAtc29saWQ6IHJnYmEoNTMsIDYzLCA3MywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMjUwLXNvbGlkOiByZ2JhKDU5LCA3MiwgODUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTMwMC1zb2xpZDogcmdiYSg2NSwgODEsIDk3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS0zNTAtc29saWQ6IHJnYmEoNzEsIDkxLCAxMDksIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQwMC1zb2xpZDogcmdiYSg3NywgMTAwLCAxMjEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQ1MC1zb2xpZDogcmdiYSg4NCwgMTA5LCAxMzIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTUwMC1zb2xpZDogcmdiYSg5MCwgMTE5LCAxNDQsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MC1zb2xpZDogcmdiYSg5NiwgMTI4LCAxNTYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTYwMC1zb2xpZDogcmdiYSgxMTIsIDE0MSwgMTY2LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS02NTAtc29saWQ6IHJnYmEoMTI4LCAxNTMsIDE3NiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNzAwLXNvbGlkOiByZ2JhKDE0NCwgMTY2LCAxODYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTc1MC1zb2xpZDogcmdiYSgxNjAsIDE3OSwgMTk1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS04MDAtc29saWQ6IHJnYmEoMTc2LCAxOTEsIDIwNSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktODUwLXNvbGlkOiByZ2JhKDE5MSwgMjA0LCAyMTUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTkwMC1zb2xpZDogcmdiYSgyMDcsIDIxNywgMjI1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS05NTAtc29saWQ6IHJnYmEoMjIzLCAyMzAsIDIzNSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTAwMC1zb2xpZDogcmdiYSgyMzksIDI0MiwgMjQ1LCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01MDogcmdiYSgyMDAsIDk5LCAxMiwgMC4wNSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTAwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTE1MDogcmdiYSgyMDAsIDk5LCAxMiwgMC4yKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0yMDA6IHJnYmEoMjAwLCA5OSwgMTIsIDAuMyk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMjUwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjQpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTMwMDogcmdiYSgyMDAsIDk5LCAxMiwgMC41KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0zNTA6IHJnYmEoMjAwLCA5OSwgMTIsIDAuNik7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNDAwOiByZ2JhKDIwMCwgOTksIDEyLCAwLjcpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTQ1MDogcmdiYSgyMDAsIDk5LCAxMiwgMC44KTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01MDA6IHJnYmEoMjAwLCA5OSwgMTIsIDAuOSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTUwOiByZ2JhKDIwMCwgOTksIDEyLCAxKTtcXG5cXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01MC1zb2xpZDogcmdiYSg0MiwgMzgsIDM3LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0xMDAtc29saWQ6IHJnYmEoNTEsIDQxLCAzNSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTUwLXNvbGlkOiByZ2JhKDY3LCA0OCwgMzMsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTIwMC1zb2xpZDogcmdiYSg4NCwgNTQsIDMwLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS0yNTAtc29saWQ6IHJnYmEoMTAwLCA2MSwgMjgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTMwMC1zb2xpZDogcmdiYSgxMTcsIDY3LCAyNSwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzUwLXNvbGlkOiByZ2JhKDEzNCwgNzMsIDIyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS00MDAtc29saWQ6IHJnYmEoMTUwLCA4MCwgMjAsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTQ1MC1zb2xpZDogcmdiYSgxNjcsIDg2LCAxNywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtNTAwLXNvbGlkOiByZ2JhKDE4MywgOTMsIDE1LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS01NTAtc29saWQ6IHJnYmEoMjAwLCA5OSwgMTIsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTYwMC1zb2xpZDogcmdiYSgyMDYsIDExNSwgMzYsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTY1MC1zb2xpZDogcmdiYSgyMTEsIDEzMCwgNjEsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTcwMC1zb2xpZDogcmdiYSgyMTYsIDE0NiwgODUsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTc1MC1zb2xpZDogcmdiYSgyMjIsIDE2MSwgMTA5LCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS04MDAtc29saWQ6IHJnYmEoMjI3LCAxNzcsIDEzMywgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtODUwLXNvbGlkOiByZ2JhKDIzMywgMTkzLCAxNTgsIDEpO1xcbiAgICAtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTkwMC1zb2xpZDogcmdiYSgyMzksIDIwOCwgMTgyLCAxKTtcXG4gICAgLS15Yy1jb2xvci1wcml2YXRlLW9yYW5nZS05NTAtc29saWQ6IHJnYmEoMjQ0LCAyMjQsIDIwNiwgMSk7XFxuICAgIC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMTAwMC1zb2xpZDogcmdiYSgyNTAsIDIzOSwgMjMxLCAxKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXRleHQtZGFyay1oYyB7XFxuICAgIC0teWMtY29sb3ItdGV4dC1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTYwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTQwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNjAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTYwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy02MDAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC02MDAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtdXRpbGl0eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtNjAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LW1pc2M6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTYwMC1zb2xpZCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtODUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTg1MC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy04NTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC04NTAtc29saWQpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtdXRpbGl0eS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1wdXJwbGUtODUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTg1MC1zb2xpZCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGluazogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluayk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1saW5rLWhvdmVyKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZDogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZC1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGluay12aXNpdGVkLWhvdmVyKTtcXG5cXG4gICAgLS15Yy1jb2xvci10ZXh0LXlhbmRleC1yZWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTU1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1kYXJrLXByaW1hcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stMTAwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1kYXJrLWNvbXBsZW1lbnRhcnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stODAwKTtcXG4gICAgLS15Yy1jb2xvci10ZXh0LWRhcmstc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTYwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGlnaHQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtbGlnaHQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTYwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1saWdodC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTQwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1wcmltYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtY29tcGxlbWVudGFyeTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay04MDApO1xcbiAgICAtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtc2Vjb25kYXJ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTYwMCk7XFxuICAgIC0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1oaW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTQwMCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1iYXNlLWRhcmstaGMge1xcbiAgICAtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay1yb2NrLTk1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW0taG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNDAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudC1kaXNhYmxlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy11bHRyYWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyLXNvbGlkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MC1zb2xpZCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1zZWxlY3Rpb246IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbik7XFxuICAgIC0teWMtY29sb3ItYmFzZS1zZWxlY3Rpb24taG92ZXI6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLXNlbGVjdGlvbi1ob3Zlcik7XFxuICAgIC0teWMtY29sb3ItYmFzZS1zcGVjaWFsOiB2YXIoLS15Yy1teS1jb2xvci1icmFuZC1ub3JtYWwpO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utc3BlY2lhbC1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsLWhvdmVyKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWFjdGlvbjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWFjdGlvbi1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsLWhvdmVyKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLWluZm86IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS0yNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtaW5mby1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0yNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tNDAwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXdhcm5pbmc6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTI1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy00MDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC0yNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtZGFuZ2VyLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC00MDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbWlzYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMjUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLW1pc2MtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTQwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1uZXV0cmFsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTEwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1uZXV0cmFsLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTI1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtZ3JlZW4tMzUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlLW1lZGl1bS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00MDApO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtaW5mby1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1wb3NpdGl2ZS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi00NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2Utd2FybmluZy1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS15ZWxsb3ctNDUwKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLXdhcm5pbmctaGVhdnktaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUteWVsbG93LTcwMCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1kYW5nZXItaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1kYW5nZXItaGVhdnktaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTQ1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1taXNjLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWNvb2wtZ3JleS00NTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbWlzYy1oZWF2eS1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1iYXNlLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTg1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS03MDApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbGlnaHQtc2ltcGxlLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1saWdodC1kaXNhYmxlZDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApO1xcbiAgICAtLXljLWNvbG9yLWJhc2UtbGlnaHQtYWNjZW50LWRpc2FibGVkOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTMwMCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xMDAtc29saWQpO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtZmxvYXQtaG92ZXI6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZCk7XFxuICAgIC0teWMtY29sb3ItYmFzZS1mbG9hdC1hY2NlbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1iYXNlLWZsb2F0LWFjY2VudC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS00MDAtc29saWQpO1xcblxcbiAgICAtLXljLWNvbG9yLWJhc2UtZmxvYXQtYW5ub3VuY2VtZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTIwMC1zb2xpZCk7XFxuXFxuICAgIC0teWMtY29sb3ItYmFzZS1tb2RhbDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay1yb2NrLTg1MCk7XFxufVxcblwiLFwiQG1peGluIHljLWNvbG9ycy1saW5lLWRhcmstaGMge1xcbiAgICAtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0yNTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY3RpdmU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNjAwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWNjZW50OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTM1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1nZW5lcmljLWFjY2VudC1ob3ZlcjogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS04MDApO1xcblxcbiAgICAtLXljLWNvbG9yLWxpbmUtc29saWQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMTUwLXNvbGlkKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLXNlbGVjdGlvbi1ob3ZlcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbGlnaHQpO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtc2VsZWN0aW9uLWFjdGl2ZTogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtbm9ybWFsKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWxpbms6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLW5vcm1hbCk7XFxuICAgIC0teWMtY29sb3ItbGluZS1pbmZvOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsdWUtNTUwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLXBvc2l0aXZlOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTU1MCk7XFxuICAgIC0teWMtY29sb3ItbGluZS13YXJuaW5nOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy0xMDApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtZGFuZ2VyOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXJlZC01NTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtbWlzYzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktNTUwKTtcXG4gICAgLS15Yy1jb2xvci1saW5lLWhpbnQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApO1xcbiAgICAtLXljLWNvbG9yLWxpbmUtbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtNTAwKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLWluZm9ncmFwaGljcy1kYXJrLWhjIHtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtaW5mby1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXBvc2l0aXZlLWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWdyZWVuLTE1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXdhcm5pbmctbGlnaHQ6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtb3JhbmdlLTE1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWRhbmdlci1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbWlzYy1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1jb29sLWdyZXktMTUwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbmV1dHJhbC1saWdodDogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTApO1xcblxcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1pbmZvLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibHVlLTMwMCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLXBvc2l0aXZlLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi0zMDApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1vcmFuZ2UtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtZGFuZ2VyLW1lZGl1bTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1yZWQtMzAwKTtcXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtbWlzYy1tZWRpdW06IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTMwMCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtbWVkaXVtOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLTE1MCk7XFxuXFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLWluZm8taGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmx1ZS01NTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1wb3NpdGl2ZS1oZWF2eTogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ncmVlbi01NTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy13YXJuaW5nLWhlYXZ5OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXllbGxvdy01NTApO1xcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy1kYW5nZXItaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtcmVkLTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW1pc2MtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtY29vbC1ncmV5LTU1MCk7XFxuICAgIC0teWMtY29sb3ItaW5mb2dyYXBoaWNzLW5ldXRyYWwtaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMzAwKTtcXG5cXG4gICAgLS15Yy1jb2xvci1pbmZvZ3JhcGhpY3MtYXhpczogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS13aGl0ZS0xNTAtc29saWQpO1xcblxcbiAgICAtLXljLWNvbG9yLWluZm9ncmFwaGljcy10b29sdGlwLWJnOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLXdoaXRlLW9wYXF1ZS0xNTApO1xcbn1cXG5cIixcIkBtaXhpbiB5Yy1jb2xvcnMtc2Z4LWRhcmstaGMge1xcbiAgICAtLXljLWNvbG9yLXNmeC12ZWlsOiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTcwMCk7XFxuICAgIC0teWMtY29sb3Itc2Z4LXNoYWRvdzogdmFyKC0teWMtY29sb3ItcHJpdmF0ZS1ibGFjay0yMDApO1xcbiAgICAtLXljLWNvbG9yLXNmeC1zaGFkb3ctaGVhdnk6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtYmxhY2stNDAwKTtcXG4gICAgLS15Yy1jb2xvci1zZngtc2hhZG93LWxpZ2h0OiB2YXIoLS15Yy1jb2xvci1wcml2YXRlLWJsYWNrLTEwMCk7XFxuICAgIC0teWMtY29sb3Itc2Z4LWZhZGU6IHZhcigtLXljLWNvbG9yLXByaXZhdGUtd2hpdGUtMjUwKTtcXG59XFxuXCIsXCJAbWl4aW4geWMtY29sb3JzLXByb21vLWRhcmstaGMge1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2Utc2lsdmVyOiAjYmNjMGM0O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtZ29sZDogI2ZmZGU1ZDtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1iYXNlLWFzcGhhbHQ6ICM0NzRkNTI7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS10b21hdG86ICNmZjZiNmE7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1jb3BwZXI6ICNmZmI5NWE7XFxuICAgIC0teWMtY29sb3ItcHJvbW8tYmFzZS1taW50OiAjN2ZkNjhlO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2Utc2t5OiAjNjliNGZmO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWJhc2UtbmVvbjogI2IzODRmZjtcXG5cXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtc2lsdmVyOiAjNjE2MzY2O1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1nb2xkOiAjOTk4MzJlO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1hc3BoYWx0OiAjNWQ2NTZiO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC10b21hdG86ICM5OTg1ODU7XFxuICAgIC0teWMtY29sb3ItcHJvbW8taGlnaGxpZ2h0LWNvcHBlcjogIzdmNzI2MjtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtbWludDogIzc1ODk3ODtcXG4gICAgLS15Yy1jb2xvci1wcm9tby1oaWdobGlnaHQtc2t5OiAjOTRhMmFmO1xcbiAgICAtLXljLWNvbG9yLXByb21vLWhpZ2hsaWdodC1uZW9uOiAjYWVhNmJhO1xcbn1cXG5cIixcIkBpbXBvcnQgJy4vbWl4aW5zJztcXG5AaW1wb3J0ICcuL3ZhcmlhYmxlcyc7XFxuXFxuLmRjLWRvYy1wYWdlIC55Zm0ge1xcbiAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG5cXG4gICAgLS15Zm0tY29sb3ItaGxqcy1iYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xcbiAgICAtLXlmbS1jb2xvci1obGpzLXN1YnN0OiB2YXIoLS15Yy1jb2xvci10ZXh0LWNvbXBsZW1lbnRhcnkpO1xcbiAgICAtLXlmbS1jb2xvci1obGpzLWNvbW1lbnQ6IHZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcXG4gICAgLS15Zm0tY29sb3ItaGxqcy1kZWxldGlvbjogdmFyKC0teWMtY29sb3ItbGluZS1kYW5nZXIpO1xcbiAgICAtLXlmbS1jb2xvci1obGpzLXNlY3Rpb246IHZhcigtLXljLWNvbG9yLWxpbmUtZGFuZ2VyKTtcXG5cXG4gICAgYSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rKTtcXG5cXG4gICAgICAgICY6aG92ZXIsXFxuICAgICAgICAmOmFjdGl2ZSB7XFxuICAgICAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcik7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgaW1nIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XFxuICAgIH1cXG5cXG4gICAgJGJhY2tncm91bmRDb2xvcnM6IChcXG4gICAgICAgIHlmbS1hY2NlbnQtaW5mbzogdmFyKC0teWMtY29sb3ItYmFzZS1pbmZvKSxcXG4gICAgICAgIHlmbS1hY2NlbnQtdGlwOiB2YXIoLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlKSxcXG4gICAgICAgIHlmbS1hY2NlbnQtYWxlcnQ6IHZhcigtLXljLWNvbG9yLWJhc2UtZGFuZ2VyKSxcXG4gICAgICAgIHlmbS1hY2NlbnQtd2FybmluZzogdmFyKC0teWMtY29sb3ItYmFzZS13YXJuaW5nKSxcXG4gICAgKTtcXG5cXG4gICAgQGVhY2ggJHR5cGUsICRjb2xvciBpbiAkYmFja2dyb3VuZENvbG9ycyB7XFxuICAgICAgICAmLiN7JHR5cGV9IHtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgY29kZSB7XFxuICAgICAgICBmb250LXNpemU6IHZhcigtLWRjLWNvZGUtc2hvcnQtZm9udC1zaXplKTtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1kYy1jb2RlLXNob3J0LWxpbmUtaGVpZ2h0KTtcXG4gICAgICAgIHBhZGRpbmc6IHZhcigtLWRjLWNvZGUtc2hvcnQtcGFkZGluZyk7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1iYXNlLW1pc2MpO1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbWlzYyk7XFxuICAgIH1cXG5cXG4gICAgcHJlID4gY29kZSB7XFxuICAgICAgICBmb250LXNpemU6IHZhcigtLWRjLWNvZGUtZm9udC1zaXplKTtcXG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1kYy1jb2RlLWxpbmUtaGVpZ2h0KTtcXG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1iYXNlLW1pc2MpO1xcbiAgICAgICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeSk7XFxuICAgIH1cXG5cXG4gICAgZGZuIHtcXG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWJhc2UtZmxvYXQpO1xcbiAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMjBweCB2YXIoLS15Yy1jb2xvci1zZngtc2hhZG93KTtcXG4gICAgfVxcblxcbiAgICBkZm46YmVmb3JlIHtcXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCB2YXIoLS15Yy1wb3B1cC1ib3JkZXItY29sb3IpO1xcbiAgICB9XFxuXFxuICAgIHRhYmxlIHtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpO1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcXG4gICAgfVxcblxcbiAgICB0YWJsZSB0aGVhZCxcXG4gICAgdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7XFxuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMpO1xcbiAgICB9XFxuXFxuICAgIGhyIHtcXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XFxuICAgIH1cXG5cXG4gICAgYmxvY2txdW90ZSB7XFxuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTtcXG4gICAgfVxcblxcbiAgICAueWZtLXRhYi1saXN0IHtcXG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxuICAgIH1cXG5cXG4gICAgLnlmbS10YWI6aG92ZXIsXFxuICAgIC55Zm0tdGFiOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcblxcbiAgICAueWZtLXRhYi5hY3RpdmUge1xcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTtcXG4gICAgfVxcblxcbiAgICAvKiBUT0RPOiBtb3ZlIHlmbS1jdXQgc3R5bGVzIHRvIHlmbS10cmFuc2Zvcm0gKi9cXG4gICAgLnlmbS1jdXQge1xcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJsb2NrTWFyZ2luQm90dG9tTWVkaXVtO1xcbiAgICB9XFxuXFxuICAgIC55Zm0tY3V0Lm9wZW4gLnlmbS1jdXQtY29udGVudCB7XFxuICAgICAgICBwYWRkaW5nOiA1cHggMCAwIDMwcHg7XFxuICAgIH1cXG5cXG4gICAgLnlmbS10ZXJtX3RpdGxlOmhvdmVyIHtcXG4gICAgICAgIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmstaG92ZXIpO1xcbiAgICB9XFxuXFxuICAgIC8vIE1hcmdpbiBjb2xsYXBzZSBpcyBub3QgYXBwbGllZCBmb3IgYSBibG9jayBhbmQgaGVhZGVyIHdpdGggYSBuZWdhdGl2ZSBtYXJnaW4uXFxuICAgIC8vIFRoZSBtYXJnaW4gaXMgc3VtbWVkIHVwLiBTbywgd2UgbmVlZCB0byB0YWtlIDE1cHggYXdheSBmcm9tIHRoZSBoZWFkZXIgbWFyZ2luLXRvcFxcbiAgICBoMSxcXG4gICAgaDIge1xcbiAgICAgICAgQGluY2x1ZGUgZml4QW5jaG9yUG9zaXRpb24oY2FsYygjeyRoZWFkZXJNYXJnaW5Ub3BMYXJnZX0gLSAjeyRibG9ja01hcmdpbkJvdHRvbU1lZGl1bX0pKTtcXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRibG9ja01hcmdpbkJvdHRvbUxhcmdlO1xcbiAgICB9XFxuXFxuICAgIGgzLFxcbiAgICBoNCxcXG4gICAgaDUsXFxuICAgIGg2IHtcXG4gICAgICAgIEBpbmNsdWRlIGZpeEFuY2hvclBvc2l0aW9uKGNhbGMoI3skaGVhZGVyTWFyZ2luVG9wTWVkaXVtfSAtICN7JGJsb2NrTWFyZ2luQm90dG9tTWVkaXVtfSkpO1xcbiAgICB9XFxuXFxuICAgIGgxICsgaDIsXFxuICAgIGgyICsgaDMsXFxuICAgIGgzICsgaDQsXFxuICAgIGg0ICsgaDUsXFxuICAgIGg1ICsgaDYge1xcbiAgICAgICAgQGluY2x1ZGUgZml4QW5jaG9yUG9zaXRpb24oKTtcXG4gICAgfVxcblxcbiAgICAvLyBVc2UgMHB4IGZvciB0aGUgdG9wIG9mZnNldCBvZiB0aGUgaGVhZGVyIGlmIGl0IGlzIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50LFxcbiAgICAvLyBiZWNhdXNlIGl0IGlzIGxvY2F0ZWQgYWZ0ZXIgdGhlIHBhZ2UgdGl0bGVcXG4gICAgaDEsXFxuICAgIGgyLFxcbiAgICBoMyxcXG4gICAgaDQsXFxuICAgIGg1LFxcbiAgICBoNiB7XFxuICAgICAgICAmOmZpcnN0LWNoaWxkIHtcXG4gICAgICAgICAgICBAaW5jbHVkZSBmaXhBbmNob3JQb3NpdGlvbigpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC55Zm0tcGFnZV9fZGVsaW1ldGVyIHtcXG4gICAgICAgIGhlaWdodDogNHB4O1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljKTtcXG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xcblxcbiAgICAgICAgJiArIGgxLFxcbiAgICAgICAgJiArIGgyLFxcbiAgICAgICAgJiArIGgzLFxcbiAgICAgICAgJiArIGg0LFxcbiAgICAgICAgJiArIGg1LFxcbiAgICAgICAgJiArIGg2IHtcXG4gICAgICAgICAgICBAaW5jbHVkZSBmaXhBbmNob3JQb3NpdGlvbigjeyRoZWFkZXJNYXJnaW5Ub3BMYXJnZX0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC55Zm0tb3JpZ2luYWwtbGluayB7XFxuICAgICAgICAmOmJlZm9yZSB7XFxuICAgICAgICAgICAgY29udGVudDogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgICAgICYgc3ZnIHtcXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgaDEsXFxuICAgIGgyLFxcbiAgICBoMyxcXG4gICAgaDQsXFxuICAgIGg1LFxcbiAgICBoNiB7XFxuICAgICAgICAueWZtLW9yaWdpbmFsLWxpbms6OmJlZm9yZSB7XFxuICAgICAgICAgICAgY29udGVudDogbm9uZTtcXG4gICAgICAgIH1cXG4gICAgICAgIC55Zm0tb3JpZ2luYWwtbGluayBzdmcge1xcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgICAgIH1cXG4gICAgICAgICY6aG92ZXIgLnlmbS1vcmlnaW5hbC1saW5rIHN2ZyB7XFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvKiBzdHlsZWxpbnQtZGlzYWJsZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnQgKi9cXG4gICAgLnlmbS1hbmNob3JfaGlkZGVuIHtcXG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgICAgICY6YmVmb3JlIHtcXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvKiBzdHlsZWxpbnQtZW5hYmxlIGRlY2xhcmF0aW9uLW5vLWltcG9ydGFudCAqL1xcbn1cXG5cXG4ueWMtcm9vdF90aGVtZV9kYXJrIC5kYy1kb2MtcGFnZSAueWZtIHtcXG4gICAgLnlmbS1jdXQtdGl0bGU6YmVmb3JlIHtcXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQXhOaUF4TmlJK1BIQmhkR2dnYzNSeWIydGxQU0p5WjJKaEtESTFOU3dnTWpVMUxDQXlOVFVzSURBdU55a2lJR1pwYkd3OUltNXZibVVpSUdROUlrMHpJRFpzTlNBMUlEVXROU0krUEM5d1lYUm9Qand2YzNablBnPT0nKTtcXG4gICAgfVxcbn1cXG5cIixcIi8vIFNpemVzXFxuJGhlYWRlckhlaWdodDogMHB4O1xcbiRub3JtYWxPZmZzZXQ6IDIwcHg7XFxuJG1pbmlUb2NPZmZzZXQ6IDU2cHg7XFxuJGJsb2NrTWFyZ2luQm90dG9tTGFyZ2U6IDIwcHg7XFxuJGJsb2NrTWFyZ2luQm90dG9tTWVkaXVtOiAxNXB4O1xcbiRoZWFkZXJNYXJnaW5Ub3BMYXJnZTogNDBweDtcXG4kaGVhZGVyTWFyZ2luVG9wTWVkaXVtOiAzMnB4O1xcbiRwb3B1cFBhZGRpbmc6IDE2cHg7XFxuJGNlbnRlckJsb2NrTWF4V2lkdGg6IDczNnB4O1xcblxcbiRzY3JlZW5CcmVha3BvaW50czogKFxcbiAgICAneHMnOiAzNzVweCxcXG4gICAgJ3NtJzogNTc3cHgsXFxuICAgICdtZCc6IDc2OXB4LFxcbiAgICAnbGcnOiAxMDgxcHgsXFxuICAgICd4bCc6IDExODVweCxcXG4pO1xcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJ35AZ3Jhdml0eS11aS91aWtpdC9zdHlsZXMvc3R5bGVzLnNjc3MnO1xcbkBpbXBvcnQgJy4veWZtLnNjc3MnO1xcblxcbi55Yy1yb290IHtcXG4gICAgLS1kYy10ZXh0LWhpZ2hsaWdodDogdmFyKC0teWMtY29sb3ItYmFzZS13YXJuaW5nLWhlYXZ5KTtcXG4gICAgLS1kYy10ZXh0LWhpZ2hsaWdodC1zZWxlY3RlZDogI2ZmYWIzYjtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcImJvZHkueWMtcm9vdHtmb250LWZlYXR1cmUtc2V0dGluZ3M6XFxcImxpZ2FcXFwiLFxcXCJrZXJuXFxcIjt0ZXh0LXNpemUtYWRqdXN0OjEwMCU7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5fWgxLGgyLGgzLGg0LGg1LGg2e21hcmdpbjowfWgxe2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWRpc3BsYXktMy1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtZGlzcGxheS0zLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDo1MDB9QG1lZGlhKG1heC13aWR0aDogNzY4cHgpe2gxe2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWRpc3BsYXktMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtZGlzcGxheS0yLWxpbmUtaGVpZ2h0KX19aDJ7Zm9udC1zaXplOnZhcigtLXljLXRleHQtZGlzcGxheS0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1kaXNwbGF5LTEtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OjUwMH1oM3tmb250LXNpemU6dmFyKC0teWMtdGV4dC1oZWFkZXItMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtaGVhZGVyLTItbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OjUwMH1oNHtmb250LXNpemU6dmFyKC0teWMtdGV4dC1oZWFkZXItMS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtaGVhZGVyLTEtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OjUwMH1oNXtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTMtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMy1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6NTAwfWg2e2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMy1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDo0MDB9cCxkaXYucHttYXJnaW46MCAwIDIwcHh9cDpsYXN0LWNoaWxkLGRpdi5wOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfXN1YixzdXB7Zm9udC1zaXplOi43NWVtO2xpbmUtaGVpZ2h0OjB9YXtvdXRsaW5lOm5vbmU7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rKTt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9pbnRlcn0udXRpbGl0eWZvY3VzIGE6Zm9jdXN7b3V0bGluZToycHggc29saWQgI2ZmZGI0ZH1hOmhvdmVyLGE6YWN0aXZle2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcil9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvdHlwb2dyYXBoeS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy9taXhpbnMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFHQSxhQUNJLG1DQUFBLENBQ0EscUJBQUEsQ0FHQSxpQ0FBQSxDQUdKLGtCQU1JLFFBQUEsQ0FHSixHQ2pCSSw0Q0FBQSxDQUNBLGdEQUFBLENBMENBLGVBQUEsQ0FFQSx5QkQ1QkosR0NqQkksNENBQUEsQ0FDQSxnREFBQSxDQUFBLENEb0JKLEdDckJJLDRDQUFBLENBQ0EsZ0RBQUEsQ0FtREEsZUFBQSxDRDNCSixHQ3pCSSwyQ0FBQSxDQUNBLCtDQUFBLENBd0RBLGVBQUEsQ0Q1QkosR0M3QkksMkNBQUEsQ0FDQSwrQ0FBQSxDQTZEQSxlQUFBLENEN0JKLEdDakNJLHlDQUFBLENBQ0EsNkNBQUEsQ0FrRUEsZUFBQSxDRDlCSixHQ3JDSSx5Q0FBQSxDQUNBLDZDQUFBLENBdUVBLGVBQUEsQ0QvQkosUUFFSSxlQUFBLENBRUEsOEJBQ0ksZUFBQSxDQUlSLFFBRUksZUFBQSxDQUNBLGFBQUEsQ0FHSixFQ25DSSxZQUFBLENBVUEsK0JBQUEsQ0FDQSxvQkFBQSxDQUNBLGNBQUEsQ0FWQSxzQkFDSSx5QkFBQSxDQVdKLGlCQUVJLHFDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBpbXBvcnQgJy4vdmFyaWFibGVzJztcXG5AaW1wb3J0ICcuL21peGlucyc7XFxuXFxuYm9keS55Yy1yb290IHtcXG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYScsICdrZXJuJztcXG4gICAgdGV4dC1zaXplLWFkanVzdDogMTAwJTtcXG5cXG4gICAgLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIHZhbHVlLWtleXdvcmQtY2FzZSAqL1xcbiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xcbn1cXG5cXG5oMSxcXG5oMixcXG5oMyxcXG5oNCxcXG5oNSxcXG5oNiB7XFxuICAgIG1hcmdpbjogMDtcXG59XFxuXFxuaDEge1xcbiAgICBAaW5jbHVkZSBoZWFkaW5nMSgpO1xcbn1cXG5cXG5oMiB7XFxuICAgIEBpbmNsdWRlIGhlYWRpbmcyKCk7XFxufVxcblxcbmgzIHtcXG4gICAgQGluY2x1ZGUgaGVhZGluZzMoKTtcXG59XFxuXFxuaDQge1xcbiAgICBAaW5jbHVkZSBoZWFkaW5nNCgpO1xcbn1cXG5cXG5oNSB7XFxuICAgIEBpbmNsdWRlIGhlYWRpbmc1KCk7XFxufVxcblxcbmg2IHtcXG4gICAgQGluY2x1ZGUgaGVhZGluZzYoKTtcXG59XFxuXFxucCxcXG5kaXYucCB7XFxuICAgIG1hcmdpbjogMCAwIDIwcHg7XFxuXFxuICAgICY6bGFzdC1jaGlsZCB7XFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xcbiAgICB9XFxufVxcblxcbnN1YixcXG5zdXAge1xcbiAgICBmb250LXNpemU6IDAuNzVlbTtcXG4gICAgbGluZS1oZWlnaHQ6IDA7XFxufVxcblxcbmEge1xcbiAgICBAaW5jbHVkZSBsaW5rKCk7XFxufVxcblwiLFwiQGltcG9ydCAnLi92YXJpYWJsZXMnO1xcblxcbkBtaXhpbiB0ZXh0LXNpemUoJG5hbWUpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWZvbnQtc2l6ZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LSN7JG5hbWV9LWxpbmUtaGVpZ2h0KTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUoKSB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuQG1peGluIGZpeEFuY2hvclBvc2l0aW9uKCRvZmZzZXQ6IDBweCkge1xcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1kYy1oZWFkZXItaGVpZ2h0LCAjeyRoZWFkZXJIZWlnaHR9KSk7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoI3skb2Zmc2V0fSAtIHZhcigtLWRjLWhlYWRlci1oZWlnaHQsICN7JGhlYWRlckhlaWdodH0pKTtcXG59XFxuXFxuQG1peGluIHJlc2V0LWxpbmstc3R5bGUoKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxufVxcblxcbkBtaXhpbiBpc2xhbmRzLWZvY3VzKCkge1xcbiAgICBvdXRsaW5lOiBub25lO1xcblxcbiAgICAudXRpbGl0eWZvY3VzICY6Zm9jdXMge1xcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICNmZmRiNGQ7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGxpbmsoKSB7XFxuICAgIEBpbmNsdWRlIGlzbGFuZHMtZm9jdXMoKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGluayk7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmhvdmVyLFxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzEoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShkaXNwbGF5LTMpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcblxcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpIC0gMSkge1xcbiAgICAgICAgQGluY2x1ZGUgdGV4dC1zaXplKGRpc3BsYXktMik7XFxuICAgIH1cXG59XFxuXFxuQG1peGluIGhlYWRpbmcyKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoZGlzcGxheS0xKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG59XFxuXFxuQG1peGluIGhlYWRpbmczKCkge1xcbiAgICBAaW5jbHVkZSB0ZXh0LXNpemUoaGVhZGVyLTIpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbn1cXG5cXG5AbWl4aW4gaGVhZGluZzQoKSB7XFxuICAgIEBpbmNsdWRlIHRleHQtc2l6ZShoZWFkZXItMSk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNSgpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxufVxcblxcbkBtaXhpbiBoZWFkaW5nNigpIHtcXG4gICAgQGluY2x1ZGUgdGV4dC1zaXplKGJvZHktMyk7XFxuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XFxufVxcblxcbkBtaXhpbiBjb250cmlidXRvcnMtdGV4dCgpIHtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcXG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xcbn1cXG5cXG5AbWl4aW4gdGV4dC1ib2R5LTEoKSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLW9ubHkoKSB7XFxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiBtYXAtZ2V0KCRzY3JlZW5CcmVha3BvaW50cywgJ21kJykgLSAxKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBkZXNrdG9wLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1heC13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdzbScpIC0gMSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cXG5AbWl4aW4gbW9iaWxlLXRhYmxldC1vbmx5KCkge1xcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogbWFwLWdldCgkc2NyZWVuQnJlYWtwb2ludHMsICdtZCcpKSB7XFxuICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxufVxcblxcbkBtaXhpbiBtb2JpbGUtb25seSgpIHtcXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IG1hcC1nZXQoJHNjcmVlbkJyZWFrcG9pbnRzLCAnc20nKSkge1xcbiAgICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjRcXFwiIGhlaWdodD1cXFwiMjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIlM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI4XFxcIiByPVxcXCI4XFxcIiBmaWxsPVxcXCJyZ2IlMjgyLDEyMywyNDMlMjlcXFwiLyUzRSUzQ3JlY3Qgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiNVxcXCIgeD1cXFwiNy41XFxcIiB5PVxcXCI2LjVcXFwiIHN0cm9rZT1cXFwiJTIzZmZmXFxcIiByeD1cXFwiLjVcXFwiLyUzRSUzQ2NpcmNsZSBjeD1cXFwiOFxcXCIgY3k9XFxcIjRcXFwiIHI9XFxcIjFcXFwiIGZpbGw9XFxcIiUyM2ZmZlxcXCIvJTNFJTNDL3N2ZyUzRVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjRcXFwiIGhlaWdodD1cXFwiMjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIlM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI4XFxcIiByPVxcXCI4XFxcIiBmaWxsPVxcXCJyZ2IlMjg4NiwxODksMTAzJTI5XFxcIi8lM0UlM0NyZWN0IHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjVcXFwiIHg9XFxcIjcuNVxcXCIgeT1cXFwiNi41XFxcIiBzdHJva2U9XFxcIiUyM2ZmZlxcXCIgcng9XFxcIi41XFxcIi8lM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI0XFxcIiByPVxcXCIxXFxcIiBmaWxsPVxcXCIlMjNmZmZcXFwiLyUzRSUzQy9zdmclM0VcIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMl9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiJTNFJTNDY2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiOFxcXCIgcj1cXFwiOFxcXCIgZmlsbD1cXFwicmdiJTI4MjU1LDcwLDY5JTI5XFxcIi8lM0UlM0NyZWN0IHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjVcXFwiIHg9XFxcIjcuNVxcXCIgeT1cXFwiNi41XFxcIiBzdHJva2U9XFxcIiUyM2ZmZlxcXCIgcng9XFxcIi41XFxcIi8lM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI0XFxcIiByPVxcXCIxXFxcIiBmaWxsPVxcXCIlMjNmZmZcXFwiLyUzRSUzQy9zdmclM0VcIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfM19fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiJTNFJTNDY2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiOFxcXCIgcj1cXFwiOFxcXCIgZmlsbD1cXFwicmdiJTI4MjQxLDE0OSwyNCUyOVxcXCIvJTNFJTNDcmVjdCB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCI1XFxcIiB4PVxcXCI3LjVcXFwiIHk9XFxcIjYuNVxcXCIgc3Ryb2tlPVxcXCIlMjNmZmZcXFwiIHJ4PVxcXCIuNVxcXCIvJTNFJTNDY2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiNFxcXCIgcj1cXFwiMVxcXCIgZmlsbD1cXFwiJTIzZmZmXFxcIi8lM0UlM0Mvc3ZnJTNFXCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzRfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ01DQXhOaUF4TmlJK0NpQWdJQ0E4Y0dGMGFDQnpkSEp2YTJVOUltTjFjbkpsYm5SRGIyeHZjaUlnWm1sc2JEMGlibTl1WlNJZ1pEMGlUVE1nTm13MUlEVWdOUzAxSWk4K0Nqd3ZjM1puUGdvPVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF81X19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0F6T0RRZ05URXlJajQ4Y0dGMGFDQm1hV3hzUFNKamRYSnlaVzUwUTI5c2IzSWlJR1E5SWswek5qa3VPU0E1Tnk0NVRESTROaUF4TkVNeU56Y2dOU0F5TmpRdU9DMHVNU0F5TlRJdU1TMHVNVWcwT0VNeU1TNDFJREFnTUNBeU1TNDFJREFnTkRoMk5ERTJZekFnTWpZdU5TQXlNUzQxSURRNElEUTRJRFE0YURJNE9HTXlOaTQxSURBZ05EZ3RNakV1TlNBME9DMDBPRll4TXpFdU9XTXdMVEV5TGpjdE5TNHhMVEkxTFRFMExqRXRNelI2YlMweU1pNDJJREl5TGpkak1pNHhJREl1TVNBekxqVWdOQzQySURRdU1pQTNMalJJTWpVMlZqTXlMalZqTWk0NExqY2dOUzR6SURJdU1TQTNMalFnTkM0eWJEZ3pMamtnT0RNdU9YcE5Nek0ySURRNE1FZzBPR010T0M0NElEQXRNVFl0Tnk0eUxURTJMVEUyVmpRNFl6QXRPQzQ0SURjdU1pMHhOaUF4TmkweE5tZ3hOeloyTVRBMFl6QWdNVE11TXlBeE1DNDNJREkwSURJMElESTBhREV3TkhZek1EUmpNQ0E0TGpndE55NHlJREUyTFRFMklERTJlbTB0TkRndE1qUTBkamhqTUNBMkxqWXROUzQwSURFeUxURXlJREV5U0RFd09HTXROaTQySURBdE1USXROUzQwTFRFeUxURXlkaTA0WXpBdE5pNDJJRFV1TkMweE1pQXhNaTB4TW1neE5qaGpOaTQySURBZ01USWdOUzQwSURFeUlERXllbTB3SURZMGRqaGpNQ0EyTGpZdE5TNDBJREV5TFRFeUlERXlTREV3T0dNdE5pNDJJREF0TVRJdE5TNDBMVEV5TFRFeWRpMDRZekF0Tmk0MklEVXVOQzB4TWlBeE1pMHhNbWd4Tmpoak5pNDJJREFnTVRJZ05TNDBJREV5SURFeWVtMHdJRFkwZGpoak1DQTJMall0TlM0MElERXlMVEV5SURFeVNERXdPR010Tmk0MklEQXRNVEl0TlM0MExURXlMVEV5ZGkwNFl6QXROaTQySURVdU5DMHhNaUF4TWkweE1tZ3hOamhqTmk0MklEQWdNVElnTlM0MElERXlJREV5ZWlJdlBqd3ZjM1puUGc9PVwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzBfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMV9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMl9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzJfX18pO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzNfX18gPSBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8zX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF80X19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfNF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfNV9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzVfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnlmbXtmb250LWZhbWlseTp2YXIoLS15Zm0tZm9udC1mYW1pbHktc2Fucyk7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MjBweDt3b3JkLXdyYXA6YnJlYWstd29yZDtjb2xvcjpyZ2JhKDAsMCwwLC43KTstLXlmbS1jb2xvci1obGpzLWJhY2tncm91bmQ6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4xMik7LS15Zm0tY29sb3ItaGxqcy1zdWJzdDogIzQ0NDstLXlmbS1jb2xvci1obGpzLWNvbW1lbnQ6ICM4ODg4ODg7LS15Zm0tY29sb3ItaGxqcy1kZWxldGlvbjogIzg4MDAwMDstLXlmbS1jb2xvci1obGpzLXNlY3Rpb246ICM4ODAwMDA7LS15Zm0tY29sb3ItaGxqcy1wc2V1ZG86ICNCQzYwNjA7LS15Zm0tY29sb3ItaGxqcy1saXRlcmFsOiAjNzhBOTYwOy0teWZtLWNvbG9yLWhsanMtYWRkaXRpb246ICMzOTczMDA7LS15Zm0tY29sb3ItaGxqcy1tZXRhOiAjMWY3MTk5Oy0teWZtLWNvbG9yLWhsanMtbWV0YS1zdHJpbmc6ICM0ZDk5YmY7LS15Zm0tZm9udC1mYW1pbHktbW9ub3NwYWNlOiBcXFwiTWVubG9cXFwiLCBcXFwiTW9uYWNvXFxcIiwgXFxcIkNvbnNvbGFzXFxcIiwgXFxcIlVidW50dSBNb25vXFxcIiwgXFxcIkxpYmVyYXRpb24gTW9ub1xcXCIsIFxcXCJEZWphVnUgU2FucyBNb25vXFxcIiwgXFxcIkNvdXJpZXIgTmV3XFxcIiwgXFxcIkNvdXJpZXJcXFwiLCBtb25vc3BhY2U7LS15Zm0tZm9udC1mYW1pbHktc2FuczogXFxcIlNlZ29lIFVJXFxcIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIEVtb2ppXFxcIiwgXFxcIlNlZ29lIFVJIFN5bWJvbFxcXCJ9LnlmbSAqe2JveC1zaXppbmc6Ym9yZGVyLWJveH0ueWZtPio6bm90KGgyKTpub3QoaDMpOm5vdChoNCk6bm90KGg1KTpub3QoaDYpOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MCAhaW1wb3J0YW50fS55Zm0+KjpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MCAhaW1wb3J0YW50fS55Zm0gaDEsLnlmbSBoMiwueWZtIGgzLC55Zm0gaDQsLnlmbSBoNSwueWZtIGg2e21hcmdpbi1ib3R0b206MTVweDtmb250LXdlaWdodDo1MDB9LnlmbSBoMXtmb250LXNpemU6MzJweDtsaW5lLWhlaWdodDo0MHB4fS55Zm0gaDJ7Zm9udC1zaXplOjI0cHg7bGluZS1oZWlnaHQ6MjhweH0ueWZtIGgze2ZvbnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjI0cHh9LnlmbSBoNHtmb250LXNpemU6MTdweDtsaW5lLWhlaWdodDoyNHB4fS55Zm0gaDV7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MjBweH0ueWZtIGg2e2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjE4cHh9LnlmbSBhe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtjb2xvcjojMDI3YmYzO3RleHQtZGVjb3JhdGlvbjpub25lfS55Zm0gYTpob3ZlciwueWZtIGE6YWN0aXZle2NvbG9yOiMwMDQwODB9LnlmbSBhOm5vdChbaHJlZl0pe2NvbG9yOmluaGVyaXR9LnlmbSBzdHJvbmd7Zm9udC13ZWlnaHQ6NzAwfS55Zm0gaW1nLC55Zm0gc3Zne2JveC1zaXppbmc6Y29udGVudC1ib3g7bWF4LXdpZHRoOjEwMCU7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS55Zm0gaW1nW2FsaWduPXJpZ2h0XSwueWZtIHN2Z1thbGlnbj1yaWdodF17cGFkZGluZy1sZWZ0OjIwcHh9LnlmbSBpbWdbYWxpZ249bGVmdF0sLnlmbSBzdmdbYWxpZ249bGVmdF17cGFkZGluZy1yaWdodDoyMHB4fS55Zm0gaW1ne2JhY2tncm91bmQtY29sb3I6I2ZmZn0ueWZtIHN2Z3toZWlnaHQ6YXV0b30ueWZtIC5rYXRleCBzdmd7aGVpZ2h0OmluaXRpYWx9LnlmbSBpbWcrc21hbGx7ZGlzcGxheTpibG9ja30ueWZtIHAsLnlmbSBibG9ja3F1b3RlLC55Zm0gdWwsLnlmbSBvbCwueWZtIGRsLC55Zm0gdGFibGUsLnlmbSBwcmV7bWFyZ2luOjAgMCAxNXB4IDB9LnlmbSB1bCBwcmUsLnlmbSBvbCBwcmUsLnlmbSBkbCBwcmV7bWFyZ2luLXRvcDoxNXB4fS55Zm0gY29kZSwueWZtIGtiZCwueWZtIHByZXtmb250LWZhbWlseTp2YXIoLS15Zm0tZm9udC1mYW1pbHktbW9ub3NwYWNlKTtmb250LXNpemU6MWVtO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWx9LnlmbSBpbnB1dHttYXJnaW46MDtvdmVyZmxvdzp2aXNpYmxlO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdH0ueWZtIGlucHV0W3R5cGU9Y2hlY2tib3hde3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDoxcHg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MH0ueWZtIHRhYmxle2NvbG9yOiMzMzM7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEwMCU7d2lkdGg6YXV0bztvdmVyZmxvdzphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjA3KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO2JvcmRlci1zcGFjaW5nOjA7YmFja2dyb3VuZDojZmZmfS55Zm0gdGFibGUgdGhlYWQsLnlmbSB0YWJsZSB0cjpudGgtY2hpbGQoMm4pe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS55Zm0gdGFibGUgdGgsLnlmbSB0YWJsZSB0ZHtwYWRkaW5nOjEwcHggMTVweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnlmbSB0YWJsZSB0aHtmb250LXdlaWdodDo1MDA7dGV4dC1hbGlnbjpsZWZ0fS55Zm0gdGFibGUgdGR7d2hpdGUtc3BhY2U6bm9ybWFsO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS55Zm0gaHJ7Ym94LXNpemluZzpjb250ZW50LWJveDtoZWlnaHQ6LjI1ZW07cGFkZGluZzowO21hcmdpbjoxLjVlbSAwO292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA3KTtib3JkZXI6bm9uZX0ueWZtIGhyOjpiZWZvcmV7Y29udGVudDpcXFwiXFxcIjtkaXNwbGF5OnRhYmxlfS55Zm0gaHI6OmFmdGVye2NvbnRlbnQ6XFxcIlxcXCI7ZGlzcGxheTp0YWJsZTtjbGVhcjpib3RofS55Zm0gYmxvY2txdW90ZXtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLWxlZnQ6MTJweDtib3JkZXItbGVmdDozcHggc29saWQgIzAyN2JmM30ueWZtIGJsb2NrcXVvdGU+KjpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjB9LnlmbSBibG9ja3F1b3RlPio6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnlmbSBkbHtwYWRkaW5nOjB9LnlmbSBkbD4qOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH0ueWZtIGRsPio6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjB9LnlmbSBkbCBkdHttYXJnaW4tYm90dG9tOjVweDtmb250LXNpemU6MWVtO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOml0YWxpY30ueWZtIGRsIGRke21hcmdpbi1ib3R0b206MTVweDtwYWRkaW5nOjAgMTVweH0ueWZtIGRke21hcmdpbi1sZWZ0OjB9LnlmbSBkZD5vbDpmaXJzdC1jaGlsZCwueWZtIGRkPnVsOmZpcnN0LWNoaWxkLC55Zm0gZGQ+ZGQ6Zmlyc3QtY2hpbGR7cGFkZGluZy1sZWZ0OjB9LnlmbSB1bCwueWZtIG9se3BhZGRpbmctbGVmdDoyLjJlbX0ueWZtIHVsIHVsLC55Zm0gdWwgb2wsLnlmbSBvbCBvbCwueWZtIG9sIHVse21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjB9LnlmbTpub3QoLnlmbV9uby1saXN0LXJlc2V0KSBvbHtsaXN0LXN0eWxlLXR5cGU6bm9uZTtjb3VudGVyLXJlc2V0Omxpc3R9LnlmbTpub3QoLnlmbV9uby1saXN0LXJlc2V0KSBvbD5saXtwb3NpdGlvbjpyZWxhdGl2ZTtjb3VudGVyLWluY3JlbWVudDpsaXN0fS55Zm06bm90KC55Zm1fbm8tbGlzdC1yZXNldCkgb2w+bGk6OmJlZm9yZXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMDAlO21hcmdpbi1yaWdodDo0cHg7Y29udGVudDpjb3VudGVycyhsaXN0LCBcXFwiLlxcXCIpIFxcXCIuIFxcXCJ9LnlmbSBsaXt3b3JkLXdyYXA6YnJlYWstd29yZH0ueWZtIGxpK2xpe21hcmdpbi10b3A6LjMzZW19LnlmbSBsaSBwLC55Zm0gbGkgYmxvY2txdW90ZXttYXJnaW4tdG9wOjE1cHh9LnlmbSBjb2Rle3BhZGRpbmc6LjFlbSAuNGVtIC4xNWVtO2JhY2tncm91bmQtY29sb3I6cmdiYSgxMDcsMTMyLDE1MywuMTIpO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtc2l6ZTouODc1ZW07d2hpdGUtc3BhY2U6bm9ybWFsO2NvbG9yOiMzYjYwODB9LnlmbSBwcmV7d29yZC13cmFwOm5vcm1hbH0ueWZtIHRhYmxlIGNvZGV7d2hpdGUtc3BhY2U6bm93cmFwfS55Zm0gcHJlICogY29kZXtkaXNwbGF5OmlubGluZTtwYWRkaW5nOjA7bWFyZ2luOjA7b3ZlcmZsb3c6dmlzaWJsZTt3b3JkLXdyYXA6bm9ybWFsO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXI6MDtjb2xvcjpyZ2JhKDAsMCwwLC43KX0ueWZtIHByZT5jb2Rle2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoxNnB4O292ZXJmbG93OmF1dG87YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwNywxMzIsMTUzLC4xMik7Y29sb3I6cmdiYSgwLDAsMCwuNyk7d2hpdGUtc3BhY2U6cHJlfS55Zm0gc3VwLC55Zm0gc3Vie2xpbmUtaGVpZ2h0OjB9LnlmbSAueWZtLW5vdGV7bWF4LXdpZHRoOjEyOTZweDttYXJnaW46MjBweCAwO3BhZGRpbmc6MjBweCAyMHB4IDIwcHggNjRweDtib3JkZXItcmFkaXVzOjEwcHh9LnlmbSAueWZtLW5vdGUgLnlmbS1ub3RlLXRpdGxle2ZvbnQtd2VpZ2h0OjcwMH0ueWZtIC55Zm0tbm90ZT5we21hcmdpbjowIDAgMTBweCAwfS55Zm0gLnlmbS1ub3RlPnA6Zmlyc3QtY2hpbGQ6OmJlZm9yZXtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDttYXJnaW4tdG9wOi0ycHg7bWFyZ2luLWxlZnQ6LTQ0cHg7cGFkZGluZy1yaWdodDoyMHB4O2Zsb2F0OmxlZnR9LnlmbSAueWZtLW5vdGU+cDpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0ueWZtIC55Zm0tbm90ZS55Zm0tYWNjZW50LWluZm8+cDpmaXJzdC1jaGlsZDo6YmVmb3Jle2NvbnRlbnQ6dXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKX0ueWZtIC55Zm0tbm90ZS55Zm0tYWNjZW50LXRpcD5wOmZpcnN0LWNoaWxkOjpiZWZvcmV7Y29udGVudDp1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fICsgXCIpfS55Zm0gLnlmbS1ub3RlLnlmbS1hY2NlbnQtYWxlcnQ+cDpmaXJzdC1jaGlsZDo6YmVmb3Jle2NvbnRlbnQ6dXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMl9fXyArIFwiKX0ueWZtIC55Zm0tbm90ZS55Zm0tYWNjZW50LXdhcm5pbmc+cDpmaXJzdC1jaGlsZDo6YmVmb3Jle2NvbnRlbnQ6dXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfM19fXyArIFwiKX0ueWZtIC55Zm0tbm90ZS55Zm0tYWNjZW50LWluZm97YmFja2dyb3VuZDpyZ2JhKDIsMTIzLDI0MywuMDgpfS55Zm0gLnlmbS1ub3RlLnlmbS1hY2NlbnQtdGlwe2JhY2tncm91bmQ6cmdiYSg2MywyMDEsNDYsLjEpfS55Zm0gLnlmbS1ub3RlLnlmbS1hY2NlbnQtYWxlcnR7YmFja2dyb3VuZDpyZ2JhKDIzNSw1MCwzOCwuMDgpfS55Zm0gLnlmbS1ub3RlLnlmbS1hY2NlbnQtd2FybmluZ3tiYWNrZ3JvdW5kOnJnYmEoMjU1LDEzNiwwLC4xNSl9LnlmbSBoMSAueWZtLWFuY2hvciwueWZtIGgyIC55Zm0tYW5jaG9yLC55Zm0gaDMgLnlmbS1hbmNob3IsLnlmbSBoNCAueWZtLWFuY2hvciwueWZtIGg1IC55Zm0tYW5jaG9yLC55Zm0gaDYgLnlmbS1hbmNob3J7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MjRweDtwYWRkaW5nLXJpZ2h0OjRweDttYXJnaW4tbGVmdDotMjRweDtmbG9hdDpsZWZ0O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxOHB4fS55Zm0gaDEgLnlmbS1hbmNob3I6OmJlZm9yZSwueWZtIGgyIC55Zm0tYW5jaG9yOjpiZWZvcmUsLnlmbSBoMyAueWZtLWFuY2hvcjo6YmVmb3JlLC55Zm0gaDQgLnlmbS1hbmNob3I6OmJlZm9yZSwueWZtIGg1IC55Zm0tYW5jaG9yOjpiZWZvcmUsLnlmbSBoNiAueWZtLWFuY2hvcjo6YmVmb3Jle2NvbnRlbnQ6XFxcIiNcXFwiO3Zpc2liaWxpdHk6aGlkZGVufS55Zm0gaDE6aG92ZXIgLnlmbS1hbmNob3I6OmJlZm9yZSwueWZtIGgyOmhvdmVyIC55Zm0tYW5jaG9yOjpiZWZvcmUsLnlmbSBoMzpob3ZlciAueWZtLWFuY2hvcjo6YmVmb3JlLC55Zm0gaDQ6aG92ZXIgLnlmbS1hbmNob3I6OmJlZm9yZSwueWZtIGg1OmhvdmVyIC55Zm0tYW5jaG9yOjpiZWZvcmUsLnlmbSBoNjpob3ZlciAueWZtLWFuY2hvcjo6YmVmb3Jle3Zpc2liaWxpdHk6dmlzaWJsZX0ueWZtIC55Zm0tdGFic3ttYXJnaW4tYm90dG9tOjE1cHh9LnlmbSAueWZtLXRhYnMgb2x7Y291bnRlci1yZXNldDp0YWJzLWxpc3R9LnlmbSAueWZtLXRhYnMgb2w+bGl7Y291bnRlci1pbmNyZW1lbnQ6dGFicy1saXN0fS55Zm0gLnlmbS10YWJzIG9sPmxpOjpiZWZvcmV7Y29udGVudDpjb3VudGVycyh0YWJzLWxpc3QsIFxcXCIuXFxcIikgXFxcIi4gXFxcIn0ueWZtIC55Zm0tdGFiLWxpc3R7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi1ib3R0b206MTVweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4wNyl9LnlmbSAueWZtLXRhYnttYXJnaW4tYm90dG9tOi0xcHg7bWFyZ2luLXJpZ2h0OjIwcHg7Ym9yZGVyLWJvdHRvbToycHggc29saWQgcmdiYSgwLDAsMCwwKTtwYWRkaW5nOjZweCAwIDdweCAwO2ZvbnQtd2VpZ2h0OjcwMDtvdXRsaW5lOm5vbmU7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3doaXRlLXNwYWNlOmJyZWFrLXNwYWNlc30ueWZtIC55Zm0tdGFiOmxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LnlmbSAueWZtLXRhYjpob3ZlciwueWZtIC55Zm0tdGFiOmFjdGl2ZXtjb2xvcjojMDA0MDgwfS55Zm0gLnlmbS10YWIuYWN0aXZle2JvcmRlci1ib3R0b20tY29sb3I6IzAyN2JmM30ueWZtIC55Zm0tdGFiLXBhbmVse2Rpc3BsYXk6bm9uZX0ueWZtIC55Zm0tdGFiLXBhbmVsOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MCAhaW1wb3J0YW50fS55Zm0gLnlmbS10YWItcGFuZWw6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjAgIWltcG9ydGFudH0ueWZtIC55Zm0tdGFiLXBhbmVsLmFjdGl2ZXtkaXNwbGF5OmJsb2NrfS55Zm0gLmhsanN7ZGlzcGxheTpibG9jaztvdmVyZmxvdy14OmF1dG87cGFkZGluZzoxNnB4O2JhY2tncm91bmQ6cmdiYSgxMDcsMTMyLDE1MywuMTIpO2JhY2tncm91bmQ6dmFyKC0teWZtLWNvbG9yLWhsanMtYmFja2dyb3VuZCl9LnlmbSAuaGxqcywueWZtIC5obGpzLXN1YnN0e2NvbG9yOiM0NDQ7Y29sb3I6dmFyKC0teWZtLWNvbG9yLWhsanMtc3Vic3QpfS55Zm0gLmhsanMtY29tbWVudHtjb2xvcjojODg4O2NvbG9yOnZhcigtLXlmbS1jb2xvci1obGpzLWNvbW1lbnQpfS55Zm0gLmhsanMta2V5d29yZCwueWZtIC5obGpzLWF0dHJpYnV0ZSwueWZtIC5obGpzLXNlbGVjdG9yLXRhZywueWZtIC5obGpzLW1ldGEta2V5d29yZCwueWZtIC5obGpzLWRvY3RhZywueWZtIC5obGpzLW5hbWV7Zm9udC13ZWlnaHQ6Ym9sZH0ueWZtIC5obGpzLXR5cGUsLnlmbSAuaGxqcy1zdHJpbmcsLnlmbSAuaGxqcy1udW1iZXIsLnlmbSAuaGxqcy1zZWxlY3Rvci1pZCwueWZtIC5obGpzLXNlbGVjdG9yLWNsYXNzLC55Zm0gLmhsanMtcXVvdGUsLnlmbSAuaGxqcy10ZW1wbGF0ZS10YWcsLnlmbSAuaGxqcy1kZWxldGlvbntjb2xvcjojODAwO2NvbG9yOnZhcigtLXlmbS1jb2xvci1obGpzLWRlbGV0aW9uKX0ueWZtIC5obGpzLXRpdGxlLC55Zm0gLmhsanMtc2VjdGlvbntjb2xvcjojODAwO2NvbG9yOnZhcigtLXlmbS1jb2xvci1obGpzLXNlY3Rpb24pO2ZvbnQtd2VpZ2h0OmJvbGR9LnlmbSAuaGxqcy1yZWdleHAsLnlmbSAuaGxqcy1zeW1ib2wsLnlmbSAuaGxqcy12YXJpYWJsZSwueWZtIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLC55Zm0gLmhsanMtbGluaywueWZtIC5obGpzLXNlbGVjdG9yLWF0dHIsLnlmbSAuaGxqcy1zZWxlY3Rvci1wc2V1ZG97Y29sb3I6I2JjNjA2MDtjb2xvcjp2YXIoLS15Zm0tY29sb3ItaGxqcy1wc2V1ZG8pfS55Zm0gLmhsanMtbGl0ZXJhbHtjb2xvcjojNzhhOTYwO2NvbG9yOnZhcigtLXlmbS1jb2xvci1obGpzLWxpdGVyYWwpfS55Zm0gLmhsanMtYnVpbHRfaW4sLnlmbSAuaGxqcy1idWxsZXQsLnlmbSAuaGxqcy1jb2RlLC55Zm0gLmhsanMtYWRkaXRpb257Y29sb3I6IzM5NzMwMDtjb2xvcjp2YXIoLS15Zm0tY29sb3ItaGxqcy1hZGRpdGlvbil9LnlmbSAuaGxqcy1tZXRhe2NvbG9yOiMxZjcxOTk7Y29sb3I6dmFyKC0teWZtLWNvbG9yLWhsanMtbWV0YSl9LnlmbSAuaGxqcy1tZXRhLXN0cmluZ3tjb2xvcjojNGQ5OWJmO2NvbG9yOnZhcigtLXlmbS1jb2xvci1obGpzLW1ldGEtc3RyaW5nKX0ueWZtIC5obGpzLWVtcGhhc2lze2ZvbnQtc3R5bGU6aXRhbGljfS55Zm0gLmhsanMtc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGR9LnlmbS1jbGlwYm9hcmR7cG9zaXRpb246cmVsYXRpdmV9LnlmbS1jbGlwYm9hcmQ6aG92ZXIgLnlmbS1jbGlwYm9hcmQtYnV0dG9ue2Rpc3BsYXk6YmxvY2t9LnlmbS1jbGlwYm9hcmQ+cHJle2JvcmRlci1yYWRpdXM6MTBweDtvdmVyZmxvdzpoaWRkZW59LnlmbS1jbGlwYm9hcmQtYnV0dG9ue2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtjdXJzb3I6cG9pbnRlcjt0b3A6MTZweDtyaWdodDoxNnB4O3otaW5kZXg6MX1AbWVkaWEgcHJpbnR7LnRhYi1saXN0e2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS50YWItcGFuZWw6YmVmb3Jle2NvbnRlbnQ6YXR0cihkYXRhLXRpdGxlKTttYXJnaW4tYm90dG9tOi0xcHg7bWFyZ2luLXJpZ2h0OjIwcHg7Ym9yZGVyLWJvdHRvbToycHggc29saWQgcmdiYSgwLDAsMCwwKTtsaW5lLWhlaWdodDozM3B4O2ZvbnQtd2VpZ2h0OjcwMDtvdXRsaW5lOjA7Y3Vyc29yOnBvaW50ZXJ9LnRhYi1wYW5lbHtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnR9fS55Zm0tY3V0LXRpdGxle2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwYWRkaW5nOjVweCAwIDVweCAzMHB4fS55Zm0tY3V0LXRpdGxlOmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO3otaW5kZXg6MTAwO2xlZnQ6MDt0b3A6NTAlO2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfNF9fXyArIFwiKTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoLTkwZGVnKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZTtoZWlnaHQ6MjBweDt3aWR0aDoyMHB4O3Bvc2l0aW9uOmFic29sdXRlfS55Zm0tY3V0LWNvbnRlbnR7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246aGVpZ2h0IC4zcyBlYXNlLWluLW91dH0ueWZtLWN1dC5vcGVuPi55Zm0tY3V0LWNvbnRlbnR7cGFkZGluZzo1cHggMCAxNXB4IDMwcHg7aGVpZ2h0OmF1dG99LnlmbS1jdXQub3Blbj4ueWZtLWN1dC10aXRsZTpiZWZvcmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9LnlmbS1maWxlX19pY29uey0tLXlmbS1maWxlLWljb24taW1nOiB2YXIoLS15Zm0tZmlsZS1pY29uLCB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF81X19fICsgXCIpKTtkaXNwbGF5OmlubGluZS1ibG9jazstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7d2lkdGg6MTZweDttYXJnaW46MCAycHg7Y29sb3I6dmFyKC0teWZtLWZpbGUtaWNvbi1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjcpKTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1zaXplOjEwMCU7LXdlYmtpdC1tYXNrLWltYWdlOnZhcigtLS15Zm0tZmlsZS1pY29uLWltZyk7bWFzay1pbWFnZTp2YXIoLS0teWZtLWZpbGUtaWNvbi1pbWcpOy13ZWJraXQtbWFzay1wb3NpdGlvbjpjZW50ZXI7bWFzay1wb3NpdGlvbjpjZW50ZXI7LXdlYmtpdC1tYXNrLXJlcGVhdDpuby1yZXBlYXQ7bWFzay1yZXBlYXQ6bm8tcmVwZWF0fS55Zm0tZmlsZV9faWNvbjo6YmVmb3Jle2NvbnRlbnQ6XFxcIsKgXFxcIn0ueWZtLXRlcm1fdGl0bGV7Y29sb3I6IzAyN2JmMztjdXJzb3I6cG9pbnRlcjtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQ7Zm9udC1zaXplOmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtmb250LXN0eWxlOm5vcm1hbH0ueWZtLXRlcm1fdGl0bGU6aG92ZXJ7Y29sb3I6IzAwNDA4MH0ueWZtLXRlcm1fZGZue3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDt3aWR0aDotd2Via2l0LWZpdC1jb250ZW50O3dpZHRoOi1tb3otZml0LWNvbnRlbnQ7d2lkdGg6Zml0LWNvbnRlbnQ7bWF4LXdpZHRoOjQ1MHB4O3Zpc2liaWxpdHk6aGlkZGVuO29wYWNpdHk6MDtwYWRkaW5nOjEwcHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7Zm9udC1zdHlsZTpub3JtYWw7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzowIDhweCAyMHB4IHJnYmEoMCwwLDAsLjE1KTtvdXRsaW5lOm5vbmV9QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpey55Zm0tdGVybV9kZm57bWF4LXdpZHRoOjgwJX19LnlmbS10ZXJtX2Rmbjo6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMTt0b3A6MDtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtib3JkZXItcmFkaXVzOmluaGVyaXQ7Ym94LXNoYWRvdzowIDAgMCAxcHggI2U1ZTVlNX0ueWZtLXRlcm1fZGZuLm9wZW57dmlzaWJpbGl0eTp2aXNpYmxlOy13ZWJraXQtYW5pbWF0aW9uLW5hbWU6cG9wdXA7YW5pbWF0aW9uLW5hbWU6cG9wdXA7LXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246LjFzO2FuaW1hdGlvbi1kdXJhdGlvbjouMXM7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0O2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7LXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzO2FuaW1hdGlvbi1maWxsLW1vZGU6Zm9yd2FyZHN9QC13ZWJraXQta2V5ZnJhbWVzIHBvcHVwezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KX0xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBwb3B1cHswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTBweCl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCl9fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZG9jLXRvb2xzL3RyYW5zZm9ybS9kaXN0L2Nzcy95Zm0uY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLEtBQUEsdUNBQ0UsQ0FBQSxjQUNBLENBQUEsZ0JBQ0EsQ0FBQSxvQkFDQSxDQUFBLG9CQUNBLENBQUEsc0RBQ0EsQ0FBQSw0QkFDQSxDQUFBLGlDQUNBLENBQUEsa0NBQ0EsQ0FBQSxpQ0FDQSxDQUFBLGdDQUNBLENBQUEsaUNBQ0EsQ0FBQSxrQ0FDQSxDQUFBLDhCQUNBLENBQUEscUNBQ0EsQ0FBQSxxSkFDQSxDQUFBLDBIQUNBLENBQUEsT0FDQSxxQkFDRSxDQUFBLDJEQUNGLHVCQUNFLENBQUEsa0JBQ0YsMEJBQ0UsQ0FBQSxnREFDRixrQkFDRSxDQUFBLGVBQ0EsQ0FBQSxRQUNGLGNBQ0UsQ0FBQSxnQkFDQSxDQUFBLFFBQ0YsY0FDRSxDQUFBLGdCQUNBLENBQUEsUUFDRixjQUNFLENBQUEsZ0JBQ0EsQ0FBQSxRQUNGLGNBQ0UsQ0FBQSxnQkFDQSxDQUFBLFFBQ0YsY0FDRSxDQUFBLGdCQUNBLENBQUEsUUFDRixjQUNFLENBQUEsZ0JBQ0EsQ0FBQSxPQUNGLDhCQUNFLENBQUEsYUFDQSxDQUFBLG9CQUNBLENBQUEsMkJBQ0EsYUFDRSxDQUFBLG1CQUNGLGFBQ0UsQ0FBQSxZQUNKLGVBQ0UsQ0FBQSxrQkFDRixzQkFDRSxDQUFBLGNBQ0EsQ0FBQSxXQUNBLENBQUEscUJBQ0EsQ0FBQSw0Q0FDQSxpQkFD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UUFDQSxDQUFBLE1BQ0EsQ0FBQSxxQkFDQSxDQUFBLDRCQUNBLENBQUEsbUJBQ0Ysa0JBQ0UsQ0FBQSw0QkFDQSxDQUFBLG9CQUNBLENBQUEsOEJBQ0EsQ0FBQSxzQkFDQSxDQUFBLDBDQUNBLENBQUEsa0NBQ0EsQ0FBQSxvQ0FDQSxDQUFBLDRCQUNBLENBQUEseUJBRUosR0FDRSxTQUNFLENBQUEsMEJBQ0EsQ0FBQSxLQUNGLFNBQ0UsQ0FBQSx1QkFDQSxDQUFBLENBQUEsaUJBRUosR0FDRSxTQUNFLENBQUEsMEJBQ0EsQ0FBQSxLQUNGLFNBQ0UsQ0FBQSx1QkFDQSxDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi55Zm0ge1xcbiAgZm9udC1mYW1pbHk6IHZhcigtLXlmbS1mb250LWZhbWlseS1zYW5zKTtcXG4gIGZvbnQtc2l6ZTogMTVweDtcXG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC43KTtcXG4gIC0teWZtLWNvbG9yLWhsanMtYmFja2dyb3VuZDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjEyKTtcXG4gIC0teWZtLWNvbG9yLWhsanMtc3Vic3Q6ICM0NDQ7XFxuICAtLXlmbS1jb2xvci1obGpzLWNvbW1lbnQ6ICM4ODg4ODg7XFxuICAtLXlmbS1jb2xvci1obGpzLWRlbGV0aW9uOiAjODgwMDAwO1xcbiAgLS15Zm0tY29sb3ItaGxqcy1zZWN0aW9uOiAjODgwMDAwO1xcbiAgLS15Zm0tY29sb3ItaGxqcy1wc2V1ZG86ICNCQzYwNjA7XFxuICAtLXlmbS1jb2xvci1obGpzLWxpdGVyYWw6ICM3OEE5NjA7XFxuICAtLXlmbS1jb2xvci1obGpzLWFkZGl0aW9uOiAjMzk3MzAwO1xcbiAgLS15Zm0tY29sb3ItaGxqcy1tZXRhOiAjMWY3MTk5O1xcbiAgLS15Zm0tY29sb3ItaGxqcy1tZXRhLXN0cmluZzogIzRkOTliZjtcXG4gIC0teWZtLWZvbnQtZmFtaWx5LW1vbm9zcGFjZTogXFxcIk1lbmxvXFxcIiwgXFxcIk1vbmFjb1xcXCIsIFxcXCJDb25zb2xhc1xcXCIsIFxcXCJVYnVudHUgTW9ub1xcXCIsIFxcXCJMaWJlcmF0aW9uIE1vbm9cXFwiLCBcXFwiRGVqYVZ1IFNhbnMgTW9ub1xcXCIsIFxcXCJDb3VyaWVyIE5ld1xcXCIsIFxcXCJDb3VyaWVyXFxcIiwgbW9ub3NwYWNlO1xcbiAgLS15Zm0tZm9udC1mYW1pbHktc2FuczogJ1NlZ29lIFVJJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCc7IH1cXG4gIC55Zm0gKiB7XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cXG4gIC55Zm0gPiAqOm5vdChoMik6bm90KGgzKTpub3QoaDQpOm5vdChoNSk6bm90KGg2KTpmaXJzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxcbiAgLnlmbSA+ICo6bGFzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxcbiAgLnlmbSBoMSwgLnlmbSBoMiwgLnlmbSBoMywgLnlmbSBoNCwgLnlmbSBoNSwgLnlmbSBoNiB7XFxuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7IH1cXG4gIC55Zm0gaDEge1xcbiAgICBmb250LXNpemU6IDMycHg7XFxuICAgIGxpbmUtaGVpZ2h0OiA0MHB4OyB9XFxuICAueWZtIGgyIHtcXG4gICAgZm9udC1zaXplOiAyNHB4O1xcbiAgICBsaW5lLWhlaWdodDogMjhweDsgfVxcbiAgLnlmbSBoMyB7XFxuICAgIGZvbnQtc2l6ZTogMjBweDtcXG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7IH1cXG4gIC55Zm0gaDQge1xcbiAgICBmb250LXNpemU6IDE3cHg7XFxuICAgIGxpbmUtaGVpZ2h0OiAyNHB4OyB9XFxuICAueWZtIGg1IHtcXG4gICAgZm9udC1zaXplOiAxNXB4O1xcbiAgICBsaW5lLWhlaWdodDogMjBweDsgfVxcbiAgLnlmbSBoNiB7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgbGluZS1oZWlnaHQ6IDE4cHg7IH1cXG4gIC55Zm0gYSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgICBjb2xvcjogIzAyN2JmMztcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XFxuICAgIC55Zm0gYTpob3ZlciwgLnlmbSBhOmFjdGl2ZSB7XFxuICAgICAgY29sb3I6ICMwMDQwODA7IH1cXG4gICAgLnlmbSBhOm5vdChbaHJlZl0pIHtcXG4gICAgICBjb2xvcjogaW5oZXJpdDsgfVxcbiAgLnlmbSBzdHJvbmcge1xcbiAgICBmb250LXdlaWdodDogNzAwOyB9XFxuICAueWZtIGltZywgLnlmbSBzdmcge1xcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gICAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cXG4gICAgLnlmbSBpbWdbYWxpZ249cmlnaHRdLCAueWZtIHN2Z1thbGlnbj1yaWdodF0ge1xcbiAgICAgIHBhZGRpbmctbGVmdDogMjBweDsgfVxcbiAgICAueWZtIGltZ1thbGlnbj1sZWZ0XSwgLnlmbSBzdmdbYWxpZ249bGVmdF0ge1xcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH1cXG4gIC55Zm0gaW1nIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxcbiAgLnlmbSBzdmcge1xcbiAgICBoZWlnaHQ6IGF1dG87IH1cXG4gIC55Zm0gLmthdGV4IHN2ZyB7XFxuICAgIGhlaWdodDogaW5pdGlhbDsgfVxcbiAgLnlmbSBpbWcgKyBzbWFsbCB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuICAueWZtIHAsXFxuICAueWZtIGJsb2NrcXVvdGUsXFxuICAueWZtIHVsLFxcbiAgLnlmbSBvbCxcXG4gIC55Zm0gZGwsXFxuICAueWZtIHRhYmxlLFxcbiAgLnlmbSBwcmUge1xcbiAgICBtYXJnaW46IDAgMCAxNXB4IDA7IH1cXG4gIC55Zm0gdWwgcHJlLCAueWZtIG9sIHByZSwgLnlmbSBkbCBwcmUge1xcbiAgICBtYXJnaW4tdG9wOiAxNXB4OyB9XFxuICAueWZtIGNvZGUsXFxuICAueWZtIGtiZCxcXG4gIC55Zm0gcHJlIHtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXlmbS1mb250LWZhbWlseS1tb25vc3BhY2UpO1xcbiAgICBmb250LXNpemU6IDFlbTtcXG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBub3JtYWw7IH1cXG4gIC55Zm0gaW5wdXQge1xcbiAgICBtYXJnaW46IDA7XFxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsgfVxcbiAgICAueWZtIGlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICB0b3A6IDFweDtcXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICAgIHBhZGRpbmc6IDA7IH1cXG4gIC55Zm0gdGFibGUge1xcbiAgICBjb2xvcjogIzMzMzMzMztcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICBtYXgtd2lkdGg6IDEwMCU7XFxuICAgIHdpZHRoOiBhdXRvO1xcbiAgICBvdmVyZmxvdzogYXV0bztcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICB6LWluZGV4OiAxO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDcpO1xcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XFxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XFxuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmOyB9XFxuICAgIC55Zm0gdGFibGUgdGhlYWQsIC55Zm0gdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAyKTsgfVxcbiAgICAueWZtIHRhYmxlIHRoLCAueWZtIHRhYmxlIHRkIHtcXG4gICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XFxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB9XFxuICAgIC55Zm0gdGFibGUgdGgge1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgICAgdGV4dC1hbGlnbjogbGVmdDsgfVxcbiAgICAueWZtIHRhYmxlIHRkIHtcXG4gICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxcbiAgLnlmbSBociB7XFxuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgICBoZWlnaHQ6IDAuMjVlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAxLjVlbSAwO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDcpO1xcbiAgICBib3JkZXI6IG5vbmU7IH1cXG4gICAgLnlmbSBocjo6YmVmb3JlIHtcXG4gICAgICBjb250ZW50OiAnJztcXG4gICAgICBkaXNwbGF5OiB0YWJsZTsgfVxcbiAgICAueWZtIGhyOjphZnRlciB7XFxuICAgICAgY29udGVudDogJyc7XFxuICAgICAgZGlzcGxheTogdGFibGU7XFxuICAgICAgY2xlYXI6IGJvdGg7IH1cXG4gIC55Zm0gYmxvY2txdW90ZSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMwMjdiZjM7IH1cXG4gICAgLnlmbSBibG9ja3F1b3RlID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgICAgbWFyZ2luLXRvcDogMDsgfVxcbiAgICAueWZtIGJsb2NrcXVvdGUgPiAqOmxhc3QtY2hpbGQge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH1cXG4gIC55Zm0gZGwge1xcbiAgICBwYWRkaW5nOiAwOyB9XFxuICAgIC55Zm0gZGwgPiAqOmZpcnN0LWNoaWxkIHtcXG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XFxuICAgIC55Zm0gZGwgPiAqOmxhc3QtY2hpbGQge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7IH1cXG4gICAgLnlmbSBkbCBkdCB7XFxuICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xcbiAgICAgIGZvbnQtc2l6ZTogMWVtO1xcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgICAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuICAgIC55Zm0gZGwgZGQge1xcbiAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XFxuICAgICAgcGFkZGluZzogMCAxNXB4OyB9XFxuICAueWZtIGRkIHtcXG4gICAgbWFyZ2luLWxlZnQ6IDA7IH1cXG4gICAgLnlmbSBkZCA+IG9sOmZpcnN0LWNoaWxkLFxcbiAgICAueWZtIGRkID4gdWw6Zmlyc3QtY2hpbGQsXFxuICAgIC55Zm0gZGQgPiBkZDpmaXJzdC1jaGlsZCB7XFxuICAgICAgcGFkZGluZy1sZWZ0OiAwOyB9XFxuICAueWZtIHVsLCAueWZtIG9sIHtcXG4gICAgcGFkZGluZy1sZWZ0OiAyLjJlbTsgfVxcbiAgLnlmbSB1bCB1bCxcXG4gIC55Zm0gdWwgb2wsXFxuICAueWZtIG9sIG9sLFxcbiAgLnlmbSBvbCB1bCB7XFxuICAgIG1hcmdpbi10b3A6IDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7IH1cXG4gIC55Zm06bm90KC55Zm1fbm8tbGlzdC1yZXNldCkgb2wge1xcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XFxuICAgIGNvdW50ZXItcmVzZXQ6IGxpc3Q7IH1cXG4gICAgLnlmbTpub3QoLnlmbV9uby1saXN0LXJlc2V0KSBvbCA+IGxpIHtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IGxpc3Q7IH1cXG4gICAgICAueWZtOm5vdCgueWZtX25vLWxpc3QtcmVzZXQpIG9sID4gbGk6OmJlZm9yZSB7XFxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgICByaWdodDogMTAwJTtcXG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xcbiAgICAgICAgY29udGVudDogY291bnRlcnMobGlzdCwgXFxcIi5cXFwiKSBcXFwiLiBcXFwiOyB9XFxuICAueWZtIGxpIHtcXG4gICAgd29yZC13cmFwOiBicmVhay13b3JkOyB9XFxuICAueWZtIGxpICsgbGkge1xcbiAgICBtYXJnaW4tdG9wOiAwLjMzZW07IH1cXG4gIC55Zm0gbGkgcCxcXG4gIC55Zm0gbGkgYmxvY2txdW90ZSB7XFxuICAgIG1hcmdpbi10b3A6IDE1cHg7IH1cXG4gIC55Zm0gY29kZSB7XFxuICAgIHBhZGRpbmc6IDAuMWVtIDAuNGVtIDAuMTVlbTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjEyKTtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBmb250LXNpemU6IDAuODc1ZW07XFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxuICAgIGNvbG9yOiAjM2I2MDgwOyB9XFxuICAueWZtIHByZSB7XFxuICAgIHdvcmQtd3JhcDogbm9ybWFsOyB9XFxuICAueWZtIHRhYmxlIGNvZGUge1xcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyB9XFxuICAueWZtIHByZSAqIGNvZGUge1xcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICAgIHdvcmQtd3JhcDogbm9ybWFsO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpOyB9XFxuICAueWZtIHByZSA+IGNvZGUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgcGFkZGluZzogMTZweDtcXG4gICAgb3ZlcmZsb3c6IGF1dG87XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTA3LCAxMzIsIDE1MywgMC4xMik7XFxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7XFxuICAgIHdoaXRlLXNwYWNlOiBwcmU7IH1cXG4gIC55Zm0gc3VwLCAueWZtIHN1YiB7XFxuICAgIGxpbmUtaGVpZ2h0OiAwOyB9XFxuXFxuLnlmbSAueWZtLW5vdGUge1xcbiAgbWF4LXdpZHRoOiAxMjk2cHg7XFxuICBtYXJnaW46IDIwcHggMDtcXG4gIHBhZGRpbmc6IDIwcHggMjBweCAyMHB4IDY0cHg7XFxuICBib3JkZXItcmFkaXVzOiAxMHB4OyB9XFxuICAueWZtIC55Zm0tbm90ZSAueWZtLW5vdGUtdGl0bGUge1xcbiAgICBmb250LXdlaWdodDogNzAwOyB9XFxuICAueWZtIC55Zm0tbm90ZSA+IHAge1xcbiAgICBtYXJnaW46IDAgMCAxMHB4IDA7IH1cXG4gICAgLnlmbSAueWZtLW5vdGUgPiBwOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xcbiAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAyNHB4O1xcbiAgICAgIGhlaWdodDogMjRweDtcXG4gICAgICBtYXJnaW4tdG9wOiAtMnB4O1xcbiAgICAgIG1hcmdpbi1sZWZ0OiAtNDRweDtcXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xcbiAgICAgIGZsb2F0OiBsZWZ0OyB9XFxuICAgIC55Zm0gLnlmbS1ub3RlID4gcDpsYXN0LWNoaWxkIHtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwOyB9XFxuICAueWZtIC55Zm0tbm90ZS55Zm0tYWNjZW50LWluZm8gPiBwOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xcbiAgICBjb250ZW50OiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjRcXFwiIGhlaWdodD1cXFwiMjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNiAxNlxcXCIlM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI4XFxcIiByPVxcXCI4XFxcIiBmaWxsPVxcXCJyZ2IoMiwxMjMsMjQzKVxcXCIvJTNFJTNDcmVjdCB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCI1XFxcIiB4PVxcXCI3LjVcXFwiIHk9XFxcIjYuNVxcXCIgc3Ryb2tlPVxcXCIlMjNmZmZcXFwiIHJ4PVxcXCIuNVxcXCIvJTNFJTNDY2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiNFxcXCIgcj1cXFwiMVxcXCIgZmlsbD1cXFwiJTIzZmZmXFxcIi8lM0UlM0Mvc3ZnJTNFJyk7IH1cXG4gIC55Zm0gLnlmbS1ub3RlLnlmbS1hY2NlbnQtdGlwID4gcDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcXG4gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiJTNFJTNDY2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiOFxcXCIgcj1cXFwiOFxcXCIgZmlsbD1cXFwicmdiKDg2LDE4OSwxMDMpXFxcIi8lM0UlM0NyZWN0IHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjVcXFwiIHg9XFxcIjcuNVxcXCIgeT1cXFwiNi41XFxcIiBzdHJva2U9XFxcIiUyM2ZmZlxcXCIgcng9XFxcIi41XFxcIi8lM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI0XFxcIiByPVxcXCIxXFxcIiBmaWxsPVxcXCIlMjNmZmZcXFwiLyUzRSUzQy9zdmclM0UnKTsgfVxcbiAgLnlmbSAueWZtLW5vdGUueWZtLWFjY2VudC1hbGVydCA+IHA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyNFxcXCIgaGVpZ2h0PVxcXCIyNFxcXCIgdmlld0JveD1cXFwiMCAwIDE2IDE2XFxcIiUzRSUzQ2NpcmNsZSBjeD1cXFwiOFxcXCIgY3k9XFxcIjhcXFwiIHI9XFxcIjhcXFwiIGZpbGw9XFxcInJnYigyNTUsNzAsNjkpXFxcIi8lM0UlM0NyZWN0IHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjVcXFwiIHg9XFxcIjcuNVxcXCIgeT1cXFwiNi41XFxcIiBzdHJva2U9XFxcIiUyM2ZmZlxcXCIgcng9XFxcIi41XFxcIi8lM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI0XFxcIiByPVxcXCIxXFxcIiBmaWxsPVxcXCIlMjNmZmZcXFwiLyUzRSUzQy9zdmclM0UnKTsgfVxcbiAgLnlmbSAueWZtLW5vdGUueWZtLWFjY2VudC13YXJuaW5nID4gcDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcXG4gICAgY29udGVudDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTYgMTZcXFwiJTNFJTNDY2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiOFxcXCIgcj1cXFwiOFxcXCIgZmlsbD1cXFwicmdiKDI0MSwxNDksMjQpXFxcIi8lM0UlM0NyZWN0IHdpZHRoPVxcXCIxXFxcIiBoZWlnaHQ9XFxcIjVcXFwiIHg9XFxcIjcuNVxcXCIgeT1cXFwiNi41XFxcIiBzdHJva2U9XFxcIiUyM2ZmZlxcXCIgcng9XFxcIi41XFxcIi8lM0UlM0NjaXJjbGUgY3g9XFxcIjhcXFwiIGN5PVxcXCI0XFxcIiByPVxcXCIxXFxcIiBmaWxsPVxcXCIlMjNmZmZcXFwiLyUzRSUzQy9zdmclM0UnKTsgfVxcbiAgLnlmbSAueWZtLW5vdGUueWZtLWFjY2VudC1pbmZvIHtcXG4gICAgYmFja2dyb3VuZDogcmdiYSgyLCAxMjMsIDI0MywgMC4wOCk7IH1cXG4gIC55Zm0gLnlmbS1ub3RlLnlmbS1hY2NlbnQtdGlwIHtcXG4gICAgYmFja2dyb3VuZDogcmdiYSg2MywgMjAxLCA0NiwgMC4xKTsgfVxcbiAgLnlmbSAueWZtLW5vdGUueWZtLWFjY2VudC1hbGVydCB7XFxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjM1LCA1MCwgMzgsIDAuMDgpOyB9XFxuICAueWZtIC55Zm0tbm90ZS55Zm0tYWNjZW50LXdhcm5pbmcge1xcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMTM2LCAwLCAwLjE1KTsgfVxcblxcbi55Zm0gaDEgLnlmbS1hbmNob3IsIC55Zm0gaDIgLnlmbS1hbmNob3IsIC55Zm0gaDMgLnlmbS1hbmNob3IsIC55Zm0gaDQgLnlmbS1hbmNob3IsIC55Zm0gaDUgLnlmbS1hbmNob3IsIC55Zm0gaDYgLnlmbS1hbmNob3Ige1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDI0cHg7XFxuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICBtYXJnaW4tbGVmdDogLTI0cHg7XFxuICBmbG9hdDogbGVmdDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGZvbnQtc2l6ZTogMThweDsgfVxcblxcbi55Zm0gaDEgLnlmbS1hbmNob3I6OmJlZm9yZSwgLnlmbSBoMiAueWZtLWFuY2hvcjo6YmVmb3JlLCAueWZtIGgzIC55Zm0tYW5jaG9yOjpiZWZvcmUsIC55Zm0gaDQgLnlmbS1hbmNob3I6OmJlZm9yZSwgLnlmbSBoNSAueWZtLWFuY2hvcjo6YmVmb3JlLCAueWZtIGg2IC55Zm0tYW5jaG9yOjpiZWZvcmUge1xcbiAgY29udGVudDogJyMnO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XFxuXFxuLnlmbSBoMTpob3ZlciAueWZtLWFuY2hvcjo6YmVmb3JlLCAueWZtIGgyOmhvdmVyIC55Zm0tYW5jaG9yOjpiZWZvcmUsIC55Zm0gaDM6aG92ZXIgLnlmbS1hbmNob3I6OmJlZm9yZSwgLnlmbSBoNDpob3ZlciAueWZtLWFuY2hvcjo6YmVmb3JlLCAueWZtIGg1OmhvdmVyIC55Zm0tYW5jaG9yOjpiZWZvcmUsIC55Zm0gaDY6aG92ZXIgLnlmbS1hbmNob3I6OmJlZm9yZSB7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9XFxuXFxuLnlmbSAueWZtLXRhYnMge1xcbiAgbWFyZ2luLWJvdHRvbTogMTVweDsgfVxcbiAgLnlmbSAueWZtLXRhYnMgb2wge1xcbiAgICBjb3VudGVyLXJlc2V0OiB0YWJzLWxpc3Q7IH1cXG4gICAgLnlmbSAueWZtLXRhYnMgb2wgPiBsaSB7XFxuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHRhYnMtbGlzdDsgfVxcbiAgICAgIC55Zm0gLnlmbS10YWJzIG9sID4gbGk6OmJlZm9yZSB7XFxuICAgICAgICBjb250ZW50OiBjb3VudGVycyh0YWJzLWxpc3QsIFxcXCIuXFxcIikgXFxcIi4gXFxcIjsgfVxcblxcbi55Zm0gLnlmbS10YWItbGlzdCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDcpOyB9XFxuXFxuLnlmbSAueWZtLXRhYiB7XFxuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgcGFkZGluZzogNnB4IDAgN3B4IDA7XFxuICBmb250LXdlaWdodDogNzAwO1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzOyB9XFxuICAueWZtIC55Zm0tdGFiOmxhc3QtY2hpbGQge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cXG4gIC55Zm0gLnlmbS10YWI6aG92ZXIsIC55Zm0gLnlmbS10YWI6YWN0aXZlIHtcXG4gICAgY29sb3I6ICMwMDQwODA7IH1cXG4gIC55Zm0gLnlmbS10YWIuYWN0aXZlIHtcXG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzAyN2JmMzsgfVxcblxcbi55Zm0gLnlmbS10YWItcGFuZWwge1xcbiAgZGlzcGxheTogbm9uZTsgfVxcbiAgLnlmbSAueWZtLXRhYi1wYW5lbDpmaXJzdC1jaGlsZCB7XFxuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxcbiAgLnlmbSAueWZtLXRhYi1wYW5lbDpsYXN0LWNoaWxkIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9XFxuICAueWZtIC55Zm0tdGFiLXBhbmVsLmFjdGl2ZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLnlmbSAuaGxqcyB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG92ZXJmbG93LXg6IGF1dG87XFxuICBwYWRkaW5nOiAxNnB4O1xcbiAgYmFja2dyb3VuZDogcmdiYSgxMDcsIDEzMiwgMTUzLCAwLjEyKTtcXG4gIGJhY2tncm91bmQ6IHZhcigtLXlmbS1jb2xvci1obGpzLWJhY2tncm91bmQpOyB9XFxuXFxuLnlmbSAuaGxqcyxcXG4ueWZtIC5obGpzLXN1YnN0IHtcXG4gIGNvbG9yOiAjNDQ0O1xcbiAgY29sb3I6IHZhcigtLXlmbS1jb2xvci1obGpzLXN1YnN0KTsgfVxcblxcbi55Zm0gLmhsanMtY29tbWVudCB7XFxuICBjb2xvcjogIzg4ODg4ODtcXG4gIGNvbG9yOiB2YXIoLS15Zm0tY29sb3ItaGxqcy1jb21tZW50KTsgfVxcblxcbi55Zm0gLmhsanMta2V5d29yZCxcXG4ueWZtIC5obGpzLWF0dHJpYnV0ZSxcXG4ueWZtIC5obGpzLXNlbGVjdG9yLXRhZyxcXG4ueWZtIC5obGpzLW1ldGEta2V5d29yZCxcXG4ueWZtIC5obGpzLWRvY3RhZyxcXG4ueWZtIC5obGpzLW5hbWUge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cXG5cXG4ueWZtIC5obGpzLXR5cGUsXFxuLnlmbSAuaGxqcy1zdHJpbmcsXFxuLnlmbSAuaGxqcy1udW1iZXIsXFxuLnlmbSAuaGxqcy1zZWxlY3Rvci1pZCxcXG4ueWZtIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxcbi55Zm0gLmhsanMtcXVvdGUsXFxuLnlmbSAuaGxqcy10ZW1wbGF0ZS10YWcsXFxuLnlmbSAuaGxqcy1kZWxldGlvbiB7XFxuICBjb2xvcjogIzg4MDAwMDtcXG4gIGNvbG9yOiB2YXIoLS15Zm0tY29sb3ItaGxqcy1kZWxldGlvbik7IH1cXG5cXG4ueWZtIC5obGpzLXRpdGxlLFxcbi55Zm0gLmhsanMtc2VjdGlvbiB7XFxuICBjb2xvcjogIzg4MDAwMDtcXG4gIGNvbG9yOiB2YXIoLS15Zm0tY29sb3ItaGxqcy1zZWN0aW9uKTtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XFxuXFxuLnlmbSAuaGxqcy1yZWdleHAsXFxuLnlmbSAuaGxqcy1zeW1ib2wsXFxuLnlmbSAuaGxqcy12YXJpYWJsZSxcXG4ueWZtIC5obGpzLXRlbXBsYXRlLXZhcmlhYmxlLFxcbi55Zm0gLmhsanMtbGluayxcXG4ueWZtIC5obGpzLXNlbGVjdG9yLWF0dHIsXFxuLnlmbSAuaGxqcy1zZWxlY3Rvci1wc2V1ZG8ge1xcbiAgY29sb3I6ICNCQzYwNjA7XFxuICBjb2xvcjogdmFyKC0teWZtLWNvbG9yLWhsanMtcHNldWRvKTsgfVxcblxcbi55Zm0gLmhsanMtbGl0ZXJhbCB7XFxuICBjb2xvcjogIzc4QTk2MDtcXG4gIGNvbG9yOiB2YXIoLS15Zm0tY29sb3ItaGxqcy1saXRlcmFsKTsgfVxcblxcbi55Zm0gLmhsanMtYnVpbHRfaW4sXFxuLnlmbSAuaGxqcy1idWxsZXQsXFxuLnlmbSAuaGxqcy1jb2RlLFxcbi55Zm0gLmhsanMtYWRkaXRpb24ge1xcbiAgY29sb3I6ICMzOTczMDA7XFxuICBjb2xvcjogdmFyKC0teWZtLWNvbG9yLWhsanMtYWRkaXRpb24pOyB9XFxuXFxuLnlmbSAuaGxqcy1tZXRhIHtcXG4gIGNvbG9yOiAjMWY3MTk5O1xcbiAgY29sb3I6IHZhcigtLXlmbS1jb2xvci1obGpzLW1ldGEpOyB9XFxuXFxuLnlmbSAuaGxqcy1tZXRhLXN0cmluZyB7XFxuICBjb2xvcjogIzRkOTliZjtcXG4gIGNvbG9yOiB2YXIoLS15Zm0tY29sb3ItaGxqcy1tZXRhLXN0cmluZyk7IH1cXG5cXG4ueWZtIC5obGpzLWVtcGhhc2lzIHtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxcblxcbi55Zm0gLmhsanMtc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XFxuXFxuLnlmbS1jbGlwYm9hcmQge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XFxuICAueWZtLWNsaXBib2FyZDpob3ZlciAueWZtLWNsaXBib2FyZC1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLnlmbS1jbGlwYm9hcmQgPiBwcmUge1xcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9XFxuXFxuLnlmbS1jbGlwYm9hcmQtYnV0dG9uIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB0b3A6IDE2cHg7XFxuICByaWdodDogMTZweDtcXG4gIHotaW5kZXg6IDE7IH1cXG5cXG5AbWVkaWEgcHJpbnQge1xcbiAgLnRhYi1saXN0IHtcXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9XFxuICAudGFiLXBhbmVsOmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS10aXRsZSk7XFxuICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XFxuICAgIG1hcmdpbi1yaWdodDogMjBweDtcXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICBsaW5lLWhlaWdodDogMzNweDtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgb3V0bGluZTogMDtcXG4gICAgY3Vyc29yOiBwb2ludGVyOyB9XFxuICAudGFiLXBhbmVsIHtcXG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfSB9XFxuXFxuLnlmbS1jdXQtdGl0bGUge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcXG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIHBhZGRpbmc6IDVweCAwIDVweCAzMHB4OyB9XFxuICAueWZtLWN1dC10aXRsZTpiZWZvcmUge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgei1pbmRleDogMTAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSFpwWlhkQ2IzZzlJakFnTUNBeE5pQXhOaUkrQ2lBZ0lDQThjR0YwYUNCemRISnZhMlU5SW1OMWNuSmxiblJEYjJ4dmNpSWdabWxzYkQwaWJtOXVaU0lnWkQwaVRUTWdObXcxSURVZ05TMDFJaTgrQ2p3dmMzWm5QZ289XFxcIik7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoLTkwZGVnKTtcXG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcXG4gICAgaGVpZ2h0OiAyMHB4O1xcbiAgICB3aWR0aDogMjBweDtcXG4gICAgcG9zaXRpb246IGFic29sdXRlOyB9XFxuXFxuLnlmbS1jdXQtY29udGVudCB7XFxuICBoZWlnaHQ6IDA7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuM3MgZWFzZS1pbi1vdXQ7IH1cXG5cXG4ueWZtLWN1dC5vcGVuID4gLnlmbS1jdXQtY29udGVudCB7XFxuICBwYWRkaW5nOiA1cHggMCAxNXB4IDMwcHg7XFxuICBoZWlnaHQ6IGF1dG87IH1cXG5cXG4ueWZtLWN1dC5vcGVuID4gLnlmbS1jdXQtdGl0bGU6YmVmb3JlIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfVxcblxcbi8qKlxcbiAgICBQdWJsaWMgQ1NTIHZhcmlhYmxlczpcXG4gICAgLS15Zm0tZmlsZS1pY29uICAgICAgICAgICAgIHNldHMgZmlsZSBpY29uIGltYWdlXFxuICAgIC0teWZtLWZpbGUtaWNvbi1jb2xvciAgICAgICBzZXRzIGZpbGUgaWNvbiBjb2xvclxcbiovXFxuLnlmbS1maWxlX19pY29uIHtcXG4gIC0tLXlmbS1maWxlLWljb24taW1nOiB2YXIoLS15Zm0tZmlsZS1pY29uLCB1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0F6T0RRZ05URXlJajQ4Y0dGMGFDQm1hV3hzUFNKamRYSnlaVzUwUTI5c2IzSWlJR1E5SWswek5qa3VPU0E1Tnk0NVRESTROaUF4TkVNeU56Y2dOU0F5TmpRdU9DMHVNU0F5TlRJdU1TMHVNVWcwT0VNeU1TNDFJREFnTUNBeU1TNDFJREFnTkRoMk5ERTJZekFnTWpZdU5TQXlNUzQxSURRNElEUTRJRFE0YURJNE9HTXlOaTQxSURBZ05EZ3RNakV1TlNBME9DMDBPRll4TXpFdU9XTXdMVEV5TGpjdE5TNHhMVEkxTFRFMExqRXRNelI2YlMweU1pNDJJREl5TGpkak1pNHhJREl1TVNBekxqVWdOQzQySURRdU1pQTNMalJJTWpVMlZqTXlMalZqTWk0NExqY2dOUzR6SURJdU1TQTNMalFnTkM0eWJEZ3pMamtnT0RNdU9YcE5Nek0ySURRNE1FZzBPR010T0M0NElEQXRNVFl0Tnk0eUxURTJMVEUyVmpRNFl6QXRPQzQ0SURjdU1pMHhOaUF4TmkweE5tZ3hOeloyTVRBMFl6QWdNVE11TXlBeE1DNDNJREkwSURJMElESTBhREV3TkhZek1EUmpNQ0E0TGpndE55NHlJREUyTFRFMklERTJlbTB0TkRndE1qUTBkamhqTUNBMkxqWXROUzQwSURFeUxURXlJREV5U0RFd09HTXROaTQySURBdE1USXROUzQwTFRFeUxURXlkaTA0WXpBdE5pNDJJRFV1TkMweE1pQXhNaTB4TW1neE5qaGpOaTQySURBZ01USWdOUzQwSURFeUlERXllbTB3SURZMGRqaGpNQ0EyTGpZdE5TNDBJREV5TFRFeUlERXlTREV3T0dNdE5pNDJJREF0TVRJdE5TNDBMVEV5TFRFeWRpMDRZekF0Tmk0MklEVXVOQzB4TWlBeE1pMHhNbWd4Tmpoak5pNDJJREFnTVRJZ05TNDBJREV5SURFeWVtMHdJRFkwZGpoak1DQTJMall0TlM0MElERXlMVEV5SURFeVNERXdPR010Tmk0MklEQXRNVEl0TlM0MExURXlMVEV5ZGkwNFl6QXROaTQySURVdU5DMHhNaUF4TWkweE1tZ3hOamhqTmk0MklEQWdNVElnTlM0MElERXlJREV5ZWlJdlBqd3ZjM1puUGc9PVxcXCIpKTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XFxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB3aWR0aDogMTZweDtcXG4gIG1hcmdpbjogMCAycHg7XFxuICBjb2xvcjogdmFyKC0teWZtLWZpbGUtaWNvbi1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjcpKTtcXG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XFxuICAtd2Via2l0LW1hc2staW1hZ2U6IHZhcigtLS15Zm0tZmlsZS1pY29uLWltZyk7XFxuICBtYXNrLWltYWdlOiB2YXIoLS0teWZtLWZpbGUtaWNvbi1pbWcpO1xcbiAgLXdlYmtpdC1tYXNrLXBvc2l0aW9uOiBjZW50ZXI7XFxuICBtYXNrLXBvc2l0aW9uOiBjZW50ZXI7XFxuICAtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0OyB9XFxuICAueWZtLWZpbGVfX2ljb246OmJlZm9yZSB7XFxuICAgIGNvbnRlbnQ6ICdcXFxcYTAnOyB9XFxuXFxuLnlmbS10ZXJtX3RpdGxlIHtcXG4gIGNvbG9yOiAjMDI3YmYzO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XFxuICAueWZtLXRlcm1fdGl0bGU6aG92ZXIge1xcbiAgICBjb2xvcjogIzAwNDA4MDsgfVxcblxcbi55Zm0tdGVybV9kZm4ge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogMTAwMDtcXG4gIHdpZHRoOiAtd2Via2l0LWZpdC1jb250ZW50O1xcbiAgd2lkdGg6IC1tb3otZml0LWNvbnRlbnQ7XFxuICB3aWR0aDogZml0LWNvbnRlbnQ7XFxuICBtYXgtd2lkdGg6IDQ1MHB4O1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgb3BhY2l0eTogMDtcXG4gIHBhZGRpbmc6IDEwcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgYm94LXNoYWRvdzogMCA4cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcbiAgb3V0bGluZTogbm9uZTsgfVxcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIHtcXG4gICAgLnlmbS10ZXJtX2RmbiB7XFxuICAgICAgbWF4LXdpZHRoOiA4MCU7IH0gfVxcbiAgLnlmbS10ZXJtX2Rmbjo6YmVmb3JlIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgei1pbmRleDogLTE7XFxuICAgIHRvcDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNlNWU1ZTU7IH1cXG4gIC55Zm0tdGVybV9kZm4ub3BlbiB7XFxuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHBvcHVwO1xcbiAgICBhbmltYXRpb24tbmFtZTogcG9wdXA7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjFzO1xcbiAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMXM7XFxuICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XFxuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsgfVxcblxcbkAtd2Via2l0LWtleWZyYW1lcyBwb3B1cCB7XFxuICAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfSB9XFxuXFxuQGtleWZyYW1lcyBwb3B1cCB7XFxuICAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfSB9XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi55Yy1idXR0b257LS15Yy1idXR0b24taGVpZ2h0OiAwOy0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Oy0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHRyYW5zcGFyZW50O21hcmdpbjowO3BhZGRpbmc6MDtmb250LWZhbWlseTp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC1mYW1pbHkpO2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6dmlzaWJsZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OnZhcigtLXljLWJ1dHRvbi1oZWlnaHQpO2xpbmUtaGVpZ2h0OnZhcigtLXljLWJ1dHRvbi1oZWlnaHQpO3VzZXItc2VsZWN0Om5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xcyBlYXNlLW91dCxjb2xvciAuMTVzIGxpbmVhcjt0cmFuc2Zvcm06c2NhbGUoMSl9LnljLWJ1dHRvbjo6YmVmb3Jle2NvbnRlbnQ6XFxcIlxcXCI7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDotMTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKTt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgLjE1cyBsaW5lYXJ9LnljLWJ1dHRvbjpob3Zlcjo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dmFyKC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXIpfS55Yy1idXR0b246Zm9jdXM6OmJlZm9yZXtib3gtc2hhZG93OjAgMCAwIDJweCB2YXIoLS15Yy1jb2xvci1saW5lLW1pc2MpfS55Yy1idXR0b246Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKTo6YmVmb3Jle2JveC1zaGFkb3c6bm9uZX0ueWMtYnV0dG9uOjphZnRlcntjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6LTE7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7dHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zaXRpb246bm9uZX0ueWMtYnV0dG9uOmFjdGl2ZXt0cmFuc2l0aW9uOm5vbmU7dHJhbnNmb3JtOnNjYWxlKDAuOTYpfS55Yy1idXR0b246YWN0aXZlOjphZnRlcnt0cmFuc2Zvcm06c2NhbGUoMS4wNDIpfS55Yy1idXR0b25fc2l6ZV94c3stLXljLWJ1dHRvbi1oZWlnaHQ6IDIwcHg7Zm9udC1zaXplOjEzcHg7LS15Yy1idXR0b24tYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy14cyl9LnljLWJ1dHRvbl9zaXplX3hzIC55Yy1idXR0b25fX3RleHR7bWFyZ2luOjAgNnB4fS55Yy1idXR0b25fc2l6ZV94cyAueWMtYnV0dG9uX19pY29ue3dpZHRoOnZhcigtLXljLWJ1dHRvbi1oZWlnaHQpfS55Yy1idXR0b25fc2l6ZV94cyAueWMtYnV0dG9uX19pY29uX3NpZGVfbGVmdH4ueWMtYnV0dG9uX190ZXh0e21hcmdpbi1sZWZ0OjE4cHh9LnljLWJ1dHRvbl9zaXplX3hzIC55Yy1idXR0b25fX2ljb25fc2lkZV9yaWdodH4ueWMtYnV0dG9uX190ZXh0e21hcmdpbi1yaWdodDoxOHB4fS55Yy1idXR0b25fc2l6ZV9zey0teWMtYnV0dG9uLWhlaWdodDogMjRweDtmb250LXNpemU6MTNweDstLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1ib3JkZXItcmFkaXVzLXMpfS55Yy1idXR0b25fc2l6ZV9zIC55Yy1idXR0b25fX3RleHR7bWFyZ2luOjAgMTBweH0ueWMtYnV0dG9uX3NpemVfcyAueWMtYnV0dG9uX19pY29ue3dpZHRoOnZhcigtLXljLWJ1dHRvbi1oZWlnaHQpfS55Yy1idXR0b25fc2l6ZV9zIC55Yy1idXR0b25fX2ljb25fc2lkZV9sZWZ0fi55Yy1idXR0b25fX3RleHR7bWFyZ2luLWxlZnQ6MjJweH0ueWMtYnV0dG9uX3NpemVfcyAueWMtYnV0dG9uX19pY29uX3NpZGVfcmlnaHR+LnljLWJ1dHRvbl9fdGV4dHttYXJnaW4tcmlnaHQ6MjJweH0ueWMtYnV0dG9uX3NpemVfbXstLXljLWJ1dHRvbi1oZWlnaHQ6IDI4cHg7Zm9udC1zaXplOjEzcHg7LS15Yy1idXR0b24tYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy1tKX0ueWMtYnV0dG9uX3NpemVfbSAueWMtYnV0dG9uX190ZXh0e21hcmdpbjowIDEzcHh9LnljLWJ1dHRvbl9zaXplX20gLnljLWJ1dHRvbl9faWNvbnt3aWR0aDp2YXIoLS15Yy1idXR0b24taGVpZ2h0KX0ueWMtYnV0dG9uX3NpemVfbSAueWMtYnV0dG9uX19pY29uX3NpZGVfbGVmdH4ueWMtYnV0dG9uX190ZXh0e21hcmdpbi1sZWZ0OjI1cHh9LnljLWJ1dHRvbl9zaXplX20gLnljLWJ1dHRvbl9faWNvbl9zaWRlX3JpZ2h0fi55Yy1idXR0b25fX3RleHR7bWFyZ2luLXJpZ2h0OjI1cHh9LnljLWJ1dHRvbl9zaXplX2x7LS15Yy1idXR0b24taGVpZ2h0OiAzNnB4O2ZvbnQtc2l6ZToxM3B4Oy0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXM6IHZhcigtLXljLWJvcmRlci1yYWRpdXMtbCl9LnljLWJ1dHRvbl9zaXplX2wgLnljLWJ1dHRvbl9fdGV4dHttYXJnaW46MCAxOHB4fS55Yy1idXR0b25fc2l6ZV9sIC55Yy1idXR0b25fX2ljb257d2lkdGg6dmFyKC0teWMtYnV0dG9uLWhlaWdodCl9LnljLWJ1dHRvbl9zaXplX2wgLnljLWJ1dHRvbl9faWNvbl9zaWRlX2xlZnR+LnljLWJ1dHRvbl9fdGV4dHttYXJnaW4tbGVmdDozM3B4fS55Yy1idXR0b25fc2l6ZV9sIC55Yy1idXR0b25fX2ljb25fc2lkZV9yaWdodH4ueWMtYnV0dG9uX190ZXh0e21hcmdpbi1yaWdodDozM3B4fS55Yy1idXR0b25fc2l6ZV94bHstLXljLWJ1dHRvbi1oZWlnaHQ6IDQ0cHg7Zm9udC1zaXplOjE1cHg7LS15Yy1idXR0b24tYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy14bCl9LnljLWJ1dHRvbl9zaXplX3hsIC55Yy1idXR0b25fX3RleHR7bWFyZ2luOjAgMjVweH0ueWMtYnV0dG9uX3NpemVfeGwgLnljLWJ1dHRvbl9faWNvbnt3aWR0aDp2YXIoLS15Yy1idXR0b24taGVpZ2h0KX0ueWMtYnV0dG9uX3NpemVfeGwgLnljLWJ1dHRvbl9faWNvbl9zaWRlX2xlZnR+LnljLWJ1dHRvbl9fdGV4dHttYXJnaW4tbGVmdDo0MHB4fS55Yy1idXR0b25fc2l6ZV94bCAueWMtYnV0dG9uX19pY29uX3NpZGVfcmlnaHR+LnljLWJ1dHRvbl9fdGV4dHttYXJnaW4tcmlnaHQ6NDBweH0ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsey0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYyk7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWhvdmVyKX0ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLC55Yy1idXR0b25fdmlld19ub3JtYWw6bGluaywueWMtYnV0dG9uX3ZpZXdfbm9ybWFsOnZpc2l0ZWQsLnljLWJ1dHRvbl92aWV3X25vcm1hbDphY3RpdmUsLnljLWJ1dHRvbl92aWV3X25vcm1hbDpmb2N1c3tjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpfS55Yy1idXR0b25fdmlld19ub3JtYWw6aG92ZXJ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KX0ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLnljLWJ1dHRvbl9zZWxlY3RlZHstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNlbGVjdGlvbik7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1zZWxlY3Rpb24taG92ZXIpfS55Yy1idXR0b25fdmlld19ub3JtYWwueWMtYnV0dG9uX3NlbGVjdGVkLC55Yy1idXR0b25fdmlld19ub3JtYWwueWMtYnV0dG9uX3NlbGVjdGVkOmxpbmssLnljLWJ1dHRvbl92aWV3X25vcm1hbC55Yy1idXR0b25fc2VsZWN0ZWQ6dmlzaXRlZCwueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLnljLWJ1dHRvbl9zZWxlY3RlZDphY3RpdmUsLnljLWJ1dHRvbl92aWV3X25vcm1hbC55Yy1idXR0b25fc2VsZWN0ZWQ6Zm9jdXN7Y29sb3I6dmFyKC0teWMtbXktY29sb3ItYnJhbmQtdGV4dCwgdmFyKC0teWMtY29sb3ItdGV4dC1zcGVjaWFsKSl9LnljLWJ1dHRvbl92aWV3X25vcm1hbC55Yy1idXR0b25fc2VsZWN0ZWQ6aG92ZXJ7Y29sb3I6dmFyKC0teWMtbXktY29sb3ItYnJhbmQtdGV4dCwgdmFyKC0teWMtY29sb3ItdGV4dC1zcGVjaWFsKSl9LnljLWJ1dHRvbl92aWV3X2FjdGlvbnstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpOy0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbC1ob3Zlcil9LnljLWJ1dHRvbl92aWV3X2FjdGlvbiwueWMtYnV0dG9uX3ZpZXdfYWN0aW9uOmxpbmssLnljLWJ1dHRvbl92aWV3X2FjdGlvbjp2aXNpdGVkLC55Yy1idXR0b25fdmlld19hY3Rpb246YWN0aXZlLC55Yy1idXR0b25fdmlld19hY3Rpb246Zm9jdXN7Y29sb3I6dmFyKC0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdCl9LnljLWJ1dHRvbl92aWV3X2FjdGlvbjpob3Zlcntjb2xvcjp2YXIoLS15Yy1teS1jb2xvci1icmFuZC10ZXh0LWNvbnRyYXN0KX0ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQsLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWluZm8sLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWRhbmdlcnstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3Zlcil9LnljLWJ1dHRvbl92aWV3X291dGxpbmVkLC55Yy1idXR0b25fdmlld19vdXRsaW5lZDpsaW5rLC55Yy1idXR0b25fdmlld19vdXRsaW5lZDp2aXNpdGVkLC55Yy1idXR0b25fdmlld19vdXRsaW5lZDphY3RpdmUsLnljLWJ1dHRvbl92aWV3X291dGxpbmVkOmZvY3Vze2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LnljLWJ1dHRvbl92aWV3X291dGxpbmVkOmhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LnljLWJ1dHRvbl92aWV3X291dGxpbmVkOjpiZWZvcmV7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpfS55Yy1idXR0b25fdmlld19vdXRsaW5lZC1pbmZvLC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1pbmZvOmxpbmssLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWluZm86dmlzaXRlZCwueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtaW5mbzphY3RpdmUsLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWluZm86Zm9jdXN7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1pbmZvKX0ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtaW5mbzpob3Zlcntjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWluZm8pfS55Yy1idXR0b25fdmlld19vdXRsaW5lZC1pbmZvOjpiZWZvcmV7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWluZm8pfS55Yy1idXR0b25fdmlld19vdXRsaW5lZC1kYW5nZXIsLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWRhbmdlcjpsaW5rLC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1kYW5nZXI6dmlzaXRlZCwueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyOmFjdGl2ZSwueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyOmZvY3Vze2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtZGFuZ2VyKX0ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyOmhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtZGFuZ2VyKX0ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyOjpiZWZvcmV7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWRhbmdlcil9LnljLWJ1dHRvbl92aWV3X3JhaXNlZHstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLWZsb2F0KTstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLWZsb2F0LWhvdmVyKX0ueWMtYnV0dG9uX3ZpZXdfcmFpc2VkLC55Yy1idXR0b25fdmlld19yYWlzZWQ6bGluaywueWMtYnV0dG9uX3ZpZXdfcmFpc2VkOnZpc2l0ZWQsLnljLWJ1dHRvbl92aWV3X3JhaXNlZDphY3RpdmUsLnljLWJ1dHRvbl92aWV3X3JhaXNlZDpmb2N1c3tjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpfS55Yy1idXR0b25fdmlld19yYWlzZWQ6aG92ZXJ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KX0ueWMtYnV0dG9uX3ZpZXdfcmFpc2VkOjpiZWZvcmV7Ym94LXNoYWRvdzowIDNweCA1cHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyl9LnljLWJ1dHRvbl92aWV3X3JhaXNlZDpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpOjpiZWZvcmV7Ym94LXNoYWRvdzowIDNweCA1cHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyl9LnljLWJ1dHRvbl92aWV3X3JhaXNlZDphY3RpdmU6OmJlZm9yZXtib3gtc2hhZG93OjAgMXB4IDJweCB2YXIoLS15Yy1jb2xvci1zZngtc2hhZG93KX0ueWMtYnV0dG9uX3ZpZXdfcmFpc2VkOmFjdGl2ZTpmb2N1czo6YmVmb3Jle2JveC1zaGFkb3c6MCAwIDAgMnB4IHZhcigtLXljLWNvbG9yLWxpbmUtbWlzYyl9LnljLWJ1dHRvbl92aWV3X3JhaXNlZDphY3RpdmU6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKTo6YmVmb3Jle2JveC1zaGFkb3c6MCAxcHggMnB4IHZhcigtLXljLWNvbG9yLXNmeC1zaGFkb3cpfS55Yy1idXR0b25fdmlld19mbGF0LC55Yy1idXR0b25fdmlld19mbGF0LWluZm8sLnljLWJ1dHRvbl92aWV3X2ZsYXQtZGFuZ2VyLC55Yy1idXR0b25fdmlld19mbGF0LXNlY29uZGFyeXstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3Zlcil9LnljLWJ1dHRvbl92aWV3X2ZsYXQsLnljLWJ1dHRvbl92aWV3X2ZsYXQ6bGluaywueWMtYnV0dG9uX3ZpZXdfZmxhdDp2aXNpdGVkLC55Yy1idXR0b25fdmlld19mbGF0OmFjdGl2ZSwueWMtYnV0dG9uX3ZpZXdfZmxhdDpmb2N1c3tjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpfS55Yy1idXR0b25fdmlld19mbGF0OmhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LnljLWJ1dHRvbl92aWV3X2ZsYXQtaW5mbywueWMtYnV0dG9uX3ZpZXdfZmxhdC1pbmZvOmxpbmssLnljLWJ1dHRvbl92aWV3X2ZsYXQtaW5mbzp2aXNpdGVkLC55Yy1idXR0b25fdmlld19mbGF0LWluZm86YWN0aXZlLC55Yy1idXR0b25fdmlld19mbGF0LWluZm86Zm9jdXN7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1pbmZvKX0ueWMtYnV0dG9uX3ZpZXdfZmxhdC1pbmZvOmhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtaW5mbyl9LnljLWJ1dHRvbl92aWV3X2ZsYXQtZGFuZ2VyLC55Yy1idXR0b25fdmlld19mbGF0LWRhbmdlcjpsaW5rLC55Yy1idXR0b25fdmlld19mbGF0LWRhbmdlcjp2aXNpdGVkLC55Yy1idXR0b25fdmlld19mbGF0LWRhbmdlcjphY3RpdmUsLnljLWJ1dHRvbl92aWV3X2ZsYXQtZGFuZ2VyOmZvY3Vze2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtZGFuZ2VyKX0ueWMtYnV0dG9uX3ZpZXdfZmxhdC1kYW5nZXI6aG92ZXJ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1kYW5nZXIpfS55Yy1idXR0b25fdmlld19mbGF0LXNlY29uZGFyeSwueWMtYnV0dG9uX3ZpZXdfZmxhdC1zZWNvbmRhcnk6bGluaywueWMtYnV0dG9uX3ZpZXdfZmxhdC1zZWNvbmRhcnk6dmlzaXRlZCwueWMtYnV0dG9uX3ZpZXdfZmxhdC1zZWNvbmRhcnk6YWN0aXZlLC55Yy1idXR0b25fdmlld19mbGF0LXNlY29uZGFyeTpmb2N1c3tjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXNlY29uZGFyeSl9LnljLWJ1dHRvbl92aWV3X2ZsYXQtc2Vjb25kYXJ5OmhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LnljLWJ1dHRvbl92aWV3X25vcm1hbC1jb250cmFzdHstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLWxpZ2h0KTstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLWxpZ2h0LWhvdmVyKX0ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLWNvbnRyYXN0LC55Yy1idXR0b25fdmlld19ub3JtYWwtY29udHJhc3Q6bGluaywueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLWNvbnRyYXN0OnZpc2l0ZWQsLnljLWJ1dHRvbl92aWV3X25vcm1hbC1jb250cmFzdDphY3RpdmUsLnljLWJ1dHRvbl92aWV3X25vcm1hbC1jb250cmFzdDpmb2N1c3tjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWRhcmstcHJpbWFyeSl9LnljLWJ1dHRvbl92aWV3X25vcm1hbC1jb250cmFzdDpob3Zlcntjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWRhcmstcHJpbWFyeSl9LnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWNvbnRyYXN0ey0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Oy0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2UtbGlnaHQtc2ltcGxlLWhvdmVyKX0ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3QsLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWNvbnRyYXN0OmxpbmssLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWNvbnRyYXN0OnZpc2l0ZWQsLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWNvbnRyYXN0OmFjdGl2ZSwueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3Q6Zm9jdXN7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KX0ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3Q6aG92ZXJ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KX0ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3Q6OmJlZm9yZXtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtbGlnaHQpfS55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0ey0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Oy0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2UtbGlnaHQtc2ltcGxlLWhvdmVyKX0ueWMtYnV0dG9uX3ZpZXdfZmxhdC1jb250cmFzdCwueWMtYnV0dG9uX3ZpZXdfZmxhdC1jb250cmFzdDpsaW5rLC55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0OnZpc2l0ZWQsLnljLWJ1dHRvbl92aWV3X2ZsYXQtY29udHJhc3Q6YWN0aXZlLC55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0OmZvY3Vze2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbGlnaHQtcHJpbWFyeSl9LnljLWJ1dHRvbl92aWV3X2ZsYXQtY29udHJhc3Q6aG92ZXJ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KX0ueWMtYnV0dG9uX3ZpZXdfZmxhdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyksLnljLWJ1dHRvbl92aWV3X2ZsYXQueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpLC55Yy1idXR0b25fdmlld19mbGF0LWluZm8ueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpLC55Yy1idXR0b25fdmlld19mbGF0LWluZm8ueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpLC55Yy1idXR0b25fdmlld19mbGF0LWRhbmdlci55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyksLnljLWJ1dHRvbl92aWV3X2ZsYXQtZGFuZ2VyLnljLWJ1dHRvbl9kaXNhYmxlZDpub3QoLnljLWJ1dHRvbl9sb2FkaW5nKXstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB0cmFuc3BhcmVudDtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWhpbnQpfS55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0LnljLWJ1dHRvbl9kaXNhYmxlZDpub3QoLnljLWJ1dHRvbl9sb2FkaW5nKSwueWMtYnV0dG9uX3ZpZXdfZmxhdC1jb250cmFzdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyl7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1oaW50KX0ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLWNvbnRyYXN0LnljLWJ1dHRvbl9kaXNhYmxlZDpub3QoLnljLWJ1dHRvbl9sb2FkaW5nKSwueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLWNvbnRyYXN0LnljLWJ1dHRvbl9kaXNhYmxlZDpub3QoLnljLWJ1dHRvbl9sb2FkaW5nKSwueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3QueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpLC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1jb250cmFzdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyl7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1saWdodC1kaXNhYmxlZCk7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1saWdodC1kaXNhYmxlZCk7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1zZWNvbmRhcnkpfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9yb3VuZC1yb3VuZDo6YmVmb3Jle2JvcmRlci1yYWRpdXM6dmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9icmljay1icmljazo6YmVmb3Jle2JvcmRlci1yYWRpdXM6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2xlYXItY2xlYXI6OmJlZm9yZXtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWxlZnQ6MDtib3JkZXItcmlnaHQ6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2lyY2xlLWNpcmNsZTo6YmVmb3Jle2JvcmRlci1yYWRpdXM6MTAwcHh9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX3JvdW5kLWJyaWNrOjpiZWZvcmV7Ym9yZGVyLXJhZGl1czp2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKX0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fYnJpY2stcm91bmQ6OmJlZm9yZXtib3JkZXItcmFkaXVzOjAgdmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSAwfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9yb3VuZC1jbGVhcjo6YmVmb3Jle2JvcmRlci1yYWRpdXM6dmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpIDAgMCB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXJpZ2h0OjB9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NsZWFyLXJvdW5kOjpiZWZvcmV7Ym9yZGVyLXJhZGl1czowIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMDtib3JkZXItbGVmdDowfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9icmljay1jbGVhcjo6YmVmb3Jle2JvcmRlci1yYWRpdXM6MDtib3JkZXItcmlnaHQ6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2xlYXItYnJpY2s6OmJlZm9yZXtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWxlZnQ6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2lyY2xlLWJyaWNrOjpiZWZvcmV7Ym9yZGVyLXJhZGl1czoxMDBweCAwIDAgMTAwcHh9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2JyaWNrLWNpcmNsZTo6YmVmb3Jle2JvcmRlci1yYWRpdXM6MCAxMDBweCAxMDBweCAwfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9jaXJjbGUtY2xlYXI6OmJlZm9yZXtib3JkZXItcmFkaXVzOjEwMHB4IDAgMCAxMDBweDtib3JkZXItcmlnaHQ6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2xlYXItY2lyY2xlOjpiZWZvcmV7Ym9yZGVyLXJhZGl1czowIDEwMHB4IDEwMHB4IDA7Ym9yZGVyLWxlZnQ6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fcm91bmQtcm91bmQ6OmFmdGVye2JvcmRlci1yYWRpdXM6dmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9icmljay1icmljazo6YWZ0ZXJ7Ym9yZGVyLXJhZGl1czowfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9jbGVhci1jbGVhcjo6YWZ0ZXJ7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1sZWZ0OjA7Ym9yZGVyLXJpZ2h0OjB9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NpcmNsZS1jaXJjbGU6OmFmdGVye2JvcmRlci1yYWRpdXM6MTAwcHh9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX3JvdW5kLWJyaWNrOjphZnRlcntib3JkZXItcmFkaXVzOnZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSAwIDAgdmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpfS55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9icmljay1yb3VuZDo6YWZ0ZXJ7Ym9yZGVyLXJhZGl1czowIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fcm91bmQtY2xlYXI6OmFmdGVye2JvcmRlci1yYWRpdXM6dmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpIDAgMCB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXJpZ2h0OjB9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NsZWFyLXJvdW5kOjphZnRlcntib3JkZXItcmFkaXVzOjAgdmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSAwO2JvcmRlci1sZWZ0OjB9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2JyaWNrLWNsZWFyOjphZnRlcntib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXJpZ2h0OjB9LnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NsZWFyLWJyaWNrOjphZnRlcntib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWxlZnQ6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2lyY2xlLWJyaWNrOjphZnRlcntib3JkZXItcmFkaXVzOjEwMHB4IDAgMCAxMDBweH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fYnJpY2stY2lyY2xlOjphZnRlcntib3JkZXItcmFkaXVzOjAgMTAwcHggMTAwcHggMH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2lyY2xlLWNsZWFyOjphZnRlcntib3JkZXItcmFkaXVzOjEwMHB4IDAgMCAxMDBweDtib3JkZXItcmlnaHQ6MH0ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2xlYXItY2lyY2xlOjphZnRlcntib3JkZXItcmFkaXVzOjAgMTAwcHggMTAwcHggMDtib3JkZXItbGVmdDowfS55Yy1idXR0b25fX3RleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwfS55Yy1idXR0b25fX2ljb257ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjEwMCU7cG9pbnRlci1ldmVudHM6bm9uZX0ueWMtYnV0dG9uX19pY29uOjphZnRlcntjb250ZW50OlxcXCLCoFxcXCI7dmlzaWJpbGl0eTpoaWRkZW59LnljLWJ1dHRvbl9faWNvbi1pbm5lcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LnljLWJ1dHRvbl9faWNvbl9zaWRlX2xlZnQsLnljLWJ1dHRvbl9faWNvbl9zaWRlX3JpZ2h0e3Bvc2l0aW9uOmFic29sdXRlO3RvcDowfS55Yy1idXR0b25fX2ljb25fc2lkZV9sZWZ0e2xlZnQ6MH0ueWMtYnV0dG9uX19pY29uX3NpZGVfcmlnaHR7cmlnaHQ6MH0ueWMtYnV0dG9uX2Rpc2FibGVke2N1cnNvcjpkZWZhdWx0O3BvaW50ZXItZXZlbnRzOm5vbmV9LnljLWJ1dHRvbl9kaXNhYmxlZDpub3QoLnljLWJ1dHRvbl9sb2FkaW5nKXstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50LWRpc2FibGVkKTstLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50LWRpc2FibGVkKTtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWhpbnQpfS55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyk6OmJlZm9yZSwueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpOmhvdmVyOjpiZWZvcmV7Ym9yZGVyOm5vbmV9LnljLWJ1dHRvbl9kaXNhYmxlZDphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKDEpfS55Yy1idXR0b25fbG9hZGluZzo6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgtNDVkZWcsIHZhcigtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKSwgdmFyKC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3IpIDRweCwgdmFyKC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXIpIDRweCwgdmFyKC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXIpIDhweCk7YmFja2dyb3VuZC1zaXplOjE1MCU7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94O2FuaW1hdGlvbjp5Yy1sb2FkaW5nLWFuaW1hdGlvbiAuNXMgbGluZWFyIGluZmluaXRlfS55Yy1idXR0b25fd2lkdGhfYXV0b3ttYXgtd2lkdGg6MTAwJX0ueWMtYnV0dG9uX3dpZHRoX21heHt3aWR0aDoxMDAlfS55Yy1idXR0b25fd2lkdGhfYXV0byAueWMtYnV0dG9uX190ZXh0LC55Yy1idXR0b25fd2lkdGhfbWF4IC55Yy1idXR0b25fX3RleHR7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc31cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvQnV0dG9uL0J1dHRvbi5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsV0FDQSxxQkFDRSxDQUFBLHlDQUNBLENBQUEsK0NBQ0EsQ0FBQSxRQUNBLENBQUEsU0FDQSxDQUFBLDJDQUNBLENBQUEsaUJBQ0EsQ0FBQSxlQUNBLENBQUEsYUFDQSxDQUFBLGVBQ0EsQ0FBQSxXQUNBLENBQUEsWUFDQSxDQUFBLGNBQ0EsQ0FBQSxvQkFDQSxDQUFBLGlCQUNBLENBQUEsZ0JBQ0EsQ0FBQSxxQkFDQSxDQUFBLDhCQUNBLENBQUEsbUNBQ0EsQ0FBQSxnQkFDQSxDQUFBLGlCQUNBLENBQUEsa0JBQ0EsQ0FBQSxvQkFDQSxDQUFBLHdCQUNBLENBQUEseUJBQ0EsQ0FBQSx5Q0FDQSxDQUFBLG1EQUNBLENBQUEsa0JBQ0EsQ0FBQSxtQkFFRixVQUNFLENBQUEsaUJBQ0EsQ0FBQSxVQUNBLENBQUEsS0FDQSxDQUFBLE1BQ0EsQ0FBQSxPQUNBLENBQUEsUUFDQSxDQUFBLGtEQUNBLENBQUEsdUNBQ0EsQ0FBQSx5QkFFRix3REFDRSxDQUFBLHlCQUVGLDhDQUNFLENB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QSxrREFDQSxDQUFBLHNCQUVGLGNBQ0UsQ0FBQSxxQkFFRixVQUNFLENBQUEsNkVBRUYsYUFDRSxDQUFBLGVBQ0EsQ0FBQSxzQkFDQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAY2hhcnNldCBcXFwiVVRGLThcXFwiO1xcbi55Yy1idXR0b24ge1xcbiAgLS15Yy1idXR0b24taGVpZ2h0OiAwO1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB0cmFuc3BhcmVudDtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBmb250LWZhbWlseTogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtZmFtaWx5KTtcXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBib3JkZXI6IG5vbmU7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgaGVpZ2h0OiB2YXIoLS15Yy1idXR0b24taGVpZ2h0KTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy1idXR0b24taGVpZ2h0KTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlLW91dCwgY29sb3IgMC4xNXMgbGluZWFyO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG59XFxuLnljLWJ1dHRvbjo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgei1pbmRleDogLTE7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcik7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGxpbmVhcjtcXG59XFxuLnljLWJ1dHRvbjpob3Zlcjo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyKTtcXG59XFxuLnljLWJ1dHRvbjpmb2N1czo6YmVmb3JlIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS15Yy1jb2xvci1saW5lLW1pc2MpO1xcbn1cXG4ueWMtYnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSk6OmJlZm9yZSB7XFxuICBib3gtc2hhZG93OiBub25lO1xcbn1cXG4ueWMtYnV0dG9uOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHotaW5kZXg6IC0xO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcXG4gIHRyYW5zaXRpb246IG5vbmU7XFxufVxcbi55Yy1idXR0b246YWN0aXZlIHtcXG4gIHRyYW5zaXRpb246IG5vbmU7XFxuICB0cmFuc2Zvcm06IHNjYWxlKDAuOTYpO1xcbn1cXG4ueWMtYnV0dG9uOmFjdGl2ZTo6YWZ0ZXIge1xcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA0Mik7XFxufVxcbi55Yy1idXR0b25fc2l6ZV94cyB7XFxuICAtLXljLWJ1dHRvbi1oZWlnaHQ6IDIwcHg7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICAtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1ib3JkZXItcmFkaXVzLXhzKTtcXG59XFxuLnljLWJ1dHRvbl9zaXplX3hzIC55Yy1idXR0b25fX3RleHQge1xcbiAgbWFyZ2luOiAwIDZweDtcXG59XFxuLnljLWJ1dHRvbl9zaXplX3hzIC55Yy1idXR0b25fX2ljb24ge1xcbiAgd2lkdGg6IHZhcigtLXljLWJ1dHRvbi1oZWlnaHQpO1xcbn1cXG4ueWMtYnV0dG9uX3NpemVfeHMgLnljLWJ1dHRvbl9faWNvbl9zaWRlX2xlZnQgfiAueWMtYnV0dG9uX190ZXh0IHtcXG4gIG1hcmdpbi1sZWZ0OiAxOHB4O1xcbn1cXG4ueWMtYnV0dG9uX3NpemVfeHMgLnljLWJ1dHRvbl9faWNvbl9zaWRlX3JpZ2h0IH4gLnljLWJ1dHRvbl9fdGV4dCB7XFxuICBtYXJnaW4tcmlnaHQ6IDE4cHg7XFxufVxcbi55Yy1idXR0b25fc2l6ZV9zIHtcXG4gIC0teWMtYnV0dG9uLWhlaWdodDogMjRweDtcXG4gIGZvbnQtc2l6ZTogMTNweDtcXG4gIC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXM6IHZhcigtLXljLWJvcmRlci1yYWRpdXMtcyk7XFxufVxcbi55Yy1idXR0b25fc2l6ZV9zIC55Yy1idXR0b25fX3RleHQge1xcbiAgbWFyZ2luOiAwIDEwcHg7XFxufVxcbi55Yy1idXR0b25fc2l6ZV9zIC55Yy1idXR0b25fX2ljb24ge1xcbiAgd2lkdGg6IHZhcigtLXljLWJ1dHRvbi1oZWlnaHQpO1xcbn1cXG4ueWMtYnV0dG9uX3NpemVfcyAueWMtYnV0dG9uX19pY29uX3NpZGVfbGVmdCB+IC55Yy1idXR0b25fX3RleHQge1xcbiAgbWFyZ2luLWxlZnQ6IDIycHg7XFxufVxcbi55Yy1idXR0b25fc2l6ZV9zIC55Yy1idXR0b25fX2ljb25fc2lkZV9yaWdodCB+IC55Yy1idXR0b25fX3RleHQge1xcbiAgbWFyZ2luLXJpZ2h0OiAyMnB4O1xcbn1cXG4ueWMtYnV0dG9uX3NpemVfbSB7XFxuICAtLXljLWJ1dHRvbi1oZWlnaHQ6IDI4cHg7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICAtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1ib3JkZXItcmFkaXVzLW0pO1xcbn1cXG4ueWMtYnV0dG9uX3NpemVfbSAueWMtYnV0dG9uX190ZXh0IHtcXG4gIG1hcmdpbjogMCAxM3B4O1xcbn1cXG4ueWMtYnV0dG9uX3NpemVfbSAueWMtYnV0dG9uX19pY29uIHtcXG4gIHdpZHRoOiB2YXIoLS15Yy1idXR0b24taGVpZ2h0KTtcXG59XFxuLnljLWJ1dHRvbl9zaXplX20gLnljLWJ1dHRvbl9faWNvbl9zaWRlX2xlZnQgfiAueWMtYnV0dG9uX190ZXh0IHtcXG4gIG1hcmdpbi1sZWZ0OiAyNXB4O1xcbn1cXG4ueWMtYnV0dG9uX3NpemVfbSAueWMtYnV0dG9uX19pY29uX3NpZGVfcmlnaHQgfiAueWMtYnV0dG9uX190ZXh0IHtcXG4gIG1hcmdpbi1yaWdodDogMjVweDtcXG59XFxuLnljLWJ1dHRvbl9zaXplX2wge1xcbiAgLS15Yy1idXR0b24taGVpZ2h0OiAzNnB4O1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbiAgLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy1sKTtcXG59XFxuLnljLWJ1dHRvbl9zaXplX2wgLnljLWJ1dHRvbl9fdGV4dCB7XFxuICBtYXJnaW46IDAgMThweDtcXG59XFxuLnljLWJ1dHRvbl9zaXplX2wgLnljLWJ1dHRvbl9faWNvbiB7XFxuICB3aWR0aDogdmFyKC0teWMtYnV0dG9uLWhlaWdodCk7XFxufVxcbi55Yy1idXR0b25fc2l6ZV9sIC55Yy1idXR0b25fX2ljb25fc2lkZV9sZWZ0IH4gLnljLWJ1dHRvbl9fdGV4dCB7XFxuICBtYXJnaW4tbGVmdDogMzNweDtcXG59XFxuLnljLWJ1dHRvbl9zaXplX2wgLnljLWJ1dHRvbl9faWNvbl9zaWRlX3JpZ2h0IH4gLnljLWJ1dHRvbl9fdGV4dCB7XFxuICBtYXJnaW4tcmlnaHQ6IDMzcHg7XFxufVxcbi55Yy1idXR0b25fc2l6ZV94bCB7XFxuICAtLXljLWJ1dHRvbi1oZWlnaHQ6IDQ0cHg7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICAtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1ib3JkZXItcmFkaXVzLXhsKTtcXG59XFxuLnljLWJ1dHRvbl9zaXplX3hsIC55Yy1idXR0b25fX3RleHQge1xcbiAgbWFyZ2luOiAwIDI1cHg7XFxufVxcbi55Yy1idXR0b25fc2l6ZV94bCAueWMtYnV0dG9uX19pY29uIHtcXG4gIHdpZHRoOiB2YXIoLS15Yy1idXR0b24taGVpZ2h0KTtcXG59XFxuLnljLWJ1dHRvbl9zaXplX3hsIC55Yy1idXR0b25fX2ljb25fc2lkZV9sZWZ0IH4gLnljLWJ1dHRvbl9fdGV4dCB7XFxuICBtYXJnaW4tbGVmdDogNDBweDtcXG59XFxuLnljLWJ1dHRvbl9zaXplX3hsIC55Yy1idXR0b25fX2ljb25fc2lkZV9yaWdodCB+IC55Yy1idXR0b25fX3RleHQge1xcbiAgbWFyZ2luLXJpZ2h0OiA0MHB4O1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsIHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYyk7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtaG92ZXIpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLCAueWMtYnV0dG9uX3ZpZXdfbm9ybWFsOmxpbmssIC55Yy1idXR0b25fdmlld19ub3JtYWw6dmlzaXRlZCwgLnljLWJ1dHRvbl92aWV3X25vcm1hbDphY3RpdmUsIC55Yy1idXR0b25fdmlld19ub3JtYWw6Zm9jdXMge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19ub3JtYWw6aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19ub3JtYWwueWMtYnV0dG9uX3NlbGVjdGVkIHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uKTtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uLWhvdmVyKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X25vcm1hbC55Yy1idXR0b25fc2VsZWN0ZWQsIC55Yy1idXR0b25fdmlld19ub3JtYWwueWMtYnV0dG9uX3NlbGVjdGVkOmxpbmssIC55Yy1idXR0b25fdmlld19ub3JtYWwueWMtYnV0dG9uX3NlbGVjdGVkOnZpc2l0ZWQsIC55Yy1idXR0b25fdmlld19ub3JtYWwueWMtYnV0dG9uX3NlbGVjdGVkOmFjdGl2ZSwgLnljLWJ1dHRvbl92aWV3X25vcm1hbC55Yy1idXR0b25fc2VsZWN0ZWQ6Zm9jdXMge1xcbiAgY29sb3I6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLXRleHQsIHZhcigtLXljLWNvbG9yLXRleHQtc3BlY2lhbCkpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLnljLWJ1dHRvbl9zZWxlY3RlZDpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtdGV4dCwgdmFyKC0teWMtY29sb3ItdGV4dC1zcGVjaWFsKSk7XFxufVxcbi55Yy1idXR0b25fdmlld19hY3Rpb24ge1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbC1ob3Zlcik7XFxufVxcbi55Yy1idXR0b25fdmlld19hY3Rpb24sIC55Yy1idXR0b25fdmlld19hY3Rpb246bGluaywgLnljLWJ1dHRvbl92aWV3X2FjdGlvbjp2aXNpdGVkLCAueWMtYnV0dG9uX3ZpZXdfYWN0aW9uOmFjdGl2ZSwgLnljLWJ1dHRvbl92aWV3X2FjdGlvbjpmb2N1cyB7XFxuICBjb2xvcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdCk7XFxufVxcbi55Yy1idXR0b25fdmlld19hY3Rpb246aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLW15LWNvbG9yLWJyYW5kLXRleHQtY29udHJhc3QpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQsIC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1pbmZvLCAueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyIHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXIpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQsIC55Yy1idXR0b25fdmlld19vdXRsaW5lZDpsaW5rLCAueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQ6dmlzaXRlZCwgLnljLWJ1dHRvbl92aWV3X291dGxpbmVkOmFjdGl2ZSwgLnljLWJ1dHRvbl92aWV3X291dGxpbmVkOmZvY3VzIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQ6aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19vdXRsaW5lZDo6YmVmb3JlIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxufVxcbi55Yy1idXR0b25fdmlld19vdXRsaW5lZC1pbmZvLCAueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtaW5mbzpsaW5rLCAueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtaW5mbzp2aXNpdGVkLCAueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtaW5mbzphY3RpdmUsIC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1pbmZvOmZvY3VzIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWluZm8pO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtaW5mbzpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1pbmZvKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWluZm86OmJlZm9yZSB7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWluZm8pO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyLCAueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyOmxpbmssIC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1kYW5nZXI6dmlzaXRlZCwgLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWRhbmdlcjphY3RpdmUsIC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1kYW5nZXI6Zm9jdXMge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtZGFuZ2VyKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWRhbmdlcjpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1kYW5nZXIpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtZGFuZ2VyOjpiZWZvcmUge1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1kYW5nZXIpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfcmFpc2VkIHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtZmxvYXQpO1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1mbG9hdC1ob3Zlcik7XFxufVxcbi55Yy1idXR0b25fdmlld19yYWlzZWQsIC55Yy1idXR0b25fdmlld19yYWlzZWQ6bGluaywgLnljLWJ1dHRvbl92aWV3X3JhaXNlZDp2aXNpdGVkLCAueWMtYnV0dG9uX3ZpZXdfcmFpc2VkOmFjdGl2ZSwgLnljLWJ1dHRvbl92aWV3X3JhaXNlZDpmb2N1cyB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X3JhaXNlZDpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X3JhaXNlZDo6YmVmb3JlIHtcXG4gIGJveC1zaGFkb3c6IDAgM3B4IDVweCB2YXIoLS15Yy1jb2xvci1zZngtc2hhZG93KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X3JhaXNlZDpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpOjpiZWZvcmUge1xcbiAgYm94LXNoYWRvdzogMCAzcHggNXB4IHZhcigtLXljLWNvbG9yLXNmeC1zaGFkb3cpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfcmFpc2VkOmFjdGl2ZTo6YmVmb3JlIHtcXG4gIGJveC1zaGFkb3c6IDAgMXB4IDJweCB2YXIoLS15Yy1jb2xvci1zZngtc2hhZG93KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X3JhaXNlZDphY3RpdmU6Zm9jdXM6OmJlZm9yZSB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0teWMtY29sb3ItbGluZS1taXNjKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X3JhaXNlZDphY3RpdmU6Zm9jdXM6bm90KDpmb2N1cy12aXNpYmxlKTo6YmVmb3JlIHtcXG4gIGJveC1zaGFkb3c6IDAgMXB4IDJweCB2YXIoLS15Yy1jb2xvci1zZngtc2hhZG93KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X2ZsYXQsIC55Yy1idXR0b25fdmlld19mbGF0LWluZm8sIC55Yy1idXR0b25fdmlld19mbGF0LWRhbmdlciwgLnljLWJ1dHRvbl92aWV3X2ZsYXQtc2Vjb25kYXJ5IHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXIpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfZmxhdCwgLnljLWJ1dHRvbl92aWV3X2ZsYXQ6bGluaywgLnljLWJ1dHRvbl92aWV3X2ZsYXQ6dmlzaXRlZCwgLnljLWJ1dHRvbl92aWV3X2ZsYXQ6YWN0aXZlLCAueWMtYnV0dG9uX3ZpZXdfZmxhdDpmb2N1cyB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X2ZsYXQ6aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19mbGF0LWluZm8sIC55Yy1idXR0b25fdmlld19mbGF0LWluZm86bGluaywgLnljLWJ1dHRvbl92aWV3X2ZsYXQtaW5mbzp2aXNpdGVkLCAueWMtYnV0dG9uX3ZpZXdfZmxhdC1pbmZvOmFjdGl2ZSwgLnljLWJ1dHRvbl92aWV3X2ZsYXQtaW5mbzpmb2N1cyB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1pbmZvKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X2ZsYXQtaW5mbzpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1pbmZvKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X2ZsYXQtZGFuZ2VyLCAueWMtYnV0dG9uX3ZpZXdfZmxhdC1kYW5nZXI6bGluaywgLnljLWJ1dHRvbl92aWV3X2ZsYXQtZGFuZ2VyOnZpc2l0ZWQsIC55Yy1idXR0b25fdmlld19mbGF0LWRhbmdlcjphY3RpdmUsIC55Yy1idXR0b25fdmlld19mbGF0LWRhbmdlcjpmb2N1cyB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1kYW5nZXIpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfZmxhdC1kYW5nZXI6aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtZGFuZ2VyKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X2ZsYXQtc2Vjb25kYXJ5LCAueWMtYnV0dG9uX3ZpZXdfZmxhdC1zZWNvbmRhcnk6bGluaywgLnljLWJ1dHRvbl92aWV3X2ZsYXQtc2Vjb25kYXJ5OnZpc2l0ZWQsIC55Yy1idXR0b25fdmlld19mbGF0LXNlY29uZGFyeTphY3RpdmUsIC55Yy1idXR0b25fdmlld19mbGF0LXNlY29uZGFyeTpmb2N1cyB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfZmxhdC1zZWNvbmRhcnk6aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19ub3JtYWwtY29udHJhc3Qge1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1saWdodCk7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLWxpZ2h0LWhvdmVyKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X25vcm1hbC1jb250cmFzdCwgLnljLWJ1dHRvbl92aWV3X25vcm1hbC1jb250cmFzdDpsaW5rLCAueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLWNvbnRyYXN0OnZpc2l0ZWQsIC55Yy1idXR0b25fdmlld19ub3JtYWwtY29udHJhc3Q6YWN0aXZlLCAueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLWNvbnRyYXN0OmZvY3VzIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWRhcmstcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19ub3JtYWwtY29udHJhc3Q6aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtZGFyay1wcmltYXJ5KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWNvbnRyYXN0IHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdmFyKC0teWMtY29sb3ItYmFzZS1saWdodC1zaW1wbGUtaG92ZXIpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3QsIC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1jb250cmFzdDpsaW5rLCAueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3Q6dmlzaXRlZCwgLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWNvbnRyYXN0OmFjdGl2ZSwgLnljLWJ1dHRvbl92aWV3X291dGxpbmVkLWNvbnRyYXN0OmZvY3VzIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnkpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfb3V0bGluZWQtY29udHJhc3Q6aG92ZXIge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGlnaHQtcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19vdXRsaW5lZC1jb250cmFzdDo6YmVmb3JlIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtbGlnaHQpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfZmxhdC1jb250cmFzdCB7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3ItaG92ZXI6IHZhcigtLXljLWNvbG9yLWJhc2UtbGlnaHQtc2ltcGxlLWhvdmVyKTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X2ZsYXQtY29udHJhc3QsIC55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0OmxpbmssIC55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0OnZpc2l0ZWQsIC55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0OmFjdGl2ZSwgLnljLWJ1dHRvbl92aWV3X2ZsYXQtY29udHJhc3Q6Zm9jdXMge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGlnaHQtcHJpbWFyeSk7XFxufVxcbi55Yy1idXR0b25fdmlld19mbGF0LWNvbnRyYXN0OmhvdmVyIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnkpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfZmxhdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyksIC55Yy1idXR0b25fdmlld19mbGF0LnljLWJ1dHRvbl9kaXNhYmxlZDpub3QoLnljLWJ1dHRvbl9sb2FkaW5nKSwgLnljLWJ1dHRvbl92aWV3X2ZsYXQtaW5mby55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyksIC55Yy1idXR0b25fdmlld19mbGF0LWluZm8ueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpLCAueWMtYnV0dG9uX3ZpZXdfZmxhdC1kYW5nZXIueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpLCAueWMtYnV0dG9uX3ZpZXdfZmxhdC1kYW5nZXIueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpIHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1oaW50KTtcXG59XFxuLnljLWJ1dHRvbl92aWV3X2ZsYXQtY29udHJhc3QueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpLCAueWMtYnV0dG9uX3ZpZXdfZmxhdC1jb250cmFzdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZykge1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LWhpbnQpO1xcbn1cXG4ueWMtYnV0dG9uX3ZpZXdfbm9ybWFsLWNvbnRyYXN0LnljLWJ1dHRvbl9kaXNhYmxlZDpub3QoLnljLWJ1dHRvbl9sb2FkaW5nKSwgLnljLWJ1dHRvbl92aWV3X25vcm1hbC1jb250cmFzdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyksIC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1jb250cmFzdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyksIC55Yy1idXR0b25fdmlld19vdXRsaW5lZC1jb250cmFzdC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZykge1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1saWdodC1kaXNhYmxlZCk7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLWxpZ2h0LWRpc2FibGVkKTtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXNlY29uZGFyeSk7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9yb3VuZC1yb3VuZDo6YmVmb3JlIHtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKTtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2JyaWNrLWJyaWNrOjpiZWZvcmUge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NsZWFyLWNsZWFyOjpiZWZvcmUge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbiAgYm9yZGVyLXJpZ2h0OiAwO1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2lyY2xlLWNpcmNsZTo6YmVmb3JlIHtcXG4gIGJvcmRlci1yYWRpdXM6IDEwMHB4O1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fcm91bmQtYnJpY2s6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKTtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2JyaWNrLXJvdW5kOjpiZWZvcmUge1xcbiAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgdmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpIDA7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9yb3VuZC1jbGVhcjo6YmVmb3JlIHtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSAwIDAgdmFyKC0teWMtYnV0dG9uLWJvcmRlci1yYWRpdXMpO1xcbiAgYm9yZGVyLXJpZ2h0OiAwO1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2xlYXItcm91bmQ6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMDtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fYnJpY2stY2xlYXI6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm9yZGVyLXJpZ2h0OiAwO1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2xlYXItYnJpY2s6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm9yZGVyLWxlZnQ6IDA7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9jaXJjbGUtYnJpY2s6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAxMDBweCAwIDAgMTAwcHg7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9icmljay1jaXJjbGU6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAwIDEwMHB4IDEwMHB4IDA7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9jaXJjbGUtY2xlYXI6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAxMDBweCAwIDAgMTAwcHg7XFxuICBib3JkZXItcmlnaHQ6IDA7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9jbGVhci1jaXJjbGU6OmJlZm9yZSB7XFxuICBib3JkZXItcmFkaXVzOiAwIDEwMHB4IDEwMHB4IDA7XFxuICBib3JkZXItbGVmdDogMDtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX3JvdW5kLXJvdW5kOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cyk7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9icmljay1icmljazo6YWZ0ZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NsZWFyLWNsZWFyOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm9yZGVyLWxlZnQ6IDA7XFxuICBib3JkZXItcmlnaHQ6IDA7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9jaXJjbGUtY2lyY2xlOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAxMDBweDtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX3JvdW5kLWJyaWNrOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKTtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2JyaWNrLXJvdW5kOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMDtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX3JvdW5kLWNsZWFyOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKTtcXG4gIGJvcmRlci1yaWdodDogMDtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NsZWFyLXJvdW5kOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXljLWJ1dHRvbi1ib3JkZXItcmFkaXVzKSB2YXIoLS15Yy1idXR0b24tYm9yZGVyLXJhZGl1cykgMDtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fYnJpY2stY2xlYXI6OmFmdGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDA7XFxuICBib3JkZXItcmlnaHQ6IDA7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9jbGVhci1icmljazo6YWZ0ZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2lyY2xlLWJyaWNrOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAxMDBweCAwIDAgMTAwcHg7XFxufVxcbi55Yy1idXR0b24ueWMtYnV0dG9uX3Bpbl9icmljay1jaXJjbGU6OmFmdGVyIHtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMTAwcHggMTAwcHggMDtcXG59XFxuLnljLWJ1dHRvbi55Yy1idXR0b25fcGluX2NpcmNsZS1jbGVhcjo6YWZ0ZXIge1xcbiAgYm9yZGVyLXJhZGl1czogMTAwcHggMCAwIDEwMHB4O1xcbiAgYm9yZGVyLXJpZ2h0OiAwO1xcbn1cXG4ueWMtYnV0dG9uLnljLWJ1dHRvbl9waW5fY2xlYXItY2lyY2xlOjphZnRlciB7XFxuICBib3JkZXItcmFkaXVzOiAwIDEwMHB4IDEwMHB4IDA7XFxuICBib3JkZXItbGVmdDogMDtcXG59XFxuLnljLWJ1dHRvbl9fdGV4dCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbn1cXG4ueWMtYnV0dG9uX19pY29uIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4ueWMtYnV0dG9uX19pY29uOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiwqBcXFwiO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbn1cXG4ueWMtYnV0dG9uX19pY29uLWlubmVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxufVxcbi55Yy1idXR0b25fX2ljb25fc2lkZV9sZWZ0LCAueWMtYnV0dG9uX19pY29uX3NpZGVfcmlnaHQge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbn1cXG4ueWMtYnV0dG9uX19pY29uX3NpZGVfbGVmdCB7XFxuICBsZWZ0OiAwO1xcbn1cXG4ueWMtYnV0dG9uX19pY29uX3NpZGVfcmlnaHQge1xcbiAgcmlnaHQ6IDA7XFxufVxcbi55Yy1idXR0b25fZGlzYWJsZWQge1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZykge1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudC1kaXNhYmxlZCk7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50LWRpc2FibGVkKTtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWhpbnQpO1xcbn1cXG4ueWMtYnV0dG9uX2Rpc2FibGVkOm5vdCgueWMtYnV0dG9uX2xvYWRpbmcpOjpiZWZvcmUsIC55Yy1idXR0b25fZGlzYWJsZWQ6bm90KC55Yy1idXR0b25fbG9hZGluZyk6aG92ZXI6OmJlZm9yZSB7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcbi55Yy1idXR0b25fZGlzYWJsZWQ6YWN0aXZlIHtcXG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XFxufVxcbi55Yy1idXR0b25fbG9hZGluZzo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCB2YXIoLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvciksIHZhcigtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yKSA0cHgsIHZhcigtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyKSA0cHgsIHZhcigtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyKSA4cHgpO1xcbiAgYmFja2dyb3VuZC1zaXplOiAxNTAlO1xcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gIGFuaW1hdGlvbjogeWMtbG9hZGluZy1hbmltYXRpb24gMC41cyBsaW5lYXIgaW5maW5pdGU7XFxufVxcbi55Yy1idXR0b25fd2lkdGhfYXV0byB7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxufVxcbi55Yy1idXR0b25fd2lkdGhfbWF4IHtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG4ueWMtYnV0dG9uX3dpZHRoX2F1dG8gLnljLWJ1dHRvbl9fdGV4dCwgLnljLWJ1dHRvbl93aWR0aF9tYXggLnljLWJ1dHRvbl9fdGV4dCB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi55Yy1jYXJkey0teWMtY2FyZC1ib3gtc2hhZG93OiBub25lOy0teWMtY2FyZC1ib3JkZXItcmFkaXVzOiA4cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApO2JveC1zaGFkb3c6dmFyKC0teWMtY2FyZC1ib3gtc2hhZG93KTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czp2YXIoLS15Yy1jYXJkLWJvcmRlci1yYWRpdXMpfS55Yy1jYXJkX3R5cGVfYWN0aW9ue2JhY2tncm91bmQtY29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1mbG9hdCk7LS15Yy1jYXJkLWJveC1zaGFkb3c6IDBweCAxcHggNXB4IHZhcigtLXljLWNvbG9yLXNmeC1zaGFkb3cpfS55Yy1jYXJkX3R5cGVfYWN0aW9uLnljLWNhcmRfY2xpY2thYmxlOmhvdmVyey0teWMtY2FyZC1ib3gtc2hhZG93OiAwcHggM3B4IDEwcHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyk7Y3Vyc29yOnBvaW50ZXJ9LnljLWNhcmRfdHlwZV9zZWxlY3Rpb257cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpfS55Yy1jYXJkX3R5cGVfc2VsZWN0aW9uOjpiZWZvcmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xcHg7bGVmdDotMXB4O3JpZ2h0Oi0xcHg7Ym90dG9tOi0xcHg7Ym9yZGVyLXJhZGl1czp2YXIoLS15Yy1jYXJkLWJvcmRlci1yYWRpdXMpO3BvaW50ZXItZXZlbnRzOm5vbmV9LnljLWNhcmRfdHlwZV9zZWxlY3Rpb24ueWMtY2FyZF9jbGlja2FibGU6aG92ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMCk7Y3Vyc29yOnBvaW50ZXJ9LnljLWNhcmRfdHlwZV9zZWxlY3Rpb24ueWMtY2FyZF9jbGlja2FibGU6aG92ZXI6OmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO2JvcmRlcjoycHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24taG92ZXIpfS55Yy1jYXJkX3R5cGVfc2VsZWN0aW9uLnljLWNhcmRfc2VsZWN0ZWQ6bm90KC55Yy1jYXJkX2Rpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwwKX0ueWMtY2FyZF90eXBlX3NlbGVjdGlvbi55Yy1jYXJkX3NlbGVjdGVkOm5vdCgueWMtY2FyZF9kaXNhYmxlZCk6OmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO2JvcmRlcjoycHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24tYWN0aXZlKX0ueWMtY2FyZF90eXBlX3NlbGVjdGlvbi55Yy1jYXJkX3ZpZXdfY2xlYXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsMCl9LnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF90aGVtZV9ub3JtYWwueWMtY2FyZF92aWV3X291dGxpbmVke2JvcmRlcjoxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljKX0ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX25vcm1hbC55Yy1jYXJkX3ZpZXdfZmlsbGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1nZW5lcmljKX0ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX2luZm8ueWMtY2FyZF92aWV3X291dGxpbmVke2JvcmRlcjoxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1pbmZvKX0ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX2luZm8ueWMtY2FyZF92aWV3X2ZpbGxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2UtaW5mbyl9LnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF90aGVtZV9wb3NpdGl2ZS55Yy1jYXJkX3ZpZXdfb3V0bGluZWR7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLXBvc2l0aXZlKX0ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX3Bvc2l0aXZlLnljLWNhcmRfdmlld19maWxsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS15Yy1jb2xvci1iYXNlLXBvc2l0aXZlKX0ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX3dhcm5pbmcueWMtY2FyZF92aWV3X291dGxpbmVke2JvcmRlcjoxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS13YXJuaW5nKX0ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX3dhcm5pbmcueWMtY2FyZF92aWV3X2ZpbGxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2Utd2FybmluZyl9LnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF90aGVtZV9kYW5nZXIueWMtY2FyZF92aWV3X291dGxpbmVke2JvcmRlcjoxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1kYW5nZXIpfS55Yy1jYXJkX3R5cGVfY29udGFpbmVyLnljLWNhcmRfdGhlbWVfZGFuZ2VyLnljLWNhcmRfdmlld19maWxsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS15Yy1jb2xvci1iYXNlLWRhbmdlcil9LnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF92aWV3X3JhaXNlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2UtZmxvYXQpfS55Yy1jYXJkX3R5cGVfY29udGFpbmVyLnljLWNhcmRfdmlld19yYWlzZWQueWMtY2FyZF9zaXplX217LS15Yy1jYXJkLWJveC1zaGFkb3c6IDBweCAxcHggNXB4IHZhcigtLXljLWNvbG9yLXNmeC1zaGFkb3cpfS55Yy1jYXJkX3R5cGVfY29udGFpbmVyLnljLWNhcmRfdmlld19yYWlzZWQueWMtY2FyZF9zaXplX2x7LS15Yy1jYXJkLWJveC1zaGFkb3c6IDBweCAxcHggNnB4IHZhcigtLXljLWNvbG9yLXNmeC1zaGFkb3ctbGlnaHQpLCAxcHggM3B4IDEzcHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdy1saWdodCl9LnljLWNhcmRfc2l6ZV9tey0teWMtY2FyZC1ib3JkZXItcmFkaXVzOiA4cHh9LnljLWNhcmRfc2l6ZV9sey0teWMtY2FyZC1ib3JkZXItcmFkaXVzOiAxNnB4fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9DYXJkL0NhcmQuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLFNBQ0UsMEJBQUEsQ0FDQSw0QkFBQSxDQUNBLDhCQUFBLENBQ0Esb0NBQUEsQ0FDQSxxQkFBQSxDQUNBLDBDQUFBLENBRUYscUJBQ0UsMkNBQUEsQ0FDQSw0REFBQSxDQUVGLDZDQUNFLDZEQUFBLENBQ0EsY0FBQSxDQUVGLHdCQUNFLGlCQUFBLENBQ0EsNkNBQUEsQ0FFRixnQ0FDRSxpQkFBQSxDQUNBLFFBQUEsQ0FDQSxTQUFBLENBQ0EsVUFBQSxDQUNBLFdBQUEsQ0FDQSwwQ0FBQSxDQUNBLG1CQUFBLENBRUYsZ0RBQ0UsMEJBQUEsQ0FDQSxjQUFBLENBRUYsd0RBQ0UsVUFBQSxDQUNBLHFEQUFBLENBRUYsZ0VBQ0UsMEJBQUEsQ0FFRix3RUFDRSxVQUFBLENBQ0Esc0RBQUEsQ0FFRiwyQ0FDRSwwQkFBQSxDQUVGLG1FQUNFLDZDQUFBLENBRUYsaUVBQ0UsNkNBQUEsQ0FFRixpRUFDRSwwQ0FBQSxDQUVGLCtEQUNFLDBDQUFBLENBRUYscUVBQ0UsOENBQUEsQ0FFRixtRUFDRSw4Q0FBQSxDQUVGLG9FQUNFLDZDQUFBLENBRUYsa0VBQ0UsNkNBQUEsQ0FFRixtRUFDRSw0Q0FBQSxDQUVGLGlFQUNFLDRDQUFBLENBRUYsNENBQ0UsMkNBQUEsQ0FFRiwyREFDRSw0REFBQSxDQUdGLDJEQUNFLGlIQUFBLENBSUYsZ0JBQ0UsNEJBQUEsQ0FFRixnQkFDRSw2QkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIueWMtY2FyZCB7XFxuICAtLXljLWNhcmQtYm94LXNoYWRvdzogbm9uZTtcXG4gIC0teWMtY2FyZC1ib3JkZXItcmFkaXVzOiA4cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IHZhcigtLXljLWNhcmQtYm94LXNoYWRvdyk7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0teWMtY2FyZC1ib3JkZXItcmFkaXVzKTtcXG59XFxuLnljLWNhcmRfdHlwZV9hY3Rpb24ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1mbG9hdCk7XFxuICAtLXljLWNhcmQtYm94LXNoYWRvdzogMHB4IDFweCA1cHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyk7XFxufVxcbi55Yy1jYXJkX3R5cGVfYWN0aW9uLnljLWNhcmRfY2xpY2thYmxlOmhvdmVyIHtcXG4gIC0teWMtY2FyZC1ib3gtc2hhZG93OiAwcHggM3B4IDEwcHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyk7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi55Yy1jYXJkX3R5cGVfc2VsZWN0aW9uIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxufVxcbi55Yy1jYXJkX3R5cGVfc2VsZWN0aW9uOjpiZWZvcmUge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAtMXB4O1xcbiAgbGVmdDogLTFweDtcXG4gIHJpZ2h0OiAtMXB4O1xcbiAgYm90dG9tOiAtMXB4O1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0teWMtY2FyZC1ib3JkZXItcmFkaXVzKTtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4ueWMtY2FyZF90eXBlX3NlbGVjdGlvbi55Yy1jYXJkX2NsaWNrYWJsZTpob3ZlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4ueWMtY2FyZF90eXBlX3NlbGVjdGlvbi55Yy1jYXJkX2NsaWNrYWJsZTpob3Zlcjo6YmVmb3JlIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgYm9yZGVyOiAycHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1zZWxlY3Rpb24taG92ZXIpO1xcbn1cXG4ueWMtY2FyZF90eXBlX3NlbGVjdGlvbi55Yy1jYXJkX3NlbGVjdGVkOm5vdCgueWMtY2FyZF9kaXNhYmxlZCkge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLnljLWNhcmRfdHlwZV9zZWxlY3Rpb24ueWMtY2FyZF9zZWxlY3RlZDpub3QoLnljLWNhcmRfZGlzYWJsZWQpOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLXNlbGVjdGlvbi1hY3RpdmUpO1xcbn1cXG4ueWMtY2FyZF90eXBlX3NlbGVjdGlvbi55Yy1jYXJkX3ZpZXdfY2xlYXIge1xcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcXG59XFxuLnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF90aGVtZV9ub3JtYWwueWMtY2FyZF92aWV3X291dGxpbmVkIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYyk7XFxufVxcbi55Yy1jYXJkX3R5cGVfY29udGFpbmVyLnljLWNhcmRfdGhlbWVfbm9ybWFsLnljLWNhcmRfdmlld19maWxsZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1nZW5lcmljKTtcXG59XFxuLnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF90aGVtZV9pbmZvLnljLWNhcmRfdmlld19vdXRsaW5lZCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWluZm8pO1xcbn1cXG4ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX2luZm8ueWMtY2FyZF92aWV3X2ZpbGxlZCB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLWluZm8pO1xcbn1cXG4ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX3Bvc2l0aXZlLnljLWNhcmRfdmlld19vdXRsaW5lZCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLXBvc2l0aXZlKTtcXG59XFxuLnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF90aGVtZV9wb3NpdGl2ZS55Yy1jYXJkX3ZpZXdfZmlsbGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtcG9zaXRpdmUpO1xcbn1cXG4ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3RoZW1lX3dhcm5pbmcueWMtY2FyZF92aWV3X291dGxpbmVkIHtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtd2FybmluZyk7XFxufVxcbi55Yy1jYXJkX3R5cGVfY29udGFpbmVyLnljLWNhcmRfdGhlbWVfd2FybmluZy55Yy1jYXJkX3ZpZXdfZmlsbGVkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2Utd2FybmluZyk7XFxufVxcbi55Yy1jYXJkX3R5cGVfY29udGFpbmVyLnljLWNhcmRfdGhlbWVfZGFuZ2VyLnljLWNhcmRfdmlld19vdXRsaW5lZCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWRhbmdlcik7XFxufVxcbi55Yy1jYXJkX3R5cGVfY29udGFpbmVyLnljLWNhcmRfdGhlbWVfZGFuZ2VyLnljLWNhcmRfdmlld19maWxsZWQge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1kYW5nZXIpO1xcbn1cXG4ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3ZpZXdfcmFpc2VkIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtZmxvYXQpO1xcbn1cXG4ueWMtY2FyZF90eXBlX2NvbnRhaW5lci55Yy1jYXJkX3ZpZXdfcmFpc2VkLnljLWNhcmRfc2l6ZV9tIHtcXG4gIC0teWMtY2FyZC1ib3gtc2hhZG93OiAwcHggMXB4IDVweCB2YXIoLS15Yy1jb2xvci1zZngtc2hhZG93KTtcXG59XFxuXFxuLnljLWNhcmRfdHlwZV9jb250YWluZXIueWMtY2FyZF92aWV3X3JhaXNlZC55Yy1jYXJkX3NpemVfbCB7XFxuICAtLXljLWNhcmQtYm94LXNoYWRvdzogMHB4IDFweCA2cHggdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdy1saWdodCksXFxuICAgICAgMXB4IDNweCAxM3B4IHZhcigtLXljLWNvbG9yLXNmeC1zaGFkb3ctbGlnaHQpO1xcbn1cXG5cXG4ueWMtY2FyZF9zaXplX20ge1xcbiAgLS15Yy1jYXJkLWJvcmRlci1yYWRpdXM6IDhweDtcXG59XFxuLnljLWNhcmRfc2l6ZV9sIHtcXG4gIC0teWMtY2FyZC1ib3JkZXItcmFkaXVzOiAxNnB4O1xcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnljLWNoZWNrYm94X19pbmRpY2F0b3J7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOmluaGVyaXR9LnljLWNoZWNrYm94X19pbmRpY2F0b3I6OmJlZm9yZXtjb250ZW50OlxcXCJcXFwiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQpO2JvcmRlci1yYWRpdXM6NHB4O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMXMgbGluZWFyfS55Yy1jaGVja2JveF9faW5kaWNhdG9yOjphZnRlcntjb250ZW50OlxcXCLCoFxcXCI7dmlzaWJpbGl0eTpoaWRkZW59LnljLWNoZWNrYm94X19pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb2ludGVyLWV2ZW50czpub25lO3Zpc2liaWxpdHk6aGlkZGVuO2NvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTVweCk7dHJhbnNpdGlvbjpjb2xvciAuMXMsdHJhbnNmb3JtIC4yc30ueWMtY2hlY2tib3hfX2NvbnRyb2x7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWFyZ2luOjA7cGFkZGluZzowO29wYWNpdHk6MDtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO2N1cnNvcjppbmhlcml0fS55Yy1jaGVja2JveF9fb3V0bGluZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOm5vbmU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOjRweH0ueWMtY2hlY2tib3hfX2NvbnRyb2w6Zm9jdXMrLnljLWNoZWNrYm94X19vdXRsaW5le2JveC1zaGFkb3c6MCAwIDAgMnB4IHZhcigtLXljLWNvbG9yLWxpbmUtbWlzYyl9LnljLWNoZWNrYm94X19jb250cm9sOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkrLnljLWNoZWNrYm94X19vdXRsaW5le2JveC1zaGFkb3c6bm9uZX0ueWMtY2hlY2tib3hfc2l6ZV9tIC55Yy1jaGVja2JveF9faWNvbi1zdmdfdHlwZV90aWNre3dpZHRoOjhweDtoZWlnaHQ6MTBweH0ueWMtY2hlY2tib3hfc2l6ZV9tIC55Yy1jaGVja2JveF9faWNvbi1zdmdfdHlwZV9kYXNoe3dpZHRoOjEycHg7aGVpZ2h0OjEycHh9LnljLWNoZWNrYm94X3NpemVfbSAueWMtY2hlY2tib3hfX2luZGljYXRvcnt3aWR0aDoxNHB4O2hlaWdodDoxNHB4fS55Yy1jaGVja2JveF9zaXplX2wgLnljLWNoZWNrYm94X19pY29uLXN2Z190eXBlX3RpY2t7d2lkdGg6MTFweDtoZWlnaHQ6OXB4fS55Yy1jaGVja2JveF9zaXplX2wgLnljLWNoZWNrYm94X19pY29uLXN2Z190eXBlX2Rhc2h7d2lkdGg6MTVweDtoZWlnaHQ6MTVweH0ueWMtY2hlY2tib3hfc2l6ZV9sIC55Yy1jaGVja2JveF9faW5kaWNhdG9ye3dpZHRoOjE3cHg7aGVpZ2h0OjE3cHh9LnljLWNoZWNrYm94OmhvdmVyIC55Yy1jaGVja2JveF9faW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOnZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQtaG92ZXIpfS55Yy1jaGVja2JveF9jaGVja2VkIC55Yy1jaGVja2JveF9faW5kaWNhdG9yOjpiZWZvcmUsLnljLWNoZWNrYm94X2luZGV0ZXJtaW5hdGUgLnljLWNoZWNrYm94X19pbmRpY2F0b3I6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7Ym9yZGVyOnJnYmEoMCwwLDAsMCl9LnljLWNoZWNrYm94X2NoZWNrZWQgLnljLWNoZWNrYm94X19pY29uLC55Yy1jaGVja2JveF9pbmRldGVybWluYXRlIC55Yy1jaGVja2JveF9faWNvbnt2aXNpYmlsaXR5OnZpc2libGU7Y29sb3I6dmFyKC0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9LnljLWNoZWNrYm94X2Rpc2FibGVkIC55Yy1jaGVja2JveF9faW5kaWNhdG9yOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtYWNjZW50LWRpc2FibGVkKTtib3JkZXI6cmdiYSgwLDAsMCwwKX0ueWMtY2hlY2tib3hfZGlzYWJsZWQueWMtY2hlY2tib3hfY2hlY2tlZCAueWMtY2hlY2tib3hfX2luZGljYXRvcjo6YmVmb3JlLC55Yy1jaGVja2JveF9kaXNhYmxlZC55Yy1jaGVja2JveF9pbmRldGVybWluYXRlIC55Yy1jaGVja2JveF9faW5kaWNhdG9yOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpO29wYWNpdHk6LjV9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NoZWNrYm94L0NoZWNrYm94LmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSx3QkFDQSxvQkFDRSxDQUFBLGlCQUNBLENBQUEsY0FDQSxDQUFBLGdDQUVGLFVBQ0UsQ0FBQSxpQkFDQSxDQUFBLEtBQ0EsQ0FBQSxNQUNBLENBQUEsT0FDQSxDQUFBLFFBQ0EsQ0FBQSw4QkFDQSxDQUFBLG9EQUNBLENBQUEsaUJBQ0EsQ0FBQSxnQ0FDQSxDQUFBLCtCQUVGLFdBQ0UsQ0FBQSxpQkFDQSxDQUFBLG1CQUVGLGlCQUNFLENBQUEsS0FDQSxDQUFBLE1BQ0EsQ0FBQSxPQUNBLENBQUEsUUFDQSxDQUFBLFlBQ0EsQ0FBQSxrQkFDQSxDQUFBLHNCQUNBLENBQUEsbUJBQ0EsQ0FBQSxpQkFDQSxDQUFBLG1CQUNBLENBQUEsMEJBQ0EsQ0FBQSxrQ0FDQSxDQUFBLHNCQUVGLGlCQUNFLENBQUEsS0FDQSxDQUFBLE1BQ0EsQ0FBQSxVQUNBLENBQUEsV0FDQSxDQUFBLFFBQ0EsQ0FBQSxTQUNBLENBQUEsU0FDQSxDQUFBLGVBQ0EsQ0FBQSxXQUNBLENBQUEsWUFDQSxDQUFBLGNBQ0EsQ0FBQSxzQkFFRixpQkFDRSxDQUFBLEtBQ0EsQ0FBQSxNQUNBLENBQUEsVUFDQSxDQUFBLFdBQ0EsQ0FBQSxlQUNBLENBQUEsbUJBQ0EsQ0FBQSxpQkFDQSxDQUFBLGtEQUVGLDhDQUNFLENBQUEsc0VBRUYsZUFDRSxDQUFBLHFEQUVGLFNBQ0UsQ0FBQSxXQUNBLENBQUEscURBRUYsVUFDRSxDQUFBLFdBQ0EsQ0FBQSw0Q0FFRixVQUNFLENBQUEsV0FDQSxDQUFBLHFEQUVGLFVBQ0UsQ0FBQSxVQUNBLENBQUEscURBRUYsVUFDRSxDQUFBLFdBQ0EsQ0FBQSw0Q0FFRixVQUNFLENBQUEsV0FDQSxDQUFBLG1EQUVGLHNEQUNFLENBQUEsZ0hBRUYsNkNBQ0UsQ0FBQSxvQkFDQSxDQUFBLHNGQUVGLGtCQUNFLENBQUEsNENBQ0EsQ0FBQSx1QkFDQSxDQUFBLHNEQUVGLDZEQUNFLENBQUEsb0JBQ0EsQ0FBQSwwSkFFRiw2Q0FDRSxDQUFBLFVBQ0FcIixcInNvdXJjZXNDb250ZW50XCI6W1wiQGNoYXJzZXQgXFxcIlVURi04XFxcIjtcXG4ueWMtY2hlY2tib3hfX2luZGljYXRvciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBjdXJzb3I6IGluaGVyaXQ7XFxufVxcbi55Yy1jaGVja2JveF9faW5kaWNhdG9yOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZ2VuZXJpYy1hY2NlbnQpO1xcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjFzIGxpbmVhcjtcXG59XFxuLnljLWNoZWNrYm94X19pbmRpY2F0b3I6OmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCLCoFxcXCI7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxufVxcbi55Yy1jaGVja2JveF9faWNvbiB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7XFxuICB0cmFuc2l0aW9uOiBjb2xvciAwLjFzLCB0cmFuc2Zvcm0gMC4ycztcXG59XFxuLnljLWNoZWNrYm94X19jb250cm9sIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICBvcGFjaXR5OiAwO1xcbiAgYmFja2dyb3VuZDogbm9uZTtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICBjdXJzb3I6IGluaGVyaXQ7XFxufVxcbi55Yy1jaGVja2JveF9fb3V0bGluZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxufVxcbi55Yy1jaGVja2JveF9fY29udHJvbDpmb2N1cyArIC55Yy1jaGVja2JveF9fb3V0bGluZSB7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0teWMtY29sb3ItbGluZS1taXNjKTtcXG59XFxuLnljLWNoZWNrYm94X19jb250cm9sOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkgKyAueWMtY2hlY2tib3hfX291dGxpbmUge1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG59XFxuLnljLWNoZWNrYm94X3NpemVfbSAueWMtY2hlY2tib3hfX2ljb24tc3ZnX3R5cGVfdGljayB7XFxuICB3aWR0aDogOHB4O1xcbiAgaGVpZ2h0OiAxMHB4O1xcbn1cXG4ueWMtY2hlY2tib3hfc2l6ZV9tIC55Yy1jaGVja2JveF9faWNvbi1zdmdfdHlwZV9kYXNoIHtcXG4gIHdpZHRoOiAxMnB4O1xcbiAgaGVpZ2h0OiAxMnB4O1xcbn1cXG4ueWMtY2hlY2tib3hfc2l6ZV9tIC55Yy1jaGVja2JveF9faW5kaWNhdG9yIHtcXG4gIHdpZHRoOiAxNHB4O1xcbiAgaGVpZ2h0OiAxNHB4O1xcbn1cXG4ueWMtY2hlY2tib3hfc2l6ZV9sIC55Yy1jaGVja2JveF9faWNvbi1zdmdfdHlwZV90aWNrIHtcXG4gIHdpZHRoOiAxMXB4O1xcbiAgaGVpZ2h0OiA5cHg7XFxufVxcbi55Yy1jaGVja2JveF9zaXplX2wgLnljLWNoZWNrYm94X19pY29uLXN2Z190eXBlX2Rhc2gge1xcbiAgd2lkdGg6IDE1cHg7XFxuICBoZWlnaHQ6IDE1cHg7XFxufVxcbi55Yy1jaGVja2JveF9zaXplX2wgLnljLWNoZWNrYm94X19pbmRpY2F0b3Ige1xcbiAgd2lkdGg6IDE3cHg7XFxuICBoZWlnaHQ6IDE3cHg7XFxufVxcbi55Yy1jaGVja2JveDpob3ZlciAueWMtY2hlY2tib3hfX2luZGljYXRvcjo6YmVmb3JlIHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljLWFjY2VudC1ob3Zlcik7XFxufVxcbi55Yy1jaGVja2JveF9jaGVja2VkIC55Yy1jaGVja2JveF9faW5kaWNhdG9yOjpiZWZvcmUsIC55Yy1jaGVja2JveF9pbmRldGVybWluYXRlIC55Yy1jaGVja2JveF9faW5kaWNhdG9yOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTtcXG4gIGJvcmRlcjogdHJhbnNwYXJlbnQ7XFxufVxcbi55Yy1jaGVja2JveF9jaGVja2VkIC55Yy1jaGVja2JveF9faWNvbiwgLnljLWNoZWNrYm94X2luZGV0ZXJtaW5hdGUgLnljLWNoZWNrYm94X19pY29uIHtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICBjb2xvcjogdmFyKC0teWMtbXktY29sb3ItYnJhbmQtdGV4dC1jb250cmFzdCk7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxufVxcbi55Yy1jaGVja2JveF9kaXNhYmxlZCAueWMtY2hlY2tib3hfX2luZGljYXRvcjo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQtZGlzYWJsZWQpO1xcbiAgYm9yZGVyOiB0cmFuc3BhcmVudDtcXG59XFxuLnljLWNoZWNrYm94X2Rpc2FibGVkLnljLWNoZWNrYm94X2NoZWNrZWQgLnljLWNoZWNrYm94X19pbmRpY2F0b3I6OmJlZm9yZSwgLnljLWNoZWNrYm94X2Rpc2FibGVkLnljLWNoZWNrYm94X2luZGV0ZXJtaW5hdGUgLnljLWNoZWNrYm94X19pbmRpY2F0b3I6OmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpO1xcbiAgb3BhY2l0eTogMC41O1xcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnljLWNsaXBib2FyZC1idXR0b257LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdHJhbnNwYXJlbnR9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NsaXBib2FyZEJ1dHRvbi9DbGlwYm9hcmRCdXR0b24uY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLHFCQUNFLHlDQUFBLENBQ0EsK0NBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnljLWNsaXBib2FyZC1idXR0b24ge1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAtLXljLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiB0cmFuc3BhcmVudDtcXG59XCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi55Yy1jbGlwYm9hcmQtaWNvbl9fc3RhdGV7YW5pbWF0aW9uOnljLWNsaXBib2FyZC1pY29uLXN0YXRlLWRhc2ggMXN9QGtleWZyYW1lcyB5Yy1jbGlwYm9hcmQtaWNvbi1zdGF0ZS1kYXNoezAle3N0cm9rZS1kYXNoYXJyYXk6MCAxNX00MCV7c3Ryb2tlLWRhc2hhcnJheToxNSAwfTEwMCV7c3Ryb2tlLWRhc2hhcnJheToxNSAwfX1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvQ2xpcGJvYXJkSWNvbi9DbGlwYm9hcmRJY29uLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSwwQkFDRSx5Q0FBQSxDQUdGLHdDQUNFLEdBQ0UscUJBQUEsQ0FFRixJQUNFLHFCQUFBLENBRUYsS0FDRSxxQkFBQSxDQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi55Yy1jbGlwYm9hcmQtaWNvbl9fc3RhdGUge1xcbiAgYW5pbWF0aW9uOiB5Yy1jbGlwYm9hcmQtaWNvbi1zdGF0ZS1kYXNoIDFzO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIHljLWNsaXBib2FyZC1pY29uLXN0YXRlLWRhc2gge1xcbiAgMCUge1xcbiAgICBzdHJva2UtZGFzaGFycmF5OiAwIDE1O1xcbiAgfVxcbiAgNDAlIHtcXG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMTUgMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxNSAwO1xcbiAgfVxcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnljLWNvbnRyb2wtbGFiZWx7ZGlzcGxheTppbmxpbmUtZmxleDtmb250LWZhbWlseTp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC1mYW1pbHkpO2ZvbnQtd2VpZ2h0Om5vcm1hbDtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO3VzZXItc2VsZWN0Om5vbmU7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTtjdXJzb3I6cG9pbnRlcn0ueWMtY29udHJvbC1sYWJlbF9kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdDtwb2ludGVyLWV2ZW50czpub25lfS55Yy1jb250cm9sLWxhYmVsX3NpemVfbXtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDoxNXB4fS55Yy1jb250cm9sLWxhYmVsX3NpemVfbHtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxOHB4fS55Yy1jb250cm9sLWxhYmVsX19pbmRpY2F0b3J7ZmxleC1zaHJpbms6MH0ueWMtY29udHJvbC1sYWJlbF9fdGV4dHtmbGV4LWdyb3c6MTt3aGl0ZS1zcGFjZTpub3JtYWx9LnljLWNvbnRyb2wtbGFiZWxfZGlzYWJsZWQgLnljLWNvbnRyb2wtbGFiZWxfX3RleHR7b3BhY2l0eTouNn0ueWMtY29udHJvbC1sYWJlbF9zaXplX20gLnljLWNvbnRyb2wtbGFiZWxfX3RleHR7bWFyZ2luLWxlZnQ6NXB4fS55Yy1jb250cm9sLWxhYmVsX3NpemVfbCAueWMtY29udHJvbC1sYWJlbF9fdGV4dHttYXJnaW4tbGVmdDo3cHh9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL0NvbnRyb2xMYWJlbC9Db250cm9sTGFiZWwuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGtCQUNFLG1CQUFBLENBQ0EsMkNBQUEsQ0FDQSxrQkFBQSxDQUNBLGtDQUFBLENBQ0EsZ0JBQUEsQ0FDQSx5QkFBQSxDQUNBLHlDQUFBLENBQ0EsY0FBQSxDQUVGLDJCQUNFLGNBQUEsQ0FDQSxtQkFBQSxDQUVGLHlCQUNFLGNBQUEsQ0FDQSxnQkFBQSxDQUVGLHlCQUNFLGNBQUEsQ0FDQSxnQkFBQSxDQUVGLDZCQUNFLGFBQUEsQ0FFRix3QkFDRSxXQUFBLENBQ0Esa0JBQUEsQ0FFRixtREFDRSxVQUFBLENBRUYsaURBQ0UsZUFBQSxDQUVGLGlEQUNFLGVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnljLWNvbnRyb2wtbGFiZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBmb250LWZhbWlseTogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtZmFtaWx5KTtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XFxuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcbi55Yy1jb250cm9sLWxhYmVsX2Rpc2FibGVkIHtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbn1cXG4ueWMtY29udHJvbC1sYWJlbF9zaXplX20ge1xcbiAgZm9udC1zaXplOiAxM3B4O1xcbiAgbGluZS1oZWlnaHQ6IDE1cHg7XFxufVxcbi55Yy1jb250cm9sLWxhYmVsX3NpemVfbCB7XFxuICBmb250LXNpemU6IDE1cHg7XFxuICBsaW5lLWhlaWdodDogMThweDtcXG59XFxuLnljLWNvbnRyb2wtbGFiZWxfX2luZGljYXRvciB7XFxuICBmbGV4LXNocmluazogMDtcXG59XFxuLnljLWNvbnRyb2wtbGFiZWxfX3RleHQge1xcbiAgZmxleC1ncm93OiAxO1xcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXG59XFxuLnljLWNvbnRyb2wtbGFiZWxfZGlzYWJsZWQgLnljLWNvbnRyb2wtbGFiZWxfX3RleHQge1xcbiAgb3BhY2l0eTogMC42O1xcbn1cXG4ueWMtY29udHJvbC1sYWJlbF9zaXplX20gLnljLWNvbnRyb2wtbGFiZWxfX3RleHQge1xcbiAgbWFyZ2luLWxlZnQ6IDVweDtcXG59XFxuLnljLWNvbnRyb2wtbGFiZWxfc2l6ZV9sIC55Yy1jb250cm9sLWxhYmVsX190ZXh0IHtcXG4gIG1hcmdpbi1sZWZ0OiA3cHg7XFxufVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIueWMtaWNvbntjb2xvcjppbmhlcml0O2xpbmUtaGVpZ2h0OjA7dmVydGljYWwtYWxpZ246dG9wfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9JY29uL0ljb24uY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLFNBQ0UsYUFBQSxDQUNBLGFBQUEsQ0FDQSxrQkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIueWMtaWNvbiB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiAwO1xcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcXG59XCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi55Yy1saXN0e291dGxpbmU6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZsZXg6MSAxIGF1dG87d2lkdGg6MTAwJX0ueWMtbGlzdF9fZmlsdGVye3BhZGRpbmc6MCB2YXIoLS15Yy1saXN0LW1hcmdpbik7bWFyZ2luLWJvdHRvbTo4cHg7ZmxleDowIDAgYXV0b30ueWMtbGlzdF9faXRlbXN7ZmxleDoxIDEgYXV0b30ueWMtbGlzdF9faXRlbXNfdmlydHVhbGl6ZWR7aGVpZ2h0OnZhcigtLXljLWxpc3QtaGVpZ2h0KX0ueWMtbGlzdF9faXRlbSwueWMtbGlzdF9fZW1wdHktcGxhY2Vob2xkZXJ7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzowIHZhcigtLXljLWxpc3QtbWFyZ2luKTt1c2VyLXNlbGVjdDpub25lO292ZXJmbG93OmhpZGRlbn0ueWMtbGlzdF9faXRlbXtoZWlnaHQ6dmFyKC0teWMtbGlzdC1pdGVtLWhlaWdodCl9LnljLWxpc3RfX2l0ZW1fc29ydGFibGV7Y3Vyc29yOm1vdmV9LnljLWxpc3RfX2l0ZW1fc29ydGluZ3t6LWluZGV4OjEwMDAwMTtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyLXNvbGlkKTtwYWRkaW5nOjAgdmFyKC0teWMtbGlzdC1tYXJnaW4pO2N1cnNvcjptb3ZlfS55Yy1saXN0X19pdGVtX2FjdGl2ZXtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2Utc2ltcGxlLWhvdmVyKX0ueWMtbGlzdF9faXRlbV9zZWxlY3RlZHtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uKX0ueWMtbGlzdF9faXRlbV9zb3J0LWhhbmRsZS1hbGlnbl9yaWdodHtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZX0ueWMtbGlzdF9faXRlbV9zb3J0LWhhbmRsZS1hbGlnbl9yaWdodCAueWMtbGlzdF9faXRlbS1zb3J0LWljb257bWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MH0ueWMtbGlzdF9fZW1wdHktcGxhY2Vob2xkZXJ7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtaGludCk7bWluLWhlaWdodDozNnB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9LnljLWxpc3RfX2l0ZW0tY29udGVudHtmbGV4OjEgMSBhdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7aGVpZ2h0OjEwMCV9LnljLWxpc3RfX2l0ZW0tc29ydC1pY29ue2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6NnB4O21hcmdpbi1yaWdodDoxMHB4O2ZsZXg6MCAwIGF1dG87Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1oaW50KX1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvTGlzdC9MaXN0LmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSxTQUNFLFlBQUEsQ0FDQSxZQUFBLENBQ0EscUJBQUEsQ0FDQSxhQUFBLENBQ0EsVUFBQSxDQUVGLGlCQUNFLCtCQUFBLENBQ0EsaUJBQUEsQ0FDQSxhQUFBLENBRUYsZ0JBQ0UsYUFBQSxDQUVGLDRCQUNFLDRCQUFBLENBRUYsMkNBQ0UscUJBQUEsQ0FDQSxZQUFBLENBQ0Esa0JBQUEsQ0FDQSwrQkFBQSxDQUNBLGdCQUFBLENBQ0EsZUFBQSxDQUVGLGVBQ0UsaUNBQUEsQ0FFRix3QkFDRSxXQUFBLENBRUYsdUJBQ0UsY0FBQSxDQUNBLGtEQUFBLENBQ0EsK0JBQUEsQ0FDQSxXQUFBLENBRUYsc0JBQ0UsNENBQUEsQ0FFRix3QkFDRSx5Q0FBQSxDQUVGLHVDQUNFLDBCQUFBLENBRUYsZ0VBQ0UsZ0JBQUEsQ0FDQSxjQUFBLENBRUYsNEJBQ0UscUJBQUEsQ0FDQSwrQkFBQSxDQUNBLGVBQUEsQ0FDQSxlQUFBLENBQ0Esa0JBQUEsQ0FFRix1QkFDRSxhQUFBLENBQ0EsWUFBQSxDQUNBLGtCQUFBLENBQ0EsZUFBQSxDQUNBLHNCQUFBLENBQ0EsV0FBQSxDQUVGLHlCQUNFLFlBQUEsQ0FDQSxrQkFBQSxDQUNBLFNBQUEsQ0FDQSxpQkFBQSxDQUNBLGFBQUEsQ0FDQSwrQkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIueWMtbGlzdCB7XFxuICBvdXRsaW5lOiBub25lO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBmbGV4OiAxIDEgYXV0bztcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG4ueWMtbGlzdF9fZmlsdGVyIHtcXG4gIHBhZGRpbmc6IDAgdmFyKC0teWMtbGlzdC1tYXJnaW4pO1xcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbiAgZmxleDogMCAwIGF1dG87XFxufVxcbi55Yy1saXN0X19pdGVtcyB7XFxuICBmbGV4OiAxIDEgYXV0bztcXG59XFxuLnljLWxpc3RfX2l0ZW1zX3ZpcnR1YWxpemVkIHtcXG4gIGhlaWdodDogdmFyKC0teWMtbGlzdC1oZWlnaHQpO1xcbn1cXG4ueWMtbGlzdF9faXRlbSwgLnljLWxpc3RfX2VtcHR5LXBsYWNlaG9sZGVyIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHBhZGRpbmc6IDAgdmFyKC0teWMtbGlzdC1tYXJnaW4pO1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG4ueWMtbGlzdF9faXRlbSB7XFxuICBoZWlnaHQ6IHZhcigtLXljLWxpc3QtaXRlbS1oZWlnaHQpO1xcbn1cXG4ueWMtbGlzdF9faXRlbV9zb3J0YWJsZSB7XFxuICBjdXJzb3I6IG1vdmU7XFxufVxcbi55Yy1saXN0X19pdGVtX3NvcnRpbmcge1xcbiAgei1pbmRleDogMTAwMDAxO1xcbiAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1zaW1wbGUtaG92ZXItc29saWQpO1xcbiAgcGFkZGluZzogMCB2YXIoLS15Yy1saXN0LW1hcmdpbik7XFxuICBjdXJzb3I6IG1vdmU7XFxufVxcbi55Yy1saXN0X19pdGVtX2FjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS15Yy1jb2xvci1iYXNlLXNpbXBsZS1ob3Zlcik7XFxufVxcbi55Yy1saXN0X19pdGVtX3NlbGVjdGVkIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLXljLWNvbG9yLWJhc2Utc2VsZWN0aW9uKTtcXG59XFxuLnljLWxpc3RfX2l0ZW1fc29ydC1oYW5kbGUtYWxpZ25fcmlnaHQge1xcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xcbn1cXG4ueWMtbGlzdF9faXRlbV9zb3J0LWhhbmRsZS1hbGlnbl9yaWdodCAueWMtbGlzdF9faXRlbS1zb3J0LWljb24ge1xcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XFxuICBtYXJnaW4tcmlnaHQ6IDA7XFxufVxcbi55Yy1saXN0X19lbXB0eS1wbGFjZWhvbGRlciB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtaGludCk7XFxuICBtaW4taGVpZ2h0OiAzNnB4O1xcbiAgcGFkZGluZy10b3A6IDhweDtcXG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XFxufVxcbi55Yy1saXN0X19pdGVtLWNvbnRlbnQge1xcbiAgZmxleDogMSAxIGF1dG87XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLnljLWxpc3RfX2l0ZW0tc29ydC1pY29uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgd2lkdGg6IDZweDtcXG4gIG1hcmdpbi1yaWdodDogMTBweDtcXG4gIGZsZXg6IDAgMCBhdXRvO1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtaGludCk7XFxufVwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCJAa2V5ZnJhbWVzIHljLXB1bHNlezUwJXtvcGFjaXR5OjE1JX19LnljLWxvYWRlcntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ueWMtbG9hZGVyX19sZWZ0LC55Yy1sb2FkZXJfX2NlbnRlciwueWMtbG9hZGVyX19yaWdodHtiYWNrZ3JvdW5kOnZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7YW5pbWF0aW9uOnljLXB1bHNlIGVhc2UgODAwbXMgaW5maW5pdGV9LnljLWxvYWRlcl9fbGVmdHthbmltYXRpb24tZGVsYXk6MjAwbXN9LnljLWxvYWRlcl9fY2VudGVye2FuaW1hdGlvbi1kZWxheTo0MDBtc30ueWMtbG9hZGVyX19yaWdodHthbmltYXRpb24tZGVsYXk6NjAwbXN9LnljLWxvYWRlcl9zaXplX3MgLnljLWxvYWRlcl9fbGVmdHtoZWlnaHQ6MTMuMzMzMzMzMzMzM3B4O3dpZHRoOjVweH0ueWMtbG9hZGVyX3NpemVfcyAueWMtbG9hZGVyX19jZW50ZXJ7d2lkdGg6NXB4O2hlaWdodDoyMHB4O21hcmdpbi1sZWZ0OjVweH0ueWMtbG9hZGVyX3NpemVfcyAueWMtbG9hZGVyX19yaWdodHtoZWlnaHQ6MTMuMzMzMzMzMzMzM3B4O3dpZHRoOjVweDttYXJnaW4tbGVmdDo1cHh9LnljLWxvYWRlcl9zaXplX20gLnljLWxvYWRlcl9fbGVmdHtoZWlnaHQ6MTguNjY2NjY2NjY2N3B4O3dpZHRoOjdweH0ueWMtbG9hZGVyX3NpemVfbSAueWMtbG9hZGVyX19jZW50ZXJ7d2lkdGg6N3B4O2hlaWdodDoyOHB4O21hcmdpbi1sZWZ0OjdweH0ueWMtbG9hZGVyX3NpemVfbSAueWMtbG9hZGVyX19yaWdodHtoZWlnaHQ6MTguNjY2NjY2NjY2N3B4O3dpZHRoOjdweDttYXJnaW4tbGVmdDo3cHh9LnljLWxvYWRlcl9zaXplX2wgLnljLWxvYWRlcl9fbGVmdHtoZWlnaHQ6MjRweDt3aWR0aDo5cHh9LnljLWxvYWRlcl9zaXplX2wgLnljLWxvYWRlcl9fY2VudGVye3dpZHRoOjlweDtoZWlnaHQ6MzZweDttYXJnaW4tbGVmdDo5cHh9LnljLWxvYWRlcl9zaXplX2wgLnljLWxvYWRlcl9fcmlnaHR7aGVpZ2h0OjI0cHg7d2lkdGg6OXB4O21hcmdpbi1sZWZ0OjlweH1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvTG9hZGVyL0xvYWRlci5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsb0JBQ0UsSUFDRSxXQUFBLENBQUEsQ0FHSixXQUNFLG1CQUFBLENBQ0Esa0JBQUEsQ0FFRixzREFDRSx1Q0FBQSxDQUNBLHNDQUFBLENBRUYsaUJBQ0UscUJBQUEsQ0FFRixtQkFDRSxxQkFBQSxDQUVGLGtCQUNFLHFCQUFBLENBRUYsbUNBQ0Usc0JBQUEsQ0FDQSxTQUFBLENBRUYscUNBQ0UsU0FBQSxDQUNBLFdBQUEsQ0FDQSxlQUFBLENBRUYsb0NBQ0Usc0JBQUEsQ0FDQSxTQUFBLENBQ0EsZUFBQSxDQUVGLG1DQUNFLHNCQUFBLENBQ0EsU0FBQSxDQUVGLHFDQUNFLFNBQUEsQ0FDQSxXQUFBLENBQ0EsZUFBQSxDQUVGLG9DQUNFLHNCQUFBLENBQ0EsU0FBQSxDQUNBLGVBQUEsQ0FFRixtQ0FDRSxXQUFBLENBQ0EsU0FBQSxDQUVGLHFDQUNFLFNBQUEsQ0FDQSxXQUFBLENBQ0EsZUFBQSxDQUVGLG9DQUNFLFdBQUEsQ0FDQSxTQUFBLENBQ0EsZUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAa2V5ZnJhbWVzIHljLXB1bHNlIHtcXG4gIDUwJSB7XFxuICAgIG9wYWNpdHk6IDE1JTtcXG4gIH1cXG59XFxuLnljLWxvYWRlciB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi55Yy1sb2FkZXJfX2xlZnQsIC55Yy1sb2FkZXJfX2NlbnRlciwgLnljLWxvYWRlcl9fcmlnaHQge1xcbiAgYmFja2dyb3VuZDogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTtcXG4gIGFuaW1hdGlvbjogeWMtcHVsc2UgZWFzZSA4MDBtcyBpbmZpbml0ZTtcXG59XFxuLnljLWxvYWRlcl9fbGVmdCB7XFxuICBhbmltYXRpb24tZGVsYXk6IDIwMG1zO1xcbn1cXG4ueWMtbG9hZGVyX19jZW50ZXIge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiA0MDBtcztcXG59XFxuLnljLWxvYWRlcl9fcmlnaHQge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiA2MDBtcztcXG59XFxuLnljLWxvYWRlcl9zaXplX3MgLnljLWxvYWRlcl9fbGVmdCB7XFxuICBoZWlnaHQ6IGNhbGMoMjBweCAvIDEuNSk7XFxuICB3aWR0aDogNXB4O1xcbn1cXG4ueWMtbG9hZGVyX3NpemVfcyAueWMtbG9hZGVyX19jZW50ZXIge1xcbiAgd2lkdGg6IDVweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIG1hcmdpbi1sZWZ0OiA1cHg7XFxufVxcbi55Yy1sb2FkZXJfc2l6ZV9zIC55Yy1sb2FkZXJfX3JpZ2h0IHtcXG4gIGhlaWdodDogY2FsYygyMHB4IC8gMS41KTtcXG4gIHdpZHRoOiA1cHg7XFxuICBtYXJnaW4tbGVmdDogNXB4O1xcbn1cXG4ueWMtbG9hZGVyX3NpemVfbSAueWMtbG9hZGVyX19sZWZ0IHtcXG4gIGhlaWdodDogY2FsYygyOHB4IC8gMS41KTtcXG4gIHdpZHRoOiA3cHg7XFxufVxcbi55Yy1sb2FkZXJfc2l6ZV9tIC55Yy1sb2FkZXJfX2NlbnRlciB7XFxuICB3aWR0aDogN3B4O1xcbiAgaGVpZ2h0OiAyOHB4O1xcbiAgbWFyZ2luLWxlZnQ6IDdweDtcXG59XFxuLnljLWxvYWRlcl9zaXplX20gLnljLWxvYWRlcl9fcmlnaHQge1xcbiAgaGVpZ2h0OiBjYWxjKDI4cHggLyAxLjUpO1xcbiAgd2lkdGg6IDdweDtcXG4gIG1hcmdpbi1sZWZ0OiA3cHg7XFxufVxcbi55Yy1sb2FkZXJfc2l6ZV9sIC55Yy1sb2FkZXJfX2xlZnQge1xcbiAgaGVpZ2h0OiBjYWxjKDM2cHggLyAxLjUpO1xcbiAgd2lkdGg6IDlweDtcXG59XFxuLnljLWxvYWRlcl9zaXplX2wgLnljLWxvYWRlcl9fY2VudGVyIHtcXG4gIHdpZHRoOiA5cHg7XFxuICBoZWlnaHQ6IDM2cHg7XFxuICBtYXJnaW4tbGVmdDogOXB4O1xcbn1cXG4ueWMtbG9hZGVyX3NpemVfbCAueWMtbG9hZGVyX19yaWdodCB7XFxuICBoZWlnaHQ6IGNhbGMoMzZweCAvIDEuNSk7XFxuICB3aWR0aDogOXB4O1xcbiAgbWFyZ2luLWxlZnQ6IDlweDtcXG59XCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi55Yy1wb3B1cHstLXljLXBvcHVwLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtZmxvYXQpOy0teWMtcG9wdXAtYm9yZGVyLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1saW5lLXNvbGlkKTstLXljLXBvcHVwLWJvcmRlci13aWR0aDogMXB4O3Bvc2l0aW9uOnJlbGF0aXZlO2FuaW1hdGlvbi1kdXJhdGlvbjouMXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDthbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzO2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQtY29sb3I6dmFyKC0teWMtcG9wdXAtYmFja2dyb3VuZC1jb2xvcik7Ym94LXNoYWRvdzowIDAgMCB2YXIoLS15Yy1wb3B1cC1ib3JkZXItd2lkdGgpIHZhcigtLXljLXBvcHVwLWJvcmRlci1jb2xvciksMCA4cHggMjBweCB2YXIoLS15Yy1wb3B1cC1ib3JkZXItd2lkdGgpIHZhcigtLXljLWNvbG9yLXNmeC1zaGFkb3cpO291dGxpbmU6bm9uZX0ueWMtcG9wdXA+OmZpcnN0LWNoaWxkOm5vdCgueWMtcG9wdXBfX2Fycm93KSwueWMtcG9wdXA+LnljLXBvcHVwX19hcnJvdysqe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6aW5oZXJpdDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czppbmhlcml0fS55Yy1wb3B1cD46bGFzdC1jaGlsZHtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOmluaGVyaXQ7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6aW5oZXJpdH0ueWMtcG9wdXBfX2Fycm93LWNvbnRlbnR7d2lkdGg6MThweDtoZWlnaHQ6MThweDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4fS55Yy1wb3B1cF9fYXJyb3ctY2lyY2xlLXdyYXBwZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApO292ZXJmbG93OmhpZGRlbjt3aWR0aDo5cHg7aGVpZ2h0OjlweDtwb3NpdGlvbjpyZWxhdGl2ZX0ueWMtcG9wdXBfX2Fycm93LWNpcmNsZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNoYWRvdzppbnNldCAwIDAgMCBjYWxjKDVweCAtIHZhcigtLXljLXBvcHVwLWJvcmRlci13aWR0aCkpIHZhcigtLXljLXBvcHVwLWJhY2tncm91bmQtY29sb3IpLGluc2V0IDAgMCAwIDVweCB2YXIoLS15Yy1wb3B1cC1ib3JkZXItY29sb3IpO3dpZHRoOjI4cHg7aGVpZ2h0OjMwcHg7cG9zaXRpb246YWJzb2x1dGV9LnljLXBvcHVwX19hcnJvdy1jaXJjbGVfbGVmdHtyaWdodDotNXB4O2JvdHRvbTotNHB4fS55Yy1wb3B1cF9fYXJyb3ctY2lyY2xlX3JpZ2h0e2xlZnQ6LTVweDtib3R0b206LTRweH0ueWMtcG9wdXAtd3JhcHBlcnt6LWluZGV4OjEwMDA7dmlzaWJpbGl0eTpoaWRkZW59LnljLXBvcHVwLXdyYXBwZXJfb3BlbiwueWMtcG9wdXAtd3JhcHBlcl9leGl0X2FjdGl2ZXt2aXNpYmlsaXR5OnZpc2libGV9LnljLXBvcHVwLXdyYXBwZXJfZXhpdF9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1ib3R0b21dIC55Yy1wb3B1cHthbmltYXRpb24tbmFtZTp5Yy1wb3B1cC1ib3R0b219LnljLXBvcHVwLXdyYXBwZXJfZXhpdF9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj10b3BdIC55Yy1wb3B1cHthbmltYXRpb24tbmFtZTp5Yy1wb3B1cC10b3B9LnljLXBvcHVwLXdyYXBwZXJfZXhpdF9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1sZWZ0XSAueWMtcG9wdXB7YW5pbWF0aW9uLW5hbWU6eWMtcG9wdXAtbGVmdH0ueWMtcG9wdXAtd3JhcHBlcl9leGl0X2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPXJpZ2h0XSAueWMtcG9wdXB7YW5pbWF0aW9uLW5hbWU6eWMtcG9wdXAtcmlnaHR9LnljLXBvcHVwLXdyYXBwZXJfZW50ZXJfYWN0aXZlW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9Ym90dG9tXSAueWMtcG9wdXAsLnljLXBvcHVwLXdyYXBwZXJfYXBwZWFyX2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPWJvdHRvbV0gLnljLXBvcHVwe2FuaW1hdGlvbi1uYW1lOnljLXBvcHVwLWJvdHRvbS1vcGVufS55Yy1wb3B1cC13cmFwcGVyX2VudGVyX2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPXRvcF0gLnljLXBvcHVwLC55Yy1wb3B1cC13cmFwcGVyX2FwcGVhcl9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj10b3BdIC55Yy1wb3B1cHthbmltYXRpb24tbmFtZTp5Yy1wb3B1cC10b3Atb3Blbn0ueWMtcG9wdXAtd3JhcHBlcl9lbnRlcl9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1sZWZ0XSAueWMtcG9wdXAsLnljLXBvcHVwLXdyYXBwZXJfYXBwZWFyX2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPWxlZnRdIC55Yy1wb3B1cHthbmltYXRpb24tbmFtZTp5Yy1wb3B1cC1sZWZ0LW9wZW59LnljLXBvcHVwLXdyYXBwZXJfZW50ZXJfYWN0aXZlW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9cmlnaHRdIC55Yy1wb3B1cCwueWMtcG9wdXAtd3JhcHBlcl9hcHBlYXJfYWN0aXZlW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9cmlnaHRdIC55Yy1wb3B1cHthbmltYXRpb24tbmFtZTp5Yy1wb3B1cC1yaWdodC1vcGVufS55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9Ym90dG9tXSAueWMtcG9wdXBfX2Fycm93e3RvcDotOXB4fS55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9dG9wXSAueWMtcG9wdXBfX2Fycm93e2JvdHRvbTotOXB4fS55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9dG9wXSAueWMtcG9wdXBfX2Fycm93LWNvbnRlbnR7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfS55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9bGVmdF0gLnljLXBvcHVwX19hcnJvd3tyaWdodDotOXB4fS55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9bGVmdF0gLnljLXBvcHVwX19hcnJvdy1jb250ZW50e3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9cmlnaHRdIC55Yy1wb3B1cF9fYXJyb3d7bGVmdDotOXB4fS55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9cmlnaHRdIC55Yy1wb3B1cF9fYXJyb3ctY29udGVudHt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyl9QGtleWZyYW1lcyB5Yy1wb3B1cC1ib3R0b217MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfTEwMCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwcHgpfX1Aa2V5ZnJhbWVzIHljLXBvcHVwLWJvdHRvbS1vcGVuezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMHB4KX0xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyB5Yy1wb3B1cC10b3B7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfTEwMCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xMHB4KX19QGtleWZyYW1lcyB5Yy1wb3B1cC10b3Atb3BlbnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEwcHgpfTEwMCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfX1Aa2V5ZnJhbWVzIHljLXBvcHVwLWxlZnR7MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGVYKDApfTEwMCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMHB4KX19QGtleWZyYW1lcyB5Yy1wb3B1cC1sZWZ0LW9wZW57MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0xMHB4KX0xMDAle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX19QGtleWZyYW1lcyB5Yy1wb3B1cC1yaWdodHswJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9MTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9fUBrZXlmcmFtZXMgeWMtcG9wdXAtcmlnaHQtb3BlbnswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTBweCl9MTAwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9Qb3B1cC9Qb3B1cC5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUEsVUFDRSx1REFBQSxDQUNBLG1EQUFBLENBQ0EsNEJBQUEsQ0FDQSxpQkFBQSxDQUNBLHNCQUFBLENBQ0Esa0NBQUEsQ0FDQSw0QkFBQSxDQUNBLGlCQUFBLENBQ0EsaURBQUEsQ0FDQSw2SUFBQSxDQUNBLFlBQUEsQ0FFRiwwRUFDRSw4QkFBQSxDQUNBLCtCQUFBLENBRUYsc0JBQ0UsaUNBQUEsQ0FDQSxrQ0FBQSxDQUVGLHlCQUNFLFVBQUEsQ0FDQSxXQUFBLENBQ0EsaUJBQUEsQ0FDQSxlQUFBLENBQ0EsWUFBQSxDQUVGLGdDQUNFLDhCQUFBLENBQ0EsZUFBQSxDQUNBLFNBQUEsQ0FDQSxVQUFBLENBQ0EsaUJBQUEsQ0FFRix3QkFDRSxxQkFBQSxDQUNBLGlCQUFBLENBQ0EsNklBQUEsQ0FDQSxVQUFBLENBQ0EsV0FBQSxDQUNBLGlCQUFBLENBRUYsNkJBQ0UsVUFBQSxDQUNBLFdBQUEsQ0FFRiw4QkFDRSxTQUFBLENBQ0EsV0FBQSxDQUdGLGtCQUNFLFlBQUEsQ0FDQSxpQkFBQSxDQUVGLHFEQUNFLGtCQUFBLENBRUYsdUVBQ0UsOEJBQUEsQ0FFRixvRUFDRSwyQkFBQSxDQUVGLHFFQUNFLDRCQUFBLENBRUYsc0VBQ0UsNkJBQUEsQ0FFRixpSkFDRSxtQ0FBQSxDQUVGLDJJQUNFLGdDQUFBLENBRUYsNklBQ0UsaUNBQUEsQ0FFRiwrSUFDRSxrQ0FBQSxDQUVGLGtFQUNFLFFBQUEsQ0FFRiwrREFDRSxXQUFBLENBRUYsdUVBQ0Usd0JBQUEsQ0FFRixnRUFDRSxVQUFBLENBRUYsd0VBQ0UsdUJBQUEsQ0FFRixpRUFDRSxTQUFBLENBRUYseUVBQ0Usd0JBQUEsQ0FHRiwyQkFDRSxHQUNFLFNBQUEsQ0FDQSx1QkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLDBCQUFBLENBQUEsQ0FHSixnQ0FDRSxHQUNFLFNBQUEsQ0FDQSwwQkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLHVCQUFBLENBQUEsQ0FHSix3QkFDRSxHQUNFLFNBQUEsQ0FDQSx1QkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLDJCQUFBLENBQUEsQ0FHSiw2QkFDRSxHQUNFLFNBQUEsQ0FDQSwyQkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLHVCQUFBLENBQUEsQ0FHSix5QkFDRSxHQUNFLFNBQUEsQ0FDQSx1QkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLDJCQUFBLENBQUEsQ0FHSiw4QkFDRSxHQUNFLFNBQUEsQ0FDQSwyQkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLHVCQUFBLENBQUEsQ0FHSiwwQkFDRSxHQUNFLFNBQUEsQ0FDQSx1QkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLDBCQUFBLENBQUEsQ0FHSiwrQkFDRSxHQUNFLFNBQUEsQ0FDQSwwQkFBQSxDQUVGLEtBQ0UsU0FBQSxDQUNBLHVCQUFBLENBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnljLXBvcHVwIHtcXG4gIC0teWMtcG9wdXAtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1mbG9hdCk7XFxuICAtLXljLXBvcHVwLWJvcmRlci1jb2xvcjogdmFyKC0teWMtY29sb3ItbGluZS1zb2xpZCk7XFxuICAtLXljLXBvcHVwLWJvcmRlci13aWR0aDogMXB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjFzO1xcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XFxuICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLXBvcHVwLWJhY2tncm91bmQtY29sb3IpO1xcbiAgYm94LXNoYWRvdzogMCAwIDAgdmFyKC0teWMtcG9wdXAtYm9yZGVyLXdpZHRoKSB2YXIoLS15Yy1wb3B1cC1ib3JkZXItY29sb3IpLCAwIDhweCAyMHB4IHZhcigtLXljLXBvcHVwLWJvcmRlci13aWR0aCkgdmFyKC0teWMtY29sb3Itc2Z4LXNoYWRvdyk7XFxuICBvdXRsaW5lOiBub25lO1xcbn1cXG4ueWMtcG9wdXAgPiA6Zmlyc3QtY2hpbGQ6bm90KC55Yy1wb3B1cF9fYXJyb3cpLCAueWMtcG9wdXAgPiAueWMtcG9wdXBfX2Fycm93ICsgKiB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBpbmhlcml0O1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGluaGVyaXQ7XFxufVxcbi55Yy1wb3B1cCA+IDpsYXN0LWNoaWxkIHtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IGluaGVyaXQ7XFxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogaW5oZXJpdDtcXG59XFxuLnljLXBvcHVwX19hcnJvdy1jb250ZW50IHtcXG4gIHdpZHRoOiAxOHB4O1xcbiAgaGVpZ2h0OiAxOHB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIGRpc3BsYXk6IGZsZXg7XFxufVxcbi55Yy1wb3B1cF9fYXJyb3ctY2lyY2xlLXdyYXBwZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgd2lkdGg6IDlweDtcXG4gIGhlaWdodDogOXB4O1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4ueWMtcG9wdXBfX2Fycm93LWNpcmNsZSB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgY2FsYyg1cHggLSB2YXIoLS15Yy1wb3B1cC1ib3JkZXItd2lkdGgpKSB2YXIoLS15Yy1wb3B1cC1iYWNrZ3JvdW5kLWNvbG9yKSwgaW5zZXQgMCAwIDAgNXB4IHZhcigtLXljLXBvcHVwLWJvcmRlci1jb2xvcik7XFxuICB3aWR0aDogMjhweDtcXG4gIGhlaWdodDogMzBweDtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG59XFxuLnljLXBvcHVwX19hcnJvdy1jaXJjbGVfbGVmdCB7XFxuICByaWdodDogLTVweDtcXG4gIGJvdHRvbTogLTRweDtcXG59XFxuLnljLXBvcHVwX19hcnJvdy1jaXJjbGVfcmlnaHQge1xcbiAgbGVmdDogLTVweDtcXG4gIGJvdHRvbTogLTRweDtcXG59XFxuXFxuLnljLXBvcHVwLXdyYXBwZXIge1xcbiAgei1pbmRleDogMTAwMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG59XFxuLnljLXBvcHVwLXdyYXBwZXJfb3BlbiwgLnljLXBvcHVwLXdyYXBwZXJfZXhpdF9hY3RpdmUge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG59XFxuLnljLXBvcHVwLXdyYXBwZXJfZXhpdF9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1ib3R0b21dIC55Yy1wb3B1cCB7XFxuICBhbmltYXRpb24tbmFtZTogeWMtcG9wdXAtYm90dG9tO1xcbn1cXG4ueWMtcG9wdXAtd3JhcHBlcl9leGl0X2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPXRvcF0gLnljLXBvcHVwIHtcXG4gIGFuaW1hdGlvbi1uYW1lOiB5Yy1wb3B1cC10b3A7XFxufVxcbi55Yy1wb3B1cC13cmFwcGVyX2V4aXRfYWN0aXZlW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9bGVmdF0gLnljLXBvcHVwIHtcXG4gIGFuaW1hdGlvbi1uYW1lOiB5Yy1wb3B1cC1sZWZ0O1xcbn1cXG4ueWMtcG9wdXAtd3JhcHBlcl9leGl0X2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPXJpZ2h0XSAueWMtcG9wdXAge1xcbiAgYW5pbWF0aW9uLW5hbWU6IHljLXBvcHVwLXJpZ2h0O1xcbn1cXG4ueWMtcG9wdXAtd3JhcHBlcl9lbnRlcl9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1ib3R0b21dIC55Yy1wb3B1cCwgLnljLXBvcHVwLXdyYXBwZXJfYXBwZWFyX2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPWJvdHRvbV0gLnljLXBvcHVwIHtcXG4gIGFuaW1hdGlvbi1uYW1lOiB5Yy1wb3B1cC1ib3R0b20tb3BlbjtcXG59XFxuLnljLXBvcHVwLXdyYXBwZXJfZW50ZXJfYWN0aXZlW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9dG9wXSAueWMtcG9wdXAsIC55Yy1wb3B1cC13cmFwcGVyX2FwcGVhcl9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj10b3BdIC55Yy1wb3B1cCB7XFxuICBhbmltYXRpb24tbmFtZTogeWMtcG9wdXAtdG9wLW9wZW47XFxufVxcbi55Yy1wb3B1cC13cmFwcGVyX2VudGVyX2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPWxlZnRdIC55Yy1wb3B1cCwgLnljLXBvcHVwLXdyYXBwZXJfYXBwZWFyX2FjdGl2ZVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPWxlZnRdIC55Yy1wb3B1cCB7XFxuICBhbmltYXRpb24tbmFtZTogeWMtcG9wdXAtbGVmdC1vcGVuO1xcbn1cXG4ueWMtcG9wdXAtd3JhcHBlcl9lbnRlcl9hY3RpdmVbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1yaWdodF0gLnljLXBvcHVwLCAueWMtcG9wdXAtd3JhcHBlcl9hcHBlYXJfYWN0aXZlW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9cmlnaHRdIC55Yy1wb3B1cCB7XFxuICBhbmltYXRpb24tbmFtZTogeWMtcG9wdXAtcmlnaHQtb3BlbjtcXG59XFxuLnljLXBvcHVwLXdyYXBwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1ib3R0b21dIC55Yy1wb3B1cF9fYXJyb3cge1xcbiAgdG9wOiAtOXB4O1xcbn1cXG4ueWMtcG9wdXAtd3JhcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnQqPXRvcF0gLnljLXBvcHVwX19hcnJvdyB7XFxuICBib3R0b206IC05cHg7XFxufVxcbi55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9dG9wXSAueWMtcG9wdXBfX2Fycm93LWNvbnRlbnQge1xcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcXG59XFxuLnljLXBvcHVwLXdyYXBwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1sZWZ0XSAueWMtcG9wdXBfX2Fycm93IHtcXG4gIHJpZ2h0OiAtOXB4O1xcbn1cXG4ueWMtcG9wdXAtd3JhcHBlcltkYXRhLXBvcHBlci1wbGFjZW1lbnQqPWxlZnRdIC55Yy1wb3B1cF9fYXJyb3ctY29udGVudCB7XFxuICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxufVxcbi55Yy1wb3B1cC13cmFwcGVyW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9cmlnaHRdIC55Yy1wb3B1cF9fYXJyb3cge1xcbiAgbGVmdDogLTlweDtcXG59XFxuLnljLXBvcHVwLXdyYXBwZXJbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1yaWdodF0gLnljLXBvcHVwX19hcnJvdy1jb250ZW50IHtcXG4gIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XFxufVxcblxcbkBrZXlmcmFtZXMgeWMtcG9wdXAtYm90dG9tIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyB5Yy1wb3B1cC1ib3R0b20tb3BlbiB7XFxuICAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgeWMtcG9wdXAtdG9wIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgeWMtcG9wdXAtdG9wLW9wZW4ge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyB5Yy1wb3B1cC1sZWZ0IHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTBweCk7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgeWMtcG9wdXAtbGVmdC1vcGVuIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMHB4KTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxuICB9XFxufVxcbkBrZXlmcmFtZXMgeWMtcG9wdXAtcmlnaHQge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIHljLXBvcHVwLXJpZ2h0LW9wZW4ge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xcbiAgfVxcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnljLXN3aXRjaHtwb3NpdGlvbjpyZWxhdGl2ZX0ueWMtc3dpdGNoX19jb250cm9se29wYWNpdHk6MDtjdXJzb3I6cG9pbnRlcn0ueWMtc3dpdGNoX19pbmRpY2F0b3J7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmV9LnljLXN3aXRjaF9faW5kaWNhdG9yOjpiZWZvcmV7Y29udGVudDpcXFwiXFxcIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW0pO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMXMgbGluZWFyfS55Yy1zd2l0Y2hfX2luZGljYXRvcjo6YWZ0ZXJ7Y29udGVudDpcXFwiwqBcXFwiO3Zpc2liaWxpdHk6aGlkZGVufS55Yy1zd2l0Y2hfX3NsaWRlcntwb3NpdGlvbjphYnNvbHV0ZTtjb250ZW50OlxcXCJcXFwiO2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQtY29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMTVzIGVhc2Utb3V0fS55Yy1zd2l0Y2hfX291dGxpbmV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDpub25lO3BvaW50ZXItZXZlbnRzOm5vbmV9LnljLXN3aXRjaF9fY29udHJvbDpmb2N1cysueWMtc3dpdGNoX19vdXRsaW5le2JveC1zaGFkb3c6MCAwIDAgMnB4IHZhcigtLXljLWNvbG9yLWxpbmUtbWlzYyl9LnljLXN3aXRjaF9fY29udHJvbDpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpKy55Yy1zd2l0Y2hfX291dGxpbmV7Ym94LXNoYWRvdzpub25lfS55Yy1zd2l0Y2hfc2l6ZV9tIC55Yy1zd2l0Y2hfX2luZGljYXRvciwueWMtc3dpdGNoX3NpemVfbSAueWMtc3dpdGNoX19pbmRpY2F0b3I6OmJlZm9yZSwueWMtc3dpdGNoX3NpemVfbSAueWMtc3dpdGNoX19vdXRsaW5le3dpZHRoOjM2cHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czoxMHB4fS55Yy1zd2l0Y2hfc2l6ZV9tIC55Yy1zd2l0Y2hfX3NsaWRlcnt0b3A6MnB4O2xlZnQ6MnB4O3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHh9LnljLXN3aXRjaF9zaXplX20gLnljLXN3aXRjaF9fdGV4dHttYXJnaW4tdG9wOjNweH0ueWMtc3dpdGNoX3NpemVfbCAueWMtc3dpdGNoX19pbmRpY2F0b3IsLnljLXN3aXRjaF9zaXplX2wgLnljLXN3aXRjaF9faW5kaWNhdG9yOjpiZWZvcmUsLnljLXN3aXRjaF9zaXplX2wgLnljLXN3aXRjaF9fb3V0bGluZXt3aWR0aDo0MnB4O2hlaWdodDoyNHB4O2JvcmRlci1yYWRpdXM6MTJweH0ueWMtc3dpdGNoX3NpemVfbCAueWMtc3dpdGNoX19zbGlkZXJ7dG9wOjNweDtsZWZ0OjNweDt3aWR0aDoxOHB4O2hlaWdodDoxOHB4fS55Yy1zd2l0Y2hfc2l6ZV9sIC55Yy1zd2l0Y2hfX3RleHR7bWFyZ2luLXRvcDo0cHh9LnljLXN3aXRjaDpob3ZlciAueWMtc3dpdGNoX19pbmRpY2F0b3I6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1tZWRpdW0taG92ZXIpfS55Yy1zd2l0Y2hfY2hlY2tlZCAueWMtc3dpdGNoX19zbGlkZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTAwJSl9LnljLXN3aXRjaF9jaGVja2VkIC55Yy1zd2l0Y2hfX2luZGljYXRvcjo6YmVmb3JlLC55Yy1zd2l0Y2hfY2hlY2tlZDpob3ZlciAueWMtc3dpdGNoX19pbmRpY2F0b3I6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCl9LnljLXN3aXRjaF9kaXNhYmxlZCAueWMtc3dpdGNoX19pbmRpY2F0b3I6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQtZGlzYWJsZWQpfS55Yy1zd2l0Y2hfZGlzYWJsZWQueWMtc3dpdGNoX2NoZWNrZWQgLnljLXN3aXRjaF9faW5kaWNhdG9yOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS15Yy1jb2xvci1iYXNlLXNwZWNpYWwpO29wYWNpdHk6LjV9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1N3aXRjaC9Td2l0Y2guY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLFdBQ0EsaUJBQ0UsQ0FBQSxvQkFFRixTQUNFLENBQUEsY0FDQSxDQUFBLHNCQUVGLG9CQUNFLENBQUEsaUJBQ0EsQ0FBQSw4QkFFRixVQUNFLENBQUEsaUJBQ0EsQ0FBQSxLQUNBLENBQUEsTUFDQSxDQUFBLE9BQ0EsQ0FBQSxRQUNBLENBQUEsb0RBQ0EsQ0FBQSxnQ0FDQSxDQUFBLDZCQUVGLFdBQ0UsQ0FBQSxpQkFDQSxDQUFBLG1CQUVGLGlCQUNFLENBQUEsVUFDQSxDQUFBLGlCQUNBLENBQUEsZ0RBQ0EsQ0FBQSxrQ0FDQSxDQUFBLG9CQUVGLGlCQUNFLENBQUEsS0FDQSxDQUFBLE1BQ0EsQ0FBQSxVQUNBLENBQUEsV0FDQSxDQUFBLGVBQ0EsQ0FBQSxtQkFDQSxDQUFBLDhDQUVGLDhDQUNFLENBQUEsa0VBRUYsZUFDRSxDQUFBLDhIQUVGLFVBR0UsQ0FBQSxXQUNBLENBQUEsa0JBQ0EsQ0FBQSxxQ0FFRixPQUNFLENBQUEsUUFDQSxDQUFBLFVBQ0EsQ0FBQSxXQUNBLENBQUEsbUNBRUYsY0FDRSxDQUFBLDhIQUVGLFVBR0UsQ0FBQSxXQUNBLENBQUEsa0JBQ0EsQ0FBQSxxQ0FFRixPQUNFLENBQUEsUUFDQSxDQUFBLFVBQ0EsQ0FBQSxXQUNBLENBQUEsbUNBRUYsY0FDRSxDQUFBLCtDQUVGLDBEQUNFLENBQUEsc0NBRUYsMEJBQ0UsQ0FBQSx3R0FFRiw2Q0FDRSxDQUFBLGtEQUVGLDZEQUNFLENBQUEsb0VBRUYsNkNBQ0UsQ0FBQSxVQUNBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIkBjaGFyc2V0IFxcXCJVVEYtOFxcXCI7XFxuLnljLXN3aXRjaCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi55Yy1zd2l0Y2hfX2NvbnRyb2wge1xcbiAgb3BhY2l0eTogMDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuLnljLXN3aXRjaF9faW5kaWNhdG9yIHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG59XFxuLnljLXN3aXRjaF9faW5kaWNhdG9yOjpiZWZvcmUge1xcbiAgY29udGVudDogXFxcIlxcXCI7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICBib3R0b206IDA7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtbWVkaXVtKTtcXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xcyBsaW5lYXI7XFxufVxcbi55Yy1zd2l0Y2hfX2luZGljYXRvcjo6YWZ0ZXIge1xcbiAgY29udGVudDogXFxcIsKgXFxcIjtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG59XFxuLnljLXN3aXRjaF9fc2xpZGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlLW91dDtcXG59XFxuLnljLXN3aXRjaF9fb3V0bGluZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi55Yy1zd2l0Y2hfX2NvbnRyb2w6Zm9jdXMgKyAueWMtc3dpdGNoX19vdXRsaW5lIHtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS15Yy1jb2xvci1saW5lLW1pc2MpO1xcbn1cXG4ueWMtc3dpdGNoX19jb250cm9sOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkgKyAueWMtc3dpdGNoX19vdXRsaW5lIHtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxufVxcbi55Yy1zd2l0Y2hfc2l6ZV9tIC55Yy1zd2l0Y2hfX2luZGljYXRvcixcXG4ueWMtc3dpdGNoX3NpemVfbSAueWMtc3dpdGNoX19pbmRpY2F0b3I6OmJlZm9yZSxcXG4ueWMtc3dpdGNoX3NpemVfbSAueWMtc3dpdGNoX19vdXRsaW5lIHtcXG4gIHdpZHRoOiAzNnB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG59XFxuLnljLXN3aXRjaF9zaXplX20gLnljLXN3aXRjaF9fc2xpZGVyIHtcXG4gIHRvcDogMnB4O1xcbiAgbGVmdDogMnB4O1xcbiAgd2lkdGg6IDE2cHg7XFxuICBoZWlnaHQ6IDE2cHg7XFxufVxcbi55Yy1zd2l0Y2hfc2l6ZV9tIC55Yy1zd2l0Y2hfX3RleHQge1xcbiAgbWFyZ2luLXRvcDogM3B4O1xcbn1cXG4ueWMtc3dpdGNoX3NpemVfbCAueWMtc3dpdGNoX19pbmRpY2F0b3IsXFxuLnljLXN3aXRjaF9zaXplX2wgLnljLXN3aXRjaF9faW5kaWNhdG9yOjpiZWZvcmUsXFxuLnljLXN3aXRjaF9zaXplX2wgLnljLXN3aXRjaF9fb3V0bGluZSB7XFxuICB3aWR0aDogNDJweDtcXG4gIGhlaWdodDogMjRweDtcXG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XFxufVxcbi55Yy1zd2l0Y2hfc2l6ZV9sIC55Yy1zd2l0Y2hfX3NsaWRlciB7XFxuICB0b3A6IDNweDtcXG4gIGxlZnQ6IDNweDtcXG4gIHdpZHRoOiAxOHB4O1xcbiAgaGVpZ2h0OiAxOHB4O1xcbn1cXG4ueWMtc3dpdGNoX3NpemVfbCAueWMtc3dpdGNoX190ZXh0IHtcXG4gIG1hcmdpbi10b3A6IDRweDtcXG59XFxuLnljLXN3aXRjaDpob3ZlciAueWMtc3dpdGNoX19pbmRpY2F0b3I6OmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1iYXNlLWdlbmVyaWMtbWVkaXVtLWhvdmVyKTtcXG59XFxuLnljLXN3aXRjaF9jaGVja2VkIC55Yy1zd2l0Y2hfX3NsaWRlciB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxufVxcbi55Yy1zd2l0Y2hfY2hlY2tlZCAueWMtc3dpdGNoX19pbmRpY2F0b3I6OmJlZm9yZSwgLnljLXN3aXRjaF9jaGVja2VkOmhvdmVyIC55Yy1zd2l0Y2hfX2luZGljYXRvcjo6YmVmb3JlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2Utc3BlY2lhbCk7XFxufVxcbi55Yy1zd2l0Y2hfZGlzYWJsZWQgLnljLXN3aXRjaF9faW5kaWNhdG9yOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudC1kaXNhYmxlZCk7XFxufVxcbi55Yy1zd2l0Y2hfZGlzYWJsZWQueWMtc3dpdGNoX2NoZWNrZWQgLnljLXN3aXRjaF9faW5kaWNhdG9yOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0teWMtY29sb3ItYmFzZS1zcGVjaWFsKTtcXG4gIG9wYWNpdHk6IDAuNTtcXG59XCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi55Yy1jb2xvci10ZXh0X2NvbG9yX3ByaW1hcnl7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KX0ueWMtY29sb3ItdGV4dF9jb2xvcl9jb21wbGVtZW50YXJ5e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtY29tcGxlbWVudGFyeSl9LnljLWNvbG9yLXRleHRfY29sb3Jfc2Vjb25kYXJ5e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KX0ueWMtY29sb3ItdGV4dF9jb2xvcl9oaW50e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtaGludCl9LnljLWNvbG9yLXRleHRfY29sb3JfaW5mb3tjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWluZm8pfS55Yy1jb2xvci10ZXh0X2NvbG9yX2luZm8taGVhdnl7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5KX0ueWMtY29sb3ItdGV4dF9jb2xvcl9wb3NpdGl2ZXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlKX0ueWMtY29sb3ItdGV4dF9jb2xvcl9wb3NpdGl2ZS1oZWF2eXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXBvc2l0aXZlLWhlYXZ5KX0ueWMtY29sb3ItdGV4dF9jb2xvcl93YXJuaW5ne2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtd2FybmluZyl9LnljLWNvbG9yLXRleHRfY29sb3Jfd2FybmluZy1oZWF2eXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXdhcm5pbmctaGVhdnkpfS55Yy1jb2xvci10ZXh0X2NvbG9yX2Rhbmdlcntjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWRhbmdlcil9LnljLWNvbG9yLXRleHRfY29sb3JfZGFuZ2VyLWhlYXZ5e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5KX0ueWMtY29sb3ItdGV4dF9jb2xvcl91dGlsaXR5e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtdXRpbGl0eSl9LnljLWNvbG9yLXRleHRfY29sb3JfdXRpbGl0eS1oZWF2eXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXV0aWxpdHktaGVhdnkpfS55Yy1jb2xvci10ZXh0X2NvbG9yX21pc2N7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1taXNjKX0ueWMtY29sb3ItdGV4dF9jb2xvcl9taXNjLWhlYXZ5e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbWlzYy1oZWF2eSl9LnljLWNvbG9yLXRleHRfY29sb3Jfc3BlY2lhbHtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXNwZWNpYWwpfS55Yy1jb2xvci10ZXh0X2NvbG9yX2xpbmt7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rKX0ueWMtY29sb3ItdGV4dF9jb2xvcl9saW5rLWhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbGluay1ob3Zlcil9LnljLWNvbG9yLXRleHRfY29sb3JfbGluay12aXNpdGVke2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtbGluay12aXNpdGVkKX0ueWMtY29sb3ItdGV4dF9jb2xvcl9saW5rLXZpc2l0ZWQtaG92ZXJ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saW5rLXZpc2l0ZWQtaG92ZXIpfS55Yy1jb2xvci10ZXh0X2NvbG9yX3lhbmRleC1yZWR7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC15YW5kZXgtcmVkKX0ueWMtY29sb3ItdGV4dF9jb2xvcl9kYXJrLXByaW1hcnl7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1kYXJrLXByaW1hcnkpfS55Yy1jb2xvci10ZXh0X2NvbG9yX2RhcmstY29tcGxlbWVudGFyeXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWRhcmstY29tcGxlbWVudGFyeSl9LnljLWNvbG9yLXRleHRfY29sb3JfZGFyay1zZWNvbmRhcnl7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1kYXJrLXNlY29uZGFyeSl9LnljLWNvbG9yLXRleHRfY29sb3JfbGlnaHQtcHJpbWFyeXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXByaW1hcnkpfS55Yy1jb2xvci10ZXh0X2NvbG9yX2xpZ2h0LWNvbXBsZW1lbnRhcnl7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1jb21wbGVtZW50YXJ5KX0ueWMtY29sb3ItdGV4dF9jb2xvcl9saWdodC1zZWNvbmRhcnl7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1zZWNvbmRhcnkpfS55Yy1jb2xvci10ZXh0X2NvbG9yX2xpZ2h0LWhpbnR7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1oaW50KX0ueWMtY29sb3ItdGV4dF9jb2xvcl9pbnZlcnRlZC1wcmltYXJ5e2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeSl9LnljLWNvbG9yLXRleHRfY29sb3JfaW52ZXJ0ZWQtY29tcGxlbWVudGFyeXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWludmVydGVkLWNvbXBsZW1lbnRhcnkpfS55Yy1jb2xvci10ZXh0X2NvbG9yX2ludmVydGVkLXNlY29uZGFyeXtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWludmVydGVkLXNlY29uZGFyeSl9LnljLWNvbG9yLXRleHRfY29sb3JfaW52ZXJ0ZWQtaGludHtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWludmVydGVkLWhpbnQpfVwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL25vZGVfbW9kdWxlcy9AZ3Jhdml0eS11aS91aWtpdC9idWlsZC9lc20vY29tcG9uZW50cy9UZXh0L2NvbG9yVGV4dC9jb2xvclRleHQuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLDZCQUNFLGtDQUFBLENBRUYsbUNBQ0Usd0NBQUEsQ0FFRiwrQkFDRSxvQ0FBQSxDQUVGLDBCQUNFLCtCQUFBLENBRUYsMEJBQ0UsK0JBQUEsQ0FFRixnQ0FDRSxxQ0FBQSxDQUVGLDhCQUNFLG1DQUFBLENBRUYsb0NBQ0UseUNBQUEsQ0FFRiw2QkFDRSxrQ0FBQSxDQUVGLG1DQUNFLHdDQUFBLENBRUYsNEJBQ0UsaUNBQUEsQ0FFRixrQ0FDRSx1Q0FBQSxDQUVGLDZCQUNFLGtDQUFBLENBRUYsbUNBQ0Usd0NBQUEsQ0FFRiwwQkFDRSwrQkFBQSxDQUVGLGdDQUNFLHFDQUFBLENBRUYsNkJBQ0Usa0NBQUEsQ0FFRiwwQkFDRSwrQkFBQSxDQUVGLGdDQUNFLHFDQUFBLENBRUYsa0NBQ0UsdUNBQUEsQ0FFRix3Q0FDRSw2Q0FBQSxDQUVGLGdDQUNFLHFDQUFBLENBRUYsa0NBQ0UsdUNBQUEsQ0FFRix3Q0FDRSw2Q0FBQSxDQUVGLG9DQUNFLHlDQUFBLENBRUYsbUNBQ0Usd0NBQUEsQ0FFRix5Q0FDRSw4Q0FBQSxDQUVGLHFDQUNFLDBDQUFBLENBRUYsZ0NBQ0UscUNBQUEsQ0FFRixzQ0FDRSwyQ0FBQSxDQUVGLDRDQUNFLGlEQUFBLENBRUYsd0NBQ0UsNkNBQUEsQ0FFRixtQ0FDRSx3Q0FBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIueWMtY29sb3ItdGV4dF9jb2xvcl9wcmltYXJ5IHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbn1cXG4ueWMtY29sb3ItdGV4dF9jb2xvcl9jb21wbGVtZW50YXJ5IHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWNvbXBsZW1lbnRhcnkpO1xcbn1cXG4ueWMtY29sb3ItdGV4dF9jb2xvcl9zZWNvbmRhcnkge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfaGludCB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1oaW50KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfaW5mbyB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1pbmZvKTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfaW5mby1oZWF2eSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1pbmZvLWhlYXZ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfcG9zaXRpdmUge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtcG9zaXRpdmUpO1xcbn1cXG4ueWMtY29sb3ItdGV4dF9jb2xvcl9wb3NpdGl2ZS1oZWF2eSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wb3NpdGl2ZS1oZWF2eSk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX3dhcm5pbmcge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtd2FybmluZyk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX3dhcm5pbmctaGVhdnkge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtd2FybmluZy1oZWF2eSk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX2RhbmdlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1kYW5nZXIpO1xcbn1cXG4ueWMtY29sb3ItdGV4dF9jb2xvcl9kYW5nZXItaGVhdnkge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtZGFuZ2VyLWhlYXZ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfdXRpbGl0eSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC11dGlsaXR5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfdXRpbGl0eS1oZWF2eSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC11dGlsaXR5LWhlYXZ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbWlzYyB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1taXNjKTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbWlzYy1oZWF2eSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1taXNjLWhlYXZ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3Jfc3BlY2lhbCB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1zcGVjaWFsKTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbGluayB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rKTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbGluay1ob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLWhvdmVyKTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbGluay12aXNpdGVkIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpbmstdmlzaXRlZCk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX2xpbmstdmlzaXRlZC1ob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saW5rLXZpc2l0ZWQtaG92ZXIpO1xcbn1cXG4ueWMtY29sb3ItdGV4dF9jb2xvcl95YW5kZXgtcmVkIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXlhbmRleC1yZWQpO1xcbn1cXG4ueWMtY29sb3ItdGV4dF9jb2xvcl9kYXJrLXByaW1hcnkge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtZGFyay1wcmltYXJ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfZGFyay1jb21wbGVtZW50YXJ5IHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWRhcmstY29tcGxlbWVudGFyeSk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX2Rhcmstc2Vjb25kYXJ5IHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWRhcmstc2Vjb25kYXJ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbGlnaHQtcHJpbWFyeSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1wcmltYXJ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbGlnaHQtY29tcGxlbWVudGFyeSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1saWdodC1jb21wbGVtZW50YXJ5KTtcXG59XFxuLnljLWNvbG9yLXRleHRfY29sb3JfbGlnaHQtc2Vjb25kYXJ5IHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWxpZ2h0LXNlY29uZGFyeSk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX2xpZ2h0LWhpbnQge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtbGlnaHQtaGludCk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX2ludmVydGVkLXByaW1hcnkge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtcHJpbWFyeSk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX2ludmVydGVkLWNvbXBsZW1lbnRhcnkge1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtaW52ZXJ0ZWQtY29tcGxlbWVudGFyeSk7XFxufVxcbi55Yy1jb2xvci10ZXh0X2NvbG9yX2ludmVydGVkLXNlY29uZGFyeSB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1pbnZlcnRlZC1zZWNvbmRhcnkpO1xcbn1cXG4ueWMtY29sb3ItdGV4dF9jb2xvcl9pbnZlcnRlZC1oaW50IHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWludmVydGVkLWhpbnQpO1xcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnljLXRleHRfdmFyaWFudF9kaXNwbGF5LTF7Zm9udC1zaXplOnZhcigtLXljLXRleHQtZGlzcGxheS0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1kaXNwbGF5LTEtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtZGlzcGxheS1mb250LXdlaWdodCl9LnljLXRleHRfdmFyaWFudF9kaXNwbGF5LTJ7Zm9udC1zaXplOnZhcigtLXljLXRleHQtZGlzcGxheS0yLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1kaXNwbGF5LTItbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtZGlzcGxheS1mb250LXdlaWdodCl9LnljLXRleHRfdmFyaWFudF9kaXNwbGF5LTN7Zm9udC1zaXplOnZhcigtLXljLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1kaXNwbGF5LTMtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtZGlzcGxheS1mb250LXdlaWdodCl9LnljLXRleHRfdmFyaWFudF9kaXNwbGF5LTR7Zm9udC1zaXplOnZhcigtLXljLXRleHQtZGlzcGxheS00LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1kaXNwbGF5LTQtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtZGlzcGxheS1mb250LXdlaWdodCl9LnljLXRleHRfdmFyaWFudF9jb2RlLTF7Zm9udC1mYW1pbHk6dmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0teWMtdGV4dC1jb2RlLTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWNvZGUtMS1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtd2VpZ2h0KX0ueWMtdGV4dF92YXJpYW50X2NvZGUtMntmb250LWZhbWlseTp2YXIoLS15Yy10ZXh0LWNvZGUtZm9udC1mYW1pbHkpO2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWNvZGUtMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtY29kZS0yLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWNvZGUtZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfY29kZS0ze2ZvbnQtZmFtaWx5OnZhcigtLXljLXRleHQtY29kZS1mb250LWZhbWlseSk7Zm9udC1zaXplOnZhcigtLXljLXRleHQtY29kZS0zLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1jb2RlLTMtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtY29kZS1mb250LXdlaWdodCl9LnljLXRleHRfdmFyaWFudF9jb2RlLWlubGluZS0xe2ZvbnQtZmFtaWx5OnZhcigtLXljLXRleHQtY29kZS1mb250LWZhbWlseSk7Zm9udC1zaXplOnZhcigtLXljLXRleHQtY29kZS1pbmxpbmUtMS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtY29kZS1pbmxpbmUtMS1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtd2VpZ2h0KX0ueWMtdGV4dF92YXJpYW50X2NvZGUtaW5saW5lLTJ7Zm9udC1mYW1pbHk6dmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0teWMtdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1jb2RlLWlubGluZS0yLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWNvZGUtaW5saW5lLWZvbnQtd2VpZ2h0KX0ueWMtdGV4dF92YXJpYW50X2NvZGUtaW5saW5lLTN7Zm9udC1mYW1pbHk6dmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtZmFtaWx5KTtmb250LXNpemU6dmFyKC0teWMtdGV4dC1jb2RlLWlubGluZS0zLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1jb2RlLWlubGluZS0zLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWNvZGUtZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfYm9keS0xe2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0xLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfYm9keS0ye2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfYm9keS0ze2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktMy1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS0zLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfYm9keS1zaG9ydHtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfY2FwdGlvbi0xe2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWNhcHRpb24tMS1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtY2FwdGlvbi0xLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWNhcHRpb24tZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfY2FwdGlvbi0ye2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWNhcHRpb24tMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtY2FwdGlvbi0yLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWNhcHRpb24tZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfaGVhZGVyLTF7Zm9udC1zaXplOnZhcigtLXljLXRleHQtaGVhZGVyLTEtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWhlYWRlci0xLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWhlYWRlci1mb250LXdlaWdodCl9LnljLXRleHRfdmFyaWFudF9oZWFkZXItMntmb250LXNpemU6dmFyKC0teWMtdGV4dC1oZWFkZXItMi1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtaGVhZGVyLTItbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtaGVhZGVyLWZvbnQtd2VpZ2h0KX0ueWMtdGV4dF92YXJpYW50X3N1YmhlYWRlci0xe2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LXN1YmhlYWRlci0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1zdWJoZWFkZXItMS1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1zdWJoZWFkZXItZm9udC13ZWlnaHQpfS55Yy10ZXh0X3ZhcmlhbnRfc3ViaGVhZGVyLTJ7Zm9udC1zaXplOnZhcigtLXljLXRleHQtc3ViaGVhZGVyLTItZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LXN1YmhlYWRlci0yLWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LXN1YmhlYWRlci1mb250LXdlaWdodCl9LnljLXRleHRfdmFyaWFudF9zdWJoZWFkZXItM3tmb250LXNpemU6dmFyKC0teWMtdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtc3ViaGVhZGVyLTMtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtc3ViaGVhZGVyLWZvbnQtd2VpZ2h0KX0ueWMtdGV4dF9lbGxpcHNpc3t3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnljLXRleHRfd3Nfbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcH0ueWMtdGV4dF93c19icmVhay1zcGFjZXN7d2hpdGUtc3BhY2U6YnJlYWstc3BhY2VzfS55Yy10ZXh0X3diX2JyZWFrLWFsbHt3b3JkLWJyZWFrOmJyZWFrLWFsbH1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvQGdyYXZpdHktdWkvdWlraXQvYnVpbGQvZXNtL2NvbXBvbmVudHMvVGV4dC90ZXh0L3RleHQuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLDJCQUNFLDRDQUFBLENBQ0EsZ0RBQUEsQ0FDQSw4Q0FBQSxDQUVGLDJCQUNFLDRDQUFBLENBQ0EsZ0RBQUEsQ0FDQSw4Q0FBQSxDQUVGLDJCQUNFLDRDQUFBLENBQ0EsZ0RBQUEsQ0FDQSw4Q0FBQSxDQUVGLDJCQUNFLDRDQUFBLENBQ0EsZ0RBQUEsQ0FDQSw4Q0FBQSxDQUVGLHdCQUNFLDJDQUFBLENBQ0EseUNBQUEsQ0FDQSw2Q0FBQSxDQUNBLDJDQUFBLENBRUYsd0JBQ0UsMkNBQUEsQ0FDQSx5Q0FBQSxDQUNBLDZDQUFBLENBQ0EsMkNBQUEsQ0FFRix3QkFDRSwyQ0FBQSxDQUNBLHlDQUFBLENBQ0EsNkNBQUEsQ0FDQSwyQ0FBQSxDQUVGLCtCQUNFLDJDQUFBLENBQ0EsZ0RBQUEsQ0FDQSxvREFBQSxDQUNBLDJDQUFBLENBRUYsK0JBQ0UsMkNBQUEsQ0FDQSxnREFBQSxDQUNBLG9EQUFBLENBQ0Esa0RBQUEsQ0FFRiwrQkFDRSwyQ0FBQSxDQUNBLGdEQUFBLENBQ0Esb0RBQUEsQ0FDQSwyQ0FBQSxDQUVGLHdCQUNFLHlDQUFBLENBQ0EsNkNBQUEsQ0FDQSwyQ0FBQSxDQUVGLHdCQUNFLHlDQUFBLENBQ0EsNkNBQUEsQ0FDQSwyQ0FBQSxDQUVGLHdCQUNFLHlDQUFBLENBQ0EsNkNBQUEsQ0FDQSwyQ0FBQSxDQUVGLDRCQUNFLDZDQUFBLENBQ0EsaURBQUEsQ0FDQSwyQ0FBQSxDQUVGLDJCQUNFLDRDQUFBLENBQ0EsZ0RBQUEsQ0FDQSw4Q0FBQSxDQUVGLDJCQUNFLDRDQUFBLENBQ0EsZ0RBQUEsQ0FDQSw4Q0FBQSxDQUVGLDBCQUNFLDJDQUFBLENBQ0EsK0NBQUEsQ0FDQSw2Q0FBQSxDQUVGLDBCQUNFLDJDQUFBLENBQ0EsK0NBQUEsQ0FDQSw2Q0FBQSxDQUVGLDZCQUNFLDhDQUFBLENBQ0Esa0RBQUEsQ0FDQSxnREFBQSxDQUVGLDZCQUNFLDhDQUFBLENBQ0Esa0RBQUEsQ0FDQSxnREFBQSxDQUVGLDZCQUNFLDhDQUFBLENBQ0Esa0RBQUEsQ0FDQSxnREFBQSxDQUVGLGtCQUNFLGtCQUFBLENBQ0EsZUFBQSxDQUNBLHNCQUFBLENBRUYsbUJBQ0Usa0JBQUEsQ0FFRix5QkFDRSx3QkFBQSxDQUVGLHNCQUNFLG9CQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi55Yy10ZXh0X3ZhcmlhbnRfZGlzcGxheS0xIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1kaXNwbGF5LTEtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWRpc3BsYXktMS1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1kaXNwbGF5LWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfdmFyaWFudF9kaXNwbGF5LTIge1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWRpc3BsYXktMi1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtZGlzcGxheS0yLWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWRpc3BsYXktZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dF92YXJpYW50X2Rpc3BsYXktMyB7XFxuICBmb250LXNpemU6IHZhcigtLXljLXRleHQtZGlzcGxheS0zLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1kaXNwbGF5LTMtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtZGlzcGxheS1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0X3ZhcmlhbnRfZGlzcGxheS00IHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1kaXNwbGF5LTQtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWRpc3BsYXktNC1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1kaXNwbGF5LWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfdmFyaWFudF9jb2RlLTEge1xcbiAgZm9udC1mYW1pbHk6IHZhcigtLXljLXRleHQtY29kZS1mb250LWZhbWlseSk7XFxuICBmb250LXNpemU6IHZhcigtLXljLXRleHQtY29kZS0xLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1jb2RlLTEtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtY29kZS1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0X3ZhcmlhbnRfY29kZS0yIHtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS15Yy10ZXh0LWNvZGUtZm9udC1mYW1pbHkpO1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWNvZGUtMi1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtY29kZS0yLWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWNvZGUtZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dF92YXJpYW50X2NvZGUtMyB7XFxuICBmb250LWZhbWlseTogdmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtZmFtaWx5KTtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1jb2RlLTMtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWNvZGUtMy1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfdmFyaWFudF9jb2RlLWlubGluZS0xIHtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS15Yy10ZXh0LWNvZGUtZm9udC1mYW1pbHkpO1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWNvZGUtaW5saW5lLTEtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWNvZGUtaW5saW5lLTEtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtY29kZS1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0X3ZhcmlhbnRfY29kZS1pbmxpbmUtMiB7XFxuICBmb250LWZhbWlseTogdmFyKC0teWMtdGV4dC1jb2RlLWZvbnQtZmFtaWx5KTtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1jb2RlLWlubGluZS0yLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1jb2RlLWlubGluZS0yLWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWNvZGUtaW5saW5lLWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfdmFyaWFudF9jb2RlLWlubGluZS0zIHtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS15Yy10ZXh0LWNvZGUtZm9udC1mYW1pbHkpO1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWNvZGUtaW5saW5lLTMtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWNvZGUtaW5saW5lLTMtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtY29kZS1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0X3ZhcmlhbnRfYm9keS0xIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTEtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMS1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfdmFyaWFudF9ib2R5LTIge1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWJvZHktMi1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS0yLWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dF92YXJpYW50X2JvZHktMyB7XFxuICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0zLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LTMtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0X3ZhcmlhbnRfYm9keS1zaG9ydCB7XFxuICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS1zaG9ydC1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1zaG9ydC1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfdmFyaWFudF9jYXB0aW9uLTEge1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWNhcHRpb24tMS1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtY2FwdGlvbi0xLWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWNhcHRpb24tZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dF92YXJpYW50X2NhcHRpb24tMiB7XFxuICBmb250LXNpemU6IHZhcigtLXljLXRleHQtY2FwdGlvbi0yLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1jYXB0aW9uLTItbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtY2FwdGlvbi1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0X3ZhcmlhbnRfaGVhZGVyLTEge1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWhlYWRlci0xLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1oZWFkZXItMS1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1oZWFkZXItZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dF92YXJpYW50X2hlYWRlci0yIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1oZWFkZXItMi1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtaGVhZGVyLTItbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtaGVhZGVyLWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfdmFyaWFudF9zdWJoZWFkZXItMSB7XFxuICBmb250LXNpemU6IHZhcigtLXljLXRleHQtc3ViaGVhZGVyLTEtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LXN1YmhlYWRlci0xLWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LXN1YmhlYWRlci1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0X3ZhcmlhbnRfc3ViaGVhZGVyLTIge1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LXN1YmhlYWRlci0yLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1zdWJoZWFkZXItMi1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1zdWJoZWFkZXItZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dF92YXJpYW50X3N1YmhlYWRlci0zIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1zdWJoZWFkZXItMy1mb250LXNpemUpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXljLXRleHQtc3ViaGVhZGVyLTMtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtc3ViaGVhZGVyLWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHRfZWxsaXBzaXMge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcXG59XFxuLnljLXRleHRfd3Nfbm93cmFwIHtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxufVxcbi55Yy10ZXh0X3dzX2JyZWFrLXNwYWNlcyB7XFxuICB3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xcbn1cXG4ueWMtdGV4dF93Yl9icmVhay1hbGwge1xcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnljLXRleHQtaW5wdXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0ueWMtdGV4dC1pbnB1dF9fY29udGVudHtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpmbGV4O3dpZHRoOjEwMCV9LnljLXRleHQtaW5wdXRfX2NvbnRyb2x7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO3ZlcnRpY2FsLWFsaWduOnRvcDtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6MTAwJTtmb250LXdlaWdodDpub3JtYWw7Zm9udC1mYW1pbHk6dmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtZmFtaWx5KTtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtib3JkZXI6bm9uZX0ueWMtdGV4dC1pbnB1dF9fY29udHJvbDo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1oaW50KX0ueWMtdGV4dC1pbnB1dF9fY29udHJvbDpmb2N1c3tvdXRsaW5lOm5vbmV9LnljLXRleHQtaW5wdXRfX2NvbnRyb2xfdHlwZV90ZXh0YXJlYXtyZXNpemU6bm9uZTtvdmVyZmxvdy14OmhpZGRlbn0ueWMtdGV4dC1pbnB1dF9fY29udHJvbF90eXBlX3RleHRhcmVhOm5vdCgueWMtdGV4dC1pbnB1dF9fY29udHJvbF9hdXRvc2l6ZSl7aGVpZ2h0OmF1dG99LnljLXRleHQtaW5wdXRfX2NvbnRyb2xbdHlwZT1udW1iZXJde2FwcGVhcmFuY2U6dGV4dGZpZWxkfS55Yy10ZXh0LWlucHV0X19sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3otaW5kZXg6MX0ueWMtdGV4dC1pbnB1dF9fZXJyb3J7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1kYW5nZXIpO21hcmdpbi10b3A6MnB4fS55Yy10ZXh0LWlucHV0X19jbGVhcltjbGFzc117LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7LS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdHJhbnNwYXJlbnQ7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1oaW50KX0ueWMtdGV4dC1pbnB1dF9fY2xlYXJbY2xhc3NdOmhvdmVye2NvbG9yOnZhcigtLXljLWNvbG9yLXRleHQtcHJpbWFyeSl9LnljLXRleHQtaW5wdXRfX2NsZWFyX3RleHRhcmVhe3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjB9LnljLXRleHQtaW5wdXRfX2NsZWFyOm5vdCgueWMtdGV4dC1pbnB1dF9fY2xlYXJfdGV4dGFyZWEpe21hcmdpbjotMXB4fS55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ueWMtdGV4dC1pbnB1dF9zaXplX3N7LS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXM6IHZhcigtLXljLWJvcmRlci1yYWRpdXMtcyl9LnljLXRleHQtaW5wdXRfc2l6ZV9zIC55Yy10ZXh0LWlucHV0X19jb250cm9se2hlaWdodDoyMnB4O3BhZGRpbmc6NHB4IDhweDtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpfS55Yy10ZXh0LWlucHV0X3NpemVfcy55Yy10ZXh0LWlucHV0X2hhcy1jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udHJvbC55Yy10ZXh0LWlucHV0X19jb250cm9sX3R5cGVfdGV4dGFyZWF7cGFkZGluZy1yaWdodDoyNnB4fS55Yy10ZXh0LWlucHV0X3NpemVfcyAueWMtdGV4dC1pbnB1dF9fbGFiZWx7aGVpZ2h0OjIycHg7cGFkZGluZzo0cHggOHB4O2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1hY2NlbnQtZm9udC13ZWlnaHQpO3BhZGRpbmctcmlnaHQ6NHB4O3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDtsaW5lLWhlaWdodDoyMnB4fS55Yy10ZXh0LWlucHV0X3NpemVfcy55Yy10ZXh0LWlucHV0X2hhcy1sZWZ0LWNvbnRlbnQgLnljLXRleHQtaW5wdXRfX2xhYmVse3BhZGRpbmctbGVmdDoycHh9LnljLXRleHQtaW5wdXRfc2l6ZV9zIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnR7aGVpZ2h0OjIycHh9LnljLXRleHQtaW5wdXRfc2l6ZV9zIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnRfcGxhY2VtZW50X2xlZnR7cGFkZGluZy1sZWZ0OjFweH0ueWMtdGV4dC1pbnB1dF9zaXplX3MgLnljLXRleHQtaW5wdXRfX2FkZGl0aW9uYWwtY29udGVudF9wbGFjZW1lbnRfcmlnaHR7cGFkZGluZy1yaWdodDoxcHh9LnljLXRleHQtaW5wdXRfc2l6ZV9tey0teWMtdGV4dC1pbnB1dC1ib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1ib3JkZXItcmFkaXVzLW0pfS55Yy10ZXh0LWlucHV0X3NpemVfbSAueWMtdGV4dC1pbnB1dF9fY29udHJvbHtoZWlnaHQ6MjZweDtwYWRkaW5nOjZweCA4cHg7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS1zaG9ydC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS1zaG9ydC1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KX0ueWMtdGV4dC1pbnB1dF9zaXplX20ueWMtdGV4dC1pbnB1dF9oYXMtY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRyb2wueWMtdGV4dC1pbnB1dF9fY29udHJvbF90eXBlX3RleHRhcmVhe3BhZGRpbmctcmlnaHQ6MjZweH0ueWMtdGV4dC1pbnB1dF9zaXplX20gLnljLXRleHQtaW5wdXRfX2xhYmVse2hlaWdodDoyNnB4O3BhZGRpbmc6NnB4IDhweDtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtYWNjZW50LWZvbnQtd2VpZ2h0KTtwYWRkaW5nLXJpZ2h0OjRweDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bGluZS1oZWlnaHQ6MjZweH0ueWMtdGV4dC1pbnB1dF9zaXplX20ueWMtdGV4dC1pbnB1dF9oYXMtbGVmdC1jb250ZW50IC55Yy10ZXh0LWlucHV0X19sYWJlbHtwYWRkaW5nLWxlZnQ6MnB4fS55Yy10ZXh0LWlucHV0X3NpemVfbSAueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50e2hlaWdodDoyNnB4fS55Yy10ZXh0LWlucHV0X3NpemVfbSAueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50X3BsYWNlbWVudF9sZWZ0e3BhZGRpbmctbGVmdDoxcHh9LnljLXRleHQtaW5wdXRfc2l6ZV9tIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnRfcGxhY2VtZW50X3JpZ2h0e3BhZGRpbmctcmlnaHQ6MXB4fS55Yy10ZXh0LWlucHV0X3NpemVfbHstLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy1sKX0ueWMtdGV4dC1pbnB1dF9zaXplX2wgLnljLXRleHQtaW5wdXRfX2NvbnRyb2x7aGVpZ2h0OjM0cHg7cGFkZGluZzoxMHB4IDEycHg7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS1zaG9ydC1mb250LXNpemUpO2xpbmUtaGVpZ2h0OnZhcigtLXljLXRleHQtYm9keS1zaG9ydC1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KX0ueWMtdGV4dC1pbnB1dF9zaXplX2wueWMtdGV4dC1pbnB1dF9oYXMtY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRyb2wueWMtdGV4dC1pbnB1dF9fY29udHJvbF90eXBlX3RleHRhcmVhe3BhZGRpbmctcmlnaHQ6MzZweH0ueWMtdGV4dC1pbnB1dF9zaXplX2wgLnljLXRleHQtaW5wdXRfX2xhYmVse2hlaWdodDozNHB4O3BhZGRpbmc6MTBweCAxMnB4O2ZvbnQtc2l6ZTp2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1hY2NlbnQtZm9udC13ZWlnaHQpO3BhZGRpbmctcmlnaHQ6NHB4O3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDtsaW5lLWhlaWdodDozNHB4fS55Yy10ZXh0LWlucHV0X3NpemVfbC55Yy10ZXh0LWlucHV0X2hhcy1sZWZ0LWNvbnRlbnQgLnljLXRleHQtaW5wdXRfX2xhYmVse3BhZGRpbmctbGVmdDozcHh9LnljLXRleHQtaW5wdXRfc2l6ZV9sIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnR7aGVpZ2h0OjM0cHh9LnljLXRleHQtaW5wdXRfc2l6ZV9sIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnRfcGxhY2VtZW50X2xlZnR7cGFkZGluZy1sZWZ0OjNweH0ueWMtdGV4dC1pbnB1dF9zaXplX2wgLnljLXRleHQtaW5wdXRfX2FkZGl0aW9uYWwtY29udGVudF9wbGFjZW1lbnRfcmlnaHR7cGFkZGluZy1yaWdodDozcHh9LnljLXRleHQtaW5wdXRfc2l6ZV94bHstLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy14bCl9LnljLXRleHQtaW5wdXRfc2l6ZV94bCAueWMtdGV4dC1pbnB1dF9fY29udHJvbHtoZWlnaHQ6NDJweDtwYWRkaW5nOjEycHg7Zm9udC1zaXplOnZhcigtLXljLXRleHQtYm9keS0yLWZvbnQtc2l6ZSk7bGluZS1oZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LTItbGluZS1oZWlnaHQpO2ZvbnQtd2VpZ2h0OnZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCl9LnljLXRleHQtaW5wdXRfc2l6ZV94bC55Yy10ZXh0LWlucHV0X2hhcy1jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udHJvbC55Yy10ZXh0LWlucHV0X19jb250cm9sX3R5cGVfdGV4dGFyZWF7cGFkZGluZy1yaWdodDozNnB4fS55Yy10ZXh0LWlucHV0X3NpemVfeGwgLnljLXRleHQtaW5wdXRfX2xhYmVse2hlaWdodDo0MnB4O3BhZGRpbmc6MTJweDtmb250LXNpemU6dmFyKC0teWMtdGV4dC1ib2R5LTItZm9udC1zaXplKTtsaW5lLWhlaWdodDp2YXIoLS15Yy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7Zm9udC13ZWlnaHQ6dmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtmb250LXdlaWdodDp2YXIoLS15Yy10ZXh0LWFjY2VudC1mb250LXdlaWdodCk7cGFkZGluZy1yaWdodDo0cHg7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO2xpbmUtaGVpZ2h0OjQycHh9LnljLXRleHQtaW5wdXRfc2l6ZV94bC55Yy10ZXh0LWlucHV0X2hhcy1sZWZ0LWNvbnRlbnQgLnljLXRleHQtaW5wdXRfX2xhYmVse3BhZGRpbmctbGVmdDozcHh9LnljLXRleHQtaW5wdXRfc2l6ZV94bCAueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50e2hlaWdodDo0MnB4fS55Yy10ZXh0LWlucHV0X3NpemVfeGwgLnljLXRleHQtaW5wdXRfX2FkZGl0aW9uYWwtY29udGVudF9wbGFjZW1lbnRfbGVmdHtwYWRkaW5nLWxlZnQ6M3B4fS55Yy10ZXh0LWlucHV0X3NpemVfeGwgLnljLXRleHQtaW5wdXRfX2FkZGl0aW9uYWwtY29udGVudF9wbGFjZW1lbnRfcmlnaHR7cGFkZGluZy1yaWdodDozcHh9LnljLXRleHQtaW5wdXRfdmlld19ub3JtYWwgLnljLXRleHQtaW5wdXRfX2NvbnRlbnR7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMpfS55Yy10ZXh0LWlucHV0X3ZpZXdfbm9ybWFsIC55Yy10ZXh0LWlucHV0X19jb250ZW50OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtaG92ZXIpfS55Yy10ZXh0LWlucHV0X3ZpZXdfbm9ybWFsIC55Yy10ZXh0LWlucHV0X19jb250ZW50OmZvY3VzLXdpdGhpbntib3JkZXItY29sb3I6dmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljLWFjdGl2ZSl9LnljLXRleHQtaW5wdXRfdmlld19jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udGVudHtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMCk7Ym9yZGVyLWxlZnQ6MDtib3JkZXItcmlnaHQ6MDtib3JkZXItcmFkaXVzOjB9LnljLXRleHQtaW5wdXRfdmlld19jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udHJvbHtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9LnljLXRleHQtaW5wdXQueWMtdGV4dC1pbnB1dF9waW5fcm91bmQtcm91bmQgLnljLXRleHQtaW5wdXRfX2NvbnRlbnR7Ym9yZGVyLXJhZGl1czp2YXIoLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXMpfS55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2JyaWNrLWJyaWNrIC55Yy10ZXh0LWlucHV0X19jb250ZW50e2JvcmRlci1yYWRpdXM6MH0ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9jbGVhci1jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udGVudHtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLWxlZnQ6MDtib3JkZXItcmlnaHQ6MH0ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9jaXJjbGUtY2lyY2xlIC55Yy10ZXh0LWlucHV0X19jb250ZW50e2JvcmRlci1yYWRpdXM6MTAwcHh9LnljLXRleHQtaW5wdXQueWMtdGV4dC1pbnB1dF9waW5fcm91bmQtYnJpY2sgLnljLXRleHQtaW5wdXRfX2NvbnRlbnR7Ym9yZGVyLXJhZGl1czp2YXIoLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXMpIDAgMCB2YXIoLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXMpfS55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2JyaWNrLXJvdW5kIC55Yy10ZXh0LWlucHV0X19jb250ZW50e2JvcmRlci1yYWRpdXM6MCB2YXIoLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXMpIHZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cykgMH0ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9yb3VuZC1jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udGVudHtib3JkZXItcmFkaXVzOnZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7Ym9yZGVyLXJpZ2h0OjB9LnljLXRleHQtaW5wdXQueWMtdGV4dC1pbnB1dF9waW5fY2xlYXItcm91bmQgLnljLXRleHQtaW5wdXRfX2NvbnRlbnR7Ym9yZGVyLXJhZGl1czowIHZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cykgdmFyKC0teWMtdGV4dC1pbnB1dC1ib3JkZXItcmFkaXVzKSAwO2JvcmRlci1sZWZ0OjB9LnljLXRleHQtaW5wdXQueWMtdGV4dC1pbnB1dF9waW5fYnJpY2stY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRlbnR7Ym9yZGVyLXJhZGl1czowO2JvcmRlci1yaWdodDowfS55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2NsZWFyLWJyaWNrIC55Yy10ZXh0LWlucHV0X19jb250ZW50e2JvcmRlci1yYWRpdXM6MDtib3JkZXItbGVmdDowfS55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2NpcmNsZS1icmljayAueWMtdGV4dC1pbnB1dF9fY29udGVudHtib3JkZXItcmFkaXVzOjEwMHB4IDAgMCAxMDBweH0ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9icmljay1jaXJjbGUgLnljLXRleHQtaW5wdXRfX2NvbnRlbnR7Ym9yZGVyLXJhZGl1czowIDEwMHB4IDEwMHB4IDB9LnljLXRleHQtaW5wdXQueWMtdGV4dC1pbnB1dF9waW5fY2lyY2xlLWNsZWFyIC55Yy10ZXh0LWlucHV0X19jb250ZW50e2JvcmRlci1yYWRpdXM6MTAwcHggMCAwIDEwMHB4O2JvcmRlci1yaWdodDowfS55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2NsZWFyLWNpcmNsZSAueWMtdGV4dC1pbnB1dF9fY29udGVudHtib3JkZXItcmFkaXVzOjAgMTAwcHggMTAwcHggMDtib3JkZXItbGVmdDowfS55Yy10ZXh0LWlucHV0X2Rpc2FibGVkIC55Yy10ZXh0LWlucHV0X19jb250ZW50e2JhY2tncm91bmQtY29sb3I6dmFyKC0teWMtY29sb3ItYmFzZS1nZW5lcmljLWFjY2VudC1kaXNhYmxlZCk7Y29sb3I6dmFyKC0teWMtY29sb3ItdGV4dC1oaW50KTtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwwKX0ueWMtdGV4dC1pbnB1dF9kaXNhYmxlZCAueWMtdGV4dC1pbnB1dF9fY29udGVudDpob3Zlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwwKX0ueWMtdGV4dC1pbnB1dF9kaXNhYmxlZCAueWMtdGV4dC1pbnB1dF9fY29udHJvbHtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWhpbnQpfS55Yy10ZXh0LWlucHV0X2Rpc2FibGVkIC55Yy10ZXh0LWlucHV0X19sYWJlbHtjb2xvcjp2YXIoLS15Yy1jb2xvci10ZXh0LWhpbnQpfS55Yy10ZXh0LWlucHV0X2hhcy1zY3JvbGxiYXIgLnljLXRleHQtaW5wdXRfX2NsZWFye3JpZ2h0OnZhcigtLXljLXNjcm9sbGJhci13aWR0aCl9LnljLXRleHQtaW5wdXRfaGFzLWxlZnQtY29udGVudCAueWMtdGV4dC1pbnB1dF9fY29udHJvbHtwYWRkaW5nLWxlZnQ6MnB4fS55Yy10ZXh0LWlucHV0X2hhcy1yaWdodC1jb250ZW50IC55Yy10ZXh0LWlucHV0X19jb250cm9se3BhZGRpbmctcmlnaHQ6MnB4fS55Yy10ZXh0LWlucHV0X3N0YXRlX2Vycm9yLnljLXRleHQtaW5wdXRfdmlld19ub3JtYWwgLnljLXRleHQtaW5wdXRfX2NvbnRlbnR7Ym9yZGVyLWNvbG9yOnZhcigtLXljLWNvbG9yLWxpbmUtZGFuZ2VyKX0ueWMtdGV4dC1pbnB1dF9zdGF0ZV9lcnJvci55Yy10ZXh0LWlucHV0X3ZpZXdfbm9ybWFsIC55Yy10ZXh0LWlucHV0X19jb250ZW50OmhvdmVyLC55Yy10ZXh0LWlucHV0X3N0YXRlX2Vycm9yLnljLXRleHQtaW5wdXRfdmlld19ub3JtYWwgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQ6Zm9jdXMtd2l0aGlue2JvcmRlci1jb2xvcjp2YXIoLS15Yy1jb2xvci1saW5lLWRhbmdlcil9LnljLXRleHQtaW5wdXRfc3RhdGVfZXJyb3IueWMtdGV4dC1pbnB1dF92aWV3X2NsZWFyIC55Yy10ZXh0LWlucHV0X19jb250ZW50e2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLXljLWNvbG9yLWxpbmUtZGFuZ2VyKX0ueWMtdGV4dC1pbnB1dF9zdGF0ZV9lcnJvci55Yy10ZXh0LWlucHV0X3ZpZXdfY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQ6aG92ZXIsLnljLXRleHQtaW5wdXRfc3RhdGVfZXJyb3IueWMtdGV4dC1pbnB1dF92aWV3X2NsZWFyIC55Yy10ZXh0LWlucHV0X19jb250ZW50OmZvY3VzLXdpdGhpbntib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWRhbmdlcil9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL0BncmF2aXR5LXVpL3Vpa2l0L2J1aWxkL2VzbS9jb21wb25lbnRzL1RleHRJbnB1dC9UZXh0SW5wdXQuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLGVBQ0Usb0JBQUEsQ0FDQSxVQUFBLENBQ0EsaUJBQUEsQ0FFRix3QkFDRSxxQkFBQSxDQUNBLFlBQUEsQ0FDQSxVQUFBLENBRUYsd0JBQ0UscUJBQUEsQ0FDQSxvQkFBQSxDQUNBLFdBQUEsQ0FDQSxrQkFBQSxDQUNBLGlCQUFBLENBQ0EsUUFBQSxDQUNBLFNBQUEsQ0FDQSxVQUFBLENBQ0Esa0JBQUEsQ0FDQSwyQ0FBQSxDQUNBLGtDQUFBLENBQ0EsOEJBQUEsQ0FDQSxXQUFBLENBRUYscUNBQ0UsK0JBQUEsQ0FFRiw4QkFDRSxZQUFBLENBRUYsc0NBQ0UsV0FBQSxDQUNBLGlCQUFBLENBRUYsNEVBQ0UsV0FBQSxDQUVGLHFDQUNFLG9CQUFBLENBRUYsc0JBQ0UsaUJBQUEsQ0FDQSxxQkFBQSxDQUNBLGVBQUEsQ0FDQSxzQkFBQSxDQUNBLGtCQUFBLENBQ0EsU0FBQSxDQUVGLHNCQUNFLHlDQUFBLENBQ0EsNkNBQUEsQ0FDQSwyQ0FBQSxDQUNBLGlDQUFBLENBQ0EsY0FBQSxDQUtGLDZCQUNFLHlDQUFBLENBQ0EsK0NBQUEsQ0FDQSwrQkFBQSxDQUVGLG1DQUNFLGtDQUFBLENBRUYsK0JBQ0UsaUJBQUEsQ0FDQSxLQUFBLENBQ0EsT0FBQSxDQUVGLDBEQUNFLFdBQUEsQ0FFRixtQ0FDRSxZQUFBLENBQ0Esa0JBQUEsQ0FFRixzQkFDRSx3REFBQSxDQUVGLDhDQUNFLFdBQUEsQ0FDQSxlQUFBLENBQ0EsNkNBQUEsQ0FDQSxpREFBQSxDQUNBLDJDQUFBLENBRUYsMkdBQ0Usa0JBQUEsQ0FFRiw0Q0FDRSxXQUFBLENBQ0EsZUFBQSxDQUNBLDZDQUFBLENBQ0EsaURBQUEsQ0FDQSwyQ0FBQSxDQUNBLDZDQUFBLENBQ0EsaUJBQUEsQ0FDQSxhQUFBLENBQ0EsZ0JBQUEsQ0FDQSxnQkFBQSxDQUVGLDJFQUNFLGdCQUFBLENBRUYseURBQ0UsV0FBQSxDQUVGLHdFQUNFLGdCQUFBLENBRUYseUVBQ0UsaUJBQUEsQ0FFRixzQkFDRSx3REFBQSxDQUVGLDhDQUNFLFdBQUEsQ0FDQSxlQUFBLENBQ0EsNkNBQUEsQ0FDQSxpREFBQSxDQUNBLDJDQUFBLENBRUYsMkdBQ0Usa0JBQUEsQ0FFRiw0Q0FDRSxXQUFBLENBQ0EsZUFBQSxDQUNBLDZDQUFBLENBQ0EsaURBQUEsQ0FDQSwyQ0FBQSxDQUNBLDZDQUFBLENBQ0EsaUJBQUEsQ0FDQSxhQUFBLENBQ0EsZ0JBQUEsQ0FDQSxnQkFBQSxDQUVGLDJFQUNFLGdCQUFBLENBRUYseURBQ0UsV0FBQSxDQUVGLHdFQUNFLGdCQUFBLENBRUYseUVBQ0UsaUJBQUEsQ0FFRixzQkFDRSx3REFBQSxDQUVGLDhDQUNFLFdBQUEsQ0FDQSxpQkFBQSxDQUNBLDZDQUFBLENBQ0EsaURBQUEsQ0FDQSwyQ0FBQSxDQUVGLDJHQUNFLGtCQUFBLENBRUYsNENBQ0UsV0FBQSxDQUNBLGlCQUFBLENBQ0EsNkNBQUEsQ0FDQSxpREFBQSxDQUNBLDJDQUFBLENBQ0EsNkNBQUEsQ0FDQSxpQkFBQSxDQUNBLGFBQUEsQ0FDQSxnQkFBQSxDQUNBLGdCQUFBLENBRUYsMkVBQ0UsZ0JBQUEsQ0FFRix5REFDRSxXQUFBLENBRUYsd0VBQ0UsZ0JBQUEsQ0FFRix5RUFDRSxpQkFBQSxDQUVGLHVCQUNFLHlEQUFBLENBRUYsK0NBQ0UsV0FBQSxDQUNBLFlBQUEsQ0FDQSx5Q0FBQSxDQUNBLDZDQUFBLENBQ0EsMkNBQUEsQ0FFRiw0R0FDRSxrQkFBQSxDQUVGLDZDQUNFLFdBQUEsQ0FDQSxZQUFBLENBQ0EseUNBQUEsQ0FDQSw2Q0FBQSxDQUNBLDJDQUFBLENBQ0EsNkNBQUEsQ0FDQSxpQkFBQSxDQUNBLGFBQUEsQ0FDQSxnQkFBQSxDQUNBLGdCQUFBLENBRUYsNEVBQ0UsZ0JBQUEsQ0FFRiwwREFDRSxXQUFBLENBRUYseUVBQ0UsZ0JBQUEsQ0FFRiwwRUFDRSxpQkFBQSxDQUVGLG1EQUNFLDZDQUFBLENBRUYseURBQ0UsK0NBQUEsQ0FFRixnRUFDRSxnREFBQSxDQUVGLGtEQUNFLDhCQUFBLENBQ0EsYUFBQSxDQUNBLGNBQUEsQ0FDQSxlQUFBLENBRUYsa0RBQ0UsY0FBQSxDQUNBLGVBQUEsQ0FFRixxRUFDRSxnREFBQSxDQUVGLHFFQUNFLGVBQUEsQ0FFRixxRUFDRSxlQUFBLENBQ0EsYUFBQSxDQUNBLGNBQUEsQ0FFRix1RUFDRSxtQkFBQSxDQUVGLHFFQUNFLHVGQUFBLENBRUYscUVBQ0UsdUZBQUEsQ0FFRixxRUFDRSx1RkFBQSxDQUNBLGNBQUEsQ0FFRixxRUFDRSx1RkFBQSxDQUNBLGFBQUEsQ0FFRixxRUFDRSxlQUFBLENBQ0EsY0FBQSxDQUVGLHFFQUNFLGVBQUEsQ0FDQSxhQUFBLENBRUYsc0VBQ0UsNkJBQUEsQ0FFRixzRUFDRSw2QkFBQSxDQUVGLHNFQUNFLDZCQUFBLENBQ0EsY0FBQSxDQUVGLHNFQUNFLDZCQUFBLENBQ0EsYUFBQSxDQUVGLGdEQUNFLDZEQUFBLENBQ0EsK0JBQUEsQ0FDQSwwQkFBQSxDQUVGLHNEQUNFLDBCQUFBLENBRUYsZ0RBQ0UsK0JBQUEsQ0FFRiw4Q0FDRSwrQkFBQSxDQUVGLG1EQUNFLCtCQUFBLENBRUYsd0RBQ0UsZ0JBQUEsQ0FFRix5REFDRSxpQkFBQSxDQUVGLDZFQUNFLHdDQUFBLENBRUYsNktBQ0Usd0NBQUEsQ0FFRiw0RUFDRSxtREFBQSxDQUVGLDJLQUNFLG1EQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi55Yy10ZXh0LWlucHV0IHtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9fY29udGVudCB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9fY29udHJvbCB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgZmxleC1ncm93OiAxO1xcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250LWZhbWlseTogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtZmFtaWx5KTtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LXByaW1hcnkpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcbi55Yy10ZXh0LWlucHV0X19jb250cm9sOjpwbGFjZWhvbGRlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1oaW50KTtcXG59XFxuLnljLXRleHQtaW5wdXRfX2NvbnRyb2w6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLnljLXRleHQtaW5wdXRfX2NvbnRyb2xfdHlwZV90ZXh0YXJlYSB7XFxuICByZXNpemU6IG5vbmU7XFxuICBvdmVyZmxvdy14OiBoaWRkZW47XFxufVxcbi55Yy10ZXh0LWlucHV0X19jb250cm9sX3R5cGVfdGV4dGFyZWE6bm90KC55Yy10ZXh0LWlucHV0X19jb250cm9sX2F1dG9zaXplKSB7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcbi55Yy10ZXh0LWlucHV0X19jb250cm9sW3R5cGU9bnVtYmVyXSB7XFxuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XFxufVxcbi55Yy10ZXh0LWlucHV0X19sYWJlbCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIHotaW5kZXg6IDE7XFxufVxcbi55Yy10ZXh0LWlucHV0X19lcnJvciB7XFxuICBmb250LXNpemU6IHZhcigtLXljLXRleHQtYm9keS0xLWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LTEtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1kYW5nZXIpO1xcbiAgbWFyZ2luLXRvcDogMnB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9fY2xlYXIge1xcbiAgLyogaW5jcmVhc2UgY3NzIHNwZWNpZmljaXR5IHRvIHJld3JpdGUgQnV0dG9uIHN0eWxlcyAqL1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9fY2xlYXJbY2xhc3NdIHtcXG4gIC0teWMtYnV0dG9uLWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcbiAgLS15Yy1idXR0b24tYmFja2dyb3VuZC1jb2xvci1ob3ZlcjogdHJhbnNwYXJlbnQ7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1oaW50KTtcXG59XFxuLnljLXRleHQtaW5wdXRfX2NsZWFyW2NsYXNzXTpob3ZlciB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1wcmltYXJ5KTtcXG59XFxuLnljLXRleHQtaW5wdXRfX2NsZWFyX3RleHRhcmVhIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIHJpZ2h0OiAwO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9fY2xlYXI6bm90KC55Yy10ZXh0LWlucHV0X19jbGVhcl90ZXh0YXJlYSkge1xcbiAgbWFyZ2luOiAtMXB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX3Mge1xcbiAgLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXM6IHZhcigtLXljLWJvcmRlci1yYWRpdXMtcyk7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfcyAueWMtdGV4dC1pbnB1dF9fY29udHJvbCB7XFxuICBoZWlnaHQ6IDIycHg7XFxuICBwYWRkaW5nOiA0cHggOHB4O1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfcy55Yy10ZXh0LWlucHV0X2hhcy1jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udHJvbC55Yy10ZXh0LWlucHV0X19jb250cm9sX3R5cGVfdGV4dGFyZWEge1xcbiAgcGFkZGluZy1yaWdodDogMjZweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9zIC55Yy10ZXh0LWlucHV0X19sYWJlbCB7XFxuICBoZWlnaHQ6IDIycHg7XFxuICBwYWRkaW5nOiA0cHggOHB4O1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1hY2NlbnQtZm9udC13ZWlnaHQpO1xcbiAgcGFkZGluZy1yaWdodDogNHB4O1xcbiAgcGFkZGluZy10b3A6IDA7XFxuICBwYWRkaW5nLWJvdHRvbTogMDtcXG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX3MueWMtdGV4dC1pbnB1dF9oYXMtbGVmdC1jb250ZW50IC55Yy10ZXh0LWlucHV0X19sYWJlbCB7XFxuICBwYWRkaW5nLWxlZnQ6IDJweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9zIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnQge1xcbiAgaGVpZ2h0OiAyMnB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX3MgLnljLXRleHQtaW5wdXRfX2FkZGl0aW9uYWwtY29udGVudF9wbGFjZW1lbnRfbGVmdCB7XFxuICBwYWRkaW5nLWxlZnQ6IDFweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9zIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnRfcGxhY2VtZW50X3JpZ2h0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDFweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9tIHtcXG4gIC0teWMtdGV4dC1pbnB1dC1ib3JkZXItcmFkaXVzOiB2YXIoLS15Yy1ib3JkZXItcmFkaXVzLW0pO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX20gLnljLXRleHQtaW5wdXRfX2NvbnRyb2wge1xcbiAgaGVpZ2h0OiAyNnB4O1xcbiAgcGFkZGluZzogNnB4IDhweDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX20ueWMtdGV4dC1pbnB1dF9oYXMtY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRyb2wueWMtdGV4dC1pbnB1dF9fY29udHJvbF90eXBlX3RleHRhcmVhIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDI2cHg7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfbSAueWMtdGV4dC1pbnB1dF9fbGFiZWwge1xcbiAgaGVpZ2h0OiAyNnB4O1xcbiAgcGFkZGluZzogNnB4IDhweDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYWNjZW50LWZvbnQtd2VpZ2h0KTtcXG4gIHBhZGRpbmctcmlnaHQ6IDRweDtcXG4gIHBhZGRpbmctdG9wOiAwO1xcbiAgcGFkZGluZy1ib3R0b206IDA7XFxuICBsaW5lLWhlaWdodDogMjZweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9tLnljLXRleHQtaW5wdXRfaGFzLWxlZnQtY29udGVudCAueWMtdGV4dC1pbnB1dF9fbGFiZWwge1xcbiAgcGFkZGluZy1sZWZ0OiAycHg7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfbSAueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50IHtcXG4gIGhlaWdodDogMjZweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9tIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnRfcGxhY2VtZW50X2xlZnQge1xcbiAgcGFkZGluZy1sZWZ0OiAxcHg7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfbSAueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50X3BsYWNlbWVudF9yaWdodCB7XFxuICBwYWRkaW5nLXJpZ2h0OiAxcHg7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfbCB7XFxuICAtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy1sKTtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9sIC55Yy10ZXh0LWlucHV0X19jb250cm9sIHtcXG4gIGhlaWdodDogMzRweDtcXG4gIHBhZGRpbmc6IDEwcHggMTJweDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWZvbnQtc2l6ZSk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LXNob3J0LWxpbmUtaGVpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktZm9udC13ZWlnaHQpO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX2wueWMtdGV4dC1pbnB1dF9oYXMtY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRyb2wueWMtdGV4dC1pbnB1dF9fY29udHJvbF90eXBlX3RleHRhcmVhIHtcXG4gIHBhZGRpbmctcmlnaHQ6IDM2cHg7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfbCAueWMtdGV4dC1pbnB1dF9fbGFiZWwge1xcbiAgaGVpZ2h0OiAzNHB4O1xcbiAgcGFkZGluZzogMTBweCAxMnB4O1xcbiAgZm9udC1zaXplOiB2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktc2hvcnQtbGluZS1oZWlnaHQpO1xcbiAgZm9udC13ZWlnaHQ6IHZhcigtLXljLXRleHQtYm9keS1mb250LXdlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1hY2NlbnQtZm9udC13ZWlnaHQpO1xcbiAgcGFkZGluZy1yaWdodDogNHB4O1xcbiAgcGFkZGluZy10b3A6IDA7XFxuICBwYWRkaW5nLWJvdHRvbTogMDtcXG4gIGxpbmUtaGVpZ2h0OiAzNHB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX2wueWMtdGV4dC1pbnB1dF9oYXMtbGVmdC1jb250ZW50IC55Yy10ZXh0LWlucHV0X19sYWJlbCB7XFxuICBwYWRkaW5nLWxlZnQ6IDNweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9sIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnQge1xcbiAgaGVpZ2h0OiAzNHB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX2wgLnljLXRleHQtaW5wdXRfX2FkZGl0aW9uYWwtY29udGVudF9wbGFjZW1lbnRfbGVmdCB7XFxuICBwYWRkaW5nLWxlZnQ6IDNweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV9sIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnRfcGxhY2VtZW50X3JpZ2h0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDNweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV94bCB7XFxuICAtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1czogdmFyKC0teWMtYm9yZGVyLXJhZGl1cy14bCk7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfeGwgLnljLXRleHQtaW5wdXRfX2NvbnRyb2wge1xcbiAgaGVpZ2h0OiA0MnB4O1xcbiAgcGFkZGluZzogMTJweDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTItZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV94bC55Yy10ZXh0LWlucHV0X2hhcy1jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udHJvbC55Yy10ZXh0LWlucHV0X19jb250cm9sX3R5cGVfdGV4dGFyZWEge1xcbiAgcGFkZGluZy1yaWdodDogMzZweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV94bCAueWMtdGV4dC1pbnB1dF9fbGFiZWwge1xcbiAgaGVpZ2h0OiA0MnB4O1xcbiAgcGFkZGluZzogMTJweDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0teWMtdGV4dC1ib2R5LTItZm9udC1zaXplKTtcXG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS15Yy10ZXh0LWJvZHktMi1saW5lLWhlaWdodCk7XFxuICBmb250LXdlaWdodDogdmFyKC0teWMtdGV4dC1ib2R5LWZvbnQtd2VpZ2h0KTtcXG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS15Yy10ZXh0LWFjY2VudC1mb250LXdlaWdodCk7XFxuICBwYWRkaW5nLXJpZ2h0OiA0cHg7XFxuICBwYWRkaW5nLXRvcDogMDtcXG4gIHBhZGRpbmctYm90dG9tOiAwO1xcbiAgbGluZS1oZWlnaHQ6IDQycHg7XFxufVxcbi55Yy10ZXh0LWlucHV0X3NpemVfeGwueWMtdGV4dC1pbnB1dF9oYXMtbGVmdC1jb250ZW50IC55Yy10ZXh0LWlucHV0X19sYWJlbCB7XFxuICBwYWRkaW5nLWxlZnQ6IDNweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV94bCAueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50IHtcXG4gIGhlaWdodDogNDJweDtcXG59XFxuLnljLXRleHQtaW5wdXRfc2l6ZV94bCAueWMtdGV4dC1pbnB1dF9fYWRkaXRpb25hbC1jb250ZW50X3BsYWNlbWVudF9sZWZ0IHtcXG4gIHBhZGRpbmctbGVmdDogM3B4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zaXplX3hsIC55Yy10ZXh0LWlucHV0X19hZGRpdGlvbmFsLWNvbnRlbnRfcGxhY2VtZW50X3JpZ2h0IHtcXG4gIHBhZGRpbmctcmlnaHQ6IDNweDtcXG59XFxuLnljLXRleHQtaW5wdXRfdmlld19ub3JtYWwgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1nZW5lcmljKTtcXG59XFxuLnljLXRleHQtaW5wdXRfdmlld19ub3JtYWwgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQ6aG92ZXIge1xcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtaG92ZXIpO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF92aWV3X25vcm1hbCAueWMtdGV4dC1pbnB1dF9fY29udGVudDpmb2N1cy13aXRoaW4ge1xcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS15Yy1jb2xvci1saW5lLWdlbmVyaWMtYWN0aXZlKTtcXG59XFxuLnljLXRleHQtaW5wdXRfdmlld19jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udGVudCB7XFxuICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbiAgYm9yZGVyLXJpZ2h0OiAwO1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG59XFxuLnljLXRleHQtaW5wdXRfdmlld19jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udHJvbCB7XFxuICBwYWRkaW5nLWxlZnQ6IDA7XFxuICBwYWRkaW5nLXJpZ2h0OiAwO1xcbn1cXG4ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9yb3VuZC1yb3VuZCAueWMtdGV4dC1pbnB1dF9fY29udGVudCB7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXMpO1xcbn1cXG4ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9icmljay1icmljayAueWMtdGV4dC1pbnB1dF9fY29udGVudCB7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbn1cXG4ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9jbGVhci1jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udGVudCB7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm9yZGVyLWxlZnQ6IDA7XFxuICBib3JkZXItcmlnaHQ6IDA7XFxufVxcbi55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2NpcmNsZS1jaXJjbGUgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMTAwcHg7XFxufVxcbi55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX3JvdW5kLWJyaWNrIC55Yy10ZXh0LWlucHV0X19jb250ZW50IHtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7XFxufVxcbi55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2JyaWNrLXJvdW5kIC55Yy10ZXh0LWlucHV0X19jb250ZW50IHtcXG4gIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0teWMtdGV4dC1pbnB1dC1ib3JkZXItcmFkaXVzKSB2YXIoLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXMpIDA7XFxufVxcbi55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX3JvdW5kLWNsZWFyIC55Yy10ZXh0LWlucHV0X19jb250ZW50IHtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cykgMCAwIHZhcigtLXljLXRleHQtaW5wdXQtYm9yZGVyLXJhZGl1cyk7XFxuICBib3JkZXItcmlnaHQ6IDA7XFxufVxcbi55Yy10ZXh0LWlucHV0LnljLXRleHQtaW5wdXRfcGluX2NsZWFyLXJvdW5kIC55Yy10ZXh0LWlucHV0X19jb250ZW50IHtcXG4gIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0teWMtdGV4dC1pbnB1dC1ib3JkZXItcmFkaXVzKSB2YXIoLS15Yy10ZXh0LWlucHV0LWJvcmRlci1yYWRpdXMpIDA7XFxuICBib3JkZXItbGVmdDogMDtcXG59XFxuLnljLXRleHQtaW5wdXQueWMtdGV4dC1pbnB1dF9waW5fYnJpY2stY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvcmRlci1yaWdodDogMDtcXG59XFxuLnljLXRleHQtaW5wdXQueWMtdGV4dC1pbnB1dF9waW5fY2xlYXItYnJpY2sgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvcmRlci1sZWZ0OiAwO1xcbn1cXG4ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9jaXJjbGUtYnJpY2sgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMTAwcHggMCAwIDEwMHB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9icmljay1jaXJjbGUgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMCAxMDBweCAxMDBweCAwO1xcbn1cXG4ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9jaXJjbGUtY2xlYXIgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMTAwcHggMCAwIDEwMHB4O1xcbiAgYm9yZGVyLXJpZ2h0OiAwO1xcbn1cXG4ueWMtdGV4dC1pbnB1dC55Yy10ZXh0LWlucHV0X3Bpbl9jbGVhci1jaXJjbGUgLnljLXRleHQtaW5wdXRfX2NvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMCAxMDBweCAxMDBweCAwO1xcbiAgYm9yZGVyLWxlZnQ6IDA7XFxufVxcbi55Yy10ZXh0LWlucHV0X2Rpc2FibGVkIC55Yy10ZXh0LWlucHV0X19jb250ZW50IHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXljLWNvbG9yLWJhc2UtZ2VuZXJpYy1hY2NlbnQtZGlzYWJsZWQpO1xcbiAgY29sb3I6IHZhcigtLXljLWNvbG9yLXRleHQtaGludCk7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9kaXNhYmxlZCAueWMtdGV4dC1pbnB1dF9fY29udGVudDpob3ZlciB7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9kaXNhYmxlZCAueWMtdGV4dC1pbnB1dF9fY29udHJvbCB7XFxuICBjb2xvcjogdmFyKC0teWMtY29sb3ItdGV4dC1oaW50KTtcXG59XFxuLnljLXRleHQtaW5wdXRfZGlzYWJsZWQgLnljLXRleHQtaW5wdXRfX2xhYmVsIHtcXG4gIGNvbG9yOiB2YXIoLS15Yy1jb2xvci10ZXh0LWhpbnQpO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9oYXMtc2Nyb2xsYmFyIC55Yy10ZXh0LWlucHV0X19jbGVhciB7XFxuICByaWdodDogdmFyKC0teWMtc2Nyb2xsYmFyLXdpZHRoKTtcXG59XFxuLnljLXRleHQtaW5wdXRfaGFzLWxlZnQtY29udGVudCAueWMtdGV4dC1pbnB1dF9fY29udHJvbCB7XFxuICBwYWRkaW5nLWxlZnQ6IDJweDtcXG59XFxuLnljLXRleHQtaW5wdXRfaGFzLXJpZ2h0LWNvbnRlbnQgLnljLXRleHQtaW5wdXRfX2NvbnRyb2wge1xcbiAgcGFkZGluZy1yaWdodDogMnB4O1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zdGF0ZV9lcnJvci55Yy10ZXh0LWlucHV0X3ZpZXdfbm9ybWFsIC55Yy10ZXh0LWlucHV0X19jb250ZW50IHtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0teWMtY29sb3ItbGluZS1kYW5nZXIpO1xcbn1cXG4ueWMtdGV4dC1pbnB1dF9zdGF0ZV9lcnJvci55Yy10ZXh0LWlucHV0X3ZpZXdfbm9ybWFsIC55Yy10ZXh0LWlucHV0X19jb250ZW50OmhvdmVyLCAueWMtdGV4dC1pbnB1dF9zdGF0ZV9lcnJvci55Yy10ZXh0LWlucHV0X3ZpZXdfbm9ybWFsIC55Yy10ZXh0LWlucHV0X19jb250ZW50OmZvY3VzLXdpdGhpbiB7XFxuICBib3JkZXItY29sb3I6IHZhcigtLXljLWNvbG9yLWxpbmUtZGFuZ2VyKTtcXG59XFxuLnljLXRleHQtaW5wdXRfc3RhdGVfZXJyb3IueWMtdGV4dC1pbnB1dF92aWV3X2NsZWFyIC55Yy10ZXh0LWlucHV0X19jb250ZW50IHtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS15Yy1jb2xvci1saW5lLWRhbmdlcik7XFxufVxcbi55Yy10ZXh0LWlucHV0X3N0YXRlX2Vycm9yLnljLXRleHQtaW5wdXRfdmlld19jbGVhciAueWMtdGV4dC1pbnB1dF9fY29udGVudDpob3ZlciwgLnljLXRleHQtaW5wdXRfc3RhdGVfZXJyb3IueWMtdGV4dC1pbnB1dF92aWV3X2NsZWFyIC55Yy10ZXh0LWlucHV0X19jb250ZW50OmZvY3VzLXdpdGhpbiB7XFxuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0teWMtY29sb3ItbGluZS1kYW5nZXIpO1xcbn1cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIuQXBwe21hcmdpbjowO21pbi1oZWlnaHQ6MTAwdmh9LnljLXJvb3R7LS1kYy1oZWFkZXItaGVpZ2h0OiAwcHh9XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL2NvbXBvbmVudHMvQXBwL0FwcC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBLEtBQ0ksUUFBQSxDQUNBLGdCQUFBLENBR0osU0FDSSx1QkFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuQXBwIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcXG59XFxuXFxuLnljLXJvb3Qge1xcbiAgICAtLWRjLWhlYWRlci1oZWlnaHQ6IDBweDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdO1xuXG4gIC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIHVybCA9IFN0cmluZyh1cmwuX19lc01vZHVsZSA/IHVybC5kZWZhdWx0IDogdXJsKTtcblxuICAvLyBJZiB1cmwgaXMgYWxyZWFkeSB3cmFwcGVkIGluIHF1b3RlcywgcmVtb3ZlIHRoZW1cbiAgaWYgKC9eWydcIl0uKlsnXCJdJC8udGVzdCh1cmwpKSB7XG4gICAgdXJsID0gdXJsLnNsaWNlKDEsIC0xKTtcbiAgfVxuICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgdXJsICs9IG9wdGlvbnMuaGFzaDtcbiAgfVxuXG4gIC8vIFNob3VsZCB1cmwgYmUgd3JhcHBlZD9cbiAgLy8gU2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLTMvI3VybHNcbiAgaWYgKC9bXCInKCkgXFx0XFxuXXwoJTIwKS8udGVzdCh1cmwpIHx8IG9wdGlvbnMubmVlZFF1b3Rlcykge1xuICAgIHJldHVybiBcIlxcXCJcIi5jb25jYXQodXJsLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKS5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKSwgXCJcXFwiXCIpO1xuICB9XG4gIHJldHVybiB1cmw7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciBpbnZhcmlhbnQgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCAnICtcbiAgICAgICAgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH0pXG4gICAgICApO1xuICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBbXG4gICAge1wibmFtZVwiOlwiQWJraGF6XCIsIFwibG9jYWxcIjpcItCQ0qfRgdGD0LBcIiwgXCIxXCI6XCJhYlwiLCBcIjJcIjpcImFia1wiLCBcIjJUXCI6XCJhYmtcIiwgXCIyQlwiOlwiYWJrXCIsIFwiM1wiOlwiYWJrXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkFmYXJcIiwgXCJsb2NhbFwiOlwiQWZhcmFmXCIsIFwiMVwiOlwiYWFcIiwgXCIyXCI6XCJhYXJcIiwgXCIyVFwiOlwiYWFyXCIsIFwiMkJcIjpcImFhclwiLCBcIjNcIjpcImFhclwifSxcbiAgICB7XCJuYW1lXCI6XCJBZnJpa2FhbnNcIiwgXCJsb2NhbFwiOlwiQWZyaWthYW5zXCIsIFwiMVwiOlwiYWZcIiwgXCIyXCI6XCJhZnJcIiwgXCIyVFwiOlwiYWZyXCIsIFwiMkJcIjpcImFmclwiLCBcIjNcIjpcImFmclwifSxcbiAgICB7XCJuYW1lXCI6XCJBa2FuXCIsIFwibG9jYWxcIjpcIkFrYW5cIiwgXCIxXCI6XCJha1wiLCBcIjJcIjpcImFrYVwiLCBcIjJUXCI6XCJha2FcIiwgXCIyQlwiOlwiYWthXCIsIFwiM1wiOlwiYWthXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkFsYmFuaWFuXCIsIFwibG9jYWxcIjpcIlNocWlwXCIsIFwiMVwiOlwic3FcIiwgXCIyXCI6XCJzcWlcIiwgXCIyVFwiOlwic3FpXCIsIFwiMkJcIjpcImFsYlwiLCBcIjNcIjpcInNxaVwifSxcbiAgICB7XCJuYW1lXCI6XCJBbWhhcmljXCIsIFwibG9jYWxcIjpcIuGKoOGIm+GIreGKm1wiLCBcIjFcIjpcImFtXCIsIFwiMlwiOlwiYW1oXCIsIFwiMlRcIjpcImFtaFwiLCBcIjJCXCI6XCJhbWhcIiwgXCIzXCI6XCJhbWhcIn0sXG4gICAge1wibmFtZVwiOlwiQXJhYmljXCIsIFwibG9jYWxcIjpcItin2YTYudix2KjZitipXCIsIFwiMVwiOlwiYXJcIiwgXCIyXCI6XCJhcmFcIiwgXCIyVFwiOlwiYXJhXCIsIFwiMkJcIjpcImFyYVwiLCBcIjNcIjpcImFyYVwifSxcbiAgICB7XCJuYW1lXCI6XCJBcmFnb25lc2VcIiwgXCJsb2NhbFwiOlwiQXJhZ29uw6lzXCIsIFwiMVwiOlwiYW5cIiwgXCIyXCI6XCJhcmdcIiwgXCIyVFwiOlwiYXJnXCIsIFwiMkJcIjpcImFyZ1wiLCBcIjNcIjpcImFyZ1wifSxcbiAgICB7XCJuYW1lXCI6XCJBcm1lbmlhblwiLCBcImxvY2FsXCI6XCLVgNWh1bXVpdaA1aXVtlwiLCBcIjFcIjpcImh5XCIsIFwiMlwiOlwiaHllXCIsIFwiMlRcIjpcImh5ZVwiLCBcIjJCXCI6XCJhcm1cIiwgXCIzXCI6XCJoeWVcIn0sXG4gICAge1wibmFtZVwiOlwiQXNzYW1lc2VcIiwgXCJsb2NhbFwiOlwi4KaF4Ka44Kau4KeA4Kav4Ka84Ka+XCIsIFwiMVwiOlwiYXNcIiwgXCIyXCI6XCJhc21cIiwgXCIyVFwiOlwiYXNtXCIsIFwiMkJcIjpcImFzbVwiLCBcIjNcIjpcImFzbVwifSxcbiAgICB7XCJuYW1lXCI6XCJBdmFyaWNcIiwgXCJsb2NhbFwiOlwi0JDQstCw0YBcIiwgXCIxXCI6XCJhdlwiLCBcIjJcIjpcImF2YVwiLCBcIjJUXCI6XCJhdmFcIiwgXCIyQlwiOlwiYXZhXCIsIFwiM1wiOlwiYXZhXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkF2ZXN0YW5cIiwgXCJsb2NhbFwiOlwiYXZlc3RhXCIsIFwiMVwiOlwiYWVcIiwgXCIyXCI6XCJhdmVcIiwgXCIyVFwiOlwiYXZlXCIsIFwiMkJcIjpcImF2ZVwiLCBcIjNcIjpcImF2ZVwifSxcbiAgICB7XCJuYW1lXCI6XCJBeW1hcmFcIiwgXCJsb2NhbFwiOlwiQXltYXJcIiwgXCIxXCI6XCJheVwiLCBcIjJcIjpcImF5bVwiLCBcIjJUXCI6XCJheW1cIiwgXCIyQlwiOlwiYXltXCIsIFwiM1wiOlwiYXltXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkF6ZXJiYWlqYW5pXCIsIFwibG9jYWxcIjpcIkF6yZlyYmF5Y2FuY2FcIiwgXCIxXCI6XCJhelwiLCBcIjJcIjpcImF6ZVwiLCBcIjJUXCI6XCJhemVcIiwgXCIyQlwiOlwiYXplXCIsIFwiM1wiOlwiYXplXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkJhbWJhcmFcIiwgXCJsb2NhbFwiOlwiQmFtYW5hbmthblwiLCBcIjFcIjpcImJtXCIsIFwiMlwiOlwiYmFtXCIsIFwiMlRcIjpcImJhbVwiLCBcIjJCXCI6XCJiYW1cIiwgXCIzXCI6XCJiYW1cIn0sXG4gICAge1wibmFtZVwiOlwiQmFzaGtpclwiLCBcImxvY2FsXCI6XCLQkdCw0YjSodC+0YDRgtGB0LBcIiwgXCIxXCI6XCJiYVwiLCBcIjJcIjpcImJha1wiLCBcIjJUXCI6XCJiYWtcIiwgXCIyQlwiOlwiYmFrXCIsIFwiM1wiOlwiYmFrXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkJhc3F1ZVwiLCBcImxvY2FsXCI6XCJFdXNrYXJhXCIsIFwiMVwiOlwiZXVcIiwgXCIyXCI6XCJldXNcIiwgXCIyVFwiOlwiZXVzXCIsIFwiMkJcIjpcImJhcVwiLCBcIjNcIjpcImV1c1wifSxcbiAgICB7XCJuYW1lXCI6XCJCZWxhcnVzaWFuXCIsIFwibG9jYWxcIjpcItCR0LXQu9Cw0YDRg9GB0LrQsNGPXCIsIFwiMVwiOlwiYmVcIiwgXCIyXCI6XCJiZWxcIiwgXCIyVFwiOlwiYmVsXCIsIFwiMkJcIjpcImJlbFwiLCBcIjNcIjpcImJlbFwifSxcbiAgICB7XCJuYW1lXCI6XCJCZW5nYWxpXCIsIFwibG9jYWxcIjpcIuCmrOCmvuCmguCmsuCmvlwiLCBcIjFcIjpcImJuXCIsIFwiMlwiOlwiYmVuXCIsIFwiMlRcIjpcImJlblwiLCBcIjJCXCI6XCJiZW5cIiwgXCIzXCI6XCJiZW5cIn0sXG4gICAge1wibmFtZVwiOlwiQmloYXJpXCIsIFwibG9jYWxcIjpcIuCkreCli+CknOCkquClgeCksOClgFwiLCBcIjFcIjpcImJoXCIsIFwiMlwiOlwiYmloXCIsIFwiMlRcIjpcImJpaFwiLCBcIjJCXCI6XCJiaWhcIiwgXCIzXCI6XCJiaWhcIn0sXG4gICAge1wibmFtZVwiOlwiQmlzbGFtYVwiLCBcImxvY2FsXCI6XCJCaXNsYW1hXCIsIFwiMVwiOlwiYmlcIiwgXCIyXCI6XCJiaXNcIiwgXCIyVFwiOlwiYmlzXCIsIFwiMkJcIjpcImJpc1wiLCBcIjNcIjpcImJpc1wifSxcbiAgICB7XCJuYW1lXCI6XCJCb3NuaWFuXCIsIFwibG9jYWxcIjpcIkJvc2Fuc2tpXCIsIFwiMVwiOlwiYnNcIiwgXCIyXCI6XCJib3NcIiwgXCIyVFwiOlwiYm9zXCIsIFwiMkJcIjpcImJvc1wiLCBcIjNcIjpcImJvc1wifSxcbiAgICB7XCJuYW1lXCI6XCJCcmV0b25cIiwgXCJsb2NhbFwiOlwiQnJlemhvbmVnXCIsIFwiMVwiOlwiYnJcIiwgXCIyXCI6XCJicmVcIiwgXCIyVFwiOlwiYnJlXCIsIFwiMkJcIjpcImJyZVwiLCBcIjNcIjpcImJyZVwifSxcbiAgICB7XCJuYW1lXCI6XCJCdWxnYXJpYW5cIiwgXCJsb2NhbFwiOlwi0JHRitC70LPQsNGA0YHQutC4XCIsIFwiMVwiOlwiYmdcIiwgXCIyXCI6XCJidWxcIiwgXCIyVFwiOlwiYnVsXCIsIFwiMkJcIjpcImJ1bFwiLCBcIjNcIjpcImJ1bFwifSxcbiAgICB7XCJuYW1lXCI6XCJCdXJtZXNlXCIsIFwibG9jYWxcIjpcIuGAmeGAvOGAlOGAuuGAmeGArOGAmOGArOGAnuGArFwiLCBcIjFcIjpcIm15XCIsIFwiMlwiOlwibXlhXCIsIFwiMlRcIjpcIm15YVwiLCBcIjJCXCI6XCJidXJcIiwgXCIzXCI6XCJteWFcIn0sXG4gICAge1wibmFtZVwiOlwiQ2F0YWxhblwiLCBcImxvY2FsXCI6XCJDYXRhbMOgXCIsIFwiMVwiOlwiY2FcIiwgXCIyXCI6XCJjYXRcIiwgXCIyVFwiOlwiY2F0XCIsIFwiMkJcIjpcImNhdFwiLCBcIjNcIjpcImNhdFwifSxcbiAgICB7XCJuYW1lXCI6XCJDaGFtb3Jyb1wiLCBcImxvY2FsXCI6XCJDaGFtb3J1XCIsIFwiMVwiOlwiY2hcIiwgXCIyXCI6XCJjaGFcIiwgXCIyVFwiOlwiY2hhXCIsIFwiMkJcIjpcImNoYVwiLCBcIjNcIjpcImNoYVwifSxcbiAgICB7XCJuYW1lXCI6XCJDaGVjaGVuXCIsIFwibG9jYWxcIjpcItCd0L7RhdGH0LjQudC9XCIsIFwiMVwiOlwiY2VcIiwgXCIyXCI6XCJjaGVcIiwgXCIyVFwiOlwiY2hlXCIsIFwiMkJcIjpcImNoZVwiLCBcIjNcIjpcImNoZVwifSxcbiAgICB7XCJuYW1lXCI6XCJDaGljaGV3YVwiLCBcImxvY2FsXCI6XCJDaGljaGV3YVwiLCBcIjFcIjpcIm55XCIsIFwiMlwiOlwibnlhXCIsIFwiMlRcIjpcIm55YVwiLCBcIjJCXCI6XCJueWFcIiwgXCIzXCI6XCJueWFcIn0sXG4gICAge1wibmFtZVwiOlwiQ2hpbmVzZVwiLCBcImxvY2FsXCI6XCLkuK3mlodcIiwgXCIxXCI6XCJ6aFwiLCBcIjJcIjpcInpob1wiLCBcIjJUXCI6XCJ6aG9cIiwgXCIyQlwiOlwiY2hpXCIsIFwiM1wiOlwiemhvXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkNodXZhc2hcIiwgXCJsb2NhbFwiOlwi0KfTkdCy0LDRiNC70LBcIiwgXCIxXCI6XCJjdlwiLCBcIjJcIjpcImNodlwiLCBcIjJUXCI6XCJjaHZcIiwgXCIyQlwiOlwiY2h2XCIsIFwiM1wiOlwiY2h2XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkNvcm5pc2hcIiwgXCJsb2NhbFwiOlwiS2VybmV3ZWtcIiwgXCIxXCI6XCJrd1wiLCBcIjJcIjpcImNvclwiLCBcIjJUXCI6XCJjb3JcIiwgXCIyQlwiOlwiY29yXCIsIFwiM1wiOlwiY29yXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkNvcnNpY2FuXCIsIFwibG9jYWxcIjpcIkNvcnN1XCIsIFwiMVwiOlwiY29cIiwgXCIyXCI6XCJjb3NcIiwgXCIyVFwiOlwiY29zXCIsIFwiMkJcIjpcImNvc1wiLCBcIjNcIjpcImNvc1wifSxcbiAgICB7XCJuYW1lXCI6XCJDcmVlXCIsIFwibG9jYWxcIjpcIuGTgOGQpuGQg+GUreGQjeGQj+GQo1wiLCBcIjFcIjpcImNyXCIsIFwiMlwiOlwiY3JlXCIsIFwiMlRcIjpcImNyZVwiLCBcIjJCXCI6XCJjcmVcIiwgXCIzXCI6XCJjcmVcIn0sXG4gICAge1wibmFtZVwiOlwiQ3JvYXRpYW5cIiwgXCJsb2NhbFwiOlwiSHJ2YXRza2lcIiwgXCIxXCI6XCJoclwiLCBcIjJcIjpcImhydlwiLCBcIjJUXCI6XCJocnZcIiwgXCIyQlwiOlwiaHJ2XCIsIFwiM1wiOlwiaHJ2XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkN6ZWNoXCIsIFwibG9jYWxcIjpcIsSMZcWhdGluYVwiLCBcIjFcIjpcImNzXCIsIFwiMlwiOlwiY2VzXCIsIFwiMlRcIjpcImNlc1wiLCBcIjJCXCI6XCJjemVcIiwgXCIzXCI6XCJjZXNcIn0sXG4gICAge1wibmFtZVwiOlwiRGFuaXNoXCIsIFwibG9jYWxcIjpcIkRhbnNrXCIsIFwiMVwiOlwiZGFcIiwgXCIyXCI6XCJkYW5cIiwgXCIyVFwiOlwiZGFuXCIsIFwiMkJcIjpcImRhblwiLCBcIjNcIjpcImRhblwifSxcbiAgICB7XCJuYW1lXCI6XCJEaXZlaGlcIiwgXCJsb2NhbFwiOlwiRGl2ZWhpXCIsIFwiMVwiOlwiZHZcIiwgXCIyXCI6XCJkaXZcIiwgXCIyVFwiOlwiZGl2XCIsIFwiMkJcIjpcImRpdlwiLCBcIjNcIjpcImRpdlwifSxcbiAgICB7XCJuYW1lXCI6XCJEdXRjaFwiLCBcImxvY2FsXCI6XCJOZWRlcmxhbmRzXCIsIFwiMVwiOlwibmxcIiwgXCIyXCI6XCJubGRcIiwgXCIyVFwiOlwibmxkXCIsIFwiMkJcIjpcImR1dFwiLCBcIjNcIjpcIm5sZFwifSxcbiAgICB7XCJuYW1lXCI6XCJEem9uZ2toYVwiLCBcImxvY2FsXCI6XCLgvaLgvqvgvbzgvYTgvIvgvYFcIiwgXCIxXCI6XCJkelwiLCBcIjJcIjpcImR6b1wiLCBcIjJUXCI6XCJkem9cIiwgXCIyQlwiOlwiZHpvXCIsIFwiM1wiOlwiZHpvXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkVuZ2xpc2hcIiwgXCJsb2NhbFwiOlwiRW5nbGlzaFwiLCBcIjFcIjpcImVuXCIsIFwiMlwiOlwiZW5nXCIsIFwiMlRcIjpcImVuZ1wiLCBcIjJCXCI6XCJlbmdcIiwgXCIzXCI6XCJlbmdcIn0sXG4gICAge1wibmFtZVwiOlwiRXNwZXJhbnRvXCIsIFwibG9jYWxcIjpcIkVzcGVyYW50b1wiLCBcIjFcIjpcImVvXCIsIFwiMlwiOlwiZXBvXCIsIFwiMlRcIjpcImVwb1wiLCBcIjJCXCI6XCJlcG9cIiwgXCIzXCI6XCJlcG9cIn0sXG4gICAge1wibmFtZVwiOlwiRXN0b25pYW5cIiwgXCJsb2NhbFwiOlwiRWVzdGlcIiwgXCIxXCI6XCJldFwiLCBcIjJcIjpcImVzdFwiLCBcIjJUXCI6XCJlc3RcIiwgXCIyQlwiOlwiZXN0XCIsIFwiM1wiOlwiZXN0XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkV3ZVwiLCBcImxvY2FsXCI6XCJFyotlZ2JlXCIsIFwiMVwiOlwiZWVcIiwgXCIyXCI6XCJld2VcIiwgXCIyVFwiOlwiZXdlXCIsIFwiMkJcIjpcImV3ZVwiLCBcIjNcIjpcImV3ZVwifSxcbiAgICB7XCJuYW1lXCI6XCJGYXJvZXNlXCIsIFwibG9jYWxcIjpcIkbDuHJveXNrdFwiLCBcIjFcIjpcImZvXCIsIFwiMlwiOlwiZmFvXCIsIFwiMlRcIjpcImZhb1wiLCBcIjJCXCI6XCJmYW9cIiwgXCIzXCI6XCJmYW9cIn0sXG4gICAge1wibmFtZVwiOlwiRmlqaWFuXCIsIFwibG9jYWxcIjpcIk5hIFZvc2EgVmFrYS1WaXRpXCIsIFwiMVwiOlwiZmpcIiwgXCIyXCI6XCJmaWpcIiwgXCIyVFwiOlwiZmlqXCIsIFwiMkJcIjpcImZpalwiLCBcIjNcIjpcImZpalwifSxcbiAgICB7XCJuYW1lXCI6XCJGaW5uaXNoXCIsIFwibG9jYWxcIjpcIlN1b21pXCIsIFwiMVwiOlwiZmlcIiwgXCIyXCI6XCJmaW5cIiwgXCIyVFwiOlwiZmluXCIsIFwiMkJcIjpcImZpblwiLCBcIjNcIjpcImZpblwifSxcbiAgICB7XCJuYW1lXCI6XCJGcmVuY2hcIiwgXCJsb2NhbFwiOlwiRnJhbsOnYWlzXCIsIFwiMVwiOlwiZnJcIiwgXCIyXCI6XCJmcmFcIiwgXCIyVFwiOlwiZnJhXCIsIFwiMkJcIjpcImZyZVwiLCBcIjNcIjpcImZyYVwifSxcbiAgICB7XCJuYW1lXCI6XCJGdWxhXCIsIFwibG9jYWxcIjpcIkZ1bGZ1bGRlXCIsIFwiMVwiOlwiZmZcIiwgXCIyXCI6XCJmdWxcIiwgXCIyVFwiOlwiZnVsXCIsIFwiMkJcIjpcImZ1bFwiLCBcIjNcIjpcImZ1bFwifSxcbiAgICB7XCJuYW1lXCI6XCJHYWxpY2lhblwiLCBcImxvY2FsXCI6XCJHYWxlZ29cIiwgXCIxXCI6XCJnbFwiLCBcIjJcIjpcImdsZ1wiLCBcIjJUXCI6XCJnbGdcIiwgXCIyQlwiOlwiZ2xnXCIsIFwiM1wiOlwiZ2xnXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkdlb3JnaWFuXCIsIFwibG9jYWxcIjpcIuGDpeGDkOGDoOGDl+GDo+GDmuGDmFwiLCBcIjFcIjpcImthXCIsIFwiMlwiOlwia2F0XCIsIFwiMlRcIjpcImthdFwiLCBcIjJCXCI6XCJnZW9cIiwgXCIzXCI6XCJrYXRcIn0sXG4gICAge1wibmFtZVwiOlwiR2VybWFuXCIsIFwibG9jYWxcIjpcIkRldXRzY2hcIiwgXCIxXCI6XCJkZVwiLCBcIjJcIjpcImRldVwiLCBcIjJUXCI6XCJkZXVcIiwgXCIyQlwiOlwiZ2VyXCIsIFwiM1wiOlwiZGV1XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkdyZWVrXCIsIFwibG9jYWxcIjpcIs6VzrvOu863zr3Ouc66zqxcIiwgXCIxXCI6XCJlbFwiLCBcIjJcIjpcImVsbFwiLCBcIjJUXCI6XCJlbGxcIiwgXCIyQlwiOlwiZ3JlXCIsIFwiM1wiOlwiZWxsXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkd1YXJhbsOtXCIsIFwibG9jYWxcIjpcIkF2YcOxZSfhur1cIiwgXCIxXCI6XCJnblwiLCBcIjJcIjpcImdyblwiLCBcIjJUXCI6XCJncm5cIiwgXCIyQlwiOlwiZ3JuXCIsIFwiM1wiOlwiZ3JuXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkd1amFyYXRpXCIsIFwibG9jYWxcIjpcIuCql+CrgeCqnOCqsOCqvuCqpOCrgFwiLCBcIjFcIjpcImd1XCIsIFwiMlwiOlwiZ3VqXCIsIFwiMlRcIjpcImd1alwiLCBcIjJCXCI6XCJndWpcIiwgXCIzXCI6XCJndWpcIn0sXG4gICAge1wibmFtZVwiOlwiSGFpdGlhblwiLCBcImxvY2FsXCI6XCJLcmV5w7JsIEF5aXN5ZW5cIiwgXCIxXCI6XCJodFwiLCBcIjJcIjpcImhhdFwiLCBcIjJUXCI6XCJoYXRcIiwgXCIyQlwiOlwiaGF0XCIsIFwiM1wiOlwiaGF0XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkhhdXNhXCIsIFwibG9jYWxcIjpcItmH2Y7ZiNmP2LPZjlwiLCBcIjFcIjpcImhhXCIsIFwiMlwiOlwiaGF1XCIsIFwiMlRcIjpcImhhdVwiLCBcIjJCXCI6XCJoYXVcIiwgXCIzXCI6XCJoYXVcIn0sXG4gICAge1wibmFtZVwiOlwiSGVicmV3XCIsIFwibG9jYWxcIjpcItei15HXqNeZ16pcIiwgXCIxXCI6XCJoZVwiLCBcIjJcIjpcImhlYlwiLCBcIjJUXCI6XCJoZWJcIiwgXCIyQlwiOlwiaGViXCIsIFwiM1wiOlwiaGViXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkhlcmVyb1wiLCBcImxvY2FsXCI6XCJPdGppaGVyZXJvXCIsIFwiMVwiOlwiaHpcIiwgXCIyXCI6XCJoZXJcIiwgXCIyVFwiOlwiaGVyXCIsIFwiMkJcIjpcImhlclwiLCBcIjNcIjpcImhlclwifSxcbiAgICB7XCJuYW1lXCI6XCJIaW5kaVwiLCBcImxvY2FsXCI6XCLgpLngpL/gpKjgpY3gpKbgpYBcIiwgXCIxXCI6XCJoaVwiLCBcIjJcIjpcImhpblwiLCBcIjJUXCI6XCJoaW5cIiwgXCIyQlwiOlwiaGluXCIsIFwiM1wiOlwiaGluXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkhpcmkgTW90dVwiLCBcImxvY2FsXCI6XCJIaXJpIE1vdHVcIiwgXCIxXCI6XCJob1wiLCBcIjJcIjpcImhtb1wiLCBcIjJUXCI6XCJobW9cIiwgXCIyQlwiOlwiaG1vXCIsIFwiM1wiOlwiaG1vXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkh1bmdhcmlhblwiLCBcImxvY2FsXCI6XCJNYWd5YXJcIiwgXCIxXCI6XCJodVwiLCBcIjJcIjpcImh1blwiLCBcIjJUXCI6XCJodW5cIiwgXCIyQlwiOlwiaHVuXCIsIFwiM1wiOlwiaHVuXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkludGVybGluZ3VhXCIsIFwibG9jYWxcIjpcIkludGVybGluZ3VhXCIsIFwiMVwiOlwiaWFcIiwgXCIyXCI6XCJpbmFcIiwgXCIyVFwiOlwiaW5hXCIsIFwiMkJcIjpcImluYVwiLCBcIjNcIjpcImluYVwifSxcbiAgICB7XCJuYW1lXCI6XCJJbmRvbmVzaWFuXCIsIFwibG9jYWxcIjpcIkJhaGFzYSBJbmRvbmVzaWFcIiwgXCIxXCI6XCJpZFwiLCBcIjJcIjpcImluZFwiLCBcIjJUXCI6XCJpbmRcIiwgXCIyQlwiOlwiaW5kXCIsIFwiM1wiOlwiaW5kXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkludGVybGluZ3VlXCIsIFwibG9jYWxcIjpcIkludGVybGluZ3VlXCIsIFwiMVwiOlwiaWVcIiwgXCIyXCI6XCJpbGVcIiwgXCIyVFwiOlwiaWxlXCIsIFwiMkJcIjpcImlsZVwiLCBcIjNcIjpcImlsZVwifSxcbiAgICB7XCJuYW1lXCI6XCJJcmlzaFwiLCBcImxvY2FsXCI6XCJHYWVpbGdlXCIsIFwiMVwiOlwiZ2FcIiwgXCIyXCI6XCJnbGVcIiwgXCIyVFwiOlwiZ2xlXCIsIFwiMkJcIjpcImdsZVwiLCBcIjNcIjpcImdsZVwifSxcbiAgICB7XCJuYW1lXCI6XCJJZ2JvXCIsIFwibG9jYWxcIjpcIklnYm9cIiwgXCIxXCI6XCJpZ1wiLCBcIjJcIjpcImlib1wiLCBcIjJUXCI6XCJpYm9cIiwgXCIyQlwiOlwiaWJvXCIsIFwiM1wiOlwiaWJvXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkludXBpYXFcIiwgXCJsb2NhbFwiOlwiScOxdXBpYWtcIiwgXCIxXCI6XCJpa1wiLCBcIjJcIjpcImlwa1wiLCBcIjJUXCI6XCJpcGtcIiwgXCIyQlwiOlwiaXBrXCIsIFwiM1wiOlwiaXBrXCJ9LFxuICAgIHtcIm5hbWVcIjpcIklkb1wiLCBcImxvY2FsXCI6XCJJZG9cIiwgXCIxXCI6XCJpb1wiLCBcIjJcIjpcImlkb1wiLCBcIjJUXCI6XCJpZG9cIiwgXCIyQlwiOlwiaWRvXCIsIFwiM1wiOlwiaWRvXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkljZWxhbmRpY1wiLCBcImxvY2FsXCI6XCLDjXNsZW5za2FcIiwgXCIxXCI6XCJpc1wiLCBcIjJcIjpcImlzbFwiLCBcIjJUXCI6XCJpc2xcIiwgXCIyQlwiOlwiaWNlXCIsIFwiM1wiOlwiaXNsXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkl0YWxpYW5cIiwgXCJsb2NhbFwiOlwiSXRhbGlhbm9cIiwgXCIxXCI6XCJpdFwiLCBcIjJcIjpcIml0YVwiLCBcIjJUXCI6XCJpdGFcIiwgXCIyQlwiOlwiaXRhXCIsIFwiM1wiOlwiaXRhXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkludWt0aXR1dFwiLCBcImxvY2FsXCI6XCLhkIPhk4ThkoPhkY7hkZDhkaZcIiwgXCIxXCI6XCJpdVwiLCBcIjJcIjpcImlrdVwiLCBcIjJUXCI6XCJpa3VcIiwgXCIyQlwiOlwiaWt1XCIsIFwiM1wiOlwiaWt1XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkphcGFuZXNlXCIsIFwibG9jYWxcIjpcIuaXpeacrOiqnlwiLCBcIjFcIjpcImphXCIsIFwiMlwiOlwianBuXCIsIFwiMlRcIjpcImpwblwiLCBcIjJCXCI6XCJqcG5cIiwgXCIzXCI6XCJqcG5cIn0sXG4gICAge1wibmFtZVwiOlwiSmF2YW5lc2VcIiwgXCJsb2NhbFwiOlwiQmFzYSBKYXdhXCIsIFwiMVwiOlwianZcIiwgXCIyXCI6XCJqYXZcIiwgXCIyVFwiOlwiamF2XCIsIFwiMkJcIjpcImphdlwiLCBcIjNcIjpcImphdlwifSxcbiAgICB7XCJuYW1lXCI6XCJLYWxhYWxsaXN1dFwiLCBcImxvY2FsXCI6XCJLYWxhYWxsaXN1dFwiLCBcIjFcIjpcImtsXCIsIFwiMlwiOlwia2FsXCIsIFwiMlRcIjpcImthbFwiLCBcIjJCXCI6XCJrYWxcIiwgXCIzXCI6XCJrYWxcIn0sXG4gICAge1wibmFtZVwiOlwiS2FubmFkYVwiLCBcImxvY2FsXCI6XCLgspXgsqjgs43gsqjgsqFcIiwgXCIxXCI6XCJrblwiLCBcIjJcIjpcImthblwiLCBcIjJUXCI6XCJrYW5cIiwgXCIyQlwiOlwia2FuXCIsIFwiM1wiOlwia2FuXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkthbnVyaVwiLCBcImxvY2FsXCI6XCJLYW51cmlcIiwgXCIxXCI6XCJrclwiLCBcIjJcIjpcImthdVwiLCBcIjJUXCI6XCJrYXVcIiwgXCIyQlwiOlwia2F1XCIsIFwiM1wiOlwia2F1XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkthc2htaXJpXCIsIFwibG9jYWxcIjpcItmD2LTZhdmK2LHZilwiLCBcIjFcIjpcImtzXCIsIFwiMlwiOlwia2FzXCIsIFwiMlRcIjpcImthc1wiLCBcIjJCXCI6XCJrYXNcIiwgXCIzXCI6XCJrYXNcIn0sXG4gICAge1wibmFtZVwiOlwiS2F6YWtoXCIsIFwibG9jYWxcIjpcItKa0LDQt9Cw0pvRiNCwXCIsIFwiMVwiOlwia2tcIiwgXCIyXCI6XCJrYXpcIiwgXCIyVFwiOlwia2F6XCIsIFwiMkJcIjpcImthelwiLCBcIjNcIjpcImthelwifSxcbiAgICB7XCJuYW1lXCI6XCJLaG1lclwiLCBcImxvY2FsXCI6XCLhnpfhnrbhnp/hnrbhnoHhn5Lhnpjhn4LhnppcIiwgXCIxXCI6XCJrbVwiLCBcIjJcIjpcImtobVwiLCBcIjJUXCI6XCJraG1cIiwgXCIyQlwiOlwia2htXCIsIFwiM1wiOlwia2htXCJ9LFxuICAgIHtcIm5hbWVcIjpcIktpa3V5dVwiLCBcImxvY2FsXCI6XCJHxKlrxal5xalcIiwgXCIxXCI6XCJraVwiLCBcIjJcIjpcImtpa1wiLCBcIjJUXCI6XCJraWtcIiwgXCIyQlwiOlwia2lrXCIsIFwiM1wiOlwia2lrXCJ9LFxuICAgIHtcIm5hbWVcIjpcIktpbnlhcndhbmRhXCIsIFwibG9jYWxcIjpcIktpbnlhcndhbmRhXCIsIFwiMVwiOlwicndcIiwgXCIyXCI6XCJraW5cIiwgXCIyVFwiOlwia2luXCIsIFwiMkJcIjpcImtpblwiLCBcIjNcIjpcImtpblwifSxcbiAgICB7XCJuYW1lXCI6XCJLeXJneXpcIiwgXCJsb2NhbFwiOlwi0JrRi9GA0LPRi9C30YfQsFwiLCBcIjFcIjpcImt5XCIsIFwiMlwiOlwia2lyXCIsIFwiMlRcIjpcImtpclwiLCBcIjJCXCI6XCJraXJcIiwgXCIzXCI6XCJraXJcIn0sXG4gICAge1wibmFtZVwiOlwiS29taVwiLCBcImxvY2FsXCI6XCLQmtC+0LzQuFwiLCBcIjFcIjpcImt2XCIsIFwiMlwiOlwia29tXCIsIFwiMlRcIjpcImtvbVwiLCBcIjJCXCI6XCJrb21cIiwgXCIzXCI6XCJrb21cIn0sXG4gICAge1wibmFtZVwiOlwiS29uZ29cIiwgXCJsb2NhbFwiOlwiS29uZ29cIiwgXCIxXCI6XCJrZ1wiLCBcIjJcIjpcImtvblwiLCBcIjJUXCI6XCJrb25cIiwgXCIyQlwiOlwia29uXCIsIFwiM1wiOlwia29uXCJ9LFxuICAgIHtcIm5hbWVcIjpcIktvcmVhblwiLCBcImxvY2FsXCI6XCLtlZzqta3slrRcIiwgXCIxXCI6XCJrb1wiLCBcIjJcIjpcImtvclwiLCBcIjJUXCI6XCJrb3JcIiwgXCIyQlwiOlwia29yXCIsIFwiM1wiOlwia29yXCJ9LFxuICAgIHtcIm5hbWVcIjpcIkt1cmRpc2hcIiwgXCJsb2NhbFwiOlwiS3VyZMOuXCIsIFwiMVwiOlwia3VcIiwgXCIyXCI6XCJrdXJcIiwgXCIyVFwiOlwia3VyXCIsIFwiMkJcIjpcImt1clwiLCBcIjNcIjpcImt1clwifSxcbiAgICB7XCJuYW1lXCI6XCJLd2FueWFtYVwiLCBcImxvY2FsXCI6XCJLdWFueWFtYVwiLCBcIjFcIjpcImtqXCIsIFwiMlwiOlwia3VhXCIsIFwiMlRcIjpcImt1YVwiLCBcIjJCXCI6XCJrdWFcIiwgXCIzXCI6XCJrdWFcIn0sXG4gICAge1wibmFtZVwiOlwiTGF0aW5cIiwgXCJsb2NhbFwiOlwiTGF0aW5hXCIsIFwiMVwiOlwibGFcIiwgXCIyXCI6XCJsYXRcIiwgXCIyVFwiOlwibGF0XCIsIFwiMkJcIjpcImxhdFwiLCBcIjNcIjpcImxhdFwifSxcbiAgICB7XCJuYW1lXCI6XCJMdXhlbWJvdXJnaXNoXCIsIFwibG9jYWxcIjpcIkzDq3R6ZWJ1ZXJnZXNjaFwiLCBcIjFcIjpcImxiXCIsIFwiMlwiOlwibHR6XCIsIFwiMlRcIjpcImx0elwiLCBcIjJCXCI6XCJsdHpcIiwgXCIzXCI6XCJsdHpcIn0sXG4gICAge1wibmFtZVwiOlwiR2FuZGFcIiwgXCJsb2NhbFwiOlwiTHVnYW5kYVwiLCBcIjFcIjpcImxnXCIsIFwiMlwiOlwibHVnXCIsIFwiMlRcIjpcImx1Z1wiLCBcIjJCXCI6XCJsdWdcIiwgXCIzXCI6XCJsdWdcIn0sXG4gICAge1wibmFtZVwiOlwiTGltYnVyZ2lzaFwiLCBcImxvY2FsXCI6XCJMaW1idXJnc1wiLCBcIjFcIjpcImxpXCIsIFwiMlwiOlwibGltXCIsIFwiMlRcIjpcImxpbVwiLCBcIjJCXCI6XCJsaW1cIiwgXCIzXCI6XCJsaW1cIn0sXG4gICAge1wibmFtZVwiOlwiTGluZ2FsYVwiLCBcImxvY2FsXCI6XCJMaW5nw6FsYVwiLCBcIjFcIjpcImxuXCIsIFwiMlwiOlwibGluXCIsIFwiMlRcIjpcImxpblwiLCBcIjJCXCI6XCJsaW5cIiwgXCIzXCI6XCJsaW5cIn0sXG4gICAge1wibmFtZVwiOlwiTGFvXCIsIFwibG9jYWxcIjpcIuC6nuC6suC6quC6suC6peC6suC6p1wiLCBcIjFcIjpcImxvXCIsIFwiMlwiOlwibGFvXCIsIFwiMlRcIjpcImxhb1wiLCBcIjJCXCI6XCJsYW9cIiwgXCIzXCI6XCJsYW9cIn0sXG4gICAge1wibmFtZVwiOlwiTGl0aHVhbmlhblwiLCBcImxvY2FsXCI6XCJMaWV0dXZpxbNcIiwgXCIxXCI6XCJsdFwiLCBcIjJcIjpcImxpdFwiLCBcIjJUXCI6XCJsaXRcIiwgXCIyQlwiOlwibGl0XCIsIFwiM1wiOlwibGl0XCJ9LFxuICAgIHtcIm5hbWVcIjpcIkx1YmEtS2F0YW5nYVwiLCBcImxvY2FsXCI6XCJUc2hpbHViYVwiLCBcIjFcIjpcImx1XCIsIFwiMlwiOlwibHViXCIsIFwiMlRcIjpcImx1YlwiLCBcIjJCXCI6XCJsdWJcIiwgXCIzXCI6XCJsdWJcIn0sXG4gICAge1wibmFtZVwiOlwiTGF0dmlhblwiLCBcImxvY2FsXCI6XCJMYXR2aWXFoXVcIiwgXCIxXCI6XCJsdlwiLCBcIjJcIjpcImxhdlwiLCBcIjJUXCI6XCJsYXZcIiwgXCIyQlwiOlwibGF2XCIsIFwiM1wiOlwibGF2XCJ9LFxuICAgIHtcIm5hbWVcIjpcIk1hbnhcIiwgXCJsb2NhbFwiOlwiR2FlbGdcIiwgXCIxXCI6XCJndlwiLCBcIjJcIjpcImdsdlwiLCBcIjJUXCI6XCJnbHZcIiwgXCIyQlwiOlwiZ2x2XCIsIFwiM1wiOlwiZ2x2XCJ9LFxuICAgIHtcIm5hbWVcIjpcIk1hY2Vkb25pYW5cIiwgXCJsb2NhbFwiOlwi0JzQsNC60LXQtNC+0L3RgdC60LhcIiwgXCIxXCI6XCJta1wiLCBcIjJcIjpcIm1rZFwiLCBcIjJUXCI6XCJta2RcIiwgXCIyQlwiOlwibWFjXCIsIFwiM1wiOlwibWtkXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk1hbGFnYXN5XCIsIFwibG9jYWxcIjpcIk1hbGFnYXN5XCIsIFwiMVwiOlwibWdcIiwgXCIyXCI6XCJtbGdcIiwgXCIyVFwiOlwibWxnXCIsIFwiMkJcIjpcIm1sZ1wiLCBcIjNcIjpcIm1sZ1wifSxcbiAgICB7XCJuYW1lXCI6XCJNYWxheVwiLCBcImxvY2FsXCI6XCJCYWhhc2EgTWVsYXl1XCIsIFwiMVwiOlwibXNcIiwgXCIyXCI6XCJtc2FcIiwgXCIyVFwiOlwibXNhXCIsIFwiMkJcIjpcIm1heVwiLCBcIjNcIjpcIm1zYVwifSxcbiAgICB7XCJuYW1lXCI6XCJNYWxheWFsYW1cIiwgXCJsb2NhbFwiOlwi4LSu4LSy4LSv4LS+4LSz4LSCXCIsIFwiMVwiOlwibWxcIiwgXCIyXCI6XCJtYWxcIiwgXCIyVFwiOlwibWFsXCIsIFwiMkJcIjpcIm1hbFwiLCBcIjNcIjpcIm1hbFwifSxcbiAgICB7XCJuYW1lXCI6XCJNYWx0ZXNlXCIsIFwibG9jYWxcIjpcIk1hbHRpXCIsIFwiMVwiOlwibXRcIiwgXCIyXCI6XCJtbHRcIiwgXCIyVFwiOlwibWx0XCIsIFwiMkJcIjpcIm1sdFwiLCBcIjNcIjpcIm1sdFwifSxcbiAgICB7XCJuYW1lXCI6XCJNxIFvcmlcIiwgXCJsb2NhbFwiOlwiTcSBb3JpXCIsIFwiMVwiOlwibWlcIiwgXCIyXCI6XCJtcmlcIiwgXCIyVFwiOlwibXJpXCIsIFwiMkJcIjpcIm1hb1wiLCBcIjNcIjpcIm1yaVwifSxcbiAgICB7XCJuYW1lXCI6XCJNYXJhdGhpXCIsIFwibG9jYWxcIjpcIuCkruCksOCkvuCkoOClgFwiLCBcIjFcIjpcIm1yXCIsIFwiMlwiOlwibWFyXCIsIFwiMlRcIjpcIm1hclwiLCBcIjJCXCI6XCJtYXJcIiwgXCIzXCI6XCJtYXJcIn0sXG4gICAge1wibmFtZVwiOlwiTWFyc2hhbGxlc2VcIiwgXCJsb2NhbFwiOlwiS2FqaW4gTcynYWplxLxcIiwgXCIxXCI6XCJtaFwiLCBcIjJcIjpcIm1haFwiLCBcIjJUXCI6XCJtYWhcIiwgXCIyQlwiOlwibWFoXCIsIFwiM1wiOlwibWFoXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk1vbmdvbGlhblwiLCBcImxvY2FsXCI6XCLQnNC+0L3Qs9C+0LtcIiwgXCIxXCI6XCJtblwiLCBcIjJcIjpcIm1vblwiLCBcIjJUXCI6XCJtb25cIiwgXCIyQlwiOlwibW9uXCIsIFwiM1wiOlwibW9uXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk5hdXJ1XCIsIFwibG9jYWxcIjpcIkRvcmVyaW4gTmFvZXJvXCIsIFwiMVwiOlwibmFcIiwgXCIyXCI6XCJuYXVcIiwgXCIyVFwiOlwibmF1XCIsIFwiMkJcIjpcIm5hdVwiLCBcIjNcIjpcIm5hdVwifSxcbiAgICB7XCJuYW1lXCI6XCJOYXZham9cIiwgXCJsb2NhbFwiOlwiRGluw6kgQml6YWFkXCIsIFwiMVwiOlwibnZcIiwgXCIyXCI6XCJuYXZcIiwgXCIyVFwiOlwibmF2XCIsIFwiMkJcIjpcIm5hdlwiLCBcIjNcIjpcIm5hdlwifSxcbiAgICB7XCJuYW1lXCI6XCJOb3J0aGVybiBOZGViZWxlXCIsIFwibG9jYWxcIjpcImlzaU5kZWJlbGVcIiwgXCIxXCI6XCJuZFwiLCBcIjJcIjpcIm5kZVwiLCBcIjJUXCI6XCJuZGVcIiwgXCIyQlwiOlwibmRlXCIsIFwiM1wiOlwibmRlXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk5lcGFsaVwiLCBcImxvY2FsXCI6XCLgpKjgpYfgpKrgpL7gpLLgpYBcIiwgXCIxXCI6XCJuZVwiLCBcIjJcIjpcIm5lcFwiLCBcIjJUXCI6XCJuZXBcIiwgXCIyQlwiOlwibmVwXCIsIFwiM1wiOlwibmVwXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk5kb25nYVwiLCBcImxvY2FsXCI6XCJPd2FtYm9cIiwgXCIxXCI6XCJuZ1wiLCBcIjJcIjpcIm5kb1wiLCBcIjJUXCI6XCJuZG9cIiwgXCIyQlwiOlwibmRvXCIsIFwiM1wiOlwibmRvXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk5vcndlZ2lhbiBCb2ttw6VsXCIsIFwibG9jYWxcIjpcIk5vcnNrIChCb2ttw6VsKVwiLCBcIjFcIjpcIm5iXCIsIFwiMlwiOlwibm9iXCIsIFwiMlRcIjpcIm5vYlwiLCBcIjJCXCI6XCJub2JcIiwgXCIzXCI6XCJub2JcIn0sXG4gICAge1wibmFtZVwiOlwiTm9yd2VnaWFuIE55bm9yc2tcIiwgXCJsb2NhbFwiOlwiTm9yc2sgKE55bm9yc2spXCIsIFwiMVwiOlwibm5cIiwgXCIyXCI6XCJubm9cIiwgXCIyVFwiOlwibm5vXCIsIFwiMkJcIjpcIm5ub1wiLCBcIjNcIjpcIm5ub1wifSxcbiAgICB7XCJuYW1lXCI6XCJOb3J3ZWdpYW5cIiwgXCJsb2NhbFwiOlwiTm9yc2tcIiwgXCIxXCI6XCJub1wiLCBcIjJcIjpcIm5vclwiLCBcIjJUXCI6XCJub3JcIiwgXCIyQlwiOlwibm9yXCIsIFwiM1wiOlwibm9yXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk51b3N1XCIsIFwibG9jYWxcIjpcIuqGiOqMoOqSvyBOdW9zdWh4b3BcIiwgXCIxXCI6XCJpaVwiLCBcIjJcIjpcImlpaVwiLCBcIjJUXCI6XCJpaWlcIiwgXCIyQlwiOlwiaWlpXCIsIFwiM1wiOlwiaWlpXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlNvdXRoZXJuIE5kZWJlbGVcIiwgXCJsb2NhbFwiOlwiaXNpTmRlYmVsZVwiLCBcIjFcIjpcIm5yXCIsIFwiMlwiOlwibmJsXCIsIFwiMlRcIjpcIm5ibFwiLCBcIjJCXCI6XCJuYmxcIiwgXCIzXCI6XCJuYmxcIn0sXG4gICAge1wibmFtZVwiOlwiT2NjaXRhblwiLCBcImxvY2FsXCI6XCJPY2NpdGFuXCIsIFwiMVwiOlwib2NcIiwgXCIyXCI6XCJvY2lcIiwgXCIyVFwiOlwib2NpXCIsIFwiMkJcIjpcIm9jaVwiLCBcIjNcIjpcIm9jaVwifSxcbiAgICB7XCJuYW1lXCI6XCJPamlid2VcIiwgXCJsb2NhbFwiOlwi4ZCK4ZOC4ZSR4ZOI4ZCv4ZKn4ZCO4ZOQXCIsIFwiMVwiOlwib2pcIiwgXCIyXCI6XCJvamlcIiwgXCIyVFwiOlwib2ppXCIsIFwiMkJcIjpcIm9qaVwiLCBcIjNcIjpcIm9qaVwifSxcbiAgICB7XCJuYW1lXCI6XCJPbGQgQ2h1cmNoIFNsYXZvbmljXCIsIFwibG9jYWxcIjpcItCh0LvQvtCy0aPMgdC90YzRgdC60YpcIiwgXCIxXCI6XCJjdVwiLCBcIjJcIjpcImNodVwiLCBcIjJUXCI6XCJjaHVcIiwgXCIyQlwiOlwiY2h1XCIsIFwiM1wiOlwiY2h1XCJ9LFxuICAgIHtcIm5hbWVcIjpcIk9yb21vXCIsIFwibG9jYWxcIjpcIkFmYWFuIE9yb21vb1wiLCBcIjFcIjpcIm9tXCIsIFwiMlwiOlwib3JtXCIsIFwiMlRcIjpcIm9ybVwiLCBcIjJCXCI6XCJvcm1cIiwgXCIzXCI6XCJvcm1cIn0sXG4gICAge1wibmFtZVwiOlwiT3JpeWFcIiwgXCJsb2NhbFwiOlwi4KyT4Kyh4Ky/4Ky84KyGXCIsIFwiMVwiOlwib3JcIiwgXCIyXCI6XCJvcmlcIiwgXCIyVFwiOlwib3JpXCIsIFwiMkJcIjpcIm9yaVwiLCBcIjNcIjpcIm9yaVwifSxcbiAgICB7XCJuYW1lXCI6XCJPc3NldGlhblwiLCBcImxvY2FsXCI6XCLQmNGA0L7QvSDDptCy0LfQsNCzXCIsIFwiMVwiOlwib3NcIiwgXCIyXCI6XCJvc3NcIiwgXCIyVFwiOlwib3NzXCIsIFwiMkJcIjpcIm9zc1wiLCBcIjNcIjpcIm9zc1wifSxcbiAgICB7XCJuYW1lXCI6XCJQYW5qYWJpXCIsIFwibG9jYWxcIjpcIuCoquCpsOConOCovuCorOCpgFwiLCBcIjFcIjpcInBhXCIsIFwiMlwiOlwicGFuXCIsIFwiMlRcIjpcInBhblwiLCBcIjJCXCI6XCJwYW5cIiwgXCIzXCI6XCJwYW5cIn0sXG4gICAge1wibmFtZVwiOlwiUMSBbGlcIiwgXCJsb2NhbFwiOlwi4KSq4KS+4KS04KS/XCIsIFwiMVwiOlwicGlcIiwgXCIyXCI6XCJwbGlcIiwgXCIyVFwiOlwicGxpXCIsIFwiMkJcIjpcInBsaVwiLCBcIjNcIjpcInBsaVwifSxcbiAgICB7XCJuYW1lXCI6XCJQZXJzaWFuXCIsIFwibG9jYWxcIjpcItmB2KfYsdiz24xcIiwgXCIxXCI6XCJmYVwiLCBcIjJcIjpcImZhc1wiLCBcIjJUXCI6XCJmYXNcIiwgXCIyQlwiOlwicGVyXCIsIFwiM1wiOlwiZmFzXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlBvbGlzaFwiLCBcImxvY2FsXCI6XCJQb2xza2lcIiwgXCIxXCI6XCJwbFwiLCBcIjJcIjpcInBvbFwiLCBcIjJUXCI6XCJwb2xcIiwgXCIyQlwiOlwicG9sXCIsIFwiM1wiOlwicG9sXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlBhc2h0b1wiLCBcImxvY2FsXCI6XCLZvtqa2KrZiFwiLCBcIjFcIjpcInBzXCIsIFwiMlwiOlwicHVzXCIsIFwiMlRcIjpcInB1c1wiLCBcIjJCXCI6XCJwdXNcIiwgXCIzXCI6XCJwdXNcIn0sXG4gICAge1wibmFtZVwiOlwiUG9ydHVndWVzZVwiLCBcImxvY2FsXCI6XCJQb3J0dWd1w6pzXCIsIFwiMVwiOlwicHRcIiwgXCIyXCI6XCJwb3JcIiwgXCIyVFwiOlwicG9yXCIsIFwiMkJcIjpcInBvclwiLCBcIjNcIjpcInBvclwifSxcbiAgICB7XCJuYW1lXCI6XCJRdWVjaHVhXCIsIFwibG9jYWxcIjpcIlJ1bmEgU2ltaVwiLCBcIjFcIjpcInF1XCIsIFwiMlwiOlwicXVlXCIsIFwiMlRcIjpcInF1ZVwiLCBcIjJCXCI6XCJxdWVcIiwgXCIzXCI6XCJxdWVcIn0sXG4gICAge1wibmFtZVwiOlwiUm9tYW5zaFwiLCBcImxvY2FsXCI6XCJSdW1hbnRzY2hcIiwgXCIxXCI6XCJybVwiLCBcIjJcIjpcInJvaFwiLCBcIjJUXCI6XCJyb2hcIiwgXCIyQlwiOlwicm9oXCIsIFwiM1wiOlwicm9oXCJ9LFxuICAgIHtcIm5hbWVcIjpcIktpcnVuZGlcIiwgXCJsb2NhbFwiOlwiS2lydW5kaVwiLCBcIjFcIjpcInJuXCIsIFwiMlwiOlwicnVuXCIsIFwiMlRcIjpcInJ1blwiLCBcIjJCXCI6XCJydW5cIiwgXCIzXCI6XCJydW5cIn0sXG4gICAge1wibmFtZVwiOlwiUm9tYW5pYW5cIiwgXCJsb2NhbFwiOlwiUm9tw6JuxINcIiwgXCIxXCI6XCJyb1wiLCBcIjJcIjpcInJvblwiLCBcIjJUXCI6XCJyb25cIiwgXCIyQlwiOlwicnVtXCIsIFwiM1wiOlwicm9uXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlJ1c3NpYW5cIiwgXCJsb2NhbFwiOlwi0KDRg9GB0YHQutC40LlcIiwgXCIxXCI6XCJydVwiLCBcIjJcIjpcInJ1c1wiLCBcIjJUXCI6XCJydXNcIiwgXCIyQlwiOlwicnVzXCIsIFwiM1wiOlwicnVzXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlNhbnNrcml0XCIsIFwibG9jYWxcIjpcIuCkuOCkguCkuOCljeCkleClg+CkpOCkruCljVwiLCBcIjFcIjpcInNhXCIsIFwiMlwiOlwic2FuXCIsIFwiMlRcIjpcInNhblwiLCBcIjJCXCI6XCJzYW5cIiwgXCIzXCI6XCJzYW5cIn0sXG4gICAge1wibmFtZVwiOlwiU2FyZGluaWFuXCIsIFwibG9jYWxcIjpcIlNhcmR1XCIsIFwiMVwiOlwic2NcIiwgXCIyXCI6XCJzcmRcIiwgXCIyVFwiOlwic3JkXCIsIFwiMkJcIjpcInNyZFwiLCBcIjNcIjpcInNyZFwifSxcbiAgICB7XCJuYW1lXCI6XCJTaW5kaGlcIiwgXCJsb2NhbFwiOlwi2LPZhtqM2YrigI5cIiwgXCIxXCI6XCJzZFwiLCBcIjJcIjpcInNuZFwiLCBcIjJUXCI6XCJzbmRcIiwgXCIyQlwiOlwic25kXCIsIFwiM1wiOlwic25kXCJ9LFxuICAgIHtcIm5hbWVcIjpcIk5vcnRoZXJuIFNhbWlcIiwgXCJsb2NhbFwiOlwiU8OhbWVnaWVsbGFcIiwgXCIxXCI6XCJzZVwiLCBcIjJcIjpcInNtZVwiLCBcIjJUXCI6XCJzbWVcIiwgXCIyQlwiOlwic21lXCIsIFwiM1wiOlwic21lXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlNhbW9hblwiLCBcImxvY2FsXCI6XCJHYWdhbmEgU8SBbW9hXCIsIFwiMVwiOlwic21cIiwgXCIyXCI6XCJzbW9cIiwgXCIyVFwiOlwic21vXCIsIFwiMkJcIjpcInNtb1wiLCBcIjNcIjpcInNtb1wifSxcbiAgICB7XCJuYW1lXCI6XCJTYW5nb1wiLCBcImxvY2FsXCI6XCJTw6RuZ8O2XCIsIFwiMVwiOlwic2dcIiwgXCIyXCI6XCJzYWdcIiwgXCIyVFwiOlwic2FnXCIsIFwiMkJcIjpcInNhZ1wiLCBcIjNcIjpcInNhZ1wifSxcbiAgICB7XCJuYW1lXCI6XCJTZXJiaWFuXCIsIFwibG9jYWxcIjpcItCh0YDQv9GB0LrQuFwiLCBcIjFcIjpcInNyXCIsIFwiMlwiOlwic3JwXCIsIFwiMlRcIjpcInNycFwiLCBcIjJCXCI6XCJzcnBcIiwgXCIzXCI6XCJzcnBcIn0sXG4gICAge1wibmFtZVwiOlwiR2FlbGljXCIsIFwibG9jYWxcIjpcIkfDoGlkaGxpZ1wiLCBcIjFcIjpcImdkXCIsIFwiMlwiOlwiZ2xhXCIsIFwiMlRcIjpcImdsYVwiLCBcIjJCXCI6XCJnbGFcIiwgXCIzXCI6XCJnbGFcIn0sXG4gICAge1wibmFtZVwiOlwiU2hvbmFcIiwgXCJsb2NhbFwiOlwiQ2hpU2hvbmFcIiwgXCIxXCI6XCJzblwiLCBcIjJcIjpcInNuYVwiLCBcIjJUXCI6XCJzbmFcIiwgXCIyQlwiOlwic25hXCIsIFwiM1wiOlwic25hXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlNpbmhhbGFcIiwgXCJsb2NhbFwiOlwi4LeD4LeS4LaC4LeE4La9XCIsIFwiMVwiOlwic2lcIiwgXCIyXCI6XCJzaW5cIiwgXCIyVFwiOlwic2luXCIsIFwiMkJcIjpcInNpblwiLCBcIjNcIjpcInNpblwifSxcbiAgICB7XCJuYW1lXCI6XCJTbG92YWtcIiwgXCJsb2NhbFwiOlwiU2xvdmVuxI1pbmFcIiwgXCIxXCI6XCJza1wiLCBcIjJcIjpcInNsa1wiLCBcIjJUXCI6XCJzbGtcIiwgXCIyQlwiOlwic2xvXCIsIFwiM1wiOlwic2xrXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlNsb3ZlbmVcIiwgXCJsb2NhbFwiOlwiU2xvdmVuxaHEjWluYVwiLCBcIjFcIjpcInNsXCIsIFwiMlwiOlwic2x2XCIsIFwiMlRcIjpcInNsdlwiLCBcIjJCXCI6XCJzbHZcIiwgXCIzXCI6XCJzbHZcIn0sXG4gICAge1wibmFtZVwiOlwiU29tYWxpXCIsIFwibG9jYWxcIjpcIlNvb21hYWxpZ2FcIiwgXCIxXCI6XCJzb1wiLCBcIjJcIjpcInNvbVwiLCBcIjJUXCI6XCJzb21cIiwgXCIyQlwiOlwic29tXCIsIFwiM1wiOlwic29tXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlNvdXRoZXJuIFNvdGhvXCIsIFwibG9jYWxcIjpcIlNlc290aG9cIiwgXCIxXCI6XCJzdFwiLCBcIjJcIjpcInNvdFwiLCBcIjJUXCI6XCJzb3RcIiwgXCIyQlwiOlwic290XCIsIFwiM1wiOlwic290XCJ9LFxuICAgIHtcIm5hbWVcIjpcIlNwYW5pc2hcIiwgXCJsb2NhbFwiOlwiRXNwYcOxb2xcIiwgXCIxXCI6XCJlc1wiLCBcIjJcIjpcInNwYVwiLCBcIjJUXCI6XCJzcGFcIiwgXCIyQlwiOlwic3BhXCIsIFwiM1wiOlwic3BhXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlN1bmRhbmVzZVwiLCBcImxvY2FsXCI6XCJCYXNhIFN1bmRhXCIsIFwiMVwiOlwic3VcIiwgXCIyXCI6XCJzdW5cIiwgXCIyVFwiOlwic3VuXCIsIFwiMkJcIjpcInN1blwiLCBcIjNcIjpcInN1blwifSxcbiAgICB7XCJuYW1lXCI6XCJTd2FoaWxpXCIsIFwibG9jYWxcIjpcIktpc3dhaGlsaVwiLCBcIjFcIjpcInN3XCIsIFwiMlwiOlwic3dhXCIsIFwiMlRcIjpcInN3YVwiLCBcIjJCXCI6XCJzd2FcIiwgXCIzXCI6XCJzd2FcIn0sXG4gICAge1wibmFtZVwiOlwiU3dhdGlcIiwgXCJsb2NhbFwiOlwiU2lTd2F0aVwiLCBcIjFcIjpcInNzXCIsIFwiMlwiOlwic3N3XCIsIFwiMlRcIjpcInNzd1wiLCBcIjJCXCI6XCJzc3dcIiwgXCIzXCI6XCJzc3dcIn0sXG4gICAge1wibmFtZVwiOlwiU3dlZGlzaFwiLCBcImxvY2FsXCI6XCJTdmVuc2thXCIsIFwiMVwiOlwic3ZcIiwgXCIyXCI6XCJzd2VcIiwgXCIyVFwiOlwic3dlXCIsIFwiMkJcIjpcInN3ZVwiLCBcIjNcIjpcInN3ZVwifSxcbiAgICB7XCJuYW1lXCI6XCJUYW1pbFwiLCBcImxvY2FsXCI6XCLgrqTgrq7grr/grrTgr41cIiwgXCIxXCI6XCJ0YVwiLCBcIjJcIjpcInRhbVwiLCBcIjJUXCI6XCJ0YW1cIiwgXCIyQlwiOlwidGFtXCIsIFwiM1wiOlwidGFtXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlRlbHVndVwiLCBcImxvY2FsXCI6XCLgsKTgsYbgsLLgsYHgsJfgsYFcIiwgXCIxXCI6XCJ0ZVwiLCBcIjJcIjpcInRlbFwiLCBcIjJUXCI6XCJ0ZWxcIiwgXCIyQlwiOlwidGVsXCIsIFwiM1wiOlwidGVsXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlRhamlrXCIsIFwibG9jYWxcIjpcItCi0L7St9C40LrTo1wiLCBcIjFcIjpcInRnXCIsIFwiMlwiOlwidGdrXCIsIFwiMlRcIjpcInRna1wiLCBcIjJCXCI6XCJ0Z2tcIiwgXCIzXCI6XCJ0Z2tcIn0sXG4gICAge1wibmFtZVwiOlwiVGhhaVwiLCBcImxvY2FsXCI6XCLguKDguLLguKnguLLguYTguJfguKJcIiwgXCIxXCI6XCJ0aFwiLCBcIjJcIjpcInRoYVwiLCBcIjJUXCI6XCJ0aGFcIiwgXCIyQlwiOlwidGhhXCIsIFwiM1wiOlwidGhhXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlRpZ3JpbnlhXCIsIFwibG9jYWxcIjpcIuGJteGMjeGIreGKm1wiLCBcIjFcIjpcInRpXCIsIFwiMlwiOlwidGlyXCIsIFwiMlRcIjpcInRpclwiLCBcIjJCXCI6XCJ0aXJcIiwgXCIzXCI6XCJ0aXJcIn0sXG4gICAge1wibmFtZVwiOlwiVGliZXRhbiBTdGFuZGFyZFwiLCBcImxvY2FsXCI6XCLgvZbgvbzgvZHgvIvgvaHgvbLgvYJcIiwgXCIxXCI6XCJib1wiLCBcIjJcIjpcImJvZFwiLCBcIjJUXCI6XCJib2RcIiwgXCIyQlwiOlwidGliXCIsIFwiM1wiOlwiYm9kXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlR1cmttZW5cIiwgXCJsb2NhbFwiOlwiVMO8cmttZW7Dp2VcIiwgXCIxXCI6XCJ0a1wiLCBcIjJcIjpcInR1a1wiLCBcIjJUXCI6XCJ0dWtcIiwgXCIyQlwiOlwidHVrXCIsIFwiM1wiOlwidHVrXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlRhZ2Fsb2dcIiwgXCJsb2NhbFwiOlwiVGFnYWxvZ1wiLCBcIjFcIjpcInRsXCIsIFwiMlwiOlwidGdsXCIsIFwiMlRcIjpcInRnbFwiLCBcIjJCXCI6XCJ0Z2xcIiwgXCIzXCI6XCJ0Z2xcIn0sXG4gICAge1wibmFtZVwiOlwiVHN3YW5hXCIsIFwibG9jYWxcIjpcIlNldHN3YW5hXCIsIFwiMVwiOlwidG5cIiwgXCIyXCI6XCJ0c25cIiwgXCIyVFwiOlwidHNuXCIsIFwiMkJcIjpcInRzblwiLCBcIjNcIjpcInRzblwifSxcbiAgICB7XCJuYW1lXCI6XCJUb25nYVwiLCBcImxvY2FsXCI6XCJmYWthIFRvbmdhXCIsIFwiMVwiOlwidG9cIiwgXCIyXCI6XCJ0b25cIiwgXCIyVFwiOlwidG9uXCIsIFwiMkJcIjpcInRvblwiLCBcIjNcIjpcInRvblwifSxcbiAgICB7XCJuYW1lXCI6XCJUdXJraXNoXCIsIFwibG9jYWxcIjpcIlTDvHJrw6dlXCIsIFwiMVwiOlwidHJcIiwgXCIyXCI6XCJ0dXJcIiwgXCIyVFwiOlwidHVyXCIsIFwiMkJcIjpcInR1clwiLCBcIjNcIjpcInR1clwifSxcbiAgICB7XCJuYW1lXCI6XCJUc29uZ2FcIiwgXCJsb2NhbFwiOlwiWGl0c29uZ2FcIiwgXCIxXCI6XCJ0c1wiLCBcIjJcIjpcInRzb1wiLCBcIjJUXCI6XCJ0c29cIiwgXCIyQlwiOlwidHNvXCIsIFwiM1wiOlwidHNvXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlRhdGFyXCIsIFwibG9jYWxcIjpcItCi0LDRgtCw0YDRh9CwXCIsIFwiMVwiOlwidHRcIiwgXCIyXCI6XCJ0YXRcIiwgXCIyVFwiOlwidGF0XCIsIFwiMkJcIjpcInRhdFwiLCBcIjNcIjpcInRhdFwifSxcbiAgICB7XCJuYW1lXCI6XCJUd2lcIiwgXCJsb2NhbFwiOlwiVHdpXCIsIFwiMVwiOlwidHdcIiwgXCIyXCI6XCJ0d2lcIiwgXCIyVFwiOlwidHdpXCIsIFwiMkJcIjpcInR3aVwiLCBcIjNcIjpcInR3aVwifSxcbiAgICB7XCJuYW1lXCI6XCJUYWhpdGlhblwiLCBcImxvY2FsXCI6XCJSZW8gTcSB4oCZb2hpXCIsIFwiMVwiOlwidHlcIiwgXCIyXCI6XCJ0YWhcIiwgXCIyVFwiOlwidGFoXCIsIFwiMkJcIjpcInRhaFwiLCBcIjNcIjpcInRhaFwifSxcbiAgICB7XCJuYW1lXCI6XCJVeWdodXJcIiwgXCJsb2NhbFwiOlwi2Kbbh9mK2Lrbh9ix2obZh1wiLCBcIjFcIjpcInVnXCIsIFwiMlwiOlwidWlnXCIsIFwiMlRcIjpcInVpZ1wiLCBcIjJCXCI6XCJ1aWdcIiwgXCIzXCI6XCJ1aWdcIn0sXG4gICAge1wibmFtZVwiOlwiVWtyYWluaWFuXCIsIFwibG9jYWxcIjpcItCj0LrRgNCw0ZfQvdGB0YzQutCwXCIsIFwiMVwiOlwidWtcIiwgXCIyXCI6XCJ1a3JcIiwgXCIyVFwiOlwidWtyXCIsIFwiMkJcIjpcInVrclwiLCBcIjNcIjpcInVrclwifSxcbiAgICB7XCJuYW1lXCI6XCJVcmR1XCIsIFwibG9jYWxcIjpcItin2LHYr9mIXCIsIFwiMVwiOlwidXJcIiwgXCIyXCI6XCJ1cmRcIiwgXCIyVFwiOlwidXJkXCIsIFwiMkJcIjpcInVyZFwiLCBcIjNcIjpcInVyZFwifSxcbiAgICB7XCJuYW1lXCI6XCJVemJla1wiLCBcImxvY2FsXCI6XCJP4oCYemJla1wiLCBcIjFcIjpcInV6XCIsIFwiMlwiOlwidXpiXCIsIFwiMlRcIjpcInV6YlwiLCBcIjJCXCI6XCJ1emJcIiwgXCIzXCI6XCJ1emJcIn0sXG4gICAge1wibmFtZVwiOlwiVmVuZGFcIiwgXCJsb2NhbFwiOlwiVHNoaXZlbuG4k2FcIiwgXCIxXCI6XCJ2ZVwiLCBcIjJcIjpcInZlblwiLCBcIjJUXCI6XCJ2ZW5cIiwgXCIyQlwiOlwidmVuXCIsIFwiM1wiOlwidmVuXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlZpZXRuYW1lc2VcIiwgXCJsb2NhbFwiOlwiVGnhur9uZyBWaeG7h3RcIiwgXCIxXCI6XCJ2aVwiLCBcIjJcIjpcInZpZVwiLCBcIjJUXCI6XCJ2aWVcIiwgXCIyQlwiOlwidmllXCIsIFwiM1wiOlwidmllXCJ9LFxuICAgIHtcIm5hbWVcIjpcIlZvbGFww7xrXCIsIFwibG9jYWxcIjpcIlZvbGFww7xrXCIsIFwiMVwiOlwidm9cIiwgXCIyXCI6XCJ2b2xcIiwgXCIyVFwiOlwidm9sXCIsIFwiMkJcIjpcInZvbFwiLCBcIjNcIjpcInZvbFwifSxcbiAgICB7XCJuYW1lXCI6XCJXYWxsb29uXCIsIFwibG9jYWxcIjpcIldhbG9uXCIsIFwiMVwiOlwid2FcIiwgXCIyXCI6XCJ3bG5cIiwgXCIyVFwiOlwid2xuXCIsIFwiMkJcIjpcIndsblwiLCBcIjNcIjpcIndsblwifSxcbiAgICB7XCJuYW1lXCI6XCJXZWxzaFwiLCBcImxvY2FsXCI6XCJDeW1yYWVnXCIsIFwiMVwiOlwiY3lcIiwgXCIyXCI6XCJjeW1cIiwgXCIyVFwiOlwiY3ltXCIsIFwiMkJcIjpcIndlbFwiLCBcIjNcIjpcImN5bVwifSxcbiAgICB7XCJuYW1lXCI6XCJXb2xvZlwiLCBcImxvY2FsXCI6XCJXb2xvZlwiLCBcIjFcIjpcIndvXCIsIFwiMlwiOlwid29sXCIsIFwiMlRcIjpcIndvbFwiLCBcIjJCXCI6XCJ3b2xcIiwgXCIzXCI6XCJ3b2xcIn0sXG4gICAge1wibmFtZVwiOlwiV2VzdGVybiBGcmlzaWFuXCIsIFwibG9jYWxcIjpcIkZyeXNrXCIsIFwiMVwiOlwiZnlcIiwgXCIyXCI6XCJmcnlcIiwgXCIyVFwiOlwiZnJ5XCIsIFwiMkJcIjpcImZyeVwiLCBcIjNcIjpcImZyeVwifSxcbiAgICB7XCJuYW1lXCI6XCJYaG9zYVwiLCBcImxvY2FsXCI6XCJpc2lYaG9zYVwiLCBcIjFcIjpcInhoXCIsIFwiMlwiOlwieGhvXCIsIFwiMlRcIjpcInhob1wiLCBcIjJCXCI6XCJ4aG9cIiwgXCIzXCI6XCJ4aG9cIn0sXG4gICAge1wibmFtZVwiOlwiWWlkZGlzaFwiLCBcImxvY2FsXCI6XCLXmdeZ1rTXk9eZ16lcIiwgXCIxXCI6XCJ5aVwiLCBcIjJcIjpcInlpZFwiLCBcIjJUXCI6XCJ5aWRcIiwgXCIyQlwiOlwieWlkXCIsIFwiM1wiOlwieWlkXCJ9LFxuICAgIHtcIm5hbWVcIjpcIllvcnViYVwiLCBcImxvY2FsXCI6XCJZb3LDuWLDoVwiLCBcIjFcIjpcInlvXCIsIFwiMlwiOlwieW9yXCIsIFwiMlRcIjpcInlvclwiLCBcIjJCXCI6XCJ5b3JcIiwgXCIzXCI6XCJ5b3JcIn0sXG4gICAge1wibmFtZVwiOlwiWmh1YW5nXCIsIFwibG9jYWxcIjpcIkN1ZW5naFwiLCBcIjFcIjpcInphXCIsIFwiMlwiOlwiemhhXCIsIFwiMlRcIjpcInpoYVwiLCBcIjJCXCI6XCJ6aGFcIiwgXCIzXCI6XCJ6aGFcIn0sXG4gICAge1wibmFtZVwiOlwiWnVsdVwiLCBcImxvY2FsXCI6XCJpc2ladWx1XCIsIFwiMVwiOlwienVcIiwgXCIyXCI6XCJ6dWxcIiwgXCIyVFwiOlwienVsXCIsIFwiMkJcIjpcInp1bFwiLCBcIjNcIjpcInp1bFwifVxuXTtcbiIsInZhciBkYXRhID0gcmVxdWlyZSgnLi9kYXRhJyk7XG5cbnZhciBsYW5ncyA9IHtcbiAgICBhbGw6ICAgYWxsTGFuZ3VhZ2VzLFxuICAgIGhhczogICBoYXNMYW5ndWFnZSxcbiAgICBjb2RlczogZ2V0Q29kZXMsXG4gICAgbmFtZXM6IGdldE5hbWVzLFxuICAgIHdoZXJlOiBmaW5kQnlcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbGFuZ3M7XG5cbi8vIGFsbExhbmd1YWdlcyA6OiAtPiBMYW5ndWFnZVtdXG5mdW5jdGlvbiBhbGxMYW5ndWFnZXMoKSB7XG4gICAgcmV0dXJuIGRhdGE7XG59XG5cbi8vIGhhc0xhbmd1YWdlIDo6IFN0cmluZywgU3RyaW5nIC0+IEJvb2xlYW5cbmZ1bmN0aW9uIGhhc0xhbmd1YWdlKGNyaXQsIHZhbCkge1xuICAgIHJldHVybiB2b2lkKDApICE9PSBmaW5kQnkoY3JpdCwgdmFsKTtcbn1cblxuLy8gZ2V0Q29kZXMgOjogU3RyaW5nIC0+IFN0cmluZ1tdXG5mdW5jdGlvbiBnZXRDb2Rlcyh0eXBlKSB7XG4gICAgaWYgKGlzVmFsaWRUeXBlKHR5cGUpKSB7XG4gICAgICAgIHJldHVybiBmb3JBbGwoZGF0YSwgZnVuY3Rpb24gZ2V0Q29kZXNJdGVyYXRvcihyb3cpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dbdHlwZV07XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLy8gZ2V0TmFtZXMgOjogQm9vbGVhbiAtPiBTdHJpbmdbXVxuZnVuY3Rpb24gZ2V0TmFtZXMobG9jYWwpIHtcbiAgICByZXR1cm4gZm9yQWxsKGRhdGEsIGZ1bmN0aW9uIGdldE5hbWVzSXRlcmF0b3Iocm93KSB7XG4gICAgICAgIHJldHVybiBsb2NhbCA/IHJvdy5sb2NhbCA6IHJvdy5uYW1lO1xuICAgIH0pO1xufVxuXG4vLyBmaW5kQnkgOjogU3RyaW5nLCBTdHJpbmcgLT4gTGFuZ3VhZ2VcbmZ1bmN0aW9uIGZpbmRCeShjcml0LCB2YWwpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHZhbCA9PT0gZGF0YVtpXVtjcml0XSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFbaV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIGZvckFsbCA6OiBBcnJheSwgRnVuY3Rpb24gLT4gQXJyYXlcbmZ1bmN0aW9uIGZvckFsbChhcnIsIGZuKSB7XG4gICAgdmFyIG91dCA9IFtdLCBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0LnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuLy8gaXNWYWxpZFR5cGUgOjogU3RyaW5nIC0+IEJvb2xlYW5cbmZ1bmN0aW9uIGlzVmFsaWRUeXBlKHR5cGUpIHtcbiAgICB2YXIgdHlwZXMgPSBbMSwgMiwgMywgJzEnLCAnMicsICcyQicsICcyVCcsICczJ107XG4gICAgcmV0dXJuIC0xICE9PSB0eXBlcy5pbmRleE9mKHR5cGUpO1xufVxuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJlcXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iLCIvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlQ2VpbCA9IE1hdGguY2VpbCxcbiAgICBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5nZWAgYW5kIGBfLnJhbmdlUmlnaHRgIHdoaWNoIGRvZXNuJ3RcbiAqIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGVwIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBuYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kIC0gc3RhcnQpIC8gKHN0ZXAgfHwgMSkpLCAwKSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgcmVzdWx0W2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdID0gc3RhcnQ7XG4gICAgc3RhcnQgKz0gc3RlcDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VSYW5nZTtcbiIsInZhciB0cmltbWVkRW5kSW5kZXggPSByZXF1aXJlKCcuL190cmltbWVkRW5kSW5kZXgnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUcmltO1xuIiwidmFyIGJhc2VSYW5nZSA9IHJlcXVpcmUoJy4vX2Jhc2VSYW5nZScpLFxuICAgIGlzSXRlcmF0ZWVDYWxsID0gcmVxdWlyZSgnLi9faXNJdGVyYXRlZUNhbGwnKSxcbiAgICB0b0Zpbml0ZSA9IHJlcXVpcmUoJy4vdG9GaW5pdGUnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJhbmdlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHN0ZXApIHtcbiAgICBpZiAoc3RlcCAmJiB0eXBlb2Ygc3RlcCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChzdGFydCwgZW5kLCBzdGVwKSkge1xuICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gRW5zdXJlIHRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZW5kID0gc3RhcnQ7XG4gICAgICBzdGFydCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuZCA9IHRvRmluaXRlKGVuZCk7XG4gICAgfVxuICAgIHN0ZXAgPSBzdGVwID09PSB1bmRlZmluZWQgPyAoc3RhcnQgPCBlbmQgPyAxIDogLTEpIDogdG9GaW5pdGUoc3RlcCk7XG4gICAgcmV0dXJuIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJhbmdlO1xuIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSXRlcmF0ZWVDYWxsO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbnZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gKiBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSB7XG4gIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbW1lZEVuZEluZGV4O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iLCJ2YXIgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRnVuY3Rpb247XG4iLCIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIExvZGFzaCA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIENvcHlyaWdodCBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL29wZW5qc2Yub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuOyhmdW5jdGlvbigpIHtcblxuICAvKiogVXNlZCBhcyBhIHNhZmUgcmVmZXJlbmNlIGZvciBgdW5kZWZpbmVkYCBpbiBwcmUtRVM1IGVudmlyb25tZW50cy4gKi9cbiAgdmFyIHVuZGVmaW5lZDtcblxuICAvKiogVXNlZCBhcyB0aGUgc2VtYW50aWMgdmVyc2lvbiBudW1iZXIuICovXG4gIHZhciBWRVJTSU9OID0gJzQuMTcuMjEnO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBzaXplIHRvIGVuYWJsZSBsYXJnZSBhcnJheSBvcHRpbWl6YXRpb25zLiAqL1xuICB2YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuICAvKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG4gIHZhciBDT1JFX0VSUk9SX1RFWFQgPSAnVW5zdXBwb3J0ZWQgY29yZS1qcyB1c2UuIFRyeSBodHRwczovL25wbXMuaW8vc2VhcmNoP3E9cG9ueWZpbGwuJyxcbiAgICAgIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJyxcbiAgICAgIElOVkFMSURfVEVNUExfVkFSX0VSUk9SX1RFWFQgPSAnSW52YWxpZCBgdmFyaWFibGVgIG9wdGlvbiBwYXNzZWQgaW50byBgXy50ZW1wbGF0ZWAnO1xuXG4gIC8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbiAgdmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbiAgdmFyIE1BWF9NRU1PSVpFX1NJWkUgPSA1MDA7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIGludGVybmFsIGFyZ3VtZW50IHBsYWNlaG9sZGVyLiAqL1xuICB2YXIgUExBQ0VIT0xERVIgPSAnX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyc7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbiAgdmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgICAgQ0xPTkVfU1lNQk9MU19GTEFHID0gNDtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbiAgdmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGZ1bmN0aW9uIG1ldGFkYXRhLiAqL1xuICB2YXIgV1JBUF9CSU5EX0ZMQUcgPSAxLFxuICAgICAgV1JBUF9CSU5EX0tFWV9GTEFHID0gMixcbiAgICAgIFdSQVBfQ1VSUllfQk9VTkRfRkxBRyA9IDQsXG4gICAgICBXUkFQX0NVUlJZX0ZMQUcgPSA4LFxuICAgICAgV1JBUF9DVVJSWV9SSUdIVF9GTEFHID0gMTYsXG4gICAgICBXUkFQX1BBUlRJQUxfRkxBRyA9IDMyLFxuICAgICAgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcgPSA2NCxcbiAgICAgIFdSQVBfQVJZX0ZMQUcgPSAxMjgsXG4gICAgICBXUkFQX1JFQVJHX0ZMQUcgPSAyNTYsXG4gICAgICBXUkFQX0ZMSVBfRkxBRyA9IDUxMjtcblxuICAvKiogVXNlZCBhcyBkZWZhdWx0IG9wdGlvbnMgZm9yIGBfLnRydW5jYXRlYC4gKi9cbiAgdmFyIERFRkFVTFRfVFJVTkNfTEVOR1RIID0gMzAsXG4gICAgICBERUZBVUxUX1RSVU5DX09NSVNTSU9OID0gJy4uLic7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xuICB2YXIgSE9UX0NPVU5UID0gODAwLFxuICAgICAgSE9UX1NQQU4gPSAxNjtcblxuICAvKiogVXNlZCB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBsYXp5IGl0ZXJhdGVlcy4gKi9cbiAgdmFyIExBWllfRklMVEVSX0ZMQUcgPSAxLFxuICAgICAgTEFaWV9NQVBfRkxBRyA9IDIsXG4gICAgICBMQVpZX1dISUxFX0ZMQUcgPSAzO1xuXG4gIC8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xuICB2YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICAgIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxLFxuICAgICAgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCxcbiAgICAgIE5BTiA9IDAgLyAwO1xuXG4gIC8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHRoZSBtYXhpbXVtIGxlbmd0aCBhbmQgaW5kZXggb2YgYW4gYXJyYXkuICovXG4gIHZhciBNQVhfQVJSQVlfTEVOR1RIID0gNDI5NDk2NzI5NSxcbiAgICAgIE1BWF9BUlJBWV9JTkRFWCA9IE1BWF9BUlJBWV9MRU5HVEggLSAxLFxuICAgICAgSEFMRl9NQVhfQVJSQVlfTEVOR1RIID0gTUFYX0FSUkFZX0xFTkdUSCA+Pj4gMTtcblxuICAvKiogVXNlZCB0byBhc3NvY2lhdGUgd3JhcCBtZXRob2RzIHdpdGggdGhlaXIgYml0IGZsYWdzLiAqL1xuICB2YXIgd3JhcEZsYWdzID0gW1xuICAgIFsnYXJ5JywgV1JBUF9BUllfRkxBR10sXG4gICAgWydiaW5kJywgV1JBUF9CSU5EX0ZMQUddLFxuICAgIFsnYmluZEtleScsIFdSQVBfQklORF9LRVlfRkxBR10sXG4gICAgWydjdXJyeScsIFdSQVBfQ1VSUllfRkxBR10sXG4gICAgWydjdXJyeVJpZ2h0JywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHXSxcbiAgICBbJ2ZsaXAnLCBXUkFQX0ZMSVBfRkxBR10sXG4gICAgWydwYXJ0aWFsJywgV1JBUF9QQVJUSUFMX0ZMQUddLFxuICAgIFsncGFydGlhbFJpZ2h0JywgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUddLFxuICAgIFsncmVhcmcnLCBXUkFQX1JFQVJHX0ZMQUddXG4gIF07XG5cbiAgLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xuICB2YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgICAgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICAgIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgICBnZW5UYWcgPSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nLFxuICAgICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICAgIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XScsXG4gICAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nLFxuICAgICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJyxcbiAgICAgIHdlYWtTZXRUYWcgPSAnW29iamVjdCBXZWFrU2V0XSc7XG5cbiAgdmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuICAvKiogVXNlZCB0byBtYXRjaCBlbXB0eSBzdHJpbmcgbGl0ZXJhbHMgaW4gY29tcGlsZWQgdGVtcGxhdGUgc291cmNlLiAqL1xuICB2YXIgcmVFbXB0eVN0cmluZ0xlYWRpbmcgPSAvXFxiX19wIFxcKz0gJyc7L2csXG4gICAgICByZUVtcHR5U3RyaW5nTWlkZGxlID0gL1xcYihfX3AgXFwrPSkgJycgXFwrL2csXG4gICAgICByZUVtcHR5U3RyaW5nVHJhaWxpbmcgPSAvKF9fZVxcKC4qP1xcKXxcXGJfX3RcXCkpIFxcK1xcbicnOy9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlRXNjYXBlZEh0bWwgPSAvJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csXG4gICAgICByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ10vZyxcbiAgICAgIHJlSGFzRXNjYXBlZEh0bWwgPSBSZWdFeHAocmVFc2NhcGVkSHRtbC5zb3VyY2UpLFxuICAgICAgcmVIYXNVbmVzY2FwZWRIdG1sID0gUmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG4gIHZhciByZUVzY2FwZSA9IC88JS0oW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVFdmFsdWF0ZSA9IC88JShbXFxzXFxTXSs/KSU+L2csXG4gICAgICByZUludGVycG9sYXRlID0gLzwlPShbXFxzXFxTXSs/KSU+L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVJc0RlZXBQcm9wID0gL1xcLnxcXFsoPzpbXltcXF1dKnwoW1wiJ10pKD86KD8hXFwxKVteXFxcXF18XFxcXC4pKj9cXDEpXFxdLyxcbiAgICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLyxcbiAgICAgIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAgICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gICAqL1xuICB2YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nLFxuICAgICAgcmVIYXNSZWdFeHBDaGFyID0gUmVnRXhwKHJlUmVnRXhwQ2hhci5zb3VyY2UpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgd2hpdGVzcGFjZS4gKi9cbiAgdmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuICAvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbiAgdmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHdyYXAgZGV0YWlsIGNvbW1lbnRzLiAqL1xuICB2YXIgcmVXcmFwQ29tbWVudCA9IC9cXHsoPzpcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoIC4rXFxdIFxcKlxcLyk/XFxuPy8sXG4gICAgICByZVdyYXBEZXRhaWxzID0gL1xce1xcblxcL1xcKiBcXFt3cmFwcGVkIHdpdGggKC4rKVxcXSBcXCovLFxuICAgICAgcmVTcGxpdERldGFpbHMgPSAvLD8gJiAvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHdvcmRzIGNvbXBvc2VkIG9mIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgcmVBc2NpaVdvcmQgPSAvW15cXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHg3Zl0rL2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gdmFsaWRhdGUgdGhlIGB2YWxpZGF0ZWAgb3B0aW9uIGluIGBfLnRlbXBsYXRlYCB2YXJpYWJsZS5cbiAgICpcbiAgICogRm9yYmlkcyBjaGFyYWN0ZXJzIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQgZGVmaW5pdGlvbjpcbiAgICogLSBcIigpLFwiIChtb2RpZmljYXRpb24gb2YgZnVuY3Rpb24gcGFyYW1ldGVycylcbiAgICogLSBcIj1cIiAoZGVmYXVsdCB2YWx1ZSlcbiAgICogLSBcIltde31cIiAoZGVzdHJ1Y3R1cmluZyBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzKVxuICAgKiAtIFwiL1wiIChiZWdpbm5pbmcgb2YgYSBjb21tZW50KVxuICAgKiAtIHdoaXRlc3BhY2VcbiAgICovXG4gIHZhciByZUZvcmJpZGRlbklkZW50aWZpZXJDaGFycyA9IC9bKCk9LHt9XFxbXFxdXFwvXFxzXS87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG4gIHZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaFxuICAgKiBbRVMgdGVtcGxhdGUgZGVsaW1pdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdGVtcGxhdGUtbGl0ZXJhbC1sZXhpY2FsLWNvbXBvbmVudHMpLlxuICAgKi9cbiAgdmFyIHJlRXNUZW1wbGF0ZSA9IC9cXCRcXHsoW15cXFxcfV0qKD86XFxcXC5bXlxcXFx9XSopKilcXH0vZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBgUmVnRXhwYCBmbGFncyBmcm9tIHRoZWlyIGNvZXJjZWQgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlRmxhZ3MgPSAvXFx3KiQvO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuICAvKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG4gIHZhciByZUlzSG9zdEN0b3IgPSAvXlxcW29iamVjdCAuKz9Db25zdHJ1Y3RvclxcXSQvO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuICAvKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG4gIHZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggTGF0aW4gVW5pY29kZSBsZXR0ZXJzIChleGNsdWRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdG9ycykuICovXG4gIHZhciByZUxhdGluID0gL1tcXHhjMC1cXHhkNlxceGQ4LVxceGY2XFx4ZjgtXFx4ZmZcXHUwMTAwLVxcdTAxN2ZdL2c7XG5cbiAgLyoqIFVzZWQgdG8gZW5zdXJlIGNhcHR1cmluZyBvcmRlciBvZiB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xuICB2YXIgcmVOb01hdGNoID0gLygkXikvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHVuZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbiAgdmFyIHJlVW5lc2NhcGVkU3RyaW5nID0gL1snXFxuXFxyXFx1MjAyOFxcdTIwMjlcXFxcXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbiAgdmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgICByc0RpbmdiYXRSYW5nZSA9ICdcXFxcdTI3MDAtXFxcXHUyN2JmJyxcbiAgICAgIHJzTG93ZXJSYW5nZSA9ICdhLXpcXFxceGRmLVxcXFx4ZjZcXFxceGY4LVxcXFx4ZmYnLFxuICAgICAgcnNNYXRoT3BSYW5nZSA9ICdcXFxceGFjXFxcXHhiMVxcXFx4ZDdcXFxceGY3JyxcbiAgICAgIHJzTm9uQ2hhclJhbmdlID0gJ1xcXFx4MDAtXFxcXHgyZlxcXFx4M2EtXFxcXHg0MFxcXFx4NWItXFxcXHg2MFxcXFx4N2ItXFxcXHhiZicsXG4gICAgICByc1B1bmN0dWF0aW9uUmFuZ2UgPSAnXFxcXHUyMDAwLVxcXFx1MjA2ZicsXG4gICAgICByc1NwYWNlUmFuZ2UgPSAnIFxcXFx0XFxcXHgwYlxcXFxmXFxcXHhhMFxcXFx1ZmVmZlxcXFxuXFxcXHJcXFxcdTIwMjhcXFxcdTIwMjlcXFxcdTE2ODBcXFxcdTE4MGVcXFxcdTIwMDBcXFxcdTIwMDFcXFxcdTIwMDJcXFxcdTIwMDNcXFxcdTIwMDRcXFxcdTIwMDVcXFxcdTIwMDZcXFxcdTIwMDdcXFxcdTIwMDhcXFxcdTIwMDlcXFxcdTIwMGFcXFxcdTIwMmZcXFxcdTIwNWZcXFxcdTMwMDAnLFxuICAgICAgcnNVcHBlclJhbmdlID0gJ0EtWlxcXFx4YzAtXFxcXHhkNlxcXFx4ZDgtXFxcXHhkZScsXG4gICAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZicsXG4gICAgICByc0JyZWFrUmFuZ2UgPSByc01hdGhPcFJhbmdlICsgcnNOb25DaGFyUmFuZ2UgKyByc1B1bmN0dWF0aW9uUmFuZ2UgKyByc1NwYWNlUmFuZ2U7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xuICB2YXIgcnNBcG9zID0gXCJbJ1xcdTIwMTldXCIsXG4gICAgICByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgICByc0JyZWFrID0gJ1snICsgcnNCcmVha1JhbmdlICsgJ10nLFxuICAgICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICAgIHJzRGlnaXRzID0gJ1xcXFxkKycsXG4gICAgICByc0RpbmdiYXQgPSAnWycgKyByc0RpbmdiYXRSYW5nZSArICddJyxcbiAgICAgIHJzTG93ZXIgPSAnWycgKyByc0xvd2VyUmFuZ2UgKyAnXScsXG4gICAgICByc01pc2MgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArIHJzQnJlYWtSYW5nZSArIHJzRGlnaXRzICsgcnNEaW5nYmF0UmFuZ2UgKyByc0xvd2VyUmFuZ2UgKyByc1VwcGVyUmFuZ2UgKyAnXScsXG4gICAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICAgIHJzTW9kaWZpZXIgPSAnKD86JyArIHJzQ29tYm8gKyAnfCcgKyByc0ZpdHogKyAnKScsXG4gICAgICByc05vbkFzdHJhbCA9ICdbXicgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICAgIHJzU3VyclBhaXIgPSAnW1xcXFx1ZDgwMC1cXFxcdWRiZmZdW1xcXFx1ZGMwMC1cXFxcdWRmZmZdJyxcbiAgICAgIHJzVXBwZXIgPSAnWycgKyByc1VwcGVyUmFuZ2UgKyAnXScsXG4gICAgICByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSByZWdleGVzLiAqL1xuICB2YXIgcnNNaXNjTG93ZXIgPSAnKD86JyArIHJzTG93ZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc01pc2NVcHBlciA9ICcoPzonICsgcnNVcHBlciArICd8JyArIHJzTWlzYyArICcpJyxcbiAgICAgIHJzT3B0Q29udHJMb3dlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OmR8bGx8bXxyZXxzfHR8dmUpKT8nLFxuICAgICAgcnNPcHRDb250clVwcGVyID0gJyg/OicgKyByc0Fwb3MgKyAnKD86RHxMTHxNfFJFfFN8VHxWRSkpPycsXG4gICAgICByZU9wdE1vZCA9IHJzTW9kaWZpZXIgKyAnPycsXG4gICAgICByc09wdFZhciA9ICdbJyArIHJzVmFyUmFuZ2UgKyAnXT8nLFxuICAgICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICAgIHJzT3JkTG93ZXIgPSAnXFxcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxcXGR0aCkoPz1cXFxcYnxbQS1aX10pJyxcbiAgICAgIHJzT3JkVXBwZXIgPSAnXFxcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxcXGRUSCkoPz1cXFxcYnxbYS16X10pJyxcbiAgICAgIHJzU2VxID0gcnNPcHRWYXIgKyByZU9wdE1vZCArIHJzT3B0Sm9pbixcbiAgICAgIHJzRW1vamkgPSAnKD86JyArIFtyc0RpbmdiYXQsIHJzUmVnaW9uYWwsIHJzU3VyclBhaXJdLmpvaW4oJ3wnKSArICcpJyArIHJzU2VxLFxuICAgICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYXBvc3Ryb3BoZXMuICovXG4gIHZhciByZUFwb3MgPSBSZWdFeHAocnNBcG9zLCAnZycpO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykgYW5kXG4gICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3MgZm9yIHN5bWJvbHNdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrc19mb3JfU3ltYm9scykuXG4gICAqL1xuICB2YXIgcmVDb21ib01hcmsgPSBSZWdFeHAocnNDb21ibywgJ2cnKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xuICB2YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggY29tcGxleCBvciBjb21wb3VuZCB3b3Jkcy4gKi9cbiAgdmFyIHJlVW5pY29kZVdvcmQgPSBSZWdFeHAoW1xuICAgIHJzVXBwZXIgKyAnPycgKyByc0xvd2VyICsgJysnICsgcnNPcHRDb250ckxvd2VyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciwgJyQnXS5qb2luKCd8JykgKyAnKScsXG4gICAgcnNNaXNjVXBwZXIgKyAnKycgKyByc09wdENvbnRyVXBwZXIgKyAnKD89JyArIFtyc0JyZWFrLCByc1VwcGVyICsgcnNNaXNjTG93ZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzVXBwZXIgKyAnPycgKyByc01pc2NMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlcixcbiAgICByc1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyLFxuICAgIHJzT3JkVXBwZXIsXG4gICAgcnNPcmRMb3dlcixcbiAgICByc0RpZ2l0cyxcbiAgICByc0Vtb2ppXG4gIF0uam9pbignfCcpLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHdpdGggW3plcm8td2lkdGggam9pbmVycyBvciBjb2RlIHBvaW50cyBmcm9tIHRoZSBhc3RyYWwgcGxhbmVzXShodHRwOi8vZWV2LmVlL2Jsb2cvMjAxNS8wOS8xMi9kYXJrLWNvcm5lcnMtb2YtdW5pY29kZS8pLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB0aGF0IG5lZWQgYSBtb3JlIHJvYnVzdCByZWdleHAgdG8gbWF0Y2ggd29yZHMuICovXG4gIHZhciByZUhhc1VuaWNvZGVXb3JkID0gL1thLXpdW0EtWl18W0EtWl17Mn1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS87XG5cbiAgLyoqIFVzZWQgdG8gYXNzaWduIGRlZmF1bHQgYGNvbnRleHRgIG9iamVjdCBwcm9wZXJ0aWVzLiAqL1xuICB2YXIgY29udGV4dFByb3BzID0gW1xuICAgICdBcnJheScsICdCdWZmZXInLCAnRGF0YVZpZXcnLCAnRGF0ZScsICdFcnJvcicsICdGbG9hdDMyQXJyYXknLCAnRmxvYXQ2NEFycmF5JyxcbiAgICAnRnVuY3Rpb24nLCAnSW50OEFycmF5JywgJ0ludDE2QXJyYXknLCAnSW50MzJBcnJheScsICdNYXAnLCAnTWF0aCcsICdPYmplY3QnLFxuICAgICdQcm9taXNlJywgJ1JlZ0V4cCcsICdTZXQnLCAnU3RyaW5nJywgJ1N5bWJvbCcsICdUeXBlRXJyb3InLCAnVWludDhBcnJheScsXG4gICAgJ1VpbnQ4Q2xhbXBlZEFycmF5JywgJ1VpbnQxNkFycmF5JywgJ1VpbnQzMkFycmF5JywgJ1dlYWtNYXAnLFxuICAgICdfJywgJ2NsZWFyVGltZW91dCcsICdpc0Zpbml0ZScsICdwYXJzZUludCcsICdzZXRUaW1lb3V0J1xuICBdO1xuXG4gIC8qKiBVc2VkIHRvIG1ha2UgdGVtcGxhdGUgc291cmNlVVJMcyBlYXNpZXIgdG8gaWRlbnRpZnkuICovXG4gIHZhciB0ZW1wbGF0ZUNvdW50ZXIgPSAtMTtcblxuICAvKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG4gIHZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xuICB0eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xuICB0eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbiAgdmFyIGNsb25lYWJsZVRhZ3MgPSB7fTtcbiAgY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbiAgY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYm9vbFRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGVUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuICBjbG9uZWFibGVUYWdzW2ludDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbbWFwVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbc3RyaW5nVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgY2xvbmVhYmxlVGFnc1tlcnJvclRhZ10gPSBjbG9uZWFibGVUYWdzW2Z1bmNUYWddID1cbiAgY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBMYXRpbiBVbmljb2RlIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy4gKi9cbiAgdmFyIGRlYnVycmVkTGV0dGVycyA9IHtcbiAgICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgYmxvY2suXG4gICAgJ1xceGMwJzogJ0EnLCAgJ1xceGMxJzogJ0EnLCAnXFx4YzInOiAnQScsICdcXHhjMyc6ICdBJywgJ1xceGM0JzogJ0EnLCAnXFx4YzUnOiAnQScsXG4gICAgJ1xceGUwJzogJ2EnLCAgJ1xceGUxJzogJ2EnLCAnXFx4ZTInOiAnYScsICdcXHhlMyc6ICdhJywgJ1xceGU0JzogJ2EnLCAnXFx4ZTUnOiAnYScsXG4gICAgJ1xceGM3JzogJ0MnLCAgJ1xceGU3JzogJ2MnLFxuICAgICdcXHhkMCc6ICdEJywgICdcXHhmMCc6ICdkJyxcbiAgICAnXFx4YzgnOiAnRScsICAnXFx4YzknOiAnRScsICdcXHhjYSc6ICdFJywgJ1xceGNiJzogJ0UnLFxuICAgICdcXHhlOCc6ICdlJywgICdcXHhlOSc6ICdlJywgJ1xceGVhJzogJ2UnLCAnXFx4ZWInOiAnZScsXG4gICAgJ1xceGNjJzogJ0knLCAgJ1xceGNkJzogJ0knLCAnXFx4Y2UnOiAnSScsICdcXHhjZic6ICdJJyxcbiAgICAnXFx4ZWMnOiAnaScsICAnXFx4ZWQnOiAnaScsICdcXHhlZSc6ICdpJywgJ1xceGVmJzogJ2knLFxuICAgICdcXHhkMSc6ICdOJywgICdcXHhmMSc6ICduJyxcbiAgICAnXFx4ZDInOiAnTycsICAnXFx4ZDMnOiAnTycsICdcXHhkNCc6ICdPJywgJ1xceGQ1JzogJ08nLCAnXFx4ZDYnOiAnTycsICdcXHhkOCc6ICdPJyxcbiAgICAnXFx4ZjInOiAnbycsICAnXFx4ZjMnOiAnbycsICdcXHhmNCc6ICdvJywgJ1xceGY1JzogJ28nLCAnXFx4ZjYnOiAnbycsICdcXHhmOCc6ICdvJyxcbiAgICAnXFx4ZDknOiAnVScsICAnXFx4ZGEnOiAnVScsICdcXHhkYic6ICdVJywgJ1xceGRjJzogJ1UnLFxuICAgICdcXHhmOSc6ICd1JywgICdcXHhmYSc6ICd1JywgJ1xceGZiJzogJ3UnLCAnXFx4ZmMnOiAndScsXG4gICAgJ1xceGRkJzogJ1knLCAgJ1xceGZkJzogJ3knLCAnXFx4ZmYnOiAneScsXG4gICAgJ1xceGM2JzogJ0FlJywgJ1xceGU2JzogJ2FlJyxcbiAgICAnXFx4ZGUnOiAnVGgnLCAnXFx4ZmUnOiAndGgnLFxuICAgICdcXHhkZic6ICdzcycsXG4gICAgLy8gTGF0aW4gRXh0ZW5kZWQtQSBibG9jay5cbiAgICAnXFx1MDEwMCc6ICdBJywgICdcXHUwMTAyJzogJ0EnLCAnXFx1MDEwNCc6ICdBJyxcbiAgICAnXFx1MDEwMSc6ICdhJywgICdcXHUwMTAzJzogJ2EnLCAnXFx1MDEwNSc6ICdhJyxcbiAgICAnXFx1MDEwNic6ICdDJywgICdcXHUwMTA4JzogJ0MnLCAnXFx1MDEwYSc6ICdDJywgJ1xcdTAxMGMnOiAnQycsXG4gICAgJ1xcdTAxMDcnOiAnYycsICAnXFx1MDEwOSc6ICdjJywgJ1xcdTAxMGInOiAnYycsICdcXHUwMTBkJzogJ2MnLFxuICAgICdcXHUwMTBlJzogJ0QnLCAgJ1xcdTAxMTAnOiAnRCcsICdcXHUwMTBmJzogJ2QnLCAnXFx1MDExMSc6ICdkJyxcbiAgICAnXFx1MDExMic6ICdFJywgICdcXHUwMTE0JzogJ0UnLCAnXFx1MDExNic6ICdFJywgJ1xcdTAxMTgnOiAnRScsICdcXHUwMTFhJzogJ0UnLFxuICAgICdcXHUwMTEzJzogJ2UnLCAgJ1xcdTAxMTUnOiAnZScsICdcXHUwMTE3JzogJ2UnLCAnXFx1MDExOSc6ICdlJywgJ1xcdTAxMWInOiAnZScsXG4gICAgJ1xcdTAxMWMnOiAnRycsICAnXFx1MDExZSc6ICdHJywgJ1xcdTAxMjAnOiAnRycsICdcXHUwMTIyJzogJ0cnLFxuICAgICdcXHUwMTFkJzogJ2cnLCAgJ1xcdTAxMWYnOiAnZycsICdcXHUwMTIxJzogJ2cnLCAnXFx1MDEyMyc6ICdnJyxcbiAgICAnXFx1MDEyNCc6ICdIJywgICdcXHUwMTI2JzogJ0gnLCAnXFx1MDEyNSc6ICdoJywgJ1xcdTAxMjcnOiAnaCcsXG4gICAgJ1xcdTAxMjgnOiAnSScsICAnXFx1MDEyYSc6ICdJJywgJ1xcdTAxMmMnOiAnSScsICdcXHUwMTJlJzogJ0knLCAnXFx1MDEzMCc6ICdJJyxcbiAgICAnXFx1MDEyOSc6ICdpJywgICdcXHUwMTJiJzogJ2knLCAnXFx1MDEyZCc6ICdpJywgJ1xcdTAxMmYnOiAnaScsICdcXHUwMTMxJzogJ2knLFxuICAgICdcXHUwMTM0JzogJ0onLCAgJ1xcdTAxMzUnOiAnaicsXG4gICAgJ1xcdTAxMzYnOiAnSycsICAnXFx1MDEzNyc6ICdrJywgJ1xcdTAxMzgnOiAnaycsXG4gICAgJ1xcdTAxMzknOiAnTCcsICAnXFx1MDEzYic6ICdMJywgJ1xcdTAxM2QnOiAnTCcsICdcXHUwMTNmJzogJ0wnLCAnXFx1MDE0MSc6ICdMJyxcbiAgICAnXFx1MDEzYSc6ICdsJywgICdcXHUwMTNjJzogJ2wnLCAnXFx1MDEzZSc6ICdsJywgJ1xcdTAxNDAnOiAnbCcsICdcXHUwMTQyJzogJ2wnLFxuICAgICdcXHUwMTQzJzogJ04nLCAgJ1xcdTAxNDUnOiAnTicsICdcXHUwMTQ3JzogJ04nLCAnXFx1MDE0YSc6ICdOJyxcbiAgICAnXFx1MDE0NCc6ICduJywgICdcXHUwMTQ2JzogJ24nLCAnXFx1MDE0OCc6ICduJywgJ1xcdTAxNGInOiAnbicsXG4gICAgJ1xcdTAxNGMnOiAnTycsICAnXFx1MDE0ZSc6ICdPJywgJ1xcdTAxNTAnOiAnTycsXG4gICAgJ1xcdTAxNGQnOiAnbycsICAnXFx1MDE0Zic6ICdvJywgJ1xcdTAxNTEnOiAnbycsXG4gICAgJ1xcdTAxNTQnOiAnUicsICAnXFx1MDE1Nic6ICdSJywgJ1xcdTAxNTgnOiAnUicsXG4gICAgJ1xcdTAxNTUnOiAncicsICAnXFx1MDE1Nyc6ICdyJywgJ1xcdTAxNTknOiAncicsXG4gICAgJ1xcdTAxNWEnOiAnUycsICAnXFx1MDE1Yyc6ICdTJywgJ1xcdTAxNWUnOiAnUycsICdcXHUwMTYwJzogJ1MnLFxuICAgICdcXHUwMTViJzogJ3MnLCAgJ1xcdTAxNWQnOiAncycsICdcXHUwMTVmJzogJ3MnLCAnXFx1MDE2MSc6ICdzJyxcbiAgICAnXFx1MDE2Mic6ICdUJywgICdcXHUwMTY0JzogJ1QnLCAnXFx1MDE2Nic6ICdUJyxcbiAgICAnXFx1MDE2Myc6ICd0JywgICdcXHUwMTY1JzogJ3QnLCAnXFx1MDE2Nyc6ICd0JyxcbiAgICAnXFx1MDE2OCc6ICdVJywgICdcXHUwMTZhJzogJ1UnLCAnXFx1MDE2Yyc6ICdVJywgJ1xcdTAxNmUnOiAnVScsICdcXHUwMTcwJzogJ1UnLCAnXFx1MDE3Mic6ICdVJyxcbiAgICAnXFx1MDE2OSc6ICd1JywgICdcXHUwMTZiJzogJ3UnLCAnXFx1MDE2ZCc6ICd1JywgJ1xcdTAxNmYnOiAndScsICdcXHUwMTcxJzogJ3UnLCAnXFx1MDE3Myc6ICd1JyxcbiAgICAnXFx1MDE3NCc6ICdXJywgICdcXHUwMTc1JzogJ3cnLFxuICAgICdcXHUwMTc2JzogJ1knLCAgJ1xcdTAxNzcnOiAneScsICdcXHUwMTc4JzogJ1knLFxuICAgICdcXHUwMTc5JzogJ1onLCAgJ1xcdTAxN2InOiAnWicsICdcXHUwMTdkJzogJ1onLFxuICAgICdcXHUwMTdhJzogJ3onLCAgJ1xcdTAxN2MnOiAneicsICdcXHUwMTdlJzogJ3onLFxuICAgICdcXHUwMTMyJzogJ0lKJywgJ1xcdTAxMzMnOiAnaWonLFxuICAgICdcXHUwMTUyJzogJ09lJywgJ1xcdTAxNTMnOiAnb2UnLFxuICAgICdcXHUwMTQ5JzogXCInblwiLCAnXFx1MDE3Zic6ICdzJ1xuICB9O1xuXG4gIC8qKiBVc2VkIHRvIG1hcCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuICovXG4gIHZhciBodG1sRXNjYXBlcyA9IHtcbiAgICAnJic6ICcmYW1wOycsXG4gICAgJzwnOiAnJmx0OycsXG4gICAgJz4nOiAnJmd0OycsXG4gICAgJ1wiJzogJyZxdW90OycsXG4gICAgXCInXCI6ICcmIzM5OydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLiAqL1xuICB2YXIgaHRtbFVuZXNjYXBlcyA9IHtcbiAgICAnJmFtcDsnOiAnJicsXG4gICAgJyZsdDsnOiAnPCcsXG4gICAgJyZndDsnOiAnPicsXG4gICAgJyZxdW90Oyc6ICdcIicsXG4gICAgJyYjMzk7JzogXCInXCJcbiAgfTtcblxuICAvKiogVXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyBmb3IgaW5jbHVzaW9uIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy4gKi9cbiAgdmFyIHN0cmluZ0VzY2FwZXMgPSB7XG4gICAgJ1xcXFwnOiAnXFxcXCcsXG4gICAgXCInXCI6IFwiJ1wiLFxuICAgICdcXG4nOiAnbicsXG4gICAgJ1xccic6ICdyJyxcbiAgICAnXFx1MjAyOCc6ICd1MjAyOCcsXG4gICAgJ1xcdTIwMjknOiAndTIwMjknXG4gIH07XG5cbiAgLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbiAgdmFyIGZyZWVQYXJzZUZsb2F0ID0gcGFyc2VGbG9hdCxcbiAgICAgIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xuICB2YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuICAvKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbiAgdmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbiAgdmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbiAgdmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuICAvKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xuICB2YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbiAgdmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbiAgLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG4gIHZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgICB0cnkge1xuICAgICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgICAgaWYgKHR5cGVzKSB7XG4gICAgICAgIHJldHVybiB0eXBlcztcbiAgICAgIH1cblxuICAgICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9KCkpO1xuXG4gIC8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG4gIHZhciBub2RlSXNBcnJheUJ1ZmZlciA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzQXJyYXlCdWZmZXIsXG4gICAgICBub2RlSXNEYXRlID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNEYXRlLFxuICAgICAgbm9kZUlzTWFwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNNYXAsXG4gICAgICBub2RlSXNSZWdFeHAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1JlZ0V4cCxcbiAgICAgIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0LFxuICAgICAgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUFnZ3JlZ2F0b3JgIGZvciBhcnJheXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYGFjY3VtdWxhdG9yYCB2YWx1ZXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGFjY3VtdWxhdG9yYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5QWdncmVnYXRvcihhcnJheSwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZm9yRWFjaGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUVhY2hSaWdodChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGlmIChpdGVyYXRlZShhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZXZlcnlgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYWxsIGVsZW1lbnRzIHBhc3MgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAgICogIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5RXZlcnkoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoIXByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlJbmNsdWRlcyhhcnJheSwgdmFsdWUpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXNXaXRoKGFycmF5LCB2YWx1ZSwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAgYXNcbiAgICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgICAgYWNjdW11bGF0b3IgPSBhcnJheVsrK2luZGV4XTtcbiAgICB9XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5yZWR1Y2VSaWdodGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2VSaWdodChhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbLS1sZW5ndGhdO1xuICAgIH1cbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIGFycmF5W2xlbmd0aF0sIGxlbmd0aCwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgKiBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgYW4gQVNDSUkgYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIHZhciBhc2NpaVNpemUgPSBiYXNlUHJvcGVydHkoJ2xlbmd0aCcpO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhbiBBU0NJSSBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpV29yZHMoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZUFzY2lpV29yZCkgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmZpbmRLZXlgIGFuZCBgXy5maW5kTGFzdEtleWAsXG4gICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmBcbiAgICogdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYGNvbGxlY3Rpb25gLlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZm91bmQgZWxlbWVudCBvciBpdHMga2V5LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRLZXkoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBlYWNoRnVuYykge1xuICAgIHZhciByZXN1bHQ7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICByZXN1bHQgPSBrZXk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBiYXNlSW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUluZGV4T2ZXaXRoKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4LCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVhbmAgYW5kIGBfLm1lYW5CeWAgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZU1lYW4oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiBsZW5ndGggPyAoYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIC8gbGVuZ3RoKSA6IE5BTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eWAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wcm9wZXJ0eU9mYCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlUHJvcGVydHlPZihvYmplY3QpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB3aGljaCBpdGVyYXRlcyBvdmVyIGBjb2xsZWN0aW9uYCB1c2luZyBgZWFjaEZ1bmNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5pdEFjY3VtIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBvZlxuICAgKiAgYGNvbGxlY3Rpb25gIGFzIHRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgICBlYWNoRnVuYyhjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaW5pdEFjY3VtXG4gICAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgICAgOiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydEJ5YCB3aGljaCB1c2VzIGBjb21wYXJlcmAgdG8gZGVmaW5lIHRoZVxuICAgKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gICAqIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNvcnQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmVyIFRoZSBmdW5jdGlvbiB0byBkZWZpbmUgc29ydCBvcmRlci5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlU29ydEJ5KGFycmF5LCBjb21wYXJlcikge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICBhcnJheS5zb3J0KGNvbXBhcmVyKTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc3VtYCBhbmQgYF8uc3VtQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVN1bShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgcmVzdWx0LFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIGN1cnJlbnQgPSBpdGVyYXRlZShhcnJheVtpbmRleF0pO1xuICAgICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGN1cnJlbnQgOiAocmVzdWx0ICsgY3VycmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICAgKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvUGFpcnNgIGFuZCBgXy50b1BhaXJzSW5gIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXlcbiAgICogb2Yga2V5LXZhbHVlIHBhaXJzIGZvciBgb2JqZWN0YCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lcyBvZiBgcHJvcHNgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBnZXQgdmFsdWVzIGZvci5cbiAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRvUGFpcnMob2JqZWN0LCBwcm9wcykge1xuICAgIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gW2tleSwgb2JqZWN0W2tleV1dO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nXG4gICAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgICAgOiBzdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy52YWx1ZXNgIGFuZCBgXy52YWx1ZXNJbmAgd2hpY2ggY3JlYXRlcyBhblxuICAgKiBhcnJheSBvZiBgb2JqZWN0YCBwcm9wZXJ0eSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXNcbiAgICogb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VWYWx1ZXMob2JqZWN0LCBwcm9wcykge1xuICAgIHJldHVybiBhcnJheU1hcChwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gY2FjaGVIYXMoY2FjaGUsIGtleSkge1xuICAgIHJldHVybiBjYWNoZS5oYXMoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltU3RhcnRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN0cmluZyBzeW1ib2xcbiAgICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc1N0YXJ0SW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHN0cmluZyBzeW1ib2xcbiAgICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykge1xuICAgIHZhciBpbmRleCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgYmFzZUluZGV4T2YoY2hyU3ltYm9scywgc3RyU3ltYm9sc1tpbmRleF0sIDApID4gLTEpIHt9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBgcGxhY2Vob2xkZXJgIG9jY3VycmVuY2VzIGluIGBhcnJheWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciBjb3VudC5cbiAgICovXG4gIGZ1bmN0aW9uIGNvdW50SG9sZGVycyhhcnJheSwgcGxhY2Vob2xkZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICByZXN1bHQgPSAwO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoYXJyYXlbbGVuZ3RoXSA9PT0gcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgKytyZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy5kZWJ1cnJgIHRvIGNvbnZlcnQgTGF0aW4tMSBTdXBwbGVtZW50IGFuZCBMYXRpbiBFeHRlbmRlZC1BXG4gICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxldHRlciBUaGUgbWF0Y2hlZCBsZXR0ZXIgdG8gZGVidXJyLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBsZXR0ZXIuXG4gICAqL1xuICB2YXIgZGVidXJyTGV0dGVyID0gYmFzZVByb3BlcnR5T2YoZGVidXJyZWRMZXR0ZXJzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy5lc2NhcGVgIHRvIGNvbnZlcnQgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byBlc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICAgKi9cbiAgdmFyIGVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbEVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRlbXBsYXRlYCB0byBlc2NhcGUgY2hhcmFjdGVycyBmb3IgaW5jbHVzaW9uIGluIGNvbXBpbGVkIHN0cmluZyBsaXRlcmFscy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIGVzY2FwZVN0cmluZ0NoYXIoY2hyKSB7XG4gICAgcmV0dXJuICdcXFxcJyArIHN0cmluZ0VzY2FwZXNbY2hyXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSBzeW1ib2wgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIGEgd29yZCBjb21wb3NlZCBvZiBVbmljb2RlIHN5bWJvbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSB3b3JkIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlV29yZChzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVIYXNVbmljb2RlV29yZC50ZXN0KHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYGl0ZXJhdG9yYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGl0ZXJhdG9yIFRoZSBpdGVyYXRvciB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGl0ZXJhdG9yVG9BcnJheShpdGVyYXRvcikge1xuICAgIHZhciBkYXRhLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICghKGRhdGEgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGRhdGEudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KG1hcC5zaXplKTtcblxuICAgIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IFtrZXksIHZhbHVlXTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICAgIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBgcGxhY2Vob2xkZXJgIGVsZW1lbnRzIGluIGBhcnJheWAgd2l0aCBhbiBpbnRlcm5hbCBwbGFjZWhvbGRlclxuICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGVpciBpbmRleGVzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0geyp9IHBsYWNlaG9sZGVyIFRoZSBwbGFjZWhvbGRlciB0byByZXBsYWNlLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVwbGFjZUhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAodmFsdWUgPT09IHBsYWNlaG9sZGVyIHx8IHZhbHVlID09PSBQTEFDRUhPTERFUikge1xuICAgICAgICBhcnJheVtpbmRleF0gPSBQTEFDRUhPTERFUjtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHNldGAgdG8gYW4gYXJyYXkgb2YgaXRzIHZhbHVlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHNldGAgdG8gaXRzIHZhbHVlLXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvUGFpcnMoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBbdmFsdWUsIHZhbHVlXTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAgICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5sYXN0SW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0TGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggKyAxO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBpbiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaW5nU2l6ZShzdHJpbmcpIHtcbiAgICByZXR1cm4gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICA/IHVuaWNvZGVTaXplKHN0cmluZylcbiAgICAgIDogYXNjaWlTaXplKHN0cmluZyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlVG9BcnJheShzdHJpbmcpXG4gICAgICA6IGFzY2lpVG9BcnJheShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAgICogY2hhcmFjdGVyIG9mIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gdHJpbW1lZEVuZEluZGV4KHN0cmluZykge1xuICAgIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8udW5lc2NhcGVgIHRvIGNvbnZlcnQgSFRNTCBlbnRpdGllcyB0byBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hyIFRoZSBtYXRjaGVkIGNoYXJhY3RlciB0byB1bmVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5lc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciB1bmVzY2FwZUh0bWxDaGFyID0gYmFzZVByb3BlcnR5T2YoaHRtbFVuZXNjYXBlcyk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgYSBVbmljb2RlIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlU2l6ZShzdHJpbmcpIHtcbiAgICB2YXIgcmVzdWx0ID0gcmVVbmljb2RlLmxhc3RJbmRleCA9IDA7XG4gICAgd2hpbGUgKHJlVW5pY29kZS50ZXN0KHN0cmluZykpIHtcbiAgICAgICsrcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgVW5pY29kZSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVRvQXJyYXkoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhIFVuaWNvZGUgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiB1bmljb2RlV29yZHMoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGVXb3JkKSB8fCBbXTtcbiAgfVxuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdXNpbmcgdGhlIGBjb250ZXh0YCBvYmplY3QuXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICogQG1lbWJlck9mIF9cbiAgICogQHNpbmNlIDEuMS4wXG4gICAqIEBjYXRlZ29yeSBVdGlsXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbY29udGV4dD1yb290XSBUaGUgY29udGV4dCBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBhIG5ldyBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICogQGV4YW1wbGVcbiAgICpcbiAgICogXy5taXhpbih7ICdmb28nOiBfLmNvbnN0YW50KCdmb28nKSB9KTtcbiAgICpcbiAgICogdmFyIGxvZGFzaCA9IF8ucnVuSW5Db250ZXh0KCk7XG4gICAqIGxvZGFzaC5taXhpbih7ICdiYXInOiBsb2Rhc2guY29uc3RhbnQoJ2JhcicpIH0pO1xuICAgKlxuICAgKiBfLmlzRnVuY3Rpb24oXy5mb28pO1xuICAgKiAvLyA9PiB0cnVlXG4gICAqIF8uaXNGdW5jdGlvbihfLmJhcik7XG4gICAqIC8vID0+IGZhbHNlXG4gICAqXG4gICAqIGxvZGFzaC5pc0Z1bmN0aW9uKGxvZGFzaC5mb28pO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guYmFyKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKlxuICAgKiAvLyBDcmVhdGUgYSBzdXBlZC11cCBgZGVmZXJgIGluIE5vZGUuanMuXG4gICAqIHZhciBkZWZlciA9IF8ucnVuSW5Db250ZXh0KHsgJ3NldFRpbWVvdXQnOiBzZXRJbW1lZGlhdGUgfSkuZGVmZXI7XG4gICAqL1xuICB2YXIgcnVuSW5Db250ZXh0ID0gKGZ1bmN0aW9uIHJ1bkluQ29udGV4dChjb250ZXh0KSB7XG4gICAgY29udGV4dCA9IGNvbnRleHQgPT0gbnVsbCA/IHJvb3QgOiBfLmRlZmF1bHRzKHJvb3QuT2JqZWN0KCksIGNvbnRleHQsIF8ucGljayhyb290LCBjb250ZXh0UHJvcHMpKTtcblxuICAgIC8qKiBCdWlsdC1pbiBjb25zdHJ1Y3RvciByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBBcnJheSA9IGNvbnRleHQuQXJyYXksXG4gICAgICAgIERhdGUgPSBjb250ZXh0LkRhdGUsXG4gICAgICAgIEVycm9yID0gY29udGV4dC5FcnJvcixcbiAgICAgICAgRnVuY3Rpb24gPSBjb250ZXh0LkZ1bmN0aW9uLFxuICAgICAgICBNYXRoID0gY29udGV4dC5NYXRoLFxuICAgICAgICBPYmplY3QgPSBjb250ZXh0Lk9iamVjdCxcbiAgICAgICAgUmVnRXhwID0gY29udGV4dC5SZWdFeHAsXG4gICAgICAgIFN0cmluZyA9IGNvbnRleHQuU3RyaW5nLFxuICAgICAgICBUeXBlRXJyb3IgPSBjb250ZXh0LlR5cGVFcnJvcjtcblxuICAgIC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZSxcbiAgICAgICAgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgICAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG4gICAgdmFyIGNvcmVKc0RhdGEgPSBjb250ZXh0WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbiAgICB2YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG4gICAgdmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbiAgICAvKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xuICAgIHZhciBpZENvdW50ZXIgPSAwO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbiAgICB2YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbigpIHtcbiAgICAgIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gICAgICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG4gICAgfSgpKTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAgICAgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAgICAgKiBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgdmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbiAgICAvKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG4gICAgdmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4gICAgLyoqIFVzZWQgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYF9gIHJlZmVyZW5jZSBpbiBgXy5ub0NvbmZsaWN0YC4gKi9cbiAgICB2YXIgb2xkRGFzaCA9IHJvb3QuXztcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG4gICAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgICAgIGZ1bmNUb1N0cmluZy5jYWxsKGhhc093blByb3BlcnR5KS5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gICAgICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbiAgICApO1xuXG4gICAgLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyBjb250ZXh0LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgU3ltYm9sID0gY29udGV4dC5TeW1ib2wsXG4gICAgICAgIFVpbnQ4QXJyYXkgPSBjb250ZXh0LlVpbnQ4QXJyYXksXG4gICAgICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkLFxuICAgICAgICBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSxcbiAgICAgICAgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSxcbiAgICAgICAgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcbiAgICAgICAgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2UsXG4gICAgICAgIHNwcmVhZGFibGVTeW1ib2wgPSBTeW1ib2wgPyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlIDogdW5kZWZpbmVkLFxuICAgICAgICBzeW1JdGVyYXRvciA9IFN5bWJvbCA/IFN5bWJvbC5pdGVyYXRvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbiAgICB2YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgICAgICBmdW5jKHt9LCAnJywge30pO1xuICAgICAgICByZXR1cm4gZnVuYztcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfSgpKTtcblxuICAgIC8qKiBNb2NrZWQgYnVpbHQtaW5zLiAqL1xuICAgIHZhciBjdHhDbGVhclRpbWVvdXQgPSBjb250ZXh0LmNsZWFyVGltZW91dCAhPT0gcm9vdC5jbGVhclRpbWVvdXQgJiYgY29udGV4dC5jbGVhclRpbWVvdXQsXG4gICAgICAgIGN0eE5vdyA9IERhdGUgJiYgRGF0ZS5ub3cgIT09IHJvb3QuRGF0ZS5ub3cgJiYgRGF0ZS5ub3csXG4gICAgICAgIGN0eFNldFRpbWVvdXQgPSBjb250ZXh0LnNldFRpbWVvdXQgIT09IHJvb3Quc2V0VGltZW91dCAmJiBjb250ZXh0LnNldFRpbWVvdXQ7XG5cbiAgICAvKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG4gICAgdmFyIG5hdGl2ZUNlaWwgPSBNYXRoLmNlaWwsXG4gICAgICAgIG5hdGl2ZUZsb29yID0gTWF0aC5mbG9vcixcbiAgICAgICAgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsXG4gICAgICAgIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgICAgICBuYXRpdmVJc0Zpbml0ZSA9IGNvbnRleHQuaXNGaW5pdGUsXG4gICAgICAgIG5hdGl2ZUpvaW4gPSBhcnJheVByb3RvLmpvaW4sXG4gICAgICAgIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpLFxuICAgICAgICBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICAgICAgbmF0aXZlTWluID0gTWF0aC5taW4sXG4gICAgICAgIG5hdGl2ZU5vdyA9IERhdGUubm93LFxuICAgICAgICBuYXRpdmVQYXJzZUludCA9IGNvbnRleHQucGFyc2VJbnQsXG4gICAgICAgIG5hdGl2ZVJhbmRvbSA9IE1hdGgucmFuZG9tLFxuICAgICAgICBuYXRpdmVSZXZlcnNlID0gYXJyYXlQcm90by5yZXZlcnNlO1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xuICAgIHZhciBEYXRhVmlldyA9IGdldE5hdGl2ZShjb250ZXh0LCAnRGF0YVZpZXcnKSxcbiAgICAgICAgTWFwID0gZ2V0TmF0aXZlKGNvbnRleHQsICdNYXAnKSxcbiAgICAgICAgUHJvbWlzZSA9IGdldE5hdGl2ZShjb250ZXh0LCAnUHJvbWlzZScpLFxuICAgICAgICBTZXQgPSBnZXROYXRpdmUoY29udGV4dCwgJ1NldCcpLFxuICAgICAgICBXZWFrTWFwID0gZ2V0TmF0aXZlKGNvbnRleHQsICdXZWFrTWFwJyksXG4gICAgICAgIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxuICAgIC8qKiBVc2VkIHRvIHN0b3JlIGZ1bmN0aW9uIG1ldGFkYXRhLiAqL1xuICAgIHZhciBtZXRhTWFwID0gV2Vha01hcCAmJiBuZXcgV2Vha01hcDtcblxuICAgIC8qKiBVc2VkIHRvIGxvb2t1cCB1bm1pbmlmaWVkIGZ1bmN0aW9uIG5hbWVzLiAqL1xuICAgIHZhciByZWFsTmFtZXMgPSB7fTtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtYXBzLCBzZXRzLCBhbmQgd2Vha21hcHMuICovXG4gICAgdmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICAgICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgICAgIHByb21pc2VDdG9yU3RyaW5nID0gdG9Tb3VyY2UoUHJvbWlzZSksXG4gICAgICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgICAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4gICAgLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG4gICAgdmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBsb2Rhc2hgIG9iamVjdCB3aGljaCB3cmFwcyBgdmFsdWVgIHRvIGVuYWJsZSBpbXBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMuIE1ldGhvZHMgdGhhdCBvcGVyYXRlIG9uIGFuZCByZXR1cm4gYXJyYXlzLCBjb2xsZWN0aW9ucyxcbiAgICAgKiBhbmQgZnVuY3Rpb25zIGNhbiBiZSBjaGFpbmVkIHRvZ2V0aGVyLiBNZXRob2RzIHRoYXQgcmV0cmlldmUgYSBzaW5nbGUgdmFsdWVcbiAgICAgKiBvciBtYXkgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIHdpbGwgYXV0b21hdGljYWxseSBlbmQgdGhlIGNoYWluIHNlcXVlbmNlXG4gICAgICogYW5kIHJldHVybiB0aGUgdW53cmFwcGVkIHZhbHVlLiBPdGhlcndpc2UsIHRoZSB2YWx1ZSBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogRXhwbGljaXQgY2hhaW4gc2VxdWVuY2VzLCB3aGljaCBtdXN0IGJlIHVud3JhcHBlZCB3aXRoIGBfI3ZhbHVlYCwgbWF5IGJlXG4gICAgICogZW5hYmxlZCB1c2luZyBgXy5jaGFpbmAuXG4gICAgICpcbiAgICAgKiBUaGUgZXhlY3V0aW9uIG9mIGNoYWluZWQgbWV0aG9kcyBpcyBsYXp5LCB0aGF0IGlzLCBpdCdzIGRlZmVycmVkIHVudGlsXG4gICAgICogYF8jdmFsdWVgIGlzIGltcGxpY2l0bHkgb3IgZXhwbGljaXRseSBjYWxsZWQuXG4gICAgICpcbiAgICAgKiBMYXp5IGV2YWx1YXRpb24gYWxsb3dzIHNldmVyYWwgbWV0aG9kcyB0byBzdXBwb3J0IHNob3J0Y3V0IGZ1c2lvbi5cbiAgICAgKiBTaG9ydGN1dCBmdXNpb24gaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1lcmdlIGl0ZXJhdGVlIGNhbGxzOyB0aGlzIGF2b2lkc1xuICAgICAqIHRoZSBjcmVhdGlvbiBvZiBpbnRlcm1lZGlhdGUgYXJyYXlzIGFuZCBjYW4gZ3JlYXRseSByZWR1Y2UgdGhlIG51bWJlciBvZlxuICAgICAqIGl0ZXJhdGVlIGV4ZWN1dGlvbnMuIFNlY3Rpb25zIG9mIGEgY2hhaW4gc2VxdWVuY2UgcXVhbGlmeSBmb3Igc2hvcnRjdXRcbiAgICAgKiBmdXNpb24gaWYgdGhlIHNlY3Rpb24gaXMgYXBwbGllZCB0byBhbiBhcnJheSBhbmQgaXRlcmF0ZWVzIGFjY2VwdCBvbmx5XG4gICAgICogb25lIGFyZ3VtZW50LiBUaGUgaGV1cmlzdGljIGZvciB3aGV0aGVyIGEgc2VjdGlvbiBxdWFsaWZpZXMgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlzIHN1YmplY3QgdG8gY2hhbmdlLlxuICAgICAqXG4gICAgICogQ2hhaW5pbmcgaXMgc3VwcG9ydGVkIGluIGN1c3RvbSBidWlsZHMgYXMgbG9uZyBhcyB0aGUgYF8jdmFsdWVgIG1ldGhvZCBpc1xuICAgICAqIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLlxuICAgICAqXG4gICAgICogSW4gYWRkaXRpb24gdG8gbG9kYXNoIG1ldGhvZHMsIHdyYXBwZXJzIGhhdmUgYEFycmF5YCBhbmQgYFN0cmluZ2AgbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBBcnJheWAgbWV0aG9kcyBhcmU6XG4gICAgICogYGNvbmNhdGAsIGBqb2luYCwgYHBvcGAsIGBwdXNoYCwgYHNoaWZ0YCwgYHNvcnRgLCBgc3BsaWNlYCwgYW5kIGB1bnNoaWZ0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgYFN0cmluZ2AgbWV0aG9kcyBhcmU6XG4gICAgICogYHJlcGxhY2VgIGFuZCBgc3BsaXRgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24gYXJlOlxuICAgICAqIGBhdGAsIGBjb21wYWN0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGRyb3BXaGlsZWAsIGBmaWx0ZXJgLCBgZmluZGAsXG4gICAgICogYGZpbmRMYXN0YCwgYGhlYWRgLCBgaW5pdGlhbGAsIGBsYXN0YCwgYG1hcGAsIGByZWplY3RgLCBgcmV2ZXJzZWAsIGBzbGljZWAsXG4gICAgICogYHRhaWxgLCBgdGFrZWAsIGB0YWtlUmlnaHRgLCBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYW5kIGB0b0FycmF5YFxuICAgICAqXG4gICAgICogVGhlIGNoYWluYWJsZSB3cmFwcGVyIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhZnRlcmAsIGBhcnlgLCBgYXNzaWduYCwgYGFzc2lnbkluYCwgYGFzc2lnbkluV2l0aGAsIGBhc3NpZ25XaXRoYCwgYGF0YCxcbiAgICAgKiBgYmVmb3JlYCwgYGJpbmRgLCBgYmluZEFsbGAsIGBiaW5kS2V5YCwgYGNhc3RBcnJheWAsIGBjaGFpbmAsIGBjaHVua2AsXG4gICAgICogYGNvbW1pdGAsIGBjb21wYWN0YCwgYGNvbmNhdGAsIGBjb25mb3Jtc2AsIGBjb25zdGFudGAsIGBjb3VudEJ5YCwgYGNyZWF0ZWAsXG4gICAgICogYGN1cnJ5YCwgYGRlYm91bmNlYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBkZWZlcmAsIGBkZWxheWAsXG4gICAgICogYGRpZmZlcmVuY2VgLCBgZGlmZmVyZW5jZUJ5YCwgYGRpZmZlcmVuY2VXaXRoYCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCxcbiAgICAgKiBgZHJvcFJpZ2h0V2hpbGVgLCBgZHJvcFdoaWxlYCwgYGV4dGVuZGAsIGBleHRlbmRXaXRoYCwgYGZpbGxgLCBgZmlsdGVyYCxcbiAgICAgKiBgZmxhdE1hcGAsIGBmbGF0TWFwRGVlcGAsIGBmbGF0TWFwRGVwdGhgLCBgZmxhdHRlbmAsIGBmbGF0dGVuRGVlcGAsXG4gICAgICogYGZsYXR0ZW5EZXB0aGAsIGBmbGlwYCwgYGZsb3dgLCBgZmxvd1JpZ2h0YCwgYGZyb21QYWlyc2AsIGBmdW5jdGlvbnNgLFxuICAgICAqIGBmdW5jdGlvbnNJbmAsIGBncm91cEJ5YCwgYGluaXRpYWxgLCBgaW50ZXJzZWN0aW9uYCwgYGludGVyc2VjdGlvbkJ5YCxcbiAgICAgKiBgaW50ZXJzZWN0aW9uV2l0aGAsIGBpbnZlcnRgLCBgaW52ZXJ0QnlgLCBgaW52b2tlTWFwYCwgYGl0ZXJhdGVlYCwgYGtleUJ5YCxcbiAgICAgKiBga2V5c2AsIGBrZXlzSW5gLCBgbWFwYCwgYG1hcEtleXNgLCBgbWFwVmFsdWVzYCwgYG1hdGNoZXNgLCBgbWF0Y2hlc1Byb3BlcnR5YCxcbiAgICAgKiBgbWVtb2l6ZWAsIGBtZXJnZWAsIGBtZXJnZVdpdGhgLCBgbWV0aG9kYCwgYG1ldGhvZE9mYCwgYG1peGluYCwgYG5lZ2F0ZWAsXG4gICAgICogYG50aEFyZ2AsIGBvbWl0YCwgYG9taXRCeWAsIGBvbmNlYCwgYG9yZGVyQnlgLCBgb3ZlcmAsIGBvdmVyQXJnc2AsXG4gICAgICogYG92ZXJFdmVyeWAsIGBvdmVyU29tZWAsIGBwYXJ0aWFsYCwgYHBhcnRpYWxSaWdodGAsIGBwYXJ0aXRpb25gLCBgcGlja2AsXG4gICAgICogYHBpY2tCeWAsIGBwbGFudGAsIGBwcm9wZXJ0eWAsIGBwcm9wZXJ0eU9mYCwgYHB1bGxgLCBgcHVsbEFsbGAsIGBwdWxsQWxsQnlgLFxuICAgICAqIGBwdWxsQWxsV2l0aGAsIGBwdWxsQXRgLCBgcHVzaGAsIGByYW5nZWAsIGByYW5nZVJpZ2h0YCwgYHJlYXJnYCwgYHJlamVjdGAsXG4gICAgICogYHJlbW92ZWAsIGByZXN0YCwgYHJldmVyc2VgLCBgc2FtcGxlU2l6ZWAsIGBzZXRgLCBgc2V0V2l0aGAsIGBzaHVmZmxlYCxcbiAgICAgKiBgc2xpY2VgLCBgc29ydGAsIGBzb3J0QnlgLCBgc3BsaWNlYCwgYHNwcmVhZGAsIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAgICAgKiBgdGFrZVJpZ2h0V2hpbGVgLCBgdGFrZVdoaWxlYCwgYHRhcGAsIGB0aHJvdHRsZWAsIGB0aHJ1YCwgYHRvQXJyYXlgLFxuICAgICAqIGB0b1BhaXJzYCwgYHRvUGFpcnNJbmAsIGB0b1BhdGhgLCBgdG9QbGFpbk9iamVjdGAsIGB0cmFuc2Zvcm1gLCBgdW5hcnlgLFxuICAgICAqIGB1bmlvbmAsIGB1bmlvbkJ5YCwgYHVuaW9uV2l0aGAsIGB1bmlxYCwgYHVuaXFCeWAsIGB1bmlxV2l0aGAsIGB1bnNldGAsXG4gICAgICogYHVuc2hpZnRgLCBgdW56aXBgLCBgdW56aXBXaXRoYCwgYHVwZGF0ZWAsIGB1cGRhdGVXaXRoYCwgYHZhbHVlc2AsXG4gICAgICogYHZhbHVlc0luYCwgYHdpdGhvdXRgLCBgd3JhcGAsIGB4b3JgLCBgeG9yQnlgLCBgeG9yV2l0aGAsIGB6aXBgLFxuICAgICAqIGB6aXBPYmplY3RgLCBgemlwT2JqZWN0RGVlcGAsIGFuZCBgemlwV2l0aGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIG1ldGhvZHMgdGhhdCBhcmUgKipub3QqKiBjaGFpbmFibGUgYnkgZGVmYXVsdCBhcmU6XG4gICAgICogYGFkZGAsIGBhdHRlbXB0YCwgYGNhbWVsQ2FzZWAsIGBjYXBpdGFsaXplYCwgYGNlaWxgLCBgY2xhbXBgLCBgY2xvbmVgLFxuICAgICAqIGBjbG9uZURlZXBgLCBgY2xvbmVEZWVwV2l0aGAsIGBjbG9uZVdpdGhgLCBgY29uZm9ybXNUb2AsIGBkZWJ1cnJgLFxuICAgICAqIGBkZWZhdWx0VG9gLCBgZGl2aWRlYCwgYGVhY2hgLCBgZWFjaFJpZ2h0YCwgYGVuZHNXaXRoYCwgYGVxYCwgYGVzY2FwZWAsXG4gICAgICogYGVzY2FwZVJlZ0V4cGAsIGBldmVyeWAsIGBmaW5kYCwgYGZpbmRJbmRleGAsIGBmaW5kS2V5YCwgYGZpbmRMYXN0YCxcbiAgICAgKiBgZmluZExhc3RJbmRleGAsIGBmaW5kTGFzdEtleWAsIGBmaXJzdGAsIGBmbG9vcmAsIGBmb3JFYWNoYCwgYGZvckVhY2hSaWdodGAsXG4gICAgICogYGZvckluYCwgYGZvckluUmlnaHRgLCBgZm9yT3duYCwgYGZvck93blJpZ2h0YCwgYGdldGAsIGBndGAsIGBndGVgLCBgaGFzYCxcbiAgICAgKiBgaGFzSW5gLCBgaGVhZGAsIGBpZGVudGl0eWAsIGBpbmNsdWRlc2AsIGBpbmRleE9mYCwgYGluUmFuZ2VgLCBgaW52b2tlYCxcbiAgICAgKiBgaXNBcmd1bWVudHNgLCBgaXNBcnJheWAsIGBpc0FycmF5QnVmZmVyYCwgYGlzQXJyYXlMaWtlYCwgYGlzQXJyYXlMaWtlT2JqZWN0YCxcbiAgICAgKiBgaXNCb29sZWFuYCwgYGlzQnVmZmVyYCwgYGlzRGF0ZWAsIGBpc0VsZW1lbnRgLCBgaXNFbXB0eWAsIGBpc0VxdWFsYCxcbiAgICAgKiBgaXNFcXVhbFdpdGhgLCBgaXNFcnJvcmAsIGBpc0Zpbml0ZWAsIGBpc0Z1bmN0aW9uYCwgYGlzSW50ZWdlcmAsIGBpc0xlbmd0aGAsXG4gICAgICogYGlzTWFwYCwgYGlzTWF0Y2hgLCBgaXNNYXRjaFdpdGhgLCBgaXNOYU5gLCBgaXNOYXRpdmVgLCBgaXNOaWxgLCBgaXNOdWxsYCxcbiAgICAgKiBgaXNOdW1iZXJgLCBgaXNPYmplY3RgLCBgaXNPYmplY3RMaWtlYCwgYGlzUGxhaW5PYmplY3RgLCBgaXNSZWdFeHBgLFxuICAgICAqIGBpc1NhZmVJbnRlZ2VyYCwgYGlzU2V0YCwgYGlzU3RyaW5nYCwgYGlzVW5kZWZpbmVkYCwgYGlzVHlwZWRBcnJheWAsXG4gICAgICogYGlzV2Vha01hcGAsIGBpc1dlYWtTZXRgLCBgam9pbmAsIGBrZWJhYkNhc2VgLCBgbGFzdGAsIGBsYXN0SW5kZXhPZmAsXG4gICAgICogYGxvd2VyQ2FzZWAsIGBsb3dlckZpcnN0YCwgYGx0YCwgYGx0ZWAsIGBtYXhgLCBgbWF4QnlgLCBgbWVhbmAsIGBtZWFuQnlgLFxuICAgICAqIGBtaW5gLCBgbWluQnlgLCBgbXVsdGlwbHlgLCBgbm9Db25mbGljdGAsIGBub29wYCwgYG5vd2AsIGBudGhgLCBgcGFkYCxcbiAgICAgKiBgcGFkRW5kYCwgYHBhZFN0YXJ0YCwgYHBhcnNlSW50YCwgYHBvcGAsIGByYW5kb21gLCBgcmVkdWNlYCwgYHJlZHVjZVJpZ2h0YCxcbiAgICAgKiBgcmVwZWF0YCwgYHJlc3VsdGAsIGByb3VuZGAsIGBydW5JbkNvbnRleHRgLCBgc2FtcGxlYCwgYHNoaWZ0YCwgYHNpemVgLFxuICAgICAqIGBzbmFrZUNhc2VgLCBgc29tZWAsIGBzb3J0ZWRJbmRleGAsIGBzb3J0ZWRJbmRleEJ5YCwgYHNvcnRlZExhc3RJbmRleGAsXG4gICAgICogYHNvcnRlZExhc3RJbmRleEJ5YCwgYHN0YXJ0Q2FzZWAsIGBzdGFydHNXaXRoYCwgYHN0dWJBcnJheWAsIGBzdHViRmFsc2VgLFxuICAgICAqIGBzdHViT2JqZWN0YCwgYHN0dWJTdHJpbmdgLCBgc3R1YlRydWVgLCBgc3VidHJhY3RgLCBgc3VtYCwgYHN1bUJ5YCxcbiAgICAgKiBgdGVtcGxhdGVgLCBgdGltZXNgLCBgdG9GaW5pdGVgLCBgdG9JbnRlZ2VyYCwgYHRvSlNPTmAsIGB0b0xlbmd0aGAsXG4gICAgICogYHRvTG93ZXJgLCBgdG9OdW1iZXJgLCBgdG9TYWZlSW50ZWdlcmAsIGB0b1N0cmluZ2AsIGB0b1VwcGVyYCwgYHRyaW1gLFxuICAgICAqIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGB0cnVuY2F0ZWAsIGB1bmVzY2FwZWAsIGB1bmlxdWVJZGAsIGB1cHBlckNhc2VgLFxuICAgICAqIGB1cHBlckZpcnN0YCwgYHZhbHVlYCwgYW5kIGB3b3Jkc2BcbiAgICAgKlxuICAgICAqIEBuYW1lIF9cbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcCBpbiBhIGBsb2Rhc2hgIGluc3RhbmNlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMiwgM10pO1xuICAgICAqXG4gICAgICogLy8gUmV0dXJucyBhbiB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogd3JhcHBlZC5yZWR1Y2UoXy5hZGQpO1xuICAgICAqIC8vID0+IDZcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYSB3cmFwcGVkIHZhbHVlLlxuICAgICAqIHZhciBzcXVhcmVzID0gd3JhcHBlZC5tYXAoc3F1YXJlKTtcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KHNxdWFyZXMudmFsdWUoKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxvZGFzaCh2YWx1ZSkge1xuICAgICAgaWYgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzQXJyYXkodmFsdWUpICYmICEodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTG9kYXNoV3JhcHBlcikge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ19fd3JhcHBlZF9fJykpIHtcbiAgICAgICAgICByZXR1cm4gd3JhcHBlckNsb25lKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gICAgICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uKCkge1xuICAgICAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgICAgIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgICAgICBpZiAoIWlzT2JqZWN0KHByb3RvKSkge1xuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob2JqZWN0Q3JlYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSgpKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBmdW5jdGlvbiB3aG9zZSBwcm90b3R5cGUgY2hhaW4gc2VxdWVuY2Ugd3JhcHBlcnMgaW5oZXJpdCBmcm9tLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTG9kYXNoKCkge1xuICAgICAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBjb25zdHJ1Y3RvciBmb3IgY3JlYXRpbmcgYGxvZGFzaGAgd3JhcHBlciBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NoYWluQWxsXSBFbmFibGUgZXhwbGljaXQgbWV0aG9kIGNoYWluIHNlcXVlbmNlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMb2Rhc2hXcmFwcGVyKHZhbHVlLCBjaGFpbkFsbCkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2NoYWluX18gPSAhIWNoYWluQWxsO1xuICAgICAgdGhpcy5fX2luZGV4X18gPSAwO1xuICAgICAgdGhpcy5fX3ZhbHVlc19fID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ5IGRlZmF1bHQsIHRoZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzIHVzZWQgYnkgbG9kYXNoIGFyZSBsaWtlIHRob3NlIGluXG4gICAgICogZW1iZWRkZWQgUnVieSAoRVJCKSBhcyB3ZWxsIGFzIEVTMjAxNSB0ZW1wbGF0ZSBzdHJpbmdzLiBDaGFuZ2UgdGhlXG4gICAgICogZm9sbG93aW5nIHRlbXBsYXRlIHNldHRpbmdzIHRvIHVzZSBhbHRlcm5hdGl2ZSBkZWxpbWl0ZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge09iamVjdH1cbiAgICAgKi9cbiAgICBsb2Rhc2gudGVtcGxhdGVTZXR0aW5ncyA9IHtcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGJlIEhUTUwtZXNjYXBlZC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnZXNjYXBlJzogcmVFc2NhcGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgY29kZSB0byBiZSBldmFsdWF0ZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2V2YWx1YXRlJzogcmVFdmFsdWF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGluamVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgICAgICovXG4gICAgICAnaW50ZXJwb2xhdGUnOiByZUludGVycG9sYXRlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gcmVmZXJlbmNlIHRoZSBkYXRhIG9iamVjdCBpbiB0aGUgdGVtcGxhdGUgdGV4dC5cbiAgICAgICAqXG4gICAgICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICovXG4gICAgICAndmFyaWFibGUnOiAnJyxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIGltcG9ydCB2YXJpYWJsZXMgaW50byB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge09iamVjdH1cbiAgICAgICAqL1xuICAgICAgJ2ltcG9ydHMnOiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgICAgICpcbiAgICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXG4gICAgICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgICAgICovXG4gICAgICAgICdfJzogbG9kYXNoXG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEVuc3VyZSB3cmFwcGVycyBhcmUgaW5zdGFuY2VzIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBsb2Rhc2gucHJvdG90eXBlID0gYmFzZUxvZGFzaC5wcm90b3R5cGU7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGxvZGFzaDtcblxuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlID0gYmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7XG4gICAgTG9kYXNoV3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMb2Rhc2hXcmFwcGVyO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGxhenkgd3JhcHBlciBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgbGF6eSBldmFsdWF0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExhenlXcmFwcGVyKHZhbHVlKSB7XG4gICAgICB0aGlzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICB0aGlzLl9fYWN0aW9uc19fID0gW107XG4gICAgICB0aGlzLl9fZGlyX18gPSAxO1xuICAgICAgdGhpcy5fX2ZpbHRlcmVkX18gPSBmYWxzZTtcbiAgICAgIHRoaXMuX19pdGVyYXRlZXNfXyA9IFtdO1xuICAgICAgdGhpcy5fX3Rha2VDb3VudF9fID0gTUFYX0FSUkFZX0xFTkdUSDtcbiAgICAgIHRoaXMuX192aWV3c19fID0gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBsYXp5IHdyYXBwZXIgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbG9uZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBgTGF6eVdyYXBwZXJgIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5Q2xvbmUoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExhenlXcmFwcGVyKHRoaXMuX193cmFwcGVkX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHRoaXMuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9fZGlyX18gPSB0aGlzLl9fZGlyX187XG4gICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gdGhpcy5fX2ZpbHRlcmVkX187XG4gICAgICByZXN1bHQuX19pdGVyYXRlZXNfXyA9IGNvcHlBcnJheSh0aGlzLl9faXRlcmF0ZWVzX18pO1xuICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSB0aGlzLl9fdGFrZUNvdW50X187XG4gICAgICByZXN1bHQuX192aWV3c19fID0gY29weUFycmF5KHRoaXMuX192aWV3c19fKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV2ZXJzZXMgdGhlIGRpcmVjdGlvbiBvZiBsYXp5IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgcmV2ZXJzZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyByZXZlcnNlZCBgTGF6eVdyYXBwZXJgIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXp5UmV2ZXJzZSgpIHtcbiAgICAgIGlmICh0aGlzLl9fZmlsdGVyZWRfXykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICByZXN1bHQuX19kaXJfXyA9IC0xO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gKj0gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIHRoZSB1bndyYXBwZWQgdmFsdWUgZnJvbSBpdHMgbGF6eSB3cmFwcGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBMYXp5V3JhcHBlclxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVZhbHVlKCkge1xuICAgICAgdmFyIGFycmF5ID0gdGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLFxuICAgICAgICAgIGRpciA9IHRoaXMuX19kaXJfXyxcbiAgICAgICAgICBpc0FyciA9IGlzQXJyYXkoYXJyYXkpLFxuICAgICAgICAgIGlzUmlnaHQgPSBkaXIgPCAwLFxuICAgICAgICAgIGFyckxlbmd0aCA9IGlzQXJyID8gYXJyYXkubGVuZ3RoIDogMCxcbiAgICAgICAgICB2aWV3ID0gZ2V0VmlldygwLCBhcnJMZW5ndGgsIHRoaXMuX192aWV3c19fKSxcbiAgICAgICAgICBzdGFydCA9IHZpZXcuc3RhcnQsXG4gICAgICAgICAgZW5kID0gdmlldy5lbmQsXG4gICAgICAgICAgbGVuZ3RoID0gZW5kIC0gc3RhcnQsXG4gICAgICAgICAgaW5kZXggPSBpc1JpZ2h0ID8gZW5kIDogKHN0YXJ0IC0gMSksXG4gICAgICAgICAgaXRlcmF0ZWVzID0gdGhpcy5fX2l0ZXJhdGVlc19fLFxuICAgICAgICAgIGl0ZXJMZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICB0YWtlQ291bnQgPSBuYXRpdmVNaW4obGVuZ3RoLCB0aGlzLl9fdGFrZUNvdW50X18pO1xuXG4gICAgICBpZiAoIWlzQXJyIHx8ICghaXNSaWdodCAmJiBhcnJMZW5ndGggPT0gbGVuZ3RoICYmIHRha2VDb3VudCA9PSBsZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBiYXNlV3JhcHBlclZhbHVlKGFycmF5LCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAobGVuZ3RoLS0gJiYgcmVzSW5kZXggPCB0YWtlQ291bnQpIHtcbiAgICAgICAgaW5kZXggKz0gZGlyO1xuXG4gICAgICAgIHZhciBpdGVySW5kZXggPSAtMSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuXG4gICAgICAgIHdoaWxlICgrK2l0ZXJJbmRleCA8IGl0ZXJMZW5ndGgpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IGl0ZXJhdGVlc1tpdGVySW5kZXhdLFxuICAgICAgICAgICAgICBpdGVyYXRlZSA9IGRhdGEuaXRlcmF0ZWUsXG4gICAgICAgICAgICAgIHR5cGUgPSBkYXRhLnR5cGUsXG4gICAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgICAgaWYgKHR5cGUgPT0gTEFaWV9NQVBfRkxBRykge1xuICAgICAgICAgICAgdmFsdWUgPSBjb21wdXRlZDtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFjb21wdXRlZCkge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRykge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJyZWFrIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIGBMYXp5V3JhcHBlcmAgaXMgYW4gaW5zdGFuY2Ugb2YgYGJhc2VMb2Rhc2hgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IExhenlXcmFwcGVyO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoRGVsZXRlKGtleSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICBpZiAobmF0aXZlQ3JlYXRlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBIYXNoXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGhhc2ggaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICAgICAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG4gICAgSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG4gICAgSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbiAgICBIYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuICAgIEhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG4gICAgSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IFtdO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgICAgaWYgKGluZGV4ID09IGxhc3RJbmRleCkge1xuICAgICAgICBkYXRhLnBvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3BsaWNlLmNhbGwoZGF0YSwgaW5kZXgsIDEpO1xuICAgICAgfVxuICAgICAgLS10aGlzLnNpemU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICAgICAgaW5kZXggPSBhc3NvY0luZGV4T2YoZGF0YSwga2V5KTtcblxuICAgICAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIExpc3RDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgKyt0aGlzLnNpemU7XG4gICAgICAgIGRhdGEucHVzaChba2V5LCB2YWx1ZV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YVtpbmRleF1bMV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuICAgIExpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBtYXAgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBtYXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIE1hcENhY2hlXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAgICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgICAgIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgICAgIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHNldFxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBgdmFsdWVgIHRvIHRoZSBhcnJheSBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgYWRkXG4gICAgICogQG1lbWJlck9mIFNldENhY2hlXG4gICAgICogQGFsaWFzIHB1c2hcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjYWNoZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRDYWNoZUFkZCh2YWx1ZSkge1xuICAgICAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFNldENhY2hlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVIYXModmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cbiAgICBTZXRDYWNoZS5wcm90b3R5cGUuYWRkID0gU2V0Q2FjaGUucHJvdG90eXBlLnB1c2ggPSBzZXRDYWNoZUFkZDtcbiAgICBTZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IExpc3RDYWNoZShlbnRyaWVzKTtcbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xlYXJcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZGVsZXRlXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG5cbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBzdGFjayB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXMoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgU3RhY2tcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgc3RhY2sgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICAgICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICAgICAgaWYgKCFNYXAgfHwgKHBhaXJzLmxlbmd0aCA8IExBUkdFX0FSUkFZX1NJWkUgLSAxKSkge1xuICAgICAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gICAgICB9XG4gICAgICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG4gICAgU3RhY2sucHJvdG90eXBlLmNsZWFyID0gc3RhY2tDbGVhcjtcbiAgICBTdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG4gICAgU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuICAgIFN0YWNrLnByb3RvdHlwZS5oYXMgPSBzdGFja0hhcztcbiAgICBTdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICAgICAgaXNBcmcgPSAhaXNBcnIgJiYgaXNBcmd1bWVudHModmFsdWUpLFxuICAgICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgICAgIHNraXBJbmRleGVzID0gaXNBcnIgfHwgaXNBcmcgfHwgaXNCdWZmIHx8IGlzVHlwZSxcbiAgICAgICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkgJiZcbiAgICAgICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAgICAgLy8gU2FmYXJpIDkgaGFzIGVudW1lcmFibGUgYGFyZ3VtZW50cy5sZW5ndGhgIGluIHN0cmljdCBtb2RlLlxuICAgICAgICAgICAgICAga2V5ID09ICdsZW5ndGgnIHx8XG4gICAgICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgICAgIChpc0J1ZmYgJiYgKGtleSA9PSAnb2Zmc2V0JyB8fCBrZXkgPT0gJ3BhcmVudCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gUGhhbnRvbUpTIDIgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gdHlwZWQgYXJyYXlzLlxuICAgICAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgICAgICAvLyBTa2lwIGluZGV4IHByb3BlcnRpZXMuXG4gICAgICAgICAgICAgICBpc0luZGV4KGtleSwgbGVuZ3RoKVxuICAgICAgICAgICAgKSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zYW1wbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2FtcGxlKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGFycmF5W2Jhc2VSYW5kb20oMCwgbGVuZ3RoIC0gMSldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zYW1wbGVTaXplYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2FtcGxlU2l6ZShhcnJheSwgbikge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSksIGJhc2VDbGFtcChuLCAwLCBhcnJheS5sZW5ndGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJyYXlTaHVmZmxlKGFycmF5KSB7XG4gICAgICByZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAgICAgKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICBpZiAoKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxKG9iamVjdFtrZXldLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICAgICAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFnZ3JlZ2F0ZXMgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIG9uIGBhY2N1bXVsYXRvcmAgd2l0aCBrZXlzIHRyYW5zZm9ybWVkXG4gICAgICogYnkgYGl0ZXJhdGVlYCBhbmQgdmFsdWVzIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgYWdncmVnYXRlZCBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFnZ3JlZ2F0b3IoY29sbGVjdGlvbiwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBjb2xsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gICAgICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbkluKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNzaWduVmFsdWVgIGFuZCBgYXNzaWduTWVyZ2VWYWx1ZWAgd2l0aG91dFxuICAgICAqIHZhbHVlIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKGtleSA9PSAnX19wcm90b19fJyAmJiBkZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAgICdlbnVtZXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBdChvYmplY3QsIHBhdGhzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKSxcbiAgICAgICAgICBza2lwID0gb2JqZWN0ID09IG51bGw7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBza2lwID8gdW5kZWZpbmVkIDogZ2V0KG9iamVjdCwgcGF0aHNbaW5kZXhdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xhbXBgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKG51bWJlciA9PT0gbnVtYmVyKSB7XG4gICAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyIDw9IHVwcGVyID8gbnVtYmVyIDogdXBwZXI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBudW1iZXIgPSBudW1iZXIgPj0gbG93ZXIgPyBudW1iZXIgOiBsb3dlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jbG9uZWAgYW5kIGBfLmNsb25lRGVlcGAgd2hpY2ggdHJhY2tzXG4gICAgICogdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgMSAtIERlZXAgY2xvbmVcbiAgICAgKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAgICAgKiAgNCAtIENsb25lIHN5bWJvbHNcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGFuZCB0aGVpciBjbG9uZSBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgb2JqZWN0LCBzdGFjaykge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgICAgIGlzRmxhdCA9IGJpdG1hc2sgJiBDTE9ORV9GTEFUX0ZMQUcsXG4gICAgICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgcmVzdWx0ID0gb2JqZWN0ID8gY3VzdG9taXplcih2YWx1ZSwga2V5LCBvYmplY3QsIHN0YWNrKSA6IGN1c3RvbWl6ZXIodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgICAgIGlmIChpc0Fycikge1xuICAgICAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgICAgIGlmICghaXNEZWVwKSB7XG4gICAgICAgICAgcmV0dXJuIGNvcHlBcnJheSh2YWx1ZSwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gY2xvbmVCdWZmZXIodmFsdWUsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgICAgIHJlc3VsdCA9IChpc0ZsYXQgfHwgaXNGdW5jKSA/IHt9IDogaW5pdENsb25lT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgICAgICA/IGNvcHlTeW1ib2xzSW4odmFsdWUsIGJhc2VBc3NpZ25JbihyZXN1bHQsIHZhbHVlKSlcbiAgICAgICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldCh2YWx1ZSk7XG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZDtcbiAgICAgIH1cbiAgICAgIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICAgICAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlKSB7XG4gICAgICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGlzTWFwKHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgICAgID8gKGlzRmxhdCA/IGdldEFsbEtleXNJbiA6IGdldEFsbEtleXMpXG4gICAgICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gICAgICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgICAgIGFycmF5RWFjaChwcm9wcyB8fCB2YWx1ZSwgZnVuY3Rpb24oc3ViVmFsdWUsIGtleSkge1xuICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgICAgICBzdWJWYWx1ZSA9IHZhbHVlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgYXNzaWduVmFsdWUocmVzdWx0LCBrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VDb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHZhciBwcm9wcyA9IGtleXMoc291cmNlKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VDb25mb3Jtc1RvKG9iamVjdCwgc291cmNlLCBwcm9wcyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNvbmZvcm1zVG9gIHdoaWNoIGFjY2VwdHMgYHByb3BzYCB0byBjaGVjay5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbbGVuZ3RoXSxcbiAgICAgICAgICAgIHByZWRpY2F0ZSA9IHNvdXJjZVtrZXldLFxuICAgICAgICAgICAgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICBpZiAoKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkgfHwgIXByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmRlbGF5YCBhbmQgYF8uZGVmZXJgIHdoaWNoIGFjY2VwdHMgYGFyZ3NgXG4gICAgICogdG8gcHJvdmlkZSB0byBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ8T2JqZWN0fSBSZXR1cm5zIHRoZSB0aW1lciBpZCBvciB0aW1lb3V0IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRGVsYXkoZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsgfSwgd2FpdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRpZmZlcmVuY2VgIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBleGNsdWRpbmcgbXVsdGlwbGUgYXJyYXlzIG9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHZhbHVlc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGg7XG5cbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFsdWVzID0gYXJyYXlNYXAodmFsdWVzLCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2YWx1ZXMubGVuZ3RoID49IExBUkdFX0FSUkFZX1NJWkUpIHtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgdmFsdWVzID0gbmV3IFNldENhY2hlKHZhbHVlcyk7XG4gICAgICB9XG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPT0gbnVsbCA/IHZhbHVlIDogaXRlcmF0ZWUodmFsdWUpO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHZhbHVlc0luZGV4ID0gdmFsdWVzTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICh2YWx1ZXNJbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVzW3ZhbHVlc0luZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXModmFsdWVzLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yRWFjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hSaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUVhY2hSaWdodCA9IGNyZWF0ZUJhc2VFYWNoKGJhc2VGb3JPd25SaWdodCwgdHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ldmVyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFdmVyeShjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHJlc3VsdCA9ICEhcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLm1heGAgYW5kIGBfLm1pbmAgd2hpY2ggYWNjZXB0cyBhXG4gICAgICogYGNvbXBhcmF0b3JgIHRvIGRldGVybWluZSB0aGUgZXh0cmVtdW0gdmFsdWUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIHVzZWQgdG8gY29tcGFyZSB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VFeHRyZW11bShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIChjb21wdXRlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKGN1cnJlbnQgPT09IGN1cnJlbnQgJiYgIWlzU3ltYm9sKGN1cnJlbnQpKVxuICAgICAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgdmFyIGNvbXB1dGVkID0gY3VycmVudCxcbiAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsbGAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmlsbC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBmaWxsIGBhcnJheWAgd2l0aC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gbGVuZ3RoKSA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGVuZCA9IHN0YXJ0ID4gZW5kID8gMCA6IHRvTGVuZ3RoKGVuZCk7XG4gICAgICB3aGlsZSAoc3RhcnQgPCBlbmQpIHtcbiAgICAgICAgYXJyYXlbc3RhcnQrK10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGggVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ByZWRpY2F0ZT1pc0ZsYXR0ZW5hYmxlXSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0PVtdXSBUaGUgaW5pdGlhbCByZXN1bHQgdmFsdWUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHByZWRpY2F0ZSB8fCAocHJlZGljYXRlID0gaXNGbGF0dGVuYWJsZSk7XG4gICAgICByZXN1bHQgfHwgKHJlc3VsdCA9IFtdKTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAoZGVwdGggPiAwICYmIHByZWRpY2F0ZSh2YWx1ZSkpIHtcbiAgICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBmbGF0dGVuIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgICAgYmFzZUZsYXR0ZW4odmFsdWUsIGRlcHRoIC0gMSwgcHJlZGljYXRlLCBpc1N0cmljdCwgcmVzdWx0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXJyYXlQdXNoKHJlc3VsdCwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYmFzZUZvck93bmAgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgb2JqZWN0YFxuICAgICAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUZvcmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzXG4gICAgICogaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIHZhciBiYXNlRm9yUmlnaHQgPSBjcmVhdGVCYXNlRm9yKHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yKG9iamVjdCwgaXRlcmF0ZWUsIGtleXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93blJpZ2h0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JSaWdodChvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mdW5jdGlvbnNgIHdoaWNoIGNyZWF0ZXMgYW4gYXJyYXkgb2ZcbiAgICAgKiBgb2JqZWN0YCBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmaWx0ZXJlZCBmcm9tIGBwcm9wc2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBuYW1lcyB0byBmaWx0ZXIuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRnVuY3Rpb25zKG9iamVjdCwgcHJvcHMpIHtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihwcm9wcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIHJldHVybiBpc0Z1bmN0aW9uKG9iamVjdFtrZXldKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gKGluZGV4ICYmIGluZGV4ID09IGxlbmd0aCkgPyBvYmplY3QgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gICAgICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gICAgICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgICAgIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgICAgIH1cbiAgICAgIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICAgICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmd0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VHdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXMob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNJbmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGtleSBpbiBPYmplY3Qob2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pblJhbmdlYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgbnVtYmVyYCBpcyBpbiB0aGUgcmFuZ2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHJldHVybiBudW1iZXIgPj0gbmF0aXZlTWluKHN0YXJ0LCBlbmQpICYmIG51bWJlciA8IG5hdGl2ZU1heChzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCwgd2l0aG91dCBzdXBwb3J0XG4gICAgICogZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHNoYXJlZCB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludGVyc2VjdGlvbihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5jbHVkZXMgPSBjb21wYXJhdG9yID8gYXJyYXlJbmNsdWRlc1dpdGggOiBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5c1swXS5sZW5ndGgsXG4gICAgICAgICAgb3RoTGVuZ3RoID0gYXJyYXlzLmxlbmd0aCxcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aCxcbiAgICAgICAgICBjYWNoZXMgPSBBcnJheShvdGhMZW5ndGgpLFxuICAgICAgICAgIG1heExlbmd0aCA9IEluZmluaXR5LFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAob3RoSW5kZXgtLSkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbb3RoSW5kZXhdO1xuICAgICAgICBpZiAob3RoSW5kZXggJiYgaXRlcmF0ZWUpIHtcbiAgICAgICAgICBhcnJheSA9IGFycmF5TWFwKGFycmF5LCBiYXNlVW5hcnkoaXRlcmF0ZWUpKTtcbiAgICAgICAgfVxuICAgICAgICBtYXhMZW5ndGggPSBuYXRpdmVNaW4oYXJyYXkubGVuZ3RoLCBtYXhMZW5ndGgpO1xuICAgICAgICBjYWNoZXNbb3RoSW5kZXhdID0gIWNvbXBhcmF0b3IgJiYgKGl0ZXJhdGVlIHx8IChsZW5ndGggPj0gMTIwICYmIGFycmF5Lmxlbmd0aCA+PSAxMjApKVxuICAgICAgICAgID8gbmV3IFNldENhY2hlKG90aEluZGV4ICYmIGFycmF5KVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBhcnJheXNbMF07XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHNlZW4gPSBjYWNoZXNbMF07XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgcmVzdWx0Lmxlbmd0aCA8IG1heExlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmICghKHNlZW5cbiAgICAgICAgICAgICAgPyBjYWNoZUhhcyhzZWVuLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgOiBpbmNsdWRlcyhyZXN1bHQsIGNvbXB1dGVkLCBjb21wYXJhdG9yKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIG90aEluZGV4ID0gb3RoTGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgtLW90aEluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY2FjaGUgPSBjYWNoZXNbb3RoSW5kZXhdO1xuICAgICAgICAgICAgaWYgKCEoY2FjaGVcbiAgICAgICAgICAgICAgICAgID8gY2FjaGVIYXMoY2FjaGUsIGNvbXB1dGVkKVxuICAgICAgICAgICAgICAgICAgOiBpbmNsdWRlcyhhcnJheXNbb3RoSW5kZXhdLCBjb21wdXRlZCwgY29tcGFyYXRvcikpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludmVydGAgYW5kIGBfLmludmVydEJ5YCB3aGljaCBpbnZlcnRzXG4gICAgICogYG9iamVjdGAgd2l0aCB2YWx1ZXMgdHJhbnNmb3JtZWQgYnkgYGl0ZXJhdGVlYCBhbmQgc2V0IGJ5IGBzZXR0ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0gdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUludmVydGVyKG9iamVjdCwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgc2V0dGVyKGFjY3VtdWxhdG9yLCBpdGVyYXRlZSh2YWx1ZSksIGtleSwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmludm9rZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogbWV0aG9kIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgICAgdmFyIGZ1bmMgPSBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgICByZXR1cm4gZnVuYyA9PSBudWxsID8gdW5kZWZpbmVkIDogYXBwbHkoZnVuYywgb2JqZWN0LCBhcmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcnJheUJ1ZmZlcmAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5IGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcnJheUJ1ZmZlclRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gZGF0ZVRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0VxdWFsYCB3aGljaCBzdXBwb3J0cyBwYXJ0aWFsIGNvbXBhcmlzb25zXG4gICAgICogYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAgICAgKiAgMSAtIFVub3JkZXJlZCBjb21wYXJpc29uXG4gICAgICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGB2YWx1ZWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gICAgICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgY29tcGFyZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBvdGhJc0FyciA9IGlzQXJyYXkob3RoZXIpLFxuICAgICAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgICAgICBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcblxuICAgICAgb2JqVGFnID0gb2JqVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvYmpUYWc7XG4gICAgICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICAgICAgdmFyIG9iaklzT2JqID0gb2JqVGFnID09IG9iamVjdFRhZyxcbiAgICAgICAgICBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICAgICAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIG9iaklzQXJyID0gdHJ1ZTtcbiAgICAgICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgIW9iaklzT2JqKSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIHJldHVybiAob2JqSXNBcnIgfHwgaXNUeXBlZEFycmF5KG9iamVjdCkpXG4gICAgICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEoYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHKSkge1xuICAgICAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICAgICAgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG5cbiAgICAgICAgaWYgKG9iaklzV3JhcHBlZCB8fCBvdGhJc1dyYXBwZWQpIHtcbiAgICAgICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgICAgIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcblxuICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWlzU2FtZVRhZykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hcGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgaXMgYSBtYXRjaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpbmRleCA9IG1hdGNoRGF0YS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICAgICAgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG5cbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIWxlbmd0aDtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgdmFyIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKVxuICAgICAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgICAgICA6ICEoZGF0YVswXSBpbiBvYmplY3QpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICB2YXIga2V5ID0gZGF0YVswXSxcbiAgICAgICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgICAgICBzcmNWYWx1ZSA9IGRhdGFbMV07XG5cbiAgICAgICAgaWYgKG5vQ3VzdG9taXplciAmJiBkYXRhWzJdKSB7XG4gICAgICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIShyZXN1bHQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgICAgIDogcmVzdWx0XG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNOYXRpdmUodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1JlZ0V4cGAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzUmVnRXhwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSByZWdleHBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNTZXRgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXRlcmF0ZWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IFt2YWx1ZT1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJdGVyYXRlZSh2YWx1ZSkge1xuICAgICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDM0IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGlkZW50aXR5O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IGJhc2VNYXRjaGVzUHJvcGVydHkodmFsdWVbMF0sIHZhbHVlWzFdKVxuICAgICAgICAgIDogYmFzZU1hdGNoZXModmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICAgICAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gICAgICB9XG4gICAgICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmx0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VMdCh2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8IG90aGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHRbKytpbmRleF0gPSBpdGVyYXRlZSh2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gICAgICB2YXIgbWF0Y2hEYXRhID0gZ2V0TWF0Y2hEYXRhKHNvdXJjZSk7XG4gICAgICBpZiAobWF0Y2hEYXRhLmxlbmd0aCA9PSAxICYmIG1hdGNoRGF0YVswXVsyXSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hdGNoZXNQcm9wZXJ0eWAgd2hpY2ggZG9lc24ndCBjbG9uZSBgc3JjVmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgaWYgKGlzS2V5KHBhdGgpICYmIGlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLCBzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciBvYmpWYWx1ZSA9IGdldChvYmplY3QsIHBhdGgpO1xuICAgICAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgICAgID8gaGFzSW4ob2JqZWN0LCBwYXRoKVxuICAgICAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYmFzZUZvcihzb3VyY2UsIGZ1bmN0aW9uKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAgIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIGJhc2VNZXJnZSwgY3VzdG9taXplciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICAgID8gY3VzdG9taXplcihzYWZlR2V0KG9iamVjdCwga2V5KSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gICAgICogcmVmZXJlbmNlcyB0byBiZSBtZXJnZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAgICAgKiAgY291bnRlcnBhcnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIG1lcmdlRnVuYywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgICAgIHNyY1ZhbHVlID0gc2FmZUdldChzb3VyY2UsIGtleSksXG4gICAgICAgICAgc3RhY2tlZCA9IHN0YWNrLmdldChzcmNWYWx1ZSk7XG5cbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIHN0YWNrZWQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHZhciBpc0NvbW1vbiA9IG5ld1ZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc1R5cGVkID0gIWlzQXJyICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHNyY1ZhbHVlKTtcblxuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0J1ZmYpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lQnVmZmVyKHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVUeXBlZEFycmF5KHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIGlmIChpc0FyZ3VtZW50cyhvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdG9QbGFpbk9iamVjdChvYmpWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaW5pdENsb25lT2JqZWN0KHNyY1ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlzQ29tbW9uKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICAgICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5udGhgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG50aCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZU50aChhcnJheSwgbikge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG4gKz0gbiA8IDAgPyBsZW5ndGggOiAwO1xuICAgICAgcmV0dXJuIGlzSW5kZXgobiwgbGVuZ3RoKSA/IGFycmF5W25dIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm9yZGVyQnlgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBpdGVyYXRlZXMgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gICAgICBpZiAoaXRlcmF0ZWVzLmxlbmd0aCkge1xuICAgICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgaWYgKGlzQXJyYXkoaXRlcmF0ZWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGJhc2VHZXQodmFsdWUsIGl0ZXJhdGVlLmxlbmd0aCA9PT0gMSA/IGl0ZXJhdGVlWzBdIDogaXRlcmF0ZWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWU7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gW2lkZW50aXR5XTtcbiAgICAgIH1cblxuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG5cbiAgICAgIHZhciByZXN1bHQgPSBiYXNlTWFwKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgdmFyIGNyaXRlcmlhID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgIHJldHVybiBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyAnY3JpdGVyaWEnOiBjcml0ZXJpYSwgJ2luZGV4JzogKytpbmRleCwgJ3ZhbHVlJzogdmFsdWUgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsIGZ1bmN0aW9uKG9iamVjdCwgb3RoZXIpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBhcmVNdWx0aXBsZShvYmplY3QsIG90aGVyLCBvcmRlcnMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucGlja2Agd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gICAgICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgICAgICByZXR1cm4gaGFzSW4ob2JqZWN0LCBwYXRoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mICBgXy5waWNrQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSB7fTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHBhdGggPSBwYXRoc1tpbmRleF0sXG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcblxuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBwYXRoKSkge1xuICAgICAgICAgIGJhc2VTZXQocmVzdWx0LCBjYXN0UGF0aChwYXRoLCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUHJvcGVydHlgIHdoaWNoIHN1cHBvcnRzIGRlZXAgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVByb3BlcnR5RGVlcChwYXRoKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBbGxCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICAgICAqIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleE9mID0gY29tcGFyYXRvciA/IGJhc2VJbmRleE9mV2l0aCA6IGJhc2VJbmRleE9mLFxuICAgICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgICBzZWVuID0gYXJyYXk7XG5cbiAgICAgIGlmIChhcnJheSA9PT0gdmFsdWVzKSB7XG4gICAgICAgIHZhbHVlcyA9IGNvcHlBcnJheSh2YWx1ZXMpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHNlZW4gPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZnJvbUluZGV4ID0gMCxcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICB3aGlsZSAoKGZyb21JbmRleCA9IGluZGV4T2Yoc2VlbiwgY29tcHV0ZWQsIGZyb21JbmRleCwgY29tcGFyYXRvcikpID4gLTEpIHtcbiAgICAgICAgICBpZiAoc2VlbiAhPT0gYXJyYXkpIHtcbiAgICAgICAgICAgIHNwbGljZS5jYWxsKHNlZW4sIGZyb21JbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNwbGljZS5jYWxsKGFycmF5LCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEF0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAgICAgKiBpbmRleGVzIG9yIGNhcHR1cmluZyB0aGUgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBpbmRleGVzIFRoZSBpbmRleGVzIG9mIGVsZW1lbnRzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUHVsbEF0KGFycmF5LCBpbmRleGVzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPyBpbmRleGVzLmxlbmd0aCA6IDAsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgaWYgKGxlbmd0aCA9PSBsYXN0SW5kZXggfHwgaW5kZXggIT09IHByZXZpb3VzKSB7XG4gICAgICAgICAgdmFyIHByZXZpb3VzID0gaW5kZXg7XG4gICAgICAgICAgaWYgKGlzSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgaW5kZXgsIDEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlVW5zZXQoYXJyYXksIGluZGV4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yYW5kb21gIHdpdGhvdXQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxvd2VyIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJhbmRvbSBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJhbmRvbShsb3dlciwgdXBwZXIpIHtcbiAgICAgIHJldHVybiBsb3dlciArIG5hdGl2ZUZsb29yKG5hdGl2ZVJhbmRvbSgpICogKHVwcGVyIC0gbG93ZXIgKyAxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZ2VgIGFuZCBgXy5yYW5nZVJpZ2h0YCB3aGljaCBkb2Vzbid0XG4gICAgICogY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RlcCBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KG5hdGl2ZUNlaWwoKGVuZCAtIHN0YXJ0KSAvIChzdGVwIHx8IDEpKSwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHJlc3VsdFtmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XSA9IHN0YXJ0O1xuICAgICAgICBzdGFydCArPSBzdGVwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXBlYXRgIHdoaWNoIGRvZXNuJ3QgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHJlcGVhdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJlcGVhdGVkIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmVwZWF0KHN0cmluZywgbikge1xuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgaWYgKCFzdHJpbmcgfHwgbiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIC8vIExldmVyYWdlIHRoZSBleHBvbmVudGlhdGlvbiBieSBzcXVhcmluZyBhbGdvcml0aG0gZm9yIGEgZmFzdGVyIHJlcGVhdC5cbiAgICAgIC8vIFNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeHBvbmVudGlhdGlvbl9ieV9zcXVhcmluZyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgZG8ge1xuICAgICAgICBpZiAobiAlIDIpIHtcbiAgICAgICAgICByZXN1bHQgKz0gc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIG4gPSBuYXRpdmVGbG9vcihuIC8gMik7XG4gICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgc3RyaW5nICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAobik7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2FtcGxlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU2FtcGxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBhcnJheVNhbXBsZSh2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZVNpemVgIHdpdGhvdXQgcGFyYW0gZ3VhcmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZVNpemUoY29sbGVjdGlvbiwgbikge1xuICAgICAgdmFyIGFycmF5ID0gdmFsdWVzKGNvbGxlY3Rpb24pO1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGFycmF5LCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2V0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgIH1cbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxLFxuICAgICAgICAgIG5lc3RlZCA9IG9iamVjdDtcblxuICAgICAgd2hpbGUgKG5lc3RlZCAhPSBudWxsICYmICsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKSxcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycgfHwga2V5ID09PSAnY29uc3RydWN0b3InIHx8IGtleSA9PT0gJ3Byb3RvdHlwZScpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGluZGV4ICE9IGxhc3RJbmRleCkge1xuICAgICAgICAgIHZhciBvYmpWYWx1ZSA9IG5lc3RlZFtrZXldO1xuICAgICAgICAgIG5ld1ZhbHVlID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIGtleSwgbmVzdGVkKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBpc09iamVjdChvYmpWYWx1ZSlcbiAgICAgICAgICAgICAgPyBvYmpWYWx1ZVxuICAgICAgICAgICAgICA6IChpc0luZGV4KHBhdGhbaW5kZXggKyAxXSkgPyBbXSA6IHt9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYXNzaWduVmFsdWUobmVzdGVkLCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgbmVzdGVkID0gbmVzdGVkW2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXREYXRhYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NvY2lhdGUgbWV0YWRhdGEgd2l0aC5cbiAgICAgKiBAcGFyYW0geyp9IGRhdGEgVGhlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXREYXRhID0gIW1ldGFNYXAgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIGRhdGEpIHtcbiAgICAgIG1ldGFNYXAuc2V0KGZ1bmMsIGRhdGEpO1xuICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRUb1N0cmluZ2Agd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2h1ZmZsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNodWZmbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNodWZmbGUoY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKHZhbHVlcyhjb2xsZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2xpY2VgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgc3RhcnQgPSAtc3RhcnQgPiBsZW5ndGggPyAwIDogKGxlbmd0aCArIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIGVuZCA9IGVuZCA+IGxlbmd0aCA/IGxlbmd0aCA6IGVuZDtcbiAgICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAgIGVuZCArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBsZW5ndGggPSBzdGFydCA+IGVuZCA/IDAgOiAoKGVuZCAtIHN0YXJ0KSA+Pj4gMCk7XG4gICAgICBzdGFydCA+Pj49IDA7XG5cbiAgICAgIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2luZGV4XSA9IGFycmF5W2luZGV4ICsgc3RhcnRdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb21lYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29tZShjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQ7XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuICFyZXN1bHQ7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAhIXJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRJbmRleGAgYW5kIGBfLnNvcnRlZExhc3RJbmRleGAgd2hpY2hcbiAgICAgKiBwZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2ggb2YgYGFycmF5YCB0byBkZXRlcm1pbmUgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWBcbiAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbcmV0SGlnaGVzdF0gU3BlY2lmeSByZXR1cm5pbmcgdGhlIGhpZ2hlc3QgcXVhbGlmaWVkIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCByZXRIaWdoZXN0KSB7XG4gICAgICB2YXIgbG93ID0gMCxcbiAgICAgICAgICBoaWdoID0gYXJyYXkgPT0gbnVsbCA/IGxvdyA6IGFycmF5Lmxlbmd0aDtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiB2YWx1ZSA9PT0gdmFsdWUgJiYgaGlnaCA8PSBIQUxGX01BWF9BUlJBWV9MRU5HVEgpIHtcbiAgICAgICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgICB2YXIgbWlkID0gKGxvdyArIGhpZ2gpID4+PiAxLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGFycmF5W21pZF07XG5cbiAgICAgICAgICBpZiAoY29tcHV0ZWQgIT09IG51bGwgJiYgIWlzU3ltYm9sKGNvbXB1dGVkKSAmJlxuICAgICAgICAgICAgICAocmV0SGlnaGVzdCA/IChjb21wdXRlZCA8PSB2YWx1ZSkgOiAoY29tcHV0ZWQgPCB2YWx1ZSkpKSB7XG4gICAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoaWdoID0gbWlkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGlnaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGlkZW50aXR5LCByZXRIaWdoZXN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRJbmRleEJ5YCBhbmQgYF8uc29ydGVkTGFzdEluZGV4QnlgXG4gICAgICogd2hpY2ggaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlXG4gICAgICogdGhlaXIgc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGhpZ2ggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgdmFyIHZhbElzTmFOID0gdmFsdWUgIT09IHZhbHVlLFxuICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgIHZhbElzU3ltYm9sID0gaXNTeW1ib2wodmFsdWUpLFxuICAgICAgICAgIHZhbElzVW5kZWZpbmVkID0gdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICAgICAgdmFyIG1pZCA9IG5hdGl2ZUZsb29yKChsb3cgKyBoaWdoKSAvIDIpLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZShhcnJheVttaWRdKSxcbiAgICAgICAgICAgIG90aElzRGVmaW5lZCA9IGNvbXB1dGVkICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBvdGhJc051bGwgPSBjb21wdXRlZCA9PT0gbnVsbCxcbiAgICAgICAgICAgIG90aElzUmVmbGV4aXZlID0gY29tcHV0ZWQgPT09IGNvbXB1dGVkLFxuICAgICAgICAgICAgb3RoSXNTeW1ib2wgPSBpc1N5bWJvbChjb21wdXRlZCk7XG5cbiAgICAgICAgaWYgKHZhbElzTmFOKSB7XG4gICAgICAgICAgdmFyIHNldExvdyA9IHJldEhpZ2hlc3QgfHwgb3RoSXNSZWZsZXhpdmU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNVbmRlZmluZWQpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiAocmV0SGlnaGVzdCB8fCBvdGhJc0RlZmluZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzTnVsbCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIG90aElzRGVmaW5lZCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNOdWxsKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IG90aElzUmVmbGV4aXZlICYmIG90aElzRGVmaW5lZCAmJiAhb3RoSXNOdWxsICYmIChyZXRIaWdoZXN0IHx8ICFvdGhJc1N5bWJvbCk7XG4gICAgICAgIH0gZWxzZSBpZiAob3RoSXNOdWxsIHx8IG90aElzU3ltYm9sKSB7XG4gICAgICAgICAgc2V0TG93ID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0TG93ID0gcmV0SGlnaGVzdCA/IChjb21wdXRlZCA8PSB2YWx1ZSkgOiAoY29tcHV0ZWQgPCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldExvdykge1xuICAgICAgICAgIGxvdyA9IG1pZCArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5hdGl2ZU1pbihoaWdoLCBNQVhfQVJSQVlfSU5ERVgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRlZFVuaXFgIGFuZCBgXy5zb3J0ZWRVbmlxQnlgIHdpdGhvdXRcbiAgICAgKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRVbmlxKGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIGlmICghaW5kZXggfHwgIWVxKGNvbXB1dGVkLCBzZWVuKSkge1xuICAgICAgICAgIHZhciBzZWVuID0gY29tcHV0ZWQ7XG4gICAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9OdW1iZXJgIHdoaWNoIGRvZXNuJ3QgZW5zdXJlIGNvcnJlY3RcbiAgICAgKiBjb252ZXJzaW9ucyBvZiBiaW5hcnksIGhleGFkZWNpbWFsLCBvciBvY3RhbCBzdHJpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgcmV0dXJuICt2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAgICAgKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuaXFCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbmlxKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBpc0NvbW1vbiA9IHRydWUsXG4gICAgICAgICAgcmVzdWx0ID0gW10sXG4gICAgICAgICAgc2VlbiA9IHJlc3VsdDtcblxuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgICAgICBpZiAoc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgICAgICBzZWVuID0gbmV3IFNldENhY2hlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHNlZW4gPSBpdGVyYXRlZSA/IFtdIDogcmVzdWx0O1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgdmFsdWUgPSAoY29tcGFyYXRvciB8fCB2YWx1ZSAhPT0gMCkgPyB2YWx1ZSA6IDA7XG4gICAgICAgIGlmIChpc0NvbW1vbiAmJiBjb21wdXRlZCA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgICAgICBpZiAoc2VlbltzZWVuSW5kZXhdID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHNlZW4sIGNvbXB1dGVkLCBjb21wYXJhdG9yKSkge1xuICAgICAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHByb3BlcnR5IHBhdGggdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCB8fCBkZWxldGUgb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51cGRhdGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byB1cGRhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gdXBkYXRlciBUaGUgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdXBkYXRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBwYXRoIGNyZWF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHJldHVybiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdXBkYXRlcihiYXNlR2V0KG9iamVjdCwgcGF0aCkpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8uZHJvcFdoaWxlYCBhbmQgYF8udGFrZVdoaWxlYFxuICAgICAqIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRHJvcF0gU3BlY2lmeSBkcm9wcGluZyBlbGVtZW50cyBpbnN0ZWFkIG9mIHRha2luZyB0aGVtLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlV2hpbGUoYXJyYXksIHByZWRpY2F0ZSwgaXNEcm9wLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMTtcblxuICAgICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkgJiZcbiAgICAgICAgcHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge31cblxuICAgICAgcmV0dXJuIGlzRHJvcFxuICAgICAgICA/IGJhc2VTbGljZShhcnJheSwgKGZyb21SaWdodCA/IDAgOiBpbmRleCksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiBsZW5ndGgpKVxuICAgICAgICA6IGJhc2VTbGljZShhcnJheSwgKGZyb21SaWdodCA/IGluZGV4ICsgMSA6IDApLCAoZnJvbVJpZ2h0ID8gbGVuZ3RoIDogaW5kZXgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgd3JhcHBlclZhbHVlYCB3aGljaCByZXR1cm5zIHRoZSByZXN1bHQgb2ZcbiAgICAgKiBwZXJmb3JtaW5nIGEgc2VxdWVuY2Ugb2YgYWN0aW9ucyBvbiB0aGUgdW53cmFwcGVkIGB2YWx1ZWAsIHdoZXJlIGVhY2hcbiAgICAgKiBzdWNjZXNzaXZlIGFjdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFjdGlvbnMgQWN0aW9ucyB0byBwZXJmb3JtIHRvIHJlc29sdmUgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdyYXBwZXJWYWx1ZSh2YWx1ZSwgYWN0aW9ucykge1xuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC52YWx1ZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlKGFjdGlvbnMsIGZ1bmN0aW9uKHJlc3VsdCwgYWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBhY3Rpb24uZnVuYy5hcHBseShhY3Rpb24udGhpc0FyZywgYXJyYXlQdXNoKFtyZXN1bHRdLCBhY3Rpb24uYXJncykpO1xuICAgICAgfSwgcmVzdWx0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ueG9yYCwgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHRoYXQgYWNjZXB0cyBhbiBhcnJheSBvZiBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXlzIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHZhbHVlcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlWG9yKGFycmF5cywgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VVbmlxKGFycmF5c1swXSkgOiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFycmF5c1tpbmRleF0sXG4gICAgICAgICAgICBvdGhJbmRleCA9IC0xO1xuXG4gICAgICAgIHdoaWxlICgrK290aEluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKG90aEluZGV4ICE9IGluZGV4KSB7XG4gICAgICAgICAgICByZXN1bHRbaW5kZXhdID0gYmFzZURpZmZlcmVuY2UocmVzdWx0W2luZGV4XSB8fCBhcnJheSwgYXJyYXlzW290aEluZGV4XSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKHJlc3VsdCwgMSksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uemlwT2JqZWN0YCB3aGljaCBhc3NpZ25zIHZhbHVlcyB1c2luZyBgYXNzaWduRnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGgsXG4gICAgICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGFzc2lnbkZ1bmMocmVzdWx0LCBwcm9wc1tpbmRleF0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhbiBlbXB0eSBhcnJheSBpZiBpdCdzIG5vdCBhbiBhcnJheSBsaWtlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIHRoZSBjYXN0IGFycmF5LWxpa2Ugb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSkgPyB2YWx1ZSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBjYXN0IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nID8gdmFsdWUgOiBpZGVudGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGEgcGF0aCBhcnJheSBpZiBpdCdzIG5vdCBvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0UGF0aCh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgYGJhc2VSZXN0YCBhbGlhcyB3aGljaCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBgaWRlbnRpdHlgIGJ5IG1vZHVsZVxuICAgICAqIHJlcGxhY2VtZW50IHBsdWdpbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIHZhciBjYXN0UmVzdCA9IGJhc2VSZXN0O1xuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYGFycmF5YCB0byBhIHNsaWNlIGlmIGl0J3MgbmVlZGVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3Qgc2xpY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICAgICAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBlbmQ7XG4gICAgICByZXR1cm4gKCFzdGFydCAmJiBlbmQgPj0gbGVuZ3RoKSA/IGFycmF5IDogYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCB0aGUgZ2xvYmFsIFtgY2xlYXJUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vY2xlYXJUaW1lb3V0KS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ8T2JqZWN0fSBpZCBUaGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3Qgb2YgdGhlIHRpbWVyIHRvIGNsZWFyLlxuICAgICAqL1xuICAgIHZhciBjbGVhclRpbWVvdXQgPSBjdHhDbGVhclRpbWVvdXQgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICAgIHJldHVybiByb290LmNsZWFyVGltZW91dChpZCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgICAgIGlmIChpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IGJ1ZmZlci5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICBidWZmZXIuY29weShyZXN1bHQpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGFycmF5QnVmZmVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheUJ1ZmZlcn0gYXJyYXlCdWZmZXIgVGhlIGFycmF5IGJ1ZmZlciB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgZGF0YVZpZXdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YVZpZXcgVGhlIGRhdGEgdmlldyB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gICAgICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyBkYXRhVmlldy5jb25zdHJ1Y3RvcihidWZmZXIsIGRhdGFWaWV3LmJ5dGVPZmZzZXQsIGRhdGFWaWV3LmJ5dGVMZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgcmVnZXhwYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHJlZ2V4cCBUaGUgcmVnZXhwIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCByZWdleHAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IHJlZ2V4cC5jb25zdHJ1Y3RvcihyZWdleHAuc291cmNlLCByZUZsYWdzLmV4ZWMocmVnZXhwKSk7XG4gICAgICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHN5bWJvbCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gICAgICByZXR1cm4gc3ltYm9sVmFsdWVPZiA/IE9iamVjdChzeW1ib2xWYWx1ZU9mLmNhbGwoc3ltYm9sKSkgOiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICAgICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gICAgICByZXR1cm4gbmV3IHR5cGVkQXJyYXkuY29uc3RydWN0b3IoYnVmZmVyLCB0eXBlZEFycmF5LmJ5dGVPZmZzZXQsIHR5cGVkQXJyYXkubGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB2YWx1ZXMgdG8gc29ydCB0aGVtIGluIGFzY2VuZGluZyBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhcmVBc2NlbmRpbmcodmFsdWUsIG90aGVyKSB7XG4gICAgICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgICAgIHZhciB2YWxJc0RlZmluZWQgPSB2YWx1ZSAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgdmFsSXNOdWxsID0gdmFsdWUgPT09IG51bGwsXG4gICAgICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgICAgIHZhbElzU3ltYm9sID0gaXNTeW1ib2wodmFsdWUpO1xuXG4gICAgICAgIHZhciBvdGhJc0RlZmluZWQgPSBvdGhlciAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IG90aGVyID09PSBvdGhlcixcbiAgICAgICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2wob3RoZXIpO1xuXG4gICAgICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICAgICAodmFsSXNTeW1ib2wgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlICYmICFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sKSB8fFxuICAgICAgICAgICAgKHZhbElzTnVsbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICF2YWxJc1JlZmxleGl2ZSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoIXZhbElzTnVsbCAmJiAhdmFsSXNTeW1ib2wgJiYgIW90aElzU3ltYm9sICYmIHZhbHVlIDwgb3RoZXIpIHx8XG4gICAgICAgICAgICAob3RoSXNTeW1ib2wgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlICYmICF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sKSB8fFxuICAgICAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAoIW90aElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgICAgICFvdGhJc1JlZmxleGl2ZSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vcmRlckJ5YCB0byBjb21wYXJlIG11bHRpcGxlIHByb3BlcnRpZXMgb2YgYSB2YWx1ZSB0byBhbm90aGVyXG4gICAgICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gICAgICpcbiAgICAgKiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLFxuICAgICAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAgICAgKiBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBvYmpDcml0ZXJpYSA9IG9iamVjdC5jcml0ZXJpYSxcbiAgICAgICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgICAgIGxlbmd0aCA9IG9iakNyaXRlcmlhLmxlbmd0aCxcbiAgICAgICAgICBvcmRlcnNMZW5ndGggPSBvcmRlcnMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY29tcGFyZUFzY2VuZGluZyhvYmpDcml0ZXJpYVtpbmRleF0sIG90aENyaXRlcmlhW2luZGV4XSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgICAgIHJldHVybiByZXN1bHQgKiAob3JkZXIgPT0gJ2Rlc2MnID8gLTEgOiAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRml4ZXMgYW4gYEFycmF5I3NvcnRgIGJ1ZyBpbiB0aGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIGFwcGxpY2F0aW9uc1xuICAgICAgLy8gdGhhdCBjYXVzZXMgaXQsIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdG8gcHJvdmlkZSB0aGUgc2FtZSB2YWx1ZSBmb3JcbiAgICAgIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIC8vXG4gICAgICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTkwIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICByZXR1cm4gb2JqZWN0LmluZGV4IC0gb3RoZXIuaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSB0aGF0IGlzIHRoZSBjb21wb3NpdGlvbiBvZiBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMsXG4gICAgICogcGxhY2Vob2xkZXJzLCBhbmQgcHJvdmlkZWQgYXJndW1lbnRzIGludG8gYSBzaW5nbGUgYXJyYXkgb2YgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFydGlhbHMgVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJncyhhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKSB7XG4gICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoLFxuICAgICAgICAgIGhvbGRlcnNMZW5ndGggPSBob2xkZXJzLmxlbmd0aCxcbiAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICBsZWZ0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgIHJhbmdlTGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3NMZW5ndGggLSBob2xkZXJzTGVuZ3RoLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZWZ0TGVuZ3RoICsgcmFuZ2VMZW5ndGgpLFxuICAgICAgICAgIGlzVW5jdXJyaWVkID0gIWlzQ3VycmllZDtcblxuICAgICAgd2hpbGUgKCsrbGVmdEluZGV4IDwgbGVmdExlbmd0aCkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4XSA9IHBhcnRpYWxzW2xlZnRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W2hvbGRlcnNbYXJnc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlIChyYW5nZUxlbmd0aC0tKSB7XG4gICAgICAgIHJlc3VsdFtsZWZ0SW5kZXgrK10gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBjb21wb3NlQXJnc2AgZXhjZXB0IHRoYXQgdGhlIGFyZ3VtZW50cyBjb21wb3NpdGlvblxuICAgICAqIGlzIHRhaWxvcmVkIGZvciBgXy5wYXJ0aWFsUmlnaHRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFydGlhbHMgVGhlIGFyZ3VtZW50cyB0byBhcHBlbmQgdG8gdGhvc2UgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gaG9sZGVycyBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbXMge2Jvb2xlYW59IFtpc0N1cnJpZWRdIFNwZWNpZnkgY29tcG9zaW5nIGZvciBhIGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tcG9zZWQgYXJndW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBvc2VBcmdzUmlnaHQoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzSW5kZXggPSAtMSxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgcmlnaHRJbmRleCA9IC0xLFxuICAgICAgICAgIHJpZ2h0TGVuZ3RoID0gcGFydGlhbHMubGVuZ3RoLFxuICAgICAgICAgIHJhbmdlTGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3NMZW5ndGggLSBob2xkZXJzTGVuZ3RoLCAwKSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShyYW5nZUxlbmd0aCArIHJpZ2h0TGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2FyZ3NJbmRleCA8IHJhbmdlTGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFthcmdzSW5kZXhdID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgfVxuICAgICAgdmFyIG9mZnNldCA9IGFyZ3NJbmRleDtcbiAgICAgIHdoaWxlICgrK3JpZ2h0SW5kZXggPCByaWdodExlbmd0aCkge1xuICAgICAgICByZXN1bHRbb2Zmc2V0ICsgcmlnaHRJbmRleF0gPSBwYXJ0aWFsc1tyaWdodEluZGV4XTtcbiAgICAgIH1cbiAgICAgIHdoaWxlICgrK2hvbGRlcnNJbmRleCA8IGhvbGRlcnNMZW5ndGgpIHtcbiAgICAgICAgaWYgKGlzVW5jdXJyaWVkIHx8IGFyZ3NJbmRleCA8IGFyZ3NMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHRbb2Zmc2V0ICsgaG9sZGVyc1tob2xkZXJzSW5kZXhdXSA9IGFyZ3NbYXJnc0luZGV4KytdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyB0aGUgdmFsdWVzIG9mIGBzb3VyY2VgIHRvIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgZnJvbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcblxuICAgICAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICAgICAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgICAgIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05ldykge1xuICAgICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29waWVzIG93biBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9scyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gYW5kIGluaGVyaXRlZCBzeW1ib2xzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5ncm91cEJ5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYWNjdW11bGF0b3IgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpbml0aWFsaXplcl0gVGhlIGFjY3VtdWxhdG9yIG9iamVjdCBpbml0aWFsaXplci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhZ2dyZWdhdG9yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUFnZ3JlZ2F0b3Ioc2V0dGVyLCBpbml0aWFsaXplcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5QWdncmVnYXRvciA6IGJhc2VBZ2dyZWdhdG9yLFxuICAgICAgICAgICAgYWNjdW11bGF0b3IgPSBpbml0aWFsaXplciA/IGluaXRpYWxpemVyKCkgOiB7fTtcblxuICAgICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBzZXR0ZXIsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYWNjdW11bGF0b3IpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLFxuICAgICAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBjdXN0b21pemVyID0gKGFzc2lnbmVyLmxlbmd0aCA+IDMgJiYgdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgICAgIGxlbmd0aCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGJhc2VFYWNoYCBvciBgYmFzZUVhY2hSaWdodGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVhY2hGdW5jIFRoZSBmdW5jdGlvbiB0byBpdGVyYXRlIG92ZXIgYSBjb2xsZWN0aW9uLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGgsXG4gICAgICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICAgICAgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICAgICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNGdW5jKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgaXRlcmFibGUgPSBPYmplY3Qob2JqZWN0KSxcbiAgICAgICAgICAgIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSxcbiAgICAgICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgICB2YXIga2V5ID0gcHJvcHNbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF07XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBpbnZva2UgaXQgd2l0aCB0aGUgb3B0aW9uYWwgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiBgdGhpc0FyZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKSB7XG4gICAgICB2YXIgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuICAgICAgICByZXR1cm4gZm4uYXBwbHkoaXNCaW5kID8gdGhpc0FyZyA6IHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5sb3dlckZpcnN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG5hbWUgb2YgdGhlIGBTdHJpbmdgIGNhc2UgbWV0aG9kIHRvIHVzZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUNhc2VGaXJzdChtZXRob2ROYW1lKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG5cbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgICAgICA/IHN0cmluZ1RvQXJyYXkoc3RyaW5nKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIHZhciBjaHIgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBzdHJTeW1ib2xzWzBdXG4gICAgICAgICAgOiBzdHJpbmcuY2hhckF0KDApO1xuXG4gICAgICAgIHZhciB0cmFpbGluZyA9IHN0clN5bWJvbHNcbiAgICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAxKS5qb2luKCcnKVxuICAgICAgICAgIDogc3RyaW5nLnNsaWNlKDEpO1xuXG4gICAgICAgIHJldHVybiBjaHJbbWV0aG9kTmFtZV0oKSArIHRyYWlsaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5jYW1lbENhc2VgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdG8gY29tYmluZSBlYWNoIHdvcmQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG91bmRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDb21wb3VuZGVyKGNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBhcnJheVJlZHVjZSh3b3JkcyhkZWJ1cnIoc3RyaW5nKS5yZXBsYWNlKHJlQXBvcywgJycpKSwgY2FsbGJhY2ssICcnKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgYW4gaW5zdGFuY2Ugb2YgYEN0b3JgIHJlZ2FyZGxlc3Mgb2ZcbiAgICAgKiB3aGV0aGVyIGl0IHdhcyBpbnZva2VkIGFzIHBhcnQgb2YgYSBgbmV3YCBleHByZXNzaW9uIG9yIGJ5IGBjYWxsYCBvciBgYXBwbHlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDdG9yIFRoZSBjb25zdHJ1Y3RvciB0byB3cmFwLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ3RvcihDdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIFVzZSBhIGBzd2l0Y2hgIHN0YXRlbWVudCB0byB3b3JrIHdpdGggY2xhc3MgY29uc3RydWN0b3JzLiBTZWVcbiAgICAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNhbGwtdGhpc2FyZ3VtZW50LWFyZ3VtZW50c2xpc3RcbiAgICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQ3RvcjtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdKTtcbiAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICBjYXNlIDQ6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdKTtcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdLCBhcmdzWzVdKTtcbiAgICAgICAgICBjYXNlIDc6IHJldHVybiBuZXcgQ3RvcihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdLCBhcmdzWzRdLCBhcmdzWzVdLCBhcmdzWzZdKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBiYXNlQ3JlYXRlKEN0b3IucHJvdG90eXBlKSxcbiAgICAgICAgICAgIHJlc3VsdCA9IEN0b3IuYXBwbHkodGhpc0JpbmRpbmcsIGFyZ3MpO1xuXG4gICAgICAgIC8vIE1pbWljIHRoZSBjb25zdHJ1Y3RvcidzIGByZXR1cm5gIGJlaGF2aW9yLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9lczUuZ2l0aHViLmlvLyN4MTMuMi4yIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHJldHVybiBpc09iamVjdChyZXN1bHQpID8gcmVzdWx0IDogdGhpc0JpbmRpbmc7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBlbmFibGUgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXJpdHkgVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN1cnJ5KGZ1bmMsIGJpdG1hc2ssIGFyaXR5KSB7XG4gICAgICB2YXIgQ3RvciA9IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gZ2V0SG9sZGVyKHdyYXBwZXIpO1xuXG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgYXJnc1tpbmRleF0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHZhciBob2xkZXJzID0gKGxlbmd0aCA8IDMgJiYgYXJnc1swXSAhPT0gcGxhY2Vob2xkZXIgJiYgYXJnc1tsZW5ndGggLSAxXSAhPT0gcGxhY2Vob2xkZXIpXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuXG4gICAgICAgIGxlbmd0aCAtPSBob2xkZXJzLmxlbmd0aDtcbiAgICAgICAgaWYgKGxlbmd0aCA8IGFyaXR5KSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlY3VycnkoXG4gICAgICAgICAgICBmdW5jLCBiaXRtYXNrLCBjcmVhdGVIeWJyaWQsIHdyYXBwZXIucGxhY2Vob2xkZXIsIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGFyZ3MsIGhvbGRlcnMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSAtIGxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCB0aGlzLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5maW5kYCBvciBgXy5maW5kTGFzdGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZpbmRJbmRleEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbGxlY3Rpb24gaW5kZXguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVGaW5kKGZpbmRJbmRleEZ1bmMpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgICB2YXIgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICB2YXIgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgICAgIGNvbGxlY3Rpb24gPSBrZXlzKGNvbGxlY3Rpb24pO1xuICAgICAgICAgIHByZWRpY2F0ZSA9IGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSk7IH07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGluZGV4ID0gZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCk7XG4gICAgICAgIHJldHVybiBpbmRleCA+IC0xID8gaXRlcmFibGVbaXRlcmF0ZWUgPyBjb2xsZWN0aW9uW2luZGV4XSA6IGluZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBfLmZsb3dgIG9yIGBfLmZsb3dSaWdodGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsb3cgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmxvdyhmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmbGF0UmVzdChmdW5jdGlvbihmdW5jcykge1xuICAgICAgICB2YXIgbGVuZ3RoID0gZnVuY3MubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwcmVyZXEgPSBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZS50aHJ1O1xuXG4gICAgICAgIGlmIChmcm9tUmlnaHQpIHtcbiAgICAgICAgICBmdW5jcy5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICB2YXIgZnVuYyA9IGZ1bmNzW2luZGV4XTtcbiAgICAgICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocHJlcmVxICYmICF3cmFwcGVyICYmIGdldEZ1bmNOYW1lKGZ1bmMpID09ICd3cmFwcGVyJykge1xuICAgICAgICAgICAgdmFyIHdyYXBwZXIgPSBuZXcgTG9kYXNoV3JhcHBlcihbXSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gd3JhcHBlciA/IGluZGV4IDogbGVuZ3RoO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGZ1bmMgPSBmdW5jc1tpbmRleF07XG5cbiAgICAgICAgICB2YXIgZnVuY05hbWUgPSBnZXRGdW5jTmFtZShmdW5jKSxcbiAgICAgICAgICAgICAgZGF0YSA9IGZ1bmNOYW1lID09ICd3cmFwcGVyJyA/IGdldERhdGEoZnVuYykgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAoZGF0YSAmJiBpc0xhemlhYmxlKGRhdGFbMF0pICYmXG4gICAgICAgICAgICAgICAgZGF0YVsxXSA9PSAoV1JBUF9BUllfRkxBRyB8IFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSAmJlxuICAgICAgICAgICAgICAgICFkYXRhWzRdLmxlbmd0aCAmJiBkYXRhWzldID09IDFcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gd3JhcHBlcltnZXRGdW5jTmFtZShkYXRhWzBdKV0uYXBwbHkod3JhcHBlciwgZGF0YVszXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdyYXBwZXIgPSAoZnVuYy5sZW5ndGggPT0gMSAmJiBpc0xhemlhYmxlKGZ1bmMpKVxuICAgICAgICAgICAgICA/IHdyYXBwZXJbZnVuY05hbWVdKClcbiAgICAgICAgICAgICAgOiB3cmFwcGVyLnRocnUoZnVuYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgICAgdmFsdWUgPSBhcmdzWzBdO1xuXG4gICAgICAgICAgaWYgKHdyYXBwZXIgJiYgYXJncy5sZW5ndGggPT0gMSAmJiBpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIucGxhbnQodmFsdWUpLnZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgICAgIHJlc3VsdCA9IGxlbmd0aCA/IGZ1bmNzW2luZGV4XS5hcHBseSh0aGlzLCBhcmdzKSA6IHZhbHVlO1xuXG4gICAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmNzW2luZGV4XS5jYWxsKHRoaXMsIHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggb3B0aW9uYWwgYHRoaXNgXG4gICAgICogYmluZGluZyBvZiBgdGhpc0FyZ2AsIHBhcnRpYWwgYXBwbGljYXRpb24sIGFuZCBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IGZ1bmMgVGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBuYW1lIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0geyp9IFt0aGlzQXJnXSBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzUmlnaHRdIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkXG4gICAgICogIHRvIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNSaWdodF0gVGhlIGBwYXJ0aWFsc1JpZ2h0YCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUh5YnJpZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgcGFydGlhbHNSaWdodCwgaG9sZGVyc1JpZ2h0LCBhcmdQb3MsIGFyeSwgYXJpdHkpIHtcbiAgICAgIHZhciBpc0FyeSA9IGJpdG1hc2sgJiBXUkFQX0FSWV9GTEFHLFxuICAgICAgICAgIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBpc0JpbmRLZXkgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0tFWV9GTEFHLFxuICAgICAgICAgIGlzQ3VycmllZCA9IGJpdG1hc2sgJiAoV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSxcbiAgICAgICAgICBpc0ZsaXAgPSBiaXRtYXNrICYgV1JBUF9GTElQX0ZMQUcsXG4gICAgICAgICAgQ3RvciA9IGlzQmluZEtleSA/IHVuZGVmaW5lZCA6IGNyZWF0ZUN0b3IoZnVuYyk7XG5cbiAgICAgIGZ1bmN0aW9uIHdyYXBwZXIoKSB7XG4gICAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNDdXJyaWVkKSB7XG4gICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gZ2V0SG9sZGVyKHdyYXBwZXIpLFxuICAgICAgICAgICAgICBob2xkZXJzQ291bnQgPSBjb3VudEhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJ0aWFscykge1xuICAgICAgICAgIGFyZ3MgPSBjb21wb3NlQXJncyhhcmdzLCBwYXJ0aWFscywgaG9sZGVycywgaXNDdXJyaWVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHNSaWdodCkge1xuICAgICAgICAgIGFyZ3MgPSBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgaXNDdXJyaWVkKTtcbiAgICAgICAgfVxuICAgICAgICBsZW5ndGggLT0gaG9sZGVyc0NvdW50O1xuICAgICAgICBpZiAoaXNDdXJyaWVkICYmIGxlbmd0aCA8IGFyaXR5KSB7XG4gICAgICAgICAgdmFyIG5ld0hvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhhcmdzLCBwbGFjZWhvbGRlcik7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlY3VycnkoXG4gICAgICAgICAgICBmdW5jLCBiaXRtYXNrLCBjcmVhdGVIeWJyaWQsIHdyYXBwZXIucGxhY2Vob2xkZXIsIHRoaXNBcmcsXG4gICAgICAgICAgICBhcmdzLCBuZXdIb2xkZXJzLCBhcmdQb3MsIGFyeSwgYXJpdHkgLSBsZW5ndGhcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0aGlzQmluZGluZyA9IGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLFxuICAgICAgICAgICAgZm4gPSBpc0JpbmRLZXkgPyB0aGlzQmluZGluZ1tmdW5jXSA6IGZ1bmM7XG5cbiAgICAgICAgbGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gICAgICAgIGlmIChhcmdQb3MpIHtcbiAgICAgICAgICBhcmdzID0gcmVvcmRlcihhcmdzLCBhcmdQb3MpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRmxpcCAmJiBsZW5ndGggPiAxKSB7XG4gICAgICAgICAgYXJncy5yZXZlcnNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQXJ5ICYmIGFyeSA8IGxlbmd0aCkge1xuICAgICAgICAgIGFyZ3MubGVuZ3RoID0gYXJ5O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpIHtcbiAgICAgICAgICBmbiA9IEN0b3IgfHwgY3JlYXRlQ3Rvcihmbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmludmVydEJ5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc2V0dGVyIFRoZSBmdW5jdGlvbiB0byBzZXQgYWNjdW11bGF0b3IgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHRvSXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIHRvIHJlc29sdmUgaXRlcmF0ZWVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludmVydGVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmVydGVyKHNldHRlciwgdG9JdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZlcnRlcihvYmplY3QsIHNldHRlciwgdG9JdGVyYXRlZShpdGVyYXRlZSksIHt9KTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIG9uIHR3byB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wZXJhdG9yIFRoZSBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSB1c2VkIGZvciBgdW5kZWZpbmVkYCBhcmd1bWVudHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVNYXRoT3BlcmF0aW9uKG9wZXJhdG9yLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgb3RoZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiBvdGhlciA9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9TdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9TdHJpbmcob3RoZXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGJhc2VUb051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBvdGhlciA9IGJhc2VUb051bWJlcihvdGhlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ub3ZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGFycmF5RnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBvdmVyIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZU92ZXIoYXJyYXlGdW5jKSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oaXRlcmF0ZWVzKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGFycmF5TWFwKGl0ZXJhdGVlcywgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKTtcbiAgICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICB2YXIgdGhpc0FyZyA9IHRoaXM7XG4gICAgICAgICAgcmV0dXJuIGFycmF5RnVuYyhpdGVyYXRlZXMsIGZ1bmN0aW9uKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkoaXRlcmF0ZWUsIHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgdGhlIHBhZGRpbmcgZm9yIGBzdHJpbmdgIGJhc2VkIG9uIGBsZW5ndGhgLiBUaGUgYGNoYXJzYCBzdHJpbmdcbiAgICAgKiBpcyB0cnVuY2F0ZWQgaWYgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGV4Y2VlZHMgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVQYWRkaW5nKGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIGNoYXJzID0gY2hhcnMgPT09IHVuZGVmaW5lZCA/ICcgJyA6IGJhc2VUb1N0cmluZyhjaGFycyk7XG5cbiAgICAgIHZhciBjaGFyc0xlbmd0aCA9IGNoYXJzLmxlbmd0aDtcbiAgICAgIGlmIChjaGFyc0xlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIGNoYXJzTGVuZ3RoID8gYmFzZVJlcGVhdChjaGFycywgbGVuZ3RoKSA6IGNoYXJzO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VSZXBlYXQoY2hhcnMsIG5hdGl2ZUNlaWwobGVuZ3RoIC8gc3RyaW5nU2l6ZShjaGFycykpKTtcbiAgICAgIHJldHVybiBoYXNVbmljb2RlKGNoYXJzKVxuICAgICAgICA/IGNhc3RTbGljZShzdHJpbmdUb0FycmF5KHJlc3VsdCksIDAsIGxlbmd0aCkuam9pbignJylcbiAgICAgICAgOiByZXN1bHQuc2xpY2UoMCwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nXG4gICAgICogb2YgYHRoaXNBcmdgIGFuZCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFydGlhbHMgVGhlIGFyZ3VtZW50cyB0byBwcmVwZW5kIHRvIHRob3NlIHByb3ZpZGVkIHRvXG4gICAgICogIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVQYXJ0aWFsKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaXNCaW5kID0gYml0bWFzayAmIFdSQVBfQklORF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgYXJnc0luZGV4ID0gLTEsXG4gICAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGxlZnRJbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZWZ0TGVuZ3RoICsgYXJnc0xlbmd0aCksXG4gICAgICAgICAgICBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG5cbiAgICAgICAgd2hpbGUgKCsrbGVmdEluZGV4IDwgbGVmdExlbmd0aCkge1xuICAgICAgICAgIGFyZ3NbbGVmdEluZGV4XSA9IHBhcnRpYWxzW2xlZnRJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGFyZ3NMZW5ndGgtLSkge1xuICAgICAgICAgIGFyZ3NbbGVmdEluZGV4KytdID0gYXJndW1lbnRzWysrYXJnc0luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXBwbHkoZm4sIGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3cmFwcGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5yYW5nZWAgb3IgYF8ucmFuZ2VSaWdodGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJhbmdlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJhbmdlKGZyb21SaWdodCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHN0ZXApIHtcbiAgICAgICAgaWYgKHN0ZXAgJiYgdHlwZW9mIHN0ZXAgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RhcnQsIGVuZCwgc3RlcCkpIHtcbiAgICAgICAgICBlbmQgPSBzdGVwID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIEVuc3VyZSB0aGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbmQgPSB0b0Zpbml0ZShlbmQpO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAgPSBzdGVwID09PSB1bmRlZmluZWQgPyAoc3RhcnQgPCBlbmQgPyAxIDogLTEpIDogdG9GaW5pdGUoc3RlcCk7XG4gICAgICAgIHJldHVybiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSByZWxhdGlvbmFsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlbGF0aW9uYWwgb3BlcmF0aW9uIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24ob3BlcmF0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgICAgaWYgKCEodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnICYmIHR5cGVvZiBvdGhlciA9PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICBvdGhlciA9IHRvTnVtYmVyKG90aGVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3BlcmF0b3IodmFsdWUsIG90aGVyKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGNvbnRpbnVlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgYGZ1bmNgIHdyYXBwZXIuXG4gICAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlY3VycnkoZnVuYywgYml0bWFzaywgd3JhcEZ1bmMsIHBsYWNlaG9sZGVyLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNDdXJyeSA9IGJpdG1hc2sgJiBXUkFQX0NVUlJZX0ZMQUcsXG4gICAgICAgICAgbmV3SG9sZGVycyA9IGlzQ3VycnkgPyBob2xkZXJzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIG5ld0hvbGRlcnNSaWdodCA9IGlzQ3VycnkgPyB1bmRlZmluZWQgOiBob2xkZXJzLFxuICAgICAgICAgIG5ld1BhcnRpYWxzID0gaXNDdXJyeSA/IHBhcnRpYWxzIDogdW5kZWZpbmVkLFxuICAgICAgICAgIG5ld1BhcnRpYWxzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogcGFydGlhbHM7XG5cbiAgICAgIGJpdG1hc2sgfD0gKGlzQ3VycnkgPyBXUkFQX1BBUlRJQUxfRkxBRyA6IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKTtcbiAgICAgIGJpdG1hc2sgJj0gfihpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcgOiBXUkFQX1BBUlRJQUxfRkxBRyk7XG5cbiAgICAgIGlmICghKGJpdG1hc2sgJiBXUkFQX0NVUlJZX0JPVU5EX0ZMQUcpKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyk7XG4gICAgICB9XG4gICAgICB2YXIgbmV3RGF0YSA9IFtcbiAgICAgICAgZnVuYywgYml0bWFzaywgdGhpc0FyZywgbmV3UGFydGlhbHMsIG5ld0hvbGRlcnMsIG5ld1BhcnRpYWxzUmlnaHQsXG4gICAgICAgIG5ld0hvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5XG4gICAgICBdO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gd3JhcEZ1bmMuYXBwbHkodW5kZWZpbmVkLCBuZXdEYXRhKTtcbiAgICAgIGlmIChpc0xhemlhYmxlKGZ1bmMpKSB7XG4gICAgICAgIHNldERhdGEocmVzdWx0LCBuZXdEYXRhKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHNldFdyYXBUb1N0cmluZyhyZXN1bHQsIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLnJvdW5kYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG5hbWUgb2YgdGhlIGBNYXRoYCBtZXRob2QgdG8gdXNlIHdoZW4gcm91bmRpbmcuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcm91bmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUm91bmQobWV0aG9kTmFtZSkge1xuICAgICAgdmFyIGZ1bmMgPSBNYXRoW21ldGhvZE5hbWVdO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG51bWJlciwgcHJlY2lzaW9uKSB7XG4gICAgICAgIG51bWJlciA9IHRvTnVtYmVyKG51bWJlcik7XG4gICAgICAgIHByZWNpc2lvbiA9IHByZWNpc2lvbiA9PSBudWxsID8gMCA6IG5hdGl2ZU1pbih0b0ludGVnZXIocHJlY2lzaW9uKSwgMjkyKTtcbiAgICAgICAgaWYgKHByZWNpc2lvbiAmJiBuYXRpdmVJc0Zpbml0ZShudW1iZXIpKSB7XG4gICAgICAgICAgLy8gU2hpZnQgd2l0aCBleHBvbmVudGlhbCBub3RhdGlvbiB0byBhdm9pZCBmbG9hdGluZy1wb2ludCBpc3N1ZXMuXG4gICAgICAgICAgLy8gU2VlIFtNRE5dKGh0dHBzOi8vbWRuLmlvL3JvdW5kI0V4YW1wbGVzKSBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHZhciBwYWlyID0gKHRvU3RyaW5nKG51bWJlcikgKyAnZScpLnNwbGl0KCdlJyksXG4gICAgICAgICAgICAgIHZhbHVlID0gZnVuYyhwYWlyWzBdICsgJ2UnICsgKCtwYWlyWzFdICsgcHJlY2lzaW9uKSk7XG5cbiAgICAgICAgICBwYWlyID0gKHRvU3RyaW5nKHZhbHVlKSArICdlJykuc3BsaXQoJ2UnKTtcbiAgICAgICAgICByZXR1cm4gKyhwYWlyWzBdICsgJ2UnICsgKCtwYWlyWzFdIC0gcHJlY2lzaW9uKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmMobnVtYmVyKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBzZXQuXG4gICAgICovXG4gICAgdmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy50b1BhaXJzYCBvciBgXy50b1BhaXJzSW5gIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhaXJzIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVRvUGFpcnMoa2V5c0Z1bmMpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgdmFyIHRhZyA9IGdldFRhZyhvYmplY3QpO1xuICAgICAgICBpZiAodGFnID09IG1hcFRhZykge1xuICAgICAgICAgIHJldHVybiBtYXBUb0FycmF5KG9iamVjdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgICByZXR1cm4gc2V0VG9QYWlycyhvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXNlVG9QYWlycyhvYmplY3QsIGtleXNGdW5jKG9iamVjdCkpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBlaXRoZXIgY3VycmllcyBvciBpbnZva2VzIGBmdW5jYCB3aXRoIG9wdGlvbmFsXG4gICAgICogYHRoaXNgIGJpbmRpbmcgYW5kIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IGZ1bmMgVGhlIGZ1bmN0aW9uIG9yIG1ldGhvZCBuYW1lIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogICAgMSAtIGBfLmJpbmRgXG4gICAgICogICAgMiAtIGBfLmJpbmRLZXlgXG4gICAgICogICAgNCAtIGBfLmN1cnJ5YCBvciBgXy5jdXJyeVJpZ2h0YCBvZiBhIGJvdW5kIGZ1bmN0aW9uXG4gICAgICogICAgOCAtIGBfLmN1cnJ5YFxuICAgICAqICAgMTYgLSBgXy5jdXJyeVJpZ2h0YFxuICAgICAqICAgMzIgLSBgXy5wYXJ0aWFsYFxuICAgICAqICAgNjQgLSBgXy5wYXJ0aWFsUmlnaHRgXG4gICAgICogIDEyOCAtIGBfLnJlYXJnYFxuICAgICAqICAyNTYgLSBgXy5hcnlgXG4gICAgICogIDUxMiAtIGBfLmZsaXBgXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2hvbGRlcnNdIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FyZ1Bvc10gVGhlIGFyZ3VtZW50IHBvc2l0aW9ucyBvZiB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJ5XSBUaGUgYXJpdHkgY2FwIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmICghaXNCaW5kS2V5ICYmIHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IHBhcnRpYWxzID8gcGFydGlhbHMubGVuZ3RoIDogMDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIGJpdG1hc2sgJj0gfihXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKTtcbiAgICAgICAgcGFydGlhbHMgPSBob2xkZXJzID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgYXJ5ID0gYXJ5ID09PSB1bmRlZmluZWQgPyBhcnkgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKGFyeSksIDApO1xuICAgICAgYXJpdHkgPSBhcml0eSA9PT0gdW5kZWZpbmVkID8gYXJpdHkgOiB0b0ludGVnZXIoYXJpdHkpO1xuICAgICAgbGVuZ3RoIC09IGhvbGRlcnMgPyBob2xkZXJzLmxlbmd0aCA6IDA7XG5cbiAgICAgIGlmIChiaXRtYXNrICYgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxzUmlnaHQgPSBwYXJ0aWFscyxcbiAgICAgICAgICAgIGhvbGRlcnNSaWdodCA9IGhvbGRlcnM7XG5cbiAgICAgICAgcGFydGlhbHMgPSBob2xkZXJzID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgdmFyIGRhdGEgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBnZXREYXRhKGZ1bmMpO1xuXG4gICAgICB2YXIgbmV3RGF0YSA9IFtcbiAgICAgICAgZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCxcbiAgICAgICAgYXJnUG9zLCBhcnksIGFyaXR5XG4gICAgICBdO1xuXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBtZXJnZURhdGEobmV3RGF0YSwgZGF0YSk7XG4gICAgICB9XG4gICAgICBmdW5jID0gbmV3RGF0YVswXTtcbiAgICAgIGJpdG1hc2sgPSBuZXdEYXRhWzFdO1xuICAgICAgdGhpc0FyZyA9IG5ld0RhdGFbMl07XG4gICAgICBwYXJ0aWFscyA9IG5ld0RhdGFbM107XG4gICAgICBob2xkZXJzID0gbmV3RGF0YVs0XTtcbiAgICAgIGFyaXR5ID0gbmV3RGF0YVs5XSA9IG5ld0RhdGFbOV0gPT09IHVuZGVmaW5lZFxuICAgICAgICA/IChpc0JpbmRLZXkgPyAwIDogZnVuYy5sZW5ndGgpXG4gICAgICAgIDogbmF0aXZlTWF4KG5ld0RhdGFbOV0gLSBsZW5ndGgsIDApO1xuXG4gICAgICBpZiAoIWFyaXR5ICYmIGJpdG1hc2sgJiAoV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9DVVJSWV9SSUdIVF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9DVVJSWV9GTEFHIHwgV1JBUF9DVVJSWV9SSUdIVF9GTEFHKTtcbiAgICAgIH1cbiAgICAgIGlmICghYml0bWFzayB8fCBiaXRtYXNrID09IFdSQVBfQklORF9GTEFHKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjcmVhdGVCaW5kKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcpO1xuICAgICAgfSBlbHNlIGlmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRyB8fCBiaXRtYXNrID09IFdSQVBfQ1VSUllfUklHSFRfRkxBRykge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSk7XG4gICAgICB9IGVsc2UgaWYgKChiaXRtYXNrID09IFdSQVBfUEFSVElBTF9GTEFHIHx8IGJpdG1hc2sgPT0gKFdSQVBfQklORF9GTEFHIHwgV1JBUF9QQVJUSUFMX0ZMQUcpKSAmJiAhaG9sZGVycy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSBjcmVhdGVIeWJyaWQuYXBwbHkodW5kZWZpbmVkLCBuZXdEYXRhKTtcbiAgICAgIH1cbiAgICAgIHZhciBzZXR0ZXIgPSBkYXRhID8gYmFzZVNldERhdGEgOiBzZXREYXRhO1xuICAgICAgcmV0dXJuIHNldFdyYXBUb1N0cmluZyhzZXR0ZXIocmVzdWx0LCBuZXdEYXRhKSwgZnVuYywgYml0bWFzayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c2AgdG8gY3VzdG9taXplIGl0cyBgXy5hc3NpZ25JbmAgdXNlIHRvIGFzc2lnbiBwcm9wZXJ0aWVzXG4gICAgICogb2Ygc291cmNlIG9iamVjdHMgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdCBmb3IgYWxsIGRlc3RpbmF0aW9uIHByb3BlcnRpZXNcbiAgICAgKiB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHNvdXJjZSB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgKGVxKG9ialZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmpWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLmRlZmF1bHRzRGVlcGAgdG8gY3VzdG9taXplIGl0cyBgXy5tZXJnZWAgdXNlIHRvIG1lcmdlIHNvdXJjZVxuICAgICAqIG9iamVjdHMgaW50byBkZXN0aW5hdGlvbiBvYmplY3RzIHRoYXQgYXJlIHBhc3NlZCB0aHJ1LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBtZXJnZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgcGFyZW50IG9iamVjdCBvZiBgc3JjVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbURlZmF1bHRzTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykge1xuICAgICAgaWYgKGlzT2JqZWN0KG9ialZhbHVlKSAmJiBpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHN0YWNrLnNldChzcmNWYWx1ZSwgb2JqVmFsdWUpO1xuICAgICAgICBiYXNlTWVyZ2Uob2JqVmFsdWUsIHNyY1ZhbHVlLCB1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UsIHN0YWNrKTtcbiAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmpWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGJ5IGBfLm9taXRgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uY2xvbmVEZWVwYCB1c2UgdG8gb25seSBjbG9uZSBwbGFpblxuICAgICAqIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB1bmNsb25lZCB2YWx1ZSBvciBgdW5kZWZpbmVkYCB0byBkZWZlciBjbG9uaW5nIHRvIGBfLmNsb25lRGVlcGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tT21pdENsb25lKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNQbGFpbk9iamVjdCh2YWx1ZSkgPyB1bmRlZmluZWQgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIGFycmF5cyB3aXRoIHN1cHBvcnQgZm9yXG4gICAgICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBvdGhlciBUaGUgb3RoZXIgYXJyYXkgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBhcnJheWAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxdWFsQXJyYXlzKGFycmF5LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgICAgICBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoZXIubGVuZ3RoO1xuXG4gICAgICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgYXJyU3RhY2tlZCA9IHN0YWNrLmdldChhcnJheSk7XG4gICAgICB2YXIgb3RoU3RhY2tlZCA9IHN0YWNrLmdldChvdGhlcik7XG4gICAgICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBhcnJTdGFja2VkID09IG90aGVyICYmIG90aFN0YWNrZWQgPT0gYXJyYXk7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSB0cnVlLFxuICAgICAgICAgIHNlZW4gPSAoYml0bWFzayAmIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpID8gbmV3IFNldENhY2hlIDogdW5kZWZpbmVkO1xuXG4gICAgICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgYXJyYXkpO1xuXG4gICAgICAvLyBJZ25vcmUgbm9uLWluZGV4IHByb3BlcnRpZXMuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgICAgICB2YXIgYXJyVmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBvdGhWYWx1ZSA9IG90aGVyW2luZGV4XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBhcnJWYWx1ZSwgaW5kZXgsIG90aGVyLCBhcnJheSwgc3RhY2spXG4gICAgICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgIGlmICghYXJyYXlTb21lKG90aGVyLCBmdW5jdGlvbihvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBzZWVuLnB1c2gob3RoSW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEoXG4gICAgICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG90aGVyKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICAgICAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgIChvYmplY3QuYnl0ZU9mZnNldCAhPSBvdGhlci5ieXRlT2Zmc2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBvYmplY3QgPSBvYmplY3QuYnVmZmVyO1xuICAgICAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgY2FzZSBib29sVGFnOlxuICAgICAgICBjYXNlIGRhdGVUYWc6XG4gICAgICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgICAgIC8vIENvZXJjZSBib29sZWFucyB0byBgMWAgb3IgYDBgIGFuZCBkYXRlcyB0byBtaWxsaXNlY29uZHMuXG4gICAgICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgICAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgICAgIHJldHVybiBvYmplY3QubmFtZSA9PSBvdGhlci5uYW1lICYmIG9iamVjdC5tZXNzYWdlID09IG90aGVyLm1lc3NhZ2U7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgIC8vIENvZXJjZSByZWdleGVzIHRvIHN0cmluZ3MgYW5kIHRyZWF0IHN0cmluZ3MsIHByaW1pdGl2ZXMgYW5kIG9iamVjdHMsXG4gICAgICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgcmV0dXJuIG9iamVjdCA9PSAob3RoZXIgKyAnJyk7XG5cbiAgICAgICAgY2FzZSBtYXBUYWc6XG4gICAgICAgICAgdmFyIGNvbnZlcnQgPSBtYXBUb0FycmF5O1xuXG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICAgICAgY29udmVydCB8fCAoY29udmVydCA9IHNldFRvQXJyYXkpO1xuXG4gICAgICAgICAgaWYgKG9iamVjdC5zaXplICE9IG90aGVyLnNpemUgJiYgIWlzUGFydGlhbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN0YWNrZWQgPT0gb3RoZXI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcblxuICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZXF1YWxBcnJheXMoY29udmVydChvYmplY3QpLCBjb252ZXJ0KG90aGVyKSwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICBpZiAoc3ltYm9sVmFsdWVPZikge1xuICAgICAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gICAgICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgICAgICBvYmpQcm9wcyA9IGdldEFsbEtleXMob2JqZWN0KSxcbiAgICAgICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICAgICAgb3RoUHJvcHMgPSBnZXRBbGxLZXlzKG90aGVyKSxcbiAgICAgICAgICBvdGhMZW5ndGggPSBvdGhQcm9wcy5sZW5ndGg7XG5cbiAgICAgIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgdmFyIGtleSA9IG9ialByb3BzW2luZGV4XTtcbiAgICAgICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICB2YXIgb2JqU3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICAgICAgaWYgKG9ialN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gb2JqU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IG9iamVjdDtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB0cnVlO1xuICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gICAgICB2YXIgc2tpcEN0b3IgPSBpc1BhcnRpYWw7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IG9iakxlbmd0aCkge1xuICAgICAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuXG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIG9ialZhbHVlLCBrZXksIG90aGVyLCBvYmplY3QsIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBvYmplY3RzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgPyAob2JqVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhvYmpWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSlcbiAgICAgICAgICAgICAgOiBjb21wYXJlZFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHNraXBDdG9yIHx8IChza2lwQ3RvciA9IGtleSA9PSAnY29uc3RydWN0b3InKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgICAgIHZhciBvYmpDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yLFxuICAgICAgICAgICAgb3RoQ3RvciA9IG90aGVyLmNvbnN0cnVjdG9yO1xuXG4gICAgICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgICAgICBpZiAob2JqQ3RvciAhPSBvdGhDdG9yICYmXG4gICAgICAgICAgICAoJ2NvbnN0cnVjdG9yJyBpbiBvYmplY3QgJiYgJ2NvbnN0cnVjdG9yJyBpbiBvdGhlcikgJiZcbiAgICAgICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgICAgICB0eXBlb2Ygb3RoQ3RvciA9PSAnZnVuY3Rpb24nICYmIG90aEN0b3IgaW5zdGFuY2VvZiBvdGhDdG9yKSkge1xuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGFja1snZGVsZXRlJ10ob2JqZWN0KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCB1bmRlZmluZWQsIGZsYXR0ZW4pLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzLCBnZXRTeW1ib2xzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gICAgICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0luLCBnZXRTeW1ib2xzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgbWV0YWRhdGEgZm9yIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGdldERhdGEgPSAhbWV0YU1hcCA/IG5vb3AgOiBmdW5jdGlvbihmdW5jKSB7XG4gICAgICByZXR1cm4gbWV0YU1hcC5nZXQoZnVuYyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5hbWUgb2YgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEZ1bmNOYW1lKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSAoZnVuYy5uYW1lICsgJycpLFxuICAgICAgICAgIGFycmF5ID0gcmVhbE5hbWVzW3Jlc3VsdF0sXG4gICAgICAgICAgbGVuZ3RoID0gaGFzT3duUHJvcGVydHkuY2FsbChyZWFsTmFtZXMsIHJlc3VsdCkgPyBhcnJheS5sZW5ndGggOiAwO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGRhdGEgPSBhcnJheVtsZW5ndGhdLFxuICAgICAgICAgICAgb3RoZXJGdW5jID0gZGF0YS5mdW5jO1xuICAgICAgICBpZiAob3RoZXJGdW5jID09IG51bGwgfHwgb3RoZXJGdW5jID09IGZ1bmMpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YS5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFyZ3VtZW50IHBsYWNlaG9sZGVyIHZhbHVlIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEhvbGRlcihmdW5jKSB7XG4gICAgICB2YXIgb2JqZWN0ID0gaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gsICdwbGFjZWhvbGRlcicpID8gbG9kYXNoIDogZnVuYztcbiAgICAgIHJldHVybiBvYmplY3QucGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYXBwcm9wcmlhdGUgXCJpdGVyYXRlZVwiIGZ1bmN0aW9uLiBJZiBgXy5pdGVyYXRlZWAgaXMgY3VzdG9taXplZCxcbiAgICAgKiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1c3RvbSBtZXRob2QsIG90aGVyd2lzZSBpdCByZXR1cm5zIGBiYXNlSXRlcmF0ZWVgLlxuICAgICAqIElmIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQsIHRoZSBjaG9zZW4gZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIHRoZW0gYW5kXG4gICAgICogaXRzIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBbdmFsdWVdIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiB0aGUgY3JlYXRlZCBpdGVyYXRlZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNob3NlbiBmdW5jdGlvbiBvciBpdHMgcmVzdWx0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEl0ZXJhdGVlKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaC5pdGVyYXRlZSB8fCBpdGVyYXRlZTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCA9PT0gaXRlcmF0ZWUgPyBiYXNlSXRlcmF0ZWUgOiByZXN1bHQ7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IHJlc3VsdChhcmd1bWVudHNbMF0sIGFyZ3VtZW50c1sxXSkgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gICAgICB2YXIgZGF0YSA9IG1hcC5fX2RhdGFfXztcbiAgICAgIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgICAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgICAgICA6IGRhdGEubWFwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHByb3BlcnR5IG5hbWVzLCB2YWx1ZXMsIGFuZCBjb21wYXJlIGZsYWdzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBrZXlzKG9iamVjdCksXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSByZXN1bHRbbGVuZ3RoXSxcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgcmVzdWx0W2xlbmd0aF0gPSBba2V5LCB2YWx1ZSwgaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gICAgICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICAgICAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgaWYgKHVubWFza2VkKSB7XG4gICAgICAgIGlmIChpc093bikge1xuICAgICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gICAgICovXG4gICAgdmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24oc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gICAgICovXG4gICAgdmFyIGdldFN5bWJvbHNJbiA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICB3aGlsZSAob2JqZWN0KSB7XG4gICAgICAgIGFycmF5UHVzaChyZXN1bHQsIGdldFN5bWJvbHMob2JqZWN0KSk7XG4gICAgICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqL1xuICAgIHZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4gICAgLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuICAgIGlmICgoRGF0YVZpZXcgJiYgZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSAhPSBkYXRhVmlld1RhZykgfHxcbiAgICAgICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgICAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgICAgIChTZXQgJiYgZ2V0VGFnKG5ldyBTZXQpICE9IHNldFRhZykgfHxcbiAgICAgICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICAgICAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgICAgICBpZiAoY3RvclN0cmluZykge1xuICAgICAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZpZXcsIGFwcGx5aW5nIGFueSBgdHJhbnNmb3Jtc2AgdG8gdGhlIGBzdGFydGAgYW5kIGBlbmRgIHBvc2l0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgdmlldy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdHJhbnNmb3JtcyBUaGUgdHJhbnNmb3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSB2aWV3LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGBzdGFydGAgYW5kIGBlbmRgXG4gICAgICogIHBvc2l0aW9ucyBvZiB0aGUgdmlldy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRWaWV3KHN0YXJ0LCBlbmQsIHRyYW5zZm9ybXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHRyYW5zZm9ybXMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZGF0YSA9IHRyYW5zZm9ybXNbaW5kZXhdLFxuICAgICAgICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICAgICAgICBzd2l0Y2ggKGRhdGEudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2Ryb3AnOiAgICAgIHN0YXJ0ICs9IHNpemU7IGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2Ryb3BSaWdodCc6IGVuZCAtPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICd0YWtlJzogICAgICBlbmQgPSBuYXRpdmVNaW4oZW5kLCBzdGFydCArIHNpemUpOyBicmVhaztcbiAgICAgICAgICBjYXNlICd0YWtlUmlnaHQnOiBzdGFydCA9IG5hdGl2ZU1heChzdGFydCwgZW5kIC0gc2l6ZSk7IGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyAnc3RhcnQnOiBzdGFydCwgJ2VuZCc6IGVuZCB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIHdyYXBwZXIgZGV0YWlscyBmcm9tIHRoZSBgc291cmNlYCBib2R5IGNvbW1lbnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd3JhcHBlciBkZXRhaWxzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldFdyYXBEZXRhaWxzKHNvdXJjZSkge1xuICAgICAgdmFyIG1hdGNoID0gc291cmNlLm1hdGNoKHJlV3JhcERldGFpbHMpO1xuICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0uc3BsaXQocmVTcGxpdERldGFpbHMpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYXNGdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjayBwcm9wZXJ0aWVzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzUGF0aChvYmplY3QsIHBhdGgsIGhhc0Z1bmMpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKTtcbiAgICAgICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBsZW5ndGggPSBvYmplY3QgPT0gbnVsbCA/IDAgOiBvYmplY3QubGVuZ3RoO1xuICAgICAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAgICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBhcnJheSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lQXJyYXkoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IGFycmF5LmNvbnN0cnVjdG9yKGxlbmd0aCk7XG5cbiAgICAgIC8vIEFkZCBwcm9wZXJ0aWVzIGFzc2lnbmVkIGJ5IGBSZWdFeHAjZXhlY2AuXG4gICAgICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgICAgICByZXN1bHQuaW5kZXggPSBhcnJheS5pbmRleDtcbiAgICAgICAgcmVzdWx0LmlucHV0ID0gYXJyYXkuaW5wdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgICAgIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gb2JqZWN0IGNsb25lIGJhc2VkIG9uIGl0cyBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAgICAgKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE1hcGAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgYFNldGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICAgICAgdmFyIEN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBib29sVGFnOlxuICAgICAgICBjYXNlIGRhdGVUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKCtvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgZmxvYXQzMlRhZzogY2FzZSBmbG9hdDY0VGFnOlxuICAgICAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lVHlwZWRBcnJheShvYmplY3QsIGlzRGVlcCk7XG5cbiAgICAgICAgY2FzZSBtYXBUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgICAgICBjYXNlIHJlZ2V4cFRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0cyB3cmFwcGVyIGBkZXRhaWxzYCBpbiBhIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgYHNvdXJjZWAgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSBUaGUgc291cmNlIHRvIG1vZGlmeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IGRldGFpbHMgVGhlIGRldGFpbHMgdG8gaW5zZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHNvdXJjZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIGRldGFpbHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBkZXRhaWxzLmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICB9XG4gICAgICB2YXIgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGRldGFpbHNbbGFzdEluZGV4XSA9IChsZW5ndGggPiAxID8gJyYgJyA6ICcnKSArIGRldGFpbHNbbGFzdEluZGV4XTtcbiAgICAgIGRldGFpbHMgPSBkZXRhaWxzLmpvaW4obGVuZ3RoID4gMiA/ICcsICcgOiAnICcpO1xuICAgICAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKHJlV3JhcENvbW1lbnQsICd7XFxuLyogW3dyYXBwZWQgd2l0aCAnICsgZGV0YWlscyArICddICovXFxuJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZsYXR0ZW5hYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSB8fFxuICAgICAgICAhIShzcHJlYWRhYmxlU3ltYm9sICYmIHZhbHVlICYmIHZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCA9PSBudWxsID8gTUFYX1NBRkVfSU5URUdFUiA6IGxlbmd0aDtcblxuICAgICAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAgICAgKHR5cGUgIT0gJ3N5bWJvbCcgJiYgcmVJc1VpbnQudGVzdCh2YWx1ZSkpKSAmJlxuICAgICAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICAgICAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICAgICApIHtcbiAgICAgICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNLZXkodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICAgICAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlSXNQbGFpblByb3AudGVzdCh2YWx1ZSkgfHwgIXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKSB8fFxuICAgICAgICAob2JqZWN0ICE9IG51bGwgJiYgdmFsdWUgaW4gT2JqZWN0KG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICAgICAgOiAodmFsdWUgPT09IG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBoYXMgYSBsYXp5IGNvdW50ZXJwYXJ0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMYXppYWJsZShmdW5jKSB7XG4gICAgICB2YXIgZnVuY05hbWUgPSBnZXRGdW5jTmFtZShmdW5jKSxcbiAgICAgICAgICBvdGhlciA9IGxvZGFzaFtmdW5jTmFtZV07XG5cbiAgICAgIGlmICh0eXBlb2Ygb3RoZXIgIT0gJ2Z1bmN0aW9uJyB8fCAhKGZ1bmNOYW1lIGluIExhenlXcmFwcGVyLnByb3RvdHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKGZ1bmMgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIGRhdGEgPSBnZXREYXRhKG90aGVyKTtcbiAgICAgIHJldHVybiAhIWRhdGEgJiYgZnVuYyA9PT0gZGF0YVswXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gICAgICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgZnVuY2AgaXMgY2FwYWJsZSBvZiBiZWluZyBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2FibGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICB2YXIgaXNNYXNrYWJsZSA9IGNvcmVKc0RhdGEgPyBpc0Z1bmN0aW9uIDogc3R1YkZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICAgICAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICAgICAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gICAgICogIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlICYmICFpc09iamVjdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBtYXRjaGVzUHJvcGVydHlgIGZvciBzb3VyY2UgdmFsdWVzIHN1aXRhYmxlXG4gICAgICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShrZXksIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAgICAgKHNyY1ZhbHVlICE9PSB1bmRlZmluZWQgfHwgKGtleSBpbiBPYmplY3Qob2JqZWN0KSkpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gICAgICogY2FjaGUgd2hlbiBpdCBleGNlZWRzIGBNQVhfTUVNT0laRV9TSVpFYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lbW9pemVDYXBwZWQoZnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfSk7XG5cbiAgICAgIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWVyZ2VzIHRoZSBmdW5jdGlvbiBtZXRhZGF0YSBvZiBgc291cmNlYCBpbnRvIGBkYXRhYC5cbiAgICAgKlxuICAgICAqIE1lcmdpbmcgbWV0YWRhdGEgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHdyYXBwZXJzIHVzZWQgdG8gaW52b2tlIGEgZnVuY3Rpb24uXG4gICAgICogVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIG1ldGhvZHMgbGlrZSBgXy5iaW5kYCwgYF8uY3VycnlgLCBhbmQgYF8ucGFydGlhbGBcbiAgICAgKiBtYXkgYmUgYXBwbGllZCByZWdhcmRsZXNzIG9mIGV4ZWN1dGlvbiBvcmRlci4gTWV0aG9kcyBsaWtlIGBfLmFyeWAgYW5kXG4gICAgICogYF8ucmVhcmdgIG1vZGlmeSBmdW5jdGlvbiBhcmd1bWVudHMsIG1ha2luZyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmVcbiAgICAgKiBleGVjdXRlZCBpbXBvcnRhbnQsIHByZXZlbnRpbmcgdGhlIG1lcmdpbmcgb2YgbWV0YWRhdGEuIEhvd2V2ZXIsIHdlIG1ha2VcbiAgICAgKiBhbiBleGNlcHRpb24gZm9yIGEgc2FmZSBjb21iaW5lZCBjYXNlIHdoZXJlIGN1cnJpZWQgZnVuY3Rpb25zIGhhdmUgYF8uYXJ5YFxuICAgICAqIGFuZCBvciBgXy5yZWFyZ2AgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gZGF0YSBUaGUgZGVzdGluYXRpb24gbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBzb3VyY2UgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBkYXRhYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZXJnZURhdGEoZGF0YSwgc291cmNlKSB7XG4gICAgICB2YXIgYml0bWFzayA9IGRhdGFbMV0sXG4gICAgICAgICAgc3JjQml0bWFzayA9IHNvdXJjZVsxXSxcbiAgICAgICAgICBuZXdCaXRtYXNrID0gYml0bWFzayB8IHNyY0JpdG1hc2ssXG4gICAgICAgICAgaXNDb21tb24gPSBuZXdCaXRtYXNrIDwgKFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHIHwgV1JBUF9BUllfRkxBRyk7XG5cbiAgICAgIHZhciBpc0NvbWJvID1cbiAgICAgICAgKChzcmNCaXRtYXNrID09IFdSQVBfQVJZX0ZMQUcpICYmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRykpIHx8XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX1JFQVJHX0ZMQUcpICYmIChkYXRhWzddLmxlbmd0aCA8PSBzb3VyY2VbOF0pKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX1JFQVJHX0ZMQUcpKSAmJiAoc291cmNlWzddLmxlbmd0aCA8PSBzb3VyY2VbOF0pICYmIChiaXRtYXNrID09IFdSQVBfQ1VSUllfRkxBRykpO1xuXG4gICAgICAvLyBFeGl0IGVhcmx5IGlmIG1ldGFkYXRhIGNhbid0IGJlIG1lcmdlZC5cbiAgICAgIGlmICghKGlzQ29tbW9uIHx8IGlzQ29tYm8pKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgdGhpc0FyZ2AgaWYgYXZhaWxhYmxlLlxuICAgICAgaWYgKHNyY0JpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICBkYXRhWzJdID0gc291cmNlWzJdO1xuICAgICAgICAvLyBTZXQgd2hlbiBjdXJyeWluZyBhIGJvdW5kIGZ1bmN0aW9uLlxuICAgICAgICBuZXdCaXRtYXNrIHw9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyA/IDAgOiBXUkFQX0NVUlJZX0JPVU5EX0ZMQUc7XG4gICAgICB9XG4gICAgICAvLyBDb21wb3NlIHBhcnRpYWwgYXJndW1lbnRzLlxuICAgICAgdmFyIHZhbHVlID0gc291cmNlWzNdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHZhciBwYXJ0aWFscyA9IGRhdGFbM107XG4gICAgICAgIGRhdGFbM10gPSBwYXJ0aWFscyA/IGNvbXBvc2VBcmdzKHBhcnRpYWxzLCB2YWx1ZSwgc291cmNlWzRdKSA6IHZhbHVlO1xuICAgICAgICBkYXRhWzRdID0gcGFydGlhbHMgPyByZXBsYWNlSG9sZGVycyhkYXRhWzNdLCBQTEFDRUhPTERFUikgOiBzb3VyY2VbNF07XG4gICAgICB9XG4gICAgICAvLyBDb21wb3NlIHBhcnRpYWwgcmlnaHQgYXJndW1lbnRzLlxuICAgICAgdmFsdWUgPSBzb3VyY2VbNV07XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgcGFydGlhbHMgPSBkYXRhWzVdO1xuICAgICAgICBkYXRhWzVdID0gcGFydGlhbHMgPyBjb21wb3NlQXJnc1JpZ2h0KHBhcnRpYWxzLCB2YWx1ZSwgc291cmNlWzZdKSA6IHZhbHVlO1xuICAgICAgICBkYXRhWzZdID0gcGFydGlhbHMgPyByZXBsYWNlSG9sZGVycyhkYXRhWzVdLCBQTEFDRUhPTERFUikgOiBzb3VyY2VbNl07XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcmdQb3NgIGlmIGF2YWlsYWJsZS5cbiAgICAgIHZhbHVlID0gc291cmNlWzddO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGRhdGFbN10gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyeWAgaWYgaXQncyBzbWFsbGVyLlxuICAgICAgaWYgKHNyY0JpdG1hc2sgJiBXUkFQX0FSWV9GTEFHKSB7XG4gICAgICAgIGRhdGFbOF0gPSBkYXRhWzhdID09IG51bGwgPyBzb3VyY2VbOF0gOiBuYXRpdmVNaW4oZGF0YVs4XSwgc291cmNlWzhdKTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGFyaXR5YCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgICAgaWYgKGRhdGFbOV0gPT0gbnVsbCkge1xuICAgICAgICBkYXRhWzldID0gc291cmNlWzldO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgZnVuY2AgYW5kIG1lcmdlIGJpdG1hc2tzLlxuICAgICAgZGF0YVswXSA9IHNvdXJjZVswXTtcbiAgICAgIGRhdGFbMV0gPSBuZXdCaXRtYXNrO1xuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAgICAgKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKG9iamVjdCAhPSBudWxsKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICAgICAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgcGFyZW50IHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhdGggVGhlIHBhdGggdG8gZ2V0IHRoZSBwYXJlbnQgdmFsdWUgb2YuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHBhcmVudCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYXJlbnQob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gcGF0aC5sZW5ndGggPCAyID8gb2JqZWN0IDogYmFzZUdldChvYmplY3QsIGJhc2VTbGljZShwYXRoLCAwLCAtMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlb3JkZXIgYGFycmF5YCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBpbmRleGVzIHdoZXJlIHRoZSBlbGVtZW50IGF0XG4gICAgICogdGhlIGZpcnN0IGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBmaXJzdCBlbGVtZW50LCB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBzZWNvbmQgaW5kZXggaXMgYXNzaWduZWQgYXMgdGhlIHNlY29uZCBlbGVtZW50LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byByZW9yZGVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGluZGV4ZXMgVGhlIGFycmFuZ2VkIGFycmF5IGluZGV4ZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVvcmRlcihhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4oaW5kZXhlcy5sZW5ndGgsIGFyckxlbmd0aCksXG4gICAgICAgICAgb2xkQXJyYXkgPSBjb3B5QXJyYXkoYXJyYXkpO1xuXG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBhcnJheVtsZW5ndGhdID0gaXNJbmRleChpbmRleCwgYXJyTGVuZ3RoKSA/IG9sZEFycmF5W2luZGV4XSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhZmVHZXQob2JqZWN0LCBrZXkpIHtcbiAgICAgIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmplY3Rba2V5XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgdGhpcyBmdW5jdGlvbiBiZWNvbWVzIGhvdCwgaS5lLiBpcyBpbnZva2VkIGEgbG90IGluIGEgc2hvcnRcbiAgICAgKiBwZXJpb2Qgb2YgdGltZSwgaXQgd2lsbCB0cmlwIGl0cyBicmVha2VyIGFuZCB0cmFuc2l0aW9uIHRvIGFuIGlkZW50aXR5XG4gICAgICogZnVuY3Rpb24gdG8gYXZvaWQgZ2FyYmFnZSBjb2xsZWN0aW9uIHBhdXNlcyBpbiBWOC4gU2VlXG4gICAgICogW1Y4IGlzc3VlIDIwNzBdKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTIwNzApXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXREYXRhID0gc2hvcnRPdXQoYmFzZVNldERhdGEpO1xuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYHNldFRpbWVvdXRgXShodHRwczovL21kbi5pby9zZXRUaW1lb3V0KS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgdmFyIHNldFRpbWVvdXQgPSBjdHhTZXRUaW1lb3V0IHx8IGZ1bmN0aW9uKGZ1bmMsIHdhaXQpIHtcbiAgICAgIHJldHVybiByb290LnNldFRpbWVvdXQoZnVuYywgd2FpdCk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIHNldFRvU3RyaW5nID0gc2hvcnRPdXQoYmFzZVNldFRvU3RyaW5nKTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGB3cmFwcGVyYCB0byBtaW1pYyB0aGUgc291cmNlIG9mIGByZWZlcmVuY2VgXG4gICAgICogd2l0aCB3cmFwcGVyIGRldGFpbHMgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIHNvdXJjZSBib2R5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB3cmFwcGVyIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVmZXJlbmNlIFRoZSByZWZlcmVuY2UgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYHdyYXBwZXJgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdyYXBUb1N0cmluZyh3cmFwcGVyLCByZWZlcmVuY2UsIGJpdG1hc2spIHtcbiAgICAgIHZhciBzb3VyY2UgPSAocmVmZXJlbmNlICsgJycpO1xuICAgICAgcmV0dXJuIHNldFRvU3RyaW5nKHdyYXBwZXIsIGluc2VydFdyYXBEZXRhaWxzKHNvdXJjZSwgdXBkYXRlV3JhcERldGFpbHMoZ2V0V3JhcERldGFpbHMoc291cmNlKSwgYml0bWFzaykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAgICAgKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAgICAgKiBtaWxsaXNlY29uZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaG9ydE91dChmdW5jKSB7XG4gICAgICB2YXIgY291bnQgPSAwLFxuICAgICAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb3VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2h1ZmZsZWAgd2hpY2ggbXV0YXRlcyBhbmQgc2V0cyB0aGUgc2l6ZSBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2h1ZmZsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9YXJyYXkubGVuZ3RoXSBUaGUgc2l6ZSBvZiBgYXJyYXlgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNodWZmbGVTZWxmKGFycmF5LCBzaXplKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcblxuICAgICAgc2l6ZSA9IHNpemUgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHNpemU7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IHNpemUpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBiYXNlUmFuZG9tKGluZGV4LCBsYXN0SW5kZXgpLFxuICAgICAgICAgICAgdmFsdWUgPSBhcnJheVtyYW5kXTtcblxuICAgICAgICBhcnJheVtyYW5kXSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICBhcnJheS5sZW5ndGggPSBzaXplO1xuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGEgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqL1xuICAgIHZhciBzdHJpbmdUb1BhdGggPSBtZW1vaXplQ2FwcGVkKGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgICAgIH1cbiAgICAgIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocXVvdGUgPyBzdWJTdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsICckMScpIDogKG51bWJlciB8fCBtYXRjaCkpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyBrZXkgaWYgaXQncyBub3QgYSBzdHJpbmcgb3Igc3ltYm9sLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9LZXkodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gICAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gICAgICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHdyYXBwZXIgYGRldGFpbHNgIGJhc2VkIG9uIGBiaXRtYXNrYCBmbGFncy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGV0YWlsc2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlV3JhcERldGFpbHMoZGV0YWlscywgYml0bWFzaykge1xuICAgICAgYXJyYXlFYWNoKHdyYXBGbGFncywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICB2YXIgdmFsdWUgPSAnXy4nICsgcGFpclswXTtcbiAgICAgICAgaWYgKChiaXRtYXNrICYgcGFpclsxXSkgJiYgIWFycmF5SW5jbHVkZXMoZGV0YWlscywgdmFsdWUpKSB7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZGV0YWlscy5zb3J0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB3cmFwcGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHdyYXBwZXIgVGhlIHdyYXBwZXIgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHdyYXBwZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNsb25lKHdyYXBwZXIpIHtcbiAgICAgIGlmICh3cmFwcGVyIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuIHdyYXBwZXIuY2xvbmUoKTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVyLl9fd3JhcHBlZF9fLCB3cmFwcGVyLl9fY2hhaW5fXyk7XG4gICAgICByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkod3JhcHBlci5fX2FjdGlvbnNfXyk7XG4gICAgICByZXN1bHQuX19pbmRleF9fICA9IHdyYXBwZXIuX19pbmRleF9fO1xuICAgICAgcmVzdWx0Ll9fdmFsdWVzX18gPSB3cmFwcGVyLl9fdmFsdWVzX187XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgc3BsaXQgaW50byBncm91cHMgdGhlIGxlbmd0aCBvZiBgc2l6ZWAuXG4gICAgICogSWYgYGFycmF5YCBjYW4ndCBiZSBzcGxpdCBldmVubHksIHRoZSBmaW5hbCBjaHVuayB3aWxsIGJlIHRoZSByZW1haW5pbmdcbiAgICAgKiBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc2l6ZT0xXSBUaGUgbGVuZ3RoIG9mIGVhY2ggY2h1bmtcbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNodW5rcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMik7XG4gICAgICogLy8gPT4gW1snYScsICdiJ10sIFsnYycsICdkJ11dXG4gICAgICpcbiAgICAgKiBfLmNodW5rKFsnYScsICdiJywgJ2MnLCAnZCddLCAzKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InLCAnYyddLCBbJ2QnXV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjaHVuayhhcnJheSwgc2l6ZSwgZ3VhcmQpIHtcbiAgICAgIGlmICgoZ3VhcmQgPyBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgc2l6ZSwgZ3VhcmQpIDogc2l6ZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBzaXplID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpemUgPSBuYXRpdmVNYXgodG9JbnRlZ2VyKHNpemUpLCAwKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoIHx8IHNpemUgPCAxKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KG5hdGl2ZUNlaWwobGVuZ3RoIC8gc2l6ZSkpO1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gYmFzZVNsaWNlKGFycmF5LCBpbmRleCwgKGluZGV4ICs9IHNpemUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSB3aXRoIGFsbCBmYWxzZXkgdmFsdWVzIHJlbW92ZWQuIFRoZSB2YWx1ZXMgYGZhbHNlYCwgYG51bGxgLFxuICAgICAqIGAwYCwgYFwiXCJgLCBgdW5kZWZpbmVkYCwgYW5kIGBOYU5gIGFyZSBmYWxzZXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY29tcGFjdChbMCwgMSwgZmFsc2UsIDIsICcnLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFjdChhcnJheSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgYXJyYXkgY29uY2F0ZW5hdGluZyBgYXJyYXlgIHdpdGggYW55IGFkZGl0aW9uYWwgYXJyYXlzXG4gICAgICogYW5kL29yIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb25jYXRlbmF0ZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgY29uY2F0ZW5hdGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMV07XG4gICAgICogdmFyIG90aGVyID0gXy5jb25jYXQoYXJyYXksIDIsIFszXSwgW1s0XV0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob3RoZXIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCBbNF1dXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uY2F0KCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgYXJncyA9IEFycmF5KGxlbmd0aCAtIDEpLFxuICAgICAgICAgIGFycmF5ID0gYXJndW1lbnRzWzBdLFxuICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICBhcmdzW2luZGV4IC0gMV0gPSBhcmd1bWVudHNbaW5kZXhdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5UHVzaChpc0FycmF5KGFycmF5KSA/IGNvcHlBcnJheShhcnJheSkgOiBbYXJyYXldLCBiYXNlRmxhdHRlbihhcmdzLCAxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBgYXJyYXlgIHZhbHVlcyBub3QgaW5jbHVkZWQgaW4gdGhlIG90aGVyIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy53aXRob3V0LCBfLnhvclxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpZmZlcmVuY2UoWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGlmZmVyZW5jZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgYW5kIGB2YWx1ZXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbEJ5YCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpZmZlcmVuY2VCeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kaWZmZXJlbmNlQnkoW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCBbeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2VCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QodmFsdWVzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAgdG8gYHZhbHVlc2AuIFRoZSBvcmRlciBhbmRcbiAgICAgKiByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvclxuICAgICAqIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsQWxsV2l0aGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICpcbiAgICAgKiBfLmRpZmZlcmVuY2VXaXRoKG9iamVjdHMsIFt7ICd4JzogMSwgJ3knOiAyIH1dLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIGRpZmZlcmVuY2VXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoY29tcGFyYXRvcikpIHtcbiAgICAgICAgY29tcGFyYXRvciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRyb3AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGRyb3AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCAwLCBuIDwgMCA/IDAgOiBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBlbmQuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0V2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCB0cnVlLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGV4Y2x1ZGluZyBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKiBFbGVtZW50cyBhcmUgZHJvcHBlZCB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkcm9wV2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCB0cnVlKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbGxzIGVsZW1lbnRzIG9mIGBhcnJheWAgd2l0aCBgdmFsdWVgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdFxuICAgICAqIGluY2x1ZGluZywgYGVuZGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZmlsbCBgYXJyYXlgIHdpdGguXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLmZpbGwoYXJyYXksICdhJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYScsICdhJywgJ2EnXVxuICAgICAqXG4gICAgICogXy5maWxsKEFycmF5KDMpLCAyKTtcbiAgICAgKiAvLyA9PiBbMiwgMiwgMl1cbiAgICAgKlxuICAgICAqIF8uZmlsbChbNCwgNiwgOCwgMTBdLCAnKicsIDEsIDMpO1xuICAgICAqIC8vID0+IFs0LCAnKicsICcqJywgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsbChhcnJheSwgdmFsdWUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCAmJiB0eXBlb2Ygc3RhcnQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHZhbHVlLCBzdGFydCkpIHtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICBlbmQgPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFxuICAgICAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZm91bmQgZWxlbWVudCwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdiYXJuZXknOyB9KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ID09IG51bGwgPyAwIDogdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHNcbiAgICAgKiBvZiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLnVzZXIgPT0gJ3BlYmJsZXMnOyB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kTGFzdEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGggLSAxO1xuICAgICAgaWYgKGZyb21JbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGluZGV4ID0gdG9JbnRlZ2VyKGZyb21JbmRleCk7XG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4IDwgMFxuICAgICAgICAgID8gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKVxuICAgICAgICAgIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlRmluZEluZGV4KGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmxhdHRlbnMgYGFycmF5YCBhIHNpbmdsZSBsZXZlbCBkZWVwLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbihhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCAxKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlZXAoWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgNCwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVlcChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VGbGF0dGVuKGFycmF5LCBJTkZJTklUWSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVuIGBhcnJheWAgdXAgdG8gYGRlcHRoYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVwdGg9MV0gVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIFsyLCBbMywgWzRdXSwgNV1dO1xuICAgICAqXG4gICAgICogXy5mbGF0dGVuRGVwdGgoYXJyYXksIDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW5EZXB0aChhcnJheSwgZGVwdGgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKGFycmF5LCBkZXB0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8udG9QYWlyc2A7IHRoaXMgbWV0aG9kIHJldHVybnMgYW4gb2JqZWN0IGNvbXBvc2VkXG4gICAgICogZnJvbSBrZXktdmFsdWUgYHBhaXJzYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mcm9tUGFpcnMoW1snYScsIDFdLCBbJ2InLCAyXV0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZyb21QYWlycyhwYWlycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGFpcnMgPT0gbnVsbCA/IDAgOiBwYWlycy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICByZXN1bHRbcGFpclswXV0gPSBwYWlyWzFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgZmlyc3RcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5oZWFkKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogXy5oZWFkKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoZWFkKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBhcnJheVswXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBgdmFsdWVgIGlzIGZvdW5kIGluIGBhcnJheWBcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gSWYgYGZyb21JbmRleGAgaXMgbmVnYXRpdmUsIGl0J3MgdXNlZCBhcyB0aGVcbiAgICAgKiBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluZGV4T2YoWzEsIDIsIDEsIDJdLCAyKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBTZWFyY2ggZnJvbSB0aGUgYGZyb21JbmRleGAuXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgYnV0IHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5pdGlhbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRpYWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDAsIC0xKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiBhbGwgZ2l2ZW4gYXJyYXlzXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMl1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcbiAgICAgIHJldHVybiAobWFwcGVkLmxlbmd0aCAmJiBtYXBwZWRbMF0gPT09IGFycmF5c1swXSlcbiAgICAgICAgPyBiYXNlSW50ZXJzZWN0aW9uKG1hcHBlZClcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uaW50ZXJzZWN0aW9uQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxIH1dXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgaWYgKGl0ZXJhdGVlID09PSBsYXN0KG1hcHBlZCkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYXBwZWQucG9wKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW50ZXJzZWN0aW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzXG4gICAgICogb2YgcmVzdWx0IHZhbHVlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBjb21wYXJhdG9yIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgaW50ZXJzZWN0aW5nIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqIHZhciBvdGhlcnMgPSBbeyAneCc6IDEsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5pbnRlcnNlY3Rpb25XaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25XaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKSxcbiAgICAgICAgICBtYXBwZWQgPSBhcnJheU1hcChhcnJheXMsIGNhc3RBcnJheUxpa2VPYmplY3QpO1xuXG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBtYXBwZWQucG9wKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGFsbCBlbGVtZW50cyBpbiBgYXJyYXlgIGludG8gYSBzdHJpbmcgc2VwYXJhdGVkIGJ5IGBzZXBhcmF0b3JgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbnZlcnQuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzZXBhcmF0b3I9JywnXSBUaGUgZWxlbWVudCBzZXBhcmF0b3IuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgam9pbmVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5qb2luKFsnYScsICdiJywgJ2MnXSwgJ34nKTtcbiAgICAgKiAvLyA9PiAnYX5ifmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gam9pbihhcnJheSwgc2VwYXJhdG9yKSB7XG4gICAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/ICcnIDogbmF0aXZlSm9pbi5jYWxsKGFycmF5LCBzZXBhcmF0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3QoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgYXJyYXlgIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9YXJyYXkubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8ubGFzdEluZGV4T2YoWzEsIDIsIDEsIDJdLCAyLCAyKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGFzdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGxlbmd0aDtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGluZGV4IDwgMCA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCkgOiBuYXRpdmVNaW4oaW5kZXgsIGxlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgICAgICA/IHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpXG4gICAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBpbmRleCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZWxlbWVudCBhdCBpbmRleCBgbmAgb2YgYGFycmF5YC4gSWYgYG5gIGlzIG5lZ2F0aXZlLCB0aGUgbnRoXG4gICAgICogZWxlbWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2QnXTtcbiAgICAgKlxuICAgICAqIF8ubnRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiAnYidcbiAgICAgKlxuICAgICAqIF8ubnRoKGFycmF5LCAtMik7XG4gICAgICogLy8gPT4gJ2MnO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aChhcnJheSwgbikge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZU50aChhcnJheSwgdG9JbnRlZ2VyKG4pKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBnaXZlbiB2YWx1ZXMgZnJvbSBgYXJyYXlgIHVzaW5nXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLndpdGhvdXRgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuIFVzZSBgXy5yZW1vdmVgXG4gICAgICogdG8gcmVtb3ZlIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgcHJlZGljYXRlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2EnLCAnYicsICdjJ107XG4gICAgICpcbiAgICAgKiBfLnB1bGwoYXJyYXksICdhJywgJ2MnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIHZhciBwdWxsID0gYmFzZVJlc3QocHVsbEFsbCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYW4gYXJyYXkgb2YgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2EnLCAnYicsICdjJywgJ2EnLCAnYicsICdjJ107XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGwoYXJyYXksIFsnYScsICdjJ10pO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2InLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbChhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucHVsbEFsbGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgYW5kIGB2YWx1ZXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb25cbiAgICAgKiBieSB3aGljaCB0aGV5J3JlIGNvbXBhcmVkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZGlmZmVyZW5jZUJ5YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEgfSwgeyAneCc6IDIgfSwgeyAneCc6IDMgfSwgeyAneCc6IDEgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxCeShhcnJheSwgW3sgJ3gnOiAxIH0sIHsgJ3gnOiAzIH1dLCAneCcpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwdWxsQWxsQnkoYXJyYXksIHZhbHVlcywgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAgdG8gYHZhbHVlc2AuIFRoZSBjb21wYXJhdG9yIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VXaXRoYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAzLCAneSc6IDQgfSwgeyAneCc6IDUsICd5JzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ucHVsbEFsbFdpdGgoYXJyYXksIFt7ICd4JzogMywgJ3knOiA0IH1dLCBfLmlzRXF1YWwpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogNSwgJ3knOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbFdpdGgoYXJyYXksIHZhbHVlcywgY29tcGFyYXRvcikge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcywgdW5kZWZpbmVkLCBjb21wYXJhdG9yKVxuICAgICAgICA6IGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgZWxlbWVudHMgZnJvbSBgYXJyYXlgIGNvcnJlc3BvbmRpbmcgdG8gYGluZGV4ZXNgIGFuZCByZXR1cm5zIGFuXG4gICAgICogYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uYXRgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7Li4uKG51bWJlcnxudW1iZXJbXSl9IFtpbmRleGVzXSBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICogdmFyIHB1bGxlZCA9IF8ucHVsbEF0KGFycmF5LCBbMSwgM10pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYScsICdjJ11cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKHB1bGxlZCk7XG4gICAgICogLy8gPT4gWydiJywgJ2QnXVxuICAgICAqL1xuICAgIHZhciBwdWxsQXQgPSBmbGF0UmVzdChmdW5jdGlvbihhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGJhc2VBdChhcnJheSwgaW5kZXhlcyk7XG5cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGFycmF5TWFwKGluZGV4ZXMsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpc0luZGV4KGluZGV4LCBsZW5ndGgpID8gK2luZGV4IDogaW5kZXg7XG4gICAgICB9KS5zb3J0KGNvbXBhcmVBc2NlbmRpbmcpKTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gYGFycmF5YCB0aGF0IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvclxuICAgICAqIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRoZSByZW1vdmVkIGVsZW1lbnRzLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5maWx0ZXJgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuIFVzZSBgXy5wdWxsYFxuICAgICAqIHRvIHB1bGwgZWxlbWVudHMgZnJvbSBhbiBhcnJheSBieSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzLCA0XTtcbiAgICAgKiB2YXIgZXZlbnMgPSBfLnJlbW92ZShhcnJheSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDNdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhldmVucyk7XG4gICAgICogLy8gPT4gWzIsIDRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVtb3ZlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluZGV4ZXMgPSBbXSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHByZWRpY2F0ZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgaW5kZXhlcy5wdXNoKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIGBhcnJheWAgc28gdGhhdCB0aGUgZmlyc3QgZWxlbWVudCBiZWNvbWVzIHRoZSBsYXN0LCB0aGUgc2Vjb25kXG4gICAgICogZWxlbWVudCBiZWNvbWVzIHRoZSBzZWNvbmQgdG8gbGFzdCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YCBhbmQgaXMgYmFzZWQgb25cbiAgICAgKiBbYEFycmF5I3JldmVyc2VgXShodHRwczovL21kbi5pby9BcnJheS9yZXZlcnNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKlxuICAgICAqIF8ucmV2ZXJzZShhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzMsIDIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmV2ZXJzZShhcnJheSkge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyBhcnJheSA6IG5hdGl2ZVJldmVyc2UuY2FsbChhcnJheSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZnJvbSBgc3RhcnRgIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgdXNlZCBpbnN0ZWFkIG9mXG4gICAgICogW2BBcnJheSNzbGljZWBdKGh0dHBzOi8vbWRuLmlvL0FycmF5L3NsaWNlKSB0byBlbnN1cmUgZGVuc2UgYXJyYXlzIGFyZVxuICAgICAqIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChlbmQgJiYgdHlwZW9mIGVuZCAhPSAnbnVtYmVyJyAmJiBpc0l0ZXJhdGVlQ2FsbChhcnJheSwgc3RhcnQsIGVuZCkpIHtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgICBlbmQgPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc3RhcnQgPSBzdGFydCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9JbnRlZ2VyKGVuZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVc2VzIGEgYmluYXJ5IHNlYXJjaCB0byBkZXRlcm1pbmUgdGhlIGxvd2VzdCBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXgoWzMwLCA1MF0sIDQwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZSB0aGVpclxuICAgICAqIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDQgfSwgeyAneCc6IDUgfV07XG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgJ3gnKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleE9mKFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRlZEluZGV4YCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBoaWdoZXN0XG4gICAgICogaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWQgaW50byBgYXJyYXlgIGluIG9yZGVyIHRvXG4gICAgICogbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleChbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXgoYXJyYXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRMYXN0SW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhCeShvYmplY3RzLCB7ICd4JzogNCB9LCBmdW5jdGlvbihvKSB7IHJldHVybiBvLng7IH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgJ3gnKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmxhc3RJbmRleE9mYCBleGNlcHQgdGhhdCBpdCBwZXJmb3JtcyBhIGJpbmFyeVxuICAgICAqIHNlYXJjaCBvbiBhIHNvcnRlZCBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleE9mKFs0LCA1LCA1LCA1LCA2XSwgNSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlLCB0cnVlKSAtIDE7XG4gICAgICAgIGlmIChlcShhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQncyBkZXNpZ25lZCBhbmQgb3B0aW1pemVkXG4gICAgICogZm9yIHNvcnRlZCBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRVbmlxKFsxLCAxLCAyXSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcShhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXkpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxQnlgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRVbmlxQnkoWzEuMSwgMS4yLCAyLjMsIDIuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsxLjEsIDIuM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRVbmlxQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU29ydGVkVW5pcShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWlsKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFpbChhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIGxlbmd0aCA/IGJhc2VTbGljZShhcnJheSwgMSwgbGVuZ3RoKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggYG5gIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byB0YWtlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2UoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCAwLCBuIDwgMCA/IDAgOiBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBlbmQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzIsIDNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCAwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodChhcnJheSwgbiwgZ3VhcmQpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIG4gPSAoZ3VhcmQgfHwgbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiB0b0ludGVnZXIobik7XG4gICAgICBuID0gbGVuZ3RoIC0gbjtcbiAgICAgIHJldHVybiBiYXNlU2xpY2UoYXJyYXksIG4gPCAwID8gMCA6IG4sIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBlbmQuIEVsZW1lbnRzIGFyZVxuICAgICAqIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVJpZ2h0V2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBmYWxzZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGVsZW1lbnRzIHRha2VuIGZyb20gdGhlIGJlZ2lubmluZy4gRWxlbWVudHNcbiAgICAgKiBhcmUgdGFrZW4gdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoXG4gICAgICogdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlV2hpbGUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlV2hpbGUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVdoaWxlKGFycmF5LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcywgaW4gb3JkZXIsIGZyb20gYWxsIGdpdmVuIGFycmF5cyB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlvbihbMl0sIFsxLCAyXSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIHVuaW9uID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tIHRoZSBmaXJzdFxuICAgICAqIGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbWJpbmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlvbkJ5KFsyLjFdLCBbMS4yLCAyLjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xLCAxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnVuaW9uQnkoW3sgJ3gnOiAxIH1dLCBbeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaW9uYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gUmVzdWx0IHZhbHVlcyBhcmUgY2hvc2VuIGZyb21cbiAgICAgKiB0aGUgZmlyc3QgYXJyYXkgaW4gd2hpY2ggdGhlIHZhbHVlIG9jY3Vycy4gVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8udW5pb25XaXRoKG9iamVjdHMsIG90aGVycywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgdW5pb25XaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIGFuIGFycmF5LCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpbiB3aGljaCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggZWxlbWVudFxuICAgICAqIGlzIGtlcHQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXJcbiAgICAgKiBpbiB0aGUgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxKFsyLCAxLCAyXSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5pcShhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdW5pcXVlbmVzcyBpcyBjb21wdXRlZC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGVcbiAgICAgKiBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6XG4gICAgICogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxQnkoWzIuMSwgMS4yLCAyLjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMi4xLCAxLjJdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnVuaXFCeShbeyAneCc6IDEgfSwgeyAneCc6IDIgfSwgeyAneCc6IDEgfV0sICd4Jyk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGR1cGxpY2F0ZSBmcmVlIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8udW5pcVdpdGgob2JqZWN0cywgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5pcVdpdGgoYXJyYXksIGNvbXBhcmF0b3IpIHtcbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYW4gYXJyYXkgb2YgZ3JvdXBlZFxuICAgICAqIGVsZW1lbnRzIGFuZCBjcmVhdGVzIGFuIGFycmF5IHJlZ3JvdXBpbmcgdGhlIGVsZW1lbnRzIHRvIHRoZWlyIHByZS16aXBcbiAgICAgKiBjb25maWd1cmF0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMi4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqXG4gICAgICogXy51bnppcCh6aXBwZWQpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW56aXAoYXJyYXkpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGxlbmd0aCA9IDA7XG4gICAgICBhcnJheSA9IGFycmF5RmlsdGVyKGFycmF5LCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoZ3JvdXApKSB7XG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGdyb3VwLmxlbmd0aCwgbGVuZ3RoKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYmFzZVRpbWVzKGxlbmd0aCwgZnVuY3Rpb24oaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5TWFwKGFycmF5LCBiYXNlUHJvcGVydHkoaW5kZXgpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IHJlZ3JvdXBlZCB2YWx1ZXMgc2hvdWxkIGJlIGNvbWJpbmVkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRoZVxuICAgICAqIGVsZW1lbnRzIG9mIGVhY2ggZ3JvdXA6ICguLi5ncm91cCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICByZWdyb3VwZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHppcHBlZCA9IF8uemlwKFsxLCAyXSwgWzEwLCAyMF0sIFsxMDAsIDIwMF0pO1xuICAgICAqIC8vID0+IFtbMSwgMTAsIDEwMF0sIFsyLCAyMCwgMjAwXV1cbiAgICAgKlxuICAgICAqIF8udW56aXBXaXRoKHppcHBlZCwgXy5hZGQpO1xuICAgICAqIC8vID0+IFszLCAzMCwgMzAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwV2l0aChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIGlmICghKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IHVuemlwKGFycmF5KTtcbiAgICAgIGlmIChpdGVyYXRlZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXlNYXAocmVzdWx0LCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICByZXR1cm4gYXBwbHkoaXRlcmF0ZWUsIHVuZGVmaW5lZCwgZ3JvdXApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBleGNsdWRpbmcgYWxsIGdpdmVuIHZhbHVlcyB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5wdWxsYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53aXRob3V0KFsyLCAxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICovXG4gICAgdmFyIHdpdGhvdXQgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBbXTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdW5pcXVlIHZhbHVlcyB0aGF0IGlzIHRoZVxuICAgICAqIFtzeW1tZXRyaWMgZGlmZmVyZW5jZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU3ltbWV0cmljX2RpZmZlcmVuY2UpXG4gICAgICogb2YgdGhlIGdpdmVuIGFycmF5cy4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXJcbiAgICAgKiB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBzZWUgXy5kaWZmZXJlbmNlLCBfLndpdGhvdXRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy54b3IoWzIsIDFdLCBbMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqL1xuICAgIHZhciB4b3IgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHJldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cywgaXNBcnJheUxpa2VPYmplY3QpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgb2YgZWFjaCBgYXJyYXlzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5XG4gICAgICogd2hpY2ggYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXMgZGV0ZXJtaW5lZFxuICAgICAqIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lXG4gICAgICogYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy54b3JCeShbMi4xLCAxLjJdLCBbMi4zLCAzLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4yLCAzLjRdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnhvckJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB4b3JCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGl0ZXJhdGVlKSkge1xuICAgICAgICBpdGVyYXRlZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cywgaXNBcnJheUxpa2VPYmplY3QpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy54b3JgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGNvbXBhcmF0b3JgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheXNgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5cy4gVGhlIGNvbXBhcmF0b3IgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ueG9yV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciB4b3JXaXRoID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgY29tcGFyYXRvciA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGNvbXBhcmF0b3IgPSB0eXBlb2YgY29tcGFyYXRvciA9PSAnZnVuY3Rpb24nID8gY29tcGFyYXRvciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cywgaXNBcnJheUxpa2VPYmplY3QpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLCB0aGUgZmlyc3Qgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogZmlyc3QgZWxlbWVudHMgb2YgdGhlIGdpdmVuIGFycmF5cywgdGhlIHNlY29uZCBvZiB3aGljaCBjb250YWlucyB0aGVcbiAgICAgKiBzZWNvbmQgZWxlbWVudHMgb2YgdGhlIGdpdmVuIGFycmF5cywgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwKFsnYScsICdiJ10sIFsxLCAyXSwgW3RydWUsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gW1snYScsIDEsIHRydWVdLCBbJ2InLCAyLCBmYWxzZV1dXG4gICAgICovXG4gICAgdmFyIHppcCA9IGJhc2VSZXN0KHVuemlwKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZnJvbVBhaXJzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIHR3byBhcnJheXMsXG4gICAgICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzPVtdXSBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwT2JqZWN0KFsnYScsICdiJ10sIFsxLCAyXSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gemlwT2JqZWN0KHByb3BzLCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcE9iamVjdGAgZXhjZXB0IHRoYXQgaXQgc3VwcG9ydHMgcHJvcGVydHkgcGF0aHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzPVtdXSBUaGUgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwT2JqZWN0RGVlcChbJ2EuYlswXS5jJywgJ2EuYlsxXS5kJ10sIFsxLCAyXSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2InOiBbeyAnYyc6IDEgfSwgeyAnZCc6IDIgfV0gfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gemlwT2JqZWN0RGVlcChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBiYXNlU2V0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnppcGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHRvIHNwZWNpZnlcbiAgICAgKiBob3cgZ3JvdXBlZCB2YWx1ZXMgc2hvdWxkIGJlIGNvbWJpbmVkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRoZVxuICAgICAqIGVsZW1lbnRzIG9mIGVhY2ggZ3JvdXA6ICguLi5ncm91cCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy44LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIHByb2Nlc3MuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiB0byBjb21iaW5lXG4gICAgICogIGdyb3VwZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uemlwV2l0aChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdLCBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gYSArIGIgKyBjO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IFsxMTEsIDIyMl1cbiAgICAgKi9cbiAgICB2YXIgemlwV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5cy5sZW5ndGgsXG4gICAgICAgICAgaXRlcmF0ZWUgPSBsZW5ndGggPiAxID8gYXJyYXlzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuXG4gICAgICBpdGVyYXRlZSA9IHR5cGVvZiBpdGVyYXRlZSA9PSAnZnVuY3Rpb24nID8gKGFycmF5cy5wb3AoKSwgaXRlcmF0ZWUpIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHVuemlwV2l0aChhcnJheXMsIGl0ZXJhdGVlKTtcbiAgICB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlIHRoYXQgd3JhcHMgYHZhbHVlYCB3aXRoIGV4cGxpY2l0IG1ldGhvZFxuICAgICAqIGNoYWluIHNlcXVlbmNlcyBlbmFibGVkLiBUaGUgcmVzdWx0IG9mIHN1Y2ggc2VxdWVuY2VzIG11c3QgYmUgdW53cmFwcGVkXG4gICAgICogd2l0aCBgXyN2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogdmFyIHlvdW5nZXN0ID0gX1xuICAgICAqICAgLmNoYWluKHVzZXJzKVxuICAgICAqICAgLnNvcnRCeSgnYWdlJylcbiAgICAgKiAgIC5tYXAoZnVuY3Rpb24obykge1xuICAgICAqICAgICByZXR1cm4gby51c2VyICsgJyBpcyAnICsgby5hZ2U7XG4gICAgICogICB9KVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMgaXMgMSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjaGFpbih2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaCh2YWx1ZSk7XG4gICAgICByZXN1bHQuX19jaGFpbl9fID0gdHJ1ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaW52b2tlcyBgaW50ZXJjZXB0b3JgIGFuZCByZXR1cm5zIGB2YWx1ZWAuIFRoZSBpbnRlcmNlcHRvclxuICAgICAqIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuIFRoZSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvXG4gICAgICogXCJ0YXAgaW50b1wiIGEgbWV0aG9kIGNoYWluIHNlcXVlbmNlIGluIG9yZGVyIHRvIG1vZGlmeSBpbnRlcm1lZGlhdGUgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSlcbiAgICAgKiAgLnRhcChmdW5jdGlvbihhcnJheSkge1xuICAgICAqICAgIC8vIE11dGF0ZSBpbnB1dCBhcnJheS5cbiAgICAgKiAgICBhcnJheS5wb3AoKTtcbiAgICAgKiAgfSlcbiAgICAgKiAgLnJldmVyc2UoKVxuICAgICAqICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YXAodmFsdWUsIGludGVyY2VwdG9yKSB7XG4gICAgICBpbnRlcmNlcHRvcih2YWx1ZSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy50YXBgIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBgaW50ZXJjZXB0b3JgLlxuICAgICAqIFRoZSBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIFwicGFzcyB0aHJ1XCIgdmFsdWVzIHJlcGxhY2luZyBpbnRlcm1lZGlhdGVcbiAgICAgKiByZXN1bHRzIGluIGEgbWV0aG9kIGNoYWluIHNlcXVlbmNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb3ZpZGUgdG8gYGludGVyY2VwdG9yYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpbnRlcmNlcHRvciBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXygnICBhYmMgICcpXG4gICAgICogIC5jaGFpbigpXG4gICAgICogIC50cmltKClcbiAgICAgKiAgLnRocnUoZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgICByZXR1cm4gW3ZhbHVlXTtcbiAgICAgKiAgfSlcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRocnUodmFsdWUsIGludGVyY2VwdG9yKSB7XG4gICAgICByZXR1cm4gaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8uYXRgLlxuICAgICAqXG4gICAgICogQG5hbWUgYXRcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXyhvYmplY3QpLmF0KFsnYVswXS5iLmMnLCAnYVsxXSddKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFszLCA0XVxuICAgICAqL1xuICAgIHZhciB3cmFwcGVyQXQgPSBmbGF0UmVzdChmdW5jdGlvbihwYXRocykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhdGhzLmxlbmd0aCxcbiAgICAgICAgICBzdGFydCA9IGxlbmd0aCA/IHBhdGhzWzBdIDogMCxcbiAgICAgICAgICB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbihvYmplY3QpIHsgcmV0dXJuIGJhc2VBdChvYmplY3QsIHBhdGhzKTsgfTtcblxuICAgICAgaWYgKGxlbmd0aCA+IDEgfHwgdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGggfHxcbiAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpIHx8ICFpc0luZGV4KHN0YXJ0KSkge1xuICAgICAgICByZXR1cm4gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2Uoc3RhcnQsICtzdGFydCArIChsZW5ndGggPyAxIDogMCkpO1xuICAgICAgdmFsdWUuX19hY3Rpb25zX18ucHVzaCh7XG4gICAgICAgICdmdW5jJzogdGhydSxcbiAgICAgICAgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLFxuICAgICAgICAndGhpc0FyZyc6IHVuZGVmaW5lZFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodmFsdWUsIHRoaXMuX19jaGFpbl9fKS50aHJ1KGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgICAgIGlmIChsZW5ndGggJiYgIWFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgIGFycmF5LnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlIHdpdGggZXhwbGljaXQgbWV0aG9kIGNoYWluIHNlcXVlbmNlcyBlbmFibGVkLlxuICAgICAqXG4gICAgICogQG5hbWUgY2hhaW5cbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRob3V0IGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpLmhlYWQoKTtcbiAgICAgKiAvLyA9PiB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiB9XG4gICAgICpcbiAgICAgKiAvLyBBIHNlcXVlbmNlIHdpdGggZXhwbGljaXQgY2hhaW5pbmcuXG4gICAgICogXyh1c2VycylcbiAgICAgKiAgIC5jaGFpbigpXG4gICAgICogICAuaGVhZCgpXG4gICAgICogICAucGljaygndXNlcicpXG4gICAgICogICAudmFsdWUoKTtcbiAgICAgKiAvLyA9PiB7ICd1c2VyJzogJ2Jhcm5leScgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDaGFpbigpIHtcbiAgICAgIHJldHVybiBjaGFpbih0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyB0aGUgY2hhaW4gc2VxdWVuY2UgYW5kIHJldHVybnMgdGhlIHdyYXBwZWQgcmVzdWx0LlxuICAgICAqXG4gICAgICogQG5hbWUgY29tbWl0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyXTtcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oYXJyYXkpLnB1c2goMyk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiB3cmFwcGVkID0gd3JhcHBlZC5jb21taXQoKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiB3cmFwcGVkLmxhc3QoKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlckNvbW1pdCgpIHtcbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih0aGlzLnZhbHVlKCksIHRoaXMuX19jaGFpbl9fKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuZXh0IHZhbHVlIG9uIGEgd3JhcHBlZCBvYmplY3QgZm9sbG93aW5nIHRoZVxuICAgICAqIFtpdGVyYXRvciBwcm90b2NvbF0oaHR0cHM6Ly9tZG4uaW8vaXRlcmF0aW9uX3Byb3RvY29scyNpdGVyYXRvcikuXG4gICAgICpcbiAgICAgKiBAbmFtZSBuZXh0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV4dCBpdGVyYXRvciB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSk7XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogZmFsc2UsICd2YWx1ZSc6IDEgfVxuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAyIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiB0cnVlLCAndmFsdWUnOiB1bmRlZmluZWQgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJOZXh0KCkge1xuICAgICAgaWYgKHRoaXMuX192YWx1ZXNfXyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHRvQXJyYXkodGhpcy52YWx1ZSgpKTtcbiAgICAgIH1cbiAgICAgIHZhciBkb25lID0gdGhpcy5fX2luZGV4X18gPj0gdGhpcy5fX3ZhbHVlc19fLmxlbmd0aCxcbiAgICAgICAgICB2YWx1ZSA9IGRvbmUgPyB1bmRlZmluZWQgOiB0aGlzLl9fdmFsdWVzX19bdGhpcy5fX2luZGV4X18rK107XG5cbiAgICAgIHJldHVybiB7ICdkb25lJzogZG9uZSwgJ3ZhbHVlJzogdmFsdWUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIHRoZSB3cmFwcGVyIHRvIGJlIGl0ZXJhYmxlLlxuICAgICAqXG4gICAgICogQG5hbWUgU3ltYm9sLml0ZXJhdG9yXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgd3JhcHBlciBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZFtTeW1ib2wuaXRlcmF0b3JdKCkgPT09IHdyYXBwZWQ7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogQXJyYXkuZnJvbSh3cmFwcGVkKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVG9JdGVyYXRvcigpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgY2hhaW4gc2VxdWVuY2UgcGxhbnRpbmcgYHZhbHVlYCBhcyB0aGUgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHBsYW50XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcGxhbnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIHdyYXBwZWQgPSBfKFsxLCAyXSkubWFwKHNxdWFyZSk7XG4gICAgICogdmFyIG90aGVyID0gd3JhcHBlZC5wbGFudChbMywgNF0pO1xuICAgICAqXG4gICAgICogb3RoZXIudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbOSwgMTZdXG4gICAgICpcbiAgICAgKiB3cmFwcGVkLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzEsIDRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclBsYW50KHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0LFxuICAgICAgICAgIHBhcmVudCA9IHRoaXM7XG5cbiAgICAgIHdoaWxlIChwYXJlbnQgaW5zdGFuY2VvZiBiYXNlTG9kYXNoKSB7XG4gICAgICAgIHZhciBjbG9uZSA9IHdyYXBwZXJDbG9uZShwYXJlbnQpO1xuICAgICAgICBjbG9uZS5fX2luZGV4X18gPSAwO1xuICAgICAgICBjbG9uZS5fX3ZhbHVlc19fID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgcHJldmlvdXMuX193cmFwcGVkX18gPSBjbG9uZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBjbG9uZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldmlvdXMgPSBjbG9uZTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50Ll9fd3JhcHBlZF9fO1xuICAgICAgfVxuICAgICAgcHJldmlvdXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgdGhlIHdyYXBwZXIgdmVyc2lvbiBvZiBgXy5yZXZlcnNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIHRoZSB3cmFwcGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQG5hbWUgcmV2ZXJzZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfKGFycmF5KS5yZXZlcnNlKCkudmFsdWUoKVxuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJSZXZlcnNlKCkge1xuICAgICAgdmFyIHZhbHVlID0gdGhpcy5fX3dyYXBwZWRfXztcbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHZhciB3cmFwcGVkID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCkge1xuICAgICAgICAgIHdyYXBwZWQgPSBuZXcgTGF6eVdyYXBwZXIodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgd3JhcHBlZCA9IHdyYXBwZWQucmV2ZXJzZSgpO1xuICAgICAgICB3cmFwcGVkLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAgICdmdW5jJzogdGhydSxcbiAgICAgICAgICAnYXJncyc6IFtyZXZlcnNlXSxcbiAgICAgICAgICAndGhpc0FyZyc6IHVuZGVmaW5lZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZWQsIHRoaXMuX19jaGFpbl9fKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnRocnUocmV2ZXJzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIHRvIHJlc29sdmUgdGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHZhbHVlXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAYWxpYXMgdG9KU09OLCB2YWx1ZU9mXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oWzEsIDIsIDNdKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJWYWx1ZSgpIHtcbiAgICAgIHJldHVybiBiYXNlV3JhcHBlclZhbHVlKHRoaXMuX193cmFwcGVkX18sIHRoaXMuX19hY3Rpb25zX18pO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgY29ycmVzcG9uZGluZyB2YWx1ZSBvZlxuICAgICAqIGVhY2gga2V5IGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGtleSB3YXMgcmV0dXJuZWQgYnkgYGl0ZXJhdGVlYC4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jb3VudEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4geyAnNCc6IDEsICc2JzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmNvdW50QnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogMiwgJzUnOiAxIH1cbiAgICAgKi9cbiAgICB2YXIgY291bnRCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgKytyZXN1bHRba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgMSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yICoqYWxsKiogZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqIEl0ZXJhdGlvbiBpcyBzdG9wcGVkIG9uY2UgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogW2VtcHR5IGNvbGxlY3Rpb25zXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FbXB0eV9zZXQpIGJlY2F1c2VcbiAgICAgKiBbZXZlcnl0aGluZyBpcyB0cnVlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9WYWN1b3VzX3RydXRoKSBvZlxuICAgICAqIGVsZW1lbnRzIG9mIGVtcHR5IGNvbGxlY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5ldmVyeShbdHJ1ZSwgMSwgbnVsbCwgJ3llcyddLCBCb29sZWFuKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmV2ZXJ5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXZlcnkoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFdmVyeSA6IGJhc2VFdmVyeTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICAgICAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucmVtb3ZlYCwgdGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8ucmVqZWN0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgXy5vdmVyU29tZShbeyAnYWdlJzogMzYgfSwgWydhZ2UnLCA0MF1dKSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJywgJ2Jhcm5leSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlGaWx0ZXIgOiBiYXNlRmlsdGVyO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAqIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAncGViYmxlcydcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3QgZm9yICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqL1xuICAgIHZhciBmaW5kID0gY3JlYXRlRmluZChmaW5kSW5kZXgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9Y29sbGVjdGlvbi5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3QoWzEsIDIsIDMsIDRdLCBmdW5jdGlvbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgdmFyIGZpbmRMYXN0ID0gY3JlYXRlRmluZChmaW5kTGFzdEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmbGF0dGVuZWQgYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYFxuICAgICAqIHRocnUgYGl0ZXJhdGVlYCBhbmQgZmxhdHRlbmluZyB0aGUgbWFwcGVkIHJlc3VsdHMuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbbiwgbl07XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5mbGF0TWFwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mbGF0TWFwYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBmbGF0dGVucyB0aGVcbiAgICAgKiBtYXBwZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbW1tuLCBuXV1dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcERlZXAoWzEsIDJdLCBkdXBsaWNhdGUpO1xuICAgICAqIC8vID0+IFsxLCAxLCAyLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZWVwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgSU5GSU5JVFkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMgdXAgdG8gYGRlcHRoYCB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVwdGg9MV0gVGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZHVwbGljYXRlKG4pIHtcbiAgICAgKiAgIHJldHVybiBbW1tuLCBuXV1dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcERlcHRoKFsxLCAyXSwgZHVwbGljYXRlLCAyKTtcbiAgICAgKiAvLyA9PiBbWzEsIDFdLCBbMiwgMl1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcERlcHRoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBkZXB0aCkge1xuICAgICAgZGVwdGggPSBkZXB0aCA9PT0gdW5kZWZpbmVkID8gMSA6IHRvSW50ZWdlcihkZXB0aCk7XG4gICAgICByZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggZWxlbWVudC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBBcyB3aXRoIG90aGVyIFwiQ29sbGVjdGlvbnNcIiBtZXRob2RzLCBvYmplY3RzIHdpdGggYSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAgICAgKiBvciBgXy5mb3JPd25gIGZvciBvYmplY3QgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGVhY2hcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMWAgdGhlbiBgMmAuXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaCA6IGJhc2VFYWNoO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvckVhY2hgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBgY29sbGVjdGlvbmAgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGFsaWFzIGVhY2hSaWdodFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICAgICAqIEBzZWUgXy5mb3JFYWNoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZm9yRWFjaFJpZ2h0KFsxLCAyXSwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzIGAyYCB0aGVuIGAxYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoUmlnaHQoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RWFjaFJpZ2h0IDogYmFzZUVhY2hSaWdodDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBvcmRlciBvZiBncm91cGVkIHZhbHVlc1xuICAgICAqIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gYGNvbGxlY3Rpb25gLiBUaGUgY29ycmVzcG9uZGluZ1xuICAgICAqIHZhbHVlIG9mIGVhY2gga2V5IGlzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZVxuICAgICAqIGtleS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZ3JvdXBCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiBbNC4yXSwgJzYnOiBbNi4xLCA2LjNdIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZ3JvdXBCeShbJ29uZScsICd0d28nLCAndGhyZWUnXSwgJ2xlbmd0aCcpO1xuICAgICAqIC8vID0+IHsgJzMnOiBbJ29uZScsICd0d28nXSwgJzUnOiBbJ3RocmVlJ10gfVxuICAgICAqL1xuICAgIHZhciBncm91cEJ5ID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgICAgICByZXN1bHRba2V5XS5wdXNoKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgW3ZhbHVlXSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiBgY29sbGVjdGlvbmAuIElmIGBjb2xsZWN0aW9uYCBpcyBhIHN0cmluZywgaXQnc1xuICAgICAqIGNoZWNrZWQgZm9yIGEgc3Vic3RyaW5nIG9mIGB2YWx1ZWAsIG90aGVyd2lzZVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogaXMgdXNlZCBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXNcbiAgICAgKiB0aGUgb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fHN0cmluZ30gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLnJlZHVjZWAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyhbMSwgMiwgM10sIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pbmNsdWRlcyh7ICdhJzogMSwgJ2InOiAyIH0sIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoJ2FiY2QnLCAnYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5jbHVkZXMoY29sbGVjdGlvbiwgdmFsdWUsIGZyb21JbmRleCwgZ3VhcmQpIHtcbiAgICAgIGNvbGxlY3Rpb24gPSBpc0FycmF5TGlrZShjb2xsZWN0aW9uKSA/IGNvbGxlY3Rpb24gOiB2YWx1ZXMoY29sbGVjdGlvbik7XG4gICAgICBmcm9tSW5kZXggPSAoZnJvbUluZGV4ICYmICFndWFyZCkgPyB0b0ludGVnZXIoZnJvbUluZGV4KSA6IDA7XG5cbiAgICAgIHZhciBsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIGlmIChmcm9tSW5kZXggPCAwKSB7XG4gICAgICAgIGZyb21JbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBmcm9tSW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pXG4gICAgICAgID8gKGZyb21JbmRleCA8PSBsZW5ndGggJiYgY29sbGVjdGlvbi5pbmRleE9mKHZhbHVlLCBmcm9tSW5kZXgpID4gLTEpXG4gICAgICAgIDogKCEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgpID4gLTEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nXG4gICAgICogYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2YgZWFjaCBpbnZva2VkIG1ldGhvZC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogYXJlIHByb3ZpZGVkIHRvIGVhY2ggaW52b2tlZCBtZXRob2QuIElmIGBwYXRoYCBpcyBhIGZ1bmN0aW9uLCBpdCdzIGludm9rZWRcbiAgICAgKiBmb3IsIGFuZCBgdGhpc2AgYm91bmQgdG8sIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZSBvclxuICAgICAqICB0aGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGVhY2ggbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbWzUsIDEsIDddLCBbMywgMiwgMV1dLCAnc29ydCcpO1xuICAgICAqIC8vID0+IFtbMSwgNSwgN10sIFsxLCAyLCAzXV1cbiAgICAgKlxuICAgICAqIF8uaW52b2tlTWFwKFsxMjMsIDQ1Nl0sIFN0cmluZy5wcm90b3R5cGUuc3BsaXQsICcnKTtcbiAgICAgKiAvLyA9PiBbWycxJywgJzInLCAnMyddLCBbJzQnLCAnNScsICc2J11dXG4gICAgICovXG4gICAgdmFyIGludm9rZU1hcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIHBhdGgsIGFyZ3MpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGlzRnVuYyA9IHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicsXG4gICAgICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXNGdW5jID8gYXBwbHkocGF0aCwgdmFsdWUsIGFyZ3MpIDogYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbGFzdCBlbGVtZW50IHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBrZXkuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFtcbiAgICAgKiAgIHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LFxuICAgICAqICAgeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCBmdW5jdGlvbihvKSB7XG4gICAgICogICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShvLmNvZGUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSwgJ2QnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKlxuICAgICAqIF8ua2V5QnkoYXJyYXksICdkaXInKTtcbiAgICAgKiAvLyA9PiB7ICdsZWZ0JzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdyaWdodCc6IHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH0gfVxuICAgICAqL1xuICAgIHZhciBrZXlCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIHZhbHVlKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGJ5IHJ1bm5pbmcgZWFjaCBlbGVtZW50IGluIGBjb2xsZWN0aW9uYCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8uZXZlcnlgLCBgXy5maWx0ZXJgLCBgXy5tYXBgLCBgXy5tYXBWYWx1ZXNgLCBgXy5yZWplY3RgLCBhbmQgYF8uc29tZWAuXG4gICAgICpcbiAgICAgKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAgICAgKiBgYXJ5YCwgYGNodW5rYCwgYGN1cnJ5YCwgYGN1cnJ5UmlnaHRgLCBgZHJvcGAsIGBkcm9wUmlnaHRgLCBgZXZlcnlgLFxuICAgICAqIGBmaWxsYCwgYGludmVydGAsIGBwYXJzZUludGAsIGByYW5kb21gLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZXBlYXRgLFxuICAgICAqIGBzYW1wbGVTaXplYCwgYHNsaWNlYCwgYHNvbWVgLCBgc29ydEJ5YCwgYHNwbGl0YCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAgICAgKiBgdGVtcGxhdGVgLCBgdHJpbWAsIGB0cmltRW5kYCwgYHRyaW1TdGFydGAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogXy5tYXAoWzQsIDhdLCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdXG4gICAgICpcbiAgICAgKiBfLm1hcCh7ICdhJzogNCwgJ2InOiA4IH0sIHNxdWFyZSk7XG4gICAgICogLy8gPT4gWzE2LCA2NF0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JyB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJyB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCAndXNlcicpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlNYXAgOiBiYXNlTWFwO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNvcnRCeWAgZXhjZXB0IHRoYXQgaXQgYWxsb3dzIHNwZWNpZnlpbmcgdGhlIHNvcnRcbiAgICAgKiBvcmRlcnMgb2YgdGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LiBJZiBgb3JkZXJzYCBpcyB1bnNwZWNpZmllZCwgYWxsIHZhbHVlc1xuICAgICAqIGFyZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLiBPdGhlcndpc2UsIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yXG4gICAgICogZGVzY2VuZGluZyBvciBcImFzY1wiIGZvciBhc2NlbmRpbmcgc29ydCBvcmRlciBvZiBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7QXJyYXlbXXxGdW5jdGlvbltdfE9iamVjdFtdfHN0cmluZ1tdfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IFtvcmRlcnNdIFRoZSBzb3J0IG9yZGVycyBvZiBgaXRlcmF0ZWVzYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM0IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBTb3J0IGJ5IGB1c2VyYCBpbiBhc2NlbmRpbmcgb3JkZXIgYW5kIGJ5IGBhZ2VgIGluIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICogXy5vcmRlckJ5KHVzZXJzLCBbJ3VzZXInLCAnYWdlJ10sIFsnYXNjJywgJ2Rlc2MnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCA0MF1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gb3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycywgZ3VhcmQpIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0FycmF5KGl0ZXJhdGVlcykpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gaXRlcmF0ZWVzID09IG51bGwgPyBbXSA6IFtpdGVyYXRlZXNdO1xuICAgICAgfVxuICAgICAgb3JkZXJzID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBvcmRlcnM7XG4gICAgICBpZiAoIWlzQXJyYXkob3JkZXJzKSkge1xuICAgICAgICBvcmRlcnMgPSBvcmRlcnMgPT0gbnVsbCA/IFtdIDogW29yZGVyc107XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgc3BsaXQgaW50byB0d28gZ3JvdXBzLCB0aGUgZmlyc3Qgb2Ygd2hpY2hcbiAgICAgKiBjb250YWlucyBlbGVtZW50cyBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IsIHRoZSBzZWNvbmQgb2Ygd2hpY2hcbiAgICAgKiBjb250YWlucyBlbGVtZW50cyBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleSBmb3IuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydmcmVkJ10sIFsnYmFybmV5JywgJ3BlYmJsZXMnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydwZWJibGVzJ10sIFsnYmFybmV5JywgJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnBhcnRpdGlvbih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsICdwZWJibGVzJ10sIFsnZnJlZCddXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydmcmVkJ10sIFsnYmFybmV5JywgJ3BlYmJsZXMnXV1cbiAgICAgKi9cbiAgICB2YXIgcGFydGl0aW9uID0gY3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdFtrZXkgPyAwIDogMV0ucHVzaCh2YWx1ZSk7XG4gICAgfSwgZnVuY3Rpb24oKSB7IHJldHVybiBbW10sIFtdXTsgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZWR1Y2VzIGBjb2xsZWN0aW9uYCB0byBhIHZhbHVlIHdoaWNoIGlzIHRoZSBhY2N1bXVsYXRlZCByZXN1bHQgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAgICAgKiBpbnZvY2F0aW9uIGlzIHN1cHBsaWVkIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHByZXZpb3VzLiBJZiBgYWNjdW11bGF0b3JgXG4gICAgICogaXMgbm90IGdpdmVuLCB0aGUgZmlyc3QgZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgaXMgdXNlZCBhcyB0aGUgaW5pdGlhbFxuICAgICAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICAgICAqIChhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAgICAgKiBgXy5yZWR1Y2VgLCBgXy5yZWR1Y2VSaWdodGAsIGFuZCBgXy50cmFuc2Zvcm1gLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFzc2lnbmAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgaW5jbHVkZXNgLCBgbWVyZ2VgLCBgb3JkZXJCeWAsXG4gICAgICogYW5kIGBzb3J0QnlgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICAgICAqICAgcmV0dXJuIHN1bSArIG47XG4gICAgICogfSwgMCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy5yZWR1Y2UoeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH0sIGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAgICAgKiAgIHJldHVybiByZXN1bHQ7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2gpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmVkdWNlYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLnJlZHVjZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbWzAsIDFdLCBbMiwgM10sIFs0LCA1XV07XG4gICAgICpcbiAgICAgKiBfLnJlZHVjZVJpZ2h0KGFycmF5LCBmdW5jdGlvbihmbGF0dGVuZWQsIG90aGVyKSB7XG4gICAgICogICByZXR1cm4gZmxhdHRlbmVkLmNvbmNhdChvdGhlcik7XG4gICAgICogfSwgW10pO1xuICAgICAqIC8vID0+IFs0LCA1LCAyLCAzLCAwLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2VSaWdodCA6IGJhc2VSZWR1Y2UsXG4gICAgICAgICAgaW5pdEFjY3VtID0gYXJndW1lbnRzLmxlbmd0aCA8IDM7XG5cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgYmFzZUVhY2hSaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLmZpbHRlcmA7IHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYFxuICAgICAqIHRoYXQgYHByZWRpY2F0ZWAgZG9lcyAqKm5vdCoqIHJldHVybiB0cnV0aHkgZm9yLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgICAqIEBzZWUgXy5maWx0ZXJcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5yZWplY3QodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5yZWplY3QodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVqZWN0KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlGaWx0ZXIgOiBiYXNlRmlsdGVyO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgcmFuZG9tIGVsZW1lbnQgZnJvbSBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlKFsxLCAyLCAzLCA0XSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNhbXBsZSA6IGJhc2VTYW1wbGU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGBuYCByYW5kb20gZWxlbWVudHMgYXQgdW5pcXVlIGtleXMgZnJvbSBgY29sbGVjdGlvbmAgdXAgdG8gdGhlXG4gICAgICogc2l6ZSBvZiBgY29sbGVjdGlvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgMik7XG4gICAgICogLy8gPT4gWzMsIDFdXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZVNpemUoWzEsIDIsIDNdLCA0KTtcbiAgICAgKiAvLyA9PiBbMiwgMywgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgbiwgZ3VhcmQpIDogbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBuID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICB9XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNhbXBsZVNpemUgOiBiYXNlU2FtcGxlU2l6ZTtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygc2h1ZmZsZWQgdmFsdWVzLCB1c2luZyBhIHZlcnNpb24gb2YgdGhlXG4gICAgICogW0Zpc2hlci1ZYXRlcyBzaHVmZmxlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXItWWF0ZXNfc2h1ZmZsZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNodWZmbGUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc2h1ZmZsZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2h1ZmZsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IFs0LCAxLCAzLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNodWZmbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTaHVmZmxlIDogYmFzZVNodWZmbGU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzaXplIG9mIGBjb2xsZWN0aW9uYCBieSByZXR1cm5pbmcgaXRzIGxlbmd0aCBmb3IgYXJyYXktbGlrZVxuICAgICAqIHZhbHVlcyBvciB0aGUgbnVtYmVyIG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb2xsZWN0aW9uIHNpemUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2l6ZShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uc2l6ZSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8uc2l6ZSgncGViYmxlcycpO1xuICAgICAqIC8vID0+IDdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaXplKGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChjb2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pID8gc3RyaW5nU2l6ZShjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyhjb2xsZWN0aW9uKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uc2l6ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFueSoqIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqIEl0ZXJhdGlvbiBpcyBzdG9wcGVkIG9uY2UgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb21lKFtudWxsLCAwLCAneWVzJywgZmFsc2VdLCBCb29sZWFuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb21lKHVzZXJzLCB7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiBmYWxzZSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb21lKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U29tZSA6IGJhc2VTb21lO1xuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpKSB7XG4gICAgICAgIHByZWRpY2F0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZWxlbWVudHMsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBhIGNvbGxlY3Rpb24gdGhydSBlYWNoIGl0ZXJhdGVlLiBUaGlzIG1ldGhvZFxuICAgICAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICAgICAqIGVxdWFsIGVsZW1lbnRzLiBUaGUgaXRlcmF0ZWVzIGFyZSBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtpdGVyYXRlZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgc29ydGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0OCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDMwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uc29ydEJ5KHVzZXJzLCBbZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyOyB9XSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCAzMF1dXG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCAzMF0sIFsnZnJlZCcsIDQ4XV1cbiAgICAgKi9cbiAgICB2YXIgc29ydEJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWVzKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCA+IDEgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgaXRlcmF0ZWVzWzBdLCBpdGVyYXRlZXNbMV0pKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtdO1xuICAgICAgfSBlbHNlIGlmIChsZW5ndGggPiAyICYmIGlzSXRlcmF0ZWVDYWxsKGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdLCBpdGVyYXRlZXNbMl0pKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpdGVyYXRlZXNbMF1dO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGJhc2VGbGF0dGVuKGl0ZXJhdGVlcywgMSksIFtdKTtcbiAgICB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICAgICAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IERhdGVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gICAgICogfSwgXy5ub3coKSk7XG4gICAgICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgbm93ID0gY3R4Tm93IHx8IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbiAgICB9O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLmJlZm9yZWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiBgZnVuY2Agb25jZSBpdCdzIGNhbGxlZCBgbmAgb3IgbW9yZSB0aW1lcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYmVmb3JlIGBmdW5jYCBpcyBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXZlcyA9IFsncHJvZmlsZScsICdzZXR0aW5ncyddO1xuICAgICAqXG4gICAgICogdmFyIGRvbmUgPSBfLmFmdGVyKHNhdmVzLmxlbmd0aCwgZnVuY3Rpb24oKSB7XG4gICAgICogICBjb25zb2xlLmxvZygnZG9uZSBzYXZpbmchJyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goc2F2ZXMsIGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgKiAgIGFzeW5jU2F2ZSh7ICd0eXBlJzogdHlwZSwgJ2NvbXBsZXRlJzogZG9uZSB9KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdkb25lIHNhdmluZyEnIGFmdGVyIHRoZSB0d28gYXN5bmMgc2F2ZXMgaGF2ZSBjb21wbGV0ZWQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYWZ0ZXIobiwgZnVuYykge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA8IDEpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHVwIHRvIGBuYCBhcmd1bWVudHMsXG4gICAgICogaWdub3JpbmcgYW55IGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgY2FwLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLmFyeShwYXJzZUludCwgMSkpO1xuICAgICAqIC8vID0+IFs2LCA4LCAxMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnkoZnVuYywgbiwgZ3VhcmQpIHtcbiAgICAgIG4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IG47XG4gICAgICBuID0gKGZ1bmMgJiYgbiA9PSBudWxsKSA/IGZ1bmMubGVuZ3RoIDogbjtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfQVJZX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2AsIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHNcbiAgICAgKiBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hpbGUgaXQncyBjYWxsZWQgbGVzcyB0aGFuIGBuYCB0aW1lcy4gU3Vic2VxdWVudFxuICAgICAqIGNhbGxzIHRvIHRoZSBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiBjYWxscyBhdCB3aGljaCBgZnVuY2AgaXMgbm8gbG9uZ2VyIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmVzdHJpY3RlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uYmVmb3JlKDUsIGFkZENvbnRhY3RUb0xpc3QpKTtcbiAgICAgKiAvLyA9PiBBbGxvd3MgYWRkaW5nIHVwIHRvIDQgY29udGFjdHMgdG8gdGhlIGxpc3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmVmb3JlKG4sIGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQ7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoLS1uID4gMCkge1xuICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobiA8PSAxKSB7XG4gICAgICAgICAgZnVuYyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2BcbiAgICAgKiBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5iaW5kLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWMgYnVpbGRzLFxuICAgICAqIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgbmF0aXZlIGBGdW5jdGlvbiNiaW5kYCwgdGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCJcbiAgICAgKiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBiaW5kLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICd1c2VyJzogJ2ZyZWQnIH07XG4gICAgICpcbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmQoZ3JlZXQsIG9iamVjdCwgJ2hpJyk7XG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmQoZ3JlZXQsIG9iamVjdCwgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICovXG4gICAgdmFyIGJpbmQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmQpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgb2JqZWN0W2tleV1gIHdpdGggYHBhcnRpYWxzYFxuICAgICAqIHByZXBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIGBfLmJpbmRgIGJ5IGFsbG93aW5nIGJvdW5kIGZ1bmN0aW9ucyB0byByZWZlcmVuY2VcbiAgICAgKiBtZXRob2RzIHRoYXQgbWF5IGJlIHJlZGVmaW5lZCBvciBkb24ndCB5ZXQgZXhpc3QuIFNlZVxuICAgICAqIFtQZXRlciBNaWNoYXV4J3MgYXJ0aWNsZV0oaHR0cDovL3BldGVyLm1pY2hhdXguY2EvYXJ0aWNsZXMvbGF6eS1mdW5jdGlvbi1kZWZpbml0aW9uLXBhdHRlcm4pXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5iaW5kS2V5LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52b2tlIHRoZSBtZXRob2Qgb24uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYm91bmQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7XG4gICAgICogICAndXNlcic6ICdmcmVkJyxcbiAgICAgKiAgICdncmVldCc6IGZ1bmN0aW9uKGdyZWV0aW5nLCBwdW5jdHVhdGlvbikge1xuICAgICAqICAgICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgJ2hpJyk7XG4gICAgICogYm91bmQoJyEnKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCEnXG4gICAgICpcbiAgICAgKiBvYmplY3QuZ3JlZXQgPSBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICd5YSAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpeWEgZnJlZCEnXG4gICAgICpcbiAgICAgKiAvLyBCb3VuZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgYm91bmQgPSBfLmJpbmRLZXkob2JqZWN0LCAnZ3JlZXQnLCBfLCAnIScpO1xuICAgICAqIGJvdW5kKCdoaScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kS2V5ID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBrZXksIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgYml0bWFzayA9IFdSQVBfQklORF9GTEFHIHwgV1JBUF9CSU5EX0tFWV9GTEFHO1xuICAgICAgaWYgKHBhcnRpYWxzLmxlbmd0aCkge1xuICAgICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIoYmluZEtleSkpO1xuICAgICAgICBiaXRtYXNrIHw9IFdSQVBfUEFSVElBTF9GTEFHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoa2V5LCBiaXRtYXNrLCBvYmplY3QsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYXJndW1lbnRzIG9mIGBmdW5jYCBhbmQgZWl0aGVyIGludm9rZXNcbiAgICAgKiBgZnVuY2AgcmV0dXJuaW5nIGl0cyByZXN1bHQsIGlmIGF0IGxlYXN0IGBhcml0eWAgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlXG4gICAgICogYmVlbiBwcm92aWRlZCwgb3IgcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcmVtYWluaW5nIGBmdW5jYFxuICAgICAqIGFyZ3VtZW50cywgYW5kIHNvIG9uLiBUaGUgYXJpdHkgb2YgYGZ1bmNgIG1heSBiZSBzcGVjaWZpZWQgaWYgYGZ1bmMubGVuZ3RoYFxuICAgICAqIGlzIG5vdCBzdWZmaWNpZW50LlxuICAgICAqXG4gICAgICogVGhlIGBfLmN1cnJ5LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWMgYnVpbGRzLFxuICAgICAqIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5KGFiYyk7XG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEpKDIpKDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMiwgMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiAvLyBDdXJyaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIGN1cnJpZWQoMSkoXywgMykoMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VycnkoZnVuYywgYXJpdHksIGd1YXJkKSB7XG4gICAgICBhcml0eSA9IGd1YXJkID8gdW5kZWZpbmVkIDogYXJpdHk7XG4gICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0NVUlJZX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSk7XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBjdXJyeS5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jdXJyeWAgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFyZSBhcHBsaWVkIHRvIGBmdW5jYFxuICAgICAqIGluIHRoZSBtYW5uZXIgb2YgYF8ucGFydGlhbFJpZ2h0YCBpbnN0ZWFkIG9mIGBfLnBhcnRpYWxgLlxuICAgICAqXG4gICAgICogVGhlIGBfLmN1cnJ5UmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGN1cnJpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY3VycnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eT1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGN1cnJpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhYmMgPSBmdW5jdGlvbihhLCBiLCBjKSB7XG4gICAgICogICByZXR1cm4gW2EsIGIsIGNdO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiB2YXIgY3VycmllZCA9IF8uY3VycnlSaWdodChhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgzKSgyKSgxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMiwgMykoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDMpKDEsIF8pKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5UmlnaHQoZnVuYywgYXJpdHksIGd1YXJkKSB7XG4gICAgICBhcml0eSA9IGd1YXJkID8gdW5kZWZpbmVkIDogYXJpdHk7XG4gICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBhcml0eSk7XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBjdXJyeVJpZ2h0LnBsYWNlaG9sZGVyO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAgICAgKiBtaWxsaXNlY29uZHMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB3YXNcbiAgICAgKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gICAgICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gICAgICogUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2Agc2hvdWxkIGJlIGludm9rZWQgb24gdGhlXG4gICAgICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYFxuICAgICAqIGludm9jYXRpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gICAgICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAgICAgKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gICAgICpcbiAgICAgKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAgICAgKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAgICAgKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICAgICAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdyZXNpemUnLCBfLmRlYm91bmNlKGNhbGN1bGF0ZUxheW91dCwgMTUwKSk7XG4gICAgICpcbiAgICAgKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gICAgICogICAnbGVhZGluZyc6IHRydWUsXG4gICAgICogICAndHJhaWxpbmcnOiBmYWxzZVxuICAgICAqIH0pKTtcbiAgICAgKlxuICAgICAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gICAgICogdmFyIGRlYm91bmNlZCA9IF8uZGVib3VuY2UoYmF0Y2hMb2csIDI1MCwgeyAnbWF4V2FpdCc6IDEwMDAgfSk7XG4gICAgICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICAgICAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxhc3RBcmdzLFxuICAgICAgICAgIGxhc3RUaGlzLFxuICAgICAgICAgIG1heFdhaXQsXG4gICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgIHRpbWVySWQsXG4gICAgICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgICAgICBsZWFkaW5nID0gZmFsc2UsXG4gICAgICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICB3YWl0ID0gdG9OdW1iZXIod2FpdCkgfHwgMDtcbiAgICAgIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgICAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgICAgIG1heGluZyA9ICdtYXhXYWl0JyBpbiBvcHRpb25zO1xuICAgICAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyKG9wdGlvbnMubWF4V2FpdCkgfHwgMCwgd2FpdCkgOiBtYXhXYWl0O1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBpbnZva2VGdW5jKHRpbWUpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgICAgIHRoaXNBcmcgPSBsYXN0VGhpcztcblxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGxlYWRpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgLy8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICAvLyBTdGFydCB0aGUgdGltZXIgZm9yIHRoZSB0cmFpbGluZyBlZGdlLlxuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICAgICAgcmV0dXJuIGxlYWRpbmcgPyBpbnZva2VGdW5jKHRpbWUpIDogcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICAgICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWUsXG4gICAgICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgICAgICByZXR1cm4gbWF4aW5nXG4gICAgICAgICAgPyBuYXRpdmVNaW4odGltZVdhaXRpbmcsIG1heFdhaXQgLSB0aW1lU2luY2VMYXN0SW52b2tlKVxuICAgICAgICAgIDogdGltZVdhaXRpbmc7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHNob3VsZEludm9rZSh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgICAgIC8vIEVpdGhlciB0aGlzIGlzIHRoZSBmaXJzdCBjYWxsLCBhY3Rpdml0eSBoYXMgc3RvcHBlZCBhbmQgd2UncmUgYXQgdGhlXG4gICAgICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICAgICAgcmV0dXJuIChsYXN0Q2FsbFRpbWUgPT09IHVuZGVmaW5lZCB8fCAodGltZVNpbmNlTGFzdENhbGwgPj0gd2FpdCkgfHxcbiAgICAgICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB0aW1lckV4cGlyZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJhaWxpbmdFZGdlKHRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHJlbWFpbmluZ1dhaXQodGltZSkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgICAgICB0aW1lcklkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAgICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgICAgIGlmICh0cmFpbGluZyAmJiBsYXN0QXJncykge1xuICAgICAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICAgICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICAgICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgICAgIGlzSW52b2tpbmcgPSBzaG91bGRJbnZva2UodGltZSk7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICAgICAgbGFzdENhbGxUaW1lID0gdGltZTtcblxuICAgICAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBsZWFkaW5nRWRnZShsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgaW52b2NhdGlvbnMgaW4gYSB0aWdodCBsb29wLlxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgICAgIHJldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICAgICAgZGVib3VuY2VkLmZsdXNoID0gZmx1c2g7XG4gICAgICByZXR1cm4gZGVib3VuY2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmVycyBpbnZva2luZyB0aGUgYGZ1bmNgIHVudGlsIHRoZSBjdXJyZW50IGNhbGwgc3RhY2sgaGFzIGNsZWFyZWQuIEFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWZlci5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lciBpZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZlcihmdW5jdGlvbih0ZXh0KSB7XG4gICAgICogICBjb25zb2xlLmxvZyh0ZXh0KTtcbiAgICAgKiB9LCAnZGVmZXJyZWQnKTtcbiAgICAgKiAvLyA9PiBMb2dzICdkZWZlcnJlZCcgYWZ0ZXIgb25lIG1pbGxpc2Vjb25kLlxuICAgICAqL1xuICAgIHZhciBkZWZlciA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBiYXNlRGVsYXkoZnVuYywgMSwgYXJncyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIGBmdW5jYCBhZnRlciBgd2FpdGAgbWlsbGlzZWNvbmRzLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVsYXkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaW52b2NhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lciBpZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWxheShmdW5jdGlvbih0ZXh0KSB7XG4gICAgICogICBjb25zb2xlLmxvZyh0ZXh0KTtcbiAgICAgKiB9LCAxMDAwLCAnbGF0ZXInKTtcbiAgICAgKiAvLyA9PiBMb2dzICdsYXRlcicgYWZ0ZXIgb25lIHNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVsYXkgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCB3YWl0LCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIHRvTnVtYmVyKHdhaXQpIHx8IDAsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBhcmd1bWVudHMgcmV2ZXJzZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBmbGlwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmxpcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZsaXBwZWQgPSBfLmZsaXAoZnVuY3Rpb24oKSB7XG4gICAgICogICByZXR1cm4gXy50b0FycmF5KGFyZ3VtZW50cyk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBmbGlwcGVkKCdhJywgJ2InLCAnYycsICdkJyk7XG4gICAgICogLy8gPT4gWydkJywgJ2MnLCAnYicsICdhJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGlwKGZ1bmMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfRkxJUF9GTEFHKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBtZW1vaXplcyB0aGUgcmVzdWx0IG9mIGBmdW5jYC4gSWYgYHJlc29sdmVyYCBpc1xuICAgICAqIHByb3ZpZGVkLCBpdCBkZXRlcm1pbmVzIHRoZSBjYWNoZSBrZXkgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCBiYXNlZCBvbiB0aGVcbiAgICAgKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAgICAgKiBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgbWFwIGNhY2hlIGtleS4gVGhlIGBmdW5jYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjYWNoZSBpcyBleHBvc2VkIGFzIHRoZSBgY2FjaGVgIHByb3BlcnR5IG9uIHRoZSBtZW1vaXplZFxuICAgICAqIGZ1bmN0aW9uLiBJdHMgY3JlYXRpb24gbWF5IGJlIGN1c3RvbWl6ZWQgYnkgcmVwbGFjaW5nIHRoZSBgXy5tZW1vaXplLkNhY2hlYFxuICAgICAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gICAgICogW2BNYXBgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1tYXAtcHJvdG90eXBlLW9iamVjdClcbiAgICAgKiBtZXRob2QgaW50ZXJmYWNlIG9mIGBjbGVhcmAsIGBkZWxldGVgLCBgZ2V0YCwgYGhhc2AsIGFuZCBgc2V0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICogdmFyIG90aGVyID0geyAnYyc6IDMsICdkJzogNCB9O1xuICAgICAqXG4gICAgICogdmFyIHZhbHVlcyA9IF8ubWVtb2l6ZShfLnZhbHVlcyk7XG4gICAgICogdmFsdWVzKG9iamVjdCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiB2YWx1ZXMob3RoZXIpO1xuICAgICAqIC8vID0+IFszLCA0XVxuICAgICAqXG4gICAgICogb2JqZWN0LmEgPSAyO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gICAgICogdmFsdWVzLmNhY2hlLnNldChvYmplY3QsIFsnYScsICdiJ10pO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKlxuICAgICAqIC8vIFJlcGxhY2UgYF8ubWVtb2l6ZS5DYWNoZWAuXG4gICAgICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplKGZ1bmMsIHJlc29sdmVyKSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgICAga2V5ID0gcmVzb2x2ZXIgPyByZXNvbHZlci5hcHBseSh0aGlzLCBhcmdzKSA6IGFyZ3NbMF0sXG4gICAgICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgICAgIHJldHVybiBjYWNoZS5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgbWVtb2l6ZWQuY2FjaGUgPSBjYWNoZS5zZXQoa2V5LCByZXN1bHQpIHx8IGNhY2hlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgICAgIHJldHVybiBtZW1vaXplZDtcbiAgICB9XG5cbiAgICAvLyBFeHBvc2UgYE1hcENhY2hlYC5cbiAgICBtZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBuZWdhdGVzIHRoZSByZXN1bHQgb2YgdGhlIHByZWRpY2F0ZSBgZnVuY2AuIFRoZVxuICAgICAqIGBmdW5jYCBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIHByZWRpY2F0ZSB0byBuZWdhdGUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbmVnYXRlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gaXNFdmVuKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKFsxLCAyLCAzLCA0LCA1LCA2XSwgXy5uZWdhdGUoaXNFdmVuKSk7XG4gICAgICogLy8gPT4gWzEsIDMsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbmVnYXRlKHByZWRpY2F0ZSkge1xuICAgICAgaWYgKHR5cGVvZiBwcmVkaWNhdGUgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMpO1xuICAgICAgICAgIGNhc2UgMTogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdKTtcbiAgICAgICAgICBjYXNlIDI6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhcHJlZGljYXRlLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpcyByZXN0cmljdGVkIHRvIGludm9raW5nIGBmdW5jYCBvbmNlLiBSZXBlYXQgY2FsbHNcbiAgICAgKiB0byB0aGUgZnVuY3Rpb24gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgaW52b2NhdGlvbi4gVGhlIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBpbml0aWFsaXplID0gXy5vbmNlKGNyZWF0ZUFwcGxpY2F0aW9uKTtcbiAgICAgKiBpbml0aWFsaXplKCk7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIC8vID0+IGBjcmVhdGVBcHBsaWNhdGlvbmAgaXMgaW52b2tlZCBvbmNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gb25jZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmVmb3JlKDIsIGZ1bmMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50cyB0cmFuc2Zvcm1lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFt0cmFuc2Zvcm1zPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGFyZ3VtZW50IHRyYW5zZm9ybXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGRvdWJsZWQobikge1xuICAgICAqICAgcmV0dXJuIG4gKiAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJBcmdzKGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgKiAgIHJldHVybiBbeCwgeV07XG4gICAgICogfSwgW3NxdWFyZSwgZG91YmxlZF0pO1xuICAgICAqXG4gICAgICogZnVuYyg5LCAzKTtcbiAgICAgKiAvLyA9PiBbODEsIDZdXG4gICAgICpcbiAgICAgKiBmdW5jKDEwLCA1KTtcbiAgICAgKiAvLyA9PiBbMTAwLCAxMF1cbiAgICAgKi9cbiAgICB2YXIgb3ZlckFyZ3MgPSBjYXN0UmVzdChmdW5jdGlvbihmdW5jLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB0cmFuc2Zvcm1zID0gKHRyYW5zZm9ybXMubGVuZ3RoID09IDEgJiYgaXNBcnJheSh0cmFuc2Zvcm1zWzBdKSlcbiAgICAgICAgPyBhcnJheU1hcCh0cmFuc2Zvcm1zWzBdLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpXG4gICAgICAgIDogYXJyYXlNYXAoYmFzZUZsYXR0ZW4odHJhbnNmb3JtcywgMSksIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG5cbiAgICAgIHZhciBmdW5jc0xlbmd0aCA9IHRyYW5zZm9ybXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4oYXJncy5sZW5ndGgsIGZ1bmNzTGVuZ3RoKTtcblxuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gdHJhbnNmb3Jtc1tpbmRleF0uY2FsbCh0aGlzLCBhcmdzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZVxuICAgICAqIGFyZ3VtZW50cyBpdCByZWNlaXZlcy4gVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5iaW5kYCBleGNlcHQgaXQgZG9lcyAqKm5vdCoqXG4gICAgICogYWx0ZXIgdGhlIGB0aGlzYCBiaW5kaW5nLlxuICAgICAqXG4gICAgICogVGhlIGBfLnBhcnRpYWwucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIHNheUhlbGxvVG8gPSBfLnBhcnRpYWwoZ3JlZXQsICdoZWxsbycpO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBncmVldEZyZWQgPSBfLnBhcnRpYWwoZ3JlZXQsIF8sICdmcmVkJyk7XG4gICAgICogZ3JlZXRGcmVkKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkJ1xuICAgICAqL1xuICAgIHZhciBwYXJ0aWFsID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsKSk7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1BBUlRJQUxfRkxBRywgdW5kZWZpbmVkLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnBhcnRpYWxgIGV4Y2VwdCB0aGF0IHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50c1xuICAgICAqIGFyZSBhcHBlbmRlZCB0byB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogVGhlIGBfLnBhcnRpYWxSaWdodC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgcGFydGlhbGx5XG4gICAgICogYXBwbGllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkgYXJndW1lbnRzIHRvLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHBhcnRpYWxseSBhcHBsaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBncmVldChncmVldGluZywgbmFtZSkge1xuICAgICAqICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgbmFtZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdmcmVkJyk7XG4gICAgICogZ3JlZXRGcmVkKCdoaScpO1xuICAgICAqIC8vID0+ICdoaSBmcmVkJ1xuICAgICAqXG4gICAgICogLy8gUGFydGlhbGx5IGFwcGxpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIHNheUhlbGxvVG8gPSBfLnBhcnRpYWxSaWdodChncmVldCwgJ2hlbGxvJywgXyk7XG4gICAgICogc2F5SGVsbG9UbygnZnJlZCcpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkJ1xuICAgICAqL1xuICAgIHZhciBwYXJ0aWFsUmlnaHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKHBhcnRpYWxSaWdodCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBhcmd1bWVudHMgYXJyYW5nZWQgYWNjb3JkaW5nXG4gICAgICogdG8gdGhlIHNwZWNpZmllZCBgaW5kZXhlc2Agd2hlcmUgdGhlIGFyZ3VtZW50IHZhbHVlIGF0IHRoZSBmaXJzdCBpbmRleCBpc1xuICAgICAqIHByb3ZpZGVkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgdGhlIGFyZ3VtZW50IHZhbHVlIGF0IHRoZSBzZWNvbmQgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBhbmQgc28gb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZWFycmFuZ2UgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcmd1bWVudCBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgcmVhcmdlZCA9IF8ucmVhcmcoZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9LCBbMiwgMCwgMV0pO1xuICAgICAqXG4gICAgICogcmVhcmdlZCgnYicsICdjJywgJ2EnKVxuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIHZhciByZWFyZyA9IGZsYXRSZXN0KGZ1bmN0aW9uKGZ1bmMsIGluZGV4ZXMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUkVBUkdfRkxBRywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgaW5kZXhlcyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgZnJvbSBgc3RhcnRgIGFuZCBiZXlvbmQgcHJvdmlkZWQgYXNcbiAgICAgKiBhbiBhcnJheS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbcmVzdCBwYXJhbWV0ZXJdKGh0dHBzOi8vbWRuLmlvL3Jlc3RfcGFyYW1ldGVycykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNheSA9IF8ucmVzdChmdW5jdGlvbih3aGF0LCBuYW1lcykge1xuICAgICAqICAgcmV0dXJuIHdoYXQgKyAnICcgKyBfLmluaXRpYWwobmFtZXMpLmpvaW4oJywgJykgK1xuICAgICAqICAgICAoXy5zaXplKG5hbWVzKSA+IDEgPyAnLCAmICcgOiAnJykgKyBfLmxhc3QobmFtZXMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogc2F5KCdoZWxsbycsICdmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQsIGJhcm5leSwgJiBwZWJibGVzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT09IHVuZGVmaW5lZCA/IHN0YXJ0IDogdG9JbnRlZ2VyKHN0YXJ0KTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jLCBzdGFydCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlIGZ1bmN0aW9uIGFuZCBhbiBhcnJheSBvZiBhcmd1bWVudHMgbXVjaCBsaWtlXG4gICAgICogW2BGdW5jdGlvbiNhcHBseWBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1mdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZVxuICAgICAqIFtzcHJlYWQgb3BlcmF0b3JdKGh0dHBzOi8vbWRuLmlvL3NwcmVhZF9vcGVyYXRvcikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBzcHJlYWQgYXJndW1lbnRzIG92ZXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHNwcmVhZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHNheSA9IF8uc3ByZWFkKGZ1bmN0aW9uKHdobywgd2hhdCkge1xuICAgICAqICAgcmV0dXJuIHdobyArICcgc2F5cyAnICsgd2hhdDtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheShbJ2ZyZWQnLCAnaGVsbG8nXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQgc2F5cyBoZWxsbydcbiAgICAgKlxuICAgICAqIHZhciBudW1iZXJzID0gUHJvbWlzZS5hbGwoW1xuICAgICAqICAgUHJvbWlzZS5yZXNvbHZlKDQwKSxcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSgzNilcbiAgICAgKiBdKTtcbiAgICAgKlxuICAgICAqIG51bWJlcnMudGhlbihfLnNwcmVhZChmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4geCArIHk7XG4gICAgICogfSkpO1xuICAgICAqIC8vID0+IGEgUHJvbWlzZSBvZiA3NlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNwcmVhZChmdW5jLCBzdGFydCkge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSBzdGFydCA9PSBudWxsID8gMCA6IG5hdGl2ZU1heCh0b0ludGVnZXIoc3RhcnQpLCAwKTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBhcnJheSA9IGFyZ3Nbc3RhcnRdLFxuICAgICAgICAgICAgb3RoZXJBcmdzID0gY2FzdFNsaWNlKGFyZ3MsIDAsIHN0YXJ0KTtcblxuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBhcnJheVB1c2gob3RoZXJBcmdzLCBhcnJheSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgdGhyb3R0bGVkIGZ1bmN0aW9uIHRoYXQgb25seSBpbnZva2VzIGBmdW5jYCBhdCBtb3N0IG9uY2UgcGVyXG4gICAgICogZXZlcnkgYHdhaXRgIG1pbGxpc2Vjb25kcy4gVGhlIHRocm90dGxlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGBcbiAgICAgKiBtZXRob2QgdG8gY2FuY2VsIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvXG4gICAgICogaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgXG4gICAgICogc2hvdWxkIGJlIGludm9rZWQgb24gdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YFxuICAgICAqIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZCB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGVcbiAgICAgKiB0aHJvdHRsZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnQgY2FsbHMgdG8gdGhlIHRocm90dGxlZCBmdW5jdGlvbiByZXR1cm4gdGhlXG4gICAgICogcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYCBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgdGhyb3R0bGVkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy50aHJvdHRsZWAgYW5kIGBfLmRlYm91bmNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHRocm90dGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aHJvdHRsZSBpbnZvY2F0aW9ucyB0by5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAgICAgKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB0aHJvdHRsZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIEF2b2lkIGV4Y2Vzc2l2ZWx5IHVwZGF0aW5nIHRoZSBwb3NpdGlvbiB3aGlsZSBzY3JvbGxpbmcuXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3Njcm9sbCcsIF8udGhyb3R0bGUodXBkYXRlUG9zaXRpb24sIDEwMCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGByZW5ld1Rva2VuYCB3aGVuIHRoZSBjbGljayBldmVudCBpcyBmaXJlZCwgYnV0IG5vdCBtb3JlIHRoYW4gb25jZSBldmVyeSA1IG1pbnV0ZXMuXG4gICAgICogdmFyIHRocm90dGxlZCA9IF8udGhyb3R0bGUocmVuZXdUb2tlbiwgMzAwMDAwLCB7ICd0cmFpbGluZyc6IGZhbHNlIH0pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB0aHJvdHRsZWQpO1xuICAgICAqXG4gICAgICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyB0aHJvdHRsZWQgaW52b2NhdGlvbi5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCB0aHJvdHRsZWQuY2FuY2VsKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJvdHRsZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVhZGluZyA9IHRydWUsXG4gICAgICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICdsZWFkaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLmxlYWRpbmcgOiBsZWFkaW5nO1xuICAgICAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlYm91bmNlKGZ1bmMsIHdhaXQsIHtcbiAgICAgICAgJ2xlYWRpbmcnOiBsZWFkaW5nLFxuICAgICAgICAnbWF4V2FpdCc6IHdhaXQsXG4gICAgICAgICd0cmFpbGluZyc6IHRyYWlsaW5nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHVwIHRvIG9uZSBhcmd1bWVudCwgaWdub3JpbmcgYW55XG4gICAgICogYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICc4JywgJzEwJ10sIF8udW5hcnkocGFyc2VJbnQpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5hcnkoZnVuYykge1xuICAgICAgcmV0dXJuIGFyeShmdW5jLCAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwcm92aWRlcyBgdmFsdWVgIHRvIGB3cmFwcGVyYCBhcyBpdHMgZmlyc3RcbiAgICAgKiBhcmd1bWVudC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBmdW5jdGlvbiBhcmUgYXBwZW5kZWRcbiAgICAgKiB0byB0aG9zZSBwcm92aWRlZCB0byB0aGUgYHdyYXBwZXJgLiBUaGUgd3JhcHBlciBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFt3cmFwcGVyPWlkZW50aXR5XSBUaGUgd3JhcHBlciBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHAgPSBfLndyYXAoXy5lc2NhcGUsIGZ1bmN0aW9uKGZ1bmMsIHRleHQpIHtcbiAgICAgKiAgIHJldHVybiAnPHA+JyArIGZ1bmModGV4dCkgKyAnPC9wPic7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBwKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICc8cD5mcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXM8L3A+J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXAodmFsdWUsIHdyYXBwZXIpIHtcbiAgICAgIHJldHVybiBwYXJ0aWFsKGNhc3RGdW5jdGlvbih3cmFwcGVyKSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgYXMgYW4gYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoMSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh7ICdhJzogMSB9KTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2FiYyddXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheShudWxsKTtcbiAgICAgKiAvLyA9PiBbbnVsbF1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gW3VuZGVmaW5lZF1cbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCAyLCAzXTtcbiAgICAgKiBjb25zb2xlLmxvZyhfLmNhc3RBcnJheShhcnJheSkgPT09IGFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdEFycmF5KCkge1xuICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciB2YWx1ZSA9IGFyZ3VtZW50c1swXTtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2hhbGxvdyBjbG9uZSBvZiBgdmFsdWVgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gICAgICogW3N0cnVjdHVyZWQgY2xvbmUgYWxnb3JpdGhtXShodHRwczovL21kbi5pby9TdHJ1Y3R1cmVkX2Nsb25lX2FsZ29yaXRobSlcbiAgICAgKiBhbmQgc3VwcG9ydHMgY2xvbmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLCBkYXRlIG9iamVjdHMsIG1hcHMsXG4gICAgICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gICAgICogYXJyYXlzLiBUaGUgb3duIGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBgYXJndW1lbnRzYCBvYmplY3RzIGFyZSBjbG9uZWRcbiAgICAgKiBhcyBwbGFpbiBvYmplY3RzLiBBbiBlbXB0eSBvYmplY3QgaXMgcmV0dXJuZWQgZm9yIHVuY2xvbmVhYmxlIHZhbHVlcyBzdWNoXG4gICAgICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICAgICAqXG4gICAgICogdmFyIHNoYWxsb3cgPSBfLmNsb25lKG9iamVjdHMpO1xuICAgICAqIGNvbnNvbGUubG9nKHNoYWxsb3dbMF0gPT09IG9iamVjdHNbMF0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgY2xvbmVkIHZhbHVlLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCxcbiAgICAgKiBjbG9uaW5nIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHVwIHRvIGZvdXIgYXJndW1lbnRzOyAodmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIHN0YWNrXSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVEZWVwV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKHZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0VsZW1lbnQodmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB2YWx1ZS5jbG9uZU5vZGUoZmFsc2UpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBlbCA9IF8uY2xvbmVXaXRoKGRvY3VtZW50LmJvZHksIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZWwgPT09IGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICogY29uc29sZS5sb2coZWwubm9kZU5hbWUpO1xuICAgICAqIC8vID0+ICdCT0RZJ1xuICAgICAqIGNvbnNvbGUubG9nKGVsLmNoaWxkTm9kZXMubGVuZ3RoKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoKHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY2xvbmVgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZGVlcCBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICAgICAqXG4gICAgICogdmFyIGRlZXAgPSBfLmNsb25lRGVlcChvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lV2l0aGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKHRydWUpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBlbCA9IF8uY2xvbmVEZWVwV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXBXaXRoKHZhbHVlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgb2JqZWN0YCBjb25mb3JtcyB0byBgc291cmNlYCBieSBpbnZva2luZyB0aGUgcHJlZGljYXRlXG4gICAgICogcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zYCB3aGVuIGBzb3VyY2VgIGlzXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBjb25mb3JtcywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqXG4gICAgICogXy5jb25mb3Jtc1RvKG9iamVjdCwgeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMjsgfSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2UgPT0gbnVsbCB8fCBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhXG4gICAgICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmVxKCdhJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmVxKE5hTiwgTmFOKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5ndCgzLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5ndCgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndCA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUd0KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvXG4gICAgICogIGBvdGhlcmAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8ubHRlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZ3RlKDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3RlKDMsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3RlKDEsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGd0ZSA9IGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gb3RoZXI7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5KF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheUJ1ZmZlcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheUJ1ZmZlcigyKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheSgyKSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNBcnJheUJ1ZmZlciA9IG5vZGVJc0FycmF5QnVmZmVyID8gYmFzZVVuYXJ5KG5vZGVJc0FycmF5QnVmZmVyKSA6IGJhc2VJc0FycmF5QnVmZmVyO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICAgICAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAgICAgKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gICAgICogaXMgYW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheS1saWtlIG9iamVjdCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYm9vbGVhbiBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJvb2xlYW4sIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Jvb2xlYW4oZmFsc2UpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGJvb2xUYWcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBEYXRlYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0RhdGUobmV3IERhdGUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKCdNb24gQXByaWwgMjMgMjAxMicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzRGF0ZSA9IG5vZGVJc0RhdGUgPyBiYXNlVW5hcnkobm9kZUlzRGF0ZSkgOiBiYXNlSXNEYXRlO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgRE9NIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgRE9NIGVsZW1lbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0VsZW1lbnQoZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VsZW1lbnQoJzxib2R5PicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMSAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAgICAgKlxuICAgICAqIE9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIG5vIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZFxuICAgICAqIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBBcnJheS1saWtlIHZhbHVlcyBzdWNoIGFzIGBhcmd1bWVudHNgIG9iamVjdHMsIGFycmF5cywgYnVmZmVycywgc3RyaW5ncywgb3JcbiAgICAgKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gICAgICogU2ltaWxhcmx5LCBtYXBzIGFuZCBzZXRzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBhIGBzaXplYCBvZiBgMGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGVtcHR5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eShudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkodHJ1ZSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eShbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VtcHR5KHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgICAgICAoaXNBcnJheSh2YWx1ZSkgfHwgdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZS5zcGxpY2UgPT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICAgICAgaXNCdWZmZXIodmFsdWUpIHx8IGlzVHlwZWRBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpKSkge1xuICAgICAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpO1xuICAgICAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgICAgICByZXR1cm4gIXZhbHVlLnNpemU7XG4gICAgICB9XG4gICAgICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAhYmFzZUtleXModmFsdWUpLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYSBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZVxuICAgICAqIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2Qgc3VwcG9ydHMgY29tcGFyaW5nIGFycmF5cywgYXJyYXkgYnVmZmVycywgYm9vbGVhbnMsXG4gICAgICogZGF0ZSBvYmplY3RzLCBlcnJvciBvYmplY3RzLCBtYXBzLCBudW1iZXJzLCBgT2JqZWN0YCBvYmplY3RzLCByZWdleGVzLFxuICAgICAqIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZCBhcnJheXMuIGBPYmplY3RgIG9iamVjdHMgYXJlIGNvbXBhcmVkXG4gICAgICogYnkgdGhlaXIgb3duLCBub3QgaW5oZXJpdGVkLCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuIEZ1bmN0aW9ucyBhbmQgRE9NXG4gICAgICogbm9kZXMgYXJlIGNvbXBhcmVkIGJ5IHN0cmljdCBlcXVhbGl0eSwgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmlzRXF1YWwob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogb2JqZWN0ID09PSBvdGhlcjtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzRXF1YWxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBjb21wYXJlIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIGNvbXBhcmlzb25zXG4gICAgICogYXJlIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCB1cCB0b1xuICAgICAqIHNpeCBhcmd1bWVudHM6IChvYmpWYWx1ZSwgb3RoVmFsdWUgWywgaW5kZXh8a2V5LCBvYmplY3QsIG90aGVyLCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICAgICAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSkge1xuICAgICAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcob3RoVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB0cnVlO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnaGVsbG8nLCAnZ29vZGJ5ZSddO1xuICAgICAqIHZhciBvdGhlciA9IFsnaGknLCAnZ29vZGJ5ZSddO1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsV2l0aChhcnJheSwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsV2l0aCh2YWx1ZSwgb3RoZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyID8gY3VzdG9taXplcih2YWx1ZSwgb3RoZXIpIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gYmFzZUlzRXF1YWwodmFsdWUsIG90aGVyLCB1bmRlZmluZWQsIGN1c3RvbWl6ZXIpIDogISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gYEVycm9yYCwgYEV2YWxFcnJvcmAsIGBSYW5nZUVycm9yYCwgYFJlZmVyZW5jZUVycm9yYCxcbiAgICAgKiBgU3ludGF4RXJyb3JgLCBgVHlwZUVycm9yYCwgb3IgYFVSSUVycm9yYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRXJyb3IoRXJyb3IpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgICAgIHJldHVybiB0YWcgPT0gZXJyb3JUYWcgfHwgdGFnID09IGRvbUV4Y1RhZyB8fFxuICAgICAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBwcmltaXRpdmUgbnVtYmVyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNGaW5pdGVgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNGaW5pdGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZpbml0ZSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0Zpbml0ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJiBuYXRpdmVJc0Zpbml0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGdW5jdGlvbihfKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gVGhlIHVzZSBvZiBgT2JqZWN0I3RvU3RyaW5nYCBhdm9pZHMgaXNzdWVzIHdpdGggdGhlIGB0eXBlb2ZgIG9wZXJhdG9yXG4gICAgICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgICAgIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgICAgIHJldHVybiB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnIHx8IHRhZyA9PSBhc3luY1RhZyB8fCB0YWcgPT0gcHJveHlUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0ludGVnZXIpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBpbnRlZ2VyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0ludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT0gdG9JbnRlZ2VyKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgICAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gICAgICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICAgICAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3Qoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gICAgICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IE1hcCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBgb2JqZWN0YCBhbmQgYHNvdXJjZWAgdG9cbiAgICAgKiBkZXRlcm1pbmUgaWYgYG9iamVjdGAgY29udGFpbnMgZXF1aXZhbGVudCBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5tYXRjaGVzYCB3aGVuIGBzb3VyY2VgIGlzXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaChvYmplY3QsIHsgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXRjaChvYmplY3QsIHsgJ2InOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXRjaChvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBnZXRNYXRjaERhdGEoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc01hdGNoYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggZml2ZVxuICAgICAqIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwgaW5kZXh8a2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gaXNHcmVldGluZyh2YWx1ZSkge1xuICAgICAqICAgcmV0dXJuIC9eaCg/Oml8ZWxsbykkLy50ZXN0KHZhbHVlKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgaWYgKGlzR3JlZXRpbmcob2JqVmFsdWUpICYmIGlzR3JlZXRpbmcoc3JjVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiB0cnVlO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdncmVldGluZyc6ICdoZWxsbycgfTtcbiAgICAgKiB2YXIgc291cmNlID0geyAnZ3JlZXRpbmcnOiAnaGknIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXRjaFdpdGgob2JqZWN0LCBzb3VyY2UsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBOYU5gLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNOYU5gXShodHRwczovL21kbi5pby9OdW1iZXIvaXNOYU4pIGFuZCBpcyBub3QgdGhlIHNhbWUgYXNcbiAgICAgKiBnbG9iYWwgW2Bpc05hTmBdKGh0dHBzOi8vbWRuLmlvL2lzTmFOKSB3aGljaCByZXR1cm5zIGB0cnVlYCBmb3JcbiAgICAgKiBgdW5kZWZpbmVkYCBhbmQgb3RoZXIgbm9uLW51bWJlciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYU4oTmFOKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKG5ldyBOdW1iZXIoTmFOKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogaXNOYU4odW5kZWZpbmVkKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hTih2YWx1ZSkge1xuICAgICAgLy8gQW4gYE5hTmAgcHJpbWl0aXZlIGlzIHRoZSBvbmx5IHZhbHVlIHRoYXQgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi5cbiAgICAgIC8vIFBlcmZvcm0gdGhlIGB0b1N0cmluZ1RhZ2AgY2hlY2sgZmlyc3QgdG8gYXZvaWQgZXJyb3JzIHdpdGggc29tZVxuICAgICAgLy8gQWN0aXZlWCBvYmplY3RzIGluIElFLlxuICAgICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSAmJiB2YWx1ZSAhPSArdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcmlzdGluZSBuYXRpdmUgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgY2FuJ3QgcmVsaWFibHkgZGV0ZWN0IG5hdGl2ZSBmdW5jdGlvbnMgaW4gdGhlIHByZXNlbmNlXG4gICAgICogb2YgdGhlIGNvcmUtanMgcGFja2FnZSBiZWNhdXNlIGNvcmUtanMgY2lyY3VtdmVudHMgdGhpcyBraW5kIG9mIGRldGVjdGlvbi5cbiAgICAgKiBEZXNwaXRlIG11bHRpcGxlIHJlcXVlc3RzLCB0aGUgY29yZS1qcyBtYWludGFpbmVyIGhhcyBtYWRlIGl0IGNsZWFyOiBhbnlcbiAgICAgKiBhdHRlbXB0IHRvIGZpeCB0aGUgZGV0ZWN0aW9uIHdpbGwgYmUgb2JzdHJ1Y3RlZC4gQXMgYSByZXN1bHQsIHdlJ3JlIGxlZnRcbiAgICAgKiB3aXRoIGxpdHRsZSBjaG9pY2UgYnV0IHRvIHRocm93IGFuIGVycm9yLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGFsc28gYWZmZWN0c1xuICAgICAqIHBhY2thZ2VzLCBsaWtlIFtiYWJlbC1wb2x5ZmlsbF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYmFiZWwtcG9seWZpbGwpLFxuICAgICAqIHdoaWNoIHJlbHkgb24gY29yZS1qcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBuYXRpdmUgZnVuY3Rpb24sXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc05hdGl2ZShBcnJheS5wcm90b3R5cGUucHVzaCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hdGl2ZShfKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoaXNNYXNrYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKENPUkVfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBudWxsYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTnVsbChudWxsKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVsbCh2b2lkIDApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOdWxsKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBudWxsaXNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05pbCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE51bWJlcmAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUbyBleGNsdWRlIGBJbmZpbml0eWAsIGAtSW5maW5pdHlgLCBhbmQgYE5hTmAsIHdoaWNoIGFyZVxuICAgICAqIGNsYXNzaWZpZWQgYXMgbnVtYmVycywgdXNlIHRoZSBgXy5pc0Zpbml0ZWAgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gbnVtYmVyVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gICAgICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuOC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgICAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICAgICAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgICAgIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBSZWdFeHBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSByZWdleHAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1JlZ0V4cCgvYWJjLyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1JlZ0V4cCgnL2FiYy8nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc1JlZ0V4cCA9IG5vZGVJc1JlZ0V4cCA/IGJhc2VVbmFyeShub2RlSXNSZWdFeHApIDogYmFzZUlzUmVnRXhwO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIuIEFuIGludGVnZXIgaXMgc2FmZSBpZiBpdCdzIGFuIElFRUUtNzU0XG4gICAgICogZG91YmxlIHByZWNpc2lvbiBudW1iZXIgd2hpY2ggaXNuJ3QgdGhlIHJlc3VsdCBvZiBhIHJvdW5kZWQgdW5zYWZlIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc1NhZmVJbnRlZ2VyYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzU2FmZUludGVnZXIpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzU2FmZUludGVnZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU2FmZUludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0ludGVnZXIodmFsdWUpICYmIHZhbHVlID49IC1NQVhfU0FGRV9JTlRFR0VSICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTZXRgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgU2V0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTdHJpbmdgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTdHJpbmcoMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAoIWlzQXJyYXkodmFsdWUpICYmIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3RyaW5nVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAgICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgdHlwZWQgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzVW5kZWZpbmVkKHZvaWQgMCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZChudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFdlYWtNYXBgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha01hcChuZXcgV2Vha01hcCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IE1hcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gd2Vha01hcFRhZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFdlYWtTZXRgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB3ZWFrIHNldCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzV2Vha1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHdlYWtTZXRUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmx0KDEsIDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8ubHQoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8ubHQoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHQgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VMdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmd0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmx0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBsdGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlIDw9IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0FycmF5KHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkoJ2FiYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KDEpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiBfLnRvQXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0FycmF5KHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHN0cmluZ1RvQXJyYXkodmFsdWUpIDogY29weUFycmF5KHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzeW1JdGVyYXRvciAmJiB2YWx1ZVtzeW1JdGVyYXRvcl0pIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yVG9BcnJheSh2YWx1ZVtzeW1JdGVyYXRvcl0oKSk7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICBmdW5jID0gdGFnID09IG1hcFRhZyA/IG1hcFRvQXJyYXkgOiAodGFnID09IHNldFRhZyA/IHNldFRvQXJyYXkgOiB2YWx1ZXMpO1xuXG4gICAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMi4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICAgICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAgICAgKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcigzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoJzMuMicpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gcmVzdWx0ID8gKHJlbWFpbmRlciA/IHJlc3VsdCAtIHJlbWFpbmRlciA6IHJlc3VsdCkgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlciBzdWl0YWJsZSBmb3IgdXNlIGFzIHRoZSBsZW5ndGggb2YgYW5cbiAgICAgKiBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDQyOTQ5NjcyOTVcbiAgICAgKlxuICAgICAqIF8udG9MZW5ndGgoJzMuMicpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0xlbmd0aCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIDAsIE1BWF9BUlJBWV9MRU5HVEgpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b051bWJlcigzLjIpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqXG4gICAgICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiA1ZS0zMjRcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IEluZmluaXR5XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgICB9XG4gICAgICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICAgICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IGJhc2VUcmltKHZhbHVlKTtcbiAgICAgIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAgICAgKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgcGxhaW4gb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIF8udG9QbGFpbk9iamVjdChuZXcgRm9vKSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHNhZmUgaW50ZWdlci4gQSBzYWZlIGludGVnZXIgY2FuIGJlIGNvbXBhcmVkIGFuZFxuICAgICAqIHJlcHJlc2VudGVkIGNvcnJlY3RseS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gOTAwNzE5OTI1NDc0MDk5MVxuICAgICAqXG4gICAgICogXy50b1NhZmVJbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9TYWZlSW50ZWdlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgID8gYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKVxuICAgICAgICA6ICh2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAgICAgKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKG51bGwpO1xuICAgICAqIC8vID0+ICcnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKC0wKTtcbiAgICAgKiAvLyA9PiAnLTAnXG4gICAgICpcbiAgICAgKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gJzEsMiwzJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIFN1YnNlcXVlbnQgc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgIGFuZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BPYmplY3QuYXNzaWduYF0oaHR0cHM6Ly9tZG4uaW8vT2JqZWN0L2Fzc2lnbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25JblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDAgfSwgbmV3IEZvbywgbmV3IEJhcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbiA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlKSB7XG4gICAgICBpZiAoaXNQcm90b3R5cGUoc291cmNlKSB8fCBpc0FycmF5TGlrZShzb3VyY2UpKSB7XG4gICAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgb3duIGFuZFxuICAgICAqIGluaGVyaXRlZCBzb3VyY2UgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGV4dGVuZFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gQmFyKCkge1xuICAgICAqICAgdGhpcy5jID0gMztcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmIgPSAyO1xuICAgICAqIEJhci5wcm90b3R5cGUuZCA9IDQ7XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbkluKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMywgJ2QnOiA0IH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduSW4gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25JbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGFzc2lnbmVkIHZhbHVlcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnNcbiAgICAgKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICAgICAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRXaXRoXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbldpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduV2l0aCwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICB2YXIgYXNzaWduV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgY29weU9iamVjdChzb3VyY2UsIGtleXMoc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gYHBhdGhzYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9LCA0XSB9O1xuICAgICAqXG4gICAgICogXy5hdChvYmplY3QsIFsnYVswXS5iLmMnLCAnYVsxXSddKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgYXQgPSBmbGF0UmVzdChiYXNlQXQpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9tIHRoZSBgcHJvdG90eXBlYCBvYmplY3QuIElmIGFcbiAgICAgKiBgcHJvcGVydGllc2Agb2JqZWN0IGlzIGdpdmVuLCBpdHMgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXNcbiAgICAgKiBhcmUgYXNzaWduZWQgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGUgVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtwcm9wZXJ0aWVzXSBUaGUgcHJvcGVydGllcyB0byBhc3NpZ24gdG8gdGhlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBTaGFwZSgpIHtcbiAgICAgKiAgIHRoaXMueCA9IDA7XG4gICAgICogICB0aGlzLnkgPSAwO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIENpcmNsZSgpIHtcbiAgICAgKiAgIFNoYXBlLmNhbGwodGhpcyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogQ2lyY2xlLnByb3RvdHlwZSA9IF8uY3JlYXRlKFNoYXBlLnByb3RvdHlwZSwge1xuICAgICAqICAgJ2NvbnN0cnVjdG9yJzogQ2lyY2xlXG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiB2YXIgY2lyY2xlID0gbmV3IENpcmNsZTtcbiAgICAgKiBjaXJjbGUgaW5zdGFuY2VvZiBDaXJjbGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgU2hhcGU7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZShwcm90b3R5cGUsIHByb3BlcnRpZXMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBiYXNlQ3JlYXRlKHByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gcHJvcGVydGllcyA9PSBudWxsID8gcmVzdWx0IDogYmFzZUFzc2lnbihyZXN1bHQsIHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2VcbiAgICAgKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAgICAgKiByZXNvbHZlIHRvIGB1bmRlZmluZWRgLiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4gICAgICogT25jZSBhIHByb3BlcnR5IGlzIHNldCwgYWRkaXRpb25hbCB2YWx1ZXMgb2YgdGhlIHNhbWUgcHJvcGVydHkgYXJlIGlnbm9yZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNEZWVwXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICB2YXIgbGVuZ3RoID0gc291cmNlcy5sZW5ndGg7XG4gICAgICB2YXIgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgfVxuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICAgIHZhciBwcm9wcyA9IGtleXNJbihzb3VyY2UpO1xuICAgICAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgICAgICB2YXIgcHJvcHNMZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKCsrcHJvcHNJbmRleCA8IHByb3BzTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgICAgICBvYmplY3Rba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kZWZhdWx0c2AgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgYXNzaWduc1xuICAgICAqIGRlZmF1bHQgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZGVmYXVsdHNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0c0RlZXAoeyAnYSc6IHsgJ2InOiAyIH0gfSwgeyAnYSc6IHsgJ2InOiAxLCAnYyc6IDMgfSB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnYic6IDIsICdjJzogMyB9IH1cbiAgICAgKi9cbiAgICB2YXIgZGVmYXVsdHNEZWVwID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgYXJncy5wdXNoKHVuZGVmaW5lZCwgY3VzdG9tRGVmYXVsdHNNZXJnZSk7XG4gICAgICByZXR1cm4gYXBwbHkobWVyZ2VXaXRoLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBrZXkgb2YgdGhlIGZpcnN0XG4gICAgICogZWxlbWVudCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgaW5zdGVhZCBvZiB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlIDwgNDA7IH0pO1xuICAgICAqIC8vID0+ICdiYXJuZXknIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEtleWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGEgY29sbGVjdGlvbiBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd8dW5kZWZpbmVkfSBSZXR1cm5zIHRoZSBrZXkgb2YgdGhlIG1hdGNoZWQgZWxlbWVudCxcbiAgICAgKiAgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0ge1xuICAgICAqICAgJ2Jhcm5leSc6ICB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgICdmcmVkJzogICAgeyAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICdhZ2UnOiAxLCAgJ2FjdGl2ZSc6IHRydWUgfVxuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiByZXR1cm5zICdwZWJibGVzJyBhc3N1bWluZyBgXy5maW5kS2V5YCByZXR1cm5zICdiYXJuZXknXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RLZXkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiAncGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEtleShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgYmFzZUZvck93blJpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYW5cbiAgICAgKiBvYmplY3QgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICAgICAqIGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JJbihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnLCAnYicsIHRoZW4gJ2MnIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvckluKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3Iob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JJbmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9ySW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW5SaWdodChuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2MnLCAnYicsIHRoZW4gJ2EnIGFzc3VtaW5nIGBfLmZvckluYCBsb2dzICdhJywgJ2InLCB0aGVuICdjJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJblJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbFxuICAgICAgICA/IG9iamVjdFxuICAgICAgICA6IGJhc2VGb3JSaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSwga2V5c0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdCBhbmRcbiAgICAgKiBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWVcbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uXG4gICAgICogZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvck93blJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93bihuZXcgRm9vLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICBjb25zb2xlLmxvZyhrZXkpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgJ2EnIHRoZW4gJ2InIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd24ob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9yT3duYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIHByb3BlcnRpZXMgb2ZcbiAgICAgKiBgb2JqZWN0YCBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9yT3duUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdiJyB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JPd25gIGxvZ3MgJ2EnIHRoZW4gJ2InLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvck93blJpZ2h0KG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAgICAqIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc0luXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9ucyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGZ1bmN0aW9uIHByb3BlcnR5IG5hbWVzIGZyb20gb3duIGFuZCBpbmhlcml0ZWRcbiAgICAgKiBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lcy5cbiAgICAgKiBAc2VlIF8uZnVuY3Rpb25zXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IF8uY29uc3RhbnQoJ2EnKTtcbiAgICAgKiAgIHRoaXMuYiA9IF8uY29uc3RhbnQoJ2InKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSBfLmNvbnN0YW50KCdjJyk7XG4gICAgICpcbiAgICAgKiBfLmZ1bmN0aW9uc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9uc0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlRnVuY3Rpb25zKG9iamVjdCwga2V5c0luKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgdGhlIHJlc29sdmVkIHZhbHVlIGlzXG4gICAgICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIGB1bmRlZmluZWRgIHJlc29sdmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8uZ2V0KG9iamVjdCwgJ2EuYi5jJywgJ2RlZmF1bHQnKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRWYWx1ZSA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IHsgJ2InOiAyIH0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhcyhvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYS5iJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhcyhvdGhlciwgJ2EnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhcyhvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBvciBpbmhlcml0ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCAhPSBudWxsICYmIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBiYXNlSGFzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBpbnZlcnRlZCBrZXlzIGFuZCB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICogSWYgYG9iamVjdGAgY29udGFpbnMgZHVwbGljYXRlIHZhbHVlcywgc3Vic2VxdWVudCB2YWx1ZXMgb3ZlcndyaXRlXG4gICAgICogcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGludmVydGVkIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pbnZlcnQob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogJ2MnLCAnMic6ICdiJyB9XG4gICAgICovXG4gICAgdmFyIGludmVydCA9IGNyZWF0ZUludmVydGVyKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgICB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YWx1ZSA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRbdmFsdWVdID0ga2V5O1xuICAgIH0sIGNvbnN0YW50KGlkZW50aXR5KSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludmVydGAgZXhjZXB0IHRoYXQgdGhlIGludmVydGVkIG9iamVjdCBpcyBnZW5lcmF0ZWRcbiAgICAgKiBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmcgZWFjaCBlbGVtZW50IG9mIGBvYmplY3RgIHRocnUgYGl0ZXJhdGVlYC4gVGhlXG4gICAgICogY29ycmVzcG9uZGluZyBpbnZlcnRlZCB2YWx1ZSBvZiBlYWNoIGludmVydGVkIGtleSBpcyBhbiBhcnJheSBvZiBrZXlzXG4gICAgICogcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlIGludmVydGVkIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnZlcnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0Qnkob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAnZ3JvdXAnICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnZ3JvdXAxJzogWydhJywgJ2MnXSwgJ2dyb3VwMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICB2YXIgaW52ZXJ0QnkgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCB2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXS5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRbdmFsdWVdID0gW2tleV07XG4gICAgICB9XG4gICAgfSwgZ2V0SXRlcmF0ZWUpO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgbWV0aG9kIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2UuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IFsxLCAyLCAzLCA0XSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLmludm9rZShvYmplY3QsICdhWzBdLmIuYy5zbGljZScsIDEsIDMpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIHZhciBpbnZva2UgPSBiYXNlUmVzdChiYXNlSW52b2tlKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAgICAgKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gICAgICogZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5cyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLmtleXMoJ2hpJyk7XG4gICAgICogLy8gPT4gWycwJywgJzEnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5rZXlzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1hcFZhbHVlc2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IHdpdGggdGhlXG4gICAgICogc2FtZSB2YWx1ZXMgYXMgYG9iamVjdGAgYW5kIGtleXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgZWFjaCBvd24gZW51bWVyYWJsZVxuICAgICAqIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gICAgICogQHNlZSBfLm1hcFZhbHVlc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcEtleXMoeyAnYSc6IDEsICdiJzogMiB9LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICogICByZXR1cm4ga2V5ICsgdmFsdWU7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4geyAnYTEnOiAxLCAnYjInOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBLZXlzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGl0ZXJhdGVlKHZhbHVlLCBrZXksIG9iamVjdCksIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIGtleXMgYXMgYG9iamVjdGAgYW5kIHZhbHVlcyBnZW5lcmF0ZWRcbiAgICAgKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAgICAgKiBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czpcbiAgICAgKiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBLZXlzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICAncGViYmxlcyc6IHsgJ3VzZXInOiAncGViYmxlcycsICdhZ2UnOiAxIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8uYWdlOyB9KTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcFZhbHVlcyh1c2VycywgJ2FnZScpO1xuICAgICAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgICAgIGJhc2VGb3JPd24ob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICAgICAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICAgICAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICAgICAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gICAgICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gICAgICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIG90aGVyID0ge1xuICAgICAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gICAgICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVyZ2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoXG4gICAgICogaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBtZXJnZWQgdmFsdWVzIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlXG4gICAgICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAgICAgKiBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggc2l4IGFyZ3VtZW50czpcbiAgICAgKiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlLCBzdGFjaykuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogWzFdLCAnYic6IFsyXSB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2EnOiBbM10sICdiJzogWzRdIH07XG4gICAgICpcbiAgICAgKiBfLm1lcmdlV2l0aChvYmplY3QsIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogWzEsIDNdLCAnYic6IFsyLCA0XSB9XG4gICAgICovXG4gICAgdmFyIG1lcmdlV2l0aCA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ucGlja2A7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZVxuICAgICAqIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgcGF0aHMgb2YgYG9iamVjdGAgdGhhdCBhcmUgbm90IG9taXR0ZWQuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIGBfLnBpY2tgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gb21pdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ub21pdChvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIHZhciBvbWl0ID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaXNEZWVwID0gZmFsc2U7XG4gICAgICBwYXRocyA9IGFycmF5TWFwKHBhdGhzLCBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgICBpc0RlZXAgfHwgKGlzRGVlcCA9IHBhdGgubGVuZ3RoID4gMSk7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgfSk7XG4gICAgICBjb3B5T2JqZWN0KG9iamVjdCwgZ2V0QWxsS2V5c0luKG9iamVjdCksIHJlc3VsdCk7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJlc3VsdCA9IGJhc2VDbG9uZShyZXN1bHQsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX0ZMQVRfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRywgY3VzdG9tT21pdENsb25lKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgYmFzZVVuc2V0KHJlc3VsdCwgcGF0aHNbbGVuZ3RoXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tCeWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mXG4gICAgICogdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2YgYG9iamVjdGAgdGhhdFxuICAgICAqIGBwcmVkaWNhdGVgIGRvZXNuJ3QgcmV0dXJuIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHR3b1xuICAgICAqIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXRCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2InOiAnMicgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9taXRCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHBpY2tCeShvYmplY3QsIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGljayhvYmplY3QsIFsnYScsICdjJ10pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBwaWNrID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8ge30gOiBiYXNlUGljayhvYmplY3QsIHBhdGhzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBgb2JqZWN0YCBwcm9wZXJ0aWVzIGBwcmVkaWNhdGVgIHJldHVybnNcbiAgICAgKiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAodmFsdWUsIGtleSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogJzInLCAnYyc6IDMgfTtcbiAgICAgKlxuICAgICAqIF8ucGlja0J5KG9iamVjdCwgXy5pc051bWJlcik7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gcGlja0J5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgdmFyIHByb3BzID0gYXJyYXlNYXAoZ2V0QWxsS2V5c0luKG9iamVjdCksIGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIFtwcm9wXTtcbiAgICAgIH0pO1xuICAgICAgcHJlZGljYXRlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlKTtcbiAgICAgIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcHJvcHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwcmVkaWNhdGUodmFsdWUsIHBhdGhbMF0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5nZXRgIGV4Y2VwdCB0aGF0IGlmIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBhXG4gICAgICogZnVuY3Rpb24gaXQncyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGl0cyBwYXJlbnQgb2JqZWN0IGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byByZXNvbHZlLlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYzEnOiAzLCAnYzInOiBfLmNvbnN0YW50KDQpIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMScpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMicpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8ucmVzdWx0KG9iamVjdCwgJ2FbMF0uYi5jMycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCBfLmNvbnN0YW50KCdkZWZhdWx0JykpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3VsdChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gICAgICAvLyBFbnN1cmUgdGhlIGxvb3AgaXMgZW50ZXJlZCB3aGVuIHBhdGggaXMgZW1wdHkuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICBvYmplY3QgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFt0b0tleShwYXRoW2luZGV4XSldO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluZGV4ID0gbGVuZ3RoO1xuICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IGlzRnVuY3Rpb24odmFsdWUpID8gdmFsdWUuY2FsbChvYmplY3QpIDogdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC4gSWYgYSBwb3J0aW9uIG9mIGBwYXRoYCBkb2Vzbid0IGV4aXN0LFxuICAgICAqIGl0J3MgY3JlYXRlZC4gQXJyYXlzIGFyZSBjcmVhdGVkIGZvciBtaXNzaW5nIGluZGV4IHByb3BlcnRpZXMgd2hpbGUgb2JqZWN0c1xuICAgICAqIGFyZSBjcmVhdGVkIGZvciBhbGwgb3RoZXIgbWlzc2luZyBwcm9wZXJ0aWVzLiBVc2UgYF8uc2V0V2l0aGAgdG8gY3VzdG9taXplXG4gICAgICogYHBhdGhgIGNyZWF0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5zZXQob2JqZWN0LCAnYVswXS5iLmMnLCA0KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgWyd4JywgJzAnLCAneScsICd6J10sIDUpO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC54WzBdLnkueik7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldChvYmplY3QsIHBhdGgsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlU2V0KG9iamVjdCwgcGF0aCwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0cyBvZiBgcGF0aGAuICBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYFxuICAgICAqIHBhdGggY3JlYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAobnNWYWx1ZSwga2V5LCBuc09iamVjdCkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnNldFdpdGgob2JqZWN0LCAnWzBdWzFdJywgJ2EnLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZC12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGBcbiAgICAgKiB3aGljaCBjYW4gYmUgY29uc3VtZWQgYnkgYF8uZnJvbVBhaXJzYC4gSWYgYG9iamVjdGAgaXMgYSBtYXAgb3Igc2V0LCBpdHNcbiAgICAgKiBlbnRyaWVzIGFyZSByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBlbnRyaWVzXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlycyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzID0gY3JlYXRlVG9QYWlycyhrZXlzKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnNcbiAgICAgKiBmb3IgYG9iamVjdGAgd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwXG4gICAgICogb3Igc2V0LCBpdHMgZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc0luXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udG9QYWlyc0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxXSwgWydiJywgMl0sIFsnYycsIDNdXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIHZhciB0b1BhaXJzSW4gPSBjcmVhdGVUb1BhaXJzKGtleXNJbik7XG5cbiAgICAvKipcbiAgICAgKiBBbiBhbHRlcm5hdGl2ZSB0byBgXy5yZWR1Y2VgOyB0aGlzIG1ldGhvZCB0cmFuc2Zvcm1zIGBvYmplY3RgIHRvIGEgbmV3XG4gICAgICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICAgICAqIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgdGhydSBgaXRlcmF0ZWVgLCB3aXRoIGVhY2ggaW52b2NhdGlvblxuICAgICAqIHBvdGVudGlhbGx5IG11dGF0aW5nIHRoZSBgYWNjdW11bGF0b3JgIG9iamVjdC4gSWYgYGFjY3VtdWxhdG9yYCBpcyBub3RcbiAgICAgKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gICAgICogaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOiAoYWNjdW11bGF0b3IsIHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBjdXN0b20gYWNjdW11bGF0b3IgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybShbMiwgMywgNF0sIGZ1bmN0aW9uKHJlc3VsdCwgbikge1xuICAgICAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgOV1cbiAgICAgKlxuICAgICAqIF8udHJhbnNmb3JtKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogfSwge30pO1xuICAgICAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmFuc2Zvcm0ob2JqZWN0LCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkob2JqZWN0KSxcbiAgICAgICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgICAgIGlmIChhY2N1bXVsYXRvciA9PSBudWxsKSB7XG4gICAgICAgIHZhciBDdG9yID0gb2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgICAgICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0gaXNBcnIgPyBuZXcgQ3RvciA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzRnVuY3Rpb24oQ3RvcikgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKSA6IHt9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFjY3VtdWxhdG9yID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIChpc0Fyckxpa2UgPyBhcnJheUVhY2ggOiBiYXNlRm9yT3duKShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlZShhY2N1bXVsYXRvciwgdmFsdWUsIGluZGV4LCBvYmplY3QpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyB0aGUgcHJvcGVydHkgYXQgYHBhdGhgIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdW5zZXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSBpcyBkZWxldGVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogNyB9IH1dIH07XG4gICAgICogXy51bnNldChvYmplY3QsICdhWzBdLmIuYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udW5zZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogW3sgJ2InOiB7fSB9XSB9O1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdHJ1ZSA6IGJhc2VVbnNldChvYmplY3QsIHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc2V0YCBleGNlcHQgdGhhdCBhY2NlcHRzIGB1cGRhdGVyYCB0byBwcm9kdWNlIHRoZVxuICAgICAqIHZhbHVlIHRvIHNldC4gVXNlIGBfLnVwZGF0ZVdpdGhgIHRvIGN1c3RvbWl6ZSBgcGF0aGAgY3JlYXRpb24uIFRoZSBgdXBkYXRlcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ2FbMF0uYi5jJywgZnVuY3Rpb24obikgeyByZXR1cm4gbiAqIG47IH0pO1xuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdC5hWzBdLmIuYyk7XG4gICAgICogLy8gPT4gOVxuICAgICAqXG4gICAgICogXy51cGRhdGUob2JqZWN0LCAneFswXS55LnonLCBmdW5jdGlvbihuKSB7IHJldHVybiBuID8gbiArIDEgOiAwOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1cGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVwZGF0ZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC42LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7fTtcbiAgICAgKlxuICAgICAqIF8udXBkYXRlV2l0aChvYmplY3QsICdbMF1bMV0nLCBfLmNvbnN0YW50KCdhJyksIE9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMCc6IHsgJzEnOiAnYScgfSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlV2l0aChvYmplY3QsIHBhdGgsIHVwZGF0ZXIsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCBjYXN0RnVuY3Rpb24odXBkYXRlciksIGN1c3RvbWl6ZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnZhbHVlcyhuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKlxuICAgICAqIF8udmFsdWVzKCdoaScpO1xuICAgICAqIC8vID0+IFsnaCcsICdpJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXMob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5XG4gICAgICogdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB2YWx1ZXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZVZhbHVlcyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDbGFtcHMgYG51bWJlcmAgd2l0aGluIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIGNsYW1wLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbG93ZXJdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdXBwZXIgVGhlIHVwcGVyIGJvdW5kLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNsYW1wZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNsYW1wKC0xMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IC01XG4gICAgICpcbiAgICAgKiBfLmNsYW1wKDEwLCAtNSwgNSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbG93ZXIsIHVwcGVyKSB7XG4gICAgICBpZiAodXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmICh1cHBlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHVwcGVyID0gdG9OdW1iZXIodXBwZXIpO1xuICAgICAgICB1cHBlciA9IHVwcGVyID09PSB1cHBlciA/IHVwcGVyIDogMDtcbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvd2VyID0gdG9OdW1iZXIobG93ZXIpO1xuICAgICAgICBsb3dlciA9IGxvd2VyID09PSBsb3dlciA/IGxvd2VyIDogMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlQ2xhbXAodG9OdW1iZXIobnVtYmVyKSwgbG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG5gIGlzIGJldHdlZW4gYHN0YXJ0YCBhbmQgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gSWZcbiAgICAgKiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLCBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICogSWYgYHN0YXJ0YCBpcyBncmVhdGVyIHRoYW4gYGVuZGAgdGhlIHBhcmFtcyBhcmUgc3dhcHBlZCB0byBzdXBwb3J0XG4gICAgICogbmVnYXRpdmUgcmFuZ2VzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMy4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLnJhbmdlLCBfLnJhbmdlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDMsIDIsIDQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg0LCA4KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgyLCAyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDEuMiwgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDUuMiwgNCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgtMywgLTIsIC02KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHN0YXJ0O1xuICAgICAgICBzdGFydCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbmQgPSB0b0Zpbml0ZShlbmQpO1xuICAgICAgfVxuICAgICAgbnVtYmVyID0gdG9OdW1iZXIobnVtYmVyKTtcbiAgICAgIHJldHVybiBiYXNlSW5SYW5nZShudW1iZXIsIHN0YXJ0LCBlbmQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2R1Y2VzIGEgcmFuZG9tIG51bWJlciBiZXR3ZWVuIHRoZSBpbmNsdXNpdmUgYGxvd2VyYCBhbmQgYHVwcGVyYCBib3VuZHMuXG4gICAgICogSWYgb25seSBvbmUgYXJndW1lbnQgaXMgcHJvdmlkZWQgYSBudW1iZXIgYmV0d2VlbiBgMGAgYW5kIHRoZSBnaXZlbiBudW1iZXJcbiAgICAgKiBpcyByZXR1cm5lZC4gSWYgYGZsb2F0aW5nYCBpcyBgdHJ1ZWAsIG9yIGVpdGhlciBgbG93ZXJgIG9yIGB1cHBlcmAgYXJlXG4gICAgICogZmxvYXRzLCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBpcyByZXR1cm5lZCBpbnN0ZWFkIG9mIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyPTBdIFRoZSBsb3dlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3VwcGVyPTFdIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmbG9hdGluZ10gU3BlY2lmeSByZXR1cm5pbmcgYSBmbG9hdGluZy1wb2ludCBudW1iZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcmFuZG9tIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMCwgNSk7XG4gICAgICogLy8gPT4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUpO1xuICAgICAqIC8vID0+IGFsc28gYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDUsIHRydWUpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMCBhbmQgNVxuICAgICAqXG4gICAgICogXy5yYW5kb20oMS4yLCA1LjIpO1xuICAgICAqIC8vID0+IGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGJldHdlZW4gMS4yIGFuZCA1LjJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByYW5kb20obG93ZXIsIHVwcGVyLCBmbG9hdGluZykge1xuICAgICAgaWYgKGZsb2F0aW5nICYmIHR5cGVvZiBmbG9hdGluZyAhPSAnYm9vbGVhbicgJiYgaXNJdGVyYXRlZUNhbGwobG93ZXIsIHVwcGVyLCBmbG9hdGluZykpIHtcbiAgICAgICAgdXBwZXIgPSBmbG9hdGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXBwZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSB1cHBlcjtcbiAgICAgICAgICB1cHBlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgbG93ZXIgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgZmxvYXRpbmcgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID09PSB1bmRlZmluZWQgJiYgdXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIHVwcGVyID0gMTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBsb3dlciA9IHRvRmluaXRlKGxvd2VyKTtcbiAgICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB1cHBlciA9IGxvd2VyO1xuICAgICAgICAgIGxvd2VyID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cHBlciA9IHRvRmluaXRlKHVwcGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvd2VyID4gdXBwZXIpIHtcbiAgICAgICAgdmFyIHRlbXAgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1cHBlcjtcbiAgICAgICAgdXBwZXIgPSB0ZW1wO1xuICAgICAgfVxuICAgICAgaWYgKGZsb2F0aW5nIHx8IGxvd2VyICUgMSB8fCB1cHBlciAlIDEpIHtcbiAgICAgICAgdmFyIHJhbmQgPSBuYXRpdmVSYW5kb20oKTtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZU1pbihsb3dlciArIChyYW5kICogKHVwcGVyIC0gbG93ZXIgKyBmcmVlUGFyc2VGbG9hdCgnMWUtJyArICgocmFuZCArICcnKS5sZW5ndGggLSAxKSkpKSwgdXBwZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBbY2FtZWwgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ2FtZWxDYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhbWVsIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqXG4gICAgICogXy5jYW1lbENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICovXG4gICAgdmFyIGNhbWVsQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgd29yZCA9IHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyBjYXBpdGFsaXplKHdvcmQpIDogd29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGBzdHJpbmdgIHRvIHVwcGVyIGNhc2UgYW5kIHRoZSByZW1haW5pbmdcbiAgICAgKiB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY2FwaXRhbGl6ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNhcGl0YWxpemUoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRnJlZCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZykge1xuICAgICAgcmV0dXJuIHVwcGVyRmlyc3QodG9TdHJpbmcoc3RyaW5nKS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWJ1cnJzIGBzdHJpbmdgIGJ5IGNvbnZlcnRpbmdcbiAgICAgKiBbTGF0aW4tMSBTdXBwbGVtZW50XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbi0xX1N1cHBsZW1lbnRfKFVuaWNvZGVfYmxvY2spI0NoYXJhY3Rlcl90YWJsZSlcbiAgICAgKiBhbmQgW0xhdGluIEV4dGVuZGVkLUFdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX0V4dGVuZGVkLUEpXG4gICAgICogbGV0dGVycyB0byBiYXNpYyBMYXRpbiBsZXR0ZXJzIGFuZCByZW1vdmluZ1xuICAgICAqIFtjb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NvbWJpbmluZ19EaWFjcml0aWNhbF9NYXJrcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZGVidXJyLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGRlYnVycmVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWJ1cnIoJ2TDqWrDoCB2dScpO1xuICAgICAqIC8vID0+ICdkZWphIHZ1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYnVycihzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gc3RyaW5nICYmIHN0cmluZy5yZXBsYWNlKHJlTGF0aW4sIGRlYnVyckxldHRlcikucmVwbGFjZShyZUNvbWJvTWFyaywgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBlbmRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249c3RyaW5nLmxlbmd0aF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lbmRzV2l0aCgnYWJjJywgJ2InLCAyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kc1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG5cbiAgICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbGVuZ3RoXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIGxlbmd0aCk7XG5cbiAgICAgIHZhciBlbmQgPSBwb3NpdGlvbjtcbiAgICAgIHBvc2l0aW9uIC09IHRhcmdldC5sZW5ndGg7XG4gICAgICByZXR1cm4gcG9zaXRpb24gPj0gMCAmJiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIGVuZCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBjaGFyYWN0ZXJzIFwiJlwiLCBcIjxcIiwgXCI+XCIsICdcIicsIGFuZCBcIidcIiBpbiBgc3RyaW5nYCB0byB0aGVpclxuICAgICAqIGNvcnJlc3BvbmRpbmcgSFRNTCBlbnRpdGllcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBjaGFyYWN0ZXJzIGFyZSBlc2NhcGVkLiBUbyBlc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIGNoYXJhY3RlcnMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogVGhvdWdoIHRoZSBcIj5cIiBjaGFyYWN0ZXIgaXMgZXNjYXBlZCBmb3Igc3ltbWV0cnksIGNoYXJhY3RlcnMgbGlrZVxuICAgICAqIFwiPlwiIGFuZCBcIi9cIiBkb24ndCBuZWVkIGVzY2FwaW5nIGluIEhUTUwgYW5kIGhhdmUgbm8gc3BlY2lhbCBtZWFuaW5nXG4gICAgICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICAgICAqIFtNYXRoaWFzIEJ5bmVucydzIGFydGljbGVdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9hbWJpZ3VvdXMtYW1wZXJzYW5kcylcbiAgICAgKiAodW5kZXIgXCJzZW1pLXJlbGF0ZWQgZnVuIGZhY3RcIikgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKlxuICAgICAqIFdoZW4gd29ya2luZyB3aXRoIEhUTUwgeW91IHNob3VsZCBhbHdheXNcbiAgICAgKiBbcXVvdGUgYXR0cmlidXRlIHZhbHVlc10oaHR0cDovL3dvbmtvLmNvbS9wb3N0L2h0bWwtZXNjYXBpbmcpIHRvIHJlZHVjZVxuICAgICAqIFhTUyB2ZWN0b3JzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHRoZSBgUmVnRXhwYCBzcGVjaWFsIGNoYXJhY3RlcnMgXCJeXCIsIFwiJFwiLCBcIlxcXCIsIFwiLlwiLCBcIipcIiwgXCIrXCIsXG4gICAgICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICAgICAqIC8vID0+ICdcXFtsb2Rhc2hcXF1cXChodHRwczovL2xvZGFzaFxcLmNvbS9cXCknXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBba2ViYWIgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3BlY2lhbF9jYXNlX3N0eWxlcykuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBrZWJhYiBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ua2ViYWJDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vLWJhcidcbiAgICAgKi9cbiAgICB2YXIga2ViYWJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJy0nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGxvd2VyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICpcbiAgICAgKiBfLmxvd2VyQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vIGJhcidcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byBsb3dlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGcmVkJyk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiBfLmxvd2VyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnZlJFRCdcbiAgICAgKi9cbiAgICB2YXIgbG93ZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9Mb3dlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFBhZHMgYHN0cmluZ2Agb24gdGhlIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLlxuICAgICAqIFBhZGRpbmcgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgY2FuJ3QgYmUgZXZlbmx5IGRpdmlkZWQgYnkgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDgpO1xuICAgICAqIC8vID0+ICcgIGFiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1hYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgaWYgKCFsZW5ndGggfHwgc3RyTGVuZ3RoID49IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIG1pZCA9IChsZW5ndGggLSBzdHJMZW5ndGgpIC8gMjtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlRmxvb3IobWlkKSwgY2hhcnMpICtcbiAgICAgICAgc3RyaW5nICtcbiAgICAgICAgY3JlYXRlUGFkZGluZyhuYXRpdmVDZWlsKG1pZCksIGNoYXJzKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSByaWdodCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2KTtcbiAgICAgKiAvLyA9PiAnYWJjICAgJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmNfLV8nXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRFbmQoc3RyaW5nLCBsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgbGVuZ3RoID0gdG9JbnRlZ2VyKGxlbmd0aCk7XG5cbiAgICAgIHZhciBzdHJMZW5ndGggPSBsZW5ndGggPyBzdHJpbmdTaXplKHN0cmluZykgOiAwO1xuICAgICAgcmV0dXJuIChsZW5ndGggJiYgc3RyTGVuZ3RoIDwgbGVuZ3RoKVxuICAgICAgICA/IChzdHJpbmcgKyBjcmVhdGVQYWRkaW5nKGxlbmd0aCAtIHN0ckxlbmd0aCwgY2hhcnMpKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IHNpZGUgaWYgaXQncyBzaG9ydGVyIHRoYW4gYGxlbmd0aGAuIFBhZGRpbmdcbiAgICAgKiBjaGFyYWN0ZXJzIGFyZSB0cnVuY2F0ZWQgaWYgdGhleSBleGNlZWQgYGxlbmd0aGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcGFkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPTBdIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJyAgIGFiYydcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYsICdfLScpO1xuICAgICAqIC8vID0+ICdfLV9hYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCAzKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSArIHN0cmluZylcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gaW50ZWdlciBvZiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiBgcmFkaXhgIGlzXG4gICAgICogYHVuZGVmaW5lZGAgb3IgYDBgLCBhIGByYWRpeGAgb2YgYDEwYCBpcyB1c2VkIHVubGVzcyBgdmFsdWVgIGlzIGFcbiAgICAgKiBoZXhhZGVjaW1hbCwgaW4gd2hpY2ggY2FzZSBhIGByYWRpeGAgb2YgYDE2YCBpcyB1c2VkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGFsaWducyB3aXRoIHRoZVxuICAgICAqIFtFUzUgaW1wbGVtZW50YXRpb25dKGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjEuMi4yKSBvZiBgcGFyc2VJbnRgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcmFkaXg9MTBdIFRoZSByYWRpeCB0byBpbnRlcnByZXQgYHZhbHVlYCBieS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhcnNlSW50KCcwOCcpO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnNicsICcwOCcsICcxMCddLCBfLnBhcnNlSW50KTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyc2VJbnQoc3RyaW5nLCByYWRpeCwgZ3VhcmQpIHtcbiAgICAgIGlmIChndWFyZCB8fCByYWRpeCA9PSBudWxsKSB7XG4gICAgICAgIHJhZGl4ID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocmFkaXgpIHtcbiAgICAgICAgcmFkaXggPSArcmFkaXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmF0aXZlUGFyc2VJbnQodG9TdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyksIHJhZGl4IHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGVhdHMgdGhlIGdpdmVuIHN0cmluZyBgbmAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gcmVwZWF0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgc3RyaW5nLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmVwZWF0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnKicsIDMpO1xuICAgICAqIC8vID0+ICcqKionXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMik7XG4gICAgICogLy8gPT4gJ2FiY2FiYydcbiAgICAgKlxuICAgICAqIF8ucmVwZWF0KCdhYmMnLCAwKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIG4sIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBuLCBndWFyZCkgOiBuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIG4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIG1hdGNoZXMgZm9yIGBwYXR0ZXJuYCBpbiBgc3RyaW5nYCB3aXRoIGByZXBsYWNlbWVudGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNyZXBsYWNlYF0oaHR0cHM6Ly9tZG4uaW8vU3RyaW5nL3JlcGxhY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IHBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufHN0cmluZ30gcmVwbGFjZW1lbnQgVGhlIG1hdGNoIHJlcGxhY2VtZW50LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIG1vZGlmaWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBsYWNlKCdIaSBGcmVkJywgJ0ZyZWQnLCAnQmFybmV5Jyk7XG4gICAgICogLy8gPT4gJ0hpIEJhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBsYWNlKCkge1xuICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgc3RyaW5nID0gdG9TdHJpbmcoYXJnc1swXSk7XG5cbiAgICAgIHJldHVybiBhcmdzLmxlbmd0aCA8IDMgPyBzdHJpbmcgOiBzdHJpbmcucmVwbGFjZShhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0b1xuICAgICAqIFtzbmFrZSBjYXNlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TbmFrZV9jYXNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNuYWtlIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zbmFrZUNhc2UoJ0ZvbyBCYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCctLUZPTy1CQVItLScpO1xuICAgICAqIC8vID0+ICdmb29fYmFyJ1xuICAgICAqL1xuICAgIHZhciBzbmFrZUNhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyAoaW5kZXggPyAnXycgOiAnJykgKyB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgYnkgYHNlcGFyYXRvcmAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFN0cmluZyNzcGxpdGBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9zcGxpdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gc3BsaXQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBzZXBhcmF0b3IgVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHNwbGl0IGJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbGltaXRdIFRoZSBsZW5ndGggdG8gdHJ1bmNhdGUgcmVzdWx0cyB0by5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHN0cmluZyBzZWdtZW50cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zcGxpdCgnYS1iLWMnLCAnLScsIDIpO1xuICAgICAqIC8vID0+IFsnYScsICdiJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcGxpdChzdHJpbmcsIHNlcGFyYXRvciwgbGltaXQpIHtcbiAgICAgIGlmIChsaW1pdCAmJiB0eXBlb2YgbGltaXQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSkge1xuICAgICAgICBzZXBhcmF0b3IgPSBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGxpbWl0ID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9BUlJBWV9MRU5HVEggOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmICghbGltaXQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKFxuICAgICAgICAgICAgdHlwZW9mIHNlcGFyYXRvciA9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgKHNlcGFyYXRvciAhPSBudWxsICYmICFpc1JlZ0V4cChzZXBhcmF0b3IpKVxuICAgICAgICAgICkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gYmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7XG4gICAgICAgIGlmICghc2VwYXJhdG9yICYmIGhhc1VuaWNvZGUoc3RyaW5nKSkge1xuICAgICAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLCAwLCBsaW1pdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc3RhcnQgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGV0dGVyX2Nhc2UjU3R5bGlzdGljX29yX3NwZWNpYWxpc2VkX3VzYWdlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0YXJ0IGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZvbyBCYXInXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0Q2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgc3RhcnRDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgdXBwZXJGaXJzdCh3b3JkKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gdGFyZ2V0IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFyZ2V0XSBUaGUgc3RyaW5nIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwb3NpdGlvbj0wXSBUaGUgcG9zaXRpb24gdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIHN0YXJ0cyB3aXRoIGB0YXJnZXRgLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2EnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uc3RhcnRzV2l0aCgnYWJjJywgJ2InLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRzV2l0aChzdHJpbmcsIHRhcmdldCwgcG9zaXRpb24pIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uID09IG51bGxcbiAgICAgICAgPyAwXG4gICAgICAgIDogYmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksIDAsIHN0cmluZy5sZW5ndGgpO1xuXG4gICAgICB0YXJnZXQgPSBiYXNlVG9TdHJpbmcodGFyZ2V0KTtcbiAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgdGFyZ2V0Lmxlbmd0aCkgPT0gdGFyZ2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbiB0aGF0IGNhbiBpbnRlcnBvbGF0ZSBkYXRhIHByb3BlcnRpZXNcbiAgICAgKiBpbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVycywgSFRNTC1lc2NhcGUgaW50ZXJwb2xhdGVkIGRhdGEgcHJvcGVydGllcyBpblxuICAgICAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICAgICAqIHByb3BlcnRpZXMgbWF5IGJlIGFjY2Vzc2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIHRoZSB0ZW1wbGF0ZS4gSWYgYSBzZXR0aW5nXG4gICAgICogb2JqZWN0IGlzIGdpdmVuLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYF8udGVtcGxhdGVTZXR0aW5nc2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEluIHRoZSBkZXZlbG9wbWVudCBidWlsZCBgXy50ZW1wbGF0ZWAgdXRpbGl6ZXNcbiAgICAgKiBbc291cmNlVVJMc10oaHR0cDovL3d3dy5odG1sNXJvY2tzLmNvbS9lbi90dXRvcmlhbHMvZGV2ZWxvcGVydG9vbHMvc291cmNlbWFwcy8jdG9jLXNvdXJjZXVybClcbiAgICAgKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHByZWNvbXBpbGluZyB0ZW1wbGF0ZXMgc2VlXG4gICAgICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICAgICAqXG4gICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQ2hyb21lIGV4dGVuc2lvbiBzYW5kYm94ZXMgc2VlXG4gICAgICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXNjYXBlPV8udGVtcGxhdGVTZXR0aW5ncy5lc2NhcGVdXG4gICAgICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5ldmFsdWF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXZhbHVhdGVdXG4gICAgICogIFRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICAgICAqICBBbiBvYmplY3QgdG8gaW1wb3J0IGludG8gdGhlIHRlbXBsYXRlIGFzIGZyZWUgdmFyaWFibGVzLlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSBbb3B0aW9ucy5pbnRlcnBvbGF0ZT1fLnRlbXBsYXRlU2V0dGluZ3MuaW50ZXJwb2xhdGVdXG4gICAgICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zb3VyY2VVUkw9J2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbbl0nXVxuICAgICAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudmFyaWFibGU9J29iaiddXG4gICAgICogIFRoZSBkYXRhIG9iamVjdCB2YXJpYWJsZSBuYW1lLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjb21waWxlZCB0ZW1wbGF0ZSBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8Yj48JS0gdmFsdWUgJT48L2I+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnPHNjcmlwdD4nIH0pO1xuICAgICAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXIgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGFuZCBnZW5lcmF0ZSBIVE1MLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGludGVybmFsIGBwcmludGAgZnVuY3Rpb24gaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCUgcHJpbnQoXCJoZWxsbyBcIiArIHVzZXIpOyAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGJhcm5leSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogLy8gRGlzYWJsZSBzdXBwb3J0IGJ5IHJlcGxhY2luZyB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyAkeyB1c2VyIH0hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gcGViYmxlcyEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlPSBcIlxcXFw8JS0gdmFsdWUgJVxcXFw+XCIgJT4nKTtcbiAgICAgKiBjb21waWxlZCh7ICd2YWx1ZSc6ICdpZ25vcmVkJyB9KTtcbiAgICAgKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgaW1wb3J0c2Agb3B0aW9uIHRvIGltcG9ydCBgalF1ZXJ5YCBhcyBganFgLlxuICAgICAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSh0ZXh0LCB7ICdpbXBvcnRzJzogeyAnanEnOiBqUXVlcnkgfSB9KTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAgICAgKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYHNvdXJjZVVSTGAgb3B0aW9uIHRvIHNwZWNpZnkgYSBjdXN0b20gc291cmNlVVJMIGZvciB0aGUgdGVtcGxhdGUuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICAgICAqIGNvbXBpbGVkKGRhdGEpO1xuICAgICAqIC8vID0+IEZpbmQgdGhlIHNvdXJjZSBvZiBcImdyZWV0aW5nLmpzdFwiIHVuZGVyIHRoZSBTb3VyY2VzIHRhYiBvciBSZXNvdXJjZXMgcGFuZWwgb2YgdGhlIHdlYiBpbnNwZWN0b3IuXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGB2YXJpYWJsZWAgb3B0aW9uIHRvIGVuc3VyZSBhIHdpdGgtc3RhdGVtZW50IGlzbid0IHVzZWQgaW4gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hpIDwlPSBkYXRhLnVzZXIgJT4hJywgeyAndmFyaWFibGUnOiAnZGF0YScgfSk7XG4gICAgICogY29tcGlsZWQuc291cmNlO1xuICAgICAqIC8vID0+IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgKiAvLyAgIHZhciBfX3QsIF9fcCA9ICcnO1xuICAgICAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICAgICAqIC8vICAgcmV0dXJuIF9fcDtcbiAgICAgKiAvLyB9XG4gICAgICpcbiAgICAgKiAvLyBVc2UgY3VzdG9tIHRlbXBsYXRlIGRlbGltaXRlcnMuXG4gICAgICogXy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlID0gL3t7KFtcXHNcXFNdKz8pfX0vZztcbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnbXVzdGFjaGUnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBtdXN0YWNoZSEnXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VgIHByb3BlcnR5IHRvIGlubGluZSBjb21waWxlZCB0ZW1wbGF0ZXMgZm9yIG1lYW5pbmdmdWxcbiAgICAgKiAvLyBsaW5lIG51bWJlcnMgaW4gZXJyb3IgbWVzc2FnZXMgYW5kIHN0YWNrIHRyYWNlcy5cbiAgICAgKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICAgICAqICAgdmFyIEpTVCA9IHtcXFxuICAgICAqICAgICBcIm1haW5cIjogJyArIF8udGVtcGxhdGUobWFpblRleHQpLnNvdXJjZSArICdcXFxuICAgICAqICAgfTtcXFxuICAgICAqICcpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgICAgIC8vIEJhc2VkIG9uIEpvaG4gUmVzaWcncyBgdG1wbGAgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIChodHRwOi8vZWpvaG4ub3JnL2Jsb2cvamF2YXNjcmlwdC1taWNyby10ZW1wbGF0aW5nLylcbiAgICAgIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICAgICAgdmFyIHNldHRpbmdzID0gbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSkge1xuICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIG9wdGlvbnMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMsIHNldHRpbmdzLCBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKTtcblxuICAgICAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICAgICAgaW1wb3J0c0tleXMgPSBrZXlzKGltcG9ydHMpLFxuICAgICAgICAgIGltcG9ydHNWYWx1ZXMgPSBiYXNlVmFsdWVzKGltcG9ydHMsIGltcG9ydHNLZXlzKTtcblxuICAgICAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICAgICAgaXNFdmFsdWF0aW5nLFxuICAgICAgICAgIGluZGV4ID0gMCxcbiAgICAgICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgICAgIHNvdXJjZSA9IFwiX19wICs9ICdcIjtcblxuICAgICAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICAgICAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAgICAgKG9wdGlvbnMuZXNjYXBlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgaW50ZXJwb2xhdGUuc291cmNlICsgJ3wnICtcbiAgICAgICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgICAgICAob3B0aW9ucy5ldmFsdWF0ZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JCdcbiAgICAgICwgJ2cnKTtcblxuICAgICAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAgICAgLy8gVGhlIHNvdXJjZVVSTCBnZXRzIGluamVjdGVkIGludG8gdGhlIHNvdXJjZSB0aGF0J3MgZXZhbC1lZCwgc28gYmUgY2FyZWZ1bFxuICAgICAgLy8gdG8gbm9ybWFsaXplIGFsbCBraW5kcyBvZiB3aGl0ZXNwYWNlLCBzbyBlLmcuIG5ld2xpbmVzIChhbmQgdW5pY29kZSB2ZXJzaW9ucyBvZiBpdCkgY2FuJ3Qgc25lYWsgaW5cbiAgICAgIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgICAgIHZhciBzb3VyY2VVUkwgPSAnLy8jIHNvdXJjZVVSTD0nICtcbiAgICAgICAgKGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgICAgICAgPyAob3B0aW9ucy5zb3VyY2VVUkwgKyAnJykucmVwbGFjZSgvXFxzL2csICcgJylcbiAgICAgICAgICA6ICgnbG9kYXNoLnRlbXBsYXRlU291cmNlc1snICsgKCsrdGVtcGxhdGVDb3VudGVyKSArICddJylcbiAgICAgICAgKSArICdcXG4nO1xuXG4gICAgICBzdHJpbmcucmVwbGFjZShyZURlbGltaXRlcnMsIGZ1bmN0aW9uKG1hdGNoLCBlc2NhcGVWYWx1ZSwgaW50ZXJwb2xhdGVWYWx1ZSwgZXNUZW1wbGF0ZVZhbHVlLCBldmFsdWF0ZVZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgaW50ZXJwb2xhdGVWYWx1ZSB8fCAoaW50ZXJwb2xhdGVWYWx1ZSA9IGVzVGVtcGxhdGVWYWx1ZSk7XG5cbiAgICAgICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgIHNvdXJjZSArPSBzdHJpbmcuc2xpY2UoaW5kZXgsIG9mZnNldCkucmVwbGFjZShyZVVuZXNjYXBlZFN0cmluZywgZXNjYXBlU3RyaW5nQ2hhcik7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBkZWxpbWl0ZXJzIHdpdGggc25pcHBldHMuXG4gICAgICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgICAgIGlzRXNjYXBpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbl9fZShcIiArIGVzY2FwZVZhbHVlICsgXCIpICtcXG4nXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2YWx1YXRlVmFsdWUpIHtcbiAgICAgICAgICBpc0V2YWx1YXRpbmcgPSB0cnVlO1xuICAgICAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW50ZXJwb2xhdGVWYWx1ZSkge1xuICAgICAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbWF0Y2gubGVuZ3RoO1xuXG4gICAgICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgICAgICAvLyBvcmRlciB0byBwcm9kdWNlIHRoZSBjb3JyZWN0IGBvZmZzZXRgIHZhbHVlLlxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcblxuICAgICAgc291cmNlICs9IFwiJztcXG5cIjtcblxuICAgICAgLy8gSWYgYHZhcmlhYmxlYCBpcyBub3Qgc3BlY2lmaWVkIHdyYXAgYSB3aXRoLXN0YXRlbWVudCBhcm91bmQgdGhlIGdlbmVyYXRlZFxuICAgICAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICAgICAgdmFyIHZhcmlhYmxlID0gaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAndmFyaWFibGUnKSAmJiBvcHRpb25zLnZhcmlhYmxlO1xuICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgICAgIH1cbiAgICAgIC8vIFRocm93IGFuIGVycm9yIGlmIGEgZm9yYmlkZGVuIGNoYXJhY3RlciB3YXMgZm91bmQgaW4gYHZhcmlhYmxlYCwgdG8gcHJldmVudFxuICAgICAgLy8gcG90ZW50aWFsIGNvbW1hbmQgaW5qZWN0aW9uIGF0dGFja3MuXG4gICAgICBlbHNlIGlmIChyZUZvcmJpZGRlbklkZW50aWZpZXJDaGFycy50ZXN0KHZhcmlhYmxlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5WQUxJRF9URU1QTF9WQVJfRVJST1JfVEVYVCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENsZWFudXAgY29kZSBieSBzdHJpcHBpbmcgZW1wdHkgc3RyaW5ncy5cbiAgICAgIHNvdXJjZSA9IChpc0V2YWx1YXRpbmcgPyBzb3VyY2UucmVwbGFjZShyZUVtcHR5U3RyaW5nTGVhZGluZywgJycpIDogc291cmNlKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgICAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nVHJhaWxpbmcsICckMTsnKTtcblxuICAgICAgLy8gRnJhbWUgY29kZSBhcyB0aGUgZnVuY3Rpb24gYm9keS5cbiAgICAgIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAgICAgKHZhcmlhYmxlXG4gICAgICAgICAgPyAnJ1xuICAgICAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICAgICAgKSArXG4gICAgICAgIFwidmFyIF9fdCwgX19wID0gJydcIiArXG4gICAgICAgIChpc0VzY2FwaW5nXG4gICAgICAgICAgID8gJywgX19lID0gXy5lc2NhcGUnXG4gICAgICAgICAgIDogJydcbiAgICAgICAgKSArXG4gICAgICAgIChpc0V2YWx1YXRpbmdcbiAgICAgICAgICA/ICcsIF9faiA9IEFycmF5LnByb3RvdHlwZS5qb2luO1xcbicgK1xuICAgICAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgICAgIDogJztcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBzb3VyY2UgK1xuICAgICAgICAncmV0dXJuIF9fcFxcbn0nO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYXR0ZW1wdChmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAgICAgLmFwcGx5KHVuZGVmaW5lZCwgaW1wb3J0c1ZhbHVlcyk7XG4gICAgICB9KTtcblxuICAgICAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gICAgICAvLyB0aGUgYHNvdXJjZWAgcHJvcGVydHkgYXMgYSBjb252ZW5pZW5jZSBmb3IgaW5saW5pbmcgY29tcGlsZWQgdGVtcGxhdGVzLlxuICAgICAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcbiAgICAgIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICAgICAgdGhyb3cgcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gbG93ZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvTG93ZXJDYXNlXShodHRwczovL21kbi5pby90b0xvd2VyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9Mb3dlcignLS1Gb28tQmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1mb28tYmFyLS0nXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb29iYXInXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ19fZm9vX2Jhcl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgYSB3aG9sZSwgdG8gdXBwZXIgY2FzZSBqdXN0IGxpa2VcbiAgICAgKiBbU3RyaW5nI3RvVXBwZXJDYXNlXShodHRwczovL21kbi5pby90b1VwcGVyQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1cHBlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9VcHBlcignLS1mb28tYmFyLS0nKTtcbiAgICAgKiAvLyA9PiAnLS1GT08tQkFSLS0nXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT09CQVInXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ19fRk9PX0JBUl9fJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvVXBwZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB0b1N0cmluZyh2YWx1ZSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjJ1xuICAgICAqXG4gICAgICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAgICAgKiAvLyA9PiBbJ2ZvbycsICdiYXInXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICByZXR1cm4gYmFzZVRyaW0oc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgY2hyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoY2hhcnMpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpLFxuICAgICAgICAgIGVuZCA9IGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIHN0YXJ0LCBlbmQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICcgIGFiYydcbiAgICAgKlxuICAgICAqIF8udHJpbUVuZCgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJy1fLWFiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltRW5kKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKSArIDE7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGxlYWRpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYyAgJ1xuICAgICAqXG4gICAgICogXy50cmltU3RhcnQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICdhYmMtXy0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbVN0YXJ0KHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJ1bmNhdGVzIGBzdHJpbmdgIGlmIGl0J3MgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aC5cbiAgICAgKiBUaGUgbGFzdCBjaGFyYWN0ZXJzIG9mIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBvbWlzc2lvblxuICAgICAqIHN0cmluZyB3aGljaCBkZWZhdWx0cyB0byBcIi4uLlwiLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5sZW5ndGg9MzBdIFRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLm9taXNzaW9uPScuLi4nXSBUaGUgc3RyaW5nIHRvIGluZGljYXRlIHRleHQgaXMgb21pdHRlZC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtvcHRpb25zLnNlcGFyYXRvcl0gVGhlIHNlcGFyYXRvciBwYXR0ZXJuIHRvIHRydW5jYXRlIHRvLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRydW5jYXRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nKTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvLi4uJ1xuICAgICAqXG4gICAgICogXy50cnVuY2F0ZSgnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnaGJvcmlubycsIHtcbiAgICAgKiAgICdsZW5ndGgnOiAyNCxcbiAgICAgKiAgICdzZXBhcmF0b3InOiAnICdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLC4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogLyw/ICsvXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZS4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnb21pc3Npb24nOiAnIFsuLi5dJ1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWcgWy4uLl0nXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nLCBvcHRpb25zKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gREVGQVVMVF9UUlVOQ19MRU5HVEgsXG4gICAgICAgICAgb21pc3Npb24gPSBERUZBVUxUX1RSVU5DX09NSVNTSU9OO1xuXG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgdmFyIHNlcGFyYXRvciA9ICdzZXBhcmF0b3InIGluIG9wdGlvbnMgPyBvcHRpb25zLnNlcGFyYXRvciA6IHNlcGFyYXRvcjtcbiAgICAgICAgbGVuZ3RoID0gJ2xlbmd0aCcgaW4gb3B0aW9ucyA/IHRvSW50ZWdlcihvcHRpb25zLmxlbmd0aCkgOiBsZW5ndGg7XG4gICAgICAgIG9taXNzaW9uID0gJ29taXNzaW9uJyBpbiBvcHRpb25zID8gYmFzZVRvU3RyaW5nKG9wdGlvbnMub21pc3Npb24pIDogb21pc3Npb247XG4gICAgICB9XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIGlmIChoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG4gICAgICAgIHN0ckxlbmd0aCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgaWYgKGxlbmd0aCA+PSBzdHJMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBlbmQgPSBsZW5ndGggLSBzdHJpbmdTaXplKG9taXNzaW9uKTtcbiAgICAgIGlmIChlbmQgPCAxKSB7XG4gICAgICAgIHJldHVybiBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBzdHJTeW1ib2xzXG4gICAgICAgID8gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJylcbiAgICAgICAgOiBzdHJpbmcuc2xpY2UoMCwgZW5kKTtcblxuICAgICAgaWYgKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQgKyBvbWlzc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmIChzdHJTeW1ib2xzKSB7XG4gICAgICAgIGVuZCArPSAocmVzdWx0Lmxlbmd0aCAtIGVuZCk7XG4gICAgICB9XG4gICAgICBpZiAoaXNSZWdFeHAoc2VwYXJhdG9yKSkge1xuICAgICAgICBpZiAoc3RyaW5nLnNsaWNlKGVuZCkuc2VhcmNoKHNlcGFyYXRvcikpIHtcbiAgICAgICAgICB2YXIgbWF0Y2gsXG4gICAgICAgICAgICAgIHN1YnN0cmluZyA9IHJlc3VsdDtcblxuICAgICAgICAgIGlmICghc2VwYXJhdG9yLmdsb2JhbCkge1xuICAgICAgICAgICAgc2VwYXJhdG9yID0gUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIHRvU3RyaW5nKHJlRmxhZ3MuZXhlYyhzZXBhcmF0b3IpKSArICdnJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzZXBhcmF0b3IuZXhlYyhzdWJzdHJpbmcpKSkge1xuICAgICAgICAgICAgdmFyIG5ld0VuZCA9IG1hdGNoLmluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgbmV3RW5kID09PSB1bmRlZmluZWQgPyBlbmQgOiBuZXdFbmQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0cmluZy5pbmRleE9mKGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpLCBlbmQpICE9IGVuZCkge1xuICAgICAgICB2YXIgaW5kZXggPSByZXN1bHQubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGludmVyc2Ugb2YgYF8uZXNjYXBlYDsgdGhpcyBtZXRob2QgY29udmVydHMgdGhlIEhUTUwgZW50aXRpZXNcbiAgICAgKiBgJmFtcDtgLCBgJmx0O2AsIGAmZ3Q7YCwgYCZxdW90O2AsIGFuZCBgJiMzOTtgIGluIGBzdHJpbmdgIHRvXG4gICAgICogdGhlaXIgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vIG90aGVyIEhUTUwgZW50aXRpZXMgYXJlIHVuZXNjYXBlZC4gVG8gdW5lc2NhcGUgYWRkaXRpb25hbFxuICAgICAqIEhUTUwgZW50aXRpZXMgdXNlIGEgdGhpcmQtcGFydHkgbGlicmFyeSBsaWtlIFtfaGVfXShodHRwczovL210aHMuYmUvaGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNi4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5lc2NhcGUoJ2ZyZWQsIGJhcm5leSwgJmFtcDsgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmVzY2FwZShzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc0VzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICAgICAgPyBzdHJpbmcucmVwbGFjZShyZUVzY2FwZWRIdG1sLCB1bmVzY2FwZUh0bWxDaGFyKVxuICAgICAgICA6IHN0cmluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCwgYXMgc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnLS1mb28tYmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICpcbiAgICAgKiBfLnVwcGVyQ2FzZSgnX19mb29fYmFyX18nKTtcbiAgICAgKiAvLyA9PiAnRk9PIEJBUidcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJyAnIDogJycpICsgd29yZC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICpcbiAgICAgKiBfLnVwcGVyRmlyc3QoJ0ZSRUQnKTtcbiAgICAgKiAvLyA9PiAnRlJFRCdcbiAgICAgKi9cbiAgICB2YXIgdXBwZXJGaXJzdCA9IGNyZWF0ZUNhc2VGaXJzdCgndG9VcHBlckNhc2UnKTtcblxuICAgIC8qKlxuICAgICAqIFNwbGl0cyBgc3RyaW5nYCBpbnRvIGFuIGFycmF5IG9mIGl0cyB3b3Jkcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gW3BhdHRlcm5dIFRoZSBwYXR0ZXJuIHRvIG1hdGNoIHdvcmRzLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB3b3JkcyBvZiBgc3RyaW5nYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJ3BlYmJsZXMnXVxuICAgICAqXG4gICAgICogXy53b3JkcygnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnLCAvW14sIF0rL2cpO1xuICAgICAqIC8vID0+IFsnZnJlZCcsICdiYXJuZXknLCAnJicsICdwZWJibGVzJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3b3JkcyhzdHJpbmcsIHBhdHRlcm4sIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcGF0dGVybiA9IGd1YXJkID8gdW5kZWZpbmVkIDogcGF0dGVybjtcblxuICAgICAgaWYgKHBhdHRlcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSA/IHVuaWNvZGVXb3JkcyhzdHJpbmcpIDogYXNjaWlXb3JkcyhzdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0cmluZy5tYXRjaChwYXR0ZXJuKSB8fCBbXTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICAgICAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICAgICAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICAgICAqICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgICAqIH0sICc+Xz4nKTtcbiAgICAgKlxuICAgICAqIGlmIChfLmlzRXJyb3IoZWxlbWVudHMpKSB7XG4gICAgICogICBlbGVtZW50cyA9IFtdO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICB2YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBCaW5kcyBtZXRob2RzIG9mIGFuIG9iamVjdCB0byB0aGUgb2JqZWN0IGl0c2VsZiwgb3ZlcndyaXRpbmcgdGhlIGV4aXN0aW5nXG4gICAgICogbWV0aG9kLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIGJvdW5kIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGJpbmQgYW5kIGFzc2lnbiB0aGUgYm91bmQgbWV0aG9kcyB0by5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBtZXRob2ROYW1lcyBUaGUgb2JqZWN0IG1ldGhvZCBuYW1lcyB0byBiaW5kLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB2aWV3ID0ge1xuICAgICAqICAgJ2xhYmVsJzogJ2RvY3MnLFxuICAgICAqICAgJ2NsaWNrJzogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdjbGlja2VkICcgKyB0aGlzLmxhYmVsKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5iaW5kQWxsKHZpZXcsIFsnY2xpY2snXSk7XG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIHZpZXcuY2xpY2spO1xuICAgICAqIC8vID0+IExvZ3MgJ2NsaWNrZWQgZG9jcycgd2hlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIHZhciBiaW5kQWxsID0gZmxhdFJlc3QoZnVuY3Rpb24ob2JqZWN0LCBtZXRob2ROYW1lcykge1xuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihrZXkpIHtcbiAgICAgICAga2V5ID0gdG9LZXkoa2V5KTtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBiaW5kKG9iamVjdFtrZXldLCBvYmplY3QpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIG92ZXIgYHBhaXJzYCBhbmQgaW52b2tlcyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAqIGZ1bmN0aW9uIG9mIHRoZSBmaXJzdCBwcmVkaWNhdGUgdG8gcmV0dXJuIHRydXRoeS4gVGhlIHByZWRpY2F0ZS1mdW5jdGlvblxuICAgICAqIHBhaXJzIGFyZSBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheX0gcGFpcnMgVGhlIHByZWRpY2F0ZS1mdW5jdGlvbiBwYWlycy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5jb25kKFtcbiAgICAgKiAgIFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksICAgICAgICAgICBfLmNvbnN0YW50KCdtYXRjaGVzIEEnKV0sXG4gICAgICogICBbXy5jb25mb3Jtcyh7ICdiJzogXy5pc051bWJlciB9KSwgXy5jb25zdGFudCgnbWF0Y2hlcyBCJyldLFxuICAgICAqICAgW18uc3R1YlRydWUsICAgICAgICAgICAgICAgICAgICAgIF8uY29uc3RhbnQoJ25vIG1hdGNoJyldXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQSdcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6IDAsICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiAnbWF0Y2hlcyBCJ1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogJzEnLCAnYic6ICcyJyB9KTtcbiAgICAgKiAvLyA9PiAnbm8gbWF0Y2gnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29uZChwYWlycykge1xuICAgICAgdmFyIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHRvSXRlcmF0ZWUgPSBnZXRJdGVyYXRlZSgpO1xuXG4gICAgICBwYWlycyA9ICFsZW5ndGggPyBbXSA6IGFycmF5TWFwKHBhaXJzLCBmdW5jdGlvbihwYWlyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFpclsxXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdG9JdGVyYXRlZShwYWlyWzBdKSwgcGFpclsxXV07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTE7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIHBhaXIgPSBwYWlyc1tpbmRleF07XG4gICAgICAgICAgaWYgKGFwcGx5KHBhaXJbMF0sIHRoaXMsIGFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwbHkocGFpclsxXSwgdGhpcywgYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBwcmVkaWNhdGUgcHJvcGVydGllcyBvZiBgc291cmNlYCB3aXRoXG4gICAgICogdGhlIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgdmFsdWVzIG9mIGEgZ2l2ZW4gb2JqZWN0LCByZXR1cm5pbmcgYHRydWVgIGlmXG4gICAgICogYWxsIHByZWRpY2F0ZXMgcmV0dXJuIHRydXRoeSwgZWxzZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoZSBjcmVhdGVkIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gYF8uY29uZm9ybXNUb2Agd2l0aFxuICAgICAqIGBzb3VyY2VgIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgcHJlZGljYXRlcyB0byBjb25mb3JtIHRvLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW1xuICAgICAqICAgeyAnYSc6IDIsICdiJzogMSB9LFxuICAgICAqICAgeyAnYSc6IDEsICdiJzogMiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8uY29uZm9ybXMoeyAnYic6IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gPiAxOyB9IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmZvcm1zKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIGJhc2VDb25mb3JtcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGB2YWx1ZWAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBkZWZhdWx0IHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICAgICAqIGl0cyBwbGFjZS4gVGhlIGBkZWZhdWx0VmFsdWVgIGlzIHJldHVybmVkIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGBudWxsYCxcbiAgICAgKiBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjE0LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEBwYXJhbSB7Kn0gZGVmYXVsdFZhbHVlIFRoZSBkZWZhdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kZWZhdWx0VG8oMSwgMTApO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKHVuZGVmaW5lZCwgMTApO1xuICAgICAqIC8vID0+IDEwXG4gICAgICovXG4gICAgZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSAhPT0gdmFsdWUpID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBnaXZlbiBmdW5jdGlvbnNcbiAgICAgKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY3JlYXRlZCBmdW5jdGlvbiwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93UmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93KFtfLmFkZCwgc3F1YXJlXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvdyA9IGNyZWF0ZUZsb3coKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxvd2AgZXhjZXB0IHRoYXQgaXQgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXRcbiAgICAgKiBpbnZva2VzIHRoZSBnaXZlbiBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2Z1bmNzXSBUaGUgZnVuY3Rpb25zIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb21wb3NpdGUgZnVuY3Rpb24uXG4gICAgICogQHNlZSBfLmZsb3dcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYWRkU3F1YXJlID0gXy5mbG93UmlnaHQoW3NxdWFyZSwgXy5hZGRdKTtcbiAgICAgKiBhZGRTcXVhcmUoMSwgMik7XG4gICAgICogLy8gPT4gOVxuICAgICAqL1xuICAgIHZhciBmbG93UmlnaHQgPSBjcmVhdGVGbG93KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGFyZ3VtZW50cyBvZiB0aGUgY3JlYXRlZFxuICAgICAqIGZ1bmN0aW9uLiBJZiBgZnVuY2AgaXMgYSBwcm9wZXJ0eSBuYW1lLCB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm5zIHRoZVxuICAgICAqIHByb3BlcnR5IHZhbHVlIGZvciBhIGdpdmVuIGVsZW1lbnQuIElmIGBmdW5jYCBpcyBhbiBhcnJheSBvciBvYmplY3QsIHRoZVxuICAgICAqIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyBgdHJ1ZWAgZm9yIGVsZW1lbnRzIHRoYXQgY29udGFpbiB0aGUgZXF1aXZhbGVudFxuICAgICAqIHNvdXJjZSBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IFtmdW5jPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGEgY2FsbGJhY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjYWxsYmFjay5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IGZhbHNlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgXy5pdGVyYXRlZSh7ICd1c2VyJzogJ2Jhcm5leScsICdhY3RpdmUnOiB0cnVlIH0pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoWyd1c2VyJywgJ2ZyZWQnXSkpO1xuICAgICAqIC8vID0+IFt7ICd1c2VyJzogJ2ZyZWQnLCAnYWdlJzogNDAgfV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWFwKHVzZXJzLCBfLml0ZXJhdGVlKCd1c2VyJykpO1xuICAgICAqIC8vID0+IFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gQ3JlYXRlIGN1c3RvbSBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqIF8uaXRlcmF0ZWUgPSBfLndyYXAoXy5pdGVyYXRlZSwgZnVuY3Rpb24oaXRlcmF0ZWUsIGZ1bmMpIHtcbiAgICAgKiAgIHJldHVybiAhXy5pc1JlZ0V4cChmdW5jKSA/IGl0ZXJhdGVlKGZ1bmMpIDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICogICAgIHJldHVybiBmdW5jLnRlc3Qoc3RyaW5nKTtcbiAgICAgKiAgIH07XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbJ2FiYycsICdkZWYnXSwgL2VmLyk7XG4gICAgICogLy8gPT4gWydkZWYnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGl0ZXJhdGVlKGZ1bmMpIHtcbiAgICAgIHJldHVybiBiYXNlSXRlcmF0ZWUodHlwZW9mIGZ1bmMgPT0gJ2Z1bmN0aW9uJyA/IGZ1bmMgOiBiYXNlQ2xvbmUoZnVuYywgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIGEgZ2l2ZW5cbiAgICAgKiBvYmplY3QgYW5kIGBzb3VyY2VgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZSBnaXZlbiBvYmplY3QgaGFzIGVxdWl2YWxlbnRcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmlzTWF0Y2hgIHdpdGggYHNvdXJjZWBcbiAgICAgKiBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIFBhcnRpYWwgY29tcGFyaXNvbnMgd2lsbCBtYXRjaCBlbXB0eSBhcnJheSBhbmQgZW1wdHkgb2JqZWN0IGBzb3VyY2VgXG4gICAgICogdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWUgYF8uaXNFcXVhbGBcbiAgICAgKiBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5tYXRjaGVzKHsgJ2EnOiA0LCAnYyc6IDYgfSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfV1cbiAgICAgKlxuICAgICAqIC8vIENoZWNraW5nIGZvciBzZXZlcmFsIHBvc3NpYmxlIHZhbHVlc1xuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ub3ZlclNvbWUoW18ubWF0Y2hlcyh7ICdhJzogMSB9KSwgXy5tYXRjaGVzKHsgJ2EnOiA0IH0pXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlTWF0Y2hlcyhiYXNlQ2xvbmUoc291cmNlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdGhlXG4gICAgICogdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0IHRvIGBzcmNWYWx1ZWAsIHJldHVybmluZyBgdHJ1ZWAgaWYgdGhlXG4gICAgICogb2JqZWN0IHZhbHVlIGlzIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdFxuICAgICAqIGBzcmNWYWx1ZWAgdmFsdWVzIGFnYWluc3QgYW55IGFycmF5IG9yIG9iamVjdCB2YWx1ZSwgcmVzcGVjdGl2ZWx5LiBTZWVcbiAgICAgKiBgXy5pc0VxdWFsYCBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCB2YWx1ZSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBNdWx0aXBsZSB2YWx1ZXMgY2FuIGJlIGNoZWNrZWQgYnkgY29tYmluaW5nIHNldmVyYWwgbWF0Y2hlcnNcbiAgICAgKiB1c2luZyBgXy5vdmVyU29tZWBcbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9LFxuICAgICAqICAgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kKG9iamVjdHMsIF8ubWF0Y2hlc1Byb3BlcnR5KCdhJywgNCkpO1xuICAgICAqIC8vID0+IHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDEpLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpXSkpO1xuICAgICAqIC8vID0+IFt7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSwgeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1Byb3BlcnR5KHBhdGgsIHNyY1ZhbHVlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBiYXNlQ2xvbmUoc3JjVmFsdWUsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gICAgICogQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byB0aGUgaW52b2tlZCBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy43LjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogXy5jb25zdGFudCgyKSB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMSkgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ubWV0aG9kKCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZChbJ2EnLCAnYiddKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZCA9IGJhc2VSZXN0KGZ1bmN0aW9uKHBhdGgsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VJbnZva2Uob2JqZWN0LCBwYXRoLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3Bwb3NpdGUgb2YgYF8ubWV0aG9kYDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlc1xuICAgICAqIHRoZSBtZXRob2QgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlXG4gICAgICogcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgdGhlIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGludm9rZXIgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IF8udGltZXMoMywgXy5jb25zdGFudCksXG4gICAgICogICAgIG9iamVjdCA9IHsgJ2EnOiBhcnJheSwgJ2InOiBhcnJheSwgJ2MnOiBhcnJheSB9O1xuICAgICAqXG4gICAgICogXy5tYXAoWydhWzJdJywgJ2NbMF0nXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5tZXRob2RPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICB2YXIgbWV0aG9kT2YgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIGFyZ3MpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyBhbGwgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIGZ1bmN0aW9uIHByb3BlcnRpZXMgb2YgYSBzb3VyY2VcbiAgICAgKiBvYmplY3QgdG8gdGhlIGRlc3RpbmF0aW9uIG9iamVjdC4gSWYgYG9iamVjdGAgaXMgYSBmdW5jdGlvbiwgdGhlbiBtZXRob2RzXG4gICAgICogYXJlIGFkZGVkIHRvIGl0cyBwcm90b3R5cGUgYXMgd2VsbC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVc2UgYF8ucnVuSW5Db250ZXh0YCB0byBjcmVhdGUgYSBwcmlzdGluZSBgbG9kYXNoYCBmdW5jdGlvbiB0b1xuICAgICAqIGF2b2lkIGNvbmZsaWN0cyBjYXVzZWQgYnkgbW9kaWZ5aW5nIHRoZSBvcmlnaW5hbC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxPYmplY3R9IFtvYmplY3Q9bG9kYXNoXSBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBmdW5jdGlvbnMgdG8gYWRkLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY2hhaW49dHJ1ZV0gU3BlY2lmeSB3aGV0aGVyIG1peGlucyBhcmUgY2hhaW5hYmxlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHZvd2VscyhzdHJpbmcpIHtcbiAgICAgKiAgIHJldHVybiBfLmZpbHRlcihzdHJpbmcsIGZ1bmN0aW9uKHYpIHtcbiAgICAgKiAgICAgcmV0dXJuIC9bYWVpb3VdL2kudGVzdCh2KTtcbiAgICAgKiAgIH0pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWl4aW4oeyAndm93ZWxzJzogdm93ZWxzIH0pO1xuICAgICAqIF8udm93ZWxzKCdmcmVkJyk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKlxuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKS52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9LCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuICAgICAqIF8oJ2ZyZWQnKS52b3dlbHMoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1peGluKG9iamVjdCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSksXG4gICAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwgcHJvcHMpO1xuXG4gICAgICBpZiAob3B0aW9ucyA9PSBudWxsICYmXG4gICAgICAgICAgIShpc09iamVjdChzb3VyY2UpICYmIChtZXRob2ROYW1lcy5sZW5ndGggfHwgIXByb3BzLmxlbmd0aCkpKSB7XG4gICAgICAgIG9wdGlvbnMgPSBzb3VyY2U7XG4gICAgICAgIHNvdXJjZSA9IG9iamVjdDtcbiAgICAgICAgb2JqZWN0ID0gdGhpcztcbiAgICAgICAgbWV0aG9kTmFtZXMgPSBiYXNlRnVuY3Rpb25zKHNvdXJjZSwga2V5cyhzb3VyY2UpKTtcbiAgICAgIH1cbiAgICAgIHZhciBjaGFpbiA9ICEoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NoYWluJyBpbiBvcHRpb25zKSB8fCAhIW9wdGlvbnMuY2hhaW4sXG4gICAgICAgICAgaXNGdW5jID0gaXNGdW5jdGlvbihvYmplY3QpO1xuXG4gICAgICBhcnJheUVhY2gobWV0aG9kTmFtZXMsIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBzb3VyY2VbbWV0aG9kTmFtZV07XG4gICAgICAgIG9iamVjdFttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIGlmIChpc0Z1bmMpIHtcbiAgICAgICAgICBvYmplY3QucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXztcbiAgICAgICAgICAgIGlmIChjaGFpbiB8fCBjaGFpbkFsbCkge1xuICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0KHRoaXMuX193cmFwcGVkX18pLFxuICAgICAgICAgICAgICAgICAgYWN0aW9ucyA9IHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcblxuICAgICAgICAgICAgICBhY3Rpb25zLnB1c2goeyAnZnVuYyc6IGZ1bmMsICdhcmdzJzogYXJndW1lbnRzLCAndGhpc0FyZyc6IG9iamVjdCB9KTtcbiAgICAgICAgICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IGNoYWluQWxsO1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkob2JqZWN0LCBhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sIGFyZ3VtZW50cykpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVydHMgdGhlIGBfYCB2YXJpYWJsZSB0byBpdHMgcHJldmlvdXMgdmFsdWUgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG9cbiAgICAgKiB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBsb2Rhc2ggPSBfLm5vQ29uZmxpY3QoKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub0NvbmZsaWN0KCkge1xuICAgICAgaWYgKHJvb3QuXyA9PT0gdGhpcykge1xuICAgICAgICByb290Ll8gPSBvbGREYXNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAgICAgKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9vcCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgYXJndW1lbnQgYXQgaW5kZXggYG5gLiBJZiBgbmAgaXMgbmVnYXRpdmUsXG4gICAgICogdGhlIG50aCBhcmd1bWVudCBmcm9tIHRoZSBlbmQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0wXSBUaGUgaW5kZXggb2YgdGhlIGFyZ3VtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXNzLXRocnUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoMSk7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdiJ1xuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm50aEFyZygtMik7XG4gICAgICogZnVuYygnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+ICdjJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIG50aEFyZyhuKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VOdGgoYXJncywgbik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBpdGVyYXRlZXNgIHdpdGggdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlc1xuICAgICAqIGFuZCByZXR1cm5zIHRoZWlyIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyKFtNYXRoLm1heCwgTWF0aC5taW5dKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoMSwgMiwgMywgNCk7XG4gICAgICogLy8gPT4gWzQsIDFdXG4gICAgICovXG4gICAgdmFyIG92ZXIgPSBjcmVhdGVPdmVyKGFycmF5TWFwKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFsbCoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJFdmVyeShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBmdW5jKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgb3ZlckV2ZXJ5ID0gY3JlYXRlT3ZlcihhcnJheUV2ZXJ5KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiAqKmFueSoqIG9mIHRoZSBgcHJlZGljYXRlc2AgcmV0dXJuXG4gICAgICogdHJ1dGh5IHdoZW4gaW52b2tlZCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBGb2xsb3dpbmcgc2hvcnRoYW5kcyBhcmUgcG9zc2libGUgZm9yIHByb3ZpZGluZyBwcmVkaWNhdGVzLlxuICAgICAqIFBhc3MgYW4gYE9iamVjdGAgYW5kIGl0IHdpbGwgYmUgdXNlZCBhcyBhbiBwYXJhbWV0ZXIgZm9yIGBfLm1hdGNoZXNgIHRvIGNyZWF0ZSB0aGUgcHJlZGljYXRlLlxuICAgICAqIFBhc3MgYW4gYEFycmF5YCBvZiBwYXJhbWV0ZXJzIGZvciBgXy5tYXRjaGVzUHJvcGVydHlgIGFuZCB0aGUgcHJlZGljYXRlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGVtLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW3ByZWRpY2F0ZXM9W18uaWRlbnRpdHldXVxuICAgICAqICBUaGUgcHJlZGljYXRlcyB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGZ1bmMgPSBfLm92ZXJTb21lKFtCb29sZWFuLCBpc0Zpbml0ZV0pO1xuICAgICAqXG4gICAgICogZnVuYygnMScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiB2YXIgbWF0Y2hlc0Z1bmMgPSBfLm92ZXJTb21lKFt7ICdhJzogMSB9LCB7ICdhJzogMiB9XSlcbiAgICAgKiB2YXIgbWF0Y2hlc1Byb3BlcnR5RnVuYyA9IF8ub3ZlclNvbWUoW1snYScsIDFdLCBbJ2EnLCAyXV0pXG4gICAgICovXG4gICAgdmFyIG92ZXJTb21lID0gY3JlYXRlT3ZlcihhcnJheVNvbWUpO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gICAgICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAgICAgKiAvLyA9PiBbMiwgMV1cbiAgICAgKlxuICAgICAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgICAgcmV0dXJuIGlzS2V5KHBhdGgpID8gYmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKSA6IGJhc2VQcm9wZXJ0eURlZXAocGF0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnByb3BlcnR5YDsgdGhpcyBtZXRob2QgY3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJuc1xuICAgICAqIHRoZSB2YWx1ZSBhdCBhIGdpdmVuIHBhdGggb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzAsIDEsIDJdLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKlxuICAgICAqIF8ubWFwKFtbJ2EnLCAnMiddLCBbJ2MnLCAnMCddXSwgXy5wcm9wZXJ0eU9mKG9iamVjdCkpO1xuICAgICAqIC8vID0+IFsyLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbnVtYmVycyAocG9zaXRpdmUgYW5kL29yIG5lZ2F0aXZlKSBwcm9ncmVzc2luZyBmcm9tXG4gICAgICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAgICAgKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAgICAgKiBpdCdzIHNldCB0byBgc3RhcnRgIHdpdGggYHN0YXJ0YCB0aGVuIHNldCB0byBgMGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gICAgICogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHdoaWNoIGNhbiBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZ2Ugb2YgbnVtYmVycy5cbiAgICAgKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoNCk7XG4gICAgICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKC00KTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAgICAgKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICB2YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5yYW5nZWAgZXhjZXB0IHRoYXQgaXQgcG9wdWxhdGVzIHZhbHVlcyBpblxuICAgICAqIGRlc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDQpO1xuICAgICAqIC8vID0+IFszLCAyLCAxLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KC00KTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA1KTtcbiAgICAgKiAvLyA9PiBbNCwgMywgMiwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzE1LCAxMCwgNSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwLCAtNCwgLTEpO1xuICAgICAqIC8vID0+IFstMywgLTIsIC0xLCAwXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDEsIDQsIDApO1xuICAgICAqIC8vID0+IFsxLCAxLCAxXVxuICAgICAqXG4gICAgICogXy5yYW5nZVJpZ2h0KDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlUmlnaHQgPSBjcmVhdGVSYW5nZSh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAgICAgKiAvLyA9PiBbW10sIFtdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICAgICAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uc3R1Yk9iamVjdCk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbe30sIHt9XVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViT2JqZWN0KCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlN0cmluZyk7XG4gICAgICogLy8gPT4gWycnLCAnJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViU3RyaW5nKCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YlRydWUpO1xuICAgICAqIC8vID0+IFt0cnVlLCB0cnVlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJUcnVlKCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyB0aGUgaXRlcmF0ZWUgYG5gIHRpbWVzLCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgdGhlIHJlc3VsdHMgb2ZcbiAgICAgKiBlYWNoIGludm9jYXRpb24uIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAoaW5kZXgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygzLCBTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJywgJzInXVxuICAgICAqXG4gICAgICogIF8udGltZXMoNCwgXy5jb25zdGFudCgwKSk7XG4gICAgICogLy8gPT4gWzAsIDAsIDAsIDBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICBpZiAobiA8IDEgfHwgbiA+IE1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gTUFYX0FSUkFZX0xFTkdUSCxcbiAgICAgICAgICBsZW5ndGggPSBuYXRpdmVNaW4obiwgTUFYX0FSUkFZX0xFTkdUSCk7XG5cbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUpO1xuICAgICAgbiAtPSBNQVhfQVJSQVlfTEVOR1RIO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZVRpbWVzKGxlbmd0aCwgaXRlcmF0ZWUpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIGl0ZXJhdGVlKGluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2EuYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InLCAnYyddXG4gICAgICpcbiAgICAgKiBfLnRvUGF0aCgnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnMCcsICdiJywgJ2MnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvUGF0aCh2YWx1ZSkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgdG9LZXkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzU3ltYm9sKHZhbHVlKSA/IFt2YWx1ZV0gOiBjb3B5QXJyYXkoc3RyaW5nVG9QYXRoKHRvU3RyaW5nKHZhbHVlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRC4gSWYgYHByZWZpeGAgaXMgZ2l2ZW4sIHRoZSBJRCBpcyBhcHBlbmRlZCB0byBpdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtwcmVmaXg9JyddIFRoZSB2YWx1ZSB0byBwcmVmaXggdGhlIElEIHdpdGguXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdW5pcXVlIElELlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCdjb250YWN0XycpO1xuICAgICAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAgICAgKlxuICAgICAqIF8udW5pcXVlSWQoKTtcbiAgICAgKiAvLyA9PiAnMTA1J1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXF1ZUlkKHByZWZpeCkge1xuICAgICAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gICAgICByZXR1cm4gdG9TdHJpbmcocHJlZml4KSArIGlkO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBhdWdlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYWRkZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGFuIGFkZGl0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRvdGFsLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmFkZCg2LCA0KTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIHZhciBhZGQgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGF1Z2VuZCwgYWRkZW5kKSB7XG4gICAgICByZXR1cm4gYXVnZW5kICsgYWRkZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB1cCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCB1cC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHVwIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgdXAgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNlaWwoNC4wMDYpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2LjAwNCwgMik7XG4gICAgICogLy8gPT4gNi4wMVxuICAgICAqXG4gICAgICogXy5jZWlsKDYwNDAsIC0yKTtcbiAgICAgKiAvLyA9PiA2MTAwXG4gICAgICovXG4gICAgdmFyIGNlaWwgPSBjcmVhdGVSb3VuZCgnY2VpbCcpO1xuXG4gICAgLyoqXG4gICAgICogRGl2aWRlIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aWRlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkaXZpc29yIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgZGl2aXNpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcXVvdGllbnQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGl2aWRlKDYsIDQpO1xuICAgICAqIC8vID0+IDEuNVxuICAgICAqL1xuICAgIHZhciBkaXZpZGUgPSBjcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGRpdmlkZW5kLCBkaXZpc29yKSB7XG4gICAgICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCBkb3duIHRvIGBwcmVjaXNpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciBUaGUgbnVtYmVyIHRvIHJvdW5kIGRvd24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCBkb3duIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgZG93biBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNC4wMDYpO1xuICAgICAqIC8vID0+IDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoMC4wNDYsIDIpO1xuICAgICAqIC8vID0+IDAuMDRcbiAgICAgKlxuICAgICAqIF8uZmxvb3IoNDA2MCwgLTIpO1xuICAgICAqIC8vID0+IDQwMDBcbiAgICAgKi9cbiAgICB2YXIgZmxvb3IgPSBjcmVhdGVSb3VuZCgnZmxvb3InKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1heChbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDhcbiAgICAgKlxuICAgICAqIF8ubWF4KFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXgoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tYXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5tYXhCeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAyIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4QnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUd0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWVhbiBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tZWFuKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgaWRlbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWVhbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIHZhbHVlIHRvIGJlIGF2ZXJhZ2VkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNy4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBtZWFuLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogNCB9LCB7ICduJzogMiB9LCB7ICduJzogOCB9LCB7ICduJzogNiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gNVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tZWFuQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVhbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VNZWFuKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICAgICAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1pbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIF8ubWluKFtdKTtcbiAgICAgKiAvLyA9PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaW4oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5taW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnkgd2hpY2hcbiAgICAgKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiAxIH0sIHsgJ24nOiAyIH1dO1xuICAgICAqXG4gICAgICogXy5taW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IHsgJ24nOiAxIH1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluQnkoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNdWx0aXBseSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG11bHRpcGxpZXIgVGhlIGZpcnN0IG51bWJlciBpbiBhIG11bHRpcGxpY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWNhbmQgVGhlIHNlY29uZCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBwcm9kdWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm11bHRpcGx5KDYsIDQpO1xuICAgICAqIC8vID0+IDI0XG4gICAgICovXG4gICAgdmFyIG11bHRpcGx5ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtdWx0aXBsaWVyLCBtdWx0aXBsaWNhbmQpIHtcbiAgICAgIHJldHVybiBtdWx0aXBsaWVyICogbXVsdGlwbGljYW5kO1xuICAgIH0sIDEpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYG51bWJlcmAgcm91bmRlZCB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3ByZWNpc2lvbj0wXSBUaGUgcHJlY2lzaW9uIHRvIHJvdW5kIHRvLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJvdW5kZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQuMDA2LCAyKTtcbiAgICAgKiAvLyA9PiA0LjAxXG4gICAgICpcbiAgICAgKiBfLnJvdW5kKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MTAwXG4gICAgICovXG4gICAgdmFyIHJvdW5kID0gY3JlYXRlUm91bmQoJ3JvdW5kJyk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG1pbnVlbmQgVGhlIGZpcnN0IG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdWJ0cmFoZW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgc3VidHJhY3Rpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgZGlmZmVyZW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zdWJ0cmFjdCg2LCA0KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICovXG4gICAgdmFyIHN1YnRyYWN0ID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtaW51ZW5kLCBzdWJ0cmFoZW5kKSB7XG4gICAgICByZXR1cm4gbWludWVuZCAtIHN1YnRyYWhlbmQ7XG4gICAgfSwgMCk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgaW4gYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjQuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VtKFs0LCAyLCA4LCA2XSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW0oYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGlkZW50aXR5KVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zdW1gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBzdW1tZWQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc3VtQnkob2JqZWN0cywgJ24nKTtcbiAgICAgKiAvLyA9PiAyMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN1bUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVN1bShhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IDA7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdGhhdCByZXR1cm4gd3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZnRlciA9IGFmdGVyO1xuICAgIGxvZGFzaC5hcnkgPSBhcnk7XG4gICAgbG9kYXNoLmFzc2lnbiA9IGFzc2lnbjtcbiAgICBsb2Rhc2guYXNzaWduSW4gPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guYXNzaWduSW5XaXRoID0gYXNzaWduSW5XaXRoO1xuICAgIGxvZGFzaC5hc3NpZ25XaXRoID0gYXNzaWduV2l0aDtcbiAgICBsb2Rhc2guYXQgPSBhdDtcbiAgICBsb2Rhc2guYmVmb3JlID0gYmVmb3JlO1xuICAgIGxvZGFzaC5iaW5kID0gYmluZDtcbiAgICBsb2Rhc2guYmluZEFsbCA9IGJpbmRBbGw7XG4gICAgbG9kYXNoLmJpbmRLZXkgPSBiaW5kS2V5O1xuICAgIGxvZGFzaC5jYXN0QXJyYXkgPSBjYXN0QXJyYXk7XG4gICAgbG9kYXNoLmNoYWluID0gY2hhaW47XG4gICAgbG9kYXNoLmNodW5rID0gY2h1bms7XG4gICAgbG9kYXNoLmNvbXBhY3QgPSBjb21wYWN0O1xuICAgIGxvZGFzaC5jb25jYXQgPSBjb25jYXQ7XG4gICAgbG9kYXNoLmNvbmQgPSBjb25kO1xuICAgIGxvZGFzaC5jb25mb3JtcyA9IGNvbmZvcm1zO1xuICAgIGxvZGFzaC5jb25zdGFudCA9IGNvbnN0YW50O1xuICAgIGxvZGFzaC5jb3VudEJ5ID0gY291bnRCeTtcbiAgICBsb2Rhc2guY3JlYXRlID0gY3JlYXRlO1xuICAgIGxvZGFzaC5jdXJyeSA9IGN1cnJ5O1xuICAgIGxvZGFzaC5jdXJyeVJpZ2h0ID0gY3VycnlSaWdodDtcbiAgICBsb2Rhc2guZGVib3VuY2UgPSBkZWJvdW5jZTtcbiAgICBsb2Rhc2guZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICBsb2Rhc2guZGVmYXVsdHNEZWVwID0gZGVmYXVsdHNEZWVwO1xuICAgIGxvZGFzaC5kZWZlciA9IGRlZmVyO1xuICAgIGxvZGFzaC5kZWxheSA9IGRlbGF5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZUJ5ID0gZGlmZmVyZW5jZUJ5O1xuICAgIGxvZGFzaC5kaWZmZXJlbmNlV2l0aCA9IGRpZmZlcmVuY2VXaXRoO1xuICAgIGxvZGFzaC5kcm9wID0gZHJvcDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0ID0gZHJvcFJpZ2h0O1xuICAgIGxvZGFzaC5kcm9wUmlnaHRXaGlsZSA9IGRyb3BSaWdodFdoaWxlO1xuICAgIGxvZGFzaC5kcm9wV2hpbGUgPSBkcm9wV2hpbGU7XG4gICAgbG9kYXNoLmZpbGwgPSBmaWxsO1xuICAgIGxvZGFzaC5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgbG9kYXNoLmZsYXRNYXAgPSBmbGF0TWFwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVlcCA9IGZsYXRNYXBEZWVwO1xuICAgIGxvZGFzaC5mbGF0TWFwRGVwdGggPSBmbGF0TWFwRGVwdGg7XG4gICAgbG9kYXNoLmZsYXR0ZW4gPSBmbGF0dGVuO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVlcCA9IGZsYXR0ZW5EZWVwO1xuICAgIGxvZGFzaC5mbGF0dGVuRGVwdGggPSBmbGF0dGVuRGVwdGg7XG4gICAgbG9kYXNoLmZsaXAgPSBmbGlwO1xuICAgIGxvZGFzaC5mbG93ID0gZmxvdztcbiAgICBsb2Rhc2guZmxvd1JpZ2h0ID0gZmxvd1JpZ2h0O1xuICAgIGxvZGFzaC5mcm9tUGFpcnMgPSBmcm9tUGFpcnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9ucyA9IGZ1bmN0aW9ucztcbiAgICBsb2Rhc2guZnVuY3Rpb25zSW4gPSBmdW5jdGlvbnNJbjtcbiAgICBsb2Rhc2guZ3JvdXBCeSA9IGdyb3VwQnk7XG4gICAgbG9kYXNoLmluaXRpYWwgPSBpbml0aWFsO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb24gPSBpbnRlcnNlY3Rpb247XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbkJ5ID0gaW50ZXJzZWN0aW9uQnk7XG4gICAgbG9kYXNoLmludGVyc2VjdGlvbldpdGggPSBpbnRlcnNlY3Rpb25XaXRoO1xuICAgIGxvZGFzaC5pbnZlcnQgPSBpbnZlcnQ7XG4gICAgbG9kYXNoLmludmVydEJ5ID0gaW52ZXJ0Qnk7XG4gICAgbG9kYXNoLmludm9rZU1hcCA9IGludm9rZU1hcDtcbiAgICBsb2Rhc2guaXRlcmF0ZWUgPSBpdGVyYXRlZTtcbiAgICBsb2Rhc2gua2V5QnkgPSBrZXlCeTtcbiAgICBsb2Rhc2gua2V5cyA9IGtleXM7XG4gICAgbG9kYXNoLmtleXNJbiA9IGtleXNJbjtcbiAgICBsb2Rhc2gubWFwID0gbWFwO1xuICAgIGxvZGFzaC5tYXBLZXlzID0gbWFwS2V5cztcbiAgICBsb2Rhc2gubWFwVmFsdWVzID0gbWFwVmFsdWVzO1xuICAgIGxvZGFzaC5tYXRjaGVzID0gbWF0Y2hlcztcbiAgICBsb2Rhc2gubWF0Y2hlc1Byb3BlcnR5ID0gbWF0Y2hlc1Byb3BlcnR5O1xuICAgIGxvZGFzaC5tZW1vaXplID0gbWVtb2l6ZTtcbiAgICBsb2Rhc2gubWVyZ2UgPSBtZXJnZTtcbiAgICBsb2Rhc2gubWVyZ2VXaXRoID0gbWVyZ2VXaXRoO1xuICAgIGxvZGFzaC5tZXRob2QgPSBtZXRob2Q7XG4gICAgbG9kYXNoLm1ldGhvZE9mID0gbWV0aG9kT2Y7XG4gICAgbG9kYXNoLm1peGluID0gbWl4aW47XG4gICAgbG9kYXNoLm5lZ2F0ZSA9IG5lZ2F0ZTtcbiAgICBsb2Rhc2gubnRoQXJnID0gbnRoQXJnO1xuICAgIGxvZGFzaC5vbWl0ID0gb21pdDtcbiAgICBsb2Rhc2gub21pdEJ5ID0gb21pdEJ5O1xuICAgIGxvZGFzaC5vbmNlID0gb25jZTtcbiAgICBsb2Rhc2gub3JkZXJCeSA9IG9yZGVyQnk7XG4gICAgbG9kYXNoLm92ZXIgPSBvdmVyO1xuICAgIGxvZGFzaC5vdmVyQXJncyA9IG92ZXJBcmdzO1xuICAgIGxvZGFzaC5vdmVyRXZlcnkgPSBvdmVyRXZlcnk7XG4gICAgbG9kYXNoLm92ZXJTb21lID0gb3ZlclNvbWU7XG4gICAgbG9kYXNoLnBhcnRpYWwgPSBwYXJ0aWFsO1xuICAgIGxvZGFzaC5wYXJ0aWFsUmlnaHQgPSBwYXJ0aWFsUmlnaHQ7XG4gICAgbG9kYXNoLnBhcnRpdGlvbiA9IHBhcnRpdGlvbjtcbiAgICBsb2Rhc2gucGljayA9IHBpY2s7XG4gICAgbG9kYXNoLnBpY2tCeSA9IHBpY2tCeTtcbiAgICBsb2Rhc2gucHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICBsb2Rhc2gucHJvcGVydHlPZiA9IHByb3BlcnR5T2Y7XG4gICAgbG9kYXNoLnB1bGwgPSBwdWxsO1xuICAgIGxvZGFzaC5wdWxsQWxsID0gcHVsbEFsbDtcbiAgICBsb2Rhc2gucHVsbEFsbEJ5ID0gcHVsbEFsbEJ5O1xuICAgIGxvZGFzaC5wdWxsQWxsV2l0aCA9IHB1bGxBbGxXaXRoO1xuICAgIGxvZGFzaC5wdWxsQXQgPSBwdWxsQXQ7XG4gICAgbG9kYXNoLnJhbmdlID0gcmFuZ2U7XG4gICAgbG9kYXNoLnJhbmdlUmlnaHQgPSByYW5nZVJpZ2h0O1xuICAgIGxvZGFzaC5yZWFyZyA9IHJlYXJnO1xuICAgIGxvZGFzaC5yZWplY3QgPSByZWplY3Q7XG4gICAgbG9kYXNoLnJlbW92ZSA9IHJlbW92ZTtcbiAgICBsb2Rhc2gucmVzdCA9IHJlc3Q7XG4gICAgbG9kYXNoLnJldmVyc2UgPSByZXZlcnNlO1xuICAgIGxvZGFzaC5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcbiAgICBsb2Rhc2guc2V0ID0gc2V0O1xuICAgIGxvZGFzaC5zZXRXaXRoID0gc2V0V2l0aDtcbiAgICBsb2Rhc2guc2h1ZmZsZSA9IHNodWZmbGU7XG4gICAgbG9kYXNoLnNsaWNlID0gc2xpY2U7XG4gICAgbG9kYXNoLnNvcnRCeSA9IHNvcnRCeTtcbiAgICBsb2Rhc2guc29ydGVkVW5pcSA9IHNvcnRlZFVuaXE7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXFCeSA9IHNvcnRlZFVuaXFCeTtcbiAgICBsb2Rhc2guc3BsaXQgPSBzcGxpdDtcbiAgICBsb2Rhc2guc3ByZWFkID0gc3ByZWFkO1xuICAgIGxvZGFzaC50YWlsID0gdGFpbDtcbiAgICBsb2Rhc2gudGFrZSA9IHRha2U7XG4gICAgbG9kYXNoLnRha2VSaWdodCA9IHRha2VSaWdodDtcbiAgICBsb2Rhc2gudGFrZVJpZ2h0V2hpbGUgPSB0YWtlUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2gudGFrZVdoaWxlID0gdGFrZVdoaWxlO1xuICAgIGxvZGFzaC50YXAgPSB0YXA7XG4gICAgbG9kYXNoLnRocm90dGxlID0gdGhyb3R0bGU7XG4gICAgbG9kYXNoLnRocnUgPSB0aHJ1O1xuICAgIGxvZGFzaC50b0FycmF5ID0gdG9BcnJheTtcbiAgICBsb2Rhc2gudG9QYWlycyA9IHRvUGFpcnM7XG4gICAgbG9kYXNoLnRvUGFpcnNJbiA9IHRvUGFpcnNJbjtcbiAgICBsb2Rhc2gudG9QYXRoID0gdG9QYXRoO1xuICAgIGxvZGFzaC50b1BsYWluT2JqZWN0ID0gdG9QbGFpbk9iamVjdDtcbiAgICBsb2Rhc2gudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIGxvZGFzaC51bmFyeSA9IHVuYXJ5O1xuICAgIGxvZGFzaC51bmlvbiA9IHVuaW9uO1xuICAgIGxvZGFzaC51bmlvbkJ5ID0gdW5pb25CeTtcbiAgICBsb2Rhc2gudW5pb25XaXRoID0gdW5pb25XaXRoO1xuICAgIGxvZGFzaC51bmlxID0gdW5pcTtcbiAgICBsb2Rhc2gudW5pcUJ5ID0gdW5pcUJ5O1xuICAgIGxvZGFzaC51bmlxV2l0aCA9IHVuaXFXaXRoO1xuICAgIGxvZGFzaC51bnNldCA9IHVuc2V0O1xuICAgIGxvZGFzaC51bnppcCA9IHVuemlwO1xuICAgIGxvZGFzaC51bnppcFdpdGggPSB1bnppcFdpdGg7XG4gICAgbG9kYXNoLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICBsb2Rhc2gudXBkYXRlV2l0aCA9IHVwZGF0ZVdpdGg7XG4gICAgbG9kYXNoLnZhbHVlcyA9IHZhbHVlcztcbiAgICBsb2Rhc2gudmFsdWVzSW4gPSB2YWx1ZXNJbjtcbiAgICBsb2Rhc2gud2l0aG91dCA9IHdpdGhvdXQ7XG4gICAgbG9kYXNoLndvcmRzID0gd29yZHM7XG4gICAgbG9kYXNoLndyYXAgPSB3cmFwO1xuICAgIGxvZGFzaC54b3IgPSB4b3I7XG4gICAgbG9kYXNoLnhvckJ5ID0geG9yQnk7XG4gICAgbG9kYXNoLnhvcldpdGggPSB4b3JXaXRoO1xuICAgIGxvZGFzaC56aXAgPSB6aXA7XG4gICAgbG9kYXNoLnppcE9iamVjdCA9IHppcE9iamVjdDtcbiAgICBsb2Rhc2guemlwT2JqZWN0RGVlcCA9IHppcE9iamVjdERlZXA7XG4gICAgbG9kYXNoLnppcFdpdGggPSB6aXBXaXRoO1xuXG4gICAgLy8gQWRkIGFsaWFzZXMuXG4gICAgbG9kYXNoLmVudHJpZXMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC5lbnRyaWVzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLmV4dGVuZCA9IGFzc2lnbkluO1xuICAgIGxvZGFzaC5leHRlbmRXaXRoID0gYXNzaWduSW5XaXRoO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIG1peGluKGxvZGFzaCwgbG9kYXNoKTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHVud3JhcHBlZCB2YWx1ZXMgaW4gY2hhaW4gc2VxdWVuY2VzLlxuICAgIGxvZGFzaC5hZGQgPSBhZGQ7XG4gICAgbG9kYXNoLmF0dGVtcHQgPSBhdHRlbXB0O1xuICAgIGxvZGFzaC5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG4gICAgbG9kYXNoLmNhcGl0YWxpemUgPSBjYXBpdGFsaXplO1xuICAgIGxvZGFzaC5jZWlsID0gY2VpbDtcbiAgICBsb2Rhc2guY2xhbXAgPSBjbGFtcDtcbiAgICBsb2Rhc2guY2xvbmUgPSBjbG9uZTtcbiAgICBsb2Rhc2guY2xvbmVEZWVwID0gY2xvbmVEZWVwO1xuICAgIGxvZGFzaC5jbG9uZURlZXBXaXRoID0gY2xvbmVEZWVwV2l0aDtcbiAgICBsb2Rhc2guY2xvbmVXaXRoID0gY2xvbmVXaXRoO1xuICAgIGxvZGFzaC5jb25mb3Jtc1RvID0gY29uZm9ybXNUbztcbiAgICBsb2Rhc2guZGVidXJyID0gZGVidXJyO1xuICAgIGxvZGFzaC5kZWZhdWx0VG8gPSBkZWZhdWx0VG87XG4gICAgbG9kYXNoLmRpdmlkZSA9IGRpdmlkZTtcbiAgICBsb2Rhc2guZW5kc1dpdGggPSBlbmRzV2l0aDtcbiAgICBsb2Rhc2guZXEgPSBlcTtcbiAgICBsb2Rhc2guZXNjYXBlID0gZXNjYXBlO1xuICAgIGxvZGFzaC5lc2NhcGVSZWdFeHAgPSBlc2NhcGVSZWdFeHA7XG4gICAgbG9kYXNoLmV2ZXJ5ID0gZXZlcnk7XG4gICAgbG9kYXNoLmZpbmQgPSBmaW5kO1xuICAgIGxvZGFzaC5maW5kSW5kZXggPSBmaW5kSW5kZXg7XG4gICAgbG9kYXNoLmZpbmRLZXkgPSBmaW5kS2V5O1xuICAgIGxvZGFzaC5maW5kTGFzdCA9IGZpbmRMYXN0O1xuICAgIGxvZGFzaC5maW5kTGFzdEluZGV4ID0gZmluZExhc3RJbmRleDtcbiAgICBsb2Rhc2guZmluZExhc3RLZXkgPSBmaW5kTGFzdEtleTtcbiAgICBsb2Rhc2guZmxvb3IgPSBmbG9vcjtcbiAgICBsb2Rhc2guZm9yRWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmZvckVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZm9ySW4gPSBmb3JJbjtcbiAgICBsb2Rhc2guZm9ySW5SaWdodCA9IGZvckluUmlnaHQ7XG4gICAgbG9kYXNoLmZvck93biA9IGZvck93bjtcbiAgICBsb2Rhc2guZm9yT3duUmlnaHQgPSBmb3JPd25SaWdodDtcbiAgICBsb2Rhc2guZ2V0ID0gZ2V0O1xuICAgIGxvZGFzaC5ndCA9IGd0O1xuICAgIGxvZGFzaC5ndGUgPSBndGU7XG4gICAgbG9kYXNoLmhhcyA9IGhhcztcbiAgICBsb2Rhc2guaGFzSW4gPSBoYXNJbjtcbiAgICBsb2Rhc2guaGVhZCA9IGhlYWQ7XG4gICAgbG9kYXNoLmlkZW50aXR5ID0gaWRlbnRpdHk7XG4gICAgbG9kYXNoLmluY2x1ZGVzID0gaW5jbHVkZXM7XG4gICAgbG9kYXNoLmluZGV4T2YgPSBpbmRleE9mO1xuICAgIGxvZGFzaC5pblJhbmdlID0gaW5SYW5nZTtcbiAgICBsb2Rhc2guaW52b2tlID0gaW52b2tlO1xuICAgIGxvZGFzaC5pc0FyZ3VtZW50cyA9IGlzQXJndW1lbnRzO1xuICAgIGxvZGFzaC5pc0FycmF5ID0gaXNBcnJheTtcbiAgICBsb2Rhc2guaXNBcnJheUJ1ZmZlciA9IGlzQXJyYXlCdWZmZXI7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlID0gaXNBcnJheUxpa2U7XG4gICAgbG9kYXNoLmlzQXJyYXlMaWtlT2JqZWN0ID0gaXNBcnJheUxpa2VPYmplY3Q7XG4gICAgbG9kYXNoLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcbiAgICBsb2Rhc2guaXNCdWZmZXIgPSBpc0J1ZmZlcjtcbiAgICBsb2Rhc2guaXNEYXRlID0gaXNEYXRlO1xuICAgIGxvZGFzaC5pc0VsZW1lbnQgPSBpc0VsZW1lbnQ7XG4gICAgbG9kYXNoLmlzRW1wdHkgPSBpc0VtcHR5O1xuICAgIGxvZGFzaC5pc0VxdWFsID0gaXNFcXVhbDtcbiAgICBsb2Rhc2guaXNFcXVhbFdpdGggPSBpc0VxdWFsV2l0aDtcbiAgICBsb2Rhc2guaXNFcnJvciA9IGlzRXJyb3I7XG4gICAgbG9kYXNoLmlzRmluaXRlID0gaXNGaW5pdGU7XG4gICAgbG9kYXNoLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuICAgIGxvZGFzaC5pc0ludGVnZXIgPSBpc0ludGVnZXI7XG4gICAgbG9kYXNoLmlzTGVuZ3RoID0gaXNMZW5ndGg7XG4gICAgbG9kYXNoLmlzTWFwID0gaXNNYXA7XG4gICAgbG9kYXNoLmlzTWF0Y2ggPSBpc01hdGNoO1xuICAgIGxvZGFzaC5pc01hdGNoV2l0aCA9IGlzTWF0Y2hXaXRoO1xuICAgIGxvZGFzaC5pc05hTiA9IGlzTmFOO1xuICAgIGxvZGFzaC5pc05hdGl2ZSA9IGlzTmF0aXZlO1xuICAgIGxvZGFzaC5pc05pbCA9IGlzTmlsO1xuICAgIGxvZGFzaC5pc051bGwgPSBpc051bGw7XG4gICAgbG9kYXNoLmlzTnVtYmVyID0gaXNOdW1iZXI7XG4gICAgbG9kYXNoLmlzT2JqZWN0ID0gaXNPYmplY3Q7XG4gICAgbG9kYXNoLmlzT2JqZWN0TGlrZSA9IGlzT2JqZWN0TGlrZTtcbiAgICBsb2Rhc2guaXNQbGFpbk9iamVjdCA9IGlzUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLmlzUmVnRXhwID0gaXNSZWdFeHA7XG4gICAgbG9kYXNoLmlzU2FmZUludGVnZXIgPSBpc1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc1NldCA9IGlzU2V0O1xuICAgIGxvZGFzaC5pc1N0cmluZyA9IGlzU3RyaW5nO1xuICAgIGxvZGFzaC5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuICAgIGxvZGFzaC5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG4gICAgbG9kYXNoLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG4gICAgbG9kYXNoLmlzV2Vha01hcCA9IGlzV2Vha01hcDtcbiAgICBsb2Rhc2guaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuICAgIGxvZGFzaC5qb2luID0gam9pbjtcbiAgICBsb2Rhc2gua2ViYWJDYXNlID0ga2ViYWJDYXNlO1xuICAgIGxvZGFzaC5sYXN0ID0gbGFzdDtcbiAgICBsb2Rhc2gubGFzdEluZGV4T2YgPSBsYXN0SW5kZXhPZjtcbiAgICBsb2Rhc2gubG93ZXJDYXNlID0gbG93ZXJDYXNlO1xuICAgIGxvZGFzaC5sb3dlckZpcnN0ID0gbG93ZXJGaXJzdDtcbiAgICBsb2Rhc2gubHQgPSBsdDtcbiAgICBsb2Rhc2gubHRlID0gbHRlO1xuICAgIGxvZGFzaC5tYXggPSBtYXg7XG4gICAgbG9kYXNoLm1heEJ5ID0gbWF4Qnk7XG4gICAgbG9kYXNoLm1lYW4gPSBtZWFuO1xuICAgIGxvZGFzaC5tZWFuQnkgPSBtZWFuQnk7XG4gICAgbG9kYXNoLm1pbiA9IG1pbjtcbiAgICBsb2Rhc2gubWluQnkgPSBtaW5CeTtcbiAgICBsb2Rhc2guc3R1YkFycmF5ID0gc3R1YkFycmF5O1xuICAgIGxvZGFzaC5zdHViRmFsc2UgPSBzdHViRmFsc2U7XG4gICAgbG9kYXNoLnN0dWJPYmplY3QgPSBzdHViT2JqZWN0O1xuICAgIGxvZGFzaC5zdHViU3RyaW5nID0gc3R1YlN0cmluZztcbiAgICBsb2Rhc2guc3R1YlRydWUgPSBzdHViVHJ1ZTtcbiAgICBsb2Rhc2gubXVsdGlwbHkgPSBtdWx0aXBseTtcbiAgICBsb2Rhc2gubnRoID0gbnRoO1xuICAgIGxvZGFzaC5ub0NvbmZsaWN0ID0gbm9Db25mbGljdDtcbiAgICBsb2Rhc2gubm9vcCA9IG5vb3A7XG4gICAgbG9kYXNoLm5vdyA9IG5vdztcbiAgICBsb2Rhc2gucGFkID0gcGFkO1xuICAgIGxvZGFzaC5wYWRFbmQgPSBwYWRFbmQ7XG4gICAgbG9kYXNoLnBhZFN0YXJ0ID0gcGFkU3RhcnQ7XG4gICAgbG9kYXNoLnBhcnNlSW50ID0gcGFyc2VJbnQ7XG4gICAgbG9kYXNoLnJhbmRvbSA9IHJhbmRvbTtcbiAgICBsb2Rhc2gucmVkdWNlID0gcmVkdWNlO1xuICAgIGxvZGFzaC5yZWR1Y2VSaWdodCA9IHJlZHVjZVJpZ2h0O1xuICAgIGxvZGFzaC5yZXBlYXQgPSByZXBlYXQ7XG4gICAgbG9kYXNoLnJlcGxhY2UgPSByZXBsYWNlO1xuICAgIGxvZGFzaC5yZXN1bHQgPSByZXN1bHQ7XG4gICAgbG9kYXNoLnJvdW5kID0gcm91bmQ7XG4gICAgbG9kYXNoLnJ1bkluQ29udGV4dCA9IHJ1bkluQ29udGV4dDtcbiAgICBsb2Rhc2guc2FtcGxlID0gc2FtcGxlO1xuICAgIGxvZGFzaC5zaXplID0gc2l6ZTtcbiAgICBsb2Rhc2guc25ha2VDYXNlID0gc25ha2VDYXNlO1xuICAgIGxvZGFzaC5zb21lID0gc29tZTtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXggPSBzb3J0ZWRJbmRleDtcbiAgICBsb2Rhc2guc29ydGVkSW5kZXhCeSA9IHNvcnRlZEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4T2YgPSBzb3J0ZWRJbmRleE9mO1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXggPSBzb3J0ZWRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleEJ5ID0gc29ydGVkTGFzdEluZGV4Qnk7XG4gICAgbG9kYXNoLnNvcnRlZExhc3RJbmRleE9mID0gc29ydGVkTGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLnN0YXJ0Q2FzZSA9IHN0YXJ0Q2FzZTtcbiAgICBsb2Rhc2guc3RhcnRzV2l0aCA9IHN0YXJ0c1dpdGg7XG4gICAgbG9kYXNoLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG4gICAgbG9kYXNoLnN1bSA9IHN1bTtcbiAgICBsb2Rhc2guc3VtQnkgPSBzdW1CeTtcbiAgICBsb2Rhc2gudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICBsb2Rhc2gudGltZXMgPSB0aW1lcztcbiAgICBsb2Rhc2gudG9GaW5pdGUgPSB0b0Zpbml0ZTtcbiAgICBsb2Rhc2gudG9JbnRlZ2VyID0gdG9JbnRlZ2VyO1xuICAgIGxvZGFzaC50b0xlbmd0aCA9IHRvTGVuZ3RoO1xuICAgIGxvZGFzaC50b0xvd2VyID0gdG9Mb3dlcjtcbiAgICBsb2Rhc2gudG9OdW1iZXIgPSB0b051bWJlcjtcbiAgICBsb2Rhc2gudG9TYWZlSW50ZWdlciA9IHRvU2FmZUludGVnZXI7XG4gICAgbG9kYXNoLnRvU3RyaW5nID0gdG9TdHJpbmc7XG4gICAgbG9kYXNoLnRvVXBwZXIgPSB0b1VwcGVyO1xuICAgIGxvZGFzaC50cmltID0gdHJpbTtcbiAgICBsb2Rhc2gudHJpbUVuZCA9IHRyaW1FbmQ7XG4gICAgbG9kYXNoLnRyaW1TdGFydCA9IHRyaW1TdGFydDtcbiAgICBsb2Rhc2gudHJ1bmNhdGUgPSB0cnVuY2F0ZTtcbiAgICBsb2Rhc2gudW5lc2NhcGUgPSB1bmVzY2FwZTtcbiAgICBsb2Rhc2gudW5pcXVlSWQgPSB1bmlxdWVJZDtcbiAgICBsb2Rhc2gudXBwZXJDYXNlID0gdXBwZXJDYXNlO1xuICAgIGxvZGFzaC51cHBlckZpcnN0ID0gdXBwZXJGaXJzdDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lYWNoID0gZm9yRWFjaDtcbiAgICBsb2Rhc2guZWFjaFJpZ2h0ID0gZm9yRWFjaFJpZ2h0O1xuICAgIGxvZGFzaC5maXJzdCA9IGhlYWQ7XG5cbiAgICBtaXhpbihsb2Rhc2gsIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzb3VyY2UgPSB7fTtcbiAgICAgIGJhc2VGb3JPd24obG9kYXNoLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gucHJvdG90eXBlLCBtZXRob2ROYW1lKSkge1xuICAgICAgICAgIHNvdXJjZVttZXRob2ROYW1lXSA9IGZ1bmM7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9KCkpLCB7ICdjaGFpbic6IGZhbHNlIH0pO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICBsb2Rhc2guVkVSU0lPTiA9IFZFUlNJT047XG5cbiAgICAvLyBBc3NpZ24gZGVmYXVsdCBwbGFjZWhvbGRlcnMuXG4gICAgYXJyYXlFYWNoKFsnYmluZCcsICdiaW5kS2V5JywgJ2N1cnJ5JywgJ2N1cnJ5UmlnaHQnLCAncGFydGlhbCcsICdwYXJ0aWFsUmlnaHQnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSkge1xuICAgICAgbG9kYXNoW21ldGhvZE5hbWVdLnBsYWNlaG9sZGVyID0gbG9kYXNoO1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uZHJvcGAgYW5kIGBfLnRha2VgIHZhcmlhbnRzLlxuICAgIGFycmF5RWFjaChbJ2Ryb3AnLCAndGFrZSddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24obikge1xuICAgICAgICBuID0gbiA9PT0gdW5kZWZpbmVkID8gMSA6IG5hdGl2ZU1heCh0b0ludGVnZXIobiksIDApO1xuXG4gICAgICAgIHZhciByZXN1bHQgPSAodGhpcy5fX2ZpbHRlcmVkX18gJiYgIWluZGV4KVxuICAgICAgICAgID8gbmV3IExhenlXcmFwcGVyKHRoaXMpXG4gICAgICAgICAgOiB0aGlzLmNsb25lKCk7XG5cbiAgICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgICByZXN1bHQuX190YWtlQ291bnRfXyA9IG5hdGl2ZU1pbihuLCByZXN1bHQuX190YWtlQ291bnRfXyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdmlld3NfXy5wdXNoKHtcbiAgICAgICAgICAgICdzaXplJzogbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpLFxuICAgICAgICAgICAgJ3R5cGUnOiBtZXRob2ROYW1lICsgKHJlc3VsdC5fX2Rpcl9fIDwgMCA/ICdSaWdodCcgOiAnJylcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWUgKyAnUmlnaHQnXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpW21ldGhvZE5hbWVdKG4pLnJldmVyc2UoKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIHRoYXQgYWNjZXB0IGFuIGBpdGVyYXRlZWAgdmFsdWUuXG4gICAgYXJyYXlFYWNoKFsnZmlsdGVyJywgJ21hcCcsICd0YWtlV2hpbGUnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciB0eXBlID0gaW5kZXggKyAxLFxuICAgICAgICAgIGlzRmlsdGVyID0gdHlwZSA9PSBMQVpZX0ZJTFRFUl9GTEFHIHx8IHR5cGUgPT0gTEFaWV9XSElMRV9GTEFHO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICByZXN1bHQuX19pdGVyYXRlZXNfXy5wdXNoKHtcbiAgICAgICAgICAnaXRlcmF0ZWUnOiBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksXG4gICAgICAgICAgJ3R5cGUnOiB0eXBlXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQuX19maWx0ZXJlZF9fID0gcmVzdWx0Ll9fZmlsdGVyZWRfXyB8fCBpc0ZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYExhenlXcmFwcGVyYCBtZXRob2RzIGZvciBgXy5oZWFkYCBhbmQgYF8ubGFzdGAuXG4gICAgYXJyYXlFYWNoKFsnaGVhZCcsICdsYXN0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdGFrZU5hbWUgPSAndGFrZScgKyAoaW5kZXggPyAnUmlnaHQnIDogJycpO1xuXG4gICAgICBMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbdGFrZU5hbWVdKDEpLnZhbHVlKClbMF07XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaW5pdGlhbGAgYW5kIGBfLnRhaWxgLlxuICAgIGFycmF5RWFjaChbJ2luaXRpYWwnLCAndGFpbCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIGRyb3BOYW1lID0gJ2Ryb3AnICsgKGluZGV4ID8gJycgOiAnUmlnaHQnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9fZmlsdGVyZWRfXyA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKSA6IHRoaXNbZHJvcE5hbWVdKDEpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoaWRlbnRpdHkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKHByZWRpY2F0ZSkuaGVhZCgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuZmluZExhc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKHByZWRpY2F0ZSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5pbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICBpZiAodHlwZW9mIHBhdGggPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKHZhbHVlLCBwYXRoLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJlamVjdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSk7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICAgIHN0YXJ0ID0gdG9JbnRlZ2VyKHN0YXJ0KTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XG4gICAgICBpZiAocmVzdWx0Ll9fZmlsdGVyZWRfXyAmJiAoc3RhcnQgPiAwIHx8IGVuZCA8IDApKSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVdyYXBwZXIocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnRha2VSaWdodCgtc3RhcnQpO1xuICAgICAgfSBlbHNlIGlmIChzdGFydCkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuZHJvcChzdGFydCk7XG4gICAgICB9XG4gICAgICBpZiAoZW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZW5kID0gdG9JbnRlZ2VyKGVuZCk7XG4gICAgICAgIHJlc3VsdCA9IGVuZCA8IDAgPyByZXN1bHQuZHJvcFJpZ2h0KC1lbmQpIDogcmVzdWx0LnRha2UoZW5kIC0gc3RhcnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRha2VSaWdodFdoaWxlID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHByZWRpY2F0ZSkucmV2ZXJzZSgpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFrZShNQVhfQVJSQVlfTEVOR1RIKTtcbiAgICB9O1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBjaGVja0l0ZXJhdGVlID0gL14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgaXNUYWtlciA9IC9eKD86aGVhZHxsYXN0KSQvLnRlc3QobWV0aG9kTmFtZSksXG4gICAgICAgICAgbG9kYXNoRnVuYyA9IGxvZGFzaFtpc1Rha2VyID8gKCd0YWtlJyArIChtZXRob2ROYW1lID09ICdsYXN0JyA/ICdSaWdodCcgOiAnJykpIDogbWV0aG9kTmFtZV0sXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gaXNUYWtlciB8fCAvXmZpbmQvLnRlc3QobWV0aG9kTmFtZSk7XG5cbiAgICAgIGlmICghbG9kYXNoRnVuYykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX18sXG4gICAgICAgICAgICBhcmdzID0gaXNUYWtlciA/IFsxXSA6IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGlzTGF6eSA9IHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIsXG4gICAgICAgICAgICBpdGVyYXRlZSA9IGFyZ3NbMF0sXG4gICAgICAgICAgICB1c2VMYXp5ID0gaXNMYXp5IHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIHZhciBpbnRlcmNlcHRvciA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGxvZGFzaEZ1bmMuYXBwbHkobG9kYXNoLCBhcnJheVB1c2goW3ZhbHVlXSwgYXJncykpO1xuICAgICAgICAgIHJldHVybiAoaXNUYWtlciAmJiBjaGFpbkFsbCkgPyByZXN1bHRbMF0gOiByZXN1bHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHVzZUxhenkgJiYgY2hlY2tJdGVyYXRlZSAmJiB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyAmJiBpdGVyYXRlZS5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIC8vIEF2b2lkIGxhenkgdXNlIGlmIHRoZSBpdGVyYXRlZSBoYXMgYSBcImxlbmd0aFwiIHZhbHVlIG90aGVyIHRoYW4gYDFgLlxuICAgICAgICAgIGlzTGF6eSA9IHVzZUxhenkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2hhaW5BbGwgPSB0aGlzLl9fY2hhaW5fXyxcbiAgICAgICAgICAgIGlzSHlicmlkID0gISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxcbiAgICAgICAgICAgIGlzVW53cmFwcGVkID0gcmV0VW53cmFwcGVkICYmICFjaGFpbkFsbCxcbiAgICAgICAgICAgIG9ubHlMYXp5ID0gaXNMYXp5ICYmICFpc0h5YnJpZDtcblxuICAgICAgICBpZiAoIXJldFVud3JhcHBlZCAmJiB1c2VMYXp5KSB7XG4gICAgICAgICAgdmFsdWUgPSBvbmx5TGF6eSA/IHZhbHVlIDogbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHZhbHVlLCBhcmdzKTtcbiAgICAgICAgICByZXN1bHQuX19hY3Rpb25zX18ucHVzaCh7ICdmdW5jJzogdGhydSwgJ2FyZ3MnOiBbaW50ZXJjZXB0b3JdLCAndGhpc0FyZyc6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LCBjaGFpbkFsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVW53cmFwcGVkICYmIG9ubHlMYXp5KSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gdGhpcy50aHJ1KGludGVyY2VwdG9yKTtcbiAgICAgICAgcmV0dXJuIGlzVW53cmFwcGVkID8gKGlzVGFrZXIgPyByZXN1bHQudmFsdWUoKVswXSA6IHJlc3VsdC52YWx1ZSgpKSA6IHJlc3VsdDtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYEFycmF5YCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBhcnJheUVhY2goWydwb3AnLCAncHVzaCcsICdzaGlmdCcsICdzb3J0JywgJ3NwbGljZScsICd1bnNoaWZ0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gYXJyYXlQcm90b1ttZXRob2ROYW1lXSxcbiAgICAgICAgICBjaGFpbk5hbWUgPSAvXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QobWV0aG9kTmFtZSkgPyAndGFwJyA6ICd0aHJ1JyxcbiAgICAgICAgICByZXRVbndyYXBwZWQgPSAvXig/OnBvcHxzaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAocmV0VW53cmFwcGVkICYmICF0aGlzLl9fY2hhaW5fXykge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzW2NoYWluTmFtZV0oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW10sIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBNYXAgbWluaWZpZWQgbWV0aG9kIG5hbWVzIHRvIHRoZWlyIHJlYWwgbmFtZXMuXG4gICAgYmFzZUZvck93bihMYXp5V3JhcHBlci5wcm90b3R5cGUsIGZ1bmN0aW9uKGZ1bmMsIG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBsb2Rhc2hGdW5jID0gbG9kYXNoW21ldGhvZE5hbWVdO1xuICAgICAgaWYgKGxvZGFzaEZ1bmMpIHtcbiAgICAgICAgdmFyIGtleSA9IGxvZGFzaEZ1bmMubmFtZSArICcnO1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCBrZXkpKSB7XG4gICAgICAgICAgcmVhbE5hbWVzW2tleV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICByZWFsTmFtZXNba2V5XS5wdXNoKHsgJ25hbWUnOiBtZXRob2ROYW1lLCAnZnVuYyc6IGxvZGFzaEZ1bmMgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZWFsTmFtZXNbY3JlYXRlSHlicmlkKHVuZGVmaW5lZCwgV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXSA9IFt7XG4gICAgICAnbmFtZSc6ICd3cmFwcGVyJyxcbiAgICAgICdmdW5jJzogdW5kZWZpbmVkXG4gICAgfV07XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGF6eVdyYXBwZXJgLlxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZSA9IGxhenlDbG9uZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUucmV2ZXJzZSA9IGxhenlSZXZlcnNlO1xuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS52YWx1ZSA9IGxhenlWYWx1ZTtcblxuICAgIC8vIEFkZCBjaGFpbiBzZXF1ZW5jZSBtZXRob2RzIHRvIHRoZSBgbG9kYXNoYCB3cmFwcGVyLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuYXQgPSB3cmFwcGVyQXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jaGFpbiA9IHdyYXBwZXJDaGFpbjtcbiAgICBsb2Rhc2gucHJvdG90eXBlLmNvbW1pdCA9IHdyYXBwZXJDb21taXQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5uZXh0ID0gd3JhcHBlck5leHQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5wbGFudCA9IHdyYXBwZXJQbGFudDtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnJldmVyc2UgPSB3cmFwcGVyUmV2ZXJzZTtcbiAgICBsb2Rhc2gucHJvdG90eXBlLnRvSlNPTiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWVPZiA9IGxvZGFzaC5wcm90b3R5cGUudmFsdWUgPSB3cmFwcGVyVmFsdWU7XG5cbiAgICAvLyBBZGQgbGF6eSBhbGlhc2VzLlxuICAgIGxvZGFzaC5wcm90b3R5cGUuZmlyc3QgPSBsb2Rhc2gucHJvdG90eXBlLmhlYWQ7XG5cbiAgICBpZiAoc3ltSXRlcmF0b3IpIHtcbiAgICAgIGxvZGFzaC5wcm90b3R5cGVbc3ltSXRlcmF0b3JdID0gd3JhcHBlclRvSXRlcmF0b3I7XG4gICAgfVxuICAgIHJldHVybiBsb2Rhc2g7XG4gIH0pO1xuXG4gIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIC8vIEV4cG9ydCBsb2Rhc2guXG4gIHZhciBfID0gcnVuSW5Db250ZXh0KCk7XG5cbiAgLy8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3IgY29uZGl0aW9uIHBhdHRlcm5zIGxpa2U6XG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEV4cG9zZSBMb2Rhc2ggb24gdGhlIGdsb2JhbCBvYmplY3QgdG8gcHJldmVudCBlcnJvcnMgd2hlbiBMb2Rhc2ggaXNcbiAgICAvLyBsb2FkZWQgYnkgYSBzY3JpcHQgdGFnIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBBTUQgbG9hZGVyLlxuICAgIC8vIFNlZSBodHRwOi8vcmVxdWlyZWpzLm9yZy9kb2NzL2Vycm9ycy5odG1sI21pc21hdGNoIGZvciBtb3JlIGRldGFpbHMuXG4gICAgLy8gVXNlIGBfLm5vQ29uZmxpY3RgIHRvIHJlbW92ZSBMb2Rhc2ggZnJvbSB0aGUgZ2xvYmFsIG9iamVjdC5cbiAgICByb290Ll8gPSBfO1xuXG4gICAgLy8gRGVmaW5lIGFzIGFuIGFub255bW91cyBtb2R1bGUgc28sIHRocm91Z2ggcGF0aCBtYXBwaW5nLCBpdCBjYW4gYmVcbiAgICAvLyByZWZlcmVuY2VkIGFzIHRoZSBcInVuZGVyc2NvcmVcIiBtb2R1bGUuXG4gICAgZGVmaW5lKGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIF87XG4gICAgfSk7XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGBleHBvcnRzYCBhZnRlciBgZGVmaW5lYCBpbiBjYXNlIGEgYnVpbGQgb3B0aW1pemVyIGFkZHMgaXQuXG4gIGVsc2UgaWYgKGZyZWVNb2R1bGUpIHtcbiAgICAvLyBFeHBvcnQgZm9yIE5vZGUuanMuXG4gICAgKGZyZWVNb2R1bGUuZXhwb3J0cyA9IF8pLl8gPSBfO1xuICAgIC8vIEV4cG9ydCBmb3IgQ29tbW9uSlMgc3VwcG9ydC5cbiAgICBmcmVlRXhwb3J0cy5fID0gXztcbiAgfVxuICBlbHNlIHtcbiAgICAvLyBFeHBvcnQgdG8gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcbiAgfVxufS5jYWxsKHRoaXMpKTtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vdztcbiIsInZhciBjcmVhdGVSYW5nZSA9IHJlcXVpcmUoJy4vX2NyZWF0ZVJhbmdlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBudW1iZXJzIChwb3NpdGl2ZSBhbmQvb3IgbmVnYXRpdmUpIHByb2dyZXNzaW5nIGZyb21cbiAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gKiBgc3RhcnRgIGlzIHNwZWNpZmllZCB3aXRob3V0IGFuIGBlbmRgIG9yIGBzdGVwYC4gSWYgYGVuZGAgaXMgbm90IHNwZWNpZmllZCxcbiAqIGl0J3Mgc2V0IHRvIGBzdGFydGAgd2l0aCBgc3RhcnRgIHRoZW4gc2V0IHRvIGAwYC5cbiAqXG4gKiAqKk5vdGU6KiogSmF2YVNjcmlwdCBmb2xsb3dzIHRoZSBJRUVFLTc1NCBzdGFuZGFyZCBmb3IgcmVzb2x2aW5nXG4gKiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hpY2ggY2FuIHByb2R1Y2UgdW5leHBlY3RlZCByZXN1bHRzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGVwPTFdIFRoZSB2YWx1ZSB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJhbmdlKDQpO1xuICogLy8gPT4gWzAsIDEsIDIsIDNdXG4gKlxuICogXy5yYW5nZSgtNCk7XG4gKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAqXG4gKiBfLnJhbmdlKDEsIDUpO1xuICogLy8gPT4gWzEsIDIsIDMsIDRdXG4gKlxuICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gKiAvLyA9PiBbMCwgNSwgMTAsIDE1XVxuICpcbiAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gKiAvLyA9PiBbMSwgMSwgMV1cbiAqXG4gKiBfLnJhbmdlKDApO1xuICogLy8gPT4gW11cbiAqL1xudmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxubW9kdWxlLmV4cG9ydHMgPSByYW5nZTtcbiIsInZhciBkZWJvdW5jZSA9IHJlcXVpcmUoJy4vZGVib3VuY2UnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGhyb3R0bGVkIGZ1bmN0aW9uIHRoYXQgb25seSBpbnZva2VzIGBmdW5jYCBhdCBtb3N0IG9uY2UgcGVyXG4gKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICogaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgXG4gKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gKiB0aHJvdHRsZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnQgY2FsbHMgdG8gdGhlIHRocm90dGxlZCBmdW5jdGlvbiByZXR1cm4gdGhlXG4gKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gKlxuICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAqXG4gKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAqXG4gKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aHJvdHRsZSBpbnZvY2F0aW9ucyB0by5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB0aHJvdHRsZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEF2b2lkIGV4Y2Vzc2l2ZWx5IHVwZGF0aW5nIHRoZSBwb3NpdGlvbiB3aGlsZSBzY3JvbGxpbmcuXG4gKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gKlxuICogLy8gSW52b2tlIGByZW5ld1Rva2VuYCB3aGVuIHRoZSBjbGljayBldmVudCBpcyBmaXJlZCwgYnV0IG5vdCBtb3JlIHRoYW4gb25jZSBldmVyeSA1IG1pbnV0ZXMuXG4gKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG4gIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgJ2xlYWRpbmcnOiBsZWFkaW5nLFxuICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0aHJvdHRsZTtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iLCJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuY2xhc3MgTWFyayB7XG4gICAgY29uc3RydWN0b3IoY3R4KSB7XG4gICAgICAgIHRoaXMuY3R4ID0gY3R4O1xuICAgICAgICB0aGlzLmllID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHVhID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgICAgIGlmICh1YS5pbmRleE9mKFwiTVNJRVwiKSA+IC0xIHx8IHVhLmluZGV4T2YoXCJUcmlkZW50XCIpID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuaWUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNldCBvcHQodmFsKSB7XG4gICAgICAgIHRoaXMuX29wdCA9IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgICAgICAgIFwiZWxlbWVudFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJjbGFzc05hbWVcIjogXCJcIixcbiAgICAgICAgICAgIFwiZXhjbHVkZVwiOiBbXSxcbiAgICAgICAgICAgIFwic2VwYXJhdGVXb3JkU2VhcmNoXCI6IHRydWUsXG4gICAgICAgICAgICBcImRpYWNyaXRpY3NcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwic3lub255bXNcIjoge30sXG4gICAgICAgICAgICBcImFjY3VyYWN5XCI6IFwicGFydGlhbGx5XCIsXG4gICAgICAgICAgICBcImFjcm9zc0VsZW1lbnRzXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJjYXNlU2Vuc2l0aXZlXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJpZ25vcmVKb2luZXJzXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJpZ25vcmVHcm91cHNcIjogMCxcbiAgICAgICAgICAgIFwid2lsZGNhcmRzXCI6IFwiZGlzYWJsZWRcIixcbiAgICAgICAgICAgIFwiZWFjaFwiOiAoKSA9PiB7IH0sXG4gICAgICAgICAgICBcIm5vTWF0Y2hcIjogKCkgPT4geyB9LFxuICAgICAgICAgICAgXCJmaWx0ZXJcIjogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIFwiZG9uZVwiOiAoKSA9PiB7IH0sXG4gICAgICAgICAgICBcImRlYnVnXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJsb2dcIjogd2luZG93LmNvbnNvbGVcbiAgICAgICAgfSwgdmFsKTtcbiAgICB9XG4gICAgZ2V0IG9wdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdDtcbiAgICB9XG4gICAgZ2V0IGl0ZXJhdG9yKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2l0ZXJhdG9yKSB7XG4gICAgICAgICAgICB0aGlzLl9pdGVyYXRvciA9IG5ldyBET01JdGVyYXRvcih0aGlzLmN0eCwgdGhpcy5vcHQuZXhjbHVkZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZXJhdG9yO1xuICAgIH1cbiAgICBsb2cobXNnLCBsZXZlbCA9IFwiZGVidWdcIikge1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLm9wdC5sb2c7XG4gICAgICAgIGlmICghdGhpcy5vcHQuZGVidWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGxvZyA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgbG9nW2xldmVsXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBsb2dbbGV2ZWxdKGBtYXJrLmpzOiAke21zZ31gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlc2NhcGVTdHIoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcLVxcW1xcXVxcL1xce1xcfVxcKFxcKVxcKlxcK1xcP1xcLlxcXFxcXF5cXCRcXHxdL2csIFwiXFxcXCQmXCIpO1xuICAgIH1cbiAgICBjcmVhdGVSZWdFeHAoc3RyKSB7XG4gICAgICAgIGlmICh0aGlzLm9wdC53aWxkY2FyZHMgIT09IFwiZGlzYWJsZWRcIikge1xuICAgICAgICAgICAgc3RyID0gdGhpcy5zZXR1cFdpbGRjYXJkc1JlZ0V4cChzdHIpO1xuICAgICAgICB9XG4gICAgICAgIHN0ciA9IHRoaXMuZXNjYXBlU3RyKHN0cik7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLm9wdC5zeW5vbnltcykubGVuZ3RoKSB7XG4gICAgICAgICAgICBzdHIgPSB0aGlzLmNyZWF0ZVN5bm9ueW1zUmVnRXhwKHN0cik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0Lmlnbm9yZUpvaW5lcnMpIHtcbiAgICAgICAgICAgIHN0ciA9IHRoaXMuc2V0dXBJZ25vcmVKb2luZXJzUmVnRXhwKHN0cik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0LmRpYWNyaXRpY3MpIHtcbiAgICAgICAgICAgIHN0ciA9IHRoaXMuY3JlYXRlRGlhY3JpdGljc1JlZ0V4cChzdHIpO1xuICAgICAgICB9XG4gICAgICAgIHN0ciA9IHRoaXMuY3JlYXRlTWVyZ2VkQmxhbmtzUmVnRXhwKHN0cik7XG4gICAgICAgIGlmICh0aGlzLm9wdC5pZ25vcmVKb2luZXJzKSB7XG4gICAgICAgICAgICBzdHIgPSB0aGlzLmNyZWF0ZUlnbm9yZUpvaW5lcnNSZWdFeHAoc3RyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHQud2lsZGNhcmRzICE9PSBcImRpc2FibGVkXCIpIHtcbiAgICAgICAgICAgIHN0ciA9IHRoaXMuY3JlYXRlV2lsZGNhcmRzUmVnRXhwKHN0cik7XG4gICAgICAgIH1cbiAgICAgICAgc3RyID0gdGhpcy5jcmVhdGVBY2N1cmFjeVJlZ0V4cChzdHIpO1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBjcmVhdGVTeW5vbnltc1JlZ0V4cChzdHIpIHtcbiAgICAgICAgY29uc3Qgc3luID0gdGhpcy5vcHQuc3lub255bXMsIHNlbnMgPSB0aGlzLm9wdC5jYXNlU2Vuc2l0aXZlID8gXCJcIiA6IFwiaVwiO1xuICAgICAgICBmb3IgKGxldCBpbmRleCBpbiBzeW4pIHtcbiAgICAgICAgICAgIGlmIChzeW4uaGFzT3duUHJvcGVydHkoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzeW5baW5kZXhdLCBrMSA9IHRoaXMub3B0LndpbGRjYXJkcyAhPT0gXCJkaXNhYmxlZFwiID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR1cFdpbGRjYXJkc1JlZ0V4cChpbmRleCkgOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVzY2FwZVN0cihpbmRleCksIGsyID0gdGhpcy5vcHQud2lsZGNhcmRzICE9PSBcImRpc2FibGVkXCIgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldHVwV2lsZGNhcmRzUmVnRXhwKHZhbHVlKSA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXNjYXBlU3RyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoazEgIT09IFwiXCIgJiYgazIgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChgKCR7azF9fCR7azJ9KWAsIGBnbSR7c2Vuc31gKSwgYCgke2sxfXwke2syfSlgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgc2V0dXBXaWxkY2FyZHNSZWdFeHAoc3RyKSB7XG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8oPzpcXFxcKSpcXD8vZywgdmFsID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2YWwuY2hhckF0KDApID09PSBcIlxcXFxcIiA/IFwiP1wiIDogXCJcXHUwMDAxXCI7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyg/OlxcXFwpKlxcKi9nLCB2YWwgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5jaGFyQXQoMCkgPT09IFwiXFxcXFwiID8gXCIqXCIgOiBcIlxcdTAwMDJcIjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNyZWF0ZVdpbGRjYXJkc1JlZ0V4cChzdHIpIHtcbiAgICAgICAgbGV0IHNwYWNlcyA9IHRoaXMub3B0LndpbGRjYXJkcyA9PT0gXCJ3aXRoU3BhY2VzXCI7XG4gICAgICAgIHJldHVybiBzdHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHUwMDAxL2csIHNwYWNlcyA/IFwiW1xcXFxTXFxcXHNdP1wiIDogXCJcXFxcUz9cIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXHUwMDAyL2csIHNwYWNlcyA/IFwiW1xcXFxTXFxcXHNdKj9cIiA6IFwiXFxcXFMqXCIpO1xuICAgIH1cbiAgICBzZXR1cElnbm9yZUpvaW5lcnNSZWdFeHAoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvW14ofClcXFxcXS9nLCAodmFsLCBpbmR4LCBvcmlnaW5hbCkgPT4ge1xuICAgICAgICAgICAgbGV0IG5leHRDaGFyID0gb3JpZ2luYWwuY2hhckF0KGluZHggKyAxKTtcbiAgICAgICAgICAgIGlmICgvWyh8KVxcXFxdLy50ZXN0KG5leHRDaGFyKSB8fCBuZXh0Q2hhciA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsICsgXCJcXHUwMDAwXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjcmVhdGVJZ25vcmVKb2luZXJzUmVnRXhwKHN0cikge1xuICAgICAgICByZXR1cm4gc3RyLnNwbGl0KFwiXFx1MDAwMFwiKS5qb2luKFwiW1xcXFx1MDBhZHxcXFxcdTIwMGJ8XFxcXHUyMDBjfFxcXFx1MjAwZF0/XCIpO1xuICAgIH1cbiAgICBjcmVhdGVEaWFjcml0aWNzUmVnRXhwKHN0cikge1xuICAgICAgICBjb25zdCBzZW5zID0gdGhpcy5vcHQuY2FzZVNlbnNpdGl2ZSA/ICcnIDogJ2knO1xuICAgICAgICBjb25zdCBkY3QgPSB0aGlzLm9wdC5jYXNlU2Vuc2l0aXZlID8gW1xuICAgICAgICAgICAgJ2HDoMOhw6LDo8Okw6XEgcSFxIMnLCAnQcOAw4HDgsODw4TDhcSAxITEgicsICdjw6fEh8SNJywgJ0PDh8SGxIwnLCAnZMSRxI8nLCAnRMSQxI4nLFxuICAgICAgICAgICAgJ2XDqMOpw6rDq8SbxJPEmScsICdFw4jDicOKw4vEmsSSxJgnLCAnacOsw63DrsOvxKsnLCAnScOMw43DjsOPxKonLCAnbMWCJywgJ0zFgScsICduw7HFiMWEJyxcbiAgICAgICAgICAgICdOw5HFh8WDJywgJ2/DssOzw7TDtcO2w7jFjScsICdPw5LDk8OUw5XDlsOYxYwnLCAncsWZJywgJ1LFmCcsICdzxaHFm8iZxZ8nLCAnU8WgxZrImMWeJyxcbiAgICAgICAgICAgICd0xaXIm8WjJywgJ1TFpMiaxaInLCAndcO5w7rDu8O8xa/FqycsICdVw5nDmsObw5zFrsWqJywgJ3nDv8O9JywgJ1nFuMOdJywgJ3rFvsW8xbonLFxuICAgICAgICAgICAgJ1rFvcW7xbknXG4gICAgICAgIF0gOiBbXG4gICAgICAgICAgICAnYcOgw6HDosOjw6TDpcSBxIXEg0HDgMOBw4LDg8OEw4XEgMSExIInLCAnY8OnxIfEjUPDh8SGxIwnLCAnZMSRxI9ExJDEjicsXG4gICAgICAgICAgICAnZcOow6nDqsOrxJvEk8SZRcOIw4nDisOLxJrEksSYJywgJ2nDrMOtw67Dr8SrScOMw43DjsOPxKonLCAnbMWCTMWBJywgJ27DscWIxYROw5HFh8WDJyxcbiAgICAgICAgICAgICdvw7LDs8O0w7XDtsO4xY1Pw5LDk8OUw5XDlsOYxYwnLCAncsWZUsWYJywgJ3PFocWbyJnFn1PFoMWayJjFnicsICd0xaXIm8WjVMWkyJrFoicsXG4gICAgICAgICAgICAndcO5w7rDu8O8xa/Fq1XDmcOaw5vDnMWuxaonLCAnecO/w71ZxbjDnScsICd6xb7FvMW6WsW9xbvFuSdcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaGFuZGxlZCA9IFtdO1xuICAgICAgICBzdHIuc3BsaXQoJycpLmZvckVhY2goY2ggPT4ge1xuICAgICAgICAgICAgZGN0LmV2ZXJ5KGRjdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRjdC5pbmRleE9mKGNoKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZWQuaW5kZXhPZihkY3QpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShuZXcgUmVnRXhwKGBbJHtkY3R9XWAsIGBnbSR7c2Vuc31gKSwgYFske2RjdH1dYCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZWQucHVzaChkY3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgY3JlYXRlTWVyZ2VkQmxhbmtzUmVnRXhwKHN0cikge1xuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXHNdKy9nbWksIFwiW1xcXFxzXStcIik7XG4gICAgfVxuICAgIGNyZWF0ZUFjY3VyYWN5UmVnRXhwKHN0cikge1xuICAgICAgICBjb25zdCBjaGFycyA9IGAhXCIjJCUmJygpKissLS4vOjs8PT4/QFtcXFxcXV5fXFxge3x9fsKhwr9gO1xuICAgICAgICBsZXQgYWNjID0gdGhpcy5vcHQuYWNjdXJhY3ksIHZhbCA9IHR5cGVvZiBhY2MgPT09IFwic3RyaW5nXCIgPyBhY2MgOiBhY2MudmFsdWUsIGxzID0gdHlwZW9mIGFjYyA9PT0gXCJzdHJpbmdcIiA/IFtdIDogYWNjLmxpbWl0ZXJzLCBsc0pvaW4gPSBcIlwiO1xuICAgICAgICBscy5mb3JFYWNoKGxpbWl0ZXIgPT4ge1xuICAgICAgICAgICAgbHNKb2luICs9IGB8JHt0aGlzLmVzY2FwZVN0cihsaW1pdGVyKX1gO1xuICAgICAgICB9KTtcbiAgICAgICAgc3dpdGNoICh2YWwpIHtcbiAgICAgICAgICAgIGNhc2UgXCJwYXJ0aWFsbHlcIjpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAoKSgke3N0cn0pYDtcbiAgICAgICAgICAgIGNhc2UgXCJjb21wbGVtZW50YXJ5XCI6XG4gICAgICAgICAgICAgICAgbHNKb2luID0gXCJcXFxcc1wiICsgKGxzSm9pbiA/IGxzSm9pbiA6IHRoaXMuZXNjYXBlU3RyKGNoYXJzKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAoKShbXiR7bHNKb2lufV0qJHtzdHJ9W14ke2xzSm9pbn1dKilgO1xuICAgICAgICAgICAgY2FzZSBcImV4YWN0bHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gYChefFxcXFxzJHtsc0pvaW59KSgke3N0cn0pKD89JHxcXFxccyR7bHNKb2lufSlgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFNlcGFyYXRlZEtleXdvcmRzKHN2KSB7XG4gICAgICAgIGxldCBzdGFjayA9IFtdO1xuICAgICAgICBzdi5mb3JFYWNoKGt3ID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5vcHQuc2VwYXJhdGVXb3JkU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGt3LnRyaW0oKSAmJiBzdGFjay5pbmRleE9mKGt3KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChrdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAga3cuc3BsaXQoXCIgXCIpLmZvckVhY2goa3dTcGxpdHRlZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrd1NwbGl0dGVkLnRyaW0oKSAmJiBzdGFjay5pbmRleE9mKGt3U3BsaXR0ZWQpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChrd1NwbGl0dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFwia2V5d29yZHNcIjogc3RhY2suc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBcImxlbmd0aFwiOiBzdGFjay5sZW5ndGhcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0VGV4dE5vZGVzKGNiKSB7XG4gICAgICAgIGxldCB2YWwgPSBcIlwiLCBub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLml0ZXJhdG9yLmZvckVhY2hOb2RlKE5vZGVGaWx0ZXIuU0hPV19URVhULCBub2RlID0+IHtcbiAgICAgICAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHN0YXJ0OiB2YWwubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGVuZDogKHZhbCArPSBub2RlLnRleHRDb250ZW50KS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubWF0Y2hlc0V4Y2x1ZGUobm9kZS5wYXJlbnROb2RlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICBjYih7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgICAgICAgICBub2Rlczogbm9kZXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWF0Y2hlc0V4Y2x1ZGUoZWwpIHtcbiAgICAgICAgcmV0dXJuIERPTUl0ZXJhdG9yLm1hdGNoZXMoZWwsIHRoaXMub3B0LmV4Y2x1ZGUuY29uY2F0KFtcbiAgICAgICAgICAgIFwic2NyaXB0XCIsIFwic3R5bGVcIiwgXCJ0aXRsZVwiLCBcImhlYWRcIiwgXCJodG1sXCJcbiAgICAgICAgXSkpO1xuICAgIH1cbiAgICB3cmFwUmFuZ2VJblRleHROb2RlKG5vZGUsIHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgY29uc3QgaEVsID0gIXRoaXMub3B0LmVsZW1lbnQgPyBcIm1hcmtcIiA6IHRoaXMub3B0LmVsZW1lbnQsIHN0YXJ0Tm9kZSA9IG5vZGUuc3BsaXRUZXh0KHN0YXJ0KSwgcmV0ID0gc3RhcnROb2RlLnNwbGl0VGV4dChlbmQgLSBzdGFydCk7XG4gICAgICAgIGxldCByZXBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChoRWwpO1xuICAgICAgICByZXBsLnNldEF0dHJpYnV0ZShcImRhdGEtbWFya2pzXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgaWYgKHRoaXMub3B0LmNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmVwbC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCB0aGlzLm9wdC5jbGFzc05hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJlcGwudGV4dENvbnRlbnQgPSBzdGFydE5vZGUudGV4dENvbnRlbnQ7XG4gICAgICAgIHN0YXJ0Tm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChyZXBsLCBzdGFydE5vZGUpO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICB3cmFwUmFuZ2VJbk1hcHBlZFRleHROb2RlKGRpY3QsIHN0YXJ0LCBlbmQsIGZpbHRlckNiLCBlYWNoQ2IpIHtcbiAgICAgICAgZGljdC5ub2Rlcy5ldmVyeSgobiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2libCA9IGRpY3Qubm9kZXNbaSArIDFdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzaWJsID09PSBcInVuZGVmaW5lZFwiIHx8IHNpYmwuc3RhcnQgPiBzdGFydCkge1xuICAgICAgICAgICAgICAgIGlmICghZmlsdGVyQ2Iobi5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSBzdGFydCAtIG4uc3RhcnQsIGUgPSAoZW5kID4gbi5lbmQgPyBuLmVuZCA6IGVuZCkgLSBuLnN0YXJ0LCBzdGFydFN0ciA9IGRpY3QudmFsdWUuc3Vic3RyKDAsIG4uc3RhcnQpLCBlbmRTdHIgPSBkaWN0LnZhbHVlLnN1YnN0cihlICsgbi5zdGFydCk7XG4gICAgICAgICAgICAgICAgbi5ub2RlID0gdGhpcy53cmFwUmFuZ2VJblRleHROb2RlKG4ubm9kZSwgcywgZSk7XG4gICAgICAgICAgICAgICAgZGljdC52YWx1ZSA9IHN0YXJ0U3RyICsgZW5kU3RyO1xuICAgICAgICAgICAgICAgIGRpY3Qubm9kZXMuZm9yRWFjaCgoaywgaikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaiA+PSBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGljdC5ub2Rlc1tqXS5zdGFydCA+IDAgJiYgaiAhPT0gaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qubm9kZXNbal0uc3RhcnQgLT0gZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qubm9kZXNbal0uZW5kIC09IGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBlbmQgLT0gZTtcbiAgICAgICAgICAgICAgICBlYWNoQ2Iobi5ub2RlLnByZXZpb3VzU2libGluZywgbi5zdGFydCk7XG4gICAgICAgICAgICAgICAgaWYgKGVuZCA+IG4uZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gbi5lbmQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB3cmFwTWF0Y2hlcyhyZWdleCwgaWdub3JlR3JvdXBzLCBmaWx0ZXJDYiwgZWFjaENiLCBlbmRDYikge1xuICAgICAgICBjb25zdCBtYXRjaElkeCA9IGlnbm9yZUdyb3VwcyA9PT0gMCA/IDAgOiBpZ25vcmVHcm91cHMgKyAxO1xuICAgICAgICB0aGlzLmdldFRleHROb2RlcyhkaWN0ID0+IHtcbiAgICAgICAgICAgIGRpY3Qubm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5ub2RlO1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhub2RlLnRleHRDb250ZW50KSkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hbbWF0Y2hJZHhdICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsdGVyQ2IobWF0Y2hbbWF0Y2hJZHhdLCBub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IG1hdGNoLmluZGV4O1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hJZHggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgbWF0Y2hJZHg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyArPSBtYXRjaFtpXS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IHRoaXMud3JhcFJhbmdlSW5UZXh0Tm9kZShub2RlLCBwb3MsIHBvcyArIG1hdGNoW21hdGNoSWR4XS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBlYWNoQ2Iobm9kZS5wcmV2aW91c1NpYmxpbmcpO1xuICAgICAgICAgICAgICAgICAgICByZWdleC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZW5kQ2IoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHdyYXBNYXRjaGVzQWNyb3NzRWxlbWVudHMocmVnZXgsIGlnbm9yZUdyb3VwcywgZmlsdGVyQ2IsIGVhY2hDYiwgZW5kQ2IpIHtcbiAgICAgICAgY29uc3QgbWF0Y2hJZHggPSBpZ25vcmVHcm91cHMgPT09IDAgPyAwIDogaWdub3JlR3JvdXBzICsgMTtcbiAgICAgICAgdGhpcy5nZXRUZXh0Tm9kZXMoZGljdCA9PiB7XG4gICAgICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhkaWN0LnZhbHVlKSkgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBtYXRjaFttYXRjaElkeF0gIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hJZHggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBtYXRjaElkeDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBtYXRjaFtpXS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBtYXRjaFttYXRjaElkeF0ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMud3JhcFJhbmdlSW5NYXBwZWRUZXh0Tm9kZShkaWN0LCBzdGFydCwgZW5kLCBub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckNiKG1hdGNoW21hdGNoSWR4XSwgbm9kZSk7XG4gICAgICAgICAgICAgICAgfSwgKG5vZGUsIGxhc3RJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWdleC5sYXN0SW5kZXggPSBsYXN0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGVhY2hDYihub2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuZENiKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB1bndyYXBNYXRjaGVzKG5vZGUpIHtcbiAgICAgICAgY29uc3QgcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICBsZXQgZG9jRnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgd2hpbGUgKG5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgZG9jRnJhZy5hcHBlbmRDaGlsZChub2RlLnJlbW92ZUNoaWxkKG5vZGUuZmlyc3RDaGlsZCkpO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQoZG9jRnJhZywgbm9kZSk7XG4gICAgICAgIGlmICghdGhpcy5pZSkge1xuICAgICAgICAgICAgcGFyZW50Lm5vcm1hbGl6ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVUZXh0Tm9kZShwYXJlbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG5vcm1hbGl6ZVRleHROb2RlKG5vZGUpIHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgICAgIHdoaWxlIChub2RlLm5leHRTaWJsaW5nICYmIG5vZGUubmV4dFNpYmxpbmcubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgICAgICAgICBub2RlLm5vZGVWYWx1ZSArPSBub2RlLm5leHRTaWJsaW5nLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZS5uZXh0U2libGluZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVRleHROb2RlKG5vZGUuZmlyc3RDaGlsZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3JtYWxpemVUZXh0Tm9kZShub2RlLm5leHRTaWJsaW5nKTtcbiAgICB9XG4gICAgbWFya1JlZ0V4cChyZWdleHAsIG9wdCkge1xuICAgICAgICB0aGlzLm9wdCA9IG9wdDtcbiAgICAgICAgdGhpcy5sb2coYFNlYXJjaGluZyB3aXRoIGV4cHJlc3Npb24gXCIke3JlZ2V4cH1cImApO1xuICAgICAgICBsZXQgdG90YWxNYXRjaGVzID0gMCwgZm4gPSBcIndyYXBNYXRjaGVzXCI7XG4gICAgICAgIGNvbnN0IGVhY2hDYiA9IGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgdG90YWxNYXRjaGVzKys7XG4gICAgICAgICAgICB0aGlzLm9wdC5lYWNoKGVsZW1lbnQpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5vcHQuYWNyb3NzRWxlbWVudHMpIHtcbiAgICAgICAgICAgIGZuID0gXCJ3cmFwTWF0Y2hlc0Fjcm9zc0VsZW1lbnRzXCI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpc1tmbl0ocmVnZXhwLCB0aGlzLm9wdC5pZ25vcmVHcm91cHMsIChtYXRjaCwgbm9kZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0LmZpbHRlcihub2RlLCBtYXRjaCwgdG90YWxNYXRjaGVzKTtcbiAgICAgICAgfSwgZWFjaENiLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodG90YWxNYXRjaGVzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHQubm9NYXRjaChyZWdleHApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vcHQuZG9uZSh0b3RhbE1hdGNoZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWFyayhzdiwgb3B0KSB7XG4gICAgICAgIHRoaXMub3B0ID0gb3B0O1xuICAgICAgICBsZXQgdG90YWxNYXRjaGVzID0gMDtcbiAgICAgICAgY29uc3QgaSA9IHRoaXMub3B0LmNhc2VTZW5zaXRpdmUgPyAnJyA6ICdpJztcbiAgICAgICAgY29uc3QgZm4gPSAodGhpcy5vcHQuYWNyb3NzRWxlbWVudHMpID9cbiAgICAgICAgICAgIFwid3JhcE1hdGNoZXNBY3Jvc3NFbGVtZW50c1wiIDpcbiAgICAgICAgICAgIFwid3JhcE1hdGNoZXNcIjtcbiAgICAgICAgY29uc3QgeyBrZXl3b3Jkczoga3dBcnIsIGxlbmd0aDoga3dBcnJMZW4gfSA9IHRoaXMuZ2V0U2VwYXJhdGVkS2V5d29yZHModHlwZW9mIHN2ID09PSBcInN0cmluZ1wiID8gW3N2XSA6IHN2KTtcbiAgICAgICAgaWYgKCFrd0FyckxlbilcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdC5kb25lKHRvdGFsTWF0Y2hlcyk7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSBrdyA9PiB7XG4gICAgICAgICAgICBsZXQgcmVnZXggPSBuZXcgUmVnRXhwKHRoaXMuY3JlYXRlUmVnRXhwKGt3KSwgYGdtJHtpfWApO1xuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSAwO1xuICAgICAgICAgICAgdGhpcy5sb2coYFNlYXJjaGluZyB3aXRoIGV4cHJlc3Npb24gXCIke3JlZ2V4fVwiYCk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJDYiA9ICh0ZXJtLCBub2RlKSA9PiB0aGlzLm9wdC5maWx0ZXIobm9kZSwga3csIHRvdGFsTWF0Y2hlcywgbWF0Y2hlcyk7XG4gICAgICAgICAgICBjb25zdCBlYWNoQ2IgPSBlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBtYXRjaGVzKys7XG4gICAgICAgICAgICAgICAgdG90YWxNYXRjaGVzKys7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHQuZWFjaChlbGVtZW50KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBlbmRDYiA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdC5ub01hdGNoKGt3KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGt3QXJyW2t3QXJyTGVuIC0gMV0gPT09IGt3KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0LmRvbmUodG90YWxNYXRjaGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIoa3dBcnJba3dBcnIuaW5kZXhPZihrdykgKyAxXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXNbZm5dKHJlZ2V4LCAxLCBmaWx0ZXJDYiwgZWFjaENiLCBlbmRDYik7XG4gICAgICAgIH07XG4gICAgICAgIGhhbmRsZXIoa3dBcnJbMF0pO1xuICAgIH1cbiAgICB1bm1hcmsob3B0KSB7XG4gICAgICAgIHRoaXMub3B0ID0gb3B0O1xuICAgICAgICBsZXQgc2VsID0gdGhpcy5vcHQuZWxlbWVudCA/IHRoaXMub3B0LmVsZW1lbnQgOiBcIipcIjtcbiAgICAgICAgc2VsICs9IFwiW2RhdGEtbWFya2pzXVwiO1xuICAgICAgICBpZiAodGhpcy5vcHQuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBzZWwgKz0gYC4ke3RoaXMub3B0LmNsYXNzTmFtZX1gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nKGBSZW1vdmFsIHNlbGVjdG9yIFwiJHtzZWx9XCJgKTtcbiAgICAgICAgdGhpcy5pdGVyYXRvci5mb3JFYWNoTm9kZShOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgbm9kZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVud3JhcE1hdGNoZXMobm9kZSk7XG4gICAgICAgIH0sIG5vZGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1NlbCA9IERPTUl0ZXJhdG9yLm1hdGNoZXMobm9kZSwgc2VsKSwgbWF0Y2hlc0V4Y2x1ZGUgPSB0aGlzLm1hdGNoZXNFeGNsdWRlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKCFtYXRjaGVzU2VsIHx8IG1hdGNoZXNFeGNsdWRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMub3B0LmRvbmUpO1xuICAgIH1cbn1cbmNsYXNzIERPTUl0ZXJhdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihjdHgsIGV4Y2x1ZGUgPSBbXSkge1xuICAgICAgICB0aGlzLmN0eCA9IGN0eDtcbiAgICAgICAgdGhpcy5leGNsdWRlID0gZXhjbHVkZTtcbiAgICB9XG4gICAgc3RhdGljIG1hdGNoZXMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzID0gdHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiID8gW3NlbGVjdG9yXSA6IHNlbGVjdG9yLCBmbiA9IChlbGVtZW50Lm1hdGNoZXMgfHxcbiAgICAgICAgICAgIGVsZW1lbnQubWF0Y2hlc1NlbGVjdG9yIHx8XG4gICAgICAgICAgICBlbGVtZW50Lm1zTWF0Y2hlc1NlbGVjdG9yIHx8XG4gICAgICAgICAgICBlbGVtZW50Lm1vek1hdGNoZXNTZWxlY3RvciB8fFxuICAgICAgICAgICAgZWxlbWVudC5vTWF0Y2hlc1NlbGVjdG9yIHx8XG4gICAgICAgICAgICBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxlY3Rvcik7XG4gICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgbGV0IG1hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICBzZWxlY3RvcnMuZXZlcnkoc2VsID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZm4uY2FsbChlbGVtZW50LCBzZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldENvbnRleHRzKCkge1xuICAgICAgICBsZXQgY3R4LCBmaWx0ZXJlZEN0eCA9IFtdO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3R4ID09PSBcInVuZGVmaW5lZFwiIHx8ICF0aGlzLmN0eCkge1xuICAgICAgICAgICAgY3R4ID0gW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoTm9kZUxpc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YodGhpcy5jdHgpKSB7XG4gICAgICAgICAgICBjdHggPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmN0eCkpIHtcbiAgICAgICAgICAgIGN0eCA9IHRoaXMuY3R4O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLmN0eCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY3R4ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLmN0eCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3R4ID0gW3RoaXMuY3R4XTtcbiAgICAgICAgfVxuICAgICAgICBjdHguZm9yRWFjaChjdHggPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNEZXNjZW5kYW50ID0gZmlsdGVyZWRDdHguZmlsdGVyKGNvbnRleHRzID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dHMuY29udGFpbnMoY3R4KTtcbiAgICAgICAgICAgIH0pLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBpZiAoZmlsdGVyZWRDdHguaW5kZXhPZihjdHgpID09PSAtMSAmJiAhaXNEZXNjZW5kYW50KSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyZWRDdHgucHVzaChjdHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkQ3R4O1xuICAgIH1cbiAgICBjcmVhdGVJdGVyYXRvcihjdHgsIHdoYXRUb1Nob3csIGZpbHRlcikge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGN0eCwgd2hhdFRvU2hvdywgZmlsdGVyLCBmYWxzZSk7XG4gICAgfVxuICAgIGdldEl0ZXJhdG9yTm9kZShpdHIpIHtcbiAgICAgICAgY29uc3QgcHJldk5vZGUgPSBpdHIucHJldmlvdXNOb2RlKCk7XG4gICAgICAgIGxldCBub2RlO1xuICAgICAgICBpZiAocHJldk5vZGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIG5vZGUgPSBpdHIubmV4dE5vZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUgPSBpdHIubmV4dE5vZGUoKSAmJiBpdHIubmV4dE5vZGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldk5vZGUsXG4gICAgICAgICAgICBub2RlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGl0ZXJhdGVUaHJvdWdoTm9kZXMod2hhdFRvU2hvdywgY3R4LCBlYWNoQ2IsIGZpbHRlckNiLCBkb25lQ2IpIHtcbiAgICAgICAgY29uc3QgaXRyID0gdGhpcy5jcmVhdGVJdGVyYXRvcihjdHgsIHdoYXRUb1Nob3csIGZpbHRlckNiKTtcbiAgICAgICAgbGV0IGVsZW1lbnRzID0gW107XG4gICAgICAgIGxldCBub2RlO1xuICAgICAgICBjb25zdCByZXRyaWV2ZU5vZGVzID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRJdGVyYXRvck5vZGUoaXRyKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQubm9kZTtcbiAgICAgICAgfTtcbiAgICAgICAgd2hpbGUgKG5vZGUgPSByZXRyaWV2ZU5vZGVzKCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgICAgIGVhY2hDYihub2RlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRvbmVDYigpO1xuICAgIH1cbiAgICBmb3JFYWNoTm9kZSh3aGF0VG9TaG93LCBlYWNoLCBmaWx0ZXIsIGRvbmUgPSAoKSA9PiB7IH0pIHtcbiAgICAgICAgY29uc3QgY29udGV4dHMgPSB0aGlzLmdldENvbnRleHRzKCk7XG4gICAgICAgIGxldCBvcGVuID0gY29udGV4dHMubGVuZ3RoO1xuICAgICAgICBpZiAoIW9wZW4pIHtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0cy5mb3JFYWNoKGN0eCA9PiB7XG4gICAgICAgICAgICB0aGlzLml0ZXJhdGVUaHJvdWdoTm9kZXMod2hhdFRvU2hvdywgY3R4LCBlYWNoLCBmaWx0ZXIsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoLS1vcGVuIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBNYXJrO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vLyBJZiBvYmouaGFzT3duUHJvcGVydHkgaGFzIGJlZW4gb3ZlcnJpZGRlbiwgdGhlbiBjYWxsaW5nXG4vLyBvYmouaGFzT3duUHJvcGVydHkocHJvcCkgd2lsbCBicmVhay5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL2lzc3Vlcy8xNzA3XG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHFzLCBzZXAsIGVxLCBvcHRpb25zKSB7XG4gIHNlcCA9IHNlcCB8fCAnJic7XG4gIGVxID0gZXEgfHwgJz0nO1xuICB2YXIgb2JqID0ge307XG5cbiAgaWYgKHR5cGVvZiBxcyAhPT0gJ3N0cmluZycgfHwgcXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHZhciByZWdleHAgPSAvXFwrL2c7XG4gIHFzID0gcXMuc3BsaXQoc2VwKTtcblxuICB2YXIgbWF4S2V5cyA9IDEwMDA7XG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLm1heEtleXMgPT09ICdudW1iZXInKSB7XG4gICAgbWF4S2V5cyA9IG9wdGlvbnMubWF4S2V5cztcbiAgfVxuXG4gIHZhciBsZW4gPSBxcy5sZW5ndGg7XG4gIC8vIG1heEtleXMgPD0gMCBtZWFucyB0aGF0IHdlIHNob3VsZCBub3QgbGltaXQga2V5cyBjb3VudFxuICBpZiAobWF4S2V5cyA+IDAgJiYgbGVuID4gbWF4S2V5cykge1xuICAgIGxlbiA9IG1heEtleXM7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgdmFyIHggPSBxc1tpXS5yZXBsYWNlKHJlZ2V4cCwgJyUyMCcpLFxuICAgICAgICBpZHggPSB4LmluZGV4T2YoZXEpLFxuICAgICAgICBrc3RyLCB2c3RyLCBrLCB2O1xuXG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICBrc3RyID0geC5zdWJzdHIoMCwgaWR4KTtcbiAgICAgIHZzdHIgPSB4LnN1YnN0cihpZHggKyAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAga3N0ciA9IHg7XG4gICAgICB2c3RyID0gJyc7XG4gICAgfVxuXG4gICAgayA9IGRlY29kZVVSSUNvbXBvbmVudChrc3RyKTtcbiAgICB2ID0gZGVjb2RlVVJJQ29tcG9uZW50KHZzdHIpO1xuXG4gICAgaWYgKCFoYXNPd25Qcm9wZXJ0eShvYmosIGspKSB7XG4gICAgICBvYmpba10gPSB2O1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmpba10pKSB7XG4gICAgICBvYmpba10ucHVzaCh2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqW2tdID0gW29ialtrXSwgdl07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3RyaW5naWZ5UHJpbWl0aXZlID0gZnVuY3Rpb24odikge1xuICBzd2l0Y2ggKHR5cGVvZiB2KSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB2O1xuXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gdiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6ICcnO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmosIHNlcCwgZXEsIG5hbWUpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIGlmIChvYmogPT09IG51bGwpIHtcbiAgICBvYmogPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24oaykge1xuICAgICAgdmFyIGtzID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShrKSkgKyBlcTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KG9ialtrXSkpIHtcbiAgICAgICAgcmV0dXJuIG9ialtrXS5tYXAoZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBrcyArIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUodikpO1xuICAgICAgICB9KS5qb2luKHNlcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9ialtrXSkpO1xuICAgICAgfVxuICAgIH0pLmpvaW4oc2VwKTtcblxuICB9XG5cbiAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG5hbWUpKSArIGVxICtcbiAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdpZnlQcmltaXRpdmUob2JqKSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmRlY29kZSA9IGV4cG9ydHMucGFyc2UgPSByZXF1aXJlKCcuL2RlY29kZScpO1xuZXhwb3J0cy5lbmNvZGUgPSBleHBvcnRzLnN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vZW5jb2RlJyk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH0sIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5Db3B5VG9DbGlwYm9hcmQgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfY29weVRvQ2xpcGJvYXJkID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiY29weS10by1jbGlwYm9hcmRcIikpO1xuXG52YXIgX2V4Y2x1ZGVkID0gW1widGV4dFwiLCBcIm9uQ29weVwiLCBcIm9wdGlvbnNcIiwgXCJjaGlsZHJlblwiXTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7IHZhciBrZXksIGk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzb3VyY2VTeW1ib2xLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHsgd3JpdGFibGU6IGZhbHNlIH0pOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YkNsYXNzLCBcInByb3RvdHlwZVwiLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSBlbHNlIGlmIChjYWxsICE9PSB2b2lkIDApIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgQ29weVRvQ2xpcGJvYXJkID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoQ29weVRvQ2xpcGJvYXJkLCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihDb3B5VG9DbGlwYm9hcmQpO1xuXG4gIGZ1bmN0aW9uIENvcHlUb0NsaXBib2FyZCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29weVRvQ2xpcGJvYXJkKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25DbGlja1wiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIHRleHQgPSBfdGhpcyRwcm9wcy50ZXh0LFxuICAgICAgICAgIG9uQ29weSA9IF90aGlzJHByb3BzLm9uQ29weSxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIG9wdGlvbnMgPSBfdGhpcyRwcm9wcy5vcHRpb25zO1xuXG4gICAgICB2YXIgZWxlbSA9IF9yZWFjdFtcImRlZmF1bHRcIl0uQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG5cbiAgICAgIHZhciByZXN1bHQgPSAoMCwgX2NvcHlUb0NsaXBib2FyZFtcImRlZmF1bHRcIl0pKHRleHQsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAob25Db3B5KSB7XG4gICAgICAgIG9uQ29weSh0ZXh0LCByZXN1bHQpO1xuICAgICAgfSAvLyBCeXBhc3Mgb25DbGljayBpZiBpdCB3YXMgcHJlc2VudFxuXG5cbiAgICAgIGlmIChlbGVtICYmIGVsZW0ucHJvcHMgJiYgdHlwZW9mIGVsZW0ucHJvcHMub25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBlbGVtLnByb3BzLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKENvcHlUb0NsaXBib2FyZCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIF90ZXh0ID0gX3RoaXMkcHJvcHMyLnRleHQsXG4gICAgICAgICAgX29uQ29weSA9IF90aGlzJHByb3BzMi5vbkNvcHksXG4gICAgICAgICAgX29wdGlvbnMgPSBfdGhpcyRwcm9wczIub3B0aW9ucyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzMi5jaGlsZHJlbixcbiAgICAgICAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wczIsIF9leGNsdWRlZCk7XG5cbiAgICAgIHZhciBlbGVtID0gX3JlYWN0W1wiZGVmYXVsdFwiXS5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTtcblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNsb25lRWxlbWVudChlbGVtLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHByb3BzKSwge30sIHtcbiAgICAgICAgb25DbGljazogdGhpcy5vbkNsaWNrXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENvcHlUb0NsaXBib2FyZDtcbn0oX3JlYWN0W1wiZGVmYXVsdFwiXS5QdXJlQ29tcG9uZW50KTtcblxuZXhwb3J0cy5Db3B5VG9DbGlwYm9hcmQgPSBDb3B5VG9DbGlwYm9hcmQ7XG5cbl9kZWZpbmVQcm9wZXJ0eShDb3B5VG9DbGlwYm9hcmQsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgb25Db3B5OiB1bmRlZmluZWQsXG4gIG9wdGlvbnM6IHVuZGVmaW5lZFxufSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vQ29tcG9uZW50JyksXG4gICAgQ29weVRvQ2xpcGJvYXJkID0gX3JlcXVpcmUuQ29weVRvQ2xpcGJvYXJkO1xuXG5Db3B5VG9DbGlwYm9hcmQuQ29weVRvQ2xpcGJvYXJkID0gQ29weVRvQ2xpcGJvYXJkO1xubW9kdWxlLmV4cG9ydHMgPSBDb3B5VG9DbGlwYm9hcmQ7IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLXNlcnZlci1sZWdhY3kuYnJvd3Nlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGFhPXJlcXVpcmUoXCJyZWFjdFwiKTtmdW5jdGlvbiBsKGEpe2Zvcih2YXIgYj1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbY10pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2ErXCI7IHZpc2l0IFwiK2IrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifVxudmFyIHA9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxmYT0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8saGE9e30saWE9e307XG5mdW5jdGlvbiBqYShhKXtpZihwLmNhbGwoaWEsYSkpcmV0dXJuITA7aWYocC5jYWxsKGhhLGEpKXJldHVybiExO2lmKGZhLnRlc3QoYSkpcmV0dXJuIGlhW2FdPSEwO2hhW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIHIoYSxiLGMsZCxmLGUsZyl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PWJ8fDM9PT1ifHw0PT09Yjt0aGlzLmF0dHJpYnV0ZU5hbWU9ZDt0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1mO3RoaXMubXVzdFVzZVByb3BlcnR5PWM7dGhpcy5wcm9wZXJ0eU5hbWU9YTt0aGlzLnR5cGU9Yjt0aGlzLnNhbml0aXplVVJMPWU7dGhpcy5yZW1vdmVFbXB0eVN0cmluZz1nfXZhciB0PXt9O1xuXCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt0W2FdPW5ldyByKGEsMCwhMSxhLG51bGwsITEsITEpfSk7W1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO3RbYl09bmV3IHIoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0W2FdPW5ldyByKGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0W2FdPW5ldyByKGEsMiwhMSxhLG51bGwsITEsITEpfSk7XCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dFthXT1uZXcgcihhLDMsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dFthXT1uZXcgcihhLDMsITAsYSxudWxsLCExLCExKX0pO1tcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dFthXT1uZXcgcihhLDQsITEsYSxudWxsLCExLCExKX0pO1tcImNvbHNcIixcInJvd3NcIixcInNpemVcIixcInNwYW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0W2FdPW5ldyByKGEsNiwhMSxhLG51bGwsITEsITEpfSk7W1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0W2FdPW5ldyByKGEsNSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIga2E9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiBsYShhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfVxuXCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShrYSxcbmxhKTt0W2JdPW5ldyByKGIsMSwhMSxhLG51bGwsITEsITEpfSk7XCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2Uoa2EsbGEpO3RbYl09bmV3IHIoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITEsITEpfSk7W1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2Uoa2EsbGEpO3RbYl09bmV3IHIoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwhMSwhMSl9KTtbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0W2FdPW5ldyByKGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbnQueGxpbmtIcmVmPW5ldyByKFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCwhMSk7W1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0W2FdPW5ldyByKGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMCwhMCl9KTtcbnZhciB1PXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxcbmZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LG1hPVtcIldlYmtpdFwiLFwibXNcIixcIk1velwiLFwiT1wiXTtPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe21hLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7dVtiXT11W2FdfSl9KTt2YXIgbmE9L1tcIicmPD5dLztcbmZ1bmN0aW9uIHYoYSl7aWYoXCJib29sZWFuXCI9PT10eXBlb2YgYXx8XCJudW1iZXJcIj09PXR5cGVvZiBhKXJldHVyblwiXCIrYTthPVwiXCIrYTt2YXIgYj1uYS5leGVjKGEpO2lmKGIpe3ZhciBjPVwiXCIsZCxmPTA7Zm9yKGQ9Yi5pbmRleDtkPGEubGVuZ3RoO2QrKyl7c3dpdGNoKGEuY2hhckNvZGVBdChkKSl7Y2FzZSAzNDpiPVwiJnF1b3Q7XCI7YnJlYWs7Y2FzZSAzODpiPVwiJmFtcDtcIjticmVhaztjYXNlIDM5OmI9XCImI3gyNztcIjticmVhaztjYXNlIDYwOmI9XCImbHQ7XCI7YnJlYWs7Y2FzZSA2MjpiPVwiJmd0O1wiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9ZiE9PWQmJihjKz1hLnN1YnN0cmluZyhmLGQpKTtmPWQrMTtjKz1ifWE9ZiE9PWQ/YythLnN1YnN0cmluZyhmLGQpOmN9cmV0dXJuIGF9dmFyIG9hPS8oW0EtWl0pL2cscGE9L15tcy0vLHFhPUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gdyhhLGIpe3JldHVybntpbnNlcnRpb25Nb2RlOmEsc2VsZWN0ZWRWYWx1ZTpifX1cbmZ1bmN0aW9uIHJhKGEsYixjKXtzd2l0Y2goYil7Y2FzZSBcInNlbGVjdFwiOnJldHVybiB3KDEsbnVsbCE9Yy52YWx1ZT9jLnZhbHVlOmMuZGVmYXVsdFZhbHVlKTtjYXNlIFwic3ZnXCI6cmV0dXJuIHcoMixudWxsKTtjYXNlIFwibWF0aFwiOnJldHVybiB3KDMsbnVsbCk7Y2FzZSBcImZvcmVpZ25PYmplY3RcIjpyZXR1cm4gdygxLG51bGwpO2Nhc2UgXCJ0YWJsZVwiOnJldHVybiB3KDQsbnVsbCk7Y2FzZSBcInRoZWFkXCI6Y2FzZSBcInRib2R5XCI6Y2FzZSBcInRmb290XCI6cmV0dXJuIHcoNSxudWxsKTtjYXNlIFwiY29sZ3JvdXBcIjpyZXR1cm4gdyg3LG51bGwpO2Nhc2UgXCJ0clwiOnJldHVybiB3KDYsbnVsbCl9cmV0dXJuIDQ8PWEuaW5zZXJ0aW9uTW9kZXx8MD09PWEuaW5zZXJ0aW9uTW9kZT93KDEsbnVsbCk6YX12YXIgc2E9bmV3IE1hcDtcbmZ1bmN0aW9uIHRhKGEsYixjKXtpZihcIm9iamVjdFwiIT09dHlwZW9mIGMpdGhyb3cgRXJyb3IobCg2MikpO2I9ITA7Zm9yKHZhciBkIGluIGMpaWYocC5jYWxsKGMsZCkpe3ZhciBmPWNbZF07aWYobnVsbCE9ZiYmXCJib29sZWFuXCIhPT10eXBlb2YgZiYmXCJcIiE9PWYpe2lmKDA9PT1kLmluZGV4T2YoXCItLVwiKSl7dmFyIGU9dihkKTtmPXYoKFwiXCIrZikudHJpbSgpKX1lbHNle2U9ZDt2YXIgZz1zYS5nZXQoZSk7dm9pZCAwIT09Zz9lPWc6KGc9dihlLnJlcGxhY2Uob2EsXCItJDFcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHBhLFwiLW1zLVwiKSksc2Euc2V0KGUsZyksZT1nKTtmPVwibnVtYmVyXCI9PT10eXBlb2YgZj8wPT09Znx8cC5jYWxsKHUsZCk/XCJcIitmOmYrXCJweFwiOnYoKFwiXCIrZikudHJpbSgpKX1iPyhiPSExLGEucHVzaCgnIHN0eWxlPVwiJyxlLFwiOlwiLGYpKTphLnB1c2goXCI7XCIsZSxcIjpcIixmKX19Ynx8YS5wdXNoKCdcIicpfVxuZnVuY3Rpb24geChhLGIsYyxkKXtzd2l0Y2goYyl7Y2FzZSBcInN0eWxlXCI6dGEoYSxiLGQpO3JldHVybjtjYXNlIFwiZGVmYXVsdFZhbHVlXCI6Y2FzZSBcImRlZmF1bHRDaGVja2VkXCI6Y2FzZSBcImlubmVySFRNTFwiOmNhc2UgXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIjpjYXNlIFwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6cmV0dXJufWlmKCEoMjxjLmxlbmd0aCl8fFwib1wiIT09Y1swXSYmXCJPXCIhPT1jWzBdfHxcIm5cIiE9PWNbMV0mJlwiTlwiIT09Y1sxXSlpZihiPXQuaGFzT3duUHJvcGVydHkoYyk/dFtjXTpudWxsLG51bGwhPT1iKXtzd2l0Y2godHlwZW9mIGQpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm47Y2FzZSBcImJvb2xlYW5cIjppZighYi5hY2NlcHRzQm9vbGVhbnMpcmV0dXJufWM9Yi5hdHRyaWJ1dGVOYW1lO3N3aXRjaChiLnR5cGUpe2Nhc2UgMzpkJiZhLnB1c2goXCIgXCIsYywnPVwiXCInKTticmVhaztjYXNlIDQ6ITA9PT1kP2EucHVzaChcIiBcIixjLCc9XCJcIicpOlxuITEhPT1kJiZhLnB1c2goXCIgXCIsYywnPVwiJyx2KGQpLCdcIicpO2JyZWFrO2Nhc2UgNTppc05hTihkKXx8YS5wdXNoKFwiIFwiLGMsJz1cIicsdihkKSwnXCInKTticmVhaztjYXNlIDY6IWlzTmFOKGQpJiYxPD1kJiZhLnB1c2goXCIgXCIsYywnPVwiJyx2KGQpLCdcIicpO2JyZWFrO2RlZmF1bHQ6Yi5zYW5pdGl6ZVVSTCYmKGQ9XCJcIitkKSxhLnB1c2goXCIgXCIsYywnPVwiJyx2KGQpLCdcIicpfX1lbHNlIGlmKGphKGMpKXtzd2l0Y2godHlwZW9mIGQpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm47Y2FzZSBcImJvb2xlYW5cIjppZihiPWMudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpLFwiZGF0YS1cIiE9PWImJlwiYXJpYS1cIiE9PWIpcmV0dXJufWEucHVzaChcIiBcIixjLCc9XCInLHYoZCksJ1wiJyl9fVxuZnVuY3Rpb24geShhLGIsYyl7aWYobnVsbCE9Yil7aWYobnVsbCE9Yyl0aHJvdyBFcnJvcihsKDYwKSk7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBifHwhKFwiX19odG1sXCJpbiBiKSl0aHJvdyBFcnJvcihsKDYxKSk7Yj1iLl9faHRtbDtudWxsIT09YiYmdm9pZCAwIT09YiYmYS5wdXNoKFwiXCIrYil9fWZ1bmN0aW9uIHVhKGEpe3ZhciBiPVwiXCI7YWEuQ2hpbGRyZW4uZm9yRWFjaChhLGZ1bmN0aW9uKGEpe251bGwhPWEmJihiKz1hKX0pO3JldHVybiBifVxuZnVuY3Rpb24gdmEoYSxiLGMsZCl7YS5wdXNoKEEoYykpO3ZhciBmPWM9bnVsbCxlO2ZvcihlIGluIGIpaWYocC5jYWxsKGIsZSkpe3ZhciBnPWJbZV07aWYobnVsbCE9Zylzd2l0Y2goZSl7Y2FzZSBcImNoaWxkcmVuXCI6Yz1nO2JyZWFrO2Nhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmY9ZzticmVhaztkZWZhdWx0OngoYSxkLGUsZyl9fWEucHVzaChcIj5cIik7eShhLGYsYyk7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBjPyhhLnB1c2godihjKSksbnVsbCk6Y312YXIgd2E9L15bYS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC8seGE9bmV3IE1hcDtmdW5jdGlvbiBBKGEpe3ZhciBiPXhhLmdldChhKTtpZih2b2lkIDA9PT1iKXtpZighd2EudGVzdChhKSl0aHJvdyBFcnJvcihsKDY1LGEpKTtiPVwiPFwiK2E7eGEuc2V0KGEsYil9cmV0dXJuIGJ9XG5mdW5jdGlvbiB5YShhLGIsYyxkLGYpe3N3aXRjaChiKXtjYXNlIFwic2VsZWN0XCI6YS5wdXNoKEEoXCJzZWxlY3RcIikpO3ZhciBlPW51bGwsZz1udWxsO2ZvcihuIGluIGMpaWYocC5jYWxsKGMsbikpe3ZhciBoPWNbbl07aWYobnVsbCE9aClzd2l0Y2gobil7Y2FzZSBcImNoaWxkcmVuXCI6ZT1oO2JyZWFrO2Nhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmc9aDticmVhaztjYXNlIFwiZGVmYXVsdFZhbHVlXCI6Y2FzZSBcInZhbHVlXCI6YnJlYWs7ZGVmYXVsdDp4KGEsZCxuLGgpfX1hLnB1c2goXCI+XCIpO3koYSxnLGUpO3JldHVybiBlO2Nhc2UgXCJvcHRpb25cIjpnPWYuc2VsZWN0ZWRWYWx1ZTthLnB1c2goQShcIm9wdGlvblwiKSk7dmFyIGs9aD1udWxsLG09bnVsbDt2YXIgbj1udWxsO2ZvcihlIGluIGMpaWYocC5jYWxsKGMsZSkpe3ZhciBxPWNbZV07aWYobnVsbCE9cSlzd2l0Y2goZSl7Y2FzZSBcImNoaWxkcmVuXCI6aD1xO2JyZWFrO2Nhc2UgXCJzZWxlY3RlZFwiOm09cTticmVhaztjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpuPVxucTticmVhaztjYXNlIFwidmFsdWVcIjprPXE7ZGVmYXVsdDp4KGEsZCxlLHEpfX1pZihudWxsIT1nKWlmKGM9bnVsbCE9PWs/XCJcIitrOnVhKGgpLHFhKGcpKWZvcihkPTA7ZDxnLmxlbmd0aDtkKyspe2lmKFwiXCIrZ1tkXT09PWMpe2EucHVzaCgnIHNlbGVjdGVkPVwiXCInKTticmVha319ZWxzZVwiXCIrZz09PWMmJmEucHVzaCgnIHNlbGVjdGVkPVwiXCInKTtlbHNlIG0mJmEucHVzaCgnIHNlbGVjdGVkPVwiXCInKTthLnB1c2goXCI+XCIpO3koYSxuLGgpO3JldHVybiBoO2Nhc2UgXCJ0ZXh0YXJlYVwiOmEucHVzaChBKFwidGV4dGFyZWFcIikpO249Zz1lPW51bGw7Zm9yKGggaW4gYylpZihwLmNhbGwoYyxoKSYmKGs9Y1toXSxudWxsIT1rKSlzd2l0Y2goaCl7Y2FzZSBcImNoaWxkcmVuXCI6bj1rO2JyZWFrO2Nhc2UgXCJ2YWx1ZVwiOmU9azticmVhaztjYXNlIFwiZGVmYXVsdFZhbHVlXCI6Zz1rO2JyZWFrO2Nhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGwoOTEpKTtkZWZhdWx0OngoYSxkLFxuaCxrKX1udWxsPT09ZSYmbnVsbCE9PWcmJihlPWcpO2EucHVzaChcIj5cIik7aWYobnVsbCE9bil7aWYobnVsbCE9ZSl0aHJvdyBFcnJvcihsKDkyKSk7aWYocWEobikmJjE8bi5sZW5ndGgpdGhyb3cgRXJyb3IobCg5MykpO2U9XCJcIitufVwic3RyaW5nXCI9PT10eXBlb2YgZSYmXCJcXG5cIj09PWVbMF0mJmEucHVzaChcIlxcblwiKTtudWxsIT09ZSYmYS5wdXNoKHYoXCJcIitlKSk7cmV0dXJuIG51bGw7Y2FzZSBcImlucHV0XCI6YS5wdXNoKEEoXCJpbnB1dFwiKSk7az1uPWg9ZT1udWxsO2ZvcihnIGluIGMpaWYocC5jYWxsKGMsZykmJihtPWNbZ10sbnVsbCE9bSkpc3dpdGNoKGcpe2Nhc2UgXCJjaGlsZHJlblwiOmNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGwoMzk5LFwiaW5wdXRcIikpO2Nhc2UgXCJkZWZhdWx0Q2hlY2tlZFwiOms9bTticmVhaztjYXNlIFwiZGVmYXVsdFZhbHVlXCI6aD1tO2JyZWFrO2Nhc2UgXCJjaGVja2VkXCI6bj1tO2JyZWFrO2Nhc2UgXCJ2YWx1ZVwiOmU9bTticmVhaztcbmRlZmF1bHQ6eChhLGQsZyxtKX1udWxsIT09bj94KGEsZCxcImNoZWNrZWRcIixuKTpudWxsIT09ayYmeChhLGQsXCJjaGVja2VkXCIsayk7bnVsbCE9PWU/eChhLGQsXCJ2YWx1ZVwiLGUpOm51bGwhPT1oJiZ4KGEsZCxcInZhbHVlXCIsaCk7YS5wdXNoKFwiLz5cIik7cmV0dXJuIG51bGw7Y2FzZSBcIm1lbnVpdGVtXCI6YS5wdXNoKEEoXCJtZW51aXRlbVwiKSk7Zm9yKHZhciBDIGluIGMpaWYocC5jYWxsKGMsQykmJihlPWNbQ10sbnVsbCE9ZSkpc3dpdGNoKEMpe2Nhc2UgXCJjaGlsZHJlblwiOmNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGwoNDAwKSk7ZGVmYXVsdDp4KGEsZCxDLGUpfWEucHVzaChcIj5cIik7cmV0dXJuIG51bGw7Y2FzZSBcInRpdGxlXCI6YS5wdXNoKEEoXCJ0aXRsZVwiKSk7ZT1udWxsO2ZvcihxIGluIGMpaWYocC5jYWxsKGMscSkmJihnPWNbcV0sbnVsbCE9Zykpc3dpdGNoKHEpe2Nhc2UgXCJjaGlsZHJlblwiOmU9ZzticmVhaztjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjp0aHJvdyBFcnJvcihsKDQzNCkpO1xuZGVmYXVsdDp4KGEsZCxxLGcpfWEucHVzaChcIj5cIik7cmV0dXJuIGU7Y2FzZSBcImxpc3RpbmdcIjpjYXNlIFwicHJlXCI6YS5wdXNoKEEoYikpO2c9ZT1udWxsO2ZvcihrIGluIGMpaWYocC5jYWxsKGMsaykmJihoPWNba10sbnVsbCE9aCkpc3dpdGNoKGspe2Nhc2UgXCJjaGlsZHJlblwiOmU9aDticmVhaztjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpnPWg7YnJlYWs7ZGVmYXVsdDp4KGEsZCxrLGgpfWEucHVzaChcIj5cIik7aWYobnVsbCE9Zyl7aWYobnVsbCE9ZSl0aHJvdyBFcnJvcihsKDYwKSk7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBnfHwhKFwiX19odG1sXCJpbiBnKSl0aHJvdyBFcnJvcihsKDYxKSk7Yz1nLl9faHRtbDtudWxsIT09YyYmdm9pZCAwIT09YyYmKFwic3RyaW5nXCI9PT10eXBlb2YgYyYmMDxjLmxlbmd0aCYmXCJcXG5cIj09PWNbMF0/YS5wdXNoKFwiXFxuXCIsYyk6YS5wdXNoKFwiXCIrYykpfVwic3RyaW5nXCI9PT10eXBlb2YgZSYmXCJcXG5cIj09PWVbMF0mJmEucHVzaChcIlxcblwiKTtyZXR1cm4gZTtcbmNhc2UgXCJhcmVhXCI6Y2FzZSBcImJhc2VcIjpjYXNlIFwiYnJcIjpjYXNlIFwiY29sXCI6Y2FzZSBcImVtYmVkXCI6Y2FzZSBcImhyXCI6Y2FzZSBcImltZ1wiOmNhc2UgXCJrZXlnZW5cIjpjYXNlIFwibGlua1wiOmNhc2UgXCJtZXRhXCI6Y2FzZSBcInBhcmFtXCI6Y2FzZSBcInNvdXJjZVwiOmNhc2UgXCJ0cmFja1wiOmNhc2UgXCJ3YnJcIjphLnB1c2goQShiKSk7Zm9yKHZhciBEIGluIGMpaWYocC5jYWxsKGMsRCkmJihlPWNbRF0sbnVsbCE9ZSkpc3dpdGNoKEQpe2Nhc2UgXCJjaGlsZHJlblwiOmNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGwoMzk5LGIpKTtkZWZhdWx0OngoYSxkLEQsZSl9YS5wdXNoKFwiLz5cIik7cmV0dXJuIG51bGw7Y2FzZSBcImFubm90YXRpb24teG1sXCI6Y2FzZSBcImNvbG9yLXByb2ZpbGVcIjpjYXNlIFwiZm9udC1mYWNlXCI6Y2FzZSBcImZvbnQtZmFjZS1zcmNcIjpjYXNlIFwiZm9udC1mYWNlLXVyaVwiOmNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4gdmEoYSxcbmMsYixkKTtjYXNlIFwiaHRtbFwiOnJldHVybiAwPT09Zi5pbnNlcnRpb25Nb2RlJiZhLnB1c2goXCI8IURPQ1RZUEUgaHRtbD5cIiksdmEoYSxjLGIsZCk7ZGVmYXVsdDppZigtMT09PWIuaW5kZXhPZihcIi1cIikmJlwic3RyaW5nXCIhPT10eXBlb2YgYy5pcylyZXR1cm4gdmEoYSxjLGIsZCk7YS5wdXNoKEEoYikpO2c9ZT1udWxsO2ZvcihtIGluIGMpaWYocC5jYWxsKGMsbSkmJihoPWNbbV0sbnVsbCE9aCkpc3dpdGNoKG0pe2Nhc2UgXCJjaGlsZHJlblwiOmU9aDticmVhaztjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpnPWg7YnJlYWs7Y2FzZSBcInN0eWxlXCI6dGEoYSxkLGgpO2JyZWFrO2Nhc2UgXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIjpjYXNlIFwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6YnJlYWs7ZGVmYXVsdDpqYShtKSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGgmJlwic3ltYm9sXCIhPT10eXBlb2YgaCYmYS5wdXNoKFwiIFwiLG0sJz1cIicsdihoKSwnXCInKX1hLnB1c2goXCI+XCIpO1xueShhLGcsZSk7cmV0dXJuIGV9fWZ1bmN0aW9uIHphKGEsYixjKXthLnB1c2goJ1xceDNjIS0tJD8tLVxceDNlPHRlbXBsYXRlIGlkPVwiJyk7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IobCgzOTUpKTthLnB1c2goYyk7cmV0dXJuIGEucHVzaCgnXCI+PC90ZW1wbGF0ZT4nKX1cbmZ1bmN0aW9uIEFhKGEsYixjLGQpe3N3aXRjaChjLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIGEucHVzaCgnPGRpdiBoaWRkZW4gaWQ9XCInKSxhLnB1c2goYi5zZWdtZW50UHJlZml4KSxiPWQudG9TdHJpbmcoMTYpLGEucHVzaChiKSxhLnB1c2goJ1wiPicpO2Nhc2UgMjpyZXR1cm4gYS5wdXNoKCc8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHN0eWxlPVwiZGlzcGxheTpub25lXCIgaWQ9XCInKSxhLnB1c2goYi5zZWdtZW50UHJlZml4KSxiPWQudG9TdHJpbmcoMTYpLGEucHVzaChiKSxhLnB1c2goJ1wiPicpO2Nhc2UgMzpyZXR1cm4gYS5wdXNoKCc8bWF0aCBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGlkPVwiJyksYS5wdXNoKGIuc2VnbWVudFByZWZpeCksYj1kLnRvU3RyaW5nKDE2KSxhLnB1c2goYiksYS5wdXNoKCdcIj4nKTtjYXNlIDQ6cmV0dXJuIGEucHVzaCgnPHRhYmxlIGhpZGRlbiBpZD1cIicpLGEucHVzaChiLnNlZ21lbnRQcmVmaXgpLFxuYj1kLnRvU3RyaW5nKDE2KSxhLnB1c2goYiksYS5wdXNoKCdcIj4nKTtjYXNlIDU6cmV0dXJuIGEucHVzaCgnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9XCInKSxhLnB1c2goYi5zZWdtZW50UHJlZml4KSxiPWQudG9TdHJpbmcoMTYpLGEucHVzaChiKSxhLnB1c2goJ1wiPicpO2Nhc2UgNjpyZXR1cm4gYS5wdXNoKCc8dGFibGUgaGlkZGVuPjx0ciBpZD1cIicpLGEucHVzaChiLnNlZ21lbnRQcmVmaXgpLGI9ZC50b1N0cmluZygxNiksYS5wdXNoKGIpLGEucHVzaCgnXCI+Jyk7Y2FzZSA3OnJldHVybiBhLnB1c2goJzx0YWJsZSBoaWRkZW4+PGNvbGdyb3VwIGlkPVwiJyksYS5wdXNoKGIuc2VnbWVudFByZWZpeCksYj1kLnRvU3RyaW5nKDE2KSxhLnB1c2goYiksYS5wdXNoKCdcIj4nKTtkZWZhdWx0OnRocm93IEVycm9yKGwoMzk3KSk7fX1cbmZ1bmN0aW9uIEJhKGEsYil7c3dpdGNoKGIuaW5zZXJ0aW9uTW9kZSl7Y2FzZSAwOmNhc2UgMTpyZXR1cm4gYS5wdXNoKFwiPC9kaXY+XCIpO2Nhc2UgMjpyZXR1cm4gYS5wdXNoKFwiPC9zdmc+XCIpO2Nhc2UgMzpyZXR1cm4gYS5wdXNoKFwiPC9tYXRoPlwiKTtjYXNlIDQ6cmV0dXJuIGEucHVzaChcIjwvdGFibGU+XCIpO2Nhc2UgNTpyZXR1cm4gYS5wdXNoKFwiPC90Ym9keT48L3RhYmxlPlwiKTtjYXNlIDY6cmV0dXJuIGEucHVzaChcIjwvdHI+PC90YWJsZT5cIik7Y2FzZSA3OnJldHVybiBhLnB1c2goXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIpO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzOTcpKTt9fXZhciBDYT0vWzxcXHUyMDI4XFx1MjAyOV0vZztcbmZ1bmN0aW9uIERhKGEpe3JldHVybiBKU09OLnN0cmluZ2lmeShhKS5yZXBsYWNlKENhLGZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFwiPFwiOnJldHVyblwiXFxcXHUwMDNjXCI7Y2FzZSBcIlxcdTIwMjhcIjpyZXR1cm5cIlxcXFx1MjAyOFwiO2Nhc2UgXCJcXHUyMDI5XCI6cmV0dXJuXCJcXFxcdTIwMjlcIjtkZWZhdWx0OnRocm93IEVycm9yKFwiZXNjYXBlSlNTdHJpbmdzRm9ySW5zdHJ1Y3Rpb25TY3JpcHRzIGVuY291bnRlcmVkIGEgbWF0Y2ggaXQgZG9lcyBub3Qga25vdyBob3cgdG8gcmVwbGFjZS4gdGhpcyBtZWFucyB0aGUgbWF0Y2ggcmVnZXggYW5kIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGFyZSBubyBsb25nZXIgaW4gc3luYy4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdFwiKTt9fSl9XG5mdW5jdGlvbiBFYShhLGIpe2I9dm9pZCAwPT09Yj9cIlwiOmI7cmV0dXJue2Jvb3RzdHJhcENodW5rczpbXSxzdGFydElubGluZVNjcmlwdDpcIjxzY3JpcHQ+XCIscGxhY2Vob2xkZXJQcmVmaXg6YitcIlA6XCIsc2VnbWVudFByZWZpeDpiK1wiUzpcIixib3VuZGFyeVByZWZpeDpiK1wiQjpcIixpZFByZWZpeDpiLG5leHRTdXNwZW5zZUlEOjAsc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uOiExLHNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb246ITEsc2VudENsaWVudFJlbmRlckZ1bmN0aW9uOiExLGdlbmVyYXRlU3RhdGljTWFya3VwOmF9fWZ1bmN0aW9uIEZhKGEsYixjLGQpe2lmKGMuZ2VuZXJhdGVTdGF0aWNNYXJrdXApcmV0dXJuIGEucHVzaCh2KGIpKSwhMTtcIlwiPT09Yj9hPWQ6KGQmJmEucHVzaChcIlxceDNjIS0tIC0tXFx4M2VcIiksYS5wdXNoKHYoYikpLGE9ITApO3JldHVybiBhfVxudmFyIEI9T2JqZWN0LmFzc2lnbixHYT1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxIYT1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLElhPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxKYT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksS2E9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLExhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxNYT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxOYT1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksT2E9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLFBhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLFFhPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLFJhPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLFNhPVN5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKSxUYT1TeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKSxVYT1TeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKSxcblZhPVN5bWJvbC5mb3IoXCJyZWFjdC5kZWZhdWx0X3ZhbHVlXCIpLFdhPVN5bWJvbC5pdGVyYXRvcjtcbmZ1bmN0aW9uIFhhKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGEuZGlzcGxheU5hbWV8fGEubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgSWE6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgSGE6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIEthOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIEphOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgT2E6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgUGE6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIn1pZihcIm9iamVjdFwiPT09dHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgTWE6cmV0dXJuKGEuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgTGE6cmV0dXJuKGEuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgTmE6dmFyIGI9YS5yZW5kZXI7YT1hLmRpc3BsYXlOYW1lO2F8fChhPWIuZGlzcGxheU5hbWV8fFxuYi5uYW1lfHxcIlwiLGE9XCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO3JldHVybiBhO2Nhc2UgUWE6cmV0dXJuIGI9YS5kaXNwbGF5TmFtZXx8bnVsbCxudWxsIT09Yj9iOlhhKGEudHlwZSl8fFwiTWVtb1wiO2Nhc2UgUmE6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIFhhKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9dmFyIFlhPXt9O2Z1bmN0aW9uIFphKGEsYil7YT1hLmNvbnRleHRUeXBlcztpZighYSlyZXR1cm4gWWE7dmFyIGM9e30sZDtmb3IoZCBpbiBhKWNbZF09YltkXTtyZXR1cm4gY312YXIgRT1udWxsO1xuZnVuY3Rpb24gRihhLGIpe2lmKGEhPT1iKXthLmNvbnRleHQuX2N1cnJlbnRWYWx1ZTI9YS5wYXJlbnRWYWx1ZTthPWEucGFyZW50O3ZhciBjPWIucGFyZW50O2lmKG51bGw9PT1hKXtpZihudWxsIT09Yyl0aHJvdyBFcnJvcihsKDQwMSkpO31lbHNle2lmKG51bGw9PT1jKXRocm93IEVycm9yKGwoNDAxKSk7RihhLGMpfWIuY29udGV4dC5fY3VycmVudFZhbHVlMj1iLnZhbHVlfX1mdW5jdGlvbiAkYShhKXthLmNvbnRleHQuX2N1cnJlbnRWYWx1ZTI9YS5wYXJlbnRWYWx1ZTthPWEucGFyZW50O251bGwhPT1hJiYkYShhKX1mdW5jdGlvbiBhYihhKXt2YXIgYj1hLnBhcmVudDtudWxsIT09YiYmYWIoYik7YS5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPWEudmFsdWV9XG5mdW5jdGlvbiBiYihhLGIpe2EuY29udGV4dC5fY3VycmVudFZhbHVlMj1hLnBhcmVudFZhbHVlO2E9YS5wYXJlbnQ7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IobCg0MDIpKTthLmRlcHRoPT09Yi5kZXB0aD9GKGEsYik6YmIoYSxiKX1mdW5jdGlvbiBjYihhLGIpe3ZhciBjPWIucGFyZW50O2lmKG51bGw9PT1jKXRocm93IEVycm9yKGwoNDAyKSk7YS5kZXB0aD09PWMuZGVwdGg/RihhLGMpOmNiKGEsYyk7Yi5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPWIudmFsdWV9ZnVuY3Rpb24gRyhhKXt2YXIgYj1FO2IhPT1hJiYobnVsbD09PWI/YWIoYSk6bnVsbD09PWE/JGEoYik6Yi5kZXB0aD09PWEuZGVwdGg/RihiLGEpOmIuZGVwdGg+YS5kZXB0aD9iYihiLGEpOmNiKGIsYSksRT1hKX1cbnZhciBkYj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbHM7bnVsbCE9PWEucXVldWUmJmEucXVldWUucHVzaChiKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbHM7YS5yZXBsYWNlPSEwO2EucXVldWU9W2JdfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9fTtcbmZ1bmN0aW9uIGViKGEsYixjLGQpe3ZhciBmPXZvaWQgMCE9PWEuc3RhdGU/YS5zdGF0ZTpudWxsO2EudXBkYXRlcj1kYjthLnByb3BzPWM7YS5zdGF0ZT1mO3ZhciBlPXtxdWV1ZTpbXSxyZXBsYWNlOiExfTthLl9yZWFjdEludGVybmFscz1lO3ZhciBnPWIuY29udGV4dFR5cGU7YS5jb250ZXh0PVwib2JqZWN0XCI9PT10eXBlb2YgZyYmbnVsbCE9PWc/Zy5fY3VycmVudFZhbHVlMjpkO2c9Yi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XCJmdW5jdGlvblwiPT09dHlwZW9mIGcmJihnPWcoYyxmKSxmPW51bGw9PT1nfHx2b2lkIDA9PT1nP2Y6Qih7fSxmLGcpLGEuc3RhdGU9Zik7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnR8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmNvbXBvbmVudFdpbGxNb3VudCkpaWYoYj1cbmEuc3RhdGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuY29tcG9uZW50V2lsbE1vdW50JiZhLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGIhPT1hLnN0YXRlJiZkYi5lbnF1ZXVlUmVwbGFjZVN0YXRlKGEsYS5zdGF0ZSxudWxsKSxudWxsIT09ZS5xdWV1ZSYmMDxlLnF1ZXVlLmxlbmd0aClpZihiPWUucXVldWUsZz1lLnJlcGxhY2UsZS5xdWV1ZT1udWxsLGUucmVwbGFjZT0hMSxnJiYxPT09Yi5sZW5ndGgpYS5zdGF0ZT1iWzBdO2Vsc2V7ZT1nP2JbMF06YS5zdGF0ZTtmPSEwO2ZvcihnPWc/MTowO2c8Yi5sZW5ndGg7ZysrKXt2YXIgaD1iW2ddO2g9XCJmdW5jdGlvblwiPT09dHlwZW9mIGg/aC5jYWxsKGEsZSxjLGQpOmg7bnVsbCE9aCYmKGY/KGY9ITEsZT1CKHt9LGUsaCkpOkIoZSxoKSl9YS5zdGF0ZT1lfWVsc2UgZS5xdWV1ZT1udWxsfVxudmFyIGZiPXtpZDoxLG92ZXJmbG93OlwiXCJ9O2Z1bmN0aW9uIGdiKGEsYixjKXt2YXIgZD1hLmlkO2E9YS5vdmVyZmxvdzt2YXIgZj0zMi1IKGQpLTE7ZCY9figxPDxmKTtjKz0xO3ZhciBlPTMyLUgoYikrZjtpZigzMDxlKXt2YXIgZz1mLWYlNTtlPShkJigxPDxnKS0xKS50b1N0cmluZygzMik7ZD4+PWc7Zi09ZztyZXR1cm57aWQ6MTw8MzItSChiKStmfGM8PGZ8ZCxvdmVyZmxvdzplK2F9fXJldHVybntpZDoxPDxlfGM8PGZ8ZCxvdmVyZmxvdzphfX12YXIgSD1NYXRoLmNsejMyP01hdGguY2x6MzI6aGIsaWI9TWF0aC5sb2csamI9TWF0aC5MTjI7ZnVuY3Rpb24gaGIoYSl7YT4+Pj0wO3JldHVybiAwPT09YT8zMjozMS0oaWIoYSkvamJ8MCl8MH1mdW5jdGlvbiBrYihhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9XG52YXIgbGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6a2IsST1udWxsLG9iPW51bGwsSj1udWxsLEs9bnVsbCxMPSExLE09ITEsTj0wLE89bnVsbCxQPTA7ZnVuY3Rpb24gUSgpe2lmKG51bGw9PT1JKXRocm93IEVycm9yKGwoMzIxKSk7cmV0dXJuIEl9ZnVuY3Rpb24gcGIoKXtpZigwPFApdGhyb3cgRXJyb3IobCgzMTIpKTtyZXR1cm57bWVtb2l6ZWRTdGF0ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfX1mdW5jdGlvbiBxYigpe251bGw9PT1LP251bGw9PT1KPyhMPSExLEo9Sz1wYigpKTooTD0hMCxLPUopOm51bGw9PT1LLm5leHQ/KEw9ITEsSz1LLm5leHQ9cGIoKSk6KEw9ITAsSz1LLm5leHQpO3JldHVybiBLfWZ1bmN0aW9uIHJiKCl7b2I9ST1udWxsO009ITE7Sj1udWxsO1A9MDtLPU89bnVsbH1mdW5jdGlvbiBzYihhLGIpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yn1cbmZ1bmN0aW9uIHRiKGEsYixjKXtJPVEoKTtLPXFiKCk7aWYoTCl7dmFyIGQ9Sy5xdWV1ZTtiPWQuZGlzcGF0Y2g7aWYobnVsbCE9PU8mJihjPU8uZ2V0KGQpLHZvaWQgMCE9PWMpKXtPLmRlbGV0ZShkKTtkPUsubWVtb2l6ZWRTdGF0ZTtkbyBkPWEoZCxjLmFjdGlvbiksYz1jLm5leHQ7d2hpbGUobnVsbCE9PWMpO0subWVtb2l6ZWRTdGF0ZT1kO3JldHVybltkLGJdfXJldHVybltLLm1lbW9pemVkU3RhdGUsYl19YT1hPT09c2I/XCJmdW5jdGlvblwiPT09dHlwZW9mIGI/YigpOmI6dm9pZCAwIT09Yz9jKGIpOmI7Sy5tZW1vaXplZFN0YXRlPWE7YT1LLnF1ZXVlPXtsYXN0Om51bGwsZGlzcGF0Y2g6bnVsbH07YT1hLmRpc3BhdGNoPXViLmJpbmQobnVsbCxJLGEpO3JldHVybltLLm1lbW9pemVkU3RhdGUsYV19XG5mdW5jdGlvbiB2YihhLGIpe0k9USgpO0s9cWIoKTtiPXZvaWQgMD09PWI/bnVsbDpiO2lmKG51bGwhPT1LKXt2YXIgYz1LLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJm51bGwhPT1iKXt2YXIgZD1jWzFdO2E6aWYobnVsbD09PWQpZD0hMTtlbHNle2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGgmJmY8Yi5sZW5ndGg7ZisrKWlmKCFsYihiW2ZdLGRbZl0pKXtkPSExO2JyZWFrIGF9ZD0hMH1pZihkKXJldHVybiBjWzBdfX1hPWEoKTtLLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9ZnVuY3Rpb24gdWIoYSxiLGMpe2lmKDI1PD1QKXRocm93IEVycm9yKGwoMzAxKSk7aWYoYT09PUkpaWYoTT0hMCxhPXthY3Rpb246YyxuZXh0Om51bGx9LG51bGw9PT1PJiYoTz1uZXcgTWFwKSxjPU8uZ2V0KGIpLHZvaWQgMD09PWMpTy5zZXQoYixhKTtlbHNle2ZvcihiPWM7bnVsbCE9PWIubmV4dDspYj1iLm5leHQ7Yi5uZXh0PWF9fWZ1bmN0aW9uIHdiKCl7dGhyb3cgRXJyb3IobCgzOTQpKTt9XG5mdW5jdGlvbiBSKCl7fVxudmFyIHhiPXtyZWFkQ29udGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5fY3VycmVudFZhbHVlMn0sdXNlQ29udGV4dDpmdW5jdGlvbihhKXtRKCk7cmV0dXJuIGEuX2N1cnJlbnRWYWx1ZTJ9LHVzZU1lbW86dmIsdXNlUmVkdWNlcjp0Yix1c2VSZWY6ZnVuY3Rpb24oYSl7ST1RKCk7Sz1xYigpO3ZhciBiPUsubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbD09PWI/KGE9e2N1cnJlbnQ6YX0sSy5tZW1vaXplZFN0YXRlPWEpOmJ9LHVzZVN0YXRlOmZ1bmN0aW9uKGEpe3JldHVybiB0YihzYixhKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OlIsdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKCl7fSx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe3JldHVybiB2YihmdW5jdGlvbigpe3JldHVybiBhfSxiKX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpSLHVzZUVmZmVjdDpSLHVzZURlYnVnVmFsdWU6Uix1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe1EoKTtyZXR1cm4gYX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe1EoKTtyZXR1cm5bITEsXG53Yl19LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGE9b2IudHJlZUNvbnRleHQ7dmFyIGI9YS5vdmVyZmxvdzthPWEuaWQ7YT0oYSZ+KDE8PDMyLUgoYSktMSkpLnRvU3RyaW5nKDMyKStiO3ZhciBjPVM7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IobCg0MDQpKTtiPU4rKzthPVwiOlwiK2MuaWRQcmVmaXgrXCJSXCIrYTswPGImJihhKz1cIkhcIitiLnRvU3RyaW5nKDMyKSk7cmV0dXJuIGErXCI6XCJ9LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oYSxiKXtRKCk7cmV0dXJuIGIoYS5fc291cmNlKX0sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oYSxiLGMpe2lmKHZvaWQgMD09PWMpdGhyb3cgRXJyb3IobCg0MDcpKTtyZXR1cm4gYygpfX0sUz1udWxsLHliPWFhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudERpc3BhdGNoZXI7ZnVuY3Rpb24gemIoYSl7Y29uc29sZS5lcnJvcihhKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFQoKXt9XG5mdW5jdGlvbiBBYihhLGIsYyxkLGYsZSxnLGgsayl7dmFyIG09W10sbj1uZXcgU2V0O2I9e2Rlc3RpbmF0aW9uOm51bGwscmVzcG9uc2VTdGF0ZTpiLHByb2dyZXNzaXZlQ2h1bmtTaXplOnZvaWQgMD09PWQ/MTI4MDA6ZCxzdGF0dXM6MCxmYXRhbEVycm9yOm51bGwsbmV4dFNlZ21lbnRJZDowLGFsbFBlbmRpbmdUYXNrczowLHBlbmRpbmdSb290VGFza3M6MCxjb21wbGV0ZWRSb290U2VnbWVudDpudWxsLGFib3J0YWJsZVRhc2tzOm4scGluZ2VkVGFza3M6bSxjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXM6W10sY29tcGxldGVkQm91bmRhcmllczpbXSxwYXJ0aWFsQm91bmRhcmllczpbXSxvbkVycm9yOnZvaWQgMD09PWY/emI6ZixvbkFsbFJlYWR5OnZvaWQgMD09PWU/VDplLG9uU2hlbGxSZWFkeTp2b2lkIDA9PT1nP1Q6ZyxvblNoZWxsRXJyb3I6dm9pZCAwPT09aD9UOmgsb25GYXRhbEVycm9yOnZvaWQgMD09PWs/VDprfTtjPVUoYiwwLG51bGwsYywhMSwhMSk7Yy5wYXJlbnRGbHVzaGVkPVxuITA7YT1CYihiLGEsbnVsbCxjLG4sWWEsbnVsbCxmYik7bS5wdXNoKGEpO3JldHVybiBifWZ1bmN0aW9uIEJiKGEsYixjLGQsZixlLGcsaCl7YS5hbGxQZW5kaW5nVGFza3MrKztudWxsPT09Yz9hLnBlbmRpbmdSb290VGFza3MrKzpjLnBlbmRpbmdUYXNrcysrO3ZhciBrPXtub2RlOmIscGluZzpmdW5jdGlvbigpe3ZhciBiPWEucGluZ2VkVGFza3M7Yi5wdXNoKGspOzE9PT1iLmxlbmd0aCYmQ2IoYSl9LGJsb2NrZWRCb3VuZGFyeTpjLGJsb2NrZWRTZWdtZW50OmQsYWJvcnRTZXQ6ZixsZWdhY3lDb250ZXh0OmUsY29udGV4dDpnLHRyZWVDb250ZXh0Omh9O2YuYWRkKGspO3JldHVybiBrfWZ1bmN0aW9uIFUoYSxiLGMsZCxmLGUpe3JldHVybntzdGF0dXM6MCxpZDotMSxpbmRleDpiLHBhcmVudEZsdXNoZWQ6ITEsY2h1bmtzOltdLGNoaWxkcmVuOltdLGZvcm1hdENvbnRleHQ6ZCxib3VuZGFyeTpjLGxhc3RQdXNoZWRUZXh0OmYsdGV4dEVtYmVkZGVkOmV9fVxuZnVuY3Rpb24gVihhLGIpe2E9YS5vbkVycm9yKGIpO2lmKG51bGwhPWEmJlwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcignb25FcnJvciByZXR1cm5lZCBzb21ldGhpbmcgd2l0aCBhIHR5cGUgb3RoZXIgdGhhbiBcInN0cmluZ1wiLiBvbkVycm9yIHNob3VsZCByZXR1cm4gYSBzdHJpbmcgYW5kIG1heSByZXR1cm4gbnVsbCBvciB1bmRlZmluZWQgYnV0IG11c3Qgbm90IHJldHVybiBhbnl0aGluZyBlbHNlLiBJdCByZWNlaXZlZCBzb21ldGhpbmcgb2YgdHlwZSBcIicrdHlwZW9mIGErJ1wiIGluc3RlYWQnKTtyZXR1cm4gYX1mdW5jdGlvbiBXKGEsYil7dmFyIGM9YS5vblNoZWxsRXJyb3I7YyhiKTtjPWEub25GYXRhbEVycm9yO2MoYik7bnVsbCE9PWEuZGVzdGluYXRpb24/KGEuc3RhdHVzPTIsYS5kZXN0aW5hdGlvbi5kZXN0cm95KGIpKTooYS5zdGF0dXM9MSxhLmZhdGFsRXJyb3I9Yil9XG5mdW5jdGlvbiBEYihhLGIsYyxkLGYpe0k9e307b2I9YjtOPTA7Zm9yKGE9YyhkLGYpO007KU09ITEsTj0wLFArPTEsSz1udWxsLGE9YyhkLGYpO3JiKCk7cmV0dXJuIGF9ZnVuY3Rpb24gRWIoYSxiLGMsZCl7dmFyIGY9Yy5yZW5kZXIoKSxlPWQuY2hpbGRDb250ZXh0VHlwZXM7aWYobnVsbCE9PWUmJnZvaWQgMCE9PWUpe3ZhciBnPWIubGVnYWN5Q29udGV4dDtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgYy5nZXRDaGlsZENvbnRleHQpZD1nO2Vsc2V7Yz1jLmdldENoaWxkQ29udGV4dCgpO2Zvcih2YXIgaCBpbiBjKWlmKCEoaCBpbiBlKSl0aHJvdyBFcnJvcihsKDEwOCxYYShkKXx8XCJVbmtub3duXCIsaCkpO2Q9Qih7fSxnLGMpfWIubGVnYWN5Q29udGV4dD1kO1goYSxiLGYpO2IubGVnYWN5Q29udGV4dD1nfWVsc2UgWChhLGIsZil9XG5mdW5jdGlvbiBGYihhLGIpe2lmKGEmJmEuZGVmYXVsdFByb3BzKXtiPUIoe30sYik7YT1hLmRlZmF1bHRQcm9wcztmb3IodmFyIGMgaW4gYSl2b2lkIDA9PT1iW2NdJiYoYltjXT1hW2NdKTtyZXR1cm4gYn1yZXR1cm4gYn1cbmZ1bmN0aW9uIEdiKGEsYixjLGQsZil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGMpaWYoYy5wcm90b3R5cGUmJmMucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpe2Y9WmEoYyxiLmxlZ2FjeUNvbnRleHQpO3ZhciBlPWMuY29udGV4dFR5cGU7ZT1uZXcgYyhkLFwib2JqZWN0XCI9PT10eXBlb2YgZSYmbnVsbCE9PWU/ZS5fY3VycmVudFZhbHVlMjpmKTtlYihlLGMsZCxmKTtFYihhLGIsZSxjKX1lbHNle2U9WmEoYyxiLmxlZ2FjeUNvbnRleHQpO2Y9RGIoYSxiLGMsZCxlKTt2YXIgZz0wIT09TjtpZihcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5yZW5kZXImJnZvaWQgMD09PWYuJCR0eXBlb2YpZWIoZixjLGQsZSksRWIoYSxiLGYsYyk7ZWxzZSBpZihnKXtkPWIudHJlZUNvbnRleHQ7Yi50cmVlQ29udGV4dD1nYihkLDEsMCk7dHJ5e1goYSxiLGYpfWZpbmFsbHl7Yi50cmVlQ29udGV4dD1kfX1lbHNlIFgoYSxiLGYpfWVsc2UgaWYoXCJzdHJpbmdcIj09PVxudHlwZW9mIGMpe2Y9Yi5ibG9ja2VkU2VnbWVudDtlPXlhKGYuY2h1bmtzLGMsZCxhLnJlc3BvbnNlU3RhdGUsZi5mb3JtYXRDb250ZXh0KTtmLmxhc3RQdXNoZWRUZXh0PSExO2c9Zi5mb3JtYXRDb250ZXh0O2YuZm9ybWF0Q29udGV4dD1yYShnLGMsZCk7SGIoYSxiLGUpO2YuZm9ybWF0Q29udGV4dD1nO3N3aXRjaChjKXtjYXNlIFwiYXJlYVwiOmNhc2UgXCJiYXNlXCI6Y2FzZSBcImJyXCI6Y2FzZSBcImNvbFwiOmNhc2UgXCJlbWJlZFwiOmNhc2UgXCJoclwiOmNhc2UgXCJpbWdcIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwia2V5Z2VuXCI6Y2FzZSBcImxpbmtcIjpjYXNlIFwibWV0YVwiOmNhc2UgXCJwYXJhbVwiOmNhc2UgXCJzb3VyY2VcIjpjYXNlIFwidHJhY2tcIjpjYXNlIFwid2JyXCI6YnJlYWs7ZGVmYXVsdDpmLmNodW5rcy5wdXNoKFwiPC9cIixjLFwiPlwiKX1mLmxhc3RQdXNoZWRUZXh0PSExfWVsc2V7c3dpdGNoKGMpe2Nhc2UgVWE6Y2FzZSBUYTpjYXNlIEphOmNhc2UgS2E6Y2FzZSBJYTpYKGEsYixkLmNoaWxkcmVuKTtyZXR1cm47XG5jYXNlIFBhOlgoYSxiLGQuY2hpbGRyZW4pO3JldHVybjtjYXNlIFNhOnRocm93IEVycm9yKGwoMzQzKSk7Y2FzZSBPYTphOntjPWIuYmxvY2tlZEJvdW5kYXJ5O2Y9Yi5ibG9ja2VkU2VnbWVudDtlPWQuZmFsbGJhY2s7ZD1kLmNoaWxkcmVuO2c9bmV3IFNldDt2YXIgaD17aWQ6bnVsbCxyb290U2VnbWVudElEOi0xLHBhcmVudEZsdXNoZWQ6ITEscGVuZGluZ1Rhc2tzOjAsZm9yY2VDbGllbnRSZW5kZXI6ITEsY29tcGxldGVkU2VnbWVudHM6W10sYnl0ZVNpemU6MCxmYWxsYmFja0Fib3J0YWJsZVRhc2tzOmcsZXJyb3JEaWdlc3Q6bnVsbH0saz1VKGEsZi5jaHVua3MubGVuZ3RoLGgsZi5mb3JtYXRDb250ZXh0LCExLCExKTtmLmNoaWxkcmVuLnB1c2goayk7Zi5sYXN0UHVzaGVkVGV4dD0hMTt2YXIgbT1VKGEsMCxudWxsLGYuZm9ybWF0Q29udGV4dCwhMSwhMSk7bS5wYXJlbnRGbHVzaGVkPSEwO2IuYmxvY2tlZEJvdW5kYXJ5PWg7Yi5ibG9ja2VkU2VnbWVudD1tO3RyeXtpZihIYihhLFxuYixkKSxhLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fG0ubGFzdFB1c2hlZFRleHQmJm0udGV4dEVtYmVkZGVkJiZtLmNodW5rcy5wdXNoKFwiXFx4M2MhLS0gLS1cXHgzZVwiKSxtLnN0YXR1cz0xLFkoaCxtKSwwPT09aC5wZW5kaW5nVGFza3MpYnJlYWsgYX1jYXRjaChuKXttLnN0YXR1cz00LGguZm9yY2VDbGllbnRSZW5kZXI9ITAsaC5lcnJvckRpZ2VzdD1WKGEsbil9ZmluYWxseXtiLmJsb2NrZWRCb3VuZGFyeT1jLGIuYmxvY2tlZFNlZ21lbnQ9Zn1iPUJiKGEsZSxjLGssZyxiLmxlZ2FjeUNvbnRleHQsYi5jb250ZXh0LGIudHJlZUNvbnRleHQpO2EucGluZ2VkVGFza3MucHVzaChiKX1yZXR1cm59aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yylzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSBOYTpkPURiKGEsYixjLnJlbmRlcixkLGYpO2lmKDAhPT1OKXtjPWIudHJlZUNvbnRleHQ7Yi50cmVlQ29udGV4dD1nYihjLDEsMCk7dHJ5e1goYSxiLGQpfWZpbmFsbHl7Yi50cmVlQ29udGV4dD1cbmN9fWVsc2UgWChhLGIsZCk7cmV0dXJuO2Nhc2UgUWE6Yz1jLnR5cGU7ZD1GYihjLGQpO0diKGEsYixjLGQsZik7cmV0dXJuO2Nhc2UgTGE6Zj1kLmNoaWxkcmVuO2M9Yy5fY29udGV4dDtkPWQudmFsdWU7ZT1jLl9jdXJyZW50VmFsdWUyO2MuX2N1cnJlbnRWYWx1ZTI9ZDtnPUU7RT1kPXtwYXJlbnQ6ZyxkZXB0aDpudWxsPT09Zz8wOmcuZGVwdGgrMSxjb250ZXh0OmMscGFyZW50VmFsdWU6ZSx2YWx1ZTpkfTtiLmNvbnRleHQ9ZDtYKGEsYixmKTthPUU7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IobCg0MDMpKTtkPWEucGFyZW50VmFsdWU7YS5jb250ZXh0Ll9jdXJyZW50VmFsdWUyPWQ9PT1WYT9hLmNvbnRleHQuX2RlZmF1bHRWYWx1ZTpkO2E9RT1hLnBhcmVudDtiLmNvbnRleHQ9YTtyZXR1cm47Y2FzZSBNYTpkPWQuY2hpbGRyZW47ZD1kKGMuX2N1cnJlbnRWYWx1ZTIpO1goYSxiLGQpO3JldHVybjtjYXNlIFJhOmY9Yy5faW5pdDtjPWYoYy5fcGF5bG9hZCk7ZD1GYihjLGQpO0diKGEsXG5iLGMsZCx2b2lkIDApO3JldHVybn10aHJvdyBFcnJvcihsKDEzMCxudWxsPT1jP2M6dHlwZW9mIGMsXCJcIikpO319XG5mdW5jdGlvbiBYKGEsYixjKXtiLm5vZGU9YztpZihcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jKXtzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSBHYTpHYihhLGIsYy50eXBlLGMucHJvcHMsYy5yZWYpO3JldHVybjtjYXNlIEhhOnRocm93IEVycm9yKGwoMjU3KSk7Y2FzZSBSYTp2YXIgZD1jLl9pbml0O2M9ZChjLl9wYXlsb2FkKTtYKGEsYixjKTtyZXR1cm59aWYocWEoYykpe0liKGEsYixjKTtyZXR1cm59bnVsbD09PWN8fFwib2JqZWN0XCIhPT10eXBlb2YgYz9kPW51bGw6KGQ9V2EmJmNbV2FdfHxjW1wiQEBpdGVyYXRvclwiXSxkPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBkP2Q6bnVsbCk7aWYoZCYmKGQ9ZC5jYWxsKGMpKSl7Yz1kLm5leHQoKTtpZighYy5kb25lKXt2YXIgZj1bXTtkbyBmLnB1c2goYy52YWx1ZSksYz1kLm5leHQoKTt3aGlsZSghYy5kb25lKTtJYihhLGIsZil9cmV0dXJufWE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGMpO3Rocm93IEVycm9yKGwoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PVxuYT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKGMpLmpvaW4oXCIsIFwiKStcIn1cIjphKSk7fVwic3RyaW5nXCI9PT10eXBlb2YgYz8oZD1iLmJsb2NrZWRTZWdtZW50LGQubGFzdFB1c2hlZFRleHQ9RmEoYi5ibG9ja2VkU2VnbWVudC5jaHVua3MsYyxhLnJlc3BvbnNlU3RhdGUsZC5sYXN0UHVzaGVkVGV4dCkpOlwibnVtYmVyXCI9PT10eXBlb2YgYyYmKGQ9Yi5ibG9ja2VkU2VnbWVudCxkLmxhc3RQdXNoZWRUZXh0PUZhKGIuYmxvY2tlZFNlZ21lbnQuY2h1bmtzLFwiXCIrYyxhLnJlc3BvbnNlU3RhdGUsZC5sYXN0UHVzaGVkVGV4dCkpfWZ1bmN0aW9uIEliKGEsYixjKXtmb3IodmFyIGQ9Yy5sZW5ndGgsZj0wO2Y8ZDtmKyspe3ZhciBlPWIudHJlZUNvbnRleHQ7Yi50cmVlQ29udGV4dD1nYihlLGQsZik7dHJ5e0hiKGEsYixjW2ZdKX1maW5hbGx5e2IudHJlZUNvbnRleHQ9ZX19fVxuZnVuY3Rpb24gSGIoYSxiLGMpe3ZhciBkPWIuYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dCxmPWIubGVnYWN5Q29udGV4dCxlPWIuY29udGV4dDt0cnl7cmV0dXJuIFgoYSxiLGMpfWNhdGNoKGspe2lmKHJiKCksXCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09ayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGsudGhlbil7Yz1rO3ZhciBnPWIuYmxvY2tlZFNlZ21lbnQsaD1VKGEsZy5jaHVua3MubGVuZ3RoLG51bGwsZy5mb3JtYXRDb250ZXh0LGcubGFzdFB1c2hlZFRleHQsITApO2cuY2hpbGRyZW4ucHVzaChoKTtnLmxhc3RQdXNoZWRUZXh0PSExO2E9QmIoYSxiLm5vZGUsYi5ibG9ja2VkQm91bmRhcnksaCxiLmFib3J0U2V0LGIubGVnYWN5Q29udGV4dCxiLmNvbnRleHQsYi50cmVlQ29udGV4dCkucGluZztjLnRoZW4oYSxhKTtiLmJsb2NrZWRTZWdtZW50LmZvcm1hdENvbnRleHQ9ZDtiLmxlZ2FjeUNvbnRleHQ9ZjtiLmNvbnRleHQ9ZTtHKGUpfWVsc2UgdGhyb3cgYi5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0PVxuZCxiLmxlZ2FjeUNvbnRleHQ9ZixiLmNvbnRleHQ9ZSxHKGUpLGs7fX1mdW5jdGlvbiBKYihhKXt2YXIgYj1hLmJsb2NrZWRCb3VuZGFyeTthPWEuYmxvY2tlZFNlZ21lbnQ7YS5zdGF0dXM9MztLYih0aGlzLGIsYSl9XG5mdW5jdGlvbiBMYihhLGIsYyl7dmFyIGQ9YS5ibG9ja2VkQm91bmRhcnk7YS5ibG9ja2VkU2VnbWVudC5zdGF0dXM9MztudWxsPT09ZD8oYi5hbGxQZW5kaW5nVGFza3MtLSwyIT09Yi5zdGF0dXMmJihiLnN0YXR1cz0yLG51bGwhPT1iLmRlc3RpbmF0aW9uJiZiLmRlc3RpbmF0aW9uLnB1c2gobnVsbCkpKTooZC5wZW5kaW5nVGFza3MtLSxkLmZvcmNlQ2xpZW50UmVuZGVyfHwoZC5mb3JjZUNsaWVudFJlbmRlcj0hMCxhPXZvaWQgMD09PWM/RXJyb3IobCg0MzIpKTpjLGQuZXJyb3JEaWdlc3Q9Yi5vbkVycm9yKGEpLGQucGFyZW50Rmx1c2hlZCYmYi5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChkKSksZC5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIExiKGEsYixjKX0pLGQuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpLGIuYWxsUGVuZGluZ1Rhc2tzLS0sMD09PWIuYWxsUGVuZGluZ1Rhc2tzJiYoZD1iLm9uQWxsUmVhZHksXG5kKCkpKX1mdW5jdGlvbiBZKGEsYil7aWYoMD09PWIuY2h1bmtzLmxlbmd0aCYmMT09PWIuY2hpbGRyZW4ubGVuZ3RoJiZudWxsPT09Yi5jaGlsZHJlblswXS5ib3VuZGFyeSl7dmFyIGM9Yi5jaGlsZHJlblswXTtjLmlkPWIuaWQ7Yy5wYXJlbnRGbHVzaGVkPSEwOzE9PT1jLnN0YXR1cyYmWShhLGMpfWVsc2UgYS5jb21wbGV0ZWRTZWdtZW50cy5wdXNoKGIpfVxuZnVuY3Rpb24gS2IoYSxiLGMpe2lmKG51bGw9PT1iKXtpZihjLnBhcmVudEZsdXNoZWQpe2lmKG51bGwhPT1hLmNvbXBsZXRlZFJvb3RTZWdtZW50KXRocm93IEVycm9yKGwoMzg5KSk7YS5jb21wbGV0ZWRSb290U2VnbWVudD1jfWEucGVuZGluZ1Jvb3RUYXNrcy0tOzA9PT1hLnBlbmRpbmdSb290VGFza3MmJihhLm9uU2hlbGxFcnJvcj1ULGI9YS5vblNoZWxsUmVhZHksYigpKX1lbHNlIGIucGVuZGluZ1Rhc2tzLS0sYi5mb3JjZUNsaWVudFJlbmRlcnx8KDA9PT1iLnBlbmRpbmdUYXNrcz8oYy5wYXJlbnRGbHVzaGVkJiYxPT09Yy5zdGF0dXMmJlkoYixjKSxiLnBhcmVudEZsdXNoZWQmJmEuY29tcGxldGVkQm91bmRhcmllcy5wdXNoKGIpLGIuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5mb3JFYWNoKEpiLGEpLGIuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpKTpjLnBhcmVudEZsdXNoZWQmJjE9PT1jLnN0YXR1cyYmKFkoYixjKSwxPT09Yi5jb21wbGV0ZWRTZWdtZW50cy5sZW5ndGgmJlxuYi5wYXJlbnRGbHVzaGVkJiZhLnBhcnRpYWxCb3VuZGFyaWVzLnB1c2goYikpKTthLmFsbFBlbmRpbmdUYXNrcy0tOzA9PT1hLmFsbFBlbmRpbmdUYXNrcyYmKGE9YS5vbkFsbFJlYWR5LGEoKSl9XG5mdW5jdGlvbiBDYihhKXtpZigyIT09YS5zdGF0dXMpe3ZhciBiPUUsYz15Yi5jdXJyZW50O3liLmN1cnJlbnQ9eGI7dmFyIGQ9UztTPWEucmVzcG9uc2VTdGF0ZTt0cnl7dmFyIGY9YS5waW5nZWRUYXNrcyxlO2ZvcihlPTA7ZTxmLmxlbmd0aDtlKyspe3ZhciBnPWZbZV07dmFyIGg9YSxrPWcuYmxvY2tlZFNlZ21lbnQ7aWYoMD09PWsuc3RhdHVzKXtHKGcuY29udGV4dCk7dHJ5e1goaCxnLGcubm9kZSksaC5yZXNwb25zZVN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwfHxrLmxhc3RQdXNoZWRUZXh0JiZrLnRleHRFbWJlZGRlZCYmay5jaHVua3MucHVzaChcIlxceDNjIS0tIC0tXFx4M2VcIiksZy5hYm9ydFNldC5kZWxldGUoZyksay5zdGF0dXM9MSxLYihoLGcuYmxvY2tlZEJvdW5kYXJ5LGspfWNhdGNoKHope2lmKHJiKCksXCJvYmplY3RcIj09PXR5cGVvZiB6JiZudWxsIT09eiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHoudGhlbil7dmFyIG09Zy5waW5nO3oudGhlbihtLG0pfWVsc2V7Zy5hYm9ydFNldC5kZWxldGUoZyk7XG5rLnN0YXR1cz00O3ZhciBuPWcuYmxvY2tlZEJvdW5kYXJ5LHE9eixDPVYoaCxxKTtudWxsPT09bj9XKGgscSk6KG4ucGVuZGluZ1Rhc2tzLS0sbi5mb3JjZUNsaWVudFJlbmRlcnx8KG4uZm9yY2VDbGllbnRSZW5kZXI9ITAsbi5lcnJvckRpZ2VzdD1DLG4ucGFyZW50Rmx1c2hlZCYmaC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChuKSkpO2guYWxsUGVuZGluZ1Rhc2tzLS07aWYoMD09PWguYWxsUGVuZGluZ1Rhc2tzKXt2YXIgRD1oLm9uQWxsUmVhZHk7RCgpfX19ZmluYWxseXt9fX1mLnNwbGljZSgwLGUpO251bGwhPT1hLmRlc3RpbmF0aW9uJiZNYihhLGEuZGVzdGluYXRpb24pfWNhdGNoKHope1YoYSx6KSxXKGEseil9ZmluYWxseXtTPWQseWIuY3VycmVudD1jLGM9PT14YiYmRyhiKX19fVxuZnVuY3Rpb24gWihhLGIsYyl7Yy5wYXJlbnRGbHVzaGVkPSEwO3N3aXRjaChjLnN0YXR1cyl7Y2FzZSAwOnZhciBkPWMuaWQ9YS5uZXh0U2VnbWVudElkKys7Yy5sYXN0UHVzaGVkVGV4dD0hMTtjLnRleHRFbWJlZGRlZD0hMTthPWEucmVzcG9uc2VTdGF0ZTtiLnB1c2goJzx0ZW1wbGF0ZSBpZD1cIicpO2IucHVzaChhLnBsYWNlaG9sZGVyUHJlZml4KTthPWQudG9TdHJpbmcoMTYpO2IucHVzaChhKTtyZXR1cm4gYi5wdXNoKCdcIj48L3RlbXBsYXRlPicpO2Nhc2UgMTpjLnN0YXR1cz0yO3ZhciBmPSEwO2Q9Yy5jaHVua3M7dmFyIGU9MDtjPWMuY2hpbGRyZW47Zm9yKHZhciBnPTA7ZzxjLmxlbmd0aDtnKyspe2ZvcihmPWNbZ107ZTxmLmluZGV4O2UrKyliLnB1c2goZFtlXSk7Zj1OYihhLGIsZil9Zm9yKDtlPGQubGVuZ3RoLTE7ZSsrKWIucHVzaChkW2VdKTtlPGQubGVuZ3RoJiYoZj1iLnB1c2goZFtlXSkpO3JldHVybiBmO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzOTApKTt9fVxuZnVuY3Rpb24gTmIoYSxiLGMpe3ZhciBkPWMuYm91bmRhcnk7aWYobnVsbD09PWQpcmV0dXJuIFooYSxiLGMpO2QucGFyZW50Rmx1c2hlZD0hMDtpZihkLmZvcmNlQ2xpZW50UmVuZGVyKXJldHVybiBhLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXB8fChkPWQuZXJyb3JEaWdlc3QsYi5wdXNoKFwiXFx4M2MhLS0kIS0tXFx4M2VcIiksYi5wdXNoKFwiPHRlbXBsYXRlXCIpLGQmJihiLnB1c2goJyBkYXRhLWRnc3Q9XCInKSxkPXYoZCksYi5wdXNoKGQpLGIucHVzaCgnXCInKSksYi5wdXNoKFwiPjwvdGVtcGxhdGU+XCIpKSxaKGEsYixjKSxhPWEucmVzcG9uc2VTdGF0ZS5nZW5lcmF0ZVN0YXRpY01hcmt1cD8hMDpiLnB1c2goXCJcXHgzYyEtLS8kLS1cXHgzZVwiKSxhO2lmKDA8ZC5wZW5kaW5nVGFza3Mpe2Qucm9vdFNlZ21lbnRJRD1hLm5leHRTZWdtZW50SWQrKzswPGQuY29tcGxldGVkU2VnbWVudHMubGVuZ3RoJiZhLnBhcnRpYWxCb3VuZGFyaWVzLnB1c2goZCk7dmFyIGY9YS5yZXNwb25zZVN0YXRlO1xudmFyIGU9Zi5uZXh0U3VzcGVuc2VJRCsrO2Y9Zi5ib3VuZGFyeVByZWZpeCtlLnRvU3RyaW5nKDE2KTtkPWQuaWQ9Zjt6YShiLGEucmVzcG9uc2VTdGF0ZSxkKTtaKGEsYixjKTtyZXR1cm4gYi5wdXNoKFwiXFx4M2MhLS0vJC0tXFx4M2VcIil9aWYoZC5ieXRlU2l6ZT5hLnByb2dyZXNzaXZlQ2h1bmtTaXplKXJldHVybiBkLnJvb3RTZWdtZW50SUQ9YS5uZXh0U2VnbWVudElkKyssYS5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2goZCksemEoYixhLnJlc3BvbnNlU3RhdGUsZC5pZCksWihhLGIsYyksYi5wdXNoKFwiXFx4M2MhLS0vJC0tXFx4M2VcIik7YS5yZXNwb25zZVN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwfHxiLnB1c2goXCJcXHgzYyEtLSQtLVxceDNlXCIpO2M9ZC5jb21wbGV0ZWRTZWdtZW50cztpZigxIT09Yy5sZW5ndGgpdGhyb3cgRXJyb3IobCgzOTEpKTtOYihhLGIsY1swXSk7YT1hLnJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXA/ITA6Yi5wdXNoKFwiXFx4M2MhLS0vJC0tXFx4M2VcIik7XG5yZXR1cm4gYX1mdW5jdGlvbiBPYihhLGIsYyl7QWEoYixhLnJlc3BvbnNlU3RhdGUsYy5mb3JtYXRDb250ZXh0LGMuaWQpO05iKGEsYixjKTtyZXR1cm4gQmEoYixjLmZvcm1hdENvbnRleHQpfVxuZnVuY3Rpb24gUGIoYSxiLGMpe2Zvcih2YXIgZD1jLmNvbXBsZXRlZFNlZ21lbnRzLGY9MDtmPGQubGVuZ3RoO2YrKylRYihhLGIsYyxkW2ZdKTtkLmxlbmd0aD0wO2E9YS5yZXNwb25zZVN0YXRlO2Q9Yy5pZDtjPWMucm9vdFNlZ21lbnRJRDtiLnB1c2goYS5zdGFydElubGluZVNjcmlwdCk7YS5zZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uP2IucHVzaCgnJFJDKFwiJyk6KGEuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj0hMCxiLnB1c2goJ2Z1bmN0aW9uICRSQyhhLGIpe2E9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYik7aWYoYSl7YT1hLnByZXZpb3VzU2libGluZzt2YXIgZj1hLnBhcmVudE5vZGUsYz1hLm5leHRTaWJsaW5nLGU9MDtkb3tpZihjJiY4PT09Yy5ub2RlVHlwZSl7dmFyIGQ9Yy5kYXRhO2lmKFwiLyRcIj09PWQpaWYoMD09PWUpYnJlYWs7ZWxzZSBlLS07ZWxzZVwiJFwiIT09ZCYmXCIkP1wiIT09ZCYmXCIkIVwiIT09ZHx8ZSsrfWQ9Yy5uZXh0U2libGluZztmLnJlbW92ZUNoaWxkKGMpO2M9ZH13aGlsZShjKTtmb3IoO2IuZmlyc3RDaGlsZDspZi5pbnNlcnRCZWZvcmUoYi5maXJzdENoaWxkLGMpO2EuZGF0YT1cIiRcIjthLl9yZWFjdFJldHJ5JiZhLl9yZWFjdFJldHJ5KCl9fTskUkMoXCInKSk7aWYobnVsbD09PVxuZCl0aHJvdyBFcnJvcihsKDM5NSkpO2M9Yy50b1N0cmluZygxNik7Yi5wdXNoKGQpO2IucHVzaCgnXCIsXCInKTtiLnB1c2goYS5zZWdtZW50UHJlZml4KTtiLnB1c2goYyk7cmV0dXJuIGIucHVzaCgnXCIpXFx4M2Mvc2NyaXB0PicpfVxuZnVuY3Rpb24gUWIoYSxiLGMsZCl7aWYoMj09PWQuc3RhdHVzKXJldHVybiEwO3ZhciBmPWQuaWQ7aWYoLTE9PT1mKXtpZigtMT09PShkLmlkPWMucm9vdFNlZ21lbnRJRCkpdGhyb3cgRXJyb3IobCgzOTIpKTtyZXR1cm4gT2IoYSxiLGQpfU9iKGEsYixkKTthPWEucmVzcG9uc2VTdGF0ZTtiLnB1c2goYS5zdGFydElubGluZVNjcmlwdCk7YS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb24/Yi5wdXNoKCckUlMoXCInKTooYS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb249ITAsYi5wdXNoKCdmdW5jdGlvbiAkUlMoYSxiKXthPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2I9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7Zm9yKGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTthLmZpcnN0Q2hpbGQ7KWIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYS5maXJzdENoaWxkLGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX07JFJTKFwiJykpO2IucHVzaChhLnNlZ21lbnRQcmVmaXgpO1xuZj1mLnRvU3RyaW5nKDE2KTtiLnB1c2goZik7Yi5wdXNoKCdcIixcIicpO2IucHVzaChhLnBsYWNlaG9sZGVyUHJlZml4KTtiLnB1c2goZik7cmV0dXJuIGIucHVzaCgnXCIpXFx4M2Mvc2NyaXB0PicpfVxuZnVuY3Rpb24gTWIoYSxiKXt0cnl7dmFyIGM9YS5jb21wbGV0ZWRSb290U2VnbWVudDtpZihudWxsIT09YyYmMD09PWEucGVuZGluZ1Jvb3RUYXNrcyl7TmIoYSxiLGMpO2EuY29tcGxldGVkUm9vdFNlZ21lbnQ9bnVsbDt2YXIgZD1hLnJlc3BvbnNlU3RhdGUuYm9vdHN0cmFwQ2h1bmtzO2ZvcihjPTA7YzxkLmxlbmd0aC0xO2MrKyliLnB1c2goZFtjXSk7YzxkLmxlbmd0aCYmYi5wdXNoKGRbY10pfXZhciBmPWEuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLGU7Zm9yKGU9MDtlPGYubGVuZ3RoO2UrKyl7dmFyIGc9ZltlXTtkPWI7dmFyIGg9YS5yZXNwb25zZVN0YXRlLGs9Zy5pZCxtPWcuZXJyb3JEaWdlc3Qsbj1nLmVycm9yTWVzc2FnZSxxPWcuZXJyb3JDb21wb25lbnRTdGFjaztkLnB1c2goaC5zdGFydElubGluZVNjcmlwdCk7aC5zZW50Q2xpZW50UmVuZGVyRnVuY3Rpb24/ZC5wdXNoKCckUlgoXCInKTooaC5zZW50Q2xpZW50UmVuZGVyRnVuY3Rpb249ITAsZC5wdXNoKCdmdW5jdGlvbiAkUlgoYixjLGQsZSl7dmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7YSYmKGI9YS5wcmV2aW91c1NpYmxpbmcsYi5kYXRhPVwiJCFcIixhPWEuZGF0YXNldCxjJiYoYS5kZ3N0PWMpLGQmJihhLm1zZz1kKSxlJiYoYS5zdGNrPWUpLGIuX3JlYWN0UmV0cnkmJmIuX3JlYWN0UmV0cnkoKSl9OyRSWChcIicpKTtcbmlmKG51bGw9PT1rKXRocm93IEVycm9yKGwoMzk1KSk7ZC5wdXNoKGspO2QucHVzaCgnXCInKTtpZihtfHxufHxxKXtkLnB1c2goXCIsXCIpO3ZhciBDPURhKG18fFwiXCIpO2QucHVzaChDKX1pZihufHxxKXtkLnB1c2goXCIsXCIpO3ZhciBEPURhKG58fFwiXCIpO2QucHVzaChEKX1pZihxKXtkLnB1c2goXCIsXCIpO3ZhciB6PURhKHEpO2QucHVzaCh6KX1pZighZC5wdXNoKFwiKVxceDNjL3NjcmlwdD5cIikpe2EuZGVzdGluYXRpb249bnVsbDtlKys7Zi5zcGxpY2UoMCxlKTtyZXR1cm59fWYuc3BsaWNlKDAsZSk7dmFyIGJhPWEuY29tcGxldGVkQm91bmRhcmllcztmb3IoZT0wO2U8YmEubGVuZ3RoO2UrKylpZighUGIoYSxiLGJhW2VdKSl7YS5kZXN0aW5hdGlvbj1udWxsO2UrKztiYS5zcGxpY2UoMCxlKTtyZXR1cm59YmEuc3BsaWNlKDAsZSk7dmFyIGNhPWEucGFydGlhbEJvdW5kYXJpZXM7Zm9yKGU9MDtlPGNhLmxlbmd0aDtlKyspe3ZhciBtYj1jYVtlXTthOntmPWE7Zz1iO3ZhciBkYT1tYi5jb21wbGV0ZWRTZWdtZW50cztcbmZvcihoPTA7aDxkYS5sZW5ndGg7aCsrKWlmKCFRYihmLGcsbWIsZGFbaF0pKXtoKys7ZGEuc3BsaWNlKDAsaCk7dmFyIG5iPSExO2JyZWFrIGF9ZGEuc3BsaWNlKDAsaCk7bmI9ITB9aWYoIW5iKXthLmRlc3RpbmF0aW9uPW51bGw7ZSsrO2NhLnNwbGljZSgwLGUpO3JldHVybn19Y2Euc3BsaWNlKDAsZSk7dmFyIGVhPWEuY29tcGxldGVkQm91bmRhcmllcztmb3IoZT0wO2U8ZWEubGVuZ3RoO2UrKylpZighUGIoYSxiLGVhW2VdKSl7YS5kZXN0aW5hdGlvbj1udWxsO2UrKztlYS5zcGxpY2UoMCxlKTtyZXR1cm59ZWEuc3BsaWNlKDAsZSl9ZmluYWxseXswPT09YS5hbGxQZW5kaW5nVGFza3MmJjA9PT1hLnBpbmdlZFRhc2tzLmxlbmd0aCYmMD09PWEuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLmxlbmd0aCYmMD09PWEuY29tcGxldGVkQm91bmRhcmllcy5sZW5ndGgmJmIucHVzaChudWxsKX19XG5mdW5jdGlvbiBSYihhLGIpe3RyeXt2YXIgYz1hLmFib3J0YWJsZVRhc2tzO2MuZm9yRWFjaChmdW5jdGlvbihjKXtyZXR1cm4gTGIoYyxhLGIpfSk7Yy5jbGVhcigpO251bGwhPT1hLmRlc3RpbmF0aW9uJiZNYihhLGEuZGVzdGluYXRpb24pfWNhdGNoKGQpe1YoYSxkKSxXKGEsZCl9fWZ1bmN0aW9uIFNiKCl7fVxuZnVuY3Rpb24gVGIoYSxiLGMsZCl7dmFyIGY9ITEsZT1udWxsLGc9XCJcIixoPXtwdXNoOmZ1bmN0aW9uKGEpe251bGwhPT1hJiYoZys9YSk7cmV0dXJuITB9LGRlc3Ryb3k6ZnVuY3Rpb24oYSl7Zj0hMDtlPWF9fSxrPSExO2E9QWIoYSxFYShjLGI/Yi5pZGVudGlmaWVyUHJlZml4OnZvaWQgMCkse2luc2VydGlvbk1vZGU6MSxzZWxlY3RlZFZhbHVlOm51bGx9LEluZmluaXR5LFNiLHZvaWQgMCxmdW5jdGlvbigpe2s9ITB9LHZvaWQgMCx2b2lkIDApO0NiKGEpO1JiKGEsZCk7aWYoMT09PWEuc3RhdHVzKWEuc3RhdHVzPTIsaC5kZXN0cm95KGEuZmF0YWxFcnJvcik7ZWxzZSBpZigyIT09YS5zdGF0dXMmJm51bGw9PT1hLmRlc3RpbmF0aW9uKXthLmRlc3RpbmF0aW9uPWg7dHJ5e01iKGEsaCl9Y2F0Y2gobSl7VihhLG0pLFcoYSxtKX19aWYoZil0aHJvdyBlO2lmKCFrKXRocm93IEVycm9yKGwoNDI2KSk7cmV0dXJuIGd9XG5leHBvcnRzLnJlbmRlclRvTm9kZVN0cmVhbT1mdW5jdGlvbigpe3Rocm93IEVycm9yKGwoMjA3KSk7fTtleHBvcnRzLnJlbmRlclRvU3RhdGljTWFya3VwPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFRiKGEsYiwhMCwnVGhlIHNlcnZlciB1c2VkIFwicmVuZGVyVG9TdGF0aWNNYXJrdXBcIiB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IFN1c3BlbnNlLiBJZiB5b3UgaW50ZW5kZWQgdG8gaGF2ZSB0aGUgc2VydmVyIHdhaXQgZm9yIHRoZSBzdXNwZW5kZWQgY29tcG9uZW50IHBsZWFzZSBzd2l0Y2ggdG8gXCJyZW5kZXJUb1JlYWRhYmxlU3RyZWFtXCIgd2hpY2ggc3VwcG9ydHMgU3VzcGVuc2Ugb24gdGhlIHNlcnZlcicpfTtleHBvcnRzLnJlbmRlclRvU3RhdGljTm9kZVN0cmVhbT1mdW5jdGlvbigpe3Rocm93IEVycm9yKGwoMjA4KSk7fTtleHBvcnRzLnJlbmRlclRvU3RyaW5nPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFRiKGEsYiwhMSwnVGhlIHNlcnZlciB1c2VkIFwicmVuZGVyVG9TdHJpbmdcIiB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IFN1c3BlbnNlLiBJZiB5b3UgaW50ZW5kZWQgZm9yIHRoaXMgU3VzcGVuc2UgYm91bmRhcnkgdG8gcmVuZGVyIHRoZSBmYWxsYmFjayBjb250ZW50IG9uIHRoZSBzZXJ2ZXIgY29uc2lkZXIgdGhyb3dpbmcgYW4gRXJyb3Igc29tZXdoZXJlIHdpdGhpbiB0aGUgU3VzcGVuc2UgYm91bmRhcnkuIElmIHlvdSBpbnRlbmRlZCB0byBoYXZlIHRoZSBzZXJ2ZXIgd2FpdCBmb3IgdGhlIHN1c3BlbmRlZCBjb21wb25lbnQgcGxlYXNlIHN3aXRjaCB0byBcInJlbmRlclRvUmVhZGFibGVTdHJlYW1cIiB3aGljaCBzdXBwb3J0cyBTdXNwZW5zZSBvbiB0aGUgc2VydmVyJyl9O1xuZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wXCI7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20tc2VydmVyLmJyb3dzZXIucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBhYT1yZXF1aXJlKFwicmVhY3RcIik7ZnVuY3Rpb24gayhhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgbD1udWxsLG49MDtcbmZ1bmN0aW9uIHAoYSxiKXtpZigwIT09Yi5sZW5ndGgpaWYoNTEyPGIubGVuZ3RoKTA8biYmKGEuZW5xdWV1ZShuZXcgVWludDhBcnJheShsLmJ1ZmZlciwwLG4pKSxsPW5ldyBVaW50OEFycmF5KDUxMiksbj0wKSxhLmVucXVldWUoYik7ZWxzZXt2YXIgYz1sLmxlbmd0aC1uO2M8Yi5sZW5ndGgmJigwPT09Yz9hLmVucXVldWUobCk6KGwuc2V0KGIuc3ViYXJyYXkoMCxjKSxuKSxhLmVucXVldWUobCksYj1iLnN1YmFycmF5KGMpKSxsPW5ldyBVaW50OEFycmF5KDUxMiksbj0wKTtsLnNldChiLG4pO24rPWIubGVuZ3RofX1mdW5jdGlvbiB0KGEsYil7cChhLGIpO3JldHVybiEwfWZ1bmN0aW9uIGJhKGEpe2wmJjA8biYmKGEuZW5xdWV1ZShuZXcgVWludDhBcnJheShsLmJ1ZmZlciwwLG4pKSxsPW51bGwsbj0wKX12YXIgY2E9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHUoYSl7cmV0dXJuIGNhLmVuY29kZShhKX1mdW5jdGlvbiB3KGEpe3JldHVybiBjYS5lbmNvZGUoYSl9XG5mdW5jdGlvbiBkYShhLGIpe1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhLmVycm9yP2EuZXJyb3IoYik6YS5jbG9zZSgpfXZhciB4PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksZWE9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLGZhPXt9LGhhPXt9O1xuZnVuY3Rpb24gaWEoYSl7aWYoeC5jYWxsKGhhLGEpKXJldHVybiEwO2lmKHguY2FsbChmYSxhKSlyZXR1cm4hMTtpZihlYS50ZXN0KGEpKXJldHVybiBoYVthXT0hMDtmYVthXT0hMDtyZXR1cm4hMX1mdW5jdGlvbiB5KGEsYixjLGQsZixlLGcpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9Zjt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1lO3RoaXMucmVtb3ZlRW1wdHlTdHJpbmc9Z312YXIgej17fTtcblwiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgeShhLDAsITEsYSxudWxsLCExLCExKX0pO1tbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YVswXTt6W2JdPW5ldyB5KGIsMSwhMSxhWzFdLG51bGwsITEsITEpfSk7W1wiY29udGVudEVkaXRhYmxlXCIsXCJkcmFnZ2FibGVcIixcInNwZWxsQ2hlY2tcIixcInZhbHVlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgeShhLDIsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJhdXRvUmV2ZXJzZVwiLFwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFwiLFwiZm9jdXNhYmxlXCIsXCJwcmVzZXJ2ZUFscGhhXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgeShhLDIsITEsYSxudWxsLCExLCExKX0pO1wiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHkoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHkoYSwzLCEwLGEsbnVsbCwhMSwhMSl9KTtbXCJjYXB0dXJlXCIsXCJkb3dubG9hZFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHkoYSw0LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJjb2xzXCIsXCJyb3dzXCIsXCJzaXplXCIsXCJzcGFuXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgeShhLDYsITEsYSxudWxsLCExLCExKX0pO1tcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgeShhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIGphPS9bXFwtOl0oW2Etel0pL2c7ZnVuY3Rpb24ga2EoYSl7cmV0dXJuIGFbMV0udG9VcHBlckNhc2UoKX1cblwiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHRcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoamEsXG5rYSk7eltiXT1uZXcgeShiLDEsITEsYSxudWxsLCExLCExKX0pO1wieGxpbms6YWN0dWF0ZSB4bGluazphcmNyb2xlIHhsaW5rOnJvbGUgeGxpbms6c2hvdyB4bGluazp0aXRsZSB4bGluazp0eXBlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGphLGthKTt6W2JdPW5ldyB5KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCExLCExKX0pO1tcInhtbDpiYXNlXCIsXCJ4bWw6bGFuZ1wiLFwieG1sOnNwYWNlXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGphLGthKTt6W2JdPW5ldyB5KGIsMSwhMSxhLFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsITEsITEpfSk7W1widGFiSW5kZXhcIixcImNyb3NzT3JpZ2luXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgeShhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG56LnhsaW5rSHJlZj1uZXcgeShcInhsaW5rSHJlZlwiLDEsITEsXCJ4bGluazpocmVmXCIsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITAsITEpO1tcInNyY1wiLFwiaHJlZlwiLFwiYWN0aW9uXCIsXCJmb3JtQWN0aW9uXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgeShhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7XG52YXIgQj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsXG5maWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxsYT1bXCJXZWJraXRcIixcIm1zXCIsXCJNb3pcIixcIk9cIl07T2JqZWN0LmtleXMoQikuZm9yRWFjaChmdW5jdGlvbihhKXtsYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9YithLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEpO0JbYl09QlthXX0pfSk7dmFyIG9hPS9bXCInJjw+XS87XG5mdW5jdGlvbiBDKGEpe2lmKFwiYm9vbGVhblwiPT09dHlwZW9mIGF8fFwibnVtYmVyXCI9PT10eXBlb2YgYSlyZXR1cm5cIlwiK2E7YT1cIlwiK2E7dmFyIGI9b2EuZXhlYyhhKTtpZihiKXt2YXIgYz1cIlwiLGQsZj0wO2ZvcihkPWIuaW5kZXg7ZDxhLmxlbmd0aDtkKyspe3N3aXRjaChhLmNoYXJDb2RlQXQoZCkpe2Nhc2UgMzQ6Yj1cIiZxdW90O1wiO2JyZWFrO2Nhc2UgMzg6Yj1cIiZhbXA7XCI7YnJlYWs7Y2FzZSAzOTpiPVwiJiN4Mjc7XCI7YnJlYWs7Y2FzZSA2MDpiPVwiJmx0O1wiO2JyZWFrO2Nhc2UgNjI6Yj1cIiZndDtcIjticmVhaztkZWZhdWx0OmNvbnRpbnVlfWYhPT1kJiYoYys9YS5zdWJzdHJpbmcoZixkKSk7Zj1kKzE7Yys9Yn1hPWYhPT1kP2MrYS5zdWJzdHJpbmcoZixkKTpjfXJldHVybiBhfVxudmFyIHBhPS8oW0EtWl0pL2cscWE9L15tcy0vLHJhPUFycmF5LmlzQXJyYXksc2E9dyhcIjxzY3JpcHQ+XCIpLHRhPXcoXCJcXHgzYy9zY3JpcHQ+XCIpLHVhPXcoJzxzY3JpcHQgc3JjPVwiJyksdmE9dygnPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwiJyksd2E9dygnXCIgYXN5bmM9XCJcIj5cXHgzYy9zY3JpcHQ+JykseGE9Lyg8XFwvfDwpKHMpKGNyaXB0KS9naTtmdW5jdGlvbiB5YShhLGIsYyxkKXtyZXR1cm5cIlwiK2IrKFwic1wiPT09Yz9cIlxcXFx1MDA3M1wiOlwiXFxcXHUwMDUzXCIpK2R9XG5mdW5jdGlvbiB6YShhLGIsYyxkLGYpe2E9dm9pZCAwPT09YT9cIlwiOmE7Yj12b2lkIDA9PT1iP3NhOncoJzxzY3JpcHQgbm9uY2U9XCInK0MoYikrJ1wiPicpO3ZhciBlPVtdO3ZvaWQgMCE9PWMmJmUucHVzaChiLHUoKFwiXCIrYykucmVwbGFjZSh4YSx5YSkpLHRhKTtpZih2b2lkIDAhPT1kKWZvcihjPTA7YzxkLmxlbmd0aDtjKyspZS5wdXNoKHVhLHUoQyhkW2NdKSksd2EpO2lmKHZvaWQgMCE9PWYpZm9yKGQ9MDtkPGYubGVuZ3RoO2QrKyllLnB1c2godmEsdShDKGZbZF0pKSx3YSk7cmV0dXJue2Jvb3RzdHJhcENodW5rczplLHN0YXJ0SW5saW5lU2NyaXB0OmIscGxhY2Vob2xkZXJQcmVmaXg6dyhhK1wiUDpcIiksc2VnbWVudFByZWZpeDp3KGErXCJTOlwiKSxib3VuZGFyeVByZWZpeDphK1wiQjpcIixpZFByZWZpeDphLG5leHRTdXNwZW5zZUlEOjAsc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uOiExLHNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb246ITEsc2VudENsaWVudFJlbmRlckZ1bmN0aW9uOiExfX1cbmZ1bmN0aW9uIEQoYSxiKXtyZXR1cm57aW5zZXJ0aW9uTW9kZTphLHNlbGVjdGVkVmFsdWU6Yn19ZnVuY3Rpb24gQWEoYSl7cmV0dXJuIEQoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPT09YT8yOlwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiPT09YT8zOjAsbnVsbCl9XG5mdW5jdGlvbiBCYShhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgXCJzZWxlY3RcIjpyZXR1cm4gRCgxLG51bGwhPWMudmFsdWU/Yy52YWx1ZTpjLmRlZmF1bHRWYWx1ZSk7Y2FzZSBcInN2Z1wiOnJldHVybiBEKDIsbnVsbCk7Y2FzZSBcIm1hdGhcIjpyZXR1cm4gRCgzLG51bGwpO2Nhc2UgXCJmb3JlaWduT2JqZWN0XCI6cmV0dXJuIEQoMSxudWxsKTtjYXNlIFwidGFibGVcIjpyZXR1cm4gRCg0LG51bGwpO2Nhc2UgXCJ0aGVhZFwiOmNhc2UgXCJ0Ym9keVwiOmNhc2UgXCJ0Zm9vdFwiOnJldHVybiBEKDUsbnVsbCk7Y2FzZSBcImNvbGdyb3VwXCI6cmV0dXJuIEQoNyxudWxsKTtjYXNlIFwidHJcIjpyZXR1cm4gRCg2LG51bGwpfXJldHVybiA0PD1hLmluc2VydGlvbk1vZGV8fDA9PT1hLmluc2VydGlvbk1vZGU/RCgxLG51bGwpOmF9dmFyIENhPXcoXCJcXHgzYyEtLSAtLVxceDNlXCIpO2Z1bmN0aW9uIERhKGEsYixjLGQpe2lmKFwiXCI9PT1iKXJldHVybiBkO2QmJmEucHVzaChDYSk7YS5wdXNoKHUoQyhiKSkpO3JldHVybiEwfVxudmFyIEVhPW5ldyBNYXAsRmE9dygnIHN0eWxlPVwiJyksR2E9dyhcIjpcIiksSGE9dyhcIjtcIik7XG5mdW5jdGlvbiBJYShhLGIsYyl7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBjKXRocm93IEVycm9yKGsoNjIpKTtiPSEwO2Zvcih2YXIgZCBpbiBjKWlmKHguY2FsbChjLGQpKXt2YXIgZj1jW2RdO2lmKG51bGwhPWYmJlwiYm9vbGVhblwiIT09dHlwZW9mIGYmJlwiXCIhPT1mKXtpZigwPT09ZC5pbmRleE9mKFwiLS1cIikpe3ZhciBlPXUoQyhkKSk7Zj11KEMoKFwiXCIrZikudHJpbSgpKSl9ZWxzZXtlPWQ7dmFyIGc9RWEuZ2V0KGUpO3ZvaWQgMCE9PWc/ZT1nOihnPXcoQyhlLnJlcGxhY2UocGEsXCItJDFcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHFhLFwiLW1zLVwiKSkpLEVhLnNldChlLGcpLGU9Zyk7Zj1cIm51bWJlclwiPT09dHlwZW9mIGY/MD09PWZ8fHguY2FsbChCLGQpP3UoXCJcIitmKTp1KGYrXCJweFwiKTp1KEMoKFwiXCIrZikudHJpbSgpKSl9Yj8oYj0hMSxhLnB1c2goRmEsZSxHYSxmKSk6YS5wdXNoKEhhLGUsR2EsZil9fWJ8fGEucHVzaChFKX1cbnZhciBIPXcoXCIgXCIpLEk9dygnPVwiJyksRT13KCdcIicpLEphPXcoJz1cIlwiJyk7XG5mdW5jdGlvbiBKKGEsYixjLGQpe3N3aXRjaChjKXtjYXNlIFwic3R5bGVcIjpJYShhLGIsZCk7cmV0dXJuO2Nhc2UgXCJkZWZhdWx0VmFsdWVcIjpjYXNlIFwiZGVmYXVsdENoZWNrZWRcIjpjYXNlIFwiaW5uZXJIVE1MXCI6Y2FzZSBcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOmNhc2UgXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpyZXR1cm59aWYoISgyPGMubGVuZ3RoKXx8XCJvXCIhPT1jWzBdJiZcIk9cIiE9PWNbMF18fFwiblwiIT09Y1sxXSYmXCJOXCIhPT1jWzFdKWlmKGI9ei5oYXNPd25Qcm9wZXJ0eShjKT96W2NdOm51bGwsbnVsbCE9PWIpe3N3aXRjaCh0eXBlb2YgZCl7Y2FzZSBcImZ1bmN0aW9uXCI6Y2FzZSBcInN5bWJvbFwiOnJldHVybjtjYXNlIFwiYm9vbGVhblwiOmlmKCFiLmFjY2VwdHNCb29sZWFucylyZXR1cm59Yz11KGIuYXR0cmlidXRlTmFtZSk7c3dpdGNoKGIudHlwZSl7Y2FzZSAzOmQmJmEucHVzaChILGMsSmEpO2JyZWFrO2Nhc2UgNDohMD09PWQ/YS5wdXNoKEgsYyxKYSk6ITEhPT1cbmQmJmEucHVzaChILGMsSSx1KEMoZCkpLEUpO2JyZWFrO2Nhc2UgNTppc05hTihkKXx8YS5wdXNoKEgsYyxJLHUoQyhkKSksRSk7YnJlYWs7Y2FzZSA2OiFpc05hTihkKSYmMTw9ZCYmYS5wdXNoKEgsYyxJLHUoQyhkKSksRSk7YnJlYWs7ZGVmYXVsdDpiLnNhbml0aXplVVJMJiYoZD1cIlwiK2QpLGEucHVzaChILGMsSSx1KEMoZCkpLEUpfX1lbHNlIGlmKGlhKGMpKXtzd2l0Y2godHlwZW9mIGQpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm47Y2FzZSBcImJvb2xlYW5cIjppZihiPWMudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpLFwiZGF0YS1cIiE9PWImJlwiYXJpYS1cIiE9PWIpcmV0dXJufWEucHVzaChILHUoYyksSSx1KEMoZCkpLEUpfX12YXIgSz13KFwiPlwiKSxLYT13KFwiLz5cIik7XG5mdW5jdGlvbiBMKGEsYixjKXtpZihudWxsIT1iKXtpZihudWxsIT1jKXRocm93IEVycm9yKGsoNjApKTtpZihcIm9iamVjdFwiIT09dHlwZW9mIGJ8fCEoXCJfX2h0bWxcImluIGIpKXRocm93IEVycm9yKGsoNjEpKTtiPWIuX19odG1sO251bGwhPT1iJiZ2b2lkIDAhPT1iJiZhLnB1c2godShcIlwiK2IpKX19ZnVuY3Rpb24gTGEoYSl7dmFyIGI9XCJcIjthYS5DaGlsZHJlbi5mb3JFYWNoKGEsZnVuY3Rpb24oYSl7bnVsbCE9YSYmKGIrPWEpfSk7cmV0dXJuIGJ9dmFyIE1hPXcoJyBzZWxlY3RlZD1cIlwiJyk7XG5mdW5jdGlvbiBOYShhLGIsYyxkKXthLnB1c2goTShjKSk7dmFyIGY9Yz1udWxsLGU7Zm9yKGUgaW4gYilpZih4LmNhbGwoYixlKSl7dmFyIGc9YltlXTtpZihudWxsIT1nKXN3aXRjaChlKXtjYXNlIFwiY2hpbGRyZW5cIjpjPWc7YnJlYWs7Y2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6Zj1nO2JyZWFrO2RlZmF1bHQ6SihhLGQsZSxnKX19YS5wdXNoKEspO0woYSxmLGMpO3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYz8oYS5wdXNoKHUoQyhjKSkpLG51bGwpOmN9dmFyIE9hPXcoXCJcXG5cIiksUGE9L15bYS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC8sUWE9bmV3IE1hcDtmdW5jdGlvbiBNKGEpe3ZhciBiPVFhLmdldChhKTtpZih2b2lkIDA9PT1iKXtpZighUGEudGVzdChhKSl0aHJvdyBFcnJvcihrKDY1LGEpKTtiPXcoXCI8XCIrYSk7UWEuc2V0KGEsYil9cmV0dXJuIGJ9dmFyIFJhPXcoXCI8IURPQ1RZUEUgaHRtbD5cIik7XG5mdW5jdGlvbiBTYShhLGIsYyxkLGYpe3N3aXRjaChiKXtjYXNlIFwic2VsZWN0XCI6YS5wdXNoKE0oXCJzZWxlY3RcIikpO3ZhciBlPW51bGwsZz1udWxsO2ZvcihyIGluIGMpaWYoeC5jYWxsKGMscikpe3ZhciBoPWNbcl07aWYobnVsbCE9aClzd2l0Y2gocil7Y2FzZSBcImNoaWxkcmVuXCI6ZT1oO2JyZWFrO2Nhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmc9aDticmVhaztjYXNlIFwiZGVmYXVsdFZhbHVlXCI6Y2FzZSBcInZhbHVlXCI6YnJlYWs7ZGVmYXVsdDpKKGEsZCxyLGgpfX1hLnB1c2goSyk7TChhLGcsZSk7cmV0dXJuIGU7Y2FzZSBcIm9wdGlvblwiOmc9Zi5zZWxlY3RlZFZhbHVlO2EucHVzaChNKFwib3B0aW9uXCIpKTt2YXIgbT1oPW51bGwscT1udWxsO3ZhciByPW51bGw7Zm9yKGUgaW4gYylpZih4LmNhbGwoYyxlKSl7dmFyIHY9Y1tlXTtpZihudWxsIT12KXN3aXRjaChlKXtjYXNlIFwiY2hpbGRyZW5cIjpoPXY7YnJlYWs7Y2FzZSBcInNlbGVjdGVkXCI6cT12O2JyZWFrO2Nhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnI9XG52O2JyZWFrO2Nhc2UgXCJ2YWx1ZVwiOm09djtkZWZhdWx0OkooYSxkLGUsdil9fWlmKG51bGwhPWcpaWYoYz1udWxsIT09bT9cIlwiK206TGEoaCkscmEoZykpZm9yKGQ9MDtkPGcubGVuZ3RoO2QrKyl7aWYoXCJcIitnW2RdPT09Yyl7YS5wdXNoKE1hKTticmVha319ZWxzZVwiXCIrZz09PWMmJmEucHVzaChNYSk7ZWxzZSBxJiZhLnB1c2goTWEpO2EucHVzaChLKTtMKGEscixoKTtyZXR1cm4gaDtjYXNlIFwidGV4dGFyZWFcIjphLnB1c2goTShcInRleHRhcmVhXCIpKTtyPWc9ZT1udWxsO2ZvcihoIGluIGMpaWYoeC5jYWxsKGMsaCkmJihtPWNbaF0sbnVsbCE9bSkpc3dpdGNoKGgpe2Nhc2UgXCJjaGlsZHJlblwiOnI9bTticmVhaztjYXNlIFwidmFsdWVcIjplPW07YnJlYWs7Y2FzZSBcImRlZmF1bHRWYWx1ZVwiOmc9bTticmVhaztjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjp0aHJvdyBFcnJvcihrKDkxKSk7ZGVmYXVsdDpKKGEsZCxoLG0pfW51bGw9PT1lJiZudWxsIT09ZyYmKGU9Zyk7YS5wdXNoKEspO1xuaWYobnVsbCE9cil7aWYobnVsbCE9ZSl0aHJvdyBFcnJvcihrKDkyKSk7aWYocmEocikmJjE8ci5sZW5ndGgpdGhyb3cgRXJyb3Ioayg5MykpO2U9XCJcIityfVwic3RyaW5nXCI9PT10eXBlb2YgZSYmXCJcXG5cIj09PWVbMF0mJmEucHVzaChPYSk7bnVsbCE9PWUmJmEucHVzaCh1KEMoXCJcIitlKSkpO3JldHVybiBudWxsO2Nhc2UgXCJpbnB1dFwiOmEucHVzaChNKFwiaW5wdXRcIikpO209cj1oPWU9bnVsbDtmb3IoZyBpbiBjKWlmKHguY2FsbChjLGcpJiYocT1jW2ddLG51bGwhPXEpKXN3aXRjaChnKXtjYXNlIFwiY2hpbGRyZW5cIjpjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjp0aHJvdyBFcnJvcihrKDM5OSxcImlucHV0XCIpKTtjYXNlIFwiZGVmYXVsdENoZWNrZWRcIjptPXE7YnJlYWs7Y2FzZSBcImRlZmF1bHRWYWx1ZVwiOmg9cTticmVhaztjYXNlIFwiY2hlY2tlZFwiOnI9cTticmVhaztjYXNlIFwidmFsdWVcIjplPXE7YnJlYWs7ZGVmYXVsdDpKKGEsZCxnLHEpfW51bGwhPT1yP0ooYSxkLFwiY2hlY2tlZFwiLFxucik6bnVsbCE9PW0mJkooYSxkLFwiY2hlY2tlZFwiLG0pO251bGwhPT1lP0ooYSxkLFwidmFsdWVcIixlKTpudWxsIT09aCYmSihhLGQsXCJ2YWx1ZVwiLGgpO2EucHVzaChLYSk7cmV0dXJuIG51bGw7Y2FzZSBcIm1lbnVpdGVtXCI6YS5wdXNoKE0oXCJtZW51aXRlbVwiKSk7Zm9yKHZhciBBIGluIGMpaWYoeC5jYWxsKGMsQSkmJihlPWNbQV0sbnVsbCE9ZSkpc3dpdGNoKEEpe2Nhc2UgXCJjaGlsZHJlblwiOmNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGsoNDAwKSk7ZGVmYXVsdDpKKGEsZCxBLGUpfWEucHVzaChLKTtyZXR1cm4gbnVsbDtjYXNlIFwidGl0bGVcIjphLnB1c2goTShcInRpdGxlXCIpKTtlPW51bGw7Zm9yKHYgaW4gYylpZih4LmNhbGwoYyx2KSYmKGc9Y1t2XSxudWxsIT1nKSlzd2l0Y2godil7Y2FzZSBcImNoaWxkcmVuXCI6ZT1nO2JyZWFrO2Nhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOnRocm93IEVycm9yKGsoNDM0KSk7ZGVmYXVsdDpKKGEsZCx2LGcpfWEucHVzaChLKTtcbnJldHVybiBlO2Nhc2UgXCJsaXN0aW5nXCI6Y2FzZSBcInByZVwiOmEucHVzaChNKGIpKTtnPWU9bnVsbDtmb3IobSBpbiBjKWlmKHguY2FsbChjLG0pJiYoaD1jW21dLG51bGwhPWgpKXN3aXRjaChtKXtjYXNlIFwiY2hpbGRyZW5cIjplPWg7YnJlYWs7Y2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6Zz1oO2JyZWFrO2RlZmF1bHQ6SihhLGQsbSxoKX1hLnB1c2goSyk7aWYobnVsbCE9Zyl7aWYobnVsbCE9ZSl0aHJvdyBFcnJvcihrKDYwKSk7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBnfHwhKFwiX19odG1sXCJpbiBnKSl0aHJvdyBFcnJvcihrKDYxKSk7Yz1nLl9faHRtbDtudWxsIT09YyYmdm9pZCAwIT09YyYmKFwic3RyaW5nXCI9PT10eXBlb2YgYyYmMDxjLmxlbmd0aCYmXCJcXG5cIj09PWNbMF0/YS5wdXNoKE9hLHUoYykpOmEucHVzaCh1KFwiXCIrYykpKX1cInN0cmluZ1wiPT09dHlwZW9mIGUmJlwiXFxuXCI9PT1lWzBdJiZhLnB1c2goT2EpO3JldHVybiBlO2Nhc2UgXCJhcmVhXCI6Y2FzZSBcImJhc2VcIjpjYXNlIFwiYnJcIjpjYXNlIFwiY29sXCI6Y2FzZSBcImVtYmVkXCI6Y2FzZSBcImhyXCI6Y2FzZSBcImltZ1wiOmNhc2UgXCJrZXlnZW5cIjpjYXNlIFwibGlua1wiOmNhc2UgXCJtZXRhXCI6Y2FzZSBcInBhcmFtXCI6Y2FzZSBcInNvdXJjZVwiOmNhc2UgXCJ0cmFja1wiOmNhc2UgXCJ3YnJcIjphLnB1c2goTShiKSk7XG5mb3IodmFyIEYgaW4gYylpZih4LmNhbGwoYyxGKSYmKGU9Y1tGXSxudWxsIT1lKSlzd2l0Y2goRil7Y2FzZSBcImNoaWxkcmVuXCI6Y2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6dGhyb3cgRXJyb3IoaygzOTksYikpO2RlZmF1bHQ6SihhLGQsRixlKX1hLnB1c2goS2EpO3JldHVybiBudWxsO2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuIE5hKGEsYyxiLGQpO2Nhc2UgXCJodG1sXCI6cmV0dXJuIDA9PT1mLmluc2VydGlvbk1vZGUmJmEucHVzaChSYSksTmEoYSxjLGIsZCk7ZGVmYXVsdDppZigtMT09PWIuaW5kZXhPZihcIi1cIikmJlwic3RyaW5nXCIhPT10eXBlb2YgYy5pcylyZXR1cm4gTmEoYSxjLGIsZCk7YS5wdXNoKE0oYikpO1xuZz1lPW51bGw7Zm9yKHEgaW4gYylpZih4LmNhbGwoYyxxKSYmKGg9Y1txXSxudWxsIT1oKSlzd2l0Y2gocSl7Y2FzZSBcImNoaWxkcmVuXCI6ZT1oO2JyZWFrO2Nhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmc9aDticmVhaztjYXNlIFwic3R5bGVcIjpJYShhLGQsaCk7YnJlYWs7Y2FzZSBcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOmNhc2UgXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpicmVhaztkZWZhdWx0OmlhKHEpJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgaCYmXCJzeW1ib2xcIiE9PXR5cGVvZiBoJiZhLnB1c2goSCx1KHEpLEksdShDKGgpKSxFKX1hLnB1c2goSyk7TChhLGcsZSk7cmV0dXJuIGV9fVxudmFyIFRhPXcoXCI8L1wiKSxVYT13KFwiPlwiKSxWYT13KCc8dGVtcGxhdGUgaWQ9XCInKSxXYT13KCdcIj48L3RlbXBsYXRlPicpLFhhPXcoXCJcXHgzYyEtLSQtLVxceDNlXCIpLFlhPXcoJ1xceDNjIS0tJD8tLVxceDNlPHRlbXBsYXRlIGlkPVwiJyksWmE9dygnXCI+PC90ZW1wbGF0ZT4nKSwkYT13KFwiXFx4M2MhLS0kIS0tXFx4M2VcIiksYWI9dyhcIlxceDNjIS0tLyQtLVxceDNlXCIpLGJiPXcoXCI8dGVtcGxhdGVcIiksY2I9dygnXCInKSxkYj13KCcgZGF0YS1kZ3N0PVwiJyk7dygnIGRhdGEtbXNnPVwiJyk7dygnIGRhdGEtc3Rjaz1cIicpO3ZhciBlYj13KFwiPjwvdGVtcGxhdGU+XCIpO2Z1bmN0aW9uIGZiKGEsYixjKXtwKGEsWWEpO2lmKG51bGw9PT1jKXRocm93IEVycm9yKGsoMzk1KSk7cChhLGMpO3JldHVybiB0KGEsWmEpfVxudmFyIGdiPXcoJzxkaXYgaGlkZGVuIGlkPVwiJyksaGI9dygnXCI+JyksaWI9dyhcIjwvZGl2PlwiKSxqYj13KCc8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHN0eWxlPVwiZGlzcGxheTpub25lXCIgaWQ9XCInKSxrYj13KCdcIj4nKSxsYj13KFwiPC9zdmc+XCIpLG1iPXcoJzxtYXRoIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHN0eWxlPVwiZGlzcGxheTpub25lXCIgaWQ9XCInKSxuYj13KCdcIj4nKSxvYj13KFwiPC9tYXRoPlwiKSxwYj13KCc8dGFibGUgaGlkZGVuIGlkPVwiJykscWI9dygnXCI+JykscmI9dyhcIjwvdGFibGU+XCIpLHNiPXcoJzx0YWJsZSBoaWRkZW4+PHRib2R5IGlkPVwiJyksdGI9dygnXCI+JyksdWI9dyhcIjwvdGJvZHk+PC90YWJsZT5cIiksdmI9dygnPHRhYmxlIGhpZGRlbj48dHIgaWQ9XCInKSx3Yj13KCdcIj4nKSx4Yj13KFwiPC90cj48L3RhYmxlPlwiKSx5Yj13KCc8dGFibGUgaGlkZGVuPjxjb2xncm91cCBpZD1cIicpLHpiPXcoJ1wiPicpLEFiPXcoXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIpO1xuZnVuY3Rpb24gQmIoYSxiLGMsZCl7c3dpdGNoKGMuaW5zZXJ0aW9uTW9kZSl7Y2FzZSAwOmNhc2UgMTpyZXR1cm4gcChhLGdiKSxwKGEsYi5zZWdtZW50UHJlZml4KSxwKGEsdShkLnRvU3RyaW5nKDE2KSkpLHQoYSxoYik7Y2FzZSAyOnJldHVybiBwKGEsamIpLHAoYSxiLnNlZ21lbnRQcmVmaXgpLHAoYSx1KGQudG9TdHJpbmcoMTYpKSksdChhLGtiKTtjYXNlIDM6cmV0dXJuIHAoYSxtYikscChhLGIuc2VnbWVudFByZWZpeCkscChhLHUoZC50b1N0cmluZygxNikpKSx0KGEsbmIpO2Nhc2UgNDpyZXR1cm4gcChhLHBiKSxwKGEsYi5zZWdtZW50UHJlZml4KSxwKGEsdShkLnRvU3RyaW5nKDE2KSkpLHQoYSxxYik7Y2FzZSA1OnJldHVybiBwKGEsc2IpLHAoYSxiLnNlZ21lbnRQcmVmaXgpLHAoYSx1KGQudG9TdHJpbmcoMTYpKSksdChhLHRiKTtjYXNlIDY6cmV0dXJuIHAoYSx2YikscChhLGIuc2VnbWVudFByZWZpeCkscChhLHUoZC50b1N0cmluZygxNikpKSx0KGEsd2IpO2Nhc2UgNzpyZXR1cm4gcChhLFxueWIpLHAoYSxiLnNlZ21lbnRQcmVmaXgpLHAoYSx1KGQudG9TdHJpbmcoMTYpKSksdChhLHpiKTtkZWZhdWx0OnRocm93IEVycm9yKGsoMzk3KSk7fX1mdW5jdGlvbiBDYihhLGIpe3N3aXRjaChiLmluc2VydGlvbk1vZGUpe2Nhc2UgMDpjYXNlIDE6cmV0dXJuIHQoYSxpYik7Y2FzZSAyOnJldHVybiB0KGEsbGIpO2Nhc2UgMzpyZXR1cm4gdChhLG9iKTtjYXNlIDQ6cmV0dXJuIHQoYSxyYik7Y2FzZSA1OnJldHVybiB0KGEsdWIpO2Nhc2UgNjpyZXR1cm4gdChhLHhiKTtjYXNlIDc6cmV0dXJuIHQoYSxBYik7ZGVmYXVsdDp0aHJvdyBFcnJvcihrKDM5NykpO319XG52YXIgRGI9dygnZnVuY3Rpb24gJFJTKGEsYil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2ZvcihhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk7YS5maXJzdENoaWxkOyliLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEuZmlyc3RDaGlsZCxiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9OyRSUyhcIicpLEViPXcoJyRSUyhcIicpLEdiPXcoJ1wiLFwiJyksSGI9dygnXCIpXFx4M2Mvc2NyaXB0PicpLEliPXcoJ2Z1bmN0aW9uICRSQyhhLGIpe2E9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7Yj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYik7aWYoYSl7YT1hLnByZXZpb3VzU2libGluZzt2YXIgZj1hLnBhcmVudE5vZGUsYz1hLm5leHRTaWJsaW5nLGU9MDtkb3tpZihjJiY4PT09Yy5ub2RlVHlwZSl7dmFyIGQ9Yy5kYXRhO2lmKFwiLyRcIj09PWQpaWYoMD09PWUpYnJlYWs7ZWxzZSBlLS07ZWxzZVwiJFwiIT09ZCYmXCIkP1wiIT09ZCYmXCIkIVwiIT09ZHx8ZSsrfWQ9Yy5uZXh0U2libGluZztmLnJlbW92ZUNoaWxkKGMpO2M9ZH13aGlsZShjKTtmb3IoO2IuZmlyc3RDaGlsZDspZi5pbnNlcnRCZWZvcmUoYi5maXJzdENoaWxkLGMpO2EuZGF0YT1cIiRcIjthLl9yZWFjdFJldHJ5JiZhLl9yZWFjdFJldHJ5KCl9fTskUkMoXCInKSxcbkpiPXcoJyRSQyhcIicpLEtiPXcoJ1wiLFwiJyksTGI9dygnXCIpXFx4M2Mvc2NyaXB0PicpLE1iPXcoJ2Z1bmN0aW9uICRSWChiLGMsZCxlKXt2YXIgYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChiKTthJiYoYj1hLnByZXZpb3VzU2libGluZyxiLmRhdGE9XCIkIVwiLGE9YS5kYXRhc2V0LGMmJihhLmRnc3Q9YyksZCYmKGEubXNnPWQpLGUmJihhLnN0Y2s9ZSksYi5fcmVhY3RSZXRyeSYmYi5fcmVhY3RSZXRyeSgpKX07JFJYKFwiJyksTmI9dygnJFJYKFwiJyksT2I9dygnXCInKSxQYj13KFwiKVxceDNjL3NjcmlwdD5cIiksUWI9dyhcIixcIiksUmI9L1s8XFx1MjAyOFxcdTIwMjldL2c7XG5mdW5jdGlvbiBTYihhKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoYSkucmVwbGFjZShSYixmdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSBcIjxcIjpyZXR1cm5cIlxcXFx1MDAzY1wiO2Nhc2UgXCJcXHUyMDI4XCI6cmV0dXJuXCJcXFxcdTIwMjhcIjtjYXNlIFwiXFx1MjAyOVwiOnJldHVyblwiXFxcXHUyMDI5XCI7ZGVmYXVsdDp0aHJvdyBFcnJvcihcImVzY2FwZUpTU3RyaW5nc0Zvckluc3RydWN0aW9uU2NyaXB0cyBlbmNvdW50ZXJlZCBhIG1hdGNoIGl0IGRvZXMgbm90IGtub3cgaG93IHRvIHJlcGxhY2UuIHRoaXMgbWVhbnMgdGhlIG1hdGNoIHJlZ2V4IGFuZCB0aGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBhcmUgbm8gbG9uZ2VyIGluIHN5bmMuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3RcIik7fX0pfVxudmFyIE49T2JqZWN0LmFzc2lnbixUYj1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxVYj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLFZiPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxXYj1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksWGI9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLFliPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxaYj1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSwkYj1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksYWM9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLGJjPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLGNjPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLGRjPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLGVjPVN5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKSxmYz1TeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKSxnYz1TeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKSxcbmhjPVN5bWJvbC5mb3IoXCJyZWFjdC5kZWZhdWx0X3ZhbHVlXCIpLGljPVN5bWJvbC5pdGVyYXRvcjtcbmZ1bmN0aW9uIGpjKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGEuZGlzcGxheU5hbWV8fGEubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgVmI6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2UgVWI6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIFhiOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIFdiOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgYWM6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgYmM6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIn1pZihcIm9iamVjdFwiPT09dHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgWmI6cmV0dXJuKGEuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgWWI6cmV0dXJuKGEuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgJGI6dmFyIGI9YS5yZW5kZXI7YT1hLmRpc3BsYXlOYW1lO2F8fChhPWIuZGlzcGxheU5hbWV8fFxuYi5uYW1lfHxcIlwiLGE9XCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO3JldHVybiBhO2Nhc2UgY2M6cmV0dXJuIGI9YS5kaXNwbGF5TmFtZXx8bnVsbCxudWxsIT09Yj9iOmpjKGEudHlwZSl8fFwiTWVtb1wiO2Nhc2UgZGM6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIGpjKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9dmFyIGtjPXt9O2Z1bmN0aW9uIGxjKGEsYil7YT1hLmNvbnRleHRUeXBlcztpZighYSlyZXR1cm4ga2M7dmFyIGM9e30sZDtmb3IoZCBpbiBhKWNbZF09YltkXTtyZXR1cm4gY312YXIgTz1udWxsO1xuZnVuY3Rpb24gUChhLGIpe2lmKGEhPT1iKXthLmNvbnRleHQuX2N1cnJlbnRWYWx1ZT1hLnBhcmVudFZhbHVlO2E9YS5wYXJlbnQ7dmFyIGM9Yi5wYXJlbnQ7aWYobnVsbD09PWEpe2lmKG51bGwhPT1jKXRocm93IEVycm9yKGsoNDAxKSk7fWVsc2V7aWYobnVsbD09PWMpdGhyb3cgRXJyb3Ioayg0MDEpKTtQKGEsYyl9Yi5jb250ZXh0Ll9jdXJyZW50VmFsdWU9Yi52YWx1ZX19ZnVuY3Rpb24gbWMoYSl7YS5jb250ZXh0Ll9jdXJyZW50VmFsdWU9YS5wYXJlbnRWYWx1ZTthPWEucGFyZW50O251bGwhPT1hJiZtYyhhKX1mdW5jdGlvbiBuYyhhKXt2YXIgYj1hLnBhcmVudDtudWxsIT09YiYmbmMoYik7YS5jb250ZXh0Ll9jdXJyZW50VmFsdWU9YS52YWx1ZX1cbmZ1bmN0aW9uIG9jKGEsYil7YS5jb250ZXh0Ll9jdXJyZW50VmFsdWU9YS5wYXJlbnRWYWx1ZTthPWEucGFyZW50O2lmKG51bGw9PT1hKXRocm93IEVycm9yKGsoNDAyKSk7YS5kZXB0aD09PWIuZGVwdGg/UChhLGIpOm9jKGEsYil9ZnVuY3Rpb24gcGMoYSxiKXt2YXIgYz1iLnBhcmVudDtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihrKDQwMikpO2EuZGVwdGg9PT1jLmRlcHRoP1AoYSxjKTpwYyhhLGMpO2IuY29udGV4dC5fY3VycmVudFZhbHVlPWIudmFsdWV9ZnVuY3Rpb24gUShhKXt2YXIgYj1PO2IhPT1hJiYobnVsbD09PWI/bmMoYSk6bnVsbD09PWE/bWMoYik6Yi5kZXB0aD09PWEuZGVwdGg/UChiLGEpOmIuZGVwdGg+YS5kZXB0aD9vYyhiLGEpOnBjKGIsYSksTz1hKX1cbnZhciBxYz17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbHM7bnVsbCE9PWEucXVldWUmJmEucXVldWUucHVzaChiKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbHM7YS5yZXBsYWNlPSEwO2EucXVldWU9W2JdfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9fTtcbmZ1bmN0aW9uIHJjKGEsYixjLGQpe3ZhciBmPXZvaWQgMCE9PWEuc3RhdGU/YS5zdGF0ZTpudWxsO2EudXBkYXRlcj1xYzthLnByb3BzPWM7YS5zdGF0ZT1mO3ZhciBlPXtxdWV1ZTpbXSxyZXBsYWNlOiExfTthLl9yZWFjdEludGVybmFscz1lO3ZhciBnPWIuY29udGV4dFR5cGU7YS5jb250ZXh0PVwib2JqZWN0XCI9PT10eXBlb2YgZyYmbnVsbCE9PWc/Zy5fY3VycmVudFZhbHVlOmQ7Zz1iLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZyYmKGc9ZyhjLGYpLGY9bnVsbD09PWd8fHZvaWQgMD09PWc/ZjpOKHt9LGYsZyksYS5zdGF0ZT1mKTtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudHx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGEuY29tcG9uZW50V2lsbE1vdW50KSlpZihiPVxuYS5zdGF0ZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnQmJmEuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWEuc3RhdGUmJnFjLmVucXVldWVSZXBsYWNlU3RhdGUoYSxhLnN0YXRlLG51bGwpLG51bGwhPT1lLnF1ZXVlJiYwPGUucXVldWUubGVuZ3RoKWlmKGI9ZS5xdWV1ZSxnPWUucmVwbGFjZSxlLnF1ZXVlPW51bGwsZS5yZXBsYWNlPSExLGcmJjE9PT1iLmxlbmd0aClhLnN0YXRlPWJbMF07ZWxzZXtlPWc/YlswXTphLnN0YXRlO2Y9ITA7Zm9yKGc9Zz8xOjA7ZzxiLmxlbmd0aDtnKyspe3ZhciBoPWJbZ107aD1cImZ1bmN0aW9uXCI9PT10eXBlb2YgaD9oLmNhbGwoYSxlLGMsZCk6aDtudWxsIT1oJiYoZj8oZj0hMSxlPU4oe30sZSxoKSk6TihlLGgpKX1hLnN0YXRlPWV9ZWxzZSBlLnF1ZXVlPW51bGx9XG52YXIgc2M9e2lkOjEsb3ZlcmZsb3c6XCJcIn07ZnVuY3Rpb24gdGMoYSxiLGMpe3ZhciBkPWEuaWQ7YT1hLm92ZXJmbG93O3ZhciBmPTMyLXVjKGQpLTE7ZCY9figxPDxmKTtjKz0xO3ZhciBlPTMyLXVjKGIpK2Y7aWYoMzA8ZSl7dmFyIGc9Zi1mJTU7ZT0oZCYoMTw8ZyktMSkudG9TdHJpbmcoMzIpO2Q+Pj1nO2YtPWc7cmV0dXJue2lkOjE8PDMyLXVjKGIpK2Z8Yzw8ZnxkLG92ZXJmbG93OmUrYX19cmV0dXJue2lkOjE8PGV8Yzw8ZnxkLG92ZXJmbG93OmF9fXZhciB1Yz1NYXRoLmNsejMyP01hdGguY2x6MzI6dmMsd2M9TWF0aC5sb2cseGM9TWF0aC5MTjI7ZnVuY3Rpb24gdmMoYSl7YT4+Pj0wO3JldHVybiAwPT09YT8zMjozMS0od2MoYSkveGN8MCl8MH1mdW5jdGlvbiB5YyhhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9XG52YXIgemM9XCJmdW5jdGlvblwiPT09dHlwZW9mIE9iamVjdC5pcz9PYmplY3QuaXM6eWMsUj1udWxsLEFjPW51bGwsQmM9bnVsbCxTPW51bGwsVD0hMSxDYz0hMSxVPTAsVj1udWxsLERjPTA7ZnVuY3Rpb24gVygpe2lmKG51bGw9PT1SKXRocm93IEVycm9yKGsoMzIxKSk7cmV0dXJuIFJ9ZnVuY3Rpb24gRWMoKXtpZigwPERjKXRocm93IEVycm9yKGsoMzEyKSk7cmV0dXJue21lbW9pemVkU3RhdGU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH19ZnVuY3Rpb24gRmMoKXtudWxsPT09Uz9udWxsPT09QmM/KFQ9ITEsQmM9Uz1FYygpKTooVD0hMCxTPUJjKTpudWxsPT09Uy5uZXh0PyhUPSExLFM9Uy5uZXh0PUVjKCkpOihUPSEwLFM9Uy5uZXh0KTtyZXR1cm4gU31mdW5jdGlvbiBHYygpe0FjPVI9bnVsbDtDYz0hMTtCYz1udWxsO0RjPTA7Uz1WPW51bGx9ZnVuY3Rpb24gSGMoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiBJYyhhLGIsYyl7Uj1XKCk7Uz1GYygpO2lmKFQpe3ZhciBkPVMucXVldWU7Yj1kLmRpc3BhdGNoO2lmKG51bGwhPT1WJiYoYz1WLmdldChkKSx2b2lkIDAhPT1jKSl7Vi5kZWxldGUoZCk7ZD1TLm1lbW9pemVkU3RhdGU7ZG8gZD1hKGQsYy5hY3Rpb24pLGM9Yy5uZXh0O3doaWxlKG51bGwhPT1jKTtTLm1lbW9pemVkU3RhdGU9ZDtyZXR1cm5bZCxiXX1yZXR1cm5bUy5tZW1vaXplZFN0YXRlLGJdfWE9YT09PUhjP1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoKTpiOnZvaWQgMCE9PWM/YyhiKTpiO1MubWVtb2l6ZWRTdGF0ZT1hO2E9Uy5xdWV1ZT17bGFzdDpudWxsLGRpc3BhdGNoOm51bGx9O2E9YS5kaXNwYXRjaD1KYy5iaW5kKG51bGwsUixhKTtyZXR1cm5bUy5tZW1vaXplZFN0YXRlLGFdfVxuZnVuY3Rpb24gS2MoYSxiKXtSPVcoKTtTPUZjKCk7Yj12b2lkIDA9PT1iP251bGw6YjtpZihudWxsIT09Uyl7dmFyIGM9Uy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jJiZudWxsIT09Yil7dmFyIGQ9Y1sxXTthOmlmKG51bGw9PT1kKWQ9ITE7ZWxzZXtmb3IodmFyIGY9MDtmPGQubGVuZ3RoJiZmPGIubGVuZ3RoO2YrKylpZighemMoYltmXSxkW2ZdKSl7ZD0hMTticmVhayBhfWQ9ITB9aWYoZClyZXR1cm4gY1swXX19YT1hKCk7Uy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfWZ1bmN0aW9uIEpjKGEsYixjKXtpZigyNTw9RGMpdGhyb3cgRXJyb3IoaygzMDEpKTtpZihhPT09UilpZihDYz0hMCxhPXthY3Rpb246YyxuZXh0Om51bGx9LG51bGw9PT1WJiYoVj1uZXcgTWFwKSxjPVYuZ2V0KGIpLHZvaWQgMD09PWMpVi5zZXQoYixhKTtlbHNle2ZvcihiPWM7bnVsbCE9PWIubmV4dDspYj1iLm5leHQ7Yi5uZXh0PWF9fVxuZnVuY3Rpb24gTGMoKXt0aHJvdyBFcnJvcihrKDM5NCkpO31mdW5jdGlvbiBNYygpe31cbnZhciBPYz17cmVhZENvbnRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX2N1cnJlbnRWYWx1ZX0sdXNlQ29udGV4dDpmdW5jdGlvbihhKXtXKCk7cmV0dXJuIGEuX2N1cnJlbnRWYWx1ZX0sdXNlTWVtbzpLYyx1c2VSZWR1Y2VyOkljLHVzZVJlZjpmdW5jdGlvbihhKXtSPVcoKTtTPUZjKCk7dmFyIGI9Uy5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsPT09Yj8oYT17Y3VycmVudDphfSxTLm1lbW9pemVkU3RhdGU9YSk6Yn0sdXNlU3RhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIEljKEhjLGEpfSx1c2VJbnNlcnRpb25FZmZlY3Q6TWMsdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKCl7fSx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe3JldHVybiBLYyhmdW5jdGlvbigpe3JldHVybiBhfSxiKX0sdXNlSW1wZXJhdGl2ZUhhbmRsZTpNYyx1c2VFZmZlY3Q6TWMsdXNlRGVidWdWYWx1ZTpNYyx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe1coKTtyZXR1cm4gYX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe1coKTtcbnJldHVyblshMSxMY119LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGE9QWMudHJlZUNvbnRleHQ7dmFyIGI9YS5vdmVyZmxvdzthPWEuaWQ7YT0oYSZ+KDE8PDMyLXVjKGEpLTEpKS50b1N0cmluZygzMikrYjt2YXIgYz1OYztpZihudWxsPT09Yyl0aHJvdyBFcnJvcihrKDQwNCkpO2I9VSsrO2E9XCI6XCIrYy5pZFByZWZpeCtcIlJcIithOzA8YiYmKGErPVwiSFwiK2IudG9TdHJpbmcoMzIpKTtyZXR1cm4gYStcIjpcIn0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbihhLGIpe1coKTtyZXR1cm4gYihhLl9zb3VyY2UpfSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihhLGIsYyl7aWYodm9pZCAwPT09Yyl0aHJvdyBFcnJvcihrKDQwNykpO3JldHVybiBjKCl9fSxOYz1udWxsLFBjPWFhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudERpc3BhdGNoZXI7ZnVuY3Rpb24gUWMoYSl7Y29uc29sZS5lcnJvcihhKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIFgoKXt9XG5mdW5jdGlvbiBSYyhhLGIsYyxkLGYsZSxnLGgsbSl7dmFyIHE9W10scj1uZXcgU2V0O2I9e2Rlc3RpbmF0aW9uOm51bGwscmVzcG9uc2VTdGF0ZTpiLHByb2dyZXNzaXZlQ2h1bmtTaXplOnZvaWQgMD09PWQ/MTI4MDA6ZCxzdGF0dXM6MCxmYXRhbEVycm9yOm51bGwsbmV4dFNlZ21lbnRJZDowLGFsbFBlbmRpbmdUYXNrczowLHBlbmRpbmdSb290VGFza3M6MCxjb21wbGV0ZWRSb290U2VnbWVudDpudWxsLGFib3J0YWJsZVRhc2tzOnIscGluZ2VkVGFza3M6cSxjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXM6W10sY29tcGxldGVkQm91bmRhcmllczpbXSxwYXJ0aWFsQm91bmRhcmllczpbXSxvbkVycm9yOnZvaWQgMD09PWY/UWM6ZixvbkFsbFJlYWR5OnZvaWQgMD09PWU/WDplLG9uU2hlbGxSZWFkeTp2b2lkIDA9PT1nP1g6ZyxvblNoZWxsRXJyb3I6dm9pZCAwPT09aD9YOmgsb25GYXRhbEVycm9yOnZvaWQgMD09PW0/WDptfTtjPVNjKGIsMCxudWxsLGMsITEsITEpO2MucGFyZW50Rmx1c2hlZD1cbiEwO2E9VGMoYixhLG51bGwsYyxyLGtjLG51bGwsc2MpO3EucHVzaChhKTtyZXR1cm4gYn1mdW5jdGlvbiBUYyhhLGIsYyxkLGYsZSxnLGgpe2EuYWxsUGVuZGluZ1Rhc2tzKys7bnVsbD09PWM/YS5wZW5kaW5nUm9vdFRhc2tzKys6Yy5wZW5kaW5nVGFza3MrKzt2YXIgbT17bm9kZTpiLHBpbmc6ZnVuY3Rpb24oKXt2YXIgYj1hLnBpbmdlZFRhc2tzO2IucHVzaChtKTsxPT09Yi5sZW5ndGgmJlVjKGEpfSxibG9ja2VkQm91bmRhcnk6YyxibG9ja2VkU2VnbWVudDpkLGFib3J0U2V0OmYsbGVnYWN5Q29udGV4dDplLGNvbnRleHQ6Zyx0cmVlQ29udGV4dDpofTtmLmFkZChtKTtyZXR1cm4gbX1mdW5jdGlvbiBTYyhhLGIsYyxkLGYsZSl7cmV0dXJue3N0YXR1czowLGlkOi0xLGluZGV4OmIscGFyZW50Rmx1c2hlZDohMSxjaHVua3M6W10sY2hpbGRyZW46W10sZm9ybWF0Q29udGV4dDpkLGJvdW5kYXJ5OmMsbGFzdFB1c2hlZFRleHQ6Zix0ZXh0RW1iZWRkZWQ6ZX19XG5mdW5jdGlvbiBZKGEsYil7YT1hLm9uRXJyb3IoYik7aWYobnVsbCE9YSYmXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKCdvbkVycm9yIHJldHVybmVkIHNvbWV0aGluZyB3aXRoIGEgdHlwZSBvdGhlciB0aGFuIFwic3RyaW5nXCIuIG9uRXJyb3Igc2hvdWxkIHJldHVybiBhIHN0cmluZyBhbmQgbWF5IHJldHVybiBudWxsIG9yIHVuZGVmaW5lZCBidXQgbXVzdCBub3QgcmV0dXJuIGFueXRoaW5nIGVsc2UuIEl0IHJlY2VpdmVkIHNvbWV0aGluZyBvZiB0eXBlIFwiJyt0eXBlb2YgYSsnXCIgaW5zdGVhZCcpO3JldHVybiBhfWZ1bmN0aW9uIFZjKGEsYil7dmFyIGM9YS5vblNoZWxsRXJyb3I7YyhiKTtjPWEub25GYXRhbEVycm9yO2MoYik7bnVsbCE9PWEuZGVzdGluYXRpb24/KGEuc3RhdHVzPTIsZGEoYS5kZXN0aW5hdGlvbixiKSk6KGEuc3RhdHVzPTEsYS5mYXRhbEVycm9yPWIpfVxuZnVuY3Rpb24gV2MoYSxiLGMsZCxmKXtSPXt9O0FjPWI7VT0wO2ZvcihhPWMoZCxmKTtDYzspQ2M9ITEsVT0wLERjKz0xLFM9bnVsbCxhPWMoZCxmKTtHYygpO3JldHVybiBhfWZ1bmN0aW9uIFhjKGEsYixjLGQpe3ZhciBmPWMucmVuZGVyKCksZT1kLmNoaWxkQ29udGV4dFR5cGVzO2lmKG51bGwhPT1lJiZ2b2lkIDAhPT1lKXt2YXIgZz1iLmxlZ2FjeUNvbnRleHQ7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGMuZ2V0Q2hpbGRDb250ZXh0KWQ9ZztlbHNle2M9Yy5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIGggaW4gYylpZighKGggaW4gZSkpdGhyb3cgRXJyb3IoaygxMDgsamMoZCl8fFwiVW5rbm93blwiLGgpKTtkPU4oe30sZyxjKX1iLmxlZ2FjeUNvbnRleHQ9ZDtaKGEsYixmKTtiLmxlZ2FjeUNvbnRleHQ9Z31lbHNlIFooYSxiLGYpfVxuZnVuY3Rpb24gWWMoYSxiKXtpZihhJiZhLmRlZmF1bHRQcm9wcyl7Yj1OKHt9LGIpO2E9YS5kZWZhdWx0UHJvcHM7Zm9yKHZhciBjIGluIGEpdm9pZCAwPT09YltjXSYmKGJbY109YVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGJ9XG5mdW5jdGlvbiBaYyhhLGIsYyxkLGYpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBjKWlmKGMucHJvdG90eXBlJiZjLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KXtmPWxjKGMsYi5sZWdhY3lDb250ZXh0KTt2YXIgZT1jLmNvbnRleHRUeXBlO2U9bmV3IGMoZCxcIm9iamVjdFwiPT09dHlwZW9mIGUmJm51bGwhPT1lP2UuX2N1cnJlbnRWYWx1ZTpmKTtyYyhlLGMsZCxmKTtYYyhhLGIsZSxjKX1lbHNle2U9bGMoYyxiLmxlZ2FjeUNvbnRleHQpO2Y9V2MoYSxiLGMsZCxlKTt2YXIgZz0wIT09VTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5yZW5kZXImJnZvaWQgMD09PWYuJCR0eXBlb2YpcmMoZixjLGQsZSksWGMoYSxiLGYsYyk7ZWxzZSBpZihnKXtkPWIudHJlZUNvbnRleHQ7Yi50cmVlQ29udGV4dD10YyhkLDEsMCk7dHJ5e1ooYSxiLGYpfWZpbmFsbHl7Yi50cmVlQ29udGV4dD1kfX1lbHNlIFooYSxiLGYpfWVsc2UgaWYoXCJzdHJpbmdcIj09PVxudHlwZW9mIGMpe2Y9Yi5ibG9ja2VkU2VnbWVudDtlPVNhKGYuY2h1bmtzLGMsZCxhLnJlc3BvbnNlU3RhdGUsZi5mb3JtYXRDb250ZXh0KTtmLmxhc3RQdXNoZWRUZXh0PSExO2c9Zi5mb3JtYXRDb250ZXh0O2YuZm9ybWF0Q29udGV4dD1CYShnLGMsZCk7JGMoYSxiLGUpO2YuZm9ybWF0Q29udGV4dD1nO3N3aXRjaChjKXtjYXNlIFwiYXJlYVwiOmNhc2UgXCJiYXNlXCI6Y2FzZSBcImJyXCI6Y2FzZSBcImNvbFwiOmNhc2UgXCJlbWJlZFwiOmNhc2UgXCJoclwiOmNhc2UgXCJpbWdcIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwia2V5Z2VuXCI6Y2FzZSBcImxpbmtcIjpjYXNlIFwibWV0YVwiOmNhc2UgXCJwYXJhbVwiOmNhc2UgXCJzb3VyY2VcIjpjYXNlIFwidHJhY2tcIjpjYXNlIFwid2JyXCI6YnJlYWs7ZGVmYXVsdDpmLmNodW5rcy5wdXNoKFRhLHUoYyksVWEpfWYubGFzdFB1c2hlZFRleHQ9ITF9ZWxzZXtzd2l0Y2goYyl7Y2FzZSBnYzpjYXNlIGZjOmNhc2UgV2I6Y2FzZSBYYjpjYXNlIFZiOlooYSxiLGQuY2hpbGRyZW4pO3JldHVybjtcbmNhc2UgYmM6WihhLGIsZC5jaGlsZHJlbik7cmV0dXJuO2Nhc2UgZWM6dGhyb3cgRXJyb3IoaygzNDMpKTtjYXNlIGFjOmE6e2M9Yi5ibG9ja2VkQm91bmRhcnk7Zj1iLmJsb2NrZWRTZWdtZW50O2U9ZC5mYWxsYmFjaztkPWQuY2hpbGRyZW47Zz1uZXcgU2V0O3ZhciBoPXtpZDpudWxsLHJvb3RTZWdtZW50SUQ6LTEscGFyZW50Rmx1c2hlZDohMSxwZW5kaW5nVGFza3M6MCxmb3JjZUNsaWVudFJlbmRlcjohMSxjb21wbGV0ZWRTZWdtZW50czpbXSxieXRlU2l6ZTowLGZhbGxiYWNrQWJvcnRhYmxlVGFza3M6ZyxlcnJvckRpZ2VzdDpudWxsfSxtPVNjKGEsZi5jaHVua3MubGVuZ3RoLGgsZi5mb3JtYXRDb250ZXh0LCExLCExKTtmLmNoaWxkcmVuLnB1c2gobSk7Zi5sYXN0UHVzaGVkVGV4dD0hMTt2YXIgcT1TYyhhLDAsbnVsbCxmLmZvcm1hdENvbnRleHQsITEsITEpO3EucGFyZW50Rmx1c2hlZD0hMDtiLmJsb2NrZWRCb3VuZGFyeT1oO2IuYmxvY2tlZFNlZ21lbnQ9cTt0cnl7aWYoJGMoYSxcbmIsZCkscS5sYXN0UHVzaGVkVGV4dCYmcS50ZXh0RW1iZWRkZWQmJnEuY2h1bmtzLnB1c2goQ2EpLHEuc3RhdHVzPTEsYWQoaCxxKSwwPT09aC5wZW5kaW5nVGFza3MpYnJlYWsgYX1jYXRjaChyKXtxLnN0YXR1cz00LGguZm9yY2VDbGllbnRSZW5kZXI9ITAsaC5lcnJvckRpZ2VzdD1ZKGEscil9ZmluYWxseXtiLmJsb2NrZWRCb3VuZGFyeT1jLGIuYmxvY2tlZFNlZ21lbnQ9Zn1iPVRjKGEsZSxjLG0sZyxiLmxlZ2FjeUNvbnRleHQsYi5jb250ZXh0LGIudHJlZUNvbnRleHQpO2EucGluZ2VkVGFza3MucHVzaChiKX1yZXR1cm59aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yylzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSAkYjpkPVdjKGEsYixjLnJlbmRlcixkLGYpO2lmKDAhPT1VKXtjPWIudHJlZUNvbnRleHQ7Yi50cmVlQ29udGV4dD10YyhjLDEsMCk7dHJ5e1ooYSxiLGQpfWZpbmFsbHl7Yi50cmVlQ29udGV4dD1jfX1lbHNlIFooYSxiLGQpO3JldHVybjtjYXNlIGNjOmM9XG5jLnR5cGU7ZD1ZYyhjLGQpO1pjKGEsYixjLGQsZik7cmV0dXJuO2Nhc2UgWWI6Zj1kLmNoaWxkcmVuO2M9Yy5fY29udGV4dDtkPWQudmFsdWU7ZT1jLl9jdXJyZW50VmFsdWU7Yy5fY3VycmVudFZhbHVlPWQ7Zz1PO089ZD17cGFyZW50OmcsZGVwdGg6bnVsbD09PWc/MDpnLmRlcHRoKzEsY29udGV4dDpjLHBhcmVudFZhbHVlOmUsdmFsdWU6ZH07Yi5jb250ZXh0PWQ7WihhLGIsZik7YT1PO2lmKG51bGw9PT1hKXRocm93IEVycm9yKGsoNDAzKSk7ZD1hLnBhcmVudFZhbHVlO2EuY29udGV4dC5fY3VycmVudFZhbHVlPWQ9PT1oYz9hLmNvbnRleHQuX2RlZmF1bHRWYWx1ZTpkO2E9Tz1hLnBhcmVudDtiLmNvbnRleHQ9YTtyZXR1cm47Y2FzZSBaYjpkPWQuY2hpbGRyZW47ZD1kKGMuX2N1cnJlbnRWYWx1ZSk7WihhLGIsZCk7cmV0dXJuO2Nhc2UgZGM6Zj1jLl9pbml0O2M9ZihjLl9wYXlsb2FkKTtkPVljKGMsZCk7WmMoYSxiLGMsZCx2b2lkIDApO3JldHVybn10aHJvdyBFcnJvcihrKDEzMCxcbm51bGw9PWM/Yzp0eXBlb2YgYyxcIlwiKSk7fX1cbmZ1bmN0aW9uIFooYSxiLGMpe2Iubm9kZT1jO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWMpe3N3aXRjaChjLiQkdHlwZW9mKXtjYXNlIFRiOlpjKGEsYixjLnR5cGUsYy5wcm9wcyxjLnJlZik7cmV0dXJuO2Nhc2UgVWI6dGhyb3cgRXJyb3IoaygyNTcpKTtjYXNlIGRjOnZhciBkPWMuX2luaXQ7Yz1kKGMuX3BheWxvYWQpO1ooYSxiLGMpO3JldHVybn1pZihyYShjKSl7YmQoYSxiLGMpO3JldHVybn1udWxsPT09Y3x8XCJvYmplY3RcIiE9PXR5cGVvZiBjP2Q9bnVsbDooZD1pYyYmY1tpY118fGNbXCJAQGl0ZXJhdG9yXCJdLGQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIGQ/ZDpudWxsKTtpZihkJiYoZD1kLmNhbGwoYykpKXtjPWQubmV4dCgpO2lmKCFjLmRvbmUpe3ZhciBmPVtdO2RvIGYucHVzaChjLnZhbHVlKSxjPWQubmV4dCgpO3doaWxlKCFjLmRvbmUpO2JkKGEsYixmKX1yZXR1cm59YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYyk7dGhyb3cgRXJyb3IoaygzMSxcIltvYmplY3QgT2JqZWN0XVwiPT09XG5hP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYykuam9pbihcIiwgXCIpK1wifVwiOmEpKTt9XCJzdHJpbmdcIj09PXR5cGVvZiBjPyhkPWIuYmxvY2tlZFNlZ21lbnQsZC5sYXN0UHVzaGVkVGV4dD1EYShiLmJsb2NrZWRTZWdtZW50LmNodW5rcyxjLGEucmVzcG9uc2VTdGF0ZSxkLmxhc3RQdXNoZWRUZXh0KSk6XCJudW1iZXJcIj09PXR5cGVvZiBjJiYoZD1iLmJsb2NrZWRTZWdtZW50LGQubGFzdFB1c2hlZFRleHQ9RGEoYi5ibG9ja2VkU2VnbWVudC5jaHVua3MsXCJcIitjLGEucmVzcG9uc2VTdGF0ZSxkLmxhc3RQdXNoZWRUZXh0KSl9ZnVuY3Rpb24gYmQoYSxiLGMpe2Zvcih2YXIgZD1jLmxlbmd0aCxmPTA7ZjxkO2YrKyl7dmFyIGU9Yi50cmVlQ29udGV4dDtiLnRyZWVDb250ZXh0PXRjKGUsZCxmKTt0cnl7JGMoYSxiLGNbZl0pfWZpbmFsbHl7Yi50cmVlQ29udGV4dD1lfX19XG5mdW5jdGlvbiAkYyhhLGIsYyl7dmFyIGQ9Yi5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0LGY9Yi5sZWdhY3lDb250ZXh0LGU9Yi5jb250ZXh0O3RyeXtyZXR1cm4gWihhLGIsYyl9Y2F0Y2gobSl7aWYoR2MoKSxcIm9iamVjdFwiPT09dHlwZW9mIG0mJm51bGwhPT1tJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbS50aGVuKXtjPW07dmFyIGc9Yi5ibG9ja2VkU2VnbWVudCxoPVNjKGEsZy5jaHVua3MubGVuZ3RoLG51bGwsZy5mb3JtYXRDb250ZXh0LGcubGFzdFB1c2hlZFRleHQsITApO2cuY2hpbGRyZW4ucHVzaChoKTtnLmxhc3RQdXNoZWRUZXh0PSExO2E9VGMoYSxiLm5vZGUsYi5ibG9ja2VkQm91bmRhcnksaCxiLmFib3J0U2V0LGIubGVnYWN5Q29udGV4dCxiLmNvbnRleHQsYi50cmVlQ29udGV4dCkucGluZztjLnRoZW4oYSxhKTtiLmJsb2NrZWRTZWdtZW50LmZvcm1hdENvbnRleHQ9ZDtiLmxlZ2FjeUNvbnRleHQ9ZjtiLmNvbnRleHQ9ZTtRKGUpfWVsc2UgdGhyb3cgYi5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0PVxuZCxiLmxlZ2FjeUNvbnRleHQ9ZixiLmNvbnRleHQ9ZSxRKGUpLG07fX1mdW5jdGlvbiBjZChhKXt2YXIgYj1hLmJsb2NrZWRCb3VuZGFyeTthPWEuYmxvY2tlZFNlZ21lbnQ7YS5zdGF0dXM9MztkZCh0aGlzLGIsYSl9XG5mdW5jdGlvbiBlZChhLGIsYyl7dmFyIGQ9YS5ibG9ja2VkQm91bmRhcnk7YS5ibG9ja2VkU2VnbWVudC5zdGF0dXM9MztudWxsPT09ZD8oYi5hbGxQZW5kaW5nVGFza3MtLSwyIT09Yi5zdGF0dXMmJihiLnN0YXR1cz0yLG51bGwhPT1iLmRlc3RpbmF0aW9uJiZiLmRlc3RpbmF0aW9uLmNsb3NlKCkpKTooZC5wZW5kaW5nVGFza3MtLSxkLmZvcmNlQ2xpZW50UmVuZGVyfHwoZC5mb3JjZUNsaWVudFJlbmRlcj0hMCxhPXZvaWQgMD09PWM/RXJyb3Ioayg0MzIpKTpjLGQuZXJyb3JEaWdlc3Q9Yi5vbkVycm9yKGEpLGQucGFyZW50Rmx1c2hlZCYmYi5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChkKSksZC5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGVkKGEsYixjKX0pLGQuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpLGIuYWxsUGVuZGluZ1Rhc2tzLS0sMD09PWIuYWxsUGVuZGluZ1Rhc2tzJiYoZD1iLm9uQWxsUmVhZHksZCgpKSl9XG5mdW5jdGlvbiBhZChhLGIpe2lmKDA9PT1iLmNodW5rcy5sZW5ndGgmJjE9PT1iLmNoaWxkcmVuLmxlbmd0aCYmbnVsbD09PWIuY2hpbGRyZW5bMF0uYm91bmRhcnkpe3ZhciBjPWIuY2hpbGRyZW5bMF07Yy5pZD1iLmlkO2MucGFyZW50Rmx1c2hlZD0hMDsxPT09Yy5zdGF0dXMmJmFkKGEsYyl9ZWxzZSBhLmNvbXBsZXRlZFNlZ21lbnRzLnB1c2goYil9XG5mdW5jdGlvbiBkZChhLGIsYyl7aWYobnVsbD09PWIpe2lmKGMucGFyZW50Rmx1c2hlZCl7aWYobnVsbCE9PWEuY29tcGxldGVkUm9vdFNlZ21lbnQpdGhyb3cgRXJyb3IoaygzODkpKTthLmNvbXBsZXRlZFJvb3RTZWdtZW50PWN9YS5wZW5kaW5nUm9vdFRhc2tzLS07MD09PWEucGVuZGluZ1Jvb3RUYXNrcyYmKGEub25TaGVsbEVycm9yPVgsYj1hLm9uU2hlbGxSZWFkeSxiKCkpfWVsc2UgYi5wZW5kaW5nVGFza3MtLSxiLmZvcmNlQ2xpZW50UmVuZGVyfHwoMD09PWIucGVuZGluZ1Rhc2tzPyhjLnBhcmVudEZsdXNoZWQmJjE9PT1jLnN0YXR1cyYmYWQoYixjKSxiLnBhcmVudEZsdXNoZWQmJmEuY29tcGxldGVkQm91bmRhcmllcy5wdXNoKGIpLGIuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5mb3JFYWNoKGNkLGEpLGIuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpKTpjLnBhcmVudEZsdXNoZWQmJjE9PT1jLnN0YXR1cyYmKGFkKGIsYyksMT09PWIuY29tcGxldGVkU2VnbWVudHMubGVuZ3RoJiZcbmIucGFyZW50Rmx1c2hlZCYmYS5wYXJ0aWFsQm91bmRhcmllcy5wdXNoKGIpKSk7YS5hbGxQZW5kaW5nVGFza3MtLTswPT09YS5hbGxQZW5kaW5nVGFza3MmJihhPWEub25BbGxSZWFkeSxhKCkpfVxuZnVuY3Rpb24gVWMoYSl7aWYoMiE9PWEuc3RhdHVzKXt2YXIgYj1PLGM9UGMuY3VycmVudDtQYy5jdXJyZW50PU9jO3ZhciBkPU5jO05jPWEucmVzcG9uc2VTdGF0ZTt0cnl7dmFyIGY9YS5waW5nZWRUYXNrcyxlO2ZvcihlPTA7ZTxmLmxlbmd0aDtlKyspe3ZhciBnPWZbZV07dmFyIGg9YSxtPWcuYmxvY2tlZFNlZ21lbnQ7aWYoMD09PW0uc3RhdHVzKXtRKGcuY29udGV4dCk7dHJ5e1ooaCxnLGcubm9kZSksbS5sYXN0UHVzaGVkVGV4dCYmbS50ZXh0RW1iZWRkZWQmJm0uY2h1bmtzLnB1c2goQ2EpLGcuYWJvcnRTZXQuZGVsZXRlKGcpLG0uc3RhdHVzPTEsZGQoaCxnLmJsb2NrZWRCb3VuZGFyeSxtKX1jYXRjaChHKXtpZihHYygpLFwib2JqZWN0XCI9PT10eXBlb2YgRyYmbnVsbCE9PUcmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBHLnRoZW4pe3ZhciBxPWcucGluZztHLnRoZW4ocSxxKX1lbHNle2cuYWJvcnRTZXQuZGVsZXRlKGcpO20uc3RhdHVzPTQ7dmFyIHI9Zy5ibG9ja2VkQm91bmRhcnksXG52PUcsQT1ZKGgsdik7bnVsbD09PXI/VmMoaCx2KTooci5wZW5kaW5nVGFza3MtLSxyLmZvcmNlQ2xpZW50UmVuZGVyfHwoci5mb3JjZUNsaWVudFJlbmRlcj0hMCxyLmVycm9yRGlnZXN0PUEsci5wYXJlbnRGbHVzaGVkJiZoLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKHIpKSk7aC5hbGxQZW5kaW5nVGFza3MtLTtpZigwPT09aC5hbGxQZW5kaW5nVGFza3Mpe3ZhciBGPWgub25BbGxSZWFkeTtGKCl9fX1maW5hbGx5e319fWYuc3BsaWNlKDAsZSk7bnVsbCE9PWEuZGVzdGluYXRpb24mJmZkKGEsYS5kZXN0aW5hdGlvbil9Y2F0Y2goRyl7WShhLEcpLFZjKGEsRyl9ZmluYWxseXtOYz1kLFBjLmN1cnJlbnQ9YyxjPT09T2MmJlEoYil9fX1cbmZ1bmN0aW9uIGdkKGEsYixjKXtjLnBhcmVudEZsdXNoZWQ9ITA7c3dpdGNoKGMuc3RhdHVzKXtjYXNlIDA6dmFyIGQ9Yy5pZD1hLm5leHRTZWdtZW50SWQrKztjLmxhc3RQdXNoZWRUZXh0PSExO2MudGV4dEVtYmVkZGVkPSExO2E9YS5yZXNwb25zZVN0YXRlO3AoYixWYSk7cChiLGEucGxhY2Vob2xkZXJQcmVmaXgpO2E9dShkLnRvU3RyaW5nKDE2KSk7cChiLGEpO3JldHVybiB0KGIsV2EpO2Nhc2UgMTpjLnN0YXR1cz0yO3ZhciBmPSEwO2Q9Yy5jaHVua3M7dmFyIGU9MDtjPWMuY2hpbGRyZW47Zm9yKHZhciBnPTA7ZzxjLmxlbmd0aDtnKyspe2ZvcihmPWNbZ107ZTxmLmluZGV4O2UrKylwKGIsZFtlXSk7Zj1oZChhLGIsZil9Zm9yKDtlPGQubGVuZ3RoLTE7ZSsrKXAoYixkW2VdKTtlPGQubGVuZ3RoJiYoZj10KGIsZFtlXSkpO3JldHVybiBmO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaygzOTApKTt9fVxuZnVuY3Rpb24gaGQoYSxiLGMpe3ZhciBkPWMuYm91bmRhcnk7aWYobnVsbD09PWQpcmV0dXJuIGdkKGEsYixjKTtkLnBhcmVudEZsdXNoZWQ9ITA7aWYoZC5mb3JjZUNsaWVudFJlbmRlcilkPWQuZXJyb3JEaWdlc3QsdChiLCRhKSxwKGIsYmIpLGQmJihwKGIsZGIpLHAoYix1KEMoZCkpKSxwKGIsY2IpKSx0KGIsZWIpLGdkKGEsYixjKTtlbHNlIGlmKDA8ZC5wZW5kaW5nVGFza3Mpe2Qucm9vdFNlZ21lbnRJRD1hLm5leHRTZWdtZW50SWQrKzswPGQuY29tcGxldGVkU2VnbWVudHMubGVuZ3RoJiZhLnBhcnRpYWxCb3VuZGFyaWVzLnB1c2goZCk7dmFyIGY9YS5yZXNwb25zZVN0YXRlO3ZhciBlPWYubmV4dFN1c3BlbnNlSUQrKztmPXcoZi5ib3VuZGFyeVByZWZpeCtlLnRvU3RyaW5nKDE2KSk7ZD1kLmlkPWY7ZmIoYixhLnJlc3BvbnNlU3RhdGUsZCk7Z2QoYSxiLGMpfWVsc2UgaWYoZC5ieXRlU2l6ZT5hLnByb2dyZXNzaXZlQ2h1bmtTaXplKWQucm9vdFNlZ21lbnRJRD1hLm5leHRTZWdtZW50SWQrKyxcbmEuY29tcGxldGVkQm91bmRhcmllcy5wdXNoKGQpLGZiKGIsYS5yZXNwb25zZVN0YXRlLGQuaWQpLGdkKGEsYixjKTtlbHNle3QoYixYYSk7Yz1kLmNvbXBsZXRlZFNlZ21lbnRzO2lmKDEhPT1jLmxlbmd0aCl0aHJvdyBFcnJvcihrKDM5MSkpO2hkKGEsYixjWzBdKX1yZXR1cm4gdChiLGFiKX1mdW5jdGlvbiBpZChhLGIsYyl7QmIoYixhLnJlc3BvbnNlU3RhdGUsYy5mb3JtYXRDb250ZXh0LGMuaWQpO2hkKGEsYixjKTtyZXR1cm4gQ2IoYixjLmZvcm1hdENvbnRleHQpfVxuZnVuY3Rpb24gamQoYSxiLGMpe2Zvcih2YXIgZD1jLmNvbXBsZXRlZFNlZ21lbnRzLGY9MDtmPGQubGVuZ3RoO2YrKylrZChhLGIsYyxkW2ZdKTtkLmxlbmd0aD0wO2E9YS5yZXNwb25zZVN0YXRlO2Q9Yy5pZDtjPWMucm9vdFNlZ21lbnRJRDtwKGIsYS5zdGFydElubGluZVNjcmlwdCk7YS5zZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uP3AoYixKYik6KGEuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbj0hMCxwKGIsSWIpKTtpZihudWxsPT09ZCl0aHJvdyBFcnJvcihrKDM5NSkpO2M9dShjLnRvU3RyaW5nKDE2KSk7cChiLGQpO3AoYixLYik7cChiLGEuc2VnbWVudFByZWZpeCk7cChiLGMpO3JldHVybiB0KGIsTGIpfVxuZnVuY3Rpb24ga2QoYSxiLGMsZCl7aWYoMj09PWQuc3RhdHVzKXJldHVybiEwO3ZhciBmPWQuaWQ7aWYoLTE9PT1mKXtpZigtMT09PShkLmlkPWMucm9vdFNlZ21lbnRJRCkpdGhyb3cgRXJyb3IoaygzOTIpKTtyZXR1cm4gaWQoYSxiLGQpfWlkKGEsYixkKTthPWEucmVzcG9uc2VTdGF0ZTtwKGIsYS5zdGFydElubGluZVNjcmlwdCk7YS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb24/cChiLEViKTooYS5zZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb249ITAscChiLERiKSk7cChiLGEuc2VnbWVudFByZWZpeCk7Zj11KGYudG9TdHJpbmcoMTYpKTtwKGIsZik7cChiLEdiKTtwKGIsYS5wbGFjZWhvbGRlclByZWZpeCk7cChiLGYpO3JldHVybiB0KGIsSGIpfVxuZnVuY3Rpb24gZmQoYSxiKXtsPW5ldyBVaW50OEFycmF5KDUxMik7bj0wO3RyeXt2YXIgYz1hLmNvbXBsZXRlZFJvb3RTZWdtZW50O2lmKG51bGwhPT1jJiYwPT09YS5wZW5kaW5nUm9vdFRhc2tzKXtoZChhLGIsYyk7YS5jb21wbGV0ZWRSb290U2VnbWVudD1udWxsO3ZhciBkPWEucmVzcG9uc2VTdGF0ZS5ib290c3RyYXBDaHVua3M7Zm9yKGM9MDtjPGQubGVuZ3RoLTE7YysrKXAoYixkW2NdKTtjPGQubGVuZ3RoJiZ0KGIsZFtjXSl9dmFyIGY9YS5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMsZTtmb3IoZT0wO2U8Zi5sZW5ndGg7ZSsrKXt2YXIgZz1mW2VdO2Q9Yjt2YXIgaD1hLnJlc3BvbnNlU3RhdGUsbT1nLmlkLHE9Zy5lcnJvckRpZ2VzdCxyPWcuZXJyb3JNZXNzYWdlLHY9Zy5lcnJvckNvbXBvbmVudFN0YWNrO3AoZCxoLnN0YXJ0SW5saW5lU2NyaXB0KTtoLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj9wKGQsTmIpOihoLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbj0hMCxwKGQsXG5NYikpO2lmKG51bGw9PT1tKXRocm93IEVycm9yKGsoMzk1KSk7cChkLG0pO3AoZCxPYik7aWYocXx8cnx8dilwKGQsUWIpLHAoZCx1KFNiKHF8fFwiXCIpKSk7aWYocnx8dilwKGQsUWIpLHAoZCx1KFNiKHJ8fFwiXCIpKSk7diYmKHAoZCxRYikscChkLHUoU2IodikpKSk7aWYoIXQoZCxQYikpe2EuZGVzdGluYXRpb249bnVsbDtlKys7Zi5zcGxpY2UoMCxlKTtyZXR1cm59fWYuc3BsaWNlKDAsZSk7dmFyIEE9YS5jb21wbGV0ZWRCb3VuZGFyaWVzO2ZvcihlPTA7ZTxBLmxlbmd0aDtlKyspaWYoIWpkKGEsYixBW2VdKSl7YS5kZXN0aW5hdGlvbj1udWxsO2UrKztBLnNwbGljZSgwLGUpO3JldHVybn1BLnNwbGljZSgwLGUpO2JhKGIpO2w9bmV3IFVpbnQ4QXJyYXkoNTEyKTtuPTA7dmFyIEY9YS5wYXJ0aWFsQm91bmRhcmllcztmb3IoZT0wO2U8Ri5sZW5ndGg7ZSsrKXt2YXIgRz1GW2VdO2E6e2Y9YTtnPWI7dmFyIG1hPUcuY29tcGxldGVkU2VnbWVudHM7Zm9yKGg9MDtoPG1hLmxlbmd0aDtoKyspaWYoIWtkKGYsXG5nLEcsbWFbaF0pKXtoKys7bWEuc3BsaWNlKDAsaCk7dmFyIEZiPSExO2JyZWFrIGF9bWEuc3BsaWNlKDAsaCk7RmI9ITB9aWYoIUZiKXthLmRlc3RpbmF0aW9uPW51bGw7ZSsrO0Yuc3BsaWNlKDAsZSk7cmV0dXJufX1GLnNwbGljZSgwLGUpO3ZhciBuYT1hLmNvbXBsZXRlZEJvdW5kYXJpZXM7Zm9yKGU9MDtlPG5hLmxlbmd0aDtlKyspaWYoIWpkKGEsYixuYVtlXSkpe2EuZGVzdGluYXRpb249bnVsbDtlKys7bmEuc3BsaWNlKDAsZSk7cmV0dXJufW5hLnNwbGljZSgwLGUpfWZpbmFsbHl7YmEoYiksMD09PWEuYWxsUGVuZGluZ1Rhc2tzJiYwPT09YS5waW5nZWRUYXNrcy5sZW5ndGgmJjA9PT1hLmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5sZW5ndGgmJjA9PT1hLmNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoJiZiLmNsb3NlKCl9fVxuZnVuY3Rpb24gbGQoYSxiKXt0cnl7dmFyIGM9YS5hYm9ydGFibGVUYXNrcztjLmZvckVhY2goZnVuY3Rpb24oYyl7cmV0dXJuIGVkKGMsYSxiKX0pO2MuY2xlYXIoKTtudWxsIT09YS5kZXN0aW5hdGlvbiYmZmQoYSxhLmRlc3RpbmF0aW9uKX1jYXRjaChkKXtZKGEsZCksVmMoYSxkKX19XG5leHBvcnRzLnJlbmRlclRvUmVhZGFibGVTdHJlYW09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYyxkKXt2YXIgZixlLGc9bmV3IFByb21pc2UoZnVuY3Rpb24oYSxiKXtlPWE7Zj1ifSksaD1SYyhhLHphKGI/Yi5pZGVudGlmaWVyUHJlZml4OnZvaWQgMCxiP2Iubm9uY2U6dm9pZCAwLGI/Yi5ib290c3RyYXBTY3JpcHRDb250ZW50OnZvaWQgMCxiP2IuYm9vdHN0cmFwU2NyaXB0czp2b2lkIDAsYj9iLmJvb3RzdHJhcE1vZHVsZXM6dm9pZCAwKSxBYShiP2IubmFtZXNwYWNlVVJJOnZvaWQgMCksYj9iLnByb2dyZXNzaXZlQ2h1bmtTaXplOnZvaWQgMCxiP2Iub25FcnJvcjp2b2lkIDAsZSxmdW5jdGlvbigpe3ZhciBhPW5ldyBSZWFkYWJsZVN0cmVhbSh7dHlwZTpcImJ5dGVzXCIscHVsbDpmdW5jdGlvbihhKXtpZigxPT09aC5zdGF0dXMpaC5zdGF0dXM9MixkYShhLGguZmF0YWxFcnJvcik7ZWxzZSBpZigyIT09aC5zdGF0dXMmJm51bGw9PT1oLmRlc3RpbmF0aW9uKXtoLmRlc3RpbmF0aW9uPVxuYTt0cnl7ZmQoaCxhKX1jYXRjaChBKXtZKGgsQSksVmMoaCxBKX19fSxjYW5jZWw6ZnVuY3Rpb24oKXtsZChoKX19LHtoaWdoV2F0ZXJNYXJrOjB9KTthLmFsbFJlYWR5PWc7YyhhKX0sZnVuY3Rpb24oYSl7Zy5jYXRjaChmdW5jdGlvbigpe30pO2QoYSl9LGYpO2lmKGImJmIuc2lnbmFsKXt2YXIgbT1iLnNpZ25hbCxxPWZ1bmN0aW9uKCl7bGQoaCxtLnJlYXNvbik7bS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIixxKX07bS5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixxKX1VYyhoKX0pfTtleHBvcnRzLnZlcnNpb249XCIxOC4yLjBcIjtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4vKlxuIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVFxuKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYWE9cmVxdWlyZShcInJlYWN0XCIpLGNhPXJlcXVpcmUoXCJzY2hlZHVsZXJcIik7ZnVuY3Rpb24gcChhKXtmb3IodmFyIGI9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIithLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIithK1wiOyB2aXNpdCBcIitiK1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgZGE9bmV3IFNldCxlYT17fTtmdW5jdGlvbiBmYShhLGIpe2hhKGEsYik7aGEoYStcIkNhcHR1cmVcIixiKX1cbmZ1bmN0aW9uIGhhKGEsYil7ZWFbYV09Yjtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKWRhLmFkZChiW2FdKX1cbnZhciBpYT0hKFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudHx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksamE9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxrYT0vXls6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRF1bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0qJC8sbGE9XG57fSxtYT17fTtmdW5jdGlvbiBvYShhKXtpZihqYS5jYWxsKG1hLGEpKXJldHVybiEwO2lmKGphLmNhbGwobGEsYSkpcmV0dXJuITE7aWYoa2EudGVzdChhKSlyZXR1cm4gbWFbYV09ITA7bGFbYV09ITA7cmV0dXJuITF9ZnVuY3Rpb24gcGEoYSxiLGMsZCl7aWYobnVsbCE9PWMmJjA9PT1jLnR5cGUpcmV0dXJuITE7c3dpdGNoKHR5cGVvZiBiKXtjYXNlIFwiZnVuY3Rpb25cIjpjYXNlIFwic3ltYm9sXCI6cmV0dXJuITA7Y2FzZSBcImJvb2xlYW5cIjppZihkKXJldHVybiExO2lmKG51bGwhPT1jKXJldHVybiFjLmFjY2VwdHNCb29sZWFuczthPWEudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO3JldHVyblwiZGF0YS1cIiE9PWEmJlwiYXJpYS1cIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19XG5mdW5jdGlvbiBxYShhLGIsYyxkKXtpZihudWxsPT09Ynx8XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBifHxwYShhLGIsYyxkKSlyZXR1cm4hMDtpZihkKXJldHVybiExO2lmKG51bGwhPT1jKXN3aXRjaChjLnR5cGUpe2Nhc2UgMzpyZXR1cm4hYjtjYXNlIDQ6cmV0dXJuITE9PT1iO2Nhc2UgNTpyZXR1cm4gaXNOYU4oYik7Y2FzZSA2OnJldHVybiBpc05hTihiKXx8MT5ifXJldHVybiExfWZ1bmN0aW9uIHYoYSxiLGMsZCxlLGYsZyl7dGhpcy5hY2NlcHRzQm9vbGVhbnM9Mj09PWJ8fDM9PT1ifHw0PT09Yjt0aGlzLmF0dHJpYnV0ZU5hbWU9ZDt0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZT1lO3RoaXMubXVzdFVzZVByb3BlcnR5PWM7dGhpcy5wcm9wZXJ0eU5hbWU9YTt0aGlzLnR5cGU9Yjt0aGlzLnNhbml0aXplVVJMPWY7dGhpcy5yZW1vdmVFbXB0eVN0cmluZz1nfXZhciB6PXt9O1xuXCJjaGlsZHJlbiBkYW5nZXJvdXNseVNldElubmVySFRNTCBkZWZhdWx0VmFsdWUgZGVmYXVsdENoZWNrZWQgaW5uZXJIVE1MIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcgc3R5bGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMCwhMSxhLG51bGwsITEsITEpfSk7W1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImNsYXNzTmFtZVwiLFwiY2xhc3NcIl0sW1wiaHRtbEZvclwiLFwiZm9yXCJdLFtcImh0dHBFcXVpdlwiLFwiaHR0cC1lcXVpdlwiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO3pbYl09bmV3IHYoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMiwhMSxhLG51bGwsITEsITEpfSk7XCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlXCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7XG5bXCJjaGVja2VkXCIsXCJtdWx0aXBsZVwiLFwibXV0ZWRcIixcInNlbGVjdGVkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDMsITAsYSxudWxsLCExLCExKX0pO1tcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goZnVuY3Rpb24oYSl7elthXT1uZXcgdihhLDQsITEsYSxudWxsLCExLCExKX0pO1tcImNvbHNcIixcInJvd3NcIixcInNpemVcIixcInNwYW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNiwhMSxhLG51bGwsITEsITEpfSk7W1wicm93U3BhblwiLFwic3RhcnRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTt2YXIgcmE9L1tcXC06XShbYS16XSkvZztmdW5jdGlvbiBzYShhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfVxuXCJhY2NlbnQtaGVpZ2h0IGFsaWdubWVudC1iYXNlbGluZSBhcmFiaWMtZm9ybSBiYXNlbGluZS1zaGlmdCBjYXAtaGVpZ2h0IGNsaXAtcGF0aCBjbGlwLXJ1bGUgY29sb3ItaW50ZXJwb2xhdGlvbiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMgY29sb3ItcHJvZmlsZSBjb2xvci1yZW5kZXJpbmcgZG9taW5hbnQtYmFzZWxpbmUgZW5hYmxlLWJhY2tncm91bmQgZmlsbC1vcGFjaXR5IGZpbGwtcnVsZSBmbG9vZC1jb2xvciBmbG9vZC1vcGFjaXR5IGZvbnQtZmFtaWx5IGZvbnQtc2l6ZSBmb250LXNpemUtYWRqdXN0IGZvbnQtc3RyZXRjaCBmb250LXN0eWxlIGZvbnQtdmFyaWFudCBmb250LXdlaWdodCBnbHlwaC1uYW1lIGdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwgZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwgaG9yaXotYWR2LXggaG9yaXotb3JpZ2luLXggaW1hZ2UtcmVuZGVyaW5nIGxldHRlci1zcGFjaW5nIGxpZ2h0aW5nLWNvbG9yIG1hcmtlci1lbmQgbWFya2VyLW1pZCBtYXJrZXItc3RhcnQgb3ZlcmxpbmUtcG9zaXRpb24gb3ZlcmxpbmUtdGhpY2tuZXNzIHBhaW50LW9yZGVyIHBhbm9zZS0xIHBvaW50ZXItZXZlbnRzIHJlbmRlcmluZy1pbnRlbnQgc2hhcGUtcmVuZGVyaW5nIHN0b3AtY29sb3Igc3RvcC1vcGFjaXR5IHN0cmlrZXRocm91Z2gtcG9zaXRpb24gc3RyaWtldGhyb3VnaC10aGlja25lc3Mgc3Ryb2tlLWRhc2hhcnJheSBzdHJva2UtZGFzaG9mZnNldCBzdHJva2UtbGluZWNhcCBzdHJva2UtbGluZWpvaW4gc3Ryb2tlLW1pdGVybGltaXQgc3Ryb2tlLW9wYWNpdHkgc3Ryb2tlLXdpZHRoIHRleHQtYW5jaG9yIHRleHQtZGVjb3JhdGlvbiB0ZXh0LXJlbmRlcmluZyB1bmRlcmxpbmUtcG9zaXRpb24gdW5kZXJsaW5lLXRoaWNrbmVzcyB1bmljb2RlLWJpZGkgdW5pY29kZS1yYW5nZSB1bml0cy1wZXItZW0gdi1hbHBoYWJldGljIHYtaGFuZ2luZyB2LWlkZW9ncmFwaGljIHYtbWF0aGVtYXRpY2FsIHZlY3Rvci1lZmZlY3QgdmVydC1hZHYteSB2ZXJ0LW9yaWdpbi14IHZlcnQtb3JpZ2luLXkgd29yZC1zcGFjaW5nIHdyaXRpbmctbW9kZSB4bWxuczp4bGluayB4LWhlaWdodFwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxcbnNhKTt6W2JdPW5ldyB2KGIsMSwhMSxhLG51bGwsITEsITEpfSk7XCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsITEsITEpfSk7W1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UocmEsc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIiwhMSwhMSl9KTtbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbnoueGxpbmtIcmVmPW5ldyB2KFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCwhMSk7W1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMSwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMCwhMCl9KTtcbmZ1bmN0aW9uIHRhKGEsYixjLGQpe3ZhciBlPXouaGFzT3duUHJvcGVydHkoYik/eltiXTpudWxsO2lmKG51bGwhPT1lPzAhPT1lLnR5cGU6ZHx8ISgyPGIubGVuZ3RoKXx8XCJvXCIhPT1iWzBdJiZcIk9cIiE9PWJbMF18fFwiblwiIT09YlsxXSYmXCJOXCIhPT1iWzFdKXFhKGIsYyxlLGQpJiYoYz1udWxsKSxkfHxudWxsPT09ZT9vYShiKSYmKG51bGw9PT1jP2EucmVtb3ZlQXR0cmlidXRlKGIpOmEuc2V0QXR0cmlidXRlKGIsXCJcIitjKSk6ZS5tdXN0VXNlUHJvcGVydHk/YVtlLnByb3BlcnR5TmFtZV09bnVsbD09PWM/Mz09PWUudHlwZT8hMTpcIlwiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM/XCJcIjpcIlwiK2MsZD9hLnNldEF0dHJpYnV0ZU5TKGQsYixjKTphLnNldEF0dHJpYnV0ZShiLGMpKSl9XG52YXIgdWE9YWEuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQsdmE9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksd2E9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSx5YT1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksemE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLEFhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxCYT1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksQ2E9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksRGE9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLEVhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxGYT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxHYT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxIYT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtTeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik7U3ltYm9sLmZvcihcInJlYWN0LmRlYnVnX3RyYWNlX21vZGVcIik7XG52YXIgSWE9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QubGVnYWN5X2hpZGRlblwiKTtTeW1ib2wuZm9yKFwicmVhY3QuY2FjaGVcIik7U3ltYm9sLmZvcihcInJlYWN0LnRyYWNpbmdfbWFya2VyXCIpO3ZhciBKYT1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gS2EoYSl7aWYobnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPUphJiZhW0phXXx8YVtcIkBAaXRlcmF0b3JcIl07cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGE/YTpudWxsfXZhciBBPU9iamVjdC5hc3NpZ24sTGE7ZnVuY3Rpb24gTWEoYSl7aWYodm9pZCAwPT09TGEpdHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGMpe3ZhciBiPWMuc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7TGE9YiYmYlsxXXx8XCJcIn1yZXR1cm5cIlxcblwiK0xhK2F9dmFyIE5hPSExO1xuZnVuY3Rpb24gT2EoYSxiKXtpZighYXx8TmEpcmV0dXJuXCJcIjtOYT0hMDt2YXIgYz1FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT12b2lkIDA7dHJ5e2lmKGIpaWYoYj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsXCJwcm9wc1wiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO319KSxcIm9iamVjdFwiPT09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoYixbXSl9Y2F0Y2gobCl7dmFyIGQ9bH1SZWZsZWN0LmNvbnN0cnVjdChhLFtdLGIpfWVsc2V7dHJ5e2IuY2FsbCgpfWNhdGNoKGwpe2Q9bH1hLmNhbGwoYi5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKGwpe2Q9bH1hKCl9fWNhdGNoKGwpe2lmKGwmJmQmJlwic3RyaW5nXCI9PT10eXBlb2YgbC5zdGFjayl7Zm9yKHZhciBlPWwuc3RhY2suc3BsaXQoXCJcXG5cIiksXG5mPWQuc3RhY2suc3BsaXQoXCJcXG5cIiksZz1lLmxlbmd0aC0xLGg9Zi5sZW5ndGgtMTsxPD1nJiYwPD1oJiZlW2ddIT09ZltoXTspaC0tO2Zvcig7MTw9ZyYmMDw9aDtnLS0saC0tKWlmKGVbZ10hPT1mW2hdKXtpZigxIT09Z3x8MSE9PWgpe2RvIGlmKGctLSxoLS0sMD5ofHxlW2ddIT09ZltoXSl7dmFyIGs9XCJcXG5cIitlW2ddLnJlcGxhY2UoXCIgYXQgbmV3IFwiLFwiIGF0IFwiKTthLmRpc3BsYXlOYW1lJiZrLmluY2x1ZGVzKFwiPGFub255bW91cz5cIikmJihrPWsucmVwbGFjZShcIjxhbm9ueW1vdXM+XCIsYS5kaXNwbGF5TmFtZSkpO3JldHVybiBrfXdoaWxlKDE8PWcmJjA8PWgpfWJyZWFrfX19ZmluYWxseXtOYT0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1jfXJldHVybihhPWE/YS5kaXNwbGF5TmFtZXx8YS5uYW1lOlwiXCIpP01hKGEpOlwiXCJ9XG5mdW5jdGlvbiBQYShhKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTpyZXR1cm4gTWEoYS50eXBlKTtjYXNlIDE2OnJldHVybiBNYShcIkxhenlcIik7Y2FzZSAxMzpyZXR1cm4gTWEoXCJTdXNwZW5zZVwiKTtjYXNlIDE5OnJldHVybiBNYShcIlN1c3BlbnNlTGlzdFwiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGE9T2EoYS50eXBlLCExKSxhO2Nhc2UgMTE6cmV0dXJuIGE9T2EoYS50eXBlLnJlbmRlciwhMSksYTtjYXNlIDE6cmV0dXJuIGE9T2EoYS50eXBlLCEwKSxhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBRYShhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKXJldHVybiBhLmRpc3BsYXlOYW1lfHxhLm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhKXJldHVybiBhO3N3aXRjaChhKXtjYXNlIHlhOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIHdhOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBBYTpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSB6YTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIEVhOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIEZhOnJldHVyblwiU3VzcGVuc2VMaXN0XCJ9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIENhOnJldHVybihhLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIEJhOnJldHVybihhLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIERhOnZhciBiPWEucmVuZGVyO2E9YS5kaXNwbGF5TmFtZTthfHwoYT1iLmRpc3BsYXlOYW1lfHxcbmIubmFtZXx8XCJcIixhPVwiXCIhPT1hP1wiRm9yd2FyZFJlZihcIithK1wiKVwiOlwiRm9yd2FyZFJlZlwiKTtyZXR1cm4gYTtjYXNlIEdhOnJldHVybiBiPWEuZGlzcGxheU5hbWV8fG51bGwsbnVsbCE9PWI/YjpRYShhLnR5cGUpfHxcIk1lbW9cIjtjYXNlIEhhOmI9YS5fcGF5bG9hZDthPWEuX2luaXQ7dHJ5e3JldHVybiBRYShhKGIpKX1jYXRjaChjKXt9fXJldHVybiBudWxsfVxuZnVuY3Rpb24gUmEoYSl7dmFyIGI9YS50eXBlO3N3aXRjaChhLnRhZyl7Y2FzZSAyNDpyZXR1cm5cIkNhY2hlXCI7Y2FzZSA5OnJldHVybihiLmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuQ29uc3VtZXJcIjtjYXNlIDEwOnJldHVybihiLl9jb250ZXh0LmRpc3BsYXlOYW1lfHxcIkNvbnRleHRcIikrXCIuUHJvdmlkZXJcIjtjYXNlIDE4OnJldHVyblwiRGVoeWRyYXRlZEZyYWdtZW50XCI7Y2FzZSAxMTpyZXR1cm4gYT1iLnJlbmRlcixhPWEuZGlzcGxheU5hbWV8fGEubmFtZXx8XCJcIixiLmRpc3BsYXlOYW1lfHwoXCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO2Nhc2UgNzpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSA1OnJldHVybiBiO2Nhc2UgNDpyZXR1cm5cIlBvcnRhbFwiO2Nhc2UgMzpyZXR1cm5cIlJvb3RcIjtjYXNlIDY6cmV0dXJuXCJUZXh0XCI7Y2FzZSAxNjpyZXR1cm4gUWEoYik7Y2FzZSA4OnJldHVybiBiPT09emE/XCJTdHJpY3RNb2RlXCI6XCJNb2RlXCI7Y2FzZSAyMjpyZXR1cm5cIk9mZnNjcmVlblwiO1xuY2FzZSAxMjpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSAyMTpyZXR1cm5cIlNjb3BlXCI7Y2FzZSAxMzpyZXR1cm5cIlN1c3BlbnNlXCI7Y2FzZSAxOTpyZXR1cm5cIlN1c3BlbnNlTGlzdFwiO2Nhc2UgMjU6cmV0dXJuXCJUcmFjaW5nTWFya2VyXCI7Y2FzZSAxOmNhc2UgMDpjYXNlIDE3OmNhc2UgMjpjYXNlIDE0OmNhc2UgMTU6aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGIuZGlzcGxheU5hbWV8fGIubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGIpcmV0dXJuIGJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU2EoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwiYm9vbGVhblwiOmNhc2UgXCJudW1iZXJcIjpjYXNlIFwic3RyaW5nXCI6Y2FzZSBcInVuZGVmaW5lZFwiOnJldHVybiBhO2Nhc2UgXCJvYmplY3RcIjpyZXR1cm4gYTtkZWZhdWx0OnJldHVyblwiXCJ9fVxuZnVuY3Rpb24gVGEoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiZcImlucHV0XCI9PT1hLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1ifHxcInJhZGlvXCI9PT1iKX1cbmZ1bmN0aW9uIFVhKGEpe3ZhciBiPVRhKGEpP1wiY2hlY2tlZFwiOlwidmFsdWVcIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD1cIlwiK2FbYl07aWYoIWEuaGFzT3duUHJvcGVydHkoYikmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZ2V0JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5zZXQpe3ZhciBlPWMuZ2V0LGY9Yy5zZXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihhKXtkPVwiXCIrYTtmLmNhbGwodGhpcyxhKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtlbnVtZXJhYmxlOmMuZW51bWVyYWJsZX0pO3JldHVybntnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBkfSxzZXRWYWx1ZTpmdW5jdGlvbihhKXtkPVwiXCIrYX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YS5fdmFsdWVUcmFja2VyPVxubnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBWYShhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9VWEoYSkpfWZ1bmN0aW9uIFdhKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9XCJcIjthJiYoZD1UYShhKT9hLmNoZWNrZWQ/XCJ0cnVlXCI6XCJmYWxzZVwiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIFhhKGEpe2E9YXx8KFwidW5kZWZpbmVkXCIhPT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBhLmFjdGl2ZUVsZW1lbnR8fGEuYm9keX1jYXRjaChiKXtyZXR1cm4gYS5ib2R5fX1cbmZ1bmN0aW9uIFlhKGEsYil7dmFyIGM9Yi5jaGVja2VkO3JldHVybiBBKHt9LGIse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOnZvaWQgMCxjaGVja2VkOm51bGwhPWM/YzphLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWR9KX1mdW5jdGlvbiBaYShhLGIpe3ZhciBjPW51bGw9PWIuZGVmYXVsdFZhbHVlP1wiXCI6Yi5kZWZhdWx0VmFsdWUsZD1udWxsIT1iLmNoZWNrZWQ/Yi5jaGVja2VkOmIuZGVmYXVsdENoZWNrZWQ7Yz1TYShudWxsIT1iLnZhbHVlP2IudmFsdWU6Yyk7YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpkLGluaXRpYWxWYWx1ZTpjLGNvbnRyb2xsZWQ6XCJjaGVja2JveFwiPT09Yi50eXBlfHxcInJhZGlvXCI9PT1iLnR5cGU/bnVsbCE9Yi5jaGVja2VkOm51bGwhPWIudmFsdWV9fWZ1bmN0aW9uIGFiKGEsYil7Yj1iLmNoZWNrZWQ7bnVsbCE9YiYmdGEoYSxcImNoZWNrZWRcIixiLCExKX1cbmZ1bmN0aW9uIGJiKGEsYil7YWIoYSxiKTt2YXIgYz1TYShiLnZhbHVlKSxkPWIudHlwZTtpZihudWxsIT1jKWlmKFwibnVtYmVyXCI9PT1kKXtpZigwPT09YyYmXCJcIj09PWEudmFsdWV8fGEudmFsdWUhPWMpYS52YWx1ZT1cIlwiK2N9ZWxzZSBhLnZhbHVlIT09XCJcIitjJiYoYS52YWx1ZT1cIlwiK2MpO2Vsc2UgaWYoXCJzdWJtaXRcIj09PWR8fFwicmVzZXRcIj09PWQpe2EucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik7cmV0dXJufWIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKT9jYihhLGIudHlwZSxjKTpiLmhhc093blByb3BlcnR5KFwiZGVmYXVsdFZhbHVlXCIpJiZjYihhLGIudHlwZSxTYShiLmRlZmF1bHRWYWx1ZSkpO251bGw9PWIuY2hlY2tlZCYmbnVsbCE9Yi5kZWZhdWx0Q2hlY2tlZCYmKGEuZGVmYXVsdENoZWNrZWQ9ISFiLmRlZmF1bHRDaGVja2VkKX1cbmZ1bmN0aW9uIGRiKGEsYixjKXtpZihiLmhhc093blByb3BlcnR5KFwidmFsdWVcIil8fGIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikpe3ZhciBkPWIudHlwZTtpZighKFwic3VibWl0XCIhPT1kJiZcInJlc2V0XCIhPT1kfHx2b2lkIDAhPT1iLnZhbHVlJiZudWxsIT09Yi52YWx1ZSkpcmV0dXJuO2I9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO2N8fGI9PT1hLnZhbHVlfHwoYS52YWx1ZT1iKTthLmRlZmF1bHRWYWx1ZT1ifWM9YS5uYW1lO1wiXCIhPT1jJiYoYS5uYW1lPVwiXCIpO2EuZGVmYXVsdENoZWNrZWQ9ISFhLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQ7XCJcIiE9PWMmJihhLm5hbWU9Yyl9XG5mdW5jdGlvbiBjYihhLGIsYyl7aWYoXCJudW1iZXJcIiE9PWJ8fFhhKGEub3duZXJEb2N1bWVudCkhPT1hKW51bGw9PWM/YS5kZWZhdWx0VmFsdWU9XCJcIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09XCJcIitjJiYoYS5kZWZhdWx0VmFsdWU9XCJcIitjKX12YXIgZWI9QXJyYXkuaXNBcnJheTtcbmZ1bmN0aW9uIGZiKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYltcIiRcIitjW2VdXT0hMDtmb3IoYz0wO2M8YS5sZW5ndGg7YysrKWU9Yi5oYXNPd25Qcm9wZXJ0eShcIiRcIithW2NdLnZhbHVlKSxhW2NdLnNlbGVjdGVkIT09ZSYmKGFbY10uc2VsZWN0ZWQ9ZSksZSYmZCYmKGFbY10uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2M9XCJcIitTYShjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fVxuZnVuY3Rpb24gZ2IoYSxiKXtpZihudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKHAoOTEpKTtyZXR1cm4gQSh7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjpcIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBoYihhLGIpe3ZhciBjPWIudmFsdWU7aWYobnVsbD09Yyl7Yz1iLmNoaWxkcmVuO2I9Yi5kZWZhdWx0VmFsdWU7aWYobnVsbCE9Yyl7aWYobnVsbCE9Yil0aHJvdyBFcnJvcihwKDkyKSk7aWYoZWIoYykpe2lmKDE8Yy5sZW5ndGgpdGhyb3cgRXJyb3IocCg5MykpO2M9Y1swXX1iPWN9bnVsbD09YiYmKGI9XCJcIik7Yz1ifWEuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOlNhKGMpfX1cbmZ1bmN0aW9uIGliKGEsYil7dmFyIGM9U2EoYi52YWx1ZSksZD1TYShiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9XCJcIitjLGMhPT1hLnZhbHVlJiYoYS52YWx1ZT1jKSxudWxsPT1iLmRlZmF1bHRWYWx1ZSYmYS5kZWZhdWx0VmFsdWUhPT1jJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2QpfWZ1bmN0aW9uIGpiKGEpe3ZhciBiPWEudGV4dENvbnRlbnQ7Yj09PWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJlwiXCIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9ZnVuY3Rpb24ga2IoYSl7c3dpdGNoKGEpe2Nhc2UgXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZSBcIm1hdGhcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtkZWZhdWx0OnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwifX1cbmZ1bmN0aW9uIGxiKGEsYil7cmV0dXJuIG51bGw9PWF8fFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9rYihiKTpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1hJiZcImZvcmVpZ25PYmplY3RcIj09PWI/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6YX1cbnZhciBtYixuYj1mdW5jdGlvbihhKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihiLGMsZCxlKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBhKGIsYyxkLGUpfSl9OmF9KGZ1bmN0aW9uKGEsYil7aWYoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIT09YS5uYW1lc3BhY2VVUkl8fFwiaW5uZXJIVE1MXCJpbiBhKWEuaW5uZXJIVE1MPWI7ZWxzZXttYj1tYnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTttYi5pbm5lckhUTUw9XCI8c3ZnPlwiK2IudmFsdWVPZigpLnRvU3RyaW5nKCkrXCI8L3N2Zz5cIjtmb3IoYj1tYi5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7Yi5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCl9fSk7XG5mdW5jdGlvbiBvYihhLGIpe2lmKGIpe3ZhciBjPWEuZmlyc3RDaGlsZDtpZihjJiZjPT09YS5sYXN0Q2hpbGQmJjM9PT1jLm5vZGVUeXBlKXtjLm5vZGVWYWx1ZT1iO3JldHVybn19YS50ZXh0Q29udGVudD1ifVxudmFyIHBiPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsXG56b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHFiPVtcIldlYmtpdFwiLFwibXNcIixcIk1velwiLFwiT1wiXTtPYmplY3Qua2V5cyhwYikuZm9yRWFjaChmdW5jdGlvbihhKXtxYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9YithLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyaW5nKDEpO3BiW2JdPXBiW2FdfSl9KTtmdW5jdGlvbiByYihhLGIsYyl7cmV0dXJuIG51bGw9PWJ8fFwiYm9vbGVhblwiPT09dHlwZW9mIGJ8fFwiXCI9PT1iP1wiXCI6Y3x8XCJudW1iZXJcIiE9PXR5cGVvZiBifHwwPT09Ynx8cGIuaGFzT3duUHJvcGVydHkoYSkmJnBiW2FdPyhcIlwiK2IpLnRyaW0oKTpiK1wicHhcIn1cbmZ1bmN0aW9uIHNiKGEsYil7YT1hLnN0eWxlO2Zvcih2YXIgYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykpe3ZhciBkPTA9PT1jLmluZGV4T2YoXCItLVwiKSxlPXJiKGMsYltjXSxkKTtcImZsb2F0XCI9PT1jJiYoYz1cImNzc0Zsb2F0XCIpO2Q/YS5zZXRQcm9wZXJ0eShjLGUpOmFbY109ZX19dmFyIHRiPUEoe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7XG5mdW5jdGlvbiB1YihhLGIpe2lmKGIpe2lmKHRiW2FdJiYobnVsbCE9Yi5jaGlsZHJlbnx8bnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCgxMzcsYSkpO2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPWIuY2hpbGRyZW4pdGhyb3cgRXJyb3IocCg2MCkpO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTHx8IShcIl9faHRtbFwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IocCg2MSkpO31pZihudWxsIT1iLnN0eWxlJiZcIm9iamVjdFwiIT09dHlwZW9mIGIuc3R5bGUpdGhyb3cgRXJyb3IocCg2MikpO319XG5mdW5jdGlvbiB2YihhLGIpe2lmKC0xPT09YS5pbmRleE9mKFwiLVwiKSlyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGIuaXM7c3dpdGNoKGEpe2Nhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2UgXCJjb2xvci1wcm9maWxlXCI6Y2FzZSBcImZvbnQtZmFjZVwiOmNhc2UgXCJmb250LWZhY2Utc3JjXCI6Y2FzZSBcImZvbnQtZmFjZS11cmlcIjpjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOmNhc2UgXCJmb250LWZhY2UtbmFtZVwiOmNhc2UgXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHdiPW51bGw7ZnVuY3Rpb24geGIoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7cmV0dXJuIDM9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphfXZhciB5Yj1udWxsLHpiPW51bGwsQWI9bnVsbDtcbmZ1bmN0aW9uIEJiKGEpe2lmKGE9Q2IoYSkpe2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiB5Yil0aHJvdyBFcnJvcihwKDI4MCkpO3ZhciBiPWEuc3RhdGVOb2RlO2ImJihiPURiKGIpLHliKGEuc3RhdGVOb2RlLGEudHlwZSxiKSl9fWZ1bmN0aW9uIEViKGEpe3piP0FiP0FiLnB1c2goYSk6QWI9W2FdOnpiPWF9ZnVuY3Rpb24gRmIoKXtpZih6Yil7dmFyIGE9emIsYj1BYjtBYj16Yj1udWxsO0JiKGEpO2lmKGIpZm9yKGE9MDthPGIubGVuZ3RoO2ErKylCYihiW2FdKX19ZnVuY3Rpb24gR2IoYSxiKXtyZXR1cm4gYShiKX1mdW5jdGlvbiBIYigpe312YXIgSWI9ITE7ZnVuY3Rpb24gSmIoYSxiLGMpe2lmKEliKXJldHVybiBhKGIsYyk7SWI9ITA7dHJ5e3JldHVybiBHYihhLGIsYyl9ZmluYWxseXtpZihJYj0hMSxudWxsIT09emJ8fG51bGwhPT1BYilIYigpLEZiKCl9fVxuZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtpZihudWxsPT09YylyZXR1cm4gbnVsbDt2YXIgZD1EYihjKTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtjPWRbYl07YTpzd2l0Y2goYil7Y2FzZSBcIm9uQ2xpY2tcIjpjYXNlIFwib25DbGlja0NhcHR1cmVcIjpjYXNlIFwib25Eb3VibGVDbGlja1wiOmNhc2UgXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlRG93blwiOmNhc2UgXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZU1vdmVcIjpjYXNlIFwib25Nb3VzZU1vdmVDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VVcFwiOmNhc2UgXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VFbnRlclwiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9IShcImJ1dHRvblwiPT09YXx8XCJpbnB1dFwiPT09YXx8XCJzZWxlY3RcIj09PWF8fFwidGV4dGFyZWFcIj09PWEpKTthPSFkO2JyZWFrIGE7ZGVmYXVsdDphPSExfWlmKGEpcmV0dXJuIG51bGw7aWYoYyYmXCJmdW5jdGlvblwiIT09XG50eXBlb2YgYyl0aHJvdyBFcnJvcihwKDIzMSxiLHR5cGVvZiBjKSk7cmV0dXJuIGN9dmFyIExiPSExO2lmKGlhKXRyeXt2YXIgTWI9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KE1iLFwicGFzc2l2ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtMYj0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsTWIsTWIpfWNhdGNoKGEpe0xiPSExfWZ1bmN0aW9uIE5iKGEsYixjLGQsZSxmLGcsaCxrKXt2YXIgbD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e2IuYXBwbHkoYyxsKX1jYXRjaChtKXt0aGlzLm9uRXJyb3IobSl9fXZhciBPYj0hMSxQYj1udWxsLFFiPSExLFJiPW51bGwsU2I9e29uRXJyb3I6ZnVuY3Rpb24oYSl7T2I9ITA7UGI9YX19O2Z1bmN0aW9uIFRiKGEsYixjLGQsZSxmLGcsaCxrKXtPYj0hMTtQYj1udWxsO05iLmFwcGx5KFNiLGFyZ3VtZW50cyl9XG5mdW5jdGlvbiBVYihhLGIsYyxkLGUsZixnLGgsayl7VGIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKE9iKXtpZihPYil7dmFyIGw9UGI7T2I9ITE7UGI9bnVsbH1lbHNlIHRocm93IEVycm9yKHAoMTk4KSk7UWJ8fChRYj0hMCxSYj1sKX19ZnVuY3Rpb24gVmIoYSl7dmFyIGI9YSxjPWE7aWYoYS5hbHRlcm5hdGUpZm9yKDtiLnJldHVybjspYj1iLnJldHVybjtlbHNle2E9YjtkbyBiPWEsMCE9PShiLmZsYWdzJjQwOTgpJiYoYz1iLnJldHVybiksYT1iLnJldHVybjt3aGlsZShhKX1yZXR1cm4gMz09PWIudGFnP2M6bnVsbH1mdW5jdGlvbiBXYihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWImJihhPWEuYWx0ZXJuYXRlLG51bGwhPT1hJiYoYj1hLm1lbW9pemVkU3RhdGUpKTtpZihudWxsIT09YilyZXR1cm4gYi5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIFhiKGEpe2lmKFZiKGEpIT09YSl0aHJvdyBFcnJvcihwKDE4OCkpO31cbmZ1bmN0aW9uIFliKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO2lmKCFiKXtiPVZiKGEpO2lmKG51bGw9PT1iKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGIhPT1hP251bGw6YX1mb3IodmFyIGM9YSxkPWI7Oyl7dmFyIGU9Yy5yZXR1cm47aWYobnVsbD09PWUpYnJlYWs7dmFyIGY9ZS5hbHRlcm5hdGU7aWYobnVsbD09PWYpe2Q9ZS5yZXR1cm47aWYobnVsbCE9PWQpe2M9ZDtjb250aW51ZX1icmVha31pZihlLmNoaWxkPT09Zi5jaGlsZCl7Zm9yKGY9ZS5jaGlsZDtmOyl7aWYoZj09PWMpcmV0dXJuIFhiKGUpLGE7aWYoZj09PWQpcmV0dXJuIFhiKGUpLGI7Zj1mLnNpYmxpbmd9dGhyb3cgRXJyb3IocCgxODgpKTt9aWYoYy5yZXR1cm4hPT1kLnJldHVybiljPWUsZD1mO2Vsc2V7Zm9yKHZhciBnPSExLGg9ZS5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1lO2Q9ZjticmVha31pZihoPT09ZCl7Zz0hMDtkPWU7Yz1mO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXtmb3IoaD1mLmNoaWxkO2g7KXtpZihoPT09XG5jKXtnPSEwO2M9ZjtkPWU7YnJlYWt9aWYoaD09PWQpe2c9ITA7ZD1mO2M9ZTticmVha31oPWguc2libGluZ31pZighZyl0aHJvdyBFcnJvcihwKDE4OSkpO319aWYoYy5hbHRlcm5hdGUhPT1kKXRocm93IEVycm9yKHAoMTkwKSk7fWlmKDMhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDE4OCkpO3JldHVybiBjLnN0YXRlTm9kZS5jdXJyZW50PT09Yz9hOmJ9ZnVuY3Rpb24gWmIoYSl7YT1ZYihhKTtyZXR1cm4gbnVsbCE9PWE/JGIoYSk6bnVsbH1mdW5jdGlvbiAkYihhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYTtmb3IoYT1hLmNoaWxkO251bGwhPT1hOyl7dmFyIGI9JGIoYSk7aWYobnVsbCE9PWIpcmV0dXJuIGI7YT1hLnNpYmxpbmd9cmV0dXJuIG51bGx9XG52YXIgYWM9Y2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxiYz1jYS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxjYz1jYS51bnN0YWJsZV9zaG91bGRZaWVsZCxkYz1jYS51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsQj1jYS51bnN0YWJsZV9ub3csZWM9Y2EudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZmM9Y2EudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksZ2M9Y2EudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksaGM9Y2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksaWM9Y2EudW5zdGFibGVfTG93UHJpb3JpdHksamM9Y2EudW5zdGFibGVfSWRsZVByaW9yaXR5LGtjPW51bGwsbGM9bnVsbDtmdW5jdGlvbiBtYyhhKXtpZihsYyYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGxjLm9uQ29tbWl0RmliZXJSb290KXRyeXtsYy5vbkNvbW1pdEZpYmVyUm9vdChrYyxhLHZvaWQgMCwxMjg9PT0oYS5jdXJyZW50LmZsYWdzJjEyOCkpfWNhdGNoKGIpe319XG52YXIgb2M9TWF0aC5jbHozMj9NYXRoLmNsejMyOm5jLHBjPU1hdGgubG9nLHFjPU1hdGguTE4yO2Z1bmN0aW9uIG5jKGEpe2E+Pj49MDtyZXR1cm4gMD09PWE/MzI6MzEtKHBjKGEpL3FjfDApfDB9dmFyIHJjPTY0LHNjPTQxOTQzMDQ7XG5mdW5jdGlvbiB0YyhhKXtzd2l0Y2goYSYtYSl7Y2FzZSAxOnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDQ7Y2FzZSA4OnJldHVybiA4O2Nhc2UgMTY6cmV0dXJuIDE2O2Nhc2UgMzI6cmV0dXJuIDMyO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGEmNDE5NDI0MDtjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OnJldHVybiBhJjEzMDAyMzQyNDtjYXNlIDEzNDIxNzcyODpyZXR1cm4gMTM0MjE3NzI4O2Nhc2UgMjY4NDM1NDU2OnJldHVybiAyNjg0MzU0NTY7Y2FzZSA1MzY4NzA5MTI6cmV0dXJuIDUzNjg3MDkxMjtjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuIDEwNzM3NDE4MjQ7XG5kZWZhdWx0OnJldHVybiBhfX1mdW5jdGlvbiB1YyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzO2lmKDA9PT1jKXJldHVybiAwO3ZhciBkPTAsZT1hLnN1c3BlbmRlZExhbmVzLGY9YS5waW5nZWRMYW5lcyxnPWMmMjY4NDM1NDU1O2lmKDAhPT1nKXt2YXIgaD1nJn5lOzAhPT1oP2Q9dGMoaCk6KGYmPWcsMCE9PWYmJihkPXRjKGYpKSl9ZWxzZSBnPWMmfmUsMCE9PWc/ZD10YyhnKTowIT09ZiYmKGQ9dGMoZikpO2lmKDA9PT1kKXJldHVybiAwO2lmKDAhPT1iJiZiIT09ZCYmMD09PShiJmUpJiYoZT1kJi1kLGY9YiYtYixlPj1mfHwxNj09PWUmJjAhPT0oZiY0MTk0MjQwKSkpcmV0dXJuIGI7MCE9PShkJjQpJiYoZHw9YyYxNik7Yj1hLmVudGFuZ2xlZExhbmVzO2lmKDAhPT1iKWZvcihhPWEuZW50YW5nbGVtZW50cyxiJj1kOzA8YjspYz0zMS1vYyhiKSxlPTE8PGMsZHw9YVtjXSxiJj1+ZTtyZXR1cm4gZH1cbmZ1bmN0aW9uIHZjKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiBiKzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIGIrNUUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fVxuZnVuY3Rpb24gd2MoYSxiKXtmb3IodmFyIGM9YS5zdXNwZW5kZWRMYW5lcyxkPWEucGluZ2VkTGFuZXMsZT1hLmV4cGlyYXRpb25UaW1lcyxmPWEucGVuZGluZ0xhbmVzOzA8Zjspe3ZhciBnPTMxLW9jKGYpLGg9MTw8ZyxrPWVbZ107aWYoLTE9PT1rKXtpZigwPT09KGgmYyl8fDAhPT0oaCZkKSllW2ddPXZjKGgsYil9ZWxzZSBrPD1iJiYoYS5leHBpcmVkTGFuZXN8PWgpO2YmPX5ofX1mdW5jdGlvbiB4YyhhKXthPWEucGVuZGluZ0xhbmVzJi0xMDczNzQxODI1O3JldHVybiAwIT09YT9hOmEmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24geWMoKXt2YXIgYT1yYztyYzw8PTE7MD09PShyYyY0MTk0MjQwKSYmKHJjPTY0KTtyZXR1cm4gYX1mdW5jdGlvbiB6YyhhKXtmb3IodmFyIGI9W10sYz0wOzMxPmM7YysrKWIucHVzaChhKTtyZXR1cm4gYn1cbmZ1bmN0aW9uIEFjKGEsYixjKXthLnBlbmRpbmdMYW5lc3w9Yjs1MzY4NzA5MTIhPT1iJiYoYS5zdXNwZW5kZWRMYW5lcz0wLGEucGluZ2VkTGFuZXM9MCk7YT1hLmV2ZW50VGltZXM7Yj0zMS1vYyhiKTthW2JdPWN9ZnVuY3Rpb24gQmMoYSxiKXt2YXIgYz1hLnBlbmRpbmdMYW5lcyZ+YjthLnBlbmRpbmdMYW5lcz1iO2Euc3VzcGVuZGVkTGFuZXM9MDthLnBpbmdlZExhbmVzPTA7YS5leHBpcmVkTGFuZXMmPWI7YS5tdXRhYmxlUmVhZExhbmVzJj1iO2EuZW50YW5nbGVkTGFuZXMmPWI7Yj1hLmVudGFuZ2xlbWVudHM7dmFyIGQ9YS5ldmVudFRpbWVzO2ZvcihhPWEuZXhwaXJhdGlvblRpbWVzOzA8Yzspe3ZhciBlPTMxLW9jKGMpLGY9MTw8ZTtiW2VdPTA7ZFtlXT0tMTthW2VdPS0xO2MmPX5mfX1cbmZ1bmN0aW9uIENjKGEsYil7dmFyIGM9YS5lbnRhbmdsZWRMYW5lc3w9Yjtmb3IoYT1hLmVudGFuZ2xlbWVudHM7Yzspe3ZhciBkPTMxLW9jKGMpLGU9MTw8ZDtlJmJ8YVtkXSZiJiYoYVtkXXw9Yik7YyY9fmV9fXZhciBDPTA7ZnVuY3Rpb24gRGMoYSl7YSY9LWE7cmV0dXJuIDE8YT80PGE/MCE9PShhJjI2ODQzNTQ1NSk/MTY6NTM2ODcwOTEyOjQ6MX12YXIgRWMsRmMsR2MsSGMsSWMsSmM9ITEsS2M9W10sTGM9bnVsbCxNYz1udWxsLE5jPW51bGwsT2M9bmV3IE1hcCxQYz1uZXcgTWFwLFFjPVtdLFJjPVwibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIFNjKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJmb2N1c2luXCI6Y2FzZSBcImZvY3Vzb3V0XCI6TGM9bnVsbDticmVhaztjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdsZWF2ZVwiOk1jPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJtb3VzZW91dFwiOk5jPW51bGw7YnJlYWs7Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpPYy5kZWxldGUoYi5wb2ludGVySWQpO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpQYy5kZWxldGUoYi5wb2ludGVySWQpfX1cbmZ1bmN0aW9uIFRjKGEsYixjLGQsZSxmKXtpZihudWxsPT09YXx8YS5uYXRpdmVFdmVudCE9PWYpcmV0dXJuIGE9e2Jsb2NrZWRPbjpiLGRvbUV2ZW50TmFtZTpjLGV2ZW50U3lzdGVtRmxhZ3M6ZCxuYXRpdmVFdmVudDpmLHRhcmdldENvbnRhaW5lcnM6W2VdfSxudWxsIT09YiYmKGI9Q2IoYiksbnVsbCE9PWImJkZjKGIpKSxhO2EuZXZlbnRTeXN0ZW1GbGFnc3w9ZDtiPWEudGFyZ2V0Q29udGFpbmVycztudWxsIT09ZSYmLTE9PT1iLmluZGV4T2YoZSkmJmIucHVzaChlKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIFVjKGEsYixjLGQsZSl7c3dpdGNoKGIpe2Nhc2UgXCJmb2N1c2luXCI6cmV0dXJuIExjPVRjKExjLGEsYixjLGQsZSksITA7Y2FzZSBcImRyYWdlbnRlclwiOnJldHVybiBNYz1UYyhNYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJtb3VzZW92ZXJcIjpyZXR1cm4gTmM9VGMoTmMsYSxiLGMsZCxlKSwhMDtjYXNlIFwicG9pbnRlcm92ZXJcIjp2YXIgZj1lLnBvaW50ZXJJZDtPYy5zZXQoZixUYyhPYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSk7cmV0dXJuITA7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6cmV0dXJuIGY9ZS5wb2ludGVySWQsUGMuc2V0KGYsVGMoUGMuZ2V0KGYpfHxudWxsLGEsYixjLGQsZSkpLCEwfXJldHVybiExfVxuZnVuY3Rpb24gVmMoYSl7dmFyIGI9V2MoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1WYihiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1XYihjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtJYyhhLnByaW9yaXR5LGZ1bmN0aW9uKCl7R2MoYyl9KTtyZXR1cm59fWVsc2UgaWYoMz09PWImJmMuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2EuYmxvY2tlZE9uPTM9PT1jLnRhZz9jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX1hLmJsb2NrZWRPbj1udWxsfVxuZnVuY3Rpb24gWGMoYSl7aWYobnVsbCE9PWEuYmxvY2tlZE9uKXJldHVybiExO2Zvcih2YXIgYj1hLnRhcmdldENvbnRhaW5lcnM7MDxiLmxlbmd0aDspe3ZhciBjPVljKGEuZG9tRXZlbnROYW1lLGEuZXZlbnRTeXN0ZW1GbGFncyxiWzBdLGEubmF0aXZlRXZlbnQpO2lmKG51bGw9PT1jKXtjPWEubmF0aXZlRXZlbnQ7dmFyIGQ9bmV3IGMuY29uc3RydWN0b3IoYy50eXBlLGMpO3diPWQ7Yy50YXJnZXQuZGlzcGF0Y2hFdmVudChkKTt3Yj1udWxsfWVsc2UgcmV0dXJuIGI9Q2IoYyksbnVsbCE9PWImJkZjKGIpLGEuYmxvY2tlZE9uPWMsITE7Yi5zaGlmdCgpfXJldHVybiEwfWZ1bmN0aW9uIFpjKGEsYixjKXtYYyhhKSYmYy5kZWxldGUoYil9ZnVuY3Rpb24gJGMoKXtKYz0hMTtudWxsIT09TGMmJlhjKExjKSYmKExjPW51bGwpO251bGwhPT1NYyYmWGMoTWMpJiYoTWM9bnVsbCk7bnVsbCE9PU5jJiZYYyhOYykmJihOYz1udWxsKTtPYy5mb3JFYWNoKFpjKTtQYy5mb3JFYWNoKFpjKX1cbmZ1bmN0aW9uIGFkKGEsYil7YS5ibG9ja2VkT249PT1iJiYoYS5ibG9ja2VkT249bnVsbCxKY3x8KEpjPSEwLGNhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soY2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksJGMpKSl9XG5mdW5jdGlvbiBiZChhKXtmdW5jdGlvbiBiKGIpe3JldHVybiBhZChiLGEpfWlmKDA8S2MubGVuZ3RoKXthZChLY1swXSxhKTtmb3IodmFyIGM9MTtjPEtjLmxlbmd0aDtjKyspe3ZhciBkPUtjW2NdO2QuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpfX1udWxsIT09TGMmJmFkKExjLGEpO251bGwhPT1NYyYmYWQoTWMsYSk7bnVsbCE9PU5jJiZhZChOYyxhKTtPYy5mb3JFYWNoKGIpO1BjLmZvckVhY2goYik7Zm9yKGM9MDtjPFFjLmxlbmd0aDtjKyspZD1RY1tjXSxkLmJsb2NrZWRPbj09PWEmJihkLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8UWMubGVuZ3RoJiYoYz1RY1swXSxudWxsPT09Yy5ibG9ja2VkT24pOylWYyhjKSxudWxsPT09Yy5ibG9ja2VkT24mJlFjLnNoaWZ0KCl9dmFyIGNkPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGRkPSEwO1xuZnVuY3Rpb24gZWQoYSxiLGMsZCl7dmFyIGU9QyxmPWNkLnRyYW5zaXRpb247Y2QudHJhbnNpdGlvbj1udWxsO3RyeXtDPTEsZmQoYSxiLGMsZCl9ZmluYWxseXtDPWUsY2QudHJhbnNpdGlvbj1mfX1mdW5jdGlvbiBnZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9NCxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fVxuZnVuY3Rpb24gZmQoYSxiLGMsZCl7aWYoZGQpe3ZhciBlPVljKGEsYixjLGQpO2lmKG51bGw9PT1lKWhkKGEsYixkLGlkLGMpLFNjKGEsZCk7ZWxzZSBpZihVYyhlLGEsYixjLGQpKWQuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihTYyhhLGQpLGImNCYmLTE8UmMuaW5kZXhPZihhKSl7Zm9yKDtudWxsIT09ZTspe3ZhciBmPUNiKGUpO251bGwhPT1mJiZFYyhmKTtmPVljKGEsYixjLGQpO251bGw9PT1mJiZoZChhLGIsZCxpZCxjKTtpZihmPT09ZSlicmVhaztlPWZ9bnVsbCE9PWUmJmQuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBoZChhLGIsZCxudWxsLGMpfX12YXIgaWQ9bnVsbDtcbmZ1bmN0aW9uIFljKGEsYixjLGQpe2lkPW51bGw7YT14YihkKTthPVdjKGEpO2lmKG51bGwhPT1hKWlmKGI9VmIoYSksbnVsbD09PWIpYT1udWxsO2Vsc2UgaWYoYz1iLnRhZywxMz09PWMpe2E9V2IoYik7aWYobnVsbCE9PWEpcmV0dXJuIGE7YT1udWxsfWVsc2UgaWYoMz09PWMpe2lmKGIuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIDM9PT1iLnRhZz9iLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7YT1udWxsfWVsc2UgYiE9PWEmJihhPW51bGwpO2lkPWE7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBqZChhKXtzd2l0Y2goYSl7Y2FzZSBcImNhbmNlbFwiOmNhc2UgXCJjbGlja1wiOmNhc2UgXCJjbG9zZVwiOmNhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJjb3B5XCI6Y2FzZSBcImN1dFwiOmNhc2UgXCJhdXhjbGlja1wiOmNhc2UgXCJkYmxjbGlja1wiOmNhc2UgXCJkcmFnZW5kXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwiaW52YWxpZFwiOmNhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXByZXNzXCI6Y2FzZSBcImtleXVwXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcInBhc3RlXCI6Y2FzZSBcInBhdXNlXCI6Y2FzZSBcInBsYXlcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVydXBcIjpjYXNlIFwicmF0ZWNoYW5nZVwiOmNhc2UgXCJyZXNldFwiOmNhc2UgXCJyZXNpemVcIjpjYXNlIFwic2Vla2VkXCI6Y2FzZSBcInN1Ym1pdFwiOmNhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaHN0YXJ0XCI6Y2FzZSBcInZvbHVtZWNoYW5nZVwiOmNhc2UgXCJjaGFuZ2VcIjpjYXNlIFwic2VsZWN0aW9uY2hhbmdlXCI6Y2FzZSBcInRleHRJbnB1dFwiOmNhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6Y2FzZSBcImJlZm9yZWlucHV0XCI6Y2FzZSBcImJsdXJcIjpjYXNlIFwiZnVsbHNjcmVlbmNoYW5nZVwiOmNhc2UgXCJmb2N1c1wiOmNhc2UgXCJoYXNoY2hhbmdlXCI6Y2FzZSBcInBvcHN0YXRlXCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJzZWxlY3RzdGFydFwiOnJldHVybiAxO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbnRlclwiOmNhc2UgXCJkcmFnZXhpdFwiOmNhc2UgXCJkcmFnbGVhdmVcIjpjYXNlIFwiZHJhZ292ZXJcIjpjYXNlIFwibW91c2Vtb3ZlXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInNjcm9sbFwiOmNhc2UgXCJ0b2dnbGVcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcIndoZWVsXCI6Y2FzZSBcIm1vdXNlZW50ZXJcIjpjYXNlIFwibW91c2VsZWF2ZVwiOmNhc2UgXCJwb2ludGVyZW50ZXJcIjpjYXNlIFwicG9pbnRlcmxlYXZlXCI6cmV0dXJuIDQ7XG5jYXNlIFwibWVzc2FnZVwiOnN3aXRjaChlYygpKXtjYXNlIGZjOnJldHVybiAxO2Nhc2UgZ2M6cmV0dXJuIDQ7Y2FzZSBoYzpjYXNlIGljOnJldHVybiAxNjtjYXNlIGpjOnJldHVybiA1MzY4NzA5MTI7ZGVmYXVsdDpyZXR1cm4gMTZ9ZGVmYXVsdDpyZXR1cm4gMTZ9fXZhciBrZD1udWxsLGxkPW51bGwsbWQ9bnVsbDtmdW5jdGlvbiBuZCgpe2lmKG1kKXJldHVybiBtZDt2YXIgYSxiPWxkLGM9Yi5sZW5ndGgsZCxlPVwidmFsdWVcImluIGtkP2tkLnZhbHVlOmtkLnRleHRDb250ZW50LGY9ZS5sZW5ndGg7Zm9yKGE9MDthPGMmJmJbYV09PT1lW2FdO2ErKyk7dmFyIGc9Yy1hO2ZvcihkPTE7ZDw9ZyYmYltjLWRdPT09ZVtmLWRdO2QrKyk7cmV0dXJuIG1kPWUuc2xpY2UoYSwxPGQ/MS1kOnZvaWQgMCl9XG5mdW5jdGlvbiBvZChhKXt2YXIgYj1hLmtleUNvZGU7XCJjaGFyQ29kZVwiaW4gYT8oYT1hLmNoYXJDb2RlLDA9PT1hJiYxMz09PWImJihhPTEzKSk6YT1iOzEwPT09YSYmKGE9MTMpO3JldHVybiAzMjw9YXx8MTM9PT1hP2E6MH1mdW5jdGlvbiBwZCgpe3JldHVybiEwfWZ1bmN0aW9uIHFkKCl7cmV0dXJuITF9XG5mdW5jdGlvbiByZChhKXtmdW5jdGlvbiBiKGIsZCxlLGYsZyl7dGhpcy5fcmVhY3ROYW1lPWI7dGhpcy5fdGFyZ2V0SW5zdD1lO3RoaXMudHlwZT1kO3RoaXMubmF0aXZlRXZlbnQ9Zjt0aGlzLnRhcmdldD1nO3RoaXMuY3VycmVudFRhcmdldD1udWxsO2Zvcih2YXIgYyBpbiBhKWEuaGFzT3duUHJvcGVydHkoYykmJihiPWFbY10sdGhpc1tjXT1iP2IoZik6ZltjXSk7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWYuZGVmYXVsdFByZXZlbnRlZD9mLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1mLnJldHVyblZhbHVlKT9wZDpxZDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXFkO3JldHVybiB0aGlzfUEoYi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOlwidW5rbm93blwiIT09dHlwZW9mIGEucmV0dXJuVmFsdWUmJlxuKGEucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXBkKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5zdG9wUHJvcGFnYXRpb24/YS5zdG9wUHJvcGFnYXRpb24oKTpcInVua25vd25cIiE9PXR5cGVvZiBhLmNhbmNlbEJ1YmJsZSYmKGEuY2FuY2VsQnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXBkKX0scGVyc2lzdDpmdW5jdGlvbigpe30saXNQZXJzaXN0ZW50OnBkfSk7cmV0dXJuIGJ9XG52YXIgc2Q9e2V2ZW50UGhhc2U6MCxidWJibGVzOjAsY2FuY2VsYWJsZTowLHRpbWVTdGFtcDpmdW5jdGlvbihhKXtyZXR1cm4gYS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1bHRQcmV2ZW50ZWQ6MCxpc1RydXN0ZWQ6MH0sdGQ9cmQoc2QpLHVkPUEoe30sc2Qse3ZpZXc6MCxkZXRhaWw6MH0pLHZkPXJkKHVkKSx3ZCx4ZCx5ZCxBZD1BKHt9LHVkLHtzY3JlZW5YOjAsc2NyZWVuWTowLGNsaWVudFg6MCxjbGllbnRZOjAscGFnZVg6MCxwYWdlWTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkLGJ1dHRvbjowLGJ1dHRvbnM6MCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hLnJlbGF0ZWRUYXJnZXQ/YS5mcm9tRWxlbWVudD09PWEuc3JjRWxlbWVudD9hLnRvRWxlbWVudDphLmZyb21FbGVtZW50OmEucmVsYXRlZFRhcmdldH0sbW92ZW1lbnRYOmZ1bmN0aW9uKGEpe2lmKFwibW92ZW1lbnRYXCJpblxuYSlyZXR1cm4gYS5tb3ZlbWVudFg7YSE9PXlkJiYoeWQmJlwibW91c2Vtb3ZlXCI9PT1hLnR5cGU/KHdkPWEuc2NyZWVuWC15ZC5zY3JlZW5YLHhkPWEuc2NyZWVuWS15ZC5zY3JlZW5ZKTp4ZD13ZD0wLHlkPWEpO3JldHVybiB3ZH0sbW92ZW1lbnRZOmZ1bmN0aW9uKGEpe3JldHVyblwibW92ZW1lbnRZXCJpbiBhP2EubW92ZW1lbnRZOnhkfX0pLEJkPXJkKEFkKSxDZD1BKHt9LEFkLHtkYXRhVHJhbnNmZXI6MH0pLERkPXJkKENkKSxFZD1BKHt9LHVkLHtyZWxhdGVkVGFyZ2V0OjB9KSxGZD1yZChFZCksR2Q9QSh7fSxzZCx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksSGQ9cmQoR2QpLElkPUEoe30sc2Qse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBhP2EuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxKZD1yZChJZCksS2Q9QSh7fSxzZCx7ZGF0YTowfSksTGQ9cmQoS2QpLE1kPXtFc2M6XCJFc2NhcGVcIixcblNwYWNlYmFyOlwiIFwiLExlZnQ6XCJBcnJvd0xlZnRcIixVcDpcIkFycm93VXBcIixSaWdodDpcIkFycm93UmlnaHRcIixEb3duOlwiQXJyb3dEb3duXCIsRGVsOlwiRGVsZXRlXCIsV2luOlwiT1NcIixNZW51OlwiQ29udGV4dE1lbnVcIixBcHBzOlwiQ29udGV4dE1lbnVcIixTY3JvbGw6XCJTY3JvbGxMb2NrXCIsTW96UHJpbnRhYmxlS2V5OlwiVW5pZGVudGlmaWVkXCJ9LE5kPXs4OlwiQmFja3NwYWNlXCIsOTpcIlRhYlwiLDEyOlwiQ2xlYXJcIiwxMzpcIkVudGVyXCIsMTY6XCJTaGlmdFwiLDE3OlwiQ29udHJvbFwiLDE4OlwiQWx0XCIsMTk6XCJQYXVzZVwiLDIwOlwiQ2Fwc0xvY2tcIiwyNzpcIkVzY2FwZVwiLDMyOlwiIFwiLDMzOlwiUGFnZVVwXCIsMzQ6XCJQYWdlRG93blwiLDM1OlwiRW5kXCIsMzY6XCJIb21lXCIsMzc6XCJBcnJvd0xlZnRcIiwzODpcIkFycm93VXBcIiwzOTpcIkFycm93UmlnaHRcIiw0MDpcIkFycm93RG93blwiLDQ1OlwiSW5zZXJ0XCIsNDY6XCJEZWxldGVcIiwxMTI6XCJGMVwiLDExMzpcIkYyXCIsMTE0OlwiRjNcIiwxMTU6XCJGNFwiLDExNjpcIkY1XCIsMTE3OlwiRjZcIiwxMTg6XCJGN1wiLFxuMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSxPZD17QWx0OlwiYWx0S2V5XCIsQ29udHJvbDpcImN0cmxLZXlcIixNZXRhOlwibWV0YUtleVwiLFNoaWZ0Olwic2hpZnRLZXlcIn07ZnVuY3Rpb24gUGQoYSl7dmFyIGI9dGhpcy5uYXRpdmVFdmVudDtyZXR1cm4gYi5nZXRNb2RpZmllclN0YXRlP2IuZ2V0TW9kaWZpZXJTdGF0ZShhKTooYT1PZFthXSk/ISFiW2FdOiExfWZ1bmN0aW9uIHpkKCl7cmV0dXJuIFBkfVxudmFyIFFkPUEoe30sdWQse2tleTpmdW5jdGlvbihhKXtpZihhLmtleSl7dmFyIGI9TWRbYS5rZXldfHxhLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09YilyZXR1cm4gYn1yZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/KGE9b2QoYSksMTM9PT1hP1wiRW50ZXJcIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP05kW2Eua2V5Q29kZV18fFwiVW5pZGVudGlmaWVkXCI6XCJcIn0sY29kZTowLGxvY2F0aW9uOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLHJlcGVhdDowLGxvY2FsZTowLGdldE1vZGlmaWVyU3RhdGU6emQsY2hhckNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09YS50eXBlP29kKGEpOjB9LGtleUNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oYSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09XG5hLnR5cGU/b2QoYSk6XCJrZXlkb3duXCI9PT1hLnR5cGV8fFwia2V5dXBcIj09PWEudHlwZT9hLmtleUNvZGU6MH19KSxSZD1yZChRZCksU2Q9QSh7fSxBZCx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxUZD1yZChTZCksVWQ9QSh7fSx1ZCx7dG91Y2hlczowLHRhcmdldFRvdWNoZXM6MCxjaGFuZ2VkVG91Y2hlczowLGFsdEtleTowLG1ldGFLZXk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxnZXRNb2RpZmllclN0YXRlOnpkfSksVmQ9cmQoVWQpLFdkPUEoe30sc2Qse3Byb3BlcnR5TmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksWGQ9cmQoV2QpLFlkPUEoe30sQWQse2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm5cImRlbHRhWFwiaW4gYT9hLmRlbHRhWDpcIndoZWVsRGVsdGFYXCJpbiBhPy1hLndoZWVsRGVsdGFYOjB9LFxuZGVsdGFZOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFZXCJpbiBhP2EuZGVsdGFZOlwid2hlZWxEZWx0YVlcImluIGE/LWEud2hlZWxEZWx0YVk6XCJ3aGVlbERlbHRhXCJpbiBhPy1hLndoZWVsRGVsdGE6MH0sZGVsdGFaOjAsZGVsdGFNb2RlOjB9KSxaZD1yZChZZCksJGQ9WzksMTMsMjcsMzJdLGFlPWlhJiZcIkNvbXBvc2l0aW9uRXZlbnRcImluIHdpbmRvdyxiZT1udWxsO2lhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJihiZT1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBjZT1pYSYmXCJUZXh0RXZlbnRcImluIHdpbmRvdyYmIWJlLGRlPWlhJiYoIWFlfHxiZSYmODxiZSYmMTE+PWJlKSxlZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxmZT0hMTtcbmZ1bmN0aW9uIGdlKGEsYil7c3dpdGNoKGEpe2Nhc2UgXCJrZXl1cFwiOnJldHVybi0xIT09JGQuaW5kZXhPZihiLmtleUNvZGUpO2Nhc2UgXCJrZXlkb3duXCI6cmV0dXJuIDIyOSE9PWIua2V5Q29kZTtjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcImZvY3Vzb3V0XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gaGUoYSl7YT1hLmRldGFpbDtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJlwiZGF0YVwiaW4gYT9hLmRhdGE6bnVsbH12YXIgaWU9ITE7ZnVuY3Rpb24gamUoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6cmV0dXJuIGhlKGIpO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDMyIT09Yi53aGljaClyZXR1cm4gbnVsbDtmZT0hMDtyZXR1cm4gZWU7Y2FzZSBcInRleHRJbnB1dFwiOnJldHVybiBhPWIuZGF0YSxhPT09ZWUmJmZlP251bGw6YTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIGtlKGEsYil7aWYoaWUpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09YXx8IWFlJiZnZShhLGIpPyhhPW5kKCksbWQ9bGQ9a2Q9bnVsbCxpZT0hMSxhKTpudWxsO3N3aXRjaChhKXtjYXNlIFwicGFzdGVcIjpyZXR1cm4gbnVsbDtjYXNlIFwia2V5cHJlc3NcIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gZGUmJlwia29cIiE9PWIubG9jYWxlP251bGw6Yi5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxudmFyIGxlPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLFwiZGF0ZXRpbWUtbG9jYWxcIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2Z1bmN0aW9uIG1lKGEpe3ZhciBiPWEmJmEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm5cImlucHV0XCI9PT1iPyEhbGVbYS50eXBlXTpcInRleHRhcmVhXCI9PT1iPyEwOiExfWZ1bmN0aW9uIG5lKGEsYixjLGQpe0ViKGQpO2I9b2UoYixcIm9uQ2hhbmdlXCIpOzA8Yi5sZW5ndGgmJihjPW5ldyB0ZChcIm9uQ2hhbmdlXCIsXCJjaGFuZ2VcIixudWxsLGMsZCksYS5wdXNoKHtldmVudDpjLGxpc3RlbmVyczpifSkpfXZhciBwZT1udWxsLHFlPW51bGw7ZnVuY3Rpb24gcmUoYSl7c2UoYSwwKX1mdW5jdGlvbiB0ZShhKXt2YXIgYj11ZShhKTtpZihXYShiKSlyZXR1cm4gYX1cbmZ1bmN0aW9uIHZlKGEsYil7aWYoXCJjaGFuZ2VcIj09PWEpcmV0dXJuIGJ9dmFyIHdlPSExO2lmKGlhKXt2YXIgeGU7aWYoaWEpe3ZhciB5ZT1cIm9uaW5wdXRcImluIGRvY3VtZW50O2lmKCF5ZSl7dmFyIHplPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7emUuc2V0QXR0cmlidXRlKFwib25pbnB1dFwiLFwicmV0dXJuO1wiKTt5ZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgemUub25pbnB1dH14ZT15ZX1lbHNlIHhlPSExO3dlPXhlJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIEFlKCl7cGUmJihwZS5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkscWU9cGU9bnVsbCl9ZnVuY3Rpb24gQmUoYSl7aWYoXCJ2YWx1ZVwiPT09YS5wcm9wZXJ0eU5hbWUmJnRlKHFlKSl7dmFyIGI9W107bmUoYixxZSxhLHhiKGEpKTtKYihyZSxiKX19XG5mdW5jdGlvbiBDZShhLGIsYyl7XCJmb2N1c2luXCI9PT1hPyhBZSgpLHBlPWIscWU9YyxwZS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixCZSkpOlwiZm9jdXNvdXRcIj09PWEmJkFlKCl9ZnVuY3Rpb24gRGUoYSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWF8fFwia2V5dXBcIj09PWF8fFwia2V5ZG93blwiPT09YSlyZXR1cm4gdGUocWUpfWZ1bmN0aW9uIEVlKGEsYil7aWYoXCJjbGlja1wiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gRmUoYSxiKXtpZihcImlucHV0XCI9PT1hfHxcImNoYW5nZVwiPT09YSlyZXR1cm4gdGUoYil9ZnVuY3Rpb24gR2UoYSxiKXtyZXR1cm4gYT09PWImJigwIT09YXx8MS9hPT09MS9iKXx8YSE9PWEmJmIhPT1ifXZhciBIZT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgT2JqZWN0LmlzP09iamVjdC5pczpHZTtcbmZ1bmN0aW9uIEllKGEsYil7aWYoSGUoYSxiKSlyZXR1cm4hMDtpZihcIm9iamVjdFwiIT09dHlwZW9mIGF8fG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGJ8fG51bGw9PT1iKXJldHVybiExO3ZhciBjPU9iamVjdC5rZXlzKGEpLGQ9T2JqZWN0LmtleXMoYik7aWYoYy5sZW5ndGghPT1kLmxlbmd0aClyZXR1cm4hMTtmb3IoZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO2lmKCFqYS5jYWxsKGIsZSl8fCFIZShhW2VdLGJbZV0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIEplKGEpe2Zvcig7YSYmYS5maXJzdENoaWxkOylhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX1cbmZ1bmN0aW9uIEtlKGEsYil7dmFyIGM9SmUoYSk7YT0wO2Zvcih2YXIgZDtjOyl7aWYoMz09PWMubm9kZVR5cGUpe2Q9YStjLnRleHRDb250ZW50Lmxlbmd0aDtpZihhPD1iJiZkPj1iKXJldHVybntub2RlOmMsb2Zmc2V0OmItYX07YT1kfWE6e2Zvcig7Yzspe2lmKGMubmV4dFNpYmxpbmcpe2M9Yy5uZXh0U2libGluZzticmVhayBhfWM9Yy5wYXJlbnROb2RlfWM9dm9pZCAwfWM9SmUoYyl9fWZ1bmN0aW9uIExlKGEsYil7cmV0dXJuIGEmJmI/YT09PWI/ITA6YSYmMz09PWEubm9kZVR5cGU/ITE6YiYmMz09PWIubm9kZVR5cGU/TGUoYSxiLnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIGE/YS5jb250YWlucyhiKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPyEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpOiExOiExfVxuZnVuY3Rpb24gTWUoKXtmb3IodmFyIGE9d2luZG93LGI9WGEoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz1cInN0cmluZ1wiPT09dHlwZW9mIGIuY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGQpe2M9ITF9aWYoYylhPWIuY29udGVudFdpbmRvdztlbHNlIGJyZWFrO2I9WGEoYS5kb2N1bWVudCl9cmV0dXJuIGJ9ZnVuY3Rpb24gTmUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiJiYoXCJpbnB1dFwiPT09YiYmKFwidGV4dFwiPT09YS50eXBlfHxcInNlYXJjaFwiPT09YS50eXBlfHxcInRlbFwiPT09YS50eXBlfHxcInVybFwiPT09YS50eXBlfHxcInBhc3N3b3JkXCI9PT1hLnR5cGUpfHxcInRleHRhcmVhXCI9PT1ifHxcInRydWVcIj09PWEuY29udGVudEVkaXRhYmxlKX1cbmZ1bmN0aW9uIE9lKGEpe3ZhciBiPU1lKCksYz1hLmZvY3VzZWRFbGVtLGQ9YS5zZWxlY3Rpb25SYW5nZTtpZihiIT09YyYmYyYmYy5vd25lckRvY3VtZW50JiZMZShjLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGMpKXtpZihudWxsIT09ZCYmTmUoYykpaWYoYj1kLnN0YXJ0LGE9ZC5lbmQsdm9pZCAwPT09YSYmKGE9YiksXCJzZWxlY3Rpb25TdGFydFwiaW4gYyljLnNlbGVjdGlvblN0YXJ0PWIsYy5zZWxlY3Rpb25FbmQ9TWF0aC5taW4oYSxjLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihhPShiPWMub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpJiZiLmRlZmF1bHRWaWV3fHx3aW5kb3csYS5nZXRTZWxlY3Rpb24pe2E9YS5nZXRTZWxlY3Rpb24oKTt2YXIgZT1jLnRleHRDb250ZW50Lmxlbmd0aCxmPU1hdGgubWluKGQuc3RhcnQsZSk7ZD12b2lkIDA9PT1kLmVuZD9mOk1hdGgubWluKGQuZW5kLGUpOyFhLmV4dGVuZCYmZj5kJiYoZT1kLGQ9ZixmPWUpO2U9S2UoYyxmKTt2YXIgZz1LZShjLFxuZCk7ZSYmZyYmKDEhPT1hLnJhbmdlQ291bnR8fGEuYW5jaG9yTm9kZSE9PWUubm9kZXx8YS5hbmNob3JPZmZzZXQhPT1lLm9mZnNldHx8YS5mb2N1c05vZGUhPT1nLm5vZGV8fGEuZm9jdXNPZmZzZXQhPT1nLm9mZnNldCkmJihiPWIuY3JlYXRlUmFuZ2UoKSxiLnNldFN0YXJ0KGUubm9kZSxlLm9mZnNldCksYS5yZW1vdmVBbGxSYW5nZXMoKSxmPmQ/KGEuYWRkUmFuZ2UoYiksYS5leHRlbmQoZy5ub2RlLGcub2Zmc2V0KSk6KGIuc2V0RW5kKGcubm9kZSxnLm9mZnNldCksYS5hZGRSYW5nZShiKSkpfWI9W107Zm9yKGE9YzthPWEucGFyZW50Tm9kZTspMT09PWEubm9kZVR5cGUmJmIucHVzaCh7ZWxlbWVudDphLGxlZnQ6YS5zY3JvbGxMZWZ0LHRvcDphLnNjcm9sbFRvcH0pO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBjLmZvY3VzJiZjLmZvY3VzKCk7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhPWJbY10sYS5lbGVtZW50LnNjcm9sbExlZnQ9YS5sZWZ0LGEuZWxlbWVudC5zY3JvbGxUb3A9YS50b3B9fVxudmFyIFBlPWlhJiZcImRvY3VtZW50TW9kZVwiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUsUWU9bnVsbCxSZT1udWxsLFNlPW51bGwsVGU9ITE7XG5mdW5jdGlvbiBVZShhLGIsYyl7dmFyIGQ9Yy53aW5kb3c9PT1jP2MuZG9jdW1lbnQ6OT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQ7VGV8fG51bGw9PVFlfHxRZSE9PVhhKGQpfHwoZD1RZSxcInNlbGVjdGlvblN0YXJ0XCJpbiBkJiZOZShkKT9kPXtzdGFydDpkLnNlbGVjdGlvblN0YXJ0LGVuZDpkLnNlbGVjdGlvbkVuZH06KGQ9KGQub3duZXJEb2N1bWVudCYmZC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGQ9e2FuY2hvck5vZGU6ZC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpkLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ZC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ZC5mb2N1c09mZnNldH0pLFNlJiZJZShTZSxkKXx8KFNlPWQsZD1vZShSZSxcIm9uU2VsZWN0XCIpLDA8ZC5sZW5ndGgmJihiPW5ldyB0ZChcIm9uU2VsZWN0XCIsXCJzZWxlY3RcIixudWxsLGIsYyksYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpkfSksYi50YXJnZXQ9UWUpKSl9XG5mdW5jdGlvbiBWZShhLGIpe3ZhciBjPXt9O2NbYS50b0xvd2VyQ2FzZSgpXT1iLnRvTG93ZXJDYXNlKCk7Y1tcIldlYmtpdFwiK2FdPVwid2Via2l0XCIrYjtjW1wiTW96XCIrYV09XCJtb3pcIitiO3JldHVybiBjfXZhciBXZT17YW5pbWF0aW9uZW5kOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25FbmRcIiksYW5pbWF0aW9uaXRlcmF0aW9uOlZlKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25JdGVyYXRpb25cIiksYW5pbWF0aW9uc3RhcnQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvblN0YXJ0XCIpLHRyYW5zaXRpb25lbmQ6VmUoXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uRW5kXCIpfSxYZT17fSxZZT17fTtcbmlhJiYoWWU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSxcIkFuaW1hdGlvbkV2ZW50XCJpbiB3aW5kb3d8fChkZWxldGUgV2UuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgV2UuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSxcIlRyYW5zaXRpb25FdmVudFwiaW4gd2luZG93fHxkZWxldGUgV2UudHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uKTtmdW5jdGlvbiBaZShhKXtpZihYZVthXSlyZXR1cm4gWGVbYV07aWYoIVdlW2FdKXJldHVybiBhO3ZhciBiPVdlW2FdLGM7Zm9yKGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpJiZjIGluIFllKXJldHVybiBYZVthXT1iW2NdO3JldHVybiBhfXZhciAkZT1aZShcImFuaW1hdGlvbmVuZFwiKSxhZj1aZShcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxiZj1aZShcImFuaW1hdGlvbnN0YXJ0XCIpLGNmPVplKFwidHJhbnNpdGlvbmVuZFwiKSxkZj1uZXcgTWFwLGVmPVwiYWJvcnQgYXV4Q2xpY2sgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWxcIi5zcGxpdChcIiBcIik7XG5mdW5jdGlvbiBmZihhLGIpe2RmLnNldChhLGIpO2ZhKGIsW2FdKX1mb3IodmFyIGdmPTA7Z2Y8ZWYubGVuZ3RoO2dmKyspe3ZhciBoZj1lZltnZl0samY9aGYudG9Mb3dlckNhc2UoKSxrZj1oZlswXS50b1VwcGVyQ2FzZSgpK2hmLnNsaWNlKDEpO2ZmKGpmLFwib25cIitrZil9ZmYoJGUsXCJvbkFuaW1hdGlvbkVuZFwiKTtmZihhZixcIm9uQW5pbWF0aW9uSXRlcmF0aW9uXCIpO2ZmKGJmLFwib25BbmltYXRpb25TdGFydFwiKTtmZihcImRibGNsaWNrXCIsXCJvbkRvdWJsZUNsaWNrXCIpO2ZmKFwiZm9jdXNpblwiLFwib25Gb2N1c1wiKTtmZihcImZvY3Vzb3V0XCIsXCJvbkJsdXJcIik7ZmYoY2YsXCJvblRyYW5zaXRpb25FbmRcIik7aGEoXCJvbk1vdXNlRW50ZXJcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKTtoYShcIm9uTW91c2VMZWF2ZVwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Qb2ludGVyRW50ZXJcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7XG5oYShcIm9uUG9pbnRlckxlYXZlXCIsW1wicG9pbnRlcm91dFwiLFwicG9pbnRlcm92ZXJcIl0pO2ZhKFwib25DaGFuZ2VcIixcImNoYW5nZSBjbGljayBmb2N1c2luIGZvY3Vzb3V0IGlucHV0IGtleWRvd24ga2V5dXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uU2VsZWN0XCIsXCJmb2N1c291dCBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzaW4ga2V5ZG93biBrZXl1cCBtb3VzZWRvd24gbW91c2V1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25CZWZvcmVJbnB1dFwiLFtcImNvbXBvc2l0aW9uZW5kXCIsXCJrZXlwcmVzc1wiLFwidGV4dElucHV0XCIsXCJwYXN0ZVwiXSk7ZmEoXCJvbkNvbXBvc2l0aW9uRW5kXCIsXCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkNvbXBvc2l0aW9uU3RhcnRcIixcImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpO1xuZmEoXCJvbkNvbXBvc2l0aW9uVXBkYXRlXCIsXCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7dmFyIGxmPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmdcIi5zcGxpdChcIiBcIiksbWY9bmV3IFNldChcImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZVwiLnNwbGl0KFwiIFwiKS5jb25jYXQobGYpKTtcbmZ1bmN0aW9uIG5mKGEsYixjKXt2YXIgZD1hLnR5cGV8fFwidW5rbm93bi1ldmVudFwiO2EuY3VycmVudFRhcmdldD1jO1ViKGQsYix2b2lkIDAsYSk7YS5jdXJyZW50VGFyZ2V0PW51bGx9XG5mdW5jdGlvbiBzZShhLGIpe2I9MCE9PShiJjQpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5ldmVudDtkPWQubGlzdGVuZXJzO2E6e3ZhciBmPXZvaWQgMDtpZihiKWZvcih2YXIgZz1kLmxlbmd0aC0xOzA8PWc7Zy0tKXt2YXIgaD1kW2ddLGs9aC5pbnN0YW5jZSxsPWguY3VycmVudFRhcmdldDtoPWgubGlzdGVuZXI7aWYoayE9PWYmJmUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBhO25mKGUsaCxsKTtmPWt9ZWxzZSBmb3IoZz0wO2c8ZC5sZW5ndGg7ZysrKXtoPWRbZ107az1oLmluc3RhbmNlO2w9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a319fWlmKFFiKXRocm93IGE9UmIsUWI9ITEsUmI9bnVsbCxhO31cbmZ1bmN0aW9uIEQoYSxiKXt2YXIgYz1iW29mXTt2b2lkIDA9PT1jJiYoYz1iW29mXT1uZXcgU2V0KTt2YXIgZD1hK1wiX19idWJibGVcIjtjLmhhcyhkKXx8KHBmKGIsYSwyLCExKSxjLmFkZChkKSl9ZnVuY3Rpb24gcWYoYSxiLGMpe3ZhciBkPTA7YiYmKGR8PTQpO3BmKGMsYSxkLGIpfXZhciByZj1cIl9yZWFjdExpc3RlbmluZ1wiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO2Z1bmN0aW9uIHNmKGEpe2lmKCFhW3JmXSl7YVtyZl09ITA7ZGEuZm9yRWFjaChmdW5jdGlvbihiKXtcInNlbGVjdGlvbmNoYW5nZVwiIT09YiYmKG1mLmhhcyhiKXx8cWYoYiwhMSxhKSxxZihiLCEwLGEpKX0pO3ZhciBiPTk9PT1hLm5vZGVUeXBlP2E6YS5vd25lckRvY3VtZW50O251bGw9PT1ifHxiW3JmXXx8KGJbcmZdPSEwLHFmKFwic2VsZWN0aW9uY2hhbmdlXCIsITEsYikpfX1cbmZ1bmN0aW9uIHBmKGEsYixjLGQpe3N3aXRjaChqZChiKSl7Y2FzZSAxOnZhciBlPWVkO2JyZWFrO2Nhc2UgNDplPWdkO2JyZWFrO2RlZmF1bHQ6ZT1mZH1jPWUuYmluZChudWxsLGIsYyxhKTtlPXZvaWQgMDshTGJ8fFwidG91Y2hzdGFydFwiIT09YiYmXCJ0b3VjaG1vdmVcIiE9PWImJlwid2hlZWxcIiE9PWJ8fChlPSEwKTtkP3ZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7Y2FwdHVyZTohMCxwYXNzaXZlOmV9KTphLmFkZEV2ZW50TGlzdGVuZXIoYixjLCEwKTp2b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse3Bhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpfVxuZnVuY3Rpb24gaGQoYSxiLGMsZCxlKXt2YXIgZj1kO2lmKDA9PT0oYiYxKSYmMD09PShiJjIpJiZudWxsIT09ZClhOmZvcig7Oyl7aWYobnVsbD09PWQpcmV0dXJuO3ZhciBnPWQudGFnO2lmKDM9PT1nfHw0PT09Zyl7dmFyIGg9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihoPT09ZXx8OD09PWgubm9kZVR5cGUmJmgucGFyZW50Tm9kZT09PWUpYnJlYWs7aWYoND09PWcpZm9yKGc9ZC5yZXR1cm47bnVsbCE9PWc7KXt2YXIgaz1nLnRhZztpZigzPT09a3x8ND09PWspaWYoaz1nLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGs9PT1lfHw4PT09ay5ub2RlVHlwZSYmay5wYXJlbnROb2RlPT09ZSlyZXR1cm47Zz1nLnJldHVybn1mb3IoO251bGwhPT1oOyl7Zz1XYyhoKTtpZihudWxsPT09ZylyZXR1cm47az1nLnRhZztpZig1PT09a3x8Nj09PWspe2Q9Zj1nO2NvbnRpbnVlIGF9aD1oLnBhcmVudE5vZGV9fWQ9ZC5yZXR1cm59SmIoZnVuY3Rpb24oKXt2YXIgZD1mLGU9eGIoYyksZz1bXTtcbmE6e3ZhciBoPWRmLmdldChhKTtpZih2b2lkIDAhPT1oKXt2YXIgaz10ZCxuPWE7c3dpdGNoKGEpe2Nhc2UgXCJrZXlwcmVzc1wiOmlmKDA9PT1vZChjKSlicmVhayBhO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6az1SZDticmVhaztjYXNlIFwiZm9jdXNpblwiOm49XCJmb2N1c1wiO2s9RmQ7YnJlYWs7Y2FzZSBcImZvY3Vzb3V0XCI6bj1cImJsdXJcIjtrPUZkO2JyZWFrO2Nhc2UgXCJiZWZvcmVibHVyXCI6Y2FzZSBcImFmdGVyYmx1clwiOms9RmQ7YnJlYWs7Y2FzZSBcImNsaWNrXCI6aWYoMj09PWMuYnV0dG9uKWJyZWFrIGE7Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcIm1vdXNlZG93blwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJtb3VzZW91dFwiOmNhc2UgXCJtb3VzZW92ZXJcIjpjYXNlIFwiY29udGV4dG1lbnVcIjprPUJkO2JyZWFrO2Nhc2UgXCJkcmFnXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJkcmFnc3RhcnRcIjpjYXNlIFwiZHJvcFwiOms9XG5EZDticmVhaztjYXNlIFwidG91Y2hjYW5jZWxcIjpjYXNlIFwidG91Y2hlbmRcIjpjYXNlIFwidG91Y2htb3ZlXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjprPVZkO2JyZWFrO2Nhc2UgJGU6Y2FzZSBhZjpjYXNlIGJmOms9SGQ7YnJlYWs7Y2FzZSBjZjprPVhkO2JyZWFrO2Nhc2UgXCJzY3JvbGxcIjprPXZkO2JyZWFrO2Nhc2UgXCJ3aGVlbFwiOms9WmQ7YnJlYWs7Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcInBhc3RlXCI6az1KZDticmVhaztjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcInBvaW50ZXJjYW5jZWxcIjpjYXNlIFwicG9pbnRlcmRvd25cIjpjYXNlIFwicG9pbnRlcm1vdmVcIjpjYXNlIFwicG9pbnRlcm91dFwiOmNhc2UgXCJwb2ludGVyb3ZlclwiOmNhc2UgXCJwb2ludGVydXBcIjprPVRkfXZhciB0PTAhPT0oYiY0KSxKPSF0JiZcInNjcm9sbFwiPT09YSx4PXQ/bnVsbCE9PWg/aCtcIkNhcHR1cmVcIjpudWxsOmg7dD1bXTtmb3IodmFyIHc9ZCx1O251bGwhPT1cbnc7KXt1PXc7dmFyIEY9dS5zdGF0ZU5vZGU7NT09PXUudGFnJiZudWxsIT09RiYmKHU9RixudWxsIT09eCYmKEY9S2Iodyx4KSxudWxsIT1GJiZ0LnB1c2godGYodyxGLHUpKSkpO2lmKEopYnJlYWs7dz13LnJldHVybn0wPHQubGVuZ3RoJiYoaD1uZXcgayhoLG4sbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6aCxsaXN0ZW5lcnM6dH0pKX19aWYoMD09PShiJjcpKXthOntoPVwibW91c2VvdmVyXCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hO2s9XCJtb3VzZW91dFwiPT09YXx8XCJwb2ludGVyb3V0XCI9PT1hO2lmKGgmJmMhPT13YiYmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KSYmKFdjKG4pfHxuW3VmXSkpYnJlYWsgYTtpZihrfHxoKXtoPWUud2luZG93PT09ZT9lOihoPWUub3duZXJEb2N1bWVudCk/aC5kZWZhdWx0Vmlld3x8aC5wYXJlbnRXaW5kb3c6d2luZG93O2lmKGspe2lmKG49Yy5yZWxhdGVkVGFyZ2V0fHxjLnRvRWxlbWVudCxrPWQsbj1uP1djKG4pOm51bGwsbnVsbCE9PVxubiYmKEo9VmIobiksbiE9PUp8fDUhPT1uLnRhZyYmNiE9PW4udGFnKSluPW51bGx9ZWxzZSBrPW51bGwsbj1kO2lmKGshPT1uKXt0PUJkO0Y9XCJvbk1vdXNlTGVhdmVcIjt4PVwib25Nb3VzZUVudGVyXCI7dz1cIm1vdXNlXCI7aWYoXCJwb2ludGVyb3V0XCI9PT1hfHxcInBvaW50ZXJvdmVyXCI9PT1hKXQ9VGQsRj1cIm9uUG9pbnRlckxlYXZlXCIseD1cIm9uUG9pbnRlckVudGVyXCIsdz1cInBvaW50ZXJcIjtKPW51bGw9PWs/aDp1ZShrKTt1PW51bGw9PW4/aDp1ZShuKTtoPW5ldyB0KEYsdytcImxlYXZlXCIsayxjLGUpO2gudGFyZ2V0PUo7aC5yZWxhdGVkVGFyZ2V0PXU7Rj1udWxsO1djKGUpPT09ZCYmKHQ9bmV3IHQoeCx3K1wiZW50ZXJcIixuLGMsZSksdC50YXJnZXQ9dSx0LnJlbGF0ZWRUYXJnZXQ9SixGPXQpO0o9RjtpZihrJiZuKWI6e3Q9azt4PW47dz0wO2Zvcih1PXQ7dTt1PXZmKHUpKXcrKzt1PTA7Zm9yKEY9eDtGO0Y9dmYoRikpdSsrO2Zvcig7MDx3LXU7KXQ9dmYodCksdy0tO2Zvcig7MDx1LXc7KXg9XG52Zih4KSx1LS07Zm9yKDt3LS07KXtpZih0PT09eHx8bnVsbCE9PXgmJnQ9PT14LmFsdGVybmF0ZSlicmVhayBiO3Q9dmYodCk7eD12Zih4KX10PW51bGx9ZWxzZSB0PW51bGw7bnVsbCE9PWsmJndmKGcsaCxrLHQsITEpO251bGwhPT1uJiZudWxsIT09SiYmd2YoZyxKLG4sdCwhMCl9fX1hOntoPWQ/dWUoZCk6d2luZG93O2s9aC5ub2RlTmFtZSYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKFwic2VsZWN0XCI9PT1rfHxcImlucHV0XCI9PT1rJiZcImZpbGVcIj09PWgudHlwZSl2YXIgbmE9dmU7ZWxzZSBpZihtZShoKSlpZih3ZSluYT1GZTtlbHNle25hPURlO3ZhciB4YT1DZX1lbHNlKGs9aC5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWsudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWgudHlwZXx8XCJyYWRpb1wiPT09aC50eXBlKSYmKG5hPUVlKTtpZihuYSYmKG5hPW5hKGEsZCkpKXtuZShnLG5hLGMsZSk7YnJlYWsgYX14YSYmeGEoYSxoLGQpO1wiZm9jdXNvdXRcIj09PWEmJih4YT1oLl93cmFwcGVyU3RhdGUpJiZcbnhhLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1oLnR5cGUmJmNiKGgsXCJudW1iZXJcIixoLnZhbHVlKX14YT1kP3VlKGQpOndpbmRvdztzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjppZihtZSh4YSl8fFwidHJ1ZVwiPT09eGEuY29udGVudEVkaXRhYmxlKVFlPXhhLFJlPWQsU2U9bnVsbDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpTZT1SZT1RZT1udWxsO2JyZWFrO2Nhc2UgXCJtb3VzZWRvd25cIjpUZT0hMDticmVhaztjYXNlIFwiY29udGV4dG1lbnVcIjpjYXNlIFwibW91c2V1cFwiOmNhc2UgXCJkcmFnZW5kXCI6VGU9ITE7VWUoZyxjLGUpO2JyZWFrO2Nhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjppZihQZSlicmVhaztjYXNlIFwia2V5ZG93blwiOmNhc2UgXCJrZXl1cFwiOlVlKGcsYyxlKX12YXIgJGE7aWYoYWUpYjp7c3dpdGNoKGEpe2Nhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIGJhPVwib25Db21wb3NpdGlvblN0YXJ0XCI7YnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpiYT1cIm9uQ29tcG9zaXRpb25FbmRcIjtcbmJyZWFrIGI7Y2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6YmE9XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCI7YnJlYWsgYn1iYT12b2lkIDB9ZWxzZSBpZT9nZShhLGMpJiYoYmE9XCJvbkNvbXBvc2l0aW9uRW5kXCIpOlwia2V5ZG93blwiPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIik7YmEmJihkZSYmXCJrb1wiIT09Yy5sb2NhbGUmJihpZXx8XCJvbkNvbXBvc2l0aW9uU3RhcnRcIiE9PWJhP1wib25Db21wb3NpdGlvbkVuZFwiPT09YmEmJmllJiYoJGE9bmQoKSk6KGtkPWUsbGQ9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsaWU9ITApKSx4YT1vZShkLGJhKSwwPHhhLmxlbmd0aCYmKGJhPW5ldyBMZChiYSxhLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmJhLGxpc3RlbmVyczp4YX0pLCRhP2JhLmRhdGE9JGE6KCRhPWhlKGMpLG51bGwhPT0kYSYmKGJhLmRhdGE9JGEpKSkpO2lmKCRhPWNlP2plKGEsYyk6a2UoYSxjKSlkPW9lKGQsXCJvbkJlZm9yZUlucHV0XCIpLFxuMDxkLmxlbmd0aCYmKGU9bmV3IExkKFwib25CZWZvcmVJbnB1dFwiLFwiYmVmb3JlaW5wdXRcIixudWxsLGMsZSksZy5wdXNoKHtldmVudDplLGxpc3RlbmVyczpkfSksZS5kYXRhPSRhKX1zZShnLGIpfSl9ZnVuY3Rpb24gdGYoYSxiLGMpe3JldHVybntpbnN0YW5jZTphLGxpc3RlbmVyOmIsY3VycmVudFRhcmdldDpjfX1mdW5jdGlvbiBvZShhLGIpe2Zvcih2YXIgYz1iK1wiQ2FwdHVyZVwiLGQ9W107bnVsbCE9PWE7KXt2YXIgZT1hLGY9ZS5zdGF0ZU5vZGU7NT09PWUudGFnJiZudWxsIT09ZiYmKGU9ZixmPUtiKGEsYyksbnVsbCE9ZiYmZC51bnNoaWZ0KHRmKGEsZixlKSksZj1LYihhLGIpLG51bGwhPWYmJmQucHVzaCh0ZihhLGYsZSkpKTthPWEucmV0dXJufXJldHVybiBkfWZ1bmN0aW9uIHZmKGEpe2lmKG51bGw9PT1hKXJldHVybiBudWxsO2RvIGE9YS5yZXR1cm47d2hpbGUoYSYmNSE9PWEudGFnKTtyZXR1cm4gYT9hOm51bGx9XG5mdW5jdGlvbiB3ZihhLGIsYyxkLGUpe2Zvcih2YXIgZj1iLl9yZWFjdE5hbWUsZz1bXTtudWxsIT09YyYmYyE9PWQ7KXt2YXIgaD1jLGs9aC5hbHRlcm5hdGUsbD1oLnN0YXRlTm9kZTtpZihudWxsIT09ayYmaz09PWQpYnJlYWs7NT09PWgudGFnJiZudWxsIT09bCYmKGg9bCxlPyhrPUtiKGMsZiksbnVsbCE9ayYmZy51bnNoaWZ0KHRmKGMsayxoKSkpOmV8fChrPUtiKGMsZiksbnVsbCE9ayYmZy5wdXNoKHRmKGMsayxoKSkpKTtjPWMucmV0dXJufTAhPT1nLmxlbmd0aCYmYS5wdXNoKHtldmVudDpiLGxpc3RlbmVyczpnfSl9dmFyIHhmPS9cXHJcXG4/L2cseWY9L1xcdTAwMDB8XFx1RkZGRC9nO2Z1bmN0aW9uIHpmKGEpe3JldHVybihcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpcIlwiK2EpLnJlcGxhY2UoeGYsXCJcXG5cIikucmVwbGFjZSh5ZixcIlwiKX1mdW5jdGlvbiBBZihhLGIsYyl7Yj16ZihiKTtpZih6ZihhKSE9PWImJmMpdGhyb3cgRXJyb3IocCg0MjUpKTt9ZnVuY3Rpb24gQmYoKXt9XG52YXIgQ2Y9bnVsbCxEZj1udWxsO2Z1bmN0aW9uIEVmKGEsYil7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09YXx8XCJub3NjcmlwdFwiPT09YXx8XCJzdHJpbmdcIj09PXR5cGVvZiBiLmNoaWxkcmVufHxcIm51bWJlclwiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwib2JqZWN0XCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfVxudmFyIEZmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLEdmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxIZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxKZj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBIZj9mdW5jdGlvbihhKXtyZXR1cm4gSGYucmVzb2x2ZShudWxsKS50aGVuKGEpLmNhdGNoKElmKX06RmY7ZnVuY3Rpb24gSWYoYSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGE7fSl9XG5mdW5jdGlvbiBLZihhLGIpe3ZhciBjPWIsZD0wO2Rve3ZhciBlPWMubmV4dFNpYmxpbmc7YS5yZW1vdmVDaGlsZChjKTtpZihlJiY4PT09ZS5ub2RlVHlwZSlpZihjPWUuZGF0YSxcIi8kXCI9PT1jKXtpZigwPT09ZCl7YS5yZW1vdmVDaGlsZChlKTtiZChiKTtyZXR1cm59ZC0tfWVsc2VcIiRcIiE9PWMmJlwiJD9cIiE9PWMmJlwiJCFcIiE9PWN8fGQrKztjPWV9d2hpbGUoYyk7YmQoYil9ZnVuY3Rpb24gTGYoYSl7Zm9yKDtudWxsIT1hO2E9YS5uZXh0U2libGluZyl7dmFyIGI9YS5ub2RlVHlwZTtpZigxPT09Ynx8Mz09PWIpYnJlYWs7aWYoOD09PWIpe2I9YS5kYXRhO2lmKFwiJFwiPT09Ynx8XCIkIVwiPT09Ynx8XCIkP1wiPT09YilicmVhaztpZihcIi8kXCI9PT1iKXJldHVybiBudWxsfX1yZXR1cm4gYX1cbmZ1bmN0aW9uIE1mKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoXCIkXCI9PT1jfHxcIiQhXCI9PT1jfHxcIiQ/XCI9PT1jKXtpZigwPT09YilyZXR1cm4gYTtiLS19ZWxzZVwiLyRcIj09PWMmJmIrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBOZj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxPZj1cIl9fcmVhY3RGaWJlciRcIitOZixQZj1cIl9fcmVhY3RQcm9wcyRcIitOZix1Zj1cIl9fcmVhY3RDb250YWluZXIkXCIrTmYsb2Y9XCJfX3JlYWN0RXZlbnRzJFwiK05mLFFmPVwiX19yZWFjdExpc3RlbmVycyRcIitOZixSZj1cIl9fcmVhY3RIYW5kbGVzJFwiK05mO1xuZnVuY3Rpb24gV2MoYSl7dmFyIGI9YVtPZl07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbdWZdfHxjW09mXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPU1mKGEpO251bGwhPT1hOyl7aWYoYz1hW09mXSlyZXR1cm4gYzthPU1mKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDYihhKXthPWFbT2ZdfHxhW3VmXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gdWUoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlO3Rocm93IEVycm9yKHAoMzMpKTt9ZnVuY3Rpb24gRGIoYSl7cmV0dXJuIGFbUGZdfHxudWxsfXZhciBTZj1bXSxUZj0tMTtmdW5jdGlvbiBVZihhKXtyZXR1cm57Y3VycmVudDphfX1cbmZ1bmN0aW9uIEUoYSl7MD5UZnx8KGEuY3VycmVudD1TZltUZl0sU2ZbVGZdPW51bGwsVGYtLSl9ZnVuY3Rpb24gRyhhLGIpe1RmKys7U2ZbVGZdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn12YXIgVmY9e30sSD1VZihWZiksV2Y9VWYoITEpLFhmPVZmO2Z1bmN0aW9uIFlmKGEsYil7dmFyIGM9YS50eXBlLmNvbnRleHRUeXBlcztpZighYylyZXR1cm4gVmY7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoZCYmZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PT09YilyZXR1cm4gZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDt2YXIgZT17fSxmO2ZvcihmIGluIGMpZVtmXT1iW2ZdO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1iLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9XG5mdW5jdGlvbiBaZihhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfWZ1bmN0aW9uICRmKCl7RShXZik7RShIKX1mdW5jdGlvbiBhZyhhLGIsYyl7aWYoSC5jdXJyZW50IT09VmYpdGhyb3cgRXJyb3IocCgxNjgpKTtHKEgsYik7RyhXZixjKX1mdW5jdGlvbiBiZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7Yj1iLmNoaWxkQ29udGV4dFR5cGVzO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBkLmdldENoaWxkQ29udGV4dClyZXR1cm4gYztkPWQuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBlIGluIGQpaWYoIShlIGluIGIpKXRocm93IEVycm9yKHAoMTA4LFJhKGEpfHxcIlVua25vd25cIixlKSk7cmV0dXJuIEEoe30sYyxkKX1cbmZ1bmN0aW9uIGNnKGEpe2E9KGE9YS5zdGF0ZU5vZGUpJiZhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxWZjtYZj1ILmN1cnJlbnQ7RyhILGEpO0coV2YsV2YuY3VycmVudCk7cmV0dXJuITB9ZnVuY3Rpb24gZGcoYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2lmKCFkKXRocm93IEVycm9yKHAoMTY5KSk7Yz8oYT1iZyhhLGIsWGYpLGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9YSxFKFdmKSxFKEgpLEcoSCxhKSk6RShXZik7RyhXZixjKX12YXIgZWc9bnVsbCxmZz0hMSxnZz0hMTtmdW5jdGlvbiBoZyhhKXtudWxsPT09ZWc/ZWc9W2FdOmVnLnB1c2goYSl9ZnVuY3Rpb24gaWcoYSl7Zmc9ITA7aGcoYSl9XG5mdW5jdGlvbiBqZygpe2lmKCFnZyYmbnVsbCE9PWVnKXtnZz0hMDt2YXIgYT0wLGI9Qzt0cnl7dmFyIGM9ZWc7Zm9yKEM9MTthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1thXTtkbyBkPWQoITApO3doaWxlKG51bGwhPT1kKX1lZz1udWxsO2ZnPSExfWNhdGNoKGUpe3Rocm93IG51bGwhPT1lZyYmKGVnPWVnLnNsaWNlKGErMSkpLGFjKGZjLGpnKSxlO31maW5hbGx5e0M9YixnZz0hMX19cmV0dXJuIG51bGx9dmFyIGtnPVtdLGxnPTAsbWc9bnVsbCxuZz0wLG9nPVtdLHBnPTAscWc9bnVsbCxyZz0xLHNnPVwiXCI7ZnVuY3Rpb24gdGcoYSxiKXtrZ1tsZysrXT1uZztrZ1tsZysrXT1tZzttZz1hO25nPWJ9XG5mdW5jdGlvbiB1ZyhhLGIsYyl7b2dbcGcrK109cmc7b2dbcGcrK109c2c7b2dbcGcrK109cWc7cWc9YTt2YXIgZD1yZzthPXNnO3ZhciBlPTMyLW9jKGQpLTE7ZCY9figxPDxlKTtjKz0xO3ZhciBmPTMyLW9jKGIpK2U7aWYoMzA8Zil7dmFyIGc9ZS1lJTU7Zj0oZCYoMTw8ZyktMSkudG9TdHJpbmcoMzIpO2Q+Pj1nO2UtPWc7cmc9MTw8MzItb2MoYikrZXxjPDxlfGQ7c2c9ZithfWVsc2Ugcmc9MTw8ZnxjPDxlfGQsc2c9YX1mdW5jdGlvbiB2ZyhhKXtudWxsIT09YS5yZXR1cm4mJih0ZyhhLDEpLHVnKGEsMSwwKSl9ZnVuY3Rpb24gd2coYSl7Zm9yKDthPT09bWc7KW1nPWtnWy0tbGddLGtnW2xnXT1udWxsLG5nPWtnWy0tbGddLGtnW2xnXT1udWxsO2Zvcig7YT09PXFnOylxZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxzZz1vZ1stLXBnXSxvZ1twZ109bnVsbCxyZz1vZ1stLXBnXSxvZ1twZ109bnVsbH12YXIgeGc9bnVsbCx5Zz1udWxsLEk9ITEsemc9bnVsbDtcbmZ1bmN0aW9uIEFnKGEsYil7dmFyIGM9QmcoNSxudWxsLG51bGwsMCk7Yy5lbGVtZW50VHlwZT1cIkRFTEVURURcIjtjLnN0YXRlTm9kZT1iO2MucmV0dXJuPWE7Yj1hLmRlbGV0aW9ucztudWxsPT09Yj8oYS5kZWxldGlvbnM9W2NdLGEuZmxhZ3N8PTE2KTpiLnB1c2goYyl9XG5mdW5jdGlvbiBDZyhhLGIpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnZhciBjPWEudHlwZTtiPTEhPT1iLm5vZGVUeXBlfHxjLnRvTG93ZXJDYXNlKCkhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDpiO3JldHVybiBudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPUxmKGIuZmlyc3RDaGlsZCksITApOiExO2Nhc2UgNjpyZXR1cm4gYj1cIlwiPT09YS5wZW5kaW5nUHJvcHN8fDMhPT1iLm5vZGVUeXBlP251bGw6YixudWxsIT09Yj8oYS5zdGF0ZU5vZGU9Yix4Zz1hLHlnPW51bGwsITApOiExO2Nhc2UgMTM6cmV0dXJuIGI9OCE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhjPW51bGwhPT1xZz97aWQ6cmcsb3ZlcmZsb3c6c2d9Om51bGwsYS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmIsdHJlZUNvbnRleHQ6YyxyZXRyeUxhbmU6MTA3Mzc0MTgyNH0sYz1CZygxOCxudWxsLG51bGwsMCksYy5zdGF0ZU5vZGU9YixjLnJldHVybj1hLGEuY2hpbGQ9Yyx4Zz1hLHlnPVxubnVsbCwhMCk6ITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gRGcoYSl7cmV0dXJuIDAhPT0oYS5tb2RlJjEpJiYwPT09KGEuZmxhZ3MmMTI4KX1mdW5jdGlvbiBFZyhhKXtpZihJKXt2YXIgYj15ZztpZihiKXt2YXIgYz1iO2lmKCFDZyhhLGIpKXtpZihEZyhhKSl0aHJvdyBFcnJvcihwKDQxOCkpO2I9TGYoYy5uZXh0U2libGluZyk7dmFyIGQ9eGc7YiYmQ2coYSxiKT9BZyhkLGMpOihhLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MixJPSExLHhnPWEpfX1lbHNle2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7YS5mbGFncz1hLmZsYWdzJi00MDk3fDI7ST0hMTt4Zz1hfX19ZnVuY3Rpb24gRmcoYSl7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWEmJjUhPT1hLnRhZyYmMyE9PWEudGFnJiYxMyE9PWEudGFnOylhPWEucmV0dXJuO3hnPWF9XG5mdW5jdGlvbiBHZyhhKXtpZihhIT09eGcpcmV0dXJuITE7aWYoIUkpcmV0dXJuIEZnKGEpLEk9ITAsITE7dmFyIGI7KGI9MyE9PWEudGFnKSYmIShiPTUhPT1hLnRhZykmJihiPWEudHlwZSxiPVwiaGVhZFwiIT09YiYmXCJib2R5XCIhPT1iJiYhRWYoYS50eXBlLGEubWVtb2l6ZWRQcm9wcykpO2lmKGImJihiPXlnKSl7aWYoRGcoYSkpdGhyb3cgSGcoKSxFcnJvcihwKDQxOCkpO2Zvcig7YjspQWcoYSxiKSxiPUxmKGIubmV4dFNpYmxpbmcpfUZnKGEpO2lmKDEzPT09YS50YWcpe2E9YS5tZW1vaXplZFN0YXRlO2E9bnVsbCE9PWE/YS5kZWh5ZHJhdGVkOm51bGw7aWYoIWEpdGhyb3cgRXJyb3IocCgzMTcpKTthOnthPWEubmV4dFNpYmxpbmc7Zm9yKGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIi8kXCI9PT1jKXtpZigwPT09Yil7eWc9TGYoYS5uZXh0U2libGluZyk7YnJlYWsgYX1iLS19ZWxzZVwiJFwiIT09YyYmXCIkIVwiIT09YyYmXCIkP1wiIT09Y3x8YisrfWE9YS5uZXh0U2libGluZ315Zz1cbm51bGx9fWVsc2UgeWc9eGc/TGYoYS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gSGcoKXtmb3IodmFyIGE9eWc7YTspYT1MZihhLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBJZygpe3lnPXhnPW51bGw7ST0hMX1mdW5jdGlvbiBKZyhhKXtudWxsPT09emc/emc9W2FdOnpnLnB1c2goYSl9dmFyIEtnPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnO2Z1bmN0aW9uIExnKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9QSh7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pO3JldHVybiBifXJldHVybiBifXZhciBNZz1VZihudWxsKSxOZz1udWxsLE9nPW51bGwsUGc9bnVsbDtmdW5jdGlvbiBRZygpe1BnPU9nPU5nPW51bGx9ZnVuY3Rpb24gUmcoYSl7dmFyIGI9TWcuY3VycmVudDtFKE1nKTthLl9jdXJyZW50VmFsdWU9Yn1cbmZ1bmN0aW9uIFNnKGEsYixjKXtmb3IoO251bGwhPT1hOyl7dmFyIGQ9YS5hbHRlcm5hdGU7KGEuY2hpbGRMYW5lcyZiKSE9PWI/KGEuY2hpbGRMYW5lc3w9YixudWxsIT09ZCYmKGQuY2hpbGRMYW5lc3w9YikpOm51bGwhPT1kJiYoZC5jaGlsZExhbmVzJmIpIT09YiYmKGQuY2hpbGRMYW5lc3w9Yik7aWYoYT09PWMpYnJlYWs7YT1hLnJldHVybn19ZnVuY3Rpb24gVGcoYSxiKXtOZz1hO1BnPU9nPW51bGw7YT1hLmRlcGVuZGVuY2llcztudWxsIT09YSYmbnVsbCE9PWEuZmlyc3RDb250ZXh0JiYoMCE9PShhLmxhbmVzJmIpJiYoVWc9ITApLGEuZmlyc3RDb250ZXh0PW51bGwpfVxuZnVuY3Rpb24gVmcoYSl7dmFyIGI9YS5fY3VycmVudFZhbHVlO2lmKFBnIT09YSlpZihhPXtjb250ZXh0OmEsbWVtb2l6ZWRWYWx1ZTpiLG5leHQ6bnVsbH0sbnVsbD09PU9nKXtpZihudWxsPT09TmcpdGhyb3cgRXJyb3IocCgzMDgpKTtPZz1hO05nLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6YX19ZWxzZSBPZz1PZy5uZXh0PWE7cmV0dXJuIGJ9dmFyIFdnPW51bGw7ZnVuY3Rpb24gWGcoYSl7bnVsbD09PVdnP1dnPVthXTpXZy5wdXNoKGEpfWZ1bmN0aW9uIFlnKGEsYixjLGQpe3ZhciBlPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGMubmV4dD1jLFhnKGIpKTooYy5uZXh0PWUubmV4dCxlLm5leHQ9Yyk7Yi5pbnRlcmxlYXZlZD1jO3JldHVybiBaZyhhLGQpfVxuZnVuY3Rpb24gWmcoYSxiKXthLmxhbmVzfD1iO3ZhciBjPWEuYWx0ZXJuYXRlO251bGwhPT1jJiYoYy5sYW5lc3w9Yik7Yz1hO2ZvcihhPWEucmV0dXJuO251bGwhPT1hOylhLmNoaWxkTGFuZXN8PWIsYz1hLmFsdGVybmF0ZSxudWxsIT09YyYmKGMuY2hpbGRMYW5lc3w9YiksYz1hLGE9YS5yZXR1cm47cmV0dXJuIDM9PT1jLnRhZz9jLnN0YXRlTm9kZTpudWxsfXZhciAkZz0hMTtmdW5jdGlvbiBhaChhKXthLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5tZW1vaXplZFN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpudWxsLGxhc3RCYXNlVXBkYXRlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowfSxlZmZlY3RzOm51bGx9fVxuZnVuY3Rpb24gYmgoYSxiKXthPWEudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT09PWEmJihiLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6YS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmEuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOmEubGFzdEJhc2VVcGRhdGUsc2hhcmVkOmEuc2hhcmVkLGVmZmVjdHM6YS5lZmZlY3RzfSl9ZnVuY3Rpb24gY2goYSxiKXtyZXR1cm57ZXZlbnRUaW1lOmEsbGFuZTpiLHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH19XG5mdW5jdGlvbiBkaChhLGIsYyl7dmFyIGQ9YS51cGRhdGVRdWV1ZTtpZihudWxsPT09ZClyZXR1cm4gbnVsbDtkPWQuc2hhcmVkO2lmKDAhPT0oSyYyKSl7dmFyIGU9ZC5wZW5kaW5nO251bGw9PT1lP2IubmV4dD1iOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLnBlbmRpbmc9YjtyZXR1cm4gWmcoYSxjKX1lPWQuaW50ZXJsZWF2ZWQ7bnVsbD09PWU/KGIubmV4dD1iLFhnKGQpKTooYi5uZXh0PWUubmV4dCxlLm5leHQ9Yik7ZC5pbnRlcmxlYXZlZD1iO3JldHVybiBaZyhhLGMpfWZ1bmN0aW9uIGVoKGEsYixjKXtiPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWImJihiPWIuc2hhcmVkLDAhPT0oYyY0MTk0MjQwKSkpe3ZhciBkPWIubGFuZXM7ZCY9YS5wZW5kaW5nTGFuZXM7Y3w9ZDtiLmxhbmVzPWM7Q2MoYSxjKX19XG5mdW5jdGlvbiBmaChhLGIpe3ZhciBjPWEudXBkYXRlUXVldWUsZD1hLmFsdGVybmF0ZTtpZihudWxsIT09ZCYmKGQ9ZC51cGRhdGVRdWV1ZSxjPT09ZCkpe3ZhciBlPW51bGwsZj1udWxsO2M9Yy5maXJzdEJhc2VVcGRhdGU7aWYobnVsbCE9PWMpe2Rve3ZhciBnPXtldmVudFRpbWU6Yy5ldmVudFRpbWUsbGFuZTpjLmxhbmUsdGFnOmMudGFnLHBheWxvYWQ6Yy5wYXlsb2FkLGNhbGxiYWNrOmMuY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09Zj9lPWY9ZzpmPWYubmV4dD1nO2M9Yy5uZXh0fXdoaWxlKG51bGwhPT1jKTtudWxsPT09Zj9lPWY9YjpmPWYubmV4dD1ifWVsc2UgZT1mPWI7Yz17YmFzZVN0YXRlOmQuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTplLGxhc3RCYXNlVXBkYXRlOmYsc2hhcmVkOmQuc2hhcmVkLGVmZmVjdHM6ZC5lZmZlY3RzfTthLnVwZGF0ZVF1ZXVlPWM7cmV0dXJufWE9Yy5sYXN0QmFzZVVwZGF0ZTtudWxsPT09YT9jLmZpcnN0QmFzZVVwZGF0ZT1iOmEubmV4dD1cbmI7Yy5sYXN0QmFzZVVwZGF0ZT1ifVxuZnVuY3Rpb24gZ2goYSxiLGMsZCl7dmFyIGU9YS51cGRhdGVRdWV1ZTskZz0hMTt2YXIgZj1lLmZpcnN0QmFzZVVwZGF0ZSxnPWUubGFzdEJhc2VVcGRhdGUsaD1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1oKXtlLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGs9aCxsPWsubmV4dDtrLm5leHQ9bnVsbDtudWxsPT09Zz9mPWw6Zy5uZXh0PWw7Zz1rO3ZhciBtPWEuYWx0ZXJuYXRlO251bGwhPT1tJiYobT1tLnVwZGF0ZVF1ZXVlLGg9bS5sYXN0QmFzZVVwZGF0ZSxoIT09ZyYmKG51bGw9PT1oP20uZmlyc3RCYXNlVXBkYXRlPWw6aC5uZXh0PWwsbS5sYXN0QmFzZVVwZGF0ZT1rKSl9aWYobnVsbCE9PWYpe3ZhciBxPWUuYmFzZVN0YXRlO2c9MDttPWw9az1udWxsO2g9Zjtkb3t2YXIgcj1oLmxhbmUseT1oLmV2ZW50VGltZTtpZigoZCZyKT09PXIpe251bGwhPT1tJiYobT1tLm5leHQ9e2V2ZW50VGltZTp5LGxhbmU6MCx0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxcbm5leHQ6bnVsbH0pO2E6e3ZhciBuPWEsdD1oO3I9Yjt5PWM7c3dpdGNoKHQudGFnKXtjYXNlIDE6bj10LnBheWxvYWQ7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4pe3E9bi5jYWxsKHkscSxyKTticmVhayBhfXE9bjticmVhayBhO2Nhc2UgMzpuLmZsYWdzPW4uZmxhZ3MmLTY1NTM3fDEyODtjYXNlIDA6bj10LnBheWxvYWQ7cj1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygbj9uLmNhbGwoeSxxLHIpOm47aWYobnVsbD09PXJ8fHZvaWQgMD09PXIpYnJlYWsgYTtxPUEoe30scSxyKTticmVhayBhO2Nhc2UgMjokZz0hMH19bnVsbCE9PWguY2FsbGJhY2smJjAhPT1oLmxhbmUmJihhLmZsYWdzfD02NCxyPWUuZWZmZWN0cyxudWxsPT09cj9lLmVmZmVjdHM9W2hdOnIucHVzaChoKSl9ZWxzZSB5PXtldmVudFRpbWU6eSxsYW5lOnIsdGFnOmgudGFnLHBheWxvYWQ6aC5wYXlsb2FkLGNhbGxiYWNrOmguY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09bT8obD1tPXksaz1xKTptPW0ubmV4dD15LGd8PXI7XG5oPWgubmV4dDtpZihudWxsPT09aClpZihoPWUuc2hhcmVkLnBlbmRpbmcsbnVsbD09PWgpYnJlYWs7ZWxzZSByPWgsaD1yLm5leHQsci5uZXh0PW51bGwsZS5sYXN0QmFzZVVwZGF0ZT1yLGUuc2hhcmVkLnBlbmRpbmc9bnVsbH13aGlsZSgxKTtudWxsPT09bSYmKGs9cSk7ZS5iYXNlU3RhdGU9aztlLmZpcnN0QmFzZVVwZGF0ZT1sO2UubGFzdEJhc2VVcGRhdGU9bTtiPWUuc2hhcmVkLmludGVybGVhdmVkO2lmKG51bGwhPT1iKXtlPWI7ZG8gZ3w9ZS5sYW5lLGU9ZS5uZXh0O3doaWxlKGUhPT1iKX1lbHNlIG51bGw9PT1mJiYoZS5zaGFyZWQubGFuZXM9MCk7aGh8PWc7YS5sYW5lcz1nO2EubWVtb2l6ZWRTdGF0ZT1xfX1cbmZ1bmN0aW9uIGloKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD1hW2JdLGU9ZC5jYWxsYmFjaztpZihudWxsIT09ZSl7ZC5jYWxsYmFjaz1udWxsO2Q9YztpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihwKDE5MSxlKSk7ZS5jYWxsKGQpfX19dmFyIGpoPShuZXcgYWEuQ29tcG9uZW50KS5yZWZzO2Z1bmN0aW9uIGtoKGEsYixjLGQpe2I9YS5tZW1vaXplZFN0YXRlO2M9YyhkLGIpO2M9bnVsbD09PWN8fHZvaWQgMD09PWM/YjpBKHt9LGIsYyk7YS5tZW1vaXplZFN0YXRlPWM7MD09PWEubGFuZXMmJihhLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1jKX1cbnZhciBuaD17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxzKT9WYihhKT09PWE6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO2I9ZGgoYSxmLGUpO251bGwhPT1iJiYobWgoYixhLGUsZCksZWgoYixhLGUpKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1MKCksZT1saChhKSxmPWNoKGQsZSk7Zi50YWc9MTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1kaChhLGYsZSk7bnVsbCE9PWImJihtaChiLGEsZSxkKSxlaChiLGEsZSkpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBjPUwoKSxkPVxubGgoYSksZT1jaChjLGQpO2UudGFnPTI7dm9pZCAwIT09YiYmbnVsbCE9PWImJihlLmNhbGxiYWNrPWIpO2I9ZGgoYSxlLGQpO251bGwhPT1iJiYobWgoYixhLGQsYyksZWgoYixhLGQpKX19O2Z1bmN0aW9uIG9oKGEsYixjLGQsZSxmLGcpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuXCJmdW5jdGlvblwiPT09dHlwZW9mIGEuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Euc2hvdWxkQ29tcG9uZW50VXBkYXRlKGQsZixnKTpiLnByb3RvdHlwZSYmYi5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQ/IUllKGMsZCl8fCFJZShlLGYpOiEwfVxuZnVuY3Rpb24gcGgoYSxiLGMpe3ZhciBkPSExLGU9VmY7dmFyIGY9Yi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGYmJm51bGwhPT1mP2Y9VmcoZik6KGU9WmYoYik/WGY6SC5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk/WWYoYSxlKTpWZik7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPW5oO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbHM9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifVxuZnVuY3Rpb24gcWgoYSxiLGMsZCl7YT1iLnN0YXRlO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGQpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7Yi5zdGF0ZSE9PWEmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoYixiLnN0YXRlLG51bGwpfVxuZnVuY3Rpb24gcmgoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz1qaDthaChhKTt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/ZS5jb250ZXh0PVZnKGYpOihmPVpmKGIpP1hmOkguY3VycmVudCxlLmNvbnRleHQ9WWYoYSxmKSk7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7Zj1iLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmKGtoKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fChiPWUuc3RhdGUsXG5cImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnQmJmUuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJm5oLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLGdoKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5jb21wb25lbnREaWRNb3VudCYmKGEuZmxhZ3N8PTQxOTQzMDgpfVxuZnVuY3Rpb24gc2goYSxiLGMpe2E9Yy5yZWY7aWYobnVsbCE9PWEmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBhJiZcIm9iamVjdFwiIT09dHlwZW9mIGEpe2lmKGMuX293bmVyKXtjPWMuX293bmVyO2lmKGMpe2lmKDEhPT1jLnRhZyl0aHJvdyBFcnJvcihwKDMwOSkpO3ZhciBkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IEVycm9yKHAoMTQ3LGEpKTt2YXIgZT1kLGY9XCJcIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnJlZiYmYi5yZWYuX3N0cmluZ1JlZj09PWYpcmV0dXJuIGIucmVmO2I9ZnVuY3Rpb24oYSl7dmFyIGI9ZS5yZWZzO2I9PT1qaCYmKGI9ZS5yZWZzPXt9KTtudWxsPT09YT9kZWxldGUgYltmXTpiW2ZdPWF9O2IuX3N0cmluZ1JlZj1mO3JldHVybiBifWlmKFwic3RyaW5nXCIhPT10eXBlb2YgYSl0aHJvdyBFcnJvcihwKDI4NCkpO2lmKCFjLl9vd25lcil0aHJvdyBFcnJvcihwKDI5MCxhKSk7fXJldHVybiBhfVxuZnVuY3Rpb24gdGgoYSxiKXthPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKTt0aHJvdyBFcnJvcihwKDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT1hP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYikuam9pbihcIiwgXCIpK1wifVwiOmEpKTt9ZnVuY3Rpb24gdWgoYSl7dmFyIGI9YS5faW5pdDtyZXR1cm4gYihhLl9wYXlsb2FkKX1cbmZ1bmN0aW9uIHZoKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmRlbGV0aW9ucztudWxsPT09ZD8oYi5kZWxldGlvbnM9W2NdLGIuZmxhZ3N8PTE2KTpkLnB1c2goYyl9fWZ1bmN0aW9uIGMoYyxkKXtpZighYSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1kOyliKGMsZCksZD1kLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChhLGIpe2ZvcihhPW5ldyBNYXA7bnVsbCE9PWI7KW51bGwhPT1iLmtleT9hLnNldChiLmtleSxiKTphLnNldChiLmluZGV4LGIpLGI9Yi5zaWJsaW5nO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXthPXdoKGEsYik7YS5pbmRleD0wO2Euc2libGluZz1udWxsO3JldHVybiBhfWZ1bmN0aW9uIGYoYixjLGQpe2IuaW5kZXg9ZDtpZighYSlyZXR1cm4gYi5mbGFnc3w9MTA0ODU3NixjO2Q9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWQpcmV0dXJuIGQ9ZC5pbmRleCxkPGM/KGIuZmxhZ3N8PTIsYyk6ZDtiLmZsYWdzfD0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmXG5udWxsPT09Yi5hbHRlcm5hdGUmJihiLmZsYWdzfD0yKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjLGQpe2lmKG51bGw9PT1ifHw2IT09Yi50YWcpcmV0dXJuIGI9eGgoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXt2YXIgZj1jLnR5cGU7aWYoZj09PXlhKXJldHVybiBtKGEsYixjLnByb3BzLmNoaWxkcmVuLGQsYy5rZXkpO2lmKG51bGwhPT1iJiYoYi5lbGVtZW50VHlwZT09PWZ8fFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYuJCR0eXBlb2Y9PT1IYSYmdWgoZik9PT1iLnR5cGUpKXJldHVybiBkPWUoYixjLnByb3BzKSxkLnJlZj1zaChhLGIsYyksZC5yZXR1cm49YSxkO2Q9eWgoYy50eXBlLGMua2V5LGMucHJvcHMsbnVsbCxhLm1vZGUsZCk7ZC5yZWY9c2goYSxiLGMpO2QucmV0dXJuPWE7cmV0dXJuIGR9ZnVuY3Rpb24gbChhLGIsYyxkKXtpZihudWxsPT09Ynx8NCE9PWIudGFnfHxcbmIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1jLmNvbnRhaW5lckluZm98fGIuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09Yy5pbXBsZW1lbnRhdGlvbilyZXR1cm4gYj16aChjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYy5jaGlsZHJlbnx8W10pO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbShhLGIsYyxkLGYpe2lmKG51bGw9PT1ifHw3IT09Yi50YWcpcmV0dXJuIGI9QWgoYyxhLm1vZGUsZCxmKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBxKGEsYixjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGImJlwiXCIhPT1ifHxcIm51bWJlclwiPT09dHlwZW9mIGIpcmV0dXJuIGI9eGgoXCJcIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBiJiZudWxsIT09Yil7c3dpdGNoKGIuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGM9eWgoYi50eXBlLGIua2V5LGIucHJvcHMsbnVsbCxhLm1vZGUsYyksXG5jLnJlZj1zaChhLG51bGwsYiksYy5yZXR1cm49YSxjO2Nhc2Ugd2E6cmV0dXJuIGI9emgoYixhLm1vZGUsYyksYi5yZXR1cm49YSxiO2Nhc2UgSGE6dmFyIGQ9Yi5faW5pdDtyZXR1cm4gcShhLGQoYi5fcGF5bG9hZCksYyl9aWYoZWIoYil8fEthKGIpKXJldHVybiBiPUFoKGIsYS5tb2RlLGMsbnVsbCksYi5yZXR1cm49YSxiO3RoKGEsYil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihhLGIsYyxkKXt2YXIgZT1udWxsIT09Yj9iLmtleTpudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYyYmXCJcIiE9PWN8fFwibnVtYmVyXCI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU/bnVsbDpoKGEsYixcIlwiK2MsZCk7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yyl7c3dpdGNoKGMuJCR0eXBlb2Ype2Nhc2UgdmE6cmV0dXJuIGMua2V5PT09ZT9rKGEsYixjLGQpOm51bGw7Y2FzZSB3YTpyZXR1cm4gYy5rZXk9PT1lP2woYSxiLGMsZCk6bnVsbDtjYXNlIEhhOnJldHVybiBlPWMuX2luaXQscihhLFxuYixlKGMuX3BheWxvYWQpLGQpfWlmKGViKGMpfHxLYShjKSlyZXR1cm4gbnVsbCE9PWU/bnVsbDptKGEsYixjLGQsbnVsbCk7dGgoYSxjKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB5KGEsYixjLGQsZSl7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBkJiZcIlwiIT09ZHx8XCJudW1iZXJcIj09PXR5cGVvZiBkKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLGgoYixhLFwiXCIrZCxlKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk/YzpkLmtleSl8fG51bGwsayhiLGEsZCxlKTtjYXNlIHdhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxsKGIsYSxkLGUpO2Nhc2UgSGE6dmFyIGY9ZC5faW5pdDtyZXR1cm4geShhLGIsYyxmKGQuX3BheWxvYWQpLGUpfWlmKGViKGQpfHxLYShkKSlyZXR1cm4gYT1hLmdldChjKXx8bnVsbCxtKGIsYSxkLGUsbnVsbCk7dGgoYixkKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIG4oZSxnLGgsayl7Zm9yKHZhciBsPW51bGwsbT1udWxsLHU9Zyx3PWc9MCx4PW51bGw7bnVsbCE9PXUmJnc8aC5sZW5ndGg7dysrKXt1LmluZGV4Pnc/KHg9dSx1PW51bGwpOng9dS5zaWJsaW5nO3ZhciBuPXIoZSx1LGhbd10sayk7aWYobnVsbD09PW4pe251bGw9PT11JiYodT14KTticmVha31hJiZ1JiZudWxsPT09bi5hbHRlcm5hdGUmJmIoZSx1KTtnPWYobixnLHcpO251bGw9PT1tP2w9bjptLnNpYmxpbmc9bjttPW47dT14fWlmKHc9PT1oLmxlbmd0aClyZXR1cm4gYyhlLHUpLEkmJnRnKGUsdyksbDtpZihudWxsPT09dSl7Zm9yKDt3PGgubGVuZ3RoO3crKyl1PXEoZSxoW3ddLGspLG51bGwhPT11JiYoZz1mKHUsZyx3KSxudWxsPT09bT9sPXU6bS5zaWJsaW5nPXUsbT11KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZvcih1PWQoZSx1KTt3PGgubGVuZ3RoO3crKyl4PXkodSxlLHcsaFt3XSxrKSxudWxsIT09eCYmKGEmJm51bGwhPT14LmFsdGVybmF0ZSYmdS5kZWxldGUobnVsbD09PVxueC5rZXk/dzp4LmtleSksZz1mKHgsZyx3KSxudWxsPT09bT9sPXg6bS5zaWJsaW5nPXgsbT14KTthJiZ1LmZvckVhY2goZnVuY3Rpb24oYSl7cmV0dXJuIGIoZSxhKX0pO0kmJnRnKGUsdyk7cmV0dXJuIGx9ZnVuY3Rpb24gdChlLGcsaCxrKXt2YXIgbD1LYShoKTtpZihcImZ1bmN0aW9uXCIhPT10eXBlb2YgbCl0aHJvdyBFcnJvcihwKDE1MCkpO2g9bC5jYWxsKGgpO2lmKG51bGw9PWgpdGhyb3cgRXJyb3IocCgxNTEpKTtmb3IodmFyIHU9bD1udWxsLG09Zyx3PWc9MCx4PW51bGwsbj1oLm5leHQoKTtudWxsIT09bSYmIW4uZG9uZTt3Kyssbj1oLm5leHQoKSl7bS5pbmRleD53Pyh4PW0sbT1udWxsKTp4PW0uc2libGluZzt2YXIgdD1yKGUsbSxuLnZhbHVlLGspO2lmKG51bGw9PT10KXtudWxsPT09bSYmKG09eCk7YnJlYWt9YSYmbSYmbnVsbD09PXQuYWx0ZXJuYXRlJiZiKGUsbSk7Zz1mKHQsZyx3KTtudWxsPT09dT9sPXQ6dS5zaWJsaW5nPXQ7dT10O209eH1pZihuLmRvbmUpcmV0dXJuIGMoZSxcbm0pLEkmJnRnKGUsdyksbDtpZihudWxsPT09bSl7Zm9yKDshbi5kb25lO3crKyxuPWgubmV4dCgpKW49cShlLG4udmFsdWUsayksbnVsbCE9PW4mJihnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKG09ZChlLG0pOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj15KG0sZSx3LG4udmFsdWUsayksbnVsbCE9PW4mJihhJiZudWxsIT09bi5hbHRlcm5hdGUmJm0uZGVsZXRlKG51bGw9PT1uLmtleT93Om4ua2V5KSxnPWYobixnLHcpLG51bGw9PT11P2w9bjp1LnNpYmxpbmc9bix1PW4pO2EmJm0uZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiBKKGEsZCxmLGgpe1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PXlhJiZudWxsPT09Zi5rZXkmJihmPWYucHJvcHMuY2hpbGRyZW4pO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWYpe3N3aXRjaChmLiQkdHlwZW9mKXtjYXNlIHZhOmE6e2Zvcih2YXIgaz1cbmYua2V5LGw9ZDtudWxsIT09bDspe2lmKGwua2V5PT09ayl7az1mLnR5cGU7aWYoaz09PXlhKXtpZig3PT09bC50YWcpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMuY2hpbGRyZW4pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9fWVsc2UgaWYobC5lbGVtZW50VHlwZT09PWt8fFwib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWsmJmsuJCR0eXBlb2Y9PT1IYSYmdWgoayk9PT1sLnR5cGUpe2MoYSxsLnNpYmxpbmcpO2Q9ZShsLGYucHJvcHMpO2QucmVmPXNoKGEsbCxmKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWMoYSxsKTticmVha31lbHNlIGIoYSxsKTtsPWwuc2libGluZ31mLnR5cGU9PT15YT8oZD1BaChmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxoLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGg9eWgoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsaCksaC5yZWY9c2goYSxkLGYpLGgucmV0dXJuPWEsYT1oKX1yZXR1cm4gZyhhKTtjYXNlIHdhOmE6e2ZvcihsPWYua2V5O251bGwhPT1cbmQ7KXtpZihkLmtleT09PWwpaWYoND09PWQudGFnJiZkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Zi5jb250YWluZXJJbmZvJiZkLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWYuaW1wbGVtZW50YXRpb24pe2MoYSxkLnNpYmxpbmcpO2Q9ZShkLGYuY2hpbGRyZW58fFtdKTtkLnJldHVybj1hO2E9ZDticmVhayBhfWVsc2V7YyhhLGQpO2JyZWFrfWVsc2UgYihhLGQpO2Q9ZC5zaWJsaW5nfWQ9emgoZixhLm1vZGUsaCk7ZC5yZXR1cm49YTthPWR9cmV0dXJuIGcoYSk7Y2FzZSBIYTpyZXR1cm4gbD1mLl9pbml0LEooYSxkLGwoZi5fcGF5bG9hZCksaCl9aWYoZWIoZikpcmV0dXJuIG4oYSxkLGYsaCk7aWYoS2EoZikpcmV0dXJuIHQoYSxkLGYsaCk7dGgoYSxmKX1yZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGYmJlwiXCIhPT1mfHxcIm51bWJlclwiPT09dHlwZW9mIGY/KGY9XCJcIitmLG51bGwhPT1kJiY2PT09ZC50YWc/KGMoYSxkLnNpYmxpbmcpLGQ9ZShkLGYpLGQucmV0dXJuPWEsYT1kKTpcbihjKGEsZCksZD14aChmLGEubW9kZSxoKSxkLnJldHVybj1hLGE9ZCksZyhhKSk6YyhhLGQpfXJldHVybiBKfXZhciBCaD12aCghMCksQ2g9dmgoITEpLERoPXt9LEVoPVVmKERoKSxGaD1VZihEaCksR2g9VWYoRGgpO2Z1bmN0aW9uIEhoKGEpe2lmKGE9PT1EaCl0aHJvdyBFcnJvcihwKDE3NCkpO3JldHVybiBhfWZ1bmN0aW9uIEloKGEsYil7RyhHaCxiKTtHKEZoLGEpO0coRWgsRGgpO2E9Yi5ub2RlVHlwZTtzd2l0Y2goYSl7Y2FzZSA5OmNhc2UgMTE6Yj0oYj1iLmRvY3VtZW50RWxlbWVudCk/Yi5uYW1lc3BhY2VVUkk6bGIobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OmE9OD09PWE/Yi5wYXJlbnROb2RlOmIsYj1hLm5hbWVzcGFjZVVSSXx8bnVsbCxhPWEudGFnTmFtZSxiPWxiKGIsYSl9RShFaCk7RyhFaCxiKX1mdW5jdGlvbiBKaCgpe0UoRWgpO0UoRmgpO0UoR2gpfVxuZnVuY3Rpb24gS2goYSl7SGgoR2guY3VycmVudCk7dmFyIGI9SGgoRWguY3VycmVudCk7dmFyIGM9bGIoYixhLnR5cGUpO2IhPT1jJiYoRyhGaCxhKSxHKEVoLGMpKX1mdW5jdGlvbiBMaChhKXtGaC5jdXJyZW50PT09YSYmKEUoRWgpLEUoRmgpKX12YXIgTT1VZigwKTtcbmZ1bmN0aW9uIE1oKGEpe2Zvcih2YXIgYj1hO251bGwhPT1iOyl7aWYoMTM9PT1iLnRhZyl7dmFyIGM9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1jJiYoYz1jLmRlaHlkcmF0ZWQsbnVsbD09PWN8fFwiJD9cIj09PWMuZGF0YXx8XCIkIVwiPT09Yy5kYXRhKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGJ9ZWxzZSBpZihudWxsIT09Yi5jaGlsZCl7Yi5jaGlsZC5yZXR1cm49YjtiPWIuY2hpbGQ7Y29udGludWV9aWYoYj09PWEpYnJlYWs7Zm9yKDtudWxsPT09Yi5zaWJsaW5nOyl7aWYobnVsbD09PWIucmV0dXJufHxiLnJldHVybj09PWEpcmV0dXJuIG51bGw7Yj1iLnJldHVybn1iLnNpYmxpbmcucmV0dXJuPWIucmV0dXJuO2I9Yi5zaWJsaW5nfXJldHVybiBudWxsfXZhciBOaD1bXTtcbmZ1bmN0aW9uIE9oKCl7Zm9yKHZhciBhPTA7YTxOaC5sZW5ndGg7YSsrKU5oW2FdLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PW51bGw7TmgubGVuZ3RoPTB9dmFyIFBoPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsUWg9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsUmg9MCxOPW51bGwsTz1udWxsLFA9bnVsbCxTaD0hMSxUaD0hMSxVaD0wLFZoPTA7ZnVuY3Rpb24gUSgpe3Rocm93IEVycm9yKHAoMzIxKSk7fWZ1bmN0aW9uIFdoKGEsYil7aWYobnVsbD09PWIpcmV0dXJuITE7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aCYmYzxhLmxlbmd0aDtjKyspaWYoIUhlKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9XG5mdW5jdGlvbiBYaChhLGIsYyxkLGUsZil7Umg9ZjtOPWI7Yi5tZW1vaXplZFN0YXRlPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2IubGFuZXM9MDtQaC5jdXJyZW50PW51bGw9PT1hfHxudWxsPT09YS5tZW1vaXplZFN0YXRlP1loOlpoO2E9YyhkLGUpO2lmKFRoKXtmPTA7ZG97VGg9ITE7VWg9MDtpZigyNTw9Zil0aHJvdyBFcnJvcihwKDMwMSkpO2YrPTE7UD1PPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO1BoLmN1cnJlbnQ9JGg7YT1jKGQsZSl9d2hpbGUoVGgpfVBoLmN1cnJlbnQ9YWk7Yj1udWxsIT09TyYmbnVsbCE9PU8ubmV4dDtSaD0wO1A9Tz1OPW51bGw7U2g9ITE7aWYoYil0aHJvdyBFcnJvcihwKDMwMCkpO3JldHVybiBhfWZ1bmN0aW9uIGJpKCl7dmFyIGE9MCE9PVVoO1VoPTA7cmV0dXJuIGF9XG5mdW5jdGlvbiBjaSgpe3ZhciBhPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O251bGw9PT1QP04ubWVtb2l6ZWRTdGF0ZT1QPWE6UD1QLm5leHQ9YTtyZXR1cm4gUH1mdW5jdGlvbiBkaSgpe2lmKG51bGw9PT1PKXt2YXIgYT1OLmFsdGVybmF0ZTthPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgYT1PLm5leHQ7dmFyIGI9bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlOlAubmV4dDtpZihudWxsIT09YilQPWIsTz1hO2Vsc2V7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzMTApKTtPPWE7YT17bWVtb2l6ZWRTdGF0ZTpPLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOk8uYmFzZVN0YXRlLGJhc2VRdWV1ZTpPLmJhc2VRdWV1ZSxxdWV1ZTpPLnF1ZXVlLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hfXJldHVybiBQfVxuZnVuY3Rpb24gZWkoYSxiKXtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmJ9XG5mdW5jdGlvbiBmaShhKXt2YXIgYj1kaSgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPU8sZT1kLmJhc2VRdWV1ZSxmPWMucGVuZGluZztpZihudWxsIT09Zil7aWYobnVsbCE9PWUpe3ZhciBnPWUubmV4dDtlLm5leHQ9Zi5uZXh0O2YubmV4dD1nfWQuYmFzZVF1ZXVlPWU9ZjtjLnBlbmRpbmc9bnVsbH1pZihudWxsIT09ZSl7Zj1lLm5leHQ7ZD1kLmJhc2VTdGF0ZTt2YXIgaD1nPW51bGwsaz1udWxsLGw9Zjtkb3t2YXIgbT1sLmxhbmU7aWYoKFJoJm0pPT09bSludWxsIT09ayYmKGs9ay5uZXh0PXtsYW5lOjAsYWN0aW9uOmwuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6bC5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLGQ9bC5oYXNFYWdlclN0YXRlP2wuZWFnZXJTdGF0ZTphKGQsbC5hY3Rpb24pO2Vsc2V7dmFyIHE9e2xhbmU6bSxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsXG5lYWdlclN0YXRlOmwuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O251bGw9PT1rPyhoPWs9cSxnPWQpOms9ay5uZXh0PXE7Ti5sYW5lc3w9bTtoaHw9bX1sPWwubmV4dH13aGlsZShudWxsIT09bCYmbCE9PWYpO251bGw9PT1rP2c9ZDprLm5leHQ9aDtIZShkLGIubWVtb2l6ZWRTdGF0ZSl8fChVZz0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZztiLmJhc2VRdWV1ZT1rO2MubGFzdFJlbmRlcmVkU3RhdGU9ZH1hPWMuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWEpe2U9YTtkbyBmPWUubGFuZSxOLmxhbmVzfD1mLGhofD1mLGU9ZS5uZXh0O3doaWxlKGUhPT1hKX1lbHNlIG51bGw9PT1lJiYoYy5sYW5lcz0wKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGMuZGlzcGF0Y2hdfVxuZnVuY3Rpb24gZ2koYSl7dmFyIGI9ZGkoKSxjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IocCgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpO0hlKGYsYi5tZW1vaXplZFN0YXRlKXx8KFVnPSEwKTtiLm1lbW9pemVkU3RhdGU9ZjtudWxsPT09Yi5iYXNlUXVldWUmJihiLmJhc2VTdGF0ZT1mKTtjLmxhc3RSZW5kZXJlZFN0YXRlPWZ9cmV0dXJuW2YsZF19ZnVuY3Rpb24gaGkoKXt9XG5mdW5jdGlvbiBpaShhLGIpe3ZhciBjPU4sZD1kaSgpLGU9YigpLGY9IUhlKGQubWVtb2l6ZWRTdGF0ZSxlKTtmJiYoZC5tZW1vaXplZFN0YXRlPWUsVWc9ITApO2Q9ZC5xdWV1ZTtqaShraS5iaW5kKG51bGwsYyxkLGEpLFthXSk7aWYoZC5nZXRTbmFwc2hvdCE9PWJ8fGZ8fG51bGwhPT1QJiZQLm1lbW9pemVkU3RhdGUudGFnJjEpe2MuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsYyxkLGUsYiksdm9pZCAwLG51bGwpO2lmKG51bGw9PT1SKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShSaCYzMCl8fG5pKGMsYixlKX1yZXR1cm4gZX1mdW5jdGlvbiBuaShhLGIsYyl7YS5mbGFnc3w9MTYzODQ7YT17Z2V0U25hcHNob3Q6Yix2YWx1ZTpjfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIuc3RvcmVzPVthXSk6KGM9Yi5zdG9yZXMsbnVsbD09PWM/Yi5zdG9yZXM9W2FdOmMucHVzaChhKSl9XG5mdW5jdGlvbiBtaShhLGIsYyxkKXtiLnZhbHVlPWM7Yi5nZXRTbmFwc2hvdD1kO29pKGIpJiZwaShhKX1mdW5jdGlvbiBraShhLGIsYyl7cmV0dXJuIGMoZnVuY3Rpb24oKXtvaShiKSYmcGkoYSl9KX1mdW5jdGlvbiBvaShhKXt2YXIgYj1hLmdldFNuYXBzaG90O2E9YS52YWx1ZTt0cnl7dmFyIGM9YigpO3JldHVybiFIZShhLGMpfWNhdGNoKGQpe3JldHVybiEwfX1mdW5jdGlvbiBwaShhKXt2YXIgYj1aZyhhLDEpO251bGwhPT1iJiZtaChiLGEsMSwtMSl9XG5mdW5jdGlvbiBxaShhKXt2YXIgYj1jaSgpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmVpLGxhc3RSZW5kZXJlZFN0YXRlOmF9O2IucXVldWU9YTthPWEuZGlzcGF0Y2g9cmkuYmluZChudWxsLE4sYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1cbmZ1bmN0aW9uIGxpKGEsYixjLGQpe2E9e3RhZzphLGNyZWF0ZTpiLGRlc3Ryb3k6YyxkZXBzOmQsbmV4dDpudWxsfTtiPU4udXBkYXRlUXVldWU7bnVsbD09PWI/KGI9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sTi51cGRhdGVRdWV1ZT1iLGIubGFzdEVmZmVjdD1hLm5leHQ9YSk6KGM9Yi5sYXN0RWZmZWN0LG51bGw9PT1jP2IubGFzdEVmZmVjdD1hLm5leHQ9YTooZD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWQsYi5sYXN0RWZmZWN0PWEpKTtyZXR1cm4gYX1mdW5jdGlvbiBzaSgpe3JldHVybiBkaSgpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gdGkoYSxiLGMsZCl7dmFyIGU9Y2koKTtOLmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1saSgxfGIsYyx2b2lkIDAsdm9pZCAwPT09ZD9udWxsOmQpfVxuZnVuY3Rpb24gdWkoYSxiLGMsZCl7dmFyIGU9ZGkoKTtkPXZvaWQgMD09PWQ/bnVsbDpkO3ZhciBmPXZvaWQgMDtpZihudWxsIT09Tyl7dmFyIGc9Ty5tZW1vaXplZFN0YXRlO2Y9Zy5kZXN0cm95O2lmKG51bGwhPT1kJiZXaChkLGcuZGVwcykpe2UubWVtb2l6ZWRTdGF0ZT1saShiLGMsZixkKTtyZXR1cm59fU4uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxpKDF8YixjLGYsZCl9ZnVuY3Rpb24gdmkoYSxiKXtyZXR1cm4gdGkoODM5MDY1Niw4LGEsYil9ZnVuY3Rpb24gamkoYSxiKXtyZXR1cm4gdWkoMjA0OCw4LGEsYil9ZnVuY3Rpb24gd2koYSxiKXtyZXR1cm4gdWkoNCwyLGEsYil9ZnVuY3Rpb24geGkoYSxiKXtyZXR1cm4gdWkoNCw0LGEsYil9XG5mdW5jdGlvbiB5aShhLGIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiKXJldHVybiBhPWEoKSxiKGEpLGZ1bmN0aW9uKCl7YihudWxsKX07aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpcmV0dXJuIGE9YSgpLGIuY3VycmVudD1hLGZ1bmN0aW9uKCl7Yi5jdXJyZW50PW51bGx9fWZ1bmN0aW9uIHppKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gdWkoNCw0LHlpLmJpbmQobnVsbCxiLGEpLGMpfWZ1bmN0aW9uIEFpKCl7fWZ1bmN0aW9uIEJpKGEsYil7dmFyIGM9ZGkoKTtiPXZvaWQgMD09PWI/bnVsbDpiO3ZhciBkPWMubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCYmbnVsbCE9PWImJldoKGIsZFsxXSkpcmV0dXJuIGRbMF07Yy5tZW1vaXplZFN0YXRlPVthLGJdO3JldHVybiBhfVxuZnVuY3Rpb24gQ2koYSxiKXt2YXIgYz1kaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmV2goYixkWzFdKSlyZXR1cm4gZFswXTthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9ZnVuY3Rpb24gRGkoYSxiLGMpe2lmKDA9PT0oUmgmMjEpKXJldHVybiBhLmJhc2VTdGF0ZSYmKGEuYmFzZVN0YXRlPSExLFVnPSEwKSxhLm1lbW9pemVkU3RhdGU9YztIZShjLGIpfHwoYz15YygpLE4ubGFuZXN8PWMsaGh8PWMsYS5iYXNlU3RhdGU9ITApO3JldHVybiBifWZ1bmN0aW9uIEVpKGEsYil7dmFyIGM9QztDPTAhPT1jJiY0PmM/Yzo0O2EoITApO3ZhciBkPVFoLnRyYW5zaXRpb247UWgudHJhbnNpdGlvbj17fTt0cnl7YSghMSksYigpfWZpbmFsbHl7Qz1jLFFoLnRyYW5zaXRpb249ZH19ZnVuY3Rpb24gRmkoKXtyZXR1cm4gZGkoKS5tZW1vaXplZFN0YXRlfVxuZnVuY3Rpb24gR2koYSxiLGMpe3ZhciBkPWxoKGEpO2M9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKEhpKGEpKUlpKGIsYyk7ZWxzZSBpZihjPVlnKGEsYixjLGQpLG51bGwhPT1jKXt2YXIgZT1MKCk7bWgoYyxhLGQsZSk7SmkoYyxiLGQpfX1cbmZ1bmN0aW9uIHJpKGEsYixjKXt2YXIgZD1saChhKSxlPXtsYW5lOmQsYWN0aW9uOmMsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihIaShhKSlJaShiLGUpO2Vsc2V7dmFyIGY9YS5hbHRlcm5hdGU7aWYoMD09PWEubGFuZXMmJihudWxsPT09Znx8MD09PWYubGFuZXMpJiYoZj1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWYpKXRyeXt2YXIgZz1iLmxhc3RSZW5kZXJlZFN0YXRlLGg9ZihnLGMpO2UuaGFzRWFnZXJTdGF0ZT0hMDtlLmVhZ2VyU3RhdGU9aDtpZihIZShoLGcpKXt2YXIgaz1iLmludGVybGVhdmVkO251bGw9PT1rPyhlLm5leHQ9ZSxYZyhiKSk6KGUubmV4dD1rLm5leHQsay5uZXh0PWUpO2IuaW50ZXJsZWF2ZWQ9ZTtyZXR1cm59fWNhdGNoKGwpe31maW5hbGx5e31jPVlnKGEsYixlLGQpO251bGwhPT1jJiYoZT1MKCksbWgoYyxhLGQsZSksSmkoYyxiLGQpKX19XG5mdW5jdGlvbiBIaShhKXt2YXIgYj1hLmFsdGVybmF0ZTtyZXR1cm4gYT09PU58fG51bGwhPT1iJiZiPT09Tn1mdW5jdGlvbiBJaShhLGIpe1RoPVNoPSEwO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9ZnVuY3Rpb24gSmkoYSxiLGMpe2lmKDAhPT0oYyY0MTk0MjQwKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbnZhciBhaT17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6USx1c2VDb250ZXh0OlEsdXNlRWZmZWN0OlEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpRLHVzZUluc2VydGlvbkVmZmVjdDpRLHVzZUxheW91dEVmZmVjdDpRLHVzZU1lbW86USx1c2VSZWR1Y2VyOlEsdXNlUmVmOlEsdXNlU3RhdGU6USx1c2VEZWJ1Z1ZhbHVlOlEsdXNlRGVmZXJyZWRWYWx1ZTpRLHVzZVRyYW5zaXRpb246USx1c2VNdXRhYmxlU291cmNlOlEsdXNlU3luY0V4dGVybmFsU3RvcmU6USx1c2VJZDpRLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWWg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYil7Y2koKS5tZW1vaXplZFN0YXRlPVthLHZvaWQgMD09PWI/bnVsbDpiXTtyZXR1cm4gYX0sdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6dmksdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIHRpKDQxOTQzMDgsXG40LHlpLmJpbmQobnVsbCxiLGEpLGMpfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGkoNDE5NDMwOCw0LGEsYil9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiB0aSg0LDIsYSxiKX0sdXNlTWVtbzpmdW5jdGlvbihhLGIpe3ZhciBjPWNpKCk7Yj12b2lkIDA9PT1iP251bGw6YjthPWEoKTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWNpKCk7Yj12b2lkIDAhPT1jP2MoYik6YjtkLm1lbW9pemVkU3RhdGU9ZC5iYXNlU3RhdGU9YjthPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphLGxhc3RSZW5kZXJlZFN0YXRlOmJ9O2QucXVldWU9YTthPWEuZGlzcGF0Y2g9R2kuYmluZChudWxsLE4sYSk7cmV0dXJuW2QubWVtb2l6ZWRTdGF0ZSxhXX0sdXNlUmVmOmZ1bmN0aW9uKGEpe3ZhciBiPVxuY2koKTthPXtjdXJyZW50OmF9O3JldHVybiBiLm1lbW9pemVkU3RhdGU9YX0sdXNlU3RhdGU6cWksdXNlRGVidWdWYWx1ZTpBaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGEpe3JldHVybiBjaSgpLm1lbW9pemVkU3RhdGU9YX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPXFpKCExKSxiPWFbMF07YT1FaS5iaW5kKG51bGwsYVsxXSk7Y2koKS5tZW1vaXplZFN0YXRlPWE7cmV0dXJuW2IsYV19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oKXt9LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1OLGU9Y2koKTtpZihJKXtpZih2b2lkIDA9PT1jKXRocm93IEVycm9yKHAoNDA3KSk7Yz1jKCl9ZWxzZXtjPWIoKTtpZihudWxsPT09Uil0aHJvdyBFcnJvcihwKDM0OSkpOzAhPT0oUmgmMzApfHxuaShkLGIsYyl9ZS5tZW1vaXplZFN0YXRlPWM7dmFyIGY9e3ZhbHVlOmMsZ2V0U25hcHNob3Q6Yn07ZS5xdWV1ZT1mO3ZpKGtpLmJpbmQobnVsbCxkLFxuZixhKSxbYV0pO2QuZmxhZ3N8PTIwNDg7bGkoOSxtaS5iaW5kKG51bGwsZCxmLGMsYiksdm9pZCAwLG51bGwpO3JldHVybiBjfSx1c2VJZDpmdW5jdGlvbigpe3ZhciBhPWNpKCksYj1SLmlkZW50aWZpZXJQcmVmaXg7aWYoSSl7dmFyIGM9c2c7dmFyIGQ9cmc7Yz0oZCZ+KDE8PDMyLW9jKGQpLTEpKS50b1N0cmluZygzMikrYztiPVwiOlwiK2IrXCJSXCIrYztjPVVoKys7MDxjJiYoYis9XCJIXCIrYy50b1N0cmluZygzMikpO2IrPVwiOlwifWVsc2UgYz1WaCsrLGI9XCI6XCIrYitcInJcIitjLnRvU3RyaW5nKDMyKStcIjpcIjtyZXR1cm4gYS5tZW1vaXplZFN0YXRlPWJ9LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sWmg9e3JlYWRDb250ZXh0OlZnLHVzZUNhbGxiYWNrOkJpLHVzZUNvbnRleHQ6VmcsdXNlRWZmZWN0OmppLHVzZUltcGVyYXRpdmVIYW5kbGU6emksdXNlSW5zZXJ0aW9uRWZmZWN0OndpLHVzZUxheW91dEVmZmVjdDp4aSx1c2VNZW1vOkNpLHVzZVJlZHVjZXI6ZmksdXNlUmVmOnNpLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGZpKGVpKX0sXG51c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gRGkoYixPLm1lbW9pemVkU3RhdGUsYSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1maShlaSlbMF0sYj1kaSgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6aGksdXNlU3luY0V4dGVybmFsU3RvcmU6aWksdXNlSWQ6RmksdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSwkaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6QmksdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6amksdXNlSW1wZXJhdGl2ZUhhbmRsZTp6aSx1c2VJbnNlcnRpb25FZmZlY3Q6d2ksdXNlTGF5b3V0RWZmZWN0OnhpLHVzZU1lbW86Q2ksdXNlUmVkdWNlcjpnaSx1c2VSZWY6c2ksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZ2koZWkpfSx1c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9ZGkoKTtyZXR1cm4gbnVsbD09PVxuTz9iLm1lbW9pemVkU3RhdGU9YTpEaShiLE8ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPWdpKGVpKVswXSxiPWRpKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpoaSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTppaSx1c2VJZDpGaSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIEtpKGEsYil7dHJ5e3ZhciBjPVwiXCIsZD1iO2RvIGMrPVBhKGQpLGQ9ZC5yZXR1cm47d2hpbGUoZCk7dmFyIGU9Y31jYXRjaChmKXtlPVwiXFxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogXCIrZi5tZXNzYWdlK1wiXFxuXCIrZi5zdGFja31yZXR1cm57dmFsdWU6YSxzb3VyY2U6YixzdGFjazplLGRpZ2VzdDpudWxsfX1mdW5jdGlvbiBMaShhLGIsYyl7cmV0dXJue3ZhbHVlOmEsc291cmNlOm51bGwsc3RhY2s6bnVsbCE9Yz9jOm51bGwsZGlnZXN0Om51bGwhPWI/YjpudWxsfX1cbmZ1bmN0aW9uIE1pKGEsYil7dHJ5e2NvbnNvbGUuZXJyb3IoYi52YWx1ZSl9Y2F0Y2goYyl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGM7fSl9fXZhciBOaT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBPaShhLGIsYyl7Yz1jaCgtMSxjKTtjLnRhZz0zO2MucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgZD1iLnZhbHVlO2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtQaXx8KFBpPSEwLFFpPWQpO01pKGEsYil9O3JldHVybiBjfVxuZnVuY3Rpb24gUmkoYSxiLGMpe2M9Y2goLTEsYyk7Yy50YWc9Mzt2YXIgZD1hLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZT1iLnZhbHVlO2MucGF5bG9hZD1mdW5jdGlvbigpe3JldHVybiBkKGUpfTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TWkoYSxiKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBmLmNvbXBvbmVudERpZENhdGNoJiYoYy5jYWxsYmFjaz1mdW5jdGlvbigpe01pKGEsYik7XCJmdW5jdGlvblwiIT09dHlwZW9mIGQmJihudWxsPT09U2k/U2k9bmV3IFNldChbdGhpc10pOlNpLmFkZCh0aGlzKSk7dmFyIGM9Yi5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKGIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1jP2M6XCJcIn0pfSk7cmV0dXJuIGN9XG5mdW5jdGlvbiBUaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7aWYobnVsbD09PWQpe2Q9YS5waW5nQ2FjaGU9bmV3IE5pO3ZhciBlPW5ldyBTZXQ7ZC5zZXQoYixlKX1lbHNlIGU9ZC5nZXQoYiksdm9pZCAwPT09ZSYmKGU9bmV3IFNldCxkLnNldChiLGUpKTtlLmhhcyhjKXx8KGUuYWRkKGMpLGE9VWkuYmluZChudWxsLGEsYixjKSxiLnRoZW4oYSxhKSl9ZnVuY3Rpb24gVmkoYSl7ZG97dmFyIGI7aWYoYj0xMz09PWEudGFnKWI9YS5tZW1vaXplZFN0YXRlLGI9bnVsbCE9PWI/bnVsbCE9PWIuZGVoeWRyYXRlZD8hMDohMTohMDtpZihiKXJldHVybiBhO2E9YS5yZXR1cm59d2hpbGUobnVsbCE9PWEpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gV2koYSxiLGMsZCxlKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gYT09PWI/YS5mbGFnc3w9NjU1MzY6KGEuZmxhZ3N8PTEyOCxjLmZsYWdzfD0xMzEwNzIsYy5mbGFncyY9LTUyODA1LDE9PT1jLnRhZyYmKG51bGw9PT1jLmFsdGVybmF0ZT9jLnRhZz0xNzooYj1jaCgtMSwxKSxiLnRhZz0yLGRoKGMsYiwxKSkpLGMubGFuZXN8PTEpLGE7YS5mbGFnc3w9NjU1MzY7YS5sYW5lcz1lO3JldHVybiBhfXZhciBYaT11YS5SZWFjdEN1cnJlbnRPd25lcixVZz0hMTtmdW5jdGlvbiBZaShhLGIsYyxkKXtiLmNoaWxkPW51bGw9PT1hP0NoKGIsbnVsbCxjLGQpOkJoKGIsYS5jaGlsZCxjLGQpfVxuZnVuY3Rpb24gWmkoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO1RnKGIsZSk7ZD1YaChhLGIsYyxkLGYsZSk7Yz1iaSgpO2lmKG51bGwhPT1hJiYhVWcpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSwkaShhLGIsZSk7SSYmYyYmdmcoYik7Yi5mbGFnc3w9MTtZaShhLGIsZCxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGFqKGEsYixjLGQsZSl7aWYobnVsbD09PWEpe3ZhciBmPWMudHlwZTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZiYmIWJqKGYpJiZ2b2lkIDA9PT1mLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1mLGNqKGEsYixmLGQsZSk7YT15aChjLnR5cGUsbnVsbCxkLGIsYi5tb2RlLGUpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1mPWEuY2hpbGQ7aWYoMD09PShhLmxhbmVzJmUpKXt2YXIgZz1mLm1lbW9pemVkUHJvcHM7Yz1jLmNvbXBhcmU7Yz1udWxsIT09Yz9jOkllO2lmKGMoZyxkKSYmYS5yZWY9PT1iLnJlZilyZXR1cm4gJGkoYSxiLGUpfWIuZmxhZ3N8PTE7YT13aChmLGQpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1cbmZ1bmN0aW9uIGNqKGEsYixjLGQsZSl7aWYobnVsbCE9PWEpe3ZhciBmPWEubWVtb2l6ZWRQcm9wcztpZihJZShmLGQpJiZhLnJlZj09PWIucmVmKWlmKFVnPSExLGIucGVuZGluZ1Byb3BzPWQ9ZiwwIT09KGEubGFuZXMmZSkpMCE9PShhLmZsYWdzJjEzMTA3MikmJihVZz0hMCk7ZWxzZSByZXR1cm4gYi5sYW5lcz1hLmxhbmVzLCRpKGEsYixlKX1yZXR1cm4gZGooYSxiLGMsZCxlKX1cbmZ1bmN0aW9uIGVqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQuY2hpbGRyZW4sZj1udWxsIT09YT9hLm1lbW9pemVkU3RhdGU6bnVsbDtpZihcImhpZGRlblwiPT09ZC5tb2RlKWlmKDA9PT0oYi5tb2RlJjEpKWIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH0sRyhmaixnaiksZ2p8PWM7ZWxzZXtpZigwPT09KGMmMTA3Mzc0MTgyNCkpcmV0dXJuIGE9bnVsbCE9PWY/Zi5iYXNlTGFuZXN8YzpjLGIubGFuZXM9Yi5jaGlsZExhbmVzPTEwNzM3NDE4MjQsYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6YSxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxiLnVwZGF0ZVF1ZXVlPW51bGwsRyhmaixnaiksZ2p8PWEsbnVsbDtiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9O2Q9bnVsbCE9PWY/Zi5iYXNlTGFuZXM6YztHKGZqLGdqKTtnanw9ZH1lbHNlIG51bGwhPT1cbmY/KGQ9Zi5iYXNlTGFuZXN8YyxiLm1lbW9pemVkU3RhdGU9bnVsbCk6ZD1jLEcoZmosZ2opLGdqfD1kO1lpKGEsYixlLGMpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGhqKGEsYil7dmFyIGM9Yi5yZWY7aWYobnVsbD09PWEmJm51bGwhPT1jfHxudWxsIT09YSYmYS5yZWYhPT1jKWIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyfWZ1bmN0aW9uIGRqKGEsYixjLGQsZSl7dmFyIGY9WmYoYyk/WGY6SC5jdXJyZW50O2Y9WWYoYixmKTtUZyhiLGUpO2M9WGgoYSxiLGMsZCxmLGUpO2Q9YmkoKTtpZihudWxsIT09YSYmIVVnKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTIwNTMsYS5sYW5lcyY9fmUsJGkoYSxiLGUpO0kmJmQmJnZnKGIpO2IuZmxhZ3N8PTE7WWkoYSxiLGMsZSk7cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBpaihhLGIsYyxkLGUpe2lmKFpmKGMpKXt2YXIgZj0hMDtjZyhiKX1lbHNlIGY9ITE7VGcoYixlKTtpZihudWxsPT09Yi5zdGF0ZU5vZGUpamooYSxiKSxwaChiLGMsZCkscmgoYixjLGQsZSksZD0hMDtlbHNlIGlmKG51bGw9PT1hKXt2YXIgZz1iLnN0YXRlTm9kZSxoPWIubWVtb2l6ZWRQcm9wcztnLnByb3BzPWg7dmFyIGs9Zy5jb250ZXh0LGw9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGwmJm51bGwhPT1sP2w9VmcobCk6KGw9WmYoYyk/WGY6SC5jdXJyZW50LGw9WWYoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMscT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgbXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU7cXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fFxuKGghPT1kfHxrIT09bCkmJnFoKGIsZyxkLGwpOyRnPSExO3ZhciByPWIubWVtb2l6ZWRTdGF0ZTtnLnN0YXRlPXI7Z2goYixkLGcsZSk7az1iLm1lbW9pemVkU3RhdGU7aCE9PWR8fHIhPT1rfHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIG0mJihraChiLGMsbSxkKSxrPWIubWVtb2l6ZWRTdGF0ZSksKGg9JGd8fG9oKGIsYyxoLGQscixrLGwpKT8ocXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50JiZnLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpKTpcbihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQxOTQzMDgpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT1rKSxnLnByb3BzPWQsZy5zdGF0ZT1rLGcuY29udGV4dD1sLGQ9aCk6KFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksZD0hMSl9ZWxzZXtnPWIuc3RhdGVOb2RlO2JoKGEsYik7aD1iLm1lbW9pemVkUHJvcHM7bD1iLnR5cGU9PT1iLmVsZW1lbnRUeXBlP2g6TGcoYi50eXBlLGgpO2cucHJvcHM9bDtxPWIucGVuZGluZ1Byb3BzO3I9Zy5jb250ZXh0O2s9Yy5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09dHlwZW9mIGsmJm51bGwhPT1rP2s9Vmcoayk6KGs9WmYoYyk/WGY6SC5jdXJyZW50LGs9WWYoYixrKSk7dmFyIHk9Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KG09XCJmdW5jdGlvblwiPT09dHlwZW9mIHl8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8XG5cImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8KGghPT1xfHxyIT09aykmJnFoKGIsZyxkLGspOyRnPSExO3I9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtnaChiLGQsZyxlKTt2YXIgbj1iLm1lbW9pemVkU3RhdGU7aCE9PXF8fHIhPT1ufHxXZi5jdXJyZW50fHwkZz8oXCJmdW5jdGlvblwiPT09dHlwZW9mIHkmJihraChiLGMseSxkKSxuPWIubWVtb2l6ZWRTdGF0ZSksKGw9JGd8fG9oKGIsYyxsLGQscixuLGspfHwhMSk/KG18fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFVwZGF0ZSYmZy5jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXG5nLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQsbixrKSksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJihiLmZsYWdzfD0xMDI0KSk6KFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudERpZFVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPW4pLGcucHJvcHM9ZCxnLnN0YXRlPW4sZy5jb250ZXh0PWssZD1sKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09XG5hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTEwMjQpLGQ9ITEpfXJldHVybiBraihhLGIsYyxkLGYsZSl9XG5mdW5jdGlvbiBraihhLGIsYyxkLGUsZil7aGooYSxiKTt2YXIgZz0wIT09KGIuZmxhZ3MmMTI4KTtpZighZCYmIWcpcmV0dXJuIGUmJmRnKGIsYywhMSksJGkoYSxiLGYpO2Q9Yi5zdGF0ZU5vZGU7WGkuY3VycmVudD1iO3ZhciBoPWcmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5mbGFnc3w9MTtudWxsIT09YSYmZz8oYi5jaGlsZD1CaChiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPUJoKGIsbnVsbCxoLGYpKTpZaShhLGIsaCxmKTtiLm1lbW9pemVkU3RhdGU9ZC5zdGF0ZTtlJiZkZyhiLGMsITApO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIGxqKGEpe3ZhciBiPWEuc3RhdGVOb2RlO2IucGVuZGluZ0NvbnRleHQ/YWcoYSxiLnBlbmRpbmdDb250ZXh0LGIucGVuZGluZ0NvbnRleHQhPT1iLmNvbnRleHQpOmIuY29udGV4dCYmYWcoYSxiLmNvbnRleHQsITEpO0loKGEsYi5jb250YWluZXJJbmZvKX1cbmZ1bmN0aW9uIG1qKGEsYixjLGQsZSl7SWcoKTtKZyhlKTtiLmZsYWdzfD0yNTY7WWkoYSxiLGMsZCk7cmV0dXJuIGIuY2hpbGR9dmFyIG5qPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MH07ZnVuY3Rpb24gb2ooYSl7cmV0dXJue2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9fVxuZnVuY3Rpb24gcGooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9TS5jdXJyZW50LGY9ITEsZz0wIT09KGIuZmxhZ3MmMTI4KSxoOyhoPWcpfHwoaD1udWxsIT09YSYmbnVsbD09PWEubWVtb2l6ZWRTdGF0ZT8hMTowIT09KGUmMikpO2lmKGgpZj0hMCxiLmZsYWdzJj0tMTI5O2Vsc2UgaWYobnVsbD09PWF8fG51bGwhPT1hLm1lbW9pemVkU3RhdGUpZXw9MTtHKE0sZSYxKTtpZihudWxsPT09YSl7RWcoYik7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJihhPWEuZGVoeWRyYXRlZCxudWxsIT09YSkpcmV0dXJuIDA9PT0oYi5tb2RlJjEpP2IubGFuZXM9MTpcIiQhXCI9PT1hLmRhdGE/Yi5sYW5lcz04OmIubGFuZXM9MTA3Mzc0MTgyNCxudWxsO2c9ZC5jaGlsZHJlbjthPWQuZmFsbGJhY2s7cmV0dXJuIGY/KGQ9Yi5tb2RlLGY9Yi5jaGlsZCxnPXttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46Z30sMD09PShkJjEpJiZudWxsIT09Zj8oZi5jaGlsZExhbmVzPTAsZi5wZW5kaW5nUHJvcHM9XG5nKTpmPXFqKGcsZCwwLG51bGwpLGE9QWgoYSxkLGMsbnVsbCksZi5yZXR1cm49YixhLnJldHVybj1iLGYuc2libGluZz1hLGIuY2hpbGQ9ZixiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooYyksYi5tZW1vaXplZFN0YXRlPW5qLGEpOnJqKGIsZyl9ZT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUmJihoPWUuZGVoeWRyYXRlZCxudWxsIT09aCkpcmV0dXJuIHNqKGEsYixnLGQsaCxlLGMpO2lmKGYpe2Y9ZC5mYWxsYmFjaztnPWIubW9kZTtlPWEuY2hpbGQ7aD1lLnNpYmxpbmc7dmFyIGs9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpkLmNoaWxkcmVufTswPT09KGcmMSkmJmIuY2hpbGQhPT1lPyhkPWIuY2hpbGQsZC5jaGlsZExhbmVzPTAsZC5wZW5kaW5nUHJvcHM9ayxiLmRlbGV0aW9ucz1udWxsKTooZD13aChlLGspLGQuc3VidHJlZUZsYWdzPWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0KTtudWxsIT09aD9mPXdoKGgsZik6KGY9QWgoZixnLGMsbnVsbCksZi5mbGFnc3w9Mik7Zi5yZXR1cm49XG5iO2QucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kO2Q9ZjtmPWIuY2hpbGQ7Zz1hLmNoaWxkLm1lbW9pemVkU3RhdGU7Zz1udWxsPT09Zz9vaihjKTp7YmFzZUxhbmVzOmcuYmFzZUxhbmVzfGMsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Zy50cmFuc2l0aW9uc307Zi5tZW1vaXplZFN0YXRlPWc7Zi5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcyZ+YztiLm1lbW9pemVkU3RhdGU9bmo7cmV0dXJuIGR9Zj1hLmNoaWxkO2E9Zi5zaWJsaW5nO2Q9d2goZix7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSk7MD09PShiLm1vZGUmMSkmJihkLmxhbmVzPWMpO2QucmV0dXJuPWI7ZC5zaWJsaW5nPW51bGw7bnVsbCE9PWEmJihjPWIuZGVsZXRpb25zLG51bGw9PT1jPyhiLmRlbGV0aW9ucz1bYV0sYi5mbGFnc3w9MTYpOmMucHVzaChhKSk7Yi5jaGlsZD1kO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBkfVxuZnVuY3Rpb24gcmooYSxiKXtiPXFqKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmJ9LGEubW9kZSwwLG51bGwpO2IucmV0dXJuPWE7cmV0dXJuIGEuY2hpbGQ9Yn1mdW5jdGlvbiB0aihhLGIsYyxkKXtudWxsIT09ZCYmSmcoZCk7QmgoYixhLmNoaWxkLG51bGwsYyk7YT1yaihiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuKTthLmZsYWdzfD0yO2IubWVtb2l6ZWRTdGF0ZT1udWxsO3JldHVybiBhfVxuZnVuY3Rpb24gc2ooYSxiLGMsZCxlLGYsZyl7aWYoYyl7aWYoYi5mbGFncyYyNTYpcmV0dXJuIGIuZmxhZ3MmPS0yNTcsZD1MaShFcnJvcihwKDQyMikpKSx0aihhLGIsZyxkKTtpZihudWxsIT09Yi5tZW1vaXplZFN0YXRlKXJldHVybiBiLmNoaWxkPWEuY2hpbGQsYi5mbGFnc3w9MTI4LG51bGw7Zj1kLmZhbGxiYWNrO2U9Yi5tb2RlO2Q9cWooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46ZC5jaGlsZHJlbn0sZSwwLG51bGwpO2Y9QWgoZixlLGcsbnVsbCk7Zi5mbGFnc3w9MjtkLnJldHVybj1iO2YucmV0dXJuPWI7ZC5zaWJsaW5nPWY7Yi5jaGlsZD1kOzAhPT0oYi5tb2RlJjEpJiZCaChiLGEuY2hpbGQsbnVsbCxnKTtiLmNoaWxkLm1lbW9pemVkU3RhdGU9b2ooZyk7Yi5tZW1vaXplZFN0YXRlPW5qO3JldHVybiBmfWlmKDA9PT0oYi5tb2RlJjEpKXJldHVybiB0aihhLGIsZyxudWxsKTtpZihcIiQhXCI9PT1lLmRhdGEpe2Q9ZS5uZXh0U2libGluZyYmZS5uZXh0U2libGluZy5kYXRhc2V0O1xuaWYoZCl2YXIgaD1kLmRnc3Q7ZD1oO2Y9RXJyb3IocCg0MTkpKTtkPUxpKGYsZCx2b2lkIDApO3JldHVybiB0aihhLGIsZyxkKX1oPTAhPT0oZyZhLmNoaWxkTGFuZXMpO2lmKFVnfHxoKXtkPVI7aWYobnVsbCE9PWQpe3N3aXRjaChnJi1nKXtjYXNlIDQ6ZT0yO2JyZWFrO2Nhc2UgMTY6ZT04O2JyZWFrO2Nhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDplPTMyO2JyZWFrO2Nhc2UgNTM2ODcwOTEyOmU9MjY4NDM1NDU2O2JyZWFrO2RlZmF1bHQ6ZT0wfWU9MCE9PShlJihkLnN1c3BlbmRlZExhbmVzfGcpKT8wOmU7XG4wIT09ZSYmZSE9PWYucmV0cnlMYW5lJiYoZi5yZXRyeUxhbmU9ZSxaZyhhLGUpLG1oKGQsYSxlLC0xKSl9dWooKTtkPUxpKEVycm9yKHAoNDIxKSkpO3JldHVybiB0aihhLGIsZyxkKX1pZihcIiQ/XCI9PT1lLmRhdGEpcmV0dXJuIGIuZmxhZ3N8PTEyOCxiLmNoaWxkPWEuY2hpbGQsYj12ai5iaW5kKG51bGwsYSksZS5fcmVhY3RSZXRyeT1iLG51bGw7YT1mLnRyZWVDb250ZXh0O3lnPUxmKGUubmV4dFNpYmxpbmcpO3hnPWI7ST0hMDt6Zz1udWxsO251bGwhPT1hJiYob2dbcGcrK109cmcsb2dbcGcrK109c2csb2dbcGcrK109cWcscmc9YS5pZCxzZz1hLm92ZXJmbG93LHFnPWIpO2I9cmooYixkLmNoaWxkcmVuKTtiLmZsYWdzfD00MDk2O3JldHVybiBifWZ1bmN0aW9uIHdqKGEsYixjKXthLmxhbmVzfD1iO3ZhciBkPWEuYWx0ZXJuYXRlO251bGwhPT1kJiYoZC5sYW5lc3w9Yik7U2coYS5yZXR1cm4sYixjKX1cbmZ1bmN0aW9uIHhqKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFN0YXRlO251bGw9PT1mP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmQsdGFpbDpjLHRhaWxNb2RlOmV9OihmLmlzQmFja3dhcmRzPWIsZi5yZW5kZXJpbmc9bnVsbCxmLnJlbmRlcmluZ1N0YXJ0VGltZT0wLGYubGFzdD1kLGYudGFpbD1jLGYudGFpbE1vZGU9ZSl9XG5mdW5jdGlvbiB5aihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1kLnJldmVhbE9yZGVyLGY9ZC50YWlsO1lpKGEsYixkLmNoaWxkcmVuLGMpO2Q9TS5jdXJyZW50O2lmKDAhPT0oZCYyKSlkPWQmMXwyLGIuZmxhZ3N8PTEyODtlbHNle2lmKG51bGwhPT1hJiYwIT09KGEuZmxhZ3MmMTI4KSlhOmZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtpZigxMz09PWEudGFnKW51bGwhPT1hLm1lbW9pemVkU3RhdGUmJndqKGEsYyxiKTtlbHNlIGlmKDE5PT09YS50YWcpd2ooYSxjLGIpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1HKE0sZCk7aWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPVxubnVsbDtlbHNlIHN3aXRjaChlKXtjYXNlIFwiZm9yd2FyZHNcIjpjPWIuY2hpbGQ7Zm9yKGU9bnVsbDtudWxsIT09YzspYT1jLmFsdGVybmF0ZSxudWxsIT09YSYmbnVsbD09PU1oKGEpJiYoZT1jKSxjPWMuc2libGluZztjPWU7bnVsbD09PWM/KGU9Yi5jaGlsZCxiLmNoaWxkPW51bGwpOihlPWMuc2libGluZyxjLnNpYmxpbmc9bnVsbCk7eGooYiwhMSxlLGMsZik7YnJlYWs7Y2FzZSBcImJhY2t3YXJkc1wiOmM9bnVsbDtlPWIuY2hpbGQ7Zm9yKGIuY2hpbGQ9bnVsbDtudWxsIT09ZTspe2E9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PWEmJm51bGw9PT1NaChhKSl7Yi5jaGlsZD1lO2JyZWFrfWE9ZS5zaWJsaW5nO2Uuc2libGluZz1jO2M9ZTtlPWF9eGooYiwhMCxjLG51bGwsZik7YnJlYWs7Y2FzZSBcInRvZ2V0aGVyXCI6eGooYiwhMSxudWxsLG51bGwsdm9pZCAwKTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gamooYSxiKXswPT09KGIubW9kZSYxKSYmbnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mil9ZnVuY3Rpb24gJGkoYSxiLGMpe251bGwhPT1hJiYoYi5kZXBlbmRlbmNpZXM9YS5kZXBlbmRlbmNpZXMpO2hofD1iLmxhbmVzO2lmKDA9PT0oYyZiLmNoaWxkTGFuZXMpKXJldHVybiBudWxsO2lmKG51bGwhPT1hJiZiLmNoaWxkIT09YS5jaGlsZCl0aHJvdyBFcnJvcihwKDE1MykpO2lmKG51bGwhPT1iLmNoaWxkKXthPWIuY2hpbGQ7Yz13aChhLGEucGVuZGluZ1Byb3BzKTtiLmNoaWxkPWM7Zm9yKGMucmV0dXJuPWI7bnVsbCE9PWEuc2libGluZzspYT1hLnNpYmxpbmcsYz1jLnNpYmxpbmc9d2goYSxhLnBlbmRpbmdQcm9wcyksYy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbH1yZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIHpqKGEsYixjKXtzd2l0Y2goYi50YWcpe2Nhc2UgMzpsaihiKTtJZygpO2JyZWFrO2Nhc2UgNTpLaChiKTticmVhaztjYXNlIDE6WmYoYi50eXBlKSYmY2coYik7YnJlYWs7Y2FzZSA0OkloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDp2YXIgZD1iLnR5cGUuX2NvbnRleHQsZT1iLm1lbW9pemVkUHJvcHMudmFsdWU7RyhNZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1lO2JyZWFrO2Nhc2UgMTM6ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQpe2lmKG51bGwhPT1kLmRlaHlkcmF0ZWQpcmV0dXJuIEcoTSxNLmN1cnJlbnQmMSksYi5mbGFnc3w9MTI4LG51bGw7aWYoMCE9PShjJmIuY2hpbGQuY2hpbGRMYW5lcykpcmV0dXJuIHBqKGEsYixjKTtHKE0sTS5jdXJyZW50JjEpO2E9JGkoYSxiLGMpO3JldHVybiBudWxsIT09YT9hLnNpYmxpbmc6bnVsbH1HKE0sTS5jdXJyZW50JjEpO2JyZWFrO2Nhc2UgMTk6ZD0wIT09KGMmXG5iLmNoaWxkTGFuZXMpO2lmKDAhPT0oYS5mbGFncyYxMjgpKXtpZihkKXJldHVybiB5aihhLGIsYyk7Yi5mbGFnc3w9MTI4fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCk7RyhNLE0uY3VycmVudCk7aWYoZClicmVhaztlbHNlIHJldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gYi5sYW5lcz0wLGVqKGEsYixjKX1yZXR1cm4gJGkoYSxiLGMpfXZhciBBaixCaixDaixEajtcbkFqPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWIuY2hpbGQ7bnVsbCE9PWM7KXtpZig1PT09Yy50YWd8fDY9PT1jLnRhZylhLmFwcGVuZENoaWxkKGMuc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1jLnRhZyYmbnVsbCE9PWMuY2hpbGQpe2MuY2hpbGQucmV0dXJuPWM7Yz1jLmNoaWxkO2NvbnRpbnVlfWlmKGM9PT1iKWJyZWFrO2Zvcig7bnVsbD09PWMuc2libGluZzspe2lmKG51bGw9PT1jLnJldHVybnx8Yy5yZXR1cm49PT1iKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fTtCaj1mdW5jdGlvbigpe307XG5Daj1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLm1lbW9pemVkUHJvcHM7aWYoZSE9PWQpe2E9Yi5zdGF0ZU5vZGU7SGgoRWguY3VycmVudCk7dmFyIGY9bnVsbDtzd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6ZT1ZYShhLGUpO2Q9WWEoYSxkKTtmPVtdO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjplPUEoe30sZSx7dmFsdWU6dm9pZCAwfSk7ZD1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO2Y9W107YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6ZT1nYihhLGUpO2Q9Z2IoYSxkKTtmPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT09dHlwZW9mIGUub25DbGljayYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQub25DbGljayYmKGEub25jbGljaz1CZil9dWIoYyxkKTt2YXIgZztjPW51bGw7Zm9yKGwgaW4gZSlpZighZC5oYXNPd25Qcm9wZXJ0eShsKSYmZS5oYXNPd25Qcm9wZXJ0eShsKSYmbnVsbCE9ZVtsXSlpZihcInN0eWxlXCI9PT1sKXt2YXIgaD1lW2xdO2ZvcihnIGluIGgpaC5oYXNPd25Qcm9wZXJ0eShnKSYmXG4oY3x8KGM9e30pLGNbZ109XCJcIil9ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIiE9PWwmJlwiY2hpbGRyZW5cIiE9PWwmJlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1sJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09bCYmXCJhdXRvRm9jdXNcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT9mfHwoZj1bXSk6KGY9Znx8W10pLnB1c2gobCxudWxsKSk7Zm9yKGwgaW4gZCl7dmFyIGs9ZFtsXTtoPW51bGwhPWU/ZVtsXTp2b2lkIDA7aWYoZC5oYXNPd25Qcm9wZXJ0eShsKSYmayE9PWgmJihudWxsIT1rfHxudWxsIT1oKSlpZihcInN0eWxlXCI9PT1sKWlmKGgpe2ZvcihnIGluIGgpIWguaGFzT3duUHJvcGVydHkoZyl8fGsmJmsuaGFzT3duUHJvcGVydHkoZyl8fChjfHwoYz17fSksY1tnXT1cIlwiKTtmb3IoZyBpbiBrKWsuaGFzT3duUHJvcGVydHkoZykmJmhbZ10hPT1rW2ddJiYoY3x8KGM9e30pLGNbZ109a1tnXSl9ZWxzZSBjfHwoZnx8KGY9W10pLGYucHVzaChsLFxuYykpLGM9aztlbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bD8oaz1rP2suX19odG1sOnZvaWQgMCxoPWg/aC5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJmghPT1rJiYoZj1mfHxbXSkucHVzaChsLGspKTpcImNoaWxkcmVuXCI9PT1sP1wic3RyaW5nXCIhPT10eXBlb2YgayYmXCJudW1iZXJcIiE9PXR5cGVvZiBrfHwoZj1mfHxbXSkucHVzaChsLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiYoZWEuaGFzT3duUHJvcGVydHkobCk/KG51bGwhPWsmJlwib25TY3JvbGxcIj09PWwmJkQoXCJzY3JvbGxcIixhKSxmfHxoPT09a3x8KGY9W10pKTooZj1mfHxbXSkucHVzaChsLGspKX1jJiYoZj1mfHxbXSkucHVzaChcInN0eWxlXCIsYyk7dmFyIGw9ZjtpZihiLnVwZGF0ZVF1ZXVlPWwpYi5mbGFnc3w9NH19O0RqPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5mbGFnc3w9NCl9O1xuZnVuY3Rpb24gRWooYSxiKXtpZighSSlzd2l0Y2goYS50YWlsTW9kZSl7Y2FzZSBcImhpZGRlblwiOmI9YS50YWlsO2Zvcih2YXIgYz1udWxsO251bGwhPT1iOyludWxsIT09Yi5hbHRlcm5hdGUmJihjPWIpLGI9Yi5zaWJsaW5nO251bGw9PT1jP2EudGFpbD1udWxsOmMuc2libGluZz1udWxsO2JyZWFrO2Nhc2UgXCJjb2xsYXBzZWRcIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYoZD1jKSxjPWMuc2libGluZztudWxsPT09ZD9ifHxudWxsPT09YS50YWlsP2EudGFpbD1udWxsOmEudGFpbC5zaWJsaW5nPW51bGw6ZC5zaWJsaW5nPW51bGx9fVxuZnVuY3Rpb24gUyhhKXt2YXIgYj1udWxsIT09YS5hbHRlcm5hdGUmJmEuYWx0ZXJuYXRlLmNoaWxkPT09YS5jaGlsZCxjPTAsZD0wO2lmKGIpZm9yKHZhciBlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzJjE0NjgwMDY0LGR8PWUuZmxhZ3MmMTQ2ODAwNjQsZS5yZXR1cm49YSxlPWUuc2libGluZztlbHNlIGZvcihlPWEuY2hpbGQ7bnVsbCE9PWU7KWN8PWUubGFuZXN8ZS5jaGlsZExhbmVzLGR8PWUuc3VidHJlZUZsYWdzLGR8PWUuZmxhZ3MsZS5yZXR1cm49YSxlPWUuc2libGluZzthLnN1YnRyZWVGbGFnc3w9ZDthLmNoaWxkTGFuZXM9YztyZXR1cm4gYn1cbmZ1bmN0aW9uIEZqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wczt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBTKGIpLG51bGw7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDM6ZD1iLnN0YXRlTm9kZTtKaCgpO0UoV2YpO0UoSCk7T2goKTtkLnBlbmRpbmdDb250ZXh0JiYoZC5jb250ZXh0PWQucGVuZGluZ0NvbnRleHQsZC5wZW5kaW5nQ29udGV4dD1udWxsKTtpZihudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpR2coYik/Yi5mbGFnc3w9NDpudWxsPT09YXx8YS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmMD09PShiLmZsYWdzJjI1Nil8fChiLmZsYWdzfD0xMDI0LG51bGwhPT16ZyYmKEdqKHpnKSx6Zz1udWxsKSk7QmooYSxiKTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNTpMaChiKTt2YXIgZT1IaChHaC5jdXJyZW50KTtcbmM9Yi50eXBlO2lmKG51bGwhPT1hJiZudWxsIT1iLnN0YXRlTm9kZSlDaihhLGIsYyxkLGUpLGEucmVmIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighZCl7aWYobnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7UyhiKTtyZXR1cm4gbnVsbH1hPUhoKEVoLmN1cnJlbnQpO2lmKEdnKGIpKXtkPWIuc3RhdGVOb2RlO2M9Yi50eXBlO3ZhciBmPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2RbUGZdPWY7YT0wIT09KGIubW9kZSYxKTtzd2l0Y2goYyl7Y2FzZSBcImRpYWxvZ1wiOkQoXCJjYW5jZWxcIixkKTtEKFwiY2xvc2VcIixkKTticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxkKTticmVhaztjYXNlIFwic291cmNlXCI6RChcImVycm9yXCIsZCk7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5kKTtEKFwibG9hZFwiLGQpO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGQpO2JyZWFrO2Nhc2UgXCJpbnB1dFwiOlphKGQsZik7RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwic2VsZWN0XCI6ZC5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O0QoXCJpbnZhbGlkXCIsZCk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoZCxmKSxEKFwiaW52YWxpZFwiLGQpfXViKGMsZik7ZT1udWxsO2Zvcih2YXIgZyBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoZykpe3ZhciBoPWZbZ107XCJjaGlsZHJlblwiPT09Zz9cInN0cmluZ1wiPT09dHlwZW9mIGg/ZC50ZXh0Q29udGVudCE9PWgmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LGgsYSksZT1bXCJjaGlsZHJlblwiLGhdKTpcIm51bWJlclwiPT09dHlwZW9mIGgmJmQudGV4dENvbnRlbnQhPT1cIlwiK2gmJighMCE9PWYuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLnRleHRDb250ZW50LFxuaCxhKSxlPVtcImNoaWxkcmVuXCIsXCJcIitoXSk6ZWEuaGFzT3duUHJvcGVydHkoZykmJm51bGwhPWgmJlwib25TY3JvbGxcIj09PWcmJkQoXCJzY3JvbGxcIixkKX1zd2l0Y2goYyl7Y2FzZSBcImlucHV0XCI6VmEoZCk7ZGIoZCxmLCEwKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpWYShkKTtqYihkKTticmVhaztjYXNlIFwic2VsZWN0XCI6Y2FzZSBcIm9wdGlvblwiOmJyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGYub25DbGljayYmKGQub25jbGljaz1CZil9ZD1lO2IudXBkYXRlUXVldWU9ZDtudWxsIT09ZCYmKGIuZmxhZ3N8PTQpfWVsc2V7Zz05PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudDtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWEmJihhPWtiKGMpKTtcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIj09PWE/XCJzY3JpcHRcIj09PWM/KGE9Zy5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLGEuaW5uZXJIVE1MPVwiPHNjcmlwdD5cXHgzYy9zY3JpcHQ+XCIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCkpOlxuXCJzdHJpbmdcIj09PXR5cGVvZiBkLmlzP2E9Zy5jcmVhdGVFbGVtZW50KGMse2lzOmQuaXN9KTooYT1nLmNyZWF0ZUVsZW1lbnQoYyksXCJzZWxlY3RcIj09PWMmJihnPWEsZC5tdWx0aXBsZT9nLm11bHRpcGxlPSEwOmQuc2l6ZSYmKGcuc2l6ZT1kLnNpemUpKSk6YT1nLmNyZWF0ZUVsZW1lbnROUyhhLGMpO2FbT2ZdPWI7YVtQZl09ZDtBaihhLGIsITEsITEpO2Iuc3RhdGVOb2RlPWE7YTp7Zz12YihjLGQpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGEpO0QoXCJjbG9zZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaWZyYW1lXCI6Y2FzZSBcIm9iamVjdFwiOmNhc2UgXCJlbWJlZFwiOkQoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJ2aWRlb1wiOmNhc2UgXCJhdWRpb1wiOmZvcihlPTA7ZTxsZi5sZW5ndGg7ZSsrKUQobGZbZV0sYSk7ZT1kO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImltZ1wiOmNhc2UgXCJpbWFnZVwiOmNhc2UgXCJsaW5rXCI6RChcImVycm9yXCIsXG5hKTtEKFwibG9hZFwiLGEpO2U9ZDticmVhaztjYXNlIFwiZGV0YWlsc1wiOkQoXCJ0b2dnbGVcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoYSxkKTtlPVlhKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwib3B0aW9uXCI6ZT1kO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjphLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZC5tdWx0aXBsZX07ZT1BKHt9LGQse3ZhbHVlOnZvaWQgMH0pO0QoXCJpbnZhbGlkXCIsYSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aGIoYSxkKTtlPWdiKGEsZCk7RChcImludmFsaWRcIixhKTticmVhaztkZWZhdWx0OmU9ZH11YihjLGUpO2g9ZTtmb3IoZiBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZikpe3ZhciBrPWhbZl07XCJzdHlsZVwiPT09Zj9zYihhLGspOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWY/KGs9az9rLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmbmIoYSxrKSk6XCJjaGlsZHJlblwiPT09Zj9cInN0cmluZ1wiPT09dHlwZW9mIGs/KFwidGV4dGFyZWFcIiE9PVxuY3x8XCJcIiE9PWspJiZvYihhLGspOlwibnVtYmVyXCI9PT10eXBlb2YgayYmb2IoYSxcIlwiK2spOlwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCIhPT1mJiZcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiIT09ZiYmXCJhdXRvRm9jdXNcIiE9PWYmJihlYS5oYXNPd25Qcm9wZXJ0eShmKT9udWxsIT1rJiZcIm9uU2Nyb2xsXCI9PT1mJiZEKFwic2Nyb2xsXCIsYSk6bnVsbCE9ayYmdGEoYSxmLGssZykpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShhKTtkYihhLGQsITEpO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGEpO2piKGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjpudWxsIT1kLnZhbHVlJiZhLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsXCJcIitTYShkLnZhbHVlKSk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEubXVsdGlwbGU9ISFkLm11bHRpcGxlO2Y9ZC52YWx1ZTtudWxsIT1mP2ZiKGEsISFkLm11bHRpcGxlLGYsITEpOm51bGwhPWQuZGVmYXVsdFZhbHVlJiZmYihhLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSxcbiEwKTticmVhaztkZWZhdWx0OlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLm9uQ2xpY2smJihhLm9uY2xpY2s9QmYpfXN3aXRjaChjKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmQ9ISFkLmF1dG9Gb2N1czticmVhayBhO2Nhc2UgXCJpbWdcIjpkPSEwO2JyZWFrIGE7ZGVmYXVsdDpkPSExfX1kJiYoYi5mbGFnc3w9NCl9bnVsbCE9PWIucmVmJiYoYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTIpfVMoYik7cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKURqKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZihcInN0cmluZ1wiIT09dHlwZW9mIGQmJm51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2NikpO2M9SGgoR2guY3VycmVudCk7SGgoRWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLm1lbW9pemVkUHJvcHM7ZFtPZl09YjtpZihmPWQubm9kZVZhbHVlIT09YylpZihhPVxueGcsbnVsbCE9PWEpc3dpdGNoKGEudGFnKXtjYXNlIDM6QWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSk7YnJlYWs7Y2FzZSA1OiEwIT09YS5tZW1vaXplZFByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyYmQWYoZC5ub2RlVmFsdWUsYywwIT09KGEubW9kZSYxKSl9ZiYmKGIuZmxhZ3N8PTQpfWVsc2UgZD0oOT09PWMubm9kZVR5cGU/YzpjLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGQpLGRbT2ZdPWIsYi5zdGF0ZU5vZGU9ZH1TKGIpO3JldHVybiBudWxsO2Nhc2UgMTM6RShNKTtkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihJJiZudWxsIT09eWcmJjAhPT0oYi5tb2RlJjEpJiYwPT09KGIuZmxhZ3MmMTI4KSlIZygpLElnKCksYi5mbGFnc3w9OTg1NjAsZj0hMTtlbHNlIGlmKGY9R2coYiksbnVsbCE9PWQmJm51bGwhPT1kLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1cbmEpe2lmKCFmKXRocm93IEVycm9yKHAoMzE4KSk7Zj1iLm1lbW9pemVkU3RhdGU7Zj1udWxsIT09Zj9mLmRlaHlkcmF0ZWQ6bnVsbDtpZighZil0aHJvdyBFcnJvcihwKDMxNykpO2ZbT2ZdPWJ9ZWxzZSBJZygpLDA9PT0oYi5mbGFncyYxMjgpJiYoYi5tZW1vaXplZFN0YXRlPW51bGwpLGIuZmxhZ3N8PTQ7UyhiKTtmPSExfWVsc2UgbnVsbCE9PXpnJiYoR2ooemcpLHpnPW51bGwpLGY9ITA7aWYoIWYpcmV0dXJuIGIuZmxhZ3MmNjU1MzY/YjpudWxsfWlmKDAhPT0oYi5mbGFncyYxMjgpKXJldHVybiBiLmxhbmVzPWMsYjtkPW51bGwhPT1kO2QhPT0obnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUpJiZkJiYoYi5jaGlsZC5mbGFnc3w9ODE5MiwwIT09KGIubW9kZSYxKSYmKG51bGw9PT1hfHwwIT09KE0uY3VycmVudCYxKT8wPT09VCYmKFQ9Myk6dWooKSkpO251bGwhPT1iLnVwZGF0ZVF1ZXVlJiYoYi5mbGFnc3w9NCk7UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDQ6cmV0dXJuIEpoKCksXG5CaihhLGIpLG51bGw9PT1hJiZzZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxTKGIpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxTKGIpLG51bGw7Y2FzZSAxNzpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxTKGIpLG51bGw7Y2FzZSAxOTpFKE0pO2Y9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1mKXJldHVybiBTKGIpLG51bGw7ZD0wIT09KGIuZmxhZ3MmMTI4KTtnPWYucmVuZGVyaW5nO2lmKG51bGw9PT1nKWlmKGQpRWooZiwhMSk7ZWxzZXtpZigwIT09VHx8bnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtnPU1oKGEpO2lmKG51bGwhPT1nKXtiLmZsYWdzfD0xMjg7RWooZiwhMSk7ZD1nLnVwZGF0ZVF1ZXVlO251bGwhPT1kJiYoYi51cGRhdGVRdWV1ZT1kLGIuZmxhZ3N8PTQpO2Iuc3VidHJlZUZsYWdzPTA7ZD1jO2ZvcihjPWIuY2hpbGQ7bnVsbCE9PWM7KWY9YyxhPWQsZi5mbGFncyY9MTQ2ODAwNjYsXG5nPWYuYWx0ZXJuYXRlLG51bGw9PT1nPyhmLmNoaWxkTGFuZXM9MCxmLmxhbmVzPWEsZi5jaGlsZD1udWxsLGYuc3VidHJlZUZsYWdzPTAsZi5tZW1vaXplZFByb3BzPW51bGwsZi5tZW1vaXplZFN0YXRlPW51bGwsZi51cGRhdGVRdWV1ZT1udWxsLGYuZGVwZW5kZW5jaWVzPW51bGwsZi5zdGF0ZU5vZGU9bnVsbCk6KGYuY2hpbGRMYW5lcz1nLmNoaWxkTGFuZXMsZi5sYW5lcz1nLmxhbmVzLGYuY2hpbGQ9Zy5jaGlsZCxmLnN1YnRyZWVGbGFncz0wLGYuZGVsZXRpb25zPW51bGwsZi5tZW1vaXplZFByb3BzPWcubWVtb2l6ZWRQcm9wcyxmLm1lbW9pemVkU3RhdGU9Zy5tZW1vaXplZFN0YXRlLGYudXBkYXRlUXVldWU9Zy51cGRhdGVRdWV1ZSxmLnR5cGU9Zy50eXBlLGE9Zy5kZXBlbmRlbmNpZXMsZi5kZXBlbmRlbmNpZXM9bnVsbD09PWE/bnVsbDp7bGFuZXM6YS5sYW5lcyxmaXJzdENvbnRleHQ6YS5maXJzdENvbnRleHR9KSxjPWMuc2libGluZztHKE0sTS5jdXJyZW50JjF8Mik7cmV0dXJuIGIuY2hpbGR9YT1cbmEuc2libGluZ31udWxsIT09Zi50YWlsJiZCKCk+SGomJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpfWVsc2V7aWYoIWQpaWYoYT1NaChnKSxudWxsIT09YSl7aWYoYi5mbGFnc3w9MTI4LGQ9ITAsYz1hLnVwZGF0ZVF1ZXVlLG51bGwhPT1jJiYoYi51cGRhdGVRdWV1ZT1jLGIuZmxhZ3N8PTQpLEVqKGYsITApLG51bGw9PT1mLnRhaWwmJlwiaGlkZGVuXCI9PT1mLnRhaWxNb2RlJiYhZy5hbHRlcm5hdGUmJiFJKXJldHVybiBTKGIpLG51bGx9ZWxzZSAyKkIoKS1mLnJlbmRlcmluZ1N0YXJ0VGltZT5IaiYmMTA3Mzc0MTgyNCE9PWMmJihiLmZsYWdzfD0xMjgsZD0hMCxFaihmLCExKSxiLmxhbmVzPTQxOTQzMDQpO2YuaXNCYWNrd2FyZHM/KGcuc2libGluZz1iLmNoaWxkLGIuY2hpbGQ9Zyk6KGM9Zi5sYXN0LG51bGwhPT1jP2Muc2libGluZz1nOmIuY2hpbGQ9ZyxmLmxhc3Q9Zyl9aWYobnVsbCE9PWYudGFpbClyZXR1cm4gYj1mLnRhaWwsZi5yZW5kZXJpbmc9XG5iLGYudGFpbD1iLnNpYmxpbmcsZi5yZW5kZXJpbmdTdGFydFRpbWU9QigpLGIuc2libGluZz1udWxsLGM9TS5jdXJyZW50LEcoTSxkP2MmMXwyOmMmMSksYjtTKGIpO3JldHVybiBudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxkPW51bGwhPT1iLm1lbW9pemVkU3RhdGUsbnVsbCE9PWEmJm51bGwhPT1hLm1lbW9pemVkU3RhdGUhPT1kJiYoYi5mbGFnc3w9ODE5MiksZCYmMCE9PShiLm1vZGUmMSk/MCE9PShnaiYxMDczNzQxODI0KSYmKFMoYiksYi5zdWJ0cmVlRmxhZ3MmNiYmKGIuZmxhZ3N8PTgxOTIpKTpTKGIpLG51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtjYXNlIDI1OnJldHVybiBudWxsfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fVxuZnVuY3Rpb24gSmooYSxiKXt3ZyhiKTtzd2l0Y2goYi50YWcpe2Nhc2UgMTpyZXR1cm4gWmYoYi50eXBlKSYmJGYoKSxhPWIuZmxhZ3MsYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDM6cmV0dXJuIEpoKCksRShXZiksRShIKSxPaCgpLGE9Yi5mbGFncywwIT09KGEmNjU1MzYpJiYwPT09KGEmMTI4KT8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDU6cmV0dXJuIExoKGIpLG51bGw7Y2FzZSAxMzpFKE0pO2E9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1hJiZudWxsIT09YS5kZWh5ZHJhdGVkKXtpZihudWxsPT09Yi5hbHRlcm5hdGUpdGhyb3cgRXJyb3IocCgzNDApKTtJZygpfWE9Yi5mbGFncztyZXR1cm4gYSY2NTUzNj8oYi5mbGFncz1hJi02NTUzN3wxMjgsYik6bnVsbDtjYXNlIDE5OnJldHVybiBFKE0pLG51bGw7Y2FzZSA0OnJldHVybiBKaCgpLG51bGw7Y2FzZSAxMDpyZXR1cm4gUmcoYi50eXBlLl9jb250ZXh0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gSWooKSxcbm51bGw7Y2FzZSAyNDpyZXR1cm4gbnVsbDtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgS2o9ITEsVT0hMSxMaj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldCxWPW51bGw7ZnVuY3Rpb24gTWooYSxiKXt2YXIgYz1hLnJlZjtpZihudWxsIT09YylpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYyl0cnl7YyhudWxsKX1jYXRjaChkKXtXKGEsYixkKX1lbHNlIGMuY3VycmVudD1udWxsfWZ1bmN0aW9uIE5qKGEsYixjKXt0cnl7YygpfWNhdGNoKGQpe1coYSxiLGQpfX12YXIgT2o9ITE7XG5mdW5jdGlvbiBQaihhLGIpe0NmPWRkO2E9TWUoKTtpZihOZShhKSl7aWYoXCJzZWxlY3Rpb25TdGFydFwiaW4gYSl2YXIgYz17c3RhcnQ6YS5zZWxlY3Rpb25TdGFydCxlbmQ6YS5zZWxlY3Rpb25FbmR9O2Vsc2UgYTp7Yz0oYz1hLm93bmVyRG9jdW1lbnQpJiZjLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGQ9Yy5nZXRTZWxlY3Rpb24mJmMuZ2V0U2VsZWN0aW9uKCk7aWYoZCYmMCE9PWQucmFuZ2VDb3VudCl7Yz1kLmFuY2hvck5vZGU7dmFyIGU9ZC5hbmNob3JPZmZzZXQsZj1kLmZvY3VzTm9kZTtkPWQuZm9jdXNPZmZzZXQ7dHJ5e2Mubm9kZVR5cGUsZi5ub2RlVHlwZX1jYXRjaChGKXtjPW51bGw7YnJlYWsgYX12YXIgZz0wLGg9LTEsaz0tMSxsPTAsbT0wLHE9YSxyPW51bGw7Yjpmb3IoOzspe2Zvcih2YXIgeTs7KXtxIT09Y3x8MCE9PWUmJjMhPT1xLm5vZGVUeXBlfHwoaD1nK2UpO3EhPT1mfHwwIT09ZCYmMyE9PXEubm9kZVR5cGV8fChrPWcrZCk7Mz09PXEubm9kZVR5cGUmJihnKz1cbnEubm9kZVZhbHVlLmxlbmd0aCk7aWYobnVsbD09PSh5PXEuZmlyc3RDaGlsZCkpYnJlYWs7cj1xO3E9eX1mb3IoOzspe2lmKHE9PT1hKWJyZWFrIGI7cj09PWMmJisrbD09PWUmJihoPWcpO3I9PT1mJiYrK209PT1kJiYoaz1nKTtpZihudWxsIT09KHk9cS5uZXh0U2libGluZykpYnJlYWs7cT1yO3I9cS5wYXJlbnROb2RlfXE9eX1jPS0xPT09aHx8LTE9PT1rP251bGw6e3N0YXJ0OmgsZW5kOmt9fWVsc2UgYz1udWxsfWM9Y3x8e3N0YXJ0OjAsZW5kOjB9fWVsc2UgYz1udWxsO0RmPXtmb2N1c2VkRWxlbTphLHNlbGVjdGlvblJhbmdlOmN9O2RkPSExO2ZvcihWPWI7bnVsbCE9PVY7KWlmKGI9VixhPWIuY2hpbGQsMCE9PShiLnN1YnRyZWVGbGFncyYxMDI4KSYmbnVsbCE9PWEpYS5yZXR1cm49YixWPWE7ZWxzZSBmb3IoO251bGwhPT1WOyl7Yj1WO3RyeXt2YXIgbj1iLmFsdGVybmF0ZTtpZigwIT09KGIuZmxhZ3MmMTAyNCkpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmJyZWFrO1xuY2FzZSAxOmlmKG51bGwhPT1uKXt2YXIgdD1uLm1lbW9pemVkUHJvcHMsSj1uLm1lbW9pemVkU3RhdGUseD1iLnN0YXRlTm9kZSx3PXguZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoYi5lbGVtZW50VHlwZT09PWIudHlwZT90OkxnKGIudHlwZSx0KSxKKTt4Ll9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPXd9YnJlYWs7Y2FzZSAzOnZhciB1PWIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87MT09PXUubm9kZVR5cGU/dS50ZXh0Q29udGVudD1cIlwiOjk9PT11Lm5vZGVUeXBlJiZ1LmRvY3VtZW50RWxlbWVudCYmdS5yZW1vdmVDaGlsZCh1LmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fX1jYXRjaChGKXtXKGIsYi5yZXR1cm4sRil9YT1iLnNpYmxpbmc7aWYobnVsbCE9PWEpe2EucmV0dXJuPWIucmV0dXJuO1Y9YTticmVha31WPWIucmV0dXJufW49T2o7T2o9ITE7cmV0dXJuIG59XG5mdW5jdGlvbiBRaihhLGIsYyl7dmFyIGQ9Yi51cGRhdGVRdWV1ZTtkPW51bGwhPT1kP2QubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1kKXt2YXIgZT1kPWQubmV4dDtkb3tpZigoZS50YWcmYSk9PT1hKXt2YXIgZj1lLmRlc3Ryb3k7ZS5kZXN0cm95PXZvaWQgMDt2b2lkIDAhPT1mJiZOaihiLGMsZil9ZT1lLm5leHR9d2hpbGUoZSE9PWQpfX1mdW5jdGlvbiBSaihhLGIpe2I9Yi51cGRhdGVRdWV1ZTtiPW51bGwhPT1iP2IubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1iKXt2YXIgYz1iPWIubmV4dDtkb3tpZigoYy50YWcmYSk9PT1hKXt2YXIgZD1jLmNyZWF0ZTtjLmRlc3Ryb3k9ZCgpfWM9Yy5uZXh0fXdoaWxlKGMhPT1iKX19ZnVuY3Rpb24gU2ooYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpe3ZhciBjPWEuc3RhdGVOb2RlO3N3aXRjaChhLnRhZyl7Y2FzZSA1OmE9YzticmVhaztkZWZhdWx0OmE9Y31cImZ1bmN0aW9uXCI9PT10eXBlb2YgYj9iKGEpOmIuY3VycmVudD1hfX1cbmZ1bmN0aW9uIFRqKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO251bGwhPT1iJiYoYS5hbHRlcm5hdGU9bnVsbCxUaihiKSk7YS5jaGlsZD1udWxsO2EuZGVsZXRpb25zPW51bGw7YS5zaWJsaW5nPW51bGw7NT09PWEudGFnJiYoYj1hLnN0YXRlTm9kZSxudWxsIT09YiYmKGRlbGV0ZSBiW09mXSxkZWxldGUgYltQZl0sZGVsZXRlIGJbb2ZdLGRlbGV0ZSBiW1FmXSxkZWxldGUgYltSZl0pKTthLnN0YXRlTm9kZT1udWxsO2EucmV0dXJuPW51bGw7YS5kZXBlbmRlbmNpZXM9bnVsbDthLm1lbW9pemVkUHJvcHM9bnVsbDthLm1lbW9pemVkU3RhdGU9bnVsbDthLnBlbmRpbmdQcm9wcz1udWxsO2Euc3RhdGVOb2RlPW51bGw7YS51cGRhdGVRdWV1ZT1udWxsfWZ1bmN0aW9uIFVqKGEpe3JldHVybiA1PT09YS50YWd8fDM9PT1hLnRhZ3x8ND09PWEudGFnfVxuZnVuY3Rpb24gVmooYSl7YTpmb3IoOzspe2Zvcig7bnVsbD09PWEuc2libGluZzspe2lmKG51bGw9PT1hLnJldHVybnx8VWooYS5yZXR1cm4pKXJldHVybiBudWxsO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjtmb3IoYT1hLnNpYmxpbmc7NSE9PWEudGFnJiY2IT09YS50YWcmJjE4IT09YS50YWc7KXtpZihhLmZsYWdzJjIpY29udGludWUgYTtpZihudWxsPT09YS5jaGlsZHx8ND09PWEudGFnKWNvbnRpbnVlIGE7ZWxzZSBhLmNoaWxkLnJldHVybj1hLGE9YS5jaGlsZH1pZighKGEuZmxhZ3MmMikpcmV0dXJuIGEuc3RhdGVOb2RlfX1cbmZ1bmN0aW9uIFdqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiPzg9PT1jLm5vZGVUeXBlP2MucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxiKTpjLmluc2VydEJlZm9yZShhLGIpOig4PT09Yy5ub2RlVHlwZT8oYj1jLnBhcmVudE5vZGUsYi5pbnNlcnRCZWZvcmUoYSxjKSk6KGI9YyxiLmFwcGVuZENoaWxkKGEpKSxjPWMuX3JlYWN0Um9vdENvbnRhaW5lcixudWxsIT09YyYmdm9pZCAwIT09Y3x8bnVsbCE9PWIub25jbGlja3x8KGIub25jbGljaz1CZikpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihXaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVdqKGEsYixjKSxhPWEuc2libGluZ31cbmZ1bmN0aW9uIFhqKGEsYixjKXt2YXIgZD1hLnRhZztpZig1PT09ZHx8Nj09PWQpYT1hLnN0YXRlTm9kZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTtlbHNlIGlmKDQhPT1kJiYoYT1hLmNoaWxkLG51bGwhPT1hKSlmb3IoWGooYSxiLGMpLGE9YS5zaWJsaW5nO251bGwhPT1hOylYaihhLGIsYyksYT1hLnNpYmxpbmd9dmFyIFg9bnVsbCxZaj0hMTtmdW5jdGlvbiBaaihhLGIsYyl7Zm9yKGM9Yy5jaGlsZDtudWxsIT09YzspYWsoYSxiLGMpLGM9Yy5zaWJsaW5nfVxuZnVuY3Rpb24gYWsoYSxiLGMpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclVubW91bnQpdHJ5e2xjLm9uQ29tbWl0RmliZXJVbm1vdW50KGtjLGMpfWNhdGNoKGgpe31zd2l0Y2goYy50YWcpe2Nhc2UgNTpVfHxNaihjLGIpO2Nhc2UgNjp2YXIgZD1YLGU9WWo7WD1udWxsO1pqKGEsYixjKTtYPWQ7WWo9ZTtudWxsIT09WCYmKFlqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyk6YS5yZW1vdmVDaGlsZChjKSk6WC5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgMTg6bnVsbCE9PVgmJihZaj8oYT1YLGM9Yy5zdGF0ZU5vZGUsOD09PWEubm9kZVR5cGU/S2YoYS5wYXJlbnROb2RlLGMpOjE9PT1hLm5vZGVUeXBlJiZLZihhLGMpLGJkKGEpKTpLZihYLGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSA0OmQ9WDtlPVlqO1g9Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDtcblpqKGEsYixjKTtYPWQ7WWo9ZTticmVhaztjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aWYoIVUmJihkPWMudXBkYXRlUXVldWUsbnVsbCE9PWQmJihkPWQubGFzdEVmZmVjdCxudWxsIT09ZCkpKXtlPWQ9ZC5uZXh0O2Rve3ZhciBmPWUsZz1mLmRlc3Ryb3k7Zj1mLnRhZzt2b2lkIDAhPT1nJiYoMCE9PShmJjIpP05qKGMsYixnKTowIT09KGYmNCkmJk5qKGMsYixnKSk7ZT1lLm5leHR9d2hpbGUoZSE9PWQpfVpqKGEsYixjKTticmVhaztjYXNlIDE6aWYoIVUmJihNaihjLGIpLGQ9Yy5zdGF0ZU5vZGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50V2lsbFVubW91bnQpKXRyeXtkLnByb3BzPWMubWVtb2l6ZWRQcm9wcyxkLnN0YXRlPWMubWVtb2l6ZWRTdGF0ZSxkLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goaCl7VyhjLGIsaCl9WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjE6WmooYSxiLGMpO2JyZWFrO2Nhc2UgMjI6Yy5tb2RlJjE/KFU9KGQ9VSl8fG51bGwhPT1cbmMubWVtb2l6ZWRTdGF0ZSxaaihhLGIsYyksVT1kKTpaaihhLGIsYyk7YnJlYWs7ZGVmYXVsdDpaaihhLGIsYyl9fWZ1bmN0aW9uIGJrKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IExqKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9Y2suYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19XG5mdW5jdGlvbiBkayhhLGIpe3ZhciBjPWIuZGVsZXRpb25zO2lmKG51bGwhPT1jKWZvcih2YXIgZD0wO2Q8Yy5sZW5ndGg7ZCsrKXt2YXIgZT1jW2RdO3RyeXt2YXIgZj1hLGc9YixoPWc7YTpmb3IoO251bGwhPT1oOyl7c3dpdGNoKGgudGFnKXtjYXNlIDU6WD1oLnN0YXRlTm9kZTtZaj0hMTticmVhayBhO2Nhc2UgMzpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7YnJlYWsgYTtjYXNlIDQ6WD1oLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO2JyZWFrIGF9aD1oLnJldHVybn1pZihudWxsPT09WCl0aHJvdyBFcnJvcihwKDE2MCkpO2FrKGYsZyxlKTtYPW51bGw7WWo9ITE7dmFyIGs9ZS5hbHRlcm5hdGU7bnVsbCE9PWsmJihrLnJldHVybj1udWxsKTtlLnJldHVybj1udWxsfWNhdGNoKGwpe1coZSxiLGwpfX1pZihiLnN1YnRyZWVGbGFncyYxMjg1NClmb3IoYj1iLmNoaWxkO251bGwhPT1iOyllayhiLGEpLGI9Yi5zaWJsaW5nfVxuZnVuY3Rpb24gZWsoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZSxkPWEuZmxhZ3M7c3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6ZGsoYixhKTtmayhhKTtpZihkJjQpe3RyeXtRaigzLGEsYS5yZXR1cm4pLFJqKDMsYSl9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfXRyeXtRaig1LGEsYS5yZXR1cm4pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAxOmRrKGIsYSk7ZmsoYSk7ZCY1MTImJm51bGwhPT1jJiZNaihjLGMucmV0dXJuKTticmVhaztjYXNlIDU6ZGsoYixhKTtmayhhKTtkJjUxMiYmbnVsbCE9PWMmJk1qKGMsYy5yZXR1cm4pO2lmKGEuZmxhZ3MmMzIpe3ZhciBlPWEuc3RhdGVOb2RlO3RyeXtvYihlLFwiXCIpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19aWYoZCY0JiYoZT1hLnN0YXRlTm9kZSxudWxsIT1lKSl7dmFyIGY9YS5tZW1vaXplZFByb3BzLGc9bnVsbCE9PWM/Yy5tZW1vaXplZFByb3BzOmYsaD1hLnR5cGUsaz1hLnVwZGF0ZVF1ZXVlO1xuYS51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1rKXRyeXtcImlucHV0XCI9PT1oJiZcInJhZGlvXCI9PT1mLnR5cGUmJm51bGwhPWYubmFtZSYmYWIoZSxmKTt2YihoLGcpO3ZhciBsPXZiKGgsZik7Zm9yKGc9MDtnPGsubGVuZ3RoO2crPTIpe3ZhciBtPWtbZ10scT1rW2crMV07XCJzdHlsZVwiPT09bT9zYihlLHEpOlwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PW0/bmIoZSxxKTpcImNoaWxkcmVuXCI9PT1tP29iKGUscSk6dGEoZSxtLHEsbCl9c3dpdGNoKGgpe2Nhc2UgXCJpbnB1dFwiOmJiKGUsZik7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6aWIoZSxmKTticmVhaztjYXNlIFwic2VsZWN0XCI6dmFyIHI9ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlO2UuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZT0hIWYubXVsdGlwbGU7dmFyIHk9Zi52YWx1ZTtudWxsIT15P2ZiKGUsISFmLm11bHRpcGxlLHksITEpOnIhPT0hIWYubXVsdGlwbGUmJihudWxsIT1mLmRlZmF1bHRWYWx1ZT9mYihlLCEhZi5tdWx0aXBsZSxcbmYuZGVmYXVsdFZhbHVlLCEwKTpmYihlLCEhZi5tdWx0aXBsZSxmLm11bHRpcGxlP1tdOlwiXCIsITEpKX1lW1BmXT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSA2OmRrKGIsYSk7ZmsoYSk7aWYoZCY0KXtpZihudWxsPT09YS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjIpKTtlPWEuc3RhdGVOb2RlO2Y9YS5tZW1vaXplZFByb3BzO3RyeXtlLm5vZGVWYWx1ZT1mfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19YnJlYWs7Y2FzZSAzOmRrKGIsYSk7ZmsoYSk7aWYoZCY0JiZudWxsIT09YyYmYy5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7YmQoYi5jb250YWluZXJJbmZvKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9YnJlYWs7Y2FzZSA0OmRrKGIsYSk7ZmsoYSk7YnJlYWs7Y2FzZSAxMzpkayhiLGEpO2ZrKGEpO2U9YS5jaGlsZDtlLmZsYWdzJjgxOTImJihmPW51bGwhPT1lLm1lbW9pemVkU3RhdGUsZS5zdGF0ZU5vZGUuaXNIaWRkZW49ZiwhZnx8XG5udWxsIT09ZS5hbHRlcm5hdGUmJm51bGwhPT1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlfHwoZ2s9QigpKSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIyOm09bnVsbCE9PWMmJm51bGwhPT1jLm1lbW9pemVkU3RhdGU7YS5tb2RlJjE/KFU9KGw9VSl8fG0sZGsoYixhKSxVPWwpOmRrKGIsYSk7ZmsoYSk7aWYoZCY4MTkyKXtsPW51bGwhPT1hLm1lbW9pemVkU3RhdGU7aWYoKGEuc3RhdGVOb2RlLmlzSGlkZGVuPWwpJiYhbSYmMCE9PShhLm1vZGUmMSkpZm9yKFY9YSxtPWEuY2hpbGQ7bnVsbCE9PW07KXtmb3IocT1WPW07bnVsbCE9PVY7KXtyPVY7eT1yLmNoaWxkO3N3aXRjaChyLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OlFqKDQscixyLnJldHVybik7YnJlYWs7Y2FzZSAxOk1qKHIsci5yZXR1cm4pO3ZhciBuPXIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBuLmNvbXBvbmVudFdpbGxVbm1vdW50KXtkPXI7Yz1yLnJldHVybjt0cnl7Yj1kLG4ucHJvcHM9XG5iLm1lbW9pemVkUHJvcHMsbi5zdGF0ZT1iLm1lbW9pemVkU3RhdGUsbi5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKHQpe1coZCxjLHQpfX1icmVhaztjYXNlIDU6TWoocixyLnJldHVybik7YnJlYWs7Y2FzZSAyMjppZihudWxsIT09ci5tZW1vaXplZFN0YXRlKXtoayhxKTtjb250aW51ZX19bnVsbCE9PXk/KHkucmV0dXJuPXIsVj15KTpoayhxKX1tPW0uc2libGluZ31hOmZvcihtPW51bGwscT1hOzspe2lmKDU9PT1xLnRhZyl7aWYobnVsbD09PW0pe209cTt0cnl7ZT1xLnN0YXRlTm9kZSxsPyhmPWUuc3R5bGUsXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuc2V0UHJvcGVydHk/Zi5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTpmLmRpc3BsYXk9XCJub25lXCIpOihoPXEuc3RhdGVOb2RlLGs9cS5tZW1vaXplZFByb3BzLnN0eWxlLGc9dm9pZCAwIT09ayYmbnVsbCE9PWsmJmsuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP2suZGlzcGxheTpudWxsLGguc3R5bGUuZGlzcGxheT1cbnJiKFwiZGlzcGxheVwiLGcpKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9fX1lbHNlIGlmKDY9PT1xLnRhZyl7aWYobnVsbD09PW0pdHJ5e3Euc3RhdGVOb2RlLm5vZGVWYWx1ZT1sP1wiXCI6cS5tZW1vaXplZFByb3BzfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19ZWxzZSBpZigoMjIhPT1xLnRhZyYmMjMhPT1xLnRhZ3x8bnVsbD09PXEubWVtb2l6ZWRTdGF0ZXx8cT09PWEpJiZudWxsIT09cS5jaGlsZCl7cS5jaGlsZC5yZXR1cm49cTtxPXEuY2hpbGQ7Y29udGludWV9aWYocT09PWEpYnJlYWsgYTtmb3IoO251bGw9PT1xLnNpYmxpbmc7KXtpZihudWxsPT09cS5yZXR1cm58fHEucmV0dXJuPT09YSlicmVhayBhO209PT1xJiYobT1udWxsKTtxPXEucmV0dXJufW09PT1xJiYobT1udWxsKTtxLnNpYmxpbmcucmV0dXJuPXEucmV0dXJuO3E9cS5zaWJsaW5nfX1icmVhaztjYXNlIDE5OmRrKGIsYSk7ZmsoYSk7ZCY0JiZiayhhKTticmVhaztjYXNlIDIxOmJyZWFrO2RlZmF1bHQ6ZGsoYixcbmEpLGZrKGEpfX1mdW5jdGlvbiBmayhhKXt2YXIgYj1hLmZsYWdzO2lmKGImMil7dHJ5e2E6e2Zvcih2YXIgYz1hLnJldHVybjtudWxsIT09Yzspe2lmKFVqKGMpKXt2YXIgZD1jO2JyZWFrIGF9Yz1jLnJldHVybn10aHJvdyBFcnJvcihwKDE2MCkpO31zd2l0Y2goZC50YWcpe2Nhc2UgNTp2YXIgZT1kLnN0YXRlTm9kZTtkLmZsYWdzJjMyJiYob2IoZSxcIlwiKSxkLmZsYWdzJj0tMzMpO3ZhciBmPVZqKGEpO1hqKGEsZixlKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBnPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saD1WaihhKTtXaihhLGgsZyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MSkpO319Y2F0Y2goayl7VyhhLGEucmV0dXJuLGspfWEuZmxhZ3MmPS0zfWImNDA5NiYmKGEuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBpayhhLGIsYyl7Vj1hO2prKGEsYixjKX1cbmZ1bmN0aW9uIGprKGEsYixjKXtmb3IodmFyIGQ9MCE9PShhLm1vZGUmMSk7bnVsbCE9PVY7KXt2YXIgZT1WLGY9ZS5jaGlsZDtpZigyMj09PWUudGFnJiZkKXt2YXIgZz1udWxsIT09ZS5tZW1vaXplZFN0YXRlfHxLajtpZighZyl7dmFyIGg9ZS5hbHRlcm5hdGUsaz1udWxsIT09aCYmbnVsbCE9PWgubWVtb2l6ZWRTdGF0ZXx8VTtoPUtqO3ZhciBsPVU7S2o9ZztpZigoVT1rKSYmIWwpZm9yKFY9ZTtudWxsIT09VjspZz1WLGs9Zy5jaGlsZCwyMj09PWcudGFnJiZudWxsIT09Zy5tZW1vaXplZFN0YXRlP2trKGUpOm51bGwhPT1rPyhrLnJldHVybj1nLFY9ayk6a2soZSk7Zm9yKDtudWxsIT09ZjspVj1mLGprKGYsYixjKSxmPWYuc2libGluZztWPWU7S2o9aDtVPWx9bGsoYSxiLGMpfWVsc2UgMCE9PShlLnN1YnRyZWVGbGFncyY4NzcyKSYmbnVsbCE9PWY/KGYucmV0dXJuPWUsVj1mKTpsayhhLGIsYyl9fVxuZnVuY3Rpb24gbGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXt2YXIgYz1iLmFsdGVybmF0ZTt0cnl7aWYoMCE9PShiLmZsYWdzJjg3NzIpKXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpVfHxSaig1LGIpO2JyZWFrO2Nhc2UgMTp2YXIgZD1iLnN0YXRlTm9kZTtpZihiLmZsYWdzJjQmJiFVKWlmKG51bGw9PT1jKWQuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBlPWIuZWxlbWVudFR5cGU9PT1iLnR5cGU/Yy5tZW1vaXplZFByb3BzOkxnKGIudHlwZSxjLm1lbW9pemVkUHJvcHMpO2QuY29tcG9uZW50RGlkVXBkYXRlKGUsYy5tZW1vaXplZFN0YXRlLGQuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBmPWIudXBkYXRlUXVldWU7bnVsbCE9PWYmJmloKGIsZixkKTticmVhaztjYXNlIDM6dmFyIGc9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09Zyl7Yz1udWxsO2lmKG51bGwhPT1iLmNoaWxkKXN3aXRjaChiLmNoaWxkLnRhZyl7Y2FzZSA1OmM9XG5iLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6Yz1iLmNoaWxkLnN0YXRlTm9kZX1paChiLGcsYyl9YnJlYWs7Y2FzZSA1OnZhciBoPWIuc3RhdGVOb2RlO2lmKG51bGw9PT1jJiZiLmZsYWdzJjQpe2M9aDt2YXIgaz1iLm1lbW9pemVkUHJvcHM7c3dpdGNoKGIudHlwZSl7Y2FzZSBcImJ1dHRvblwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJzZWxlY3RcIjpjYXNlIFwidGV4dGFyZWFcIjprLmF1dG9Gb2N1cyYmYy5mb2N1cygpO2JyZWFrO2Nhc2UgXCJpbWdcIjprLnNyYyYmKGMuc3JjPWsuc3JjKX19YnJlYWs7Y2FzZSA2OmJyZWFrO2Nhc2UgNDpicmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6aWYobnVsbD09PWIubWVtb2l6ZWRTdGF0ZSl7dmFyIGw9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWwpe3ZhciBtPWwubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09bSl7dmFyIHE9bS5kZWh5ZHJhdGVkO251bGwhPT1xJiZiZChxKX19fWJyZWFrO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAyMzpjYXNlIDI1OmJyZWFrO1xuZGVmYXVsdDp0aHJvdyBFcnJvcihwKDE2MykpO31VfHxiLmZsYWdzJjUxMiYmU2ooYil9Y2F0Y2gocil7VyhiLGIucmV0dXJuLHIpfX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfWM9Yi5zaWJsaW5nO2lmKG51bGwhPT1jKXtjLnJldHVybj1iLnJldHVybjtWPWM7YnJlYWt9Vj1iLnJldHVybn19ZnVuY3Rpb24gaGsoYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7aWYoYj09PWEpe1Y9bnVsbDticmVha312YXIgYz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1cbmZ1bmN0aW9uIGtrKGEpe2Zvcig7bnVsbCE9PVY7KXt2YXIgYj1WO3RyeXtzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dmFyIGM9Yi5yZXR1cm47dHJ5e1JqKDQsYil9Y2F0Y2goayl7VyhiLGMsayl9YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZE1vdW50KXt2YXIgZT1iLnJldHVybjt0cnl7ZC5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGspe1coYixlLGspfX12YXIgZj1iLnJldHVybjt0cnl7U2ooYil9Y2F0Y2goayl7VyhiLGYsayl9YnJlYWs7Y2FzZSA1OnZhciBnPWIucmV0dXJuO3RyeXtTaihiKX1jYXRjaChrKXtXKGIsZyxrKX19fWNhdGNoKGspe1coYixiLnJldHVybixrKX1pZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBoPWIuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Yi5yZXR1cm47Vj1oO2JyZWFrfVY9Yi5yZXR1cm59fVxudmFyIG1rPU1hdGguY2VpbCxuaz11YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLG9rPXVhLlJlYWN0Q3VycmVudE93bmVyLHBrPXVhLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEs9MCxSPW51bGwsWT1udWxsLFo9MCxnaj0wLGZqPVVmKDApLFQ9MCxxaz1udWxsLGhoPTAscms9MCxzaz0wLHRrPW51bGwsdWs9bnVsbCxnaz0wLEhqPUluZmluaXR5LHZrPW51bGwsUGk9ITEsUWk9bnVsbCxTaT1udWxsLHdrPSExLHhrPW51bGwseWs9MCx6az0wLEFrPW51bGwsQms9LTEsQ2s9MDtmdW5jdGlvbiBMKCl7cmV0dXJuIDAhPT0oSyY2KT9CKCk6LTEhPT1Caz9CazpCaz1CKCl9XG5mdW5jdGlvbiBsaChhKXtpZigwPT09KGEubW9kZSYxKSlyZXR1cm4gMTtpZigwIT09KEsmMikmJjAhPT1aKXJldHVybiBaJi1aO2lmKG51bGwhPT1LZy50cmFuc2l0aW9uKXJldHVybiAwPT09Q2smJihDaz15YygpKSxDazthPUM7aWYoMCE9PWEpcmV0dXJuIGE7YT13aW5kb3cuZXZlbnQ7YT12b2lkIDA9PT1hPzE2OmpkKGEudHlwZSk7cmV0dXJuIGF9ZnVuY3Rpb24gbWgoYSxiLGMsZCl7aWYoNTA8emspdGhyb3cgems9MCxBaz1udWxsLEVycm9yKHAoMTg1KSk7QWMoYSxjLGQpO2lmKDA9PT0oSyYyKXx8YSE9PVIpYT09PVImJigwPT09KEsmMikmJihya3w9YyksND09PVQmJkRrKGEsWikpLEVrKGEsZCksMT09PWMmJjA9PT1LJiYwPT09KGIubW9kZSYxKSYmKEhqPUIoKSs1MDAsZmcmJmpnKCkpfVxuZnVuY3Rpb24gRWsoYSxiKXt2YXIgYz1hLmNhbGxiYWNrTm9kZTt3YyhhLGIpO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZCludWxsIT09YyYmYmMoYyksYS5jYWxsYmFja05vZGU9bnVsbCxhLmNhbGxiYWNrUHJpb3JpdHk9MDtlbHNlIGlmKGI9ZCYtZCxhLmNhbGxiYWNrUHJpb3JpdHkhPT1iKXtudWxsIT1jJiZiYyhjKTtpZigxPT09YikwPT09YS50YWc/aWcoRmsuYmluZChudWxsLGEpKTpoZyhGay5iaW5kKG51bGwsYSkpLEpmKGZ1bmN0aW9uKCl7MD09PShLJjYpJiZqZygpfSksYz1udWxsO2Vsc2V7c3dpdGNoKERjKGQpKXtjYXNlIDE6Yz1mYzticmVhaztjYXNlIDQ6Yz1nYzticmVhaztjYXNlIDE2OmM9aGM7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6Yz1qYzticmVhaztkZWZhdWx0OmM9aGN9Yz1HayhjLEhrLmJpbmQobnVsbCxhKSl9YS5jYWxsYmFja1ByaW9yaXR5PWI7YS5jYWxsYmFja05vZGU9Y319XG5mdW5jdGlvbiBIayhhLGIpe0JrPS0xO0NrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7dmFyIGM9YS5jYWxsYmFja05vZGU7aWYoSWsoKSYmYS5jYWxsYmFja05vZGUhPT1jKXJldHVybiBudWxsO3ZhciBkPXVjKGEsYT09PVI/WjowKTtpZigwPT09ZClyZXR1cm4gbnVsbDtpZigwIT09KGQmMzApfHwwIT09KGQmYS5leHBpcmVkTGFuZXMpfHxiKWI9SmsoYSxkKTtlbHNle2I9ZDt2YXIgZT1LO0t8PTI7dmFyIGY9S2soKTtpZihSIT09YXx8WiE9PWIpdms9bnVsbCxIaj1CKCkrNTAwLExrKGEsYik7ZG8gdHJ5e01rKCk7YnJlYWt9Y2F0Y2goaCl7TmsoYSxoKX13aGlsZSgxKTtRZygpO25rLmN1cnJlbnQ9ZjtLPWU7bnVsbCE9PVk/Yj0wOihSPW51bGwsWj0wLGI9VCl9aWYoMCE9PWIpezI9PT1iJiYoZT14YyhhKSwwIT09ZSYmKGQ9ZSxiPU9rKGEsZSkpKTtpZigxPT09Yil0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxkKSxFayhhLEIoKSksYztpZig2PT09YilEayhhLGQpO1xuZWxzZXtlPWEuY3VycmVudC5hbHRlcm5hdGU7aWYoMD09PShkJjMwKSYmIVBrKGUpJiYoYj1KayhhLGQpLDI9PT1iJiYoZj14YyhhKSwwIT09ZiYmKGQ9ZixiPU9rKGEsZikpKSwxPT09YikpdGhyb3cgYz1xayxMayhhLDApLERrKGEsZCksRWsoYSxCKCkpLGM7YS5maW5pc2hlZFdvcms9ZTthLmZpbmlzaGVkTGFuZXM9ZDtzd2l0Y2goYil7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihwKDM0NSkpO2Nhc2UgMjpRayhhLHVrLHZrKTticmVhaztjYXNlIDM6RGsoYSxkKTtpZigoZCYxMzAwMjM0MjQpPT09ZCYmKGI9Z2srNTAwLUIoKSwxMDxiKSl7aWYoMCE9PXVjKGEsMCkpYnJlYWs7ZT1hLnN1c3BlbmRlZExhbmVzO2lmKChlJmQpIT09ZCl7TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmZTticmVha31hLnRpbWVvdXRIYW5kbGU9RmYoUWsuYmluZChudWxsLGEsdWssdmspLGIpO2JyZWFrfVFrKGEsdWssdmspO2JyZWFrO2Nhc2UgNDpEayhhLGQpO2lmKChkJjQxOTQyNDApPT09XG5kKWJyZWFrO2I9YS5ldmVudFRpbWVzO2ZvcihlPS0xOzA8ZDspe3ZhciBnPTMxLW9jKGQpO2Y9MTw8ZztnPWJbZ107Zz5lJiYoZT1nKTtkJj1+Zn1kPWU7ZD1CKCktZDtkPSgxMjA+ZD8xMjA6NDgwPmQ/NDgwOjEwODA+ZD8xMDgwOjE5MjA+ZD8xOTIwOjNFMz5kPzNFMzo0MzIwPmQ/NDMyMDoxOTYwKm1rKGQvMTk2MCkpLWQ7aWYoMTA8ZCl7YS50aW1lb3V0SGFuZGxlPUZmKFFrLmJpbmQobnVsbCxhLHVrLHZrKSxkKTticmVha31RayhhLHVrLHZrKTticmVhaztjYXNlIDU6UWsoYSx1ayx2ayk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMyOSkpO319fUVrKGEsQigpKTtyZXR1cm4gYS5jYWxsYmFja05vZGU9PT1jP0hrLmJpbmQobnVsbCxhKTpudWxsfVxuZnVuY3Rpb24gT2soYSxiKXt2YXIgYz10azthLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJihMayhhLGIpLmZsYWdzfD0yNTYpO2E9SmsoYSxiKTsyIT09YSYmKGI9dWssdWs9YyxudWxsIT09YiYmR2ooYikpO3JldHVybiBhfWZ1bmN0aW9uIEdqKGEpe251bGw9PT11az91az1hOnVrLnB1c2guYXBwbHkodWssYSl9XG5mdW5jdGlvbiBQayhhKXtmb3IodmFyIGI9YTs7KXtpZihiLmZsYWdzJjE2Mzg0KXt2YXIgYz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1jJiYoYz1jLnN0b3JlcyxudWxsIT09YykpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7aWYoIUhlKGYoKSxlKSlyZXR1cm4hMX1jYXRjaChnKXtyZXR1cm4hMX19fWM9Yi5jaGlsZDtpZihiLnN1YnRyZWVGbGFncyYxNjM4NCYmbnVsbCE9PWMpYy5yZXR1cm49YixiPWM7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4hMDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiEwfVxuZnVuY3Rpb24gRGsoYSxiKXtiJj1+c2s7YiY9fnJrO2Euc3VzcGVuZGVkTGFuZXN8PWI7YS5waW5nZWRMYW5lcyY9fmI7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxiOyl7dmFyIGM9MzEtb2MoYiksZD0xPDxjO2FbY109LTE7YiY9fmR9fWZ1bmN0aW9uIEZrKGEpe2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO0lrKCk7dmFyIGI9dWMoYSwwKTtpZigwPT09KGImMSkpcmV0dXJuIEVrKGEsQigpKSxudWxsO3ZhciBjPUprKGEsYik7aWYoMCE9PWEudGFnJiYyPT09Yyl7dmFyIGQ9eGMoYSk7MCE9PWQmJihiPWQsYz1PayhhLGQpKX1pZigxPT09Yyl0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxiKSxFayhhLEIoKSksYztpZig2PT09Yyl0aHJvdyBFcnJvcihwKDM0NSkpO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZExhbmVzPWI7UWsoYSx1ayx2ayk7RWsoYSxCKCkpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gUmsoYSxiKXt2YXIgYz1LO0t8PTE7dHJ5e3JldHVybiBhKGIpfWZpbmFsbHl7Sz1jLDA9PT1LJiYoSGo9QigpKzUwMCxmZyYmamcoKSl9fWZ1bmN0aW9uIFNrKGEpe251bGwhPT14ayYmMD09PXhrLnRhZyYmMD09PShLJjYpJiZJaygpO3ZhciBiPUs7S3w9MTt2YXIgYz1way50cmFuc2l0aW9uLGQ9Qzt0cnl7aWYocGsudHJhbnNpdGlvbj1udWxsLEM9MSxhKXJldHVybiBhKCl9ZmluYWxseXtDPWQscGsudHJhbnNpdGlvbj1jLEs9YiwwPT09KEsmNikmJmpnKCl9fWZ1bmN0aW9uIElqKCl7Z2o9ZmouY3VycmVudDtFKGZqKX1cbmZ1bmN0aW9uIExrKGEsYil7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDt2YXIgYz1hLnRpbWVvdXRIYW5kbGU7LTEhPT1jJiYoYS50aW1lb3V0SGFuZGxlPS0xLEdmKGMpKTtpZihudWxsIT09WSlmb3IoYz1ZLnJldHVybjtudWxsIT09Yzspe3ZhciBkPWM7d2coZCk7c3dpdGNoKGQudGFnKXtjYXNlIDE6ZD1kLnR5cGUuY2hpbGRDb250ZXh0VHlwZXM7bnVsbCE9PWQmJnZvaWQgMCE9PWQmJiRmKCk7YnJlYWs7Y2FzZSAzOkpoKCk7RShXZik7RShIKTtPaCgpO2JyZWFrO2Nhc2UgNTpMaChkKTticmVhaztjYXNlIDQ6SmgoKTticmVhaztjYXNlIDEzOkUoTSk7YnJlYWs7Y2FzZSAxOTpFKE0pO2JyZWFrO2Nhc2UgMTA6UmcoZC50eXBlLl9jb250ZXh0KTticmVhaztjYXNlIDIyOmNhc2UgMjM6SWooKX1jPWMucmV0dXJufVI9YTtZPWE9d2goYS5jdXJyZW50LG51bGwpO1o9Z2o9YjtUPTA7cWs9bnVsbDtzaz1yaz1oaD0wO3VrPXRrPW51bGw7aWYobnVsbCE9PVdnKXtmb3IoYj1cbjA7YjxXZy5sZW5ndGg7YisrKWlmKGM9V2dbYl0sZD1jLmludGVybGVhdmVkLG51bGwhPT1kKXtjLmludGVybGVhdmVkPW51bGw7dmFyIGU9ZC5uZXh0LGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXt2YXIgZz1mLm5leHQ7Zi5uZXh0PWU7ZC5uZXh0PWd9Yy5wZW5kaW5nPWR9V2c9bnVsbH1yZXR1cm4gYX1cbmZ1bmN0aW9uIE5rKGEsYil7ZG97dmFyIGM9WTt0cnl7UWcoKTtQaC5jdXJyZW50PWFpO2lmKFNoKXtmb3IodmFyIGQ9Ti5tZW1vaXplZFN0YXRlO251bGwhPT1kOyl7dmFyIGU9ZC5xdWV1ZTtudWxsIT09ZSYmKGUucGVuZGluZz1udWxsKTtkPWQubmV4dH1TaD0hMX1SaD0wO1A9Tz1OPW51bGw7VGg9ITE7VWg9MDtvay5jdXJyZW50PW51bGw7aWYobnVsbD09PWN8fG51bGw9PT1jLnJldHVybil7VD0xO3FrPWI7WT1udWxsO2JyZWFrfWE6e3ZhciBmPWEsZz1jLnJldHVybixoPWMsaz1iO2I9WjtoLmZsYWdzfD0zMjc2ODtpZihudWxsIT09ayYmXCJvYmplY3RcIj09PXR5cGVvZiBrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2Ygay50aGVuKXt2YXIgbD1rLG09aCxxPW0udGFnO2lmKDA9PT0obS5tb2RlJjEpJiYoMD09PXF8fDExPT09cXx8MTU9PT1xKSl7dmFyIHI9bS5hbHRlcm5hdGU7cj8obS51cGRhdGVRdWV1ZT1yLnVwZGF0ZVF1ZXVlLG0ubWVtb2l6ZWRTdGF0ZT1yLm1lbW9pemVkU3RhdGUsXG5tLmxhbmVzPXIubGFuZXMpOihtLnVwZGF0ZVF1ZXVlPW51bGwsbS5tZW1vaXplZFN0YXRlPW51bGwpfXZhciB5PVZpKGcpO2lmKG51bGwhPT15KXt5LmZsYWdzJj0tMjU3O1dpKHksZyxoLGYsYik7eS5tb2RlJjEmJlRpKGYsbCxiKTtiPXk7az1sO3ZhciBuPWIudXBkYXRlUXVldWU7aWYobnVsbD09PW4pe3ZhciB0PW5ldyBTZXQ7dC5hZGQoayk7Yi51cGRhdGVRdWV1ZT10fWVsc2Ugbi5hZGQoayk7YnJlYWsgYX1lbHNle2lmKDA9PT0oYiYxKSl7VGkoZixsLGIpO3VqKCk7YnJlYWsgYX1rPUVycm9yKHAoNDI2KSl9fWVsc2UgaWYoSSYmaC5tb2RlJjEpe3ZhciBKPVZpKGcpO2lmKG51bGwhPT1KKXswPT09KEouZmxhZ3MmNjU1MzYpJiYoSi5mbGFnc3w9MjU2KTtXaShKLGcsaCxmLGIpO0pnKEtpKGssaCkpO2JyZWFrIGF9fWY9az1LaShrLGgpOzQhPT1UJiYoVD0yKTtudWxsPT09dGs/dGs9W2ZdOnRrLnB1c2goZik7Zj1nO2Rve3N3aXRjaChmLnRhZyl7Y2FzZSAzOmYuZmxhZ3N8PTY1NTM2O1xuYiY9LWI7Zi5sYW5lc3w9Yjt2YXIgeD1PaShmLGssYik7ZmgoZix4KTticmVhayBhO2Nhc2UgMTpoPWs7dmFyIHc9Zi50eXBlLHU9Zi5zdGF0ZU5vZGU7aWYoMD09PShmLmZsYWdzJjEyOCkmJihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygdy5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fG51bGwhPT11JiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgdS5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyh1KSkpKXtmLmZsYWdzfD02NTUzNjtiJj0tYjtmLmxhbmVzfD1iO3ZhciBGPVJpKGYsaCxiKTtmaChmLEYpO2JyZWFrIGF9fWY9Zi5yZXR1cm59d2hpbGUobnVsbCE9PWYpfVRrKGMpfWNhdGNoKG5hKXtiPW5hO1k9PT1jJiZudWxsIT09YyYmKFk9Yz1jLnJldHVybik7Y29udGludWV9YnJlYWt9d2hpbGUoMSl9ZnVuY3Rpb24gS2soKXt2YXIgYT1uay5jdXJyZW50O25rLmN1cnJlbnQ9YWk7cmV0dXJuIG51bGw9PT1hP2FpOmF9XG5mdW5jdGlvbiB1aigpe2lmKDA9PT1UfHwzPT09VHx8Mj09PVQpVD00O251bGw9PT1SfHwwPT09KGhoJjI2ODQzNTQ1NSkmJjA9PT0ocmsmMjY4NDM1NDU1KXx8RGsoUixaKX1mdW5jdGlvbiBKayhhLGIpe3ZhciBjPUs7S3w9Mjt2YXIgZD1LaygpO2lmKFIhPT1hfHxaIT09Yil2az1udWxsLExrKGEsYik7ZG8gdHJ5e1VrKCk7YnJlYWt9Y2F0Y2goZSl7TmsoYSxlKX13aGlsZSgxKTtRZygpO0s9Yztuay5jdXJyZW50PWQ7aWYobnVsbCE9PVkpdGhyb3cgRXJyb3IocCgyNjEpKTtSPW51bGw7Wj0wO3JldHVybiBUfWZ1bmN0aW9uIFVrKCl7Zm9yKDtudWxsIT09WTspVmsoWSl9ZnVuY3Rpb24gTWsoKXtmb3IoO251bGwhPT1ZJiYhY2MoKTspVmsoWSl9ZnVuY3Rpb24gVmsoYSl7dmFyIGI9V2soYS5hbHRlcm5hdGUsYSxnaik7YS5tZW1vaXplZFByb3BzPWEucGVuZGluZ1Byb3BzO251bGw9PT1iP1RrKGEpOlk9Yjtvay5jdXJyZW50PW51bGx9XG5mdW5jdGlvbiBUayhhKXt2YXIgYj1hO2Rve3ZhciBjPWIuYWx0ZXJuYXRlO2E9Yi5yZXR1cm47aWYoMD09PShiLmZsYWdzJjMyNzY4KSl7aWYoYz1GaihjLGIsZ2opLG51bGwhPT1jKXtZPWM7cmV0dXJufX1lbHNle2M9SmooYyxiKTtpZihudWxsIT09Yyl7Yy5mbGFncyY9MzI3Njc7WT1jO3JldHVybn1pZihudWxsIT09YSlhLmZsYWdzfD0zMjc2OCxhLnN1YnRyZWVGbGFncz0wLGEuZGVsZXRpb25zPW51bGw7ZWxzZXtUPTY7WT1udWxsO3JldHVybn19Yj1iLnNpYmxpbmc7aWYobnVsbCE9PWIpe1k9YjtyZXR1cm59WT1iPWF9d2hpbGUobnVsbCE9PWIpOzA9PT1UJiYoVD01KX1mdW5jdGlvbiBRayhhLGIsYyl7dmFyIGQ9QyxlPXBrLnRyYW5zaXRpb247dHJ5e3BrLnRyYW5zaXRpb249bnVsbCxDPTEsWGsoYSxiLGMsZCl9ZmluYWxseXtway50cmFuc2l0aW9uPWUsQz1kfXJldHVybiBudWxsfVxuZnVuY3Rpb24gWGsoYSxiLGMsZCl7ZG8gSWsoKTt3aGlsZShudWxsIT09eGspO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMyNykpO2M9YS5maW5pc2hlZFdvcms7dmFyIGU9YS5maW5pc2hlZExhbmVzO2lmKG51bGw9PT1jKXJldHVybiBudWxsO2EuZmluaXNoZWRXb3JrPW51bGw7YS5maW5pc2hlZExhbmVzPTA7aWYoYz09PWEuY3VycmVudCl0aHJvdyBFcnJvcihwKDE3NykpO2EuY2FsbGJhY2tOb2RlPW51bGw7YS5jYWxsYmFja1ByaW9yaXR5PTA7dmFyIGY9Yy5sYW5lc3xjLmNoaWxkTGFuZXM7QmMoYSxmKTthPT09UiYmKFk9Uj1udWxsLFo9MCk7MD09PShjLnN1YnRyZWVGbGFncyYyMDY0KSYmMD09PShjLmZsYWdzJjIwNjQpfHx3a3x8KHdrPSEwLEdrKGhjLGZ1bmN0aW9uKCl7SWsoKTtyZXR1cm4gbnVsbH0pKTtmPTAhPT0oYy5mbGFncyYxNTk5MCk7aWYoMCE9PShjLnN1YnRyZWVGbGFncyYxNTk5MCl8fGYpe2Y9cGsudHJhbnNpdGlvbjtway50cmFuc2l0aW9uPW51bGw7XG52YXIgZz1DO0M9MTt2YXIgaD1LO0t8PTQ7b2suY3VycmVudD1udWxsO1BqKGEsYyk7ZWsoYyxhKTtPZShEZik7ZGQ9ISFDZjtEZj1DZj1udWxsO2EuY3VycmVudD1jO2lrKGMsYSxlKTtkYygpO0s9aDtDPWc7cGsudHJhbnNpdGlvbj1mfWVsc2UgYS5jdXJyZW50PWM7d2smJih3az0hMSx4az1hLHlrPWUpO2Y9YS5wZW5kaW5nTGFuZXM7MD09PWYmJihTaT1udWxsKTttYyhjLnN0YXRlTm9kZSxkKTtFayhhLEIoKSk7aWYobnVsbCE9PWIpZm9yKGQ9YS5vblJlY292ZXJhYmxlRXJyb3IsYz0wO2M8Yi5sZW5ndGg7YysrKWU9YltjXSxkKGUudmFsdWUse2NvbXBvbmVudFN0YWNrOmUuc3RhY2ssZGlnZXN0OmUuZGlnZXN0fSk7aWYoUGkpdGhyb3cgUGk9ITEsYT1RaSxRaT1udWxsLGE7MCE9PSh5ayYxKSYmMCE9PWEudGFnJiZJaygpO2Y9YS5wZW5kaW5nTGFuZXM7MCE9PShmJjEpP2E9PT1Baz96aysrOih6az0wLEFrPWEpOnprPTA7amcoKTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIElrKCl7aWYobnVsbCE9PXhrKXt2YXIgYT1EYyh5ayksYj1way50cmFuc2l0aW9uLGM9Qzt0cnl7cGsudHJhbnNpdGlvbj1udWxsO0M9MTY+YT8xNjphO2lmKG51bGw9PT14ayl2YXIgZD0hMTtlbHNle2E9eGs7eGs9bnVsbDt5az0wO2lmKDAhPT0oSyY2KSl0aHJvdyBFcnJvcihwKDMzMSkpO3ZhciBlPUs7S3w9NDtmb3IoVj1hLmN1cnJlbnQ7bnVsbCE9PVY7KXt2YXIgZj1WLGc9Zi5jaGlsZDtpZigwIT09KFYuZmxhZ3MmMTYpKXt2YXIgaD1mLmRlbGV0aW9ucztpZihudWxsIT09aCl7Zm9yKHZhciBrPTA7azxoLmxlbmd0aDtrKyspe3ZhciBsPWhba107Zm9yKFY9bDtudWxsIT09Vjspe3ZhciBtPVY7c3dpdGNoKG0udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlFqKDgsbSxmKX12YXIgcT1tLmNoaWxkO2lmKG51bGwhPT1xKXEucmV0dXJuPW0sVj1xO2Vsc2UgZm9yKDtudWxsIT09Vjspe209Vjt2YXIgcj1tLnNpYmxpbmcseT1tLnJldHVybjtUaihtKTtpZihtPT09XG5sKXtWPW51bGw7YnJlYWt9aWYobnVsbCE9PXIpe3IucmV0dXJuPXk7Vj1yO2JyZWFrfVY9eX19fXZhciBuPWYuYWx0ZXJuYXRlO2lmKG51bGwhPT1uKXt2YXIgdD1uLmNoaWxkO2lmKG51bGwhPT10KXtuLmNoaWxkPW51bGw7ZG97dmFyIEo9dC5zaWJsaW5nO3Quc2libGluZz1udWxsO3Q9Sn13aGlsZShudWxsIT09dCl9fVY9Zn19aWYoMCE9PShmLnN1YnRyZWVGbGFncyYyMDY0KSYmbnVsbCE9PWcpZy5yZXR1cm49ZixWPWc7ZWxzZSBiOmZvcig7bnVsbCE9PVY7KXtmPVY7aWYoMCE9PShmLmZsYWdzJjIwNDgpKXN3aXRjaChmLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpRaig5LGYsZi5yZXR1cm4pfXZhciB4PWYuc2libGluZztpZihudWxsIT09eCl7eC5yZXR1cm49Zi5yZXR1cm47Vj14O2JyZWFrIGJ9Vj1mLnJldHVybn19dmFyIHc9YS5jdXJyZW50O2ZvcihWPXc7bnVsbCE9PVY7KXtnPVY7dmFyIHU9Zy5jaGlsZDtpZigwIT09KGcuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09XG51KXUucmV0dXJuPWcsVj11O2Vsc2UgYjpmb3IoZz13O251bGwhPT1WOyl7aD1WO2lmKDAhPT0oaC5mbGFncyYyMDQ4KSl0cnl7c3dpdGNoKGgudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlJqKDksaCl9fWNhdGNoKG5hKXtXKGgsaC5yZXR1cm4sbmEpfWlmKGg9PT1nKXtWPW51bGw7YnJlYWsgYn12YXIgRj1oLnNpYmxpbmc7aWYobnVsbCE9PUYpe0YucmV0dXJuPWgucmV0dXJuO1Y9RjticmVhayBifVY9aC5yZXR1cm59fUs9ZTtqZygpO2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Qb3N0Q29tbWl0RmliZXJSb290KXRyeXtsYy5vblBvc3RDb21taXRGaWJlclJvb3Qoa2MsYSl9Y2F0Y2gobmEpe31kPSEwfXJldHVybiBkfWZpbmFsbHl7Qz1jLHBrLnRyYW5zaXRpb249Yn19cmV0dXJuITF9ZnVuY3Rpb24gWWsoYSxiLGMpe2I9S2koYyxiKTtiPU9pKGEsYiwxKTthPWRoKGEsYiwxKTtiPUwoKTtudWxsIT09YSYmKEFjKGEsMSxiKSxFayhhLGIpKX1cbmZ1bmN0aW9uIFcoYSxiLGMpe2lmKDM9PT1hLnRhZylZayhhLGEsYyk7ZWxzZSBmb3IoO251bGwhPT1iOyl7aWYoMz09PWIudGFnKXtZayhiLGEsYyk7YnJlYWt9ZWxzZSBpZigxPT09Yi50YWcpe3ZhciBkPWIuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1TaXx8IVNpLmhhcyhkKSkpe2E9S2koYyxhKTthPVJpKGIsYSwxKTtiPWRoKGIsYSwxKTthPUwoKTtudWxsIT09YiYmKEFjKGIsMSxhKSxFayhiLGEpKTticmVha319Yj1iLnJldHVybn19XG5mdW5jdGlvbiBVaShhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO2I9TCgpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYztSPT09YSYmKFomYyk9PT1jJiYoND09PVR8fDM9PT1UJiYoWiYxMzAwMjM0MjQpPT09WiYmNTAwPkIoKS1naz9MayhhLDApOnNrfD1jKTtFayhhLGIpfWZ1bmN0aW9uIFprKGEsYil7MD09PWImJigwPT09KGEubW9kZSYxKT9iPTE6KGI9c2Msc2M8PD0xLDA9PT0oc2MmMTMwMDIzNDI0KSYmKHNjPTQxOTQzMDQpKSk7dmFyIGM9TCgpO2E9WmcoYSxiKTtudWxsIT09YSYmKEFjKGEsYixjKSxFayhhLGMpKX1mdW5jdGlvbiB2aihhKXt2YXIgYj1hLm1lbW9pemVkU3RhdGUsYz0wO251bGwhPT1iJiYoYz1iLnJldHJ5TGFuZSk7WmsoYSxjKX1cbmZ1bmN0aW9uIGNrKGEsYil7dmFyIGM9MDtzd2l0Y2goYS50YWcpe2Nhc2UgMTM6dmFyIGQ9YS5zdGF0ZU5vZGU7dmFyIGU9YS5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoYz1lLnJldHJ5TGFuZSk7YnJlYWs7Y2FzZSAxOTpkPWEuc3RhdGVOb2RlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgzMTQpKTt9bnVsbCE9PWQmJmQuZGVsZXRlKGIpO1prKGEsYyl9dmFyIFdrO1xuV2s9ZnVuY3Rpb24oYSxiLGMpe2lmKG51bGwhPT1hKWlmKGEubWVtb2l6ZWRQcm9wcyE9PWIucGVuZGluZ1Byb3BzfHxXZi5jdXJyZW50KVVnPSEwO2Vsc2V7aWYoMD09PShhLmxhbmVzJmMpJiYwPT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gVWc9ITEsemooYSxiLGMpO1VnPTAhPT0oYS5mbGFncyYxMzEwNzIpPyEwOiExfWVsc2UgVWc9ITEsSSYmMCE9PShiLmZsYWdzJjEwNDg1NzYpJiZ1ZyhiLG5nLGIuaW5kZXgpO2IubGFuZXM9MDtzd2l0Y2goYi50YWcpe2Nhc2UgMjp2YXIgZD1iLnR5cGU7amooYSxiKTthPWIucGVuZGluZ1Byb3BzO3ZhciBlPVlmKGIsSC5jdXJyZW50KTtUZyhiLGMpO2U9WGgobnVsbCxiLGQsYSxlLGMpO3ZhciBmPWJpKCk7Yi5mbGFnc3w9MTtcIm9iamVjdFwiPT09dHlwZW9mIGUmJm51bGwhPT1lJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5yZW5kZXImJnZvaWQgMD09PWUuJCR0eXBlb2Y/KGIudGFnPTEsYi5tZW1vaXplZFN0YXRlPW51bGwsYi51cGRhdGVRdWV1ZT1cbm51bGwsWmYoZCk/KGY9ITAsY2coYikpOmY9ITEsYi5tZW1vaXplZFN0YXRlPW51bGwhPT1lLnN0YXRlJiZ2b2lkIDAhPT1lLnN0YXRlP2Uuc3RhdGU6bnVsbCxhaChiKSxlLnVwZGF0ZXI9bmgsYi5zdGF0ZU5vZGU9ZSxlLl9yZWFjdEludGVybmFscz1iLHJoKGIsZCxhLGMpLGI9a2oobnVsbCxiLGQsITAsZixjKSk6KGIudGFnPTAsSSYmZiYmdmcoYiksWWkobnVsbCxiLGUsYyksYj1iLmNoaWxkKTtyZXR1cm4gYjtjYXNlIDE2OmQ9Yi5lbGVtZW50VHlwZTthOntqaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7ZT1kLl9pbml0O2Q9ZShkLl9wYXlsb2FkKTtiLnR5cGU9ZDtlPWIudGFnPSRrKGQpO2E9TGcoZCxhKTtzd2l0Y2goZSl7Y2FzZSAwOmI9ZGoobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTpiPWlqKG51bGwsYixkLGEsYyk7YnJlYWsgYTtjYXNlIDExOmI9WmkobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTQ6Yj1haihudWxsLGIsZCxMZyhkLnR5cGUsYSksYyk7YnJlYWsgYX10aHJvdyBFcnJvcihwKDMwNixcbmQsXCJcIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksZGooYSxiLGQsZSxjKTtjYXNlIDE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksaWooYSxiLGQsZSxjKTtjYXNlIDM6YTp7bGooYik7aWYobnVsbD09PWEpdGhyb3cgRXJyb3IocCgzODcpKTtkPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFN0YXRlO2U9Zi5lbGVtZW50O2JoKGEsYik7Z2goYixkLG51bGwsYyk7dmFyIGc9Yi5tZW1vaXplZFN0YXRlO2Q9Zy5lbGVtZW50O2lmKGYuaXNEZWh5ZHJhdGVkKWlmKGY9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6ITEsY2FjaGU6Zy5jYWNoZSxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOmcucGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfSxiLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1cbmYsYi5tZW1vaXplZFN0YXRlPWYsYi5mbGFncyYyNTYpe2U9S2koRXJyb3IocCg0MjMpKSxiKTtiPW1qKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGlmKGQhPT1lKXtlPUtpKEVycm9yKHAoNDI0KSksYik7Yj1taihhLGIsZCxjLGUpO2JyZWFrIGF9ZWxzZSBmb3IoeWc9TGYoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx4Zz1iLEk9ITAsemc9bnVsbCxjPUNoKGIsbnVsbCxkLGMpLGIuY2hpbGQ9YztjOyljLmZsYWdzPWMuZmxhZ3MmLTN8NDA5NixjPWMuc2libGluZztlbHNle0lnKCk7aWYoZD09PWUpe2I9JGkoYSxiLGMpO2JyZWFrIGF9WWkoYSxiLGQsYyl9Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgNTpyZXR1cm4gS2goYiksbnVsbD09PWEmJkVnKGIpLGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZj1udWxsIT09YT9hLm1lbW9pemVkUHJvcHM6bnVsbCxnPWUuY2hpbGRyZW4sRWYoZCxlKT9nPW51bGw6bnVsbCE9PWYmJkVmKGQsZikmJihiLmZsYWdzfD0zMiksXG5oaihhLGIpLFlpKGEsYixnLGMpLGIuY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09YSYmRWcoYiksbnVsbDtjYXNlIDEzOnJldHVybiBwaihhLGIsYyk7Y2FzZSA0OnJldHVybiBJaChiLGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGQ9Yi5wZW5kaW5nUHJvcHMsbnVsbD09PWE/Yi5jaGlsZD1CaChiLG51bGwsZCxjKTpZaShhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGQ9Yi50eXBlLGU9Yi5wZW5kaW5nUHJvcHMsZT1iLmVsZW1lbnRUeXBlPT09ZD9lOkxnKGQsZSksWmkoYSxiLGQsZSxjKTtjYXNlIDc6cmV0dXJuIFlpKGEsYixiLnBlbmRpbmdQcm9wcyxjKSxiLmNoaWxkO2Nhc2UgODpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMDphOntkPWIudHlwZS5fY29udGV4dDtlPWIucGVuZGluZ1Byb3BzO2Y9Yi5tZW1vaXplZFByb3BzO1xuZz1lLnZhbHVlO0coTWcsZC5fY3VycmVudFZhbHVlKTtkLl9jdXJyZW50VmFsdWU9ZztpZihudWxsIT09ZilpZihIZShmLnZhbHVlLGcpKXtpZihmLmNoaWxkcmVuPT09ZS5jaGlsZHJlbiYmIVdmLmN1cnJlbnQpe2I9JGkoYSxiLGMpO2JyZWFrIGF9fWVsc2UgZm9yKGY9Yi5jaGlsZCxudWxsIT09ZiYmKGYucmV0dXJuPWIpO251bGwhPT1mOyl7dmFyIGg9Zi5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PWgpe2c9Zi5jaGlsZDtmb3IodmFyIGs9aC5maXJzdENvbnRleHQ7bnVsbCE9PWs7KXtpZihrLmNvbnRleHQ9PT1kKXtpZigxPT09Zi50YWcpe2s9Y2goLTEsYyYtYyk7ay50YWc9Mjt2YXIgbD1mLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1sKXtsPWwuc2hhcmVkO3ZhciBtPWwucGVuZGluZztudWxsPT09bT9rLm5leHQ9azooay5uZXh0PW0ubmV4dCxtLm5leHQ9ayk7bC5wZW5kaW5nPWt9fWYubGFuZXN8PWM7az1mLmFsdGVybmF0ZTtudWxsIT09ayYmKGsubGFuZXN8PWMpO1NnKGYucmV0dXJuLFxuYyxiKTtoLmxhbmVzfD1jO2JyZWFrfWs9ay5uZXh0fX1lbHNlIGlmKDEwPT09Zi50YWcpZz1mLnR5cGU9PT1iLnR5cGU/bnVsbDpmLmNoaWxkO2Vsc2UgaWYoMTg9PT1mLnRhZyl7Zz1mLnJldHVybjtpZihudWxsPT09Zyl0aHJvdyBFcnJvcihwKDM0MSkpO2cubGFuZXN8PWM7aD1nLmFsdGVybmF0ZTtudWxsIT09aCYmKGgubGFuZXN8PWMpO1NnKGcsYyxiKTtnPWYuc2libGluZ31lbHNlIGc9Zi5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1mO2Vsc2UgZm9yKGc9ZjtudWxsIT09Zzspe2lmKGc9PT1iKXtnPW51bGw7YnJlYWt9Zj1nLnNpYmxpbmc7aWYobnVsbCE9PWYpe2YucmV0dXJuPWcucmV0dXJuO2c9ZjticmVha31nPWcucmV0dXJufWY9Z31ZaShhLGIsZS5jaGlsZHJlbixjKTtiPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA5OnJldHVybiBlPWIudHlwZSxkPWIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLFRnKGIsYyksZT1WZyhlKSxkPWQoZSksYi5mbGFnc3w9MSxZaShhLGIsZCxjKSxcbmIuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gZD1iLnR5cGUsZT1MZyhkLGIucGVuZGluZ1Byb3BzKSxlPUxnKGQudHlwZSxlKSxhaihhLGIsZCxlLGMpO2Nhc2UgMTU6cmV0dXJuIGNqKGEsYixiLnR5cGUsYi5wZW5kaW5nUHJvcHMsYyk7Y2FzZSAxNzpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxqaihhLGIpLGIudGFnPTEsWmYoZCk/KGE9ITAsY2coYikpOmE9ITEsVGcoYixjKSxwaChiLGQsZSkscmgoYixkLGUsYyksa2oobnVsbCxiLGQsITAsYSxjKTtjYXNlIDE5OnJldHVybiB5aihhLGIsYyk7Y2FzZSAyMjpyZXR1cm4gZWooYSxiLGMpfXRocm93IEVycm9yKHAoMTU2LGIudGFnKSk7fTtmdW5jdGlvbiBHayhhLGIpe3JldHVybiBhYyhhLGIpfVxuZnVuY3Rpb24gYWwoYSxiLGMsZCl7dGhpcy50YWc9YTt0aGlzLmtleT1jO3RoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGw7dGhpcy5pbmRleD0wO3RoaXMucmVmPW51bGw7dGhpcy5wZW5kaW5nUHJvcHM9Yjt0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbDt0aGlzLm1vZGU9ZDt0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTA7dGhpcy5kZWxldGlvbnM9bnVsbDt0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wO3RoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gQmcoYSxiLGMsZCl7cmV0dXJuIG5ldyBhbChhLGIsYyxkKX1mdW5jdGlvbiBiaihhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfVxuZnVuY3Rpb24gJGsoYSl7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGJqKGEpPzE6MDtpZih2b2lkIDAhPT1hJiZudWxsIT09YSl7YT1hLiQkdHlwZW9mO2lmKGE9PT1EYSlyZXR1cm4gMTE7aWYoYT09PUdhKXJldHVybiAxNH1yZXR1cm4gMn1cbmZ1bmN0aW9uIHdoKGEsYil7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbD09PWM/KGM9QmcoYS50YWcsYixhLmtleSxhLm1vZGUpLGMuZWxlbWVudFR5cGU9YS5lbGVtZW50VHlwZSxjLnR5cGU9YS50eXBlLGMuc3RhdGVOb2RlPWEuc3RhdGVOb2RlLGMuYWx0ZXJuYXRlPWEsYS5hbHRlcm5hdGU9Yyk6KGMucGVuZGluZ1Byb3BzPWIsYy50eXBlPWEudHlwZSxjLmZsYWdzPTAsYy5zdWJ0cmVlRmxhZ3M9MCxjLmRlbGV0aW9ucz1udWxsKTtjLmZsYWdzPWEuZmxhZ3MmMTQ2ODAwNjQ7Yy5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcztjLmxhbmVzPWEubGFuZXM7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWU7Yj1hLmRlcGVuZGVuY2llcztjLmRlcGVuZGVuY2llcz1udWxsPT09Yj9udWxsOntsYW5lczpiLmxhbmVzLGZpcnN0Q29udGV4dDpiLmZpcnN0Q29udGV4dH07XG5jLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31cbmZ1bmN0aW9uIHloKGEsYixjLGQsZSxmKXt2YXIgZz0yO2Q9YTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSliaihhKSYmKGc9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSB5YTpyZXR1cm4gQWgoYy5jaGlsZHJlbixlLGYsYik7Y2FzZSB6YTpnPTg7ZXw9ODticmVhaztjYXNlIEFhOnJldHVybiBhPUJnKDEyLGMsYixlfDIpLGEuZWxlbWVudFR5cGU9QWEsYS5sYW5lcz1mLGE7Y2FzZSBFYTpyZXR1cm4gYT1CZygxMyxjLGIsZSksYS5lbGVtZW50VHlwZT1FYSxhLmxhbmVzPWYsYTtjYXNlIEZhOnJldHVybiBhPUJnKDE5LGMsYixlKSxhLmVsZW1lbnRUeXBlPUZhLGEubGFuZXM9ZixhO2Nhc2UgSWE6cmV0dXJuIHFqKGMsZSxmLGIpO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBCYTpnPTEwO2JyZWFrIGE7Y2FzZSBDYTpnPTk7YnJlYWsgYTtjYXNlIERhOmc9MTE7XG5icmVhayBhO2Nhc2UgR2E6Zz0xNDticmVhayBhO2Nhc2UgSGE6Zz0xNjtkPW51bGw7YnJlYWsgYX10aHJvdyBFcnJvcihwKDEzMCxudWxsPT1hP2E6dHlwZW9mIGEsXCJcIikpO31iPUJnKGcsYyxiLGUpO2IuZWxlbWVudFR5cGU9YTtiLnR5cGU9ZDtiLmxhbmVzPWY7cmV0dXJuIGJ9ZnVuY3Rpb24gQWgoYSxiLGMsZCl7YT1CZyg3LGEsZCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9ZnVuY3Rpb24gcWooYSxiLGMsZCl7YT1CZygyMixhLGQsYik7YS5lbGVtZW50VHlwZT1JYTthLmxhbmVzPWM7YS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfTtyZXR1cm4gYX1mdW5jdGlvbiB4aChhLGIsYyl7YT1CZyg2LGEsbnVsbCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9XG5mdW5jdGlvbiB6aChhLGIsYyl7Yj1CZyg0LG51bGwhPT1hLmNoaWxkcmVuP2EuY2hpbGRyZW46W10sYS5rZXksYik7Yi5sYW5lcz1jO2Iuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmEuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjphLmltcGxlbWVudGF0aW9ufTtyZXR1cm4gYn1cbmZ1bmN0aW9uIGJsKGEsYixjLGQsZSl7dGhpcy50YWc9Yjt0aGlzLmNvbnRhaW5lckluZm89YTt0aGlzLmZpbmlzaGVkV29yaz10aGlzLnBpbmdDYWNoZT10aGlzLmN1cnJlbnQ9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbDt0aGlzLnRpbWVvdXRIYW5kbGU9LTE7dGhpcy5jYWxsYmFja05vZGU9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9bnVsbDt0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MDt0aGlzLmV2ZW50VGltZXM9emMoMCk7dGhpcy5leHBpcmF0aW9uVGltZXM9emMoLTEpO3RoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5maW5pc2hlZExhbmVzPXRoaXMubXV0YWJsZVJlYWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MDt0aGlzLmVudGFuZ2xlbWVudHM9emMoMCk7dGhpcy5pZGVudGlmaWVyUHJlZml4PWQ7dGhpcy5vblJlY292ZXJhYmxlRXJyb3I9ZTt0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9XG5udWxsfWZ1bmN0aW9uIGNsKGEsYixjLGQsZSxmLGcsaCxrKXthPW5ldyBibChhLGIsYyxoLGspOzE9PT1iPyhiPTEsITA9PT1mJiYoYnw9OCkpOmI9MDtmPUJnKDMsbnVsbCxudWxsLGIpO2EuY3VycmVudD1mO2Yuc3RhdGVOb2RlPWE7Zi5tZW1vaXplZFN0YXRlPXtlbGVtZW50OmQsaXNEZWh5ZHJhdGVkOmMsY2FjaGU6bnVsbCx0cmFuc2l0aW9uczpudWxsLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6bnVsbH07YWgoZik7cmV0dXJuIGF9ZnVuY3Rpb24gZGwoYSxiLGMpe3ZhciBkPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjp3YSxrZXk6bnVsbD09ZD9udWxsOlwiXCIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1cbmZ1bmN0aW9uIGVsKGEpe2lmKCFhKXJldHVybiBWZjthPWEuX3JlYWN0SW50ZXJuYWxzO2E6e2lmKFZiKGEpIT09YXx8MSE9PWEudGFnKXRocm93IEVycm9yKHAoMTcwKSk7dmFyIGI9YTtkb3tzd2l0Y2goYi50YWcpe2Nhc2UgMzpiPWIuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgYTtjYXNlIDE6aWYoWmYoYi50eXBlKSl7Yj1iLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBhfX1iPWIucmV0dXJufXdoaWxlKG51bGwhPT1iKTt0aHJvdyBFcnJvcihwKDE3MSkpO31pZigxPT09YS50YWcpe3ZhciBjPWEudHlwZTtpZihaZihjKSlyZXR1cm4gYmcoYSxjLGIpfXJldHVybiBifVxuZnVuY3Rpb24gZmwoYSxiLGMsZCxlLGYsZyxoLGspe2E9Y2woYyxkLCEwLGEsZSxmLGcsaCxrKTthLmNvbnRleHQ9ZWwobnVsbCk7Yz1hLmN1cnJlbnQ7ZD1MKCk7ZT1saChjKTtmPWNoKGQsZSk7Zi5jYWxsYmFjaz12b2lkIDAhPT1iJiZudWxsIT09Yj9iOm51bGw7ZGgoYyxmLGUpO2EuY3VycmVudC5sYW5lcz1lO0FjKGEsZSxkKTtFayhhLGQpO3JldHVybiBhfWZ1bmN0aW9uIGdsKGEsYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPUwoKSxnPWxoKGUpO2M9ZWwoYyk7bnVsbD09PWIuY29udGV4dD9iLmNvbnRleHQ9YzpiLnBlbmRpbmdDb250ZXh0PWM7Yj1jaChmLGcpO2IucGF5bG9hZD17ZWxlbWVudDphfTtkPXZvaWQgMD09PWQ/bnVsbDpkO251bGwhPT1kJiYoYi5jYWxsYmFjaz1kKTthPWRoKGUsYixnKTtudWxsIT09YSYmKG1oKGEsZSxnLGYpLGVoKGEsZSxnKSk7cmV0dXJuIGd9XG5mdW5jdGlvbiBobChhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGlsKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe3ZhciBjPWEucmV0cnlMYW5lO2EucmV0cnlMYW5lPTAhPT1jJiZjPGI/YzpifX1mdW5jdGlvbiBqbChhLGIpe2lsKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZpbChhLGIpfWZ1bmN0aW9uIGtsKCl7cmV0dXJuIG51bGx9dmFyIGxsPVwiZnVuY3Rpb25cIj09PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihhKXtjb25zb2xlLmVycm9yKGEpfTtmdW5jdGlvbiBtbChhKXt0aGlzLl9pbnRlcm5hbFJvb3Q9YX1cbm5sLnByb3RvdHlwZS5yZW5kZXI9bWwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCg0MDkpKTtnbChhLGIsbnVsbCxudWxsKX07bmwucHJvdG90eXBlLnVubW91bnQ9bWwucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYobnVsbCE9PWEpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciBiPWEuY29udGFpbmVySW5mbztTayhmdW5jdGlvbigpe2dsKG51bGwsYSxudWxsLG51bGwpfSk7Ylt1Zl09bnVsbH19O2Z1bmN0aW9uIG5sKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubmwucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiPUhjKCk7YT17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OmEscHJpb3JpdHk6Yn07Zm9yKHZhciBjPTA7YzxRYy5sZW5ndGgmJjAhPT1iJiZiPFFjW2NdLnByaW9yaXR5O2MrKyk7UWMuc3BsaWNlKGMsMCxhKTswPT09YyYmVmMoYSl9fTtmdW5jdGlvbiBvbChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSl9ZnVuY3Rpb24gcGwoYSl7cmV0dXJuISghYXx8MSE9PWEubm9kZVR5cGUmJjkhPT1hLm5vZGVUeXBlJiYxMSE9PWEubm9kZVR5cGUmJig4IT09YS5ub2RlVHlwZXx8XCIgcmVhY3QtbW91bnQtcG9pbnQtdW5zdGFibGUgXCIhPT1hLm5vZGVWYWx1ZSkpfWZ1bmN0aW9uIHFsKCl7fVxuZnVuY3Rpb24gcmwoYSxiLGMsZCxlKXtpZihlKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGY9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7Zi5jYWxsKGEpfX12YXIgZz1mbChiLGQsYSwwLG51bGwsITEsITEsXCJcIixxbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWc7YVt1Zl09Zy5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtTaygpO3JldHVybiBnfWZvcig7ZT1hLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChlKTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZCl7dmFyIGg9ZDtkPWZ1bmN0aW9uKCl7dmFyIGE9aGwoayk7aC5jYWxsKGEpfX12YXIgaz1jbChhLDAsITEsbnVsbCxudWxsLCExLCExLFwiXCIscWwpO2EuX3JlYWN0Um9vdENvbnRhaW5lcj1rO2FbdWZdPWsuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7U2soZnVuY3Rpb24oKXtnbChiLGssYyxkKX0pO3JldHVybiBrfVxuZnVuY3Rpb24gc2woYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9ZjtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9aGwoZyk7aC5jYWxsKGEpfX1nbChiLGcsYSxlKX1lbHNlIGc9cmwoYyxiLGEsZSxkKTtyZXR1cm4gaGwoZyl9RWM9ZnVuY3Rpb24oYSl7c3dpdGNoKGEudGFnKXtjYXNlIDM6dmFyIGI9YS5zdGF0ZU5vZGU7aWYoYi5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgYz10YyhiLnBlbmRpbmdMYW5lcyk7MCE9PWMmJihDYyhiLGN8MSksRWsoYixCKCkpLDA9PT0oSyY2KSYmKEhqPUIoKSs1MDAsamcoKSkpfWJyZWFrO2Nhc2UgMTM6U2soZnVuY3Rpb24oKXt2YXIgYj1aZyhhLDEpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEsYyl9fSksamwoYSwxKX19O1xuRmM9ZnVuY3Rpb24oYSl7aWYoMTM9PT1hLnRhZyl7dmFyIGI9WmcoYSwxMzQyMTc3MjgpO2lmKG51bGwhPT1iKXt2YXIgYz1MKCk7bWgoYixhLDEzNDIxNzcyOCxjKX1qbChhLDEzNDIxNzcyOCl9fTtHYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1saChhKSxjPVpnKGEsYik7aWYobnVsbCE9PWMpe3ZhciBkPUwoKTttaChjLGEsYixkKX1qbChhLGIpfX07SGM9ZnVuY3Rpb24oKXtyZXR1cm4gQ307SWM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1DO3RyeXtyZXR1cm4gQz1hLGIoKX1maW5hbGx5e0M9Y319O1xueWI9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiKXtjYXNlIFwiaW5wdXRcIjpiYihhLGMpO2I9Yy5uYW1lO2lmKFwicmFkaW9cIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK2IpKyddW3R5cGU9XCJyYWRpb1wiXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9RGIoZCk7aWYoIWUpdGhyb3cgRXJyb3IocCg5MCkpO1dhKGQpO2JiKGQsZSl9fX1icmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihhLGMpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpiPWMudmFsdWUsbnVsbCE9YiYmZmIoYSwhIWMubXVsdGlwbGUsYiwhMSl9fTtHYj1SaztIYj1TaztcbnZhciB0bD17dXNpbmdDbGllbnRFbnRyeVBvaW50OiExLEV2ZW50czpbQ2IsdWUsRGIsRWIsRmIsUmtdfSx1bD17ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6V2MsYnVuZGxlVHlwZTowLHZlcnNpb246XCIxOC4yLjBcIixyZW5kZXJlclBhY2thZ2VOYW1lOlwicmVhY3QtZG9tXCJ9O1xudmFyIHZsPXtidW5kbGVUeXBlOnVsLmJ1bmRsZVR5cGUsdmVyc2lvbjp1bC52ZXJzaW9uLHJlbmRlcmVyUGFja2FnZU5hbWU6dWwucmVuZGVyZXJQYWNrYWdlTmFtZSxyZW5kZXJlckNvbmZpZzp1bC5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjp1YS5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGEpe2E9WmIoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOnVsLmZpbmRGaWJlckJ5SG9zdEluc3RhbmNlfHxcbmtsLGZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaDpudWxsLHNjaGVkdWxlUmVmcmVzaDpudWxsLHNjaGVkdWxlUm9vdDpudWxsLHNldFJlZnJlc2hIYW5kbGVyOm51bGwsZ2V0Q3VycmVudEZpYmVyOm51bGwscmVjb25jaWxlclZlcnNpb246XCIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDhcIn07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3ZhciB3bD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIXdsLmlzRGlzYWJsZWQmJndsLnN1cHBvcnRzRmliZXIpdHJ5e2tjPXdsLmluamVjdCh2bCksbGM9d2x9Y2F0Y2goYSl7fX1leHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPXRsO1xuZXhwb3J0cy5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oYSxiKXt2YXIgYz0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighb2woYikpdGhyb3cgRXJyb3IocCgyMDApKTtyZXR1cm4gZGwoYSxiLG51bGwsYyl9O2V4cG9ydHMuY3JlYXRlUm9vdD1mdW5jdGlvbihhLGIpe2lmKCFvbChhKSl0aHJvdyBFcnJvcihwKDI5OSkpO3ZhciBjPSExLGQ9XCJcIixlPWxsO251bGwhPT1iJiZ2b2lkIDAhPT1iJiYoITA9PT1iLnVuc3RhYmxlX3N0cmljdE1vZGUmJihjPSEwKSx2b2lkIDAhPT1iLmlkZW50aWZpZXJQcmVmaXgmJihkPWIuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yi5vblJlY292ZXJhYmxlRXJyb3ImJihlPWIub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1jbChhLDEsITEsbnVsbCxudWxsLGMsITEsZCxlKTthW3VmXT1iLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO3JldHVybiBuZXcgbWwoYil9O1xuZXhwb3J0cy5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PWIpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhLnJlbmRlcil0aHJvdyBFcnJvcihwKDE4OCkpO2E9T2JqZWN0LmtleXMoYSkuam9pbihcIixcIik7dGhyb3cgRXJyb3IocCgyNjgsYSkpO31hPVpiKGIpO2E9bnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZTtyZXR1cm4gYX07ZXhwb3J0cy5mbHVzaFN5bmM9ZnVuY3Rpb24oYSl7cmV0dXJuIFNrKGEpfTtleHBvcnRzLmh5ZHJhdGU9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMCxjKX07XG5leHBvcnRzLmh5ZHJhdGVSb290PWZ1bmN0aW9uKGEsYixjKXtpZighb2woYSkpdGhyb3cgRXJyb3IocCg0MDUpKTt2YXIgZD1udWxsIT1jJiZjLmh5ZHJhdGVkU291cmNlc3x8bnVsbCxlPSExLGY9XCJcIixnPWxsO251bGwhPT1jJiZ2b2lkIDAhPT1jJiYoITA9PT1jLnVuc3RhYmxlX3N0cmljdE1vZGUmJihlPSEwKSx2b2lkIDAhPT1jLmlkZW50aWZpZXJQcmVmaXgmJihmPWMuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09Yy5vblJlY292ZXJhYmxlRXJyb3ImJihnPWMub25SZWNvdmVyYWJsZUVycm9yKSk7Yj1mbChiLG51bGwsYSwxLG51bGwhPWM/YzpudWxsLGUsITEsZixnKTthW3VmXT1iLmN1cnJlbnQ7c2YoYSk7aWYoZClmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKWM9ZFthXSxlPWMuX2dldFZlcnNpb24sZT1lKGMuX3NvdXJjZSksbnVsbD09Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhP2IubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1bYyxlXTpiLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGEucHVzaChjLFxuZSk7cmV0dXJuIG5ldyBubChiKX07ZXhwb3J0cy5yZW5kZXI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFwbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBzbChudWxsLGEsYiwhMSxjKX07ZXhwb3J0cy51bm1vdW50Q29tcG9uZW50QXROb2RlPWZ1bmN0aW9uKGEpe2lmKCFwbChhKSl0aHJvdyBFcnJvcihwKDQwKSk7cmV0dXJuIGEuX3JlYWN0Um9vdENvbnRhaW5lcj8oU2soZnVuY3Rpb24oKXtzbChudWxsLG51bGwsYSwhMSxmdW5jdGlvbigpe2EuX3JlYWN0Um9vdENvbnRhaW5lcj1udWxsO2FbdWZdPW51bGx9KX0pLCEwKTohMX07ZXhwb3J0cy51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1SaztcbmV4cG9ydHMudW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIXBsKGMpKXRocm93IEVycm9yKHAoMjAwKSk7aWYobnVsbD09YXx8dm9pZCAwPT09YS5fcmVhY3RJbnRlcm5hbHMpdGhyb3cgRXJyb3IocCgzOCkpO3JldHVybiBzbChhLGIsYywhMSxkKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wLW5leHQtOWUzYjc3MmI4LTIwMjIwNjA4XCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBtID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBtLmNyZWF0ZVJvb3Q7XG4gIGV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBtLmh5ZHJhdGVSb290O1xufSBlbHNlIHtcbiAgdmFyIGkgPSBtLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO1xuICBleHBvcnRzLmNyZWF0ZVJvb3QgPSBmdW5jdGlvbihjLCBvKSB7XG4gICAgaS51c2luZ0NsaWVudEVudHJ5UG9pbnQgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbS5jcmVhdGVSb290KGMsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIGgsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmh5ZHJhdGVSb290KGMsIGgsIG8pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IGZhbHNlO1xuICAgIH1cbiAgfTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY2hlY2tEQ0UoKSB7XG4gIC8qIGdsb2JhbCBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gKi9cbiAgaWYgKFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBUaGlzIGJyYW5jaCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seSBjYWxsZWRcbiAgICAvLyBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGNvbmRpdGlvbiBpcyB0cnVlIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG4gICAgLy8gVGhlcmVmb3JlIGlmIHRoZSBicmFuY2ggaXMgc3RpbGwgaGVyZSwgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIHdhc24ndFxuICAgIC8vIHByb3Blcmx5IGFwcGxpZWQuXG4gICAgLy8gRG9uJ3QgY2hhbmdlIHRoZSBtZXNzYWdlLiBSZWFjdCBEZXZUb29scyByZWxpZXMgb24gaXQuIEFsc28gbWFrZSBzdXJlXG4gICAgLy8gdGhpcyBtZXNzYWdlIGRvZXNuJ3Qgb2NjdXIgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwgY2F1c2VcbiAgICAvLyBhIGZhbHNlIHBvc2l0aXZlLlxuICAgIHRocm93IG5ldyBFcnJvcignXl9eJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY29kZSBhYm92ZSBoYXMgYmVlbiBkZWFkIGNvZGUgZWxpbWluYXRlZCAoRENFJ2QpLlxuICAgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShjaGVja0RDRSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIERldlRvb2xzIHNob3VsZG4ndCBjcmFzaCBSZWFjdCwgbm8gbWF0dGVyIHdoYXQuXG4gICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlcG9ydCBpbiBjYXNlIHdlIGJyZWFrIHRoaXMgY29kZS5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH1cbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gRENFIGNoZWNrIHNob3VsZCBoYXBwZW4gYmVmb3JlIFJlYWN0RE9NIGJ1bmRsZSBleGVjdXRlcyBzbyB0aGF0XG4gIC8vIERldlRvb2xzIGNhbiByZXBvcnQgYmFkIG1pbmlmaWNhdGlvbiBkdXJpbmcgaW5qZWN0aW9uLlxuICBjaGVja0RDRSgpO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGwsIHM7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBsID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci1sZWdhY3kuYnJvd3Nlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xuICBzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci5icm93c2VyLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBsID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci1sZWdhY3kuYnJvd3Nlci5kZXZlbG9wbWVudC5qcycpO1xuICBzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci5icm93c2VyLmRldmVsb3BtZW50LmpzJyk7XG59XG5cbmV4cG9ydHMudmVyc2lvbiA9IGwudmVyc2lvbjtcbmV4cG9ydHMucmVuZGVyVG9TdHJpbmcgPSBsLnJlbmRlclRvU3RyaW5nO1xuZXhwb3J0cy5yZW5kZXJUb1N0YXRpY01hcmt1cCA9IGwucmVuZGVyVG9TdGF0aWNNYXJrdXA7XG5leHBvcnRzLnJlbmRlclRvTm9kZVN0cmVhbSA9IGwucmVuZGVyVG9Ob2RlU3RyZWFtO1xuZXhwb3J0cy5yZW5kZXJUb1N0YXRpY05vZGVTdHJlYW0gPSBsLnJlbmRlclRvU3RhdGljTm9kZVN0cmVhbTtcbmV4cG9ydHMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbSA9IHMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbTtcbiIsIi8qIGdsb2JhbCBNYXA6cmVhZG9ubHksIFNldDpyZWFkb25seSwgQXJyYXlCdWZmZXI6cmVhZG9ubHkgKi9cblxudmFyIGhhc0VsZW1lbnRUeXBlID0gdHlwZW9mIEVsZW1lbnQgIT09ICd1bmRlZmluZWQnO1xudmFyIGhhc01hcCA9IHR5cGVvZiBNYXAgPT09ICdmdW5jdGlvbic7XG52YXIgaGFzU2V0ID0gdHlwZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJztcbnZhciBoYXNBcnJheUJ1ZmZlciA9IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ2Z1bmN0aW9uJyAmJiAhIUFycmF5QnVmZmVyLmlzVmlldztcblxuLy8gTm90ZTogV2UgKipkb24ndCoqIG5lZWQgYGVudkhhc0JpZ0ludDY0QXJyYXlgIGluIGZkZSBlczYvaW5kZXguanNcblxuZnVuY3Rpb24gZXF1YWwoYSwgYikge1xuICAvLyBTVEFSVDogZmFzdC1kZWVwLWVxdWFsIGVzNi9pbmRleC5qcyAzLjEuM1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG5cbiAgaWYgKGEgJiYgYiAmJiB0eXBlb2YgYSA9PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiA9PSAnb2JqZWN0Jykge1xuICAgIGlmIChhLmNvbnN0cnVjdG9yICE9PSBiLmNvbnN0cnVjdG9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICB2YXIgbGVuZ3RoLCBpLCBrZXlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgICAgaWYgKCFlcXVhbChhW2ldLCBiW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gU1RBUlQ6IE1vZGlmaWNhdGlvbnM6XG4gICAgLy8gMS4gRXh0cmEgYGhhczxUeXBlPiAmJmAgaGVscGVycyBpbiBpbml0aWFsIGNvbmRpdGlvbiBhbGxvdyBlczYgY29kZVxuICAgIC8vICAgIHRvIGNvLWV4aXN0IHdpdGggZXM1LlxuICAgIC8vIDIuIFJlcGxhY2UgYGZvciBvZmAgd2l0aCBlczUgY29tcGxpYW50IGl0ZXJhdGlvbiB1c2luZyBgZm9yYC5cbiAgICAvLyAgICBCYXNpY2FsbHksIHRha2U6XG4gICAgLy9cbiAgICAvLyAgICBgYGBqc1xuICAgIC8vICAgIGZvciAoaSBvZiBhLmVudHJpZXMoKSlcbiAgICAvLyAgICAgIGlmICghYi5oYXMoaVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICBgYGBcbiAgICAvL1xuICAgIC8vICAgIC4uLiBhbmQgY29udmVydCB0bzpcbiAgICAvL1xuICAgIC8vICAgIGBgYGpzXG4gICAgLy8gICAgaXQgPSBhLmVudHJpZXMoKTtcbiAgICAvLyAgICB3aGlsZSAoIShpID0gaXQubmV4dCgpKS5kb25lKVxuICAgIC8vICAgICAgaWYgKCFiLmhhcyhpLnZhbHVlWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vICAgIGBgYFxuICAgIC8vXG4gICAgLy8gICAgKipOb3RlKio6IGBpYCBhY2Nlc3Mgc3dpdGNoZXMgdG8gYGkudmFsdWVgLlxuICAgIHZhciBpdDtcbiAgICBpZiAoaGFzTWFwICYmIChhIGluc3RhbmNlb2YgTWFwKSAmJiAoYiBpbnN0YW5jZW9mIE1hcCkpIHtcbiAgICAgIGlmIChhLnNpemUgIT09IGIuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaXQgPSBhLmVudHJpZXMoKTtcbiAgICAgIHdoaWxlICghKGkgPSBpdC5uZXh0KCkpLmRvbmUpXG4gICAgICAgIGlmICghYi5oYXMoaS52YWx1ZVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGl0ID0gYS5lbnRyaWVzKCk7XG4gICAgICB3aGlsZSAoIShpID0gaXQubmV4dCgpKS5kb25lKVxuICAgICAgICBpZiAoIWVxdWFsKGkudmFsdWVbMV0sIGIuZ2V0KGkudmFsdWVbMF0pKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGhhc1NldCAmJiAoYSBpbnN0YW5jZW9mIFNldCkgJiYgKGIgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICAgIGl0ID0gYS5lbnRyaWVzKCk7XG4gICAgICB3aGlsZSAoIShpID0gaXQubmV4dCgpKS5kb25lKVxuICAgICAgICBpZiAoIWIuaGFzKGkudmFsdWVbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gRU5EOiBNb2RpZmljYXRpb25zXG5cbiAgICBpZiAoaGFzQXJyYXlCdWZmZXIgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KGEpICYmIEFycmF5QnVmZmVyLmlzVmlldyhiKSkge1xuICAgICAgbGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgICBpZiAobGVuZ3RoICE9IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspXG4gICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoYS5jb25zdHJ1Y3RvciA9PT0gUmVnRXhwKSByZXR1cm4gYS5zb3VyY2UgPT09IGIuc291cmNlICYmIGEuZmxhZ3MgPT09IGIuZmxhZ3M7XG4gICAgLy8gU1RBUlQ6IE1vZGlmaWNhdGlvbnM6XG4gICAgLy8gQXBwbHkgZ3VhcmRzIGZvciBgT2JqZWN0LmNyZWF0ZShudWxsKWAgaGFuZGxpbmcuIFNlZTpcbiAgICAvLyAtIGh0dHBzOi8vZ2l0aHViLmNvbS9Gb3JtaWRhYmxlTGFicy9yZWFjdC1mYXN0LWNvbXBhcmUvaXNzdWVzLzY0XG4gICAgLy8gLSBodHRwczovL2dpdGh1Yi5jb20vZXBvYmVyZXpraW4vZmFzdC1kZWVwLWVxdWFsL2lzc3Vlcy80OVxuICAgIGlmIChhLnZhbHVlT2YgIT09IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZiAmJiB0eXBlb2YgYS52YWx1ZU9mID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBiLnZhbHVlT2YgPT09ICdmdW5jdGlvbicpIHJldHVybiBhLnZhbHVlT2YoKSA9PT0gYi52YWx1ZU9mKCk7XG4gICAgaWYgKGEudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgJiYgdHlwZW9mIGEudG9TdHJpbmcgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGIudG9TdHJpbmcgPT09ICdmdW5jdGlvbicpIHJldHVybiBhLnRvU3RyaW5nKCkgPT09IGIudG9TdHJpbmcoKTtcbiAgICAvLyBFTkQ6IE1vZGlmaWNhdGlvbnNcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhhKTtcbiAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGtleXNbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gRU5EOiBmYXN0LWRlZXAtZXF1YWxcblxuICAgIC8vIFNUQVJUOiByZWFjdC1mYXN0LWNvbXBhcmVcbiAgICAvLyBjdXN0b20gaGFuZGxpbmcgZm9yIERPTSBlbGVtZW50c1xuICAgIGlmIChoYXNFbGVtZW50VHlwZSAmJiBhIGluc3RhbmNlb2YgRWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gY3VzdG9tIGhhbmRsaW5nIGZvciBSZWFjdC9QcmVhY3RcbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICgoa2V5c1tpXSA9PT0gJ19vd25lcicgfHwga2V5c1tpXSA9PT0gJ19fdicgfHwga2V5c1tpXSA9PT0gJ19fbycpICYmIGEuJCR0eXBlb2YpIHtcbiAgICAgICAgLy8gUmVhY3Qtc3BlY2lmaWM6IGF2b2lkIHRyYXZlcnNpbmcgUmVhY3QgZWxlbWVudHMnIF9vd25lclxuICAgICAgICAvLyBQcmVhY3Qtc3BlY2lmaWM6IGF2b2lkIHRyYXZlcnNpbmcgUHJlYWN0IGVsZW1lbnRzJyBfX3YgYW5kIF9fb1xuICAgICAgICAvLyAgICBfX3YgPSAkX29yaWdpbmFsIC8gJF92bm9kZVxuICAgICAgICAvLyAgICBfX28gPSAkX293bmVyXG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY29udGFpbiBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCBhcmUgbm90IG5lZWRlZCB3aGVuXG4gICAgICAgIC8vIGNvbXBhcmluZyB0aGUgYWN0dWFsIGVsZW1lbnRzIChhbmQgbm90IHRoZWlyIG93bmVycylcbiAgICAgICAgLy8gLiQkdHlwZW9mIGFuZCAuX3N0b3JlIG9uIGp1c3QgcmVhc29uYWJsZSBtYXJrZXJzIG9mIGVsZW1lbnRzXG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIGFsbCBvdGhlciBwcm9wZXJ0aWVzIHNob3VsZCBiZSB0cmF2ZXJzZWQgYXMgdXN1YWxcbiAgICAgIGlmICghZXF1YWwoYVtrZXlzW2ldXSwgYltrZXlzW2ldXSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gRU5EOiByZWFjdC1mYXN0LWNvbXBhcmVcblxuICAgIC8vIFNUQVJUOiBmYXN0LWRlZXAtZXF1YWxcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhICE9PSBhICYmIGIgIT09IGI7XG59XG4vLyBlbmQgZmFzdC1kZWVwLWVxdWFsXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNFcXVhbChhLCBiKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVxdWFsKGEsIGIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICgoKGVycm9yLm1lc3NhZ2UgfHwgJycpLm1hdGNoKC9zdGFja3xyZWN1cnNpb24vaSkpKSB7XG4gICAgICAvLyB3YXJuIG9uIGNpcmN1bGFyIHJlZmVyZW5jZXMsIGRvbid0IGNyYXNoXG4gICAgICAvLyBicm93c2VycyBnaXZlIHRoaXMgZGlmZmVyZW50IGVycm9ycyBuYW1lIGFuZCBtZXNzYWdlczpcbiAgICAgIC8vIGNocm9tZS9zYWZhcmk6IFwiUmFuZ2VFcnJvclwiLCBcIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCJcbiAgICAgIC8vIGZpcmVmb3g6IFwiSW50ZXJuYWxFcnJvclwiLCB0b28gbXVjaCByZWN1cnNpb25cIlxuICAgICAgLy8gZWRnZTogXCJFcnJvclwiLCBcIk91dCBvZiBzdGFjayBzcGFjZVwiXG4gICAgICBjb25zb2xlLndhcm4oJ3JlYWN0LWZhc3QtY29tcGFyZSBjYW5ub3QgaGFuZGxlIGNpcmN1bGFyIHJlZnMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gc29tZSBvdGhlciBlcnJvci4gd2Ugc2hvdWxkIGRlZmluaXRlbHkga25vdyBhYm91dCB0aGVzZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBsPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLG49U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxwPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxxPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxyPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSx1PVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLHY9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLHc9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLHg9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikseT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx6PVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBBKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT16JiZhW3pdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9XG52YXIgQj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sQz1PYmplY3QuYXNzaWduLEQ9e307ZnVuY3Rpb24gRShhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfUUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e307XG5FLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihhLGIpe2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJm51bGwhPWEpdGhyb3cgRXJyb3IoXCJzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy5cIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGEsYixcInNldFN0YXRlXCIpfTtFLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsYSxcImZvcmNlVXBkYXRlXCIpfTtmdW5jdGlvbiBGKCl7fUYucHJvdG90eXBlPUUucHJvdG90eXBlO2Z1bmN0aW9uIEcoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RDt0aGlzLnVwZGF0ZXI9ZXx8Qn12YXIgSD1HLnByb3RvdHlwZT1uZXcgRjtcbkguY29uc3RydWN0b3I9RztDKEgsRS5wcm90b3R5cGUpO0guaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEk9QXJyYXkuaXNBcnJheSxKPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksSz17Y3VycmVudDpudWxsfSxMPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBNKGEsYixlKXt2YXIgZCxjPXt9LGs9bnVsbCxoPW51bGw7aWYobnVsbCE9Yilmb3IoZCBpbiB2b2lkIDAhPT1iLnJlZiYmKGg9Yi5yZWYpLHZvaWQgMCE9PWIua2V5JiYoaz1cIlwiK2Iua2V5KSxiKUouY2FsbChiLGQpJiYhTC5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09YltkXSk7dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1nKWMuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zyl7Zm9yKHZhciBmPUFycmF5KGcpLG09MDttPGc7bSsrKWZbbV09YXJndW1lbnRzW20rMl07Yy5jaGlsZHJlbj1mfWlmKGEmJmEuZGVmYXVsdFByb3BzKWZvcihkIGluIGc9YS5kZWZhdWx0UHJvcHMsZyl2b2lkIDA9PT1jW2RdJiYoY1tkXT1nW2RdKTtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEsa2V5OmsscmVmOmgscHJvcHM6Yyxfb3duZXI6Sy5jdXJyZW50fX1cbmZ1bmN0aW9uIE4oYSxiKXtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YixyZWY6YS5yZWYscHJvcHM6YS5wcm9wcyxfb3duZXI6YS5fb3duZXJ9fWZ1bmN0aW9uIE8oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWx9ZnVuY3Rpb24gZXNjYXBlKGEpe3ZhciBiPXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifTtyZXR1cm5cIiRcIithLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXX0pfXZhciBQPS9cXC8rL2c7ZnVuY3Rpb24gUShhLGIpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJm51bGwhPWEua2V5P2VzY2FwZShcIlwiK2Eua2V5KTpiLnRvU3RyaW5nKDM2KX1cbmZ1bmN0aW9uIFIoYSxiLGUsZCxjKXt2YXIgaz10eXBlb2YgYTtpZihcInVuZGVmaW5lZFwiPT09a3x8XCJib29sZWFuXCI9PT1rKWE9bnVsbDt2YXIgaD0hMTtpZihudWxsPT09YSloPSEwO2Vsc2Ugc3dpdGNoKGspe2Nhc2UgXCJzdHJpbmdcIjpjYXNlIFwibnVtYmVyXCI6aD0hMDticmVhaztjYXNlIFwib2JqZWN0XCI6c3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgbDpjYXNlIG46aD0hMH19aWYoaClyZXR1cm4gaD1hLGM9YyhoKSxhPVwiXCI9PT1kP1wiLlwiK1EoaCwwKTpkLEkoYyk/KGU9XCJcIixudWxsIT1hJiYoZT1hLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIiksUihjLGIsZSxcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBhfSkpOm51bGwhPWMmJihPKGMpJiYoYz1OKGMsZSsoIWMua2V5fHxoJiZoLmtleT09PWMua2V5P1wiXCI6KFwiXCIrYy5rZXkpLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIikrYSkpLGIucHVzaChjKSksMTtoPTA7ZD1cIlwiPT09ZD9cIi5cIjpkK1wiOlwiO2lmKEkoYSkpZm9yKHZhciBnPTA7ZzxhLmxlbmd0aDtnKyspe2s9XG5hW2ddO3ZhciBmPWQrUShrLGcpO2grPVIoayxiLGUsZixjKX1lbHNlIGlmKGY9QShhKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZilmb3IoYT1mLmNhbGwoYSksZz0wOyEoaz1hLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLGY9ZCtRKGssZysrKSxoKz1SKGssYixlLGYsYyk7ZWxzZSBpZihcIm9iamVjdFwiPT09ayl0aHJvdyBiPVN0cmluZyhhKSxFcnJvcihcIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogXCIrKFwiW29iamVjdCBPYmplY3RdXCI9PT1iP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYSkuam9pbihcIiwgXCIpK1wifVwiOmIpK1wiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLlwiKTtyZXR1cm4gaH1cbmZ1bmN0aW9uIFMoYSxiLGUpe2lmKG51bGw9PWEpcmV0dXJuIGE7dmFyIGQ9W10sYz0wO1IoYSxkLFwiXCIsXCJcIixmdW5jdGlvbihhKXtyZXR1cm4gYi5jYWxsKGUsYSxjKyspfSk7cmV0dXJuIGR9ZnVuY3Rpb24gVChhKXtpZigtMT09PWEuX3N0YXR1cyl7dmFyIGI9YS5fcmVzdWx0O2I9YigpO2IudGhlbihmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MSxhLl9yZXN1bHQ9Yn0sZnVuY3Rpb24oYil7aWYoMD09PWEuX3N0YXR1c3x8LTE9PT1hLl9zdGF0dXMpYS5fc3RhdHVzPTIsYS5fcmVzdWx0PWJ9KTstMT09PWEuX3N0YXR1cyYmKGEuX3N0YXR1cz0wLGEuX3Jlc3VsdD1iKX1pZigxPT09YS5fc3RhdHVzKXJldHVybiBhLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBhLl9yZXN1bHQ7fVxudmFyIFU9e2N1cnJlbnQ6bnVsbH0sVj17dHJhbnNpdGlvbjpudWxsfSxXPXtSZWFjdEN1cnJlbnREaXNwYXRjaGVyOlUsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6VixSZWFjdEN1cnJlbnRPd25lcjpLfTtleHBvcnRzLkNoaWxkcmVuPXttYXA6Uyxmb3JFYWNoOmZ1bmN0aW9uKGEsYixlKXtTKGEsZnVuY3Rpb24oKXtiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZSl9LGNvdW50OmZ1bmN0aW9uKGEpe3ZhciBiPTA7UyhhLGZ1bmN0aW9uKCl7YisrfSk7cmV0dXJuIGJ9LHRvQXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIFMoYSxmdW5jdGlvbihhKXtyZXR1cm4gYX0pfHxbXX0sb25seTpmdW5jdGlvbihhKXtpZighTyhhKSl0aHJvdyBFcnJvcihcIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLlwiKTtyZXR1cm4gYX19O2V4cG9ydHMuQ29tcG9uZW50PUU7ZXhwb3J0cy5GcmFnbWVudD1wO1xuZXhwb3J0cy5Qcm9maWxlcj1yO2V4cG9ydHMuUHVyZUNvbXBvbmVudD1HO2V4cG9ydHMuU3RyaWN0TW9kZT1xO2V4cG9ydHMuU3VzcGVuc2U9dztleHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPVc7XG5leHBvcnRzLmNsb25lRWxlbWVudD1mdW5jdGlvbihhLGIsZSl7aWYobnVsbD09PWF8fHZvaWQgMD09PWEpdGhyb3cgRXJyb3IoXCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIithK1wiLlwiKTt2YXIgZD1DKHt9LGEucHJvcHMpLGM9YS5rZXksaz1hLnJlZixoPWEuX293bmVyO2lmKG51bGwhPWIpe3ZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZixoPUsuY3VycmVudCk7dm9pZCAwIT09Yi5rZXkmJihjPVwiXCIrYi5rZXkpO2lmKGEudHlwZSYmYS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgZz1hLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihmIGluIGIpSi5jYWxsKGIsZikmJiFMLmhhc093blByb3BlcnR5KGYpJiYoZFtmXT12b2lkIDA9PT1iW2ZdJiZ2b2lkIDAhPT1nP2dbZl06YltmXSl9dmFyIGY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1mKWQuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zil7Zz1BcnJheShmKTtcbmZvcih2YXIgbT0wO208ZjttKyspZ1ttXT1hcmd1bWVudHNbbSsyXTtkLmNoaWxkcmVuPWd9cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLnR5cGUsa2V5OmMscmVmOmsscHJvcHM6ZCxfb3duZXI6aH19O2V4cG9ydHMuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihhKXthPXskJHR5cGVvZjp1LF9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dCxfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfTtleHBvcnRzLmNyZWF0ZUVsZW1lbnQ9TTtleHBvcnRzLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oYSl7dmFyIGI9TS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2V4cG9ydHMuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O1xuZXhwb3J0cy5mb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp2LHJlbmRlcjphfX07ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudD1PO2V4cG9ydHMubGF6eT1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6eSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmF9LF9pbml0OlR9fTtleHBvcnRzLm1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm57JCR0eXBlb2Y6eCx0eXBlOmEsY29tcGFyZTp2b2lkIDA9PT1iP251bGw6Yn19O2V4cG9ydHMuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPVYudHJhbnNpdGlvbjtWLnRyYW5zaXRpb249e307dHJ5e2EoKX1maW5hbGx5e1YudHJhbnNpdGlvbj1ifX07ZXhwb3J0cy51bnN0YWJsZV9hY3Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO307XG5leHBvcnRzLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VDYWxsYmFjayhhLGIpfTtleHBvcnRzLnVzZUNvbnRleHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VDb250ZXh0KGEpfTtleHBvcnRzLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZURlZmVycmVkVmFsdWUoYSl9O2V4cG9ydHMudXNlRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VJZD1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlSWQoKX07ZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoYSxiLGUpfTtcbmV4cG9ydHMudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUxheW91dEVmZmVjdChhLGIpfTtleHBvcnRzLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZU1lbW8oYSxiKX07ZXhwb3J0cy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZHVjZXIoYSxiLGUpfTtleHBvcnRzLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZihhKX07ZXhwb3J0cy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN0YXRlKGEpfTtleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGEsYixlKX07XG5leHBvcnRzLnVzZVRyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gVS5jdXJyZW50LnVzZVRyYW5zaXRpb24oKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHNjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWEubGVuZ3RoO2EucHVzaChiKTthOmZvcig7MDxjOyl7dmFyIGQ9Yy0xPj4+MSxlPWFbZF07aWYoMDxnKGUsYikpYVtkXT1iLGFbY109ZSxjPWQ7ZWxzZSBicmVhayBhfX1mdW5jdGlvbiBoKGEpe3JldHVybiAwPT09YS5sZW5ndGg/bnVsbDphWzBdfWZ1bmN0aW9uIGsoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3ZhciBiPWFbMF0sYz1hLnBvcCgpO2lmKGMhPT1iKXthWzBdPWM7YTpmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLHc9ZT4+PjE7ZDx3Oyl7dmFyIG09MiooZCsxKS0xLEM9YVttXSxuPW0rMSx4PWFbbl07aWYoMD5nKEMsYykpbjxlJiYwPmcoeCxDKT8oYVtkXT14LGFbbl09YyxkPW4pOihhW2RdPUMsYVttXT1jLGQ9bSk7ZWxzZSBpZihuPGUmJjA+Zyh4LGMpKWFbZF09eCxhW25dPWMsZD1uO2Vsc2UgYnJlYWsgYX19cmV0dXJuIGJ9XG5mdW5jdGlvbiBnKGEsYil7dmFyIGM9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1jP2M6YS5pZC1iLmlkfWlmKFwib2JqZWN0XCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBsPXBlcmZvcm1hbmNlO2V4cG9ydHMudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGwubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxxPXAubm93KCk7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1xfX12YXIgcj1bXSx0PVtdLHU9MSx2PW51bGwseT0zLHo9ITEsQT0hMSxCPSExLEQ9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEU9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxGPVwidW5kZWZpbmVkXCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO1xuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nJiZ2b2lkIDAhPT1uYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZyYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmcuYmluZChuYXZpZ2F0b3Iuc2NoZWR1bGluZyk7ZnVuY3Rpb24gRyhhKXtmb3IodmFyIGI9aCh0KTtudWxsIT09Yjspe2lmKG51bGw9PT1iLmNhbGxiYWNrKWsodCk7ZWxzZSBpZihiLnN0YXJ0VGltZTw9YSlrKHQpLGIuc29ydEluZGV4PWIuZXhwaXJhdGlvblRpbWUsZihyLGIpO2Vsc2UgYnJlYWs7Yj1oKHQpfX1mdW5jdGlvbiBIKGEpe0I9ITE7RyhhKTtpZighQSlpZihudWxsIT09aChyKSlBPSEwLEkoSik7ZWxzZXt2YXIgYj1oKHQpO251bGwhPT1iJiZLKEgsYi5zdGFydFRpbWUtYSl9fVxuZnVuY3Rpb24gSihhLGIpe0E9ITE7QiYmKEI9ITEsRShMKSxMPS0xKTt6PSEwO3ZhciBjPXk7dHJ5e0coYik7Zm9yKHY9aChyKTtudWxsIT09diYmKCEodi5leHBpcmF0aW9uVGltZT5iKXx8YSYmIU0oKSk7KXt2YXIgZD12LmNhbGxiYWNrO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2LmNhbGxiYWNrPW51bGw7eT12LnByaW9yaXR5TGV2ZWw7dmFyIGU9ZCh2LmV4cGlyYXRpb25UaW1lPD1iKTtiPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGU/di5jYWxsYmFjaz1lOnY9PT1oKHIpJiZrKHIpO0coYil9ZWxzZSBrKHIpO3Y9aChyKX1pZihudWxsIT09dil2YXIgdz0hMDtlbHNle3ZhciBtPWgodCk7bnVsbCE9PW0mJksoSCxtLnN0YXJ0VGltZS1iKTt3PSExfXJldHVybiB3fWZpbmFsbHl7dj1udWxsLHk9Yyx6PSExfX12YXIgTj0hMSxPPW51bGwsTD0tMSxQPTUsUT0tMTtcbmZ1bmN0aW9uIE0oKXtyZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKS1RPFA/ITE6ITB9ZnVuY3Rpb24gUigpe2lmKG51bGwhPT1PKXt2YXIgYT1leHBvcnRzLnVuc3RhYmxlX25vdygpO1E9YTt2YXIgYj0hMDt0cnl7Yj1PKCEwLGEpfWZpbmFsbHl7Yj9TKCk6KE49ITEsTz1udWxsKX19ZWxzZSBOPSExfXZhciBTO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBGKVM9ZnVuY3Rpb24oKXtGKFIpfTtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBUPW5ldyBNZXNzYWdlQ2hhbm5lbCxVPVQucG9ydDI7VC5wb3J0MS5vbm1lc3NhZ2U9UjtTPWZ1bmN0aW9uKCl7VS5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBTPWZ1bmN0aW9uKCl7RChSLDApfTtmdW5jdGlvbiBJKGEpe089YTtOfHwoTj0hMCxTKCkpfWZ1bmN0aW9uIEsoYSxiKXtMPUQoZnVuY3Rpb24oKXthKGV4cG9ydHMudW5zdGFibGVfbm93KCkpfSxiKX1cbmV4cG9ydHMudW5zdGFibGVfSWRsZVByaW9yaXR5PTU7ZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xO2V4cG9ydHMudW5zdGFibGVfTG93UHJpb3JpdHk9NDtleHBvcnRzLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTM7ZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbDtleHBvcnRzLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTI7ZXhwb3J0cy51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9O2V4cG9ydHMudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtBfHx6fHwoQT0hMCxJKEopKX07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlPWZ1bmN0aW9uKGEpezA+YXx8MTI1PGE/Y29uc29sZS5lcnJvcihcImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZFwiKTpQPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTtleHBvcnRzLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHl9O2V4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gaChyKX07ZXhwb3J0cy51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGEpe3N3aXRjaCh5KXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgYj0zO2JyZWFrO2RlZmF1bHQ6Yj15fXZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7eT1jfX07ZXhwb3J0cy51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe307XG5leHBvcnRzLnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe307ZXhwb3J0cy51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmE9M312YXIgYz15O3k9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e3k9Y319O1xuZXhwb3J0cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1leHBvcnRzLnVuc3RhYmxlX25vdygpO1wib2JqZWN0XCI9PT10eXBlb2YgYyYmbnVsbCE9PWM/KGM9Yy5kZWxheSxjPVwibnVtYmVyXCI9PT10eXBlb2YgYyYmMDxjP2QrYzpkKTpjPWQ7c3dpdGNoKGEpe2Nhc2UgMTp2YXIgZT0tMTticmVhaztjYXNlIDI6ZT0yNTA7YnJlYWs7Y2FzZSA1OmU9MTA3Mzc0MTgyMzticmVhaztjYXNlIDQ6ZT0xRTQ7YnJlYWs7ZGVmYXVsdDplPTVFM31lPWMrZTthPXtpZDp1KyssY2FsbGJhY2s6Yixwcmlvcml0eUxldmVsOmEsc3RhcnRUaW1lOmMsZXhwaXJhdGlvblRpbWU6ZSxzb3J0SW5kZXg6LTF9O2M+ZD8oYS5zb3J0SW5kZXg9YyxmKHQsYSksbnVsbD09PWgocikmJmE9PT1oKHQpJiYoQj8oRShMKSxMPS0xKTpCPSEwLEsoSCxjLWQpKSk6KGEuc29ydEluZGV4PWUsZihyLGEpLEF8fHp8fChBPSEwLEkoSikpKTtyZXR1cm4gYX07XG5leHBvcnRzLnVuc3RhYmxlX3Nob3VsZFlpZWxkPU07ZXhwb3J0cy51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYSl7dmFyIGI9eTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz15O3k9Yjt0cnl7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7eT1jfX19O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9zY2hlZHVsZXIuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cbiAgY3NzICs9IG9iai5jc3M7XG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH1cblxuICAvLyBGb3Igb2xkIElFXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7fSxcbiAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cbiAgICB9O1xuICB9XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge307XG4gIH1cbiAgdmFyIGFjdGl2ZSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgdmFyIHJhbmdlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdGlvbi5yYW5nZUNvdW50OyBpKyspIHtcbiAgICByYW5nZXMucHVzaChzZWxlY3Rpb24uZ2V0UmFuZ2VBdChpKSk7XG4gIH1cblxuICBzd2l0Y2ggKGFjdGl2ZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpIHsgLy8gLnRvVXBwZXJDYXNlIGhhbmRsZXMgWEhUTUxcbiAgICBjYXNlICdJTlBVVCc6XG4gICAgY2FzZSAnVEVYVEFSRUEnOlxuICAgICAgYWN0aXZlLmJsdXIoKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGFjdGl2ZSA9IG51bGw7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBzZWxlY3Rpb24udHlwZSA9PT0gJ0NhcmV0JyAmJlxuICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcblxuICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpIHtcbiAgICAgIHJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKHJhbmdlKSB7XG4gICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhY3RpdmUgJiZcbiAgICBhY3RpdmUuZm9jdXMoKTtcbiAgfTtcbn07XG4iLCIvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjMuMiBieSBAbWF0aGlhcyAqL1xuOyhmdW5jdGlvbihyb290KSB7XG5cblx0LyoqIERldGVjdCBmcmVlIHZhcmlhYmxlcyAqL1xuXHR2YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmXG5cdFx0IWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblx0dmFyIGZyZWVNb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJlxuXHRcdCFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXHR2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsO1xuXHRpZiAoXG5cdFx0ZnJlZUdsb2JhbC5nbG9iYWwgPT09IGZyZWVHbG9iYWwgfHxcblx0XHRmcmVlR2xvYmFsLndpbmRvdyA9PT0gZnJlZUdsb2JhbCB8fFxuXHRcdGZyZWVHbG9iYWwuc2VsZiA9PT0gZnJlZUdsb2JhbFxuXHQpIHtcblx0XHRyb290ID0gZnJlZUdsb2JhbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgYHB1bnljb2RlYCBvYmplY3QuXG5cdCAqIEBuYW1lIHB1bnljb2RlXG5cdCAqIEB0eXBlIE9iamVjdFxuXHQgKi9cblx0dmFyIHB1bnljb2RlLFxuXG5cdC8qKiBIaWdoZXN0IHBvc2l0aXZlIHNpZ25lZCAzMi1iaXQgZmxvYXQgdmFsdWUgKi9cblx0bWF4SW50ID0gMjE0NzQ4MzY0NywgLy8gYWthLiAweDdGRkZGRkZGIG9yIDJeMzEtMVxuXG5cdC8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cblx0YmFzZSA9IDM2LFxuXHR0TWluID0gMSxcblx0dE1heCA9IDI2LFxuXHRza2V3ID0gMzgsXG5cdGRhbXAgPSA3MDAsXG5cdGluaXRpYWxCaWFzID0gNzIsXG5cdGluaXRpYWxOID0gMTI4LCAvLyAweDgwXG5cdGRlbGltaXRlciA9ICctJywgLy8gJ1xceDJEJ1xuXG5cdC8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5cdHJlZ2V4UHVueWNvZGUgPSAvXnhuLS0vLFxuXHRyZWdleE5vbkFTQ0lJID0gL1teXFx4MjAtXFx4N0VdLywgLy8gdW5wcmludGFibGUgQVNDSUkgY2hhcnMgKyBub24tQVNDSUkgY2hhcnNcblx0cmVnZXhTZXBhcmF0b3JzID0gL1tcXHgyRVxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZywgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xuXG5cdC8qKiBFcnJvciBtZXNzYWdlcyAqL1xuXHRlcnJvcnMgPSB7XG5cdFx0J292ZXJmbG93JzogJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJyxcblx0XHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHRcdCdpbnZhbGlkLWlucHV0JzogJ0ludmFsaWQgaW5wdXQnXG5cdH0sXG5cblx0LyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuXHRiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW4sXG5cdGZsb29yID0gTWF0aC5mbG9vcixcblx0c3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZSxcblxuXHQvKiogVGVtcG9yYXJ5IHZhcmlhYmxlICovXG5cdGtleTtcblxuXHQvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuXHQvKipcblx0ICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIFRoZSBlcnJvciB0eXBlLlxuXHQgKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBlcnJvcih0eXBlKSB7XG5cdFx0dGhyb3cgUmFuZ2VFcnJvcihlcnJvcnNbdHlwZV0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgZ2VuZXJpYyBgQXJyYXkjbWFwYCB1dGlsaXR5IGZ1bmN0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgYXJyYXlcblx0ICogaXRlbS5cblx0ICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwKGFycmF5LCBmbikge1xuXHRcdHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xuXHRcdHdoaWxlIChsZW5ndGgtLSkge1xuXHRcdFx0cmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIHNpbXBsZSBgQXJyYXkjbWFwYC1saWtlIHdyYXBwZXIgdG8gd29yayB3aXRoIGRvbWFpbiBuYW1lIHN0cmluZ3Mgb3IgZW1haWxcblx0ICogYWRkcmVzc2VzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcblx0ICogY2hhcmFjdGVyLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IHN0cmluZyBvZiBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFja1xuXHQgKiBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcERvbWFpbihzdHJpbmcsIGZuKSB7XG5cdFx0dmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG5cdFx0dmFyIHJlc3VsdCA9ICcnO1xuXHRcdGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0XHQvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG5cdFx0XHQvLyB0aGUgbG9jYWwgcGFydCAoaS5lLiBldmVyeXRoaW5nIHVwIHRvIGBAYCkgaW50YWN0LlxuXHRcdFx0cmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG5cdFx0XHRzdHJpbmcgPSBwYXJ0c1sxXTtcblx0XHR9XG5cdFx0Ly8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuXHRcdHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG5cdFx0dmFyIGxhYmVscyA9IHN0cmluZy5zcGxpdCgnLicpO1xuXHRcdHZhciBlbmNvZGVkID0gbWFwKGxhYmVscywgZm4pLmpvaW4oJy4nKTtcblx0XHRyZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG5cdCAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcblx0ICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcblx0ICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG5cdCAqIG1hdGNoaW5nIFVURi0xNi5cblx0ICogQHNlZSBgcHVueWNvZGUudWNzMi5lbmNvZGVgXG5cdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuXHQgKiBAbmFtZSBkZWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cblx0ICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuXHQgKi9cblx0ZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcblx0XHR2YXIgb3V0cHV0ID0gW10sXG5cdFx0ICAgIGNvdW50ZXIgPSAwLFxuXHRcdCAgICBsZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuXHRcdCAgICB2YWx1ZSxcblx0XHQgICAgZXh0cmE7XG5cdFx0d2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdFx0Ly8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG5cdFx0XHRcdGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdFx0aWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIGxvdyBzdXJyb2dhdGVcblx0XHRcdFx0XHRvdXRwdXQucHVzaCgoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZSBuZXh0XG5cdFx0XHRcdFx0Ly8gY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0XHRcdGNvdW50ZXItLTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3V0cHV0O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cblx0ICogQHNlZSBgcHVueWNvZGUudWNzMi5kZWNvZGVgXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG5cdCAqIEBuYW1lIGVuY29kZVxuXHQgKiBAcGFyYW0ge0FycmF5fSBjb2RlUG9pbnRzIFRoZSBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG5cdCAqL1xuXHRmdW5jdGlvbiB1Y3MyZW5jb2RlKGFycmF5KSB7XG5cdFx0cmV0dXJuIG1hcChhcnJheSwgZnVuY3Rpb24odmFsdWUpIHtcblx0XHRcdHZhciBvdXRwdXQgPSAnJztcblx0XHRcdGlmICh2YWx1ZSA+IDB4RkZGRikge1xuXHRcdFx0XHR2YWx1ZSAtPSAweDEwMDAwO1xuXHRcdFx0XHRvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKTtcblx0XHRcdFx0dmFsdWUgPSAweERDMDAgfCB2YWx1ZSAmIDB4M0ZGO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSk7XG5cdFx0XHRyZXR1cm4gb3V0cHV0O1xuXHRcdH0pLmpvaW4oJycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgYmFzaWMgY29kZSBwb2ludCBpbnRvIGEgZGlnaXQvaW50ZWdlci5cblx0ICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlUG9pbnQgVGhlIGJhc2ljIG51bWVyaWMgY29kZSBwb2ludCB2YWx1ZS5cblx0ICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG5cdCAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaW4gdGhlIHJhbmdlIGAwYCB0byBgYmFzZSAtIDFgLCBvciBgYmFzZWAgaWZcblx0ICogdGhlIGNvZGUgcG9pbnQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsdWUuXG5cdCAqL1xuXHRmdW5jdGlvbiBiYXNpY1RvRGlnaXQoY29kZVBvaW50KSB7XG5cdFx0aWYgKGNvZGVQb2ludCAtIDQ4IDwgMTApIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSAyMjtcblx0XHR9XG5cdFx0aWYgKGNvZGVQb2ludCAtIDY1IDwgMjYpIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSA2NTtcblx0XHR9XG5cdFx0aWYgKGNvZGVQb2ludCAtIDk3IDwgMjYpIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSA5Nztcblx0XHR9XG5cdFx0cmV0dXJuIGJhc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuXHQgKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtOdW1iZXJ9IGRpZ2l0IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludC5cblx0ICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3Jcblx0ICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpcyBgZGlnaXRgLCB3aGljaCBuZWVkcyB0byBiZSBpbiB0aGUgcmFuZ2Vcblx0ICogYDBgIHRvIGBiYXNlIC0gMWAuIElmIGBmbGFnYCBpcyBub24temVybywgdGhlIHVwcGVyY2FzZSBmb3JtIGlzXG5cdCAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG5cdCAqIGlmIGBmbGFnYCBpcyBub24temVybyBhbmQgYGRpZ2l0YCBoYXMgbm8gdXBwZXJjYXNlIGZvcm0uXG5cdCAqL1xuXHRmdW5jdGlvbiBkaWdpdFRvQmFzaWMoZGlnaXQsIGZsYWcpIHtcblx0XHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHRcdC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuXHRcdHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNikgLSAoKGZsYWcgIT0gMCkgPDwgNSk7XG5cdH1cblxuXHQvKipcblx0ICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cblx0ICogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gYWRhcHQoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG5cdFx0dmFyIGsgPSAwO1xuXHRcdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdFx0ZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuXHRcdGZvciAoLyogbm8gaW5pdGlhbGl6YXRpb24gKi87IGRlbHRhID4gYmFzZU1pbnVzVE1pbiAqIHRNYXggPj4gMTsgayArPSBiYXNlKSB7XG5cdFx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdFx0fVxuXHRcdHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG5cdCAqIHN5bWJvbHMuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZXN1bHRpbmcgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cblx0ICovXG5cdGZ1bmN0aW9uIGRlY29kZShpbnB1dCkge1xuXHRcdC8vIERvbid0IHVzZSBVQ1MtMlxuXHRcdHZhciBvdXRwdXQgPSBbXSxcblx0XHQgICAgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgsXG5cdFx0ICAgIG91dCxcblx0XHQgICAgaSA9IDAsXG5cdFx0ICAgIG4gPSBpbml0aWFsTixcblx0XHQgICAgYmlhcyA9IGluaXRpYWxCaWFzLFxuXHRcdCAgICBiYXNpYyxcblx0XHQgICAgaixcblx0XHQgICAgaW5kZXgsXG5cdFx0ICAgIG9sZGksXG5cdFx0ICAgIHcsXG5cdFx0ICAgIGssXG5cdFx0ICAgIGRpZ2l0LFxuXHRcdCAgICB0LFxuXHRcdCAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cblx0XHQgICAgYmFzZU1pbnVzVDtcblxuXHRcdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHM6IGxldCBgYmFzaWNgIGJlIHRoZSBudW1iZXIgb2YgaW5wdXQgY29kZVxuXHRcdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdFx0Ly8gdGhlIGZpcnN0IGJhc2ljIGNvZGUgcG9pbnRzIHRvIHRoZSBvdXRwdXQuXG5cblx0XHRiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdFx0aWYgKGJhc2ljIDwgMCkge1xuXHRcdFx0YmFzaWMgPSAwO1xuXHRcdH1cblxuXHRcdGZvciAoaiA9IDA7IGogPCBiYXNpYzsgKytqKSB7XG5cdFx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRcdGlmIChpbnB1dC5jaGFyQ29kZUF0KGopID49IDB4ODApIHtcblx0XHRcdFx0ZXJyb3IoJ25vdC1iYXNpYycpO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0LnB1c2goaW5wdXQuY2hhckNvZGVBdChqKSk7XG5cdFx0fVxuXG5cdFx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHRcdC8vIHBvaW50cyB3ZXJlIGNvcGllZDsgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvdGhlcndpc2UuXG5cblx0XHRmb3IgKGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0XHQvLyBgaW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgY29uc3VtZWQuXG5cdFx0XHQvLyBEZWNvZGUgYSBnZW5lcmFsaXplZCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlciBpbnRvIGBkZWx0YWAsXG5cdFx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdFx0Ly8gaWYgd2UgaW5jcmVhc2UgYGlgIGFzIHdlIGdvLCB0aGVuIHN1YnRyYWN0IG9mZiBpdHMgc3RhcnRpbmdcblx0XHRcdC8vIHZhbHVlIGF0IHRoZSBlbmQgdG8gb2J0YWluIGBkZWx0YWAuXG5cdFx0XHRmb3IgKG9sZGkgPSBpLCB3ID0gMSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cblx0XHRcdFx0aWYgKGluZGV4ID49IGlucHV0TGVuZ3RoKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRpZ2l0ID0gYmFzaWNUb0RpZ2l0KGlucHV0LmNoYXJDb2RlQXQoaW5kZXgrKykpO1xuXG5cdFx0XHRcdGlmIChkaWdpdCA+PSBiYXNlIHx8IGRpZ2l0ID4gZmxvb3IoKG1heEludCAtIGkpIC8gdykpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGkgKz0gZGlnaXQgKiB3O1xuXHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblxuXHRcdFx0XHRpZiAoZGlnaXQgPCB0KSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdGlmICh3ID4gZmxvb3IobWF4SW50IC8gYmFzZU1pbnVzVCkpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHcgKj0gYmFzZU1pbnVzVDtcblxuXHRcdFx0fVxuXG5cdFx0XHRvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRcdGJpYXMgPSBhZGFwdChpIC0gb2xkaSwgb3V0LCBvbGRpID09IDApO1xuXG5cdFx0XHQvLyBgaWAgd2FzIHN1cHBvc2VkIHRvIHdyYXAgYXJvdW5kIGZyb20gYG91dGAgdG8gYDBgLFxuXHRcdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRcdGlmIChmbG9vcihpIC8gb3V0KSA+IG1heEludCAtIG4pIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdG4gKz0gZmxvb3IoaSAvIG91dCk7XG5cdFx0XHRpICU9IG91dDtcblxuXHRcdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dFxuXHRcdFx0b3V0cHV0LnNwbGljZShpKyssIDAsIG4pO1xuXG5cdFx0fVxuXG5cdFx0cmV0dXJuIHVjczJlbmNvZGUob3V0cHV0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuXHQgKiBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBlbmNvZGUoaW5wdXQpIHtcblx0XHR2YXIgbixcblx0XHQgICAgZGVsdGEsXG5cdFx0ICAgIGhhbmRsZWRDUENvdW50LFxuXHRcdCAgICBiYXNpY0xlbmd0aCxcblx0XHQgICAgYmlhcyxcblx0XHQgICAgaixcblx0XHQgICAgbSxcblx0XHQgICAgcSxcblx0XHQgICAgayxcblx0XHQgICAgdCxcblx0XHQgICAgY3VycmVudFZhbHVlLFxuXHRcdCAgICBvdXRwdXQgPSBbXSxcblx0XHQgICAgLyoqIGBpbnB1dExlbmd0aGAgd2lsbCBob2xkIHRoZSBudW1iZXIgb2YgY29kZSBwb2ludHMgaW4gYGlucHV0YC4gKi9cblx0XHQgICAgaW5wdXRMZW5ndGgsXG5cdFx0ICAgIC8qKiBDYWNoZWQgY2FsY3VsYXRpb24gcmVzdWx0cyAqL1xuXHRcdCAgICBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsXG5cdFx0ICAgIGJhc2VNaW51c1QsXG5cdFx0ICAgIHFNaW51c1Q7XG5cblx0XHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBVbmljb2RlXG5cdFx0aW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuXHRcdC8vIENhY2hlIHRoZSBsZW5ndGhcblx0XHRpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aDtcblxuXHRcdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG5cdFx0biA9IGluaXRpYWxOO1xuXHRcdGRlbHRhID0gMDtcblx0XHRiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0XHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzXG5cdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGggPSBvdXRwdXQubGVuZ3RoO1xuXG5cdFx0Ly8gYGhhbmRsZWRDUENvdW50YCBpcyB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cdFx0Ly8gYGJhc2ljTGVuZ3RoYCBpcyB0aGUgbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuXG5cdFx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgLSBpZiBpdCBpcyBub3QgZW1wdHkgLSB3aXRoIGEgZGVsaW1pdGVyXG5cdFx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0XHRvdXRwdXQucHVzaChkZWxpbWl0ZXIpO1xuXHRcdH1cblxuXHRcdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0XHR3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuXG5cdFx0XHQvLyBBbGwgbm9uLWJhc2ljIGNvZGUgcG9pbnRzIDwgbiBoYXZlIGJlZW4gaGFuZGxlZCBhbHJlYWR5LiBGaW5kIHRoZSBuZXh0XG5cdFx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdFx0Zm9yIChtID0gbWF4SW50LCBqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPj0gbiAmJiBjdXJyZW50VmFsdWUgPCBtKSB7XG5cdFx0XHRcdFx0bSA9IGN1cnJlbnRWYWx1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sXG5cdFx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvd1xuXHRcdFx0aGFuZGxlZENQQ291bnRQbHVzT25lID0gaGFuZGxlZENQQ291bnQgKyAxO1xuXHRcdFx0aWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcblx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHR9XG5cblx0XHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0XHRuID0gbTtcblxuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGlucHV0TGVuZ3RoOyArK2opIHtcblx0XHRcdFx0Y3VycmVudFZhbHVlID0gaW5wdXRbal07XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA9PSBuKSB7XG5cdFx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXJcblx0XHRcdFx0XHRmb3IgKHEgPSBkZWx0YSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cdFx0XHRcdFx0XHR0ID0gayA8PSBiaWFzID8gdE1pbiA6IChrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzKTtcblx0XHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRcdGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcblx0XHRcdFx0XHRcdG91dHB1dC5wdXNoKFxuXHRcdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0cSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRvdXRwdXQucHVzaChzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEsIDApKSk7XG5cdFx0XHRcdFx0YmlhcyA9IGFkYXB0KGRlbHRhLCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUsIGhhbmRsZWRDUENvdW50ID09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0XHRkZWx0YSA9IDA7XG5cdFx0XHRcdFx0KytoYW5kbGVkQ1BDb3VudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQrK2RlbHRhO1xuXHRcdFx0KytuO1xuXG5cdFx0fVxuXHRcdHJldHVybiBvdXRwdXQuam9pbignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuXHQgKiB0byBVbmljb2RlLiBPbmx5IHRoZSBQdW55Y29kZWQgcGFydHMgb2YgdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkLCBpLmUuXG5cdCAqIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IG9uIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlblxuXHQgKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgUHVueWNvZGVkIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG9cblx0ICogY29udmVydCB0byBVbmljb2RlLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgVW5pY29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gUHVueWNvZGVcblx0ICogc3RyaW5nLlxuXHQgKi9cblx0ZnVuY3Rpb24gdG9Vbmljb2RlKGlucHV0KSB7XG5cdFx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcmVnZXhQdW55Y29kZS50ZXN0KHN0cmluZylcblx0XHRcdFx0PyBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuXHQgKiBQdW55Y29kZS4gT25seSB0aGUgbm9uLUFTQ0lJIHBhcnRzIG9mIHRoZSBkb21haW4gbmFtZSB3aWxsIGJlIGNvbnZlcnRlZCxcblx0ICogaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCB3aXRoIGEgZG9tYWluIHRoYXQncyBhbHJlYWR5IGluXG5cdCAqIEFTQ0lJLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvIGNvbnZlcnQsIGFzIGFcblx0ICogVW5pY29kZSBzdHJpbmcuXG5cdCAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBQdW55Y29kZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG9tYWluIG5hbWUgb3Jcblx0ICogZW1haWwgYWRkcmVzcy5cblx0ICovXG5cdGZ1bmN0aW9uIHRvQVNDSUkoaW5wdXQpIHtcblx0XHRyZXR1cm4gbWFwRG9tYWluKGlucHV0LCBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRcdHJldHVybiByZWdleE5vbkFTQ0lJLnRlc3Qoc3RyaW5nKVxuXHRcdFx0XHQ/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpXG5cdFx0XHRcdDogc3RyaW5nO1xuXHRcdH0pO1xuXHR9XG5cblx0LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cblx0LyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xuXHRwdW55Y29kZSA9IHtcblx0XHQvKipcblx0XHQgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG5cdFx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdFx0ICogQHR5cGUgU3RyaW5nXG5cdFx0ICovXG5cdFx0J3ZlcnNpb24nOiAnMS4zLjInLFxuXHRcdC8qKlxuXHRcdCAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG5cdFx0ICogcmVwcmVzZW50YXRpb24gKFVDUy0yKSB0byBVbmljb2RlIGNvZGUgcG9pbnRzLCBhbmQgYmFjay5cblx0XHQgKiBAc2VlIDxodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC1lbmNvZGluZz5cblx0XHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0XHQgKiBAdHlwZSBPYmplY3Rcblx0XHQgKi9cblx0XHQndWNzMic6IHtcblx0XHRcdCdkZWNvZGUnOiB1Y3MyZGVjb2RlLFxuXHRcdFx0J2VuY29kZSc6IHVjczJlbmNvZGVcblx0XHR9LFxuXHRcdCdkZWNvZGUnOiBkZWNvZGUsXG5cdFx0J2VuY29kZSc6IGVuY29kZSxcblx0XHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdFx0J3RvVW5pY29kZSc6IHRvVW5pY29kZVxuXHR9O1xuXG5cdC8qKiBFeHBvc2UgYHB1bnljb2RlYCAqL1xuXHQvLyBTb21lIEFNRCBidWlsZCBvcHRpbWl6ZXJzLCBsaWtlIHIuanMsIGNoZWNrIGZvciBzcGVjaWZpYyBjb25kaXRpb24gcGF0dGVybnNcblx0Ly8gbGlrZSB0aGUgZm9sbG93aW5nOlxuXHRpZiAoXG5cdFx0dHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmXG5cdFx0dHlwZW9mIGRlZmluZS5hbWQgPT0gJ29iamVjdCcgJiZcblx0XHRkZWZpbmUuYW1kXG5cdCkge1xuXHRcdGRlZmluZSgncHVueWNvZGUnLCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBwdW55Y29kZTtcblx0XHR9KTtcblx0fSBlbHNlIGlmIChmcmVlRXhwb3J0cyAmJiBmcmVlTW9kdWxlKSB7XG5cdFx0aWYgKG1vZHVsZS5leHBvcnRzID09IGZyZWVFeHBvcnRzKSB7IC8vIGluIE5vZGUuanMgb3IgUmluZ29KUyB2MC44LjArXG5cdFx0XHRmcmVlTW9kdWxlLmV4cG9ydHMgPSBwdW55Y29kZTtcblx0XHR9IGVsc2UgeyAvLyBpbiBOYXJ3aGFsIG9yIFJpbmdvSlMgdjAuNy4wLVxuXHRcdFx0Zm9yIChrZXkgaW4gcHVueWNvZGUpIHtcblx0XHRcdFx0cHVueWNvZGUuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAoZnJlZUV4cG9ydHNba2V5XSA9IHB1bnljb2RlW2tleV0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHsgLy8gaW4gUmhpbm8gb3IgYSB3ZWIgYnJvd3NlclxuXHRcdHJvb3QucHVueWNvZGUgPSBwdW55Y29kZTtcblx0fVxuXG59KHRoaXMpKTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwdW55Y29kZSA9IHJlcXVpcmUoJ3B1bnljb2RlJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5leHBvcnRzLnBhcnNlID0gdXJsUGFyc2U7XG5leHBvcnRzLnJlc29sdmUgPSB1cmxSZXNvbHZlO1xuZXhwb3J0cy5yZXNvbHZlT2JqZWN0ID0gdXJsUmVzb2x2ZU9iamVjdDtcbmV4cG9ydHMuZm9ybWF0ID0gdXJsRm9ybWF0O1xuXG5leHBvcnRzLlVybCA9IFVybDtcblxuZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gICAgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLFxuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbXBsZSBwYXRoIFVSTFxuICAgIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIHJlc2VydmVkIGZvciBkZWxpbWl0aW5nIFVSTHMuXG4gICAgLy8gV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGZvciB2YXJpb3VzIHJlYXNvbnMuXG4gICAgdW53aXNlID0gWyd7JywgJ30nLCAnfCcsICdcXFxcJywgJ14nLCAnYCddLmNvbmNhdChkZWxpbXMpLFxuXG4gICAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICAgIGF1dG9Fc2NhcGUgPSBbJ1xcJyddLmNvbmNhdCh1bndpc2UpLFxuICAgIC8vIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gICAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAgIC8vIGFyZSB0aGUgb25lcyB0aGF0IGFyZSAqZXhwZWN0ZWQqIHRvIGJlIHNlZW4sIHNvIHdlIGZhc3QtcGF0aFxuICAgIC8vIHRoZW0uXG4gICAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gICAgaG9zdEVuZGluZ0NoYXJzID0gWycvJywgJz8nLCAnIyddLFxuICAgIGhvc3RuYW1lTWF4TGVuID0gMjU1LFxuICAgIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gICAgaG9zdG5hbWVQYXJ0U3RhcnQgPSAvXihbK2EtejAtOUEtWl8tXXswLDYzfSkoLiopJC8sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4gICAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgICAnamF2YXNjcmlwdCc6IHRydWUsXG4gICAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gICAgfSxcbiAgICAvLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG4gICAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICAgIHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgICAgICdodHRwJzogdHJ1ZSxcbiAgICAgICdodHRwcyc6IHRydWUsXG4gICAgICAnZnRwJzogdHJ1ZSxcbiAgICAgICdnb3BoZXInOiB0cnVlLFxuICAgICAgJ2ZpbGUnOiB0cnVlLFxuICAgICAgJ2h0dHA6JzogdHJ1ZSxcbiAgICAgICdodHRwczonOiB0cnVlLFxuICAgICAgJ2Z0cDonOiB0cnVlLFxuICAgICAgJ2dvcGhlcjonOiB0cnVlLFxuICAgICAgJ2ZpbGU6JzogdHJ1ZVxuICAgIH0sXG4gICAgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xuXG5mdW5jdGlvbiB1cmxQYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICh1cmwgJiYgdXRpbC5pc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuXG5VcmwucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24odXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAoIXV0aWwuaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQYXJhbWV0ZXIgJ3VybCcgbXVzdCBiZSBhIHN0cmluZywgbm90IFwiICsgdHlwZW9mIHVybCk7XG4gIH1cblxuICAvLyBDb3B5IGNocm9tZSwgSUUsIG9wZXJhIGJhY2tzbGFzaC1oYW5kbGluZyBiZWhhdmlvci5cbiAgLy8gQmFjayBzbGFzaGVzIGJlZm9yZSB0aGUgcXVlcnkgc3RyaW5nIGdldCBjb252ZXJ0ZWQgdG8gZm9yd2FyZCBzbGFzaGVzXG4gIC8vIFNlZTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTI1OTE2XG4gIHZhciBxdWVyeUluZGV4ID0gdXJsLmluZGV4T2YoJz8nKSxcbiAgICAgIHNwbGl0dGVyID1cbiAgICAgICAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgICAgdVNwbGl0ID0gdXJsLnNwbGl0KHNwbGl0dGVyKSxcbiAgICAgIHNsYXNoUmVnZXggPSAvXFxcXC9nO1xuICB1U3BsaXRbMF0gPSB1U3BsaXRbMF0ucmVwbGFjZShzbGFzaFJlZ2V4LCAnLycpO1xuICB1cmwgPSB1U3BsaXQuam9pbihzcGxpdHRlcik7XG5cbiAgdmFyIHJlc3QgPSB1cmw7XG5cbiAgLy8gdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgLy8gVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICByZXN0ID0gcmVzdC50cmltKCk7XG5cbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoJyMnKS5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBUcnkgZmFzdCBwYXRoIHJlZ2V4cFxuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgdGhpcy5wYXRoID0gcmVzdDtcbiAgICAgIHRoaXMuaHJlZiA9IHJlc3Q7XG4gICAgICB0aGlzLnBhdGhuYW1lID0gc2ltcGxlUGF0aFsxXTtcbiAgICAgIGlmIChzaW1wbGVQYXRoWzJdKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gc2ltcGxlUGF0aFsyXTtcbiAgICAgICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnlzdHJpbmcucGFyc2UodGhpcy5zZWFyY2guc3Vic3RyKDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWFyY2guc3Vic3RyKDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICAgICAgdGhpcy5xdWVyeSA9IHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgdmFyIHByb3RvID0gcHJvdG9jb2xQYXR0ZXJuLmV4ZWMocmVzdCk7XG4gIGlmIChwcm90bykge1xuICAgIHByb3RvID0gcHJvdG9bMF07XG4gICAgdmFyIGxvd2VyUHJvdG8gPSBwcm90by50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucHJvdG9jb2wgPSBsb3dlclByb3RvO1xuICAgIHJlc3QgPSByZXN0LnN1YnN0cihwcm90by5sZW5ndGgpO1xuICB9XG5cbiAgLy8gZmlndXJlIG91dCBpZiBpdCdzIGdvdCBhIGhvc3RcbiAgLy8gdXNlckBzZXJ2ZXIgaXMgKmFsd2F5cyogaW50ZXJwcmV0ZWQgYXMgYSBob3N0bmFtZSwgYW5kIHVybFxuICAvLyByZXNvbHV0aW9uIHdpbGwgdHJlYXQgLy9mb28vYmFyIGFzIGhvc3Q9Zm9vLHBhdGg9YmFyIGJlY2F1c2UgdGhhdCdzXG4gIC8vIGhvdyB0aGUgYnJvd3NlciByZXNvbHZlcyByZWxhdGl2ZSBVUkxzLlxuICBpZiAoc2xhc2hlc0Rlbm90ZUhvc3QgfHwgcHJvdG8gfHwgcmVzdC5tYXRjaCgvXlxcL1xcL1teQFxcL10rQFteQFxcL10rLykpIHtcbiAgICB2YXIgc2xhc2hlcyA9IHJlc3Quc3Vic3RyKDAsIDIpID09PSAnLy8nO1xuICAgIGlmIChzbGFzaGVzICYmICEocHJvdG8gJiYgaG9zdGxlc3NQcm90b2NvbFtwcm90b10pKSB7XG4gICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMik7XG4gICAgICB0aGlzLnNsYXNoZXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaG9zdGxlc3NQcm90b2NvbFtwcm90b10gJiZcbiAgICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9zdEVuZGluZ0NoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGVjID0gcmVzdC5pbmRleE9mKGhvc3RFbmRpbmdDaGFyc1tpXSk7XG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpXG4gICAgICAgIGhvc3RFbmQgPSBoZWM7XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCwgZWl0aGVyIHdlIGhhdmUgYW4gZXhwbGljaXQgcG9pbnQgd2hlcmUgdGhlXG4gICAgLy8gYXV0aCBwb3J0aW9uIGNhbm5vdCBnbyBwYXN0LCBvciB0aGUgbGFzdCBAIGNoYXIgaXMgdGhlIGRlY2lkZXIuXG4gICAgdmFyIGF1dGgsIGF0U2lnbjtcbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIGF0U2lnbiBjYW4gYmUgYW55d2hlcmUuXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGF0U2lnbiBtdXN0IGJlIGluIGF1dGggcG9ydGlvbi5cbiAgICAgIC8vIGh0dHA6Ly9hQGIvY0BkID0+IGhvc3Q6YiBhdXRoOmEgcGF0aDovY0BkXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJywgaG9zdEVuZCk7XG4gICAgfVxuXG4gICAgLy8gTm93IHdlIGhhdmUgYSBwb3J0aW9uIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIGF1dGguXG4gICAgLy8gUHVsbCB0aGF0IG9mZi5cbiAgICBpZiAoYXRTaWduICE9PSAtMSkge1xuICAgICAgYXV0aCA9IHJlc3Quc2xpY2UoMCwgYXRTaWduKTtcbiAgICAgIHJlc3QgPSByZXN0LnNsaWNlKGF0U2lnbiArIDEpO1xuICAgICAgdGhpcy5hdXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KGF1dGgpO1xuICAgIH1cblxuICAgIC8vIHRoZSBob3N0IGlzIHRoZSByZW1haW5pbmcgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IG5vbi1ob3N0IGNoYXJcbiAgICBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG4gICAgLy8gaWYgd2Ugc3RpbGwgaGF2ZSBub3QgaGl0IGl0LCB0aGVuIHRoZSBlbnRpcmUgdGhpbmcgaXMgYSBob3N0LlxuICAgIGlmIChob3N0RW5kID09PSAtMSlcbiAgICAgIGhvc3RFbmQgPSByZXN0Lmxlbmd0aDtcblxuICAgIHRoaXMuaG9zdCA9IHJlc3Quc2xpY2UoMCwgaG9zdEVuZCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoaG9zdEVuZCk7XG5cbiAgICAvLyBwdWxsIG91dCBwb3J0LlxuICAgIHRoaXMucGFyc2VIb3N0KCk7XG5cbiAgICAvLyB3ZSd2ZSBpbmRpY2F0ZWQgdGhhdCB0aGVyZSBpcyBhIGhvc3RuYW1lLFxuICAgIC8vIHNvIGV2ZW4gaWYgaXQncyBlbXB0eSwgaXQgaGFzIHRvIGJlIHByZXNlbnQuXG4gICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG5cbiAgICAvLyBpZiBob3N0bmFtZSBiZWdpbnMgd2l0aCBbIGFuZCBlbmRzIHdpdGggXVxuICAgIC8vIGFzc3VtZSB0aGF0IGl0J3MgYW4gSVB2NiBhZGRyZXNzLlxuICAgIHZhciBpcHY2SG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lWzBdID09PSAnWycgJiZcbiAgICAgICAgdGhpcy5ob3N0bmFtZVt0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDFdID09PSAnXSc7XG5cbiAgICAvLyB2YWxpZGF0ZSBhIGxpdHRsZS5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgdmFyIGhvc3RwYXJ0cyA9IHRoaXMuaG9zdG5hbWUuc3BsaXQoL1xcLi8pO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBob3N0cGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gaG9zdHBhcnRzW2ldO1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIXBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICB2YXIgbmV3cGFydCA9ICcnO1xuICAgICAgICAgIGZvciAodmFyIGogPSAwLCBrID0gcGFydC5sZW5ndGg7IGogPCBrOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChwYXJ0LmNoYXJDb2RlQXQoaikgPiAxMjcpIHtcbiAgICAgICAgICAgICAgLy8gd2UgcmVwbGFjZSBub24tQVNDSUkgY2hhciB3aXRoIGEgdGVtcG9yYXJ5IHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byBtYWtlIHN1cmUgc2l6ZSBvZiBob3N0bmFtZSBpcyBub3RcbiAgICAgICAgICAgICAgLy8gYnJva2VuIGJ5IHJlcGxhY2luZyBub24tQVNDSUkgYnkgbm90aGluZ1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9ICd4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gcGFydFtqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gd2UgdGVzdCBhZ2FpbiB3aXRoIEFTQ0lJIGNoYXIgb25seVxuICAgICAgICAgIGlmICghbmV3cGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgICAgdmFyIHZhbGlkUGFydHMgPSBob3N0cGFydHMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB2YXIgbm90SG9zdCA9IGhvc3RwYXJ0cy5zbGljZShpICsgMSk7XG4gICAgICAgICAgICB2YXIgYml0ID0gcGFydC5tYXRjaChob3N0bmFtZVBhcnRTdGFydCk7XG4gICAgICAgICAgICBpZiAoYml0KSB7XG4gICAgICAgICAgICAgIHZhbGlkUGFydHMucHVzaChiaXRbMV0pO1xuICAgICAgICAgICAgICBub3RIb3N0LnVuc2hpZnQoYml0WzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub3RIb3N0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXN0ID0gJy8nICsgbm90SG9zdC5qb2luKCcuJykgKyByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ob3N0bmFtZSA9IHZhbGlkUGFydHMuam9pbignLicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdG5hbWUubGVuZ3RoID4gaG9zdG5hbWVNYXhMZW4pIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaG9zdG5hbWVzIGFyZSBhbHdheXMgbG93ZXIgY2FzZS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpcHY2SG9zdG5hbWUpIHtcbiAgICAgIC8vIElETkEgU3VwcG9ydDogUmV0dXJucyBhIHB1bnljb2RlZCByZXByZXNlbnRhdGlvbiBvZiBcImRvbWFpblwiLlxuICAgICAgLy8gSXQgb25seSBjb252ZXJ0cyBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgdGhhdFxuICAgICAgLy8gaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycywgaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZlxuICAgICAgLy8geW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0IGFscmVhZHkgaXMgQVNDSUktb25seS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSBwdW55Y29kZS50b0FTQ0lJKHRoaXMuaG9zdG5hbWUpO1xuICAgIH1cblxuICAgIHZhciBwID0gdGhpcy5wb3J0ID8gJzonICsgdGhpcy5wb3J0IDogJyc7XG4gICAgdmFyIGggPSB0aGlzLmhvc3RuYW1lIHx8ICcnO1xuICAgIHRoaXMuaG9zdCA9IGggKyBwO1xuICAgIHRoaXMuaHJlZiArPSB0aGlzLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS5zdWJzdHIoMSwgdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdXRvRXNjYXBlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGFlID0gYXV0b0VzY2FwZVtpXTtcbiAgICAgIGlmIChyZXN0LmluZGV4T2YoYWUpID09PSAtMSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB2YXIgZXNjID0gZW5jb2RlVVJJQ29tcG9uZW50KGFlKTtcbiAgICAgIGlmIChlc2MgPT09IGFlKSB7XG4gICAgICAgIGVzYyA9IGVzY2FwZShhZSk7XG4gICAgICB9XG4gICAgICByZXN0ID0gcmVzdC5zcGxpdChhZSkuam9pbihlc2MpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2ggIT09IC0xKSB7XG4gICAgLy8gZ290IGEgZnJhZ21lbnQgc3RyaW5nLlxuICAgIHRoaXMuaGFzaCA9IHJlc3Quc3Vic3RyKGhhc2gpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpO1xuICB9XG4gIHZhciBxbSA9IHJlc3QuaW5kZXhPZignPycpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgdGhpcy5xdWVyeSA9IHJlc3Quc3Vic3RyKHFtICsgMSk7XG4gICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgcW0pO1xuICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAvLyBubyBxdWVyeSBzdHJpbmcsIGJ1dCBwYXJzZVF1ZXJ5U3RyaW5nIHN0aWxsIHJlcXVlc3RlZFxuICAgIHRoaXMuc2VhcmNoID0gJyc7XG4gICAgdGhpcy5xdWVyeSA9IHt9O1xuICB9XG4gIGlmIChyZXN0KSB0aGlzLnBhdGhuYW1lID0gcmVzdDtcbiAgaWYgKHNsYXNoZWRQcm90b2NvbFtsb3dlclByb3RvXSAmJlxuICAgICAgdGhpcy5ob3N0bmFtZSAmJiAhdGhpcy5wYXRobmFtZSkge1xuICAgIHRoaXMucGF0aG5hbWUgPSAnLyc7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gIGlmICh0aGlzLnBhdGhuYW1lIHx8IHRoaXMuc2VhcmNoKSB7XG4gICAgdmFyIHAgPSB0aGlzLnBhdGhuYW1lIHx8ICcnO1xuICAgIHZhciBzID0gdGhpcy5zZWFyY2ggfHwgJyc7XG4gICAgdGhpcy5wYXRoID0gcCArIHM7XG4gIH1cblxuICAvLyBmaW5hbGx5LCByZWNvbnN0cnVjdCB0aGUgaHJlZiBiYXNlZCBvbiB3aGF0IGhhcyBiZWVuIHZhbGlkYXRlZC5cbiAgdGhpcy5ocmVmID0gdGhpcy5mb3JtYXQoKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBmb3JtYXQgYSBwYXJzZWQgb2JqZWN0IGludG8gYSB1cmwgc3RyaW5nXG5mdW5jdGlvbiB1cmxGb3JtYXQob2JqKSB7XG4gIC8vIGVuc3VyZSBpdCdzIGFuIG9iamVjdCwgYW5kIG5vdCBhIHN0cmluZyB1cmwuXG4gIC8vIElmIGl0J3MgYW4gb2JqLCB0aGlzIGlzIGEgbm8tb3AuXG4gIC8vIHRoaXMgd2F5LCB5b3UgY2FuIGNhbGwgdXJsX2Zvcm1hdCgpIG9uIHN0cmluZ3NcbiAgLy8gdG8gY2xlYW4gdXAgcG90ZW50aWFsbHkgd29ua3kgdXJscy5cbiAgaWYgKHV0aWwuaXNTdHJpbmcob2JqKSkgb2JqID0gdXJsUGFyc2Uob2JqKTtcbiAgaWYgKCEob2JqIGluc3RhbmNlb2YgVXJsKSkgcmV0dXJuIFVybC5wcm90b3R5cGUuZm9ybWF0LmNhbGwob2JqKTtcbiAgcmV0dXJuIG9iai5mb3JtYXQoKTtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGF1dGggPSB0aGlzLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2wgfHwgJycsXG4gICAgICBwYXRobmFtZSA9IHRoaXMucGF0aG5hbWUgfHwgJycsXG4gICAgICBoYXNoID0gdGhpcy5oYXNoIHx8ICcnLFxuICAgICAgaG9zdCA9IGZhbHNlLFxuICAgICAgcXVlcnkgPSAnJztcblxuICBpZiAodGhpcy5ob3N0KSB7XG4gICAgaG9zdCA9IGF1dGggKyB0aGlzLmhvc3Q7XG4gIH0gZWxzZSBpZiAodGhpcy5ob3N0bmFtZSkge1xuICAgIGhvc3QgPSBhdXRoICsgKHRoaXMuaG9zdG5hbWUuaW5kZXhPZignOicpID09PSAtMSA/XG4gICAgICAgIHRoaXMuaG9zdG5hbWUgOlxuICAgICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAodGhpcy5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHRoaXMucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5xdWVyeSAmJlxuICAgICAgdXRpbC5pc09iamVjdCh0aGlzLnF1ZXJ5KSAmJlxuICAgICAgT2JqZWN0LmtleXModGhpcy5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxdWVyeXN0cmluZy5zdHJpbmdpZnkodGhpcy5xdWVyeSk7XG4gIH1cblxuICB2YXIgc2VhcmNoID0gdGhpcy5zZWFyY2ggfHwgKHF1ZXJ5ICYmICgnPycgKyBxdWVyeSkpIHx8ICcnO1xuXG4gIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbC5zdWJzdHIoLTEpICE9PSAnOicpIHByb3RvY29sICs9ICc6JztcblxuICAvLyBvbmx5IHRoZSBzbGFzaGVkUHJvdG9jb2xzIGdldCB0aGUgLy8uICBOb3QgbWFpbHRvOiwgeG1wcDosIGV0Yy5cbiAgLy8gdW5sZXNzIHRoZXkgaGFkIHRoZW0gdG8gYmVnaW4gd2l0aC5cbiAgaWYgKHRoaXMuc2xhc2hlcyB8fFxuICAgICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmUoc291cmNlLCByZWxhdGl2ZSkge1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZShyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIHJldHVybiB0aGlzLnJlc29sdmVPYmplY3QodXJsUGFyc2UocmVsYXRpdmUsIGZhbHNlLCB0cnVlKSkuZm9ybWF0KCk7XG59O1xuXG5mdW5jdGlvbiB1cmxSZXNvbHZlT2JqZWN0KHNvdXJjZSwgcmVsYXRpdmUpIHtcbiAgaWYgKCFzb3VyY2UpIHJldHVybiByZWxhdGl2ZTtcbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmVPYmplY3QocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmVPYmplY3QgPSBmdW5jdGlvbihyZWxhdGl2ZSkge1xuICBpZiAodXRpbC5pc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgICAgcmVzdWx0Lmhvc3RuYW1lICYmICFyZXN1bHQucGF0aG5hbWUpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gcmVzdWx0LnBhdGhuYW1lID0gJy8nO1xuICAgIH1cblxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgdmFyIHJlbFBhdGggPSAocmVsYXRpdmUucGF0aG5hbWUgfHwgJycpLnNwbGl0KCcvJyk7XG4gICAgICB3aGlsZSAocmVsUGF0aC5sZW5ndGggJiYgIShyZWxhdGl2ZS5ob3N0ID0gcmVsUGF0aC5zaGlmdCgpKSk7XG4gICAgICBpZiAoIXJlbGF0aXZlLmhvc3QpIHJlbGF0aXZlLmhvc3QgPSAnJztcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdG5hbWUpIHJlbGF0aXZlLmhvc3RuYW1lID0gJyc7XG4gICAgICBpZiAocmVsUGF0aFswXSAhPT0gJycpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICBpZiAocmVsUGF0aC5sZW5ndGggPCAyKSByZWxQYXRoLnVuc2hpZnQoJycpO1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsUGF0aC5qb2luKCcvJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9IHJlbGF0aXZlLnBhdGhuYW1lO1xuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHJlc3VsdC5ob3N0ID0gcmVsYXRpdmUuaG9zdCB8fCAnJztcbiAgICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGg7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdDtcbiAgICByZXN1bHQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgLy8gdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnBhdGhuYW1lIHx8IHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHZhciBwID0gcmVzdWx0LnBhdGhuYW1lIHx8ICcnO1xuICAgICAgdmFyIHMgPSByZXN1bHQuc2VhcmNoIHx8ICcnO1xuICAgICAgcmVzdWx0LnBhdGggPSBwICsgcztcbiAgICB9XG4gICAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgaXNTb3VyY2VBYnMgPSAocmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyksXG4gICAgICBpc1JlbEFicyA9IChcbiAgICAgICAgICByZWxhdGl2ZS5ob3N0IHx8XG4gICAgICAgICAgcmVsYXRpdmUucGF0aG5hbWUgJiYgcmVsYXRpdmUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLydcbiAgICAgICksXG4gICAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQuaG9zdCAmJiByZWxhdGl2ZS5wYXRobmFtZSkpLFxuICAgICAgcmVtb3ZlQWxsRG90cyA9IG11c3RFbmRBYnMsXG4gICAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgICAgcmVsUGF0aCA9IHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgICBwc3ljaG90aWMgPSByZXN1bHQucHJvdG9jb2wgJiYgIXNsYXNoZWRQcm90b2NvbFtyZXN1bHQucHJvdG9jb2xdO1xuXG4gIC8vIGlmIHRoZSB1cmwgaXMgYSBub24tc2xhc2hlZCB1cmwsIHRoZW4gcmVsYXRpdmVcbiAgLy8gbGlua3MgbGlrZSAuLi8uLiBzaG91bGQgYmUgYWJsZVxuICAvLyB0byBjcmF3bCB1cCB0byB0aGUgaG9zdG5hbWUsIGFzIHdlbGwuICBUaGlzIGlzIHN0cmFuZ2UuXG4gIC8vIHJlc3VsdC5wcm90b2NvbCBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSBub3cuXG4gIC8vIExhdGVyIG9uLCBwdXQgdGhlIGZpcnN0IHBhdGggcGFydCBpbnRvIHRoZSBob3N0IGZpZWxkLlxuICBpZiAocHN5Y2hvdGljKSB7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gJyc7XG4gICAgcmVzdWx0LnBvcnQgPSBudWxsO1xuICAgIGlmIChyZXN1bHQuaG9zdCkge1xuICAgICAgaWYgKHNyY1BhdGhbMF0gPT09ICcnKSBzcmNQYXRoWzBdID0gcmVzdWx0Lmhvc3Q7XG4gICAgICBlbHNlIHNyY1BhdGgudW5zaGlmdChyZXN1bHQuaG9zdCk7XG4gICAgfVxuICAgIHJlc3VsdC5ob3N0ID0gJyc7XG4gICAgaWYgKHJlbGF0aXZlLnByb3RvY29sKSB7XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA9IG51bGw7XG4gICAgICByZWxhdGl2ZS5wb3J0ID0gbnVsbDtcbiAgICAgIGlmIChyZWxhdGl2ZS5ob3N0KSB7XG4gICAgICAgIGlmIChyZWxQYXRoWzBdID09PSAnJykgcmVsUGF0aFswXSA9IHJlbGF0aXZlLmhvc3Q7XG4gICAgICAgIGVsc2UgcmVsUGF0aC51bnNoaWZ0KHJlbGF0aXZlLmhvc3QpO1xuICAgICAgfVxuICAgICAgcmVsYXRpdmUuaG9zdCA9IG51bGw7XG4gICAgfVxuICAgIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzICYmIChyZWxQYXRoWzBdID09PSAnJyB8fCBzcmNQYXRoWzBdID09PSAnJyk7XG4gIH1cblxuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgICAgICAgICAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgOiByZXN1bHQuaG9zdG5hbWU7XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICBzcmNQYXRoID0gcmVsUGF0aDtcbiAgICAvLyBmYWxsIHRocm91Z2ggdG8gdGhlIGRvdC1oYW5kbGluZyBiZWxvdy5cbiAgfSBlbHNlIGlmIChyZWxQYXRoLmxlbmd0aCkge1xuICAgIC8vIGl0J3MgcmVsYXRpdmVcbiAgICAvLyB0aHJvdyBhd2F5IHRoZSBleGlzdGluZyBmaWxlLCBhbmQgdGFrZSB0aGUgbmV3IHBhdGggaW5zdGVhZC5cbiAgICBpZiAoIXNyY1BhdGgpIHNyY1BhdGggPSBbXTtcbiAgICBzcmNQYXRoLnBvcCgpO1xuICAgIHNyY1BhdGggPSBzcmNQYXRoLmNvbmNhdChyZWxQYXRoKTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICB9IGVsc2UgaWYgKCF1dGlsLmlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKCF1dGlsLmlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICF1dGlsLmlzTnVsbChyZXN1bHQuc2VhcmNoKSkge1xuICAgICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIC8vIG5vIHBhdGggYXQgYWxsLiAgZWFzeS5cbiAgICAvLyB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIG90aGVyIHN0dWZmIGFib3ZlLlxuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgLy90byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQuc2VhcmNoKSB7XG4gICAgICByZXN1bHQucGF0aCA9ICcvJyArIHJlc3VsdC5zZWFyY2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGlmIGEgdXJsIEVORHMgaW4gLiBvciAuLiwgdGhlbiBpdCBtdXN0IGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICAvLyBob3dldmVyLCBpZiBpdCBlbmRzIGluIGFueXRoaW5nIGVsc2Ugbm9uLXNsYXNoeSxcbiAgLy8gdGhlbiBpdCBtdXN0IE5PVCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgdmFyIGxhc3QgPSBzcmNQYXRoLnNsaWNlKC0xKVswXTtcbiAgdmFyIGhhc1RyYWlsaW5nU2xhc2ggPSAoXG4gICAgICAocmVzdWx0Lmhvc3QgfHwgcmVsYXRpdmUuaG9zdCB8fCBzcmNQYXRoLmxlbmd0aCA+IDEpICYmXG4gICAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICAgKCFzcmNQYXRoWzBdIHx8IHNyY1BhdGhbMF0uY2hhckF0KDApICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmIChoYXNUcmFpbGluZ1NsYXNoICYmIChzcmNQYXRoLmpvaW4oJy8nKS5zdWJzdHIoLTEpICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC5wdXNoKCcnKTtcbiAgfVxuXG4gIHZhciBpc0Fic29sdXRlID0gc3JjUGF0aFswXSA9PT0gJycgfHxcbiAgICAgIChzcmNQYXRoWzBdICYmIHNyY1BhdGhbMF0uY2hhckF0KDApID09PSAnLycpO1xuXG4gIC8vIHB1dCB0aGUgaG9zdCBiYWNrXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IGlzQWJzb2x1dGUgPyAnJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQYXRoLmxlbmd0aCA/IHNyY1BhdGguc2hpZnQoKSA6ICcnO1xuICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAvL3RoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAvL3VybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICByZXN1bHQuaG9zdC5zcGxpdCgnQCcpIDogZmFsc2U7XG4gICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgcmVzdWx0Lmhvc3QgPSByZXN1bHQuaG9zdG5hbWUgPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgfVxuICB9XG5cbiAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgfHwgKHJlc3VsdC5ob3N0ICYmIHNyY1BhdGgubGVuZ3RoKTtcblxuICBpZiAobXVzdEVuZEFicyAmJiAhaXNBYnNvbHV0ZSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gc3JjUGF0aC5qb2luKCcvJyk7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgcmVxdWVzdC5odHRwXG4gIGlmICghdXRpbC5pc051bGwocmVzdWx0LnBhdGhuYW1lKSB8fCAhdXRpbC5pc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBob3N0ID0gdGhpcy5ob3N0O1xuICB2YXIgcG9ydCA9IHBvcnRQYXR0ZXJuLmV4ZWMoaG9zdCk7XG4gIGlmIChwb3J0KSB7XG4gICAgcG9ydCA9IHBvcnRbMF07XG4gICAgaWYgKHBvcnQgIT09ICc6Jykge1xuICAgICAgdGhpcy5wb3J0ID0gcG9ydC5zdWJzdHIoMSk7XG4gICAgfVxuICAgIGhvc3QgPSBob3N0LnN1YnN0cigwLCBob3N0Lmxlbmd0aCAtIHBvcnQubGVuZ3RoKTtcbiAgfVxuICBpZiAoaG9zdCkgdGhpcy5ob3N0bmFtZSA9IGhvc3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNTdHJpbmc6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ3N0cmluZyc7XG4gIH0sXG4gIGlzT2JqZWN0OiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gdHlwZW9mKGFyZykgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbiAgfSxcbiAgaXNOdWxsOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09PSBudWxsO1xuICB9LFxuICBpc051bGxPclVuZGVmaW5lZDogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyA9PSBudWxsO1xuICB9XG59O1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0bG9hZGVkOiBmYWxzZSxcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG5cdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbiIsIl9fd2VicGFja19yZXF1aXJlX18uYW1kTyA9IHt9OyIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5ubWQgPSAobW9kdWxlKSA9PiB7XG5cdG1vZHVsZS5wYXRocyA9IFtdO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdHJldHVybiBtb2R1bGU7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IGRvY3VtZW50LmJhc2VVUkkgfHwgc2VsZi5sb2NhdGlvbi5ocmVmO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLy8gdW5kZWZpbmVkID0gY2h1bmsgbm90IGxvYWRlZCwgbnVsbCA9IGNodW5rIHByZWxvYWRlZC9wcmVmZXRjaGVkXG4vLyBbcmVzb2x2ZSwgcmVqZWN0LCBQcm9taXNlXSA9IGNodW5rIGxvYWRpbmcsIDAgPSBjaHVuayBsb2FkZWRcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDE3OTogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcbiAgcmV0dXJuIGFycjI7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICBpZiAoIW8pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbn0iLCJpbXBvcnQgYXJyYXlXaXRoSG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRoSG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXlMaW1pdCBmcm9tIFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiO1xuaW1wb3J0IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGZyb20gXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgbm9uSXRlcmFibGVSZXN0IGZyb20gXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhhcnIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkge1xuICB2YXIgX2kgPSBudWxsID09IGFyciA/IG51bGwgOiBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gX2kpIHtcbiAgICB2YXIgX3MsXG4gICAgICBfZSxcbiAgICAgIF94LFxuICAgICAgX3IsXG4gICAgICBfYXJyID0gW10sXG4gICAgICBfbiA9ICEwLFxuICAgICAgX2QgPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKF94ID0gKF9pID0gX2kuY2FsbChhcnIpKS5uZXh0LCAwID09PSBpKSB7XG4gICAgICAgIGlmIChPYmplY3QoX2kpICE9PSBfaSkgcmV0dXJuO1xuICAgICAgICBfbiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKF9uID0gKF9zID0gX3guY2FsbChfaSkpLmRvbmUpICYmIChfYXJyLnB1c2goX3MudmFsdWUpLCBfYXJyLmxlbmd0aCAhPT0gaSk7IF9uID0gITApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgX2QgPSAhMCwgX2UgPSBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghX24gJiYgbnVsbCAhPSBfaVtcInJldHVyblwiXSAmJiAoX3IgPSBfaVtcInJldHVyblwiXSgpLCBPYmplY3QoX3IpICE9PSBfcikpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfYXJyO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gIH0gOiBmdW5jdGlvbiAob2JqKSB7XG4gICAgcmV0dXJuIG9iaiAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajtcbiAgfSwgX3R5cGVvZihvYmopO1xufSIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfdG9Qcm9wZXJ0eUtleShhcmcpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZywgXCJzdHJpbmdcIik7XG4gIHJldHVybiBfdHlwZW9mKGtleSkgPT09IFwic3ltYm9sXCIgPyBrZXkgOiBTdHJpbmcoa2V5KTtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF90b1ByaW1pdGl2ZShpbnB1dCwgaGludCkge1xuICBpZiAoX3R5cGVvZihpbnB1dCkgIT09IFwib2JqZWN0XCIgfHwgaW5wdXQgPT09IG51bGwpIHJldHVybiBpbnB1dDtcbiAgdmFyIHByaW0gPSBpbnB1dFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAocHJpbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIHJlcyA9IHByaW0uY2FsbChpbnB1dCwgaGludCB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKF90eXBlb2YocmVzKSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIHJlcztcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChoaW50ID09PSBcInN0cmluZ1wiID8gU3RyaW5nIDogTnVtYmVyKShpbnB1dCk7XG59IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBrZXkgPSB0b1Byb3BlcnR5S2V5KGtleSk7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiBvYmo7XG59IiwiaW1wb3J0IGRlZmluZVByb3BlcnR5IGZyb20gXCIuL2RlZmluZVByb3BlcnR5LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IE9iamVjdChhcmd1bWVudHNbaV0pIDoge307XG4gICAgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICAgIGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3duS2V5cy5wdXNoLmFwcGx5KG93bktleXMsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgb3duS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufSIsImltcG9ydCB0b1Byb3BlcnR5S2V5IGZyb20gXCIuL3RvUHJvcGVydHlLZXkuanNcIjtcbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHRvUHJvcGVydHlLZXkoZGVzY3JpcHRvci5rZXkpLCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuICByZXR1cm4gc2VsZjtcbn0iLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmltcG9ydCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgZnJvbSBcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7XG4gIGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH0gZWxzZSBpZiAoY2FsbCAhPT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICB9XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgfVxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59IiwiaW1wb3J0IF90eXBlb2YgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mJztcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZCc7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MnO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZic7XG5pbXBvcnQgX2Fzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQnO1xuaW1wb3J0IF9pbmhlcml0cyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0cyc7XG5cbnZhciBjb25zb2xlTG9nZ2VyID0ge1xuICB0eXBlOiAnbG9nZ2VyJyxcbiAgbG9nOiBmdW5jdGlvbiBsb2coYXJncykge1xuICAgIHRoaXMub3V0cHV0KCdsb2cnLCBhcmdzKTtcbiAgfSxcbiAgd2FybjogZnVuY3Rpb24gd2FybihhcmdzKSB7XG4gICAgdGhpcy5vdXRwdXQoJ3dhcm4nLCBhcmdzKTtcbiAgfSxcbiAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKGFyZ3MpIHtcbiAgICB0aGlzLm91dHB1dCgnZXJyb3InLCBhcmdzKTtcbiAgfSxcbiAgb3V0cHV0OiBmdW5jdGlvbiBvdXRwdXQodHlwZSwgYXJncykge1xuICAgIGlmIChjb25zb2xlICYmIGNvbnNvbGVbdHlwZV0pIGNvbnNvbGVbdHlwZV0uYXBwbHkoY29uc29sZSwgYXJncyk7XG4gIH1cbn07XG5cbnZhciBMb2dnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExvZ2dlcihjb25jcmV0ZUxvZ2dlcikge1xuICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2dnZXIpO1xuXG4gICAgdGhpcy5pbml0KGNvbmNyZXRlTG9nZ2VyLCBvcHRpb25zKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMb2dnZXIsIFt7XG4gICAga2V5OiBcImluaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdChjb25jcmV0ZUxvZ2dlcikge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgICAgdGhpcy5wcmVmaXggPSBvcHRpb25zLnByZWZpeCB8fCAnaTE4bmV4dDonO1xuICAgICAgdGhpcy5sb2dnZXIgPSBjb25jcmV0ZUxvZ2dlciB8fCBjb25zb2xlTG9nZ2VyO1xuICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgIHRoaXMuZGVidWcgPSBvcHRpb25zLmRlYnVnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXREZWJ1Z1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXREZWJ1Zyhib29sKSB7XG4gICAgICB0aGlzLmRlYnVnID0gYm9vbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibG9nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvZygpIHtcbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5mb3J3YXJkKGFyZ3MsICdsb2cnLCAnJywgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIndhcm5cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gd2FybigpIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmZvcndhcmQoYXJncywgJ3dhcm4nLCAnJywgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVycm9yXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVycm9yKCkge1xuICAgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4zKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgICAgIGFyZ3NbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZm9yd2FyZChhcmdzLCAnZXJyb3InLCAnJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImRlcHJlY2F0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBkZXByZWNhdGUoKSB7XG4gICAgICBmb3IgKHZhciBfbGVuNCA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjQpLCBfa2V5NCA9IDA7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcbiAgICAgICAgYXJnc1tfa2V5NF0gPSBhcmd1bWVudHNbX2tleTRdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5mb3J3YXJkKGFyZ3MsICd3YXJuJywgJ1dBUk5JTkcgREVQUkVDQVRFRDogJywgdHJ1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZvcndhcmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9yd2FyZChhcmdzLCBsdmwsIHByZWZpeCwgZGVidWdPbmx5KSB7XG4gICAgICBpZiAoZGVidWdPbmx5ICYmICF0aGlzLmRlYnVnKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIGFyZ3NbMF0gPSBcIlwiLmNvbmNhdChwcmVmaXgpLmNvbmNhdCh0aGlzLnByZWZpeCwgXCIgXCIpLmNvbmNhdChhcmdzWzBdKTtcbiAgICAgIHJldHVybiB0aGlzLmxvZ2dlcltsdmxdKGFyZ3MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjcmVhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlKG1vZHVsZU5hbWUpIHtcbiAgICAgIHJldHVybiBuZXcgTG9nZ2VyKHRoaXMubG9nZ2VyLCBfb2JqZWN0U3ByZWFkKHt9LCB7XG4gICAgICAgIHByZWZpeDogXCJcIi5jb25jYXQodGhpcy5wcmVmaXgsIFwiOlwiKS5jb25jYXQobW9kdWxlTmFtZSwgXCI6XCIpXG4gICAgICB9LCB0aGlzLm9wdGlvbnMpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTG9nZ2VyO1xufSgpO1xuXG52YXIgYmFzZUxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcblxudmFyIEV2ZW50RW1pdHRlciA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBFdmVudEVtaXR0ZXIpO1xuXG4gICAgdGhpcy5vYnNlcnZlcnMgPSB7fTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhFdmVudEVtaXR0ZXIsIFt7XG4gICAga2V5OiBcIm9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uKGV2ZW50cywgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIGV2ZW50cy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIF90aGlzLm9ic2VydmVyc1tldmVudF0gPSBfdGhpcy5vYnNlcnZlcnNbZXZlbnRdIHx8IFtdO1xuXG4gICAgICAgIF90aGlzLm9ic2VydmVyc1tldmVudF0ucHVzaChsaXN0ZW5lcik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvZmZcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gb2ZmKGV2ZW50LCBsaXN0ZW5lcikge1xuICAgICAgaWYgKCF0aGlzLm9ic2VydmVyc1tldmVudF0pIHJldHVybjtcblxuICAgICAgaWYgKCFsaXN0ZW5lcikge1xuICAgICAgICBkZWxldGUgdGhpcy5vYnNlcnZlcnNbZXZlbnRdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMub2JzZXJ2ZXJzW2V2ZW50XSA9IHRoaXMub2JzZXJ2ZXJzW2V2ZW50XS5maWx0ZXIoZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgcmV0dXJuIGwgIT09IGxpc3RlbmVyO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImVtaXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW1pdChldmVudCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub2JzZXJ2ZXJzW2V2ZW50XSkge1xuICAgICAgICB2YXIgY2xvbmVkID0gW10uY29uY2F0KHRoaXMub2JzZXJ2ZXJzW2V2ZW50XSk7XG4gICAgICAgIGNsb25lZC5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICAgIG9ic2VydmVyLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vYnNlcnZlcnNbJyonXSkge1xuICAgICAgICB2YXIgX2Nsb25lZCA9IFtdLmNvbmNhdCh0aGlzLm9ic2VydmVyc1snKiddKTtcblxuICAgICAgICBfY2xvbmVkLmZvckVhY2goZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuYXBwbHkob2JzZXJ2ZXIsIFtldmVudF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEV2ZW50RW1pdHRlcjtcbn0oKTtcblxuZnVuY3Rpb24gZGVmZXIoKSB7XG4gIHZhciByZXM7XG4gIHZhciByZWo7XG4gIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlcyA9IHJlc29sdmU7XG4gICAgcmVqID0gcmVqZWN0O1xuICB9KTtcbiAgcHJvbWlzZS5yZXNvbHZlID0gcmVzO1xuICBwcm9taXNlLnJlamVjdCA9IHJlajtcbiAgcmV0dXJuIHByb21pc2U7XG59XG5mdW5jdGlvbiBtYWtlU3RyaW5nKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHJldHVybiAnJztcbiAgcmV0dXJuICcnICsgb2JqZWN0O1xufVxuZnVuY3Rpb24gY29weShhLCBzLCB0KSB7XG4gIGEuZm9yRWFjaChmdW5jdGlvbiAobSkge1xuICAgIGlmIChzW21dKSB0W21dID0gc1ttXTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldExhc3RPZlBhdGgob2JqZWN0LCBwYXRoLCBFbXB0eSkge1xuICBmdW5jdGlvbiBjbGVhbktleShrZXkpIHtcbiAgICByZXR1cm4ga2V5ICYmIGtleS5pbmRleE9mKCcjIyMnKSA+IC0xID8ga2V5LnJlcGxhY2UoLyMjIy9nLCAnLicpIDoga2V5O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuTm90VHJhdmVyc2VEZWVwZXIoKSB7XG4gICAgcmV0dXJuICFvYmplY3QgfHwgdHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICB2YXIgc3RhY2sgPSB0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycgPyBbXS5jb25jYXQocGF0aCkgOiBwYXRoLnNwbGl0KCcuJyk7XG5cbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoY2FuTm90VHJhdmVyc2VEZWVwZXIoKSkgcmV0dXJuIHt9O1xuICAgIHZhciBrZXkgPSBjbGVhbktleShzdGFjay5zaGlmdCgpKTtcbiAgICBpZiAoIW9iamVjdFtrZXldICYmIEVtcHR5KSBvYmplY3Rba2V5XSA9IG5ldyBFbXB0eSgpO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3QgPSB7fTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2FuTm90VHJhdmVyc2VEZWVwZXIoKSkgcmV0dXJuIHt9O1xuICByZXR1cm4ge1xuICAgIG9iajogb2JqZWN0LFxuICAgIGs6IGNsZWFuS2V5KHN0YWNrLnNoaWZ0KCkpXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNldFBhdGgob2JqZWN0LCBwYXRoLCBuZXdWYWx1ZSkge1xuICB2YXIgX2dldExhc3RPZlBhdGggPSBnZXRMYXN0T2ZQYXRoKG9iamVjdCwgcGF0aCwgT2JqZWN0KSxcbiAgICAgIG9iaiA9IF9nZXRMYXN0T2ZQYXRoLm9iaixcbiAgICAgIGsgPSBfZ2V0TGFzdE9mUGF0aC5rO1xuXG4gIG9ialtrXSA9IG5ld1ZhbHVlO1xufVxuZnVuY3Rpb24gcHVzaFBhdGgob2JqZWN0LCBwYXRoLCBuZXdWYWx1ZSwgY29uY2F0KSB7XG4gIHZhciBfZ2V0TGFzdE9mUGF0aDIgPSBnZXRMYXN0T2ZQYXRoKG9iamVjdCwgcGF0aCwgT2JqZWN0KSxcbiAgICAgIG9iaiA9IF9nZXRMYXN0T2ZQYXRoMi5vYmosXG4gICAgICBrID0gX2dldExhc3RPZlBhdGgyLms7XG5cbiAgb2JqW2tdID0gb2JqW2tdIHx8IFtdO1xuICBpZiAoY29uY2F0KSBvYmpba10gPSBvYmpba10uY29uY2F0KG5ld1ZhbHVlKTtcbiAgaWYgKCFjb25jYXQpIG9ialtrXS5wdXNoKG5ld1ZhbHVlKTtcbn1cbmZ1bmN0aW9uIGdldFBhdGgob2JqZWN0LCBwYXRoKSB7XG4gIHZhciBfZ2V0TGFzdE9mUGF0aDMgPSBnZXRMYXN0T2ZQYXRoKG9iamVjdCwgcGF0aCksXG4gICAgICBvYmogPSBfZ2V0TGFzdE9mUGF0aDMub2JqLFxuICAgICAgayA9IF9nZXRMYXN0T2ZQYXRoMy5rO1xuXG4gIGlmICghb2JqKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gb2JqW2tdO1xufVxuZnVuY3Rpb24gZ2V0UGF0aFdpdGhEZWZhdWx0cyhkYXRhLCBkZWZhdWx0RGF0YSwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IGdldFBhdGgoZGF0YSwga2V5KTtcblxuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBnZXRQYXRoKGRlZmF1bHREYXRhLCBrZXkpO1xufVxuZnVuY3Rpb24gZGVlcEV4dGVuZCh0YXJnZXQsIHNvdXJjZSwgb3ZlcndyaXRlKSB7XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7XG4gICAgaWYgKHByb3AgIT09ICdfX3Byb3RvX18nICYmIHByb3AgIT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIGlmIChwcm9wIGluIHRhcmdldCkge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldFtwcm9wXSA9PT0gJ3N0cmluZycgfHwgdGFyZ2V0W3Byb3BdIGluc3RhbmNlb2YgU3RyaW5nIHx8IHR5cGVvZiBzb3VyY2VbcHJvcF0gPT09ICdzdHJpbmcnIHx8IHNvdXJjZVtwcm9wXSBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgICAgIGlmIChvdmVyd3JpdGUpIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWVwRXh0ZW5kKHRhcmdldFtwcm9wXSwgc291cmNlW3Byb3BdLCBvdmVyd3JpdGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIHJlZ2V4RXNjYXBlKHN0cikge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCAnXFxcXCQmJyk7XG59XG52YXIgX2VudGl0eU1hcCA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICBcIidcIjogJyYjMzk7JyxcbiAgJy8nOiAnJiN4MkY7J1xufTtcbmZ1bmN0aW9uIGVzY2FwZShkYXRhKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGF0YS5yZXBsYWNlKC9bJjw+XCInXFwvXS9nLCBmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIF9lbnRpdHlNYXBbc107XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cbnZhciBpc0lFMTAgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50ICYmIHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ01TSUUnKSA+IC0xO1xuXG52YXIgUmVzb3VyY2VTdG9yZSA9IGZ1bmN0aW9uIChfRXZlbnRFbWl0dGVyKSB7XG4gIF9pbmhlcml0cyhSZXNvdXJjZVN0b3JlLCBfRXZlbnRFbWl0dGVyKTtcblxuICBmdW5jdGlvbiBSZXNvdXJjZVN0b3JlKGRhdGEpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge1xuICAgICAgbnM6IFsndHJhbnNsYXRpb24nXSxcbiAgICAgIGRlZmF1bHROUzogJ3RyYW5zbGF0aW9uJ1xuICAgIH07XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVzb3VyY2VTdG9yZSk7XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihSZXNvdXJjZVN0b3JlKS5jYWxsKHRoaXMpKTtcblxuICAgIGlmIChpc0lFMTApIHtcbiAgICAgIEV2ZW50RW1pdHRlci5jYWxsKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICB9XG5cbiAgICBfdGhpcy5kYXRhID0gZGF0YSB8fCB7fTtcbiAgICBfdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGlmIChfdGhpcy5vcHRpb25zLmtleVNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBfdGhpcy5vcHRpb25zLmtleVNlcGFyYXRvciA9ICcuJztcbiAgICB9XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVzb3VyY2VTdG9yZSwgW3tcbiAgICBrZXk6IFwiYWRkTmFtZXNwYWNlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGROYW1lc3BhY2VzKG5zKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLm5zLmluZGV4T2YobnMpIDwgMCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMubnMucHVzaChucyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZU5hbWVzcGFjZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlTmFtZXNwYWNlcyhucykge1xuICAgICAgdmFyIGluZGV4ID0gdGhpcy5vcHRpb25zLm5zLmluZGV4T2YobnMpO1xuXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMubnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0UmVzb3VyY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0UmVzb3VyY2UobG5nLCBucywga2V5KSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge307XG4gICAgICB2YXIga2V5U2VwYXJhdG9yID0gb3B0aW9ucy5rZXlTZXBhcmF0b3IgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMua2V5U2VwYXJhdG9yIDogdGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcjtcbiAgICAgIHZhciBwYXRoID0gW2xuZywgbnNdO1xuICAgICAgaWYgKGtleSAmJiB0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJykgcGF0aCA9IHBhdGguY29uY2F0KGtleSk7XG4gICAgICBpZiAoa2V5ICYmIHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSBwYXRoID0gcGF0aC5jb25jYXQoa2V5U2VwYXJhdG9yID8ga2V5LnNwbGl0KGtleVNlcGFyYXRvcikgOiBrZXkpO1xuXG4gICAgICBpZiAobG5nLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGggPSBsbmcuc3BsaXQoJy4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdldFBhdGgodGhpcy5kYXRhLCBwYXRoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiYWRkUmVzb3VyY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUmVzb3VyY2UobG5nLCBucywga2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IHtcbiAgICAgICAgc2lsZW50OiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHZhciBrZXlTZXBhcmF0b3IgPSB0aGlzLm9wdGlvbnMua2V5U2VwYXJhdG9yO1xuICAgICAgaWYgKGtleVNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSBrZXlTZXBhcmF0b3IgPSAnLic7XG4gICAgICB2YXIgcGF0aCA9IFtsbmcsIG5zXTtcbiAgICAgIGlmIChrZXkpIHBhdGggPSBwYXRoLmNvbmNhdChrZXlTZXBhcmF0b3IgPyBrZXkuc3BsaXQoa2V5U2VwYXJhdG9yKSA6IGtleSk7XG5cbiAgICAgIGlmIChsbmcuaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgICAgcGF0aCA9IGxuZy5zcGxpdCgnLicpO1xuICAgICAgICB2YWx1ZSA9IG5zO1xuICAgICAgICBucyA9IHBhdGhbMV07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkTmFtZXNwYWNlcyhucyk7XG4gICAgICBzZXRQYXRoKHRoaXMuZGF0YSwgcGF0aCwgdmFsdWUpO1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkgdGhpcy5lbWl0KCdhZGRlZCcsIGxuZywgbnMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRSZXNvdXJjZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUmVzb3VyY2VzKGxuZywgbnMsIHJlc291cmNlcykge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHtcbiAgICAgICAgc2lsZW50OiBmYWxzZVxuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIgbSBpbiByZXNvdXJjZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZXNbbV0gPT09ICdzdHJpbmcnIHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkocmVzb3VyY2VzW21dKSA9PT0gJ1tvYmplY3QgQXJyYXldJykgdGhpcy5hZGRSZXNvdXJjZShsbmcsIG5zLCBtLCByZXNvdXJjZXNbbV0sIHtcbiAgICAgICAgICBzaWxlbnQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHRoaXMuZW1pdCgnYWRkZWQnLCBsbmcsIG5zLCByZXNvdXJjZXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRSZXNvdXJjZUJ1bmRsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRSZXNvdXJjZUJ1bmRsZShsbmcsIG5zLCByZXNvdXJjZXMsIGRlZXAsIG92ZXJ3cml0ZSkge1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IHtcbiAgICAgICAgc2lsZW50OiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHZhciBwYXRoID0gW2xuZywgbnNdO1xuXG4gICAgICBpZiAobG5nLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGggPSBsbmcuc3BsaXQoJy4nKTtcbiAgICAgICAgZGVlcCA9IHJlc291cmNlcztcbiAgICAgICAgcmVzb3VyY2VzID0gbnM7XG4gICAgICAgIG5zID0gcGF0aFsxXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGROYW1lc3BhY2VzKG5zKTtcbiAgICAgIHZhciBwYWNrID0gZ2V0UGF0aCh0aGlzLmRhdGEsIHBhdGgpIHx8IHt9O1xuXG4gICAgICBpZiAoZGVlcCkge1xuICAgICAgICBkZWVwRXh0ZW5kKHBhY2ssIHJlc291cmNlcywgb3ZlcndyaXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhY2sgPSBfb2JqZWN0U3ByZWFkKHt9LCBwYWNrLCByZXNvdXJjZXMpO1xuICAgICAgfVxuXG4gICAgICBzZXRQYXRoKHRoaXMuZGF0YSwgcGF0aCwgcGFjayk7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB0aGlzLmVtaXQoJ2FkZGVkJywgbG5nLCBucywgcmVzb3VyY2VzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlUmVzb3VyY2VCdW5kbGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlUmVzb3VyY2VCdW5kbGUobG5nLCBucykge1xuICAgICAgaWYgKHRoaXMuaGFzUmVzb3VyY2VCdW5kbGUobG5nLCBucykpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZGF0YVtsbmddW25zXTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW1vdmVOYW1lc3BhY2VzKG5zKTtcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlZCcsIGxuZywgbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNSZXNvdXJjZUJ1bmRsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNSZXNvdXJjZUJ1bmRsZShsbmcsIG5zKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZShsbmcsIG5zKSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRSZXNvdXJjZUJ1bmRsZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZXNvdXJjZUJ1bmRsZShsbmcsIG5zKSB7XG4gICAgICBpZiAoIW5zKSBucyA9IHRoaXMub3B0aW9ucy5kZWZhdWx0TlM7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEkgPT09ICd2MScpIHJldHVybiBfb2JqZWN0U3ByZWFkKHt9LCB7fSwgdGhpcy5nZXRSZXNvdXJjZShsbmcsIG5zKSk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZShsbmcsIG5zKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RGF0YUJ5TGFuZ3VhZ2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RGF0YUJ5TGFuZ3VhZ2UobG5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhW2xuZ107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvSlNPTlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZXNvdXJjZVN0b3JlO1xufShFdmVudEVtaXR0ZXIpO1xuXG52YXIgcG9zdFByb2Nlc3NvciA9IHtcbiAgcHJvY2Vzc29yczoge30sXG4gIGFkZFBvc3RQcm9jZXNzb3I6IGZ1bmN0aW9uIGFkZFBvc3RQcm9jZXNzb3IobW9kdWxlKSB7XG4gICAgdGhpcy5wcm9jZXNzb3JzW21vZHVsZS5uYW1lXSA9IG1vZHVsZTtcbiAgfSxcbiAgaGFuZGxlOiBmdW5jdGlvbiBoYW5kbGUocHJvY2Vzc29ycywgdmFsdWUsIGtleSwgb3B0aW9ucywgdHJhbnNsYXRvcikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBwcm9jZXNzb3JzLmZvckVhY2goZnVuY3Rpb24gKHByb2Nlc3Nvcikge1xuICAgICAgaWYgKF90aGlzLnByb2Nlc3NvcnNbcHJvY2Vzc29yXSkgdmFsdWUgPSBfdGhpcy5wcm9jZXNzb3JzW3Byb2Nlc3Nvcl0ucHJvY2Vzcyh2YWx1ZSwga2V5LCBvcHRpb25zLCB0cmFuc2xhdG9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn07XG5cbnZhciBjaGVja2VkTG9hZGVkRm9yID0ge307XG5cbnZhciBUcmFuc2xhdG9yID0gZnVuY3Rpb24gKF9FdmVudEVtaXR0ZXIpIHtcbiAgX2luaGVyaXRzKFRyYW5zbGF0b3IsIF9FdmVudEVtaXR0ZXIpO1xuXG4gIGZ1bmN0aW9uIFRyYW5zbGF0b3Ioc2VydmljZXMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVHJhbnNsYXRvcik7XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihUcmFuc2xhdG9yKS5jYWxsKHRoaXMpKTtcblxuICAgIGlmIChpc0lFMTApIHtcbiAgICAgIEV2ZW50RW1pdHRlci5jYWxsKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICB9XG5cbiAgICBjb3B5KFsncmVzb3VyY2VTdG9yZScsICdsYW5ndWFnZVV0aWxzJywgJ3BsdXJhbFJlc29sdmVyJywgJ2ludGVycG9sYXRvcicsICdiYWNrZW5kQ29ubmVjdG9yJywgJ2kxOG5Gb3JtYXQnLCAndXRpbHMnXSwgc2VydmljZXMsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICBfdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGlmIChfdGhpcy5vcHRpb25zLmtleVNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBfdGhpcy5vcHRpb25zLmtleVNlcGFyYXRvciA9ICcuJztcbiAgICB9XG5cbiAgICBfdGhpcy5sb2dnZXIgPSBiYXNlTG9nZ2VyLmNyZWF0ZSgndHJhbnNsYXRvcicpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUcmFuc2xhdG9yLCBbe1xuICAgIGtleTogXCJjaGFuZ2VMYW5ndWFnZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjaGFuZ2VMYW5ndWFnZShsbmcpIHtcbiAgICAgIGlmIChsbmcpIHRoaXMubGFuZ3VhZ2UgPSBsbmc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4aXN0c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleGlzdHMoa2V5KSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge1xuICAgICAgICBpbnRlcnBvbGF0aW9uOiB7fVxuICAgICAgfTtcbiAgICAgIHZhciByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZShrZXksIG9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkICYmIHJlc29sdmVkLnJlcyAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJleHRyYWN0RnJvbUtleVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleHRyYWN0RnJvbUtleShrZXksIG9wdGlvbnMpIHtcbiAgICAgIHZhciBuc1NlcGFyYXRvciA9IG9wdGlvbnMubnNTZXBhcmF0b3IgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubnNTZXBhcmF0b3IgOiB0aGlzLm9wdGlvbnMubnNTZXBhcmF0b3I7XG4gICAgICBpZiAobnNTZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkgbnNTZXBhcmF0b3IgPSAnOic7XG4gICAgICB2YXIga2V5U2VwYXJhdG9yID0gb3B0aW9ucy5rZXlTZXBhcmF0b3IgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMua2V5U2VwYXJhdG9yIDogdGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcjtcbiAgICAgIHZhciBuYW1lc3BhY2VzID0gb3B0aW9ucy5ucyB8fCB0aGlzLm9wdGlvbnMuZGVmYXVsdE5TO1xuXG4gICAgICBpZiAobnNTZXBhcmF0b3IgJiYga2V5LmluZGV4T2YobnNTZXBhcmF0b3IpID4gLTEpIHtcbiAgICAgICAgdmFyIG0gPSBrZXkubWF0Y2godGhpcy5pbnRlcnBvbGF0b3IubmVzdGluZ1JlZ2V4cCk7XG5cbiAgICAgICAgaWYgKG0gJiYgbS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgbmFtZXNwYWNlczogbmFtZXNwYWNlc1xuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcGFydHMgPSBrZXkuc3BsaXQobnNTZXBhcmF0b3IpO1xuICAgICAgICBpZiAobnNTZXBhcmF0b3IgIT09IGtleVNlcGFyYXRvciB8fCBuc1NlcGFyYXRvciA9PT0ga2V5U2VwYXJhdG9yICYmIHRoaXMub3B0aW9ucy5ucy5pbmRleE9mKHBhcnRzWzBdKSA+IC0xKSBuYW1lc3BhY2VzID0gcGFydHMuc2hpZnQoKTtcbiAgICAgICAga2V5ID0gcGFydHMuam9pbihrZXlTZXBhcmF0b3IpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnKSBuYW1lc3BhY2VzID0gW25hbWVzcGFjZXNdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBrZXksXG4gICAgICAgIG5hbWVzcGFjZXM6IG5hbWVzcGFjZXNcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRyYW5zbGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0cmFuc2xhdGUoa2V5cywgb3B0aW9ucywgbGFzdEtleSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIGlmIChfdHlwZW9mKG9wdGlvbnMpICE9PSAnb2JqZWN0JyAmJiB0aGlzLm9wdGlvbnMub3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXIpIHtcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcihhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgICAgIGlmIChrZXlzID09PSB1bmRlZmluZWQgfHwga2V5cyA9PT0gbnVsbCkgcmV0dXJuICcnO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGtleXMpKSBrZXlzID0gW1N0cmluZyhrZXlzKV07XG4gICAgICB2YXIga2V5U2VwYXJhdG9yID0gb3B0aW9ucy5rZXlTZXBhcmF0b3IgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMua2V5U2VwYXJhdG9yIDogdGhpcy5vcHRpb25zLmtleVNlcGFyYXRvcjtcblxuICAgICAgdmFyIF90aGlzJGV4dHJhY3RGcm9tS2V5ID0gdGhpcy5leHRyYWN0RnJvbUtleShrZXlzW2tleXMubGVuZ3RoIC0gMV0sIG9wdGlvbnMpLFxuICAgICAgICAgIGtleSA9IF90aGlzJGV4dHJhY3RGcm9tS2V5LmtleSxcbiAgICAgICAgICBuYW1lc3BhY2VzID0gX3RoaXMkZXh0cmFjdEZyb21LZXkubmFtZXNwYWNlcztcblxuICAgICAgdmFyIG5hbWVzcGFjZSA9IG5hbWVzcGFjZXNbbmFtZXNwYWNlcy5sZW5ndGggLSAxXTtcbiAgICAgIHZhciBsbmcgPSBvcHRpb25zLmxuZyB8fCB0aGlzLmxhbmd1YWdlO1xuICAgICAgdmFyIGFwcGVuZE5hbWVzcGFjZVRvQ0lNb2RlID0gb3B0aW9ucy5hcHBlbmROYW1lc3BhY2VUb0NJTW9kZSB8fCB0aGlzLm9wdGlvbnMuYXBwZW5kTmFtZXNwYWNlVG9DSU1vZGU7XG5cbiAgICAgIGlmIChsbmcgJiYgbG5nLnRvTG93ZXJDYXNlKCkgPT09ICdjaW1vZGUnKSB7XG4gICAgICAgIGlmIChhcHBlbmROYW1lc3BhY2VUb0NJTW9kZSkge1xuICAgICAgICAgIHZhciBuc1NlcGFyYXRvciA9IG9wdGlvbnMubnNTZXBhcmF0b3IgfHwgdGhpcy5vcHRpb25zLm5zU2VwYXJhdG9yO1xuICAgICAgICAgIHJldHVybiBuYW1lc3BhY2UgKyBuc1NlcGFyYXRvciArIGtleTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZShrZXlzLCBvcHRpb25zKTtcbiAgICAgIHZhciByZXMgPSByZXNvbHZlZCAmJiByZXNvbHZlZC5yZXM7XG4gICAgICB2YXIgcmVzVXNlZEtleSA9IHJlc29sdmVkICYmIHJlc29sdmVkLnVzZWRLZXkgfHwga2V5O1xuICAgICAgdmFyIHJlc0V4YWN0VXNlZEtleSA9IHJlc29sdmVkICYmIHJlc29sdmVkLmV4YWN0VXNlZEtleSB8fCBrZXk7XG4gICAgICB2YXIgcmVzVHlwZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkocmVzKTtcbiAgICAgIHZhciBub09iamVjdCA9IFsnW29iamVjdCBOdW1iZXJdJywgJ1tvYmplY3QgRnVuY3Rpb25dJywgJ1tvYmplY3QgUmVnRXhwXSddO1xuICAgICAgdmFyIGpvaW5BcnJheXMgPSBvcHRpb25zLmpvaW5BcnJheXMgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuam9pbkFycmF5cyA6IHRoaXMub3B0aW9ucy5qb2luQXJyYXlzO1xuICAgICAgdmFyIGhhbmRsZUFzT2JqZWN0SW5JMThuRm9ybWF0ID0gIXRoaXMuaTE4bkZvcm1hdCB8fCB0aGlzLmkxOG5Gb3JtYXQuaGFuZGxlQXNPYmplY3Q7XG4gICAgICB2YXIgaGFuZGxlQXNPYmplY3QgPSB0eXBlb2YgcmVzICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcmVzICE9PSAnYm9vbGVhbicgJiYgdHlwZW9mIHJlcyAhPT0gJ251bWJlcic7XG5cbiAgICAgIGlmIChoYW5kbGVBc09iamVjdEluSTE4bkZvcm1hdCAmJiByZXMgJiYgaGFuZGxlQXNPYmplY3QgJiYgbm9PYmplY3QuaW5kZXhPZihyZXNUeXBlKSA8IDAgJiYgISh0eXBlb2Ygam9pbkFycmF5cyA9PT0gJ3N0cmluZycgJiYgcmVzVHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJykpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zLnJldHVybk9iamVjdHMgJiYgIXRoaXMub3B0aW9ucy5yZXR1cm5PYmplY3RzKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybignYWNjZXNzaW5nIGFuIG9iamVjdCAtIGJ1dCByZXR1cm5PYmplY3RzIG9wdGlvbnMgaXMgbm90IGVuYWJsZWQhJyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZXR1cm5lZE9iamVjdEhhbmRsZXIgPyB0aGlzLm9wdGlvbnMucmV0dXJuZWRPYmplY3RIYW5kbGVyKHJlc1VzZWRLZXksIHJlcywgb3B0aW9ucykgOiBcImtleSAnXCIuY29uY2F0KGtleSwgXCIgKFwiKS5jb25jYXQodGhpcy5sYW5ndWFnZSwgXCIpJyByZXR1cm5lZCBhbiBvYmplY3QgaW5zdGVhZCBvZiBzdHJpbmcuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtleVNlcGFyYXRvcikge1xuICAgICAgICAgIHZhciByZXNUeXBlSXNBcnJheSA9IHJlc1R5cGUgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgICAgICAgdmFyIGNvcHkgPSByZXNUeXBlSXNBcnJheSA/IFtdIDoge307XG4gICAgICAgICAgdmFyIG5ld0tleVRvVXNlID0gcmVzVHlwZUlzQXJyYXkgPyByZXNFeGFjdFVzZWRLZXkgOiByZXNVc2VkS2V5O1xuXG4gICAgICAgICAgZm9yICh2YXIgbSBpbiByZXMpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmVzLCBtKSkge1xuICAgICAgICAgICAgICB2YXIgZGVlcEtleSA9IFwiXCIuY29uY2F0KG5ld0tleVRvVXNlKS5jb25jYXQoa2V5U2VwYXJhdG9yKS5jb25jYXQobSk7XG4gICAgICAgICAgICAgIGNvcHlbbV0gPSB0aGlzLnRyYW5zbGF0ZShkZWVwS2V5LCBfb2JqZWN0U3ByZWFkKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgICAgICAgam9pbkFycmF5czogZmFsc2UsXG4gICAgICAgICAgICAgICAgbnM6IG5hbWVzcGFjZXNcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICBpZiAoY29weVttXSA9PT0gZGVlcEtleSkgY29weVttXSA9IHJlc1ttXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXMgPSBjb3B5O1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGhhbmRsZUFzT2JqZWN0SW5JMThuRm9ybWF0ICYmIHR5cGVvZiBqb2luQXJyYXlzID09PSAnc3RyaW5nJyAmJiByZXNUeXBlID09PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICAgIHJlcyA9IHJlcy5qb2luKGpvaW5BcnJheXMpO1xuICAgICAgICBpZiAocmVzKSByZXMgPSB0aGlzLmV4dGVuZFRyYW5zbGF0aW9uKHJlcywga2V5cywgb3B0aW9ucywgbGFzdEtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgdXNlZERlZmF1bHQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHVzZWRLZXkgPSBmYWxzZTtcbiAgICAgICAgdmFyIG5lZWRzUGx1cmFsSGFuZGxpbmcgPSBvcHRpb25zLmNvdW50ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuY291bnQgIT09ICdzdHJpbmcnO1xuICAgICAgICB2YXIgaGFzRGVmYXVsdFZhbHVlID0gVHJhbnNsYXRvci5oYXNEZWZhdWx0VmFsdWUob3B0aW9ucyk7XG4gICAgICAgIHZhciBkZWZhdWx0VmFsdWVTdWZmaXggPSBuZWVkc1BsdXJhbEhhbmRsaW5nID8gdGhpcy5wbHVyYWxSZXNvbHZlci5nZXRTdWZmaXgobG5nLCBvcHRpb25zLmNvdW50KSA6ICcnO1xuICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gb3B0aW9uc1tcImRlZmF1bHRWYWx1ZVwiLmNvbmNhdChkZWZhdWx0VmFsdWVTdWZmaXgpXSB8fCBvcHRpb25zLmRlZmF1bHRWYWx1ZTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZExvb2t1cChyZXMpICYmIGhhc0RlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIHVzZWREZWZhdWx0ID0gdHJ1ZTtcbiAgICAgICAgICByZXMgPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZExvb2t1cChyZXMpKSB7XG4gICAgICAgICAgdXNlZEtleSA9IHRydWU7XG4gICAgICAgICAgcmVzID0ga2V5O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVwZGF0ZU1pc3NpbmcgPSBoYXNEZWZhdWx0VmFsdWUgJiYgZGVmYXVsdFZhbHVlICE9PSByZXMgJiYgdGhpcy5vcHRpb25zLnVwZGF0ZU1pc3Npbmc7XG5cbiAgICAgICAgaWYgKHVzZWRLZXkgfHwgdXNlZERlZmF1bHQgfHwgdXBkYXRlTWlzc2luZykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyh1cGRhdGVNaXNzaW5nID8gJ3VwZGF0ZUtleScgOiAnbWlzc2luZ0tleScsIGxuZywgbmFtZXNwYWNlLCBrZXksIHVwZGF0ZU1pc3NpbmcgPyBkZWZhdWx0VmFsdWUgOiByZXMpO1xuXG4gICAgICAgICAgaWYgKGtleVNlcGFyYXRvcikge1xuICAgICAgICAgICAgdmFyIGZrID0gdGhpcy5yZXNvbHZlKGtleSwgX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucywge1xuICAgICAgICAgICAgICBrZXlTZXBhcmF0b3I6IGZhbHNlXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICBpZiAoZmsgJiYgZmsucmVzKSB0aGlzLmxvZ2dlci53YXJuKCdTZWVtcyB0aGUgbG9hZGVkIHRyYW5zbGF0aW9ucyB3ZXJlIGluIGZsYXQgSlNPTiBmb3JtYXQgaW5zdGVhZCBvZiBuZXN0ZWQuIEVpdGhlciBzZXQga2V5U2VwYXJhdG9yOiBmYWxzZSBvbiBpbml0IG9yIG1ha2Ugc3VyZSB5b3VyIHRyYW5zbGF0aW9ucyBhcmUgcHVibGlzaGVkIGluIG5lc3RlZCBmb3JtYXQuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIGxuZ3MgPSBbXTtcbiAgICAgICAgICB2YXIgZmFsbGJhY2tMbmdzID0gdGhpcy5sYW5ndWFnZVV0aWxzLmdldEZhbGxiYWNrQ29kZXModGhpcy5vcHRpb25zLmZhbGxiYWNrTG5nLCBvcHRpb25zLmxuZyB8fCB0aGlzLmxhbmd1YWdlKTtcblxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2F2ZU1pc3NpbmdUbyA9PT0gJ2ZhbGxiYWNrJyAmJiBmYWxsYmFja0xuZ3MgJiYgZmFsbGJhY2tMbmdzWzBdKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZhbGxiYWNrTG5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBsbmdzLnB1c2goZmFsbGJhY2tMbmdzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zYXZlTWlzc2luZ1RvID09PSAnYWxsJykge1xuICAgICAgICAgICAgbG5ncyA9IHRoaXMubGFuZ3VhZ2VVdGlscy50b1Jlc29sdmVIaWVyYXJjaHkob3B0aW9ucy5sbmcgfHwgdGhpcy5sYW5ndWFnZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxuZ3MucHVzaChvcHRpb25zLmxuZyB8fCB0aGlzLmxhbmd1YWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc2VuZCA9IGZ1bmN0aW9uIHNlbmQobCwgaywgZmFsbGJhY2tWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKF90aGlzMi5vcHRpb25zLm1pc3NpbmdLZXlIYW5kbGVyKSB7XG4gICAgICAgICAgICAgIF90aGlzMi5vcHRpb25zLm1pc3NpbmdLZXlIYW5kbGVyKGwsIG5hbWVzcGFjZSwgaywgdXBkYXRlTWlzc2luZyA/IGZhbGxiYWNrVmFsdWUgOiByZXMsIHVwZGF0ZU1pc3NpbmcsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChfdGhpczIuYmFja2VuZENvbm5lY3RvciAmJiBfdGhpczIuYmFja2VuZENvbm5lY3Rvci5zYXZlTWlzc2luZykge1xuICAgICAgICAgICAgICBfdGhpczIuYmFja2VuZENvbm5lY3Rvci5zYXZlTWlzc2luZyhsLCBuYW1lc3BhY2UsIGssIHVwZGF0ZU1pc3NpbmcgPyBmYWxsYmFja1ZhbHVlIDogcmVzLCB1cGRhdGVNaXNzaW5nLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3RoaXMyLmVtaXQoJ21pc3NpbmdLZXknLCBsLCBuYW1lc3BhY2UsIGssIHJlcyk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2F2ZU1pc3NpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2F2ZU1pc3NpbmdQbHVyYWxzICYmIG5lZWRzUGx1cmFsSGFuZGxpbmcpIHtcbiAgICAgICAgICAgICAgbG5ncy5mb3JFYWNoKGZ1bmN0aW9uIChsYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgIF90aGlzMi5wbHVyYWxSZXNvbHZlci5nZXRTdWZmaXhlcyhsYW5ndWFnZSkuZm9yRWFjaChmdW5jdGlvbiAoc3VmZml4KSB7XG4gICAgICAgICAgICAgICAgICBzZW5kKFtsYW5ndWFnZV0sIGtleSArIHN1ZmZpeCwgb3B0aW9uc1tcImRlZmF1bHRWYWx1ZVwiLmNvbmNhdChzdWZmaXgpXSB8fCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlbmQobG5ncywga2V5LCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJlcyA9IHRoaXMuZXh0ZW5kVHJhbnNsYXRpb24ocmVzLCBrZXlzLCBvcHRpb25zLCByZXNvbHZlZCwgbGFzdEtleSk7XG4gICAgICAgIGlmICh1c2VkS2V5ICYmIHJlcyA9PT0ga2V5ICYmIHRoaXMub3B0aW9ucy5hcHBlbmROYW1lc3BhY2VUb01pc3NpbmdLZXkpIHJlcyA9IFwiXCIuY29uY2F0KG5hbWVzcGFjZSwgXCI6XCIpLmNvbmNhdChrZXkpO1xuICAgICAgICBpZiAodXNlZEtleSAmJiB0aGlzLm9wdGlvbnMucGFyc2VNaXNzaW5nS2V5SGFuZGxlcikgcmVzID0gdGhpcy5vcHRpb25zLnBhcnNlTWlzc2luZ0tleUhhbmRsZXIocmVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZXh0ZW5kVHJhbnNsYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZXh0ZW5kVHJhbnNsYXRpb24ocmVzLCBrZXksIG9wdGlvbnMsIHJlc29sdmVkLCBsYXN0S2V5KSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuaTE4bkZvcm1hdCAmJiB0aGlzLmkxOG5Gb3JtYXQucGFyc2UpIHtcbiAgICAgICAgcmVzID0gdGhpcy5pMThuRm9ybWF0LnBhcnNlKHJlcywgb3B0aW9ucywgcmVzb2x2ZWQudXNlZExuZywgcmVzb2x2ZWQudXNlZE5TLCByZXNvbHZlZC51c2VkS2V5LCB7XG4gICAgICAgICAgcmVzb2x2ZWQ6IHJlc29sdmVkXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy5za2lwSW50ZXJwb2xhdGlvbikge1xuICAgICAgICBpZiAob3B0aW9ucy5pbnRlcnBvbGF0aW9uKSB0aGlzLmludGVycG9sYXRvci5pbml0KF9vYmplY3RTcHJlYWQoe30sIG9wdGlvbnMsIHtcbiAgICAgICAgICBpbnRlcnBvbGF0aW9uOiBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbiwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uKVxuICAgICAgICB9KSk7XG4gICAgICAgIHZhciBza2lwT25WYXJpYWJsZXMgPSBvcHRpb25zLmludGVycG9sYXRpb24gJiYgb3B0aW9ucy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyB8fCB0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5za2lwT25WYXJpYWJsZXM7XG4gICAgICAgIHZhciBuZXN0QmVmO1xuXG4gICAgICAgIGlmIChza2lwT25WYXJpYWJsZXMpIHtcbiAgICAgICAgICB2YXIgbmIgPSByZXMubWF0Y2godGhpcy5pbnRlcnBvbGF0b3IubmVzdGluZ1JlZ2V4cCk7XG4gICAgICAgICAgbmVzdEJlZiA9IG5iICYmIG5iLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5yZXBsYWNlICYmIHR5cGVvZiBvcHRpb25zLnJlcGxhY2UgIT09ICdzdHJpbmcnID8gb3B0aW9ucy5yZXBsYWNlIDogb3B0aW9ucztcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5pbnRlcnBvbGF0aW9uLmRlZmF1bHRWYXJpYWJsZXMpIGRhdGEgPSBfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5kZWZhdWx0VmFyaWFibGVzLCBkYXRhKTtcbiAgICAgICAgcmVzID0gdGhpcy5pbnRlcnBvbGF0b3IuaW50ZXJwb2xhdGUocmVzLCBkYXRhLCBvcHRpb25zLmxuZyB8fCB0aGlzLmxhbmd1YWdlLCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoc2tpcE9uVmFyaWFibGVzKSB7XG4gICAgICAgICAgdmFyIG5hID0gcmVzLm1hdGNoKHRoaXMuaW50ZXJwb2xhdG9yLm5lc3RpbmdSZWdleHApO1xuICAgICAgICAgIHZhciBuZXN0QWZ0ID0gbmEgJiYgbmEubGVuZ3RoO1xuICAgICAgICAgIGlmIChuZXN0QmVmIDwgbmVzdEFmdCkgb3B0aW9ucy5uZXN0ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5uZXN0ICE9PSBmYWxzZSkgcmVzID0gdGhpcy5pbnRlcnBvbGF0b3IubmVzdChyZXMsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGxhc3RLZXkgJiYgbGFzdEtleVswXSA9PT0gYXJnc1swXSAmJiAhb3B0aW9ucy5jb250ZXh0KSB7XG4gICAgICAgICAgICBfdGhpczMubG9nZ2VyLndhcm4oXCJJdCBzZWVtcyB5b3UgYXJlIG5lc3RpbmcgcmVjdXJzaXZlbHkga2V5OiBcIi5jb25jYXQoYXJnc1swXSwgXCIgaW4ga2V5OiBcIikuY29uY2F0KGtleVswXSkpO1xuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gX3RoaXMzLnRyYW5zbGF0ZS5hcHBseShfdGhpczMsIGFyZ3MuY29uY2F0KFtrZXldKSk7XG4gICAgICAgIH0sIG9wdGlvbnMpO1xuICAgICAgICBpZiAob3B0aW9ucy5pbnRlcnBvbGF0aW9uKSB0aGlzLmludGVycG9sYXRvci5yZXNldCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcG9zdFByb2Nlc3MgPSBvcHRpb25zLnBvc3RQcm9jZXNzIHx8IHRoaXMub3B0aW9ucy5wb3N0UHJvY2VzcztcbiAgICAgIHZhciBwb3N0UHJvY2Vzc29yTmFtZXMgPSB0eXBlb2YgcG9zdFByb2Nlc3MgPT09ICdzdHJpbmcnID8gW3Bvc3RQcm9jZXNzXSA6IHBvc3RQcm9jZXNzO1xuXG4gICAgICBpZiAocmVzICE9PSB1bmRlZmluZWQgJiYgcmVzICE9PSBudWxsICYmIHBvc3RQcm9jZXNzb3JOYW1lcyAmJiBwb3N0UHJvY2Vzc29yTmFtZXMubGVuZ3RoICYmIG9wdGlvbnMuYXBwbHlQb3N0UHJvY2Vzc29yICE9PSBmYWxzZSkge1xuICAgICAgICByZXMgPSBwb3N0UHJvY2Vzc29yLmhhbmRsZShwb3N0UHJvY2Vzc29yTmFtZXMsIHJlcywga2V5LCB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLnBvc3RQcm9jZXNzUGFzc1Jlc29sdmVkID8gX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgaTE4blJlc29sdmVkOiByZXNvbHZlZFxuICAgICAgICB9LCBvcHRpb25zKSA6IG9wdGlvbnMsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNvbHZlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlc29sdmUoa2V5cykge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgICAgIHZhciBmb3VuZDtcbiAgICAgIHZhciB1c2VkS2V5O1xuICAgICAgdmFyIGV4YWN0VXNlZEtleTtcbiAgICAgIHZhciB1c2VkTG5nO1xuICAgICAgdmFyIHVzZWROUztcbiAgICAgIGlmICh0eXBlb2Yga2V5cyA9PT0gJ3N0cmluZycpIGtleXMgPSBba2V5c107XG4gICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgaWYgKF90aGlzNC5pc1ZhbGlkTG9va3VwKGZvdW5kKSkgcmV0dXJuO1xuXG4gICAgICAgIHZhciBleHRyYWN0ZWQgPSBfdGhpczQuZXh0cmFjdEZyb21LZXkoaywgb3B0aW9ucyk7XG5cbiAgICAgICAgdmFyIGtleSA9IGV4dHJhY3RlZC5rZXk7XG4gICAgICAgIHVzZWRLZXkgPSBrZXk7XG4gICAgICAgIHZhciBuYW1lc3BhY2VzID0gZXh0cmFjdGVkLm5hbWVzcGFjZXM7XG4gICAgICAgIGlmIChfdGhpczQub3B0aW9ucy5mYWxsYmFja05TKSBuYW1lc3BhY2VzID0gbmFtZXNwYWNlcy5jb25jYXQoX3RoaXM0Lm9wdGlvbnMuZmFsbGJhY2tOUyk7XG4gICAgICAgIHZhciBuZWVkc1BsdXJhbEhhbmRsaW5nID0gb3B0aW9ucy5jb3VudCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLmNvdW50ICE9PSAnc3RyaW5nJztcbiAgICAgICAgdmFyIG5lZWRzQ29udGV4dEhhbmRsaW5nID0gb3B0aW9ucy5jb250ZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuY29udGV4dCA9PT0gJ3N0cmluZycgJiYgb3B0aW9ucy5jb250ZXh0ICE9PSAnJztcbiAgICAgICAgdmFyIGNvZGVzID0gb3B0aW9ucy5sbmdzID8gb3B0aW9ucy5sbmdzIDogX3RoaXM0Lmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KG9wdGlvbnMubG5nIHx8IF90aGlzNC5sYW5ndWFnZSwgb3B0aW9ucy5mYWxsYmFja0xuZyk7XG4gICAgICAgIG5hbWVzcGFjZXMuZm9yRWFjaChmdW5jdGlvbiAobnMpIHtcbiAgICAgICAgICBpZiAoX3RoaXM0LmlzVmFsaWRMb29rdXAoZm91bmQpKSByZXR1cm47XG4gICAgICAgICAgdXNlZE5TID0gbnM7XG5cbiAgICAgICAgICBpZiAoIWNoZWNrZWRMb2FkZWRGb3JbXCJcIi5jb25jYXQoY29kZXNbMF0sIFwiLVwiKS5jb25jYXQobnMpXSAmJiBfdGhpczQudXRpbHMgJiYgX3RoaXM0LnV0aWxzLmhhc0xvYWRlZE5hbWVzcGFjZSAmJiAhX3RoaXM0LnV0aWxzLmhhc0xvYWRlZE5hbWVzcGFjZSh1c2VkTlMpKSB7XG4gICAgICAgICAgICBjaGVja2VkTG9hZGVkRm9yW1wiXCIuY29uY2F0KGNvZGVzWzBdLCBcIi1cIikuY29uY2F0KG5zKV0gPSB0cnVlO1xuXG4gICAgICAgICAgICBfdGhpczQubG9nZ2VyLndhcm4oXCJrZXkgXFxcIlwiLmNvbmNhdCh1c2VkS2V5LCBcIlxcXCIgZm9yIGxhbmd1YWdlcyBcXFwiXCIpLmNvbmNhdChjb2Rlcy5qb2luKCcsICcpLCBcIlxcXCIgd29uJ3QgZ2V0IHJlc29sdmVkIGFzIG5hbWVzcGFjZSBcXFwiXCIpLmNvbmNhdCh1c2VkTlMsIFwiXFxcIiB3YXMgbm90IHlldCBsb2FkZWRcIiksICdUaGlzIG1lYW5zIHNvbWV0aGluZyBJUyBXUk9ORyBpbiB5b3VyIHNldHVwLiBZb3UgYWNjZXNzIHRoZSB0IGZ1bmN0aW9uIGJlZm9yZSBpMThuZXh0LmluaXQgLyBpMThuZXh0LmxvYWROYW1lc3BhY2UgLyBpMThuZXh0LmNoYW5nZUxhbmd1YWdlIHdhcyBkb25lLiBXYWl0IGZvciB0aGUgY2FsbGJhY2sgb3IgUHJvbWlzZSB0byByZXNvbHZlIGJlZm9yZSBhY2Nlc3NpbmcgaXQhISEnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXM0LmlzVmFsaWRMb29rdXAoZm91bmQpKSByZXR1cm47XG4gICAgICAgICAgICB1c2VkTG5nID0gY29kZTtcbiAgICAgICAgICAgIHZhciBmaW5hbEtleSA9IGtleTtcbiAgICAgICAgICAgIHZhciBmaW5hbEtleXMgPSBbZmluYWxLZXldO1xuXG4gICAgICAgICAgICBpZiAoX3RoaXM0LmkxOG5Gb3JtYXQgJiYgX3RoaXM0LmkxOG5Gb3JtYXQuYWRkTG9va3VwS2V5cykge1xuICAgICAgICAgICAgICBfdGhpczQuaTE4bkZvcm1hdC5hZGRMb29rdXBLZXlzKGZpbmFsS2V5cywga2V5LCBjb2RlLCBucywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YXIgcGx1cmFsU3VmZml4O1xuICAgICAgICAgICAgICBpZiAobmVlZHNQbHVyYWxIYW5kbGluZykgcGx1cmFsU3VmZml4ID0gX3RoaXM0LnBsdXJhbFJlc29sdmVyLmdldFN1ZmZpeChjb2RlLCBvcHRpb25zLmNvdW50KTtcbiAgICAgICAgICAgICAgaWYgKG5lZWRzUGx1cmFsSGFuZGxpbmcgJiYgbmVlZHNDb250ZXh0SGFuZGxpbmcpIGZpbmFsS2V5cy5wdXNoKGZpbmFsS2V5ICsgcGx1cmFsU3VmZml4KTtcbiAgICAgICAgICAgICAgaWYgKG5lZWRzQ29udGV4dEhhbmRsaW5nKSBmaW5hbEtleXMucHVzaChmaW5hbEtleSArPSBcIlwiLmNvbmNhdChfdGhpczQub3B0aW9ucy5jb250ZXh0U2VwYXJhdG9yKS5jb25jYXQob3B0aW9ucy5jb250ZXh0KSk7XG4gICAgICAgICAgICAgIGlmIChuZWVkc1BsdXJhbEhhbmRsaW5nKSBmaW5hbEtleXMucHVzaChmaW5hbEtleSArPSBwbHVyYWxTdWZmaXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcG9zc2libGVLZXk7XG5cbiAgICAgICAgICAgIHdoaWxlIChwb3NzaWJsZUtleSA9IGZpbmFsS2V5cy5wb3AoKSkge1xuICAgICAgICAgICAgICBpZiAoIV90aGlzNC5pc1ZhbGlkTG9va3VwKGZvdW5kKSkge1xuICAgICAgICAgICAgICAgIGV4YWN0VXNlZEtleSA9IHBvc3NpYmxlS2V5O1xuICAgICAgICAgICAgICAgIGZvdW5kID0gX3RoaXM0LmdldFJlc291cmNlKGNvZGUsIG5zLCBwb3NzaWJsZUtleSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlczogZm91bmQsXG4gICAgICAgIHVzZWRLZXk6IHVzZWRLZXksXG4gICAgICAgIGV4YWN0VXNlZEtleTogZXhhY3RVc2VkS2V5LFxuICAgICAgICB1c2VkTG5nOiB1c2VkTG5nLFxuICAgICAgICB1c2VkTlM6IHVzZWROU1xuICAgICAgfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNWYWxpZExvb2t1cFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1ZhbGlkTG9va3VwKHJlcykge1xuICAgICAgcmV0dXJuIHJlcyAhPT0gdW5kZWZpbmVkICYmICEoIXRoaXMub3B0aW9ucy5yZXR1cm5OdWxsICYmIHJlcyA9PT0gbnVsbCkgJiYgISghdGhpcy5vcHRpb25zLnJldHVybkVtcHR5U3RyaW5nICYmIHJlcyA9PT0gJycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRSZXNvdXJjZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSZXNvdXJjZShjb2RlLCBucywga2V5KSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge307XG4gICAgICBpZiAodGhpcy5pMThuRm9ybWF0ICYmIHRoaXMuaTE4bkZvcm1hdC5nZXRSZXNvdXJjZSkgcmV0dXJuIHRoaXMuaTE4bkZvcm1hdC5nZXRSZXNvdXJjZShjb2RlLCBucywga2V5LCBvcHRpb25zKTtcbiAgICAgIHJldHVybiB0aGlzLnJlc291cmNlU3RvcmUuZ2V0UmVzb3VyY2UoY29kZSwgbnMsIGtleSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiaGFzRGVmYXVsdFZhbHVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc0RlZmF1bHRWYWx1ZShvcHRpb25zKSB7XG4gICAgICB2YXIgcHJlZml4ID0gJ2RlZmF1bHRWYWx1ZSc7XG5cbiAgICAgIGZvciAodmFyIG9wdGlvbiBpbiBvcHRpb25zKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgb3B0aW9uKSAmJiBwcmVmaXggPT09IG9wdGlvbi5zdWJzdHJpbmcoMCwgcHJlZml4Lmxlbmd0aCkgJiYgdW5kZWZpbmVkICE9PSBvcHRpb25zW29wdGlvbl0pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRyYW5zbGF0b3I7XG59KEV2ZW50RW1pdHRlcik7XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59XG5cbnZhciBMYW5ndWFnZVV0aWwgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIExhbmd1YWdlVXRpbChvcHRpb25zKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExhbmd1YWdlVXRpbCk7XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMud2hpdGVsaXN0ID0gdGhpcy5vcHRpb25zLnN1cHBvcnRlZExuZ3MgfHwgZmFsc2U7XG4gICAgdGhpcy5zdXBwb3J0ZWRMbmdzID0gdGhpcy5vcHRpb25zLnN1cHBvcnRlZExuZ3MgfHwgZmFsc2U7XG4gICAgdGhpcy5sb2dnZXIgPSBiYXNlTG9nZ2VyLmNyZWF0ZSgnbGFuZ3VhZ2VVdGlscycpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExhbmd1YWdlVXRpbCwgW3tcbiAgICBrZXk6IFwiZ2V0U2NyaXB0UGFydEZyb21Db2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNjcmlwdFBhcnRGcm9tQ29kZShjb2RlKSB7XG4gICAgICBpZiAoIWNvZGUgfHwgY29kZS5pbmRleE9mKCctJykgPCAwKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBwID0gY29kZS5zcGxpdCgnLScpO1xuICAgICAgaWYgKHAubGVuZ3RoID09PSAyKSByZXR1cm4gbnVsbDtcbiAgICAgIHAucG9wKCk7XG4gICAgICBpZiAocFtwLmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCkgPT09ICd4JykgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUocC5qb2luKCctJykpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRMYW5ndWFnZVBhcnRGcm9tQ29kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShjb2RlKSB7XG4gICAgICBpZiAoIWNvZGUgfHwgY29kZS5pbmRleE9mKCctJykgPCAwKSByZXR1cm4gY29kZTtcbiAgICAgIHZhciBwID0gY29kZS5zcGxpdCgnLScpO1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKHBbMF0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmb3JtYXRMYW5ndWFnZUNvZGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZm9ybWF0TGFuZ3VhZ2VDb2RlKGNvZGUpIHtcbiAgICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycgJiYgY29kZS5pbmRleE9mKCctJykgPiAtMSkge1xuICAgICAgICB2YXIgc3BlY2lhbENhc2VzID0gWydoYW5zJywgJ2hhbnQnLCAnbGF0bicsICdjeXJsJywgJ2NhbnMnLCAnbW9uZycsICdhcmFiJ107XG4gICAgICAgIHZhciBwID0gY29kZS5zcGxpdCgnLScpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubG93ZXJDYXNlTG5nKSB7XG4gICAgICAgICAgcCA9IHAubWFwKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4gcGFydC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHAubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgcFswXSA9IHBbMF0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBwWzFdID0gcFsxXS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgIGlmIChzcGVjaWFsQ2FzZXMuaW5kZXhPZihwWzFdLnRvTG93ZXJDYXNlKCkpID4gLTEpIHBbMV0gPSBjYXBpdGFsaXplKHBbMV0udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAocC5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICBwWzBdID0gcFswXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGlmIChwWzFdLmxlbmd0aCA9PT0gMikgcFsxXSA9IHBbMV0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgICBpZiAocFswXSAhPT0gJ3NnbicgJiYgcFsyXS5sZW5ndGggPT09IDIpIHBbMl0gPSBwWzJdLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgaWYgKHNwZWNpYWxDYXNlcy5pbmRleE9mKHBbMV0udG9Mb3dlckNhc2UoKSkgPiAtMSkgcFsxXSA9IGNhcGl0YWxpemUocFsxXS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICBpZiAoc3BlY2lhbENhc2VzLmluZGV4T2YocFsyXS50b0xvd2VyQ2FzZSgpKSA+IC0xKSBwWzJdID0gY2FwaXRhbGl6ZShwWzJdLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHAuam9pbignLScpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNsZWFuQ29kZSB8fCB0aGlzLm9wdGlvbnMubG93ZXJDYXNlTG5nID8gY29kZS50b0xvd2VyQ2FzZSgpIDogY29kZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaXNXaGl0ZWxpc3RlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1doaXRlbGlzdGVkKGNvZGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlcHJlY2F0ZSgnbGFuZ3VhZ2VVdGlscy5pc1doaXRlbGlzdGVkJywgJ2Z1bmN0aW9uIFwiaXNXaGl0ZWxpc3RlZFwiIHdpbGwgYmUgcmVuYW1lZCB0byBcImlzU3VwcG9ydGVkQ29kZVwiIGluIHRoZSBuZXh0IG1ham9yIC0gcGxlYXNlIG1ha2Ugc3VyZSB0byByZW5hbWUgaXRcXCdzIHVzYWdlIGFzYXAuJyk7XG4gICAgICByZXR1cm4gdGhpcy5pc1N1cHBvcnRlZENvZGUoY29kZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzU3VwcG9ydGVkQ29kZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1N1cHBvcnRlZENvZGUoY29kZSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sb2FkID09PSAnbGFuZ3VhZ2VPbmx5JyB8fCB0aGlzLm9wdGlvbnMubm9uRXhwbGljaXRTdXBwb3J0ZWRMbmdzKSB7XG4gICAgICAgIGNvZGUgPSB0aGlzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKGNvZGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIXRoaXMuc3VwcG9ydGVkTG5ncyB8fCAhdGhpcy5zdXBwb3J0ZWRMbmdzLmxlbmd0aCB8fCB0aGlzLnN1cHBvcnRlZExuZ3MuaW5kZXhPZihjb2RlKSA+IC0xO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRCZXN0TWF0Y2hGcm9tQ29kZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QmVzdE1hdGNoRnJvbUNvZGVzKGNvZGVzKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICBpZiAoIWNvZGVzKSByZXR1cm4gbnVsbDtcbiAgICAgIHZhciBmb3VuZDtcbiAgICAgIGNvZGVzLmZvckVhY2goZnVuY3Rpb24gKGNvZGUpIHtcbiAgICAgICAgaWYgKGZvdW5kKSByZXR1cm47XG5cbiAgICAgICAgdmFyIGNsZWFuZWRMbmcgPSBfdGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUoY29kZSk7XG5cbiAgICAgICAgaWYgKCFfdGhpcy5vcHRpb25zLnN1cHBvcnRlZExuZ3MgfHwgX3RoaXMuaXNTdXBwb3J0ZWRDb2RlKGNsZWFuZWRMbmcpKSBmb3VuZCA9IGNsZWFuZWRMbmc7XG4gICAgICB9KTtcblxuICAgICAgaWYgKCFmb3VuZCAmJiB0aGlzLm9wdGlvbnMuc3VwcG9ydGVkTG5ncykge1xuICAgICAgICBjb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICAgICAgaWYgKGZvdW5kKSByZXR1cm47XG5cbiAgICAgICAgICB2YXIgbG5nT25seSA9IF90aGlzLmdldExhbmd1YWdlUGFydEZyb21Db2RlKGNvZGUpO1xuXG4gICAgICAgICAgaWYgKF90aGlzLmlzU3VwcG9ydGVkQ29kZShsbmdPbmx5KSkgcmV0dXJuIGZvdW5kID0gbG5nT25seTtcbiAgICAgICAgICBmb3VuZCA9IF90aGlzLm9wdGlvbnMuc3VwcG9ydGVkTG5ncy5maW5kKGZ1bmN0aW9uIChzdXBwb3J0ZWRMbmcpIHtcbiAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRMbmcuaW5kZXhPZihsbmdPbmx5KSA9PT0gMCkgcmV0dXJuIHN1cHBvcnRlZExuZztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZm91bmQpIGZvdW5kID0gdGhpcy5nZXRGYWxsYmFja0NvZGVzKHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZylbMF07XG4gICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZhbGxiYWNrQ29kZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RmFsbGJhY2tDb2RlcyhmYWxsYmFja3MsIGNvZGUpIHtcbiAgICAgIGlmICghZmFsbGJhY2tzKSByZXR1cm4gW107XG4gICAgICBpZiAodHlwZW9mIGZhbGxiYWNrcyA9PT0gJ2Z1bmN0aW9uJykgZmFsbGJhY2tzID0gZmFsbGJhY2tzKGNvZGUpO1xuICAgICAgaWYgKHR5cGVvZiBmYWxsYmFja3MgPT09ICdzdHJpbmcnKSBmYWxsYmFja3MgPSBbZmFsbGJhY2tzXTtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGZhbGxiYWNrcykgPT09ICdbb2JqZWN0IEFycmF5XScpIHJldHVybiBmYWxsYmFja3M7XG4gICAgICBpZiAoIWNvZGUpIHJldHVybiBmYWxsYmFja3NbXCJkZWZhdWx0XCJdIHx8IFtdO1xuICAgICAgdmFyIGZvdW5kID0gZmFsbGJhY2tzW2NvZGVdO1xuICAgICAgaWYgKCFmb3VuZCkgZm91bmQgPSBmYWxsYmFja3NbdGhpcy5nZXRTY3JpcHRQYXJ0RnJvbUNvZGUoY29kZSldO1xuICAgICAgaWYgKCFmb3VuZCkgZm91bmQgPSBmYWxsYmFja3NbdGhpcy5mb3JtYXRMYW5ndWFnZUNvZGUoY29kZSldO1xuICAgICAgaWYgKCFmb3VuZCkgZm91bmQgPSBmYWxsYmFja3NbdGhpcy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShjb2RlKV07XG4gICAgICBpZiAoIWZvdW5kKSBmb3VuZCA9IGZhbGxiYWNrc1tcImRlZmF1bHRcIl07XG4gICAgICByZXR1cm4gZm91bmQgfHwgW107XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRvUmVzb2x2ZUhpZXJhcmNoeVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1Jlc29sdmVIaWVyYXJjaHkoY29kZSwgZmFsbGJhY2tDb2RlKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIGZhbGxiYWNrQ29kZXMgPSB0aGlzLmdldEZhbGxiYWNrQ29kZXMoZmFsbGJhY2tDb2RlIHx8IHRoaXMub3B0aW9ucy5mYWxsYmFja0xuZyB8fCBbXSwgY29kZSk7XG4gICAgICB2YXIgY29kZXMgPSBbXTtcblxuICAgICAgdmFyIGFkZENvZGUgPSBmdW5jdGlvbiBhZGRDb2RlKGMpIHtcbiAgICAgICAgaWYgKCFjKSByZXR1cm47XG5cbiAgICAgICAgaWYgKF90aGlzMi5pc1N1cHBvcnRlZENvZGUoYykpIHtcbiAgICAgICAgICBjb2Rlcy5wdXNoKGMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzMi5sb2dnZXIud2FybihcInJlamVjdGluZyBsYW5ndWFnZSBjb2RlIG5vdCBmb3VuZCBpbiBzdXBwb3J0ZWRMbmdzOiBcIi5jb25jYXQoYykpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAodHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnICYmIGNvZGUuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5sb2FkICE9PSAnbGFuZ3VhZ2VPbmx5JykgYWRkQ29kZSh0aGlzLmZvcm1hdExhbmd1YWdlQ29kZShjb2RlKSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubG9hZCAhPT0gJ2xhbmd1YWdlT25seScgJiYgdGhpcy5vcHRpb25zLmxvYWQgIT09ICdjdXJyZW50T25seScpIGFkZENvZGUodGhpcy5nZXRTY3JpcHRQYXJ0RnJvbUNvZGUoY29kZSkpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxvYWQgIT09ICdjdXJyZW50T25seScpIGFkZENvZGUodGhpcy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShjb2RlKSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2RlID09PSAnc3RyaW5nJykge1xuICAgICAgICBhZGRDb2RlKHRoaXMuZm9ybWF0TGFuZ3VhZ2VDb2RlKGNvZGUpKTtcbiAgICAgIH1cblxuICAgICAgZmFsbGJhY2tDb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChmYykge1xuICAgICAgICBpZiAoY29kZXMuaW5kZXhPZihmYykgPCAwKSBhZGRDb2RlKF90aGlzMi5mb3JtYXRMYW5ndWFnZUNvZGUoZmMpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvZGVzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMYW5ndWFnZVV0aWw7XG59KCk7XG5cbnZhciBzZXRzID0gW3tcbiAgbG5nczogWydhY2gnLCAnYWsnLCAnYW0nLCAnYXJuJywgJ2JyJywgJ2ZpbCcsICdndW4nLCAnbG4nLCAnbWZlJywgJ21nJywgJ21pJywgJ29jJywgJ3B0JywgJ3B0LUJSJywgJ3RnJywgJ3RsJywgJ3RpJywgJ3RyJywgJ3V6JywgJ3dhJ10sXG4gIG5yOiBbMSwgMl0sXG4gIGZjOiAxXG59LCB7XG4gIGxuZ3M6IFsnYWYnLCAnYW4nLCAnYXN0JywgJ2F6JywgJ2JnJywgJ2JuJywgJ2NhJywgJ2RhJywgJ2RlJywgJ2RldicsICdlbCcsICdlbicsICdlbycsICdlcycsICdldCcsICdldScsICdmaScsICdmbycsICdmdXInLCAnZnknLCAnZ2wnLCAnZ3UnLCAnaGEnLCAnaGknLCAnaHUnLCAnaHknLCAnaWEnLCAnaXQnLCAna24nLCAna3UnLCAnbGInLCAnbWFpJywgJ21sJywgJ21uJywgJ21yJywgJ25haCcsICduYXAnLCAnbmInLCAnbmUnLCAnbmwnLCAnbm4nLCAnbm8nLCAnbnNvJywgJ3BhJywgJ3BhcCcsICdwbXMnLCAncHMnLCAncHQtUFQnLCAncm0nLCAnc2NvJywgJ3NlJywgJ3NpJywgJ3NvJywgJ3NvbicsICdzcScsICdzdicsICdzdycsICd0YScsICd0ZScsICd0aycsICd1cicsICd5byddLFxuICBucjogWzEsIDJdLFxuICBmYzogMlxufSwge1xuICBsbmdzOiBbJ2F5JywgJ2JvJywgJ2NnZycsICdmYScsICdodCcsICdpZCcsICdqYScsICdqYm8nLCAna2EnLCAna2snLCAna20nLCAna28nLCAna3knLCAnbG8nLCAnbXMnLCAnc2FoJywgJ3N1JywgJ3RoJywgJ3R0JywgJ3VnJywgJ3ZpJywgJ3dvJywgJ3poJ10sXG4gIG5yOiBbMV0sXG4gIGZjOiAzXG59LCB7XG4gIGxuZ3M6IFsnYmUnLCAnYnMnLCAnY25yJywgJ2R6JywgJ2hyJywgJ3J1JywgJ3NyJywgJ3VrJ10sXG4gIG5yOiBbMSwgMiwgNV0sXG4gIGZjOiA0XG59LCB7XG4gIGxuZ3M6IFsnYXInXSxcbiAgbnI6IFswLCAxLCAyLCAzLCAxMSwgMTAwXSxcbiAgZmM6IDVcbn0sIHtcbiAgbG5nczogWydjcycsICdzayddLFxuICBucjogWzEsIDIsIDVdLFxuICBmYzogNlxufSwge1xuICBsbmdzOiBbJ2NzYicsICdwbCddLFxuICBucjogWzEsIDIsIDVdLFxuICBmYzogN1xufSwge1xuICBsbmdzOiBbJ2N5J10sXG4gIG5yOiBbMSwgMiwgMywgOF0sXG4gIGZjOiA4XG59LCB7XG4gIGxuZ3M6IFsnZnInXSxcbiAgbnI6IFsxLCAyXSxcbiAgZmM6IDlcbn0sIHtcbiAgbG5nczogWydnYSddLFxuICBucjogWzEsIDIsIDMsIDcsIDExXSxcbiAgZmM6IDEwXG59LCB7XG4gIGxuZ3M6IFsnZ2QnXSxcbiAgbnI6IFsxLCAyLCAzLCAyMF0sXG4gIGZjOiAxMVxufSwge1xuICBsbmdzOiBbJ2lzJ10sXG4gIG5yOiBbMSwgMl0sXG4gIGZjOiAxMlxufSwge1xuICBsbmdzOiBbJ2p2J10sXG4gIG5yOiBbMCwgMV0sXG4gIGZjOiAxM1xufSwge1xuICBsbmdzOiBbJ2t3J10sXG4gIG5yOiBbMSwgMiwgMywgNF0sXG4gIGZjOiAxNFxufSwge1xuICBsbmdzOiBbJ2x0J10sXG4gIG5yOiBbMSwgMiwgMTBdLFxuICBmYzogMTVcbn0sIHtcbiAgbG5nczogWydsdiddLFxuICBucjogWzEsIDIsIDBdLFxuICBmYzogMTZcbn0sIHtcbiAgbG5nczogWydtayddLFxuICBucjogWzEsIDJdLFxuICBmYzogMTdcbn0sIHtcbiAgbG5nczogWydtbmsnXSxcbiAgbnI6IFswLCAxLCAyXSxcbiAgZmM6IDE4XG59LCB7XG4gIGxuZ3M6IFsnbXQnXSxcbiAgbnI6IFsxLCAyLCAxMSwgMjBdLFxuICBmYzogMTlcbn0sIHtcbiAgbG5nczogWydvciddLFxuICBucjogWzIsIDFdLFxuICBmYzogMlxufSwge1xuICBsbmdzOiBbJ3JvJ10sXG4gIG5yOiBbMSwgMiwgMjBdLFxuICBmYzogMjBcbn0sIHtcbiAgbG5nczogWydzbCddLFxuICBucjogWzUsIDEsIDIsIDNdLFxuICBmYzogMjFcbn0sIHtcbiAgbG5nczogWydoZScsICdpdyddLFxuICBucjogWzEsIDIsIDIwLCAyMV0sXG4gIGZjOiAyMlxufV07XG52YXIgX3J1bGVzUGx1cmFsc1R5cGVzID0ge1xuICAxOiBmdW5jdGlvbiBfKG4pIHtcbiAgICByZXR1cm4gTnVtYmVyKG4gPiAxKTtcbiAgfSxcbiAgMjogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuICE9IDEpO1xuICB9LFxuICAzOiBmdW5jdGlvbiBfKG4pIHtcbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgNDogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuICUgMTAgPT0gMSAmJiBuICUgMTAwICE9IDExID8gMCA6IG4gJSAxMCA+PSAyICYmIG4gJSAxMCA8PSA0ICYmIChuICUgMTAwIDwgMTAgfHwgbiAlIDEwMCA+PSAyMCkgPyAxIDogMik7XG4gIH0sXG4gIDU6IGZ1bmN0aW9uIF8obikge1xuICAgIHJldHVybiBOdW1iZXIobiA9PSAwID8gMCA6IG4gPT0gMSA/IDEgOiBuID09IDIgPyAyIDogbiAlIDEwMCA+PSAzICYmIG4gJSAxMDAgPD0gMTAgPyAzIDogbiAlIDEwMCA+PSAxMSA/IDQgOiA1KTtcbiAgfSxcbiAgNjogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuID09IDEgPyAwIDogbiA+PSAyICYmIG4gPD0gNCA/IDEgOiAyKTtcbiAgfSxcbiAgNzogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuID09IDEgPyAwIDogbiAlIDEwID49IDIgJiYgbiAlIDEwIDw9IDQgJiYgKG4gJSAxMDAgPCAxMCB8fCBuICUgMTAwID49IDIwKSA/IDEgOiAyKTtcbiAgfSxcbiAgODogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuID09IDEgPyAwIDogbiA9PSAyID8gMSA6IG4gIT0gOCAmJiBuICE9IDExID8gMiA6IDMpO1xuICB9LFxuICA5OiBmdW5jdGlvbiBfKG4pIHtcbiAgICByZXR1cm4gTnVtYmVyKG4gPj0gMik7XG4gIH0sXG4gIDEwOiBmdW5jdGlvbiBfKG4pIHtcbiAgICByZXR1cm4gTnVtYmVyKG4gPT0gMSA/IDAgOiBuID09IDIgPyAxIDogbiA8IDcgPyAyIDogbiA8IDExID8gMyA6IDQpO1xuICB9LFxuICAxMTogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuID09IDEgfHwgbiA9PSAxMSA/IDAgOiBuID09IDIgfHwgbiA9PSAxMiA/IDEgOiBuID4gMiAmJiBuIDwgMjAgPyAyIDogMyk7XG4gIH0sXG4gIDEyOiBmdW5jdGlvbiBfKG4pIHtcbiAgICByZXR1cm4gTnVtYmVyKG4gJSAxMCAhPSAxIHx8IG4gJSAxMDAgPT0gMTEpO1xuICB9LFxuICAxMzogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuICE9PSAwKTtcbiAgfSxcbiAgMTQ6IGZ1bmN0aW9uIF8obikge1xuICAgIHJldHVybiBOdW1iZXIobiA9PSAxID8gMCA6IG4gPT0gMiA/IDEgOiBuID09IDMgPyAyIDogMyk7XG4gIH0sXG4gIDE1OiBmdW5jdGlvbiBfKG4pIHtcbiAgICByZXR1cm4gTnVtYmVyKG4gJSAxMCA9PSAxICYmIG4gJSAxMDAgIT0gMTEgPyAwIDogbiAlIDEwID49IDIgJiYgKG4gJSAxMDAgPCAxMCB8fCBuICUgMTAwID49IDIwKSA/IDEgOiAyKTtcbiAgfSxcbiAgMTY6IGZ1bmN0aW9uIF8obikge1xuICAgIHJldHVybiBOdW1iZXIobiAlIDEwID09IDEgJiYgbiAlIDEwMCAhPSAxMSA/IDAgOiBuICE9PSAwID8gMSA6IDIpO1xuICB9LFxuICAxNzogZnVuY3Rpb24gXyhuKSB7XG4gICAgcmV0dXJuIE51bWJlcihuID09IDEgfHwgbiAlIDEwID09IDEgJiYgbiAlIDEwMCAhPSAxMSA/IDAgOiAxKTtcbiAgfSxcbiAgMTg6IGZ1bmN0aW9uIF8obikge1xuICAgIHJldHVybiBOdW1iZXIobiA9PSAwID8gMCA6IG4gPT0gMSA/IDEgOiAyKTtcbiAgfSxcbiAgMTk6IGZ1bmN0aW9uIF8obikge1xuICAgIHJldHVybiBOdW1iZXIobiA9PSAxID8gMCA6IG4gPT0gMCB8fCBuICUgMTAwID4gMSAmJiBuICUgMTAwIDwgMTEgPyAxIDogbiAlIDEwMCA+IDEwICYmIG4gJSAxMDAgPCAyMCA/IDIgOiAzKTtcbiAgfSxcbiAgMjA6IGZ1bmN0aW9uIF8obikge1xuICAgIHJldHVybiBOdW1iZXIobiA9PSAxID8gMCA6IG4gPT0gMCB8fCBuICUgMTAwID4gMCAmJiBuICUgMTAwIDwgMjAgPyAxIDogMik7XG4gIH0sXG4gIDIxOiBmdW5jdGlvbiBfKG4pIHtcbiAgICByZXR1cm4gTnVtYmVyKG4gJSAxMDAgPT0gMSA/IDEgOiBuICUgMTAwID09IDIgPyAyIDogbiAlIDEwMCA9PSAzIHx8IG4gJSAxMDAgPT0gNCA/IDMgOiAwKTtcbiAgfSxcbiAgMjI6IGZ1bmN0aW9uIF8obikge1xuICAgIHJldHVybiBOdW1iZXIobiA9PSAxID8gMCA6IG4gPT0gMiA/IDEgOiAobiA8IDAgfHwgbiA+IDEwKSAmJiBuICUgMTAgPT0gMCA/IDIgOiAzKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gY3JlYXRlUnVsZXMoKSB7XG4gIHZhciBydWxlcyA9IHt9O1xuICBzZXRzLmZvckVhY2goZnVuY3Rpb24gKHNldCkge1xuICAgIHNldC5sbmdzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcbiAgICAgIHJ1bGVzW2xdID0ge1xuICAgICAgICBudW1iZXJzOiBzZXQubnIsXG4gICAgICAgIHBsdXJhbHM6IF9ydWxlc1BsdXJhbHNUeXBlc1tzZXQuZmNdXG4gICAgICB9O1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG52YXIgUGx1cmFsUmVzb2x2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBsdXJhbFJlc29sdmVyKGxhbmd1YWdlVXRpbHMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGx1cmFsUmVzb2x2ZXIpO1xuXG4gICAgdGhpcy5sYW5ndWFnZVV0aWxzID0gbGFuZ3VhZ2VVdGlscztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubG9nZ2VyID0gYmFzZUxvZ2dlci5jcmVhdGUoJ3BsdXJhbFJlc29sdmVyJyk7XG4gICAgdGhpcy5ydWxlcyA9IGNyZWF0ZVJ1bGVzKCk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUGx1cmFsUmVzb2x2ZXIsIFt7XG4gICAga2V5OiBcImFkZFJ1bGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkUnVsZShsbmcsIG9iaikge1xuICAgICAgdGhpcy5ydWxlc1tsbmddID0gb2JqO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRSdWxlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFJ1bGUoY29kZSkge1xuICAgICAgcmV0dXJuIHRoaXMucnVsZXNbY29kZV0gfHwgdGhpcy5ydWxlc1t0aGlzLmxhbmd1YWdlVXRpbHMuZ2V0TGFuZ3VhZ2VQYXJ0RnJvbUNvZGUoY29kZSldO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJuZWVkc1BsdXJhbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBuZWVkc1BsdXJhbChjb2RlKSB7XG4gICAgICB2YXIgcnVsZSA9IHRoaXMuZ2V0UnVsZShjb2RlKTtcbiAgICAgIHJldHVybiBydWxlICYmIHJ1bGUubnVtYmVycy5sZW5ndGggPiAxO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRQbHVyYWxGb3Jtc09mS2V5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFBsdXJhbEZvcm1zT2ZLZXkoY29kZSwga2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRTdWZmaXhlcyhjb2RlKS5tYXAoZnVuY3Rpb24gKHN1ZmZpeCkge1xuICAgICAgICByZXR1cm4ga2V5ICsgc3VmZml4O1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFN1ZmZpeGVzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFN1ZmZpeGVzKGNvZGUpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBydWxlID0gdGhpcy5nZXRSdWxlKGNvZGUpO1xuXG4gICAgICBpZiAoIXJ1bGUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcnVsZS5udW1iZXJzLm1hcChmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5nZXRTdWZmaXgoY29kZSwgbnVtYmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRTdWZmaXhcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U3VmZml4KGNvZGUsIGNvdW50KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHJ1bGUgPSB0aGlzLmdldFJ1bGUoY29kZSk7XG5cbiAgICAgIGlmIChydWxlKSB7XG4gICAgICAgIHZhciBpZHggPSBydWxlLm5vQWJzID8gcnVsZS5wbHVyYWxzKGNvdW50KSA6IHJ1bGUucGx1cmFscyhNYXRoLmFicyhjb3VudCkpO1xuICAgICAgICB2YXIgc3VmZml4ID0gcnVsZS5udW1iZXJzW2lkeF07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeCAmJiBydWxlLm51bWJlcnMubGVuZ3RoID09PSAyICYmIHJ1bGUubnVtYmVyc1swXSA9PT0gMSkge1xuICAgICAgICAgIGlmIChzdWZmaXggPT09IDIpIHtcbiAgICAgICAgICAgIHN1ZmZpeCA9ICdwbHVyYWwnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3VmZml4ID09PSAxKSB7XG4gICAgICAgICAgICBzdWZmaXggPSAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmV0dXJuU3VmZml4ID0gZnVuY3Rpb24gcmV0dXJuU3VmZml4KCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczIub3B0aW9ucy5wcmVwZW5kICYmIHN1ZmZpeC50b1N0cmluZygpID8gX3RoaXMyLm9wdGlvbnMucHJlcGVuZCArIHN1ZmZpeC50b1N0cmluZygpIDogc3VmZml4LnRvU3RyaW5nKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXRpYmlsaXR5SlNPTiA9PT0gJ3YxJykge1xuICAgICAgICAgIGlmIChzdWZmaXggPT09IDEpIHJldHVybiAnJztcbiAgICAgICAgICBpZiAodHlwZW9mIHN1ZmZpeCA9PT0gJ251bWJlcicpIHJldHVybiBcIl9wbHVyYWxfXCIuY29uY2F0KHN1ZmZpeC50b1N0cmluZygpKTtcbiAgICAgICAgICByZXR1cm4gcmV0dXJuU3VmZml4KCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OID09PSAndjInKSB7XG4gICAgICAgICAgcmV0dXJuIHJldHVyblN1ZmZpeCgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zaW1wbGlmeVBsdXJhbFN1ZmZpeCAmJiBydWxlLm51bWJlcnMubGVuZ3RoID09PSAyICYmIHJ1bGUubnVtYmVyc1swXSA9PT0gMSkge1xuICAgICAgICAgIHJldHVybiByZXR1cm5TdWZmaXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJlcGVuZCAmJiBpZHgudG9TdHJpbmcoKSA/IHRoaXMub3B0aW9ucy5wcmVwZW5kICsgaWR4LnRvU3RyaW5nKCkgOiBpZHgudG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2dnZXIud2FybihcIm5vIHBsdXJhbCBydWxlIGZvdW5kIGZvcjogXCIuY29uY2F0KGNvZGUpKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGx1cmFsUmVzb2x2ZXI7XG59KCk7XG5cbnZhciBJbnRlcnBvbGF0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEludGVycG9sYXRvcigpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSW50ZXJwb2xhdG9yKTtcblxuICAgIHRoaXMubG9nZ2VyID0gYmFzZUxvZ2dlci5jcmVhdGUoJ2ludGVycG9sYXRvcicpO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICB0aGlzLmZvcm1hdCA9IG9wdGlvbnMuaW50ZXJwb2xhdGlvbiAmJiBvcHRpb25zLmludGVycG9sYXRpb24uZm9ybWF0IHx8IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG5cbiAgICB0aGlzLmluaXQob3B0aW9ucyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoSW50ZXJwb2xhdG9yLCBbe1xuICAgIGtleTogXCJpbml0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICBpZiAoIW9wdGlvbnMuaW50ZXJwb2xhdGlvbikgb3B0aW9ucy5pbnRlcnBvbGF0aW9uID0ge1xuICAgICAgICBlc2NhcGVWYWx1ZTogdHJ1ZVxuICAgICAgfTtcbiAgICAgIHZhciBpT3B0cyA9IG9wdGlvbnMuaW50ZXJwb2xhdGlvbjtcbiAgICAgIHRoaXMuZXNjYXBlID0gaU9wdHMuZXNjYXBlICE9PSB1bmRlZmluZWQgPyBpT3B0cy5lc2NhcGUgOiBlc2NhcGU7XG4gICAgICB0aGlzLmVzY2FwZVZhbHVlID0gaU9wdHMuZXNjYXBlVmFsdWUgIT09IHVuZGVmaW5lZCA/IGlPcHRzLmVzY2FwZVZhbHVlIDogdHJ1ZTtcbiAgICAgIHRoaXMudXNlUmF3VmFsdWVUb0VzY2FwZSA9IGlPcHRzLnVzZVJhd1ZhbHVlVG9Fc2NhcGUgIT09IHVuZGVmaW5lZCA/IGlPcHRzLnVzZVJhd1ZhbHVlVG9Fc2NhcGUgOiBmYWxzZTtcbiAgICAgIHRoaXMucHJlZml4ID0gaU9wdHMucHJlZml4ID8gcmVnZXhFc2NhcGUoaU9wdHMucHJlZml4KSA6IGlPcHRzLnByZWZpeEVzY2FwZWQgfHwgJ3t7JztcbiAgICAgIHRoaXMuc3VmZml4ID0gaU9wdHMuc3VmZml4ID8gcmVnZXhFc2NhcGUoaU9wdHMuc3VmZml4KSA6IGlPcHRzLnN1ZmZpeEVzY2FwZWQgfHwgJ319JztcbiAgICAgIHRoaXMuZm9ybWF0U2VwYXJhdG9yID0gaU9wdHMuZm9ybWF0U2VwYXJhdG9yID8gaU9wdHMuZm9ybWF0U2VwYXJhdG9yIDogaU9wdHMuZm9ybWF0U2VwYXJhdG9yIHx8ICcsJztcbiAgICAgIHRoaXMudW5lc2NhcGVQcmVmaXggPSBpT3B0cy51bmVzY2FwZVN1ZmZpeCA/ICcnIDogaU9wdHMudW5lc2NhcGVQcmVmaXggfHwgJy0nO1xuICAgICAgdGhpcy51bmVzY2FwZVN1ZmZpeCA9IHRoaXMudW5lc2NhcGVQcmVmaXggPyAnJyA6IGlPcHRzLnVuZXNjYXBlU3VmZml4IHx8ICcnO1xuICAgICAgdGhpcy5uZXN0aW5nUHJlZml4ID0gaU9wdHMubmVzdGluZ1ByZWZpeCA/IHJlZ2V4RXNjYXBlKGlPcHRzLm5lc3RpbmdQcmVmaXgpIDogaU9wdHMubmVzdGluZ1ByZWZpeEVzY2FwZWQgfHwgcmVnZXhFc2NhcGUoJyR0KCcpO1xuICAgICAgdGhpcy5uZXN0aW5nU3VmZml4ID0gaU9wdHMubmVzdGluZ1N1ZmZpeCA/IHJlZ2V4RXNjYXBlKGlPcHRzLm5lc3RpbmdTdWZmaXgpIDogaU9wdHMubmVzdGluZ1N1ZmZpeEVzY2FwZWQgfHwgcmVnZXhFc2NhcGUoJyknKTtcbiAgICAgIHRoaXMubmVzdGluZ09wdGlvbnNTZXBhcmF0b3IgPSBpT3B0cy5uZXN0aW5nT3B0aW9uc1NlcGFyYXRvciA/IGlPcHRzLm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yIDogaU9wdHMubmVzdGluZ09wdGlvbnNTZXBhcmF0b3IgfHwgJywnO1xuICAgICAgdGhpcy5tYXhSZXBsYWNlcyA9IGlPcHRzLm1heFJlcGxhY2VzID8gaU9wdHMubWF4UmVwbGFjZXMgOiAxMDAwO1xuICAgICAgdGhpcy5hbHdheXNGb3JtYXQgPSBpT3B0cy5hbHdheXNGb3JtYXQgIT09IHVuZGVmaW5lZCA/IGlPcHRzLmFsd2F5c0Zvcm1hdCA6IGZhbHNlO1xuICAgICAgdGhpcy5yZXNldFJlZ0V4cCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHRoaXMuaW5pdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZXNldFJlZ0V4cFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXNldFJlZ0V4cCgpIHtcbiAgICAgIHZhciByZWdleHBTdHIgPSBcIlwiLmNvbmNhdCh0aGlzLnByZWZpeCwgXCIoLis/KVwiKS5jb25jYXQodGhpcy5zdWZmaXgpO1xuICAgICAgdGhpcy5yZWdleHAgPSBuZXcgUmVnRXhwKHJlZ2V4cFN0ciwgJ2cnKTtcbiAgICAgIHZhciByZWdleHBVbmVzY2FwZVN0ciA9IFwiXCIuY29uY2F0KHRoaXMucHJlZml4KS5jb25jYXQodGhpcy51bmVzY2FwZVByZWZpeCwgXCIoLis/KVwiKS5jb25jYXQodGhpcy51bmVzY2FwZVN1ZmZpeCkuY29uY2F0KHRoaXMuc3VmZml4KTtcbiAgICAgIHRoaXMucmVnZXhwVW5lc2NhcGUgPSBuZXcgUmVnRXhwKHJlZ2V4cFVuZXNjYXBlU3RyLCAnZycpO1xuICAgICAgdmFyIG5lc3RpbmdSZWdleHBTdHIgPSBcIlwiLmNvbmNhdCh0aGlzLm5lc3RpbmdQcmVmaXgsIFwiKC4rPylcIikuY29uY2F0KHRoaXMubmVzdGluZ1N1ZmZpeCk7XG4gICAgICB0aGlzLm5lc3RpbmdSZWdleHAgPSBuZXcgUmVnRXhwKG5lc3RpbmdSZWdleHBTdHIsICdnJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImludGVycG9sYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGludGVycG9sYXRlKHN0ciwgZGF0YSwgbG5nLCBvcHRpb25zKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgbWF0Y2g7XG4gICAgICB2YXIgdmFsdWU7XG4gICAgICB2YXIgcmVwbGFjZXM7XG4gICAgICB2YXIgZGVmYXVsdERhdGEgPSB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24gJiYgdGhpcy5vcHRpb25zLmludGVycG9sYXRpb24uZGVmYXVsdFZhcmlhYmxlcyB8fCB7fTtcblxuICAgICAgZnVuY3Rpb24gcmVnZXhTYWZlKHZhbCkge1xuICAgICAgICByZXR1cm4gdmFsLnJlcGxhY2UoL1xcJC9nLCAnJCQkJCcpO1xuICAgICAgfVxuXG4gICAgICB2YXIgaGFuZGxlRm9ybWF0ID0gZnVuY3Rpb24gaGFuZGxlRm9ybWF0KGtleSkge1xuICAgICAgICBpZiAoa2V5LmluZGV4T2YoX3RoaXMuZm9ybWF0U2VwYXJhdG9yKSA8IDApIHtcbiAgICAgICAgICB2YXIgcGF0aCA9IGdldFBhdGhXaXRoRGVmYXVsdHMoZGF0YSwgZGVmYXVsdERhdGEsIGtleSk7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmFsd2F5c0Zvcm1hdCA/IF90aGlzLmZvcm1hdChwYXRoLCB1bmRlZmluZWQsIGxuZykgOiBwYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHAgPSBrZXkuc3BsaXQoX3RoaXMuZm9ybWF0U2VwYXJhdG9yKTtcbiAgICAgICAgdmFyIGsgPSBwLnNoaWZ0KCkudHJpbSgpO1xuICAgICAgICB2YXIgZiA9IHAuam9pbihfdGhpcy5mb3JtYXRTZXBhcmF0b3IpLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIF90aGlzLmZvcm1hdChnZXRQYXRoV2l0aERlZmF1bHRzKGRhdGEsIGRlZmF1bHREYXRhLCBrKSwgZiwgbG5nLCBvcHRpb25zKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMucmVzZXRSZWdFeHAoKTtcbiAgICAgIHZhciBtaXNzaW5nSW50ZXJwb2xhdGlvbkhhbmRsZXIgPSBvcHRpb25zICYmIG9wdGlvbnMubWlzc2luZ0ludGVycG9sYXRpb25IYW5kbGVyIHx8IHRoaXMub3B0aW9ucy5taXNzaW5nSW50ZXJwb2xhdGlvbkhhbmRsZXI7XG4gICAgICB2YXIgc2tpcE9uVmFyaWFibGVzID0gb3B0aW9ucyAmJiBvcHRpb25zLmludGVycG9sYXRpb24gJiYgb3B0aW9ucy5pbnRlcnBvbGF0aW9uLnNraXBPblZhcmlhYmxlcyB8fCB0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5za2lwT25WYXJpYWJsZXM7XG4gICAgICB2YXIgdG9kb3MgPSBbe1xuICAgICAgICByZWdleDogdGhpcy5yZWdleHBVbmVzY2FwZSxcbiAgICAgICAgc2FmZVZhbHVlOiBmdW5jdGlvbiBzYWZlVmFsdWUodmFsKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZ2V4U2FmZSh2YWwpO1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIHJlZ2V4OiB0aGlzLnJlZ2V4cCxcbiAgICAgICAgc2FmZVZhbHVlOiBmdW5jdGlvbiBzYWZlVmFsdWUodmFsKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmVzY2FwZVZhbHVlID8gcmVnZXhTYWZlKF90aGlzLmVzY2FwZSh2YWwpKSA6IHJlZ2V4U2FmZSh2YWwpO1xuICAgICAgICB9XG4gICAgICB9XTtcbiAgICAgIHRvZG9zLmZvckVhY2goZnVuY3Rpb24gKHRvZG8pIHtcbiAgICAgICAgcmVwbGFjZXMgPSAwO1xuXG4gICAgICAgIHdoaWxlIChtYXRjaCA9IHRvZG8ucmVnZXguZXhlYyhzdHIpKSB7XG4gICAgICAgICAgdmFsdWUgPSBoYW5kbGVGb3JtYXQobWF0Y2hbMV0udHJpbSgpKTtcblxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICB2YXIgdGVtcCA9IG1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcihzdHIsIG1hdGNoLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgdmFsdWUgPSB0eXBlb2YgdGVtcCA9PT0gJ3N0cmluZycgPyB0ZW1wIDogJyc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNraXBPblZhcmlhYmxlcykge1xuICAgICAgICAgICAgICB2YWx1ZSA9IG1hdGNoWzBdO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIF90aGlzLmxvZ2dlci53YXJuKFwibWlzc2VkIHRvIHBhc3MgaW4gdmFyaWFibGUgXCIuY29uY2F0KG1hdGNoWzFdLCBcIiBmb3IgaW50ZXJwb2xhdGluZyBcIikuY29uY2F0KHN0cikpO1xuXG4gICAgICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmICFfdGhpcy51c2VSYXdWYWx1ZVRvRXNjYXBlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG1ha2VTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKG1hdGNoWzBdLCB0b2RvLnNhZmVWYWx1ZSh2YWx1ZSkpO1xuICAgICAgICAgIHRvZG8ucmVnZXgubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICByZXBsYWNlcysrO1xuXG4gICAgICAgICAgaWYgKHJlcGxhY2VzID49IF90aGlzLm1heFJlcGxhY2VzKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibmVzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBuZXN0KHN0ciwgZmMpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge307XG4gICAgICB2YXIgbWF0Y2g7XG4gICAgICB2YXIgdmFsdWU7XG5cbiAgICAgIHZhciBjbG9uZWRPcHRpb25zID0gX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucyk7XG5cbiAgICAgIGNsb25lZE9wdGlvbnMuYXBwbHlQb3N0UHJvY2Vzc29yID0gZmFsc2U7XG4gICAgICBkZWxldGUgY2xvbmVkT3B0aW9ucy5kZWZhdWx0VmFsdWU7XG5cbiAgICAgIGZ1bmN0aW9uIGhhbmRsZUhhc09wdGlvbnMoa2V5LCBpbmhlcml0ZWRPcHRpb25zKSB7XG4gICAgICAgIHZhciBzZXAgPSB0aGlzLm5lc3RpbmdPcHRpb25zU2VwYXJhdG9yO1xuICAgICAgICBpZiAoa2V5LmluZGV4T2Yoc2VwKSA8IDApIHJldHVybiBrZXk7XG4gICAgICAgIHZhciBjID0ga2V5LnNwbGl0KG5ldyBSZWdFeHAoXCJcIi5jb25jYXQoc2VwLCBcIlsgXSp7XCIpKSk7XG4gICAgICAgIHZhciBvcHRpb25zU3RyaW5nID0gXCJ7XCIuY29uY2F0KGNbMV0pO1xuICAgICAgICBrZXkgPSBjWzBdO1xuICAgICAgICBvcHRpb25zU3RyaW5nID0gdGhpcy5pbnRlcnBvbGF0ZShvcHRpb25zU3RyaW5nLCBjbG9uZWRPcHRpb25zKTtcbiAgICAgICAgb3B0aW9uc1N0cmluZyA9IG9wdGlvbnNTdHJpbmcucmVwbGFjZSgvJy9nLCAnXCInKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNsb25lZE9wdGlvbnMgPSBKU09OLnBhcnNlKG9wdGlvbnNTdHJpbmcpO1xuICAgICAgICAgIGlmIChpbmhlcml0ZWRPcHRpb25zKSBjbG9uZWRPcHRpb25zID0gX29iamVjdFNwcmVhZCh7fSwgaW5oZXJpdGVkT3B0aW9ucywgY2xvbmVkT3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFwiZmFpbGVkIHBhcnNpbmcgb3B0aW9ucyBzdHJpbmcgaW4gbmVzdGluZyBmb3Iga2V5IFwiLmNvbmNhdChrZXkpLCBlKTtcbiAgICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoa2V5KS5jb25jYXQoc2VwKS5jb25jYXQob3B0aW9uc1N0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBkZWxldGUgY2xvbmVkT3B0aW9ucy5kZWZhdWx0VmFsdWU7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChtYXRjaCA9IHRoaXMubmVzdGluZ1JlZ2V4cC5leGVjKHN0cikpIHtcbiAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSBbXTtcbiAgICAgICAgdmFyIGRvUmVkdWNlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKG1hdGNoWzBdLmluY2x1ZGVzKHRoaXMuZm9ybWF0U2VwYXJhdG9yKSAmJiAhL3suKn0vLnRlc3QobWF0Y2hbMV0pKSB7XG4gICAgICAgICAgdmFyIHIgPSBtYXRjaFsxXS5zcGxpdCh0aGlzLmZvcm1hdFNlcGFyYXRvcikubWFwKGZ1bmN0aW9uIChlbGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbS50cmltKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbWF0Y2hbMV0gPSByLnNoaWZ0KCk7XG4gICAgICAgICAgZm9ybWF0dGVycyA9IHI7XG4gICAgICAgICAgZG9SZWR1Y2UgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSBmYyhoYW5kbGVIYXNPcHRpb25zLmNhbGwodGhpcywgbWF0Y2hbMV0udHJpbSgpLCBjbG9uZWRPcHRpb25zKSwgY2xvbmVkT3B0aW9ucyk7XG4gICAgICAgIGlmICh2YWx1ZSAmJiBtYXRjaFswXSA9PT0gc3RyICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHZhbHVlID0gbWFrZVN0cmluZyh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJtaXNzZWQgdG8gcmVzb2x2ZSBcIi5jb25jYXQobWF0Y2hbMV0sIFwiIGZvciBuZXN0aW5nIFwiKS5jb25jYXQoc3RyKSk7XG4gICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb1JlZHVjZSkge1xuICAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVycy5yZWR1Y2UoZnVuY3Rpb24gKHYsIGYpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczIuZm9ybWF0KHYsIGYsIG9wdGlvbnMubG5nLCBvcHRpb25zKTtcbiAgICAgICAgICB9LCB2YWx1ZS50cmltKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UobWF0Y2hbMF0sIHZhbHVlKTtcbiAgICAgICAgdGhpcy5yZWdleHAubGFzdEluZGV4ID0gMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gSW50ZXJwb2xhdG9yO1xufSgpO1xuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCB3aGF0KSB7XG4gIHZhciBmb3VuZCA9IGFyci5pbmRleE9mKHdoYXQpO1xuXG4gIHdoaWxlIChmb3VuZCAhPT0gLTEpIHtcbiAgICBhcnIuc3BsaWNlKGZvdW5kLCAxKTtcbiAgICBmb3VuZCA9IGFyci5pbmRleE9mKHdoYXQpO1xuICB9XG59XG5cbnZhciBDb25uZWN0b3IgPSBmdW5jdGlvbiAoX0V2ZW50RW1pdHRlcikge1xuICBfaW5oZXJpdHMoQ29ubmVjdG9yLCBfRXZlbnRFbWl0dGVyKTtcblxuICBmdW5jdGlvbiBDb25uZWN0b3IoYmFja2VuZCwgc3RvcmUsIHNlcnZpY2VzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IHt9O1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbm5lY3Rvcik7XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihDb25uZWN0b3IpLmNhbGwodGhpcykpO1xuXG4gICAgaWYgKGlzSUUxMCkge1xuICAgICAgRXZlbnRFbWl0dGVyLmNhbGwoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuICAgIH1cblxuICAgIF90aGlzLmJhY2tlbmQgPSBiYWNrZW5kO1xuICAgIF90aGlzLnN0b3JlID0gc3RvcmU7XG4gICAgX3RoaXMuc2VydmljZXMgPSBzZXJ2aWNlcztcbiAgICBfdGhpcy5sYW5ndWFnZVV0aWxzID0gc2VydmljZXMubGFuZ3VhZ2VVdGlscztcbiAgICBfdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICBfdGhpcy5sb2dnZXIgPSBiYXNlTG9nZ2VyLmNyZWF0ZSgnYmFja2VuZENvbm5lY3RvcicpO1xuICAgIF90aGlzLnN0YXRlID0ge307XG4gICAgX3RoaXMucXVldWUgPSBbXTtcblxuICAgIGlmIChfdGhpcy5iYWNrZW5kICYmIF90aGlzLmJhY2tlbmQuaW5pdCkge1xuICAgICAgX3RoaXMuYmFja2VuZC5pbml0KHNlcnZpY2VzLCBvcHRpb25zLmJhY2tlbmQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDb25uZWN0b3IsIFt7XG4gICAga2V5OiBcInF1ZXVlTG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBxdWV1ZUxvYWQobGFuZ3VhZ2VzLCBuYW1lc3BhY2VzLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciB0b0xvYWQgPSBbXTtcbiAgICAgIHZhciBwZW5kaW5nID0gW107XG4gICAgICB2YXIgdG9Mb2FkTGFuZ3VhZ2VzID0gW107XG4gICAgICB2YXIgdG9Mb2FkTmFtZXNwYWNlcyA9IFtdO1xuICAgICAgbGFuZ3VhZ2VzLmZvckVhY2goZnVuY3Rpb24gKGxuZykge1xuICAgICAgICB2YXIgaGFzQWxsTmFtZXNwYWNlcyA9IHRydWU7XG4gICAgICAgIG5hbWVzcGFjZXMuZm9yRWFjaChmdW5jdGlvbiAobnMpIHtcbiAgICAgICAgICB2YXIgbmFtZSA9IFwiXCIuY29uY2F0KGxuZywgXCJ8XCIpLmNvbmNhdChucyk7XG5cbiAgICAgICAgICBpZiAoIW9wdGlvbnMucmVsb2FkICYmIF90aGlzMi5zdG9yZS5oYXNSZXNvdXJjZUJ1bmRsZShsbmcsIG5zKSkge1xuICAgICAgICAgICAgX3RoaXMyLnN0YXRlW25hbWVdID0gMjtcbiAgICAgICAgICB9IGVsc2UgaWYgKF90aGlzMi5zdGF0ZVtuYW1lXSA8IDApIDsgZWxzZSBpZiAoX3RoaXMyLnN0YXRlW25hbWVdID09PSAxKSB7XG4gICAgICAgICAgICBpZiAocGVuZGluZy5pbmRleE9mKG5hbWUpIDwgMCkgcGVuZGluZy5wdXNoKG5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpczIuc3RhdGVbbmFtZV0gPSAxO1xuICAgICAgICAgICAgaGFzQWxsTmFtZXNwYWNlcyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHBlbmRpbmcuaW5kZXhPZihuYW1lKSA8IDApIHBlbmRpbmcucHVzaChuYW1lKTtcbiAgICAgICAgICAgIGlmICh0b0xvYWQuaW5kZXhPZihuYW1lKSA8IDApIHRvTG9hZC5wdXNoKG5hbWUpO1xuICAgICAgICAgICAgaWYgKHRvTG9hZE5hbWVzcGFjZXMuaW5kZXhPZihucykgPCAwKSB0b0xvYWROYW1lc3BhY2VzLnB1c2gobnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaGFzQWxsTmFtZXNwYWNlcykgdG9Mb2FkTGFuZ3VhZ2VzLnB1c2gobG5nKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodG9Mb2FkLmxlbmd0aCB8fCBwZW5kaW5nLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnF1ZXVlLnB1c2goe1xuICAgICAgICAgIHBlbmRpbmc6IHBlbmRpbmcsXG4gICAgICAgICAgbG9hZGVkOiB7fSxcbiAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFja1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9Mb2FkOiB0b0xvYWQsXG4gICAgICAgIHBlbmRpbmc6IHBlbmRpbmcsXG4gICAgICAgIHRvTG9hZExhbmd1YWdlczogdG9Mb2FkTGFuZ3VhZ2VzLFxuICAgICAgICB0b0xvYWROYW1lc3BhY2VzOiB0b0xvYWROYW1lc3BhY2VzXG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJsb2FkZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZGVkKG5hbWUsIGVyciwgZGF0YSkge1xuICAgICAgdmFyIHMgPSBuYW1lLnNwbGl0KCd8Jyk7XG4gICAgICB2YXIgbG5nID0gc1swXTtcbiAgICAgIHZhciBucyA9IHNbMV07XG4gICAgICBpZiAoZXJyKSB0aGlzLmVtaXQoJ2ZhaWxlZExvYWRpbmcnLCBsbmcsIG5zLCBlcnIpO1xuXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLnN0b3JlLmFkZFJlc291cmNlQnVuZGxlKGxuZywgbnMsIGRhdGEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YXRlW25hbWVdID0gZXJyID8gLTEgOiAyO1xuICAgICAgdmFyIGxvYWRlZCA9IHt9O1xuICAgICAgdGhpcy5xdWV1ZS5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7XG4gICAgICAgIHB1c2hQYXRoKHEubG9hZGVkLCBbbG5nXSwgbnMpO1xuICAgICAgICByZW1vdmUocS5wZW5kaW5nLCBuYW1lKTtcbiAgICAgICAgaWYgKGVycikgcS5lcnJvcnMucHVzaChlcnIpO1xuXG4gICAgICAgIGlmIChxLnBlbmRpbmcubGVuZ3RoID09PSAwICYmICFxLmRvbmUpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhxLmxvYWRlZCkuZm9yRWFjaChmdW5jdGlvbiAobCkge1xuICAgICAgICAgICAgaWYgKCFsb2FkZWRbbF0pIGxvYWRlZFtsXSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAocS5sb2FkZWRbbF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHEubG9hZGVkW2xdLmZvckVhY2goZnVuY3Rpb24gKG5zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvYWRlZFtsXS5pbmRleE9mKG5zKSA8IDApIGxvYWRlZFtsXS5wdXNoKG5zKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcS5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChxLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHEuY2FsbGJhY2socS5lcnJvcnMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBxLmNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZW1pdCgnbG9hZGVkJywgbG9hZGVkKTtcbiAgICAgIHRoaXMucXVldWUgPSB0aGlzLnF1ZXVlLmZpbHRlcihmdW5jdGlvbiAocSkge1xuICAgICAgICByZXR1cm4gIXEuZG9uZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZWFkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlYWQobG5nLCBucywgZmNOYW1lKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIHRyaWVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAwO1xuICAgICAgdmFyIHdhaXQgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDM1MDtcbiAgICAgIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ID8gYXJndW1lbnRzWzVdIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCFsbmcubGVuZ3RoKSByZXR1cm4gY2FsbGJhY2sobnVsbCwge30pO1xuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFtmY05hbWVdKGxuZywgbnMsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICAgICAgaWYgKGVyciAmJiBkYXRhICYmIHRyaWVkIDwgNSkge1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMzLnJlYWQuY2FsbChfdGhpczMsIGxuZywgbnMsIGZjTmFtZSwgdHJpZWQgKyAxLCB3YWl0ICogMiwgY2FsbGJhY2spO1xuICAgICAgICAgIH0sIHdhaXQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxiYWNrKGVyciwgZGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicHJlcGFyZUxvYWRpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcHJlcGFyZUxvYWRpbmcobGFuZ3VhZ2VzLCBuYW1lc3BhY2VzKSB7XG4gICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHt9O1xuICAgICAgdmFyIGNhbGxiYWNrID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgPyBhcmd1bWVudHNbM10gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghdGhpcy5iYWNrZW5kKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ05vIGJhY2tlbmQgd2FzIGFkZGVkIHZpYSBpMThuZXh0LnVzZS4gV2lsbCBub3QgbG9hZCByZXNvdXJjZXMuJyk7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayAmJiBjYWxsYmFjaygpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxhbmd1YWdlcyA9PT0gJ3N0cmluZycpIGxhbmd1YWdlcyA9IHRoaXMubGFuZ3VhZ2VVdGlscy50b1Jlc29sdmVIaWVyYXJjaHkobGFuZ3VhZ2VzKTtcbiAgICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycpIG5hbWVzcGFjZXMgPSBbbmFtZXNwYWNlc107XG4gICAgICB2YXIgdG9Mb2FkID0gdGhpcy5xdWV1ZUxvYWQobGFuZ3VhZ2VzLCBuYW1lc3BhY2VzLCBvcHRpb25zLCBjYWxsYmFjayk7XG5cbiAgICAgIGlmICghdG9Mb2FkLnRvTG9hZC5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCF0b0xvYWQucGVuZGluZy5sZW5ndGgpIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICB0b0xvYWQudG9Mb2FkLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgX3RoaXM0LmxvYWRPbmUobmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsb2FkKGxhbmd1YWdlcywgbmFtZXNwYWNlcywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMucHJlcGFyZUxvYWRpbmcobGFuZ3VhZ2VzLCBuYW1lc3BhY2VzLCB7fSwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZWxvYWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVsb2FkKGxhbmd1YWdlcywgbmFtZXNwYWNlcywgY2FsbGJhY2spIHtcbiAgICAgIHRoaXMucHJlcGFyZUxvYWRpbmcobGFuZ3VhZ2VzLCBuYW1lc3BhY2VzLCB7XG4gICAgICAgIHJlbG9hZDogdHJ1ZVxuICAgICAgfSwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJsb2FkT25lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWRPbmUobmFtZSkge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHZhciBwcmVmaXggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnO1xuICAgICAgdmFyIHMgPSBuYW1lLnNwbGl0KCd8Jyk7XG4gICAgICB2YXIgbG5nID0gc1swXTtcbiAgICAgIHZhciBucyA9IHNbMV07XG4gICAgICB0aGlzLnJlYWQobG5nLCBucywgJ3JlYWQnLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZnVuY3Rpb24gKGVyciwgZGF0YSkge1xuICAgICAgICBpZiAoZXJyKSBfdGhpczUubG9nZ2VyLndhcm4oXCJcIi5jb25jYXQocHJlZml4LCBcImxvYWRpbmcgbmFtZXNwYWNlIFwiKS5jb25jYXQobnMsIFwiIGZvciBsYW5ndWFnZSBcIikuY29uY2F0KGxuZywgXCIgZmFpbGVkXCIpLCBlcnIpO1xuICAgICAgICBpZiAoIWVyciAmJiBkYXRhKSBfdGhpczUubG9nZ2VyLmxvZyhcIlwiLmNvbmNhdChwcmVmaXgsIFwibG9hZGVkIG5hbWVzcGFjZSBcIikuY29uY2F0KG5zLCBcIiBmb3IgbGFuZ3VhZ2UgXCIpLmNvbmNhdChsbmcpLCBkYXRhKTtcblxuICAgICAgICBfdGhpczUubG9hZGVkKG5hbWUsIGVyciwgZGF0YSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2F2ZU1pc3NpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2F2ZU1pc3NpbmcobGFuZ3VhZ2VzLCBuYW1lc3BhY2UsIGtleSwgZmFsbGJhY2tWYWx1ZSwgaXNVcGRhdGUpIHtcbiAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB7fTtcblxuICAgICAgaWYgKHRoaXMuc2VydmljZXMudXRpbHMgJiYgdGhpcy5zZXJ2aWNlcy51dGlscy5oYXNMb2FkZWROYW1lc3BhY2UgJiYgIXRoaXMuc2VydmljZXMudXRpbHMuaGFzTG9hZGVkTmFtZXNwYWNlKG5hbWVzcGFjZSkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihcImRpZCBub3Qgc2F2ZSBrZXkgXFxcIlwiLmNvbmNhdChrZXksIFwiXFxcIiBhcyB0aGUgbmFtZXNwYWNlIFxcXCJcIikuY29uY2F0KG5hbWVzcGFjZSwgXCJcXFwiIHdhcyBub3QgeWV0IGxvYWRlZFwiKSwgJ1RoaXMgbWVhbnMgc29tZXRoaW5nIElTIFdST05HIGluIHlvdXIgc2V0dXAuIFlvdSBhY2Nlc3MgdGhlIHQgZnVuY3Rpb24gYmVmb3JlIGkxOG5leHQuaW5pdCAvIGkxOG5leHQubG9hZE5hbWVzcGFjZSAvIGkxOG5leHQuY2hhbmdlTGFuZ3VhZ2Ugd2FzIGRvbmUuIFdhaXQgZm9yIHRoZSBjYWxsYmFjayBvciBQcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIGFjY2Vzc2luZyBpdCEhIScpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCB8fCBrZXkgPT09IG51bGwgfHwga2V5ID09PSAnJykgcmV0dXJuO1xuXG4gICAgICBpZiAodGhpcy5iYWNrZW5kICYmIHRoaXMuYmFja2VuZC5jcmVhdGUpIHtcbiAgICAgICAgdGhpcy5iYWNrZW5kLmNyZWF0ZShsYW5ndWFnZXMsIG5hbWVzcGFjZSwga2V5LCBmYWxsYmFja1ZhbHVlLCBudWxsLCBfb2JqZWN0U3ByZWFkKHt9LCBvcHRpb25zLCB7XG4gICAgICAgICAgaXNVcGRhdGU6IGlzVXBkYXRlXG4gICAgICAgIH0pKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsYW5ndWFnZXMgfHwgIWxhbmd1YWdlc1swXSkgcmV0dXJuO1xuICAgICAgdGhpcy5zdG9yZS5hZGRSZXNvdXJjZShsYW5ndWFnZXNbMF0sIG5hbWVzcGFjZSwga2V5LCBmYWxsYmFja1ZhbHVlKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQ29ubmVjdG9yO1xufShFdmVudEVtaXR0ZXIpO1xuXG5mdW5jdGlvbiBnZXQoKSB7XG4gIHJldHVybiB7XG4gICAgZGVidWc6IGZhbHNlLFxuICAgIGluaXRJbW1lZGlhdGU6IHRydWUsXG4gICAgbnM6IFsndHJhbnNsYXRpb24nXSxcbiAgICBkZWZhdWx0TlM6IFsndHJhbnNsYXRpb24nXSxcbiAgICBmYWxsYmFja0xuZzogWydkZXYnXSxcbiAgICBmYWxsYmFja05TOiBmYWxzZSxcbiAgICB3aGl0ZWxpc3Q6IGZhbHNlLFxuICAgIG5vbkV4cGxpY2l0V2hpdGVsaXN0OiBmYWxzZSxcbiAgICBzdXBwb3J0ZWRMbmdzOiBmYWxzZSxcbiAgICBub25FeHBsaWNpdFN1cHBvcnRlZExuZ3M6IGZhbHNlLFxuICAgIGxvYWQ6ICdhbGwnLFxuICAgIHByZWxvYWQ6IGZhbHNlLFxuICAgIHNpbXBsaWZ5UGx1cmFsU3VmZml4OiB0cnVlLFxuICAgIGtleVNlcGFyYXRvcjogJy4nLFxuICAgIG5zU2VwYXJhdG9yOiAnOicsXG4gICAgcGx1cmFsU2VwYXJhdG9yOiAnXycsXG4gICAgY29udGV4dFNlcGFyYXRvcjogJ18nLFxuICAgIHBhcnRpYWxCdW5kbGVkTGFuZ3VhZ2VzOiBmYWxzZSxcbiAgICBzYXZlTWlzc2luZzogZmFsc2UsXG4gICAgdXBkYXRlTWlzc2luZzogZmFsc2UsXG4gICAgc2F2ZU1pc3NpbmdUbzogJ2ZhbGxiYWNrJyxcbiAgICBzYXZlTWlzc2luZ1BsdXJhbHM6IHRydWUsXG4gICAgbWlzc2luZ0tleUhhbmRsZXI6IGZhbHNlLFxuICAgIG1pc3NpbmdJbnRlcnBvbGF0aW9uSGFuZGxlcjogZmFsc2UsXG4gICAgcG9zdFByb2Nlc3M6IGZhbHNlLFxuICAgIHBvc3RQcm9jZXNzUGFzc1Jlc29sdmVkOiBmYWxzZSxcbiAgICByZXR1cm5OdWxsOiB0cnVlLFxuICAgIHJldHVybkVtcHR5U3RyaW5nOiB0cnVlLFxuICAgIHJldHVybk9iamVjdHM6IGZhbHNlLFxuICAgIGpvaW5BcnJheXM6IGZhbHNlLFxuICAgIHJldHVybmVkT2JqZWN0SGFuZGxlcjogZmFsc2UsXG4gICAgcGFyc2VNaXNzaW5nS2V5SGFuZGxlcjogZmFsc2UsXG4gICAgYXBwZW5kTmFtZXNwYWNlVG9NaXNzaW5nS2V5OiBmYWxzZSxcbiAgICBhcHBlbmROYW1lc3BhY2VUb0NJTW9kZTogZmFsc2UsXG4gICAgb3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXI6IGZ1bmN0aW9uIGhhbmRsZShhcmdzKSB7XG4gICAgICB2YXIgcmV0ID0ge307XG4gICAgICBpZiAoX3R5cGVvZihhcmdzWzFdKSA9PT0gJ29iamVjdCcpIHJldCA9IGFyZ3NbMV07XG4gICAgICBpZiAodHlwZW9mIGFyZ3NbMV0gPT09ICdzdHJpbmcnKSByZXQuZGVmYXVsdFZhbHVlID0gYXJnc1sxXTtcbiAgICAgIGlmICh0eXBlb2YgYXJnc1syXSA9PT0gJ3N0cmluZycpIHJldC50RGVzY3JpcHRpb24gPSBhcmdzWzJdO1xuXG4gICAgICBpZiAoX3R5cGVvZihhcmdzWzJdKSA9PT0gJ29iamVjdCcgfHwgX3R5cGVvZihhcmdzWzNdKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmdzWzNdIHx8IGFyZ3NbMl07XG4gICAgICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIHJldFtrZXldID0gb3B0aW9uc1trZXldO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiB0cnVlLFxuICAgICAgZm9ybWF0OiBmdW5jdGlvbiBmb3JtYXQodmFsdWUsIF9mb3JtYXQsIGxuZywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9LFxuICAgICAgcHJlZml4OiAne3snLFxuICAgICAgc3VmZml4OiAnfX0nLFxuICAgICAgZm9ybWF0U2VwYXJhdG9yOiAnLCcsXG4gICAgICB1bmVzY2FwZVByZWZpeDogJy0nLFxuICAgICAgbmVzdGluZ1ByZWZpeDogJyR0KCcsXG4gICAgICBuZXN0aW5nU3VmZml4OiAnKScsXG4gICAgICBuZXN0aW5nT3B0aW9uc1NlcGFyYXRvcjogJywnLFxuICAgICAgbWF4UmVwbGFjZXM6IDEwMDAsXG4gICAgICBza2lwT25WYXJpYWJsZXM6IGZhbHNlXG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gdHJhbnNmb3JtT3B0aW9ucyhvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5ucyA9PT0gJ3N0cmluZycpIG9wdGlvbnMubnMgPSBbb3B0aW9ucy5uc107XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5mYWxsYmFja0xuZyA9PT0gJ3N0cmluZycpIG9wdGlvbnMuZmFsbGJhY2tMbmcgPSBbb3B0aW9ucy5mYWxsYmFja0xuZ107XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5mYWxsYmFja05TID09PSAnc3RyaW5nJykgb3B0aW9ucy5mYWxsYmFja05TID0gW29wdGlvbnMuZmFsbGJhY2tOU107XG5cbiAgaWYgKG9wdGlvbnMud2hpdGVsaXN0KSB7XG4gICAgaWYgKG9wdGlvbnMud2hpdGVsaXN0ICYmIG9wdGlvbnMud2hpdGVsaXN0LmluZGV4T2YoJ2NpbW9kZScpIDwgMCkge1xuICAgICAgb3B0aW9ucy53aGl0ZWxpc3QgPSBvcHRpb25zLndoaXRlbGlzdC5jb25jYXQoWydjaW1vZGUnXSk7XG4gICAgfVxuXG4gICAgb3B0aW9ucy5zdXBwb3J0ZWRMbmdzID0gb3B0aW9ucy53aGl0ZWxpc3Q7XG4gIH1cblxuICBpZiAob3B0aW9ucy5ub25FeHBsaWNpdFdoaXRlbGlzdCkge1xuICAgIG9wdGlvbnMubm9uRXhwbGljaXRTdXBwb3J0ZWRMbmdzID0gb3B0aW9ucy5ub25FeHBsaWNpdFdoaXRlbGlzdDtcbiAgfVxuXG4gIGlmIChvcHRpb25zLnN1cHBvcnRlZExuZ3MgJiYgb3B0aW9ucy5zdXBwb3J0ZWRMbmdzLmluZGV4T2YoJ2NpbW9kZScpIDwgMCkge1xuICAgIG9wdGlvbnMuc3VwcG9ydGVkTG5ncyA9IG9wdGlvbnMuc3VwcG9ydGVkTG5ncy5jb25jYXQoWydjaW1vZGUnXSk7XG4gIH1cblxuICByZXR1cm4gb3B0aW9ucztcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnZhciBJMThuID0gZnVuY3Rpb24gKF9FdmVudEVtaXR0ZXIpIHtcbiAgX2luaGVyaXRzKEkxOG4sIF9FdmVudEVtaXR0ZXIpO1xuXG4gIGZ1bmN0aW9uIEkxOG4oKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEkxOG4pO1xuXG4gICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoSTE4bikuY2FsbCh0aGlzKSk7XG5cbiAgICBpZiAoaXNJRTEwKSB7XG4gICAgICBFdmVudEVtaXR0ZXIuY2FsbChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG4gICAgfVxuXG4gICAgX3RoaXMub3B0aW9ucyA9IHRyYW5zZm9ybU9wdGlvbnMob3B0aW9ucyk7XG4gICAgX3RoaXMuc2VydmljZXMgPSB7fTtcbiAgICBfdGhpcy5sb2dnZXIgPSBiYXNlTG9nZ2VyO1xuICAgIF90aGlzLm1vZHVsZXMgPSB7XG4gICAgICBleHRlcm5hbDogW11cbiAgICB9O1xuXG4gICAgaWYgKGNhbGxiYWNrICYmICFfdGhpcy5pc0luaXRpYWxpemVkICYmICFvcHRpb25zLmlzQ2xvbmUpIHtcbiAgICAgIGlmICghX3RoaXMub3B0aW9ucy5pbml0SW1tZWRpYXRlKSB7XG4gICAgICAgIF90aGlzLmluaXQob3B0aW9ucywgY2FsbGJhY2spO1xuXG4gICAgICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcywgX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuICAgICAgfVxuXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuaW5pdChvcHRpb25zLCBjYWxsYmFjayk7XG4gICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoSTE4biwgW3tcbiAgICBrZXk6IFwiaW5pdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpbml0KCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgICAgIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLndoaXRlbGlzdCAmJiAhb3B0aW9ucy5zdXBwb3J0ZWRMbmdzKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlcHJlY2F0ZSgnd2hpdGVsaXN0JywgJ29wdGlvbiBcIndoaXRlbGlzdFwiIHdpbGwgYmUgcmVuYW1lZCB0byBcInN1cHBvcnRlZExuZ3NcIiBpbiB0aGUgbmV4dCBtYWpvciAtIHBsZWFzZSBtYWtlIHN1cmUgdG8gcmVuYW1lIHRoaXMgb3B0aW9uIGFzYXAuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm5vbkV4cGxpY2l0V2hpdGVsaXN0ICYmICFvcHRpb25zLm5vbkV4cGxpY2l0U3VwcG9ydGVkTG5ncykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZXByZWNhdGUoJ3doaXRlbGlzdCcsICdvcHRpb25zIFwibm9uRXhwbGljaXRXaGl0ZWxpc3RcIiB3aWxsIGJlIHJlbmFtZWQgdG8gXCJub25FeHBsaWNpdFN1cHBvcnRlZExuZ3NcIiBpbiB0aGUgbmV4dCBtYWpvciAtIHBsZWFzZSBtYWtlIHN1cmUgdG8gcmVuYW1lIHRoaXMgb3B0aW9uIGFzYXAuJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub3B0aW9ucyA9IF9vYmplY3RTcHJlYWQoe30sIGdldCgpLCB0aGlzLm9wdGlvbnMsIHRyYW5zZm9ybU9wdGlvbnMob3B0aW9ucykpO1xuICAgICAgdGhpcy5mb3JtYXQgPSB0aGlzLm9wdGlvbnMuaW50ZXJwb2xhdGlvbi5mb3JtYXQ7XG4gICAgICBpZiAoIWNhbGxiYWNrKSBjYWxsYmFjayA9IG5vb3A7XG5cbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNsYXNzT25EZW1hbmQoQ2xhc3NPck9iamVjdCkge1xuICAgICAgICBpZiAoIUNsYXNzT3JPYmplY3QpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAodHlwZW9mIENsYXNzT3JPYmplY3QgPT09ICdmdW5jdGlvbicpIHJldHVybiBuZXcgQ2xhc3NPck9iamVjdCgpO1xuICAgICAgICByZXR1cm4gQ2xhc3NPck9iamVjdDtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuaXNDbG9uZSkge1xuICAgICAgICBpZiAodGhpcy5tb2R1bGVzLmxvZ2dlcikge1xuICAgICAgICAgIGJhc2VMb2dnZXIuaW5pdChjcmVhdGVDbGFzc09uRGVtYW5kKHRoaXMubW9kdWxlcy5sb2dnZXIpLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2VMb2dnZXIuaW5pdChudWxsLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGx1ID0gbmV3IExhbmd1YWdlVXRpbCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLnN0b3JlID0gbmV3IFJlc291cmNlU3RvcmUodGhpcy5vcHRpb25zLnJlc291cmNlcywgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnNlcnZpY2VzO1xuICAgICAgICBzLmxvZ2dlciA9IGJhc2VMb2dnZXI7XG4gICAgICAgIHMucmVzb3VyY2VTdG9yZSA9IHRoaXMuc3RvcmU7XG4gICAgICAgIHMubGFuZ3VhZ2VVdGlscyA9IGx1O1xuICAgICAgICBzLnBsdXJhbFJlc29sdmVyID0gbmV3IFBsdXJhbFJlc29sdmVyKGx1LCB7XG4gICAgICAgICAgcHJlcGVuZDogdGhpcy5vcHRpb25zLnBsdXJhbFNlcGFyYXRvcixcbiAgICAgICAgICBjb21wYXRpYmlsaXR5SlNPTjogdGhpcy5vcHRpb25zLmNvbXBhdGliaWxpdHlKU09OLFxuICAgICAgICAgIHNpbXBsaWZ5UGx1cmFsU3VmZml4OiB0aGlzLm9wdGlvbnMuc2ltcGxpZnlQbHVyYWxTdWZmaXhcbiAgICAgICAgfSk7XG4gICAgICAgIHMuaW50ZXJwb2xhdG9yID0gbmV3IEludGVycG9sYXRvcih0aGlzLm9wdGlvbnMpO1xuICAgICAgICBzLnV0aWxzID0ge1xuICAgICAgICAgIGhhc0xvYWRlZE5hbWVzcGFjZTogdGhpcy5oYXNMb2FkZWROYW1lc3BhY2UuYmluZCh0aGlzKVxuICAgICAgICB9O1xuICAgICAgICBzLmJhY2tlbmRDb25uZWN0b3IgPSBuZXcgQ29ubmVjdG9yKGNyZWF0ZUNsYXNzT25EZW1hbmQodGhpcy5tb2R1bGVzLmJhY2tlbmQpLCBzLnJlc291cmNlU3RvcmUsIHMsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHMuYmFja2VuZENvbm5lY3Rvci5vbignKicsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzMi5lbWl0LmFwcGx5KF90aGlzMiwgW2V2ZW50XS5jb25jYXQoYXJncykpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5tb2R1bGVzLmxhbmd1YWdlRGV0ZWN0b3IpIHtcbiAgICAgICAgICBzLmxhbmd1YWdlRGV0ZWN0b3IgPSBjcmVhdGVDbGFzc09uRGVtYW5kKHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yKTtcbiAgICAgICAgICBzLmxhbmd1YWdlRGV0ZWN0b3IuaW5pdChzLCB0aGlzLm9wdGlvbnMuZGV0ZWN0aW9uLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9kdWxlcy5pMThuRm9ybWF0KSB7XG4gICAgICAgICAgcy5pMThuRm9ybWF0ID0gY3JlYXRlQ2xhc3NPbkRlbWFuZCh0aGlzLm1vZHVsZXMuaTE4bkZvcm1hdCk7XG4gICAgICAgICAgaWYgKHMuaTE4bkZvcm1hdC5pbml0KSBzLmkxOG5Gb3JtYXQuaW5pdCh0aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yKHRoaXMuc2VydmljZXMsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRvci5vbignKicsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzMi5lbWl0LmFwcGx5KF90aGlzMiwgW2V2ZW50XS5jb25jYXQoYXJncykpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tb2R1bGVzLmV4dGVybmFsLmZvckVhY2goZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICBpZiAobS5pbml0KSBtLmluaXQoX3RoaXMyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcgJiYgIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3RvciAmJiAhdGhpcy5vcHRpb25zLmxuZykge1xuICAgICAgICB2YXIgY29kZXMgPSB0aGlzLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcpO1xuICAgICAgICBpZiAoY29kZXMubGVuZ3RoID4gMCAmJiBjb2Rlc1swXSAhPT0gJ2RldicpIHRoaXMub3B0aW9ucy5sbmcgPSBjb2Rlc1swXTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3IgJiYgIXRoaXMub3B0aW9ucy5sbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignaW5pdDogbm8gbGFuZ3VhZ2VEZXRlY3RvciBpcyB1c2VkIGFuZCBubyBsbmcgaXMgZGVmaW5lZCcpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RvcmVBcGkgPSBbJ2dldFJlc291cmNlJywgJ2hhc1Jlc291cmNlQnVuZGxlJywgJ2dldFJlc291cmNlQnVuZGxlJywgJ2dldERhdGFCeUxhbmd1YWdlJ107XG4gICAgICBzdG9yZUFwaS5mb3JFYWNoKGZ1bmN0aW9uIChmY05hbWUpIHtcbiAgICAgICAgX3RoaXMyW2ZjTmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIF90aGlzMiRzdG9yZTtcblxuICAgICAgICAgIHJldHVybiAoX3RoaXMyJHN0b3JlID0gX3RoaXMyLnN0b3JlKVtmY05hbWVdLmFwcGx5KF90aGlzMiRzdG9yZSwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgdmFyIHN0b3JlQXBpQ2hhaW5lZCA9IFsnYWRkUmVzb3VyY2UnLCAnYWRkUmVzb3VyY2VzJywgJ2FkZFJlc291cmNlQnVuZGxlJywgJ3JlbW92ZVJlc291cmNlQnVuZGxlJ107XG4gICAgICBzdG9yZUFwaUNoYWluZWQuZm9yRWFjaChmdW5jdGlvbiAoZmNOYW1lKSB7XG4gICAgICAgIF90aGlzMltmY05hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBfdGhpczIkc3RvcmUyO1xuXG4gICAgICAgICAgKF90aGlzMiRzdG9yZTIgPSBfdGhpczIuc3RvcmUpW2ZjTmFtZV0uYXBwbHkoX3RoaXMyJHN0b3JlMiwgYXJndW1lbnRzKTtcblxuICAgICAgICAgIHJldHVybiBfdGhpczI7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG5cbiAgICAgIHZhciBsb2FkID0gZnVuY3Rpb24gbG9hZCgpIHtcbiAgICAgICAgdmFyIGZpbmlzaCA9IGZ1bmN0aW9uIGZpbmlzaChlcnIsIHQpIHtcbiAgICAgICAgICBpZiAoX3RoaXMyLmlzSW5pdGlhbGl6ZWQpIF90aGlzMi5sb2dnZXIud2FybignaW5pdDogaTE4bmV4dCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiBZb3Ugc2hvdWxkIGNhbGwgaW5pdCBqdXN0IG9uY2UhJyk7XG4gICAgICAgICAgX3RoaXMyLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgIGlmICghX3RoaXMyLm9wdGlvbnMuaXNDbG9uZSkgX3RoaXMyLmxvZ2dlci5sb2coJ2luaXRpYWxpemVkJywgX3RoaXMyLm9wdGlvbnMpO1xuXG4gICAgICAgICAgX3RoaXMyLmVtaXQoJ2luaXRpYWxpemVkJywgX3RoaXMyLm9wdGlvbnMpO1xuXG4gICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh0KTtcbiAgICAgICAgICBjYWxsYmFjayhlcnIsIHQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChfdGhpczIubGFuZ3VhZ2VzICYmIF90aGlzMi5vcHRpb25zLmNvbXBhdGliaWxpdHlBUEkgIT09ICd2MScgJiYgIV90aGlzMi5pc0luaXRpYWxpemVkKSByZXR1cm4gZmluaXNoKG51bGwsIF90aGlzMi50LmJpbmQoX3RoaXMyKSk7XG5cbiAgICAgICAgX3RoaXMyLmNoYW5nZUxhbmd1YWdlKF90aGlzMi5vcHRpb25zLmxuZywgZmluaXNoKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVzb3VyY2VzIHx8ICF0aGlzLm9wdGlvbnMuaW5pdEltbWVkaWF0ZSkge1xuICAgICAgICBsb2FkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KGxvYWQsIDApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVmZXJyZWQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxvYWRSZXNvdXJjZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZFJlc291cmNlcyhsYW5ndWFnZSkge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogbm9vcDtcbiAgICAgIHZhciB1c2VkQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgIHZhciB1c2VkTG5nID0gdHlwZW9mIGxhbmd1YWdlID09PSAnc3RyaW5nJyA/IGxhbmd1YWdlIDogdGhpcy5sYW5ndWFnZTtcbiAgICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgPT09ICdmdW5jdGlvbicpIHVzZWRDYWxsYmFjayA9IGxhbmd1YWdlO1xuXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5yZXNvdXJjZXMgfHwgdGhpcy5vcHRpb25zLnBhcnRpYWxCdW5kbGVkTGFuZ3VhZ2VzKSB7XG4gICAgICAgIGlmICh1c2VkTG5nICYmIHVzZWRMbmcudG9Mb3dlckNhc2UoKSA9PT0gJ2NpbW9kZScpIHJldHVybiB1c2VkQ2FsbGJhY2soKTtcbiAgICAgICAgdmFyIHRvTG9hZCA9IFtdO1xuXG4gICAgICAgIHZhciBhcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQobG5nKSB7XG4gICAgICAgICAgaWYgKCFsbmcpIHJldHVybjtcblxuICAgICAgICAgIHZhciBsbmdzID0gX3RoaXMzLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMudG9SZXNvbHZlSGllcmFyY2h5KGxuZyk7XG5cbiAgICAgICAgICBsbmdzLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgICAgIGlmICh0b0xvYWQuaW5kZXhPZihsKSA8IDApIHRvTG9hZC5wdXNoKGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdXNlZExuZykge1xuICAgICAgICAgIHZhciBmYWxsYmFja3MgPSB0aGlzLnNlcnZpY2VzLmxhbmd1YWdlVXRpbHMuZ2V0RmFsbGJhY2tDb2Rlcyh0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcpO1xuICAgICAgICAgIGZhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwZW5kKGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFwcGVuZCh1c2VkTG5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucHJlbG9hZCkge1xuICAgICAgICAgIHRoaXMub3B0aW9ucy5wcmVsb2FkLmZvckVhY2goZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmQobCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlcnZpY2VzLmJhY2tlbmRDb25uZWN0b3IubG9hZCh0b0xvYWQsIHRoaXMub3B0aW9ucy5ucywgdXNlZENhbGxiYWNrKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVzZWRDYWxsYmFjayhudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVsb2FkUmVzb3VyY2VzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlcyhsbmdzLCBucywgY2FsbGJhY2spIHtcbiAgICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG4gICAgICBpZiAoIWxuZ3MpIGxuZ3MgPSB0aGlzLmxhbmd1YWdlcztcbiAgICAgIGlmICghbnMpIG5zID0gdGhpcy5vcHRpb25zLm5zO1xuICAgICAgaWYgKCFjYWxsYmFjaykgY2FsbGJhY2sgPSBub29wO1xuICAgICAgdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLnJlbG9hZChsbmdzLCBucywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBkZWZlcnJlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVzZShtb2R1bGUpIHtcbiAgICAgIGlmICghbW9kdWxlKSB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBhcmUgcGFzc2luZyBhbiB1bmRlZmluZWQgbW9kdWxlISBQbGVhc2UgY2hlY2sgdGhlIG9iamVjdCB5b3UgYXJlIHBhc3NpbmcgdG8gaTE4bmV4dC51c2UoKScpO1xuICAgICAgaWYgKCFtb2R1bGUudHlwZSkgdGhyb3cgbmV3IEVycm9yKCdZb3UgYXJlIHBhc3NpbmcgYSB3cm9uZyBtb2R1bGUhIFBsZWFzZSBjaGVjayB0aGUgb2JqZWN0IHlvdSBhcmUgcGFzc2luZyB0byBpMThuZXh0LnVzZSgpJyk7XG5cbiAgICAgIGlmIChtb2R1bGUudHlwZSA9PT0gJ2JhY2tlbmQnKSB7XG4gICAgICAgIHRoaXMubW9kdWxlcy5iYWNrZW5kID0gbW9kdWxlO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kdWxlLnR5cGUgPT09ICdsb2dnZXInIHx8IG1vZHVsZS5sb2cgJiYgbW9kdWxlLndhcm4gJiYgbW9kdWxlLmVycm9yKSB7XG4gICAgICAgIHRoaXMubW9kdWxlcy5sb2dnZXIgPSBtb2R1bGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2R1bGUudHlwZSA9PT0gJ2xhbmd1YWdlRGV0ZWN0b3InKSB7XG4gICAgICAgIHRoaXMubW9kdWxlcy5sYW5ndWFnZURldGVjdG9yID0gbW9kdWxlO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kdWxlLnR5cGUgPT09ICdpMThuRm9ybWF0Jykge1xuICAgICAgICB0aGlzLm1vZHVsZXMuaTE4bkZvcm1hdCA9IG1vZHVsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZHVsZS50eXBlID09PSAncG9zdFByb2Nlc3NvcicpIHtcbiAgICAgICAgcG9zdFByb2Nlc3Nvci5hZGRQb3N0UHJvY2Vzc29yKG1vZHVsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2R1bGUudHlwZSA9PT0gJzNyZFBhcnR5Jykge1xuICAgICAgICB0aGlzLm1vZHVsZXMuZXh0ZXJuYWwucHVzaChtb2R1bGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2hhbmdlTGFuZ3VhZ2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlTGFuZ3VhZ2UobG5nLCBjYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHRoaXMuaXNMYW5ndWFnZUNoYW5naW5nVG8gPSBsbmc7XG4gICAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpO1xuICAgICAgdGhpcy5lbWl0KCdsYW5ndWFnZUNoYW5naW5nJywgbG5nKTtcblxuICAgICAgdmFyIGRvbmUgPSBmdW5jdGlvbiBkb25lKGVyciwgbCkge1xuICAgICAgICBpZiAobCkge1xuICAgICAgICAgIF90aGlzNC5sYW5ndWFnZSA9IGw7XG4gICAgICAgICAgX3RoaXM0Lmxhbmd1YWdlcyA9IF90aGlzNC5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLnRvUmVzb2x2ZUhpZXJhcmNoeShsKTtcblxuICAgICAgICAgIF90aGlzNC50cmFuc2xhdG9yLmNoYW5nZUxhbmd1YWdlKGwpO1xuXG4gICAgICAgICAgX3RoaXM0LmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgX3RoaXM0LmVtaXQoJ2xhbmd1YWdlQ2hhbmdlZCcsIGwpO1xuXG4gICAgICAgICAgX3RoaXM0LmxvZ2dlci5sb2coJ2xhbmd1YWdlQ2hhbmdlZCcsIGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzNC5pc0xhbmd1YWdlQ2hhbmdpbmdUbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmVycmVkLnJlc29sdmUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQudC5hcHBseShfdGhpczQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKGVyciwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpczQudC5hcHBseShfdGhpczQsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgdmFyIHNldExuZyA9IGZ1bmN0aW9uIHNldExuZyhsbmdzKSB7XG4gICAgICAgIHZhciBsID0gdHlwZW9mIGxuZ3MgPT09ICdzdHJpbmcnID8gbG5ncyA6IF90aGlzNC5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLmdldEJlc3RNYXRjaEZyb21Db2RlcyhsbmdzKTtcblxuICAgICAgICBpZiAobCkge1xuICAgICAgICAgIGlmICghX3RoaXM0Lmxhbmd1YWdlKSB7XG4gICAgICAgICAgICBfdGhpczQubGFuZ3VhZ2UgPSBsO1xuICAgICAgICAgICAgX3RoaXM0Lmxhbmd1YWdlcyA9IF90aGlzNC5zZXJ2aWNlcy5sYW5ndWFnZVV0aWxzLnRvUmVzb2x2ZUhpZXJhcmNoeShsKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIV90aGlzNC50cmFuc2xhdG9yLmxhbmd1YWdlKSBfdGhpczQudHJhbnNsYXRvci5jaGFuZ2VMYW5ndWFnZShsKTtcbiAgICAgICAgICBpZiAoX3RoaXM0LnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3IpIF90aGlzNC5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmNhY2hlVXNlckxhbmd1YWdlKGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXM0LmxvYWRSZXNvdXJjZXMobCwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGRvbmUoZXJyLCBsKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAoIWxuZyAmJiB0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3IgJiYgIXRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5hc3luYykge1xuICAgICAgICBzZXRMbmcodGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmRldGVjdCgpKTtcbiAgICAgIH0gZWxzZSBpZiAoIWxuZyAmJiB0aGlzLnNlcnZpY2VzLmxhbmd1YWdlRGV0ZWN0b3IgJiYgdGhpcy5zZXJ2aWNlcy5sYW5ndWFnZURldGVjdG9yLmFzeW5jKSB7XG4gICAgICAgIHRoaXMuc2VydmljZXMubGFuZ3VhZ2VEZXRlY3Rvci5kZXRlY3Qoc2V0TG5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldExuZyhsbmcpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVmZXJyZWQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEZpeGVkVFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRGaXhlZFQobG5nLCBucykge1xuICAgICAgdmFyIF90aGlzNSA9IHRoaXM7XG5cbiAgICAgIHZhciBmaXhlZFQgPSBmdW5jdGlvbiBmaXhlZFQoa2V5LCBvcHRzKSB7XG4gICAgICAgIHZhciBvcHRpb25zO1xuXG4gICAgICAgIGlmIChfdHlwZW9mKG9wdHMpICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGZvciAodmFyIF9sZW4zID0gYXJndW1lbnRzLmxlbmd0aCwgcmVzdCA9IG5ldyBBcnJheShfbGVuMyA+IDIgPyBfbGVuMyAtIDIgOiAwKSwgX2tleTMgPSAyOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgICAgICAgICByZXN0W19rZXkzIC0gMl0gPSBhcmd1bWVudHNbX2tleTNdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG9wdGlvbnMgPSBfdGhpczUub3B0aW9ucy5vdmVybG9hZFRyYW5zbGF0aW9uT3B0aW9uSGFuZGxlcihba2V5LCBvcHRzXS5jb25jYXQocmVzdCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbnMgPSBfb2JqZWN0U3ByZWFkKHt9LCBvcHRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9wdGlvbnMubG5nID0gb3B0aW9ucy5sbmcgfHwgZml4ZWRULmxuZztcbiAgICAgICAgb3B0aW9ucy5sbmdzID0gb3B0aW9ucy5sbmdzIHx8IGZpeGVkVC5sbmdzO1xuICAgICAgICBvcHRpb25zLm5zID0gb3B0aW9ucy5ucyB8fCBmaXhlZFQubnM7XG4gICAgICAgIHJldHVybiBfdGhpczUudChrZXksIG9wdGlvbnMpO1xuICAgICAgfTtcblxuICAgICAgaWYgKHR5cGVvZiBsbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGZpeGVkVC5sbmcgPSBsbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXhlZFQubG5ncyA9IGxuZztcbiAgICAgIH1cblxuICAgICAgZml4ZWRULm5zID0gbnM7XG4gICAgICByZXR1cm4gZml4ZWRUO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHQoKSB7XG4gICAgICB2YXIgX3RoaXMkdHJhbnNsYXRvcjtcblxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRvciAmJiAoX3RoaXMkdHJhbnNsYXRvciA9IHRoaXMudHJhbnNsYXRvcikudHJhbnNsYXRlLmFwcGx5KF90aGlzJHRyYW5zbGF0b3IsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImV4aXN0c1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBleGlzdHMoKSB7XG4gICAgICB2YXIgX3RoaXMkdHJhbnNsYXRvcjI7XG5cbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0b3IgJiYgKF90aGlzJHRyYW5zbGF0b3IyID0gdGhpcy50cmFuc2xhdG9yKS5leGlzdHMuYXBwbHkoX3RoaXMkdHJhbnNsYXRvcjIsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldERlZmF1bHROYW1lc3BhY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RGVmYXVsdE5hbWVzcGFjZShucykge1xuICAgICAgdGhpcy5vcHRpb25zLmRlZmF1bHROUyA9IG5zO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYXNMb2FkZWROYW1lc3BhY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFzTG9hZGVkTmFtZXNwYWNlKG5zKSB7XG4gICAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gICAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKCdoYXNMb2FkZWROYW1lc3BhY2U6IGkxOG5leHQgd2FzIG5vdCBpbml0aWFsaXplZCcsIHRoaXMubGFuZ3VhZ2VzKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMubGFuZ3VhZ2VzIHx8ICF0aGlzLmxhbmd1YWdlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignaGFzTG9hZGVkTmFtZXNwYWNlOiBpMThuLmxhbmd1YWdlcyB3ZXJlIHVuZGVmaW5lZCBvciBlbXB0eScsIHRoaXMubGFuZ3VhZ2VzKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICB2YXIgbG5nID0gdGhpcy5sYW5ndWFnZXNbMF07XG4gICAgICB2YXIgZmFsbGJhY2tMbmcgPSB0aGlzLm9wdGlvbnMgPyB0aGlzLm9wdGlvbnMuZmFsbGJhY2tMbmcgOiBmYWxzZTtcbiAgICAgIHZhciBsYXN0TG5nID0gdGhpcy5sYW5ndWFnZXNbdGhpcy5sYW5ndWFnZXMubGVuZ3RoIC0gMV07XG4gICAgICBpZiAobG5nLnRvTG93ZXJDYXNlKCkgPT09ICdjaW1vZGUnKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgdmFyIGxvYWROb3RQZW5kaW5nID0gZnVuY3Rpb24gbG9hZE5vdFBlbmRpbmcobCwgbikge1xuICAgICAgICB2YXIgbG9hZFN0YXRlID0gX3RoaXM2LnNlcnZpY2VzLmJhY2tlbmRDb25uZWN0b3Iuc3RhdGVbXCJcIi5jb25jYXQobCwgXCJ8XCIpLmNvbmNhdChuKV07XG5cbiAgICAgICAgcmV0dXJuIGxvYWRTdGF0ZSA9PT0gLTEgfHwgbG9hZFN0YXRlID09PSAyO1xuICAgICAgfTtcblxuICAgICAgaWYgKG9wdGlvbnMucHJlY2hlY2spIHtcbiAgICAgICAgdmFyIHByZVJlc3VsdCA9IG9wdGlvbnMucHJlY2hlY2sodGhpcywgbG9hZE5vdFBlbmRpbmcpO1xuICAgICAgICBpZiAocHJlUmVzdWx0ICE9PSB1bmRlZmluZWQpIHJldHVybiBwcmVSZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhhc1Jlc291cmNlQnVuZGxlKGxuZywgbnMpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlcy5iYWNrZW5kQ29ubmVjdG9yLmJhY2tlbmQpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGxvYWROb3RQZW5kaW5nKGxuZywgbnMpICYmICghZmFsbGJhY2tMbmcgfHwgbG9hZE5vdFBlbmRpbmcobGFzdExuZywgbnMpKSkgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxvYWROYW1lc3BhY2VzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWROYW1lc3BhY2VzKG5zLCBjYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG5cbiAgICAgIGlmICghdGhpcy5vcHRpb25zLm5zKSB7XG4gICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBucyA9PT0gJ3N0cmluZycpIG5zID0gW25zXTtcbiAgICAgIG5zLmZvckVhY2goZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgaWYgKF90aGlzNy5vcHRpb25zLm5zLmluZGV4T2YobikgPCAwKSBfdGhpczcub3B0aW9ucy5ucy5wdXNoKG4pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmxvYWRSZXNvdXJjZXMoZnVuY3Rpb24gKGVycikge1xuICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soZXJyKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRlZmVycmVkO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJsb2FkTGFuZ3VhZ2VzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWRMYW5ndWFnZXMobG5ncywgY2FsbGJhY2spIHtcbiAgICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG4gICAgICBpZiAodHlwZW9mIGxuZ3MgPT09ICdzdHJpbmcnKSBsbmdzID0gW2xuZ3NdO1xuICAgICAgdmFyIHByZWxvYWRlZCA9IHRoaXMub3B0aW9ucy5wcmVsb2FkIHx8IFtdO1xuICAgICAgdmFyIG5ld0xuZ3MgPSBsbmdzLmZpbHRlcihmdW5jdGlvbiAobG5nKSB7XG4gICAgICAgIHJldHVybiBwcmVsb2FkZWQuaW5kZXhPZihsbmcpIDwgMDtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIW5ld0xuZ3MubGVuZ3RoKSB7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9wdGlvbnMucHJlbG9hZCA9IHByZWxvYWRlZC5jb25jYXQobmV3TG5ncyk7XG4gICAgICB0aGlzLmxvYWRSZXNvdXJjZXMoZnVuY3Rpb24gKGVycikge1xuICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKCk7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soZXJyKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRlZmVycmVkO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkaXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGlyKGxuZykge1xuICAgICAgaWYgKCFsbmcpIGxuZyA9IHRoaXMubGFuZ3VhZ2VzICYmIHRoaXMubGFuZ3VhZ2VzLmxlbmd0aCA+IDAgPyB0aGlzLmxhbmd1YWdlc1swXSA6IHRoaXMubGFuZ3VhZ2U7XG4gICAgICBpZiAoIWxuZykgcmV0dXJuICdydGwnO1xuICAgICAgdmFyIHJ0bExuZ3MgPSBbJ2FyJywgJ3NodScsICdzcXInLCAnc3NoJywgJ3hhYScsICd5aGQnLCAneXVkJywgJ2FhbycsICdhYmgnLCAnYWJ2JywgJ2FjbScsICdhY3EnLCAnYWN3JywgJ2FjeCcsICdhY3knLCAnYWRmJywgJ2FkcycsICdhZWInLCAnYWVjJywgJ2FmYicsICdhanAnLCAnYXBjJywgJ2FwZCcsICdhcmInLCAnYXJxJywgJ2FycycsICdhcnknLCAnYXJ6JywgJ2F1eicsICdhdmwnLCAnYXloJywgJ2F5bCcsICdheW4nLCAnYXlwJywgJ2JieicsICdwZ2EnLCAnaGUnLCAnaXcnLCAncHMnLCAncGJ0JywgJ3BidScsICdwc3QnLCAncHJwJywgJ3ByZCcsICd1ZycsICd1cicsICd5ZGQnLCAneWRzJywgJ3lpaCcsICdqaScsICd5aScsICdoYm8nLCAnbWVuJywgJ3htbicsICdmYScsICdqcHInLCAncGVvJywgJ3BlcycsICdwcnMnLCAnZHYnLCAnc2FtJ107XG4gICAgICByZXR1cm4gcnRsTG5ncy5pbmRleE9mKHRoaXMuc2VydmljZXMubGFuZ3VhZ2VVdGlscy5nZXRMYW5ndWFnZVBhcnRGcm9tQ29kZShsbmcpKSA+PSAwID8gJ3J0bCcgOiAnbHRyJztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY3JlYXRlSW5zdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2UoKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBuZXcgSTE4bihvcHRpb25zLCBjYWxsYmFjayk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsb25lSW5zdGFuY2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvbmVJbnN0YW5jZSgpIHtcbiAgICAgIHZhciBfdGhpczggPSB0aGlzO1xuXG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG5vb3A7XG5cbiAgICAgIHZhciBtZXJnZWRPcHRpb25zID0gX29iamVjdFNwcmVhZCh7fSwgdGhpcy5vcHRpb25zLCBvcHRpb25zLCB7XG4gICAgICAgIGlzQ2xvbmU6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY2xvbmUgPSBuZXcgSTE4bihtZXJnZWRPcHRpb25zKTtcbiAgICAgIHZhciBtZW1iZXJzVG9Db3B5ID0gWydzdG9yZScsICdzZXJ2aWNlcycsICdsYW5ndWFnZSddO1xuICAgICAgbWVtYmVyc1RvQ29weS5mb3JFYWNoKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIGNsb25lW21dID0gX3RoaXM4W21dO1xuICAgICAgfSk7XG4gICAgICBjbG9uZS5zZXJ2aWNlcyA9IF9vYmplY3RTcHJlYWQoe30sIHRoaXMuc2VydmljZXMpO1xuICAgICAgY2xvbmUuc2VydmljZXMudXRpbHMgPSB7XG4gICAgICAgIGhhc0xvYWRlZE5hbWVzcGFjZTogY2xvbmUuaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQoY2xvbmUpXG4gICAgICB9O1xuICAgICAgY2xvbmUudHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yKGNsb25lLnNlcnZpY2VzLCBjbG9uZS5vcHRpb25zKTtcbiAgICAgIGNsb25lLnRyYW5zbGF0b3Iub24oJyonLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW40ID4gMSA/IF9sZW40IC0gMSA6IDApLCBfa2V5NCA9IDE7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcbiAgICAgICAgICBhcmdzW19rZXk0IC0gMV0gPSBhcmd1bWVudHNbX2tleTRdO1xuICAgICAgICB9XG5cbiAgICAgICAgY2xvbmUuZW1pdC5hcHBseShjbG9uZSwgW2V2ZW50XS5jb25jYXQoYXJncykpO1xuICAgICAgfSk7XG4gICAgICBjbG9uZS5pbml0KG1lcmdlZE9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgICAgIGNsb25lLnRyYW5zbGF0b3Iub3B0aW9ucyA9IGNsb25lLm9wdGlvbnM7XG4gICAgICBjbG9uZS50cmFuc2xhdG9yLmJhY2tlbmRDb25uZWN0b3Iuc2VydmljZXMudXRpbHMgPSB7XG4gICAgICAgIGhhc0xvYWRlZE5hbWVzcGFjZTogY2xvbmUuaGFzTG9hZGVkTmFtZXNwYWNlLmJpbmQoY2xvbmUpXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGNsb25lO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBJMThuO1xufShFdmVudEVtaXR0ZXIpO1xuXG52YXIgaTE4bmV4dCA9IG5ldyBJMThuKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG5leHQ7XG4iLCJpbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCI7XG5pbXBvcnQgX2NyZWF0ZUNsYXNzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHsgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyB9IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgYmluZEkxOG46ICdsYW5ndWFnZUNoYW5nZWQnLFxuICBiaW5kSTE4blN0b3JlOiAnJyxcbiAgdHJhbnNFbXB0eU5vZGVWYWx1ZTogJycsXG4gIHRyYW5zU3VwcG9ydEJhc2ljSHRtbE5vZGVzOiB0cnVlLFxuICB0cmFuc1dyYXBUZXh0Tm9kZXM6ICcnLFxuICB0cmFuc0tlZXBCYXNpY0h0bWxOb2Rlc0ZvcjogWydicicsICdzdHJvbmcnLCAnaScsICdwJ10sXG4gIHVzZVN1c3BlbnNlOiB0cnVlXG59O1xudmFyIGkxOG5JbnN0YW5jZTtcbmV4cG9ydCB2YXIgSTE4bkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KCk7XG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdHMoKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcbiAgZGVmYXVsdE9wdGlvbnMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRPcHRpb25zKSwgb3B0aW9ucyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdHMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cbmV4cG9ydCB2YXIgUmVwb3J0TmFtZXNwYWNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUmVwb3J0TmFtZXNwYWNlcygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVwb3J0TmFtZXNwYWNlcyk7XG5cbiAgICB0aGlzLnVzZWROYW1lc3BhY2VzID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUmVwb3J0TmFtZXNwYWNlcywgW3tcbiAgICBrZXk6IFwiYWRkVXNlZE5hbWVzcGFjZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkVXNlZE5hbWVzcGFjZXMobmFtZXNwYWNlcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgbmFtZXNwYWNlcy5mb3JFYWNoKGZ1bmN0aW9uIChucykge1xuICAgICAgICBpZiAoIV90aGlzLnVzZWROYW1lc3BhY2VzW25zXSkgX3RoaXMudXNlZE5hbWVzcGFjZXNbbnNdID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRVc2VkTmFtZXNwYWNlc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRVc2VkTmFtZXNwYWNlcygpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnVzZWROYW1lc3BhY2VzKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmVwb3J0TmFtZXNwYWNlcztcbn0oKTtcbmV4cG9ydCBmdW5jdGlvbiBzZXRJMThuKGluc3RhbmNlKSB7XG4gIGkxOG5JbnN0YW5jZSA9IGluc3RhbmNlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEkxOG4oKSB7XG4gIHJldHVybiBpMThuSW5zdGFuY2U7XG59XG5leHBvcnQgdmFyIGluaXRSZWFjdEkxOG5leHQgPSB7XG4gIHR5cGU6ICczcmRQYXJ0eScsXG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQoaW5zdGFuY2UpIHtcbiAgICBzZXREZWZhdWx0cyhpbnN0YW5jZS5vcHRpb25zLnJlYWN0KTtcbiAgICBzZXRJMThuKGluc3RhbmNlKTtcbiAgfVxufTtcbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlSW5pdGlhbFByb3BzKEZvckNvbXBvbmVudCkge1xuICByZXR1cm4gZnVuY3Rpb24gKGN0eCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgdmFyIGkxOG5Jbml0aWFsUHJvcHMgPSBnZXRJbml0aWFsUHJvcHMoKTtcblxuICAgICAgaWYgKEZvckNvbXBvbmVudC5nZXRJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgRm9yQ29tcG9uZW50LmdldEluaXRpYWxQcm9wcyhjdHgpLnRoZW4oZnVuY3Rpb24gKGNvbXBvbmVudHNJbml0aWFsUHJvcHMpIHtcbiAgICAgICAgICByZXNvbHZlKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgY29tcG9uZW50c0luaXRpYWxQcm9wcyksIGkxOG5Jbml0aWFsUHJvcHMpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKGkxOG5Jbml0aWFsUHJvcHMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxQcm9wcygpIHtcbiAgdmFyIGkxOG4gPSBnZXRJMThuKCk7XG4gIHZhciBuYW1lc3BhY2VzID0gaTE4bi5yZXBvcnROYW1lc3BhY2VzID8gaTE4bi5yZXBvcnROYW1lc3BhY2VzLmdldFVzZWROYW1lc3BhY2VzKCkgOiBbXTtcbiAgdmFyIHJldCA9IHt9O1xuICB2YXIgaW5pdGlhbEkxOG5TdG9yZSA9IHt9O1xuICBpMThuLmxhbmd1YWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChsKSB7XG4gICAgaW5pdGlhbEkxOG5TdG9yZVtsXSA9IHt9O1xuICAgIG5hbWVzcGFjZXMuZm9yRWFjaChmdW5jdGlvbiAobnMpIHtcbiAgICAgIGluaXRpYWxJMThuU3RvcmVbbF1bbnNdID0gaTE4bi5nZXRSZXNvdXJjZUJ1bmRsZShsLCBucykgfHwge307XG4gICAgfSk7XG4gIH0pO1xuICByZXQuaW5pdGlhbEkxOG5TdG9yZSA9IGluaXRpYWxJMThuU3RvcmU7XG4gIHJldC5pbml0aWFsTGFuZ3VhZ2UgPSBpMThuLmxhbmd1YWdlO1xuICByZXR1cm4gcmV0O1xufSIsImV4cG9ydCB2YXIgVGhlbWU7XG4oZnVuY3Rpb24gKFRoZW1lKSB7XG4gICAgVGhlbWVbXCJMaWdodFwiXSA9IFwibGlnaHRcIjtcbiAgICBUaGVtZVtcIkRhcmtcIl0gPSBcImRhcmtcIjtcbn0pKFRoZW1lIHx8IChUaGVtZSA9IHt9KSk7XG5leHBvcnQgdmFyIFRleHRTaXplcztcbihmdW5jdGlvbiAoVGV4dFNpemVzKSB7XG4gICAgVGV4dFNpemVzW1wiU1wiXSA9IFwic1wiO1xuICAgIFRleHRTaXplc1tcIk1cIl0gPSBcIm1cIjtcbiAgICBUZXh0U2l6ZXNbXCJMXCJdID0gXCJsXCI7XG59KShUZXh0U2l6ZXMgfHwgKFRleHRTaXplcyA9IHt9KSk7XG5leHBvcnQgdmFyIENvbnRyb2xTaXplcztcbihmdW5jdGlvbiAoQ29udHJvbFNpemVzKSB7XG4gICAgQ29udHJvbFNpemVzW1wiTVwiXSA9IFwibVwiO1xuICAgIENvbnRyb2xTaXplc1tcIkxcIl0gPSBcImxcIjtcbn0pKENvbnRyb2xTaXplcyB8fCAoQ29udHJvbFNpemVzID0ge30pKTtcbmV4cG9ydCB2YXIgVmNzO1xuKGZ1bmN0aW9uIChWY3MpIHtcbiAgICBWY3NbXCJHaXRodWJcIl0gPSBcImdpdGh1YlwiO1xuICAgIFZjc1tcIkFyY2FudW1cIl0gPSBcImFyY2FudW1cIjtcbn0pKFZjcyB8fCAoVmNzID0ge30pKTtcbmV4cG9ydCB2YXIgTGFuZztcbihmdW5jdGlvbiAoTGFuZykge1xuICAgIExhbmdbXCJSdVwiXSA9IFwicnVcIjtcbiAgICBMYW5nW1wiRW5cIl0gPSBcImVuXCI7XG59KShMYW5nIHx8IChMYW5nID0ge30pKTtcbmV4cG9ydCB2YXIgRmVlZGJhY2tUeXBlO1xuKGZ1bmN0aW9uIChGZWVkYmFja1R5cGUpIHtcbiAgICBGZWVkYmFja1R5cGVbXCJsaWtlXCJdID0gXCJsaWtlXCI7XG4gICAgRmVlZGJhY2tUeXBlW1wiZGlzbGlrZVwiXSA9IFwiZGlzbGlrZVwiO1xuICAgIEZlZWRiYWNrVHlwZVtcImluZGV0ZXJtaW5hdGVcIl0gPSBcImluZGV0ZXJtaW5hdGVcIjtcbn0pKEZlZWRiYWNrVHlwZSB8fCAoRmVlZGJhY2tUeXBlID0ge30pKTtcbmV4cG9ydCB2YXIgU3Vic2NyaWJlVHlwZTtcbihmdW5jdGlvbiAoU3Vic2NyaWJlVHlwZSkge1xuICAgIFN1YnNjcmliZVR5cGVbXCJkb2N1bWVudGF0aW9uXCJdID0gXCJkb2N1bWVudGF0aW9uXCI7XG4gICAgU3Vic2NyaWJlVHlwZVtcInBhZ2VcIl0gPSBcInBhZ2VcIjtcbn0pKFN1YnNjcmliZVR5cGUgfHwgKFN1YnNjcmliZVR5cGUgPSB7fSkpO1xuIiwiaW1wb3J0IGkxOG4gZnJvbSAnaTE4bmV4dCc7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBMYW5nIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCBydSBmcm9tICcuL3J1Lmpzb24nO1xuaW1wb3J0IGVuIGZyb20gJy4vZW4uanNvbic7XG5leHBvcnQgZGVmYXVsdCBpMThuLnVzZShpbml0UmVhY3RJMThuZXh0KS5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogTGFuZy5FbixcbiAgICBuczogWydjb250cm9scycsICdtaW5pLXRvYycsICd0b2MtbmF2LXBhbmVsJywgJ2F1dGhvcnMnXSxcbiAgICByZXNvdXJjZXM6IHsgcnUsIGVuIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgICBlc2NhcGVWYWx1ZTogZmFsc2UsXG4gICAgfSxcbn0pO1xuIiwiaW1wb3J0IHsgcGFyc2UgfSBmcm9tICd1cmwnO1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgocGF0aCkge1xuICAgIHJldHVybiBwYXRoID09PSBudWxsIHx8IHBhdGggPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhdGgucmVwbGFjZSgvXFwvaW5kZXgkLywgJy8nKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVIYXNoKGhhc2gpIHtcbiAgICBpZiAoaGFzaCAmJiBoYXNoLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgICByZXR1cm4gaGFzaC5zdWJzdHJpbmcoMSk7XG4gICAgfVxuICAgIHJldHVybiBoYXNoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aXZlSXRlbShyb3V0ZXIsIGhyZWYsIHNpbmdsZVBhZ2UpIHtcbiAgICBpZiAoc2luZ2xlUGFnZSkge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplSGFzaChyb3V0ZXIuaGFzaCkgPT09IG5vcm1hbGl6ZUhhc2gocGFyc2UoaHJlZikuaGFzaCk7XG4gICAgfVxuICAgIHJldHVybiBub3JtYWxpemVQYXRoKHJvdXRlci5wYXRobmFtZSkgPT09IG5vcm1hbGl6ZVBhdGgocGFyc2UoaHJlZikucGF0aG5hbWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxIcmVmKGhyZWYpIHtcbiAgICByZXR1cm4gaHJlZi5zdGFydHNXaXRoKCdodHRwJykgfHwgaHJlZi5zdGFydHNXaXRoKCcvLycpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRlS2V5KHNob3dNaW5pVG9jLCB3aWRlRm9ybWF0LCBzaW5nbGVQYWdlKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2hvd01pbmlUb2MgPyAnc2hvd01pbmlUb2MnIDogJycsXG4gICAgICAgIHdpZGVGb3JtYXQgPyAnd2lkZUZvcm1hdCcgOiAnJyxcbiAgICAgICAgc2luZ2xlUGFnZSA/ICdzaW5nbGVQYWdlJyA6ICcnLFxuICAgIF0uam9pbignfCcpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNhbGxTYWZlKGZ1bmMsIHBhdGgpIHtcbiAgICBpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMocGF0aCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZnVuYyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignUGF0aCBjb252ZXJ0ZXIgc2hvdWxkIGJlIGEgZnVuY3Rpb24nKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJUYWcoZWwpIHtcbiAgICBsZXQgcmVzdWx0RWwgPSBlbDtcbiAgICB3aGlsZSAoIWlzSGVhZGVyVGFnKHJlc3VsdEVsKSAmJiByZXN1bHRFbC50YWdOYW1lICE9PSAnQk9EWScpIHtcbiAgICAgICAgaWYgKCFyZXN1bHRFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRFbCA9IHJlc3VsdEVsLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIGlmICghaXNIZWFkZXJUYWcocmVzdWx0RWwpIHx8IHJlc3VsdEVsLnRhZ05hbWUgPT09ICdCT0RZJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdEVsO1xufVxuZnVuY3Rpb24gaXNIZWFkZXJUYWcoZWwpIHtcbiAgICByZXR1cm4gWydIMScsICdIMicsICdIMycsICdINCcsICdINScsICdINiddLmluY2x1ZGVzKGVsLnRhZ05hbWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGcm9tSFRNTChodG1sU3RyaW5nKSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LmlubmVySFRNTCA9IGh0bWxTdHJpbmcudHJpbSgpO1xuICAgIHJldHVybiBkaXYuZmlyc3RDaGlsZDtcbn1cbmV4cG9ydCBjb25zdCBnZXRSYW5kb21LZXkgPSAoKSA9PiBNYXRoLnJhbmRvbSgpO1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW52YWxpZEVtYWlsKGVtYWlsKSB7XG4gICAgY29uc3QgRU1BSUxfUkUgPSAvXFxTK0BcXFMrLztcbiAgICByZXR1cm4gIUVNQUlMX1JFLnRlc3QoZW1haWwpO1xufVxuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHZpZXdCb3g6IFwiMCAwIDE2IDE2XCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgZDogXCJNNiAxMmw0LTQtNC00XCJcbn0pKSk7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9nZ2xlQXJyb3cuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub2dnbGVBcnJvdy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgQ2hldnJvbkljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL2NoZXZyb24uc3ZnJztcbmltcG9ydCAnLi9Ub2dnbGVBcnJvdy5zY3NzJztcbmNvbnN0IGIgPSBibG9jaygnZGMtdG9nZ2xlLWFycm93Jyk7XG5leHBvcnQgY29uc3QgVG9nZ2xlQXJyb3cgPSAoeyB0eXBlID0gJ2hvcml6b250YWwnLCBvcGVuID0gZmFsc2UsIHNpemUgPSAxNiwgdGhpbiA9IGZhbHNlLCBzbG93ID0gZmFsc2UsIGNsYXNzTmFtZSwgfSkgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChDaGV2cm9uSWNvbiwgeyBjbGFzc05hbWU6IGIoeyB0eXBlLCBvcGVuLCB0aGluLCBzbG93IH0sIGNsYXNzTmFtZSksIHdpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemUgfSk7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub2NJdGVtLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9jSXRlbS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgeyBUb2dnbGVBcnJvdyB9IGZyb20gJy4uL1RvZ2dsZUFycm93JztcbmltcG9ydCB7IGlzRXh0ZXJuYWxIcmVmIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0ICcuL1RvY0l0ZW0uc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLXRvYy1pdGVtJyk7XG5jbGFzcyBUb2NJdGVtIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5jb250ZW50UmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9JdGVtID0gKCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1FbGVtZW50ID0gdGhpcy5jb250ZW50UmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBjb25zdCBpdGVtSGVpZ2h0ID0gKF9hID0gaXRlbUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgY29uc3QgaXRlbU9mZnNldCA9IGl0ZW1FbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGFibGVQYXJlbnQgPSBpdGVtRWxlbWVudC5vZmZzZXRQYXJlbnQ7XG4gICAgICAgICAgICBpZiAoIXNjcm9sbGFibGVQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxhYmxlSGVpZ2h0ID0gc2Nyb2xsYWJsZVBhcmVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxhYmxlT2Zmc2V0ID0gc2Nyb2xsYWJsZVBhcmVudC5zY3JvbGxUb3A7XG4gICAgICAgICAgICBjb25zdCBpdGVtVmlzaWJsZSA9IGl0ZW1PZmZzZXQgPj0gc2Nyb2xsYWJsZU9mZnNldCAmJlxuICAgICAgICAgICAgICAgIGl0ZW1PZmZzZXQgPD0gc2Nyb2xsYWJsZU9mZnNldCArIHNjcm9sbGFibGVIZWlnaHQgLSBpdGVtSGVpZ2h0O1xuICAgICAgICAgICAgaWYgKCFpdGVtVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVQYXJlbnQuc2Nyb2xsVG9wID0gaXRlbU9mZnNldCAtIE1hdGguZmxvb3Ioc2Nyb2xsYWJsZUhlaWdodCAvIDIpICsgaXRlbUhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgaWQsIGhyZWYsIGFjdGl2ZSwgZXhwYW5kZWQsIHRvZ2dsZUl0ZW0gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZSAmJiBocmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9nZ2xlSXRlbShpZCwgZXhwYW5kZWQpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgaHJlZiwgYWN0aXZlLCBleHBhbmRhYmxlLCBleHBhbmRlZCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgdGV4dCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIG51bGwsIG5hbWUpO1xuICAgICAgICBjb25zdCBpY29uID0gZXhwYW5kYWJsZSA/IChSZWFjdC5jcmVhdGVFbGVtZW50KFRvZ2dsZUFycm93LCB7IGNsYXNzTmFtZTogYignaWNvbicpLCBvcGVuOiBleHBhbmRlZCwgdGhpbjogdHJ1ZSB9KSkgOiBudWxsO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyByZWY6IGhyZWYgPyBudWxsIDogdGhpcy5jb250ZW50UmVmLCBjbGFzc05hbWU6IGIoJ3RleHQnLCB7IGFjdGl2ZSB9KSwgb25DbGljazogZXhwYW5kYWJsZSAmJiAhaHJlZiA/IHRoaXMuaGFuZGxlQ2xpY2sgOiB1bmRlZmluZWQgfSxcbiAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICB0ZXh0KSk7XG4gICAgICAgIGlmICghaHJlZikge1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNFeHRlcm5hbCA9IGlzRXh0ZXJuYWxIcmVmKGhyZWYpO1xuICAgICAgICBjb25zdCBsaW5rQXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgICB0YXJnZXQ6IGlzRXh0ZXJuYWwgPyAnX2JsYW5rJyA6ICdfc2VsZicsXG4gICAgICAgICAgICByZWw6IGlzRXh0ZXJuYWwgPyAnbm9vcGVuZXIgbm9yZWZlcnJlcicgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgT2JqZWN0LmFzc2lnbih7fSwgbGlua0F0dHJpYnV0ZXMsIHsgY2xhc3NOYW1lOiBiKCdsaW5rJyksIG9uQ2xpY2s6IGV4cGFuZGFibGUgJiYgaHJlZiA/IHRoaXMuaGFuZGxlQ2xpY2sgOiB1bmRlZmluZWQsIFwiZGF0YS1yb3V0ZXItc2hhbGxvd1wiOiB0cnVlIH0pLCBjb250ZW50KSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgVG9jSXRlbTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgY29uc3QgSFRNTCA9ICh7IGNoaWxkcmVuLCBibG9jayA9IGZhbHNlLCBjbGFzc05hbWUgfSkgPT4ge1xuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KGJsb2NrID8gJ2RpdicgOiAnc3BhbicsIHtcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHsgX19odG1sOiBjaGlsZHJlbiB9LFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgfSk7XG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0gc291cmNlS2V5c1tpXTtcbiAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCJleHBvcnQgZnVuY3Rpb24gd2FybigpIHtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgdmFyIF9jb25zb2xlO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIGFyZ3NbMF0gPSBcInJlYWN0LWkxOG5leHQ6OiBcIi5jb25jYXQoYXJnc1swXSk7XG5cbiAgICAoX2NvbnNvbGUgPSBjb25zb2xlKS53YXJuLmFwcGx5KF9jb25zb2xlLCBhcmdzKTtcbiAgfVxufVxudmFyIGFscmVhZHlXYXJuZWQgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB3YXJuT25jZSgpIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyAmJiBhbHJlYWR5V2FybmVkW2FyZ3NbMF1dKSByZXR1cm47XG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIGFscmVhZHlXYXJuZWRbYXJnc1swXV0gPSBuZXcgRGF0ZSgpO1xuICB3YXJuLmFwcGx5KHZvaWQgMCwgYXJncyk7XG59XG5leHBvcnQgZnVuY3Rpb24gbG9hZE5hbWVzcGFjZXMoaTE4biwgbnMsIGNiKSB7XG4gIGkxOG4ubG9hZE5hbWVzcGFjZXMobnMsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaTE4bi5pc0luaXRpYWxpemVkKSB7XG4gICAgICBjYigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgaW5pdGlhbGl6ZWQgPSBmdW5jdGlvbiBpbml0aWFsaXplZCgpIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaTE4bi5vZmYoJ2luaXRpYWxpemVkJywgaW5pdGlhbGl6ZWQpO1xuICAgICAgICB9LCAwKTtcbiAgICAgICAgY2IoKTtcbiAgICAgIH07XG5cbiAgICAgIGkxOG4ub24oJ2luaXRpYWxpemVkJywgaW5pdGlhbGl6ZWQpO1xuICAgIH1cbiAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaGFzTG9hZGVkTmFtZXNwYWNlKG5zLCBpMThuKSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7fTtcblxuICBpZiAoIWkxOG4ubGFuZ3VhZ2VzIHx8ICFpMThuLmxhbmd1YWdlcy5sZW5ndGgpIHtcbiAgICB3YXJuT25jZSgnaTE4bi5sYW5ndWFnZXMgd2VyZSB1bmRlZmluZWQgb3IgZW1wdHknLCBpMThuLmxhbmd1YWdlcyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgbG5nID0gaTE4bi5sYW5ndWFnZXNbMF07XG4gIHZhciBmYWxsYmFja0xuZyA9IGkxOG4ub3B0aW9ucyA/IGkxOG4ub3B0aW9ucy5mYWxsYmFja0xuZyA6IGZhbHNlO1xuICB2YXIgbGFzdExuZyA9IGkxOG4ubGFuZ3VhZ2VzW2kxOG4ubGFuZ3VhZ2VzLmxlbmd0aCAtIDFdO1xuICBpZiAobG5nLnRvTG93ZXJDYXNlKCkgPT09ICdjaW1vZGUnKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgbG9hZE5vdFBlbmRpbmcgPSBmdW5jdGlvbiBsb2FkTm90UGVuZGluZyhsLCBuKSB7XG4gICAgdmFyIGxvYWRTdGF0ZSA9IGkxOG4uc2VydmljZXMuYmFja2VuZENvbm5lY3Rvci5zdGF0ZVtcIlwiLmNvbmNhdChsLCBcInxcIikuY29uY2F0KG4pXTtcbiAgICByZXR1cm4gbG9hZFN0YXRlID09PSAtMSB8fCBsb2FkU3RhdGUgPT09IDI7XG4gIH07XG5cbiAgaWYgKG9wdGlvbnMuYmluZEkxOG4gJiYgb3B0aW9ucy5iaW5kSTE4bi5pbmRleE9mKCdsYW5ndWFnZUNoYW5naW5nJykgPiAtMSAmJiBpMThuLnNlcnZpY2VzLmJhY2tlbmRDb25uZWN0b3IuYmFja2VuZCAmJiBpMThuLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvICYmICFsb2FkTm90UGVuZGluZyhpMThuLmlzTGFuZ3VhZ2VDaGFuZ2luZ1RvLCBucykpIHJldHVybiBmYWxzZTtcbiAgaWYgKGkxOG4uaGFzUmVzb3VyY2VCdW5kbGUobG5nLCBucykpIHJldHVybiB0cnVlO1xuICBpZiAoIWkxOG4uc2VydmljZXMuYmFja2VuZENvbm5lY3Rvci5iYWNrZW5kKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKGxvYWROb3RQZW5kaW5nKGxuZywgbnMpICYmICghZmFsbGJhY2tMbmcgfHwgbG9hZE5vdFBlbmRpbmcobGFzdExuZywgbnMpKSkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShDb21wb25lbnQpIHtcbiAgcmV0dXJuIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAodHlwZW9mIENvbXBvbmVudCA9PT0gJ3N0cmluZycgJiYgQ29tcG9uZW50Lmxlbmd0aCA+IDAgPyBDb21wb25lbnQgOiAnVW5rbm93bicpO1xufSIsImltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHsgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyB9IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ29udGV4dCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0STE4biwgZ2V0RGVmYXVsdHMsIFJlcG9ydE5hbWVzcGFjZXMsIEkxOG5Db250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IHdhcm5PbmNlLCBsb2FkTmFtZXNwYWNlcywgaGFzTG9hZGVkTmFtZXNwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgZnVuY3Rpb24gdXNlVHJhbnNsYXRpb24obnMpIHtcbiAgdmFyIHByb3BzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcbiAgdmFyIGkxOG5Gcm9tUHJvcHMgPSBwcm9wcy5pMThuO1xuXG4gIHZhciBfcmVmID0gdXNlQ29udGV4dChJMThuQ29udGV4dCkgfHwge30sXG4gICAgICBpMThuRnJvbUNvbnRleHQgPSBfcmVmLmkxOG4sXG4gICAgICBkZWZhdWx0TlNGcm9tQ29udGV4dCA9IF9yZWYuZGVmYXVsdE5TO1xuXG4gIHZhciBpMThuID0gaTE4bkZyb21Qcm9wcyB8fCBpMThuRnJvbUNvbnRleHQgfHwgZ2V0STE4bigpO1xuICBpZiAoaTE4biAmJiAhaTE4bi5yZXBvcnROYW1lc3BhY2VzKSBpMThuLnJlcG9ydE5hbWVzcGFjZXMgPSBuZXcgUmVwb3J0TmFtZXNwYWNlcygpO1xuXG4gIGlmICghaTE4bikge1xuICAgIHdhcm5PbmNlKCdZb3Ugd2lsbCBuZWVkIHRvIHBhc3MgaW4gYW4gaTE4bmV4dCBpbnN0YW5jZSBieSB1c2luZyBpbml0UmVhY3RJMThuZXh0Jyk7XG5cbiAgICB2YXIgbm90UmVhZHlUID0gZnVuY3Rpb24gbm90UmVhZHlUKGspIHtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGspID8ga1trLmxlbmd0aCAtIDFdIDogaztcbiAgICB9O1xuXG4gICAgdmFyIHJldE5vdFJlYWR5ID0gW25vdFJlYWR5VCwge30sIGZhbHNlXTtcbiAgICByZXROb3RSZWFkeS50ID0gbm90UmVhZHlUO1xuICAgIHJldE5vdFJlYWR5LmkxOG4gPSB7fTtcbiAgICByZXROb3RSZWFkeS5yZWFkeSA9IGZhbHNlO1xuICAgIHJldHVybiByZXROb3RSZWFkeTtcbiAgfVxuXG4gIGlmIChpMThuLm9wdGlvbnMucmVhY3QgJiYgaTE4bi5vcHRpb25zLnJlYWN0LndhaXQgIT09IHVuZGVmaW5lZCkgd2Fybk9uY2UoJ0l0IHNlZW1zIHlvdSBhcmUgc3RpbGwgdXNpbmcgdGhlIG9sZCB3YWl0IG9wdGlvbiwgeW91IG1heSBtaWdyYXRlIHRvIHRoZSBuZXcgdXNlU3VzcGVuc2UgYmVoYXZpb3VyLicpO1xuXG4gIHZhciBpMThuT3B0aW9ucyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBnZXREZWZhdWx0cygpKSwgaTE4bi5vcHRpb25zLnJlYWN0KSwgcHJvcHMpO1xuXG4gIHZhciB1c2VTdXNwZW5zZSA9IGkxOG5PcHRpb25zLnVzZVN1c3BlbnNlLFxuICAgICAga2V5UHJlZml4ID0gaTE4bk9wdGlvbnMua2V5UHJlZml4O1xuICB2YXIgbmFtZXNwYWNlcyA9IG5zIHx8IGRlZmF1bHROU0Zyb21Db250ZXh0IHx8IGkxOG4ub3B0aW9ucyAmJiBpMThuLm9wdGlvbnMuZGVmYXVsdE5TO1xuICBuYW1lc3BhY2VzID0gdHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gW25hbWVzcGFjZXNdIDogbmFtZXNwYWNlcyB8fCBbJ3RyYW5zbGF0aW9uJ107XG4gIGlmIChpMThuLnJlcG9ydE5hbWVzcGFjZXMuYWRkVXNlZE5hbWVzcGFjZXMpIGkxOG4ucmVwb3J0TmFtZXNwYWNlcy5hZGRVc2VkTmFtZXNwYWNlcyhuYW1lc3BhY2VzKTtcbiAgdmFyIHJlYWR5ID0gKGkxOG4uaXNJbml0aWFsaXplZCB8fCBpMThuLmluaXRpYWxpemVkU3RvcmVPbmNlKSAmJiBuYW1lc3BhY2VzLmV2ZXJ5KGZ1bmN0aW9uIChuKSB7XG4gICAgcmV0dXJuIGhhc0xvYWRlZE5hbWVzcGFjZShuLCBpMThuLCBpMThuT3B0aW9ucyk7XG4gIH0pO1xuXG4gIGZ1bmN0aW9uIGdldFQoKSB7XG4gICAgcmV0dXJuIGkxOG4uZ2V0Rml4ZWRUKG51bGwsIGkxOG5PcHRpb25zLm5zTW9kZSA9PT0gJ2ZhbGxiYWNrJyA/IG5hbWVzcGFjZXMgOiBuYW1lc3BhY2VzWzBdLCBrZXlQcmVmaXgpO1xuICB9XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKGdldFQpLFxuICAgICAgX3VzZVN0YXRlMiA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZSwgMiksXG4gICAgICB0ID0gX3VzZVN0YXRlMlswXSxcbiAgICAgIHNldFQgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBpc01vdW50ZWQgPSB1c2VSZWYodHJ1ZSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGJpbmRJMThuID0gaTE4bk9wdGlvbnMuYmluZEkxOG4sXG4gICAgICAgIGJpbmRJMThuU3RvcmUgPSBpMThuT3B0aW9ucy5iaW5kSTE4blN0b3JlO1xuICAgIGlzTW91bnRlZC5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIGlmICghcmVhZHkgJiYgIXVzZVN1c3BlbnNlKSB7XG4gICAgICBsb2FkTmFtZXNwYWNlcyhpMThuLCBuYW1lc3BhY2VzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc01vdW50ZWQuY3VycmVudCkgc2V0VChnZXRUKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJvdW5kUmVzZXQoKSB7XG4gICAgICBpZiAoaXNNb3VudGVkLmN1cnJlbnQpIHNldFQoZ2V0VCk7XG4gICAgfVxuXG4gICAgaWYgKGJpbmRJMThuICYmIGkxOG4pIGkxOG4ub24oYmluZEkxOG4sIGJvdW5kUmVzZXQpO1xuICAgIGlmIChiaW5kSTE4blN0b3JlICYmIGkxOG4pIGkxOG4uc3RvcmUub24oYmluZEkxOG5TdG9yZSwgYm91bmRSZXNldCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlzTW91bnRlZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICBpZiAoYmluZEkxOG4gJiYgaTE4bikgYmluZEkxOG4uc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBpMThuLm9mZihlLCBib3VuZFJlc2V0KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGJpbmRJMThuU3RvcmUgJiYgaTE4bikgYmluZEkxOG5TdG9yZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIGkxOG4uc3RvcmUub2ZmKGUsIGJvdW5kUmVzZXQpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSwgW2kxOG4sIG5hbWVzcGFjZXMuam9pbigpXSk7XG4gIHZhciBpc0luaXRpYWwgPSB1c2VSZWYodHJ1ZSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGlzTW91bnRlZC5jdXJyZW50ICYmICFpc0luaXRpYWwuY3VycmVudCkge1xuICAgICAgc2V0VChnZXRUKTtcbiAgICB9XG5cbiAgICBpc0luaXRpYWwuY3VycmVudCA9IGZhbHNlO1xuICB9LCBbaTE4bl0pO1xuICB2YXIgcmV0ID0gW3QsIGkxOG4sIHJlYWR5XTtcbiAgcmV0LnQgPSB0O1xuICByZXQuaTE4biA9IGkxOG47XG4gIHJldC5yZWFkeSA9IHJlYWR5O1xuICBpZiAocmVhZHkpIHJldHVybiByZXQ7XG4gIGlmICghcmVhZHkgJiYgIXVzZVN1c3BlbnNlKSByZXR1cm4gcmV0O1xuICB0aHJvdyBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIGxvYWROYW1lc3BhY2VzKGkxOG4sIG5hbWVzcGFjZXMsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9KTtcbiAgfSk7XG59IiwiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbnZhciBfZXhjbHVkZWQgPSBbXCJmb3J3YXJkZWRSZWZcIl07XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHsgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyB9IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnLi91c2VUcmFuc2xhdGlvbic7XG5pbXBvcnQgeyBnZXREaXNwbGF5TmFtZSB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhUcmFuc2xhdGlvbihucykge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHJldHVybiBmdW5jdGlvbiBFeHRlbmQoV3JhcHBlZENvbXBvbmVudCkge1xuICAgIGZ1bmN0aW9uIEkxOG5leHRXaXRoVHJhbnNsYXRpb24oX3JlZikge1xuICAgICAgdmFyIGZvcndhcmRlZFJlZiA9IF9yZWYuZm9yd2FyZGVkUmVmLFxuICAgICAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICAgICAgdmFyIF91c2VUcmFuc2xhdGlvbiA9IHVzZVRyYW5zbGF0aW9uKG5zLCByZXN0KSxcbiAgICAgICAgICBfdXNlVHJhbnNsYXRpb24yID0gX3NsaWNlZFRvQXJyYXkoX3VzZVRyYW5zbGF0aW9uLCAzKSxcbiAgICAgICAgICB0ID0gX3VzZVRyYW5zbGF0aW9uMlswXSxcbiAgICAgICAgICBpMThuID0gX3VzZVRyYW5zbGF0aW9uMlsxXSxcbiAgICAgICAgICByZWFkeSA9IF91c2VUcmFuc2xhdGlvbjJbMl07XG5cbiAgICAgIHZhciBwYXNzRG93blByb3BzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0KSwge30sIHtcbiAgICAgICAgdDogdCxcbiAgICAgICAgaTE4bjogaTE4bixcbiAgICAgICAgdFJlYWR5OiByZWFkeVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChvcHRpb25zLndpdGhSZWYgJiYgZm9yd2FyZGVkUmVmKSB7XG4gICAgICAgIHBhc3NEb3duUHJvcHMucmVmID0gZm9yd2FyZGVkUmVmO1xuICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy53aXRoUmVmICYmIGZvcndhcmRlZFJlZikge1xuICAgICAgICBwYXNzRG93blByb3BzLmZvcndhcmRlZFJlZiA9IGZvcndhcmRlZFJlZjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgcGFzc0Rvd25Qcm9wcyk7XG4gICAgfVxuXG4gICAgSTE4bmV4dFdpdGhUcmFuc2xhdGlvbi5kaXNwbGF5TmFtZSA9IFwid2l0aEkxOG5leHRUcmFuc2xhdGlvbihcIi5jb25jYXQoZ2V0RGlzcGxheU5hbWUoV3JhcHBlZENvbXBvbmVudCksIFwiKVwiKTtcbiAgICBJMThuZXh0V2l0aFRyYW5zbGF0aW9uLldyYXBwZWRDb21wb25lbnQgPSBXcmFwcGVkQ29tcG9uZW50O1xuXG4gICAgdmFyIGZvcndhcmRSZWYgPSBmdW5jdGlvbiBmb3J3YXJkUmVmKHByb3BzLCByZWYpIHtcbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEkxOG5leHRXaXRoVHJhbnNsYXRpb24sIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgIGZvcndhcmRlZFJlZjogcmVmXG4gICAgICB9KSk7XG4gICAgfTtcblxuICAgIHJldHVybiBvcHRpb25zLndpdGhSZWYgPyBSZWFjdC5mb3J3YXJkUmVmKGZvcndhcmRSZWYpIDogSTE4bmV4dFdpdGhUcmFuc2xhdGlvbjtcbiAgfTtcbn0iLCJpbXBvcnQgb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCk7XG4gIHZhciBrZXksIGk7XG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG4gICAgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGtleSA9IHNvdXJjZVN5bWJvbEtleXNbaV07XG4gICAgICBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiaW1wb3J0IGJlbUJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmV4cG9ydCBjb25zdCBOQU1FU1BBQ0UgPSAneWMtJztcbmV4cG9ydCBjb25zdCBOQU1FU1BBQ0VfTkVXID0gJ2ctJztcbmV4cG9ydCBmdW5jdGlvbiBibG9jayhuYW1lKSB7XG4gICAgcmV0dXJuIGJlbUJsb2NrKGAke05BTUVTUEFDRX0ke25hbWV9YCk7XG59XG5leHBvcnQgZnVuY3Rpb24gYmxvY2tOZXcobmFtZSkge1xuICAgIHJldHVybiBiZW1CbG9jayhgJHtOQU1FU1BBQ0VfTkVXfSR7bmFtZX1gKTtcbn1cbi8qKlxuICogRXh0cmFjdHMgbW9kaWZpZXJzIHBhcnQgZnJvbSBjbGFzc05hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZHNDbGFzc05hbWUoY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZS5zcGxpdCgvXFxzKC4qKS8pWzFdO1xufVxuIiwiaW1wb3J0IHsgaXNWYWxpZEVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgZnVuY3Rpb24gaXNPZlR5cGUoQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGlzTWF0Y2hpbmcoY29tcG9uZW50KSB7XG4gICAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQoY29tcG9uZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdHlwZSA9PT0gQ29tcG9uZW50IHx8IHR5cGUuZGlzcGxheU5hbWUgPT09IENvbXBvbmVudC5kaXNwbGF5TmFtZTtcbiAgICB9O1xufVxuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG4iLCJpbXBvcnQgeyBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IE5BTUVTUEFDRSB9IGZyb20gJy4vY24nO1xuZXhwb3J0IGNsYXNzIEV2ZW50QnJva2VyIHtcbiAgICBjb25zdHJ1Y3RvcihwcmVmaXgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgICAgIHRoaXMuY29tcG9uZW50UHJlZml4ID0gcHJlZml4O1xuICAgIH1cbiAgICBzdWJzY3JpYmUoc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfVxuICAgIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbikge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc3Vic2NyaXB0aW9ucy5pbmRleE9mKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaXNoKF9hKSB7XG4gICAgICAgIHZhciB7IGNvbXBvbmVudElkIH0gPSBfYSwgcmVzdERhdGEgPSBfX3Jlc3QoX2EsIFtcImNvbXBvbmVudElkXCJdKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKGZuKSA9PiBmbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHJlc3REYXRhKSwgeyBjb21wb25lbnRJZDogdGhpcy5jb21wb25lbnRQcmVmaXhcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuY29tcG9uZW50UHJlZml4fSR7Y29tcG9uZW50SWR9YFxuICAgICAgICAgICAgICAgIDogY29tcG9uZW50SWQgfSkpKTtcbiAgICB9XG4gICAgd2l0aEV2ZW50UHVibGlzaGVyKGNvbXBvbmVudElkLCBxYSkge1xuICAgICAgICByZXR1cm4gKGV2ZW50QnJva2VyRGF0YSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wdWJsaXNoKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRCcm9rZXJEYXRhKSwgeyBjb21wb25lbnRJZCxcbiAgICAgICAgICAgICAgICBxYSB9KSk7XG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IGV2ZW50QnJva2VyID0gbmV3IEV2ZW50QnJva2VyKE5BTUVTUEFDRSk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYmxvY2sgfSBmcm9tICcuLi91dGlscy9jbic7XG5jb25zdCBiID0gYmxvY2soJ2J1dHRvbicpO1xuZXhwb3J0IGNvbnN0IEJ1dHRvbkljb24gPSAoeyBzaWRlLCBjbGFzc05hbWUsIGNoaWxkcmVuIH0pID0+IHtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBiKCdpY29uJywge1xuICAgICAgICAgICAgc2lkZSxcbiAgICAgICAgfSwgY2xhc3NOYW1lKSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYignaWNvbi1pbm5lcicpIH0sIGNoaWxkcmVuKSkpO1xufTtcbkJ1dHRvbkljb24uZGlzcGxheU5hbWUgPSAnQnV0dG9uLkljb24nO1xuIiwiZXhwb3J0IGNvbnN0IGExMXlIaWRkZW5TdmdQcm9wcyA9IHtcbiAgICAvLyBIaWRlcyBlbGVtZW50IGZyb20gYTExeSB0cmVlXG4gICAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbn07XG4iLCJleHBvcnQgZnVuY3Rpb24gaXNTcHJpdGVEYXRhKGRhdGEpIHtcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU3ZnckRhdGEoZGF0YSkge1xuICAgIHJldHVybiB0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJyAmJiAoIWRhdGEucHJvdG90eXBlIHx8ICFkYXRhLnByb3RvdHlwZS5yZW5kZXIpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcG9uZW50U3ZnRGF0YShkYXRhKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAnZGVmYXVsdFByb3BzJyBpbiBkYXRhO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nU3ZnRGF0YShkYXRhKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlU3RyaW5nRGF0YShkYXRhKSB7XG4gICAgcmV0dXJuIGRhdGEucmVwbGFjZSgvKHdpZHRofGhlaWdodCk9KFtcIiddPylcXGQrXFwyL2csICcnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHJpbmdWaWV3Qm94KGRhdGEpIHtcbiAgICBjb25zdCBtYXRjaCA9IGRhdGEubWF0Y2goL3ZpZXdCb3g9KFtcIiddPykoW1xcZFxccywtXSspXFwxLyk7XG4gICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiB1bmRlZmluZWQ7XG59XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JY29uLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9JY29uLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBibG9jayB9IGZyb20gJy4uL3V0aWxzL2NuJztcbmltcG9ydCB7IGExMXlIaWRkZW5TdmdQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3N2Zyc7XG5pbXBvcnQgeyBpc1Nwcml0ZURhdGEsIGlzU3ZnckRhdGEsIGlzU3RyaW5nU3ZnRGF0YSwgcHJlcGFyZVN0cmluZ0RhdGEsIGdldFN0cmluZ1ZpZXdCb3gsIGlzQ29tcG9uZW50U3ZnRGF0YSwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAnLi9JY29uLmNzcyc7XG5jb25zdCBiID0gYmxvY2soJ2ljb24nKTtcbmV4cG9ydCBmdW5jdGlvbiBJY29uKHsgZGF0YSwgd2lkdGgsIGhlaWdodCwgc2l6ZSwgY2xhc3NOYW1lLCBmaWxsID0gJ2N1cnJlbnRDb2xvcicsIHN0cm9rZSA9ICdub25lJywgcWEsIH0pIHtcbiAgICAvLyBUaGlzIGNvbXBvbmVudCBzdXBwb3J0cyBmb3VyIGRpZmZlcmVudCB3YXlzIHRvIGxvYWQgYW5kIHVzZSBpY29uczpcbiAgICAvLyAtIHN2Zy1yZWFjdC1sb2FkZXJcbiAgICAvLyAtIHN2Zy1zcHJpdGUtbG9hZGVyXG4gICAgLy8gLSBAc3Znci93ZWJwYWNrXG4gICAgLy8gLSBzdHJpbmcgd2l0aCByYXcgc3ZnXG4gICAgbGV0IHcsIGg7XG4gICAgaWYgKHNpemUpIHtcbiAgICAgICAgdyA9IHNpemU7XG4gICAgICAgIGggPSBzaXplO1xuICAgIH1cbiAgICBpZiAod2lkdGgpIHtcbiAgICAgICAgdyA9IHdpZHRoO1xuICAgIH1cbiAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICAgIGggPSBoZWlnaHQ7XG4gICAgfVxuICAgIC8vIFBhcnNpbmcgdmlld0JveCB0byBnZXQgd2lkdGggYW5kIGhlaWdodCBpbiBjYXNlIHRoZXkgd2VyZSBub3Qgc3BlY2lmaWVkXG4gICAgLy8gRm9yIHN2Zy1yZWFjdC1sb2FkZXIgc3ZnIGF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSBpbiBjb21wb25lbnQgZGVmYXVsdFByb3BzXG4gICAgLy8gSW4gY2FzZSB3aXRoIEBzdmdyL3dlYnBhY2sgc3ZnIGF0dHJpYnV0ZXMgY2FuIGJlIGZldGNoZWQgZnJvbSB0aGUgcmVhY3QgZWxlbWVudFxuICAgIC8vIGFmdGVyIGNhbGxpbmcgc3Znci1jb21wb25lbnQgd2l0aG91dCBhbnkgcHJvcHNlc1xuICAgIGxldCB2aWV3Qm94O1xuICAgIGlmIChpc1Nwcml0ZURhdGEoZGF0YSkpIHtcbiAgICAgICAgKHsgdmlld0JveCB9ID0gZGF0YSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzU3RyaW5nU3ZnRGF0YShkYXRhKSkge1xuICAgICAgICB2aWV3Qm94ID0gZ2V0U3RyaW5nVmlld0JveChkYXRhKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNDb21wb25lbnRTdmdEYXRhKGRhdGEpKSB7XG4gICAgICAgICh7IHZpZXdCb3ggfSA9IGRhdGEuZGVmYXVsdFByb3BzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNTdmdyRGF0YShkYXRhKSkge1xuICAgICAgICBjb25zdCBlbCA9IGRhdGEoe30pO1xuICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICh7IHZpZXdCb3ggfSA9IGVsLnByb3BzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodmlld0JveCAmJiAoIXcgfHwgIWgpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHZpZXdCb3guc3BsaXQoL1xccyt8XFxzKixcXHMqLyk7XG4gICAgICAgIGlmICghdykge1xuICAgICAgICAgICAgdyA9IHZhbHVlc1syXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWgpIHtcbiAgICAgICAgICAgIGggPSB2YWx1ZXNbM107XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcHJvcHMgPSBPYmplY3QuYXNzaWduKHsgeG1sbnM6ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHhtbG5zWGxpbms6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywgd2lkdGg6IHcsIGhlaWdodDogaCwgY2xhc3NOYW1lOiBiKG51bGwsIGNsYXNzTmFtZSksIGZpbGwsXG4gICAgICAgIHN0cm9rZSwgJ2RhdGEtcWEnOiBxYSB9LCBhMTF5SGlkZGVuU3ZnUHJvcHMpO1xuICAgIGlmIChpc1N0cmluZ1N2Z0RhdGEoZGF0YSkpIHtcbiAgICAgICAgY29uc3QgcHJlcGFyZWREYXRhID0gcHJlcGFyZVN0cmluZ0RhdGEoZGF0YSk7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDogcHJlcGFyZWREYXRhIH0gfSkpO1xuICAgIH1cbiAgICBpZiAoaXNTcHJpdGVEYXRhKGRhdGEpKSB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSBJY29uLnByZWZpeCArIChkYXRhLnVybCB8fCBgIyR7ZGF0YS5pZH1gKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7IHZpZXdCb3g6IHZpZXdCb3ggfSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidXNlXCIsIHsgaHJlZjogaHJlZiwgeGxpbmtIcmVmOiBocmVmIH0pKSk7XG4gICAgfVxuICAgIC8vIFNWRyB3cmFwcGluZyBpcyBuZWVkZWQgZm9yIGNvbXBhYmlsaXR5IHdpdGggc3ByaXRlLWxvYWRlclxuICAgIC8vIFNvIHdlIHJlbW92aW5nIHdpZHRoIGFuZCBoZWlnaHQgZm9yIGludGVybmFsIGNvbXBvbmVudCBzbyBvbmx5IGV4dGVybmFsIG9uZSBpcyBzcGVjaWZ5aW5nIHRoZW1cbiAgICBjb25zdCBJY29uQ29tcG9uZW50ID0gZGF0YTtcbiAgICBpZiAoSWNvbkNvbXBvbmVudC5kZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgSWNvbkNvbXBvbmVudC5kZWZhdWx0UHJvcHMud2lkdGggPSBJY29uQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5oZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcyksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbXBvbmVudCwgeyB3aWR0aDogdW5kZWZpbmVkLCBoZWlnaHQ6IHVuZGVmaW5lZCB9KSkpO1xufVxuSWNvbi5kaXNwbGF5TmFtZSA9ICdJY29uJztcbkljb24ucHJlZml4ID0gJyc7XG4iLCJpbXBvcnQgeyBOQU1FU1BBQ0UgfSBmcm9tICcuL2NuJztcbmltcG9ydCB7IGlzT2ZUeXBlIH0gZnJvbSAnLi9pc09mVHlwZSc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vSWNvbic7XG5sZXQgbmV4dFVuaXF1ZUlkID0gMTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmlxSWQoKSB7XG4gICAgcmV0dXJuIGAke05BTUVTUEFDRX11bmlxLSR7bmV4dFVuaXF1ZUlkKyt9YDtcbn1cbmV4cG9ydCBjb25zdCBpc0ljb24gPSBpc09mVHlwZShJY29uKTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0J1dHRvbi5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQnV0dG9uLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCwgeyBjbG9uZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBibG9jayB9IGZyb20gJy4uL3V0aWxzL2NuJztcbmltcG9ydCB7IGlzT2ZUeXBlIH0gZnJvbSAnLi4vdXRpbHMvaXNPZlR5cGUnO1xuaW1wb3J0IHsgZXZlbnRCcm9rZXIgfSBmcm9tICcuLi91dGlscy9ldmVudC1icm9rZXInO1xuaW1wb3J0IHsgQnV0dG9uSWNvbiB9IGZyb20gJy4vQnV0dG9uSWNvbic7XG5pbXBvcnQgeyBpc0ljb24gfSBmcm9tICcuLi91dGlscy9jb21tb24nO1xuaW1wb3J0ICcuL0J1dHRvbi5jc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdidXR0b24nKTtcbmNvbnN0IEJ1dHRvbldpdGhIYW5kbGVycyA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQnV0dG9uKHsgdmlldyA9ICdub3JtYWwnLCBzaXplID0gJ20nLCBwaW4gPSAncm91bmQtcm91bmQnLCBzZWxlY3RlZCA9IGZhbHNlLCBkaXNhYmxlZCA9IGZhbHNlLCBsb2FkaW5nID0gZmFsc2UsIHdpZHRoLCB0aXRsZSwgdGFiSW5kZXgsIHR5cGUgPSAnYnV0dG9uJywgY29tcG9uZW50LCBocmVmLCB0YXJnZXQsIHJlbCwgZXh0cmFQcm9wcywgb25DbGljaywgb25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmUsIG9uRm9jdXMsIG9uQmx1ciwgY2hpbGRyZW4sIGlkLCBzdHlsZSwgY2xhc3NOYW1lLCBxYSwgfSwgcmVmKSB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tDYXB0dXJlID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50QnJva2VyLnB1Ymxpc2goe1xuICAgICAgICAgICAgY29tcG9uZW50SWQ6ICdCdXR0b24nLFxuICAgICAgICAgICAgZXZlbnRJZDogJ2NsaWNrJyxcbiAgICAgICAgICAgIGRvbUV2ZW50OiBldmVudCxcbiAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiBldmVudC5jdXJyZW50VGFyZ2V0LnRleHRDb250ZW50LFxuICAgICAgICAgICAgICAgIHZpZXcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9LCBbdmlld10pO1xuICAgIGNvbnN0IGNvbW1vblByb3BzID0ge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdGFiSW5kZXgsXG4gICAgICAgIG9uQ2xpY2ssXG4gICAgICAgIG9uQ2xpY2tDYXB0dXJlOiBoYW5kbGVDbGlja0NhcHR1cmUsXG4gICAgICAgIG9uTW91c2VFbnRlcixcbiAgICAgICAgb25Nb3VzZUxlYXZlLFxuICAgICAgICBvbkZvY3VzLFxuICAgICAgICBvbkJsdXIsXG4gICAgICAgIGlkLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgY2xhc3NOYW1lOiBiKHtcbiAgICAgICAgICAgIHZpZXcsXG4gICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgcGluLFxuICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQgfHwgbG9hZGluZyxcbiAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgfSwgY2xhc3NOYW1lKSxcbiAgICAgICAgJ2RhdGEtcWEnOiBxYSxcbiAgICB9O1xuICAgIGlmICh0eXBlb2YgaHJlZiA9PT0gJ3N0cmluZycgfHwgY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGxpbmtQcm9wcyA9IHtcbiAgICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgICByZWw6IHRhcmdldCA9PT0gJ19ibGFuaycgJiYgIXJlbCA/ICdub29wZW5lciBub3JlZmVycmVyJyA6IHJlbCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoY29tcG9uZW50IHx8ICdhJywgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZXh0cmFQcm9wcyksIGNvbW1vblByb3BzKSwgKGNvbXBvbmVudCA/IHt9IDogbGlua1Byb3BzKSksIHsgcmVmOiByZWYsICdhcmlhLWRpc2FibGVkJzogZGlzYWJsZWQgfHwgbG9hZGluZyB9KSwgcHJlcGFyZUNoaWxkcmVuKGNoaWxkcmVuKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZXh0cmFQcm9wcywgY29tbW9uUHJvcHMsIHsgcmVmOiByZWYsIHR5cGU6IHR5cGUsIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBsb2FkaW5nIH0pLCBwcmVwYXJlQ2hpbGRyZW4oY2hpbGRyZW4pKSk7XG4gICAgfVxufSk7XG5CdXR0b25XaXRoSGFuZGxlcnMuZGlzcGxheU5hbWUgPSAnQnV0dG9uJztcbmV4cG9ydCBjb25zdCBCdXR0b24gPSBPYmplY3QuYXNzaWduKEJ1dHRvbldpdGhIYW5kbGVycywgeyBJY29uOiBCdXR0b25JY29uIH0pO1xuY29uc3QgaXNCdXR0b25JY29uQ29tcG9uZW50ID0gaXNPZlR5cGUoQnV0dG9uSWNvbik7XG5mdW5jdGlvbiBwcmVwYXJlQ2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgICBjb25zdCBpdGVtcyA9IFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pO1xuICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uc3Qgb25seUl0ZW0gPSBpdGVtc1swXTtcbiAgICAgICAgaWYgKGlzQnV0dG9uSWNvbkNvbXBvbmVudChvbmx5SXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiBvbmx5SXRlbTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0ljb24ob25seUl0ZW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b24uSWNvbiwgeyBrZXk6IFwiaWNvblwiIH0sIG9ubHlJdGVtKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBrZXk6IFwidGV4dFwiLCBjbGFzc05hbWU6IGIoJ3RleHQnKSB9LCBvbmx5SXRlbSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgbGVmdEljb24sIHJpZ2h0SWNvbiwgdGV4dDtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzSWNvbkVsZW1lbnQgPSBpc0ljb24oaXRlbSk7XG4gICAgICAgICAgICBjb25zdCBpc0J1dHRvbkljb25FbGVtZW50ID0gaXNCdXR0b25JY29uQ29tcG9uZW50KGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGlzSWNvbkVsZW1lbnQgfHwgaXNCdXR0b25JY29uRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlmICghbGVmdEljb24gJiYgY29udGVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gJ2ljb24tbGVmdCc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZGUgPSAnbGVmdCc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0ljb25FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0SWNvbiA9IChSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbi5JY29uLCB7IGtleToga2V5LCBzaWRlOiBzaWRlIH0sIGl0ZW0pKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRJY29uID0gY2xvbmVFbGVtZW50KGl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXJpZ2h0SWNvbiAmJiBjb250ZW50Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSAnaWNvbi1yaWdodCc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZGUgPSAncmlnaHQnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNJY29uRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRJY29uID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLkljb24sIHsga2V5OiBrZXksIHNpZGU6IHNpZGUgfSwgaXRlbSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRJY29uID0gY2xvbmVFbGVtZW50KGl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50LnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRlbnQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGV4dCA9IChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGtleTogXCJ0ZXh0XCIsIGNsYXNzTmFtZTogYigndGV4dCcpIH0sIGNvbnRlbnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2xlZnRJY29uLCByaWdodEljb24sIHRleHRdO1xuICAgIH1cbn1cbiIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuICBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59IiwiZnVuY3Rpb24gcmVwbGFjZUNsYXNzTmFtZShvcmlnQ2xhc3MsIGNsYXNzVG9SZW1vdmUpIHtcbiAgcmV0dXJuIG9yaWdDbGFzcy5yZXBsYWNlKG5ldyBSZWdFeHAoXCIoXnxcXFxccylcIiArIGNsYXNzVG9SZW1vdmUgKyBcIig/OlxcXFxzfCQpXCIsICdnJyksICckMScpLnJlcGxhY2UoL1xccysvZywgJyAnKS5yZXBsYWNlKC9eXFxzKnxcXHMqJC9nLCAnJyk7XG59XG4vKipcbiAqIFJlbW92ZXMgYSBDU1MgY2xhc3MgZnJvbSBhIGdpdmVuIGVsZW1lbnQuXG4gKiBcbiAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50XG4gKiBAcGFyYW0gY2xhc3NOYW1lIHRoZSBDU1MgY2xhc3MgbmFtZVxuICovXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkge1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50LmNsYXNzTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IHJlcGxhY2VDbGFzc05hbWUoZWxlbWVudC5jbGFzc05hbWUsIGNsYXNzTmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgcmVwbGFjZUNsYXNzTmFtZShlbGVtZW50LmNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsIHx8ICcnLCBjbGFzc05hbWUpKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IHtcbiAgZGlzYWJsZWQ6IGZhbHNlXG59OyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpOyIsImV4cG9ydCB2YXIgZm9yY2VSZWZsb3cgPSBmdW5jdGlvbiBmb3JjZVJlZmxvdyhub2RlKSB7XG4gIHJldHVybiBub2RlLnNjcm9sbFRvcDtcbn07IiwiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2luaGVyaXRzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2VcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IHRpbWVvdXRzU2hhcGUgfSBmcm9tICcuL3V0aWxzL1Byb3BUeXBlcyc7XG5pbXBvcnQgVHJhbnNpdGlvbkdyb3VwQ29udGV4dCBmcm9tICcuL1RyYW5zaXRpb25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsgZm9yY2VSZWZsb3cgfSBmcm9tICcuL3V0aWxzL3JlZmxvdyc7XG5leHBvcnQgdmFyIFVOTU9VTlRFRCA9ICd1bm1vdW50ZWQnO1xuZXhwb3J0IHZhciBFWElURUQgPSAnZXhpdGVkJztcbmV4cG9ydCB2YXIgRU5URVJJTkcgPSAnZW50ZXJpbmcnO1xuZXhwb3J0IHZhciBFTlRFUkVEID0gJ2VudGVyZWQnO1xuZXhwb3J0IHZhciBFWElUSU5HID0gJ2V4aXRpbmcnO1xuLyoqXG4gKiBUaGUgVHJhbnNpdGlvbiBjb21wb25lbnQgbGV0cyB5b3UgZGVzY3JpYmUgYSB0cmFuc2l0aW9uIGZyb20gb25lIGNvbXBvbmVudFxuICogc3RhdGUgdG8gYW5vdGhlciBfb3ZlciB0aW1lXyB3aXRoIGEgc2ltcGxlIGRlY2xhcmF0aXZlIEFQSS4gTW9zdCBjb21tb25seVxuICogaXQncyB1c2VkIHRvIGFuaW1hdGUgdGhlIG1vdW50aW5nIGFuZCB1bm1vdW50aW5nIG9mIGEgY29tcG9uZW50LCBidXQgY2FuIGFsc29cbiAqIGJlIHVzZWQgdG8gZGVzY3JpYmUgaW4tcGxhY2UgdHJhbnNpdGlvbiBzdGF0ZXMgYXMgd2VsbC5cbiAqXG4gKiAtLS1cbiAqXG4gKiAqKk5vdGUqKjogYFRyYW5zaXRpb25gIGlzIGEgcGxhdGZvcm0tYWdub3N0aWMgYmFzZSBjb21wb25lbnQuIElmIHlvdSdyZSB1c2luZ1xuICogdHJhbnNpdGlvbnMgaW4gQ1NTLCB5b3UnbGwgcHJvYmFibHkgd2FudCB0byB1c2VcbiAqIFtgQ1NTVHJhbnNpdGlvbmBdKGh0dHBzOi8vcmVhY3Rjb21tdW5pdHkub3JnL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvY3NzLXRyYW5zaXRpb24pXG4gKiBpbnN0ZWFkLiBJdCBpbmhlcml0cyBhbGwgdGhlIGZlYXR1cmVzIG9mIGBUcmFuc2l0aW9uYCwgYnV0IGNvbnRhaW5zXG4gKiBhZGRpdGlvbmFsIGZlYXR1cmVzIG5lY2Vzc2FyeSB0byBwbGF5IG5pY2Ugd2l0aCBDU1MgdHJhbnNpdGlvbnMgKGhlbmNlIHRoZVxuICogbmFtZSBvZiB0aGUgY29tcG9uZW50KS5cbiAqXG4gKiAtLS1cbiAqXG4gKiBCeSBkZWZhdWx0IHRoZSBgVHJhbnNpdGlvbmAgY29tcG9uZW50IGRvZXMgbm90IGFsdGVyIHRoZSBiZWhhdmlvciBvZiB0aGVcbiAqIGNvbXBvbmVudCBpdCByZW5kZXJzLCBpdCBvbmx5IHRyYWNrcyBcImVudGVyXCIgYW5kIFwiZXhpdFwiIHN0YXRlcyBmb3IgdGhlXG4gKiBjb21wb25lbnRzLiBJdCdzIHVwIHRvIHlvdSB0byBnaXZlIG1lYW5pbmcgYW5kIGVmZmVjdCB0byB0aG9zZSBzdGF0ZXMuIEZvclxuICogZXhhbXBsZSB3ZSBjYW4gYWRkIHN0eWxlcyB0byBhIGNvbXBvbmVudCB3aGVuIGl0IGVudGVycyBvciBleGl0czpcbiAqXG4gKiBgYGBqc3hcbiAqIGltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbiAqXG4gKiBjb25zdCBkdXJhdGlvbiA9IDMwMDtcbiAqXG4gKiBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gKiAgIHRyYW5zaXRpb246IGBvcGFjaXR5ICR7ZHVyYXRpb259bXMgZWFzZS1pbi1vdXRgLFxuICogICBvcGFjaXR5OiAwLFxuICogfVxuICpcbiAqIGNvbnN0IHRyYW5zaXRpb25TdHlsZXMgPSB7XG4gKiAgIGVudGVyaW5nOiB7IG9wYWNpdHk6IDEgfSxcbiAqICAgZW50ZXJlZDogIHsgb3BhY2l0eTogMSB9LFxuICogICBleGl0aW5nOiAgeyBvcGFjaXR5OiAwIH0sXG4gKiAgIGV4aXRlZDogIHsgb3BhY2l0eTogMCB9LFxuICogfTtcbiAqXG4gKiBjb25zdCBGYWRlID0gKHsgaW46IGluUHJvcCB9KSA9PiAoXG4gKiAgIDxUcmFuc2l0aW9uIGluPXtpblByb3B9IHRpbWVvdXQ9e2R1cmF0aW9ufT5cbiAqICAgICB7c3RhdGUgPT4gKFxuICogICAgICAgPGRpdiBzdHlsZT17e1xuICogICAgICAgICAuLi5kZWZhdWx0U3R5bGUsXG4gKiAgICAgICAgIC4uLnRyYW5zaXRpb25TdHlsZXNbc3RhdGVdXG4gKiAgICAgICB9fT5cbiAqICAgICAgICAgSSdtIGEgZmFkZSBUcmFuc2l0aW9uIVxuICogICAgICAgPC9kaXY+XG4gKiAgICAgKX1cbiAqICAgPC9UcmFuc2l0aW9uPlxuICogKTtcbiAqIGBgYFxuICpcbiAqIFRoZXJlIGFyZSA0IG1haW4gc3RhdGVzIGEgVHJhbnNpdGlvbiBjYW4gYmUgaW46XG4gKiAgLSBgJ2VudGVyaW5nJ2BcbiAqICAtIGAnZW50ZXJlZCdgXG4gKiAgLSBgJ2V4aXRpbmcnYFxuICogIC0gYCdleGl0ZWQnYFxuICpcbiAqIFRyYW5zaXRpb24gc3RhdGUgaXMgdG9nZ2xlZCB2aWEgdGhlIGBpbmAgcHJvcC4gV2hlbiBgdHJ1ZWAgdGhlIGNvbXBvbmVudFxuICogYmVnaW5zIHRoZSBcIkVudGVyXCIgc3RhZ2UuIER1cmluZyB0aGlzIHN0YWdlLCB0aGUgY29tcG9uZW50IHdpbGwgc2hpZnQgZnJvbVxuICogaXRzIGN1cnJlbnQgdHJhbnNpdGlvbiBzdGF0ZSwgdG8gYCdlbnRlcmluZydgIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlXG4gKiB0cmFuc2l0aW9uIGFuZCB0aGVuIHRvIHRoZSBgJ2VudGVyZWQnYCBzdGFnZSBvbmNlIGl0J3MgY29tcGxldGUuIExldCdzIHRha2VcbiAqIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSAod2UnbGwgdXNlIHRoZVxuICogW3VzZVN0YXRlXShodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlc3RhdGUpIGhvb2spOlxuICpcbiAqIGBgYGpzeFxuICogZnVuY3Rpb24gQXBwKCkge1xuICogICBjb25zdCBbaW5Qcm9wLCBzZXRJblByb3BdID0gdXNlU3RhdGUoZmFsc2UpO1xuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8VHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXs1MDB9PlxuICogICAgICAgICB7c3RhdGUgPT4gKFxuICogICAgICAgICAgIC8vIC4uLlxuICogICAgICAgICApfVxuICogICAgICAgPC9UcmFuc2l0aW9uPlxuICogICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRJblByb3AodHJ1ZSl9PlxuICogICAgICAgICBDbGljayB0byBFbnRlclxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCB0aGUgY29tcG9uZW50IHdpbGwgc2hpZnQgdG8gdGhlIGAnZW50ZXJpbmcnYCBzdGF0ZVxuICogYW5kIHN0YXkgdGhlcmUgZm9yIDUwMG1zICh0aGUgdmFsdWUgb2YgYHRpbWVvdXRgKSBiZWZvcmUgaXQgZmluYWxseSBzd2l0Y2hlc1xuICogdG8gYCdlbnRlcmVkJ2AuXG4gKlxuICogV2hlbiBgaW5gIGlzIGBmYWxzZWAgdGhlIHNhbWUgdGhpbmcgaGFwcGVucyBleGNlcHQgdGhlIHN0YXRlIG1vdmVzIGZyb21cbiAqIGAnZXhpdGluZydgIHRvIGAnZXhpdGVkJ2AuXG4gKi9cblxudmFyIFRyYW5zaXRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzTG9vc2UoVHJhbnNpdGlvbiwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gVHJhbnNpdGlvbihwcm9wcywgY29udGV4dCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSB8fCB0aGlzO1xuICAgIHZhciBwYXJlbnRHcm91cCA9IGNvbnRleHQ7IC8vIEluIHRoZSBjb250ZXh0IG9mIGEgVHJhbnNpdGlvbkdyb3VwIGFsbCBlbnRlcnMgYXJlIHJlYWxseSBhcHBlYXJzXG5cbiAgICB2YXIgYXBwZWFyID0gcGFyZW50R3JvdXAgJiYgIXBhcmVudEdyb3VwLmlzTW91bnRpbmcgPyBwcm9wcy5lbnRlciA6IHByb3BzLmFwcGVhcjtcbiAgICB2YXIgaW5pdGlhbFN0YXR1cztcbiAgICBfdGhpcy5hcHBlYXJTdGF0dXMgPSBudWxsO1xuXG4gICAgaWYgKHByb3BzLmluKSB7XG4gICAgICBpZiAoYXBwZWFyKSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFWElURUQ7XG4gICAgICAgIF90aGlzLmFwcGVhclN0YXR1cyA9IEVOVEVSSU5HO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IEVOVEVSRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wcy51bm1vdW50T25FeGl0IHx8IHByb3BzLm1vdW50T25FbnRlcikge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gVU5NT1VOVEVEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IEVYSVRFRDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHN0YXR1czogaW5pdGlhbFN0YXR1c1xuICAgIH07XG4gICAgX3RoaXMubmV4dENhbGxiYWNrID0gbnVsbDtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBUcmFuc2l0aW9uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBwcmV2U3RhdGUpIHtcbiAgICB2YXIgbmV4dEluID0gX3JlZi5pbjtcblxuICAgIGlmIChuZXh0SW4gJiYgcHJldlN0YXRlLnN0YXR1cyA9PT0gVU5NT1VOVEVEKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgLy8gICBsZXQgbmV4dFN0YXR1cyA9IG51bGxcbiAgLy8gICBpZiAocHJldlByb3BzICE9PSB0aGlzLnByb3BzKSB7XG4gIC8vICAgICBjb25zdCB7IHN0YXR1cyB9ID0gdGhpcy5zdGF0ZVxuICAvLyAgICAgaWYgKHRoaXMucHJvcHMuaW4pIHtcbiAgLy8gICAgICAgaWYgKHN0YXR1cyAhPT0gRU5URVJJTkcgJiYgc3RhdHVzICE9PSBFTlRFUkVEKSB7XG4gIC8vICAgICAgICAgbmV4dFN0YXR1cyA9IEVOVEVSSU5HXG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGlmIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRU5URVJFRCkge1xuICAvLyAgICAgICAgIG5leHRTdGF0dXMgPSBFWElUSU5HXG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHsgbmV4dFN0YXR1cyB9XG4gIC8vIH1cbiAgO1xuXG4gIHZhciBfcHJvdG8gPSBUcmFuc2l0aW9uLnByb3RvdHlwZTtcblxuICBfcHJvdG8uY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnVwZGF0ZVN0YXR1cyh0cnVlLCB0aGlzLmFwcGVhclN0YXR1cyk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICB2YXIgbmV4dFN0YXR1cyA9IG51bGw7XG5cbiAgICBpZiAocHJldlByb3BzICE9PSB0aGlzLnByb3BzKSB7XG4gICAgICB2YXIgc3RhdHVzID0gdGhpcy5zdGF0ZS5zdGF0dXM7XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmluKSB7XG4gICAgICAgIGlmIChzdGF0dXMgIT09IEVOVEVSSU5HICYmIHN0YXR1cyAhPT0gRU5URVJFRCkge1xuICAgICAgICAgIG5leHRTdGF0dXMgPSBFTlRFUklORztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gRU5URVJJTkcgfHwgc3RhdHVzID09PSBFTlRFUkVEKSB7XG4gICAgICAgICAgbmV4dFN0YXR1cyA9IEVYSVRJTkc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVN0YXR1cyhmYWxzZSwgbmV4dFN0YXR1cyk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5jYW5jZWxOZXh0Q2FsbGJhY2soKTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0VGltZW91dHMgPSBmdW5jdGlvbiBnZXRUaW1lb3V0cygpIHtcbiAgICB2YXIgdGltZW91dCA9IHRoaXMucHJvcHMudGltZW91dDtcbiAgICB2YXIgZXhpdCwgZW50ZXIsIGFwcGVhcjtcbiAgICBleGl0ID0gZW50ZXIgPSBhcHBlYXIgPSB0aW1lb3V0O1xuXG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCAmJiB0eXBlb2YgdGltZW91dCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGV4aXQgPSB0aW1lb3V0LmV4aXQ7XG4gICAgICBlbnRlciA9IHRpbWVvdXQuZW50ZXI7IC8vIFRPRE86IHJlbW92ZSBmYWxsYmFjayBmb3IgbmV4dCBtYWpvclxuXG4gICAgICBhcHBlYXIgPSB0aW1lb3V0LmFwcGVhciAhPT0gdW5kZWZpbmVkID8gdGltZW91dC5hcHBlYXIgOiBlbnRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZXhpdDogZXhpdCxcbiAgICAgIGVudGVyOiBlbnRlcixcbiAgICAgIGFwcGVhcjogYXBwZWFyXG4gICAgfTtcbiAgfTtcblxuICBfcHJvdG8udXBkYXRlU3RhdHVzID0gZnVuY3Rpb24gdXBkYXRlU3RhdHVzKG1vdW50aW5nLCBuZXh0U3RhdHVzKSB7XG4gICAgaWYgKG1vdW50aW5nID09PSB2b2lkIDApIHtcbiAgICAgIG1vdW50aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG5leHRTdGF0dXMgIT09IG51bGwpIHtcbiAgICAgIC8vIG5leHRTdGF0dXMgd2lsbCBhbHdheXMgYmUgRU5URVJJTkcgb3IgRVhJVElORy5cbiAgICAgIHRoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7XG5cbiAgICAgIGlmIChuZXh0U3RhdHVzID09PSBFTlRFUklORykge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy51bm1vdW50T25FeGl0IHx8IHRoaXMucHJvcHMubW91bnRPbkVudGVyKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB0aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpOyAvLyBodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3B1bGwvNzQ5XG4gICAgICAgICAgLy8gV2l0aCB1bm1vdW50T25FeGl0IG9yIG1vdW50T25FbnRlciwgdGhlIGVudGVyIGFuaW1hdGlvbiBzaG91bGQgaGFwcGVuIGF0IHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gYGV4aXRlZGAgYW5kIGBlbnRlcmluZ2AuXG4gICAgICAgICAgLy8gVG8gbWFrZSB0aGUgYW5pbWF0aW9uIGhhcHBlbiwgIHdlIGhhdmUgdG8gc2VwYXJhdGUgZWFjaCByZW5kZXJpbmcgYW5kIGF2b2lkIGJlaW5nIHByb2Nlc3NlZCBhcyBiYXRjaGVkLlxuXG4gICAgICAgICAgaWYgKG5vZGUpIGZvcmNlUmVmbG93KG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wZXJmb3JtRW50ZXIobW91bnRpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtRXhpdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy51bm1vdW50T25FeGl0ICYmIHRoaXMuc3RhdGUuc3RhdHVzID09PSBFWElURUQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzdGF0dXM6IFVOTU9VTlRFRFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5wZXJmb3JtRW50ZXIgPSBmdW5jdGlvbiBwZXJmb3JtRW50ZXIobW91bnRpbmcpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBlbnRlciA9IHRoaXMucHJvcHMuZW50ZXI7XG4gICAgdmFyIGFwcGVhcmluZyA9IHRoaXMuY29udGV4dCA/IHRoaXMuY29udGV4dC5pc01vdW50aW5nIDogbW91bnRpbmc7XG5cbiAgICB2YXIgX3JlZjIgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyBbYXBwZWFyaW5nXSA6IFtSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKSwgYXBwZWFyaW5nXSxcbiAgICAgICAgbWF5YmVOb2RlID0gX3JlZjJbMF0sXG4gICAgICAgIG1heWJlQXBwZWFyaW5nID0gX3JlZjJbMV07XG5cbiAgICB2YXIgdGltZW91dHMgPSB0aGlzLmdldFRpbWVvdXRzKCk7XG4gICAgdmFyIGVudGVyVGltZW91dCA9IGFwcGVhcmluZyA/IHRpbWVvdXRzLmFwcGVhciA6IHRpbWVvdXRzLmVudGVyOyAvLyBubyBlbnRlciBhbmltYXRpb24gc2tpcCByaWdodCB0byBFTlRFUkVEXG4gICAgLy8gaWYgd2UgYXJlIG1vdW50aW5nIGFuZCBydW5uaW5nIHRoaXMgaXQgbWVhbnMgYXBwZWFyIF9tdXN0XyBiZSBzZXRcblxuICAgIGlmICghbW91bnRpbmcgJiYgIWVudGVyIHx8IGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICBzdGF0dXM6IEVOVEVSRURcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5vbkVudGVyKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgIHN0YXR1czogRU5URVJJTkdcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczIucHJvcHMub25FbnRlcmluZyhtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcblxuICAgICAgX3RoaXMyLm9uVHJhbnNpdGlvbkVuZChlbnRlclRpbWVvdXQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMyLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgICAgc3RhdHVzOiBFTlRFUkVEXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczIucHJvcHMub25FbnRlcmVkKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90by5wZXJmb3JtRXhpdCA9IGZ1bmN0aW9uIHBlcmZvcm1FeGl0KCkge1xuICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgdmFyIGV4aXQgPSB0aGlzLnByb3BzLmV4aXQ7XG4gICAgdmFyIHRpbWVvdXRzID0gdGhpcy5nZXRUaW1lb3V0cygpO1xuICAgIHZhciBtYXliZU5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB1bmRlZmluZWQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTsgLy8gbm8gZXhpdCBhbmltYXRpb24gc2tpcCByaWdodCB0byBFWElURURcblxuICAgIGlmICghZXhpdCB8fCBjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLm9uRXhpdChtYXliZU5vZGUpO1xuICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgIHN0YXR1czogRVhJVElOR1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRpbmcobWF5YmVOb2RlKTtcblxuICAgICAgX3RoaXMzLm9uVHJhbnNpdGlvbkVuZCh0aW1lb3V0cy5leGl0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMy5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczMucHJvcHMub25FeGl0ZWQobWF5YmVOb2RlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8uY2FuY2VsTmV4dENhbGxiYWNrID0gZnVuY3Rpb24gY2FuY2VsTmV4dENhbGxiYWNrKCkge1xuICAgIGlmICh0aGlzLm5leHRDYWxsYmFjayAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsKCk7XG4gICAgICB0aGlzLm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5zYWZlU2V0U3RhdGUgPSBmdW5jdGlvbiBzYWZlU2V0U3RhdGUobmV4dFN0YXRlLCBjYWxsYmFjaykge1xuICAgIC8vIFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IHRoZXJlIGFyZSB3ZWlyZCByYWNlIGNvbmRpdGlvbnMgd2l0aFxuICAgIC8vIHNldFN0YXRlIGNhbGxiYWNrcyBhbmQgdW5tb3VudGluZyBpbiB0ZXN0aW5nLCBzbyBhbHdheXMgbWFrZSBzdXJlIHRoYXRcbiAgICAvLyB3ZSBjYW4gY2FuY2VsIGFueSBwZW5kaW5nIHNldFN0YXRlIGNhbGxiYWNrcyBhZnRlciB3ZSB1bm1vdW50LlxuICAgIGNhbGxiYWNrID0gdGhpcy5zZXROZXh0Q2FsbGJhY2soY2FsbGJhY2spO1xuICAgIHRoaXMuc2V0U3RhdGUobmV4dFN0YXRlLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgX3Byb3RvLnNldE5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIHNldE5leHRDYWxsYmFjayhjYWxsYmFjaykge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgdmFyIGFjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLm5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKGFjdGl2ZSkge1xuICAgICAgICBhY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgX3RoaXM0Lm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5uZXh0Q2FsbGJhY2suY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLm5leHRDYWxsYmFjaztcbiAgfTtcblxuICBfcHJvdG8ub25UcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24gb25UcmFuc2l0aW9uRW5kKHRpbWVvdXQsIGhhbmRsZXIpIHtcbiAgICB0aGlzLnNldE5leHRDYWxsYmFjayhoYW5kbGVyKTtcbiAgICB2YXIgbm9kZSA9IHRoaXMucHJvcHMubm9kZVJlZiA/IHRoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50IDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7XG4gICAgdmFyIGRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIgPSB0aW1lb3V0ID09IG51bGwgJiYgIXRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXI7XG5cbiAgICBpZiAoIW5vZGUgfHwgZG9lc05vdEhhdmVUaW1lb3V0T3JMaXN0ZW5lcikge1xuICAgICAgc2V0VGltZW91dCh0aGlzLm5leHRDYWxsYmFjaywgMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXIpIHtcbiAgICAgIHZhciBfcmVmMyA9IHRoaXMucHJvcHMubm9kZVJlZiA/IFt0aGlzLm5leHRDYWxsYmFja10gOiBbbm9kZSwgdGhpcy5uZXh0Q2FsbGJhY2tdLFxuICAgICAgICAgIG1heWJlTm9kZSA9IF9yZWYzWzBdLFxuICAgICAgICAgIG1heWJlTmV4dENhbGxiYWNrID0gX3JlZjNbMV07XG5cbiAgICAgIHRoaXMucHJvcHMuYWRkRW5kTGlzdGVuZXIobWF5YmVOb2RlLCBtYXliZU5leHRDYWxsYmFjayk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkge1xuICAgICAgc2V0VGltZW91dCh0aGlzLm5leHRDYWxsYmFjaywgdGltZW91dCk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIHN0YXR1cyA9IHRoaXMuc3RhdGUuc3RhdHVzO1xuXG4gICAgaWYgKHN0YXR1cyA9PT0gVU5NT1VOVEVEKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzLmNoaWxkcmVuLFxuICAgICAgICBfaW4gPSBfdGhpcyRwcm9wcy5pbixcbiAgICAgICAgX21vdW50T25FbnRlciA9IF90aGlzJHByb3BzLm1vdW50T25FbnRlcixcbiAgICAgICAgX3VubW91bnRPbkV4aXQgPSBfdGhpcyRwcm9wcy51bm1vdW50T25FeGl0LFxuICAgICAgICBfYXBwZWFyID0gX3RoaXMkcHJvcHMuYXBwZWFyLFxuICAgICAgICBfZW50ZXIgPSBfdGhpcyRwcm9wcy5lbnRlcixcbiAgICAgICAgX2V4aXQgPSBfdGhpcyRwcm9wcy5leGl0LFxuICAgICAgICBfdGltZW91dCA9IF90aGlzJHByb3BzLnRpbWVvdXQsXG4gICAgICAgIF9hZGRFbmRMaXN0ZW5lciA9IF90aGlzJHByb3BzLmFkZEVuZExpc3RlbmVyLFxuICAgICAgICBfb25FbnRlciA9IF90aGlzJHByb3BzLm9uRW50ZXIsXG4gICAgICAgIF9vbkVudGVyaW5nID0gX3RoaXMkcHJvcHMub25FbnRlcmluZyxcbiAgICAgICAgX29uRW50ZXJlZCA9IF90aGlzJHByb3BzLm9uRW50ZXJlZCxcbiAgICAgICAgX29uRXhpdCA9IF90aGlzJHByb3BzLm9uRXhpdCxcbiAgICAgICAgX29uRXhpdGluZyA9IF90aGlzJHByb3BzLm9uRXhpdGluZyxcbiAgICAgICAgX29uRXhpdGVkID0gX3RoaXMkcHJvcHMub25FeGl0ZWQsXG4gICAgICAgIF9ub2RlUmVmID0gX3RoaXMkcHJvcHMubm9kZVJlZixcbiAgICAgICAgY2hpbGRQcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF90aGlzJHByb3BzLCBbXCJjaGlsZHJlblwiLCBcImluXCIsIFwibW91bnRPbkVudGVyXCIsIFwidW5tb3VudE9uRXhpdFwiLCBcImFwcGVhclwiLCBcImVudGVyXCIsIFwiZXhpdFwiLCBcInRpbWVvdXRcIiwgXCJhZGRFbmRMaXN0ZW5lclwiLCBcIm9uRW50ZXJcIiwgXCJvbkVudGVyaW5nXCIsIFwib25FbnRlcmVkXCIsIFwib25FeGl0XCIsIFwib25FeGl0aW5nXCIsIFwib25FeGl0ZWRcIiwgXCJub2RlUmVmXCJdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAvLyBhbGxvd3MgZm9yIG5lc3RlZCBUcmFuc2l0aW9uc1xuICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUcmFuc2l0aW9uR3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9LCB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbihzdGF0dXMsIGNoaWxkUHJvcHMpIDogUmVhY3QuY2xvbmVFbGVtZW50KFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pLCBjaGlsZFByb3BzKSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2l0aW9uO1xufShSZWFjdC5Db21wb25lbnQpO1xuXG5UcmFuc2l0aW9uLmNvbnRleHRUeXBlID0gVHJhbnNpdGlvbkdyb3VwQ29udGV4dDtcblRyYW5zaXRpb24ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8ge1xuICAvKipcbiAgICogQSBSZWFjdCByZWZlcmVuY2UgdG8gRE9NIGVsZW1lbnQgdGhhdCBuZWVkIHRvIHRyYW5zaXRpb246XG4gICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81MTEyNzEzMC80NjcxOTMyXG4gICAqXG4gICAqICAgLSBXaGVuIGBub2RlUmVmYCBwcm9wIGlzIHVzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkIHRvIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICAgKiAgICAgIChlLmcuIGBvbkVudGVyYCkgYmVjYXVzZSB1c2VyIGFscmVhZHkgaGFzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG5vZGUuXG4gICAqICAgLSBXaGVuIGNoYW5naW5nIGBrZXlgIHByb3Agb2YgYFRyYW5zaXRpb25gIGluIGEgYFRyYW5zaXRpb25Hcm91cGAgYSBuZXdcbiAgICogICAgIGBub2RlUmVmYCBuZWVkIHRvIGJlIHByb3ZpZGVkIHRvIGBUcmFuc2l0aW9uYCB3aXRoIGNoYW5nZWQgYGtleWAgcHJvcFxuICAgKiAgICAgKHNlZVxuICAgKiAgICAgW3Rlc3QvQ1NTVHJhbnNpdGlvbi10ZXN0LmpzXShodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Jsb2IvMTM0MzVmODk3YjNhYjcxZjZlMTlkNzI0ZjE0NTU5NmY1OTEwNTgxYy90ZXN0L0NTU1RyYW5zaXRpb24tdGVzdC5qcyNMMzYyLUw0MzcpKS5cbiAgICovXG4gIG5vZGVSZWY6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVudDogdHlwZW9mIEVsZW1lbnQgPT09ICd1bmRlZmluZWQnID8gUHJvcFR5cGVzLmFueSA6IGZ1bmN0aW9uIChwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgdmFsdWUgPSBwcm9wVmFsdWVba2V5XTtcbiAgICAgIHJldHVybiBQcm9wVHlwZXMuaW5zdGFuY2VPZih2YWx1ZSAmJiAnb3duZXJEb2N1bWVudCcgaW4gdmFsdWUgPyB2YWx1ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LkVsZW1lbnQgOiBFbGVtZW50KShwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KTtcbiAgICB9XG4gIH0pLFxuXG4gIC8qKlxuICAgKiBBIGBmdW5jdGlvbmAgY2hpbGQgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIFJlYWN0IGVsZW1lbnQuIFRoaXMgZnVuY3Rpb24gaXNcbiAgICogY2FsbGVkIHdpdGggdGhlIGN1cnJlbnQgdHJhbnNpdGlvbiBzdGF0dXMgKGAnZW50ZXJpbmcnYCwgYCdlbnRlcmVkJ2AsXG4gICAqIGAnZXhpdGluZydgLCBgJ2V4aXRlZCdgKSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYXBwbHkgY29udGV4dFxuICAgKiBzcGVjaWZpYyBwcm9wcyB0byBhIGNvbXBvbmVudC5cbiAgICpcbiAgICogYGBganN4XG4gICAqIDxUcmFuc2l0aW9uIGluPXt0aGlzLnN0YXRlLmlufSB0aW1lb3V0PXsxNTB9PlxuICAgKiAgIHtzdGF0ZSA9PiAoXG4gICAqICAgICA8TXlDb21wb25lbnQgY2xhc3NOYW1lPXtgZmFkZSBmYWRlLSR7c3RhdGV9YH0gLz5cbiAgICogICApfVxuICAgKiA8L1RyYW5zaXRpb24+XG4gICAqIGBgYFxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsIFByb3BUeXBlcy5lbGVtZW50LmlzUmVxdWlyZWRdKS5pc1JlcXVpcmVkLFxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBjb21wb25lbnQ7IHRyaWdnZXJzIHRoZSBlbnRlciBvciBleGl0IHN0YXRlc1xuICAgKi9cbiAgaW46IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IHRoZSBjaGlsZCBjb21wb25lbnQgaXMgbW91bnRlZCBpbW1lZGlhdGVseSBhbG9uZyB3aXRoXG4gICAqIHRoZSBwYXJlbnQgYFRyYW5zaXRpb25gIGNvbXBvbmVudC4gSWYgeW91IHdhbnQgdG8gXCJsYXp5IG1vdW50XCIgdGhlIGNvbXBvbmVudCBvbiB0aGVcbiAgICogZmlyc3QgYGluPXt0cnVlfWAgeW91IGNhbiBzZXQgYG1vdW50T25FbnRlcmAuIEFmdGVyIHRoZSBmaXJzdCBlbnRlciB0cmFuc2l0aW9uIHRoZSBjb21wb25lbnQgd2lsbCBzdGF5XG4gICAqIG1vdW50ZWQsIGV2ZW4gb24gXCJleGl0ZWRcIiwgdW5sZXNzIHlvdSBhbHNvIHNwZWNpZnkgYHVubW91bnRPbkV4aXRgLlxuICAgKi9cbiAgbW91bnRPbkVudGVyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IHN0YXlzIG1vdW50ZWQgYWZ0ZXIgaXQgcmVhY2hlcyB0aGUgYCdleGl0ZWQnYCBzdGF0ZS5cbiAgICogU2V0IGB1bm1vdW50T25FeGl0YCBpZiB5b3UnZCBwcmVmZXIgdG8gdW5tb3VudCB0aGUgY29tcG9uZW50IGFmdGVyIGl0IGZpbmlzaGVzIGV4aXRpbmcuXG4gICAqL1xuICB1bm1vdW50T25FeGl0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IGRvZXMgbm90IHBlcmZvcm0gdGhlIGVudGVyIHRyYW5zaXRpb24gd2hlblxuICAgKiBpdCBmaXJzdCBtb3VudHMsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGBpbmAuIElmIHlvdSB3YW50IHRoaXNcbiAgICogYmVoYXZpb3IsIHNldCBib3RoIGBhcHBlYXJgIGFuZCBgaW5gIHRvIGB0cnVlYC5cbiAgICpcbiAgICogPiAqKk5vdGUqKjogdGhlcmUgYXJlIG5vIHNwZWNpYWwgYXBwZWFyIHN0YXRlcyBsaWtlIGBhcHBlYXJpbmdgL2BhcHBlYXJlZGAsIHRoaXMgcHJvcFxuICAgKiA+IG9ubHkgYWRkcyBhbiBhZGRpdGlvbmFsIGVudGVyIHRyYW5zaXRpb24uIEhvd2V2ZXIsIGluIHRoZVxuICAgKiA+IGA8Q1NTVHJhbnNpdGlvbj5gIGNvbXBvbmVudCB0aGF0IGZpcnN0IGVudGVyIHRyYW5zaXRpb24gZG9lcyByZXN1bHQgaW5cbiAgICogPiBhZGRpdGlvbmFsIGAuYXBwZWFyLSpgIGNsYXNzZXMsIHRoYXQgd2F5IHlvdSBjYW4gY2hvb3NlIHRvIHN0eWxlIGl0XG4gICAqID4gZGlmZmVyZW50bHkuXG4gICAqL1xuICBhcHBlYXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBlbnRlciB0cmFuc2l0aW9ucy5cbiAgICovXG4gIGVudGVyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgZXhpdCB0cmFuc2l0aW9ucy5cbiAgICovXG4gIGV4aXQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gb2YgdGhlIHRyYW5zaXRpb24sIGluIG1pbGxpc2Vjb25kcy5cbiAgICogUmVxdWlyZWQgdW5sZXNzIGBhZGRFbmRMaXN0ZW5lcmAgaXMgcHJvdmlkZWQuXG4gICAqXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSB0aW1lb3V0IGZvciBhbGwgdHJhbnNpdGlvbnM6XG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiB0aW1lb3V0PXs1MDB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBvciBpbmRpdmlkdWFsbHk6XG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiB0aW1lb3V0PXt7XG4gICAqICBhcHBlYXI6IDUwMCxcbiAgICogIGVudGVyOiAzMDAsXG4gICAqICBleGl0OiA1MDAsXG4gICAqIH19XG4gICAqIGBgYFxuICAgKlxuICAgKiAtIGBhcHBlYXJgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiBgZW50ZXJgXG4gICAqIC0gYGVudGVyYCBkZWZhdWx0cyB0byBgMGBcbiAgICogLSBgZXhpdGAgZGVmYXVsdHMgdG8gYDBgXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXIgfCB7IGVudGVyPzogbnVtYmVyLCBleGl0PzogbnVtYmVyLCBhcHBlYXI/OiBudW1iZXIgfX1cbiAgICovXG4gIHRpbWVvdXQ6IGZ1bmN0aW9uIHRpbWVvdXQocHJvcHMpIHtcbiAgICB2YXIgcHQgPSB0aW1lb3V0c1NoYXBlO1xuICAgIGlmICghcHJvcHMuYWRkRW5kTGlzdGVuZXIpIHB0ID0gcHQuaXNSZXF1aXJlZDtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHJldHVybiBwdC5hcHBseSh2b2lkIDAsIFtwcm9wc10uY29uY2F0KGFyZ3MpKTtcbiAgfSxcblxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIHRyYW5zaXRpb24gZW5kIHRyaWdnZXIuIENhbGxlZCB3aXRoIHRoZSB0cmFuc2l0aW9uaW5nXG4gICAqIERPTSBub2RlIGFuZCBhIGBkb25lYCBjYWxsYmFjay4gQWxsb3dzIGZvciBtb3JlIGZpbmUgZ3JhaW5lZCB0cmFuc2l0aW9uIGVuZFxuICAgKiBsb2dpYy4gVGltZW91dHMgYXJlIHN0aWxsIHVzZWQgYXMgYSBmYWxsYmFjayBpZiBwcm92aWRlZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogYGBganN4XG4gICAqIGFkZEVuZExpc3RlbmVyPXsobm9kZSwgZG9uZSkgPT4ge1xuICAgKiAgIC8vIHVzZSB0aGUgY3NzIHRyYW5zaXRpb25lbmQgZXZlbnQgdG8gbWFyayB0aGUgZmluaXNoIG9mIGEgdHJhbnNpdGlvblxuICAgKiAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGRvbmUsIGZhbHNlKTtcbiAgICogfX1cbiAgICogYGBgXG4gICAqL1xuICBhZGRFbmRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGJlZm9yZSB0aGUgXCJlbnRlcmluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbCkgLT4gdm9pZFxuICAgKi9cbiAgb25FbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImVudGVyaW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKVxuICAgKi9cbiAgb25FbnRlcmluZzogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGFmdGVyIHRoZSBcImVudGVyZWRcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpIC0+IHZvaWRcbiAgICovXG4gIG9uRW50ZXJlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIGJlZm9yZSB0aGUgXCJleGl0aW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50KSAtPiB2b2lkXG4gICAqL1xuICBvbkV4aXQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJleGl0aW5nXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50KSAtPiB2b2lkXG4gICAqL1xuICBvbkV4aXRpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJleGl0ZWRcIiBzdGF0dXMgaXMgYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZFxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0ZWQ6IFByb3BUeXBlcy5mdW5jXG59IDoge307IC8vIE5hbWUgdGhlIGZ1bmN0aW9uIHNvIGl0IGlzIGNsZWFyZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cblRyYW5zaXRpb24uZGVmYXVsdFByb3BzID0ge1xuICBpbjogZmFsc2UsXG4gIG1vdW50T25FbnRlcjogZmFsc2UsXG4gIHVubW91bnRPbkV4aXQ6IGZhbHNlLFxuICBhcHBlYXI6IGZhbHNlLFxuICBlbnRlcjogdHJ1ZSxcbiAgZXhpdDogdHJ1ZSxcbiAgb25FbnRlcjogbm9vcCxcbiAgb25FbnRlcmluZzogbm9vcCxcbiAgb25FbnRlcmVkOiBub29wLFxuICBvbkV4aXQ6IG5vb3AsXG4gIG9uRXhpdGluZzogbm9vcCxcbiAgb25FeGl0ZWQ6IG5vb3Bcbn07XG5UcmFuc2l0aW9uLlVOTU9VTlRFRCA9IFVOTU9VTlRFRDtcblRyYW5zaXRpb24uRVhJVEVEID0gRVhJVEVEO1xuVHJhbnNpdGlvbi5FTlRFUklORyA9IEVOVEVSSU5HO1xuVHJhbnNpdGlvbi5FTlRFUkVEID0gRU5URVJFRDtcblRyYW5zaXRpb24uRVhJVElORyA9IEVYSVRJTkc7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2luaGVyaXRzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2VcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgYWRkT25lQ2xhc3MgZnJvbSAnZG9tLWhlbHBlcnMvYWRkQ2xhc3MnO1xuaW1wb3J0IHJlbW92ZU9uZUNsYXNzIGZyb20gJ2RvbS1oZWxwZXJzL3JlbW92ZUNsYXNzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHJhbnNpdGlvbiBmcm9tICcuL1RyYW5zaXRpb24nO1xuaW1wb3J0IHsgY2xhc3NOYW1lc1NoYXBlIH0gZnJvbSAnLi91dGlscy9Qcm9wVHlwZXMnO1xuaW1wb3J0IHsgZm9yY2VSZWZsb3cgfSBmcm9tICcuL3V0aWxzL3JlZmxvdyc7XG5cbnZhciBfYWRkQ2xhc3MgPSBmdW5jdGlvbiBhZGRDbGFzcyhub2RlLCBjbGFzc2VzKSB7XG4gIHJldHVybiBub2RlICYmIGNsYXNzZXMgJiYgY2xhc3Nlcy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gYWRkT25lQ2xhc3Mobm9kZSwgYyk7XG4gIH0pO1xufTtcblxudmFyIHJlbW92ZUNsYXNzID0gZnVuY3Rpb24gcmVtb3ZlQ2xhc3Mobm9kZSwgY2xhc3Nlcykge1xuICByZXR1cm4gbm9kZSAmJiBjbGFzc2VzICYmIGNsYXNzZXMuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIHJlbW92ZU9uZUNsYXNzKG5vZGUsIGMpO1xuICB9KTtcbn07XG4vKipcbiAqIEEgdHJhbnNpdGlvbiBjb21wb25lbnQgaW5zcGlyZWQgYnkgdGhlIGV4Y2VsbGVudFxuICogW25nLWFuaW1hdGVdKGh0dHBzOi8vZG9jcy5hbmd1bGFyanMub3JnL2FwaS9uZ0FuaW1hdGUpIGxpYnJhcnksIHlvdSBzaG91bGRcbiAqIHVzZSBpdCBpZiB5b3UncmUgdXNpbmcgQ1NTIHRyYW5zaXRpb25zIG9yIGFuaW1hdGlvbnMuIEl0J3MgYnVpbHQgdXBvbiB0aGVcbiAqIFtgVHJhbnNpdGlvbmBdKGh0dHBzOi8vcmVhY3Rjb21tdW5pdHkub3JnL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvdHJhbnNpdGlvbilcbiAqIGNvbXBvbmVudCwgc28gaXQgaW5oZXJpdHMgYWxsIG9mIGl0cyBwcm9wcy5cbiAqXG4gKiBgQ1NTVHJhbnNpdGlvbmAgYXBwbGllcyBhIHBhaXIgb2YgY2xhc3MgbmFtZXMgZHVyaW5nIHRoZSBgYXBwZWFyYCwgYGVudGVyYCxcbiAqIGFuZCBgZXhpdGAgc3RhdGVzIG9mIHRoZSB0cmFuc2l0aW9uLiBUaGUgZmlyc3QgY2xhc3MgaXMgYXBwbGllZCBhbmQgdGhlbiBhXG4gKiBzZWNvbmQgYCotYWN0aXZlYCBjbGFzcyBpbiBvcmRlciB0byBhY3RpdmF0ZSB0aGUgQ1NTIHRyYW5zaXRpb24uIEFmdGVyIHRoZVxuICogdHJhbnNpdGlvbiwgbWF0Y2hpbmcgYCotZG9uZWAgY2xhc3MgbmFtZXMgYXJlIGFwcGxpZWQgdG8gcGVyc2lzdCB0aGVcbiAqIHRyYW5zaXRpb24gc3RhdGUuXG4gKlxuICogYGBganN4XG4gKiBmdW5jdGlvbiBBcHAoKSB7XG4gKiAgIGNvbnN0IFtpblByb3AsIHNldEluUHJvcF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gKiAgIHJldHVybiAoXG4gKiAgICAgPGRpdj5cbiAqICAgICAgIDxDU1NUcmFuc2l0aW9uIGluPXtpblByb3B9IHRpbWVvdXQ9ezIwMH0gY2xhc3NOYW1lcz1cIm15LW5vZGVcIj5cbiAqICAgICAgICAgPGRpdj5cbiAqICAgICAgICAgICB7XCJJJ2xsIHJlY2VpdmUgbXktbm9kZS0qIGNsYXNzZXNcIn1cbiAqICAgICAgICAgPC9kaXY+XG4gKiAgICAgICA8L0NTU1RyYW5zaXRpb24+XG4gKiAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRJblByb3AodHJ1ZSl9PlxuICogICAgICAgICBDbGljayB0byBFbnRlclxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBXaGVuIHRoZSBgaW5gIHByb3AgaXMgc2V0IHRvIGB0cnVlYCwgdGhlIGNoaWxkIGNvbXBvbmVudCB3aWxsIGZpcnN0IHJlY2VpdmVcbiAqIHRoZSBjbGFzcyBgZXhhbXBsZS1lbnRlcmAsIHRoZW4gdGhlIGBleGFtcGxlLWVudGVyLWFjdGl2ZWAgd2lsbCBiZSBhZGRlZCBpblxuICogdGhlIG5leHQgdGljay4gYENTU1RyYW5zaXRpb25gIFtmb3JjZXMgYVxuICogcmVmbG93XShodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Jsb2IvNTAwNzMwM2U3MjlhNzRiZTY2YTIxYzNlMjIwNWU0OTE2ODIxNTI0Yi9zcmMvQ1NTVHJhbnNpdGlvbi5qcyNMMjA4LUwyMTUpXG4gKiBiZXR3ZWVuIGJlZm9yZSBhZGRpbmcgdGhlIGBleGFtcGxlLWVudGVyLWFjdGl2ZWAuIFRoaXMgaXMgYW4gaW1wb3J0YW50IHRyaWNrXG4gKiBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byB0cmFuc2l0aW9uIGJldHdlZW4gYGV4YW1wbGUtZW50ZXJgIGFuZFxuICogYGV4YW1wbGUtZW50ZXItYWN0aXZlYCBldmVuIHRob3VnaCB0aGV5IHdlcmUgYWRkZWQgaW1tZWRpYXRlbHkgb25lIGFmdGVyXG4gKiBhbm90aGVyLiBNb3N0IG5vdGFibHksIHRoaXMgaXMgd2hhdCBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXMgdG8gYW5pbWF0ZVxuICogX2FwcGVhcmFuY2VfLlxuICpcbiAqIGBgYGNzc1xuICogLm15LW5vZGUtZW50ZXIge1xuICogICBvcGFjaXR5OiAwO1xuICogfVxuICogLm15LW5vZGUtZW50ZXItYWN0aXZlIHtcbiAqICAgb3BhY2l0eTogMTtcbiAqICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcztcbiAqIH1cbiAqIC5teS1ub2RlLWV4aXQge1xuICogICBvcGFjaXR5OiAxO1xuICogfVxuICogLm15LW5vZGUtZXhpdC1hY3RpdmUge1xuICogICBvcGFjaXR5OiAwO1xuICogICB0cmFuc2l0aW9uOiBvcGFjaXR5IDIwMG1zO1xuICogfVxuICogYGBgXG4gKlxuICogYCotYWN0aXZlYCBjbGFzc2VzIHJlcHJlc2VudCB3aGljaCBzdHlsZXMgeW91IHdhbnQgdG8gYW5pbWF0ZSAqKnRvKiosIHNvIGl0J3NcbiAqIGltcG9ydGFudCB0byBhZGQgYHRyYW5zaXRpb25gIGRlY2xhcmF0aW9uIG9ubHkgdG8gdGhlbSwgb3RoZXJ3aXNlIHRyYW5zaXRpb25zXG4gKiBtaWdodCBub3QgYmVoYXZlIGFzIGludGVuZGVkISBUaGlzIG1pZ2h0IG5vdCBiZSBvYnZpb3VzIHdoZW4gdGhlIHRyYW5zaXRpb25zXG4gKiBhcmUgc3ltbWV0cmljYWwsIGkuZS4gd2hlbiBgKi1lbnRlci1hY3RpdmVgIGlzIHRoZSBzYW1lIGFzIGAqLWV4aXRgLCBsaWtlIGluXG4gKiB0aGUgZXhhbXBsZSBhYm92ZSAobWludXMgYHRyYW5zaXRpb25gKSwgYnV0IGl0IGJlY29tZXMgYXBwYXJlbnQgaW4gbW9yZVxuICogY29tcGxleCB0cmFuc2l0aW9ucy5cbiAqXG4gKiAqKk5vdGUqKjogSWYgeW91J3JlIHVzaW5nIHRoZVxuICogW2BhcHBlYXJgXShodHRwOi8vcmVhY3Rjb21tdW5pdHkub3JnL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvdHJhbnNpdGlvbiNUcmFuc2l0aW9uLXByb3AtYXBwZWFyKVxuICogcHJvcCwgbWFrZSBzdXJlIHRvIGRlZmluZSBzdHlsZXMgZm9yIGAuYXBwZWFyLSpgIGNsYXNzZXMgYXMgd2VsbC5cbiAqL1xuXG5cbnZhciBDU1NUcmFuc2l0aW9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKENTU1RyYW5zaXRpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIENTU1RyYW5zaXRpb24oKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX1JlYWN0JENvbXBvbmVudC5jYWxsLmFwcGx5KF9SZWFjdCRDb21wb25lbnQsIFt0aGlzXS5jb25jYXQoYXJncykpIHx8IHRoaXM7XG4gICAgX3RoaXMuYXBwbGllZENsYXNzZXMgPSB7XG4gICAgICBhcHBlYXI6IHt9LFxuICAgICAgZW50ZXI6IHt9LFxuICAgICAgZXhpdDoge31cbiAgICB9O1xuXG4gICAgX3RoaXMub25FbnRlciA9IGZ1bmN0aW9uIChtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKSB7XG4gICAgICB2YXIgX3RoaXMkcmVzb2x2ZUFyZ3VtZW50ID0gX3RoaXMucmVzb2x2ZUFyZ3VtZW50cyhtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKSxcbiAgICAgICAgICBub2RlID0gX3RoaXMkcmVzb2x2ZUFyZ3VtZW50WzBdLFxuICAgICAgICAgIGFwcGVhcmluZyA9IF90aGlzJHJlc29sdmVBcmd1bWVudFsxXTtcblxuICAgICAgX3RoaXMucmVtb3ZlQ2xhc3Nlcyhub2RlLCAnZXhpdCcpO1xuXG4gICAgICBfdGhpcy5hZGRDbGFzcyhub2RlLCBhcHBlYXJpbmcgPyAnYXBwZWFyJyA6ICdlbnRlcicsICdiYXNlJyk7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkVudGVyKSB7XG4gICAgICAgIF90aGlzLnByb3BzLm9uRW50ZXIobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLm9uRW50ZXJpbmcgPSBmdW5jdGlvbiAobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZykge1xuICAgICAgdmFyIF90aGlzJHJlc29sdmVBcmd1bWVudDIgPSBfdGhpcy5yZXNvbHZlQXJndW1lbnRzKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpLFxuICAgICAgICAgIG5vZGUgPSBfdGhpcyRyZXNvbHZlQXJndW1lbnQyWzBdLFxuICAgICAgICAgIGFwcGVhcmluZyA9IF90aGlzJHJlc29sdmVBcmd1bWVudDJbMV07XG5cbiAgICAgIHZhciB0eXBlID0gYXBwZWFyaW5nID8gJ2FwcGVhcicgOiAnZW50ZXInO1xuXG4gICAgICBfdGhpcy5hZGRDbGFzcyhub2RlLCB0eXBlLCAnYWN0aXZlJyk7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkVudGVyaW5nKSB7XG4gICAgICAgIF90aGlzLnByb3BzLm9uRW50ZXJpbmcobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLm9uRW50ZXJlZCA9IGZ1bmN0aW9uIChtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKSB7XG4gICAgICB2YXIgX3RoaXMkcmVzb2x2ZUFyZ3VtZW50MyA9IF90aGlzLnJlc29sdmVBcmd1bWVudHMobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyksXG4gICAgICAgICAgbm9kZSA9IF90aGlzJHJlc29sdmVBcmd1bWVudDNbMF0sXG4gICAgICAgICAgYXBwZWFyaW5nID0gX3RoaXMkcmVzb2x2ZUFyZ3VtZW50M1sxXTtcblxuICAgICAgdmFyIHR5cGUgPSBhcHBlYXJpbmcgPyAnYXBwZWFyJyA6ICdlbnRlcic7XG5cbiAgICAgIF90aGlzLnJlbW92ZUNsYXNzZXMobm9kZSwgdHlwZSk7XG5cbiAgICAgIF90aGlzLmFkZENsYXNzKG5vZGUsIHR5cGUsICdkb25lJyk7XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5vbkVudGVyZWQpIHtcbiAgICAgICAgX3RoaXMucHJvcHMub25FbnRlcmVkKG1heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbkV4aXQgPSBmdW5jdGlvbiAobWF5YmVOb2RlKSB7XG4gICAgICB2YXIgX3RoaXMkcmVzb2x2ZUFyZ3VtZW50NCA9IF90aGlzLnJlc29sdmVBcmd1bWVudHMobWF5YmVOb2RlKSxcbiAgICAgICAgICBub2RlID0gX3RoaXMkcmVzb2x2ZUFyZ3VtZW50NFswXTtcblxuICAgICAgX3RoaXMucmVtb3ZlQ2xhc3Nlcyhub2RlLCAnYXBwZWFyJyk7XG5cbiAgICAgIF90aGlzLnJlbW92ZUNsYXNzZXMobm9kZSwgJ2VudGVyJyk7XG5cbiAgICAgIF90aGlzLmFkZENsYXNzKG5vZGUsICdleGl0JywgJ2Jhc2UnKTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRXhpdCkge1xuICAgICAgICBfdGhpcy5wcm9wcy5vbkV4aXQobWF5YmVOb2RlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RoaXMub25FeGl0aW5nID0gZnVuY3Rpb24gKG1heWJlTm9kZSkge1xuICAgICAgdmFyIF90aGlzJHJlc29sdmVBcmd1bWVudDUgPSBfdGhpcy5yZXNvbHZlQXJndW1lbnRzKG1heWJlTm9kZSksXG4gICAgICAgICAgbm9kZSA9IF90aGlzJHJlc29sdmVBcmd1bWVudDVbMF07XG5cbiAgICAgIF90aGlzLmFkZENsYXNzKG5vZGUsICdleGl0JywgJ2FjdGl2ZScpO1xuXG4gICAgICBpZiAoX3RoaXMucHJvcHMub25FeGl0aW5nKSB7XG4gICAgICAgIF90aGlzLnByb3BzLm9uRXhpdGluZyhtYXliZU5vZGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfdGhpcy5vbkV4aXRlZCA9IGZ1bmN0aW9uIChtYXliZU5vZGUpIHtcbiAgICAgIHZhciBfdGhpcyRyZXNvbHZlQXJndW1lbnQ2ID0gX3RoaXMucmVzb2x2ZUFyZ3VtZW50cyhtYXliZU5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBfdGhpcyRyZXNvbHZlQXJndW1lbnQ2WzBdO1xuXG4gICAgICBfdGhpcy5yZW1vdmVDbGFzc2VzKG5vZGUsICdleGl0Jyk7XG5cbiAgICAgIF90aGlzLmFkZENsYXNzKG5vZGUsICdleGl0JywgJ2RvbmUnKTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLm9uRXhpdGVkKSB7XG4gICAgICAgIF90aGlzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90aGlzLnJlc29sdmVBcmd1bWVudHMgPSBmdW5jdGlvbiAobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZykge1xuICAgICAgcmV0dXJuIF90aGlzLnByb3BzLm5vZGVSZWYgPyBbX3RoaXMucHJvcHMubm9kZVJlZi5jdXJyZW50LCBtYXliZU5vZGVdIC8vIGhlcmUgYG1heWJlTm9kZWAgaXMgYWN0dWFsbHkgYGFwcGVhcmluZ2BcbiAgICAgIDogW21heWJlTm9kZSwgbWF5YmVBcHBlYXJpbmddO1xuICAgIH07XG5cbiAgICBfdGhpcy5nZXRDbGFzc05hbWVzID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIHZhciBjbGFzc05hbWVzID0gX3RoaXMucHJvcHMuY2xhc3NOYW1lcztcbiAgICAgIHZhciBpc1N0cmluZ0NsYXNzTmFtZXMgPSB0eXBlb2YgY2xhc3NOYW1lcyA9PT0gJ3N0cmluZyc7XG4gICAgICB2YXIgcHJlZml4ID0gaXNTdHJpbmdDbGFzc05hbWVzICYmIGNsYXNzTmFtZXMgPyBjbGFzc05hbWVzICsgXCItXCIgOiAnJztcbiAgICAgIHZhciBiYXNlQ2xhc3NOYW1lID0gaXNTdHJpbmdDbGFzc05hbWVzID8gXCJcIiArIHByZWZpeCArIHR5cGUgOiBjbGFzc05hbWVzW3R5cGVdO1xuICAgICAgdmFyIGFjdGl2ZUNsYXNzTmFtZSA9IGlzU3RyaW5nQ2xhc3NOYW1lcyA/IGJhc2VDbGFzc05hbWUgKyBcIi1hY3RpdmVcIiA6IGNsYXNzTmFtZXNbdHlwZSArIFwiQWN0aXZlXCJdO1xuICAgICAgdmFyIGRvbmVDbGFzc05hbWUgPSBpc1N0cmluZ0NsYXNzTmFtZXMgPyBiYXNlQ2xhc3NOYW1lICsgXCItZG9uZVwiIDogY2xhc3NOYW1lc1t0eXBlICsgXCJEb25lXCJdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFzZUNsYXNzTmFtZTogYmFzZUNsYXNzTmFtZSxcbiAgICAgICAgYWN0aXZlQ2xhc3NOYW1lOiBhY3RpdmVDbGFzc05hbWUsXG4gICAgICAgIGRvbmVDbGFzc05hbWU6IGRvbmVDbGFzc05hbWVcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBDU1NUcmFuc2l0aW9uLnByb3RvdHlwZTtcblxuICBfcHJvdG8uYWRkQ2xhc3MgPSBmdW5jdGlvbiBhZGRDbGFzcyhub2RlLCB0eXBlLCBwaGFzZSkge1xuICAgIHZhciBjbGFzc05hbWUgPSB0aGlzLmdldENsYXNzTmFtZXModHlwZSlbcGhhc2UgKyBcIkNsYXNzTmFtZVwiXTtcblxuICAgIHZhciBfdGhpcyRnZXRDbGFzc05hbWVzID0gdGhpcy5nZXRDbGFzc05hbWVzKCdlbnRlcicpLFxuICAgICAgICBkb25lQ2xhc3NOYW1lID0gX3RoaXMkZ2V0Q2xhc3NOYW1lcy5kb25lQ2xhc3NOYW1lO1xuXG4gICAgaWYgKHR5cGUgPT09ICdhcHBlYXInICYmIHBoYXNlID09PSAnZG9uZScgJiYgZG9uZUNsYXNzTmFtZSkge1xuICAgICAgY2xhc3NOYW1lICs9IFwiIFwiICsgZG9uZUNsYXNzTmFtZTtcbiAgICB9IC8vIFRoaXMgaXMgdG8gZm9yY2UgYSByZXBhaW50LFxuICAgIC8vIHdoaWNoIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byB0cmFuc2l0aW9uIHN0eWxlcyB3aGVuIGFkZGluZyBhIGNsYXNzIG5hbWUuXG5cblxuICAgIGlmIChwaGFzZSA9PT0gJ2FjdGl2ZScpIHtcbiAgICAgIGlmIChub2RlKSBmb3JjZVJlZmxvdyhub2RlKTtcbiAgICB9XG5cbiAgICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgICB0aGlzLmFwcGxpZWRDbGFzc2VzW3R5cGVdW3BoYXNlXSA9IGNsYXNzTmFtZTtcblxuICAgICAgX2FkZENsYXNzKG5vZGUsIGNsYXNzTmFtZSk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5yZW1vdmVDbGFzc2VzID0gZnVuY3Rpb24gcmVtb3ZlQ2xhc3Nlcyhub2RlLCB0eXBlKSB7XG4gICAgdmFyIF90aGlzJGFwcGxpZWRDbGFzc2VzJCA9IHRoaXMuYXBwbGllZENsYXNzZXNbdHlwZV0sXG4gICAgICAgIGJhc2VDbGFzc05hbWUgPSBfdGhpcyRhcHBsaWVkQ2xhc3NlcyQuYmFzZSxcbiAgICAgICAgYWN0aXZlQ2xhc3NOYW1lID0gX3RoaXMkYXBwbGllZENsYXNzZXMkLmFjdGl2ZSxcbiAgICAgICAgZG9uZUNsYXNzTmFtZSA9IF90aGlzJGFwcGxpZWRDbGFzc2VzJC5kb25lO1xuICAgIHRoaXMuYXBwbGllZENsYXNzZXNbdHlwZV0gPSB7fTtcblxuICAgIGlmIChiYXNlQ2xhc3NOYW1lKSB7XG4gICAgICByZW1vdmVDbGFzcyhub2RlLCBiYXNlQ2xhc3NOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZlQ2xhc3NOYW1lKSB7XG4gICAgICByZW1vdmVDbGFzcyhub2RlLCBhY3RpdmVDbGFzc05hbWUpO1xuICAgIH1cblxuICAgIGlmIChkb25lQ2xhc3NOYW1lKSB7XG4gICAgICByZW1vdmVDbGFzcyhub2RlLCBkb25lQ2xhc3NOYW1lKTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBfID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lcyxcbiAgICAgICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfdGhpcyRwcm9wcywgW1wiY2xhc3NOYW1lc1wiXSk7XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbiwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICBvbkVudGVyOiB0aGlzLm9uRW50ZXIsXG4gICAgICBvbkVudGVyZWQ6IHRoaXMub25FbnRlcmVkLFxuICAgICAgb25FbnRlcmluZzogdGhpcy5vbkVudGVyaW5nLFxuICAgICAgb25FeGl0OiB0aGlzLm9uRXhpdCxcbiAgICAgIG9uRXhpdGluZzogdGhpcy5vbkV4aXRpbmcsXG4gICAgICBvbkV4aXRlZDogdGhpcy5vbkV4aXRlZFxuICAgIH0pKTtcbiAgfTtcblxuICByZXR1cm4gQ1NTVHJhbnNpdGlvbjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuQ1NTVHJhbnNpdGlvbi5kZWZhdWx0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZXM6ICcnXG59O1xuQ1NTVHJhbnNpdGlvbi5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBfZXh0ZW5kcyh7fSwgVHJhbnNpdGlvbi5wcm9wVHlwZXMsIHtcbiAgLyoqXG4gICAqIFRoZSBhbmltYXRpb24gY2xhc3NOYW1lcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQgYXMgaXQgYXBwZWFycywgZW50ZXJzLFxuICAgKiBleGl0cyBvciBoYXMgZmluaXNoZWQgdGhlIHRyYW5zaXRpb24uIEEgc2luZ2xlIG5hbWUgY2FuIGJlIHByb3ZpZGVkLCB3aGljaFxuICAgKiB3aWxsIGJlIHN1ZmZpeGVkIGZvciBlYWNoIHN0YWdlLCBlLmcuIGBjbGFzc05hbWVzPVwiZmFkZVwiYCBhcHBsaWVzOlxuICAgKlxuICAgKiAtIGBmYWRlLWFwcGVhcmAsIGBmYWRlLWFwcGVhci1hY3RpdmVgLCBgZmFkZS1hcHBlYXItZG9uZWBcbiAgICogLSBgZmFkZS1lbnRlcmAsIGBmYWRlLWVudGVyLWFjdGl2ZWAsIGBmYWRlLWVudGVyLWRvbmVgXG4gICAqIC0gYGZhZGUtZXhpdGAsIGBmYWRlLWV4aXQtYWN0aXZlYCwgYGZhZGUtZXhpdC1kb25lYFxuICAgKlxuICAgKiBBIGZldyBkZXRhaWxzIHRvIG5vdGUgYWJvdXQgaG93IHRoZXNlIGNsYXNzZXMgYXJlIGFwcGxpZWQ6XG4gICAqXG4gICAqIDEuIFRoZXkgYXJlIF9qb2luZWRfIHdpdGggdGhlIG9uZXMgdGhhdCBhcmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZSBjaGlsZFxuICAgKiAgICBjb21wb25lbnQsIHNvIGlmIHlvdSB3YW50IHRvIGFkZCBzb21lIGJhc2Ugc3R5bGVzLCB5b3UgY2FuIHVzZVxuICAgKiAgICBgY2xhc3NOYW1lYCB3aXRob3V0IHdvcnJ5aW5nIHRoYXQgaXQgd2lsbCBiZSBvdmVycmlkZGVuLlxuICAgKlxuICAgKiAyLiBJZiB0aGUgdHJhbnNpdGlvbiBjb21wb25lbnQgbW91bnRzIHdpdGggYGluPXtmYWxzZX1gLCBubyBjbGFzc2VzIGFyZVxuICAgKiAgICBhcHBsaWVkIHlldC4gWW91IG1pZ2h0IGJlIGV4cGVjdGluZyBgKi1leGl0LWRvbmVgLCBidXQgaWYgeW91IHRoaW5rXG4gICAqICAgIGFib3V0IGl0LCBhIGNvbXBvbmVudCBjYW5ub3QgZmluaXNoIGV4aXRpbmcgaWYgaXQgaGFzbid0IGVudGVyZWQgeWV0LlxuICAgKlxuICAgKiAyLiBgZmFkZS1hcHBlYXItZG9uZWAgYW5kIGBmYWRlLWVudGVyLWRvbmVgIHdpbGwgX2JvdGhfIGJlIGFwcGxpZWQuIFRoaXNcbiAgICogICAgYWxsb3dzIHlvdSB0byBkZWZpbmUgZGlmZmVyZW50IGJlaGF2aW9yIGZvciB3aGVuIGFwcGVhcmluZyBpcyBkb25lIGFuZFxuICAgKiAgICB3aGVuIHJlZ3VsYXIgZW50ZXJpbmcgaXMgZG9uZSwgdXNpbmcgc2VsZWN0b3JzIGxpa2VcbiAgICogICAgYC5mYWRlLWVudGVyLWRvbmU6bm90KC5mYWRlLWFwcGVhci1kb25lKWAuIEZvciBleGFtcGxlLCB5b3UgY291bGQgYXBwbHlcbiAgICogICAgYW4gZXBpYyBlbnRyYW5jZSBhbmltYXRpb24gd2hlbiBlbGVtZW50IGZpcnN0IGFwcGVhcnMgaW4gdGhlIERPTSB1c2luZ1xuICAgKiAgICBbQW5pbWF0ZS5jc3NdKGh0dHBzOi8vZGFuZWRlbi5naXRodWIuaW8vYW5pbWF0ZS5jc3MvKS4gT3RoZXJ3aXNlIHlvdSBjYW5cbiAgICogICAgc2ltcGx5IHVzZSBgZmFkZS1lbnRlci1kb25lYCBmb3IgZGVmaW5pbmcgYm90aCBjYXNlcy5cbiAgICpcbiAgICogRWFjaCBpbmRpdmlkdWFsIGNsYXNzTmFtZXMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGluZGVwZW5kZW50bHkgbGlrZTpcbiAgICpcbiAgICogYGBganNcbiAgICogY2xhc3NOYW1lcz17e1xuICAgKiAgYXBwZWFyOiAnbXktYXBwZWFyJyxcbiAgICogIGFwcGVhckFjdGl2ZTogJ215LWFjdGl2ZS1hcHBlYXInLFxuICAgKiAgYXBwZWFyRG9uZTogJ215LWRvbmUtYXBwZWFyJyxcbiAgICogIGVudGVyOiAnbXktZW50ZXInLFxuICAgKiAgZW50ZXJBY3RpdmU6ICdteS1hY3RpdmUtZW50ZXInLFxuICAgKiAgZW50ZXJEb25lOiAnbXktZG9uZS1lbnRlcicsXG4gICAqICBleGl0OiAnbXktZXhpdCcsXG4gICAqICBleGl0QWN0aXZlOiAnbXktYWN0aXZlLWV4aXQnLFxuICAgKiAgZXhpdERvbmU6ICdteS1kb25lLWV4aXQnLFxuICAgKiB9fVxuICAgKiBgYGBcbiAgICpcbiAgICogSWYgeW91IHdhbnQgdG8gc2V0IHRoZXNlIGNsYXNzZXMgdXNpbmcgQ1NTIE1vZHVsZXM6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcbiAgICogYGBgXG4gICAqXG4gICAqIHlvdSBtaWdodCB3YW50IHRvIHVzZSBjYW1lbENhc2UgaW4geW91ciBDU1MgZmlsZSwgdGhhdCB3YXkgY291bGQgc2ltcGx5XG4gICAqIHNwcmVhZCB0aGVtIGluc3RlYWQgb2YgbGlzdGluZyB0aGVtIG9uZSBieSBvbmU6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGNsYXNzTmFtZXM9e3sgLi4uc3R5bGVzIH19XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nIHwge1xuICAgKiAgYXBwZWFyPzogc3RyaW5nLFxuICAgKiAgYXBwZWFyQWN0aXZlPzogc3RyaW5nLFxuICAgKiAgYXBwZWFyRG9uZT86IHN0cmluZyxcbiAgICogIGVudGVyPzogc3RyaW5nLFxuICAgKiAgZW50ZXJBY3RpdmU/OiBzdHJpbmcsXG4gICAqICBlbnRlckRvbmU/OiBzdHJpbmcsXG4gICAqICBleGl0Pzogc3RyaW5nLFxuICAgKiAgZXhpdEFjdGl2ZT86IHN0cmluZyxcbiAgICogIGV4aXREb25lPzogc3RyaW5nLFxuICAgKiB9fVxuICAgKi9cbiAgY2xhc3NOYW1lczogY2xhc3NOYW1lc1NoYXBlLFxuXG4gIC8qKlxuICAgKiBBIGA8VHJhbnNpdGlvbj5gIGNhbGxiYWNrIGZpcmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnZW50ZXInIG9yICdhcHBlYXInIGNsYXNzIGlzXG4gICAqIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbClcbiAgICovXG4gIG9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGA8VHJhbnNpdGlvbj5gIGNhbGxiYWNrIGZpcmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnZW50ZXItYWN0aXZlJyBvclxuICAgKiAnYXBwZWFyLWFjdGl2ZScgY2xhc3MgaXMgYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKVxuICAgKi9cbiAgb25FbnRlcmluZzogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgYDxUcmFuc2l0aW9uPmAgY2FsbGJhY2sgZmlyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlICdlbnRlcicgb3JcbiAgICogJ2FwcGVhcicgY2xhc3NlcyBhcmUgKipyZW1vdmVkKiogYW5kIHRoZSBgZG9uZWAgY2xhc3MgaXMgYWRkZWQgdG8gdGhlIERPTSBub2RlLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpXG4gICAqL1xuICBvbkVudGVyZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBBIGA8VHJhbnNpdGlvbj5gIGNhbGxiYWNrIGZpcmVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnZXhpdCcgY2xhc3MgaXNcbiAgICogYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZFxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudClcbiAgICovXG4gIG9uRXhpdDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgYDxUcmFuc2l0aW9uPmAgY2FsbGJhY2sgZmlyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlICdleGl0LWFjdGl2ZScgaXMgYXBwbGllZC5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZFxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudClcbiAgICovXG4gIG9uRXhpdGluZzogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIEEgYDxUcmFuc2l0aW9uPmAgY2FsbGJhY2sgZmlyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlICdleGl0JyBjbGFzc2VzXG4gICAqIGFyZSAqKnJlbW92ZWQqKiBhbmQgdGhlIGBleGl0LWRvbmVgIGNsYXNzIGlzIGFkZGVkIHRvIHRoZSBET00gbm9kZS5cbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZFxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudClcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuY1xufSkgOiB7fTtcbmV4cG9ydCBkZWZhdWx0IENTU1RyYW5zaXRpb247IiwiaW1wb3J0IGhhc0NsYXNzIGZyb20gJy4vaGFzQ2xhc3MnO1xuLyoqXG4gKiBBZGRzIGEgQ1NTIGNsYXNzIHRvIGEgZ2l2ZW4gZWxlbWVudC5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7XG4gIGlmIChlbGVtZW50LmNsYXNzTGlzdCkgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7ZWxzZSBpZiAoIWhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkpIGlmICh0eXBlb2YgZWxlbWVudC5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lICsgXCIgXCIgKyBjbGFzc05hbWU7ZWxzZSBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAoZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc05hbWUuYmFzZVZhbCB8fCAnJykgKyBcIiBcIiArIGNsYXNzTmFtZSk7XG59IiwiLyoqXG4gKiBDaGVja3MgaWYgYSBnaXZlbiBlbGVtZW50IGhhcyBhIENTUyBjbGFzcy5cbiAqIFxuICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnRcbiAqIEBwYXJhbSBjbGFzc05hbWUgdGhlIENTUyBjbGFzcyBuYW1lXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNsYXNzTmFtZSkge1xuICBpZiAoZWxlbWVudC5jbGFzc0xpc3QpIHJldHVybiAhIWNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpO1xuICByZXR1cm4gKFwiIFwiICsgKGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWwgfHwgZWxlbWVudC5jbGFzc05hbWUpICsgXCIgXCIpLmluZGV4T2YoXCIgXCIgKyBjbGFzc05hbWUgKyBcIiBcIikgIT09IC0xO1xufSIsImltcG9ydCB7IG1vZHNDbGFzc05hbWUgfSBmcm9tICcuL2NuJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRDU1NUcmFuc2l0aW9uQ2xhc3NOYW1lcyhiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYXBwZWFyOiBtb2RzQ2xhc3NOYW1lKGIoeyBhcHBlYXI6IHRydWUgfSkpLFxuICAgICAgICBhcHBlYXJBY3RpdmU6IG1vZHNDbGFzc05hbWUoYih7IGFwcGVhcjogJ2FjdGl2ZScgfSkpLFxuICAgICAgICBhcHBlYXJEb25lOiBtb2RzQ2xhc3NOYW1lKGIoeyBhcHBlYXI6ICdkb25lJyB9KSksXG4gICAgICAgIGVudGVyOiBtb2RzQ2xhc3NOYW1lKGIoeyBlbnRlcjogdHJ1ZSB9KSksXG4gICAgICAgIGVudGVyQWN0aXZlOiBtb2RzQ2xhc3NOYW1lKGIoeyBlbnRlcjogJ2FjdGl2ZScgfSkpLFxuICAgICAgICBlbnRlckRvbmU6IG1vZHNDbGFzc05hbWUoYih7IGVudGVyOiAnZG9uZScgfSkpLFxuICAgICAgICBleGl0OiBtb2RzQ2xhc3NOYW1lKGIoeyBleGl0OiB0cnVlIH0pKSxcbiAgICAgICAgZXhpdEFjdGl2ZTogbW9kc0NsYXNzTmFtZShiKHsgZXhpdDogJ2FjdGl2ZScgfSkpLFxuICAgICAgICBleGl0RG9uZTogbW9kc0NsYXNzTmFtZShiKHsgZXhpdDogJ2RvbmUnIH0pKSxcbiAgICB9O1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBjb25zdCBQb3J0YWxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7IGN1cnJlbnQ6IG51bGwgfSk7XG5Qb3J0YWxDb250ZXh0LmRpc3BsYXlOYW1lID0gJ1BvcnRhbENvbnRleHQnO1xuZXhwb3J0IGNvbnN0IFBvcnRhbFByb3ZpZGVyID0gKHsgY29udGFpbmVyLCBjaGlsZHJlbiB9KSA9PiB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUG9ydGFsQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGFpbmVyIH0sIGNoaWxkcmVuKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgeyB1c2VQb3J0YWxDb250YWluZXIgfSBmcm9tICcuLi91dGlscy91c2VQb3J0YWxDb250YWluZXInO1xuZXhwb3J0IGZ1bmN0aW9uIFBvcnRhbCh7IGNvbnRhaW5lciwgY2hpbGRyZW4sIGRpc2FibGVQb3J0YWwgfSkge1xuICAgIGNvbnN0IGRlZmF1bHRDb250YWluZXIgPSB1c2VQb3J0YWxDb250YWluZXIoKTtcbiAgICBjb25zdCBjb250YWluZXJOb2RlID0gY29udGFpbmVyICE9PSBudWxsICYmIGNvbnRhaW5lciAhPT0gdm9pZCAwID8gY29udGFpbmVyIDogZGVmYXVsdENvbnRhaW5lcjtcbiAgICBpZiAoZGlzYWJsZVBvcnRhbCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyTm9kZSA/IFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChjaGlsZHJlbiwgY29udGFpbmVyTm9kZSkgOiBudWxsO1xufVxuIiwiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFBvcnRhbENvbnRleHQgfSBmcm9tICcuL1BvcnRhbFByb3ZpZGVyJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3J0YWxDb250YWluZXIoKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KFBvcnRhbENvbnRleHQpO1xuICAgIGxldCBkZWZhdWx0Q29udGFpbmVyID0gbnVsbDtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZGVmYXVsdENvbnRhaW5lciA9IHdpbmRvdy5kb2N1bWVudC5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gKF9hID0gY29udGV4dC5jdXJyZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBkZWZhdWx0Q29udGFpbmVyO1xufVxuIiwiaW1wb3J0IHsgZXZlbnRCcm9rZXIgfSBmcm9tICcuL2V2ZW50LWJyb2tlcic7XG5jbGFzcyBMYXllck1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gW107XG4gICAgICAgIHRoaXMuaGFuZGxlRG9jdW1lbnRLZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIGlmIChldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvcExheWVyID0gdGhpcy5nZXRUb3BMYXllcigpO1xuICAgICAgICAgICAgICAgIGlmICghdG9wTGF5ZXIuZGlzYWJsZUVzY2FwZUtleURvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gdG9wTGF5ZXIub25Fc2NhcGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0b3BMYXllciwgZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAoX2IgPSB0b3BMYXllci5vbkNsb3NlKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbCh0b3BMYXllciwgZXZlbnQsICdlc2NhcGVLZXlEb3duJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3BMYXllciA9IHRoaXMuZ2V0VG9wTGF5ZXIoKTtcbiAgICAgICAgICAgICAgICAoX2MgPSB0b3BMYXllci5vbkVudGVyS2V5RG93bikgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmNhbGwodG9wTGF5ZXIsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5oYW5kbGVEb2N1bWVudENsaWNrID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgbGV0IGxheWVyO1xuICAgICAgICAgICAgbGV0IG1vdXNlRG93blRhcmdldCA9IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5tb3VzZURvd25MYXllclRhcmdldCkge1xuICAgICAgICAgICAgICAgIGxheWVyID0gdGhpcy5tb3VzZURvd25MYXllclRhcmdldC5sYXllcjtcbiAgICAgICAgICAgICAgICBtb3VzZURvd25UYXJnZXQgPSB0aGlzLm1vdXNlRG93bkxheWVyVGFyZ2V0LnRhcmdldDtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlRG93bkxheWVyVGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFjay5pbmNsdWRlcyhsYXllcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxheWVyID0gdGhpcy5nZXRUb3BMYXllcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsYXllci5kaXNhYmxlT3V0c2lkZUNsaWNrICYmIHRoaXMuaXNPdXRzaWRlQ2xpY2sobGF5ZXIsIGV2ZW50LCBtb3VzZURvd25UYXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgKF9hID0gbGF5ZXIub25PdXRzaWRlQ2xpY2spID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGxheWVyLCBldmVudCk7XG4gICAgICAgICAgICAgICAgKF9iID0gbGF5ZXIub25DbG9zZSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwobGF5ZXIsIGV2ZW50LCAnb3V0c2lkZUNsaWNrJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaGFuZGxlRG9jdW1lbnRNb3VzZURvd24gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyID0gdGhpcy5nZXRUb3BMYXllcigpO1xuICAgICAgICAgICAgaWYgKGxheWVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZURvd25MYXllclRhcmdldCA9IHsgbGF5ZXIsIHRhcmdldDogZXZlbnQudGFyZ2V0IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFkZChjb25maWcpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKGNvbmZpZyk7XG4gICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5hZGRMaXN0ZW5lcnMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vdGlmeUxheWVyc0NoYW5nZSgpO1xuICAgIH1cbiAgICByZW1vdmUoY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zdGFjay5pbmRleE9mKGNvbmZpZyk7XG4gICAgICAgIHRoaXMuc3RhY2suc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm90aWZ5TGF5ZXJzQ2hhbmdlKCk7XG4gICAgfVxuICAgIGdldExheWVyc0NvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgfVxuICAgIGFkZExpc3RlbmVycygpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlRG9jdW1lbnRLZXlEb3duKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmhhbmRsZURvY3VtZW50Q2xpY2ssIHRydWUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLmhhbmRsZURvY3VtZW50TW91c2VEb3duLCB0cnVlKTtcbiAgICB9XG4gICAgcmVtb3ZlTGlzdGVuZXJzKCkge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5oYW5kbGVEb2N1bWVudEtleURvd24pO1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuaGFuZGxlRG9jdW1lbnRDbGljaywgdHJ1ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuaGFuZGxlRG9jdW1lbnRNb3VzZURvd24sIHRydWUpO1xuICAgIH1cbiAgICBub3RpZnlMYXllcnNDaGFuZ2UoKSB7XG4gICAgICAgIGV2ZW50QnJva2VyLnB1Ymxpc2goe1xuICAgICAgICAgICAgY29tcG9uZW50SWQ6ICdMYXllck1hbmFnZXInLFxuICAgICAgICAgICAgZXZlbnRJZDogJ2xheWVyc2NoYW5nZScsXG4gICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJzQ291bnQ6IHRoaXMuZ2V0TGF5ZXJzQ291bnQoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRUb3BMYXllcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgaXNPdXRzaWRlQ2xpY2sobGF5ZXIsIGV2ZW50LCBtb3VzZURvd25UYXJnZXQgPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50cyA9IGxheWVyLmNvbnRlbnRSZWZzIHx8IFtdO1xuICAgICAgICBjb25zdCB7IHRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICAgIGNvbnN0IGNvbXBvc2VkUGF0aCA9IHR5cGVvZiBldmVudC5jb21wb3NlZFBhdGggPT09ICdmdW5jdGlvbicgPyBldmVudC5jb21wb3NlZFBhdGgoKSA6IFtdO1xuICAgICAgICBpZiAoY29udGVudEVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2xpY2tPbkNvbnRlbnRFbGVtZW50cyA9IGNvbnRlbnRFbGVtZW50cy5zb21lKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gKChfYiA9IChfYSA9IGVsID09PSBudWxsIHx8IGVsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlbC5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB0YXJnZXQpKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKF9kID0gKF9jID0gZWwgPT09IG51bGwgfHwgZWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jb250YWlucykgPT09IG51bGwgfHwgX2QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kLmNhbGwoX2MsIG1vdXNlRG93blRhcmdldCkpIHx8XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhlbCA9PT0gbnVsbCB8fCBlbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZWwuY3VycmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAhaXNDbGlja09uQ29udGVudEVsZW1lbnRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgbGF5ZXJNYW5hZ2VyID0gbmV3IExheWVyTWFuYWdlcigpO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVBU3RyaW5nKCkge1xuICB2YXIgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG5cbiAgaWYgKHVhRGF0YSAhPSBudWxsICYmIHVhRGF0YS5icmFuZHMgJiYgQXJyYXkuaXNBcnJheSh1YURhdGEuYnJhbmRzKSkge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCJpbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNMYXlvdXRWaWV3cG9ydCgpIHtcbiAgcmV0dXJuICEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3kpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IDE7XG4gIHZhciBzY2FsZVkgPSAxO1xuXG4gIGlmIChpbmNsdWRlU2NhbGUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHNjYWxlWCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwID8gcm91bmQoY2xpZW50UmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDEgOiAxO1xuICAgIHNjYWxlWSA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCA/IHJvdW5kKGNsaWVudFJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDEgOiAxO1xuICB9XG5cbiAgdmFyIF9yZWYgPSBpc0VsZW1lbnQoZWxlbWVudCkgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3csXG4gICAgICB2aXN1YWxWaWV3cG9ydCA9IF9yZWYudmlzdWFsVmlld3BvcnQ7XG5cbiAgdmFyIGFkZFZpc3VhbE9mZnNldHMgPSAhaXNMYXlvdXRWaWV3cG9ydCgpICYmIGlzRml4ZWRTdHJhdGVneTtcbiAgdmFyIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0IDogMCkpIC8gc2NhbGVYO1xuICB2YXIgeSA9IChjbGllbnRSZWN0LnRvcCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wIDogMCkpIC8gc2NhbGVZO1xuICB2YXIgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGVYO1xuICB2YXIgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZVk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZU5hbWUoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudCA/IChlbGVtZW50Lm5vZGVOYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgLy8gUG9wcGVyIDEgaXMgYnJva2VuIGluIHRoaXMgY2FzZSBhbmQgbmV2ZXIgaGFkIGEgYnVnIHJlcG9ydCBzbyBsZXQncyBhc3N1bWVcbiAgLy8gaXQncyBub3QgYW4gaXNzdWUuIEkgZG9uJ3QgdGhpbmsgYW55b25lIGV2ZXIgc3BlY2lmaWVzIHdpZHRoIG9uIDxodG1sPlxuICAvLyBhbnl3YXkuXG4gIC8vIEJyb3dzZXJzIHdoZXJlIHRoZSBsZWZ0IHNjcm9sbGJhciBkb2Vzbid0IGNhdXNlIGFuIGlzc3VlIHJlcG9ydCBgMGAgZm9yXG4gIC8vIHRoaXMgKGUuZy4gRWRnZSAyMDE5LCBJRTExLCBTYWZhcmkpXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59IiwiaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAvLyBGaXJlZm94IHdhbnRzIHVzIHRvIGNoZWNrIGAteGAgYW5kIGAteWAgdmFyaWF0aW9ucyBhcyB3ZWxsXG4gIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93LFxuICAgICAgb3ZlcmZsb3dYID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dYLFxuICAgICAgb3ZlcmZsb3dZID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dZO1xuXG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW4vLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpO1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZVNjcm9sbCBmcm9tIFwiLi9nZXROb2RlU2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNjYWxlZChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IHJvdW5kKHJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxO1xuICB2YXIgc2NhbGVZID0gcm91bmQocmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMTtcbiAgcmV0dXJuIHNjYWxlWCAhPT0gMSB8fCBzY2FsZVkgIT09IDE7XG59IC8vIFJldHVybnMgdGhlIGNvbXBvc2l0ZSByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC5cbi8vIENvbXBvc2l0ZSBtZWFucyBpdCB0YWtlcyBpbnRvIGFjY291bnQgdHJhbnNmb3JtcyBhcyB3ZWxsIGFzIGxheW91dC5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wb3NpdGVSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnQsIGlzRml4ZWQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudElzU2NhbGVkID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzRWxlbWVudFNjYWxlZChvZmZzZXRQYXJlbnQpO1xuICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnRJc1NjYWxlZCwgaXNGaXhlZCk7XG4gIHZhciBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgdmFyIG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMDc4XG4gICAgaXNTY3JvbGxQYXJlbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cblxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIG9mZnNldHMgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlKTtcbiAgICAgIG9mZnNldHMueCArPSBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSArPSBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRTY3JvbGxQYXJlbnQgZnJvbSBcIi4vZ2V0U2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG4vKlxuZ2l2ZW4gYSBET00gZWxlbWVudCwgcmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBzY3JvbGwgcGFyZW50cywgdXAgdGhlIGxpc3Qgb2YgYW5jZXNvcnNcbnVudGlsIHdlIGdldCB0byB0aGUgdG9wIHdpbmRvdyBvYmplY3QuIFRoaXMgbGlzdCBpcyB3aGF0IHdlIGF0dGFjaCBzY3JvbGwgbGlzdGVuZXJzXG50bywgYmVjYXVzZSBpZiBhbnkgb2YgdGhlc2UgcGFyZW50IGVsZW1lbnRzIHNjcm9sbCwgd2UnbGwgbmVlZCB0byByZS1jYWxjdWxhdGUgdGhlXG5yZWZlcmVuY2UgZWxlbWVudCdzIHBvc2l0aW9uLlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGlzdFNjcm9sbFBhcmVudHMoZWxlbWVudCwgbGlzdCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cblxuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGVsZW1lbnQpO1xuICB2YXIgaXNCb2R5ID0gc2Nyb2xsUGFyZW50ID09PSAoKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5KTtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhzY3JvbGxQYXJlbnQpO1xuICB2YXIgdGFyZ2V0ID0gaXNCb2R5ID8gW3dpbl0uY29uY2F0KHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNTY3JvbGxQYXJlbnQoc2Nyb2xsUGFyZW50KSA/IHNjcm9sbFBhcmVudCA6IFtdKSA6IHNjcm9sbFBhcmVudDtcbiAgdmFyIHVwZGF0ZWRMaXN0ID0gbGlzdC5jb25jYXQodGFyZ2V0KTtcbiAgcmV0dXJuIGlzQm9keSA/IHVwZGF0ZWRMaXN0IDogLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IGlzQm9keSB0ZWxscyB1cyB0YXJnZXQgd2lsbCBiZSBhbiBIVE1MRWxlbWVudCBoZXJlXG4gIHVwZGF0ZWRMaXN0LmNvbmNhdChsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKHRhcmdldCkpKTtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmRleE9mKGdldE5vZGVOYW1lKGVsZW1lbnQpKSA+PSAwO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gL2ZpcmVmb3gvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuICB2YXIgaXNJRSA9IC9UcmlkZW50L2kudGVzdChnZXRVQVN0cmluZygpKTtcblxuICBpZiAoaXNJRSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgLy8gSW4gSUUgOSwgMTAgYW5kIDExIGZpeGVkIGVsZW1lbnRzIGNvbnRhaW5pbmcgYmxvY2sgaXMgYWx3YXlzIGVzdGFibGlzaGVkIGJ5IHRoZSB2aWV3cG9ydFxuICAgIHZhciBlbGVtZW50Q3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50Q3NzLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuXG4gIGlmIChpc1NoYWRvd1Jvb3QoY3VycmVudE5vZGUpKSB7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ob3N0O1xuICB9XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJleHBvcnQgdmFyIHRvcCA9ICd0b3AnO1xuZXhwb3J0IHZhciBib3R0b20gPSAnYm90dG9tJztcbmV4cG9ydCB2YXIgcmlnaHQgPSAncmlnaHQnO1xuZXhwb3J0IHZhciBsZWZ0ID0gJ2xlZnQnO1xuZXhwb3J0IHZhciBhdXRvID0gJ2F1dG8nO1xuZXhwb3J0IHZhciBiYXNlUGxhY2VtZW50cyA9IFt0b3AsIGJvdHRvbSwgcmlnaHQsIGxlZnRdO1xuZXhwb3J0IHZhciBzdGFydCA9ICdzdGFydCc7XG5leHBvcnQgdmFyIGVuZCA9ICdlbmQnO1xuZXhwb3J0IHZhciBjbGlwcGluZ1BhcmVudHMgPSAnY2xpcHBpbmdQYXJlbnRzJztcbmV4cG9ydCB2YXIgdmlld3BvcnQgPSAndmlld3BvcnQnO1xuZXhwb3J0IHZhciBwb3BwZXIgPSAncG9wcGVyJztcbmV4cG9ydCB2YXIgcmVmZXJlbmNlID0gJ3JlZmVyZW5jZSc7XG5leHBvcnQgdmFyIHZhcmlhdGlvblBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovYmFzZVBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTtcbmV4cG9ydCB2YXIgcGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9bXS5jb25jYXQoYmFzZVBsYWNlbWVudHMsIFthdXRvXSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICByZXR1cm4gYWNjLmNvbmNhdChbcGxhY2VtZW50LCBwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pOyAvLyBtb2RpZmllcnMgdGhhdCBuZWVkIHRvIHJlYWQgdGhlIERPTVxuXG5leHBvcnQgdmFyIGJlZm9yZVJlYWQgPSAnYmVmb3JlUmVhZCc7XG5leHBvcnQgdmFyIHJlYWQgPSAncmVhZCc7XG5leHBvcnQgdmFyIGFmdGVyUmVhZCA9ICdhZnRlclJlYWQnOyAvLyBwdXJlLWxvZ2ljIG1vZGlmaWVyc1xuXG5leHBvcnQgdmFyIGJlZm9yZU1haW4gPSAnYmVmb3JlTWFpbic7XG5leHBvcnQgdmFyIG1haW4gPSAnbWFpbic7XG5leHBvcnQgdmFyIGFmdGVyTWFpbiA9ICdhZnRlck1haW4nOyAvLyBtb2RpZmllciB3aXRoIHRoZSBwdXJwb3NlIHRvIHdyaXRlIHRvIHRoZSBET00gKG9yIHdyaXRlIGludG8gYSBmcmFtZXdvcmsgc3RhdGUpXG5cbmV4cG9ydCB2YXIgYmVmb3JlV3JpdGUgPSAnYmVmb3JlV3JpdGUnO1xuZXhwb3J0IHZhciB3cml0ZSA9ICd3cml0ZSc7XG5leHBvcnQgdmFyIGFmdGVyV3JpdGUgPSAnYWZ0ZXJXcml0ZSc7XG5leHBvcnQgdmFyIG1vZGlmaWVyUGhhc2VzID0gW2JlZm9yZVJlYWQsIHJlYWQsIGFmdGVyUmVhZCwgYmVmb3JlTWFpbiwgbWFpbiwgYWZ0ZXJNYWluLCBiZWZvcmVXcml0ZSwgd3JpdGUsIGFmdGVyV3JpdGVdOyIsImltcG9ydCB7IG1vZGlmaWVyUGhhc2VzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIHNvdXJjZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDk4NzUyNTVcblxuZnVuY3Rpb24gb3JkZXIobW9kaWZpZXJzKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIG1hcC5zZXQobW9kaWZpZXIubmFtZSwgbW9kaWZpZXIpO1xuICB9KTsgLy8gT24gdmlzaXRpbmcgb2JqZWN0LCBjaGVjayBmb3IgaXRzIGRlcGVuZGVuY2llcyBhbmQgdmlzaXQgdGhlbSByZWN1cnNpdmVseVxuXG4gIGZ1bmN0aW9uIHNvcnQobW9kaWZpZXIpIHtcbiAgICB2aXNpdGVkLmFkZChtb2RpZmllci5uYW1lKTtcbiAgICB2YXIgcmVxdWlyZXMgPSBbXS5jb25jYXQobW9kaWZpZXIucmVxdWlyZXMgfHwgW10sIG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pO1xuICAgIHJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKGRlcCkge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhkZXApKSB7XG4gICAgICAgIHZhciBkZXBNb2RpZmllciA9IG1hcC5nZXQoZGVwKTtcblxuICAgICAgICBpZiAoZGVwTW9kaWZpZXIpIHtcbiAgICAgICAgICBzb3J0KGRlcE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmICghdmlzaXRlZC5oYXMobW9kaWZpZXIubmFtZSkpIHtcbiAgICAgIC8vIGNoZWNrIGZvciB2aXNpdGVkIG9iamVjdFxuICAgICAgc29ydChtb2RpZmllcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkZXJNb2RpZmllcnMobW9kaWZpZXJzKSB7XG4gIC8vIG9yZGVyIGJhc2VkIG9uIGRlcGVuZGVuY2llc1xuICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyKG1vZGlmaWVycyk7IC8vIG9yZGVyIGJhc2VkIG9uIHBoYXNlXG5cbiAgcmV0dXJuIG1vZGlmaWVyUGhhc2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwaGFzZSkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgcmV0dXJuIG1vZGlmaWVyLnBoYXNlID09PSBwaGFzZTtcbiAgICB9KSk7XG4gIH0sIFtdKTtcbn0iLCJpbXBvcnQgZ2V0Q29tcG9zaXRlUmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcG9zaXRlUmVjdC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBydW5Nb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgfSxcbiAgICAgIC8vIFN5bmMgdXBkYXRlIOKAkyBpdCB3aWxsIGFsd2F5cyBiZSBleGVjdXRlZCwgZXZlbiBpZiBub3QgbmVjZXNzYXJ5LiBUaGlzXG4gICAgICAvLyBpcyB1c2VmdWwgZm9yIGxvdyBmcmVxdWVuY3kgdXBkYXRlcyB3aGVyZSBzeW5jIGJlaGF2aW9yIHNpbXBsaWZpZXMgdGhlXG4gICAgICAvLyBsb2dpYy5cbiAgICAgIC8vIEZvciBoaWdoIGZyZXF1ZW5jeSB1cGRhdGVzIChlLmcuIGByZXNpemVgIGFuZCBgc2Nyb2xsYCBldmVudHMpLCBhbHdheXNcbiAgICAgIC8vIHByZWZlciB0aGUgYXN5bmMgUG9wcGVyI3VwZGF0ZSBtZXRob2RcbiAgICAgIGZvcmNlVXBkYXRlOiBmdW5jdGlvbiBmb3JjZVVwZGF0ZSgpIHtcbiAgICAgICAgaWYgKGlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9zdGF0ZSRlbGVtZW50cyA9IHN0YXRlLmVsZW1lbnRzLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gX3N0YXRlJGVsZW1lbnRzLnJlZmVyZW5jZSxcbiAgICAgICAgICAgIHBvcHBlciA9IF9zdGF0ZSRlbGVtZW50cy5wb3BwZXI7IC8vIERvbid0IHByb2NlZWQgaWYgYHJlZmVyZW5jZWAgb3IgYHBvcHBlcmAgYXJlIG5vdCB2YWxpZCBlbGVtZW50c1xuICAgICAgICAvLyBhbnltb3JlXG5cbiAgICAgICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5zZXRPcHRpb25zKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBpZiAoIWlzRGVzdHJveWVkICYmIG9wdGlvbnMub25GaXJzdFVwZGF0ZSkge1xuICAgICAgICBvcHRpb25zLm9uRmlyc3RVcGRhdGUoc3RhdGUpO1xuICAgICAgfVxuICAgIH0pOyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byBleGVjdXRlIGFyYml0cmFyeSBjb2RlIGJlZm9yZSB0aGUgZmlyc3RcbiAgICAvLyB1cGRhdGUgY3ljbGUgcnVucy4gVGhleSB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSB1cGRhdGVcbiAgICAvLyBjeWNsZS4gVGhpcyBpcyB1c2VmdWwgd2hlbiBhIG1vZGlmaWVyIGFkZHMgc29tZSBwZXJzaXN0ZW50IGRhdGEgdGhhdFxuICAgIC8vIG90aGVyIG1vZGlmaWVycyBuZWVkIHRvIHVzZSwgYnV0IHRoZSBtb2RpZmllciBpcyBydW4gYWZ0ZXIgdGhlIGRlcGVuZGVudFxuICAgIC8vIG9uZS5cblxuICAgIGZ1bmN0aW9uIHJ1bk1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgICAgICAgIF9yZWYkb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRvcHRpb25zLFxuICAgICAgICAgICAgZWZmZWN0ID0gX3JlZi5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWJvdW5jZShmbikge1xuICB2YXIgcGVuZGluZztcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHBlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwZW5kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHJlc29sdmUoZm4oKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBlbmRpbmc7XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYsIHdpbikge1xuICB2YXIgeCA9IF9yZWYueCxcbiAgICAgIHkgPSBfcmVmLnk7XG4gIHZhciBkcHIgPSB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKHggKiBkcHIpIC8gZHByIHx8IDAsXG4gICAgeTogcm91bmQoeSAqIGRwcikgLyBkcHIgfHwgMFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9TdHlsZXMoX3JlZjIpIHtcbiAgdmFyIF9PYmplY3QkYXNzaWduMjtcblxuICB2YXIgcG9wcGVyID0gX3JlZjIucG9wcGVyLFxuICAgICAgcG9wcGVyUmVjdCA9IF9yZWYyLnBvcHBlclJlY3QsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmMi5wbGFjZW1lbnQsXG4gICAgICB2YXJpYXRpb24gPSBfcmVmMi52YXJpYXRpb24sXG4gICAgICBvZmZzZXRzID0gX3JlZjIub2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uID0gX3JlZjIucG9zaXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfcmVmMi5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBhZGFwdGl2ZSA9IF9yZWYyLmFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzID0gX3JlZjIucm91bmRPZmZzZXRzLFxuICAgICAgaXNGaXhlZCA9IF9yZWYyLmlzRml4ZWQ7XG4gIHZhciBfb2Zmc2V0cyR4ID0gb2Zmc2V0cy54LFxuICAgICAgeCA9IF9vZmZzZXRzJHggPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR4LFxuICAgICAgX29mZnNldHMkeSA9IG9mZnNldHMueSxcbiAgICAgIHkgPSBfb2Zmc2V0cyR5ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeTtcblxuICB2YXIgX3JlZjMgPSB0eXBlb2Ygcm91bmRPZmZzZXRzID09PSAnZnVuY3Rpb24nID8gcm91bmRPZmZzZXRzKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWYzLng7XG4gIHkgPSBfcmVmMy55O1xuICB2YXIgaGFzWCA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3gnKTtcbiAgdmFyIGhhc1kgPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd5Jyk7XG4gIHZhciBzaWRlWCA9IGxlZnQ7XG4gIHZhciBzaWRlWSA9IHRvcDtcbiAgdmFyIHdpbiA9IHdpbmRvdztcblxuICBpZiAoYWRhcHRpdmUpIHtcbiAgICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KHBvcHBlcik7XG4gICAgdmFyIGhlaWdodFByb3AgPSAnY2xpZW50SGVpZ2h0JztcbiAgICB2YXIgd2lkdGhQcm9wID0gJ2NsaWVudFdpZHRoJztcblxuICAgIGlmIChvZmZzZXRQYXJlbnQgPT09IGdldFdpbmRvdyhwb3BwZXIpKSB7XG4gICAgICBvZmZzZXRQYXJlbnQgPSBnZXREb2N1bWVudEVsZW1lbnQocG9wcGVyKTtcblxuICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiAhPT0gJ3N0YXRpYycgJiYgcG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgICAgaGVpZ2h0UHJvcCA9ICdzY3JvbGxIZWlnaHQnO1xuICAgICAgICB3aWR0aFByb3AgPSAnc2Nyb2xsV2lkdGgnO1xuICAgICAgfVxuICAgIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FzdF06IGZvcmNlIHR5cGUgcmVmaW5lbWVudCwgd2UgY29tcGFyZSBvZmZzZXRQYXJlbnQgd2l0aCB3aW5kb3cgYWJvdmUsIGJ1dCBGbG93IGRvZXNuJ3QgZGV0ZWN0IGl0XG5cblxuICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudDtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09IHRvcCB8fCAocGxhY2VtZW50ID09PSBsZWZ0IHx8IHBsYWNlbWVudCA9PT0gcmlnaHQpICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWSA9IGJvdHRvbTtcbiAgICAgIHZhciBvZmZzZXRZID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbaGVpZ2h0UHJvcF07XG4gICAgICB5IC09IG9mZnNldFkgLSBwb3BwZXJSZWN0LmhlaWdodDtcbiAgICAgIHkgKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09IGxlZnQgfHwgKHBsYWNlbWVudCA9PT0gdG9wIHx8IHBsYWNlbWVudCA9PT0gYm90dG9tKSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVggPSByaWdodDtcbiAgICAgIHZhciBvZmZzZXRYID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQud2lkdGggOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFt3aWR0aFByb3BdO1xuICAgICAgeCAtPSBvZmZzZXRYIC0gcG9wcGVyUmVjdC53aWR0aDtcbiAgICAgIHggKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgfSwgYWRhcHRpdmUgJiYgdW5zZXRTaWRlcyk7XG5cbiAgdmFyIF9yZWY0ID0gcm91bmRPZmZzZXRzID09PSB0cnVlID8gcm91bmRPZmZzZXRzQnlEUFIoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9LCBnZXRXaW5kb3cocG9wcGVyKSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWY0Lng7XG4gIHkgPSBfcmVmNC55O1xuXG4gIGlmIChncHVBY2NlbGVyYXRpb24pIHtcbiAgICB2YXIgX09iamVjdCRhc3NpZ247XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24gPSB7fSwgX09iamVjdCRhc3NpZ25bc2lkZVldID0gaGFzWSA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbltzaWRlWF0gPSBoYXNYID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduLnRyYW5zZm9ybSA9ICh3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSA8PSAxID8gXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIiA6IFwidHJhbnNsYXRlM2QoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweCwgMClcIiwgX09iamVjdCRhc3NpZ24pKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbjIgPSB7fSwgX09iamVjdCRhc3NpZ24yW3NpZGVZXSA9IGhhc1kgPyB5ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMltzaWRlWF0gPSBoYXNYID8geCArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjIudHJhbnNmb3JtID0gJycsIF9PYmplY3QkYXNzaWduMikpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3R5bGVzKF9yZWY1KSB7XG4gIHZhciBzdGF0ZSA9IF9yZWY1LnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWY1Lm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPSBvcHRpb25zLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGdwdUFjY2VsZXJhdCxcbiAgICAgIF9vcHRpb25zJGFkYXB0aXZlID0gb3B0aW9ucy5hZGFwdGl2ZSxcbiAgICAgIGFkYXB0aXZlID0gX29wdGlvbnMkYWRhcHRpdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhZGFwdGl2ZSxcbiAgICAgIF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9IG9wdGlvbnMucm91bmRPZmZzZXRzLFxuICAgICAgcm91bmRPZmZzZXRzID0gX29wdGlvbnMkcm91bmRPZmZzZXRzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcm91bmRPZmZzZXRzO1xuICB2YXIgY29tbW9uU3R5bGVzID0ge1xuICAgIHBsYWNlbWVudDogZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHZhcmlhdGlvbjogZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCksXG4gICAgcG9wcGVyOiBzdGF0ZS5lbGVtZW50cy5wb3BwZXIsXG4gICAgcG9wcGVyUmVjdDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIGdwdUFjY2VsZXJhdGlvbjogZ3B1QWNjZWxlcmF0aW9uLFxuICAgIGlzRml4ZWQ6IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCdcbiAgfTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLnBvcHBlciwgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsXG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGFkYXB0aXZlOiBhZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93ICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMuYXJyb3cgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMuYXJyb3csIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgYWRhcHRpdmU6IGZhbHNlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1wbGFjZW1lbnQnOiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdjb21wdXRlU3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdiZWZvcmVXcml0ZScsXG4gIGZuOiBjb21wdXRlU3R5bGVzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsImltcG9ydCB7IHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0Vmlld3BvcnRSZWN0IGZyb20gXCIuL2dldFZpZXdwb3J0UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50UmVjdCBmcm9tIFwiLi9nZXREb2N1bWVudFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuLi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGZhbHNlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkge1xuICByZXR1cm4gY2xpcHBpbmdQYXJlbnQgPT09IHZpZXdwb3J0ID8gcmVjdFRvQ2xpZW50UmVjdChnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSkge1xuICB2YXIgbWFpbkNsaXBwaW5nUGFyZW50cyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdQYXJlbnRzJyA/IGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBbXS5jb25jYXQobWFpbkNsaXBwaW5nUGFyZW50cywgW3Jvb3RCb3VuZGFyeV0pO1xuICB2YXIgZmlyc3RDbGlwcGluZ1BhcmVudCA9IGNsaXBwaW5nUGFyZW50c1swXTtcbiAgdmFyIGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nUGFyZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjY1JlY3QsIGNsaXBwaW5nUGFyZW50KSB7XG4gICAgdmFyIHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwO1xuXG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIHZhciBsYXlvdXRWaWV3cG9ydCA9IGlzTGF5b3V0Vmlld3BvcnQoKTtcblxuICAgIGlmIChsYXlvdXRWaWV3cG9ydCB8fCAhbGF5b3V0Vmlld3BvcnQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VQYWRkaW5nT2JqZWN0KHBhZGRpbmdPYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGdldEZyZXNoU2lkZU9iamVjdCgpLCBwYWRkaW5nT2JqZWN0KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJpbXBvcnQgZ2V0Q2xpcHBpbmdSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4vY29tcHV0ZU9mZnNldHMuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IGNsaXBwaW5nUGFyZW50cywgcmVmZXJlbmNlLCBwb3BwZXIsIGJvdHRvbSwgdG9wLCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4vbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuL2V4cGFuZFRvSGFzaE1hcC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgX29wdGlvbnMkcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMkcGxhY2VtZW50ID09PSB2b2lkIDAgPyBzdGF0ZS5wbGFjZW1lbnQgOiBfb3B0aW9ucyRwbGFjZW1lbnQsXG4gICAgICBfb3B0aW9ucyRzdHJhdGVneSA9IF9vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgc3RyYXRlZ3kgPSBfb3B0aW9ucyRzdHJhdGVneSA9PT0gdm9pZCAwID8gc3RhdGUuc3RyYXRlZ3kgOiBfb3B0aW9ucyRzdHJhdGVneSxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSk7XG4gIHZhciByZWZlcmVuY2VDbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHN0YXRlLmVsZW1lbnRzLnJlZmVyZW5jZSk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlQ2xpZW50UmVjdCxcbiAgICBlbGVtZW50OiBwb3BwZXJSZWN0LFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pO1xuICB2YXIgcG9wcGVyQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyUmVjdCwgcG9wcGVyT2Zmc2V0cykpO1xuICB2YXIgZWxlbWVudENsaWVudFJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcG9wcGVyQ2xpZW50UmVjdCA6IHJlZmVyZW5jZUNsaWVudFJlY3Q7IC8vIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIHJlY3RcbiAgLy8gMCBvciBuZWdhdGl2ZSA9IHdpdGhpbiB0aGUgY2xpcHBpbmcgcmVjdFxuXG4gIHZhciBvdmVyZmxvd09mZnNldHMgPSB7XG4gICAgdG9wOiBjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3AsXG4gICAgYm90dG9tOiBlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20sXG4gICAgbGVmdDogY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0LFxuICAgIHJpZ2h0OiBlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHRcbiAgfTtcbiAgdmFyIG9mZnNldERhdGEgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldDsgLy8gT2Zmc2V0cyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBwb3BwZXIgZWxlbWVudFxuXG4gIGlmIChlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyICYmIG9mZnNldERhdGEpIHtcbiAgICB2YXIgb2Zmc2V0ID0gb2Zmc2V0RGF0YVtwbGFjZW1lbnRdO1xuICAgIE9iamVjdC5rZXlzKG92ZXJmbG93T2Zmc2V0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgbXVsdGlwbHkgPSBbcmlnaHQsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAxIDogLTE7XG4gICAgICB2YXIgYXhpcyA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAneScgOiAneCc7XG4gICAgICBvdmVyZmxvd09mZnNldHNba2V5XSArPSBvZmZzZXRbYXhpc10gKiBtdWx0aXBseTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBvdmVyZmxvd09mZnNldHM7XG59IiwiaW1wb3J0IGdldE9wcG9zaXRlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBjb21wdXRlQXV0b1BsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IGJvdHRvbSwgdG9wLCBzdGFydCwgcmlnaHQsIGxlZnQsIGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmZ1bmN0aW9uIGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBpZiAoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cblxuZnVuY3Rpb24gZmxpcChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyA9IG9wdGlvbnMuZmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZmxpcFZhcmlhdGlvID0gb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMkZmxpcFZhcmlhdGlvID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZmxpcFZhcmlhdGlvLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHM7XG4gIHZhciBwcmVmZXJyZWRQbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSBiYXNlUGxhY2VtZW50ID09PSBwcmVmZXJyZWRQbGFjZW1lbnQ7XG4gIHZhciBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcFZhcmlhdGlvbnMgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwcmVmZXJyZWRQbGFjZW1lbnQpKTtcbiAgdmFyIHBsYWNlbWVudHMgPSBbcHJlZmVycmVkUGxhY2VtZW50XS5jb25jYXQoZmFsbGJhY2tQbGFjZW1lbnRzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvID8gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnM6IGZsaXBWYXJpYXRpb25zLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzOiBhbGxvd2VkQXV0b1BsYWNlbWVudHNcbiAgICB9KSA6IHBsYWNlbWVudCk7XG4gIH0sIFtdKTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgY2hlY2tzTWFwID0gbmV3IE1hcCgpO1xuICB2YXIgbWFrZUZhbGxiYWNrQ2hlY2tzID0gdHJ1ZTtcbiAgdmFyIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHNbMF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGFjZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBsYWNlbWVudCA9IHBsYWNlbWVudHNbaV07XG5cbiAgICB2YXIgX2Jhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG5cbiAgICB2YXIgaXNTdGFydFZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSBzdGFydDtcbiAgICB2YXIgaXNWZXJ0aWNhbCA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihfYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KTtcbiAgICB2YXIgbWFpblZhcmlhdGlvblNpZGUgPSBpc1ZlcnRpY2FsID8gaXNTdGFydFZhcmlhdGlvbiA/IHJpZ2h0IDogbGVmdCA6IGlzU3RhcnRWYXJpYXRpb24gPyBib3R0b20gOiB0b3A7XG5cbiAgICBpZiAocmVmZXJlbmNlUmVjdFtsZW5dID4gcG9wcGVyUmVjdFtsZW5dKSB7XG4gICAgICBtYWluVmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB9XG5cbiAgICB2YXIgYWx0VmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB2YXIgY2hlY2tzID0gW107XG5cbiAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbX2Jhc2VQbGFjZW1lbnRdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W21haW5WYXJpYXRpb25TaWRlXSA8PSAwLCBvdmVyZmxvd1thbHRWYXJpYXRpb25TaWRlXSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tzLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgcmV0dXJuIGNoZWNrO1xuICAgIH0pKSB7XG4gICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICBtYWtlRmFsbGJhY2tDaGVja3MgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNoZWNrc01hcC5zZXQocGxhY2VtZW50LCBjaGVja3MpO1xuICB9XG5cbiAgaWYgKG1ha2VGYWxsYmFja0NoZWNrcykge1xuICAgIC8vIGAyYCBtYXkgYmUgZGVzaXJlZCBpbiBzb21lIGNhc2VzIOKAkyByZXNlYXJjaCBsYXRlclxuICAgIHZhciBudW1iZXJPZkNoZWNrcyA9IGZsaXBWYXJpYXRpb25zID8gMyA6IDE7XG5cbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChfaSkge1xuICAgICAgdmFyIGZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzLmZpbmQoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgICAgICB2YXIgY2hlY2tzID0gY2hlY2tzTWFwLmdldChwbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmIChjaGVja3MpIHtcbiAgICAgICAgICByZXR1cm4gY2hlY2tzLnNsaWNlKDAsIF9pKS5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgICAgICAgIHJldHVybiBjaGVjaztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IGZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pID0gbnVtYmVyT2ZDaGVja3M7IF9pID4gMDsgX2ktLSkge1xuICAgICAgdmFyIF9yZXQgPSBfbG9vcChfaSk7XG5cbiAgICAgIGlmIChfcmV0ID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS5wbGFjZW1lbnQgIT09IGZpcnN0Rml0dGluZ1BsYWNlbWVudCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXAgPSB0cnVlO1xuICAgIHN0YXRlLnBsYWNlbWVudCA9IGZpcnN0Rml0dGluZ1BsYWNlbWVudDtcbiAgICBzdGF0ZS5yZXNldCA9IHRydWU7XG4gIH1cbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2ZsaXAnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogZmxpcCxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXSxcbiAgZGF0YToge1xuICAgIF9za2lwOiBmYWxzZVxuICB9XG59OyIsImltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyB2YXJpYXRpb25QbGFjZW1lbnRzLCBiYXNlUGxhY2VtZW50cywgcGxhY2VtZW50cyBhcyBhbGxQbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9IF9vcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9PT0gdm9pZCAwID8gYWxsUGxhY2VtZW50cyA6IF9vcHRpb25zJGFsbG93ZWRBdXRvUDtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpO1xuICB2YXIgcGxhY2VtZW50cyA9IHZhcmlhdGlvbiA/IGZsaXBWYXJpYXRpb25zID8gdmFyaWF0aW9uUGxhY2VtZW50cyA6IHZhcmlhdGlvblBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHZhcmlhdGlvbjtcbiAgfSkgOiBiYXNlUGxhY2VtZW50cztcbiAgdmFyIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhbGxvd2VkQXV0b1BsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpID49IDA7XG4gIH0pO1xuXG4gIGlmIChhbGxvd2VkUGxhY2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHM7XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV06IEZsb3cgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHR3byBhcnJheSB1bmlvbnMuLi5cblxuXG4gIHZhciBvdmVyZmxvd3MgPSBhbGxvd2VkUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KVtnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCldO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG92ZXJmbG93cykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBvdmVyZmxvd3NbYV0gLSBvdmVyZmxvd3NbYl07XG4gIH0pO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHN0YXJ0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QWx0QXhpcyBmcm9tIFwiLi4vdXRpbHMvZ2V0QWx0QXhpcy5qc1wiO1xuaW1wb3J0IHsgd2l0aGluLCB3aXRoaW5NYXhDbGFtcCB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuLi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmltcG9ydCB7IG1pbiBhcyBtYXRoTWluLCBtYXggYXMgbWF0aE1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIF9vcHRpb25zJHRldGhlciA9IG9wdGlvbnMudGV0aGVyLFxuICAgICAgdGV0aGVyID0gX29wdGlvbnMkdGV0aGVyID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkdGV0aGVyLFxuICAgICAgX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID0gb3B0aW9ucy50ZXRoZXJPZmZzZXQsXG4gICAgICB0ZXRoZXJPZmZzZXQgPSBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQ7XG4gIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5XG4gIH0pO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gIXZhcmlhdGlvbjtcbiAgdmFyIG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgYWx0QXhpcyA9IGdldEFsdEF4aXMobWFpbkF4aXMpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgdGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gdGV0aGVyT2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogdGV0aGVyT2Zmc2V0O1xuICB2YXIgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldFZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogdGV0aGVyT2Zmc2V0VmFsdWUsXG4gICAgYWx0QXhpczogdGV0aGVyT2Zmc2V0VmFsdWVcbiAgfSA6IE9iamVjdC5hc3NpZ24oe1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGFsdEF4aXM6IDBcbiAgfSwgdGV0aGVyT2Zmc2V0VmFsdWUpO1xuICB2YXIgb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXRbc3RhdGUucGxhY2VtZW50XSA6IG51bGw7XG4gIHZhciBkYXRhID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmICghcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDtcblxuICAgIHZhciBtYWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICAgIHZhciBhbHRTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgIHZhciBvZmZzZXQgPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXTtcbiAgICB2YXIgbWluID0gb2Zmc2V0ICsgb3ZlcmZsb3dbbWFpblNpZGVdO1xuICAgIHZhciBtYXggPSBvZmZzZXQgLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1pbkxlbiAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBtYXhPZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyAtcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiArIGFkZGl0aXZlICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdyAmJiBnZXRPZmZzZXRQYXJlbnQoc3RhdGUuZWxlbWVudHMuYXJyb3cpO1xuICAgIHZhciBjbGllbnRPZmZzZXQgPSBhcnJvd09mZnNldFBhcmVudCA/IG1haW5BeGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRUb3AgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudExlZnQgfHwgMCA6IDA7XG4gICAgdmFyIG9mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVttYWluQXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBvZmZzZXQgKyBtaW5PZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlIC0gY2xpZW50T2Zmc2V0O1xuICAgIHZhciB0ZXRoZXJNYXggPSBvZmZzZXQgKyBtYXhPZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlO1xuICAgIHZhciBwcmV2ZW50ZWRPZmZzZXQgPSB3aXRoaW4odGV0aGVyID8gbWF0aE1pbihtaW4sIHRldGhlck1pbikgOiBtaW4sIG9mZnNldCwgdGV0aGVyID8gbWF0aE1heChtYXgsIHRldGhlck1heCkgOiBtYXgpO1xuICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0IC0gb2Zmc2V0O1xuICB9XG5cbiAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyO1xuXG4gICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgdmFyIF9hbHRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGJvdHRvbSA6IHJpZ2h0O1xuXG4gICAgdmFyIF9vZmZzZXQgPSBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdO1xuXG4gICAgdmFyIF9sZW4gPSBhbHRBeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICB2YXIgX21pbiA9IF9vZmZzZXQgKyBvdmVyZmxvd1tfbWFpblNpZGVdO1xuXG4gICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgdmFyIGlzT3JpZ2luU2lkZSA9IFt0b3AsIGxlZnRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJDIgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW2FsdEF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkMiA6IDA7XG5cbiAgICB2YXIgX3RldGhlck1pbiA9IGlzT3JpZ2luU2lkZSA/IF9taW4gOiBfb2Zmc2V0IC0gcmVmZXJlbmNlUmVjdFtfbGVuXSAtIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzO1xuXG4gICAgdmFyIF90ZXRoZXJNYXggPSBpc09yaWdpblNpZGUgPyBfb2Zmc2V0ICsgcmVmZXJlbmNlUmVjdFtfbGVuXSArIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzIDogX21heDtcblxuICAgIHZhciBfcHJldmVudGVkT2Zmc2V0ID0gdGV0aGVyICYmIGlzT3JpZ2luU2lkZSA/IHdpdGhpbk1heENsYW1wKF90ZXRoZXJNaW4sIF9vZmZzZXQsIF90ZXRoZXJNYXgpIDogd2l0aGluKHRldGhlciA/IF90ZXRoZXJNaW4gOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBfdGV0aGVyTWF4IDogX21heCk7XG5cbiAgICBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBwcmV2ZW50T3ZlcmZsb3csXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QWx0QXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuLi9kb20tdXRpbHMvY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgd2l0aGluIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi4vdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuLi91dGlscy9leHBhbmRUb0hhc2hNYXAuanNcIjtcbmltcG9ydCB7IGxlZnQsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdG9wLCBib3R0b20gfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdG9QYWRkaW5nT2JqZWN0ID0gZnVuY3Rpb24gdG9QYWRkaW5nT2JqZWN0KHBhZGRpbmcsIHN0YXRlKSB7XG4gIHBhZGRpbmcgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ2Z1bmN0aW9uJyA/IHBhZGRpbmcoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiBwYWRkaW5nO1xuICByZXR1cm4gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbn07XG5cbmZ1bmN0aW9uIGFycm93KF9yZWYpIHtcbiAgdmFyIF9zdGF0ZSRtb2RpZmllcnNEYXRhJDtcblxuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGlzVmVydGljYWwgPSBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgaWYgKCFhcnJvd0VsZW1lbnQgfHwgIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcGFkZGluZ09iamVjdCA9IHRvUGFkZGluZ09iamVjdChvcHRpb25zLnBhZGRpbmcsIHN0YXRlKTtcbiAgdmFyIGFycm93UmVjdCA9IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KTtcbiAgdmFyIG1pblByb3AgPSBheGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICB2YXIgbWF4UHJvcCA9IGF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICB2YXIgZW5kRGlmZiA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtsZW5dICsgc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnBvcHBlcltsZW5dO1xuICB2YXIgc3RhcnREaWZmID0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KGFycm93RWxlbWVudCk7XG4gIHZhciBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBheGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFdpZHRoIHx8IDAgOiAwO1xuICB2YXIgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7IC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgcG9wcGVyIGlmIHRoZSBjZW50ZXIgcG9pbnQgaXNcbiAgLy8gb3V0c2lkZSBvZiB0aGUgcG9wcGVyIGJvdW5kc1xuXG4gIHZhciBtaW4gPSBwYWRkaW5nT2JqZWN0W21pblByb3BdO1xuICB2YXIgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93UmVjdFtsZW5dIC0gcGFkZGluZ09iamVjdFttYXhQcm9wXTtcbiAgdmFyIGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dSZWN0W2xlbl0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gIHZhciBvZmZzZXQgPSB3aXRoaW4obWluLCBjZW50ZXIsIG1heCk7IC8vIFByZXZlbnRzIGJyZWFraW5nIHN5bnRheCBoaWdobGlnaHRpbmcuLi5cblxuICB2YXIgYXhpc1Byb3AgPSBheGlzO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gKF9zdGF0ZSRtb2RpZmllcnNEYXRhJCA9IHt9LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSRbYXhpc1Byb3BdID0gb2Zmc2V0LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQuY2VudGVyT2Zmc2V0ID0gb2Zmc2V0IC0gY2VudGVyLCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQpO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQsXG4gICAgICBhcnJvd0VsZW1lbnQgPSBfb3B0aW9ucyRlbGVtZW50ID09PSB2b2lkIDAgPyAnW2RhdGEtcG9wcGVyLWFycm93XScgOiBfb3B0aW9ucyRlbGVtZW50O1xuXG4gIGlmIChhcnJvd0VsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfSAvLyBDU1Mgc2VsZWN0b3JcblxuXG4gIGlmICh0eXBlb2YgYXJyb3dFbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICBpZiAoIWFycm93RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29udGFpbnMoc3RhdGUuZWxlbWVudHMucG9wcGVyLCBhcnJvd0VsZW1lbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJpbXBvcnQgeyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QsIHByZXZlbnRlZE9mZnNldHMpIHtcbiAgaWYgKHByZXZlbnRlZE9mZnNldHMgPT09IHZvaWQgMCkge1xuICAgIHByZXZlbnRlZE9mZnNldHMgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQgLSBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCArIHByZXZlbnRlZE9mZnNldHMueCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0ICsgcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoIC0gcHJldmVudGVkT2Zmc2V0cy54XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gW3RvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdF0uc29tZShmdW5jdGlvbiAoc2lkZSkge1xuICAgIHJldHVybiBvdmVyZmxvd1tzaWRlXSA+PSAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGlkZShfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBwcmV2ZW50ZWRPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3c7XG4gIHZhciByZWZlcmVuY2VPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gIH0pO1xuICB2YXIgcG9wcGVyQWx0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gIH0pO1xuICB2YXIgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocmVmZXJlbmNlT3ZlcmZsb3csIHJlZmVyZW5jZVJlY3QpO1xuICB2YXIgcG9wcGVyRXNjYXBlT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHBvcHBlckFsdE92ZXJmbG93LCBwb3BwZXJSZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKTtcbiAgdmFyIGlzUmVmZXJlbmNlSGlkZGVuID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyk7XG4gIHZhciBoYXNQb3BwZXJFc2NhcGVkID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHBvcHBlckVzY2FwZU9mZnNldHMpO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0ge1xuICAgIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0czogcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzLFxuICAgIHBvcHBlckVzY2FwZU9mZnNldHM6IHBvcHBlckVzY2FwZU9mZnNldHMsXG4gICAgaXNSZWZlcmVuY2VIaWRkZW46IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgIGhhc1BvcHBlckVzY2FwZWQ6IGhhc1BvcHBlckVzY2FwZWRcbiAgfTtcbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1yZWZlcmVuY2UtaGlkZGVuJzogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgJ2RhdGEtcG9wcGVyLWVzY2FwZWQnOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaGlkZScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J10sXG4gIGZuOiBoaWRlXG59OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiaW1wb3J0IGNvbXB1dGVPZmZzZXRzIGZyb20gXCIuLi91dGlscy9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuXG5mdW5jdGlvbiBwb3BwZXJPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIC8vIE9mZnNldHMgYXJlIHRoZSBhY3R1YWwgcG9zaXRpb24gdGhlIHBvcHBlciBuZWVkcyB0byBoYXZlIHRvIGJlXG4gIC8vIHByb3Blcmx5IHBvc2l0aW9uZWQgbmVhciBpdHMgcmVmZXJlbmNlIGVsZW1lbnRcbiAgLy8gVGhpcyBpcyB0aGUgbW9zdCBiYXNpYyBwbGFjZW1lbnQsIGFuZCB3aWxsIGJlIGFkanVzdGVkIGJ5XG4gIC8vIHRoZSBtb2RpZmllcnMgaW4gdGhlIG5leHQgc3RlcFxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogc3RhdGUucmVjdHMucmVmZXJlbmNlLFxuICAgIGVsZW1lbnQ6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3BvcHBlck9mZnNldHMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3JlYWQnLFxuICBmbjogcG9wcGVyT2Zmc2V0cyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBUYWtlcyBhbiBhcmd1bWVudCBhbmQgaWYgaXQncyBhbiBhcnJheSwgcmV0dXJucyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgYXJyYXksXG4gKiBvdGhlcndpc2UgcmV0dXJucyB0aGUgYXJndW1lbnQuIFVzZWQgZm9yIFByZWFjdCBjb21wYXRpYmlsaXR5LlxuICovXG5leHBvcnQgdmFyIHVud3JhcEFycmF5ID0gZnVuY3Rpb24gdW53cmFwQXJyYXkoYXJnKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyZykgPyBhcmdbMF0gOiBhcmc7XG59O1xuLyoqXG4gKiBUYWtlcyBhIG1heWJlLXVuZGVmaW5lZCBmdW5jdGlvbiBhbmQgYXJiaXRyYXJ5IGFyZ3MgYW5kIGludm9rZXMgdGhlIGZ1bmN0aW9uXG4gKiBvbmx5IGlmIGl0IGlzIGRlZmluZWQuXG4gKi9cblxuZXhwb3J0IHZhciBzYWZlSW52b2tlID0gZnVuY3Rpb24gc2FmZUludm9rZShmbikge1xuICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZuLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gIH1cbn07XG4vKipcbiAqIFNldHMgYSByZWYgdXNpbmcgZWl0aGVyIGEgcmVmIGNhbGxiYWNrIG9yIGEgcmVmIG9iamVjdFxuICovXG5cbmV4cG9ydCB2YXIgc2V0UmVmID0gZnVuY3Rpb24gc2V0UmVmKHJlZiwgbm9kZSkge1xuICAvLyBpZiBpdHMgYSBmdW5jdGlvbiBjYWxsIGl0XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHNhZmVJbnZva2UocmVmLCBub2RlKTtcbiAgfSAvLyBvdGhlcndpc2Ugd2Ugc2hvdWxkIHRyZWF0IGl0IGFzIGEgcmVmIG9iamVjdFxuICBlbHNlIGlmIChyZWYgIT0gbnVsbCkge1xuICAgICAgcmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH1cbn07XG4vKipcbiAqIFNpbXBsZSBwb255ZmlsbCBmb3IgT2JqZWN0LmZyb21FbnRyaWVzXG4gKi9cblxuZXhwb3J0IHZhciBmcm9tRW50cmllcyA9IGZ1bmN0aW9uIGZyb21FbnRyaWVzKGVudHJpZXMpIHtcbiAgcmV0dXJuIGVudHJpZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIF9yZWYpIHtcbiAgICB2YXIga2V5ID0gX3JlZlswXSxcbiAgICAgICAgdmFsdWUgPSBfcmVmWzFdO1xuICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufTtcbi8qKlxuICogU21hbGwgd3JhcHBlciBhcm91bmQgYHVzZUxheW91dEVmZmVjdGAgdG8gZ2V0IHJpZCBvZiB0aGUgd2FybmluZyBvbiBTU1IgZW52c1xuICovXG5cbmV4cG9ydCB2YXIgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6IFJlYWN0LnVzZUVmZmVjdDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGRlZmF1bHRDcmVhdGVQb3BwZXIgfSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdyZWFjdC1mYXN0LWNvbXBhcmUnO1xuaW1wb3J0IHsgZnJvbUVudHJpZXMsIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tICcuL3V0aWxzJztcbnZhciBFTVBUWV9NT0RJRklFUlMgPSBbXTtcbmV4cG9ydCB2YXIgdXNlUG9wcGVyID0gZnVuY3Rpb24gdXNlUG9wcGVyKHJlZmVyZW5jZUVsZW1lbnQsIHBvcHBlckVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBwcmV2T3B0aW9ucyA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgdmFyIG9wdGlvbnNXaXRoRGVmYXVsdHMgPSB7XG4gICAgb25GaXJzdFVwZGF0ZTogb3B0aW9ucy5vbkZpcnN0VXBkYXRlLFxuICAgIHBsYWNlbWVudDogb3B0aW9ucy5wbGFjZW1lbnQgfHwgJ2JvdHRvbScsXG4gICAgc3RyYXRlZ3k6IG9wdGlvbnMuc3RyYXRlZ3kgfHwgJ2Fic29sdXRlJyxcbiAgICBtb2RpZmllcnM6IG9wdGlvbnMubW9kaWZpZXJzIHx8IEVNUFRZX01PRElGSUVSU1xuICB9O1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUgPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgc3R5bGVzOiB7XG4gICAgICBwb3BwZXI6IHtcbiAgICAgICAgcG9zaXRpb246IG9wdGlvbnNXaXRoRGVmYXVsdHMuc3RyYXRlZ3ksXG4gICAgICAgIGxlZnQ6ICcwJyxcbiAgICAgICAgdG9wOiAnMCdcbiAgICAgIH0sXG4gICAgICBhcnJvdzoge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgICAgfVxuICAgIH0sXG4gICAgYXR0cmlidXRlczoge31cbiAgfSksXG4gICAgICBzdGF0ZSA9IF9SZWFjdCR1c2VTdGF0ZVswXSxcbiAgICAgIHNldFN0YXRlID0gX1JlYWN0JHVzZVN0YXRlWzFdO1xuXG4gIHZhciB1cGRhdGVTdGF0ZU1vZGlmaWVyID0gUmVhY3QudXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6ICd1cGRhdGVTdGF0ZScsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgcGhhc2U6ICd3cml0ZScsXG4gICAgICBmbjogZnVuY3Rpb24gZm4oX3JlZikge1xuICAgICAgICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICAgICAgICB2YXIgZWxlbWVudHMgPSBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cyk7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3R5bGVzOiBmcm9tRW50cmllcyhlbGVtZW50cy5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFtlbGVtZW50LCBzdGF0ZS5zdHlsZXNbZWxlbWVudF0gfHwge31dO1xuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYXR0cmlidXRlczogZnJvbUVudHJpZXMoZWxlbWVudHMubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiBbZWxlbWVudCwgc3RhdGUuYXR0cmlidXRlc1tlbGVtZW50XV07XG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG4gICAgfTtcbiAgfSwgW10pO1xuICB2YXIgcG9wcGVyT3B0aW9ucyA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBuZXdPcHRpb25zID0ge1xuICAgICAgb25GaXJzdFVwZGF0ZTogb3B0aW9uc1dpdGhEZWZhdWx0cy5vbkZpcnN0VXBkYXRlLFxuICAgICAgcGxhY2VtZW50OiBvcHRpb25zV2l0aERlZmF1bHRzLnBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5OiBvcHRpb25zV2l0aERlZmF1bHRzLnN0cmF0ZWd5LFxuICAgICAgbW9kaWZpZXJzOiBbXS5jb25jYXQob3B0aW9uc1dpdGhEZWZhdWx0cy5tb2RpZmllcnMsIFt1cGRhdGVTdGF0ZU1vZGlmaWVyLCB7XG4gICAgICAgIG5hbWU6ICdhcHBseVN0eWxlcycsXG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgICB9XSlcbiAgICB9O1xuXG4gICAgaWYgKGlzRXF1YWwocHJldk9wdGlvbnMuY3VycmVudCwgbmV3T3B0aW9ucykpIHtcbiAgICAgIHJldHVybiBwcmV2T3B0aW9ucy5jdXJyZW50IHx8IG5ld09wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXZPcHRpb25zLmN1cnJlbnQgPSBuZXdPcHRpb25zO1xuICAgICAgcmV0dXJuIG5ld09wdGlvbnM7XG4gICAgfVxuICB9LCBbb3B0aW9uc1dpdGhEZWZhdWx0cy5vbkZpcnN0VXBkYXRlLCBvcHRpb25zV2l0aERlZmF1bHRzLnBsYWNlbWVudCwgb3B0aW9uc1dpdGhEZWZhdWx0cy5zdHJhdGVneSwgb3B0aW9uc1dpdGhEZWZhdWx0cy5tb2RpZmllcnMsIHVwZGF0ZVN0YXRlTW9kaWZpZXJdKTtcbiAgdmFyIHBvcHBlckluc3RhbmNlUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LnNldE9wdGlvbnMocG9wcGVyT3B0aW9ucyk7XG4gICAgfVxuICB9LCBbcG9wcGVyT3B0aW9uc10pO1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocmVmZXJlbmNlRWxlbWVudCA9PSBudWxsIHx8IHBvcHBlckVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBjcmVhdGVQb3BwZXIgPSBvcHRpb25zLmNyZWF0ZVBvcHBlciB8fCBkZWZhdWx0Q3JlYXRlUG9wcGVyO1xuICAgIHZhciBwb3BwZXJJbnN0YW5jZSA9IGNyZWF0ZVBvcHBlcihyZWZlcmVuY2VFbGVtZW50LCBwb3BwZXJFbGVtZW50LCBwb3BwZXJPcHRpb25zKTtcbiAgICBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50ID0gcG9wcGVySW5zdGFuY2U7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBvcHBlckluc3RhbmNlLmRlc3Ryb3koKTtcbiAgICAgIHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH07XG4gIH0sIFtyZWZlcmVuY2VFbGVtZW50LCBwb3BwZXJFbGVtZW50LCBvcHRpb25zLmNyZWF0ZVBvcHBlcl0pO1xuICByZXR1cm4ge1xuICAgIHN0YXRlOiBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50ID8gcG9wcGVySW5zdGFuY2VSZWYuY3VycmVudC5zdGF0ZSA6IG51bGwsXG4gICAgc3R5bGVzOiBzdGF0ZS5zdHlsZXMsXG4gICAgYXR0cmlidXRlczogc3RhdGUuYXR0cmlidXRlcyxcbiAgICB1cGRhdGU6IHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgPyBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LnVwZGF0ZSA6IG51bGwsXG4gICAgZm9yY2VVcGRhdGU6IHBvcHBlckluc3RhbmNlUmVmLmN1cnJlbnQgPyBwb3BwZXJJbnN0YW5jZVJlZi5jdXJyZW50LmZvcmNlVXBkYXRlIDogbnVsbFxuICB9O1xufTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUG9wcGVyIGFzIHVzZVJlYWN0UG9wcGVyIH0gZnJvbSAncmVhY3QtcG9wcGVyJztcbmNvbnN0IERFRkFVTFRfUExBQ0VNRU5UID0gW1xuICAgICdib3R0b20tc3RhcnQnLFxuICAgICdib3R0b20nLFxuICAgICdib3R0b20tZW5kJyxcbiAgICAndG9wLXN0YXJ0JyxcbiAgICAndG9wJyxcbiAgICAndG9wLWVuZCcsXG4gICAgJ3JpZ2h0LXN0YXJ0JyxcbiAgICAncmlnaHQnLFxuICAgICdyaWdodC1lbmQnLFxuICAgICdsZWZ0LXN0YXJ0JyxcbiAgICAnbGVmdCcsXG4gICAgJ2xlZnQtZW5kJyxcbl07XG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wcGVyKHsgYW5jaG9yUmVmLCBwbGFjZW1lbnQgPSBERUZBVUxUX1BMQUNFTUVOVCwgb2Zmc2V0LCBtb2RpZmllcnMgPSBbXSwgc3RyYXRlZ3ksIGFsdEJvdW5kYXJ5LCB9KSB7XG4gICAgY29uc3QgW3BvcHBlckVsZW1lbnQsIHNldFBvcHBlckVsZW1lbnRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2Fycm93RWxlbWVudCwgc2V0QXJyb3dFbGVtZW50XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IHBsYWNlbWVudHMgPSBBcnJheS5pc0FycmF5KHBsYWNlbWVudCkgPyBwbGFjZW1lbnQgOiBbcGxhY2VtZW50XTtcbiAgICBjb25zdCB7IGF0dHJpYnV0ZXMsIHN0eWxlcyB9ID0gdXNlUmVhY3RQb3BwZXIoYW5jaG9yUmVmID09PSBudWxsIHx8IGFuY2hvclJlZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogYW5jaG9yUmVmLmN1cnJlbnQsIHBvcHBlckVsZW1lbnQsIHtcbiAgICAgICAgc3RyYXRlZ3ksXG4gICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAgeyBuYW1lOiAnYXJyb3cnLCBvcHRpb25zOiB7IGVsZW1lbnQ6IGFycm93RWxlbWVudCB9IH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdvZmZzZXQnLCBvcHRpb25zOiB7IG9mZnNldCwgYWx0Qm91bmRhcnkgfSB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZmxpcCcsIG9wdGlvbnM6IHsgZmFsbGJhY2tQbGFjZW1lbnRzOiBwbGFjZW1lbnRzLnNsaWNlKDEpLCBhbHRCb3VuZGFyeSB9IH0sXG4gICAgICAgICAgICAuLi5tb2RpZmllcnMsXG4gICAgICAgIF0sXG4gICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50c1swXSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgICBzdHlsZXMsXG4gICAgICAgIHNldFBvcHBlclJlZjogc2V0UG9wcGVyRWxlbWVudCxcbiAgICAgICAgc2V0QXJyb3dSZWY6IHNldEFycm93RWxlbWVudCxcbiAgICB9O1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIHNldFJlZihyZWYsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVmKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgfVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHNldFJlZiB9IGZyb20gJy4vc2V0UmVmJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VGb3JrUmVmKC4uLnJlZnMpIHtcbiAgICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChyZWZzLmV2ZXJ5KChyZWYpID0+IHJlZiA9PT0gbnVsbCB8fCByZWYgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVmIG9mIHJlZnMpIHtcbiAgICAgICAgICAgICAgICBzZXRSZWYocmVmLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCByZWZzKTtcbn1cbiIsIi8qIVxuKiB0YWJiYWJsZSA2LjEuMVxuKiBAbGljZW5zZSBNSVQsIGh0dHBzOi8vZ2l0aHViLmNvbS9mb2N1cy10cmFwL3RhYmJhYmxlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiovXG4vLyBOT1RFOiBzZXBhcmF0ZSBgOm5vdCgpYCBzZWxlY3RvcnMgaGFzIGJyb2FkZXIgYnJvd3NlciBzdXBwb3J0IHRoYW4gdGhlIG5ld2VyXG4vLyAgYDpub3QoW2luZXJ0XSwgW2luZXJ0XSAqKWAgKEZlYiAyMDIzKVxuLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3Qgc3VwcG9ydCBgOm5vdChbaW5lcnRdICopYCBhcyBhIHNlbGVjdG9yOyB1c2luZyBpdCBjYXVzZXNcbi8vICB0aGUgZW50aXJlIHF1ZXJ5IHRvIGZhaWwsIHJlc3VsdGluZyBpbiBubyBub2RlcyBmb3VuZCwgd2hpY2ggd2lsbCBicmVhayBhIGxvdFxuLy8gIG9mIHRoaW5ncy4uLiBzbyB3ZSBoYXZlIHRvIHJlbHkgb24gSlMgdG8gaWRlbnRpZnkgbm9kZXMgaW5zaWRlIGFuIGluZXJ0IGNvbnRhaW5lclxudmFyIGNhbmRpZGF0ZVNlbGVjdG9ycyA9IFsnaW5wdXQ6bm90KFtpbmVydF0pJywgJ3NlbGVjdDpub3QoW2luZXJ0XSknLCAndGV4dGFyZWE6bm90KFtpbmVydF0pJywgJ2FbaHJlZl06bm90KFtpbmVydF0pJywgJ2J1dHRvbjpub3QoW2luZXJ0XSknLCAnW3RhYmluZGV4XTpub3Qoc2xvdCk6bm90KFtpbmVydF0pJywgJ2F1ZGlvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSknLCAndmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKScsICdbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSknLCAnZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pJywgJ2RldGFpbHM6bm90KFtpbmVydF0pJ107XG52YXIgY2FuZGlkYXRlU2VsZWN0b3IgPSAvKiAjX19QVVJFX18gKi9jYW5kaWRhdGVTZWxlY3RvcnMuam9pbignLCcpO1xudmFyIE5vRWxlbWVudCA9IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJztcbnZhciBtYXRjaGVzID0gTm9FbGVtZW50ID8gZnVuY3Rpb24gKCkge30gOiBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8IEVsZW1lbnQucHJvdG90eXBlLm1zTWF0Y2hlc1NlbGVjdG9yIHx8IEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtcbnZhciBnZXRSb290Tm9kZSA9ICFOb0VsZW1lbnQgJiYgRWxlbWVudC5wcm90b3R5cGUuZ2V0Um9vdE5vZGUgPyBmdW5jdGlvbiAoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkZ2V0Um9vdE5vZGU7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZWxlbWVudCRnZXRSb290Tm9kZSA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUpID09PSBudWxsIHx8IF9lbGVtZW50JGdldFJvb3ROb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZWxlbWVudCRnZXRSb290Tm9kZS5jYWxsKGVsZW1lbnQpO1xufSA6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsZW1lbnQub3duZXJEb2N1bWVudDtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG5vZGUgaXMgaW5lcnQgb3IgaW4gYW4gaW5lcnQgYW5jZXN0b3IuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IFtub2RlXVxuICogQHBhcmFtIHtib29sZWFufSBbbG9va1VwXSBJZiB0cnVlIGFuZCBgbm9kZWAgaXMgbm90IGluZXJ0LCBsb29rcyB1cCBhdCBhbmNlc3RvcnMgdG9cbiAqICBzZWUgaWYgYW55IG9mIHRoZW0gYXJlIGluZXJ0LiBJZiBmYWxzZSwgb25seSBgbm9kZWAgaXRzZWxmIGlzIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBpbmVydCBpdHNlbGYgb3IgYnkgd2F5IG9mIGJlaW5nIGluIGFuIGluZXJ0IGFuY2VzdG9yLlxuICogIEZhbHNlIGlmIGBub2RlYCBpcyBmYWxzeS5cbiAqL1xudmFyIGlzSW5lcnQgPSBmdW5jdGlvbiBpc0luZXJ0KG5vZGUsIGxvb2tVcCkge1xuICB2YXIgX25vZGUkZ2V0QXR0cmlidXRlO1xuICBpZiAobG9va1VwID09PSB2b2lkIDApIHtcbiAgICBsb29rVXAgPSB0cnVlO1xuICB9XG4gIC8vIENBUkVGVUw6IEpTRG9tIGRvZXMgbm90IHN1cHBvcnQgaW5lcnQgYXQgYWxsLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIGBIVE1MRWxlbWVudC5pbmVydGBcbiAgLy8gIEpTIEFQSSBwcm9wZXJ0eTsgd2UgaGF2ZSB0byBjaGVjayB0aGUgYXR0cmlidXRlLCB3aGljaCBjYW4gZWl0aGVyIGJlIGVtcHR5IG9yICd0cnVlJztcbiAgLy8gIGlmIGl0J3MgYG51bGxgIChub3Qgc3BlY2lmaWVkKSBvciAnZmFsc2UnLCBpdCdzIGFuIGFjdGl2ZSBlbGVtZW50XG4gIHZhciBpbmVydEF0dCA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZSA9IG5vZGUuZ2V0QXR0cmlidXRlKSA9PT0gbnVsbCB8fCBfbm9kZSRnZXRBdHRyaWJ1dGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlJGdldEF0dHJpYnV0ZS5jYWxsKG5vZGUsICdpbmVydCcpO1xuICB2YXIgaW5lcnQgPSBpbmVydEF0dCA9PT0gJycgfHwgaW5lcnRBdHQgPT09ICd0cnVlJztcblxuICAvLyBOT1RFOiB0aGlzIGNvdWxkIGFsc28gYmUgaGFuZGxlZCB3aXRoIGBub2RlLm1hdGNoZXMoJ1tpbmVydF0sIDppcyhbaW5lcnRdICopJylgXG4gIC8vICBpZiBpdCB3ZXJlbid0IGZvciBgbWF0Y2hlcygpYCBub3QgYmVpbmcgYSBmdW5jdGlvbiBvbiBzaGFkb3cgcm9vdHM7IHRoZSBmb2xsb3dpbmdcbiAgLy8gIGNvZGUgd29ya3MgZm9yIGFueSBraW5kIG9mIG5vZGVcbiAgLy8gQ0FSRUZVTDogSlNEb20gZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgY2VydGFpbiBzZWxlY3RvcnMgbGlrZSBgOm5vdChbaW5lcnRdICopYFxuICAvLyAgc28gaXQgbGlrZWx5IHdvdWxkIG5vdCBzdXBwb3J0IGA6aXMoW2luZXJ0XSAqKWAgZWl0aGVyLi4uXG4gIHZhciByZXN1bHQgPSBpbmVydCB8fCBsb29rVXAgJiYgbm9kZSAmJiBpc0luZXJ0KG5vZGUucGFyZW50Tm9kZSk7IC8vIHJlY3Vyc2l2ZVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBub2RlJ3MgY29udGVudCBpcyBlZGl0YWJsZS5cbiAqIEBwYXJhbSB7RWxlbWVudH0gW25vZGVdXG4gKiBAcmV0dXJucyBUcnVlIGlmIGl0J3MgY29udGVudC1lZGl0YWJsZTsgZmFsc2UgaWYgaXQncyBub3Qgb3IgYG5vZGVgIGlzIGZhbHN5LlxuICovXG52YXIgaXNDb250ZW50RWRpdGFibGUgPSBmdW5jdGlvbiBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRBdHRyaWJ1dGUyO1xuICAvLyBDQVJFRlVMOiBKU0RvbSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBgSFRNTEVsZW1lbnQuaXNDb250ZW50RWRpdGFibGVgIEFQSSBzbyB3ZSBoYXZlXG4gIC8vICB0byB1c2UgdGhlIGF0dHJpYnV0ZSBkaXJlY3RseSB0byBjaGVjayBmb3IgdGhpcywgd2hpY2ggY2FuIGVpdGhlciBiZSBlbXB0eSBvciAndHJ1ZSc7XG4gIC8vICBpZiBpdCdzIGBudWxsYCAobm90IHNwZWNpZmllZCkgb3IgJ2ZhbHNlJywgaXQncyBhIG5vbi1lZGl0YWJsZSBlbGVtZW50XG4gIHZhciBhdHRWYWx1ZSA9IG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9ub2RlJGdldEF0dHJpYnV0ZTIgPSBub2RlLmdldEF0dHJpYnV0ZSkgPT09IG51bGwgfHwgX25vZGUkZ2V0QXR0cmlidXRlMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX25vZGUkZ2V0QXR0cmlidXRlMi5jYWxsKG5vZGUsICdjb250ZW50ZWRpdGFibGUnKTtcbiAgcmV0dXJuIGF0dFZhbHVlID09PSAnJyB8fCBhdHRWYWx1ZSA9PT0gJ3RydWUnO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGVsIGNvbnRhaW5lciB0byBjaGVjayBpblxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlQ29udGFpbmVyIGFkZCBjb250YWluZXIgdG8gY2hlY2tcbiAqIEBwYXJhbSB7KG5vZGU6IEVsZW1lbnQpID0+IGJvb2xlYW59IGZpbHRlciBmaWx0ZXIgY2FuZGlkYXRlc1xuICogQHJldHVybnMge0VsZW1lbnRbXX1cbiAqL1xudmFyIGdldENhbmRpZGF0ZXMgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzKGVsLCBpbmNsdWRlQ29udGFpbmVyLCBmaWx0ZXIpIHtcbiAgLy8gZXZlbiBpZiBgaW5jbHVkZUNvbnRhaW5lcj1mYWxzZWAsIHdlIHN0aWxsIGhhdmUgdG8gY2hlY2sgaXQgZm9yIGluZXJ0bmVzcyBiZWNhdXNlXG4gIC8vICBpZiBpdCdzIGluZXJ0LCBhbGwgaXRzIGNoaWxkcmVuIGFyZSBpbmVydFxuICBpZiAoaXNJbmVydChlbCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIGNhbmRpZGF0ZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZWwucXVlcnlTZWxlY3RvckFsbChjYW5kaWRhdGVTZWxlY3RvcikpO1xuICBpZiAoaW5jbHVkZUNvbnRhaW5lciAmJiBtYXRjaGVzLmNhbGwoZWwsIGNhbmRpZGF0ZVNlbGVjdG9yKSkge1xuICAgIGNhbmRpZGF0ZXMudW5zaGlmdChlbCk7XG4gIH1cbiAgY2FuZGlkYXRlcyA9IGNhbmRpZGF0ZXMuZmlsdGVyKGZpbHRlcik7XG4gIHJldHVybiBjYW5kaWRhdGVzO1xufTtcblxuLyoqXG4gKiBAY2FsbGJhY2sgR2V0U2hhZG93Um9vdFxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50IHRvIGNoZWNrIGZvciBzaGFkb3cgcm9vdFxuICogQHJldHVybnMge1NoYWRvd1Jvb3R8Ym9vbGVhbn0gU2hhZG93Um9vdCBpZiBhdmFpbGFibGUgb3IgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGEgc2hhZG93Um9vdCBpcyBhdHRhY2hlZCBidXQgbm90IGF2YWlsYWJsZS5cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBTaGFkb3dSb290RmlsdGVyXG4gKiBAcGFyYW0ge0VsZW1lbnR9IHNoYWRvd0hvc3ROb2RlIHRoZSBlbGVtZW50IHdoaWNoIGNvbnRhaW5zIHNoYWRvdyBjb250ZW50XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBhIHNoYWRvdyByb290IGNvdWxkIHBvdGVudGlhbGx5IGNvbnRhaW4gdmFsaWQgY2FuZGlkYXRlcy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENhbmRpZGF0ZVNjb3BlXG4gKiBAcHJvcGVydHkge0VsZW1lbnR9IHNjb3BlUGFyZW50IGNvbnRhaW5zIGlubmVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7RWxlbWVudFtdfSBjYW5kaWRhdGVzIGxpc3Qgb2YgY2FuZGlkYXRlcyBmb3VuZCBpbiB0aGUgc2NvcGUgcGFyZW50XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBJdGVyYXRpdmVPcHRpb25zXG4gKiBAcHJvcGVydHkge0dldFNoYWRvd1Jvb3R8Ym9vbGVhbn0gZ2V0U2hhZG93Um9vdCB0cnVlIGlmIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQ7IGZhbHN5IGlmIG5vdDtcbiAqICBpZiBhIGZ1bmN0aW9uLCBpbXBsaWVzIHNoYWRvdyBzdXBwb3J0IGlzIGVuYWJsZWQgYW5kIGVpdGhlciByZXR1cm5zIHRoZSBzaGFkb3cgcm9vdCBvZiBhbiBlbGVtZW50XG4gKiAgb3IgYSBib29sZWFuIHN0YXRpbmcgaWYgaXQgaGFzIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyByb290XG4gKiBAcHJvcGVydHkgeyhub2RlOiBFbGVtZW50KSA9PiBib29sZWFufSBmaWx0ZXIgZmlsdGVyIGNhbmRpZGF0ZXNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZmxhdHRlbiBpZiB0cnVlIHRoZW4gcmVzdWx0IHdpbGwgZmxhdHRlbiBhbnkgQ2FuZGlkYXRlU2NvcGUgaW50byB0aGUgcmV0dXJuZWQgbGlzdFxuICogQHByb3BlcnR5IHtTaGFkb3dSb290RmlsdGVyfSBzaGFkb3dSb290RmlsdGVyIGZpbHRlciBzaGFkb3cgcm9vdHM7XG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnRbXX0gZWxlbWVudHMgbGlzdCBvZiBlbGVtZW50IGNvbnRhaW5lcnMgdG8gbWF0Y2ggY2FuZGlkYXRlcyBmcm9tXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVDb250YWluZXIgYWRkIGNvbnRhaW5lciBsaXN0IHRvIGNoZWNrXG4gKiBAcGFyYW0ge0l0ZXJhdGl2ZU9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtBcnJheS48RWxlbWVudHxDYW5kaWRhdGVTY29wZT59XG4gKi9cbnZhciBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkgPSBmdW5jdGlvbiBnZXRDYW5kaWRhdGVzSXRlcmF0aXZlbHkoZWxlbWVudHMsIGluY2x1ZGVDb250YWluZXIsIG9wdGlvbnMpIHtcbiAgdmFyIGNhbmRpZGF0ZXMgPSBbXTtcbiAgdmFyIGVsZW1lbnRzVG9DaGVjayA9IEFycmF5LmZyb20oZWxlbWVudHMpO1xuICB3aGlsZSAoZWxlbWVudHNUb0NoZWNrLmxlbmd0aCkge1xuICAgIHZhciBlbGVtZW50ID0gZWxlbWVudHNUb0NoZWNrLnNoaWZ0KCk7XG4gICAgaWYgKGlzSW5lcnQoZWxlbWVudCwgZmFsc2UpKSB7XG4gICAgICAvLyBubyBuZWVkIHRvIGxvb2sgdXAgc2luY2Ugd2UncmUgZHJpbGxpbmcgZG93blxuICAgICAgLy8gYW55dGhpbmcgaW5zaWRlIHRoaXMgY29udGFpbmVyIHdpbGwgYWxzbyBiZSBpbmVydFxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdTTE9UJykge1xuICAgICAgLy8gYWRkIHNoYWRvdyBkb20gc2xvdCBzY29wZSAoc2xvdCBpdHNlbGYgY2Fubm90IGJlIGZvY3VzYWJsZSlcbiAgICAgIHZhciBhc3NpZ25lZCA9IGVsZW1lbnQuYXNzaWduZWRFbGVtZW50cygpO1xuICAgICAgdmFyIGNvbnRlbnQgPSBhc3NpZ25lZC5sZW5ndGggPyBhc3NpZ25lZCA6IGVsZW1lbnQuY2hpbGRyZW47XG4gICAgICB2YXIgbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShjb250ZW50LCB0cnVlLCBvcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLmZsYXR0ZW4pIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIG5lc3RlZENhbmRpZGF0ZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FuZGlkYXRlcy5wdXNoKHtcbiAgICAgICAgICBzY29wZVBhcmVudDogZWxlbWVudCxcbiAgICAgICAgICBjYW5kaWRhdGVzOiBuZXN0ZWRDYW5kaWRhdGVzXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjaGVjayBjYW5kaWRhdGUgZWxlbWVudFxuICAgICAgdmFyIHZhbGlkQ2FuZGlkYXRlID0gbWF0Y2hlcy5jYWxsKGVsZW1lbnQsIGNhbmRpZGF0ZVNlbGVjdG9yKTtcbiAgICAgIGlmICh2YWxpZENhbmRpZGF0ZSAmJiBvcHRpb25zLmZpbHRlcihlbGVtZW50KSAmJiAoaW5jbHVkZUNvbnRhaW5lciB8fCAhZWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpKSB7XG4gICAgICAgIGNhbmRpZGF0ZXMucHVzaChlbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gaXRlcmF0ZSBvdmVyIHNoYWRvdyBjb250ZW50IGlmIHBvc3NpYmxlXG4gICAgICB2YXIgc2hhZG93Um9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCB8fFxuICAgICAgLy8gY2hlY2sgZm9yIGFuIHVuZGlzY2xvc2VkIHNoYWRvd1xuICAgICAgdHlwZW9mIG9wdGlvbnMuZ2V0U2hhZG93Um9vdCA9PT0gJ2Z1bmN0aW9uJyAmJiBvcHRpb25zLmdldFNoYWRvd1Jvb3QoZWxlbWVudCk7XG5cbiAgICAgIC8vIG5vIGluZXJ0IGxvb2sgdXAgYmVjYXVzZSB3ZSdyZSBhbHJlYWR5IGRyaWxsaW5nIGRvd24gYW5kIGNoZWNraW5nIGZvciBpbmVydG5lc3NcbiAgICAgIC8vICBvbiB0aGUgd2F5IGRvd24sIHNvIGFsbCBjb250YWluZXJzIHRvIHRoaXMgcm9vdCBub2RlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlblxuICAgICAgLy8gIHZldHRlZCBhcyBub24taW5lcnRcbiAgICAgIHZhciB2YWxpZFNoYWRvd1Jvb3QgPSAhaXNJbmVydChzaGFkb3dSb290LCBmYWxzZSkgJiYgKCFvcHRpb25zLnNoYWRvd1Jvb3RGaWx0ZXIgfHwgb3B0aW9ucy5zaGFkb3dSb290RmlsdGVyKGVsZW1lbnQpKTtcbiAgICAgIGlmIChzaGFkb3dSb290ICYmIHZhbGlkU2hhZG93Um9vdCkge1xuICAgICAgICAvLyBhZGQgc2hhZG93IGRvbSBzY29wZSBJSUYgYSBzaGFkb3cgcm9vdCBub2RlIHdhcyBnaXZlbjsgb3RoZXJ3aXNlLCBhbiB1bmRpc2Nsb3NlZFxuICAgICAgICAvLyAgc2hhZG93IGV4aXN0cywgc28gbG9vayBhdCBsaWdodCBkb20gY2hpbGRyZW4gYXMgZmFsbGJhY2sgQlVUIGNyZWF0ZSBhIHNjb3BlIGZvciBhbnlcbiAgICAgICAgLy8gIGNoaWxkIGNhbmRpZGF0ZXMgZm91bmQgYmVjYXVzZSB0aGV5J3JlIGxpa2VseSBzbG90dGVkIGVsZW1lbnRzIChlbGVtZW50cyB0aGF0IGFyZVxuICAgICAgICAvLyAgY2hpbGRyZW4gb2YgdGhlIHdlYiBjb21wb25lbnQgZWxlbWVudCAod2hpY2ggaGFzIHRoZSBzaGFkb3cpLCBpbiB0aGUgbGlnaHQgZG9tLCBidXRcbiAgICAgICAgLy8gIHNsb3R0ZWQgc29tZXdoZXJlIF9pbnNpZGVfIHRoZSB1bmRpc2Nsb3NlZCBzaGFkb3cpIC0tIHRoZSBzY29wZSBpcyBjcmVhdGVkIGJlbG93LFxuICAgICAgICAvLyAgX2FmdGVyXyB3ZSByZXR1cm4gZnJvbSB0aGlzIHJlY3Vyc2l2ZSBjYWxsXG4gICAgICAgIHZhciBfbmVzdGVkQ2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXNJdGVyYXRpdmVseShzaGFkb3dSb290ID09PSB0cnVlID8gZWxlbWVudC5jaGlsZHJlbiA6IHNoYWRvd1Jvb3QuY2hpbGRyZW4sIHRydWUsIG9wdGlvbnMpO1xuICAgICAgICBpZiAob3B0aW9ucy5mbGF0dGVuKSB7XG4gICAgICAgICAgY2FuZGlkYXRlcy5wdXNoLmFwcGx5KGNhbmRpZGF0ZXMsIF9uZXN0ZWRDYW5kaWRhdGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goe1xuICAgICAgICAgICAgc2NvcGVQYXJlbnQ6IGVsZW1lbnQsXG4gICAgICAgICAgICBjYW5kaWRhdGVzOiBfbmVzdGVkQ2FuZGlkYXRlc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGVyZSdzIG5vdCBzaGFkb3cgc28ganVzdCBkaWcgaW50byB0aGUgZWxlbWVudCdzIChsaWdodCBkb20pIGNoaWxkcmVuXG4gICAgICAgIC8vICBfX3dpdGhvdXRfXyBnaXZpbmcgdGhlIGVsZW1lbnQgc3BlY2lhbCBzY29wZSB0cmVhdG1lbnRcbiAgICAgICAgZWxlbWVudHNUb0NoZWNrLnVuc2hpZnQuYXBwbHkoZWxlbWVudHNUb0NoZWNrLCBlbGVtZW50LmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbmRpZGF0ZXM7XG59O1xudmFyIGdldFRhYmluZGV4ID0gZnVuY3Rpb24gZ2V0VGFiaW5kZXgobm9kZSwgaXNTY29wZSkge1xuICBpZiAobm9kZS50YWJJbmRleCA8IDApIHtcbiAgICAvLyBpbiBDaHJvbWUsIDxkZXRhaWxzLz4sIDxhdWRpbyBjb250cm9scy8+IGFuZCA8dmlkZW8gY29udHJvbHMvPiBlbGVtZW50cyBnZXQgYSBkZWZhdWx0XG4gICAgLy8gYHRhYkluZGV4YCBvZiAtMSB3aGVuIHRoZSAndGFiaW5kZXgnIGF0dHJpYnV0ZSBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIERPTSxcbiAgICAvLyB5ZXQgdGhleSBhcmUgc3RpbGwgcGFydCBvZiB0aGUgcmVndWxhciB0YWIgb3JkZXI7IGluIEZGLCB0aGV5IGdldCBhIGRlZmF1bHRcbiAgICAvLyBgdGFiSW5kZXhgIG9mIDA7IHNpbmNlIENocm9tZSBzdGlsbCBwdXRzIHRob3NlIGVsZW1lbnRzIGluIHRoZSByZWd1bGFyIHRhYlxuICAgIC8vIG9yZGVyLCBjb25zaWRlciB0aGVpciB0YWIgaW5kZXggdG8gYmUgMC5cbiAgICAvLyBBbHNvIGJyb3dzZXJzIGRvIG5vdCByZXR1cm4gYHRhYkluZGV4YCBjb3JyZWN0bHkgZm9yIGNvbnRlbnRFZGl0YWJsZSBub2RlcztcbiAgICAvLyBzbyBpZiB0aGV5IGRvbid0IGhhdmUgYSB0YWJpbmRleCBhdHRyaWJ1dGUgc3BlY2lmaWNhbGx5IHNldCwgYXNzdW1lIGl0J3MgMC5cbiAgICAvL1xuICAgIC8vIGlzU2NvcGUgaXMgcG9zaXRpdmUgZm9yIGN1c3RvbSBlbGVtZW50IHdpdGggc2hhZG93IHJvb3Qgb3Igc2xvdCB0aGF0IGJ5IGRlZmF1bHRcbiAgICAvLyBoYXZlIHRhYkluZGV4IC0xLCBidXQgbmVlZCB0byBiZSBzb3J0ZWQgYnkgZG9jdW1lbnQgb3JkZXIgaW4gb3JkZXIgZm9yIHRoZWlyXG4gICAgLy8gY29udGVudCB0byBiZSBpbnNlcnRlZCBpbiB0aGUgY29ycmVjdCBwb3NpdGlvblxuICAgIGlmICgoaXNTY29wZSB8fCAvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3Qobm9kZS50YWdOYW1lKSB8fCBpc0NvbnRlbnRFZGl0YWJsZShub2RlKSkgJiYgaXNOYU4ocGFyc2VJbnQobm9kZS5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JyksIDEwKSkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9kZS50YWJJbmRleDtcbn07XG52YXIgc29ydE9yZGVyZWRUYWJiYWJsZXMgPSBmdW5jdGlvbiBzb3J0T3JkZXJlZFRhYmJhYmxlcyhhLCBiKSB7XG4gIHJldHVybiBhLnRhYkluZGV4ID09PSBiLnRhYkluZGV4ID8gYS5kb2N1bWVudE9yZGVyIC0gYi5kb2N1bWVudE9yZGVyIDogYS50YWJJbmRleCAtIGIudGFiSW5kZXg7XG59O1xudmFyIGlzSW5wdXQgPSBmdW5jdGlvbiBpc0lucHV0KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudGFnTmFtZSA9PT0gJ0lOUFVUJztcbn07XG52YXIgaXNIaWRkZW5JbnB1dCA9IGZ1bmN0aW9uIGlzSGlkZGVuSW5wdXQobm9kZSkge1xuICByZXR1cm4gaXNJbnB1dChub2RlKSAmJiBub2RlLnR5cGUgPT09ICdoaWRkZW4nO1xufTtcbnZhciBpc0RldGFpbHNXaXRoU3VtbWFyeSA9IGZ1bmN0aW9uIGlzRGV0YWlsc1dpdGhTdW1tYXJ5KG5vZGUpIHtcbiAgdmFyIHIgPSBub2RlLnRhZ05hbWUgPT09ICdERVRBSUxTJyAmJiBBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkobm9kZS5jaGlsZHJlbikuc29tZShmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQudGFnTmFtZSA9PT0gJ1NVTU1BUlknO1xuICB9KTtcbiAgcmV0dXJuIHI7XG59O1xudmFyIGdldENoZWNrZWRSYWRpbyA9IGZ1bmN0aW9uIGdldENoZWNrZWRSYWRpbyhub2RlcywgZm9ybSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG5vZGVzW2ldLmNoZWNrZWQgJiYgbm9kZXNbaV0uZm9ybSA9PT0gZm9ybSkge1xuICAgICAgcmV0dXJuIG5vZGVzW2ldO1xuICAgIH1cbiAgfVxufTtcbnZhciBpc1RhYmJhYmxlUmFkaW8gPSBmdW5jdGlvbiBpc1RhYmJhYmxlUmFkaW8obm9kZSkge1xuICBpZiAoIW5vZGUubmFtZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciByYWRpb1Njb3BlID0gbm9kZS5mb3JtIHx8IGdldFJvb3ROb2RlKG5vZGUpO1xuICB2YXIgcXVlcnlSYWRpb3MgPSBmdW5jdGlvbiBxdWVyeVJhZGlvcyhuYW1lKSB7XG4gICAgcmV0dXJuIHJhZGlvU2NvcGUucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCInICsgbmFtZSArICdcIl0nKTtcbiAgfTtcbiAgdmFyIHJhZGlvU2V0O1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5DU1MgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQ1NTLmVzY2FwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJhZGlvU2V0ID0gcXVlcnlSYWRpb3Mod2luZG93LkNTUy5lc2NhcGUobm9kZS5uYW1lKSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIHJhZGlvU2V0ID0gcXVlcnlSYWRpb3Mobm9kZS5uYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKCdMb29rcyBsaWtlIHlvdSBoYXZlIGEgcmFkaW8gYnV0dG9uIHdpdGggYSBuYW1lIGF0dHJpYnV0ZSBjb250YWluaW5nIGludmFsaWQgQ1NTIHNlbGVjdG9yIGNoYXJhY3RlcnMgYW5kIG5lZWQgdGhlIENTUy5lc2NhcGUgcG9seWZpbGw6ICVzJywgZXJyLm1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICB2YXIgY2hlY2tlZCA9IGdldENoZWNrZWRSYWRpbyhyYWRpb1NldCwgbm9kZS5mb3JtKTtcbiAgcmV0dXJuICFjaGVja2VkIHx8IGNoZWNrZWQgPT09IG5vZGU7XG59O1xudmFyIGlzUmFkaW8gPSBmdW5jdGlvbiBpc1JhZGlvKG5vZGUpIHtcbiAgcmV0dXJuIGlzSW5wdXQobm9kZSkgJiYgbm9kZS50eXBlID09PSAncmFkaW8nO1xufTtcbnZhciBpc05vblRhYmJhYmxlUmFkaW8gPSBmdW5jdGlvbiBpc05vblRhYmJhYmxlUmFkaW8obm9kZSkge1xuICByZXR1cm4gaXNSYWRpbyhub2RlKSAmJiAhaXNUYWJiYWJsZVJhZGlvKG5vZGUpO1xufTtcblxuLy8gZGV0ZXJtaW5lcyBpZiBhIG5vZGUgaXMgdWx0aW1hdGVseSBhdHRhY2hlZCB0byB0aGUgd2luZG93J3MgZG9jdW1lbnRcbnZhciBpc05vZGVBdHRhY2hlZCA9IGZ1bmN0aW9uIGlzTm9kZUF0dGFjaGVkKG5vZGUpIHtcbiAgdmFyIF9ub2RlUm9vdDtcbiAgLy8gVGhlIHJvb3Qgbm9kZSBpcyB0aGUgc2hhZG93IHJvb3QgaWYgdGhlIG5vZGUgaXMgaW4gYSBzaGFkb3cgRE9NOyBzb21lIGRvY3VtZW50IG90aGVyd2lzZVxuICAvLyAgKGJ1dCBOT1QgX3RoZV8gZG9jdW1lbnQ7IHNlZSBzZWNvbmQgJ0lmJyBjb21tZW50IGJlbG93IGZvciBtb3JlKS5cbiAgLy8gSWYgcm9vdE5vZGUgaXMgc2hhZG93IHJvb3QsIGl0J2xsIGhhdmUgYSBob3N0LCB3aGljaCBpcyB0aGUgZWxlbWVudCB0byB3aGljaCB0aGUgc2hhZG93XG4gIC8vICBpcyBhdHRhY2hlZCwgYW5kIHRoZSBvbmUgd2UgbmVlZCB0byBjaGVjayBpZiBpdCdzIGluIHRoZSBkb2N1bWVudCBvciBub3QgKGJlY2F1c2UgdGhlXG4gIC8vICBzaGFkb3csIGFuZCBhbGwgbm9kZXMgaXQgY29udGFpbnMsIGlzIG5ldmVyIGNvbnNpZGVyZWQgaW4gdGhlIGRvY3VtZW50IHNpbmNlIHNoYWRvd3NcbiAgLy8gIGJlaGF2ZSBsaWtlIHNlbGYtY29udGFpbmVkIERPTXM7IGJ1dCBpZiB0aGUgc2hhZG93J3MgSE9TVCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgZG9jdW1lbnQsXG4gIC8vICBpcyBoaWRkZW4sIG9yIGlzIG5vdCBpbiB0aGUgZG9jdW1lbnQgaXRzZWxmIGJ1dCBpcyBkZXRhY2hlZCwgaXQgd2lsbCBhZmZlY3QgdGhlIHNoYWRvdydzXG4gIC8vICB2aXNpYmlsaXR5LCBpbmNsdWRpbmcgYWxsIHRoZSBub2RlcyBpdCBjb250YWlucykuIFRoZSBob3N0IGNvdWxkIGJlIGFueSBub3JtYWwgbm9kZSxcbiAgLy8gIG9yIGEgY3VzdG9tIGVsZW1lbnQgKGkuZS4gd2ViIGNvbXBvbmVudCkuIEVpdGhlciB3YXksIHRoYXQncyB0aGUgb25lIHRoYXQgaXMgY29uc2lkZXJlZFxuICAvLyAgcGFydCBvZiB0aGUgZG9jdW1lbnQsIG5vdCB0aGUgc2hhZG93IHJvb3QsIG5vciBhbnkgb2YgaXRzIGNoaWxkcmVuIChpLmUuIHRoZSBub2RlIGJlaW5nXG4gIC8vICB0ZXN0ZWQpLlxuICAvLyBUbyBmdXJ0aGVyIGNvbXBsaWNhdGUgdGhpbmdzLCB3ZSBoYXZlIHRvIGxvb2sgYWxsIHRoZSB3YXkgdXAgdW50aWwgd2UgZmluZCBhIHNoYWRvdyBIT1NUXG4gIC8vICB0aGF0IGlzIGF0dGFjaGVkIChvciBmaW5kIG5vbmUpIGJlY2F1c2UgdGhlIG5vZGUgbWlnaHQgYmUgaW4gbmVzdGVkIHNoYWRvd3MuLi5cbiAgLy8gSWYgcm9vdE5vZGUgaXMgbm90IGEgc2hhZG93IHJvb3QsIGl0IHdvbid0IGhhdmUgYSBob3N0LCBhbmQgc28gcm9vdE5vZGUgc2hvdWxkIGJlIHRoZVxuICAvLyAgZG9jdW1lbnQgKHBlciB0aGUgZG9jcykgYW5kIHdoaWxlIGl0J3MgYSBEb2N1bWVudC10eXBlIG9iamVjdCwgdGhhdCBkb2N1bWVudCBkb2VzIG5vdFxuICAvLyAgYXBwZWFyIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBub2RlJ3MgYG93bmVyRG9jdW1lbnRgIGZvciBzb21lIHJlYXNvbiwgc28gaXQncyBzYWZlclxuICAvLyAgdG8gaWdub3JlIHRoZSByb290Tm9kZSBhdCB0aGlzIHBvaW50LCBhbmQgdXNlIGBub2RlLm93bmVyRG9jdW1lbnRgLiBPdGhlcndpc2UsXG4gIC8vICB1c2luZyBgcm9vdE5vZGUuY29udGFpbnMobm9kZSlgIHdpbGwgX2Fsd2F5c18gYmUgdHJ1ZSB3ZSdsbCBnZXQgZmFsc2UtcG9zaXRpdmVzIHdoZW5cbiAgLy8gIG5vZGUgaXMgYWN0dWFsbHkgZGV0YWNoZWQuXG4gIC8vIE5PVEU6IElmIGBub2RlUm9vdEhvc3RgIG9yIGBub2RlYCBoYXBwZW5zIHRvIGJlIHRoZSBgZG9jdW1lbnRgIGl0c2VsZiAod2hpY2ggaXMgcG9zc2libGVcbiAgLy8gIGlmIGEgdGFiYmFibGUvZm9jdXNhYmxlIG5vZGUgd2FzIHF1aWNrbHkgYWRkZWQgdG8gdGhlIERPTSwgZm9jdXNlZCwgYW5kIHRoZW4gcmVtb3ZlZFxuICAvLyAgZnJvbSB0aGUgRE9NIGFzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9mb2N1cy10cmFwL2ZvY3VzLXRyYXAtcmVhY3QvaXNzdWVzLzkwNSksIHRoZW5cbiAgLy8gIGBvd25lckRvY3VtZW50YCB3aWxsIGJlIGBudWxsYCwgaGVuY2UgdGhlIG9wdGlvbmFsIGNoYWluaW5nIG9uIGl0LlxuICB2YXIgbm9kZVJvb3QgPSBub2RlICYmIGdldFJvb3ROb2RlKG5vZGUpO1xuICB2YXIgbm9kZVJvb3RIb3N0ID0gKF9ub2RlUm9vdCA9IG5vZGVSb290KSA9PT0gbnVsbCB8fCBfbm9kZVJvb3QgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlUm9vdC5ob3N0O1xuXG4gIC8vIGluIHNvbWUgY2FzZXMsIGEgZGV0YWNoZWQgbm9kZSB3aWxsIHJldHVybiBpdHNlbGYgYXMgdGhlIHJvb3QgaW5zdGVhZCBvZiBhIGRvY3VtZW50IG9yXG4gIC8vICBzaGFkb3cgcm9vdCBvYmplY3QsIGluIHdoaWNoIGNhc2UsIHdlIHNob3VsZG4ndCB0cnkgdG8gbG9vayBmdXJ0aGVyIHVwIHRoZSBob3N0IGNoYWluXG4gIHZhciBhdHRhY2hlZCA9IGZhbHNlO1xuICBpZiAobm9kZVJvb3QgJiYgbm9kZVJvb3QgIT09IG5vZGUpIHtcbiAgICB2YXIgX25vZGVSb290SG9zdCwgX25vZGVSb290SG9zdCRvd25lckRvLCBfbm9kZSRvd25lckRvY3VtZW50O1xuICAgIGF0dGFjaGVkID0gISEoKF9ub2RlUm9vdEhvc3QgPSBub2RlUm9vdEhvc3QpICE9PSBudWxsICYmIF9ub2RlUm9vdEhvc3QgIT09IHZvaWQgMCAmJiAoX25vZGVSb290SG9zdCRvd25lckRvID0gX25vZGVSb290SG9zdC5vd25lckRvY3VtZW50KSAhPT0gbnVsbCAmJiBfbm9kZVJvb3RIb3N0JG93bmVyRG8gIT09IHZvaWQgMCAmJiBfbm9kZVJvb3RIb3N0JG93bmVyRG8uY29udGFpbnMobm9kZVJvb3RIb3N0KSB8fCBub2RlICE9PSBudWxsICYmIG5vZGUgIT09IHZvaWQgMCAmJiAoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgIT09IG51bGwgJiYgX25vZGUkb3duZXJEb2N1bWVudCAhPT0gdm9pZCAwICYmIF9ub2RlJG93bmVyRG9jdW1lbnQuY29udGFpbnMobm9kZSkpO1xuICAgIHdoaWxlICghYXR0YWNoZWQgJiYgbm9kZVJvb3RIb3N0KSB7XG4gICAgICB2YXIgX25vZGVSb290MiwgX25vZGVSb290SG9zdDIsIF9ub2RlUm9vdEhvc3QyJG93bmVyRDtcbiAgICAgIC8vIHNpbmNlIGl0J3Mgbm90IGF0dGFjaGVkIGFuZCB3ZSBoYXZlIGEgcm9vdCBob3N0LCB0aGUgbm9kZSBNVVNUIGJlIGluIGEgbmVzdGVkIHNoYWRvdyBET00sXG4gICAgICAvLyAgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBnZXQgdGhlIGhvc3QncyBob3N0IGFuZCBjaGVjayBpZiB0aGF0IHBhcmVudCBob3N0IGlzIGNvbnRhaW5lZFxuICAgICAgLy8gIGluIChpLmUuIGF0dGFjaGVkIHRvKSB0aGUgZG9jdW1lbnRcbiAgICAgIG5vZGVSb290ID0gZ2V0Um9vdE5vZGUobm9kZVJvb3RIb3N0KTtcbiAgICAgIG5vZGVSb290SG9zdCA9IChfbm9kZVJvb3QyID0gbm9kZVJvb3QpID09PSBudWxsIHx8IF9ub2RlUm9vdDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9ub2RlUm9vdDIuaG9zdDtcbiAgICAgIGF0dGFjaGVkID0gISEoKF9ub2RlUm9vdEhvc3QyID0gbm9kZVJvb3RIb3N0KSAhPT0gbnVsbCAmJiBfbm9kZVJvb3RIb3N0MiAhPT0gdm9pZCAwICYmIChfbm9kZVJvb3RIb3N0MiRvd25lckQgPSBfbm9kZVJvb3RIb3N0Mi5vd25lckRvY3VtZW50KSAhPT0gbnVsbCAmJiBfbm9kZVJvb3RIb3N0MiRvd25lckQgIT09IHZvaWQgMCAmJiBfbm9kZVJvb3RIb3N0MiRvd25lckQuY29udGFpbnMobm9kZVJvb3RIb3N0KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhdHRhY2hlZDtcbn07XG52YXIgaXNaZXJvQXJlYSA9IGZ1bmN0aW9uIGlzWmVyb0FyZWEobm9kZSkge1xuICB2YXIgX25vZGUkZ2V0Qm91bmRpbmdDbGllID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICB3aWR0aCA9IF9ub2RlJGdldEJvdW5kaW5nQ2xpZS53aWR0aCxcbiAgICBoZWlnaHQgPSBfbm9kZSRnZXRCb3VuZGluZ0NsaWUuaGVpZ2h0O1xuICByZXR1cm4gd2lkdGggPT09IDAgJiYgaGVpZ2h0ID09PSAwO1xufTtcbnZhciBpc0hpZGRlbiA9IGZ1bmN0aW9uIGlzSGlkZGVuKG5vZGUsIF9yZWYpIHtcbiAgdmFyIGRpc3BsYXlDaGVjayA9IF9yZWYuZGlzcGxheUNoZWNrLFxuICAgIGdldFNoYWRvd1Jvb3QgPSBfcmVmLmdldFNoYWRvd1Jvb3Q7XG4gIC8vIE5PVEU6IHZpc2liaWxpdHkgd2lsbCBiZSBgdW5kZWZpbmVkYCBpZiBub2RlIGlzIGRldGFjaGVkIGZyb20gdGhlIGRvY3VtZW50XG4gIC8vICAoc2VlIG5vdGVzIGFib3V0IHRoaXMgZnVydGhlciBkb3duKSwgd2hpY2ggbWVhbnMgd2Ugd2lsbCBjb25zaWRlciBpdCB2aXNpYmxlXG4gIC8vICAodGhpcyBpcyBsZWdhY3kgYmVoYXZpb3IgZnJvbSBhIHZlcnkgbG9uZyB3YXkgYmFjaylcbiAgLy8gTk9URTogd2UgY2hlY2sgdGhpcyByZWdhcmRsZXNzIG9mIGBkaXNwbGF5Q2hlY2s9XCJub25lXCJgIGJlY2F1c2UgdGhpcyBpcyBhXG4gIC8vICBfdmlzaWJpbGl0eV8gY2hlY2ssIG5vdCBhIF9kaXNwbGF5XyBjaGVja1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS52aXNpYmlsaXR5ID09PSAnaGlkZGVuJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBpc0RpcmVjdFN1bW1hcnkgPSBtYXRjaGVzLmNhbGwobm9kZSwgJ2RldGFpbHM+c3VtbWFyeTpmaXJzdC1vZi10eXBlJyk7XG4gIHZhciBub2RlVW5kZXJEZXRhaWxzID0gaXNEaXJlY3RTdW1tYXJ5ID8gbm9kZS5wYXJlbnRFbGVtZW50IDogbm9kZTtcbiAgaWYgKG1hdGNoZXMuY2FsbChub2RlVW5kZXJEZXRhaWxzLCAnZGV0YWlsczpub3QoW29wZW5dKSAqJykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoIWRpc3BsYXlDaGVjayB8fCBkaXNwbGF5Q2hlY2sgPT09ICdmdWxsJyB8fCBkaXNwbGF5Q2hlY2sgPT09ICdsZWdhY3ktZnVsbCcpIHtcbiAgICBpZiAodHlwZW9mIGdldFNoYWRvd1Jvb3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBub2RlIHRvIGJlIGluIGFuIHVuZGlzY2xvc2VkIHNoYWRvdyBhbmQgdXNlIHRoZVxuICAgICAgLy8gICdub24temVyby1hcmVhJyBmYWxsYmFja1xuICAgICAgdmFyIG9yaWdpbmFsTm9kZSA9IG5vZGU7XG4gICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICAgICAgdmFyIHJvb3ROb2RlID0gZ2V0Um9vdE5vZGUobm9kZSk7XG4gICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICYmICFwYXJlbnRFbGVtZW50LnNoYWRvd1Jvb3QgJiYgZ2V0U2hhZG93Um9vdChwYXJlbnRFbGVtZW50KSA9PT0gdHJ1ZSAvLyBjaGVjayBpZiB0aGVyZSdzIGFuIHVuZGlzY2xvc2VkIHNoYWRvd1xuICAgICAgICApIHtcbiAgICAgICAgICAvLyBub2RlIGhhcyBhbiB1bmRpc2Nsb3NlZCBzaGFkb3cgd2hpY2ggbWVhbnMgd2UgY2FuIG9ubHkgdHJlYXQgaXQgYXMgYSBibGFjayBib3gsIHNvIHdlXG4gICAgICAgICAgLy8gIGZhbGwgYmFjayB0byBhIG5vbi16ZXJvLWFyZWEgdGVzdFxuICAgICAgICAgIHJldHVybiBpc1plcm9BcmVhKG5vZGUpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGUuYXNzaWduZWRTbG90KSB7XG4gICAgICAgICAgLy8gaXRlcmF0ZSB1cCBzbG90XG4gICAgICAgICAgbm9kZSA9IG5vZGUuYXNzaWduZWRTbG90O1xuICAgICAgICB9IGVsc2UgaWYgKCFwYXJlbnRFbGVtZW50ICYmIHJvb3ROb2RlICE9PSBub2RlLm93bmVyRG9jdW1lbnQpIHtcbiAgICAgICAgICAvLyBjcm9zcyBzaGFkb3cgYm91bmRhcnlcbiAgICAgICAgICBub2RlID0gcm9vdE5vZGUuaG9zdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBpdGVyYXRlIHVwIG5vcm1hbCBkb21cbiAgICAgICAgICBub2RlID0gcGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbm9kZSA9IG9yaWdpbmFsTm9kZTtcbiAgICB9XG4gICAgLy8gZWxzZSwgYGdldFNoYWRvd1Jvb3RgIG1pZ2h0IGJlIHRydWUsIGJ1dCBhbGwgdGhhdCBkb2VzIGlzIGVuYWJsZSBzaGFkb3cgRE9NIHN1cHBvcnRcbiAgICAvLyAgKGkuZS4gaXQgZG9lcyBub3QgYWxzbyBwcmVzdW1lIHRoYXQgYWxsIG5vZGVzIG1pZ2h0IGhhdmUgdW5kaXNjbG9zZWQgc2hhZG93cyk7IG9yXG4gICAgLy8gIGl0IG1pZ2h0IGJlIGEgZmFsc3kgdmFsdWUsIHdoaWNoIG1lYW5zIHNoYWRvdyBET00gc3VwcG9ydCBpcyBkaXNhYmxlZFxuXG4gICAgLy8gU2luY2Ugd2UgZGlkbid0IGZpbmQgaXQgc2l0dGluZyBpbiBhbiB1bmRpc2Nsb3NlZCBzaGFkb3cgKG9yIHNoYWRvd3MgYXJlIGRpc2FibGVkKVxuICAgIC8vICBub3cgd2UgY2FuIGp1c3QgdGVzdCB0byBzZWUgaWYgaXQgd291bGQgbm9ybWFsbHkgYmUgdmlzaWJsZSBvciBub3QsIHByb3ZpZGVkIGl0J3NcbiAgICAvLyAgYXR0YWNoZWQgdG8gdGhlIG1haW4gZG9jdW1lbnQuXG4gICAgLy8gTk9URTogV2UgbXVzdCBjb25zaWRlciBjYXNlIHdoZXJlIG5vZGUgaXMgaW5zaWRlIGEgc2hhZG93IERPTSBhbmQgZ2l2ZW4gZGlyZWN0bHkgdG9cbiAgICAvLyAgYGlzVGFiYmFibGUoKWAgb3IgYGlzRm9jdXNhYmxlKClgIC0tIHJlZ2FyZGxlc3Mgb2YgYGdldFNoYWRvd1Jvb3RgIG9wdGlvbiBzZXR0aW5nLlxuXG4gICAgaWYgKGlzTm9kZUF0dGFjaGVkKG5vZGUpKSB7XG4gICAgICAvLyB0aGlzIHdvcmtzIHdoZXJldmVyIHRoZSBub2RlIGlzOiBpZiB0aGVyZSdzIGF0IGxlYXN0IG9uZSBjbGllbnQgcmVjdCwgaXQnc1xuICAgICAgLy8gIHNvbWVob3cgZGlzcGxheWVkOyBpdCBhbHNvIGNvdmVycyB0aGUgQ1NTICdkaXNwbGF5OiBjb250ZW50cycgY2FzZSB3aGVyZSB0aGVcbiAgICAgIC8vICBub2RlIGl0c2VsZiBpcyBoaWRkZW4gaW4gcGxhY2Ugb2YgaXRzIGNvbnRlbnRzOyBhbmQgdGhlcmUncyBubyBuZWVkIHRvIHNlYXJjaFxuICAgICAgLy8gIHVwIHRoZSBoaWVyYXJjaHkgZWl0aGVyXG4gICAgICByZXR1cm4gIW5vZGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gRWxzZSwgdGhlIG5vZGUgaXNuJ3QgYXR0YWNoZWQgdG8gdGhlIGRvY3VtZW50LCB3aGljaCBtZWFucyB0aGUgYGdldENsaWVudFJlY3RzKClgXG4gICAgLy8gIEFQSSB3aWxsIF9fYWx3YXlzX18gcmV0dXJuIHplcm8gcmVjdHMgKHRoaXMgY2FuIGhhcHBlbiwgZm9yIGV4YW1wbGUsIGlmIFJlYWN0XG4gICAgLy8gIGlzIHVzZWQgdG8gcmVuZGVyIG5vZGVzIG9udG8gYSBkZXRhY2hlZCB0cmVlLCBhcyBjb25maXJtZWQgaW4gdGhpcyB0aHJlYWQ6XG4gICAgLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvOTExNyNpc3N1ZWNvbW1lbnQtMjg0MjI4ODcwKVxuICAgIC8vXG4gICAgLy8gSXQgYWxzbyBtZWFucyB0aGF0IGV2ZW4gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSkuZGlzcGxheSB3aWxsIHJldHVybiBgdW5kZWZpbmVkYFxuICAgIC8vICBiZWNhdXNlIHN0eWxlcyBhcmUgb25seSBjb21wdXRlZCBmb3Igbm9kZXMgdGhhdCBhcmUgaW4gdGhlIGRvY3VtZW50LlxuICAgIC8vXG4gICAgLy8gTk9URTogVEhJUyBIQVMgQkVFTiBUSEUgQ0FTRSBGT1IgWUVBUlMuIEl0IGlzIG5vdCBuZXcsIG5vciBpcyBpdCBjYXVzZWQgYnkgdGFiYmFibGVcbiAgICAvLyAgc29tZWhvdy4gVGhvdWdoIGl0IHdhcyBuZXZlciBzdGF0ZWQgb2ZmaWNpYWxseSwgYW55b25lIHdobyBoYXMgZXZlciB1c2VkIHRhYmJhYmxlXG4gICAgLy8gIEFQSXMgb24gbm9kZXMgaW4gZGV0YWNoZWQgY29udGFpbmVycyBoYXMgYWN0dWFsbHkgaW1wbGljaXRseSB1c2VkIHRhYmJhYmxlIGluIHdoYXRcbiAgICAvLyAgd2FzIGxhdGVyIChhcyBvZiB2NS4yLjAgb24gQXByIDksIDIwMjEpIGNhbGxlZCBgZGlzcGxheUNoZWNrPVwibm9uZVwiYCBtb2RlIC0tIGVzc2VudGlhbGx5XG4gICAgLy8gIGNvbnNpZGVyaW5nIF9fZXZlcnl0aGluZ19fIHRvIGJlIHZpc2libGUgYmVjYXVzZSBvZiB0aGUgaW5uYWJpbGl0eSB0byBkZXRlcm1pbmUgc3R5bGVzLlxuICAgIC8vXG4gICAgLy8gdjYuMC4wOiBBcyBvZiB0aGlzIG1ham9yIHJlbGVhc2UsIHRoZSBkZWZhdWx0ICdmdWxsJyBvcHRpb24gX19ubyBsb25nZXIgdHJlYXRzIGRldGFjaGVkXG4gICAgLy8gIG5vZGVzIGFzIHZpc2libGUgd2l0aCB0aGUgJ25vbmUnIGZhbGxiYWNrLl9fXG4gICAgaWYgKGRpc3BsYXlDaGVjayAhPT0gJ2xlZ2FjeS1mdWxsJykge1xuICAgICAgcmV0dXJuIHRydWU7IC8vIGhpZGRlblxuICAgIH1cbiAgICAvLyBlbHNlLCBmYWxsYmFjayB0byAnbm9uZScgbW9kZSBhbmQgY29uc2lkZXIgdGhlIG5vZGUgdmlzaWJsZVxuICB9IGVsc2UgaWYgKGRpc3BsYXlDaGVjayA9PT0gJ25vbi16ZXJvLWFyZWEnKSB7XG4gICAgLy8gTk9URTogRXZlbiB0aG91Z2ggdGhpcyB0ZXN0cyB0aGF0IHRoZSBub2RlJ3MgY2xpZW50IHJlY3QgaXMgbm9uLXplcm8gdG8gZGV0ZXJtaW5lXG4gICAgLy8gIHdoZXRoZXIgaXQncyBkaXNwbGF5ZWQsIGFuZCB0aGF0IGEgZGV0YWNoZWQgbm9kZSB3aWxsIF9fYWx3YXlzX18gaGF2ZSBhIHplcm8tYXJlYVxuICAgIC8vICBjbGllbnQgcmVjdCwgd2UgZG9uJ3Qgc3BlY2lhbC1jYXNlIGZvciB3aGV0aGVyIHRoZSBub2RlIGlzIGF0dGFjaGVkIG9yIG5vdC4gSW5cbiAgICAvLyAgdGhpcyBtb2RlLCB3ZSBkbyB3YW50IHRvIGNvbnNpZGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHplcm8gYXJlYSB0byBiZSBoaWRkZW4gYXQgYWxsXG4gICAgLy8gIHRpbWVzLCBhbmQgdGhhdCBpbmNsdWRlcyBhdHRhY2hlZCBvciBub3QuXG4gICAgcmV0dXJuIGlzWmVyb0FyZWEobm9kZSk7XG4gIH1cblxuICAvLyB2aXNpYmxlLCBhcyBmYXIgYXMgd2UgY2FuIHRlbGwsIG9yIHBlciBjdXJyZW50IGBkaXNwbGF5Q2hlY2s9bm9uZWAgbW9kZSwgd2UgYXNzdW1lXG4gIC8vICBpdCdzIHZpc2libGVcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gZm9ybSBmaWVsZHMgKG5lc3RlZCkgaW5zaWRlIGEgZGlzYWJsZWQgZmllbGRzZXQgYXJlIG5vdCBmb2N1c2FibGUvdGFiYmFibGVcbi8vICB1bmxlc3MgdGhleSBhcmUgaW4gdGhlIF9maXJzdF8gPGxlZ2VuZD4gZWxlbWVudCBvZiB0aGUgdG9wLW1vc3QgZGlzYWJsZWRcbi8vICBmaWVsZHNldFxudmFyIGlzRGlzYWJsZWRGcm9tRmllbGRzZXQgPSBmdW5jdGlvbiBpc0Rpc2FibGVkRnJvbUZpZWxkc2V0KG5vZGUpIHtcbiAgaWYgKC9eKElOUFVUfEJVVFRPTnxTRUxFQ1R8VEVYVEFSRUEpJC8udGVzdChub2RlLnRhZ05hbWUpKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgLy8gY2hlY2sgaWYgYG5vZGVgIGlzIGNvbnRhaW5lZCBpbiBhIGRpc2FibGVkIDxmaWVsZHNldD5cbiAgICB3aGlsZSAocGFyZW50Tm9kZSkge1xuICAgICAgaWYgKHBhcmVudE5vZGUudGFnTmFtZSA9PT0gJ0ZJRUxEU0VUJyAmJiBwYXJlbnROb2RlLmRpc2FibGVkKSB7XG4gICAgICAgIC8vIGxvb2sgZm9yIHRoZSBmaXJzdCA8bGVnZW5kPiBhbW9uZyB0aGUgY2hpbGRyZW4gb2YgdGhlIGRpc2FibGVkIDxmaWVsZHNldD5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnROb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgdmFyIGNoaWxkID0gcGFyZW50Tm9kZS5jaGlsZHJlbi5pdGVtKGkpO1xuICAgICAgICAgIC8vIHdoZW4gdGhlIGZpcnN0IDxsZWdlbmQ+IChpbiBkb2N1bWVudCBvcmRlcikgaXMgZm91bmRcbiAgICAgICAgICBpZiAoY2hpbGQudGFnTmFtZSA9PT0gJ0xFR0VORCcpIHtcbiAgICAgICAgICAgIC8vIGlmIGl0cyBwYXJlbnQgPGZpZWxkc2V0PiBpcyBub3QgbmVzdGVkIGluIGFub3RoZXIgZGlzYWJsZWQgPGZpZWxkc2V0PixcbiAgICAgICAgICAgIC8vIHJldHVybiB3aGV0aGVyIGBub2RlYCBpcyBhIGRlc2NlbmRhbnQgb2YgaXRzIGZpcnN0IDxsZWdlbmQ+XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlcy5jYWxsKHBhcmVudE5vZGUsICdmaWVsZHNldFtkaXNhYmxlZF0gKicpID8gdHJ1ZSA6ICFjaGlsZC5jb250YWlucyhub2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIGRpc2FibGVkIDxmaWVsZHNldD4gY29udGFpbmluZyBgbm9kZWAgaGFzIG5vIDxsZWdlbmQ+XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUucGFyZW50RWxlbWVudDtcbiAgICB9XG4gIH1cblxuICAvLyBlbHNlLCBub2RlJ3MgdGFiYmFibGUvZm9jdXNhYmxlIHN0YXRlIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQgYnkgYSBmaWVsZHNldCdzXG4gIC8vICBlbmFibGVkL2Rpc2FibGVkIHN0YXRlXG4gIHJldHVybiBmYWxzZTtcbn07XG52YXIgaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZSA9IGZ1bmN0aW9uIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUob3B0aW9ucywgbm9kZSkge1xuICBpZiAobm9kZS5kaXNhYmxlZCB8fFxuICAvLyB3ZSBtdXN0IGRvIGFuIGluZXJ0IGxvb2sgdXAgdG8gZmlsdGVyIG91dCBhbnkgZWxlbWVudHMgaW5zaWRlIGFuIGluZXJ0IGFuY2VzdG9yXG4gIC8vICBiZWNhdXNlIHdlJ3JlIGxpbWl0ZWQgaW4gdGhlIHR5cGUgb2Ygc2VsZWN0b3JzIHdlIGNhbiB1c2UgaW4gSlNEb20gKHNlZSByZWxhdGVkXG4gIC8vICBub3RlIHJlbGF0ZWQgdG8gYGNhbmRpZGF0ZVNlbGVjdG9yc2ApXG4gIGlzSW5lcnQobm9kZSkgfHwgaXNIaWRkZW5JbnB1dChub2RlKSB8fCBpc0hpZGRlbihub2RlLCBvcHRpb25zKSB8fFxuICAvLyBGb3IgYSBkZXRhaWxzIGVsZW1lbnQgd2l0aCBhIHN1bW1hcnksIHRoZSBzdW1tYXJ5IGVsZW1lbnQgZ2V0cyB0aGUgZm9jdXNcbiAgaXNEZXRhaWxzV2l0aFN1bW1hcnkobm9kZSkgfHwgaXNEaXNhYmxlZEZyb21GaWVsZHNldChub2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlID0gZnVuY3Rpb24gaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlKG9wdGlvbnMsIG5vZGUpIHtcbiAgaWYgKGlzTm9uVGFiYmFibGVSYWRpbyhub2RlKSB8fCBnZXRUYWJpbmRleChub2RlKSA8IDAgfHwgIWlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUob3B0aW9ucywgbm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIGlzVmFsaWRTaGFkb3dSb290VGFiYmFibGUgPSBmdW5jdGlvbiBpc1ZhbGlkU2hhZG93Um9vdFRhYmJhYmxlKHNoYWRvd0hvc3ROb2RlKSB7XG4gIHZhciB0YWJJbmRleCA9IHBhcnNlSW50KHNoYWRvd0hvc3ROb2RlLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSwgMTApO1xuICBpZiAoaXNOYU4odGFiSW5kZXgpIHx8IHRhYkluZGV4ID49IDApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBJZiBhIGN1c3RvbSBlbGVtZW50IGhhcyBhbiBleHBsaWNpdCBuZWdhdGl2ZSB0YWJpbmRleCxcbiAgLy8gYnJvd3NlcnMgd2lsbCBub3QgYWxsb3cgdGFiIHRhcmdldGluZyBzYWlkIGVsZW1lbnQncyBjaGlsZHJlbi5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5LjxFbGVtZW50fENhbmRpZGF0ZVNjb3BlPn0gY2FuZGlkYXRlc1xuICogQHJldHVybnMgRWxlbWVudFtdXG4gKi9cbnZhciBzb3J0QnlPcmRlciA9IGZ1bmN0aW9uIHNvcnRCeU9yZGVyKGNhbmRpZGF0ZXMpIHtcbiAgdmFyIHJlZ3VsYXJUYWJiYWJsZXMgPSBbXTtcbiAgdmFyIG9yZGVyZWRUYWJiYWJsZXMgPSBbXTtcbiAgY2FuZGlkYXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgdmFyIGlzU2NvcGUgPSAhIWl0ZW0uc2NvcGVQYXJlbnQ7XG4gICAgdmFyIGVsZW1lbnQgPSBpc1Njb3BlID8gaXRlbS5zY29wZVBhcmVudCA6IGl0ZW07XG4gICAgdmFyIGNhbmRpZGF0ZVRhYmluZGV4ID0gZ2V0VGFiaW5kZXgoZWxlbWVudCwgaXNTY29wZSk7XG4gICAgdmFyIGVsZW1lbnRzID0gaXNTY29wZSA/IHNvcnRCeU9yZGVyKGl0ZW0uY2FuZGlkYXRlcykgOiBlbGVtZW50O1xuICAgIGlmIChjYW5kaWRhdGVUYWJpbmRleCA9PT0gMCkge1xuICAgICAgaXNTY29wZSA/IHJlZ3VsYXJUYWJiYWJsZXMucHVzaC5hcHBseShyZWd1bGFyVGFiYmFibGVzLCBlbGVtZW50cykgOiByZWd1bGFyVGFiYmFibGVzLnB1c2goZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yZGVyZWRUYWJiYWJsZXMucHVzaCh7XG4gICAgICAgIGRvY3VtZW50T3JkZXI6IGksXG4gICAgICAgIHRhYkluZGV4OiBjYW5kaWRhdGVUYWJpbmRleCxcbiAgICAgICAgaXRlbTogaXRlbSxcbiAgICAgICAgaXNTY29wZTogaXNTY29wZSxcbiAgICAgICAgY29udGVudDogZWxlbWVudHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvcmRlcmVkVGFiYmFibGVzLnNvcnQoc29ydE9yZGVyZWRUYWJiYWJsZXMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBzb3J0YWJsZSkge1xuICAgIHNvcnRhYmxlLmlzU2NvcGUgPyBhY2MucHVzaC5hcHBseShhY2MsIHNvcnRhYmxlLmNvbnRlbnQpIDogYWNjLnB1c2goc29ydGFibGUuY29udGVudCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pLmNvbmNhdChyZWd1bGFyVGFiYmFibGVzKTtcbn07XG52YXIgdGFiYmFibGUgPSBmdW5jdGlvbiB0YWJiYWJsZShlbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtlbF0sIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwge1xuICAgICAgZmlsdGVyOiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUuYmluZChudWxsLCBvcHRpb25zKSxcbiAgICAgIGZsYXR0ZW46IGZhbHNlLFxuICAgICAgZ2V0U2hhZG93Um9vdDogb3B0aW9ucy5nZXRTaGFkb3dSb290LFxuICAgICAgc2hhZG93Um9vdEZpbHRlcjogaXNWYWxpZFNoYWRvd1Jvb3RUYWJiYWJsZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNhbmRpZGF0ZXMgPSBnZXRDYW5kaWRhdGVzKGVsLCBvcHRpb25zLmluY2x1ZGVDb250YWluZXIsIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JUYWJiYWJsZS5iaW5kKG51bGwsIG9wdGlvbnMpKTtcbiAgfVxuICByZXR1cm4gc29ydEJ5T3JkZXIoY2FuZGlkYXRlcyk7XG59O1xudmFyIGZvY3VzYWJsZSA9IGZ1bmN0aW9uIGZvY3VzYWJsZShlbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGNhbmRpZGF0ZXM7XG4gIGlmIChvcHRpb25zLmdldFNoYWRvd1Jvb3QpIHtcbiAgICBjYW5kaWRhdGVzID0gZ2V0Q2FuZGlkYXRlc0l0ZXJhdGl2ZWx5KFtlbF0sIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwge1xuICAgICAgZmlsdGVyOiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlLmJpbmQobnVsbCwgb3B0aW9ucyksXG4gICAgICBmbGF0dGVuOiB0cnVlLFxuICAgICAgZ2V0U2hhZG93Um9vdDogb3B0aW9ucy5nZXRTaGFkb3dSb290XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY2FuZGlkYXRlcyA9IGdldENhbmRpZGF0ZXMoZWwsIG9wdGlvbnMuaW5jbHVkZUNvbnRhaW5lciwgaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZS5iaW5kKG51bGwsIG9wdGlvbnMpKTtcbiAgfVxuICByZXR1cm4gY2FuZGlkYXRlcztcbn07XG52YXIgaXNUYWJiYWJsZSA9IGZ1bmN0aW9uIGlzVGFiYmFibGUobm9kZSwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKCFub2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBub2RlIHByb3ZpZGVkJyk7XG4gIH1cbiAgaWYgKG1hdGNoZXMuY2FsbChub2RlLCBjYW5kaWRhdGVTZWxlY3RvcikgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yVGFiYmFibGUob3B0aW9ucywgbm9kZSk7XG59O1xudmFyIGZvY3VzYWJsZUNhbmRpZGF0ZVNlbGVjdG9yID0gLyogI19fUFVSRV9fICovY2FuZGlkYXRlU2VsZWN0b3JzLmNvbmNhdCgnaWZyYW1lJykuam9pbignLCcpO1xudmFyIGlzRm9jdXNhYmxlID0gZnVuY3Rpb24gaXNGb2N1c2FibGUobm9kZSwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKCFub2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBub2RlIHByb3ZpZGVkJyk7XG4gIH1cbiAgaWYgKG1hdGNoZXMuY2FsbChub2RlLCBmb2N1c2FibGVDYW5kaWRhdGVTZWxlY3RvcikgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlKG9wdGlvbnMsIG5vZGUpO1xufTtcblxuZXhwb3J0IHsgZm9jdXNhYmxlLCBpc0ZvY3VzYWJsZSwgaXNUYWJiYWJsZSwgdGFiYmFibGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzbS5qcy5tYXBcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1BvcHVwLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Qb3B1cC5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYmxvY2sgfSBmcm9tICcuLi91dGlscy9jbic7XG5pbXBvcnQgJy4vUG9wdXAuY3NzJztcbmNvbnN0IGIgPSBibG9jaygncG9wdXAnKTtcbmV4cG9ydCBmdW5jdGlvbiBQb3B1cEFycm93KHsgc3R5bGVzLCBhdHRyaWJ1dGVzLCBzZXRBcnJvd1JlZiB9KSB7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oeyBcImRhdGEtcG9wcGVyLWFycm93XCI6IHRydWUsIHJlZjogc2V0QXJyb3dSZWYsIGNsYXNzTmFtZTogYignYXJyb3cnKSwgc3R5bGU6IHN0eWxlcyB9LCBhdHRyaWJ1dGVzKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignYXJyb3ctY29udGVudCcpIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdhcnJvdy1jaXJjbGUtd3JhcHBlcicpIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignYXJyb3ctY2lyY2xlJywgeyBsZWZ0OiB0cnVlIH0pIH0pKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2Fycm93LWNpcmNsZS13cmFwcGVyJykgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdhcnJvdy1jaXJjbGUnLCB7IHJpZ2h0OiB0cnVlIH0pIH0pKSkpKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRVbmlxSWQgfSBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgZnVuY3Rpb24gdXNlVW5pcUlkKCkge1xuICAgIGNvbnN0IGlkUmVmID0gUmVhY3QudXNlUmVmKGdldFVuaXFJZCgpKTtcbiAgICByZXR1cm4gaWRSZWYuY3VycmVudDtcbn1cbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlRm9jdXNUcmFwIH0gZnJvbSAnZm9jdXMtdHJhcCc7XG5pbXBvcnQgeyB1c2VVbmlxSWQgfSBmcm9tICcuL3VzZVVuaXFJZCc7XG5pbXBvcnQgeyB1c2VGb3JrUmVmIH0gZnJvbSAnLi91c2VGb3JrUmVmJztcbmNvbnN0IGZvY3VzVHJhcENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG5leHBvcnQgZnVuY3Rpb24gRm9jdXNUcmFwKHsgY2hpbGRyZW4sIGVuYWJsZWQgPSB0cnVlLCBkaXNhYmxlQXV0b0ZvY3VzIH0pIHtcbiAgICBjb25zdCBub2RlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNldEF1dG9Gb2N1c1JlZiA9IFJlYWN0LnVzZVJlZighZGlzYWJsZUF1dG9Gb2N1cyk7XG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0QXV0b0ZvY3VzUmVmLmN1cnJlbnQgPSAhZGlzYWJsZUF1dG9Gb2N1cztcbiAgICB9KTtcbiAgICBjb25zdCBmb2N1c1RyYXBSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgICBpZiAoIWZvY3VzVHJhcFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGZvY3VzVHJhcFJlZi5jdXJyZW50ID0gY3JlYXRlRm9jdXNUcmFwKFtdLCB7XG4gICAgICAgICAgICBpbml0aWFsRm9jdXM6ICgpID0+IHNldEF1dG9Gb2N1c1JlZi5jdXJyZW50ICYmIGdldEZvY3VzRWxlbWVudChub2RlUmVmLmN1cnJlbnQpLFxuICAgICAgICAgICAgZmFsbGJhY2tGb2N1czogKCkgPT4gbm9kZVJlZi5jdXJyZW50LFxuICAgICAgICAgICAgcmV0dXJuRm9jdXNPbkRlYWN0aXZhdGU6IGZhbHNlLFxuICAgICAgICAgICAgZXNjYXBlRGVhY3RpdmF0ZXM6IGZhbHNlLFxuICAgICAgICAgICAgY2xpY2tPdXRzaWRlRGVhY3RpdmF0ZXM6IGZhbHNlLFxuICAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXJzUmVmID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgICBjb25zdCB1cGRhdGVDb250YWluZXJFbGVtZW50cyA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSBmb2N1c1RyYXBSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzKFtcbiAgICAgICAgICAgIG5vZGVSZWYuY3VycmVudCxcbiAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoY29udGFpbmVyc1JlZi5jdXJyZW50KSxcbiAgICAgICAgXSk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGFjdGlvbnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIGFkZE5vZGUoaWQsIG5vZGUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmIChjb250YWluZXJzUmVmLmN1cnJlbnRbaWRdICE9PSBub2RlICYmICEoKF9hID0gbm9kZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMobm9kZSkpKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyc1JlZi5jdXJyZW50W2lkXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ29udGFpbmVyRWxlbWVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlTm9kZShpZCkge1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcnNSZWYuY3VycmVudFtpZF0pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgY29udGFpbmVyc1JlZi5jdXJyZW50W2lkXTtcbiAgICAgICAgICAgICAgICB1cGRhdGVDb250YWluZXJFbGVtZW50cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pLCBbdXBkYXRlQ29udGFpbmVyRWxlbWVudHNdKTtcbiAgICBjb25zdCBoYW5kbGVOb2RlUmVmID0gUmVhY3QudXNlQ2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGVuYWJsZWQgJiYgbm9kZSkge1xuICAgICAgICAgICAgbm9kZVJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAgIHVwZGF0ZUNvbnRhaW5lckVsZW1lbnRzKCk7XG4gICAgICAgICAgICAoX2EgPSBmb2N1c1RyYXBSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmFjdGl2YXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAoX2IgPSBmb2N1c1RyYXBSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmRlYWN0aXZhdGUoKTtcbiAgICAgICAgICAgIG5vZGVSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LCBbZW5hYmxlZCwgdXBkYXRlQ29udGFpbmVyRWxlbWVudHNdKTtcbiAgICBjb25zdCBjaGlsZCA9IFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgIGlmICghUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2hpbGRyZW4gbXVzdCBjb250YWluIG9ubHkgb25lIHZhbGlkIGVsZW1lbnQnKTtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRSZWYgPSBjaGlsZC5yZWY7XG4gICAgY29uc3QgcmVmID0gdXNlRm9ya1JlZihoYW5kbGVOb2RlUmVmLCBjaGlsZFJlZik7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KGZvY3VzVHJhcENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGFjdGlvbnMgfSwgUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCB7IHJlZiB9KSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhcmVudEZvY3VzVHJhcCgpIHtcbiAgICBjb25zdCBhY3Rpb25zID0gdXNlQ29udGV4dChmb2N1c1RyYXBDb250ZXh0KTtcbiAgICBjb25zdCBpZCA9IHVzZVVuaXFJZCgpO1xuICAgIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCFhY3Rpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zLmFkZE5vZGUoaWQsIG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWN0aW9ucy5yZW1vdmVOb2RlKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9LCBbYWN0aW9ucywgaWRdKTtcbn1cbmZ1bmN0aW9uIGdldEZvY3VzRWxlbWVudChyb290KSB7XG4gICAgaWYgKHJvb3QgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCcnKTtcbiAgICB9XG4gICAgaWYgKCEoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB8fFxuICAgICAgICAhcm9vdC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICBpZiAoIXJvb3QuaGFzQXR0cmlidXRlKCd0YWJJbmRleCcpKSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgICAgIC8vIHVzZWQgb25seSBpbiBkZXYgYnVpbGRcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0BncmF2aXR5LXVpL3Vpa2l0OiBmb2N1cy10cmFwIGNvbnRlbnQgbm9kZSBkb2VzIG5vZGUgYWNjZXB0IGZvY3VzLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ3RhYkluZGV4JywgJy0xJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvb3Q7XG4gICAgfVxuICAgIHJldHVybiBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENTU1RyYW5zaXRpb24gfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbmltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vdXRpbHMvY24nO1xuaW1wb3J0IHsgZ2V0Q1NTVHJhbnNpdGlvbkNsYXNzTmFtZXMgfSBmcm9tICcuLi91dGlscy90cmFuc2l0aW9uJztcbmltcG9ydCB7IFBvcnRhbCB9IGZyb20gJy4uL1BvcnRhbCc7XG5pbXBvcnQgeyB1c2VMYXllciB9IGZyb20gJy4uL3V0aWxzL3VzZUxheWVyJztcbmltcG9ydCB7IHVzZVBvcHBlciwgfSBmcm9tICcuLi91dGlscy91c2VQb3BwZXInO1xuaW1wb3J0IHsgdXNlRm9ya1JlZiB9IGZyb20gJy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHsgdXNlUmVzdG9yZUZvY3VzIH0gZnJvbSAnLi4vdXRpbHMvdXNlUmVzdG9yZUZvY3VzJztcbmltcG9ydCB7IFBvcHVwQXJyb3cgfSBmcm9tICcuL1BvcHVwQXJyb3cnO1xuaW1wb3J0IHsgdXNlUGFyZW50Rm9jdXNUcmFwIH0gZnJvbSAnLi4vdXRpbHMvRm9jdXNUcmFwJztcbmltcG9ydCAnLi9Qb3B1cC5jc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdwb3B1cCcpO1xuY29uc3QgYldyYXBwZXIgPSBibG9jaygncG9wdXAtd3JhcHBlcicpO1xuY29uc3QgQVJST1dfU0laRSA9IDg7XG5leHBvcnQgZnVuY3Rpb24gUG9wdXAoeyBrZWVwTW91bnRlZCA9IGZhbHNlLCBoYXNBcnJvdyA9IGZhbHNlLCBvZmZzZXQgPSBbMCwgNF0sIG9wZW4sIHBsYWNlbWVudCwgYW5jaG9yUmVmLCBkaXNhYmxlRXNjYXBlS2V5RG93biwgZGlzYWJsZU91dHNpZGVDbGljaywgZGlzYWJsZUxheWVyLCBzdHlsZSwgY2xhc3NOYW1lLCBtb2RpZmllcnMgPSBbXSwgY2hpbGRyZW4sIG9uRXNjYXBlS2V5RG93biwgb25PdXRzaWRlQ2xpY2ssIG9uQ2xvc2UsIG9uQ2xpY2ssIG9uTW91c2VFbnRlciwgb25Nb3VzZUxlYXZlLCBkaXNhYmxlUG9ydGFsLCBjb250YWluZXIsIHN0cmF0ZWd5LCBxYSwgcmVzdG9yZUZvY3VzLCByZXN0b3JlRm9jdXNSZWYsIH0pIHtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdXNlTGF5ZXIoe1xuICAgICAgICBvcGVuLFxuICAgICAgICBkaXNhYmxlRXNjYXBlS2V5RG93bixcbiAgICAgICAgZGlzYWJsZU91dHNpZGVDbGljayxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvbk91dHNpZGVDbGljayxcbiAgICAgICAgb25DbG9zZSxcbiAgICAgICAgY29udGVudFJlZnM6IFthbmNob3JSZWYsIGNvbnRhaW5lclJlZl0sXG4gICAgICAgIGVuYWJsZWQ6ICFkaXNhYmxlTGF5ZXIsXG4gICAgfSk7XG4gICAgY29uc3QgeyBhdHRyaWJ1dGVzLCBzdHlsZXMsIHNldFBvcHBlclJlZiwgc2V0QXJyb3dSZWYgfSA9IHVzZVBvcHBlcih7XG4gICAgICAgIGFuY2hvclJlZixcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAvLyBUYWtlIGFycm93IHNpemUgaW50byBvZmZzZXQgYWNjb3VudFxuICAgICAgICBvZmZzZXQ6IGhhc0Fycm93ID8gW29mZnNldFswXSwgb2Zmc2V0WzFdICsgQVJST1dfU0laRV0gOiBvZmZzZXQsXG4gICAgICAgIHN0cmF0ZWd5LFxuICAgICAgICBhbHRCb3VuZGFyeTogZGlzYWJsZVBvcnRhbCxcbiAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgICAvLyBQcm9wZXJseSBkaXNwbGF5IGFycm93IHdpdGhpbiByb3VuZGVkIGNvbnRhaW5lclxuICAgICAgICAgICAgeyBuYW1lOiAnYXJyb3cnLCBvcHRpb25zOiB7IGVuYWJsZWQ6IGhhc0Fycm93LCBwYWRkaW5nOiA0IH0gfSxcbiAgICAgICAgICAgIC8vIFByZXZlbnQgYm9yZGVyIGhpZGluZ1xuICAgICAgICAgICAgeyBuYW1lOiAncHJldmVudE92ZXJmbG93Jywgb3B0aW9uczogeyBwYWRkaW5nOiAxLCBhbHRCb3VuZGFyeTogZGlzYWJsZVBvcnRhbCB9IH0sXG4gICAgICAgICAgICAuLi5tb2RpZmllcnMsXG4gICAgICAgIF0sXG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihzZXRQb3BwZXJSZWYsIGNvbnRhaW5lclJlZiwgdXNlUGFyZW50Rm9jdXNUcmFwKCkpO1xuICAgIGNvbnN0IGNvbnRhaW5lclByb3BzID0gdXNlUmVzdG9yZUZvY3VzKHtcbiAgICAgICAgZW5hYmxlZDogQm9vbGVhbihyZXN0b3JlRm9jdXMgJiYgb3BlbiksXG4gICAgICAgIHJlc3RvcmVGb2N1c1JlZixcbiAgICB9KTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUG9ydGFsLCB7IGNvbnRhaW5lcjogY29udGFpbmVyLCBkaXNhYmxlUG9ydGFsOiBkaXNhYmxlUG9ydGFsIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTVHJhbnNpdGlvbiwgeyBub2RlUmVmOiBjb250YWluZXJSZWYsIGluOiBvcGVuLCBhZGRFbmRMaXN0ZW5lcjogKGRvbmUpID0+IHsgdmFyIF9hOyByZXR1cm4gKF9hID0gY29udGFpbmVyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCBkb25lKTsgfSwgY2xhc3NOYW1lczogZ2V0Q1NTVHJhbnNpdGlvbkNsYXNzTmFtZXMoYldyYXBwZXIpLCBtb3VudE9uRW50ZXI6ICFrZWVwTW91bnRlZCwgdW5tb3VudE9uRXhpdDogIWtlZXBNb3VudGVkLCBhcHBlYXI6IHRydWUgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgT2JqZWN0LmFzc2lnbih7IHJlZjogaGFuZGxlUmVmLCBzdHlsZTogc3R5bGVzLnBvcHBlciB9LCBhdHRyaWJ1dGVzLnBvcHBlciwgY29udGFpbmVyUHJvcHMsIHsgY2xhc3NOYW1lOiBiV3JhcHBlcih7IG9wZW4gfSkgfSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IG9uQ2xpY2s6IG9uQ2xpY2ssIG9uTW91c2VFbnRlcjogb25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmU6IG9uTW91c2VMZWF2ZSwgY2xhc3NOYW1lOiBiKHsgb3BlbiB9LCBjbGFzc05hbWUpLCBzdHlsZTogc3R5bGUsIFwiZGF0YS1xYVwiOiBxYSB9LFxuICAgICAgICAgICAgICAgICAgICBoYXNBcnJvdyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChQb3B1cEFycm93LCB7IHN0eWxlczogc3R5bGVzLmFycm93LCBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLmFycm93LCBzZXRBcnJvd1JlZjogc2V0QXJyb3dSZWYgfSkpLFxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbikpKSkpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGxheWVyTWFuYWdlciB9IGZyb20gJy4vTGF5ZXJNYW5hZ2VyJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VMYXllcih7IG9wZW4sIGRpc2FibGVFc2NhcGVLZXlEb3duLCBkaXNhYmxlT3V0c2lkZUNsaWNrLCBvbkVzY2FwZUtleURvd24sIG9uRW50ZXJLZXlEb3duLCBvbk91dHNpZGVDbGljaywgb25DbG9zZSwgY29udGVudFJlZnMsIGVuYWJsZWQgPSB0cnVlLCB9KSB7XG4gICAgY29uc3QgbGF5ZXJDb25maWdSZWYgPSBSZWFjdC51c2VSZWYoe1xuICAgICAgICBkaXNhYmxlRXNjYXBlS2V5RG93bixcbiAgICAgICAgZGlzYWJsZU91dHNpZGVDbGljayxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvbkVudGVyS2V5RG93bixcbiAgICAgICAgb25PdXRzaWRlQ2xpY2ssXG4gICAgICAgIG9uQ2xvc2UsXG4gICAgICAgIGNvbnRlbnRSZWZzLFxuICAgIH0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24obGF5ZXJDb25maWdSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgZGlzYWJsZUVzY2FwZUtleURvd24sXG4gICAgICAgICAgICBkaXNhYmxlT3V0c2lkZUNsaWNrLFxuICAgICAgICAgICAgb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICAgICAgb25FbnRlcktleURvd24sXG4gICAgICAgICAgICBvbk91dHNpZGVDbGljayxcbiAgICAgICAgICAgIG9uQ2xvc2UsXG4gICAgICAgICAgICBjb250ZW50UmVmcyxcbiAgICAgICAgICAgIGVuYWJsZWQsXG4gICAgICAgIH0pO1xuICAgIH0sIFtcbiAgICAgICAgZGlzYWJsZUVzY2FwZUtleURvd24sXG4gICAgICAgIGRpc2FibGVPdXRzaWRlQ2xpY2ssXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb25FbnRlcktleURvd24sXG4gICAgICAgIG9uT3V0c2lkZUNsaWNrLFxuICAgICAgICBvbkNsb3NlLFxuICAgICAgICBjb250ZW50UmVmcyxcbiAgICAgICAgZW5hYmxlZCxcbiAgICBdKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAob3BlbiAmJiBlbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNvbmZpZyA9IGxheWVyQ29uZmlnUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBsYXllck1hbmFnZXIuYWRkKGxheWVyQ29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGF5ZXJNYW5hZ2VyLnJlbW92ZShsYXllckNvbmZpZyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSwgW29wZW4sIGVuYWJsZWRdKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc1RhYmJhYmxlLCBpc0ZvY3VzYWJsZSB9IGZyb20gJ3RhYmJhYmxlJztcbmV4cG9ydCBmdW5jdGlvbiB1c2VSZXN0b3JlRm9jdXMoeyBlbmFibGVkLCByZXN0b3JlRm9jdXNSZWYsIGZvY3VzVHJhcHBlZCB9KSB7XG4gICAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGluaXRpYWxBY3RpdmVFbGVtZW50UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGxhc3RBY3RpdmVFbGVtZW50UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChlbmFibGVkICYmIGluaXRpYWxBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGluaXRpYWxBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgICAgICAgICAgbGFzdEFjdGl2ZUVsZW1lbnRSZWYuY3VycmVudCA9IGluaXRpYWxBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoYW5kbGVGb2N1c0luID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKCFmb2N1c1RyYXBwZWQgJiYgZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzVGFiYmFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsYXN0QWN0aXZlRWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIGlzVGFiYmFibGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBsYXN0QWN0aXZlRWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxhc3RBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgICAgIH07XG4gICAgfSwgW2VuYWJsZWQsIGZvY3VzVHJhcHBlZF0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSAoX2EgPSAoKHJlc3RvcmVGb2N1c1JlZiA9PT0gbnVsbCB8fCByZXN0b3JlRm9jdXNSZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3RvcmVGb2N1c1JlZi5jdXJyZW50KSB8fCBpbml0aWFsQWN0aXZlRWxlbWVudFJlZi5jdXJyZW50KSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogbnVsbDtcbiAgICB9KTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBjb25zdCBsYXN0QWN0aXZlID0gbGFzdEFjdGl2ZUVsZW1lbnRSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmIChsYXN0QWN0aXZlICYmIGRvY3VtZW50LmNvbnRhaW5zKGxhc3RBY3RpdmUpICYmIGlzVGFiYmFibGUobGFzdEFjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gbGFzdEFjdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQuZm9jdXMgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5jb250YWlucyhlbGVtZW50KSAmJlxuICAgICAgICAgICAgICAgIGlzRm9jdXNhYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluaXRpYWxBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGxhc3RBY3RpdmVFbGVtZW50UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtlbmFibGVkXSk7XG4gICAgcmV0dXJuIHsgb25Gb2N1czogaGFuZGxlRm9jdXMgfTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VQb3BwZXIgYXMgdXNlUmVhY3RQb3BwZXIgfSBmcm9tICdyZWFjdC1wb3BwZXInO1xuZXhwb3J0IHZhciBQb3BwZXJQb3NpdGlvbjtcbihmdW5jdGlvbiAoUG9wcGVyUG9zaXRpb24pIHtcbiAgICBQb3BwZXJQb3NpdGlvbltcIkJPVFRPTV9TVEFSVFwiXSA9IFwiYm90dG9tLXN0YXJ0XCI7XG4gICAgUG9wcGVyUG9zaXRpb25bXCJCT1RUT01cIl0gPSBcImJvdHRvbVwiO1xuICAgIFBvcHBlclBvc2l0aW9uW1wiQk9UVE9NX0VORFwiXSA9IFwiYm90dG9tLWVuZFwiO1xuICAgIFBvcHBlclBvc2l0aW9uW1wiVE9QX1NUQVJUXCJdID0gXCJ0b3Atc3RhcnRcIjtcbiAgICBQb3BwZXJQb3NpdGlvbltcIlRPUFwiXSA9IFwidG9wXCI7XG4gICAgUG9wcGVyUG9zaXRpb25bXCJUT1BfRU5EXCJdID0gXCJ0b3AtZW5kXCI7XG4gICAgUG9wcGVyUG9zaXRpb25bXCJSSUdIVF9TVEFSVFwiXSA9IFwicmlnaHQtc3RhcnRcIjtcbiAgICBQb3BwZXJQb3NpdGlvbltcIlJJR0hUXCJdID0gXCJyaWdodFwiO1xuICAgIFBvcHBlclBvc2l0aW9uW1wiUklHSFRfRU5EXCJdID0gXCJyaWdodC1lbmRcIjtcbiAgICBQb3BwZXJQb3NpdGlvbltcIkxFRlRfU1RBUlRcIl0gPSBcImxlZnQtc3RhcnRcIjtcbiAgICBQb3BwZXJQb3NpdGlvbltcIkxFRlRcIl0gPSBcImxlZnRcIjtcbiAgICBQb3BwZXJQb3NpdGlvbltcIkxFRlRfRU5EXCJdID0gXCJsZWZ0LWVuZFwiO1xufSkoUG9wcGVyUG9zaXRpb24gfHwgKFBvcHBlclBvc2l0aW9uID0ge30pKTtcbmNvbnN0IERFRkFVTFRfUExBQ0VNRU5UID0gT2JqZWN0LnZhbHVlcyhQb3BwZXJQb3NpdGlvbik7XG5leHBvcnQgZnVuY3Rpb24gdXNlUG9wcGVyKHByb3BzKSB7XG4gICAgY29uc3QgeyBhbmNob3IsIHBsYWNlbWVudCA9IERFRkFVTFRfUExBQ0VNRU5ULCBvZmZzZXQsIG1vZGlmaWVycyA9IFtdIH0gPSBwcm9wcztcbiAgICBjb25zdCBbcG9wcGVyRWxlbWVudCwgc2V0UG9wcGVyRWxlbWVudF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbYXJyb3dFbGVtZW50LCBzZXRBcnJvd0VsZW1lbnRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgcGxhY2VtZW50cyA9IEFycmF5LmlzQXJyYXkocGxhY2VtZW50KSA/IHBsYWNlbWVudCA6IFtwbGFjZW1lbnRdO1xuICAgIGNvbnN0IHsgYXR0cmlidXRlcywgc3R5bGVzIH0gPSB1c2VSZWFjdFBvcHBlcihhbmNob3IsIHBvcHBlckVsZW1lbnQsIHtcbiAgICAgICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgICAgeyBuYW1lOiAnYXJyb3cnLCBvcHRpb25zOiB7IGVuYWJsZWQ6IEJvb2xlYW4oYXJyb3dFbGVtZW50KSwgZWxlbWVudDogYXJyb3dFbGVtZW50IH0gfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ29mZnNldCcsIG9wdGlvbnM6IHsgb2Zmc2V0IH0gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZmxpcCcsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBvcHBlclBvc2l0aW9uLkJPVFRPTSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFBvcHBlclBvc2l0aW9uLlJJR0hULFxuICAgICAgICAgICAgICAgICAgICAgICAgUG9wcGVyUG9zaXRpb24uTEVGVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFBvcHBlclBvc2l0aW9uLlRPUCxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBncHVBY2NlbGVyYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4ubW9kaWZpZXJzLFxuICAgICAgICBdLFxuICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHNbMF0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICBzZXRQb3BwZXJSZWY6IHNldFBvcHBlckVsZW1lbnQsXG4gICAgICAgIHNldEFycm93UmVmOiBzZXRBcnJvd0VsZW1lbnQsXG4gICAgfTtcbn1cbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0NvbnRyb2wuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250cm9sLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IHsgUG9wdXAsIEJ1dHRvbiB9IGZyb20gJ0BncmF2aXR5LXVpL3Vpa2l0JztcbmltcG9ydCB7IENvbnRyb2xTaXplcyB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBQb3BwZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2hvb2tzJztcbmltcG9ydCAnLi9Db250cm9sLnNjc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdkYy1jb250cm9sJyk7XG5jb25zdCBJQ09OU19TSVpFUyA9IHtcbiAgICBbQ29udHJvbFNpemVzLk1dOiAxNixcbiAgICBbQ29udHJvbFNpemVzLkxdOiAyMCxcbn07XG5jb25zdCBDb250cm9sID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBvbkNsaWNrLCBjbGFzc05hbWUsIHRvb2x0aXBUZXh0LCBpc1ZlcnRpY2FsVmlldywgc2V0UmVmLCBzaXplID0gQ29udHJvbFNpemVzLk0sIGljb24sIHBvcHVwUG9zaXRpb24sIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250cm9sUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtpc1Zpc2libGVUb29sdGlwLCBzZXRJc1Zpc2libGVUb29sdGlwXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzaG93VG9vbHRpcCA9ICgpID0+IHNldElzVmlzaWJsZVRvb2x0aXAodHJ1ZSk7XG4gICAgY29uc3QgaGlkZVRvb2x0aXAgPSAoKSA9PiBzZXRJc1Zpc2libGVUb29sdGlwKGZhbHNlKTtcbiAgICBjb25zdCBnZXRUb29sdGlwQWxpZ24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmIChwb3B1cFBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gcG9wdXBQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNWZXJ0aWNhbFZpZXcgPyBQb3BwZXJQb3NpdGlvbi5MRUZUX1NUQVJUIDogUG9wcGVyUG9zaXRpb24uQk9UVE9NX0VORDtcbiAgICB9LCBbaXNWZXJ0aWNhbFZpZXcsIHBvcHVwUG9zaXRpb25dKTtcbiAgICBjb25zdCBfc2V0UmVmID0gdXNlQ2FsbGJhY2soKHJlZikgPT4ge1xuICAgICAgICBjb250cm9sUmVmLmN1cnJlbnQgPSByZWY7XG4gICAgICAgIGlmIChzZXRSZWYpIHtcbiAgICAgICAgICAgIHNldFJlZihyZWYpO1xuICAgICAgICB9XG4gICAgfSwgW3NldFJlZl0pO1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZ2V0VG9vbHRpcEFsaWduKCk7XG4gICAgY29uc3QgSWNvbiA9IGljb247XG4gICAgY29uc3QgaWNvblNpemUgPSBJQ09OU19TSVpFU1tzaXplXTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLCB7IHZpZXc6IFwiZmxhdC1zZWNvbmRhcnlcIiwgb25DbGljazogb25DbGljaywgcmVmOiBfc2V0UmVmLCBvbk1vdXNlRW50ZXI6IHNob3dUb29sdGlwLCBvbk1vdXNlTGVhdmU6IGhpZGVUb29sdGlwLCBjbGFzc05hbWU6IGIobnVsbCwgY2xhc3NOYW1lKSwgc2l6ZTogc2l6ZSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b24uSWNvbiwgbnVsbCxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEljb24sIHsgd2lkdGg6IGljb25TaXplLCBoZWlnaHQ6IGljb25TaXplIH0pKSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUG9wdXAsIHsgYW5jaG9yUmVmOiBjb250cm9sUmVmLCBvcGVuOiBpc1Zpc2libGVUb29sdGlwLCBvbk91dHNpZGVDbGljazogaGlkZVRvb2x0aXAsIGNsYXNzTmFtZTogYigndG9vbHRpcCcpLCBwbGFjZW1lbnQ6IHBvc2l0aW9uIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYigndG9vbHRpcC10ZXh0JykgfSwgdG9vbHRpcFRleHQpKSkpO1xufTtcbkNvbnRyb2wuZGlzcGxheU5hbWUgPSAnRENDb250cm9sJztcbmV4cG9ydCBkZWZhdWx0IENvbnRyb2w7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250cm9sTGFiZWwuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0NvbnRyb2xMYWJlbC5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgZm9yd2FyZFJlZiwgY2xvbmVFbGVtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYmxvY2sgfSBmcm9tICcuLi91dGlscy9jbic7XG5pbXBvcnQgJy4vQ29udHJvbExhYmVsLmNzcyc7XG5jb25zdCBiID0gYmxvY2soJ2NvbnRyb2wtbGFiZWwnKTtcbi8qKlxuICogV3JhcCB3aXRoIGxhYmVsIGZvciBgPENoZWNrYm94Lz5gLCBgPFJhZGlvLz5gLCBgPFN3aXRjaC8+YFxuICovXG5leHBvcnQgY29uc3QgQ29udHJvbExhYmVsID0gZm9yd2FyZFJlZigoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBsYWJlbENsYXNzTmFtZSwgdGl0bGUsIHN0eWxlLCBkaXNhYmxlZCA9IGZhbHNlLCBjb250cm9sLCBzaXplID0gJ20nLCBxYSwgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgY2xvbmVkQ29udHJvbCA9IGNsb25lRWxlbWVudChjb250cm9sLCB7XG4gICAgICAgIGNsYXNzTmFtZTogYignaW5kaWNhdG9yJywgY29udHJvbC5wcm9wcy5jbGFzc05hbWUpLFxuICAgIH0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImxhYmVsXCIsIHsgcmVmOiByZWYsIHRpdGxlOiB0aXRsZSwgc3R5bGU6IHN0eWxlLCBjbGFzc05hbWU6IGIoeyBzaXplLCBkaXNhYmxlZCB9LCBjbGFzc05hbWUpLCBcImRhdGEtcWFcIjogcWEgfSxcbiAgICAgICAgY2xvbmVkQ29udHJvbCxcbiAgICAgICAgY2hpbGRyZW4gPyBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYigndGV4dCcsIGxhYmVsQ2xhc3NOYW1lKSB9LCBjaGlsZHJlbikgOiBudWxsKSk7XG59KTtcbkNvbnRyb2xMYWJlbC5kaXNwbGF5TmFtZSA9ICdDb250cm9sTGFiZWwnO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUZvcmtSZWYgfSBmcm9tICcuL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHsgZXZlbnRCcm9rZXIgfSBmcm9tICcuL2V2ZW50LWJyb2tlcic7XG5leHBvcnQgZnVuY3Rpb24gdXNlQ2hlY2tib3goeyBuYW1lLCB2YWx1ZSwgaWQsIGRlZmF1bHRDaGVja2VkLCBjaGVja2VkLCBpbmRldGVybWluYXRlLCBvblVwZGF0ZSwgb25DaGFuZ2UsIGNvbnRyb2xSZWYsIGNvbnRyb2xQcm9wcywgb25Gb2N1cywgb25CbHVyLCBkaXNhYmxlZCwgfSkge1xuICAgIGNvbnN0IGlubmVyQ29udHJvbFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbY2hlY2tlZFN0YXRlLCBzZXRDaGVja2VkU3RhdGVdID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdENoZWNrZWQgIT09IG51bGwgJiYgZGVmYXVsdENoZWNrZWQgIT09IHZvaWQgMCA/IGRlZmF1bHRDaGVja2VkIDogZmFsc2UpO1xuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHR5cGVvZiBjaGVja2VkID09PSAnYm9vbGVhbic7XG4gICAgY29uc3QgaXNDaGVja2VkID0gaXNDb250cm9sbGVkID8gY2hlY2tlZCA6IGNoZWNrZWRTdGF0ZTtcbiAgICBjb25zdCBpbnB1dENoZWNrZWQgPSBpbmRldGVybWluYXRlID8gZmFsc2UgOiBjaGVja2VkO1xuICAgIGNvbnN0IGlucHV0QXJpYUNoZWNrZWQgPSBpbmRldGVybWluYXRlID8gJ21peGVkJyA6IGlzQ2hlY2tlZDtcbiAgICBjb25zdCBoYW5kbGVSZWYgPSB1c2VGb3JrUmVmKGNvbnRyb2xSZWYsIGlubmVyQ29udHJvbFJlZik7XG4gICAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGlubmVyQ29udHJvbFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBpbm5lckNvbnRyb2xSZWYuY3VycmVudC5pbmRldGVybWluYXRlID0gQm9vbGVhbihpbmRldGVybWluYXRlKTtcbiAgICAgICAgfVxuICAgIH0sIFtpbmRldGVybWluYXRlXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNDb250cm9sbGVkKSB7XG4gICAgICAgICAgICBzZXRDaGVja2VkU3RhdGUoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvblVwZGF0ZSkge1xuICAgICAgICAgICAgb25VcGRhdGUoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVDbGlja0NhcHR1cmUgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnRCcm9rZXIucHVibGlzaCh7XG4gICAgICAgICAgICBjb21wb25lbnRJZDogJ0NoZWNrYm94JyxcbiAgICAgICAgICAgIGV2ZW50SWQ6ICdjbGljaycsXG4gICAgICAgICAgICBkb21FdmVudDogZXZlbnQsXG4gICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgICAgY2hlY2tlZDogZXZlbnQudGFyZ2V0LmNoZWNrZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaW5wdXRQcm9wcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY29udHJvbFByb3BzKSwgeyBuYW1lLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaWQsXG4gICAgICAgIG9uRm9jdXMsXG4gICAgICAgIG9uQmx1cixcbiAgICAgICAgZGlzYWJsZWQsIHR5cGU6ICdjaGVja2JveCcsIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uQ2xpY2tDYXB0dXJlOiBoYW5kbGVDbGlja0NhcHR1cmUsIGRlZmF1bHRDaGVja2VkOiBkZWZhdWx0Q2hlY2tlZCwgY2hlY2tlZDogaW5wdXRDaGVja2VkLCAnYXJpYS1jaGVja2VkJzogaW5wdXRBcmlhQ2hlY2tlZCwgcmVmOiBoYW5kbGVSZWYgfSk7XG4gICAgcmV0dXJuIHsgY2hlY2tlZDogaXNDaGVja2VkLCBpbnB1dFByb3BzIH07XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGZ1bmN0aW9uIENoZWNrYm94VGlja0ljb24ocHJvcHMpIHtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgT2JqZWN0LmFzc2lnbih7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHZpZXdCb3g6IFwiMCAwIDEyIDEwXCIsIHdpZHRoOiBcIjE2XCIsIGhlaWdodDogXCIxNlwiLCBmaWxsOiBcImN1cnJlbnRDb2xvclwiIH0sIHByb3BzKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk0uNDkgNS4zODVsMS42NDQtMS42NDQgNC4zODUgNC4zODVMNC44NzQgOS43Ny40OSA1LjM4NXptNC4zODQgMS4wOTZMMTAuMzU2IDEgMTIgMi42NDQgNi41MTkgOC4xMjYgNC44NzQgNi40OHYuMDAxelwiIH0pKSk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGZ1bmN0aW9uIENoZWNrYm94RGFzaEljb24ocHJvcHMpIHtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgT2JqZWN0LmFzc2lnbih7IHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIHZpZXdCb3g6IFwiMCAwIDE3IDE3XCIsIHdpZHRoOiBcIjE2XCIsIGhlaWdodDogXCIxNlwiLCBmaWxsOiBcImN1cnJlbnRDb2xvclwiIH0sIHByb3BzKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk00IDdoOXYzSDR6XCIgfSkpKTtcbn1cbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0NoZWNrYm94LmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DaGVja2JveC5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29udHJvbExhYmVsIH0gZnJvbSAnLi4vQ29udHJvbExhYmVsJztcbmltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vdXRpbHMvY24nO1xuaW1wb3J0IHsgdXNlQ2hlY2tib3ggfSBmcm9tICcuLi91dGlscy91c2VDaGVja2JveCc7XG5pbXBvcnQgeyBDaGVja2JveFRpY2tJY29uIH0gZnJvbSAnLi9DaGVja2JveFRpY2tJY29uJztcbmltcG9ydCB7IENoZWNrYm94RGFzaEljb24gfSBmcm9tICcuL0NoZWNrYm94RGFzaEljb24nO1xuaW1wb3J0ICcuL0NoZWNrYm94LmNzcyc7XG5jb25zdCBiID0gYmxvY2soJ2NoZWNrYm94Jyk7XG5leHBvcnQgY29uc3QgQ2hlY2tib3ggPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENoZWNrYm94KHByb3BzLCByZWYpIHtcbiAgICBjb25zdCB7IHNpemUgPSAnbScsIGluZGV0ZXJtaW5hdGUsIGRpc2FibGVkID0gZmFsc2UsIGNvbnRlbnQsIGNoaWxkcmVuLCB0aXRsZSwgc3R5bGUsIGNsYXNzTmFtZSwgcWEsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IGNoZWNrZWQsIGlucHV0UHJvcHMgfSA9IHVzZUNoZWNrYm94KHByb3BzKTtcbiAgICBjb25zdCB0ZXh0ID0gY29udGVudCB8fCBjaGlsZHJlbjtcbiAgICBjb25zdCBjb250cm9sID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBiKCdpbmRpY2F0b3InKSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYignaWNvbicpLCBcImFyaWEtaGlkZGVuXCI6IHRydWUgfSwgaW5kZXRlcm1pbmF0ZSA/IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94RGFzaEljb24sIHsgY2xhc3NOYW1lOiBiKCdpY29uLXN2ZycsIHsgdHlwZTogJ2Rhc2gnIH0pIH0pKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENoZWNrYm94VGlja0ljb24sIHsgY2xhc3NOYW1lOiBiKCdpY29uLXN2ZycsIHsgdHlwZTogJ3RpY2snIH0pIH0pKSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCBpbnB1dFByb3BzLCB7IGNsYXNzTmFtZTogYignY29udHJvbCcpIH0pKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGIoJ291dGxpbmUnKSB9KSkpO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb250cm9sTGFiZWwsIHsgcmVmOiByZWYsIHRpdGxlOiB0aXRsZSwgc3R5bGU6IHN0eWxlLCBzaXplOiBzaXplLCBkaXNhYmxlZDogZGlzYWJsZWQsIGNsYXNzTmFtZTogYih7XG4gICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBpbmRldGVybWluYXRlLFxuICAgICAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgfSwgY2xhc3NOYW1lKSwgcWE6IHFhLCBjb250cm9sOiBjb250cm9sIH0sIHRleHQpKTtcbn0pO1xuIiwiLyoqXHJcbiAqIEEgY29sbGVjdGlvbiBvZiBzaGltcyB0aGF0IHByb3ZpZGUgbWluaW1hbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBFUzYgY29sbGVjdGlvbnMuXHJcbiAqXHJcbiAqIFRoZXNlIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IG1lYW50IHRvIGJlIHVzZWQgb3V0c2lkZSBvZiB0aGUgUmVzaXplT2JzZXJ2ZXJcclxuICogbW9kdWxlcyBhcyB0aGV5IGNvdmVyIG9ubHkgYSBsaW1pdGVkIHJhbmdlIG9mIHVzZSBjYXNlcy5cclxuICovXHJcbi8qIGVzbGludC1kaXNhYmxlIHJlcXVpcmUtanNkb2MsIHZhbGlkLWpzZG9jICovXHJcbnZhciBNYXBTaGltID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIHJldHVybiBNYXA7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgaW5kZXggaW4gcHJvdmlkZWQgYXJyYXkgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQga2V5LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7QXJyYXk8QXJyYXk+fSBhcnJcclxuICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBnZXRJbmRleChhcnIsIGtleSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSAtMTtcclxuICAgICAgICBhcnIuc29tZShmdW5jdGlvbiAoZW50cnksIGluZGV4KSB7XHJcbiAgICAgICAgICAgIGlmIChlbnRyeVswXSA9PT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmdW5jdGlvbiBjbGFzc18xKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9fZW50cmllc19fID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbGFzc18xLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fX2VudHJpZXNfXy5sZW5ndGg7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgICAgICogQHJldHVybnMgeyp9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBnZXRJbmRleCh0aGlzLl9fZW50cmllc19fLCBrZXkpO1xyXG4gICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLl9fZW50cmllc19fW2luZGV4XTtcclxuICAgICAgICAgICAgcmV0dXJuIGVudHJ5ICYmIGVudHJ5WzFdO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQHBhcmFtIHsqfSBrZXlcclxuICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlXHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcclxuICAgICAgICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXgodGhpcy5fX2VudHJpZXNfXywga2V5KTtcclxuICAgICAgICAgICAgaWYgKH5pbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fX2VudHJpZXNfX1tpbmRleF1bMV0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX19lbnRyaWVzX18ucHVzaChba2V5LCB2YWx1ZV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBAcGFyYW0geyp9IGtleVxyXG4gICAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICAgICAgdmFyIGVudHJpZXMgPSB0aGlzLl9fZW50cmllc19fO1xyXG4gICAgICAgICAgICB2YXIgaW5kZXggPSBnZXRJbmRleChlbnRyaWVzLCBrZXkpO1xyXG4gICAgICAgICAgICBpZiAofmluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICBlbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gISF+Z2V0SW5kZXgodGhpcy5fX2VudHJpZXNfXywga2V5KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNsYXNzXzEucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9fZW50cmllc19fLnNwbGljZSgwKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXHJcbiAgICAgICAgICogQHBhcmFtIHsqfSBbY3R4PW51bGxdXHJcbiAgICAgICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY2xhc3NfMS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChjYWxsYmFjaywgY3R4KSB7XHJcbiAgICAgICAgICAgIGlmIChjdHggPT09IHZvaWQgMCkgeyBjdHggPSBudWxsOyB9XHJcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSB0aGlzLl9fZW50cmllc19fOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gX2FbX2ldO1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbChjdHgsIGVudHJ5WzFdLCBlbnRyeVswXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBjbGFzc18xO1xyXG4gICAgfSgpKTtcclxufSkoKTtcblxuLyoqXHJcbiAqIERldGVjdHMgd2hldGhlciB3aW5kb3cgYW5kIGRvY3VtZW50IG9iamVjdHMgYXJlIGF2YWlsYWJsZSBpbiBjdXJyZW50IGVudmlyb25tZW50LlxyXG4gKi9cclxudmFyIGlzQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ID09PSBkb2N1bWVudDtcblxuLy8gUmV0dXJucyBnbG9iYWwgb2JqZWN0IG9mIGEgY3VycmVudCBlbnZpcm9ubWVudC5cclxudmFyIGdsb2JhbCQxID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwuTWF0aCA9PT0gTWF0aCkge1xyXG4gICAgICAgIHJldHVybiBnbG9iYWw7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PT0gTWF0aCkge1xyXG4gICAgICAgIHJldHVybiBzZWxmO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09PSBNYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdztcclxuICAgIH1cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xyXG4gICAgcmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XHJcbn0pKCk7XG5cbi8qKlxyXG4gKiBBIHNoaW0gZm9yIHRoZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgd2hpY2ggZmFsbHMgYmFjayB0byB0aGUgc2V0VGltZW91dCBpZlxyXG4gKiBmaXJzdCBvbmUgaXMgbm90IHN1cHBvcnRlZC5cclxuICpcclxuICogQHJldHVybnMge251bWJlcn0gUmVxdWVzdHMnIGlkZW50aWZpZXIuXHJcbiAqL1xyXG52YXIgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJDEgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAvLyBJdCdzIHJlcXVpcmVkIHRvIHVzZSBhIGJvdW5kZWQgZnVuY3Rpb24gYmVjYXVzZSBJRSBzb21ldGltZXMgdGhyb3dzXHJcbiAgICAgICAgLy8gYW4gXCJJbnZhbGlkIGNhbGxpbmcgb2JqZWN0XCIgZXJyb3IgaWYgckFGIGlzIGludm9rZWQgd2l0aG91dCB0aGUgZ2xvYmFsXHJcbiAgICAgICAgLy8gb2JqZWN0IG9uIHRoZSBsZWZ0IGhhbmQgc2lkZS5cclxuICAgICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQoZ2xvYmFsJDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYmFjaykgeyByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBjYWxsYmFjayhEYXRlLm5vdygpKTsgfSwgMTAwMCAvIDYwKTsgfTtcclxufSkoKTtcblxuLy8gRGVmaW5lcyBtaW5pbXVtIHRpbWVvdXQgYmVmb3JlIGFkZGluZyBhIHRyYWlsaW5nIGNhbGwuXHJcbnZhciB0cmFpbGluZ1RpbWVvdXQgPSAyO1xyXG4vKipcclxuICogQ3JlYXRlcyBhIHdyYXBwZXIgZnVuY3Rpb24gd2hpY2ggZW5zdXJlcyB0aGF0IHByb3ZpZGVkIGNhbGxiYWNrIHdpbGwgYmVcclxuICogaW52b2tlZCBvbmx5IG9uY2UgZHVyaW5nIHRoZSBzcGVjaWZpZWQgZGVsYXkgcGVyaW9kLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGRlbGF5IHBlcmlvZC5cclxuICogQHBhcmFtIHtudW1iZXJ9IGRlbGF5IC0gRGVsYXkgYWZ0ZXIgd2hpY2ggdG8gaW52b2tlIGNhbGxiYWNrLlxyXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XHJcbiAqL1xyXG5mdW5jdGlvbiB0aHJvdHRsZSAoY2FsbGJhY2ssIGRlbGF5KSB7XHJcbiAgICB2YXIgbGVhZGluZ0NhbGwgPSBmYWxzZSwgdHJhaWxpbmdDYWxsID0gZmFsc2UsIGxhc3RDYWxsVGltZSA9IDA7XHJcbiAgICAvKipcclxuICAgICAqIEludm9rZXMgdGhlIG9yaWdpbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBzY2hlZHVsZXMgbmV3IGludm9jYXRpb24gaWZcclxuICAgICAqIHRoZSBcInByb3h5XCIgd2FzIGNhbGxlZCBkdXJpbmcgY3VycmVudCByZXF1ZXN0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByZXNvbHZlUGVuZGluZygpIHtcclxuICAgICAgICBpZiAobGVhZGluZ0NhbGwpIHtcclxuICAgICAgICAgICAgbGVhZGluZ0NhbGwgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRyYWlsaW5nQ2FsbCkge1xyXG4gICAgICAgICAgICBwcm94eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbGJhY2sgaW52b2tlZCBhZnRlciB0aGUgc3BlY2lmaWVkIGRlbGF5LiBJdCB3aWxsIGZ1cnRoZXIgcG9zdHBvbmVcclxuICAgICAqIGludm9jYXRpb24gb2YgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGRlbGVnYXRpbmcgaXQgdG8gdGhlXHJcbiAgICAgKiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHRpbWVvdXRDYWxsYmFjaygpIHtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUkMShyZXNvbHZlUGVuZGluZyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFNjaGVkdWxlcyBpbnZvY2F0aW9uIG9mIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gcHJveHkoKSB7XHJcbiAgICAgICAgdmFyIHRpbWVTdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgaWYgKGxlYWRpbmdDYWxsKSB7XHJcbiAgICAgICAgICAgIC8vIFJlamVjdCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgY2FsbHMuXHJcbiAgICAgICAgICAgIGlmICh0aW1lU3RhbXAgLSBsYXN0Q2FsbFRpbWUgPCB0cmFpbGluZ1RpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBTY2hlZHVsZSBuZXcgY2FsbCB0byBiZSBpbiBpbnZva2VkIHdoZW4gdGhlIHBlbmRpbmcgb25lIGlzIHJlc29sdmVkLlxyXG4gICAgICAgICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBmb3IgXCJ0cmFuc2l0aW9uc1wiIHdoaWNoIG5ldmVyIGFjdHVhbGx5IHN0YXJ0XHJcbiAgICAgICAgICAgIC8vIGltbWVkaWF0ZWx5IHNvIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgd2UgbWlnaHQgbWlzcyBvbmUgaWYgY2hhbmdlXHJcbiAgICAgICAgICAgIC8vIGhhcHBlbnMgYW1pZHMgdGhlIHBlbmRpbmcgaW52b2NhdGlvbi5cclxuICAgICAgICAgICAgdHJhaWxpbmdDYWxsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxlYWRpbmdDYWxsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdHJhaWxpbmdDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQodGltZW91dENhbGxiYWNrLCBkZWxheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWVTdGFtcDtcclxuICAgIH1cclxuICAgIHJldHVybiBwcm94eTtcclxufVxuXG4vLyBNaW5pbXVtIGRlbGF5IGJlZm9yZSBpbnZva2luZyB0aGUgdXBkYXRlIG9mIG9ic2VydmVycy5cclxudmFyIFJFRlJFU0hfREVMQVkgPSAyMDtcclxuLy8gQSBsaXN0IG9mIHN1YnN0cmluZ3Mgb2YgQ1NTIHByb3BlcnRpZXMgdXNlZCB0byBmaW5kIHRyYW5zaXRpb24gZXZlbnRzIHRoYXRcclxuLy8gbWlnaHQgYWZmZWN0IGRpbWVuc2lvbnMgb2Ygb2JzZXJ2ZWQgZWxlbWVudHMuXHJcbnZhciB0cmFuc2l0aW9uS2V5cyA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0JywgJ3dpZHRoJywgJ2hlaWdodCcsICdzaXplJywgJ3dlaWdodCddO1xyXG4vLyBDaGVjayBpZiBNdXRhdGlvbk9ic2VydmVyIGlzIGF2YWlsYWJsZS5cclxudmFyIG11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQgPSB0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCc7XHJcbi8qKlxyXG4gKiBTaW5nbGV0b24gY29udHJvbGxlciBjbGFzcyB3aGljaCBoYW5kbGVzIHVwZGF0ZXMgb2YgUmVzaXplT2JzZXJ2ZXIgaW5zdGFuY2VzLlxyXG4gKi9cclxudmFyIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyKCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEluZGljYXRlcyB3aGV0aGVyIERPTSBsaXN0ZW5lcnMgaGF2ZSBiZWVuIGFkZGVkLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge2Jvb2xlYW59XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWRfID0gZmFsc2U7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGVsbHMgdGhhdCBjb250cm9sbGVyIGhhcyBzdWJzY3JpYmVkIGZvciBNdXRhdGlvbiBFdmVudHMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7Ym9vbGVhbn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLm11dGF0aW9uRXZlbnRzQWRkZWRfID0gZmFsc2U7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogS2VlcHMgcmVmZXJlbmNlIHRvIHRoZSBpbnN0YW5jZSBvZiBNdXRhdGlvbk9ic2VydmVyLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge011dGF0aW9uT2JzZXJ2ZXJ9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8gPSBudWxsO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEEgbGlzdCBvZiBjb25uZWN0ZWQgb2JzZXJ2ZXJzLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHByaXZhdGUge0FycmF5PFJlc2l6ZU9ic2VydmVyU1BJPn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLm9ic2VydmVyc18gPSBbXTtcclxuICAgICAgICB0aGlzLm9uVHJhbnNpdGlvbkVuZF8gPSB0aGlzLm9uVHJhbnNpdGlvbkVuZF8uYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2ggPSB0aHJvdHRsZSh0aGlzLnJlZnJlc2guYmluZCh0aGlzKSwgUkVGUkVTSF9ERUxBWSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgb2JzZXJ2ZXIgdG8gb2JzZXJ2ZXJzIGxpc3QuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlclNQSX0gb2JzZXJ2ZXIgLSBPYnNlcnZlciB0byBiZSBhZGRlZC5cclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFkZE9ic2VydmVyID0gZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgaWYgKCF+dGhpcy5vYnNlcnZlcnNfLmluZGV4T2Yob2JzZXJ2ZXIpKSB7XHJcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXJzXy5wdXNoKG9ic2VydmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQWRkIGxpc3RlbmVycyBpZiB0aGV5IGhhdmVuJ3QgYmVlbiBhZGRlZCB5ZXQuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3RlZF8pIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0XygpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgb2JzZXJ2ZXIgZnJvbSBvYnNlcnZlcnMgbGlzdC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyU1BJfSBvYnNlcnZlciAtIE9ic2VydmVyIHRvIGJlIHJlbW92ZWQuXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVPYnNlcnZlciA9IGZ1bmN0aW9uIChvYnNlcnZlcikge1xyXG4gICAgICAgIHZhciBvYnNlcnZlcnMgPSB0aGlzLm9ic2VydmVyc187XHJcbiAgICAgICAgdmFyIGluZGV4ID0gb2JzZXJ2ZXJzLmluZGV4T2Yob2JzZXJ2ZXIpO1xyXG4gICAgICAgIC8vIFJlbW92ZSBvYnNlcnZlciBpZiBpdCdzIHByZXNlbnQgaW4gcmVnaXN0cnkuXHJcbiAgICAgICAgaWYgKH5pbmRleCkge1xyXG4gICAgICAgICAgICBvYnNlcnZlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUmVtb3ZlIGxpc3RlbmVycyBpZiBjb250cm9sbGVyIGhhcyBubyBjb25uZWN0ZWQgb2JzZXJ2ZXJzLlxyXG4gICAgICAgIGlmICghb2JzZXJ2ZXJzLmxlbmd0aCAmJiB0aGlzLmNvbm5lY3RlZF8pIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0XygpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEludm9rZXMgdGhlIHVwZGF0ZSBvZiBvYnNlcnZlcnMuIEl0IHdpbGwgY29udGludWUgcnVubmluZyB1cGRhdGVzIGluc29mYXJcclxuICAgICAqIGl0IGRldGVjdHMgY2hhbmdlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS5yZWZyZXNoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBjaGFuZ2VzRGV0ZWN0ZWQgPSB0aGlzLnVwZGF0ZU9ic2VydmVyc18oKTtcclxuICAgICAgICAvLyBDb250aW51ZSBydW5uaW5nIHVwZGF0ZXMgaWYgY2hhbmdlcyBoYXZlIGJlZW4gZGV0ZWN0ZWQgYXMgdGhlcmUgbWlnaHRcclxuICAgICAgICAvLyBiZSBmdXR1cmUgb25lcyBjYXVzZWQgYnkgQ1NTIHRyYW5zaXRpb25zLlxyXG4gICAgICAgIGlmIChjaGFuZ2VzRGV0ZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyBldmVyeSBvYnNlcnZlciBmcm9tIG9ic2VydmVycyBsaXN0IGFuZCBub3RpZmllcyB0aGVtIG9mIHF1ZXVlZFxyXG4gICAgICogZW50cmllcy5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgXCJ0cnVlXCIgaWYgYW55IG9ic2VydmVyIGhhcyBkZXRlY3RlZCBjaGFuZ2VzIGluXHJcbiAgICAgKiAgICAgIGRpbWVuc2lvbnMgb2YgaXQncyBlbGVtZW50cy5cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVPYnNlcnZlcnNfID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIENvbGxlY3Qgb2JzZXJ2ZXJzIHRoYXQgaGF2ZSBhY3RpdmUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICAgIHZhciBhY3RpdmVPYnNlcnZlcnMgPSB0aGlzLm9ic2VydmVyc18uZmlsdGVyKGZ1bmN0aW9uIChvYnNlcnZlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZ2F0aGVyQWN0aXZlKCksIG9ic2VydmVyLmhhc0FjdGl2ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIERlbGl2ZXIgbm90aWZpY2F0aW9ucyBpbiBhIHNlcGFyYXRlIGN5Y2xlIGluIG9yZGVyIHRvIGF2b2lkIGFueVxyXG4gICAgICAgIC8vIGNvbGxpc2lvbnMgYmV0d2VlbiBvYnNlcnZlcnMsIGUuZy4gd2hlbiBtdWx0aXBsZSBpbnN0YW5jZXMgb2ZcclxuICAgICAgICAvLyBSZXNpemVPYnNlcnZlciBhcmUgdHJhY2tpbmcgdGhlIHNhbWUgZWxlbWVudCBhbmQgdGhlIGNhbGxiYWNrIG9mIG9uZVxyXG4gICAgICAgIC8vIG9mIHRoZW0gY2hhbmdlcyBjb250ZW50IGRpbWVuc2lvbnMgb2YgdGhlIG9ic2VydmVkIHRhcmdldC4gU29tZXRpbWVzXHJcbiAgICAgICAgLy8gdGhpcyBtYXkgcmVzdWx0IGluIG5vdGlmaWNhdGlvbnMgYmVpbmcgYmxvY2tlZCBmb3IgdGhlIHJlc3Qgb2Ygb2JzZXJ2ZXJzLlxyXG4gICAgICAgIGFjdGl2ZU9ic2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZlcikgeyByZXR1cm4gb2JzZXJ2ZXIuYnJvYWRjYXN0QWN0aXZlKCk7IH0pO1xyXG4gICAgICAgIHJldHVybiBhY3RpdmVPYnNlcnZlcnMubGVuZ3RoID4gMDtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEluaXRpYWxpemVzIERPTSBsaXN0ZW5lcnMuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIucHJvdG90eXBlLmNvbm5lY3RfID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgcnVubmluZyBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50IG9yIGlmIGxpc3RlbmVyc1xyXG4gICAgICAgIC8vIGhhdmUgYmVlbiBhbHJlYWR5IGFkZGVkLlxyXG4gICAgICAgIGlmICghaXNCcm93c2VyIHx8IHRoaXMuY29ubmVjdGVkXykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFN1YnNjcmlwdGlvbiB0byB0aGUgXCJUcmFuc2l0aW9uZW5kXCIgZXZlbnQgaXMgdXNlZCBhcyBhIHdvcmthcm91bmQgZm9yXHJcbiAgICAgICAgLy8gZGVsYXllZCB0cmFuc2l0aW9ucy4gVGhpcyB3YXkgaXQncyBwb3NzaWJsZSB0byBjYXB0dXJlIGF0IGxlYXN0IHRoZVxyXG4gICAgICAgIC8vIGZpbmFsIHN0YXRlIG9mIGFuIGVsZW1lbnQuXHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMub25UcmFuc2l0aW9uRW5kXyk7XHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgaWYgKG11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8gPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uc09ic2VydmVyXy5vYnNlcnZlKGRvY3VtZW50LCB7XHJcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01TdWJ0cmVlTW9kaWZpZWQnLCB0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uRXZlbnRzQWRkZWRfID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWRfID0gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgRE9NIGxpc3RlbmVycy5cclxuICAgICAqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUuZGlzY29ubmVjdF8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBydW5uaW5nIGluIGEgbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQgb3IgaWYgbGlzdGVuZXJzXHJcbiAgICAgICAgLy8gaGF2ZSBiZWVuIGFscmVhZHkgcmVtb3ZlZC5cclxuICAgICAgICBpZiAoIWlzQnJvd3NlciB8fCAhdGhpcy5jb25uZWN0ZWRfKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIHRoaXMub25UcmFuc2l0aW9uRW5kXyk7XHJcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgaWYgKHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfLmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubXV0YXRpb25FdmVudHNBZGRlZF8pIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NU3VidHJlZU1vZGlmaWVkJywgdGhpcy5yZWZyZXNoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8gPSBudWxsO1xyXG4gICAgICAgIHRoaXMubXV0YXRpb25FdmVudHNBZGRlZF8gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbm5lY3RlZF8gPSBmYWxzZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFwiVHJhbnNpdGlvbmVuZFwiIGV2ZW50IGhhbmRsZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEBwYXJhbSB7VHJhbnNpdGlvbkV2ZW50fSBldmVudFxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5wcm90b3R5cGUub25UcmFuc2l0aW9uRW5kXyA9IGZ1bmN0aW9uIChfYSkge1xyXG4gICAgICAgIHZhciBfYiA9IF9hLnByb3BlcnR5TmFtZSwgcHJvcGVydHlOYW1lID0gX2IgPT09IHZvaWQgMCA/ICcnIDogX2I7XHJcbiAgICAgICAgLy8gRGV0ZWN0IHdoZXRoZXIgdHJhbnNpdGlvbiBtYXkgYWZmZWN0IGRpbWVuc2lvbnMgb2YgYW4gZWxlbWVudC5cclxuICAgICAgICB2YXIgaXNSZWZsb3dQcm9wZXJ0eSA9IHRyYW5zaXRpb25LZXlzLnNvbWUoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gISF+cHJvcGVydHlOYW1lLmluZGV4T2Yoa2V5KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoaXNSZWZsb3dQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIHRoZSBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge1Jlc2l6ZU9ic2VydmVyQ29udHJvbGxlcn1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLmdldEluc3RhbmNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZV8pIHtcclxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZV8gPSBuZXcgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlXztcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEhvbGRzIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbGxlcidzIGluc3RhbmNlLlxyXG4gICAgICpcclxuICAgICAqIEBwcml2YXRlIHtSZXNpemVPYnNlcnZlckNvbnRyb2xsZXJ9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5pbnN0YW5jZV8gPSBudWxsO1xyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlcjtcclxufSgpKTtcblxuLyoqXHJcbiAqIERlZmluZXMgbm9uLXdyaXRhYmxlL2VudW1lcmFibGUgcHJvcGVydGllcyBvZiB0aGUgcHJvdmlkZWQgdGFyZ2V0IG9iamVjdC5cclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHRhcmdldCAtIE9iamVjdCBmb3Igd2hpY2ggdG8gZGVmaW5lIHByb3BlcnRpZXMuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyAtIFByb3BlcnRpZXMgdG8gYmUgZGVmaW5lZC5cclxuICogQHJldHVybnMge09iamVjdH0gVGFyZ2V0IG9iamVjdC5cclxuICovXHJcbnZhciBkZWZpbmVDb25maWd1cmFibGUgPSAoZnVuY3Rpb24gKHRhcmdldCwgcHJvcHMpIHtcclxuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBPYmplY3Qua2V5cyhwcm9wcyk7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgdmFyIGtleSA9IF9hW19pXTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcclxuICAgICAgICAgICAgdmFsdWU6IHByb3BzW2tleV0sXHJcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRhcmdldDtcclxufSk7XG5cbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSBnbG9iYWwgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBwcm92aWRlZCBlbGVtZW50LlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XHJcbiAqIEByZXR1cm5zIHtPYmplY3R9XHJcbiAqL1xyXG52YXIgZ2V0V2luZG93T2YgPSAoZnVuY3Rpb24gKHRhcmdldCkge1xyXG4gICAgLy8gQXNzdW1lIHRoYXQgdGhlIGVsZW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgTm9kZSwgd2hpY2ggbWVhbnMgdGhhdCBpdFxyXG4gICAgLy8gaGFzIHRoZSBcIm93bmVyRG9jdW1lbnRcIiBwcm9wZXJ0eSBmcm9tIHdoaWNoIHdlIGNhbiByZXRyaWV2ZSBhXHJcbiAgICAvLyBjb3JyZXNwb25kaW5nIGdsb2JhbCBvYmplY3QuXHJcbiAgICB2YXIgb3duZXJHbG9iYWwgPSB0YXJnZXQgJiYgdGFyZ2V0Lm93bmVyRG9jdW1lbnQgJiYgdGFyZ2V0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XHJcbiAgICAvLyBSZXR1cm4gdGhlIGxvY2FsIGdsb2JhbCBvYmplY3QgaWYgaXQncyBub3QgcG9zc2libGUgZXh0cmFjdCBvbmUgZnJvbVxyXG4gICAgLy8gcHJvdmlkZWQgZWxlbWVudC5cclxuICAgIHJldHVybiBvd25lckdsb2JhbCB8fCBnbG9iYWwkMTtcclxufSk7XG5cbi8vIFBsYWNlaG9sZGVyIG9mIGFuIGVtcHR5IGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG52YXIgZW1wdHlSZWN0ID0gY3JlYXRlUmVjdEluaXQoMCwgMCwgMCwgMCk7XHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBwcm92aWRlZCBzdHJpbmcgdG8gYSBudW1iZXIuXHJcbiAqXHJcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gdmFsdWVcclxuICogQHJldHVybnMge251bWJlcn1cclxuICovXHJcbmZ1bmN0aW9uIHRvRmxvYXQodmFsdWUpIHtcclxuICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xyXG59XHJcbi8qKlxyXG4gKiBFeHRyYWN0cyBib3JkZXJzIHNpemUgZnJvbSBwcm92aWRlZCBzdHlsZXMuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Q1NTU3R5bGVEZWNsYXJhdGlvbn0gc3R5bGVzXHJcbiAqIEBwYXJhbSB7Li4uc3RyaW5nfSBwb3NpdGlvbnMgLSBCb3JkZXJzIHBvc2l0aW9ucyAodG9wLCByaWdodCwgLi4uKVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gKi9cclxuZnVuY3Rpb24gZ2V0Qm9yZGVyc1NpemUoc3R5bGVzKSB7XHJcbiAgICB2YXIgcG9zaXRpb25zID0gW107XHJcbiAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgIHBvc2l0aW9uc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwb3NpdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChzaXplLCBwb3NpdGlvbikge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlc1snYm9yZGVyLScgKyBwb3NpdGlvbiArICctd2lkdGgnXTtcclxuICAgICAgICByZXR1cm4gc2l6ZSArIHRvRmxvYXQodmFsdWUpO1xyXG4gICAgfSwgMCk7XHJcbn1cclxuLyoqXHJcbiAqIEV4dHJhY3RzIHBhZGRpbmdzIHNpemVzIGZyb20gcHJvdmlkZWQgc3R5bGVzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0NTU1N0eWxlRGVjbGFyYXRpb259IHN0eWxlc1xyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBQYWRkaW5ncyBib3guXHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRQYWRkaW5ncyhzdHlsZXMpIHtcclxuICAgIHZhciBwb3NpdGlvbnMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xyXG4gICAgdmFyIHBhZGRpbmdzID0ge307XHJcbiAgICBmb3IgKHZhciBfaSA9IDAsIHBvc2l0aW9uc18xID0gcG9zaXRpb25zOyBfaSA8IHBvc2l0aW9uc18xLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgIHZhciBwb3NpdGlvbiA9IHBvc2l0aW9uc18xW19pXTtcclxuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNbJ3BhZGRpbmctJyArIHBvc2l0aW9uXTtcclxuICAgICAgICBwYWRkaW5nc1twb3NpdGlvbl0gPSB0b0Zsb2F0KHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYWRkaW5ncztcclxufVxyXG4vKipcclxuICogQ2FsY3VsYXRlcyBjb250ZW50IHJlY3RhbmdsZSBvZiBwcm92aWRlZCBTVkcgZWxlbWVudC5cclxuICpcclxuICogQHBhcmFtIHtTVkdHcmFwaGljc0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgY29udGVudCByZWN0YW5nbGUgb2Ygd2hpY2ggbmVlZHNcclxuICogICAgICB0byBiZSBjYWxjdWxhdGVkLlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRTVkdDb250ZW50UmVjdCh0YXJnZXQpIHtcclxuICAgIHZhciBiYm94ID0gdGFyZ2V0LmdldEJCb3goKTtcclxuICAgIHJldHVybiBjcmVhdGVSZWN0SW5pdCgwLCAwLCBiYm94LndpZHRoLCBiYm94LmhlaWdodCk7XHJcbn1cclxuLyoqXHJcbiAqIENhbGN1bGF0ZXMgY29udGVudCByZWN0YW5nbGUgb2YgcHJvdmlkZWQgSFRNTEVsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgZm9yIHdoaWNoIHRvIGNhbGN1bGF0ZSB0aGUgY29udGVudCByZWN0YW5nbGUuXHJcbiAqIEByZXR1cm5zIHtET01SZWN0SW5pdH1cclxuICovXHJcbmZ1bmN0aW9uIGdldEhUTUxFbGVtZW50Q29udGVudFJlY3QodGFyZ2V0KSB7XHJcbiAgICAvLyBDbGllbnQgd2lkdGggJiBoZWlnaHQgcHJvcGVydGllcyBjYW4ndCBiZVxyXG4gICAgLy8gdXNlZCBleGNsdXNpdmVseSBhcyB0aGV5IHByb3ZpZGUgcm91bmRlZCB2YWx1ZXMuXHJcbiAgICB2YXIgY2xpZW50V2lkdGggPSB0YXJnZXQuY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCA9IHRhcmdldC5jbGllbnRIZWlnaHQ7XHJcbiAgICAvLyBCeSB0aGlzIGNvbmRpdGlvbiB3ZSBjYW4gY2F0Y2ggYWxsIG5vbi1yZXBsYWNlZCBpbmxpbmUsIGhpZGRlbiBhbmRcclxuICAgIC8vIGRldGFjaGVkIGVsZW1lbnRzLiBUaG91Z2ggZWxlbWVudHMgd2l0aCB3aWR0aCAmIGhlaWdodCBwcm9wZXJ0aWVzIGxlc3NcclxuICAgIC8vIHRoYW4gMC41IHdpbGwgYmUgZGlzY2FyZGVkIGFzIHdlbGwuXHJcbiAgICAvL1xyXG4gICAgLy8gV2l0aG91dCBpdCB3ZSB3b3VsZCBuZWVkIHRvIGltcGxlbWVudCBzZXBhcmF0ZSBtZXRob2RzIGZvciBlYWNoIG9mXHJcbiAgICAvLyB0aG9zZSBjYXNlcyBhbmQgaXQncyBub3QgcG9zc2libGUgdG8gcGVyZm9ybSBhIHByZWNpc2UgYW5kIHBlcmZvcm1hbmNlXHJcbiAgICAvLyBlZmZlY3RpdmUgdGVzdCBmb3IgaGlkZGVuIGVsZW1lbnRzLiBFLmcuIGV2ZW4galF1ZXJ5J3MgJzp2aXNpYmxlJyBmaWx0ZXJcclxuICAgIC8vIGdpdmVzIHdyb25nIHJlc3VsdHMgZm9yIGVsZW1lbnRzIHdpdGggd2lkdGggJiBoZWlnaHQgbGVzcyB0aGFuIDAuNS5cclxuICAgIGlmICghY2xpZW50V2lkdGggJiYgIWNsaWVudEhlaWdodCkge1xyXG4gICAgICAgIHJldHVybiBlbXB0eVJlY3Q7XHJcbiAgICB9XHJcbiAgICB2YXIgc3R5bGVzID0gZ2V0V2luZG93T2YodGFyZ2V0KS5nZXRDb21wdXRlZFN0eWxlKHRhcmdldCk7XHJcbiAgICB2YXIgcGFkZGluZ3MgPSBnZXRQYWRkaW5ncyhzdHlsZXMpO1xyXG4gICAgdmFyIGhvcml6UGFkID0gcGFkZGluZ3MubGVmdCArIHBhZGRpbmdzLnJpZ2h0O1xyXG4gICAgdmFyIHZlcnRQYWQgPSBwYWRkaW5ncy50b3AgKyBwYWRkaW5ncy5ib3R0b207XHJcbiAgICAvLyBDb21wdXRlZCBzdHlsZXMgb2Ygd2lkdGggJiBoZWlnaHQgYXJlIGJlaW5nIHVzZWQgYmVjYXVzZSB0aGV5IGFyZSB0aGVcclxuICAgIC8vIG9ubHkgZGltZW5zaW9ucyBhdmFpbGFibGUgdG8gSlMgdGhhdCBjb250YWluIG5vbi1yb3VuZGVkIHZhbHVlcy4gSXQgY291bGRcclxuICAgIC8vIGJlIHBvc3NpYmxlIHRvIHV0aWxpemUgdGhlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpZiBvbmx5IGl0J3MgZGF0YSB3YXNuJ3RcclxuICAgIC8vIGFmZmVjdGVkIGJ5IENTUyB0cmFuc2Zvcm1hdGlvbnMgbGV0IGFsb25lIHBhZGRpbmdzLCBib3JkZXJzIGFuZCBzY3JvbGwgYmFycy5cclxuICAgIHZhciB3aWR0aCA9IHRvRmxvYXQoc3R5bGVzLndpZHRoKSwgaGVpZ2h0ID0gdG9GbG9hdChzdHlsZXMuaGVpZ2h0KTtcclxuICAgIC8vIFdpZHRoICYgaGVpZ2h0IGluY2x1ZGUgcGFkZGluZ3MgYW5kIGJvcmRlcnMgd2hlbiB0aGUgJ2JvcmRlci1ib3gnIGJveFxyXG4gICAgLy8gbW9kZWwgaXMgYXBwbGllZCAoZXhjZXB0IGZvciBJRSkuXHJcbiAgICBpZiAoc3R5bGVzLmJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnKSB7XHJcbiAgICAgICAgLy8gRm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGhhbmRsZSBJbnRlcm5ldCBFeHBsb3JlciB3aGljaFxyXG4gICAgICAgIC8vIGRvZXNuJ3QgaW5jbHVkZSBwYWRkaW5ncyBhbmQgYm9yZGVycyB0byBjb21wdXRlZCBDU1MgZGltZW5zaW9ucy5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIFdlIGNhbiBzYXkgdGhhdCBpZiBDU1MgZGltZW5zaW9ucyArIHBhZGRpbmdzIGFyZSBlcXVhbCB0byB0aGUgXCJjbGllbnRcIlxyXG4gICAgICAgIC8vIHByb3BlcnRpZXMgdGhlbiBpdCdzIGVpdGhlciBJRSwgYW5kIHRodXMgd2UgZG9uJ3QgbmVlZCB0byBzdWJ0cmFjdFxyXG4gICAgICAgIC8vIGFueXRoaW5nLCBvciBhbiBlbGVtZW50IG1lcmVseSBkb2Vzbid0IGhhdmUgcGFkZGluZ3MvYm9yZGVycyBzdHlsZXMuXHJcbiAgICAgICAgaWYgKE1hdGgucm91bmQod2lkdGggKyBob3JpelBhZCkgIT09IGNsaWVudFdpZHRoKSB7XHJcbiAgICAgICAgICAgIHdpZHRoIC09IGdldEJvcmRlcnNTaXplKHN0eWxlcywgJ2xlZnQnLCAncmlnaHQnKSArIGhvcml6UGFkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoTWF0aC5yb3VuZChoZWlnaHQgKyB2ZXJ0UGFkKSAhPT0gY2xpZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGhlaWdodCAtPSBnZXRCb3JkZXJzU2l6ZShzdHlsZXMsICd0b3AnLCAnYm90dG9tJykgKyB2ZXJ0UGFkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEZvbGxvd2luZyBzdGVwcyBjYW4ndCBiZSBhcHBsaWVkIHRvIHRoZSBkb2N1bWVudCdzIHJvb3QgZWxlbWVudCBhcyBpdHNcclxuICAgIC8vIGNsaWVudFtXaWR0aC9IZWlnaHRdIHByb3BlcnRpZXMgcmVwcmVzZW50IHZpZXdwb3J0IGFyZWEgb2YgdGhlIHdpbmRvdy5cclxuICAgIC8vIEJlc2lkZXMsIGl0J3MgYXMgd2VsbCBub3QgbmVjZXNzYXJ5IGFzIHRoZSA8aHRtbD4gaXRzZWxmIG5laXRoZXIgaGFzXHJcbiAgICAvLyByZW5kZXJlZCBzY3JvbGwgYmFycyBub3IgaXQgY2FuIGJlIGNsaXBwZWQuXHJcbiAgICBpZiAoIWlzRG9jdW1lbnRFbGVtZW50KHRhcmdldCkpIHtcclxuICAgICAgICAvLyBJbiBzb21lIGJyb3dzZXJzIChvbmx5IGluIEZpcmVmb3gsIGFjdHVhbGx5KSBDU1Mgd2lkdGggJiBoZWlnaHRcclxuICAgICAgICAvLyBpbmNsdWRlIHNjcm9sbCBiYXJzIHNpemUgd2hpY2ggY2FuIGJlIHJlbW92ZWQgYXQgdGhpcyBzdGVwIGFzIHNjcm9sbFxyXG4gICAgICAgIC8vIGJhcnMgYXJlIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiByb3VuZGVkIGRpbWVuc2lvbnMgKyBwYWRkaW5nc1xyXG4gICAgICAgIC8vIGFuZCBcImNsaWVudFwiIHByb3BlcnRpZXMsIHRob3VnaCB0aGF0IGlzIG5vdCBhbHdheXMgdHJ1ZSBpbiBDaHJvbWUuXHJcbiAgICAgICAgdmFyIHZlcnRTY3JvbGxiYXIgPSBNYXRoLnJvdW5kKHdpZHRoICsgaG9yaXpQYWQpIC0gY2xpZW50V2lkdGg7XHJcbiAgICAgICAgdmFyIGhvcml6U2Nyb2xsYmFyID0gTWF0aC5yb3VuZChoZWlnaHQgKyB2ZXJ0UGFkKSAtIGNsaWVudEhlaWdodDtcclxuICAgICAgICAvLyBDaHJvbWUgaGFzIGEgcmF0aGVyIHdlaXJkIHJvdW5kaW5nIG9mIFwiY2xpZW50XCIgcHJvcGVydGllcy5cclxuICAgICAgICAvLyBFLmcuIGZvciBhbiBlbGVtZW50IHdpdGggY29udGVudCB3aWR0aCBvZiAzMTQuMnB4IGl0IHNvbWV0aW1lcyBnaXZlc1xyXG4gICAgICAgIC8vIHRoZSBjbGllbnQgd2lkdGggb2YgMzE1cHggYW5kIGZvciB0aGUgd2lkdGggb2YgMzE0LjdweCBpdCBtYXkgZ2l2ZVxyXG4gICAgICAgIC8vIDMxNHB4LiBBbmQgaXQgZG9lc24ndCBoYXBwZW4gYWxsIHRoZSB0aW1lLiBTbyBqdXN0IGlnbm9yZSB0aGlzIGRlbHRhXHJcbiAgICAgICAgLy8gYXMgYSBub24tcmVsZXZhbnQuXHJcbiAgICAgICAgaWYgKE1hdGguYWJzKHZlcnRTY3JvbGxiYXIpICE9PSAxKSB7XHJcbiAgICAgICAgICAgIHdpZHRoIC09IHZlcnRTY3JvbGxiYXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChNYXRoLmFicyhob3JpelNjcm9sbGJhcikgIT09IDEpIHtcclxuICAgICAgICAgICAgaGVpZ2h0IC09IGhvcml6U2Nyb2xsYmFyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjcmVhdGVSZWN0SW5pdChwYWRkaW5ncy5sZWZ0LCBwYWRkaW5ncy50b3AsIHdpZHRoLCBoZWlnaHQpO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBwcm92aWRlZCBlbGVtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSBTVkdHcmFwaGljc0VsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0byBiZSBjaGVja2VkLlxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbnZhciBpc1NWR0dyYXBoaWNzRWxlbWVudCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAvLyBTb21lIGJyb3dzZXJzLCBuYW1lbHkgSUUgYW5kIEVkZ2UsIGRvbid0IGhhdmUgdGhlIFNWR0dyYXBoaWNzRWxlbWVudFxyXG4gICAgLy8gaW50ZXJmYWNlLlxyXG4gICAgaWYgKHR5cGVvZiBTVkdHcmFwaGljc0VsZW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHsgcmV0dXJuIHRhcmdldCBpbnN0YW5jZW9mIGdldFdpbmRvd09mKHRhcmdldCkuU1ZHR3JhcGhpY3NFbGVtZW50OyB9O1xyXG4gICAgfVxyXG4gICAgLy8gSWYgaXQncyBzbywgdGhlbiBjaGVjayB0aGF0IGVsZW1lbnQgaXMgYXQgbGVhc3QgYW4gaW5zdGFuY2Ugb2YgdGhlXHJcbiAgICAvLyBTVkdFbGVtZW50IGFuZCB0aGF0IGl0IGhhcyB0aGUgXCJnZXRCQm94XCIgbWV0aG9kLlxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV4dHJhLXBhcmVuc1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQpIHsgcmV0dXJuICh0YXJnZXQgaW5zdGFuY2VvZiBnZXRXaW5kb3dPZih0YXJnZXQpLlNWR0VsZW1lbnQgJiZcclxuICAgICAgICB0eXBlb2YgdGFyZ2V0LmdldEJCb3ggPT09ICdmdW5jdGlvbicpOyB9O1xyXG59KSgpO1xyXG4vKipcclxuICogQ2hlY2tzIHdoZXRoZXIgcHJvdmlkZWQgZWxlbWVudCBpcyBhIGRvY3VtZW50IGVsZW1lbnQgKDxodG1sPikuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0byBiZSBjaGVja2VkLlxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbmZ1bmN0aW9uIGlzRG9jdW1lbnRFbGVtZW50KHRhcmdldCkge1xyXG4gICAgcmV0dXJuIHRhcmdldCA9PT0gZ2V0V2luZG93T2YodGFyZ2V0KS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XHJcbn1cclxuLyoqXHJcbiAqIENhbGN1bGF0ZXMgYW4gYXBwcm9wcmlhdGUgY29udGVudCByZWN0YW5nbGUgZm9yIHByb3ZpZGVkIGh0bWwgb3Igc3ZnIGVsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCBjb250ZW50IHJlY3RhbmdsZSBvZiB3aGljaCBuZWVkcyB0byBiZSBjYWxjdWxhdGVkLlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9XHJcbiAqL1xyXG5mdW5jdGlvbiBnZXRDb250ZW50UmVjdCh0YXJnZXQpIHtcclxuICAgIGlmICghaXNCcm93c2VyKSB7XHJcbiAgICAgICAgcmV0dXJuIGVtcHR5UmVjdDtcclxuICAgIH1cclxuICAgIGlmIChpc1NWR0dyYXBoaWNzRWxlbWVudCh0YXJnZXQpKSB7XHJcbiAgICAgICAgcmV0dXJuIGdldFNWR0NvbnRlbnRSZWN0KHRhcmdldCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRDb250ZW50UmVjdCh0YXJnZXQpO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGVzIHJlY3RhbmdsZSB3aXRoIGFuIGludGVyZmFjZSBvZiB0aGUgRE9NUmVjdFJlYWRPbmx5LlxyXG4gKiBTcGVjOiBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZG9tcmVjdHJlYWRvbmx5XHJcbiAqXHJcbiAqIEBwYXJhbSB7RE9NUmVjdEluaXR9IHJlY3RJbml0IC0gT2JqZWN0IHdpdGggcmVjdGFuZ2xlJ3MgeC95IGNvb3JkaW5hdGVzIGFuZCBkaW1lbnNpb25zLlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdFJlYWRPbmx5fVxyXG4gKi9cclxuZnVuY3Rpb24gY3JlYXRlUmVhZE9ubHlSZWN0KF9hKSB7XHJcbiAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQ7XHJcbiAgICAvLyBJZiBET01SZWN0UmVhZE9ubHkgaXMgYXZhaWxhYmxlIHVzZSBpdCBhcyBhIHByb3RvdHlwZSBmb3IgdGhlIHJlY3RhbmdsZS5cclxuICAgIHZhciBDb25zdHIgPSB0eXBlb2YgRE9NUmVjdFJlYWRPbmx5ICE9PSAndW5kZWZpbmVkJyA/IERPTVJlY3RSZWFkT25seSA6IE9iamVjdDtcclxuICAgIHZhciByZWN0ID0gT2JqZWN0LmNyZWF0ZShDb25zdHIucHJvdG90eXBlKTtcclxuICAgIC8vIFJlY3RhbmdsZSdzIHByb3BlcnRpZXMgYXJlIG5vdCB3cml0YWJsZSBhbmQgbm9uLWVudW1lcmFibGUuXHJcbiAgICBkZWZpbmVDb25maWd1cmFibGUocmVjdCwge1xyXG4gICAgICAgIHg6IHgsIHk6IHksIHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgICAgdG9wOiB5LFxyXG4gICAgICAgIHJpZ2h0OiB4ICsgd2lkdGgsXHJcbiAgICAgICAgYm90dG9tOiBoZWlnaHQgKyB5LFxyXG4gICAgICAgIGxlZnQ6IHhcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlY3Q7XHJcbn1cclxuLyoqXHJcbiAqIENyZWF0ZXMgRE9NUmVjdEluaXQgb2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkaW1lbnNpb25zIGFuZCB0aGUgeC95IGNvb3JkaW5hdGVzLlxyXG4gKiBTcGVjOiBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZGljdGRlZi1kb21yZWN0aW5pdFxyXG4gKlxyXG4gKiBAcGFyYW0ge251bWJlcn0geCAtIFggY29vcmRpbmF0ZS5cclxuICogQHBhcmFtIHtudW1iZXJ9IHkgLSBZIGNvb3JkaW5hdGUuXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCAtIFJlY3RhbmdsZSdzIHdpZHRoLlxyXG4gKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0IC0gUmVjdGFuZ2xlJ3MgaGVpZ2h0LlxyXG4gKiBAcmV0dXJucyB7RE9NUmVjdEluaXR9XHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVSZWN0SW5pdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSB7XHJcbiAgICByZXR1cm4geyB4OiB4LCB5OiB5LCB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0IH07XHJcbn1cblxuLyoqXHJcbiAqIENsYXNzIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGNvbXB1dGF0aW9ucyBvZiB0aGUgY29udGVudCByZWN0YW5nbGUgb2ZcclxuICogcHJvdmlkZWQgRE9NIGVsZW1lbnQgYW5kIGZvciBrZWVwaW5nIHRyYWNrIG9mIGl0J3MgY2hhbmdlcy5cclxuICovXHJcbnZhciBSZXNpemVPYnNlcnZhdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdG8gYmUgb2JzZXJ2ZWQuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmF0aW9uKHRhcmdldCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEJyb2FkY2FzdGVkIHdpZHRoIG9mIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmJyb2FkY2FzdFdpZHRoID0gMDtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBCcm9hZGNhc3RlZCBoZWlnaHQgb2YgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0SGVpZ2h0ID0gMDtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIGxhc3Qgb2JzZXJ2ZWQgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7RE9NUmVjdEluaXR9XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5jb250ZW50UmVjdF8gPSBjcmVhdGVSZWN0SW5pdCgwLCAwLCAwLCAwKTtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyBjb250ZW50IHJlY3RhbmdsZSBhbmQgdGVsbHMgd2hldGhlciBpdCdzIHdpZHRoIG9yIGhlaWdodCBwcm9wZXJ0aWVzXHJcbiAgICAgKiBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgYnJvYWRjYXN0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZhdGlvbi5wcm90b3R5cGUuaXNBY3RpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHJlY3QgPSBnZXRDb250ZW50UmVjdCh0aGlzLnRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50UmVjdF8gPSByZWN0O1xyXG4gICAgICAgIHJldHVybiAocmVjdC53aWR0aCAhPT0gdGhpcy5icm9hZGNhc3RXaWR0aCB8fFxyXG4gICAgICAgICAgICByZWN0LmhlaWdodCAhPT0gdGhpcy5icm9hZGNhc3RIZWlnaHQpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogVXBkYXRlcyAnYnJvYWRjYXN0V2lkdGgnIGFuZCAnYnJvYWRjYXN0SGVpZ2h0JyBwcm9wZXJ0aWVzIHdpdGggYSBkYXRhXHJcbiAgICAgKiBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgb2YgdGhlIGxhc3Qgb2JzZXJ2ZWQgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge0RPTVJlY3RJbml0fSBMYXN0IG9ic2VydmVkIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZhdGlvbi5wcm90b3R5cGUuYnJvYWRjYXN0UmVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgcmVjdCA9IHRoaXMuY29udGVudFJlY3RfO1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0V2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgICAgIHRoaXMuYnJvYWRjYXN0SGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgcmV0dXJuIHJlY3Q7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmF0aW9uO1xyXG59KCkpO1xuXG52YXIgUmVzaXplT2JzZXJ2ZXJFbnRyeSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlckVudHJ5LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7RWxlbWVudH0gdGFyZ2V0IC0gRWxlbWVudCB0aGF0IGlzIGJlaW5nIG9ic2VydmVkLlxyXG4gICAgICogQHBhcmFtIHtET01SZWN0SW5pdH0gcmVjdEluaXQgLSBEYXRhIG9mIHRoZSBlbGVtZW50J3MgY29udGVudCByZWN0YW5nbGUuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmVyRW50cnkodGFyZ2V0LCByZWN0SW5pdCkge1xyXG4gICAgICAgIHZhciBjb250ZW50UmVjdCA9IGNyZWF0ZVJlYWRPbmx5UmVjdChyZWN0SW5pdCk7XHJcbiAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBub3Qgd3JpdGFibGVcclxuICAgICAgICAvLyBhbmQgYXJlIGFsc28gbm90IGVudW1lcmFibGUgaW4gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbi5cclxuICAgICAgICAvL1xyXG4gICAgICAgIC8vIFByb3BlcnR5IGFjY2Vzc29ycyBhcmUgbm90IGJlaW5nIHVzZWQgYXMgdGhleSdkIHJlcXVpcmUgdG8gZGVmaW5lIGFcclxuICAgICAgICAvLyBwcml2YXRlIFdlYWtNYXAgc3RvcmFnZSB3aGljaCBtYXkgY2F1c2UgbWVtb3J5IGxlYWtzIGluIGJyb3dzZXJzIHRoYXRcclxuICAgICAgICAvLyBkb24ndCBzdXBwb3J0IHRoaXMgdHlwZSBvZiBjb2xsZWN0aW9ucy5cclxuICAgICAgICBkZWZpbmVDb25maWd1cmFibGUodGhpcywgeyB0YXJnZXQ6IHRhcmdldCwgY29udGVudFJlY3Q6IGNvbnRlbnRSZWN0IH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyRW50cnk7XHJcbn0oKSk7XG5cbnZhciBSZXNpemVPYnNlcnZlclNQSSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyQ2FsbGJhY2t9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkXHJcbiAgICAgKiAgICAgIHdoZW4gb25lIG9mIHRoZSBvYnNlcnZlZCBlbGVtZW50cyBjaGFuZ2VzIGl0J3MgY29udGVudCBkaW1lbnNpb25zLlxyXG4gICAgICogQHBhcmFtIHtSZXNpemVPYnNlcnZlckNvbnRyb2xsZXJ9IGNvbnRyb2xsZXIgLSBDb250cm9sbGVyIGluc3RhbmNlIHdoaWNoXHJcbiAgICAgKiAgICAgIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgdXBkYXRlcyBvZiBvYnNlcnZlci5cclxuICAgICAqIEBwYXJhbSB7UmVzaXplT2JzZXJ2ZXJ9IGNhbGxiYWNrQ3R4IC0gUmVmZXJlbmNlIHRvIHRoZSBwdWJsaWNcclxuICAgICAqICAgICAgUmVzaXplT2JzZXJ2ZXIgaW5zdGFuY2Ugd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gY2FsbGJhY2sgZnVuY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmVyU1BJKGNhbGxiYWNrLCBjb250cm9sbGVyLCBjYWxsYmFja0N0eCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIENvbGxlY3Rpb24gb2YgcmVzaXplIG9ic2VydmF0aW9ucyB0aGF0IGhhdmUgZGV0ZWN0ZWQgY2hhbmdlcyBpbiBkaW1lbnNpb25zXHJcbiAgICAgICAgICogb2YgZWxlbWVudHMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7QXJyYXk8UmVzaXplT2JzZXJ2YXRpb24+fVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXyA9IFtdO1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFJlZ2lzdHJ5IG9mIHRoZSBSZXNpemVPYnNlcnZhdGlvbiBpbnN0YW5jZXMuXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcHJpdmF0ZSB7TWFwPEVsZW1lbnQsIFJlc2l6ZU9ic2VydmF0aW9uPn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLm9ic2VydmF0aW9uc18gPSBuZXcgTWFwU2hpbSgpO1xyXG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGNhbGxiYWNrIHByb3ZpZGVkIGFzIHBhcmFtZXRlciAxIGlzIG5vdCBhIGZ1bmN0aW9uLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNhbGxiYWNrXyA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl8gPSBjb250cm9sbGVyO1xyXG4gICAgICAgIHRoaXMuY2FsbGJhY2tDdHhfID0gY2FsbGJhY2tDdHg7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFN0YXJ0cyBvYnNlcnZpbmcgcHJvdmlkZWQgZWxlbWVudC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IHRhcmdldCAtIEVsZW1lbnQgdG8gYmUgb2JzZXJ2ZWQuXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBjdXJyZW50IGVudmlyb25tZW50IGRvZXNuJ3QgaGF2ZSB0aGUgRWxlbWVudCBpbnRlcmZhY2UuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhKEVsZW1lbnQgaW5zdGFuY2VvZiBPYmplY3QpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgZ2V0V2luZG93T2YodGFyZ2V0KS5FbGVtZW50KSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSBcIkVsZW1lbnRcIi4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG9ic2VydmF0aW9ucyA9IHRoaXMub2JzZXJ2YXRpb25zXztcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGVsZW1lbnQgaXMgYWxyZWFkeSBiZWluZyBvYnNlcnZlZC5cclxuICAgICAgICBpZiAob2JzZXJ2YXRpb25zLmhhcyh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JzZXJ2YXRpb25zLnNldCh0YXJnZXQsIG5ldyBSZXNpemVPYnNlcnZhdGlvbih0YXJnZXQpKTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xsZXJfLmFkZE9ic2VydmVyKHRoaXMpO1xyXG4gICAgICAgIC8vIEZvcmNlIHRoZSB1cGRhdGUgb2Ygb2JzZXJ2YXRpb25zLlxyXG4gICAgICAgIHRoaXMuY29udHJvbGxlcl8ucmVmcmVzaCgpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogU3RvcHMgb2JzZXJ2aW5nIHByb3ZpZGVkIGVsZW1lbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgLSBFbGVtZW50IHRvIHN0b3Agb2JzZXJ2aW5nLlxyXG4gICAgICogQHJldHVybnMge3ZvaWR9XHJcbiAgICAgKi9cclxuICAgIFJlc2l6ZU9ic2VydmVyU1BJLnByb3RvdHlwZS51bm9ic2VydmUgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJzEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBjdXJyZW50IGVudmlyb25tZW50IGRvZXNuJ3QgaGF2ZSB0aGUgRWxlbWVudCBpbnRlcmZhY2UuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhKEVsZW1lbnQgaW5zdGFuY2VvZiBPYmplY3QpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgZ2V0V2luZG93T2YodGFyZ2V0KS5FbGVtZW50KSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSBcIkVsZW1lbnRcIi4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG9ic2VydmF0aW9ucyA9IHRoaXMub2JzZXJ2YXRpb25zXztcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGVsZW1lbnQgaXMgbm90IGJlaW5nIG9ic2VydmVkLlxyXG4gICAgICAgIGlmICghb2JzZXJ2YXRpb25zLmhhcyh0YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JzZXJ2YXRpb25zLmRlbGV0ZSh0YXJnZXQpO1xyXG4gICAgICAgIGlmICghb2JzZXJ2YXRpb25zLnNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sbGVyXy5yZW1vdmVPYnNlcnZlcih0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9wcyBvYnNlcnZpbmcgYWxsIGVsZW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuZGlzY29ubmVjdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XHJcbiAgICAgICAgdGhpcy5vYnNlcnZhdGlvbnNfLmNsZWFyKCk7XHJcbiAgICAgICAgdGhpcy5jb250cm9sbGVyXy5yZW1vdmVPYnNlcnZlcih0aGlzKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENvbGxlY3RzIG9ic2VydmF0aW9uIGluc3RhbmNlcyB0aGUgYXNzb2NpYXRlZCBlbGVtZW50IG9mIHdoaWNoIGhhcyBjaGFuZ2VkXHJcbiAgICAgKiBpdCdzIGNvbnRlbnQgcmVjdGFuZ2xlLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuZ2F0aGVyQWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgICAgIHRoaXMub2JzZXJ2YXRpb25zXy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZhdGlvbikge1xyXG4gICAgICAgICAgICBpZiAob2JzZXJ2YXRpb24uaXNBY3RpdmUoKSkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5wdXNoKG9ic2VydmF0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogSW52b2tlcyBpbml0aWFsIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggYSBsaXN0IG9mIFJlc2l6ZU9ic2VydmVyRW50cnlcclxuICAgICAqIGluc3RhbmNlcyBjb2xsZWN0ZWQgZnJvbSBhY3RpdmUgcmVzaXplIG9ic2VydmF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLmJyb2FkY2FzdEFjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIG9ic2VydmVyIGRvZXNuJ3QgaGF2ZSBhY3RpdmUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICAgIGlmICghdGhpcy5oYXNBY3RpdmUoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBjdHggPSB0aGlzLmNhbGxiYWNrQ3R4XztcclxuICAgICAgICAvLyBDcmVhdGUgUmVzaXplT2JzZXJ2ZXJFbnRyeSBpbnN0YW5jZSBmb3IgZXZlcnkgYWN0aXZlIG9ic2VydmF0aW9uLlxyXG4gICAgICAgIHZhciBlbnRyaWVzID0gdGhpcy5hY3RpdmVPYnNlcnZhdGlvbnNfLm1hcChmdW5jdGlvbiAob2JzZXJ2YXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNpemVPYnNlcnZlckVudHJ5KG9ic2VydmF0aW9uLnRhcmdldCwgb2JzZXJ2YXRpb24uYnJvYWRjYXN0UmVjdCgpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNhbGxiYWNrXy5jYWxsKGN0eCwgZW50cmllcywgY3R4KTtcclxuICAgICAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDbGVhcnMgdGhlIGNvbGxlY3Rpb24gb2YgYWN0aXZlIG9ic2VydmF0aW9ucy5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cclxuICAgICAqL1xyXG4gICAgUmVzaXplT2JzZXJ2ZXJTUEkucHJvdG90eXBlLmNsZWFyQWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5zcGxpY2UoMCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyB3aGV0aGVyIG9ic2VydmVyIGhhcyBhY3RpdmUgb2JzZXJ2YXRpb25zLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICovXHJcbiAgICBSZXNpemVPYnNlcnZlclNQSS5wcm90b3R5cGUuaGFzQWN0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU9ic2VydmF0aW9uc18ubGVuZ3RoID4gMDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXJTUEk7XHJcbn0oKSk7XG5cbi8vIFJlZ2lzdHJ5IG9mIGludGVybmFsIG9ic2VydmVycy4gSWYgV2Vha01hcCBpcyBub3QgYXZhaWxhYmxlIHVzZSBjdXJyZW50IHNoaW1cclxuLy8gZm9yIHRoZSBNYXAgY29sbGVjdGlvbiBhcyBpdCBoYXMgYWxsIHJlcXVpcmVkIG1ldGhvZHMgYW5kIGJlY2F1c2UgV2Vha01hcFxyXG4vLyBjYW4ndCBiZSBmdWxseSBwb2x5ZmlsbGVkIGFueXdheS5cclxudmFyIG9ic2VydmVycyA9IHR5cGVvZiBXZWFrTWFwICE9PSAndW5kZWZpbmVkJyA/IG5ldyBXZWFrTWFwKCkgOiBuZXcgTWFwU2hpbSgpO1xyXG4vKipcclxuICogUmVzaXplT2JzZXJ2ZXIgQVBJLiBFbmNhcHN1bGF0ZXMgdGhlIFJlc2l6ZU9ic2VydmVyIFNQSSBpbXBsZW1lbnRhdGlvblxyXG4gKiBleHBvc2luZyBvbmx5IHRob3NlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgc3BlYy5cclxuICovXHJcbnZhciBSZXNpemVPYnNlcnZlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBSZXNpemVPYnNlcnZlci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1Jlc2l6ZU9ic2VydmVyQ2FsbGJhY2t9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW5cclxuICAgICAqICAgICAgZGltZW5zaW9ucyBvZiB0aGUgb2JzZXJ2ZWQgZWxlbWVudHMgY2hhbmdlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZlcihjYWxsYmFjaykge1xyXG4gICAgICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNpemVPYnNlcnZlcikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgMCBwcmVzZW50LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgY29udHJvbGxlciA9IFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5nZXRJbnN0YW5jZSgpO1xyXG4gICAgICAgIHZhciBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlclNQSShjYWxsYmFjaywgY29udHJvbGxlciwgdGhpcyk7XHJcbiAgICAgICAgb2JzZXJ2ZXJzLnNldCh0aGlzLCBvYnNlcnZlcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXI7XHJcbn0oKSk7XHJcbi8vIEV4cG9zZSBwdWJsaWMgbWV0aG9kcyBvZiBSZXNpemVPYnNlcnZlci5cclxuW1xyXG4gICAgJ29ic2VydmUnLFxyXG4gICAgJ3Vub2JzZXJ2ZScsXHJcbiAgICAnZGlzY29ubmVjdCdcclxuXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcclxuICAgIFJlc2l6ZU9ic2VydmVyLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfYTtcclxuICAgICAgICByZXR1cm4gKF9hID0gb2JzZXJ2ZXJzLmdldCh0aGlzKSlbbWV0aG9kXS5hcHBseShfYSwgYXJndW1lbnRzKTtcclxuICAgIH07XHJcbn0pO1xuXG52YXIgaW5kZXggPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gRXhwb3J0IGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIGlmIGF2YWlsYWJsZS5cclxuICAgIGlmICh0eXBlb2YgZ2xvYmFsJDEuUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuIGdsb2JhbCQxLlJlc2l6ZU9ic2VydmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyO1xyXG59KSgpO1xuXG5leHBvcnQgZGVmYXVsdCBpbmRleDtcbiIsImltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVzaXplT2JzZXJ2ZXIgZnJvbSAncmVzaXplLW9ic2VydmVyLXBvbHlmaWxsJztcbmltcG9ydCBfdGhyb3R0bGUgZnJvbSAnbG9kYXNoL3Rocm90dGxlJztcbmNvbnN0IFJFU0laRV9USFJPVFRMRSA9IDE2O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUVsZW1lbnRTaXplKHJlZiwgXG4vLyBjYW4gYmUgdXNlZCwgd2hlbiBpdCBpcyBuZWVkZWQgdG8gZm9yY2UgcmVhc3NpZ24gb2JzZXJ2ZXIgdG8gZWxlbWVudFxuLy8gaW4gb3JkZXIgdG8gZ2V0IGNvcnJlY3QgbWVhc3VyZXMuIG1pZ2h0IGJlIHJlbGF0ZWQgdG8gYmVsb3dcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL3Jlc2l6ZS1vYnNlcnZlci9pc3N1ZXMvNjVcbmtleSkge1xuICAgIGNvbnN0IFtzaXplLCBzZXRTaXplXSA9IHVzZVN0YXRlKHtcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMCxcbiAgICB9KTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIShyZWYgPT09IG51bGwgfHwgcmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZWYuY3VycmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFuZGxlUmVzaXplID0gKGVudHJpZXMpID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgICAgIGlmIChlbnRyeS5ib3JkZXJCb3hTaXplKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyQm94U2l6ZSA9IGVudHJ5LmJvcmRlckJveFNpemVbMF1cbiAgICAgICAgICAgICAgICAgICAgPyBlbnRyeS5ib3JkZXJCb3hTaXplWzBdXG4gICAgICAgICAgICAgICAgICAgIDogZW50cnkuYm9yZGVyQm94U2l6ZTtcbiAgICAgICAgICAgICAgICAvLyAuLi5idXQgb2xkIHZlcnNpb25zIG9mIEZpcmVmb3ggdHJlYXQgaXQgYXMgYSBzaW5nbGUgaXRlbVxuICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tZG4vZG9tLWV4YW1wbGVzL2Jsb2IvbWFpbi9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLXRleHQuaHRtbCNMODhcbiAgICAgICAgICAgICAgICBzZXRTaXplKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IE1hdGgucm91bmQoYm9yZGVyQm94U2l6ZS5pbmxpbmVTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKGJvcmRlckJveFNpemUuYmxvY2tTaXplKSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGVudHJ5LnRhcmdldDtcbiAgICAgICAgICAgICAgICBzZXRTaXplKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IE1hdGgucm91bmQodGFyZ2V0Lm9mZnNldFdpZHRoKSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHRhcmdldC5vZmZzZXRIZWlnaHQpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihfdGhyb3R0bGUoaGFuZGxlUmVzaXplLCBSRVNJWkVfVEhST1RUTEUpKTtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWYuY3VycmVudCk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH07XG4gICAgfSwgW3JlZiwga2V5XSk7XG4gICAgcmV0dXJuIHNpemU7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgYmxvY2sgfSBmcm9tICcuLi8uLi91dGlscy9jbic7XG5jb25zdCBiID0gYmxvY2soJ3RleHQtaW5wdXQnKTtcbmV4cG9ydCBmdW5jdGlvbiBJbnB1dENvbnRyb2wocHJvcHMpIHtcbiAgICBjb25zdCB7IHR5cGUsIG5hbWUsIGlkLCB0YWJJbmRleCwgYXV0b0ZvY3VzLCBhdXRvQ29tcGxldGUsIHBsYWNlaG9sZGVyLCB2YWx1ZSwgZGVmYXVsdFZhbHVlLCBvbkNoYW5nZSwgb25Gb2N1cywgb25CbHVyLCBvbktleURvd24sIG9uS2V5VXAsIG9uS2V5UHJlc3MsIGNvbnRyb2xQcm9wcywgY29udHJvbFJlZiwgZGlzYWJsZWQsIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCBjb250cm9sUHJvcHMsIHsgcmVmOiBjb250cm9sUmVmLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnLCB7IHR5cGU6ICdpbnB1dCcgfSwgY29udHJvbFByb3BzID09PSBudWxsIHx8IGNvbnRyb2xQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udHJvbFByb3BzLmNsYXNzTmFtZSksIHR5cGU6IHR5cGUsIG5hbWU6IG5hbWUsIGlkOiBpZCwgdGFiSW5kZXg6IHRhYkluZGV4LCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHZhbHVlOiB2YWx1ZSwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUsIGF1dG9Gb2N1czogYXV0b0ZvY3VzLCBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSwgb25DaGFuZ2U6IG9uQ2hhbmdlLCBvbkZvY3VzOiBvbkZvY3VzLCBvbkJsdXI6IG9uQmx1ciwgb25LZXlEb3duOiBvbktleURvd24sIG9uS2V5VXA6IG9uS2V5VXAsIG9uS2V5UHJlc3M6IG9uS2V5UHJlc3MsIGRpc2FibGVkOiBkaXNhYmxlZCB9KSkpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vLi4vdXRpbHMvY24nO1xuaW1wb3J0IHsgdXNlRm9ya1JlZiB9IGZyb20gJy4uLy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuY29uc3QgYiA9IGJsb2NrKCd0ZXh0LWlucHV0Jyk7XG5leHBvcnQgZnVuY3Rpb24gVGV4dEFyZWFDb250cm9sKHByb3BzKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHsgbmFtZSwgaWQsIHRhYkluZGV4LCBhdXRvRm9jdXMsIGF1dG9Db21wbGV0ZSwgcGxhY2Vob2xkZXIsIHZhbHVlLCBkZWZhdWx0VmFsdWUsIG9uQ2hhbmdlLCBvbkZvY3VzLCBvbkJsdXIsIG9uS2V5RG93biwgb25LZXlVcCwgb25LZXlQcmVzcywgY29udHJvbFJlZiwgY29udHJvbFByb3BzLCBkaXNhYmxlZCwgcm93cywgbWluUm93cyA9IDEsIG1heFJvd3MsIH0gPSBwcm9wcztcbiAgICBjb25zdCBpbm5lckNvbnRyb2xSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihjb250cm9sUmVmLCBpbm5lckNvbnRyb2xSZWYpO1xuICAgIGNvbnN0IHRleHRhcmVhUm93cyA9IHJvd3MgfHwgbWluUm93cztcbiAgICBjb25zdCByZXNpemVIZWlnaHQgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBpbm5lckNvbnRyb2xSZWYgPT09IG51bGwgfHwgaW5uZXJDb250cm9sUmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiBpbm5lckNvbnRyb2xSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgIXJvd3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSB2YWx1ZSB8fCBjb250cm9sLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZMaW5lcyA9IChpbnB1dFZhbHVlLm1hdGNoKC9cXG4vZykgfHwgW10pLmxlbmd0aCArIDE7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sU3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZShjb250cm9sKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUludChjb250cm9sU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ2xpbmUtaGVpZ2h0JyksIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGJvcmRlcldpZHRoID0gcGFyc2VJbnQoY29udHJvbFN0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdib3JkZXItdG9wLXdpZHRoJyksIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IHBhZGRpbmdUb3AgPSBwYXJzZUludChjb250cm9sU3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctdG9wJyksIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gTWF0aC5mbG9vcihjb250cm9sLnNjcm9sbEhlaWdodCAvIGxpbmVIZWlnaHQpO1xuICAgICAgICAgICAgaWYgKG1heFJvd3MgJiYgbWF4Um93cyA8IE1hdGgubWF4KGxpbmVzLCBudW1iZXJPZkxpbmVzKSkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuc3R5bGUuaGVpZ2h0ID0gYCR7bWF4Um93cyAqIGxpbmVIZWlnaHQgKyAyICogcGFkZGluZ1RvcCArIDIgKiBib3JkZXJXaWR0aH1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICBjb250cm9sLnN0eWxlLmhlaWdodCA9IGAke2NvbnRyb2wuc2Nyb2xsSGVpZ2h0ICsgMiAqIGJvcmRlcldpZHRofXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtyb3dzLCBtYXhSb3dzLCB2YWx1ZV0pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChyZXNpemVIZWlnaHQsIFtyZXNpemVIZWlnaHRdKTtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvKiogSW4gY2FzZSB1bmNvbnRyb2xsZWQgY29tcG9uZW50ICovXG4gICAgICAgICAgICByZXNpemVIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidGV4dGFyZWFcIiwgT2JqZWN0LmFzc2lnbih7fSwgY29udHJvbFByb3BzLCB7IHJlZjogaGFuZGxlUmVmLCBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCAoX2EgPSBjb250cm9sUHJvcHMpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zdHlsZSksIHsgaGVpZ2h0OiByb3dzID8gJ2F1dG8nIDogdW5kZWZpbmVkIH0pLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnLCB7IHR5cGU6ICd0ZXh0YXJlYScgfSwgY29udHJvbFByb3BzID09PSBudWxsIHx8IGNvbnRyb2xQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udHJvbFByb3BzLmNsYXNzTmFtZSksIG5hbWU6IG5hbWUsIGlkOiBpZCwgdGFiSW5kZXg6IHRhYkluZGV4LCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHZhbHVlOiB2YWx1ZSwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUsIHJvd3M6IHRleHRhcmVhUm93cywgYXV0b0ZvY3VzOiBhdXRvRm9jdXMsIGF1dG9Db21wbGV0ZTogYXV0b0NvbXBsZXRlLCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvbkZvY3VzOiBvbkZvY3VzLCBvbkJsdXI6IG9uQmx1ciwgb25LZXlEb3duOiBvbktleURvd24sIG9uS2V5VXA6IG9uS2V5VXAsIG9uS2V5UHJlc3M6IG9uS2V5UHJlc3MsIGRpc2FibGVkOiBkaXNhYmxlZCB9KSkpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGExMXlIaWRkZW5TdmdQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3N2Zyc7XG5leHBvcnQgZnVuY3Rpb24gQ3Jvc3NJY29uKHByb3BzKSB7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIE9iamVjdC5hc3NpZ24oeyB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCB2aWV3Qm94OiBcIjAgMCAxMCAxMFwiLCB3aWR0aDogXCIxMFwiLCBoZWlnaHQ6IFwiMTBcIiwgZmlsbDogXCJjdXJyZW50Q29sb3JcIiB9LCBhMTF5SGlkZGVuU3ZnUHJvcHMsIHByb3BzKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwgeyBkOiBcIk05Ljc1NTkyIDguNTc3NDFDMTAuMDgxNCA4LjkwMjg1IDEwLjA4MTQgOS40MzA0OSA5Ljc1NTkyIDkuNzU1OTJDOS40MzA0OSAxMC4wODE0IDguOTAyODUgMTAuMDgxNCA4LjU3NzQxIDkuNzU1OTJMNSA2LjE3ODUxTDEuNDIyNTkgOS43NTU5MkMxLjA5NzE1IDEwLjA4MTQgMC41Njk1MTUgMTAuMDgxNCAwLjI0NDA3OCA5Ljc1NTkyQy0wLjA4MTM1OTIgOS40MzA0OSAtMC4wODEzNTkyIDguOTAyODUgMC4yNDQwNzggOC41Nzc0MUwzLjgyMTQ5IDVMMC4yNDQwNzggMS40MjI1OUMtMC4wODEzNTkyIDEuMDk3MTUgLTAuMDgxMzU5MiAwLjU2OTUxNSAwLjI0NDA3OCAwLjI0NDA3OEMwLjU2OTUxNSAtMC4wODEzNTkyIDEuMDk3MTUgLTAuMDgxMzU5MiAxLjQyMjU5IDAuMjQ0MDc4TDUgMy44MjE0OUw4LjU3NzQxIDAuMjQ0MDc4QzguOTAyODUgLTAuMDgxMzU5MiA5LjQzMDQ5IC0wLjA4MTM1OTIgOS43NTU5MiAwLjI0NDA3OEMxMC4wODE0IDAuNTY5NTE1IDEwLjA4MTQgMS4wOTcxNSA5Ljc1NTkyIDEuNDIyNTlMNi4xNzg1MSA1TDkuNzU1OTIgOC41Nzc0MVpcIiB9KSkpO1xufVxuIiwiY29uc3QgUEFSQU1fUkVHRVhQID0gL3t7KC4qPyl9fS9nO1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VQYXJhbXMoa2V5VmFsdWUsIHBhcmFtcykge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBsZXQgbGFzdEluZGV4ID0gKFBBUkFNX1JFR0VYUC5sYXN0SW5kZXggPSAwKTtcbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IFBBUkFNX1JFR0VYUC5leGVjKGtleVZhbHVlKSkpIHtcbiAgICAgICAgaWYgKGxhc3RJbmRleCAhPT0gbWF0Y2guaW5kZXgpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBrZXlWYWx1ZS5zbGljZShsYXN0SW5kZXgsIG1hdGNoLmluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0SW5kZXggPSBQQVJBTV9SRUdFWFAubGFzdEluZGV4O1xuICAgICAgICBjb25zdCBbYWxsLCBrZXldID0gbWF0Y2g7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1zLCBrZXkpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gcGFyYW1zW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gYWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChsYXN0SW5kZXggPCBrZXlWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0ICs9IGtleVZhbHVlLnNsaWNlKGxhc3RJbmRleCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iLCJleHBvcnQgdmFyIFBsdXJhbEZvcm07XG4oZnVuY3Rpb24gKFBsdXJhbEZvcm0pIHtcbiAgICBQbHVyYWxGb3JtW1BsdXJhbEZvcm1bXCJPbmVcIl0gPSAwXSA9IFwiT25lXCI7XG4gICAgUGx1cmFsRm9ybVtQbHVyYWxGb3JtW1wiRmV3XCJdID0gMV0gPSBcIkZld1wiO1xuICAgIFBsdXJhbEZvcm1bUGx1cmFsRm9ybVtcIk1hbnlcIl0gPSAyXSA9IFwiTWFueVwiO1xuICAgIFBsdXJhbEZvcm1bUGx1cmFsRm9ybVtcIk5vbmVcIl0gPSAzXSA9IFwiTm9uZVwiO1xufSkoUGx1cmFsRm9ybSB8fCAoUGx1cmFsRm9ybSA9IHt9KSk7XG4iLCJleHBvcnQgdmFyIExhbmc7XG4oZnVuY3Rpb24gKExhbmcpIHtcbiAgICBMYW5nW1wiUnVcIl0gPSBcInJ1XCI7XG4gICAgTGFuZ1tcIkVuXCJdID0gXCJlblwiO1xufSkoTGFuZyB8fCAoTGFuZyA9IHt9KSk7XG5sZXQgc3VicyA9IFtdO1xuY29uc3QgY29uZmlnID0ge1xuICAgIGxhbmc6IExhbmcuRW4sXG59O1xuZXhwb3J0IGNvbnN0IGNvbmZpZ3VyZSA9IChuZXdDb25maWcpID0+IHtcbiAgICBPYmplY3QuYXNzaWduKGNvbmZpZywgbmV3Q29uZmlnKTtcbiAgICBzdWJzLmZvckVhY2goKHN1YikgPT4ge1xuICAgICAgICBzdWIoY29uZmlnKTtcbiAgICB9KTtcbn07XG5leHBvcnQgY29uc3Qgc3Vic2NyaWJlQ29uZmlndXJlID0gKHN1YikgPT4ge1xuICAgIHN1YnMucHVzaChzdWIpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHN1YnMgPSBzdWJzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gc3ViKTtcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBnZXRDb25maWcgPSAoKSA9PiBjb25maWc7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoY291bnQsIHBsdXJhbEZvcm1zKSB7XG4gICAgaWYgKGNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwbHVyYWxGb3Jtcy5Ob25lO1xuICAgIH1cbiAgICBpZiAoY291bnQgPT09IDEgfHwgY291bnQgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBwbHVyYWxGb3Jtcy5PbmU7XG4gICAgfVxuICAgIHJldHVybiBwbHVyYWxGb3Jtcy5NYW55O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKGNvdW50LCBwbHVyYWxGb3Jtcykge1xuICAgIC8vIHRoZSBydWxlcyBmb3IgbmVnYXRpdmUgbnVtYmVycyBhcmUgdGhlIHNhbWVcbiAgICBjb25zdCBsYXN0RGlnaXQgPSBNYXRoLmFicyhjb3VudCAlIDEwKTtcbiAgICBjb25zdCBsYXN0MkRpZ2l0cyA9IE1hdGguYWJzKGNvdW50ICUgMTAwKTtcbiAgICBpZiAoY291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBsdXJhbEZvcm1zLk5vbmU7XG4gICAgfVxuICAgIGlmIChsYXN0RGlnaXQgPT09IDEgJiYgbGFzdDJEaWdpdHMgIT09IDExKSB7XG4gICAgICAgIHJldHVybiBwbHVyYWxGb3Jtcy5PbmU7XG4gICAgfVxuICAgIGlmICgobGFzdERpZ2l0ID4gMSAmJiBsYXN0RGlnaXQgPCA1KSAmJiAobGFzdDJEaWdpdHMgPCAxMCB8fCBsYXN0MkRpZ2l0cyA+IDIwKSkge1xuICAgICAgICByZXR1cm4gcGx1cmFsRm9ybXMuRmV3O1xuICAgIH1cbiAgICByZXR1cm4gcGx1cmFsRm9ybXMuTWFueTtcbn1cbiIsImltcG9ydCB7IEkxOE4gfSBmcm9tICdAZ3Jhdml0eS11aS9pMThuJztcbmltcG9ydCB7IGdldENvbmZpZywgc3Vic2NyaWJlQ29uZmlndXJlIH0gZnJvbSAnLi9jb21wb25lbnRzL3V0aWxzL2NvbmZpZ3VyZSc7XG5leHBvcnQgY29uc3QgaTE4biA9IG5ldyBJMThOKCk7XG5pMThuLnNldExhbmcoZ2V0Q29uZmlnKCkubGFuZyk7XG5zdWJzY3JpYmVDb25maWd1cmUoKGNvbmZpZykgPT4ge1xuICAgIGkxOG4uc2V0TGFuZyhjb25maWcubGFuZyk7XG59KTtcbiIsImltcG9ydCB7IHJlcGxhY2VQYXJhbXMgfSBmcm9tICcuL3JlcGxhY2UtcGFyYW1zJztcbmltcG9ydCB7IFBsdXJhbEZvcm0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBwbHVyYWxpemVyRW4gZnJvbSAnLi9wbHVyYWwvZW4nO1xuaW1wb3J0IHBsdXJhbGl6ZXJSdSBmcm9tICcuL3BsdXJhbC9ydSc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCBjbGFzcyBJMThOIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHt9O1xuICAgICAgICB0aGlzLmxhbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucGx1cmFsaXplcnMgPSB7XG4gICAgICAgICAgICBlbjogcGx1cmFsaXplckVuLFxuICAgICAgICAgICAgcnU6IHBsdXJhbGl6ZXJSdSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5sb2dnZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9nZ2VyKSB8fCBudWxsO1xuICAgIH1cbiAgICBzZXRMYW5nKGxhbmcpIHtcbiAgICAgICAgdGhpcy5sYW5nID0gbGFuZztcbiAgICB9XG4gICAgY29uZmlndXJlUGx1cmFsaXphdGlvbihwbHVyYWxpemVycykge1xuICAgICAgICB0aGlzLnBsdXJhbGl6ZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5wbHVyYWxpemVycywgcGx1cmFsaXplcnMpO1xuICAgIH1cbiAgICByZWdpc3RlcktleXNldChsYW5nLCBrZXlzZXROYW1lLCBkYXRhID0ge30pIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVtsYW5nXSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5kYXRhW2xhbmddLCBrZXlzZXROYW1lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBLZXlzZXQgJyR7a2V5c2V0TmFtZX0nIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCwgYWJvcnRpbmchYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhW2xhbmddID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kYXRhW2xhbmddLCB7IFtrZXlzZXROYW1lXTogZGF0YSB9KTtcbiAgICB9XG4gICAgcmVnaXN0ZXJLZXlzZXRzKGxhbmcsIGRhdGEpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5c2V0TmFtZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWdpc3RlcktleXNldChsYW5nLCBrZXlzZXROYW1lLCBkYXRhW2tleXNldE5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhcyhrZXlzZXROYW1lLCBrZXksIGxhbmcpIHtcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2VEYXRhID0gdGhpcy5nZXRMYW5ndWFnZURhdGEobGFuZyk7XG4gICAgICAgIHJldHVybiBCb29sZWFuKGxhbmd1YWdlRGF0YSAmJiBsYW5ndWFnZURhdGFba2V5c2V0TmFtZV0gJiYgbGFuZ3VhZ2VEYXRhW2tleXNldE5hbWVdW2tleV0pO1xuICAgIH1cbiAgICBpMThuKGtleXNldE5hbWUsIGtleSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlRGF0YSA9IHRoaXMuZ2V0TGFuZ3VhZ2VEYXRhKHRoaXMubGFuZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2VEYXRhID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMYW5ndWFnZSAnJHt0aGlzLmxhbmd9JyBpcyBub3QgZGVmaW5lZCwgbWFrZSBzdXJlIHlvdSBjYWxsIHNldExhbmcgZm9yIHRoZSBzYW1lIGxhbmd1YWdlIHlvdSBjYWxsZWQgcmVnaXN0ZXJLZXlzZXRzIGZvciFgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmtleXMobGFuZ3VhZ2VEYXRhKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMud2FybignTGFuZ3VhZ2UgZGF0YSBpcyBlbXB0eS4nKTtcbiAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5c2V0ID0gbGFuZ3VhZ2VEYXRhW2tleXNldE5hbWVdO1xuICAgICAgICBpZiAoIWtleXNldCkge1xuICAgICAgICAgICAgdGhpcy53YXJuKCdLZXlzZXQgbm90IGZvdW5kLicsIGtleXNldE5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoa2V5c2V0KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMud2FybignS2V5c2V0IGlzIGVtcHR5LicsIGtleXNldE5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXlWYWx1ZSA9IGtleXNldCAmJiBrZXlzZXRba2V5XTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKHR5cGVvZiBrZXlWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMud2FybignTWlzc2luZyBrZXkuJywga2V5c2V0TmFtZSwga2V5KTtcbiAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoa2V5VmFsdWUubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgICAgIHRoaXMud2FybignTWlzc2luZyByZXF1aXJlZCBwbHVyYWxzJywga2V5c2V0TmFtZSwga2V5KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY291bnQgPSBOdW1iZXIocGFyYW1zID09PSBudWxsIHx8IHBhcmFtcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFyYW1zLmNvdW50KTtcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4oY291bnQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53YXJuKCdNaXNzaW5nIHBhcmFtcy5jb3VudCBmb3Iga2V5LicsIGtleXNldE5hbWUsIGtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBsdXJhbGl6ZXIgPSB0aGlzLmdldExhbmd1YWdlUGx1cmFsaXplcih0aGlzLmxhbmcpO1xuICAgICAgICAgICAgcmVzdWx0ID0ga2V5VmFsdWVbcGx1cmFsaXplcihjb3VudCwgUGx1cmFsRm9ybSldIHx8IGtleVZhbHVlW1BsdXJhbEZvcm0uTWFueV07XG4gICAgICAgICAgICBpZiAoa2V5VmFsdWVbUGx1cmFsRm9ybS5Ob25lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53YXJuKCdNaXNzaW5nIGtleSBmb3IgMCcsIGtleXNldE5hbWUsIGtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBrZXlWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZXBsYWNlUGFyYW1zKHJlc3VsdCwgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBrZXlzZXQoa2V5c2V0TmFtZSkge1xuICAgICAgICByZXR1cm4gKGtleSwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pMThuKGtleXNldE5hbWUsIGtleSwgcGFyYW1zKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgd2Fybihtc2csIGtleXNldCwga2V5KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgbGV0IGNhY2hlS2V5ID0gJyc7XG4gICAgICAgIGlmIChrZXlzZXQpIHtcbiAgICAgICAgICAgIGNhY2hlS2V5ICs9IGtleXNldDtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYWNoZUtleSArPSBgLiR7a2V5fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYWNoZUtleSA9ICdsYW5ndWFnZURhdGEnO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IHRoaXMubG9nZ2VyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubG9nKGBJMThuOiAke21zZ31gLCB7XG4gICAgICAgICAgICBsZXZlbDogJ2luZm8nLFxuICAgICAgICAgICAgbG9nZ2VyOiBjYWNoZUtleSxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2kxOG4nXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXRMYW5ndWFnZURhdGEobGFuZykge1xuICAgICAgICBjb25zdCBsYW5nQ29kZSA9IGxhbmcgfHwgdGhpcy5sYW5nO1xuICAgICAgICByZXR1cm4gbGFuZ0NvZGUgPyB0aGlzLmRhdGFbbGFuZ0NvZGVdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBnZXRMYW5ndWFnZVBsdXJhbGl6ZXIobGFuZykge1xuICAgICAgICBjb25zdCBwbHVyYWxpemVyID0gbGFuZyA/IHRoaXMucGx1cmFsaXplcnNbbGFuZ10gOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghcGx1cmFsaXplcikge1xuICAgICAgICAgICAgdGhpcy53YXJuKGBQbHVyYWxpemF0aW9uIGlzIG5vdCBjb25maWd1cmVkIGZvciBsYW5ndWFnZSAnJHtsYW5nfScsIGZhbGxpbmcgYmFjayB0byB0aGUgZW5nbGlzaCBydWxlc2V0YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBsdXJhbGl6ZXIgfHwgcGx1cmFsaXplckVuO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IHJlZ2lzdGVyS2V5c2V0IH0gZnJvbSAnLi4vLi4vdXRpbHMvcmVnaXN0ZXJLZXlzZXQnO1xuaW1wb3J0IGVuIGZyb20gJy4vZW4uanNvbic7XG5pbXBvcnQgcnUgZnJvbSAnLi9ydS5qc29uJztcbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyS2V5c2V0KHsgZW4sIHJ1IH0sICd0ZXh0LWlucHV0Jyk7XG4iLCJpbXBvcnQgeyBpMThuIH0gZnJvbSAnLi4vLi4vaTE4bic7XG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJLZXlzZXQoZGF0YSwga2V5c2V0TmFtZSkge1xuICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLmZvckVhY2goKFtsYW5nLCBrZXlzXSkgPT4gaTE4bi5yZWdpc3RlcktleXNldChsYW5nLCBrZXlzZXROYW1lLCBrZXlzKSk7XG4gICAgcmV0dXJuIGkxOG4ua2V5c2V0KGtleXNldE5hbWUpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vSWNvbic7XG5pbXBvcnQgeyBDcm9zc0ljb24gfSBmcm9tICcuLi8uLi9pY29ucy9Dcm9zc0ljb24nO1xuaW1wb3J0IHsgYmxvY2sgfSBmcm9tICcuLi8uLi91dGlscy9jbic7XG5pbXBvcnQgaTE4biBmcm9tICcuLi9pMThuJztcbmNvbnN0IGIgPSBibG9jaygndGV4dC1pbnB1dCcpO1xuY29uc3QgSUNPTl9TSVpFID0gMTA7XG5leHBvcnQgY29uc3QgQ2xlYXJBY3Rpb24gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHNpemUsIGNsYXNzTmFtZSwgb25DbGljayB9ID0gcHJvcHM7XG4gICAgLy8gcmVtb3ZlIHVzaW5nIG9mIEJ1dHRvbiBjb21wb25lbnQgYWZ0ZXIgaHR0cHM6Ly9naXRodWIuY29tL2dyYXZpdHktdWkvdWlraXQvaXNzdWVzLzY0NVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b24sIHsgc2l6ZTogc2l6ZSwgY2xhc3NOYW1lOiBiKCdjbGVhcicsIGNsYXNzTmFtZSksIG9uQ2xpY2s6IG9uQ2xpY2ssIGV4dHJhUHJvcHM6IHsgJ2FyaWEtbGFiZWwnOiBpMThuKCdsYWJlbF9jbGVhci1idXR0b24nKSB9IH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbiwgeyBkYXRhOiBDcm9zc0ljb24sIHNpemU6IElDT05fU0laRSB9KSkpO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBibG9jayB9IGZyb20gJy4uLy4uL3V0aWxzL2NuJztcbmNvbnN0IGIgPSBibG9jaygndGV4dC1pbnB1dCcpO1xuZXhwb3J0IGNvbnN0IEFkZGl0aW9uYWxDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBBZGRpdGlvbmFsQ29udGVudCh7IHBsYWNlbWVudCwgY2hpbGRyZW4sIG9uQ2xpY2sgfSwgcmVmKSB7XG4gICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgcmVmOiByZWYsIGNsYXNzTmFtZTogYignYWRkaXRpb25hbC1jb250ZW50JywgeyBwbGFjZW1lbnQgfSksIG9uQ2xpY2s6IG9uQ2xpY2sgfSwgY2hpbGRyZW4pKTtcbn0pO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVGV4dElucHV0LmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9UZXh0SW5wdXQuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGJsb2NrLCBtb2RzQ2xhc3NOYW1lIH0gZnJvbSAnLi4vdXRpbHMvY24nO1xuaW1wb3J0IHsgdXNlRm9ya1JlZiB9IGZyb20gJy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHsgdXNlRWxlbWVudFNpemUgfSBmcm9tICcuLi91dGlscy91c2VFbGVtZW50U2l6ZSc7XG5pbXBvcnQgeyB1c2VVbmlxSWQgfSBmcm9tICcuLi91dGlscy91c2VVbmlxSWQnO1xuaW1wb3J0IHsgSW5wdXRDb250cm9sIH0gZnJvbSAnLi9JbnB1dENvbnRyb2wvSW5wdXRDb250cm9sJztcbmltcG9ydCB7IFRleHRBcmVhQ29udHJvbCB9IGZyb20gJy4vVGV4dEFyZWFDb250cm9sL1RleHRBcmVhQ29udHJvbCc7XG5pbXBvcnQgeyBDbGVhckFjdGlvbiB9IGZyb20gJy4vQ2xlYXJBY3Rpb24vQ2xlYXJBY3Rpb24nO1xuaW1wb3J0IHsgQWRkaXRpb25hbENvbnRlbnQgfSBmcm9tICcuL0FkZGl0aW9uYWxDb250ZW50L0FkZGl0aW9uYWxDb250ZW50JztcbmltcG9ydCAnLi9UZXh0SW5wdXQuY3NzJztcbmNvbnN0IGIgPSBibG9jaygndGV4dC1pbnB1dCcpO1xuY29uc3QgZ2V0VGV4dElucHV0U3RhdGUgPSAoYXJncyA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBlcnJvciB9ID0gYXJncztcbiAgICByZXR1cm4gZXJyb3IgPyAnZXJyb3InIDogdW5kZWZpbmVkO1xufTtcbmNvbnN0IHByZXBhcmVBdXRvQ29tcGxldGUgPSAoYXV0b0NvbXBsZXRlKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhdXRvQ29tcGxldGUgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gYXV0b0NvbXBsZXRlID8gJ29uJyA6ICdvZmYnO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGF1dG9Db21wbGV0ZTtcbiAgICB9XG59O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbmV4cG9ydCBjb25zdCBUZXh0SW5wdXQgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFRleHRJbnB1dChwcm9wcywgcmVmKSB7XG4gICAgY29uc3QgeyB2aWV3ID0gJ25vcm1hbCcsIHNpemUgPSAnbScsIHBpbiA9ICdyb3VuZC1yb3VuZCcsIG5hbWUsIHZhbHVlLCBkZWZhdWx0VmFsdWUsIGxhYmVsLCBkaXNhYmxlZCA9IGZhbHNlLCBtdWx0aWxpbmUgPSBmYWxzZSwgaGFzQ2xlYXIgPSBmYWxzZSwgZXJyb3IsIGF1dG9Db21wbGV0ZSwgb25VcGRhdGUsIG9uQ2hhbmdlLCBpZDogb3JpZ2luYWxJZCwgdGFiSW5kZXgsIHN0eWxlLCBjbGFzc05hbWUsIHFhLCBjb250cm9sUHJvcHM6IG9yaWdpbmFsQ29udHJvbFByb3BzLCBsZWZ0Q29udGVudCwgcmlnaHRDb250ZW50LCB9ID0gcHJvcHM7XG4gICAgY29uc3QgW3VuY29udHJvbGxlZFZhbHVlLCBzZXRVbmNvbnRyb2xsZWRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShkZWZhdWx0VmFsdWUgIT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSB2b2lkIDAgPyBkZWZhdWx0VmFsdWUgOiAnJyk7XG4gICAgY29uc3QgaW5uZXJDb250cm9sUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYocHJvcHMuY29udHJvbFJlZiwgaW5uZXJDb250cm9sUmVmKTtcbiAgICBjb25zdCBsYWJlbFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBsZWZ0Q29udGVudFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbaGFzVmVydGljYWxTY3JvbGxiYXIsIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzdGF0ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gZ2V0VGV4dElucHV0U3RhdGUoeyBlcnJvciB9KSwgW2Vycm9yXSk7XG4gICAgY29uc3QgaXNDb250cm9sbGVkID0gdmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBpbnB1dFZhbHVlID0gaXNDb250cm9sbGVkID8gdmFsdWUgOiB1bmNvbnRyb2xsZWRWYWx1ZTtcbiAgICBjb25zdCBpc0xhYmVsVmlzaWJsZSA9ICFtdWx0aWxpbmUgJiYgQm9vbGVhbihsYWJlbCk7XG4gICAgY29uc3QgaXNFcnJvck1zZ1Zpc2libGUgPSB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnO1xuICAgIGNvbnN0IGlzQ2xlYXJDb250cm9sVmlzaWJsZSA9IEJvb2xlYW4oaGFzQ2xlYXIgJiYgIWRpc2FibGVkICYmIGlucHV0VmFsdWUpO1xuICAgIGNvbnN0IGlzTGVmdENvbnRlbnRWaXNpYmxlID0gQm9vbGVhbihsZWZ0Q29udGVudCAmJiAhbXVsdGlsaW5lKTtcbiAgICBjb25zdCBpc1JpZ2h0Q29udGVudFZpc2libGUgPSBCb29sZWFuKHJpZ2h0Q29udGVudCAmJiAhbXVsdGlsaW5lKTtcbiAgICBjb25zdCBpc0F1dG9Db21wbGV0ZU9mZiA9IGlzTGFiZWxWaXNpYmxlICYmICFvcmlnaW5hbElkICYmICFuYW1lICYmIHR5cGVvZiBhdXRvQ29tcGxldGUgPT09ICd1bmRlZmluZWQnO1xuICAgIGNvbnN0IGlubmVySWQgPSB1c2VVbmlxSWQoKTtcbiAgICBjb25zdCBpZCA9IGlzTGFiZWxWaXNpYmxlID8gb3JpZ2luYWxJZCB8fCBpbm5lcklkIDogb3JpZ2luYWxJZDtcbiAgICBjb25zdCBsYWJlbFNpemUgPSB1c2VFbGVtZW50U2l6ZShpc0xhYmVsVmlzaWJsZSA/IGxhYmVsUmVmIDogbnVsbCwgc2l6ZSk7XG4gICAgY29uc3QgbGVmdENvbnRlbnRTaXplID0gdXNlRWxlbWVudFNpemUoaXNMZWZ0Q29udGVudFZpc2libGUgPyBsZWZ0Q29udGVudFJlZiA6IG51bGwsIHNpemUpO1xuICAgIGNvbnN0IGNvbnRyb2xQcm9wcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgb3JpZ2luYWxDb250cm9sUHJvcHMpLCB7IHN0eWxlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9yaWdpbmFsQ29udHJvbFByb3BzID09PSBudWxsIHx8IG9yaWdpbmFsQ29udHJvbFByb3BzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcmlnaW5hbENvbnRyb2xQcm9wcy5zdHlsZSksIChpc0xhYmVsVmlzaWJsZSAmJiBsYWJlbFNpemUud2lkdGggPyB7IHBhZGRpbmdMZWZ0OiBgJHtsYWJlbFNpemUud2lkdGh9cHhgIH0gOiB7fSkpIH0pO1xuICAgIGNvbnN0IGNvbW1vblByb3BzID0ge1xuICAgICAgICBpZCxcbiAgICAgICAgdGFiSW5kZXgsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIG9uQ2hhbmdlKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgICAgIGlmICghaXNDb250cm9sbGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0VW5jb250cm9sbGVkVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9uVXBkYXRlKSB7XG4gICAgICAgICAgICAgICAgb25VcGRhdGUobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBhdXRvQ29tcGxldGU6IGlzQXV0b0NvbXBsZXRlT2ZmID8gJ29mZicgOiBwcmVwYXJlQXV0b0NvbXBsZXRlKGF1dG9Db21wbGV0ZSksXG4gICAgICAgIGNvbnRyb2xQcm9wcyxcbiAgICB9O1xuICAgIGNvbnN0IGhhbmRsZUNsZWFyID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBpbm5lckNvbnRyb2xSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuZm9jdXMoKTtcbiAgICAgICAgICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50ID0gT2JqZWN0LmNyZWF0ZShldmVudCk7XG4gICAgICAgICAgICBzeW50aGV0aWNFdmVudC50YXJnZXQgPSBjb250cm9sO1xuICAgICAgICAgICAgc3ludGhldGljRXZlbnQuY3VycmVudFRhcmdldCA9IGNvbnRyb2w7XG4gICAgICAgICAgICBjb250cm9sLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZShzeW50aGV0aWNFdmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob25VcGRhdGUpIHtcbiAgICAgICAgICAgICAgICBvblVwZGF0ZSgnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgIHNldFVuY29udHJvbGxlZFZhbHVlKCcnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgaGFuZGxlQWRkaXRpb25hbENvbnRlbnRDbGljayA9IChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBoYXNBY3RpdmVFbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcbiAgICAgICAgY29uc3QgaGFzU2VsZWN0aW9uID0gQm9vbGVhbigoX2EgPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAoIWhhc0FjdGl2ZUVsZW1lbnQgJiYgIWhhc1NlbGVjdGlvbikge1xuICAgICAgICAgICAgKF9iID0gaW5uZXJDb250cm9sUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sID0gaW5uZXJDb250cm9sUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjb250cm9sICYmIG11bHRpbGluZSkge1xuICAgICAgICAgICAgY29uc3QgY3Vyckhhc1ZlcnRpY2FsU2Nyb2xsYmFyID0gY29udHJvbC5zY3JvbGxIZWlnaHQgPiBjb250cm9sLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIGlmIChoYXNWZXJ0aWNhbFNjcm9sbGJhciAhPT0gY3Vyckhhc1ZlcnRpY2FsU2Nyb2xsYmFyKSB7XG4gICAgICAgICAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoY3Vyckhhc1ZlcnRpY2FsU2Nyb2xsYmFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFttdWx0aWxpbmUsIGlucHV0VmFsdWUsIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyXSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IHJlZjogcmVmLCBzdHlsZTogc3R5bGUsIGNsYXNzTmFtZTogYih7XG4gICAgICAgICAgICB2aWV3LFxuICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBwaW46IHZpZXcgPT09ICdjbGVhcicgPyB1bmRlZmluZWQgOiBwaW4sXG4gICAgICAgICAgICAnaGFzLWNsZWFyJzogaXNDbGVhckNvbnRyb2xWaXNpYmxlLFxuICAgICAgICAgICAgJ2hhcy1sZWZ0LWNvbnRlbnQnOiBpc0xlZnRDb250ZW50VmlzaWJsZSAmJiAhbXVsdGlsaW5lLFxuICAgICAgICAgICAgJ2hhcy1yaWdodC1jb250ZW50JzogKGlzQ2xlYXJDb250cm9sVmlzaWJsZSB8fCBpc1JpZ2h0Q29udGVudFZpc2libGUpICYmICFtdWx0aWxpbmUsXG4gICAgICAgICAgICAnaGFzLXNjcm9sbGJhcic6IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyLFxuICAgICAgICB9LCBjbGFzc05hbWUpLCBcImRhdGEtcWFcIjogcWEgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGIoJ2NvbnRlbnQnKSB9LFxuICAgICAgICAgICAgaXNMZWZ0Q29udGVudFZpc2libGUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnQsIHsgcmVmOiBsZWZ0Q29udGVudFJlZiwgcGxhY2VtZW50OiBcImxlZnRcIiwgb25DbGljazogaGFuZGxlQWRkaXRpb25hbENvbnRlbnRDbGljayB9LCBsZWZ0Q29udGVudCkpLFxuICAgICAgICAgICAgaXNMYWJlbFZpc2libGUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsYWJlbFwiLCB7IHJlZjogbGFiZWxSZWYsIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGlzTGVmdENvbnRlbnRWaXNpYmxlID8gbGVmdENvbnRlbnRTaXplLndpZHRoIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogYGNhbGMoNTAlIC0gJHtsZWZ0Q29udGVudFNpemUud2lkdGh9cHgpYCxcbiAgICAgICAgICAgICAgICB9LCBjbGFzc05hbWU6IGIoJ2xhYmVsJyksIHRpdGxlOiBsYWJlbCwgaHRtbEZvcjogaWQgfSwgYCR7bGFiZWx9YCkpLFxuICAgICAgICAgICAgbXVsdGlsaW5lID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGV4dEFyZWFDb250cm9sLCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcywgY29tbW9uUHJvcHMsIHsgY29udHJvbFJlZjogaGFuZGxlUmVmIH0pKSkgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dENvbnRyb2wsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCBjb21tb25Qcm9wcywgeyBjb250cm9sUmVmOiBoYW5kbGVSZWYgfSkpKSxcbiAgICAgICAgICAgIGlzQ2xlYXJDb250cm9sVmlzaWJsZSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChDbGVhckFjdGlvbiwgeyBjbGFzc05hbWU6IG1vZHNDbGFzc05hbWUoYignY2xlYXInLCB7IHRleHRhcmVhOiBtdWx0aWxpbmUgfSkpLCBzaXplOiBzaXplLCBvbkNsaWNrOiBoYW5kbGVDbGVhciB9KSksXG4gICAgICAgICAgICBpc1JpZ2h0Q29udGVudFZpc2libGUgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQWRkaXRpb25hbENvbnRlbnQsIHsgcGxhY2VtZW50OiBcInJpZ2h0XCIsIG9uQ2xpY2s6IGhhbmRsZUFkZGl0aW9uYWxDb250ZW50Q2xpY2sgfSwgcmlnaHRDb250ZW50KSkpLFxuICAgICAgICBpc0Vycm9yTXNnVmlzaWJsZSAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdlcnJvcicpIH0sIGVycm9yKSkpO1xufSk7XG4iLCJpbXBvcnQgeyBMYW5nLCBUZXh0U2l6ZXMsIFRoZW1lIH0gZnJvbSAnLi9tb2RlbHMnO1xuZXhwb3J0IGNvbnN0IERJU0xJS0VfVkFSSUFOVFMgPSB7XG4gICAgW0xhbmcuUnVdOiBbXG4gICAgICAgICfQndC10YIg0L7RgtCy0LXRgtCwINC90LAg0LzQvtC5INCy0L7Qv9GA0L7RgScsXG4gICAgICAgICfQoNC10LrQvtC80LXQvdC00LDRhtC40Lgg0L3QtSDQv9C+0LzQvtCz0LvQuCcsXG4gICAgICAgICfQodC+0LTQtdGA0LbQsNC90LjQtSDQvdC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCINC30LDQs9C+0LvQvtCy0LrRgycsXG4gICAgICAgICfQlNGA0YPQs9C+0LUnLFxuICAgIF0sXG4gICAgW0xhbmcuRW5dOiBbXG4gICAgICAgICdObyBhbnN3ZXIgdG8gbXkgcXVlc3Rpb24nLFxuICAgICAgICBcIlJlY29tbWVuZGF0aW9ucyBkaWRuJ3QgaGVscFwiLFxuICAgICAgICBcIlRoZSBjb250ZW50IGRvZXNuJ3QgbWF0Y2ggdGhlIHRpdGxlXCIsXG4gICAgICAgICdPdGhlcicsXG4gICAgXSxcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUyA9IHtcbiAgICBmdWxsU2NyZWVuOiBmYWxzZSxcbiAgICBzaW5nbGVQYWdlOiBmYWxzZSxcbiAgICB3aWRlRm9ybWF0OiBmYWxzZSxcbiAgICBzaG93TWluaVRvYzogdHJ1ZSxcbiAgICBib29rbWFya2VkUGFnZTogZmFsc2UsXG4gICAgdGhlbWU6IFRoZW1lLkRhcmssXG4gICAgdGV4dFNpemU6IFRleHRTaXplcy5NLFxuICAgIGlzTGlrZWQ6IGZhbHNlLFxuICAgIGlzRGlzbGlrZWQ6IGZhbHNlLFxuICAgIGlzUGlubmVkOiBmYWxzZSxcbn07XG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gICAgQUNDRVNTX0RFTklFRDogNDAzLFxuICAgIE5PVF9GT1VORDogNDA0LFxuICAgIFNFUlZFUl9FUlJPUjogNTAwLFxufTtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB3aWR0aDogXCIxNFwiLFxuICBoZWlnaHQ6IFwiMTRcIixcbiAgZmlsbDogXCJub25lXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZDogXCJNMy4xNCA2LjMxM0gxLjExYS42MDEuNjAxIDAgMDAtLjYxLjYwOXY2LjA5NGMwIC4zNTUuMjU0LjYwOS42MS42MDloMi4wM2MuMzMgMCAuNjEtLjI1NC42MS0uNjFWNi45MjNjMC0uMzMtLjI4LS42MS0uNjEtLjYxem0tMS4wMTUgNi4yOTZhLjU4Ny41ODcgMCAwMS0uNjEtLjYwOWMwLS4zMy4yNTUtLjYxLjYxLS42MS4zMyAwIC42MS4yOC42MS42MSAwIC4zNTUtLjI4LjYxLS42MS42MXptOC4xMjUtOS45MDJDMTAuMjUuODI4IDkuMDMxLjYyNSA4LjQyMi42MjVjLS41MzMgMC0uNzYyIDEuMDE2LS44NjMgMS40NzMtLjE1My41NTgtLjI4IDEuMTE3LS42NiAxLjQ5OC0uODEzLjgzOC0xLjI0NSAxLjg3OS0yLjI2IDIuODY5YS40MS40MSAwIDAwLS4wNzcuMjI4djUuNDM0YzAgLjE1Mi4xMjcuMjguMjguMzA1LjQwNiAwIC45NC4yMjggMS4zNDYuNDA2LjgxMi4zNTUgMS44MDIuNzg3IDMuMDIxLjc4N2guMDc2YzEuMDkyIDAgMi4zODcgMCAyLjg5NS0uNzM2LjIyOC0uMzA1LjI3OS0uNjg2LjE1Mi0xLjE0My40MzItLjQzMS42MzUtMS4yNDQuNDMyLTEuOTA0LjQzMS0uNTg0LjQ4Mi0xLjQyMi4yMjgtMi4wMDYuMzA1LS4zMDUuNTA4LS43ODcuNDgzLTEuMjQ0IDAtLjc4Ny0uNjYtMS40OTgtMS40OTgtMS40OThoLTIuNTljLjIwMy0uNzExLjg2My0xLjMyLjg2My0yLjM4N3pcIixcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIlxufSkpKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCBkZWZhdWx0ICgoe1xuICBzdHlsZXMgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgd2lkdGg6IFwiMTRcIixcbiAgaGVpZ2h0OiBcIjE0XCIsXG4gIGZpbGw6IFwibm9uZVwiLFxuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG59LCBwcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gIGQ6IFwiTS41IDIuMDQ3VjguMTRjMCAuMzU1LjI1NC42MDkuNjEuNjA5aDIuMDNjLjMzIDAgLjYxLS4yNTQuNjEtLjYxVjIuMDQ4YzAtLjMzLS4yOC0uNjEtLjYxLS42MUgxLjExYy0uMzU2IDAtLjYxLjI4LS42MS42MXptMS4wMTYgNS4wNzhjMC0uMzMuMjU0LS42MS42MDktLjYxLjMzIDAgLjYxLjI4LjYxLjYxIDAgLjM1NS0uMjguNjEtLjYxLjYxYS41ODcuNTg3IDAgMDEtLjYxLS42MXptNi45MDYgNi41Yy42MSAwIDEuODI4LS4yMDMgMS44MjgtMi4wNTcgMC0xLjA2Ni0uNjYtMS42NzUtLjg2My0yLjQxMmgyLjU5Yy44MzggMCAxLjQ5OC0uNjg1IDEuNTIzLTEuNDcyIDAtLjQ1Ny0uMjAzLS45NC0uNTA4LTEuMjQ1LjI1NC0uNTg0LjIwMy0xLjQyMS0uMjI4LTIuMDA1LjIwMy0uNjYgMC0xLjQ3My0uNDMyLTEuOTA1LjEyNy0uNDU3LjA3Ni0uODM4LS4xNTItMS4xNDJDMTEuNjcyLjY1IDEwLjM3Ny42MjUgOS4yODUuNjI1SDkuMjFDNy45OS42NSA3IDEuMDgyIDYuMTg4IDEuNDM4Yy0uNDA3LjE3Ny0uOTQuNDA2LTEuMzQ2LjQwNi0uMTUzLjAyNS0uMjguMTUyLS4yOC4zMDR2NS40MzRjMCAuMDc2LjAyNi4xNzguMDc3LjIyOSAxLjAxNS45OSAxLjQ0NyAyLjAzIDIuMjYgMi44NjkuMzguMzguNTA3Ljk0LjY2IDEuNDk4LjEwMS40NTcuMzMgMS40NDcuODYzIDEuNDQ3elwiLFxuICBmaWxsOiBcImN1cnJlbnRDb2xvclwiXG59KSkpOyIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0ZlZWRiYWNrLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRmVlZGJhY2suc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IHdpdGhUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgQ2hlY2tib3gsIFBvcHVwLCBUZXh0SW5wdXQsIEJ1dHRvbiwgSWNvbiBhcyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGdyYXZpdHktdWkvdWlraXQnO1xuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uL0NvbnRyb2wnO1xuaW1wb3J0IHsgUG9wcGVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi9ob29rcyc7XG5pbXBvcnQgeyBGZWVkYmFja1R5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRElTTElLRV9WQVJJQU5UUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgTGlrZUljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL2xpa2Uuc3ZnJztcbmltcG9ydCBEaXNsaWtlSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaWNvbnMvZGlzbGlrZS5zdmcnO1xuaW1wb3J0ICcuL0ZlZWRiYWNrLnNjc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdkYy1mZWVkYmFjaycpO1xuZXhwb3J0IHZhciBGZWVkYmFja1ZpZXc7XG4oZnVuY3Rpb24gKEZlZWRiYWNrVmlldykge1xuICAgIEZlZWRiYWNrVmlld1tcIldpZGVcIl0gPSBcIndpZGVcIjtcbiAgICBGZWVkYmFja1ZpZXdbXCJSZWd1bGFyXCJdID0gXCJyZWd1bGFyXCI7XG59KShGZWVkYmFja1ZpZXcgfHwgKEZlZWRiYWNrVmlldyA9IHt9KSk7XG5jb25zdCBGZWVkYmFjayA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbGFuZywgc2luZ2xlUGFnZSwgaXNMaWtlZCwgaXNEaXNsaWtlZCwgZGlzbGlrZVZhcmlhbnRzID0gRElTTElLRV9WQVJJQU5UU1tsYW5nXSwgaXNWZXJ0aWNhbFZpZXcsIG9uU2VuZEZlZWRiYWNrLCB2aWV3LCBjbGFzc05hbWVDb250cm9sLCBpMThuLCBwb3B1cFBvc2l0aW9uLCB0LCB9ID0gcHJvcHM7XG4gICAgY29uc3QgbGlrZUNvbnRyb2xSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZGlzbGlrZUNvbnRyb2xSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdGltZXJJZCA9IHVzZVJlZigpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSAzMDAwO1xuICAgIGNvbnN0IFtpbm5lcklzRGlzbGlrZWQsIHNldElubmVySXNEaXNsaWtlZF0gPSB1c2VTdGF0ZShpc0Rpc2xpa2VkKTtcbiAgICBjb25zdCBbZmVlZGJhY2tDb21tZW50LCBzZXRGZWVkYmFja0NvbW1lbnRdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtmZWVkYmFja0NoZWNrYm94ZXMsIHNldEZlZWRiYWNrQ2hlY2tib3hlc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3Nob3dMaWtlU3VjY2Vzc1BvcHVwLCBzZXRTaG93TGlrZVN1Y2Nlc3NQb3B1cF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Nob3dEaXNsaWtlU3VjY2Vzc1BvcHVwLCBzZXRTaG93RGlzbGlrZVN1Y2Nlc3NQb3B1cF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Nob3dEaXNsaWtlVmFyaWFudHNQb3B1cCwgc2V0U2hvd0Rpc2xpa2VWYXJpYW50c1BvcHVwXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBoaWRlRmVlZGJhY2tQb3B1cHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldFNob3dEaXNsaWtlU3VjY2Vzc1BvcHVwKGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0xpa2VTdWNjZXNzUG9wdXAoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGlzbGlrZVZhcmlhbnRzUG9wdXAoZmFsc2UpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCByZXNldEZlZWRiYWNrQWRkaXRpb25hbEluZm8gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldEZlZWRiYWNrQ29tbWVudCgnJyk7XG4gICAgICAgIHNldEZlZWRiYWNrQ2hlY2tib3hlcyh7fSk7XG4gICAgfSwgW10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldElubmVySXNEaXNsaWtlZChpc0Rpc2xpa2VkKTtcbiAgICB9LCBbaXNEaXNsaWtlZF0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobGFuZyk7XG4gICAgfSwgW2kxOG4sIGxhbmddKTtcbiAgICBjb25zdCBzZXRUaW1lciA9IHVzZUNhbGxiYWNrKChjYWxsYmFjaykgPT4ge1xuICAgICAgICB0aW1lcklkLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0sIHRpbWVvdXQpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjbGVhclRpbWVyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZC5jdXJyZW50KTtcbiAgICAgICAgdGltZXJJZC5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0sIFtdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoc2hvd0xpa2VTdWNjZXNzUG9wdXAgfHwgc2hvd0Rpc2xpa2VTdWNjZXNzUG9wdXApIHtcbiAgICAgICAgICAgIHNldFRpbWVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRTaG93RGlzbGlrZVN1Y2Nlc3NQb3B1cChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0U2hvd0xpa2VTdWNjZXNzUG9wdXAoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZXIoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwgW2lzRGlzbGlrZWQsIGNsZWFyVGltZXIsIHNldFRpbWVyLCBzaG93TGlrZVN1Y2Nlc3NQb3B1cCwgc2hvd0Rpc2xpa2VTdWNjZXNzUG9wdXBdKTtcbiAgICBjb25zdCBzZXRMaWtlQ29udHJvbFJlZiA9IHVzZUNhbGxiYWNrKChyZWYpID0+IHtcbiAgICAgICAgbGlrZUNvbnRyb2xSZWYuY3VycmVudCA9IHJlZjtcbiAgICB9LCBbXSk7XG4gICAgY29uc3Qgc2V0RGlzbGlrZUNvbnRyb2xSZWYgPSB1c2VDYWxsYmFjaygocmVmKSA9PiB7XG4gICAgICAgIGRpc2xpa2VDb250cm9sUmVmLmN1cnJlbnQgPSByZWY7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IG9uT3V0c2lkZUNsaWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBoaWRlRmVlZGJhY2tQb3B1cHMoKTtcbiAgICAgICAgaWYgKHNob3dEaXNsaWtlVmFyaWFudHNQb3B1cCAmJiBpbm5lcklzRGlzbGlrZWQgJiYgIWlzRGlzbGlrZWQpIHtcbiAgICAgICAgICAgIHNldElubmVySXNEaXNsaWtlZChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGlzRGlzbGlrZWQsXG4gICAgICAgIGlubmVySXNEaXNsaWtlZCxcbiAgICAgICAgaGlkZUZlZWRiYWNrUG9wdXBzLFxuICAgICAgICBzZXRJbm5lcklzRGlzbGlrZWQsXG4gICAgICAgIHNob3dEaXNsaWtlVmFyaWFudHNQb3B1cCxcbiAgICBdKTtcbiAgICBjb25zdCBvblNlbmREaXNsaWtlSW5mb3JtYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldFNob3dEaXNsaWtlU3VjY2Vzc1BvcHVwKHRydWUpO1xuICAgICAgICBzZXRTaG93TGlrZVN1Y2Nlc3NQb3B1cChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEaXNsaWtlVmFyaWFudHNQb3B1cChmYWxzZSk7XG4gICAgICAgIGlmIChvblNlbmRGZWVkYmFjaykge1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IEZlZWRiYWNrVHlwZS5kaXNsaWtlO1xuICAgICAgICAgICAgY29uc3QgYWRkaXRpb25hbEluZm8gPSBnZXRQcmVwYXJlZEZlZWRiYWNrQWRkaXRpb25hbEluZm8oZmVlZGJhY2tDb21tZW50LCBmZWVkYmFja0NoZWNrYm94ZXMpO1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IE9iamVjdC5hc3NpZ24oeyB0eXBlIH0sIGFkZGl0aW9uYWxJbmZvKTtcbiAgICAgICAgICAgIG9uU2VuZEZlZWRiYWNrKGRhdGEpO1xuICAgICAgICAgICAgcmVzZXRGZWVkYmFja0FkZGl0aW9uYWxJbmZvKCk7XG4gICAgICAgIH1cbiAgICB9LCBbb25TZW5kRmVlZGJhY2ssIGZlZWRiYWNrQ29tbWVudCwgZmVlZGJhY2tDaGVja2JveGVzLCByZXNldEZlZWRiYWNrQWRkaXRpb25hbEluZm9dKTtcbiAgICBjb25zdCBnZXRQb3B1cFBvc2l0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIXZpZXcgfHwgdmlldyA9PT0gRmVlZGJhY2tWaWV3LlJlZ3VsYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBpc1ZlcnRpY2FsVmlldyA/IFBvcHBlclBvc2l0aW9uLkxFRlRfU1RBUlQgOiBQb3BwZXJQb3NpdGlvbi5CT1RUT01fRU5EO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQb3BwZXJQb3NpdGlvbi5SSUdIVDtcbiAgICB9LCBbaXNWZXJ0aWNhbFZpZXcsIHZpZXddKTtcbiAgICBjb25zdCBvbkNoYW5nZUxpa2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldFNob3dMaWtlU3VjY2Vzc1BvcHVwKHRydWUpO1xuICAgICAgICBzZXRTaG93RGlzbGlrZVN1Y2Nlc3NQb3B1cChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEaXNsaWtlVmFyaWFudHNQb3B1cChmYWxzZSk7XG4gICAgICAgIHNldElubmVySXNEaXNsaWtlZChmYWxzZSk7XG4gICAgICAgIGlmIChvblNlbmRGZWVkYmFjaykge1xuICAgICAgICAgICAgb25TZW5kRmVlZGJhY2soe1xuICAgICAgICAgICAgICAgIHR5cGU6IGlzTGlrZWQgPyBGZWVkYmFja1R5cGUuaW5kZXRlcm1pbmF0ZSA6IEZlZWRiYWNrVHlwZS5saWtlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbaXNMaWtlZCwgb25TZW5kRmVlZGJhY2tdKTtcbiAgICBjb25zdCBvbkNoYW5nZURpc2xpa2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmICghaXNEaXNsaWtlZCAmJiAhaW5uZXJJc0Rpc2xpa2VkKSB7XG4gICAgICAgICAgICAvLyDQndCw0LbQsNGC0Ywg0LTQuNC30LvQsNC50Log0Lgg0L/QvtC60LDQt9Cw0YLRjCDQvtC60L3QviDRgSDQtNC+0L8uINC40L3RhNC+0YDQvNCw0YbQuNC10LlcbiAgICAgICAgICAgIHNldFNob3dEaXNsaWtlVmFyaWFudHNQb3B1cCh0cnVlKTtcbiAgICAgICAgICAgIHNldElubmVySXNEaXNsaWtlZCh0cnVlKTtcbiAgICAgICAgICAgIHNldFNob3dMaWtlU3VjY2Vzc1BvcHVwKGZhbHNlKTtcbiAgICAgICAgICAgIHNldFNob3dEaXNsaWtlU3VjY2Vzc1BvcHVwKGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChpc0xpa2VkICYmIG9uU2VuZEZlZWRiYWNrKSB7XG4gICAgICAgICAgICAgICAgb25TZW5kRmVlZGJhY2soeyB0eXBlOiBGZWVkYmFja1R5cGUuaW5kZXRlcm1pbmF0ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaXNEaXNsaWtlZCAmJiBpbm5lcklzRGlzbGlrZWQpIHtcbiAgICAgICAgICAgIGhpZGVGZWVkYmFja1BvcHVwcygpO1xuICAgICAgICAgICAgc2V0SW5uZXJJc0Rpc2xpa2VkKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0Rpc2xpa2VkICYmIGlubmVySXNEaXNsaWtlZCkge1xuICAgICAgICAgICAgLy8g0J7RgtC20LDRgtGMINC00LjQt9C70LDQudC6INC4INC+0YLQv9GA0LDQstC40YLRjCDRgdC+0LHRi9GC0LjQtSDQsiDQvdC10L7Qv9GA0LXQtNC10LvQtdC90L3QvtC1INGB0L7RgdGC0L7Rj9C90LjQtVxuICAgICAgICAgICAgaGlkZUZlZWRiYWNrUG9wdXBzKCk7XG4gICAgICAgICAgICBzZXRJbm5lcklzRGlzbGlrZWQoZmFsc2UpO1xuICAgICAgICAgICAgaWYgKG9uU2VuZEZlZWRiYWNrKSB7XG4gICAgICAgICAgICAgICAgb25TZW5kRmVlZGJhY2soeyB0eXBlOiBGZWVkYmFja1R5cGUuaW5kZXRlcm1pbmF0ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIFtpbm5lcklzRGlzbGlrZWQsIGlzRGlzbGlrZWQsIGlzTGlrZWQsIG9uU2VuZEZlZWRiYWNrLCBoaWRlRmVlZGJhY2tQb3B1cHNdKTtcbiAgICBjb25zdCByZW5kZXJMaWtlQ29udHJvbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIHsgb25DbGljazogb25DaGFuZ2VMaWtlLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnLCB7IHZpZXcgfSwgY2xhc3NOYW1lQ29udHJvbCksIGlzVmVydGljYWxWaWV3OiBpc1ZlcnRpY2FsVmlldywgdG9vbHRpcFRleHQ6IHQoYCR7aXNMaWtlZCA/ICdjYW5jZWwtJyA6ICcnfWxpa2UtdGV4dGApLCBzZXRSZWY6IHNldExpa2VDb250cm9sUmVmLCBpY29uOiAoYXJncykgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7IGRhdGE6IExpa2VJY29uLCBjbGFzc05hbWU6IGIoJ2xpa2UtYnV0dG9uJywgeyBhY3RpdmU6IGlzTGlrZWQsIHZpZXcgfSkgfSwgYXJncykpKSwgcG9wdXBQb3NpdGlvbjogcG9wdXBQb3NpdGlvbiB9KSk7XG4gICAgfSwgW1xuICAgICAgICBvbkNoYW5nZUxpa2UsXG4gICAgICAgIGNsYXNzTmFtZUNvbnRyb2wsXG4gICAgICAgIHZpZXcsXG4gICAgICAgIGlzVmVydGljYWxWaWV3LFxuICAgICAgICBpc0xpa2VkLFxuICAgICAgICBzZXRMaWtlQ29udHJvbFJlZixcbiAgICAgICAgcG9wdXBQb3NpdGlvbixcbiAgICAgICAgdCxcbiAgICBdKTtcbiAgICBjb25zdCByZW5kZXJEaXNsaWtlQ29udHJvbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIHsgb25DbGljazogb25DaGFuZ2VEaXNsaWtlLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnLCB7IHZpZXcgfSwgY2xhc3NOYW1lQ29udHJvbCksIGlzVmVydGljYWxWaWV3OiBpc1ZlcnRpY2FsVmlldywgdG9vbHRpcFRleHQ6IHQoYCR7aW5uZXJJc0Rpc2xpa2VkID8gJ2NhbmNlbC0nIDogJyd9ZGlzbGlrZS10ZXh0YCksIHNldFJlZjogc2V0RGlzbGlrZUNvbnRyb2xSZWYsIGljb246IChhcmdzKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHsgZGF0YTogRGlzbGlrZUljb24sIGNsYXNzTmFtZTogYignbGlrZS1idXR0b24nLCB7IGFjdGl2ZTogaW5uZXJJc0Rpc2xpa2VkLCB2aWV3IH0pIH0sIGFyZ3MpKSkgfSkpO1xuICAgIH0sIFtcbiAgICAgICAgaW5uZXJJc0Rpc2xpa2VkLFxuICAgICAgICBvbkNoYW5nZURpc2xpa2UsXG4gICAgICAgIGNsYXNzTmFtZUNvbnRyb2wsXG4gICAgICAgIHZpZXcsXG4gICAgICAgIGlzVmVydGljYWxWaWV3LFxuICAgICAgICBzZXREaXNsaWtlQ29udHJvbFJlZixcbiAgICAgICAgdCxcbiAgICBdKTtcbiAgICBjb25zdCByZW5kZXJSZWd1bGFyRmVlZGJhY2tDb250cm9scyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgcmVuZGVyTGlrZUNvbnRyb2woKSxcbiAgICAgICAgICAgIHJlbmRlckRpc2xpa2VDb250cm9sKCkpKTtcbiAgICB9LCBbcmVuZGVyTGlrZUNvbnRyb2wsIHJlbmRlckRpc2xpa2VDb250cm9sXSk7XG4gICAgY29uc3QgcmVuZGVyV2lkZUZlZWRiYWNrQ29udHJvbHMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignY29udGFpbmVyJywgeyB2aWV3IH0pIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdjb250YWluZXItcm93JywgeyB2aWV3IH0pIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImgzXCIsIHsgY2xhc3NOYW1lOiBiKCd0aXRsZScsIHsgdmlldyB9KSB9LCB0KCdtYWluLXF1ZXN0aW9uJykpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2NvbnRyb2xzJywgeyB2aWV3IH0pIH0sXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLCB7IHNpemU6IFwibVwiLCB2aWV3OiBcIm5vcm1hbFwiLCByZWY6IHNldExpa2VDb250cm9sUmVmLCBvbkNsaWNrOiBvbkNoYW5nZUxpa2UsIGNsYXNzTmFtZTogYignY29udHJvbCcsIHsgdmlldyB9KSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b24uSWNvbiwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEljb25Db21wb25lbnQsIHsgZGF0YTogTGlrZUljb24sIHNpemU6IDE0LCBjbGFzc05hbWU6IGIoJ2ZlZWRiYWNrLWJ1dHRvbicsIHsgYWN0aXZlOiBpc0xpa2VkIH0pIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQoJ2J1dHRvbi1saWtlLXRleHQnKSksXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLCB7IHZpZXc6IFwibm9ybWFsXCIsIHJlZjogc2V0RGlzbGlrZUNvbnRyb2xSZWYsIG9uQ2xpY2s6IG9uQ2hhbmdlRGlzbGlrZSwgY2xhc3NOYW1lOiBiKCdjb250cm9sJywgeyB2aWV3IH0pIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbi5JY29uLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbXBvbmVudCwgeyBkYXRhOiBEaXNsaWtlSWNvbiwgc2l6ZTogMTQsIGNsYXNzTmFtZTogYignZmVlZGJhY2stYnV0dG9uJywgeyBhY3RpdmU6IGlubmVySXNEaXNsaWtlZCB9KSB9KSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0KCdidXR0b24tZGlzbGlrZS10ZXh0JykpKSkpKTtcbiAgICB9LCBbXG4gICAgICAgIGlubmVySXNEaXNsaWtlZCxcbiAgICAgICAgaXNMaWtlZCxcbiAgICAgICAgdmlldyxcbiAgICAgICAgdCxcbiAgICAgICAgc2V0TGlrZUNvbnRyb2xSZWYsXG4gICAgICAgIHNldERpc2xpa2VDb250cm9sUmVmLFxuICAgICAgICBvbkNoYW5nZUxpa2UsXG4gICAgICAgIG9uQ2hhbmdlRGlzbGlrZSxcbiAgICBdKTtcbiAgICBjb25zdCByZW5kZXJGZWVkYmFja0NvbnRyb2xzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICByZXR1cm4gdmlldyA9PT0gRmVlZGJhY2tWaWV3LlJlZ3VsYXJcbiAgICAgICAgICAgID8gcmVuZGVyUmVndWxhckZlZWRiYWNrQ29udHJvbHMoKVxuICAgICAgICAgICAgOiByZW5kZXJXaWRlRmVlZGJhY2tDb250cm9scygpO1xuICAgIH0sIFt2aWV3LCByZW5kZXJSZWd1bGFyRmVlZGJhY2tDb250cm9scywgcmVuZGVyV2lkZUZlZWRiYWNrQ29udHJvbHNdKTtcbiAgICBjb25zdCByZW5kZXJGZWVkYmFja1N1Y2Nlc3NQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gc2hvd0xpa2VTdWNjZXNzUG9wdXAgPyBsaWtlQ29udHJvbFJlZiA6IGRpc2xpa2VDb250cm9sUmVmO1xuICAgICAgICBjb25zdCB2aXNpYmxlID0gc2hvd0xpa2VTdWNjZXNzUG9wdXAgfHwgc2hvd0Rpc2xpa2VTdWNjZXNzUG9wdXA7XG4gICAgICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFBvcHVwLCB7IGFuY2hvclJlZjogYW5jaG9yLCBvcGVuOiB2aXNpYmxlLCBvbk91dHNpZGVDbGljazogaGlkZUZlZWRiYWNrUG9wdXBzLCBjbGFzc05hbWU6IGIoJ3N1Y2Nlc3MtcG9wdXAnLCB7IHZpZXcgfSksIHBsYWNlbWVudDogZ2V0UG9wdXBQb3NpdGlvbigpIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaDNcIiwgeyBjbGFzc05hbWU6IGIoJ3BvcHVwLXRpdGxlJykgfSwgdCgnc3VjY2Vzcy10aXRsZScpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwXCIsIHsgY2xhc3NOYW1lOiBiKCdwb3B1cC10ZXh0JykgfSwgdCgnc3VjY2Vzcy10ZXh0JykpKSk7XG4gICAgfSwgW1xuICAgICAgICBzaG93TGlrZVN1Y2Nlc3NQb3B1cCxcbiAgICAgICAgc2hvd0Rpc2xpa2VTdWNjZXNzUG9wdXAsXG4gICAgICAgIGhpZGVGZWVkYmFja1BvcHVwcyxcbiAgICAgICAgdmlldyxcbiAgICAgICAgZ2V0UG9wdXBQb3NpdGlvbixcbiAgICAgICAgdCxcbiAgICBdKTtcbiAgICBjb25zdCByZW5kZXJEaXNsaWtlVmFyaWFudHNMaXN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2xpa2VWYXJpYW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigndmFyaWFudHMnKSB9LCBkaXNsaWtlVmFyaWFudHMubWFwKCh2YXJpYW50LCBpbmRleCkgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIHsga2V5OiBpbmRleCwgY2xhc3NOYW1lOiBiKCd2YXJpYW50JyksIGNoZWNrZWQ6IGZlZWRiYWNrQ2hlY2tib3hlc1t2YXJpYW50XSwgb25VcGRhdGU6IChjaGVja2VkKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0RmVlZGJhY2tDaGVja2JveGVzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZmVlZGJhY2tDaGVja2JveGVzKSwgeyBbdmFyaWFudF06IGNoZWNrZWQgfSkpO1xuICAgICAgICAgICAgfSwgY29udGVudDogdmFyaWFudCB9KSkpKSk7XG4gICAgfSwgW2Rpc2xpa2VWYXJpYW50cywgZmVlZGJhY2tDaGVja2JveGVzXSk7XG4gICAgY29uc3QgcmVuZGVyRGlzbGlrZVZhcmlhbnRzVGV4dEFyZWEgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigndGV4dGFyZWEnKSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0SW5wdXQsIHsgbXVsdGlsaW5lOiB0cnVlLCBzaXplOiBcIm1cIiwgcm93czogNiwgcGxhY2Vob2xkZXI6IHQoJ2NvbW1lbnQtcGxhY2Vob2xkZXInKSwgaGFzQ2xlYXI6IHRydWUsIHZhbHVlOiBmZWVkYmFja0NvbW1lbnQsIG9uQ2hhbmdlOiAoX2V2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldEZlZWRiYWNrQ29tbWVudChfZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IH0pKSk7XG4gICAgfSwgW2ZlZWRiYWNrQ29tbWVudCwgdF0pO1xuICAgIGNvbnN0IHJlbmRlckRpc2xpa2VWYXJpYW50c0FjdGlvbnMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigndmFyaWFudHMtYWN0aW9ucycpIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyB2aWV3OiBcImFjdGlvblwiLCBjbGFzc05hbWU6IGIoJ3ZhcmlhbnRzLWFjdGlvbicpLCBvbkNsaWNrOiBvblNlbmREaXNsaWtlSW5mb3JtYXRpb24gfSwgdCgnc2VuZC1hY3Rpb24tdGV4dCcpKSkpO1xuICAgIH0sIFtvblNlbmREaXNsaWtlSW5mb3JtYXRpb24sIHRdKTtcbiAgICBjb25zdCByZW5kZXJEaXNsaWtlVmFyaWFudHNDb250ZW50ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaDNcIiwgeyBjbGFzc05hbWU6IGIoJ3BvcHVwLXRpdGxlJykgfSwgdCgnZGlzbGlrZS12YXJpYW50cy10aXRsZScpKSxcbiAgICAgICAgICAgIHJlbmRlckRpc2xpa2VWYXJpYW50c0xpc3QoKSxcbiAgICAgICAgICAgIHJlbmRlckRpc2xpa2VWYXJpYW50c1RleHRBcmVhKCksXG4gICAgICAgICAgICByZW5kZXJEaXNsaWtlVmFyaWFudHNBY3Rpb25zKCkpKTtcbiAgICB9LCBbdCwgcmVuZGVyRGlzbGlrZVZhcmlhbnRzTGlzdCwgcmVuZGVyRGlzbGlrZVZhcmlhbnRzVGV4dEFyZWEsIHJlbmRlckRpc2xpa2VWYXJpYW50c0FjdGlvbnNdKTtcbiAgICBjb25zdCByZW5kZXJEaXNsaWtlVmFyaWFudHNQb3B1cCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKCFzaG93RGlzbGlrZVZhcmlhbnRzUG9wdXApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChQb3B1cCwgeyBhbmNob3JSZWY6IGRpc2xpa2VDb250cm9sUmVmLCBvcGVuOiBzaG93RGlzbGlrZVZhcmlhbnRzUG9wdXAsIG9uT3V0c2lkZUNsaWNrOiBvbk91dHNpZGVDbGljaywgY2xhc3NOYW1lOiBiKCd2YXJpYW50cy1wb3B1cCcsIHsgdmlldyB9KSwgcGxhY2VtZW50OiBnZXRQb3B1cFBvc2l0aW9uKCkgfSwgcmVuZGVyRGlzbGlrZVZhcmlhbnRzQ29udGVudCgpKSk7XG4gICAgfSwgW1xuICAgICAgICBzaG93RGlzbGlrZVZhcmlhbnRzUG9wdXAsXG4gICAgICAgIG9uT3V0c2lkZUNsaWNrLFxuICAgICAgICB2aWV3LFxuICAgICAgICBnZXRQb3B1cFBvc2l0aW9uLFxuICAgICAgICByZW5kZXJEaXNsaWtlVmFyaWFudHNDb250ZW50LFxuICAgIF0pO1xuICAgIGlmIChzaW5nbGVQYWdlIHx8ICFvblNlbmRGZWVkYmFjaykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICByZW5kZXJGZWVkYmFja0NvbnRyb2xzKCksXG4gICAgICAgIHJlbmRlckZlZWRiYWNrU3VjY2Vzc1BvcHVwKCksXG4gICAgICAgIHJlbmRlckRpc2xpa2VWYXJpYW50c1BvcHVwKCkpKTtcbn07XG5mdW5jdGlvbiBnZXRQcmVwYXJlZEZlZWRiYWNrQWRkaXRpb25hbEluZm8oZmVlZGJhY2tDb21tZW50LCBmZWVkYmFja0NoZWNrYm94ZXMpIHtcbiAgICBjb25zdCBhbnN3ZXJzID0gT2JqZWN0LmtleXMoZmVlZGJhY2tDaGVja2JveGVzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGlmIChmZWVkYmFja0NoZWNrYm94ZXNba2V5XSkge1xuICAgICAgICAgICAgYWNjLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBjb21tZW50OiBmZWVkYmFja0NvbW1lbnQsXG4gICAgICAgIGFuc3dlcnMsXG4gICAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IHdpdGhUcmFuc2xhdGlvbignZmVlZGJhY2snKShGZWVkYmFjayk7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPSB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IHVzZUVmZmVjdCA6IHVzZUxheW91dEVmZmVjdDtcbmV4cG9ydCBkZWZhdWx0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3Q7XG4iLCJpbXBvcnQgeyBTdWJzY3JpYmVWaWV3IH0gZnJvbSAnLi9TdWJzY3JpYmUnO1xuaW1wb3J0IHsgUG9wcGVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi9ob29rcyc7XG5leHBvcnQgY29uc3QgZ2V0UG9wdXBQb3NpdGlvbiA9IChpc1ZlcnRpY2FsVmlldywgdmlldykgPT4ge1xuICAgIGlmICghdmlldyB8fCB2aWV3ID09PSBTdWJzY3JpYmVWaWV3LlJlZ3VsYXIpIHtcbiAgICAgICAgcmV0dXJuIGlzVmVydGljYWxWaWV3ID8gUG9wcGVyUG9zaXRpb24uTEVGVF9TVEFSVCA6IFBvcHBlclBvc2l0aW9uLkJPVFRPTV9FTkQ7XG4gICAgfVxuICAgIHJldHVybiBQb3BwZXJQb3NpdGlvbi5SSUdIVDtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgeyBQb3B1cCB9IGZyb20gJ0BncmF2aXR5LXVpL3Vpa2l0JztcbmltcG9ydCB1c2VUaW1lb3V0IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVRpbWVvdXQnO1xuaW1wb3J0IHsgZ2V0UG9wdXBQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmNvbnN0IGIgPSBibG9jaygnZGMtc3Vic2NyaWJlJyk7XG5jb25zdCBTdWJzY3JpYmVTdWNjZXNzUG9wdXAgPSBtZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdCwgdmlzaWJsZSwgc2V0VmlzaWJsZSwgYW5jaG9yLCBpc1ZlcnRpY2FsVmlldywgdmlldyB9ID0gcHJvcHM7XG4gICAgY29uc3QgaGlkZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldFZpc2libGUoZmFsc2UpLCBbc2V0VmlzaWJsZV0pO1xuICAgIHVzZVRpbWVvdXQoaGlkZSwgNjAwMDApO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChQb3B1cCwgeyBhbmNob3JSZWY6IGFuY2hvciwgb3BlbjogdmlzaWJsZSwgb25PdXRzaWRlQ2xpY2s6IGhpZGUsIGNsYXNzTmFtZTogYignc3VjY2Vzcy1wb3B1cCcsIHsgdmlldyB9KSwgcGxhY2VtZW50OiBnZXRQb3B1cFBvc2l0aW9uKGlzVmVydGljYWxWaWV3LCB2aWV3KSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaDNcIiwgeyBjbGFzc05hbWU6IGIoJ3BvcHVwLXRpdGxlJykgfSwgdCgndmVyaWZ5LXRpdGxlJykpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwicFwiLCB7IGNsYXNzTmFtZTogYigncG9wdXAtdGV4dCcpIH0sIHQoJ3ZlcmlmeS10ZXh0JykpKSk7XG59KTtcblN1YnNjcmliZVN1Y2Nlc3NQb3B1cC5kaXNwbGF5TmFtZSA9ICdTdWJzY3JpYmVTdWNjZXNzUG9wdXAnO1xuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCdjb250cm9scycpKFN1YnNjcmliZVN1Y2Nlc3NQb3B1cCk7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IGZyb20gJy4vdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCc7XG5mdW5jdGlvbiB1c2VUaW1lb3V0KGNhbGxiYWNrLCBkZWxheSkge1xuICAgIGNvbnN0IHNhdmVkQ2FsbGJhY2sgPSB1c2VSZWYoY2FsbGJhY2spO1xuICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzYXZlZENhbGxiYWNrLmN1cnJlbnQgPSBjYWxsYmFjaztcbiAgICB9LCBbY2FsbGJhY2tdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWRlbGF5ICYmIGRlbGF5ICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkID0gc2V0VGltZW91dCgoKSA9PiBzYXZlZENhbGxiYWNrLmN1cnJlbnQoKSwgZGVsYXkpO1xuICAgICAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KGlkKTtcbiAgICB9LCBbZGVsYXldKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZVRpbWVvdXQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuXG52YXIgY2xhc3NDYWxsQ2hlY2sgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTtcblxudmFyIGNyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykge1xuICAgIGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gICAgcmV0dXJuIENvbnN0cnVjdG9yO1xuICB9O1xufSgpO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxudmFyIGluaGVyaXRzID0gZnVuY3Rpb24gKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTtcbiAgfVxuXG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogc3ViQ2xhc3MsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzO1xufTtcblxudmFyIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gPSBmdW5jdGlvbiAoc2VsZiwgY2FsbCkge1xuICBpZiAoIXNlbGYpIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjtcbn07XG5cbnZhciBzbGljZWRUb0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkge1xuICAgIHZhciBfYXJyID0gW107XG4gICAgdmFyIF9uID0gdHJ1ZTtcbiAgICB2YXIgX2QgPSBmYWxzZTtcbiAgICB2YXIgX2UgPSB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgICBfYXJyLnB1c2goX3MudmFsdWUpO1xuXG4gICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhaztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIF9kID0gdHJ1ZTtcbiAgICAgIF9lID0gZXJyO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdKSBfaVtcInJldHVyblwiXSgpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKF9kKSB0aHJvdyBfZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gX2FycjtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9IGVsc2UgaWYgKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkge1xuICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG4gICAgfVxuICB9O1xufSgpO1xuXG4vKipcbiAqIERldGVjdCBFbGVtZW50IFJlc2l6ZS5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9zZGVjaW1hL2phdmFzY3JpcHQtZGV0ZWN0LWVsZW1lbnQtcmVzaXplXG4gKiBTZWJhc3RpYW4gRGVjaW1hXG4gKlxuICogRm9ya2VkIGZyb20gdmVyc2lvbiAwLjUuMzsgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb25zOlxuICogMSnCoEd1YXJkIGFnYWluc3QgdW5zYWZlICd3aW5kb3cnIGFuZCAnZG9jdW1lbnQnIHJlZmVyZW5jZXMgKHRvIHN1cHBvcnQgU1NSKS5cbiAqIDIpwqBEZWZlciBpbml0aWFsaXphdGlvbiBjb2RlIHZpYSBhIHRvcC1sZXZlbCBmdW5jdGlvbiB3cmFwcGVyICh0byBzdXBwb3J0IFNTUikuXG4gKiAzKSBBdm9pZCB1bm5lY2Vzc2FyeSByZWZsb3dzIGJ5IG5vdCBtZWFzdXJpbmcgc2l6ZSBmb3Igc2Nyb2xsIGV2ZW50cyBidWJibGluZyBmcm9tIGNoaWxkcmVuLlxuICogNCkgQWRkIG5vbmNlIGZvciBzdHlsZSBlbGVtZW50LlxuICoqL1xuXG4vLyBDaGVjayBgZG9jdW1lbnRgIGFuZCBgd2luZG93YCBpbiBjYXNlIG9mIHNlcnZlci1zaWRlIHJlbmRlcmluZ1xudmFyIHdpbmRvd09iamVjdCA9IHZvaWQgMDtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICB3aW5kb3dPYmplY3QgPSB3aW5kb3c7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xufSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFsc1xuICB3aW5kb3dPYmplY3QgPSBzZWxmO1xufSBlbHNlIHtcbiAgd2luZG93T2JqZWN0ID0gZ2xvYmFsO1xufVxuXG52YXIgY2FuY2VsRnJhbWUgPSBudWxsO1xudmFyIHJlcXVlc3RGcmFtZSA9IG51bGw7XG5cbnZhciBUSU1FT1VUX0RVUkFUSU9OID0gMjA7XG5cbnZhciBjbGVhclRpbWVvdXRGbiA9IHdpbmRvd09iamVjdC5jbGVhclRpbWVvdXQ7XG52YXIgc2V0VGltZW91dEZuID0gd2luZG93T2JqZWN0LnNldFRpbWVvdXQ7XG5cbnZhciBjYW5jZWxBbmltYXRpb25GcmFtZUZuID0gd2luZG93T2JqZWN0LmNhbmNlbEFuaW1hdGlvbkZyYW1lIHx8IHdpbmRvd09iamVjdC5tb3pDYW5jZWxBbmltYXRpb25GcmFtZSB8fCB3aW5kb3dPYmplY3Qud2Via2l0Q2FuY2VsQW5pbWF0aW9uRnJhbWU7XG5cbnZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWVGbiA9IHdpbmRvd09iamVjdC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHwgd2luZG93T2JqZWN0Lm1velJlcXVlc3RBbmltYXRpb25GcmFtZSB8fCB3aW5kb3dPYmplY3Qud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xuXG5pZiAoY2FuY2VsQW5pbWF0aW9uRnJhbWVGbiA9PSBudWxsIHx8IHJlcXVlc3RBbmltYXRpb25GcmFtZUZuID09IG51bGwpIHtcbiAgLy8gRm9yIGVudmlyb25tZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgYW5pbWF0aW9uIGZyYW1lLFxuICAvLyBmYWxsYmFjayB0byBhIHNldFRpbWVvdXQgYmFzZWQgYXBwcm9hY2guXG4gIGNhbmNlbEZyYW1lID0gY2xlYXJUaW1lb3V0Rm47XG4gIHJlcXVlc3RGcmFtZSA9IGZ1bmN0aW9uIHJlcXVlc3RBbmltYXRpb25GcmFtZVZpYVNldFRpbWVvdXQoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gc2V0VGltZW91dEZuKGNhbGxiYWNrLCBUSU1FT1VUX0RVUkFUSU9OKTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIENvdW50ZXIgaW50dWl0aXZlbHksIGVudmlyb25tZW50cyB0aGF0IHN1cHBvcnQgYW5pbWF0aW9uIGZyYW1lcyBjYW4gYmUgdHJpY2tpZXIuXG4gIC8vIENocm9tZSdzIFwiVGhyb3R0bGUgbm9uLXZpc2libGUgY3Jvc3Mtb3JpZ2luIGlmcmFtZXNcIiBmbGFnIGNhbiBwcmV2ZW50IHJBRnMgZnJvbSBiZWluZyBjYWxsZWQuXG4gIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkIGZhbGxiYWNrIHRvIGEgc2V0VGltZW91dCgpIGltcGxlbWVudGF0aW9uLlxuICBjYW5jZWxGcmFtZSA9IGZ1bmN0aW9uIGNhbmNlbEZyYW1lKF9yZWYpIHtcbiAgICB2YXIgX3JlZjIgPSBzbGljZWRUb0FycmF5KF9yZWYsIDIpLFxuICAgICAgICBhbmltYXRpb25GcmFtZUlEID0gX3JlZjJbMF0sXG4gICAgICAgIHRpbWVvdXRJRCA9IF9yZWYyWzFdO1xuXG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWVGbihhbmltYXRpb25GcmFtZUlEKTtcbiAgICBjbGVhclRpbWVvdXRGbih0aW1lb3V0SUQpO1xuICB9O1xuICByZXF1ZXN0RnJhbWUgPSBmdW5jdGlvbiByZXF1ZXN0QW5pbWF0aW9uRnJhbWVXaXRoU2V0VGltZW91dEZhbGxiYWNrKGNhbGxiYWNrKSB7XG4gICAgdmFyIGFuaW1hdGlvbkZyYW1lSUQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWVGbihmdW5jdGlvbiBhbmltYXRpb25GcmFtZUNhbGxiYWNrKCkge1xuICAgICAgY2xlYXJUaW1lb3V0Rm4odGltZW91dElEKTtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfSk7XG5cbiAgICB2YXIgdGltZW91dElEID0gc2V0VGltZW91dEZuKGZ1bmN0aW9uIHRpbWVvdXRDYWxsYmFjaygpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lRm4oYW5pbWF0aW9uRnJhbWVJRCk7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0sIFRJTUVPVVRfRFVSQVRJT04pO1xuXG4gICAgcmV0dXJuIFthbmltYXRpb25GcmFtZUlELCB0aW1lb3V0SURdO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEZXRlY3RFbGVtZW50UmVzaXplKG5vbmNlKSB7XG4gIHZhciBhbmltYXRpb25LZXlmcmFtZXMgPSB2b2lkIDA7XG4gIHZhciBhbmltYXRpb25OYW1lID0gdm9pZCAwO1xuICB2YXIgYW5pbWF0aW9uU3RhcnRFdmVudCA9IHZvaWQgMDtcbiAgdmFyIGFuaW1hdGlvblN0eWxlID0gdm9pZCAwO1xuICB2YXIgY2hlY2tUcmlnZ2VycyA9IHZvaWQgMDtcbiAgdmFyIHJlc2V0VHJpZ2dlcnMgPSB2b2lkIDA7XG4gIHZhciBzY3JvbGxMaXN0ZW5lciA9IHZvaWQgMDtcblxuICB2YXIgYXR0YWNoRXZlbnQgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmF0dGFjaEV2ZW50O1xuICBpZiAoIWF0dGFjaEV2ZW50KSB7XG4gICAgcmVzZXRUcmlnZ2VycyA9IGZ1bmN0aW9uIHJlc2V0VHJpZ2dlcnMoZWxlbWVudCkge1xuICAgICAgdmFyIHRyaWdnZXJzID0gZWxlbWVudC5fX3Jlc2l6ZVRyaWdnZXJzX18sXG4gICAgICAgICAgZXhwYW5kID0gdHJpZ2dlcnMuZmlyc3RFbGVtZW50Q2hpbGQsXG4gICAgICAgICAgY29udHJhY3QgPSB0cmlnZ2Vycy5sYXN0RWxlbWVudENoaWxkLFxuICAgICAgICAgIGV4cGFuZENoaWxkID0gZXhwYW5kLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgY29udHJhY3Quc2Nyb2xsTGVmdCA9IGNvbnRyYWN0LnNjcm9sbFdpZHRoO1xuICAgICAgY29udHJhY3Quc2Nyb2xsVG9wID0gY29udHJhY3Quc2Nyb2xsSGVpZ2h0O1xuICAgICAgZXhwYW5kQ2hpbGQuc3R5bGUud2lkdGggPSBleHBhbmQub2Zmc2V0V2lkdGggKyAxICsgJ3B4JztcbiAgICAgIGV4cGFuZENoaWxkLnN0eWxlLmhlaWdodCA9IGV4cGFuZC5vZmZzZXRIZWlnaHQgKyAxICsgJ3B4JztcbiAgICAgIGV4cGFuZC5zY3JvbGxMZWZ0ID0gZXhwYW5kLnNjcm9sbFdpZHRoO1xuICAgICAgZXhwYW5kLnNjcm9sbFRvcCA9IGV4cGFuZC5zY3JvbGxIZWlnaHQ7XG4gICAgfTtcblxuICAgIGNoZWNrVHJpZ2dlcnMgPSBmdW5jdGlvbiBjaGVja1RyaWdnZXJzKGVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBlbGVtZW50Lm9mZnNldFdpZHRoICE9PSBlbGVtZW50Ll9fcmVzaXplTGFzdF9fLndpZHRoIHx8IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICE9PSBlbGVtZW50Ll9fcmVzaXplTGFzdF9fLmhlaWdodDtcbiAgICB9O1xuXG4gICAgc2Nyb2xsTGlzdGVuZXIgPSBmdW5jdGlvbiBzY3JvbGxMaXN0ZW5lcihlKSB7XG4gICAgICAvLyBEb24ndCBtZWFzdXJlICh3aGljaCBmb3JjZXMpIHJlZmxvdyBmb3Igc2Nyb2xscyB0aGF0IGhhcHBlbiBpbnNpZGUgb2YgY2hpbGRyZW4hXG4gICAgICBpZiAoZS50YXJnZXQuY2xhc3NOYW1lICYmIHR5cGVvZiBlLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJyAmJiBlLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZignY29udHJhY3QtdHJpZ2dlcicpIDwgMCAmJiBlLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZignZXhwYW5kLXRyaWdnZXInKSA8IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWxlbWVudCA9IHRoaXM7XG4gICAgICByZXNldFRyaWdnZXJzKHRoaXMpO1xuICAgICAgaWYgKHRoaXMuX19yZXNpemVSQUZfXykge1xuICAgICAgICBjYW5jZWxGcmFtZSh0aGlzLl9fcmVzaXplUkFGX18pO1xuICAgICAgfVxuICAgICAgdGhpcy5fX3Jlc2l6ZVJBRl9fID0gcmVxdWVzdEZyYW1lKGZ1bmN0aW9uIGFuaW1hdGlvbkZyYW1lKCkge1xuICAgICAgICBpZiAoY2hlY2tUcmlnZ2VycyhlbGVtZW50KSkge1xuICAgICAgICAgIGVsZW1lbnQuX19yZXNpemVMYXN0X18ud2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgIGVsZW1lbnQuX19yZXNpemVMYXN0X18uaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgZWxlbWVudC5fX3Jlc2l6ZUxpc3RlbmVyc19fLmZvckVhY2goZnVuY3Rpb24gZm9yRWFjaFJlc2l6ZUxpc3RlbmVyKGZuKSB7XG4gICAgICAgICAgICBmbi5jYWxsKGVsZW1lbnQsIGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyogRGV0ZWN0IENTUyBBbmltYXRpb25zIHN1cHBvcnQgdG8gZGV0ZWN0IGVsZW1lbnQgZGlzcGxheS9yZS1hdHRhY2ggKi9cbiAgICB2YXIgYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgdmFyIGtleWZyYW1lcHJlZml4ID0gJyc7XG4gICAgYW5pbWF0aW9uU3RhcnRFdmVudCA9ICdhbmltYXRpb25zdGFydCc7XG4gICAgdmFyIGRvbVByZWZpeGVzID0gJ1dlYmtpdCBNb3ogTyBtcycuc3BsaXQoJyAnKTtcbiAgICB2YXIgc3RhcnRFdmVudHMgPSAnd2Via2l0QW5pbWF0aW9uU3RhcnQgYW5pbWF0aW9uc3RhcnQgb0FuaW1hdGlvblN0YXJ0IE1TQW5pbWF0aW9uU3RhcnQnLnNwbGl0KCcgJyk7XG4gICAgdmFyIHBmeCA9ICcnO1xuICAgIHtcbiAgICAgIHZhciBlbG0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmYWtlZWxlbWVudCcpO1xuICAgICAgaWYgKGVsbS5zdHlsZS5hbmltYXRpb25OYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFuaW1hdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb21QcmVmaXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChlbG0uc3R5bGVbZG9tUHJlZml4ZXNbaV0gKyAnQW5pbWF0aW9uTmFtZSddICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBmeCA9IGRvbVByZWZpeGVzW2ldO1xuICAgICAgICAgICAga2V5ZnJhbWVwcmVmaXggPSAnLScgKyBwZngudG9Mb3dlckNhc2UoKSArICctJztcbiAgICAgICAgICAgIGFuaW1hdGlvblN0YXJ0RXZlbnQgPSBzdGFydEV2ZW50c1tpXTtcbiAgICAgICAgICAgIGFuaW1hdGlvbiA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhbmltYXRpb25OYW1lID0gJ3Jlc2l6ZWFuaW0nO1xuICAgIGFuaW1hdGlvbktleWZyYW1lcyA9ICdAJyArIGtleWZyYW1lcHJlZml4ICsgJ2tleWZyYW1lcyAnICsgYW5pbWF0aW9uTmFtZSArICcgeyBmcm9tIHsgb3BhY2l0eTogMDsgfSB0byB7IG9wYWNpdHk6IDA7IH0gfSAnO1xuICAgIGFuaW1hdGlvblN0eWxlID0ga2V5ZnJhbWVwcmVmaXggKyAnYW5pbWF0aW9uOiAxbXMgJyArIGFuaW1hdGlvbk5hbWUgKyAnOyAnO1xuICB9XG5cbiAgdmFyIGNyZWF0ZVN0eWxlcyA9IGZ1bmN0aW9uIGNyZWF0ZVN0eWxlcyhkb2MpIHtcbiAgICBpZiAoIWRvYy5nZXRFbGVtZW50QnlJZCgnZGV0ZWN0RWxlbWVudFJlc2l6ZScpKSB7XG4gICAgICAvL29wYWNpdHk6MCB3b3JrcyBhcm91bmQgYSBjaHJvbWUgYnVnIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0yODYzNjBcbiAgICAgIHZhciBjc3MgPSAoYW5pbWF0aW9uS2V5ZnJhbWVzID8gYW5pbWF0aW9uS2V5ZnJhbWVzIDogJycpICsgJy5yZXNpemUtdHJpZ2dlcnMgeyAnICsgKGFuaW1hdGlvblN0eWxlID8gYW5pbWF0aW9uU3R5bGUgOiAnJykgKyAndmlzaWJpbGl0eTogaGlkZGVuOyBvcGFjaXR5OiAwOyB9ICcgKyAnLnJlc2l6ZS10cmlnZ2VycywgLnJlc2l6ZS10cmlnZ2VycyA+IGRpdiwgLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHsgY29udGVudDogXCIgXCI7IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsgei1pbmRleDogLTE7IH0gLnJlc2l6ZS10cmlnZ2VycyA+IGRpdiB7IGJhY2tncm91bmQ6ICNlZWU7IG92ZXJmbG93OiBhdXRvOyB9IC5jb250cmFjdC10cmlnZ2VyOmJlZm9yZSB7IHdpZHRoOiAyMDAlOyBoZWlnaHQ6IDIwMCU7IH0nLFxuICAgICAgICAgIGhlYWQgPSBkb2MuaGVhZCB8fCBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSxcbiAgICAgICAgICBzdHlsZSA9IGRvYy5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gICAgICBzdHlsZS5pZCA9ICdkZXRlY3RFbGVtZW50UmVzaXplJztcbiAgICAgIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xuXG4gICAgICBpZiAobm9uY2UgIT0gbnVsbCkge1xuICAgICAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgICAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHlsZS5hcHBlbmRDaGlsZChkb2MuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gICAgICB9XG5cbiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgYWRkUmVzaXplTGlzdGVuZXIgPSBmdW5jdGlvbiBhZGRSZXNpemVMaXN0ZW5lcihlbGVtZW50LCBmbikge1xuICAgIGlmIChhdHRhY2hFdmVudCkge1xuICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgnb25yZXNpemUnLCBmbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZWxlbWVudC5fX3Jlc2l6ZVRyaWdnZXJzX18pIHtcbiAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgICAgICAgdmFyIGVsZW1lbnRTdHlsZSA9IHdpbmRvd09iamVjdC5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgICAgICBpZiAoZWxlbWVudFN0eWxlICYmIGVsZW1lbnRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgICAgfVxuICAgICAgICBjcmVhdGVTdHlsZXMoZG9jKTtcbiAgICAgICAgZWxlbWVudC5fX3Jlc2l6ZUxhc3RfXyA9IHt9O1xuICAgICAgICBlbGVtZW50Ll9fcmVzaXplTGlzdGVuZXJzX18gPSBbXTtcbiAgICAgICAgKGVsZW1lbnQuX19yZXNpemVUcmlnZ2Vyc19fID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpKS5jbGFzc05hbWUgPSAncmVzaXplLXRyaWdnZXJzJztcbiAgICAgICAgdmFyIGV4cGFuZFRyaWdnZXIgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGV4cGFuZFRyaWdnZXIuY2xhc3NOYW1lID0gJ2V4cGFuZC10cmlnZ2VyJztcbiAgICAgICAgZXhwYW5kVHJpZ2dlci5hcHBlbmRDaGlsZChkb2MuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xuICAgICAgICB2YXIgY29udHJhY3RUcmlnZ2VyID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBjb250cmFjdFRyaWdnZXIuY2xhc3NOYW1lID0gJ2NvbnRyYWN0LXRyaWdnZXInO1xuICAgICAgICBlbGVtZW50Ll9fcmVzaXplVHJpZ2dlcnNfXy5hcHBlbmRDaGlsZChleHBhbmRUcmlnZ2VyKTtcbiAgICAgICAgZWxlbWVudC5fX3Jlc2l6ZVRyaWdnZXJzX18uYXBwZW5kQ2hpbGQoY29udHJhY3RUcmlnZ2VyKTtcbiAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50Ll9fcmVzaXplVHJpZ2dlcnNfXyk7XG4gICAgICAgIHJlc2V0VHJpZ2dlcnMoZWxlbWVudCk7XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsTGlzdGVuZXIsIHRydWUpO1xuXG4gICAgICAgIC8qIExpc3RlbiBmb3IgYSBjc3MgYW5pbWF0aW9uIHRvIGRldGVjdCBlbGVtZW50IGRpc3BsYXkvcmUtYXR0YWNoICovXG4gICAgICAgIGlmIChhbmltYXRpb25TdGFydEV2ZW50KSB7XG4gICAgICAgICAgZWxlbWVudC5fX3Jlc2l6ZVRyaWdnZXJzX18uX19hbmltYXRpb25MaXN0ZW5lcl9fID0gZnVuY3Rpb24gYW5pbWF0aW9uTGlzdGVuZXIoZSkge1xuICAgICAgICAgICAgaWYgKGUuYW5pbWF0aW9uTmFtZSA9PT0gYW5pbWF0aW9uTmFtZSkge1xuICAgICAgICAgICAgICByZXNldFRyaWdnZXJzKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgZWxlbWVudC5fX3Jlc2l6ZVRyaWdnZXJzX18uYWRkRXZlbnRMaXN0ZW5lcihhbmltYXRpb25TdGFydEV2ZW50LCBlbGVtZW50Ll9fcmVzaXplVHJpZ2dlcnNfXy5fX2FuaW1hdGlvbkxpc3RlbmVyX18pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbGVtZW50Ll9fcmVzaXplTGlzdGVuZXJzX18ucHVzaChmbik7XG4gICAgfVxuICB9O1xuXG4gIHZhciByZW1vdmVSZXNpemVMaXN0ZW5lciA9IGZ1bmN0aW9uIHJlbW92ZVJlc2l6ZUxpc3RlbmVyKGVsZW1lbnQsIGZuKSB7XG4gICAgaWYgKGF0dGFjaEV2ZW50KSB7XG4gICAgICBlbGVtZW50LmRldGFjaEV2ZW50KCdvbnJlc2l6ZScsIGZuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5fX3Jlc2l6ZUxpc3RlbmVyc19fLnNwbGljZShlbGVtZW50Ll9fcmVzaXplTGlzdGVuZXJzX18uaW5kZXhPZihmbiksIDEpO1xuICAgICAgaWYgKCFlbGVtZW50Ll9fcmVzaXplTGlzdGVuZXJzX18ubGVuZ3RoKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsTGlzdGVuZXIsIHRydWUpO1xuICAgICAgICBpZiAoZWxlbWVudC5fX3Jlc2l6ZVRyaWdnZXJzX18uX19hbmltYXRpb25MaXN0ZW5lcl9fKSB7XG4gICAgICAgICAgZWxlbWVudC5fX3Jlc2l6ZVRyaWdnZXJzX18ucmVtb3ZlRXZlbnRMaXN0ZW5lcihhbmltYXRpb25TdGFydEV2ZW50LCBlbGVtZW50Ll9fcmVzaXplVHJpZ2dlcnNfXy5fX2FuaW1hdGlvbkxpc3RlbmVyX18pO1xuICAgICAgICAgIGVsZW1lbnQuX19yZXNpemVUcmlnZ2Vyc19fLl9fYW5pbWF0aW9uTGlzdGVuZXJfXyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBlbGVtZW50Ll9fcmVzaXplVHJpZ2dlcnNfXyA9ICFlbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQuX19yZXNpemVUcmlnZ2Vyc19fKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIFByZWFjdCBjb21wYXQ7IHNlZSBkZXZlbG9waXQvcHJlYWN0LWNvbXBhdC9pc3N1ZXMvMjI4XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRSZXNpemVMaXN0ZW5lcjogYWRkUmVzaXplTGlzdGVuZXIsXG4gICAgcmVtb3ZlUmVzaXplTGlzdGVuZXI6IHJlbW92ZVJlc2l6ZUxpc3RlbmVyXG4gIH07XG59XG5cbnZhciBBdXRvU2l6ZXIgPSBmdW5jdGlvbiAoX1JlYWN0JFB1cmVDb21wb25lbnQpIHtcbiAgaW5oZXJpdHMoQXV0b1NpemVyLCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gQXV0b1NpemVyKCkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDtcblxuICAgIGNsYXNzQ2FsbENoZWNrKHRoaXMsIEF1dG9TaXplcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9IChfdGhpcyA9IHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKF9yZWYgPSBBdXRvU2l6ZXIuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihBdXRvU2l6ZXIpKS5jYWxsLmFwcGx5KF9yZWYsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGhlaWdodDogX3RoaXMucHJvcHMuZGVmYXVsdEhlaWdodCB8fCAwLFxuICAgICAgd2lkdGg6IF90aGlzLnByb3BzLmRlZmF1bHRXaWR0aCB8fCAwXG4gICAgfSwgX3RoaXMuX29uUmVzaXplID0gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgZGlzYWJsZUhlaWdodCA9IF90aGlzJHByb3BzLmRpc2FibGVIZWlnaHQsXG4gICAgICAgICAgZGlzYWJsZVdpZHRoID0gX3RoaXMkcHJvcHMuZGlzYWJsZVdpZHRoLFxuICAgICAgICAgIG9uUmVzaXplID0gX3RoaXMkcHJvcHMub25SZXNpemU7XG5cblxuICAgICAgaWYgKF90aGlzLl9wYXJlbnROb2RlKSB7XG4gICAgICAgIC8vIEd1YXJkIGFnYWluc3QgQXV0b1NpemVyIGNvbXBvbmVudCBiZWluZyByZW1vdmVkIGZyb20gdGhlIERPTSBpbW1lZGlhdGVseSBhZnRlciBiZWluZyBhZGRlZC5cbiAgICAgICAgLy8gVGhpcyBjYW4gcmVzdWx0IGluIGludmFsaWQgc3R5bGUgdmFsdWVzIHdoaWNoIGNhbiByZXN1bHQgaW4gTmFOIHZhbHVlcyBpZiB3ZSBkb24ndCBoYW5kbGUgdGhlbS5cbiAgICAgICAgLy8gU2VlIGlzc3VlICMxNTAgZm9yIG1vcmUgY29udGV4dC5cblxuICAgICAgICB2YXIgX2hlaWdodCA9IF90aGlzLl9wYXJlbnROb2RlLm9mZnNldEhlaWdodCB8fCAwO1xuICAgICAgICB2YXIgX3dpZHRoID0gX3RoaXMuX3BhcmVudE5vZGUub2Zmc2V0V2lkdGggfHwgMDtcblxuICAgICAgICB2YXIgX3N0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoX3RoaXMuX3BhcmVudE5vZGUpIHx8IHt9O1xuICAgICAgICB2YXIgcGFkZGluZ0xlZnQgPSBwYXJzZUludChfc3R5bGUucGFkZGluZ0xlZnQsIDEwKSB8fCAwO1xuICAgICAgICB2YXIgcGFkZGluZ1JpZ2h0ID0gcGFyc2VJbnQoX3N0eWxlLnBhZGRpbmdSaWdodCwgMTApIHx8IDA7XG4gICAgICAgIHZhciBwYWRkaW5nVG9wID0gcGFyc2VJbnQoX3N0eWxlLnBhZGRpbmdUb3AsIDEwKSB8fCAwO1xuICAgICAgICB2YXIgcGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KF9zdHlsZS5wYWRkaW5nQm90dG9tLCAxMCkgfHwgMDtcblxuICAgICAgICB2YXIgbmV3SGVpZ2h0ID0gX2hlaWdodCAtIHBhZGRpbmdUb3AgLSBwYWRkaW5nQm90dG9tO1xuICAgICAgICB2YXIgbmV3V2lkdGggPSBfd2lkdGggLSBwYWRkaW5nTGVmdCAtIHBhZGRpbmdSaWdodDtcblxuICAgICAgICBpZiAoIWRpc2FibGVIZWlnaHQgJiYgX3RoaXMuc3RhdGUuaGVpZ2h0ICE9PSBuZXdIZWlnaHQgfHwgIWRpc2FibGVXaWR0aCAmJiBfdGhpcy5zdGF0ZS53aWR0aCAhPT0gbmV3V2lkdGgpIHtcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBoZWlnaHQ6IF9oZWlnaHQgLSBwYWRkaW5nVG9wIC0gcGFkZGluZ0JvdHRvbSxcbiAgICAgICAgICAgIHdpZHRoOiBfd2lkdGggLSBwYWRkaW5nTGVmdCAtIHBhZGRpbmdSaWdodFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgb25SZXNpemUoeyBoZWlnaHQ6IF9oZWlnaHQsIHdpZHRoOiBfd2lkdGggfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBfdGhpcy5fc2V0UmVmID0gZnVuY3Rpb24gKGF1dG9TaXplcikge1xuICAgICAgX3RoaXMuX2F1dG9TaXplciA9IGF1dG9TaXplcjtcbiAgICB9LCBfdGVtcCksIHBvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMsIF9yZXQpO1xuICB9XG5cbiAgY3JlYXRlQ2xhc3MoQXV0b1NpemVyLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB2YXIgbm9uY2UgPSB0aGlzLnByb3BzLm5vbmNlO1xuXG4gICAgICBpZiAodGhpcy5fYXV0b1NpemVyICYmIHRoaXMuX2F1dG9TaXplci5wYXJlbnROb2RlICYmIHRoaXMuX2F1dG9TaXplci5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQgJiYgdGhpcy5fYXV0b1NpemVyLnBhcmVudE5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyAmJiB0aGlzLl9hdXRvU2l6ZXIucGFyZW50Tm9kZSBpbnN0YW5jZW9mIHRoaXMuX2F1dG9TaXplci5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgLy8gRGVsYXkgYWNjZXNzIG9mIHBhcmVudE5vZGUgdW50aWwgbW91bnQuXG4gICAgICAgIC8vIFRoaXMgaGFuZGxlcyBlZGdlLWNhc2VzIHdoZXJlIHRoZSBjb21wb25lbnQgaGFzIGFscmVhZHkgYmVlbiB1bm1vdW50ZWQgYmVmb3JlIGl0cyByZWYgaGFzIGJlZW4gc2V0LFxuICAgICAgICAvLyBBcyB3ZWxsIGFzIGxpYnJhcmllcyBsaWtlIHJlYWN0LWxpdGUgd2hpY2ggaGF2ZSBhIHNsaWdodGx5IGRpZmZlcmVudCBsaWZlY3ljbGUuXG4gICAgICAgIHRoaXMuX3BhcmVudE5vZGUgPSB0aGlzLl9hdXRvU2l6ZXIucGFyZW50Tm9kZTtcblxuICAgICAgICAvLyBEZWZlciByZXF1aXJpbmcgcmVzaXplIGhhbmRsZXIgaW4gb3JkZXIgdG8gc3VwcG9ydCBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgICAgIC8vIFNlZSBpc3N1ZSAjNDFcbiAgICAgICAgdGhpcy5fZGV0ZWN0RWxlbWVudFJlc2l6ZSA9IGNyZWF0ZURldGVjdEVsZW1lbnRSZXNpemUobm9uY2UpO1xuICAgICAgICB0aGlzLl9kZXRlY3RFbGVtZW50UmVzaXplLmFkZFJlc2l6ZUxpc3RlbmVyKHRoaXMuX3BhcmVudE5vZGUsIHRoaXMuX29uUmVzaXplKTtcblxuICAgICAgICB0aGlzLl9vblJlc2l6ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5fZGV0ZWN0RWxlbWVudFJlc2l6ZSAmJiB0aGlzLl9wYXJlbnROb2RlKSB7XG4gICAgICAgIHRoaXMuX2RldGVjdEVsZW1lbnRSZXNpemUucmVtb3ZlUmVzaXplTGlzdGVuZXIodGhpcy5fcGFyZW50Tm9kZSwgdGhpcy5fb25SZXNpemUpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3Byb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF9wcm9wcy5jbGFzc05hbWUsXG4gICAgICAgICAgZGlzYWJsZUhlaWdodCA9IF9wcm9wcy5kaXNhYmxlSGVpZ2h0LFxuICAgICAgICAgIGRpc2FibGVXaWR0aCA9IF9wcm9wcy5kaXNhYmxlV2lkdGgsXG4gICAgICAgICAgc3R5bGUgPSBfcHJvcHMuc3R5bGU7XG4gICAgICB2YXIgX3N0YXRlID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgICBoZWlnaHQgPSBfc3RhdGUuaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoID0gX3N0YXRlLndpZHRoO1xuXG4gICAgICAvLyBPdXRlciBkaXYgc2hvdWxkIG5vdCBmb3JjZSB3aWR0aC9oZWlnaHQgc2luY2UgdGhhdCBtYXkgcHJldmVudCBjb250YWluZXJzIGZyb20gc2hyaW5raW5nLlxuICAgICAgLy8gSW5uZXIgY29tcG9uZW50IHNob3VsZCBvdmVyZmxvdyBhbmQgdXNlIGNhbGN1bGF0ZWQgd2lkdGgvaGVpZ2h0LlxuICAgICAgLy8gU2VlIGlzc3VlICM2OCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuICAgICAgdmFyIG91dGVyU3R5bGUgPSB7IG92ZXJmbG93OiAndmlzaWJsZScgfTtcbiAgICAgIHZhciBjaGlsZFBhcmFtcyA9IHt9O1xuXG4gICAgICAvLyBBdm9pZCByZW5kZXJpbmcgY2hpbGRyZW4gYmVmb3JlIHRoZSBpbml0aWFsIG1lYXN1cmVtZW50cyBoYXZlIGJlZW4gY29sbGVjdGVkLlxuICAgICAgLy8gQXQgYmVzdCB0aGlzIHdvdWxkIGp1c3QgYmUgd2FzdGluZyBjeWNsZXMuXG4gICAgICB2YXIgYmFpbG91dE9uQ2hpbGRyZW4gPSBmYWxzZTtcblxuICAgICAgaWYgKCFkaXNhYmxlSGVpZ2h0KSB7XG4gICAgICAgIGlmIChoZWlnaHQgPT09IDApIHtcbiAgICAgICAgICBiYWlsb3V0T25DaGlsZHJlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0ZXJTdHlsZS5oZWlnaHQgPSAwO1xuICAgICAgICBjaGlsZFBhcmFtcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzYWJsZVdpZHRoKSB7XG4gICAgICAgIGlmICh3aWR0aCA9PT0gMCkge1xuICAgICAgICAgIGJhaWxvdXRPbkNoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBvdXRlclN0eWxlLndpZHRoID0gMDtcbiAgICAgICAgY2hpbGRQYXJhbXMud2lkdGggPSB3aWR0aDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdkaXYnLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgICAgcmVmOiB0aGlzLl9zZXRSZWYsXG4gICAgICAgICAgc3R5bGU6IF9leHRlbmRzKHt9LCBvdXRlclN0eWxlLCBzdHlsZSlcbiAgICAgICAgfSxcbiAgICAgICAgIWJhaWxvdXRPbkNoaWxkcmVuICYmIGNoaWxkcmVuKGNoaWxkUGFyYW1zKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcbiAgcmV0dXJuIEF1dG9TaXplcjtcbn0oUHVyZUNvbXBvbmVudCk7XG5cbkF1dG9TaXplci5kZWZhdWx0UHJvcHMgPSB7XG4gIG9uUmVzaXplOiBmdW5jdGlvbiBvblJlc2l6ZSgpIHt9LFxuICBkaXNhYmxlSGVpZ2h0OiBmYWxzZSxcbiAgZGlzYWJsZVdpZHRoOiBmYWxzZSxcbiAgc3R5bGU6IHt9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdXRvU2l6ZXI7XG4iLCJ2YXIgc2FmZUlzTmFOID0gTnVtYmVyLmlzTmFOIHx8XG4gICAgZnVuY3Rpb24gcG9ueWZpbGwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHZhbHVlO1xuICAgIH07XG5mdW5jdGlvbiBpc0VxdWFsKGZpcnN0LCBzZWNvbmQpIHtcbiAgICBpZiAoZmlyc3QgPT09IHNlY29uZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHNhZmVJc05hTihmaXJzdCkgJiYgc2FmZUlzTmFOKHNlY29uZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFyZUlucHV0c0VxdWFsKG5ld0lucHV0cywgbGFzdElucHV0cykge1xuICAgIGlmIChuZXdJbnB1dHMubGVuZ3RoICE9PSBsYXN0SW5wdXRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3SW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChuZXdJbnB1dHNbaV0sIGxhc3RJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG1lbW9pemVPbmUocmVzdWx0Rm4sIGlzRXF1YWwpIHtcbiAgICBpZiAoaXNFcXVhbCA9PT0gdm9pZCAwKSB7IGlzRXF1YWwgPSBhcmVJbnB1dHNFcXVhbDsgfVxuICAgIHZhciBsYXN0VGhpcztcbiAgICB2YXIgbGFzdEFyZ3MgPSBbXTtcbiAgICB2YXIgbGFzdFJlc3VsdDtcbiAgICB2YXIgY2FsbGVkT25jZSA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIG1lbW9pemVkKCkge1xuICAgICAgICB2YXIgbmV3QXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgbmV3QXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYWxsZWRPbmNlICYmIGxhc3RUaGlzID09PSB0aGlzICYmIGlzRXF1YWwobmV3QXJncywgbGFzdEFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBsYXN0UmVzdWx0ID0gcmVzdWx0Rm4uYXBwbHkodGhpcywgbmV3QXJncyk7XG4gICAgICAgIGNhbGxlZE9uY2UgPSB0cnVlO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RBcmdzID0gbmV3QXJncztcbiAgICAgICAgcmV0dXJuIGxhc3RSZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBtZW1vaXplZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVtb2l6ZU9uZTtcbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZCc7XG5pbXBvcnQgX2luaGVyaXRzTG9vc2UgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZSc7XG5pbXBvcnQgbWVtb2l6ZU9uZSBmcm9tICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBQdXJlQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UnO1xuXG4vLyBBbmltYXRpb24gZnJhbWUgYmFzZWQgaW1wbGVtZW50YXRpb24gb2Ygc2V0VGltZW91dC5cbi8vIEluc3BpcmVkIGJ5IEpvZSBMYW1iZXJ0LCBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9qb2VsYW1iZXJ0LzEwMDIxMTYjZmlsZS1yZXF1ZXN0dGltZW91dC1qc1xudmFyIGhhc05hdGl2ZVBlcmZvcm1hbmNlTm93ID0gdHlwZW9mIHBlcmZvcm1hbmNlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcGVyZm9ybWFuY2Uubm93ID09PSAnZnVuY3Rpb24nO1xudmFyIG5vdyA9IGhhc05hdGl2ZVBlcmZvcm1hbmNlTm93ID8gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gcGVyZm9ybWFuY2Uubm93KCk7XG59IDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gRGF0ZS5ub3coKTtcbn07XG5mdW5jdGlvbiBjYW5jZWxUaW1lb3V0KHRpbWVvdXRJRCkge1xuICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aW1lb3V0SUQuaWQpO1xufVxuZnVuY3Rpb24gcmVxdWVzdFRpbWVvdXQoY2FsbGJhY2ssIGRlbGF5KSB7XG4gIHZhciBzdGFydCA9IG5vdygpO1xuXG4gIGZ1bmN0aW9uIHRpY2soKSB7XG4gICAgaWYgKG5vdygpIC0gc3RhcnQgPj0gZGVsYXkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwobnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpbWVvdXRJRC5pZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKTtcbiAgICB9XG4gIH1cblxuICB2YXIgdGltZW91dElEID0ge1xuICAgIGlkOiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgfTtcbiAgcmV0dXJuIHRpbWVvdXRJRDtcbn1cblxudmFyIHNpemUgPSAtMTsgLy8gVGhpcyB1dGlsaXR5IGNvcGllZCBmcm9tIFwiZG9tLWhlbHBlcnNcIiBwYWNrYWdlLlxuXG5mdW5jdGlvbiBnZXRTY3JvbGxiYXJTaXplKHJlY2FsY3VsYXRlKSB7XG4gIGlmIChyZWNhbGN1bGF0ZSA9PT0gdm9pZCAwKSB7XG4gICAgcmVjYWxjdWxhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChzaXplID09PSAtMSB8fCByZWNhbGN1bGF0ZSkge1xuICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB2YXIgc3R5bGUgPSBkaXYuc3R5bGU7XG4gICAgc3R5bGUud2lkdGggPSAnNTBweCc7XG4gICAgc3R5bGUuaGVpZ2h0ID0gJzUwcHgnO1xuICAgIHN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICAgIHNpemUgPSBkaXYub2Zmc2V0V2lkdGggLSBkaXYuY2xpZW50V2lkdGg7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuICB9XG5cbiAgcmV0dXJuIHNpemU7XG59XG52YXIgY2FjaGVkUlRMUmVzdWx0ID0gbnVsbDsgLy8gVFJJQ0tZIEFjY29yZGluZyB0byB0aGUgc3BlYywgc2Nyb2xsTGVmdCBzaG91bGQgYmUgbmVnYXRpdmUgZm9yIFJUTCBhbGlnbmVkIGVsZW1lbnRzLlxuLy8gQ2hyb21lIGRvZXMgbm90IHNlZW0gdG8gYWRoZXJlOyBpdHMgc2Nyb2xsTGVmdCB2YWx1ZXMgYXJlIHBvc2l0aXZlIChtZWFzdXJlZCByZWxhdGl2ZSB0byB0aGUgbGVmdCkuXG4vLyBTYWZhcmkncyBlbGFzdGljIGJvdW5jZSBtYWtlcyBkZXRlY3RpbmcgdGhpcyBldmVuIG1vcmUgY29tcGxpY2F0ZWQgd3J0IHBvdGVudGlhbCBmYWxzZSBwb3NpdGl2ZXMuXG4vLyBUaGUgc2FmZXN0IHdheSB0byBjaGVjayB0aGlzIGlzIHRvIGludGVudGlvbmFsbHkgc2V0IGEgbmVnYXRpdmUgb2Zmc2V0LFxuLy8gYW5kIHRoZW4gdmVyaWZ5IHRoYXQgdGhlIHN1YnNlcXVlbnQgXCJzY3JvbGxcIiBldmVudCBtYXRjaGVzIHRoZSBuZWdhdGl2ZSBvZmZzZXQuXG4vLyBJZiBpdCBkb2VzIG5vdCBtYXRjaCwgdGhlbiB3ZSBjYW4gYXNzdW1lIGEgbm9uLXN0YW5kYXJkIFJUTCBzY3JvbGwgaW1wbGVtZW50YXRpb24uXG5cbmZ1bmN0aW9uIGdldFJUTE9mZnNldFR5cGUocmVjYWxjdWxhdGUpIHtcbiAgaWYgKHJlY2FsY3VsYXRlID09PSB2b2lkIDApIHtcbiAgICByZWNhbGN1bGF0ZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGNhY2hlZFJUTFJlc3VsdCA9PT0gbnVsbCB8fCByZWNhbGN1bGF0ZSkge1xuICAgIHZhciBvdXRlckRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHZhciBvdXRlclN0eWxlID0gb3V0ZXJEaXYuc3R5bGU7XG4gICAgb3V0ZXJTdHlsZS53aWR0aCA9ICc1MHB4JztcbiAgICBvdXRlclN0eWxlLmhlaWdodCA9ICc1MHB4JztcbiAgICBvdXRlclN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gICAgb3V0ZXJTdHlsZS5kaXJlY3Rpb24gPSAncnRsJztcbiAgICB2YXIgaW5uZXJEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB2YXIgaW5uZXJTdHlsZSA9IGlubmVyRGl2LnN0eWxlO1xuICAgIGlubmVyU3R5bGUud2lkdGggPSAnMTAwcHgnO1xuICAgIGlubmVyU3R5bGUuaGVpZ2h0ID0gJzEwMHB4JztcbiAgICBvdXRlckRpdi5hcHBlbmRDaGlsZChpbm5lckRpdik7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdXRlckRpdik7XG5cbiAgICBpZiAob3V0ZXJEaXYuc2Nyb2xsTGVmdCA+IDApIHtcbiAgICAgIGNhY2hlZFJUTFJlc3VsdCA9ICdwb3NpdGl2ZS1kZXNjZW5kaW5nJztcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ZXJEaXYuc2Nyb2xsTGVmdCA9IDE7XG5cbiAgICAgIGlmIChvdXRlckRpdi5zY3JvbGxMZWZ0ID09PSAwKSB7XG4gICAgICAgIGNhY2hlZFJUTFJlc3VsdCA9ICduZWdhdGl2ZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWNoZWRSVExSZXN1bHQgPSAncG9zaXRpdmUtYXNjZW5kaW5nJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG91dGVyRGl2KTtcbiAgICByZXR1cm4gY2FjaGVkUlRMUmVzdWx0O1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlZFJUTFJlc3VsdDtcbn1cblxudmFyIElTX1NDUk9MTElOR19ERUJPVU5DRV9JTlRFUlZBTCA9IDE1MDtcblxudmFyIGRlZmF1bHRJdGVtS2V5ID0gZnVuY3Rpb24gZGVmYXVsdEl0ZW1LZXkoX3JlZikge1xuICB2YXIgY29sdW1uSW5kZXggPSBfcmVmLmNvbHVtbkluZGV4LFxuICAgICAgZGF0YSA9IF9yZWYuZGF0YSxcbiAgICAgIHJvd0luZGV4ID0gX3JlZi5yb3dJbmRleDtcbiAgcmV0dXJuIHJvd0luZGV4ICsgXCI6XCIgKyBjb2x1bW5JbmRleDtcbn07IC8vIEluIERFViBtb2RlLCB0aGlzIFNldCBoZWxwcyB1cyBvbmx5IGxvZyBhIHdhcm5pbmcgb25jZSBwZXIgY29tcG9uZW50IGluc3RhbmNlLlxuLy8gVGhpcyBhdm9pZHMgc3BhbW1pbmcgdGhlIGNvbnNvbGUgZXZlcnkgdGltZSBhIHJlbmRlciBoYXBwZW5zLlxuXG5cbnZhciBkZXZXYXJuaW5nc092ZXJzY2FuQ291bnQgPSBudWxsO1xudmFyIGRldldhcm5pbmdzT3ZlcnNjYW5Sb3dzQ29sdW1uc0NvdW50ID0gbnVsbDtcbnZhciBkZXZXYXJuaW5nc1RhZ05hbWUgPSBudWxsO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5XZWFrU2V0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRldldhcm5pbmdzT3ZlcnNjYW5Db3VudCA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICAgIGRldldhcm5pbmdzT3ZlcnNjYW5Sb3dzQ29sdW1uc0NvdW50ID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gICAgZGV2V2FybmluZ3NUYWdOYW1lID0gLyojX19QVVJFX18qL25ldyBXZWFrU2V0KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlR3JpZENvbXBvbmVudChfcmVmMikge1xuICB2YXIgX2NsYXNzO1xuXG4gIHZhciBnZXRDb2x1bW5PZmZzZXQgPSBfcmVmMi5nZXRDb2x1bW5PZmZzZXQsXG4gICAgICBnZXRDb2x1bW5TdGFydEluZGV4Rm9yT2Zmc2V0ID0gX3JlZjIuZ2V0Q29sdW1uU3RhcnRJbmRleEZvck9mZnNldCxcbiAgICAgIGdldENvbHVtblN0b3BJbmRleEZvclN0YXJ0SW5kZXggPSBfcmVmMi5nZXRDb2x1bW5TdG9wSW5kZXhGb3JTdGFydEluZGV4LFxuICAgICAgZ2V0Q29sdW1uV2lkdGggPSBfcmVmMi5nZXRDb2x1bW5XaWR0aCxcbiAgICAgIGdldEVzdGltYXRlZFRvdGFsSGVpZ2h0ID0gX3JlZjIuZ2V0RXN0aW1hdGVkVG90YWxIZWlnaHQsXG4gICAgICBnZXRFc3RpbWF0ZWRUb3RhbFdpZHRoID0gX3JlZjIuZ2V0RXN0aW1hdGVkVG90YWxXaWR0aCxcbiAgICAgIGdldE9mZnNldEZvckNvbHVtbkFuZEFsaWdubWVudCA9IF9yZWYyLmdldE9mZnNldEZvckNvbHVtbkFuZEFsaWdubWVudCxcbiAgICAgIGdldE9mZnNldEZvclJvd0FuZEFsaWdubWVudCA9IF9yZWYyLmdldE9mZnNldEZvclJvd0FuZEFsaWdubWVudCxcbiAgICAgIGdldFJvd0hlaWdodCA9IF9yZWYyLmdldFJvd0hlaWdodCxcbiAgICAgIGdldFJvd09mZnNldCA9IF9yZWYyLmdldFJvd09mZnNldCxcbiAgICAgIGdldFJvd1N0YXJ0SW5kZXhGb3JPZmZzZXQgPSBfcmVmMi5nZXRSb3dTdGFydEluZGV4Rm9yT2Zmc2V0LFxuICAgICAgZ2V0Um93U3RvcEluZGV4Rm9yU3RhcnRJbmRleCA9IF9yZWYyLmdldFJvd1N0b3BJbmRleEZvclN0YXJ0SW5kZXgsXG4gICAgICBpbml0SW5zdGFuY2VQcm9wcyA9IF9yZWYyLmluaXRJbnN0YW5jZVByb3BzLFxuICAgICAgc2hvdWxkUmVzZXRTdHlsZUNhY2hlT25JdGVtU2l6ZUNoYW5nZSA9IF9yZWYyLnNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2UsXG4gICAgICB2YWxpZGF0ZVByb3BzID0gX3JlZjIudmFsaWRhdGVQcm9wcztcbiAgcmV0dXJuIF9jbGFzcyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1B1cmVDb21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHNMb29zZShHcmlkLCBfUHVyZUNvbXBvbmVudCk7XG5cbiAgICAvLyBBbHdheXMgdXNlIGV4cGxpY2l0IGNvbnN0cnVjdG9yIGZvciBSZWFjdCBjb21wb25lbnRzLlxuICAgIC8vIEl0IHByb2R1Y2VzIGxlc3MgY29kZSBhZnRlciB0cmFuc3BpbGF0aW9uLiAoIzI2KVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gICAgZnVuY3Rpb24gR3JpZChwcm9wcykge1xuICAgICAgdmFyIF90aGlzO1xuXG4gICAgICBfdGhpcyA9IF9QdXJlQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMpIHx8IHRoaXM7XG4gICAgICBfdGhpcy5faW5zdGFuY2VQcm9wcyA9IGluaXRJbnN0YW5jZVByb3BzKF90aGlzLnByb3BzLCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSk7XG4gICAgICBfdGhpcy5fcmVzZXRJc1Njcm9sbGluZ1RpbWVvdXRJZCA9IG51bGw7XG4gICAgICBfdGhpcy5fb3V0ZXJSZWYgPSB2b2lkIDA7XG4gICAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgaW5zdGFuY2U6IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLFxuICAgICAgICBpc1Njcm9sbGluZzogZmFsc2UsXG4gICAgICAgIGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb246ICdmb3J3YXJkJyxcbiAgICAgICAgc2Nyb2xsTGVmdDogdHlwZW9mIF90aGlzLnByb3BzLmluaXRpYWxTY3JvbGxMZWZ0ID09PSAnbnVtYmVyJyA/IF90aGlzLnByb3BzLmluaXRpYWxTY3JvbGxMZWZ0IDogMCxcbiAgICAgICAgc2Nyb2xsVG9wOiB0eXBlb2YgX3RoaXMucHJvcHMuaW5pdGlhbFNjcm9sbFRvcCA9PT0gJ251bWJlcicgPyBfdGhpcy5wcm9wcy5pbml0aWFsU2Nyb2xsVG9wIDogMCxcbiAgICAgICAgc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkOiBmYWxzZSxcbiAgICAgICAgdmVydGljYWxTY3JvbGxEaXJlY3Rpb246ICdmb3J3YXJkJ1xuICAgICAgfTtcbiAgICAgIF90aGlzLl9jYWxsT25JdGVtc1JlbmRlcmVkID0gdm9pZCAwO1xuICAgICAgX3RoaXMuX2NhbGxPbkl0ZW1zUmVuZGVyZWQgPSBtZW1vaXplT25lKGZ1bmN0aW9uIChvdmVyc2NhbkNvbHVtblN0YXJ0SW5kZXgsIG92ZXJzY2FuQ29sdW1uU3RvcEluZGV4LCBvdmVyc2NhblJvd1N0YXJ0SW5kZXgsIG92ZXJzY2FuUm93U3RvcEluZGV4LCB2aXNpYmxlQ29sdW1uU3RhcnRJbmRleCwgdmlzaWJsZUNvbHVtblN0b3BJbmRleCwgdmlzaWJsZVJvd1N0YXJ0SW5kZXgsIHZpc2libGVSb3dTdG9wSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnByb3BzLm9uSXRlbXNSZW5kZXJlZCh7XG4gICAgICAgICAgb3ZlcnNjYW5Db2x1bW5TdGFydEluZGV4OiBvdmVyc2NhbkNvbHVtblN0YXJ0SW5kZXgsXG4gICAgICAgICAgb3ZlcnNjYW5Db2x1bW5TdG9wSW5kZXg6IG92ZXJzY2FuQ29sdW1uU3RvcEluZGV4LFxuICAgICAgICAgIG92ZXJzY2FuUm93U3RhcnRJbmRleDogb3ZlcnNjYW5Sb3dTdGFydEluZGV4LFxuICAgICAgICAgIG92ZXJzY2FuUm93U3RvcEluZGV4OiBvdmVyc2NhblJvd1N0b3BJbmRleCxcbiAgICAgICAgICB2aXNpYmxlQ29sdW1uU3RhcnRJbmRleDogdmlzaWJsZUNvbHVtblN0YXJ0SW5kZXgsXG4gICAgICAgICAgdmlzaWJsZUNvbHVtblN0b3BJbmRleDogdmlzaWJsZUNvbHVtblN0b3BJbmRleCxcbiAgICAgICAgICB2aXNpYmxlUm93U3RhcnRJbmRleDogdmlzaWJsZVJvd1N0YXJ0SW5kZXgsXG4gICAgICAgICAgdmlzaWJsZVJvd1N0b3BJbmRleDogdmlzaWJsZVJvd1N0b3BJbmRleFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuX2NhbGxPblNjcm9sbCA9IHZvaWQgMDtcbiAgICAgIF90aGlzLl9jYWxsT25TY3JvbGwgPSBtZW1vaXplT25lKGZ1bmN0aW9uIChzY3JvbGxMZWZ0LCBzY3JvbGxUb3AsIGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24sIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uLCBzY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnByb3BzLm9uU2Nyb2xsKHtcbiAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uOiBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uLFxuICAgICAgICAgIHNjcm9sbExlZnQ6IHNjcm9sbExlZnQsXG4gICAgICAgICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3AsXG4gICAgICAgICAgdmVydGljYWxTY3JvbGxEaXJlY3Rpb246IHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uLFxuICAgICAgICAgIHNjcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZDogc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfdGhpcy5fZ2V0SXRlbVN0eWxlID0gdm9pZCAwO1xuXG4gICAgICBfdGhpcy5fZ2V0SXRlbVN0eWxlID0gZnVuY3Rpb24gKHJvd0luZGV4LCBjb2x1bW5JbmRleCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGNvbHVtbldpZHRoID0gX3RoaXMkcHJvcHMuY29sdW1uV2lkdGgsXG4gICAgICAgICAgICBkaXJlY3Rpb24gPSBfdGhpcyRwcm9wcy5kaXJlY3Rpb24sXG4gICAgICAgICAgICByb3dIZWlnaHQgPSBfdGhpcyRwcm9wcy5yb3dIZWlnaHQ7XG5cbiAgICAgICAgdmFyIGl0ZW1TdHlsZUNhY2hlID0gX3RoaXMuX2dldEl0ZW1TdHlsZUNhY2hlKHNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2UgJiYgY29sdW1uV2lkdGgsIHNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2UgJiYgZGlyZWN0aW9uLCBzaG91bGRSZXNldFN0eWxlQ2FjaGVPbkl0ZW1TaXplQ2hhbmdlICYmIHJvd0hlaWdodCk7XG5cbiAgICAgICAgdmFyIGtleSA9IHJvd0luZGV4ICsgXCI6XCIgKyBjb2x1bW5JbmRleDtcbiAgICAgICAgdmFyIHN0eWxlO1xuXG4gICAgICAgIGlmIChpdGVtU3R5bGVDYWNoZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgc3R5bGUgPSBpdGVtU3R5bGVDYWNoZVtrZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBfb2Zmc2V0ID0gZ2V0Q29sdW1uT2Zmc2V0KF90aGlzLnByb3BzLCBjb2x1bW5JbmRleCwgX3RoaXMuX2luc3RhbmNlUHJvcHMpO1xuXG4gICAgICAgICAgdmFyIGlzUnRsID0gZGlyZWN0aW9uID09PSAncnRsJztcbiAgICAgICAgICBpdGVtU3R5bGVDYWNoZVtrZXldID0gc3R5bGUgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGxlZnQ6IGlzUnRsID8gdW5kZWZpbmVkIDogX29mZnNldCxcbiAgICAgICAgICAgIHJpZ2h0OiBpc1J0bCA/IF9vZmZzZXQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0b3A6IGdldFJvd09mZnNldChfdGhpcy5wcm9wcywgcm93SW5kZXgsIF90aGlzLl9pbnN0YW5jZVByb3BzKSxcbiAgICAgICAgICAgIGhlaWdodDogZ2V0Um93SGVpZ2h0KF90aGlzLnByb3BzLCByb3dJbmRleCwgX3RoaXMuX2luc3RhbmNlUHJvcHMpLFxuICAgICAgICAgICAgd2lkdGg6IGdldENvbHVtbldpZHRoKF90aGlzLnByb3BzLCBjb2x1bW5JbmRleCwgX3RoaXMuX2luc3RhbmNlUHJvcHMpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHlsZTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLl9nZXRJdGVtU3R5bGVDYWNoZSA9IHZvaWQgMDtcbiAgICAgIF90aGlzLl9nZXRJdGVtU3R5bGVDYWNoZSA9IG1lbW9pemVPbmUoZnVuY3Rpb24gKF8sIF9fLCBfX18pIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfSk7XG5cbiAgICAgIF90aGlzLl9vblNjcm9sbCA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgX2V2ZW50JGN1cnJlbnRUYXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0LFxuICAgICAgICAgICAgY2xpZW50SGVpZ2h0ID0gX2V2ZW50JGN1cnJlbnRUYXJnZXQuY2xpZW50SGVpZ2h0LFxuICAgICAgICAgICAgY2xpZW50V2lkdGggPSBfZXZlbnQkY3VycmVudFRhcmdldC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgIHNjcm9sbExlZnQgPSBfZXZlbnQkY3VycmVudFRhcmdldC5zY3JvbGxMZWZ0LFxuICAgICAgICAgICAgc2Nyb2xsVG9wID0gX2V2ZW50JGN1cnJlbnRUYXJnZXQuc2Nyb2xsVG9wLFxuICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gX2V2ZW50JGN1cnJlbnRUYXJnZXQuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgc2Nyb2xsV2lkdGggPSBfZXZlbnQkY3VycmVudFRhcmdldC5zY3JvbGxXaWR0aDtcblxuICAgICAgICBfdGhpcy5zZXRTdGF0ZShmdW5jdGlvbiAocHJldlN0YXRlKSB7XG4gICAgICAgICAgaWYgKHByZXZTdGF0ZS5zY3JvbGxMZWZ0ID09PSBzY3JvbGxMZWZ0ICYmIHByZXZTdGF0ZS5zY3JvbGxUb3AgPT09IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgLy8gU2Nyb2xsIHBvc2l0aW9uIG1heSBoYXZlIGJlZW4gdXBkYXRlZCBieSBjRE0vY0RVLFxuICAgICAgICAgICAgLy8gSW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBuZWVkIHRvIHRyaWdnZXIgYW5vdGhlciByZW5kZXIsXG4gICAgICAgICAgICAvLyBBbmQgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUgc3RhdGUuaXNTY3JvbGxpbmcuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gX3RoaXMucHJvcHMuZGlyZWN0aW9uOyAvLyBUUklDS1kgQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBzY3JvbGxMZWZ0IHNob3VsZCBiZSBuZWdhdGl2ZSBmb3IgUlRMIGFsaWduZWQgZWxlbWVudHMuXG4gICAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIGNhc2UgZm9yIGFsbCBicm93c2VycyB0aG91Z2ggKGUuZy4gQ2hyb21lIHJlcG9ydHMgdmFsdWVzIGFzIHBvc2l0aXZlLCBtZWFzdXJlZCByZWxhdGl2ZSB0byB0aGUgbGVmdCkuXG4gICAgICAgICAgLy8gSXQncyBhbHNvIGVhc2llciBmb3IgdGhpcyBjb21wb25lbnQgaWYgd2UgY29udmVydCBvZmZzZXRzIHRvIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGV5IHdvdWxkIGJlIGluIGZvciBsdHIuXG4gICAgICAgICAgLy8gU28gdGhlIHNpbXBsZXN0IHNvbHV0aW9uIGlzIHRvIGRldGVybWluZSB3aGljaCBicm93c2VyIGJlaGF2aW9yIHdlJ3JlIGRlYWxpbmcgd2l0aCwgYW5kIGNvbnZlcnQgYmFzZWQgb24gaXQuXG5cbiAgICAgICAgICB2YXIgY2FsY3VsYXRlZFNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuXG4gICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoZ2V0UlRMT2Zmc2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ25lZ2F0aXZlJzpcbiAgICAgICAgICAgICAgICBjYWxjdWxhdGVkU2Nyb2xsTGVmdCA9IC1zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgJ3Bvc2l0aXZlLWRlc2NlbmRpbmcnOlxuICAgICAgICAgICAgICAgIGNhbGN1bGF0ZWRTY3JvbGxMZWZ0ID0gc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCAtIHNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAvLyBQcmV2ZW50IFNhZmFyaSdzIGVsYXN0aWMgc2Nyb2xsaW5nIGZyb20gY2F1c2luZyB2aXN1YWwgc2hha2luZyB3aGVuIHNjcm9sbGluZyBwYXN0IGJvdW5kcy5cblxuXG4gICAgICAgICAgY2FsY3VsYXRlZFNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihjYWxjdWxhdGVkU2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGggLSBjbGllbnRXaWR0aCkpO1xuICAgICAgICAgIHZhciBjYWxjdWxhdGVkU2Nyb2xsVG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQgLSBjbGllbnRIZWlnaHQpKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNTY3JvbGxpbmc6IHRydWUsXG4gICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uOiBwcmV2U3RhdGUuc2Nyb2xsTGVmdCA8IHNjcm9sbExlZnQgPyAnZm9yd2FyZCcgOiAnYmFja3dhcmQnLFxuICAgICAgICAgICAgc2Nyb2xsTGVmdDogY2FsY3VsYXRlZFNjcm9sbExlZnQsXG4gICAgICAgICAgICBzY3JvbGxUb3A6IGNhbGN1bGF0ZWRTY3JvbGxUb3AsXG4gICAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbjogcHJldlN0YXRlLnNjcm9sbFRvcCA8IHNjcm9sbFRvcCA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCcsXG4gICAgICAgICAgICBzY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQ6IGZhbHNlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSwgX3RoaXMuX3Jlc2V0SXNTY3JvbGxpbmdEZWJvdW5jZWQpO1xuICAgICAgfTtcblxuICAgICAgX3RoaXMuX291dGVyUmVmU2V0dGVyID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgICB2YXIgb3V0ZXJSZWYgPSBfdGhpcy5wcm9wcy5vdXRlclJlZjtcbiAgICAgICAgX3RoaXMuX291dGVyUmVmID0gcmVmO1xuXG4gICAgICAgIGlmICh0eXBlb2Ygb3V0ZXJSZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBvdXRlclJlZihyZWYpO1xuICAgICAgICB9IGVsc2UgaWYgKG91dGVyUmVmICE9IG51bGwgJiYgdHlwZW9mIG91dGVyUmVmID09PSAnb2JqZWN0JyAmJiBvdXRlclJlZi5oYXNPd25Qcm9wZXJ0eSgnY3VycmVudCcpKSB7XG4gICAgICAgICAgb3V0ZXJSZWYuY3VycmVudCA9IHJlZjtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgX3RoaXMuX3Jlc2V0SXNTY3JvbGxpbmdEZWJvdW5jZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChfdGhpcy5fcmVzZXRJc1Njcm9sbGluZ1RpbWVvdXRJZCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNhbmNlbFRpbWVvdXQoX3RoaXMuX3Jlc2V0SXNTY3JvbGxpbmdUaW1lb3V0SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuX3Jlc2V0SXNTY3JvbGxpbmdUaW1lb3V0SWQgPSByZXF1ZXN0VGltZW91dChfdGhpcy5fcmVzZXRJc1Njcm9sbGluZywgSVNfU0NST0xMSU5HX0RFQk9VTkNFX0lOVEVSVkFMKTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLl9yZXNldElzU2Nyb2xsaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5fcmVzZXRJc1Njcm9sbGluZ1RpbWVvdXRJZCA9IG51bGw7XG5cbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGlzU2Nyb2xsaW5nOiBmYWxzZVxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gQ2xlYXIgc3R5bGUgY2FjaGUgYWZ0ZXIgc3RhdGUgdXBkYXRlIGhhcyBiZWVuIGNvbW1pdHRlZC5cbiAgICAgICAgICAvLyBUaGlzIHdheSB3ZSBkb24ndCBicmVhayBwdXJlIHNDVSBmb3IgaXRlbXMgdGhhdCBkb24ndCB1c2UgaXNTY3JvbGxpbmcgcGFyYW0uXG4gICAgICAgICAgX3RoaXMuX2dldEl0ZW1TdHlsZUNhY2hlKC0xKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgR3JpZC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgIHZhbGlkYXRlU2hhcmVkUHJvcHMobmV4dFByb3BzLCBwcmV2U3RhdGUpO1xuICAgICAgdmFsaWRhdGVQcm9wcyhuZXh0UHJvcHMpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIHZhciBfcHJvdG8gPSBHcmlkLnByb3RvdHlwZTtcblxuICAgIF9wcm90by5zY3JvbGxUbyA9IGZ1bmN0aW9uIHNjcm9sbFRvKF9yZWYzKSB7XG4gICAgICB2YXIgc2Nyb2xsTGVmdCA9IF9yZWYzLnNjcm9sbExlZnQsXG4gICAgICAgICAgc2Nyb2xsVG9wID0gX3JlZjMuc2Nyb2xsVG9wO1xuXG4gICAgICBpZiAoc2Nyb2xsTGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBzY3JvbGxMZWZ0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjcm9sbFRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNjcm9sbFRvcCA9IE1hdGgubWF4KDAsIHNjcm9sbFRvcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHByZXZTdGF0ZSkge1xuICAgICAgICBpZiAoc2Nyb2xsTGVmdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2Nyb2xsTGVmdCA9IHByZXZTdGF0ZS5zY3JvbGxMZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjcm9sbFRvcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2Nyb2xsVG9wID0gcHJldlN0YXRlLnNjcm9sbFRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmV2U3RhdGUuc2Nyb2xsTGVmdCA9PT0gc2Nyb2xsTGVmdCAmJiBwcmV2U3RhdGUuc2Nyb2xsVG9wID09PSBzY3JvbGxUb3ApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbjogcHJldlN0YXRlLnNjcm9sbExlZnQgPCBzY3JvbGxMZWZ0ID8gJ2ZvcndhcmQnIDogJ2JhY2t3YXJkJyxcbiAgICAgICAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgICAgICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wLFxuICAgICAgICAgIHNjcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZDogdHJ1ZSxcbiAgICAgICAgICB2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbjogcHJldlN0YXRlLnNjcm9sbFRvcCA8IHNjcm9sbFRvcCA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCdcbiAgICAgICAgfTtcbiAgICAgIH0sIHRoaXMuX3Jlc2V0SXNTY3JvbGxpbmdEZWJvdW5jZWQpO1xuICAgIH07XG5cbiAgICBfcHJvdG8uc2Nyb2xsVG9JdGVtID0gZnVuY3Rpb24gc2Nyb2xsVG9JdGVtKF9yZWY0KSB7XG4gICAgICB2YXIgX3JlZjQkYWxpZ24gPSBfcmVmNC5hbGlnbixcbiAgICAgICAgICBhbGlnbiA9IF9yZWY0JGFsaWduID09PSB2b2lkIDAgPyAnYXV0bycgOiBfcmVmNCRhbGlnbixcbiAgICAgICAgICBjb2x1bW5JbmRleCA9IF9yZWY0LmNvbHVtbkluZGV4LFxuICAgICAgICAgIHJvd0luZGV4ID0gX3JlZjQucm93SW5kZXg7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjb2x1bW5Db3VudCA9IF90aGlzJHByb3BzMi5jb2x1bW5Db3VudCxcbiAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczIuaGVpZ2h0LFxuICAgICAgICAgIHJvd0NvdW50ID0gX3RoaXMkcHJvcHMyLnJvd0NvdW50LFxuICAgICAgICAgIHdpZHRoID0gX3RoaXMkcHJvcHMyLndpZHRoO1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgICBzY3JvbGxMZWZ0ID0gX3RoaXMkc3RhdGUuc2Nyb2xsTGVmdCxcbiAgICAgICAgICBzY3JvbGxUb3AgPSBfdGhpcyRzdGF0ZS5zY3JvbGxUb3A7XG4gICAgICB2YXIgc2Nyb2xsYmFyU2l6ZSA9IGdldFNjcm9sbGJhclNpemUoKTtcblxuICAgICAgaWYgKGNvbHVtbkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29sdW1uSW5kZXggPSBNYXRoLm1heCgwLCBNYXRoLm1pbihjb2x1bW5JbmRleCwgY29sdW1uQ291bnQgLSAxKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3dJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJvd0luZGV4ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4ocm93SW5kZXgsIHJvd0NvdW50IC0gMSkpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZXN0aW1hdGVkVG90YWxIZWlnaHQgPSBnZXRFc3RpbWF0ZWRUb3RhbEhlaWdodCh0aGlzLnByb3BzLCB0aGlzLl9pbnN0YW5jZVByb3BzKTtcbiAgICAgIHZhciBlc3RpbWF0ZWRUb3RhbFdpZHRoID0gZ2V0RXN0aW1hdGVkVG90YWxXaWR0aCh0aGlzLnByb3BzLCB0aGlzLl9pbnN0YW5jZVByb3BzKTsgLy8gVGhlIHNjcm9sbGJhciBzaXplIHNob3VsZCBiZSBjb25zaWRlcmVkIHdoZW4gc2Nyb2xsaW5nIGFuIGl0ZW0gaW50byB2aWV3LFxuICAgICAgLy8gdG8gZW5zdXJlIGl0J3MgZnVsbHkgdmlzaWJsZS5cbiAgICAgIC8vIEJ1dCB3ZSBvbmx5IG5lZWQgdG8gYWNjb3VudCBmb3IgaXRzIHNpemUgd2hlbiBpdCdzIGFjdHVhbGx5IHZpc2libGUuXG5cbiAgICAgIHZhciBob3Jpem9udGFsU2Nyb2xsYmFyU2l6ZSA9IGVzdGltYXRlZFRvdGFsV2lkdGggPiB3aWR0aCA/IHNjcm9sbGJhclNpemUgOiAwO1xuICAgICAgdmFyIHZlcnRpY2FsU2Nyb2xsYmFyU2l6ZSA9IGVzdGltYXRlZFRvdGFsSGVpZ2h0ID4gaGVpZ2h0ID8gc2Nyb2xsYmFyU2l6ZSA6IDA7XG4gICAgICB0aGlzLnNjcm9sbFRvKHtcbiAgICAgICAgc2Nyb2xsTGVmdDogY29sdW1uSW5kZXggIT09IHVuZGVmaW5lZCA/IGdldE9mZnNldEZvckNvbHVtbkFuZEFsaWdubWVudCh0aGlzLnByb3BzLCBjb2x1bW5JbmRleCwgYWxpZ24sIHNjcm9sbExlZnQsIHRoaXMuX2luc3RhbmNlUHJvcHMsIHZlcnRpY2FsU2Nyb2xsYmFyU2l6ZSkgOiBzY3JvbGxMZWZ0LFxuICAgICAgICBzY3JvbGxUb3A6IHJvd0luZGV4ICE9PSB1bmRlZmluZWQgPyBnZXRPZmZzZXRGb3JSb3dBbmRBbGlnbm1lbnQodGhpcy5wcm9wcywgcm93SW5kZXgsIGFsaWduLCBzY3JvbGxUb3AsIHRoaXMuX2luc3RhbmNlUHJvcHMsIGhvcml6b250YWxTY3JvbGxiYXJTaXplKSA6IHNjcm9sbFRvcFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIF9wcm90by5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgaW5pdGlhbFNjcm9sbExlZnQgPSBfdGhpcyRwcm9wczMuaW5pdGlhbFNjcm9sbExlZnQsXG4gICAgICAgICAgaW5pdGlhbFNjcm9sbFRvcCA9IF90aGlzJHByb3BzMy5pbml0aWFsU2Nyb2xsVG9wO1xuXG4gICAgICBpZiAodGhpcy5fb3V0ZXJSZWYgIT0gbnVsbCkge1xuICAgICAgICB2YXIgb3V0ZXJSZWYgPSB0aGlzLl9vdXRlclJlZjtcblxuICAgICAgICBpZiAodHlwZW9mIGluaXRpYWxTY3JvbGxMZWZ0ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIG91dGVyUmVmLnNjcm9sbExlZnQgPSBpbml0aWFsU2Nyb2xsTGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaW5pdGlhbFNjcm9sbFRvcCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBvdXRlclJlZi5zY3JvbGxUb3AgPSBpbml0aWFsU2Nyb2xsVG9wO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NhbGxQcm9wc0NhbGxiYWNrcygpO1xuICAgIH07XG5cbiAgICBfcHJvdG8uY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgdmFyIGRpcmVjdGlvbiA9IHRoaXMucHJvcHMuZGlyZWN0aW9uO1xuICAgICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgc2Nyb2xsTGVmdCA9IF90aGlzJHN0YXRlMi5zY3JvbGxMZWZ0LFxuICAgICAgICAgIHNjcm9sbFRvcCA9IF90aGlzJHN0YXRlMi5zY3JvbGxUb3AsXG4gICAgICAgICAgc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkID0gX3RoaXMkc3RhdGUyLnNjcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZDtcblxuICAgICAgaWYgKHNjcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZCAmJiB0aGlzLl9vdXRlclJlZiAhPSBudWxsKSB7XG4gICAgICAgIC8vIFRSSUNLWSBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNjcm9sbExlZnQgc2hvdWxkIGJlIG5lZ2F0aXZlIGZvciBSVEwgYWxpZ25lZCBlbGVtZW50cy5cbiAgICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIGNhc2UgZm9yIGFsbCBicm93c2VycyB0aG91Z2ggKGUuZy4gQ2hyb21lIHJlcG9ydHMgdmFsdWVzIGFzIHBvc2l0aXZlLCBtZWFzdXJlZCByZWxhdGl2ZSB0byB0aGUgbGVmdCkuXG4gICAgICAgIC8vIFNvIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIGJyb3dzZXIgYmVoYXZpb3Igd2UncmUgZGVhbGluZyB3aXRoLCBhbmQgbWltaWMgaXQuXG4gICAgICAgIHZhciBvdXRlclJlZiA9IHRoaXMuX291dGVyUmVmO1xuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgICAgICAgc3dpdGNoIChnZXRSVExPZmZzZXRUeXBlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ25lZ2F0aXZlJzpcbiAgICAgICAgICAgICAgb3V0ZXJSZWYuc2Nyb2xsTGVmdCA9IC1zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAncG9zaXRpdmUtYXNjZW5kaW5nJzpcbiAgICAgICAgICAgICAgb3V0ZXJSZWYuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB2YXIgY2xpZW50V2lkdGggPSBvdXRlclJlZi5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoID0gb3V0ZXJSZWYuc2Nyb2xsV2lkdGg7XG4gICAgICAgICAgICAgIG91dGVyUmVmLnNjcm9sbExlZnQgPSBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoIC0gc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dGVyUmVmLnNjcm9sbExlZnQgPSBNYXRoLm1heCgwLCBzY3JvbGxMZWZ0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dGVyUmVmLnNjcm9sbFRvcCA9IE1hdGgubWF4KDAsIHNjcm9sbFRvcCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NhbGxQcm9wc0NhbGxiYWNrcygpO1xuICAgIH07XG5cbiAgICBfcHJvdG8uY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGlmICh0aGlzLl9yZXNldElzU2Nyb2xsaW5nVGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICAgIGNhbmNlbFRpbWVvdXQodGhpcy5fcmVzZXRJc1Njcm9sbGluZ1RpbWVvdXRJZCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM0ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNC5jaGlsZHJlbixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczQuY2xhc3NOYW1lLFxuICAgICAgICAgIGNvbHVtbkNvdW50ID0gX3RoaXMkcHJvcHM0LmNvbHVtbkNvdW50LFxuICAgICAgICAgIGRpcmVjdGlvbiA9IF90aGlzJHByb3BzNC5kaXJlY3Rpb24sXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHM0LmhlaWdodCxcbiAgICAgICAgICBpbm5lclJlZiA9IF90aGlzJHByb3BzNC5pbm5lclJlZixcbiAgICAgICAgICBpbm5lckVsZW1lbnRUeXBlID0gX3RoaXMkcHJvcHM0LmlubmVyRWxlbWVudFR5cGUsXG4gICAgICAgICAgaW5uZXJUYWdOYW1lID0gX3RoaXMkcHJvcHM0LmlubmVyVGFnTmFtZSxcbiAgICAgICAgICBpdGVtRGF0YSA9IF90aGlzJHByb3BzNC5pdGVtRGF0YSxcbiAgICAgICAgICBfdGhpcyRwcm9wczQkaXRlbUtleSA9IF90aGlzJHByb3BzNC5pdGVtS2V5LFxuICAgICAgICAgIGl0ZW1LZXkgPSBfdGhpcyRwcm9wczQkaXRlbUtleSA9PT0gdm9pZCAwID8gZGVmYXVsdEl0ZW1LZXkgOiBfdGhpcyRwcm9wczQkaXRlbUtleSxcbiAgICAgICAgICBvdXRlckVsZW1lbnRUeXBlID0gX3RoaXMkcHJvcHM0Lm91dGVyRWxlbWVudFR5cGUsXG4gICAgICAgICAgb3V0ZXJUYWdOYW1lID0gX3RoaXMkcHJvcHM0Lm91dGVyVGFnTmFtZSxcbiAgICAgICAgICByb3dDb3VudCA9IF90aGlzJHByb3BzNC5yb3dDb3VudCxcbiAgICAgICAgICBzdHlsZSA9IF90aGlzJHByb3BzNC5zdHlsZSxcbiAgICAgICAgICB1c2VJc1Njcm9sbGluZyA9IF90aGlzJHByb3BzNC51c2VJc1Njcm9sbGluZyxcbiAgICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzNC53aWR0aDtcbiAgICAgIHZhciBpc1Njcm9sbGluZyA9IHRoaXMuc3RhdGUuaXNTY3JvbGxpbmc7XG5cbiAgICAgIHZhciBfdGhpcyRfZ2V0SG9yaXpvbnRhbFIgPSB0aGlzLl9nZXRIb3Jpem9udGFsUmFuZ2VUb1JlbmRlcigpLFxuICAgICAgICAgIGNvbHVtblN0YXJ0SW5kZXggPSBfdGhpcyRfZ2V0SG9yaXpvbnRhbFJbMF0sXG4gICAgICAgICAgY29sdW1uU3RvcEluZGV4ID0gX3RoaXMkX2dldEhvcml6b250YWxSWzFdO1xuXG4gICAgICB2YXIgX3RoaXMkX2dldFZlcnRpY2FsUmFuID0gdGhpcy5fZ2V0VmVydGljYWxSYW5nZVRvUmVuZGVyKCksXG4gICAgICAgICAgcm93U3RhcnRJbmRleCA9IF90aGlzJF9nZXRWZXJ0aWNhbFJhblswXSxcbiAgICAgICAgICByb3dTdG9wSW5kZXggPSBfdGhpcyRfZ2V0VmVydGljYWxSYW5bMV07XG5cbiAgICAgIHZhciBpdGVtcyA9IFtdO1xuXG4gICAgICBpZiAoY29sdW1uQ291bnQgPiAwICYmIHJvd0NvdW50KSB7XG4gICAgICAgIGZvciAodmFyIF9yb3dJbmRleCA9IHJvd1N0YXJ0SW5kZXg7IF9yb3dJbmRleCA8PSByb3dTdG9wSW5kZXg7IF9yb3dJbmRleCsrKSB7XG4gICAgICAgICAgZm9yICh2YXIgX2NvbHVtbkluZGV4ID0gY29sdW1uU3RhcnRJbmRleDsgX2NvbHVtbkluZGV4IDw9IGNvbHVtblN0b3BJbmRleDsgX2NvbHVtbkluZGV4KyspIHtcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goY3JlYXRlRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgICAgICAgICBjb2x1bW5JbmRleDogX2NvbHVtbkluZGV4LFxuICAgICAgICAgICAgICBkYXRhOiBpdGVtRGF0YSxcbiAgICAgICAgICAgICAgaXNTY3JvbGxpbmc6IHVzZUlzU2Nyb2xsaW5nID8gaXNTY3JvbGxpbmcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGtleTogaXRlbUtleSh7XG4gICAgICAgICAgICAgICAgY29sdW1uSW5kZXg6IF9jb2x1bW5JbmRleCxcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtRGF0YSxcbiAgICAgICAgICAgICAgICByb3dJbmRleDogX3Jvd0luZGV4XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICByb3dJbmRleDogX3Jvd0luZGV4LFxuICAgICAgICAgICAgICBzdHlsZTogdGhpcy5fZ2V0SXRlbVN0eWxlKF9yb3dJbmRleCwgX2NvbHVtbkluZGV4KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvLyBSZWFkIHRoaXMgdmFsdWUgQUZURVIgaXRlbXMgaGF2ZSBiZWVuIGNyZWF0ZWQsXG4gICAgICAvLyBTbyB0aGVpciBhY3R1YWwgc2l6ZXMgKGlmIHZhcmlhYmxlKSBhcmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLlxuXG5cbiAgICAgIHZhciBlc3RpbWF0ZWRUb3RhbEhlaWdodCA9IGdldEVzdGltYXRlZFRvdGFsSGVpZ2h0KHRoaXMucHJvcHMsIHRoaXMuX2luc3RhbmNlUHJvcHMpO1xuICAgICAgdmFyIGVzdGltYXRlZFRvdGFsV2lkdGggPSBnZXRFc3RpbWF0ZWRUb3RhbFdpZHRoKHRoaXMucHJvcHMsIHRoaXMuX2luc3RhbmNlUHJvcHMpO1xuICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQob3V0ZXJFbGVtZW50VHlwZSB8fCBvdXRlclRhZ05hbWUgfHwgJ2RpdicsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIG9uU2Nyb2xsOiB0aGlzLl9vblNjcm9sbCxcbiAgICAgICAgcmVmOiB0aGlzLl9vdXRlclJlZlNldHRlcixcbiAgICAgICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJyxcbiAgICAgICAgICBXZWJraXRPdmVyZmxvd1Njcm9sbGluZzogJ3RvdWNoJyxcbiAgICAgICAgICB3aWxsQ2hhbmdlOiAndHJhbnNmb3JtJyxcbiAgICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvblxuICAgICAgICB9LCBzdHlsZSlcbiAgICAgIH0sIGNyZWF0ZUVsZW1lbnQoaW5uZXJFbGVtZW50VHlwZSB8fCBpbm5lclRhZ05hbWUgfHwgJ2RpdicsIHtcbiAgICAgICAgY2hpbGRyZW46IGl0ZW1zLFxuICAgICAgICByZWY6IGlubmVyUmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGhlaWdodDogZXN0aW1hdGVkVG90YWxIZWlnaHQsXG4gICAgICAgICAgcG9pbnRlckV2ZW50czogaXNTY3JvbGxpbmcgPyAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgd2lkdGg6IGVzdGltYXRlZFRvdGFsV2lkdGhcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH07XG5cbiAgICBfcHJvdG8uX2NhbGxQcm9wc0NhbGxiYWNrcyA9IGZ1bmN0aW9uIF9jYWxsUHJvcHNDYWxsYmFja3MoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjb2x1bW5Db3VudCA9IF90aGlzJHByb3BzNS5jb2x1bW5Db3VudCxcbiAgICAgICAgICBvbkl0ZW1zUmVuZGVyZWQgPSBfdGhpcyRwcm9wczUub25JdGVtc1JlbmRlcmVkLFxuICAgICAgICAgIG9uU2Nyb2xsID0gX3RoaXMkcHJvcHM1Lm9uU2Nyb2xsLFxuICAgICAgICAgIHJvd0NvdW50ID0gX3RoaXMkcHJvcHM1LnJvd0NvdW50O1xuXG4gICAgICBpZiAodHlwZW9mIG9uSXRlbXNSZW5kZXJlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAoY29sdW1uQ291bnQgPiAwICYmIHJvd0NvdW50ID4gMCkge1xuICAgICAgICAgIHZhciBfdGhpcyRfZ2V0SG9yaXpvbnRhbFIyID0gdGhpcy5fZ2V0SG9yaXpvbnRhbFJhbmdlVG9SZW5kZXIoKSxcbiAgICAgICAgICAgICAgX292ZXJzY2FuQ29sdW1uU3RhcnRJbmRleCA9IF90aGlzJF9nZXRIb3Jpem9udGFsUjJbMF0sXG4gICAgICAgICAgICAgIF9vdmVyc2NhbkNvbHVtblN0b3BJbmRleCA9IF90aGlzJF9nZXRIb3Jpem9udGFsUjJbMV0sXG4gICAgICAgICAgICAgIF92aXNpYmxlQ29sdW1uU3RhcnRJbmRleCA9IF90aGlzJF9nZXRIb3Jpem9udGFsUjJbMl0sXG4gICAgICAgICAgICAgIF92aXNpYmxlQ29sdW1uU3RvcEluZGV4ID0gX3RoaXMkX2dldEhvcml6b250YWxSMlszXTtcblxuICAgICAgICAgIHZhciBfdGhpcyRfZ2V0VmVydGljYWxSYW4yID0gdGhpcy5fZ2V0VmVydGljYWxSYW5nZVRvUmVuZGVyKCksXG4gICAgICAgICAgICAgIF9vdmVyc2NhblJvd1N0YXJ0SW5kZXggPSBfdGhpcyRfZ2V0VmVydGljYWxSYW4yWzBdLFxuICAgICAgICAgICAgICBfb3ZlcnNjYW5Sb3dTdG9wSW5kZXggPSBfdGhpcyRfZ2V0VmVydGljYWxSYW4yWzFdLFxuICAgICAgICAgICAgICBfdmlzaWJsZVJvd1N0YXJ0SW5kZXggPSBfdGhpcyRfZ2V0VmVydGljYWxSYW4yWzJdLFxuICAgICAgICAgICAgICBfdmlzaWJsZVJvd1N0b3BJbmRleCA9IF90aGlzJF9nZXRWZXJ0aWNhbFJhbjJbM107XG5cbiAgICAgICAgICB0aGlzLl9jYWxsT25JdGVtc1JlbmRlcmVkKF9vdmVyc2NhbkNvbHVtblN0YXJ0SW5kZXgsIF9vdmVyc2NhbkNvbHVtblN0b3BJbmRleCwgX292ZXJzY2FuUm93U3RhcnRJbmRleCwgX292ZXJzY2FuUm93U3RvcEluZGV4LCBfdmlzaWJsZUNvbHVtblN0YXJ0SW5kZXgsIF92aXNpYmxlQ29sdW1uU3RvcEluZGV4LCBfdmlzaWJsZVJvd1N0YXJ0SW5kZXgsIF92aXNpYmxlUm93U3RvcEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIG9uU2Nyb2xsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICAgICAgX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPSBfdGhpcyRzdGF0ZTMuaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbixcbiAgICAgICAgICAgIF9zY3JvbGxMZWZ0ID0gX3RoaXMkc3RhdGUzLnNjcm9sbExlZnQsXG4gICAgICAgICAgICBfc2Nyb2xsVG9wID0gX3RoaXMkc3RhdGUzLnNjcm9sbFRvcCxcbiAgICAgICAgICAgIF9zY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQgPSBfdGhpcyRzdGF0ZTMuc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkLFxuICAgICAgICAgICAgX3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID0gX3RoaXMkc3RhdGUzLnZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uO1xuXG4gICAgICAgIHRoaXMuX2NhbGxPblNjcm9sbChfc2Nyb2xsTGVmdCwgX3Njcm9sbFRvcCwgX2hvcml6b250YWxTY3JvbGxEaXJlY3Rpb24sIF92ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiwgX3Njcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZCk7XG4gICAgICB9XG4gICAgfSAvLyBMYXppbHkgY3JlYXRlIGFuZCBjYWNoZSBpdGVtIHN0eWxlcyB3aGlsZSBzY3JvbGxpbmcsXG4gICAgLy8gU28gdGhhdCBwdXJlIGNvbXBvbmVudCBzQ1Ugd2lsbCBwcmV2ZW50IHJlLXJlbmRlcnMuXG4gICAgLy8gV2UgbWFpbnRhaW4gdGhpcyBjYWNoZSwgYW5kIHBhc3MgYSBzdHlsZSBwcm9wIHJhdGhlciB0aGFuIGluZGV4LFxuICAgIC8vIFNvIHRoYXQgTGlzdCBjYW4gY2xlYXIgY2FjaGVkIHN0eWxlcyBhbmQgZm9yY2UgaXRlbSByZS1yZW5kZXIgaWYgbmVjZXNzYXJ5LlxuICAgIDtcblxuICAgIF9wcm90by5fZ2V0SG9yaXpvbnRhbFJhbmdlVG9SZW5kZXIgPSBmdW5jdGlvbiBfZ2V0SG9yaXpvbnRhbFJhbmdlVG9SZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjb2x1bW5Db3VudCA9IF90aGlzJHByb3BzNi5jb2x1bW5Db3VudCxcbiAgICAgICAgICBvdmVyc2NhbkNvbHVtbkNvdW50ID0gX3RoaXMkcHJvcHM2Lm92ZXJzY2FuQ29sdW1uQ291bnQsXG4gICAgICAgICAgb3ZlcnNjYW5Db2x1bW5zQ291bnQgPSBfdGhpcyRwcm9wczYub3ZlcnNjYW5Db2x1bW5zQ291bnQsXG4gICAgICAgICAgb3ZlcnNjYW5Db3VudCA9IF90aGlzJHByb3BzNi5vdmVyc2NhbkNvdW50LFxuICAgICAgICAgIHJvd0NvdW50ID0gX3RoaXMkcHJvcHM2LnJvd0NvdW50O1xuICAgICAgdmFyIF90aGlzJHN0YXRlNCA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9IF90aGlzJHN0YXRlNC5ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uLFxuICAgICAgICAgIGlzU2Nyb2xsaW5nID0gX3RoaXMkc3RhdGU0LmlzU2Nyb2xsaW5nLFxuICAgICAgICAgIHNjcm9sbExlZnQgPSBfdGhpcyRzdGF0ZTQuc2Nyb2xsTGVmdDtcbiAgICAgIHZhciBvdmVyc2NhbkNvdW50UmVzb2x2ZWQgPSBvdmVyc2NhbkNvbHVtbkNvdW50IHx8IG92ZXJzY2FuQ29sdW1uc0NvdW50IHx8IG92ZXJzY2FuQ291bnQgfHwgMTtcblxuICAgICAgaWYgKGNvbHVtbkNvdW50ID09PSAwIHx8IHJvd0NvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBbMCwgMCwgMCwgMF07XG4gICAgICB9XG5cbiAgICAgIHZhciBzdGFydEluZGV4ID0gZ2V0Q29sdW1uU3RhcnRJbmRleEZvck9mZnNldCh0aGlzLnByb3BzLCBzY3JvbGxMZWZ0LCB0aGlzLl9pbnN0YW5jZVByb3BzKTtcbiAgICAgIHZhciBzdG9wSW5kZXggPSBnZXRDb2x1bW5TdG9wSW5kZXhGb3JTdGFydEluZGV4KHRoaXMucHJvcHMsIHN0YXJ0SW5kZXgsIHNjcm9sbExlZnQsIHRoaXMuX2luc3RhbmNlUHJvcHMpOyAvLyBPdmVyc2NhbiBieSBvbmUgaXRlbSBpbiBlYWNoIGRpcmVjdGlvbiBzbyB0aGF0IHRhYi9mb2N1cyB3b3Jrcy5cbiAgICAgIC8vIElmIHRoZXJlIGlzbid0IGF0IGxlYXN0IG9uZSBleHRyYSBpdGVtLCB0YWIgbG9vcHMgYmFjayBhcm91bmQuXG5cbiAgICAgIHZhciBvdmVyc2NhbkJhY2t3YXJkID0gIWlzU2Nyb2xsaW5nIHx8IGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPT09ICdiYWNrd2FyZCcgPyBNYXRoLm1heCgxLCBvdmVyc2NhbkNvdW50UmVzb2x2ZWQpIDogMTtcbiAgICAgIHZhciBvdmVyc2NhbkZvcndhcmQgPSAhaXNTY3JvbGxpbmcgfHwgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9PT0gJ2ZvcndhcmQnID8gTWF0aC5tYXgoMSwgb3ZlcnNjYW5Db3VudFJlc29sdmVkKSA6IDE7XG4gICAgICByZXR1cm4gW01hdGgubWF4KDAsIHN0YXJ0SW5kZXggLSBvdmVyc2NhbkJhY2t3YXJkKSwgTWF0aC5tYXgoMCwgTWF0aC5taW4oY29sdW1uQ291bnQgLSAxLCBzdG9wSW5kZXggKyBvdmVyc2NhbkZvcndhcmQpKSwgc3RhcnRJbmRleCwgc3RvcEluZGV4XTtcbiAgICB9O1xuXG4gICAgX3Byb3RvLl9nZXRWZXJ0aWNhbFJhbmdlVG9SZW5kZXIgPSBmdW5jdGlvbiBfZ2V0VmVydGljYWxSYW5nZVRvUmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY29sdW1uQ291bnQgPSBfdGhpcyRwcm9wczcuY29sdW1uQ291bnQsXG4gICAgICAgICAgb3ZlcnNjYW5Db3VudCA9IF90aGlzJHByb3BzNy5vdmVyc2NhbkNvdW50LFxuICAgICAgICAgIG92ZXJzY2FuUm93Q291bnQgPSBfdGhpcyRwcm9wczcub3ZlcnNjYW5Sb3dDb3VudCxcbiAgICAgICAgICBvdmVyc2NhblJvd3NDb3VudCA9IF90aGlzJHByb3BzNy5vdmVyc2NhblJvd3NDb3VudCxcbiAgICAgICAgICByb3dDb3VudCA9IF90aGlzJHByb3BzNy5yb3dDb3VudDtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTUgPSB0aGlzLnN0YXRlLFxuICAgICAgICAgIGlzU2Nyb2xsaW5nID0gX3RoaXMkc3RhdGU1LmlzU2Nyb2xsaW5nLFxuICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID0gX3RoaXMkc3RhdGU1LnZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uLFxuICAgICAgICAgIHNjcm9sbFRvcCA9IF90aGlzJHN0YXRlNS5zY3JvbGxUb3A7XG4gICAgICB2YXIgb3ZlcnNjYW5Db3VudFJlc29sdmVkID0gb3ZlcnNjYW5Sb3dDb3VudCB8fCBvdmVyc2NhblJvd3NDb3VudCB8fCBvdmVyc2NhbkNvdW50IHx8IDE7XG5cbiAgICAgIGlmIChjb2x1bW5Db3VudCA9PT0gMCB8fCByb3dDb3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhcnRJbmRleCA9IGdldFJvd1N0YXJ0SW5kZXhGb3JPZmZzZXQodGhpcy5wcm9wcywgc2Nyb2xsVG9wLCB0aGlzLl9pbnN0YW5jZVByb3BzKTtcbiAgICAgIHZhciBzdG9wSW5kZXggPSBnZXRSb3dTdG9wSW5kZXhGb3JTdGFydEluZGV4KHRoaXMucHJvcHMsIHN0YXJ0SW5kZXgsIHNjcm9sbFRvcCwgdGhpcy5faW5zdGFuY2VQcm9wcyk7IC8vIE92ZXJzY2FuIGJ5IG9uZSBpdGVtIGluIGVhY2ggZGlyZWN0aW9uIHNvIHRoYXQgdGFiL2ZvY3VzIHdvcmtzLlxuICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgYXQgbGVhc3Qgb25lIGV4dHJhIGl0ZW0sIHRhYiBsb29wcyBiYWNrIGFyb3VuZC5cblxuICAgICAgdmFyIG92ZXJzY2FuQmFja3dhcmQgPSAhaXNTY3JvbGxpbmcgfHwgdmVydGljYWxTY3JvbGxEaXJlY3Rpb24gPT09ICdiYWNrd2FyZCcgPyBNYXRoLm1heCgxLCBvdmVyc2NhbkNvdW50UmVzb2x2ZWQpIDogMTtcbiAgICAgIHZhciBvdmVyc2NhbkZvcndhcmQgPSAhaXNTY3JvbGxpbmcgfHwgdmVydGljYWxTY3JvbGxEaXJlY3Rpb24gPT09ICdmb3J3YXJkJyA/IE1hdGgubWF4KDEsIG92ZXJzY2FuQ291bnRSZXNvbHZlZCkgOiAxO1xuICAgICAgcmV0dXJuIFtNYXRoLm1heCgwLCBzdGFydEluZGV4IC0gb3ZlcnNjYW5CYWNrd2FyZCksIE1hdGgubWF4KDAsIE1hdGgubWluKHJvd0NvdW50IC0gMSwgc3RvcEluZGV4ICsgb3ZlcnNjYW5Gb3J3YXJkKSksIHN0YXJ0SW5kZXgsIHN0b3BJbmRleF07XG4gICAgfTtcblxuICAgIHJldHVybiBHcmlkO1xuICB9KFB1cmVDb21wb25lbnQpLCBfY2xhc3MuZGVmYXVsdFByb3BzID0ge1xuICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgaXRlbURhdGE6IHVuZGVmaW5lZCxcbiAgICB1c2VJc1Njcm9sbGluZzogZmFsc2VcbiAgfSwgX2NsYXNzO1xufVxuXG52YXIgdmFsaWRhdGVTaGFyZWRQcm9wcyA9IGZ1bmN0aW9uIHZhbGlkYXRlU2hhcmVkUHJvcHMoX3JlZjUsIF9yZWY2KSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWY1LmNoaWxkcmVuLFxuICAgICAgZGlyZWN0aW9uID0gX3JlZjUuZGlyZWN0aW9uLFxuICAgICAgaGVpZ2h0ID0gX3JlZjUuaGVpZ2h0LFxuICAgICAgaW5uZXJUYWdOYW1lID0gX3JlZjUuaW5uZXJUYWdOYW1lLFxuICAgICAgb3V0ZXJUYWdOYW1lID0gX3JlZjUub3V0ZXJUYWdOYW1lLFxuICAgICAgb3ZlcnNjYW5Db2x1bW5zQ291bnQgPSBfcmVmNS5vdmVyc2NhbkNvbHVtbnNDb3VudCxcbiAgICAgIG92ZXJzY2FuQ291bnQgPSBfcmVmNS5vdmVyc2NhbkNvdW50LFxuICAgICAgb3ZlcnNjYW5Sb3dzQ291bnQgPSBfcmVmNS5vdmVyc2NhblJvd3NDb3VudCxcbiAgICAgIHdpZHRoID0gX3JlZjUud2lkdGg7XG4gIHZhciBpbnN0YW5jZSA9IF9yZWY2Lmluc3RhbmNlO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBvdmVyc2NhbkNvdW50ID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKGRldldhcm5pbmdzT3ZlcnNjYW5Db3VudCAmJiAhZGV2V2FybmluZ3NPdmVyc2NhbkNvdW50LmhhcyhpbnN0YW5jZSkpIHtcbiAgICAgICAgZGV2V2FybmluZ3NPdmVyc2NhbkNvdW50LmFkZChpbnN0YW5jZSk7XG4gICAgICAgIGNvbnNvbGUud2FybignVGhlIG92ZXJzY2FuQ291bnQgcHJvcCBoYXMgYmVlbiBkZXByZWNhdGVkLiAnICsgJ1BsZWFzZSB1c2UgdGhlIG92ZXJzY2FuQ29sdW1uQ291bnQgYW5kIG92ZXJzY2FuUm93Q291bnQgcHJvcHMgaW5zdGVhZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG92ZXJzY2FuQ29sdW1uc0NvdW50ID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb3ZlcnNjYW5Sb3dzQ291bnQgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAoZGV2V2FybmluZ3NPdmVyc2NhblJvd3NDb2x1bW5zQ291bnQgJiYgIWRldldhcm5pbmdzT3ZlcnNjYW5Sb3dzQ29sdW1uc0NvdW50LmhhcyhpbnN0YW5jZSkpIHtcbiAgICAgICAgZGV2V2FybmluZ3NPdmVyc2NhblJvd3NDb2x1bW5zQ291bnQuYWRkKGluc3RhbmNlKTtcbiAgICAgICAgY29uc29sZS53YXJuKCdUaGUgb3ZlcnNjYW5Db2x1bW5zQ291bnQgYW5kIG92ZXJzY2FuUm93c0NvdW50IHByb3BzIGhhdmUgYmVlbiBkZXByZWNhdGVkLiAnICsgJ1BsZWFzZSB1c2UgdGhlIG92ZXJzY2FuQ29sdW1uQ291bnQgYW5kIG92ZXJzY2FuUm93Q291bnQgcHJvcHMgaW5zdGVhZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5uZXJUYWdOYW1lICE9IG51bGwgfHwgb3V0ZXJUYWdOYW1lICE9IG51bGwpIHtcbiAgICAgIGlmIChkZXZXYXJuaW5nc1RhZ05hbWUgJiYgIWRldldhcm5pbmdzVGFnTmFtZS5oYXMoaW5zdGFuY2UpKSB7XG4gICAgICAgIGRldldhcm5pbmdzVGFnTmFtZS5hZGQoaW5zdGFuY2UpO1xuICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBpbm5lclRhZ05hbWUgYW5kIG91dGVyVGFnTmFtZSBwcm9wcyBoYXZlIGJlZW4gZGVwcmVjYXRlZC4gJyArICdQbGVhc2UgdXNlIHRoZSBpbm5lckVsZW1lbnRUeXBlIGFuZCBvdXRlckVsZW1lbnRUeXBlIHByb3BzIGluc3RlYWQuJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICAgIHRocm93IEVycm9yKCdBbiBpbnZhbGlkIFwiY2hpbGRyZW5cIiBwcm9wIGhhcyBiZWVuIHNwZWNpZmllZC4gJyArICdWYWx1ZSBzaG91bGQgYmUgYSBSZWFjdCBjb21wb25lbnQuICcgKyAoXCJcXFwiXCIgKyAoY2hpbGRyZW4gPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgY2hpbGRyZW4pICsgXCJcXFwiIHdhcyBzcGVjaWZpZWQuXCIpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgY2FzZSAnbHRyJzpcbiAgICAgIGNhc2UgJ3J0bCc6XG4gICAgICAgIC8vIFZhbGlkIHZhbHVlc1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0FuIGludmFsaWQgXCJkaXJlY3Rpb25cIiBwcm9wIGhhcyBiZWVuIHNwZWNpZmllZC4gJyArICdWYWx1ZSBzaG91bGQgYmUgZWl0aGVyIFwibHRyXCIgb3IgXCJydGxcIi4gJyArIChcIlxcXCJcIiArIGRpcmVjdGlvbiArIFwiXFxcIiB3YXMgc3BlY2lmaWVkLlwiKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB3aWR0aCAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IEVycm9yKCdBbiBpbnZhbGlkIFwid2lkdGhcIiBwcm9wIGhhcyBiZWVuIHNwZWNpZmllZC4gJyArICdHcmlkcyBtdXN0IHNwZWNpZnkgYSBudW1iZXIgZm9yIHdpZHRoLiAnICsgKFwiXFxcIlwiICsgKHdpZHRoID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHdpZHRoKSArIFwiXFxcIiB3YXMgc3BlY2lmaWVkLlwiKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBoZWlnaHQgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBFcnJvcignQW4gaW52YWxpZCBcImhlaWdodFwiIHByb3AgaGFzIGJlZW4gc3BlY2lmaWVkLiAnICsgJ0dyaWRzIG11c3Qgc3BlY2lmeSBhIG51bWJlciBmb3IgaGVpZ2h0LiAnICsgKFwiXFxcIlwiICsgKGhlaWdodCA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBoZWlnaHQpICsgXCJcXFwiIHdhcyBzcGVjaWZpZWQuXCIpKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBERUZBVUxUX0VTVElNQVRFRF9JVEVNX1NJWkUgPSA1MDtcblxudmFyIGdldEVzdGltYXRlZFRvdGFsSGVpZ2h0ID0gZnVuY3Rpb24gZ2V0RXN0aW1hdGVkVG90YWxIZWlnaHQoX3JlZiwgX3JlZjIpIHtcbiAgdmFyIHJvd0NvdW50ID0gX3JlZi5yb3dDb3VudDtcbiAgdmFyIHJvd01ldGFkYXRhTWFwID0gX3JlZjIucm93TWV0YWRhdGFNYXAsXG4gICAgICBlc3RpbWF0ZWRSb3dIZWlnaHQgPSBfcmVmMi5lc3RpbWF0ZWRSb3dIZWlnaHQsXG4gICAgICBsYXN0TWVhc3VyZWRSb3dJbmRleCA9IF9yZWYyLmxhc3RNZWFzdXJlZFJvd0luZGV4O1xuICB2YXIgdG90YWxTaXplT2ZNZWFzdXJlZFJvd3MgPSAwOyAvLyBFZGdlIGNhc2UgY2hlY2sgZm9yIHdoZW4gdGhlIG51bWJlciBvZiBpdGVtcyBkZWNyZWFzZXMgd2hpbGUgYSBzY3JvbGwgaXMgaW4gcHJvZ3Jlc3MuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9idmF1Z2huL3JlYWN0LXdpbmRvdy9wdWxsLzEzOFxuXG4gIGlmIChsYXN0TWVhc3VyZWRSb3dJbmRleCA+PSByb3dDb3VudCkge1xuICAgIGxhc3RNZWFzdXJlZFJvd0luZGV4ID0gcm93Q291bnQgLSAxO1xuICB9XG5cbiAgaWYgKGxhc3RNZWFzdXJlZFJvd0luZGV4ID49IDApIHtcbiAgICB2YXIgaXRlbU1ldGFkYXRhID0gcm93TWV0YWRhdGFNYXBbbGFzdE1lYXN1cmVkUm93SW5kZXhdO1xuICAgIHRvdGFsU2l6ZU9mTWVhc3VyZWRSb3dzID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICB9XG5cbiAgdmFyIG51bVVubWVhc3VyZWRJdGVtcyA9IHJvd0NvdW50IC0gbGFzdE1lYXN1cmVkUm93SW5kZXggLSAxO1xuICB2YXIgdG90YWxTaXplT2ZVbm1lYXN1cmVkSXRlbXMgPSBudW1Vbm1lYXN1cmVkSXRlbXMgKiBlc3RpbWF0ZWRSb3dIZWlnaHQ7XG4gIHJldHVybiB0b3RhbFNpemVPZk1lYXN1cmVkUm93cyArIHRvdGFsU2l6ZU9mVW5tZWFzdXJlZEl0ZW1zO1xufTtcblxudmFyIGdldEVzdGltYXRlZFRvdGFsV2lkdGggPSBmdW5jdGlvbiBnZXRFc3RpbWF0ZWRUb3RhbFdpZHRoKF9yZWYzLCBfcmVmNCkge1xuICB2YXIgY29sdW1uQ291bnQgPSBfcmVmMy5jb2x1bW5Db3VudDtcbiAgdmFyIGNvbHVtbk1ldGFkYXRhTWFwID0gX3JlZjQuY29sdW1uTWV0YWRhdGFNYXAsXG4gICAgICBlc3RpbWF0ZWRDb2x1bW5XaWR0aCA9IF9yZWY0LmVzdGltYXRlZENvbHVtbldpZHRoLFxuICAgICAgbGFzdE1lYXN1cmVkQ29sdW1uSW5kZXggPSBfcmVmNC5sYXN0TWVhc3VyZWRDb2x1bW5JbmRleDtcbiAgdmFyIHRvdGFsU2l6ZU9mTWVhc3VyZWRSb3dzID0gMDsgLy8gRWRnZSBjYXNlIGNoZWNrIGZvciB3aGVuIHRoZSBudW1iZXIgb2YgaXRlbXMgZGVjcmVhc2VzIHdoaWxlIGEgc2Nyb2xsIGlzIGluIHByb2dyZXNzLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYnZhdWdobi9yZWFjdC13aW5kb3cvcHVsbC8xMzhcblxuICBpZiAobGFzdE1lYXN1cmVkQ29sdW1uSW5kZXggPj0gY29sdW1uQ291bnQpIHtcbiAgICBsYXN0TWVhc3VyZWRDb2x1bW5JbmRleCA9IGNvbHVtbkNvdW50IC0gMTtcbiAgfVxuXG4gIGlmIChsYXN0TWVhc3VyZWRDb2x1bW5JbmRleCA+PSAwKSB7XG4gICAgdmFyIGl0ZW1NZXRhZGF0YSA9IGNvbHVtbk1ldGFkYXRhTWFwW2xhc3RNZWFzdXJlZENvbHVtbkluZGV4XTtcbiAgICB0b3RhbFNpemVPZk1lYXN1cmVkUm93cyA9IGl0ZW1NZXRhZGF0YS5vZmZzZXQgKyBpdGVtTWV0YWRhdGEuc2l6ZTtcbiAgfVxuXG4gIHZhciBudW1Vbm1lYXN1cmVkSXRlbXMgPSBjb2x1bW5Db3VudCAtIGxhc3RNZWFzdXJlZENvbHVtbkluZGV4IC0gMTtcbiAgdmFyIHRvdGFsU2l6ZU9mVW5tZWFzdXJlZEl0ZW1zID0gbnVtVW5tZWFzdXJlZEl0ZW1zICogZXN0aW1hdGVkQ29sdW1uV2lkdGg7XG4gIHJldHVybiB0b3RhbFNpemVPZk1lYXN1cmVkUm93cyArIHRvdGFsU2l6ZU9mVW5tZWFzdXJlZEl0ZW1zO1xufTtcblxudmFyIGdldEl0ZW1NZXRhZGF0YSA9IGZ1bmN0aW9uIGdldEl0ZW1NZXRhZGF0YShpdGVtVHlwZSwgcHJvcHMsIGluZGV4LCBpbnN0YW5jZVByb3BzKSB7XG4gIHZhciBpdGVtTWV0YWRhdGFNYXAsIGl0ZW1TaXplLCBsYXN0TWVhc3VyZWRJbmRleDtcblxuICBpZiAoaXRlbVR5cGUgPT09ICdjb2x1bW4nKSB7XG4gICAgaXRlbU1ldGFkYXRhTWFwID0gaW5zdGFuY2VQcm9wcy5jb2x1bW5NZXRhZGF0YU1hcDtcbiAgICBpdGVtU2l6ZSA9IHByb3BzLmNvbHVtbldpZHRoO1xuICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gaW5zdGFuY2VQcm9wcy5sYXN0TWVhc3VyZWRDb2x1bW5JbmRleDtcbiAgfSBlbHNlIHtcbiAgICBpdGVtTWV0YWRhdGFNYXAgPSBpbnN0YW5jZVByb3BzLnJvd01ldGFkYXRhTWFwO1xuICAgIGl0ZW1TaXplID0gcHJvcHMucm93SGVpZ2h0O1xuICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gaW5zdGFuY2VQcm9wcy5sYXN0TWVhc3VyZWRSb3dJbmRleDtcbiAgfVxuXG4gIGlmIChpbmRleCA+IGxhc3RNZWFzdXJlZEluZGV4KSB7XG4gICAgdmFyIG9mZnNldCA9IDA7XG5cbiAgICBpZiAobGFzdE1lYXN1cmVkSW5kZXggPj0gMCkge1xuICAgICAgdmFyIGl0ZW1NZXRhZGF0YSA9IGl0ZW1NZXRhZGF0YU1hcFtsYXN0TWVhc3VyZWRJbmRleF07XG4gICAgICBvZmZzZXQgPSBpdGVtTWV0YWRhdGEub2Zmc2V0ICsgaXRlbU1ldGFkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IGxhc3RNZWFzdXJlZEluZGV4ICsgMTsgaSA8PSBpbmRleDsgaSsrKSB7XG4gICAgICB2YXIgc2l6ZSA9IGl0ZW1TaXplKGkpO1xuICAgICAgaXRlbU1ldGFkYXRhTWFwW2ldID0ge1xuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgc2l6ZTogc2l6ZVxuICAgICAgfTtcbiAgICAgIG9mZnNldCArPSBzaXplO1xuICAgIH1cblxuICAgIGlmIChpdGVtVHlwZSA9PT0gJ2NvbHVtbicpIHtcbiAgICAgIGluc3RhbmNlUHJvcHMubGFzdE1lYXN1cmVkQ29sdW1uSW5kZXggPSBpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2VQcm9wcy5sYXN0TWVhc3VyZWRSb3dJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVtTWV0YWRhdGFNYXBbaW5kZXhdO1xufTtcblxudmFyIGZpbmROZWFyZXN0SXRlbSA9IGZ1bmN0aW9uIGZpbmROZWFyZXN0SXRlbShpdGVtVHlwZSwgcHJvcHMsIGluc3RhbmNlUHJvcHMsIG9mZnNldCkge1xuICB2YXIgaXRlbU1ldGFkYXRhTWFwLCBsYXN0TWVhc3VyZWRJbmRleDtcblxuICBpZiAoaXRlbVR5cGUgPT09ICdjb2x1bW4nKSB7XG4gICAgaXRlbU1ldGFkYXRhTWFwID0gaW5zdGFuY2VQcm9wcy5jb2x1bW5NZXRhZGF0YU1hcDtcbiAgICBsYXN0TWVhc3VyZWRJbmRleCA9IGluc3RhbmNlUHJvcHMubGFzdE1lYXN1cmVkQ29sdW1uSW5kZXg7XG4gIH0gZWxzZSB7XG4gICAgaXRlbU1ldGFkYXRhTWFwID0gaW5zdGFuY2VQcm9wcy5yb3dNZXRhZGF0YU1hcDtcbiAgICBsYXN0TWVhc3VyZWRJbmRleCA9IGluc3RhbmNlUHJvcHMubGFzdE1lYXN1cmVkUm93SW5kZXg7XG4gIH1cblxuICB2YXIgbGFzdE1lYXN1cmVkSXRlbU9mZnNldCA9IGxhc3RNZWFzdXJlZEluZGV4ID4gMCA/IGl0ZW1NZXRhZGF0YU1hcFtsYXN0TWVhc3VyZWRJbmRleF0ub2Zmc2V0IDogMDtcblxuICBpZiAobGFzdE1lYXN1cmVkSXRlbU9mZnNldCA+PSBvZmZzZXQpIHtcbiAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IG1lYXN1cmVkIGl0ZW1zIHdpdGhpbiB0aGlzIHJhbmdlIGp1c3QgdXNlIGEgYmluYXJ5IHNlYXJjaCBhcyBpdCdzIGZhc3Rlci5cbiAgICByZXR1cm4gZmluZE5lYXJlc3RJdGVtQmluYXJ5U2VhcmNoKGl0ZW1UeXBlLCBwcm9wcywgaW5zdGFuY2VQcm9wcywgbGFzdE1lYXN1cmVkSW5kZXgsIDAsIG9mZnNldCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gSWYgd2UgaGF2ZW4ndCB5ZXQgbWVhc3VyZWQgdGhpcyBoaWdoLCBmYWxsYmFjayB0byBhbiBleHBvbmVudGlhbCBzZWFyY2ggd2l0aCBhbiBpbm5lciBiaW5hcnkgc2VhcmNoLlxuICAgIC8vIFRoZSBleHBvbmVudGlhbCBzZWFyY2ggYXZvaWRzIHByZS1jb21wdXRpbmcgc2l6ZXMgZm9yIHRoZSBmdWxsIHNldCBvZiBpdGVtcyBhcyBhIGJpbmFyeSBzZWFyY2ggd291bGQuXG4gICAgLy8gVGhlIG92ZXJhbGwgY29tcGxleGl0eSBmb3IgdGhpcyBhcHByb2FjaCBpcyBPKGxvZyBuKS5cbiAgICByZXR1cm4gZmluZE5lYXJlc3RJdGVtRXhwb25lbnRpYWxTZWFyY2goaXRlbVR5cGUsIHByb3BzLCBpbnN0YW5jZVByb3BzLCBNYXRoLm1heCgwLCBsYXN0TWVhc3VyZWRJbmRleCksIG9mZnNldCk7XG4gIH1cbn07XG5cbnZhciBmaW5kTmVhcmVzdEl0ZW1CaW5hcnlTZWFyY2ggPSBmdW5jdGlvbiBmaW5kTmVhcmVzdEl0ZW1CaW5hcnlTZWFyY2goaXRlbVR5cGUsIHByb3BzLCBpbnN0YW5jZVByb3BzLCBoaWdoLCBsb3csIG9mZnNldCkge1xuICB3aGlsZSAobG93IDw9IGhpZ2gpIHtcbiAgICB2YXIgbWlkZGxlID0gbG93ICsgTWF0aC5mbG9vcigoaGlnaCAtIGxvdykgLyAyKTtcbiAgICB2YXIgY3VycmVudE9mZnNldCA9IGdldEl0ZW1NZXRhZGF0YShpdGVtVHlwZSwgcHJvcHMsIG1pZGRsZSwgaW5zdGFuY2VQcm9wcykub2Zmc2V0O1xuXG4gICAgaWYgKGN1cnJlbnRPZmZzZXQgPT09IG9mZnNldCkge1xuICAgICAgcmV0dXJuIG1pZGRsZTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRPZmZzZXQgPCBvZmZzZXQpIHtcbiAgICAgIGxvdyA9IG1pZGRsZSArIDE7XG4gICAgfSBlbHNlIGlmIChjdXJyZW50T2Zmc2V0ID4gb2Zmc2V0KSB7XG4gICAgICBoaWdoID0gbWlkZGxlIC0gMTtcbiAgICB9XG4gIH1cblxuICBpZiAobG93ID4gMCkge1xuICAgIHJldHVybiBsb3cgLSAxO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59O1xuXG52YXIgZmluZE5lYXJlc3RJdGVtRXhwb25lbnRpYWxTZWFyY2ggPSBmdW5jdGlvbiBmaW5kTmVhcmVzdEl0ZW1FeHBvbmVudGlhbFNlYXJjaChpdGVtVHlwZSwgcHJvcHMsIGluc3RhbmNlUHJvcHMsIGluZGV4LCBvZmZzZXQpIHtcbiAgdmFyIGl0ZW1Db3VudCA9IGl0ZW1UeXBlID09PSAnY29sdW1uJyA/IHByb3BzLmNvbHVtbkNvdW50IDogcHJvcHMucm93Q291bnQ7XG4gIHZhciBpbnRlcnZhbCA9IDE7XG5cbiAgd2hpbGUgKGluZGV4IDwgaXRlbUNvdW50ICYmIGdldEl0ZW1NZXRhZGF0YShpdGVtVHlwZSwgcHJvcHMsIGluZGV4LCBpbnN0YW5jZVByb3BzKS5vZmZzZXQgPCBvZmZzZXQpIHtcbiAgICBpbmRleCArPSBpbnRlcnZhbDtcbiAgICBpbnRlcnZhbCAqPSAyO1xuICB9XG5cbiAgcmV0dXJuIGZpbmROZWFyZXN0SXRlbUJpbmFyeVNlYXJjaChpdGVtVHlwZSwgcHJvcHMsIGluc3RhbmNlUHJvcHMsIE1hdGgubWluKGluZGV4LCBpdGVtQ291bnQgLSAxKSwgTWF0aC5mbG9vcihpbmRleCAvIDIpLCBvZmZzZXQpO1xufTtcblxudmFyIGdldE9mZnNldEZvckluZGV4QW5kQWxpZ25tZW50ID0gZnVuY3Rpb24gZ2V0T2Zmc2V0Rm9ySW5kZXhBbmRBbGlnbm1lbnQoaXRlbVR5cGUsIHByb3BzLCBpbmRleCwgYWxpZ24sIHNjcm9sbE9mZnNldCwgaW5zdGFuY2VQcm9wcywgc2Nyb2xsYmFyU2l6ZSkge1xuICB2YXIgc2l6ZSA9IGl0ZW1UeXBlID09PSAnY29sdW1uJyA/IHByb3BzLndpZHRoIDogcHJvcHMuaGVpZ2h0O1xuICB2YXIgaXRlbU1ldGFkYXRhID0gZ2V0SXRlbU1ldGFkYXRhKGl0ZW1UeXBlLCBwcm9wcywgaW5kZXgsIGluc3RhbmNlUHJvcHMpOyAvLyBHZXQgZXN0aW1hdGVkIHRvdGFsIHNpemUgYWZ0ZXIgSXRlbU1ldGFkYXRhIGlzIGNvbXB1dGVkLFxuICAvLyBUbyBlbnN1cmUgaXQgcmVmbGVjdHMgYWN0dWFsIG1lYXN1cmVtZW50cyBpbnN0ZWFkIG9mIGp1c3QgZXN0aW1hdGVzLlxuXG4gIHZhciBlc3RpbWF0ZWRUb3RhbFNpemUgPSBpdGVtVHlwZSA9PT0gJ2NvbHVtbicgPyBnZXRFc3RpbWF0ZWRUb3RhbFdpZHRoKHByb3BzLCBpbnN0YW5jZVByb3BzKSA6IGdldEVzdGltYXRlZFRvdGFsSGVpZ2h0KHByb3BzLCBpbnN0YW5jZVByb3BzKTtcbiAgdmFyIG1heE9mZnNldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGVzdGltYXRlZFRvdGFsU2l6ZSAtIHNpemUsIGl0ZW1NZXRhZGF0YS5vZmZzZXQpKTtcbiAgdmFyIG1pbk9mZnNldCA9IE1hdGgubWF4KDAsIGl0ZW1NZXRhZGF0YS5vZmZzZXQgLSBzaXplICsgc2Nyb2xsYmFyU2l6ZSArIGl0ZW1NZXRhZGF0YS5zaXplKTtcblxuICBpZiAoYWxpZ24gPT09ICdzbWFydCcpIHtcbiAgICBpZiAoc2Nyb2xsT2Zmc2V0ID49IG1pbk9mZnNldCAtIHNpemUgJiYgc2Nyb2xsT2Zmc2V0IDw9IG1heE9mZnNldCArIHNpemUpIHtcbiAgICAgIGFsaWduID0gJ2F1dG8nO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbiA9ICdjZW50ZXInO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAoYWxpZ24pIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICByZXR1cm4gbWF4T2Zmc2V0O1xuXG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIHJldHVybiBtaW5PZmZzZXQ7XG5cbiAgICBjYXNlICdjZW50ZXInOlxuICAgICAgcmV0dXJuIE1hdGgucm91bmQobWluT2Zmc2V0ICsgKG1heE9mZnNldCAtIG1pbk9mZnNldCkgLyAyKTtcblxuICAgIGNhc2UgJ2F1dG8nOlxuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAoc2Nyb2xsT2Zmc2V0ID49IG1pbk9mZnNldCAmJiBzY3JvbGxPZmZzZXQgPD0gbWF4T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBzY3JvbGxPZmZzZXQ7XG4gICAgICB9IGVsc2UgaWYgKG1pbk9mZnNldCA+IG1heE9mZnNldCkge1xuICAgICAgICAvLyBCZWNhdXNlIHdlIG9ubHkgdGFrZSBpbnRvIGFjY291bnQgdGhlIHNjcm9sbGJhciBzaXplIHdoZW4gY2FsY3VsYXRpbmcgbWluT2Zmc2V0XG4gICAgICAgIC8vIHRoaXMgdmFsdWUgY2FuIGJlIGxhcmdlciB0aGFuIG1heE9mZnNldCB3aGVuIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3RcbiAgICAgICAgcmV0dXJuIG1pbk9mZnNldDtcbiAgICAgIH0gZWxzZSBpZiAoc2Nyb2xsT2Zmc2V0IDwgbWluT2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiBtaW5PZmZzZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbWF4T2Zmc2V0O1xuICAgICAgfVxuXG4gIH1cbn07XG5cbnZhciBWYXJpYWJsZVNpemVHcmlkID0gLyojX19QVVJFX18qL2NyZWF0ZUdyaWRDb21wb25lbnQoe1xuICBnZXRDb2x1bW5PZmZzZXQ6IGZ1bmN0aW9uIGdldENvbHVtbk9mZnNldChwcm9wcywgaW5kZXgsIGluc3RhbmNlUHJvcHMpIHtcbiAgICByZXR1cm4gZ2V0SXRlbU1ldGFkYXRhKCdjb2x1bW4nLCBwcm9wcywgaW5kZXgsIGluc3RhbmNlUHJvcHMpLm9mZnNldDtcbiAgfSxcbiAgZ2V0Q29sdW1uU3RhcnRJbmRleEZvck9mZnNldDogZnVuY3Rpb24gZ2V0Q29sdW1uU3RhcnRJbmRleEZvck9mZnNldChwcm9wcywgc2Nyb2xsTGVmdCwgaW5zdGFuY2VQcm9wcykge1xuICAgIHJldHVybiBmaW5kTmVhcmVzdEl0ZW0oJ2NvbHVtbicsIHByb3BzLCBpbnN0YW5jZVByb3BzLCBzY3JvbGxMZWZ0KTtcbiAgfSxcbiAgZ2V0Q29sdW1uU3RvcEluZGV4Rm9yU3RhcnRJbmRleDogZnVuY3Rpb24gZ2V0Q29sdW1uU3RvcEluZGV4Rm9yU3RhcnRJbmRleChwcm9wcywgc3RhcnRJbmRleCwgc2Nyb2xsTGVmdCwgaW5zdGFuY2VQcm9wcykge1xuICAgIHZhciBjb2x1bW5Db3VudCA9IHByb3BzLmNvbHVtbkNvdW50LFxuICAgICAgICB3aWR0aCA9IHByb3BzLndpZHRoO1xuICAgIHZhciBpdGVtTWV0YWRhdGEgPSBnZXRJdGVtTWV0YWRhdGEoJ2NvbHVtbicsIHByb3BzLCBzdGFydEluZGV4LCBpbnN0YW5jZVByb3BzKTtcbiAgICB2YXIgbWF4T2Zmc2V0ID0gc2Nyb2xsTGVmdCArIHdpZHRoO1xuICAgIHZhciBvZmZzZXQgPSBpdGVtTWV0YWRhdGEub2Zmc2V0ICsgaXRlbU1ldGFkYXRhLnNpemU7XG4gICAgdmFyIHN0b3BJbmRleCA9IHN0YXJ0SW5kZXg7XG5cbiAgICB3aGlsZSAoc3RvcEluZGV4IDwgY29sdW1uQ291bnQgLSAxICYmIG9mZnNldCA8IG1heE9mZnNldCkge1xuICAgICAgc3RvcEluZGV4Kys7XG4gICAgICBvZmZzZXQgKz0gZ2V0SXRlbU1ldGFkYXRhKCdjb2x1bW4nLCBwcm9wcywgc3RvcEluZGV4LCBpbnN0YW5jZVByb3BzKS5zaXplO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9wSW5kZXg7XG4gIH0sXG4gIGdldENvbHVtbldpZHRoOiBmdW5jdGlvbiBnZXRDb2x1bW5XaWR0aChwcm9wcywgaW5kZXgsIGluc3RhbmNlUHJvcHMpIHtcbiAgICByZXR1cm4gaW5zdGFuY2VQcm9wcy5jb2x1bW5NZXRhZGF0YU1hcFtpbmRleF0uc2l6ZTtcbiAgfSxcbiAgZ2V0RXN0aW1hdGVkVG90YWxIZWlnaHQ6IGdldEVzdGltYXRlZFRvdGFsSGVpZ2h0LFxuICBnZXRFc3RpbWF0ZWRUb3RhbFdpZHRoOiBnZXRFc3RpbWF0ZWRUb3RhbFdpZHRoLFxuICBnZXRPZmZzZXRGb3JDb2x1bW5BbmRBbGlnbm1lbnQ6IGZ1bmN0aW9uIGdldE9mZnNldEZvckNvbHVtbkFuZEFsaWdubWVudChwcm9wcywgaW5kZXgsIGFsaWduLCBzY3JvbGxPZmZzZXQsIGluc3RhbmNlUHJvcHMsIHNjcm9sbGJhclNpemUpIHtcbiAgICByZXR1cm4gZ2V0T2Zmc2V0Rm9ySW5kZXhBbmRBbGlnbm1lbnQoJ2NvbHVtbicsIHByb3BzLCBpbmRleCwgYWxpZ24sIHNjcm9sbE9mZnNldCwgaW5zdGFuY2VQcm9wcywgc2Nyb2xsYmFyU2l6ZSk7XG4gIH0sXG4gIGdldE9mZnNldEZvclJvd0FuZEFsaWdubWVudDogZnVuY3Rpb24gZ2V0T2Zmc2V0Rm9yUm93QW5kQWxpZ25tZW50KHByb3BzLCBpbmRleCwgYWxpZ24sIHNjcm9sbE9mZnNldCwgaW5zdGFuY2VQcm9wcywgc2Nyb2xsYmFyU2l6ZSkge1xuICAgIHJldHVybiBnZXRPZmZzZXRGb3JJbmRleEFuZEFsaWdubWVudCgncm93JywgcHJvcHMsIGluZGV4LCBhbGlnbiwgc2Nyb2xsT2Zmc2V0LCBpbnN0YW5jZVByb3BzLCBzY3JvbGxiYXJTaXplKTtcbiAgfSxcbiAgZ2V0Um93T2Zmc2V0OiBmdW5jdGlvbiBnZXRSb3dPZmZzZXQocHJvcHMsIGluZGV4LCBpbnN0YW5jZVByb3BzKSB7XG4gICAgcmV0dXJuIGdldEl0ZW1NZXRhZGF0YSgncm93JywgcHJvcHMsIGluZGV4LCBpbnN0YW5jZVByb3BzKS5vZmZzZXQ7XG4gIH0sXG4gIGdldFJvd0hlaWdodDogZnVuY3Rpb24gZ2V0Um93SGVpZ2h0KHByb3BzLCBpbmRleCwgaW5zdGFuY2VQcm9wcykge1xuICAgIHJldHVybiBpbnN0YW5jZVByb3BzLnJvd01ldGFkYXRhTWFwW2luZGV4XS5zaXplO1xuICB9LFxuICBnZXRSb3dTdGFydEluZGV4Rm9yT2Zmc2V0OiBmdW5jdGlvbiBnZXRSb3dTdGFydEluZGV4Rm9yT2Zmc2V0KHByb3BzLCBzY3JvbGxUb3AsIGluc3RhbmNlUHJvcHMpIHtcbiAgICByZXR1cm4gZmluZE5lYXJlc3RJdGVtKCdyb3cnLCBwcm9wcywgaW5zdGFuY2VQcm9wcywgc2Nyb2xsVG9wKTtcbiAgfSxcbiAgZ2V0Um93U3RvcEluZGV4Rm9yU3RhcnRJbmRleDogZnVuY3Rpb24gZ2V0Um93U3RvcEluZGV4Rm9yU3RhcnRJbmRleChwcm9wcywgc3RhcnRJbmRleCwgc2Nyb2xsVG9wLCBpbnN0YW5jZVByb3BzKSB7XG4gICAgdmFyIHJvd0NvdW50ID0gcHJvcHMucm93Q291bnQsXG4gICAgICAgIGhlaWdodCA9IHByb3BzLmhlaWdodDtcbiAgICB2YXIgaXRlbU1ldGFkYXRhID0gZ2V0SXRlbU1ldGFkYXRhKCdyb3cnLCBwcm9wcywgc3RhcnRJbmRleCwgaW5zdGFuY2VQcm9wcyk7XG4gICAgdmFyIG1heE9mZnNldCA9IHNjcm9sbFRvcCArIGhlaWdodDtcbiAgICB2YXIgb2Zmc2V0ID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICAgIHZhciBzdG9wSW5kZXggPSBzdGFydEluZGV4O1xuXG4gICAgd2hpbGUgKHN0b3BJbmRleCA8IHJvd0NvdW50IC0gMSAmJiBvZmZzZXQgPCBtYXhPZmZzZXQpIHtcbiAgICAgIHN0b3BJbmRleCsrO1xuICAgICAgb2Zmc2V0ICs9IGdldEl0ZW1NZXRhZGF0YSgncm93JywgcHJvcHMsIHN0b3BJbmRleCwgaW5zdGFuY2VQcm9wcykuc2l6ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcEluZGV4O1xuICB9LFxuICBpbml0SW5zdGFuY2VQcm9wczogZnVuY3Rpb24gaW5pdEluc3RhbmNlUHJvcHMocHJvcHMsIGluc3RhbmNlKSB7XG4gICAgdmFyIF9yZWY1ID0gcHJvcHMsXG4gICAgICAgIGVzdGltYXRlZENvbHVtbldpZHRoID0gX3JlZjUuZXN0aW1hdGVkQ29sdW1uV2lkdGgsXG4gICAgICAgIGVzdGltYXRlZFJvd0hlaWdodCA9IF9yZWY1LmVzdGltYXRlZFJvd0hlaWdodDtcbiAgICB2YXIgaW5zdGFuY2VQcm9wcyA9IHtcbiAgICAgIGNvbHVtbk1ldGFkYXRhTWFwOiB7fSxcbiAgICAgIGVzdGltYXRlZENvbHVtbldpZHRoOiBlc3RpbWF0ZWRDb2x1bW5XaWR0aCB8fCBERUZBVUxUX0VTVElNQVRFRF9JVEVNX1NJWkUsXG4gICAgICBlc3RpbWF0ZWRSb3dIZWlnaHQ6IGVzdGltYXRlZFJvd0hlaWdodCB8fCBERUZBVUxUX0VTVElNQVRFRF9JVEVNX1NJWkUsXG4gICAgICBsYXN0TWVhc3VyZWRDb2x1bW5JbmRleDogLTEsXG4gICAgICBsYXN0TWVhc3VyZWRSb3dJbmRleDogLTEsXG4gICAgICByb3dNZXRhZGF0YU1hcDoge31cbiAgICB9O1xuXG4gICAgaW5zdGFuY2UucmVzZXRBZnRlckNvbHVtbkluZGV4ID0gZnVuY3Rpb24gKGNvbHVtbkluZGV4LCBzaG91bGRGb3JjZVVwZGF0ZSkge1xuICAgICAgaWYgKHNob3VsZEZvcmNlVXBkYXRlID09PSB2b2lkIDApIHtcbiAgICAgICAgc2hvdWxkRm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpbnN0YW5jZS5yZXNldEFmdGVySW5kaWNlcyh7XG4gICAgICAgIGNvbHVtbkluZGV4OiBjb2x1bW5JbmRleCxcbiAgICAgICAgc2hvdWxkRm9yY2VVcGRhdGU6IHNob3VsZEZvcmNlVXBkYXRlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaW5zdGFuY2UucmVzZXRBZnRlclJvd0luZGV4ID0gZnVuY3Rpb24gKHJvd0luZGV4LCBzaG91bGRGb3JjZVVwZGF0ZSkge1xuICAgICAgaWYgKHNob3VsZEZvcmNlVXBkYXRlID09PSB2b2lkIDApIHtcbiAgICAgICAgc2hvdWxkRm9yY2VVcGRhdGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpbnN0YW5jZS5yZXNldEFmdGVySW5kaWNlcyh7XG4gICAgICAgIHJvd0luZGV4OiByb3dJbmRleCxcbiAgICAgICAgc2hvdWxkRm9yY2VVcGRhdGU6IHNob3VsZEZvcmNlVXBkYXRlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaW5zdGFuY2UucmVzZXRBZnRlckluZGljZXMgPSBmdW5jdGlvbiAoX3JlZjYpIHtcbiAgICAgIHZhciBjb2x1bW5JbmRleCA9IF9yZWY2LmNvbHVtbkluZGV4LFxuICAgICAgICAgIHJvd0luZGV4ID0gX3JlZjYucm93SW5kZXgsXG4gICAgICAgICAgX3JlZjYkc2hvdWxkRm9yY2VVcGRhID0gX3JlZjYuc2hvdWxkRm9yY2VVcGRhdGUsXG4gICAgICAgICAgc2hvdWxkRm9yY2VVcGRhdGUgPSBfcmVmNiRzaG91bGRGb3JjZVVwZGEgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmNiRzaG91bGRGb3JjZVVwZGE7XG5cbiAgICAgIGlmICh0eXBlb2YgY29sdW1uSW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgIGluc3RhbmNlUHJvcHMubGFzdE1lYXN1cmVkQ29sdW1uSW5kZXggPSBNYXRoLm1pbihpbnN0YW5jZVByb3BzLmxhc3RNZWFzdXJlZENvbHVtbkluZGV4LCBjb2x1bW5JbmRleCAtIDEpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHJvd0luZGV4ID09PSAnbnVtYmVyJykge1xuICAgICAgICBpbnN0YW5jZVByb3BzLmxhc3RNZWFzdXJlZFJvd0luZGV4ID0gTWF0aC5taW4oaW5zdGFuY2VQcm9wcy5sYXN0TWVhc3VyZWRSb3dJbmRleCwgcm93SW5kZXggLSAxKTtcbiAgICAgIH0gLy8gV2UgY291bGQgcG90ZW50aWFsbHkgb3B0aW1pemUgZnVydGhlciBieSBvbmx5IGV2aWN0aW5nIHN0eWxlcyBhZnRlciB0aGlzIGluZGV4LFxuICAgICAgLy8gQnV0IHNpbmNlIHN0eWxlcyBhcmUgb25seSBjYWNoZWQgd2hpbGUgc2Nyb2xsaW5nIGlzIGluIHByb2dyZXNzLVxuICAgICAgLy8gSXQgc2VlbXMgYW4gdW5uZWNlc3Nhcnkgb3B0aW1pemF0aW9uLlxuICAgICAgLy8gSXQncyB1bmxpa2VseSB0aGF0IHJlc2V0QWZ0ZXJJbmRleCgpIHdpbGwgYmUgY2FsbGVkIHdoaWxlIGEgdXNlciBpcyBzY3JvbGxpbmcuXG5cblxuICAgICAgaW5zdGFuY2UuX2dldEl0ZW1TdHlsZUNhY2hlKC0xKTtcblxuICAgICAgaWYgKHNob3VsZEZvcmNlVXBkYXRlKSB7XG4gICAgICAgIGluc3RhbmNlLmZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBpbnN0YW5jZVByb3BzO1xuICB9LFxuICBzaG91bGRSZXNldFN0eWxlQ2FjaGVPbkl0ZW1TaXplQ2hhbmdlOiBmYWxzZSxcbiAgdmFsaWRhdGVQcm9wczogZnVuY3Rpb24gdmFsaWRhdGVQcm9wcyhfcmVmNykge1xuICAgIHZhciBjb2x1bW5XaWR0aCA9IF9yZWY3LmNvbHVtbldpZHRoLFxuICAgICAgICByb3dIZWlnaHQgPSBfcmVmNy5yb3dIZWlnaHQ7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBjb2x1bW5XaWR0aCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBFcnJvcignQW4gaW52YWxpZCBcImNvbHVtbldpZHRoXCIgcHJvcCBoYXMgYmVlbiBzcGVjaWZpZWQuICcgKyAnVmFsdWUgc2hvdWxkIGJlIGEgZnVuY3Rpb24uICcgKyAoXCJcXFwiXCIgKyAoY29sdW1uV2lkdGggPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgY29sdW1uV2lkdGgpICsgXCJcXFwiIHdhcyBzcGVjaWZpZWQuXCIpKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJvd0hlaWdodCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBFcnJvcignQW4gaW52YWxpZCBcInJvd0hlaWdodFwiIHByb3AgaGFzIGJlZW4gc3BlY2lmaWVkLiAnICsgJ1ZhbHVlIHNob3VsZCBiZSBhIGZ1bmN0aW9uLiAnICsgKFwiXFxcIlwiICsgKHJvd0hlaWdodCA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiByb3dIZWlnaHQpICsgXCJcXFwiIHdhcyBzcGVjaWZpZWQuXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG52YXIgSVNfU0NST0xMSU5HX0RFQk9VTkNFX0lOVEVSVkFMJDEgPSAxNTA7XG5cbnZhciBkZWZhdWx0SXRlbUtleSQxID0gZnVuY3Rpb24gZGVmYXVsdEl0ZW1LZXkoaW5kZXgsIGRhdGEpIHtcbiAgcmV0dXJuIGluZGV4O1xufTsgLy8gSW4gREVWIG1vZGUsIHRoaXMgU2V0IGhlbHBzIHVzIG9ubHkgbG9nIGEgd2FybmluZyBvbmNlIHBlciBjb21wb25lbnQgaW5zdGFuY2UuXG4vLyBUaGlzIGF2b2lkcyBzcGFtbWluZyB0aGUgY29uc29sZSBldmVyeSB0aW1lIGEgcmVuZGVyIGhhcHBlbnMuXG5cblxudmFyIGRldldhcm5pbmdzRGlyZWN0aW9uID0gbnVsbDtcbnZhciBkZXZXYXJuaW5nc1RhZ05hbWUkMSA9IG51bGw7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LldlYWtTZXQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgZGV2V2FybmluZ3NEaXJlY3Rpb24gPSAvKiNfX1BVUkVfXyovbmV3IFdlYWtTZXQoKTtcbiAgICBkZXZXYXJuaW5nc1RhZ05hbWUkMSA9IC8qI19fUFVSRV9fKi9uZXcgV2Vha1NldCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpc3RDb21wb25lbnQoX3JlZikge1xuICB2YXIgX2NsYXNzO1xuXG4gIHZhciBnZXRJdGVtT2Zmc2V0ID0gX3JlZi5nZXRJdGVtT2Zmc2V0LFxuICAgICAgZ2V0RXN0aW1hdGVkVG90YWxTaXplID0gX3JlZi5nZXRFc3RpbWF0ZWRUb3RhbFNpemUsXG4gICAgICBnZXRJdGVtU2l6ZSA9IF9yZWYuZ2V0SXRlbVNpemUsXG4gICAgICBnZXRPZmZzZXRGb3JJbmRleEFuZEFsaWdubWVudCA9IF9yZWYuZ2V0T2Zmc2V0Rm9ySW5kZXhBbmRBbGlnbm1lbnQsXG4gICAgICBnZXRTdGFydEluZGV4Rm9yT2Zmc2V0ID0gX3JlZi5nZXRTdGFydEluZGV4Rm9yT2Zmc2V0LFxuICAgICAgZ2V0U3RvcEluZGV4Rm9yU3RhcnRJbmRleCA9IF9yZWYuZ2V0U3RvcEluZGV4Rm9yU3RhcnRJbmRleCxcbiAgICAgIGluaXRJbnN0YW5jZVByb3BzID0gX3JlZi5pbml0SW5zdGFuY2VQcm9wcyxcbiAgICAgIHNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2UgPSBfcmVmLnNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2UsXG4gICAgICB2YWxpZGF0ZVByb3BzID0gX3JlZi52YWxpZGF0ZVByb3BzO1xuICByZXR1cm4gX2NsYXNzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUHVyZUNvbXBvbmVudCkge1xuICAgIF9pbmhlcml0c0xvb3NlKExpc3QsIF9QdXJlQ29tcG9uZW50KTtcblxuICAgIC8vIEFsd2F5cyB1c2UgZXhwbGljaXQgY29uc3RydWN0b3IgZm9yIFJlYWN0IGNvbXBvbmVudHMuXG4gICAgLy8gSXQgcHJvZHVjZXMgbGVzcyBjb2RlIGFmdGVyIHRyYW5zcGlsYXRpb24uICgjMjYpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgICBmdW5jdGlvbiBMaXN0KHByb3BzKSB7XG4gICAgICB2YXIgX3RoaXM7XG5cbiAgICAgIF90aGlzID0gX1B1cmVDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgIF90aGlzLl9pbnN0YW5jZVByb3BzID0gaW5pdEluc3RhbmNlUHJvcHMoX3RoaXMucHJvcHMsIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICAgIF90aGlzLl9vdXRlclJlZiA9IHZvaWQgMDtcbiAgICAgIF90aGlzLl9yZXNldElzU2Nyb2xsaW5nVGltZW91dElkID0gbnVsbDtcbiAgICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgICBpbnN0YW5jZTogX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksXG4gICAgICAgIGlzU2Nyb2xsaW5nOiBmYWxzZSxcbiAgICAgICAgc2Nyb2xsRGlyZWN0aW9uOiAnZm9yd2FyZCcsXG4gICAgICAgIHNjcm9sbE9mZnNldDogdHlwZW9mIF90aGlzLnByb3BzLmluaXRpYWxTY3JvbGxPZmZzZXQgPT09ICdudW1iZXInID8gX3RoaXMucHJvcHMuaW5pdGlhbFNjcm9sbE9mZnNldCA6IDAsXG4gICAgICAgIHNjcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZDogZmFsc2VcbiAgICAgIH07XG4gICAgICBfdGhpcy5fY2FsbE9uSXRlbXNSZW5kZXJlZCA9IHZvaWQgMDtcbiAgICAgIF90aGlzLl9jYWxsT25JdGVtc1JlbmRlcmVkID0gbWVtb2l6ZU9uZShmdW5jdGlvbiAob3ZlcnNjYW5TdGFydEluZGV4LCBvdmVyc2NhblN0b3BJbmRleCwgdmlzaWJsZVN0YXJ0SW5kZXgsIHZpc2libGVTdG9wSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnByb3BzLm9uSXRlbXNSZW5kZXJlZCh7XG4gICAgICAgICAgb3ZlcnNjYW5TdGFydEluZGV4OiBvdmVyc2NhblN0YXJ0SW5kZXgsXG4gICAgICAgICAgb3ZlcnNjYW5TdG9wSW5kZXg6IG92ZXJzY2FuU3RvcEluZGV4LFxuICAgICAgICAgIHZpc2libGVTdGFydEluZGV4OiB2aXNpYmxlU3RhcnRJbmRleCxcbiAgICAgICAgICB2aXNpYmxlU3RvcEluZGV4OiB2aXNpYmxlU3RvcEluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfdGhpcy5fY2FsbE9uU2Nyb2xsID0gdm9pZCAwO1xuICAgICAgX3RoaXMuX2NhbGxPblNjcm9sbCA9IG1lbW9pemVPbmUoZnVuY3Rpb24gKHNjcm9sbERpcmVjdGlvbiwgc2Nyb2xsT2Zmc2V0LCBzY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnByb3BzLm9uU2Nyb2xsKHtcbiAgICAgICAgICBzY3JvbGxEaXJlY3Rpb246IHNjcm9sbERpcmVjdGlvbixcbiAgICAgICAgICBzY3JvbGxPZmZzZXQ6IHNjcm9sbE9mZnNldCxcbiAgICAgICAgICBzY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQ6IHNjcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgX3RoaXMuX2dldEl0ZW1TdHlsZSA9IHZvaWQgMDtcblxuICAgICAgX3RoaXMuX2dldEl0ZW1TdHlsZSA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IF90aGlzJHByb3BzLmRpcmVjdGlvbixcbiAgICAgICAgICAgIGl0ZW1TaXplID0gX3RoaXMkcHJvcHMuaXRlbVNpemUsXG4gICAgICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wcy5sYXlvdXQ7XG5cbiAgICAgICAgdmFyIGl0ZW1TdHlsZUNhY2hlID0gX3RoaXMuX2dldEl0ZW1TdHlsZUNhY2hlKHNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2UgJiYgaXRlbVNpemUsIHNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2UgJiYgbGF5b3V0LCBzaG91bGRSZXNldFN0eWxlQ2FjaGVPbkl0ZW1TaXplQ2hhbmdlICYmIGRpcmVjdGlvbik7XG5cbiAgICAgICAgdmFyIHN0eWxlO1xuXG4gICAgICAgIGlmIChpdGVtU3R5bGVDYWNoZS5oYXNPd25Qcm9wZXJ0eShpbmRleCkpIHtcbiAgICAgICAgICBzdHlsZSA9IGl0ZW1TdHlsZUNhY2hlW2luZGV4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX29mZnNldCA9IGdldEl0ZW1PZmZzZXQoX3RoaXMucHJvcHMsIGluZGV4LCBfdGhpcy5faW5zdGFuY2VQcm9wcyk7XG5cbiAgICAgICAgICB2YXIgc2l6ZSA9IGdldEl0ZW1TaXplKF90aGlzLnByb3BzLCBpbmRleCwgX3RoaXMuX2luc3RhbmNlUHJvcHMpOyAvLyBUT0RPIERlcHJlY2F0ZSBkaXJlY3Rpb24gXCJob3Jpem9udGFsXCJcblxuICAgICAgICAgIHZhciBpc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyB8fCBsYXlvdXQgPT09ICdob3Jpem9udGFsJztcbiAgICAgICAgICB2YXIgaXNSdGwgPSBkaXJlY3Rpb24gPT09ICdydGwnO1xuICAgICAgICAgIHZhciBvZmZzZXRIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsID8gX29mZnNldCA6IDA7XG4gICAgICAgICAgaXRlbVN0eWxlQ2FjaGVbaW5kZXhdID0gc3R5bGUgPSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGxlZnQ6IGlzUnRsID8gdW5kZWZpbmVkIDogb2Zmc2V0SG9yaXpvbnRhbCxcbiAgICAgICAgICAgIHJpZ2h0OiBpc1J0bCA/IG9mZnNldEhvcml6b250YWwgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0b3A6ICFpc0hvcml6b250YWwgPyBfb2Zmc2V0IDogMCxcbiAgICAgICAgICAgIGhlaWdodDogIWlzSG9yaXpvbnRhbCA/IHNpemUgOiAnMTAwJScsXG4gICAgICAgICAgICB3aWR0aDogaXNIb3Jpem9udGFsID8gc2l6ZSA6ICcxMDAlJ1xuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fZ2V0SXRlbVN0eWxlQ2FjaGUgPSB2b2lkIDA7XG4gICAgICBfdGhpcy5fZ2V0SXRlbVN0eWxlQ2FjaGUgPSBtZW1vaXplT25lKGZ1bmN0aW9uIChfLCBfXywgX19fKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5fb25TY3JvbGxIb3Jpem9udGFsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHZhciBfZXZlbnQkY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQsXG4gICAgICAgICAgICBjbGllbnRXaWR0aCA9IF9ldmVudCRjdXJyZW50VGFyZ2V0LmNsaWVudFdpZHRoLFxuICAgICAgICAgICAgc2Nyb2xsTGVmdCA9IF9ldmVudCRjdXJyZW50VGFyZ2V0LnNjcm9sbExlZnQsXG4gICAgICAgICAgICBzY3JvbGxXaWR0aCA9IF9ldmVudCRjdXJyZW50VGFyZ2V0LnNjcm9sbFdpZHRoO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChwcmV2U3RhdGUpIHtcbiAgICAgICAgICBpZiAocHJldlN0YXRlLnNjcm9sbE9mZnNldCA9PT0gc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgLy8gU2Nyb2xsIHBvc2l0aW9uIG1heSBoYXZlIGJlZW4gdXBkYXRlZCBieSBjRE0vY0RVLFxuICAgICAgICAgICAgLy8gSW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBuZWVkIHRvIHRyaWdnZXIgYW5vdGhlciByZW5kZXIsXG4gICAgICAgICAgICAvLyBBbmQgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUgc3RhdGUuaXNTY3JvbGxpbmcuXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gX3RoaXMucHJvcHMuZGlyZWN0aW9uO1xuICAgICAgICAgIHZhciBzY3JvbGxPZmZzZXQgPSBzY3JvbGxMZWZ0O1xuXG4gICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICAgICAgICAgIC8vIFRSSUNLWSBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNjcm9sbExlZnQgc2hvdWxkIGJlIG5lZ2F0aXZlIGZvciBSVEwgYWxpZ25lZCBlbGVtZW50cy5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRoZSBjYXNlIGZvciBhbGwgYnJvd3NlcnMgdGhvdWdoIChlLmcuIENocm9tZSByZXBvcnRzIHZhbHVlcyBhcyBwb3NpdGl2ZSwgbWVhc3VyZWQgcmVsYXRpdmUgdG8gdGhlIGxlZnQpLlxuICAgICAgICAgICAgLy8gSXQncyBhbHNvIGVhc2llciBmb3IgdGhpcyBjb21wb25lbnQgaWYgd2UgY29udmVydCBvZmZzZXRzIHRvIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGV5IHdvdWxkIGJlIGluIGZvciBsdHIuXG4gICAgICAgICAgICAvLyBTbyB0aGUgc2ltcGxlc3Qgc29sdXRpb24gaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGJyb3dzZXIgYmVoYXZpb3Igd2UncmUgZGVhbGluZyB3aXRoLCBhbmQgY29udmVydCBiYXNlZCBvbiBpdC5cbiAgICAgICAgICAgIHN3aXRjaCAoZ2V0UlRMT2Zmc2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ25lZ2F0aXZlJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQgPSAtc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlICdwb3NpdGl2ZS1kZXNjZW5kaW5nJzpcbiAgICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQgPSBzY3JvbGxXaWR0aCAtIGNsaWVudFdpZHRoIC0gc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIFByZXZlbnQgU2FmYXJpJ3MgZWxhc3RpYyBzY3JvbGxpbmcgZnJvbSBjYXVzaW5nIHZpc3VhbCBzaGFraW5nIHdoZW4gc2Nyb2xsaW5nIHBhc3QgYm91bmRzLlxuXG5cbiAgICAgICAgICBzY3JvbGxPZmZzZXQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzY3JvbGxPZmZzZXQsIHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGgpKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNTY3JvbGxpbmc6IHRydWUsXG4gICAgICAgICAgICBzY3JvbGxEaXJlY3Rpb246IHByZXZTdGF0ZS5zY3JvbGxPZmZzZXQgPCBzY3JvbGxMZWZ0ID8gJ2ZvcndhcmQnIDogJ2JhY2t3YXJkJyxcbiAgICAgICAgICAgIHNjcm9sbE9mZnNldDogc2Nyb2xsT2Zmc2V0LFxuICAgICAgICAgICAgc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH0sIF90aGlzLl9yZXNldElzU2Nyb2xsaW5nRGVib3VuY2VkKTtcbiAgICAgIH07XG5cbiAgICAgIF90aGlzLl9vblNjcm9sbFZlcnRpY2FsID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHZhciBfZXZlbnQkY3VycmVudFRhcmdldDIgPSBldmVudC5jdXJyZW50VGFyZ2V0LFxuICAgICAgICAgICAgY2xpZW50SGVpZ2h0ID0gX2V2ZW50JGN1cnJlbnRUYXJnZXQyLmNsaWVudEhlaWdodCxcbiAgICAgICAgICAgIHNjcm9sbEhlaWdodCA9IF9ldmVudCRjdXJyZW50VGFyZ2V0Mi5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgICBzY3JvbGxUb3AgPSBfZXZlbnQkY3VycmVudFRhcmdldDIuc2Nyb2xsVG9wO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKGZ1bmN0aW9uIChwcmV2U3RhdGUpIHtcbiAgICAgICAgICBpZiAocHJldlN0YXRlLnNjcm9sbE9mZnNldCA9PT0gc2Nyb2xsVG9wKSB7XG4gICAgICAgICAgICAvLyBTY3JvbGwgcG9zaXRpb24gbWF5IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IGNETS9jRFUsXG4gICAgICAgICAgICAvLyBJbiB3aGljaCBjYXNlIHdlIGRvbid0IG5lZWQgdG8gdHJpZ2dlciBhbm90aGVyIHJlbmRlcixcbiAgICAgICAgICAgIC8vIEFuZCB3ZSBkb24ndCB3YW50IHRvIHVwZGF0ZSBzdGF0ZS5pc1Njcm9sbGluZy5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0gLy8gUHJldmVudCBTYWZhcmkncyBlbGFzdGljIHNjcm9sbGluZyBmcm9tIGNhdXNpbmcgdmlzdWFsIHNoYWtpbmcgd2hlbiBzY3JvbGxpbmcgcGFzdCBib3VuZHMuXG5cblxuICAgICAgICAgIHZhciBzY3JvbGxPZmZzZXQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCAtIGNsaWVudEhlaWdodCkpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpc1Njcm9sbGluZzogdHJ1ZSxcbiAgICAgICAgICAgIHNjcm9sbERpcmVjdGlvbjogcHJldlN0YXRlLnNjcm9sbE9mZnNldCA8IHNjcm9sbE9mZnNldCA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCcsXG4gICAgICAgICAgICBzY3JvbGxPZmZzZXQ6IHNjcm9sbE9mZnNldCxcbiAgICAgICAgICAgIHNjcm9sbFVwZGF0ZVdhc1JlcXVlc3RlZDogZmFsc2VcbiAgICAgICAgICB9O1xuICAgICAgICB9LCBfdGhpcy5fcmVzZXRJc1Njcm9sbGluZ0RlYm91bmNlZCk7XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fb3V0ZXJSZWZTZXR0ZXIgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgIHZhciBvdXRlclJlZiA9IF90aGlzLnByb3BzLm91dGVyUmVmO1xuICAgICAgICBfdGhpcy5fb3V0ZXJSZWYgPSByZWY7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvdXRlclJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG91dGVyUmVmKHJlZik7XG4gICAgICAgIH0gZWxzZSBpZiAob3V0ZXJSZWYgIT0gbnVsbCAmJiB0eXBlb2Ygb3V0ZXJSZWYgPT09ICdvYmplY3QnICYmIG91dGVyUmVmLmhhc093blByb3BlcnR5KCdjdXJyZW50JykpIHtcbiAgICAgICAgICBvdXRlclJlZi5jdXJyZW50ID0gcmVmO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fcmVzZXRJc1Njcm9sbGluZ0RlYm91bmNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKF90aGlzLl9yZXNldElzU2Nyb2xsaW5nVGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsVGltZW91dChfdGhpcy5fcmVzZXRJc1Njcm9sbGluZ1RpbWVvdXRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5fcmVzZXRJc1Njcm9sbGluZ1RpbWVvdXRJZCA9IHJlcXVlc3RUaW1lb3V0KF90aGlzLl9yZXNldElzU2Nyb2xsaW5nLCBJU19TQ1JPTExJTkdfREVCT1VOQ0VfSU5URVJWQUwkMSk7XG4gICAgICB9O1xuXG4gICAgICBfdGhpcy5fcmVzZXRJc1Njcm9sbGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX3RoaXMuX3Jlc2V0SXNTY3JvbGxpbmdUaW1lb3V0SWQgPSBudWxsO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc1Njcm9sbGluZzogZmFsc2VcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIENsZWFyIHN0eWxlIGNhY2hlIGFmdGVyIHN0YXRlIHVwZGF0ZSBoYXMgYmVlbiBjb21taXR0ZWQuXG4gICAgICAgICAgLy8gVGhpcyB3YXkgd2UgZG9uJ3QgYnJlYWsgcHVyZSBzQ1UgZm9yIGl0ZW1zIHRoYXQgZG9uJ3QgdXNlIGlzU2Nyb2xsaW5nIHBhcmFtLlxuICAgICAgICAgIF90aGlzLl9nZXRJdGVtU3R5bGVDYWNoZSgtMSwgbnVsbCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIExpc3QuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID0gZnVuY3Rpb24gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgICB2YWxpZGF0ZVNoYXJlZFByb3BzJDEobmV4dFByb3BzLCBwcmV2U3RhdGUpO1xuICAgICAgdmFsaWRhdGVQcm9wcyhuZXh0UHJvcHMpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcblxuICAgIHZhciBfcHJvdG8gPSBMaXN0LnByb3RvdHlwZTtcblxuICAgIF9wcm90by5zY3JvbGxUbyA9IGZ1bmN0aW9uIHNjcm9sbFRvKHNjcm9sbE9mZnNldCkge1xuICAgICAgc2Nyb2xsT2Zmc2V0ID0gTWF0aC5tYXgoMCwgc2Nyb2xsT2Zmc2V0KTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHByZXZTdGF0ZSkge1xuICAgICAgICBpZiAocHJldlN0YXRlLnNjcm9sbE9mZnNldCA9PT0gc2Nyb2xsT2Zmc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNjcm9sbERpcmVjdGlvbjogcHJldlN0YXRlLnNjcm9sbE9mZnNldCA8IHNjcm9sbE9mZnNldCA/ICdmb3J3YXJkJyA6ICdiYWNrd2FyZCcsXG4gICAgICAgICAgc2Nyb2xsT2Zmc2V0OiBzY3JvbGxPZmZzZXQsXG4gICAgICAgICAgc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkOiB0cnVlXG4gICAgICAgIH07XG4gICAgICB9LCB0aGlzLl9yZXNldElzU2Nyb2xsaW5nRGVib3VuY2VkKTtcbiAgICB9O1xuXG4gICAgX3Byb3RvLnNjcm9sbFRvSXRlbSA9IGZ1bmN0aW9uIHNjcm9sbFRvSXRlbShpbmRleCwgYWxpZ24pIHtcbiAgICAgIGlmIChhbGlnbiA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGFsaWduID0gJ2F1dG8nO1xuICAgICAgfVxuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMyID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBpdGVtQ291bnQgPSBfdGhpcyRwcm9wczIuaXRlbUNvdW50LFxuICAgICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzMi5sYXlvdXQ7XG4gICAgICB2YXIgc2Nyb2xsT2Zmc2V0ID0gdGhpcy5zdGF0ZS5zY3JvbGxPZmZzZXQ7XG4gICAgICBpbmRleCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGluZGV4LCBpdGVtQ291bnQgLSAxKSk7IC8vIFRoZSBzY3JvbGxiYXIgc2l6ZSBzaG91bGQgYmUgY29uc2lkZXJlZCB3aGVuIHNjcm9sbGluZyBhbiBpdGVtIGludG8gdmlldywgdG8gZW5zdXJlIGl0J3MgZnVsbHkgdmlzaWJsZS5cbiAgICAgIC8vIEJ1dCB3ZSBvbmx5IG5lZWQgdG8gYWNjb3VudCBmb3IgaXRzIHNpemUgd2hlbiBpdCdzIGFjdHVhbGx5IHZpc2libGUuXG4gICAgICAvLyBUaGlzIGlzIGFuIGVkZ2UgY2FzZSBmb3IgbGlzdHM7IG5vcm1hbGx5IHRoZXkgb25seSBzY3JvbGwgaW4gdGhlIGRvbWluYW50IGRpcmVjdGlvbi5cblxuICAgICAgdmFyIHNjcm9sbGJhclNpemUgPSAwO1xuXG4gICAgICBpZiAodGhpcy5fb3V0ZXJSZWYpIHtcbiAgICAgICAgdmFyIG91dGVyUmVmID0gdGhpcy5fb3V0ZXJSZWY7XG5cbiAgICAgICAgaWYgKGxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgIHNjcm9sbGJhclNpemUgPSBvdXRlclJlZi5zY3JvbGxXaWR0aCA+IG91dGVyUmVmLmNsaWVudFdpZHRoID8gZ2V0U2Nyb2xsYmFyU2l6ZSgpIDogMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY3JvbGxiYXJTaXplID0gb3V0ZXJSZWYuc2Nyb2xsSGVpZ2h0ID4gb3V0ZXJSZWYuY2xpZW50SGVpZ2h0ID8gZ2V0U2Nyb2xsYmFyU2l6ZSgpIDogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLnNjcm9sbFRvKGdldE9mZnNldEZvckluZGV4QW5kQWxpZ25tZW50KHRoaXMucHJvcHMsIGluZGV4LCBhbGlnbiwgc2Nyb2xsT2Zmc2V0LCB0aGlzLl9pbnN0YW5jZVByb3BzLCBzY3JvbGxiYXJTaXplKSk7XG4gICAgfTtcblxuICAgIF9wcm90by5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgZGlyZWN0aW9uID0gX3RoaXMkcHJvcHMzLmRpcmVjdGlvbixcbiAgICAgICAgICBpbml0aWFsU2Nyb2xsT2Zmc2V0ID0gX3RoaXMkcHJvcHMzLmluaXRpYWxTY3JvbGxPZmZzZXQsXG4gICAgICAgICAgbGF5b3V0ID0gX3RoaXMkcHJvcHMzLmxheW91dDtcblxuICAgICAgaWYgKHR5cGVvZiBpbml0aWFsU2Nyb2xsT2Zmc2V0ID09PSAnbnVtYmVyJyAmJiB0aGlzLl9vdXRlclJlZiAhPSBudWxsKSB7XG4gICAgICAgIHZhciBvdXRlclJlZiA9IHRoaXMuX291dGVyUmVmOyAvLyBUT0RPIERlcHJlY2F0ZSBkaXJlY3Rpb24gXCJob3Jpem9udGFsXCJcblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgfHwgbGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICBvdXRlclJlZi5zY3JvbGxMZWZ0ID0gaW5pdGlhbFNjcm9sbE9mZnNldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXRlclJlZi5zY3JvbGxUb3AgPSBpbml0aWFsU2Nyb2xsT2Zmc2V0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NhbGxQcm9wc0NhbGxiYWNrcygpO1xuICAgIH07XG5cbiAgICBfcHJvdG8uY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgZGlyZWN0aW9uID0gX3RoaXMkcHJvcHM0LmRpcmVjdGlvbixcbiAgICAgICAgICBsYXlvdXQgPSBfdGhpcyRwcm9wczQubGF5b3V0O1xuICAgICAgdmFyIF90aGlzJHN0YXRlID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgICBzY3JvbGxPZmZzZXQgPSBfdGhpcyRzdGF0ZS5zY3JvbGxPZmZzZXQsXG4gICAgICAgICAgc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkID0gX3RoaXMkc3RhdGUuc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkO1xuXG4gICAgICBpZiAoc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkICYmIHRoaXMuX291dGVyUmVmICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG91dGVyUmVmID0gdGhpcy5fb3V0ZXJSZWY7IC8vIFRPRE8gRGVwcmVjYXRlIGRpcmVjdGlvbiBcImhvcml6b250YWxcIlxuXG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyB8fCBsYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgICAgICAgICAvLyBUUklDS1kgQWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBzY3JvbGxMZWZ0IHNob3VsZCBiZSBuZWdhdGl2ZSBmb3IgUlRMIGFsaWduZWQgZWxlbWVudHMuXG4gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgY2FzZSBmb3IgYWxsIGJyb3dzZXJzIHRob3VnaCAoZS5nLiBDaHJvbWUgcmVwb3J0cyB2YWx1ZXMgYXMgcG9zaXRpdmUsIG1lYXN1cmVkIHJlbGF0aXZlIHRvIHRoZSBsZWZ0KS5cbiAgICAgICAgICAgIC8vIFNvIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIGJyb3dzZXIgYmVoYXZpb3Igd2UncmUgZGVhbGluZyB3aXRoLCBhbmQgbWltaWMgaXQuXG4gICAgICAgICAgICBzd2l0Y2ggKGdldFJUTE9mZnNldFR5cGUoKSkge1xuICAgICAgICAgICAgICBjYXNlICduZWdhdGl2ZSc6XG4gICAgICAgICAgICAgICAgb3V0ZXJSZWYuc2Nyb2xsTGVmdCA9IC1zY3JvbGxPZmZzZXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAncG9zaXRpdmUtYXNjZW5kaW5nJzpcbiAgICAgICAgICAgICAgICBvdXRlclJlZi5zY3JvbGxMZWZ0ID0gc2Nyb2xsT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdmFyIGNsaWVudFdpZHRoID0gb3V0ZXJSZWYuY2xpZW50V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoID0gb3V0ZXJSZWYuc2Nyb2xsV2lkdGg7XG4gICAgICAgICAgICAgICAgb3V0ZXJSZWYuc2Nyb2xsTGVmdCA9IHNjcm9sbFdpZHRoIC0gY2xpZW50V2lkdGggLSBzY3JvbGxPZmZzZXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dGVyUmVmLnNjcm9sbExlZnQgPSBzY3JvbGxPZmZzZXQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dGVyUmVmLnNjcm9sbFRvcCA9IHNjcm9sbE9mZnNldDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9jYWxsUHJvcHNDYWxsYmFja3MoKTtcbiAgICB9O1xuXG4gICAgX3Byb3RvLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5fcmVzZXRJc1Njcm9sbGluZ1RpbWVvdXRJZCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxUaW1lb3V0KHRoaXMuX3Jlc2V0SXNTY3JvbGxpbmdUaW1lb3V0SWQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfcHJvdG8ucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wczUuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHM1LmNsYXNzTmFtZSxcbiAgICAgICAgICBkaXJlY3Rpb24gPSBfdGhpcyRwcm9wczUuZGlyZWN0aW9uLFxuICAgICAgICAgIGhlaWdodCA9IF90aGlzJHByb3BzNS5oZWlnaHQsXG4gICAgICAgICAgaW5uZXJSZWYgPSBfdGhpcyRwcm9wczUuaW5uZXJSZWYsXG4gICAgICAgICAgaW5uZXJFbGVtZW50VHlwZSA9IF90aGlzJHByb3BzNS5pbm5lckVsZW1lbnRUeXBlLFxuICAgICAgICAgIGlubmVyVGFnTmFtZSA9IF90aGlzJHByb3BzNS5pbm5lclRhZ05hbWUsXG4gICAgICAgICAgaXRlbUNvdW50ID0gX3RoaXMkcHJvcHM1Lml0ZW1Db3VudCxcbiAgICAgICAgICBpdGVtRGF0YSA9IF90aGlzJHByb3BzNS5pdGVtRGF0YSxcbiAgICAgICAgICBfdGhpcyRwcm9wczUkaXRlbUtleSA9IF90aGlzJHByb3BzNS5pdGVtS2V5LFxuICAgICAgICAgIGl0ZW1LZXkgPSBfdGhpcyRwcm9wczUkaXRlbUtleSA9PT0gdm9pZCAwID8gZGVmYXVsdEl0ZW1LZXkkMSA6IF90aGlzJHByb3BzNSRpdGVtS2V5LFxuICAgICAgICAgIGxheW91dCA9IF90aGlzJHByb3BzNS5sYXlvdXQsXG4gICAgICAgICAgb3V0ZXJFbGVtZW50VHlwZSA9IF90aGlzJHByb3BzNS5vdXRlckVsZW1lbnRUeXBlLFxuICAgICAgICAgIG91dGVyVGFnTmFtZSA9IF90aGlzJHByb3BzNS5vdXRlclRhZ05hbWUsXG4gICAgICAgICAgc3R5bGUgPSBfdGhpcyRwcm9wczUuc3R5bGUsXG4gICAgICAgICAgdXNlSXNTY3JvbGxpbmcgPSBfdGhpcyRwcm9wczUudXNlSXNTY3JvbGxpbmcsXG4gICAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczUud2lkdGg7XG4gICAgICB2YXIgaXNTY3JvbGxpbmcgPSB0aGlzLnN0YXRlLmlzU2Nyb2xsaW5nOyAvLyBUT0RPIERlcHJlY2F0ZSBkaXJlY3Rpb24gXCJob3Jpem9udGFsXCJcblxuICAgICAgdmFyIGlzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnIHx8IGxheW91dCA9PT0gJ2hvcml6b250YWwnO1xuICAgICAgdmFyIG9uU2Nyb2xsID0gaXNIb3Jpem9udGFsID8gdGhpcy5fb25TY3JvbGxIb3Jpem9udGFsIDogdGhpcy5fb25TY3JvbGxWZXJ0aWNhbDtcblxuICAgICAgdmFyIF90aGlzJF9nZXRSYW5nZVRvUmVuZCA9IHRoaXMuX2dldFJhbmdlVG9SZW5kZXIoKSxcbiAgICAgICAgICBzdGFydEluZGV4ID0gX3RoaXMkX2dldFJhbmdlVG9SZW5kWzBdLFxuICAgICAgICAgIHN0b3BJbmRleCA9IF90aGlzJF9nZXRSYW5nZVRvUmVuZFsxXTtcblxuICAgICAgdmFyIGl0ZW1zID0gW107XG5cbiAgICAgIGlmIChpdGVtQ291bnQgPiAwKSB7XG4gICAgICAgIGZvciAodmFyIF9pbmRleCA9IHN0YXJ0SW5kZXg7IF9pbmRleCA8PSBzdG9wSW5kZXg7IF9pbmRleCsrKSB7XG4gICAgICAgICAgaXRlbXMucHVzaChjcmVhdGVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgICAgICBkYXRhOiBpdGVtRGF0YSxcbiAgICAgICAgICAgIGtleTogaXRlbUtleShfaW5kZXgsIGl0ZW1EYXRhKSxcbiAgICAgICAgICAgIGluZGV4OiBfaW5kZXgsXG4gICAgICAgICAgICBpc1Njcm9sbGluZzogdXNlSXNTY3JvbGxpbmcgPyBpc1Njcm9sbGluZyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHN0eWxlOiB0aGlzLl9nZXRJdGVtU3R5bGUoX2luZGV4KVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSAvLyBSZWFkIHRoaXMgdmFsdWUgQUZURVIgaXRlbXMgaGF2ZSBiZWVuIGNyZWF0ZWQsXG4gICAgICAvLyBTbyB0aGVpciBhY3R1YWwgc2l6ZXMgKGlmIHZhcmlhYmxlKSBhcmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLlxuXG5cbiAgICAgIHZhciBlc3RpbWF0ZWRUb3RhbFNpemUgPSBnZXRFc3RpbWF0ZWRUb3RhbFNpemUodGhpcy5wcm9wcywgdGhpcy5faW5zdGFuY2VQcm9wcyk7XG4gICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChvdXRlckVsZW1lbnRUeXBlIHx8IG91dGVyVGFnTmFtZSB8fCAnZGl2Jywge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgb25TY3JvbGw6IG9uU2Nyb2xsLFxuICAgICAgICByZWY6IHRoaXMuX291dGVyUmVmU2V0dGVyLFxuICAgICAgICBzdHlsZTogX2V4dGVuZHMoe1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgICAgIFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiAndG91Y2gnLFxuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nLFxuICAgICAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uXG4gICAgICAgIH0sIHN0eWxlKVxuICAgICAgfSwgY3JlYXRlRWxlbWVudChpbm5lckVsZW1lbnRUeXBlIHx8IGlubmVyVGFnTmFtZSB8fCAnZGl2Jywge1xuICAgICAgICBjaGlsZHJlbjogaXRlbXMsXG4gICAgICAgIHJlZjogaW5uZXJSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgaGVpZ2h0OiBpc0hvcml6b250YWwgPyAnMTAwJScgOiBlc3RpbWF0ZWRUb3RhbFNpemUsXG4gICAgICAgICAgcG9pbnRlckV2ZW50czogaXNTY3JvbGxpbmcgPyAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgd2lkdGg6IGlzSG9yaXpvbnRhbCA/IGVzdGltYXRlZFRvdGFsU2l6ZSA6ICcxMDAlJ1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfTtcblxuICAgIF9wcm90by5fY2FsbFByb3BzQ2FsbGJhY2tzID0gZnVuY3Rpb24gX2NhbGxQcm9wc0NhbGxiYWNrcygpIHtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbkl0ZW1zUmVuZGVyZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFyIGl0ZW1Db3VudCA9IHRoaXMucHJvcHMuaXRlbUNvdW50O1xuXG4gICAgICAgIGlmIChpdGVtQ291bnQgPiAwKSB7XG4gICAgICAgICAgdmFyIF90aGlzJF9nZXRSYW5nZVRvUmVuZDIgPSB0aGlzLl9nZXRSYW5nZVRvUmVuZGVyKCksXG4gICAgICAgICAgICAgIF9vdmVyc2NhblN0YXJ0SW5kZXggPSBfdGhpcyRfZ2V0UmFuZ2VUb1JlbmQyWzBdLFxuICAgICAgICAgICAgICBfb3ZlcnNjYW5TdG9wSW5kZXggPSBfdGhpcyRfZ2V0UmFuZ2VUb1JlbmQyWzFdLFxuICAgICAgICAgICAgICBfdmlzaWJsZVN0YXJ0SW5kZXggPSBfdGhpcyRfZ2V0UmFuZ2VUb1JlbmQyWzJdLFxuICAgICAgICAgICAgICBfdmlzaWJsZVN0b3BJbmRleCA9IF90aGlzJF9nZXRSYW5nZVRvUmVuZDJbM107XG5cbiAgICAgICAgICB0aGlzLl9jYWxsT25JdGVtc1JlbmRlcmVkKF9vdmVyc2NhblN0YXJ0SW5kZXgsIF9vdmVyc2NhblN0b3BJbmRleCwgX3Zpc2libGVTdGFydEluZGV4LCBfdmlzaWJsZVN0b3BJbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uU2Nyb2xsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhciBfdGhpcyRzdGF0ZTIgPSB0aGlzLnN0YXRlLFxuICAgICAgICAgICAgX3Njcm9sbERpcmVjdGlvbiA9IF90aGlzJHN0YXRlMi5zY3JvbGxEaXJlY3Rpb24sXG4gICAgICAgICAgICBfc2Nyb2xsT2Zmc2V0ID0gX3RoaXMkc3RhdGUyLnNjcm9sbE9mZnNldCxcbiAgICAgICAgICAgIF9zY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQgPSBfdGhpcyRzdGF0ZTIuc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkO1xuXG4gICAgICAgIHRoaXMuX2NhbGxPblNjcm9sbChfc2Nyb2xsRGlyZWN0aW9uLCBfc2Nyb2xsT2Zmc2V0LCBfc2Nyb2xsVXBkYXRlV2FzUmVxdWVzdGVkKTtcbiAgICAgIH1cbiAgICB9IC8vIExhemlseSBjcmVhdGUgYW5kIGNhY2hlIGl0ZW0gc3R5bGVzIHdoaWxlIHNjcm9sbGluZyxcbiAgICAvLyBTbyB0aGF0IHB1cmUgY29tcG9uZW50IHNDVSB3aWxsIHByZXZlbnQgcmUtcmVuZGVycy5cbiAgICAvLyBXZSBtYWludGFpbiB0aGlzIGNhY2hlLCBhbmQgcGFzcyBhIHN0eWxlIHByb3AgcmF0aGVyIHRoYW4gaW5kZXgsXG4gICAgLy8gU28gdGhhdCBMaXN0IGNhbiBjbGVhciBjYWNoZWQgc3R5bGVzIGFuZCBmb3JjZSBpdGVtIHJlLXJlbmRlciBpZiBuZWNlc3NhcnkuXG4gICAgO1xuXG4gICAgX3Byb3RvLl9nZXRSYW5nZVRvUmVuZGVyID0gZnVuY3Rpb24gX2dldFJhbmdlVG9SZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBpdGVtQ291bnQgPSBfdGhpcyRwcm9wczYuaXRlbUNvdW50LFxuICAgICAgICAgIG92ZXJzY2FuQ291bnQgPSBfdGhpcyRwcm9wczYub3ZlcnNjYW5Db3VudDtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZTMgPSB0aGlzLnN0YXRlLFxuICAgICAgICAgIGlzU2Nyb2xsaW5nID0gX3RoaXMkc3RhdGUzLmlzU2Nyb2xsaW5nLFxuICAgICAgICAgIHNjcm9sbERpcmVjdGlvbiA9IF90aGlzJHN0YXRlMy5zY3JvbGxEaXJlY3Rpb24sXG4gICAgICAgICAgc2Nyb2xsT2Zmc2V0ID0gX3RoaXMkc3RhdGUzLnNjcm9sbE9mZnNldDtcblxuICAgICAgaWYgKGl0ZW1Db3VudCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gWzAsIDAsIDAsIDBdO1xuICAgICAgfVxuXG4gICAgICB2YXIgc3RhcnRJbmRleCA9IGdldFN0YXJ0SW5kZXhGb3JPZmZzZXQodGhpcy5wcm9wcywgc2Nyb2xsT2Zmc2V0LCB0aGlzLl9pbnN0YW5jZVByb3BzKTtcbiAgICAgIHZhciBzdG9wSW5kZXggPSBnZXRTdG9wSW5kZXhGb3JTdGFydEluZGV4KHRoaXMucHJvcHMsIHN0YXJ0SW5kZXgsIHNjcm9sbE9mZnNldCwgdGhpcy5faW5zdGFuY2VQcm9wcyk7IC8vIE92ZXJzY2FuIGJ5IG9uZSBpdGVtIGluIGVhY2ggZGlyZWN0aW9uIHNvIHRoYXQgdGFiL2ZvY3VzIHdvcmtzLlxuICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgYXQgbGVhc3Qgb25lIGV4dHJhIGl0ZW0sIHRhYiBsb29wcyBiYWNrIGFyb3VuZC5cblxuICAgICAgdmFyIG92ZXJzY2FuQmFja3dhcmQgPSAhaXNTY3JvbGxpbmcgfHwgc2Nyb2xsRGlyZWN0aW9uID09PSAnYmFja3dhcmQnID8gTWF0aC5tYXgoMSwgb3ZlcnNjYW5Db3VudCkgOiAxO1xuICAgICAgdmFyIG92ZXJzY2FuRm9yd2FyZCA9ICFpc1Njcm9sbGluZyB8fCBzY3JvbGxEaXJlY3Rpb24gPT09ICdmb3J3YXJkJyA/IE1hdGgubWF4KDEsIG92ZXJzY2FuQ291bnQpIDogMTtcbiAgICAgIHJldHVybiBbTWF0aC5tYXgoMCwgc3RhcnRJbmRleCAtIG92ZXJzY2FuQmFja3dhcmQpLCBNYXRoLm1heCgwLCBNYXRoLm1pbihpdGVtQ291bnQgLSAxLCBzdG9wSW5kZXggKyBvdmVyc2NhbkZvcndhcmQpKSwgc3RhcnRJbmRleCwgc3RvcEluZGV4XTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIExpc3Q7XG4gIH0oUHVyZUNvbXBvbmVudCksIF9jbGFzcy5kZWZhdWx0UHJvcHMgPSB7XG4gICAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgICBpdGVtRGF0YTogdW5kZWZpbmVkLFxuICAgIGxheW91dDogJ3ZlcnRpY2FsJyxcbiAgICBvdmVyc2NhbkNvdW50OiAyLFxuICAgIHVzZUlzU2Nyb2xsaW5nOiBmYWxzZVxuICB9LCBfY2xhc3M7XG59IC8vIE5PVEU6IEkgY29uc2lkZXJlZCBmdXJ0aGVyIHdyYXBwaW5nIGluZGl2aWR1YWwgaXRlbXMgd2l0aCBhIHB1cmUgTGlzdEl0ZW0gY29tcG9uZW50LlxuLy8gVGhpcyB3b3VsZCBhdm9pZCBldmVyIGNhbGxpbmcgdGhlIHJlbmRlciBmdW5jdGlvbiBmb3IgdGhlIHNhbWUgaW5kZXggbW9yZSB0aGFuIG9uY2UsXG4vLyBCdXQgaXQgd291bGQgYWxzbyBhZGQgdGhlIG92ZXJoZWFkIG9mIGEgbG90IG9mIGNvbXBvbmVudHMvZmliZXJzLlxuLy8gSSBhc3N1bWUgcGVvcGxlIGFscmVhZHkgZG8gdGhpcyAocmVuZGVyIGZ1bmN0aW9uIHJldHVybmluZyBhIGNsYXNzIGNvbXBvbmVudCksXG4vLyBTbyBteSBkb2luZyBpdCB3b3VsZCBqdXN0IHVubmVjZXNzYXJpbHkgZG91YmxlIHRoZSB3cmFwcGVycy5cblxudmFyIHZhbGlkYXRlU2hhcmVkUHJvcHMkMSA9IGZ1bmN0aW9uIHZhbGlkYXRlU2hhcmVkUHJvcHMoX3JlZjIsIF9yZWYzKSB7XG4gIHZhciBjaGlsZHJlbiA9IF9yZWYyLmNoaWxkcmVuLFxuICAgICAgZGlyZWN0aW9uID0gX3JlZjIuZGlyZWN0aW9uLFxuICAgICAgaGVpZ2h0ID0gX3JlZjIuaGVpZ2h0LFxuICAgICAgbGF5b3V0ID0gX3JlZjIubGF5b3V0LFxuICAgICAgaW5uZXJUYWdOYW1lID0gX3JlZjIuaW5uZXJUYWdOYW1lLFxuICAgICAgb3V0ZXJUYWdOYW1lID0gX3JlZjIub3V0ZXJUYWdOYW1lLFxuICAgICAgd2lkdGggPSBfcmVmMi53aWR0aDtcbiAgdmFyIGluc3RhbmNlID0gX3JlZjMuaW5zdGFuY2U7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoaW5uZXJUYWdOYW1lICE9IG51bGwgfHwgb3V0ZXJUYWdOYW1lICE9IG51bGwpIHtcbiAgICAgIGlmIChkZXZXYXJuaW5nc1RhZ05hbWUkMSAmJiAhZGV2V2FybmluZ3NUYWdOYW1lJDEuaGFzKGluc3RhbmNlKSkge1xuICAgICAgICBkZXZXYXJuaW5nc1RhZ05hbWUkMS5hZGQoaW5zdGFuY2UpO1xuICAgICAgICBjb25zb2xlLndhcm4oJ1RoZSBpbm5lclRhZ05hbWUgYW5kIG91dGVyVGFnTmFtZSBwcm9wcyBoYXZlIGJlZW4gZGVwcmVjYXRlZC4gJyArICdQbGVhc2UgdXNlIHRoZSBpbm5lckVsZW1lbnRUeXBlIGFuZCBvdXRlckVsZW1lbnRUeXBlIHByb3BzIGluc3RlYWQuJyk7XG4gICAgICB9XG4gICAgfSAvLyBUT0RPIERlcHJlY2F0ZSBkaXJlY3Rpb24gXCJob3Jpem9udGFsXCJcblxuXG4gICAgdmFyIGlzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnIHx8IGxheW91dCA9PT0gJ2hvcml6b250YWwnO1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgY2FzZSAndmVydGljYWwnOlxuICAgICAgICBpZiAoZGV2V2FybmluZ3NEaXJlY3Rpb24gJiYgIWRldldhcm5pbmdzRGlyZWN0aW9uLmhhcyhpbnN0YW5jZSkpIHtcbiAgICAgICAgICBkZXZXYXJuaW5nc0RpcmVjdGlvbi5hZGQoaW5zdGFuY2UpO1xuICAgICAgICAgIGNvbnNvbGUud2FybignVGhlIGRpcmVjdGlvbiBwcm9wIHNob3VsZCBiZSBlaXRoZXIgXCJsdHJcIiAoZGVmYXVsdCkgb3IgXCJydGxcIi4gJyArICdQbGVhc2UgdXNlIHRoZSBsYXlvdXQgcHJvcCB0byBzcGVjaWZ5IFwidmVydGljYWxcIiAoZGVmYXVsdCkgb3IgXCJob3Jpem9udGFsXCIgb3JpZW50YXRpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbHRyJzpcbiAgICAgIGNhc2UgJ3J0bCc6XG4gICAgICAgIC8vIFZhbGlkIHZhbHVlc1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0FuIGludmFsaWQgXCJkaXJlY3Rpb25cIiBwcm9wIGhhcyBiZWVuIHNwZWNpZmllZC4gJyArICdWYWx1ZSBzaG91bGQgYmUgZWl0aGVyIFwibHRyXCIgb3IgXCJydGxcIi4gJyArIChcIlxcXCJcIiArIGRpcmVjdGlvbiArIFwiXFxcIiB3YXMgc3BlY2lmaWVkLlwiKSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChsYXlvdXQpIHtcbiAgICAgIGNhc2UgJ2hvcml6b250YWwnOlxuICAgICAgY2FzZSAndmVydGljYWwnOlxuICAgICAgICAvLyBWYWxpZCB2YWx1ZXNcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IEVycm9yKCdBbiBpbnZhbGlkIFwibGF5b3V0XCIgcHJvcCBoYXMgYmVlbiBzcGVjaWZpZWQuICcgKyAnVmFsdWUgc2hvdWxkIGJlIGVpdGhlciBcImhvcml6b250YWxcIiBvciBcInZlcnRpY2FsXCIuICcgKyAoXCJcXFwiXCIgKyBsYXlvdXQgKyBcIlxcXCIgd2FzIHNwZWNpZmllZC5cIikpO1xuICAgIH1cblxuICAgIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBFcnJvcignQW4gaW52YWxpZCBcImNoaWxkcmVuXCIgcHJvcCBoYXMgYmVlbiBzcGVjaWZpZWQuICcgKyAnVmFsdWUgc2hvdWxkIGJlIGEgUmVhY3QgY29tcG9uZW50LiAnICsgKFwiXFxcIlwiICsgKGNoaWxkcmVuID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGNoaWxkcmVuKSArIFwiXFxcIiB3YXMgc3BlY2lmaWVkLlwiKSk7XG4gICAgfVxuXG4gICAgaWYgKGlzSG9yaXpvbnRhbCAmJiB0eXBlb2Ygd2lkdGggIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBFcnJvcignQW4gaW52YWxpZCBcIndpZHRoXCIgcHJvcCBoYXMgYmVlbiBzcGVjaWZpZWQuICcgKyAnSG9yaXpvbnRhbCBsaXN0cyBtdXN0IHNwZWNpZnkgYSBudW1iZXIgZm9yIHdpZHRoLiAnICsgKFwiXFxcIlwiICsgKHdpZHRoID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHdpZHRoKSArIFwiXFxcIiB3YXMgc3BlY2lmaWVkLlwiKSk7XG4gICAgfSBlbHNlIGlmICghaXNIb3Jpem9udGFsICYmIHR5cGVvZiBoZWlnaHQgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBFcnJvcignQW4gaW52YWxpZCBcImhlaWdodFwiIHByb3AgaGFzIGJlZW4gc3BlY2lmaWVkLiAnICsgJ1ZlcnRpY2FsIGxpc3RzIG11c3Qgc3BlY2lmeSBhIG51bWJlciBmb3IgaGVpZ2h0LiAnICsgKFwiXFxcIlwiICsgKGhlaWdodCA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBoZWlnaHQpICsgXCJcXFwiIHdhcyBzcGVjaWZpZWQuXCIpKTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBERUZBVUxUX0VTVElNQVRFRF9JVEVNX1NJWkUkMSA9IDUwO1xuXG52YXIgZ2V0SXRlbU1ldGFkYXRhJDEgPSBmdW5jdGlvbiBnZXRJdGVtTWV0YWRhdGEocHJvcHMsIGluZGV4LCBpbnN0YW5jZVByb3BzKSB7XG4gIHZhciBfcmVmID0gcHJvcHMsXG4gICAgICBpdGVtU2l6ZSA9IF9yZWYuaXRlbVNpemU7XG4gIHZhciBpdGVtTWV0YWRhdGFNYXAgPSBpbnN0YW5jZVByb3BzLml0ZW1NZXRhZGF0YU1hcCxcbiAgICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gaW5zdGFuY2VQcm9wcy5sYXN0TWVhc3VyZWRJbmRleDtcblxuICBpZiAoaW5kZXggPiBsYXN0TWVhc3VyZWRJbmRleCkge1xuICAgIHZhciBvZmZzZXQgPSAwO1xuXG4gICAgaWYgKGxhc3RNZWFzdXJlZEluZGV4ID49IDApIHtcbiAgICAgIHZhciBpdGVtTWV0YWRhdGEgPSBpdGVtTWV0YWRhdGFNYXBbbGFzdE1lYXN1cmVkSW5kZXhdO1xuICAgICAgb2Zmc2V0ID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSBsYXN0TWVhc3VyZWRJbmRleCArIDE7IGkgPD0gaW5kZXg7IGkrKykge1xuICAgICAgdmFyIHNpemUgPSBpdGVtU2l6ZShpKTtcbiAgICAgIGl0ZW1NZXRhZGF0YU1hcFtpXSA9IHtcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgIHNpemU6IHNpemVcbiAgICAgIH07XG4gICAgICBvZmZzZXQgKz0gc2l6ZTtcbiAgICB9XG5cbiAgICBpbnN0YW5jZVByb3BzLmxhc3RNZWFzdXJlZEluZGV4ID0gaW5kZXg7XG4gIH1cblxuICByZXR1cm4gaXRlbU1ldGFkYXRhTWFwW2luZGV4XTtcbn07XG5cbnZhciBmaW5kTmVhcmVzdEl0ZW0kMSA9IGZ1bmN0aW9uIGZpbmROZWFyZXN0SXRlbShwcm9wcywgaW5zdGFuY2VQcm9wcywgb2Zmc2V0KSB7XG4gIHZhciBpdGVtTWV0YWRhdGFNYXAgPSBpbnN0YW5jZVByb3BzLml0ZW1NZXRhZGF0YU1hcCxcbiAgICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gaW5zdGFuY2VQcm9wcy5sYXN0TWVhc3VyZWRJbmRleDtcbiAgdmFyIGxhc3RNZWFzdXJlZEl0ZW1PZmZzZXQgPSBsYXN0TWVhc3VyZWRJbmRleCA+IDAgPyBpdGVtTWV0YWRhdGFNYXBbbGFzdE1lYXN1cmVkSW5kZXhdLm9mZnNldCA6IDA7XG5cbiAgaWYgKGxhc3RNZWFzdXJlZEl0ZW1PZmZzZXQgPj0gb2Zmc2V0KSB7XG4gICAgLy8gSWYgd2UndmUgYWxyZWFkeSBtZWFzdXJlZCBpdGVtcyB3aXRoaW4gdGhpcyByYW5nZSBqdXN0IHVzZSBhIGJpbmFyeSBzZWFyY2ggYXMgaXQncyBmYXN0ZXIuXG4gICAgcmV0dXJuIGZpbmROZWFyZXN0SXRlbUJpbmFyeVNlYXJjaCQxKHByb3BzLCBpbnN0YW5jZVByb3BzLCBsYXN0TWVhc3VyZWRJbmRleCwgMCwgb2Zmc2V0KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiB3ZSBoYXZlbid0IHlldCBtZWFzdXJlZCB0aGlzIGhpZ2gsIGZhbGxiYWNrIHRvIGFuIGV4cG9uZW50aWFsIHNlYXJjaCB3aXRoIGFuIGlubmVyIGJpbmFyeSBzZWFyY2guXG4gICAgLy8gVGhlIGV4cG9uZW50aWFsIHNlYXJjaCBhdm9pZHMgcHJlLWNvbXB1dGluZyBzaXplcyBmb3IgdGhlIGZ1bGwgc2V0IG9mIGl0ZW1zIGFzIGEgYmluYXJ5IHNlYXJjaCB3b3VsZC5cbiAgICAvLyBUaGUgb3ZlcmFsbCBjb21wbGV4aXR5IGZvciB0aGlzIGFwcHJvYWNoIGlzIE8obG9nIG4pLlxuICAgIHJldHVybiBmaW5kTmVhcmVzdEl0ZW1FeHBvbmVudGlhbFNlYXJjaCQxKHByb3BzLCBpbnN0YW5jZVByb3BzLCBNYXRoLm1heCgwLCBsYXN0TWVhc3VyZWRJbmRleCksIG9mZnNldCk7XG4gIH1cbn07XG5cbnZhciBmaW5kTmVhcmVzdEl0ZW1CaW5hcnlTZWFyY2gkMSA9IGZ1bmN0aW9uIGZpbmROZWFyZXN0SXRlbUJpbmFyeVNlYXJjaChwcm9wcywgaW5zdGFuY2VQcm9wcywgaGlnaCwgbG93LCBvZmZzZXQpIHtcbiAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7XG4gICAgdmFyIG1pZGRsZSA9IGxvdyArIE1hdGguZmxvb3IoKGhpZ2ggLSBsb3cpIC8gMik7XG4gICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBnZXRJdGVtTWV0YWRhdGEkMShwcm9wcywgbWlkZGxlLCBpbnN0YW5jZVByb3BzKS5vZmZzZXQ7XG5cbiAgICBpZiAoY3VycmVudE9mZnNldCA9PT0gb2Zmc2V0KSB7XG4gICAgICByZXR1cm4gbWlkZGxlO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudE9mZnNldCA8IG9mZnNldCkge1xuICAgICAgbG93ID0gbWlkZGxlICsgMTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRPZmZzZXQgPiBvZmZzZXQpIHtcbiAgICAgIGhpZ2ggPSBtaWRkbGUgLSAxO1xuICAgIH1cbiAgfVxuXG4gIGlmIChsb3cgPiAwKSB7XG4gICAgcmV0dXJuIGxvdyAtIDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cbnZhciBmaW5kTmVhcmVzdEl0ZW1FeHBvbmVudGlhbFNlYXJjaCQxID0gZnVuY3Rpb24gZmluZE5lYXJlc3RJdGVtRXhwb25lbnRpYWxTZWFyY2gocHJvcHMsIGluc3RhbmNlUHJvcHMsIGluZGV4LCBvZmZzZXQpIHtcbiAgdmFyIGl0ZW1Db3VudCA9IHByb3BzLml0ZW1Db3VudDtcbiAgdmFyIGludGVydmFsID0gMTtcblxuICB3aGlsZSAoaW5kZXggPCBpdGVtQ291bnQgJiYgZ2V0SXRlbU1ldGFkYXRhJDEocHJvcHMsIGluZGV4LCBpbnN0YW5jZVByb3BzKS5vZmZzZXQgPCBvZmZzZXQpIHtcbiAgICBpbmRleCArPSBpbnRlcnZhbDtcbiAgICBpbnRlcnZhbCAqPSAyO1xuICB9XG5cbiAgcmV0dXJuIGZpbmROZWFyZXN0SXRlbUJpbmFyeVNlYXJjaCQxKHByb3BzLCBpbnN0YW5jZVByb3BzLCBNYXRoLm1pbihpbmRleCwgaXRlbUNvdW50IC0gMSksIE1hdGguZmxvb3IoaW5kZXggLyAyKSwgb2Zmc2V0KTtcbn07XG5cbnZhciBnZXRFc3RpbWF0ZWRUb3RhbFNpemUgPSBmdW5jdGlvbiBnZXRFc3RpbWF0ZWRUb3RhbFNpemUoX3JlZjIsIF9yZWYzKSB7XG4gIHZhciBpdGVtQ291bnQgPSBfcmVmMi5pdGVtQ291bnQ7XG4gIHZhciBpdGVtTWV0YWRhdGFNYXAgPSBfcmVmMy5pdGVtTWV0YWRhdGFNYXAsXG4gICAgICBlc3RpbWF0ZWRJdGVtU2l6ZSA9IF9yZWYzLmVzdGltYXRlZEl0ZW1TaXplLFxuICAgICAgbGFzdE1lYXN1cmVkSW5kZXggPSBfcmVmMy5sYXN0TWVhc3VyZWRJbmRleDtcbiAgdmFyIHRvdGFsU2l6ZU9mTWVhc3VyZWRJdGVtcyA9IDA7IC8vIEVkZ2UgY2FzZSBjaGVjayBmb3Igd2hlbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRlY3JlYXNlcyB3aGlsZSBhIHNjcm9sbCBpcyBpbiBwcm9ncmVzcy5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2J2YXVnaG4vcmVhY3Qtd2luZG93L3B1bGwvMTM4XG5cbiAgaWYgKGxhc3RNZWFzdXJlZEluZGV4ID49IGl0ZW1Db3VudCkge1xuICAgIGxhc3RNZWFzdXJlZEluZGV4ID0gaXRlbUNvdW50IC0gMTtcbiAgfVxuXG4gIGlmIChsYXN0TWVhc3VyZWRJbmRleCA+PSAwKSB7XG4gICAgdmFyIGl0ZW1NZXRhZGF0YSA9IGl0ZW1NZXRhZGF0YU1hcFtsYXN0TWVhc3VyZWRJbmRleF07XG4gICAgdG90YWxTaXplT2ZNZWFzdXJlZEl0ZW1zID0gaXRlbU1ldGFkYXRhLm9mZnNldCArIGl0ZW1NZXRhZGF0YS5zaXplO1xuICB9XG5cbiAgdmFyIG51bVVubWVhc3VyZWRJdGVtcyA9IGl0ZW1Db3VudCAtIGxhc3RNZWFzdXJlZEluZGV4IC0gMTtcbiAgdmFyIHRvdGFsU2l6ZU9mVW5tZWFzdXJlZEl0ZW1zID0gbnVtVW5tZWFzdXJlZEl0ZW1zICogZXN0aW1hdGVkSXRlbVNpemU7XG4gIHJldHVybiB0b3RhbFNpemVPZk1lYXN1cmVkSXRlbXMgKyB0b3RhbFNpemVPZlVubWVhc3VyZWRJdGVtcztcbn07XG5cbnZhciBWYXJpYWJsZVNpemVMaXN0ID0gLyojX19QVVJFX18qL2NyZWF0ZUxpc3RDb21wb25lbnQoe1xuICBnZXRJdGVtT2Zmc2V0OiBmdW5jdGlvbiBnZXRJdGVtT2Zmc2V0KHByb3BzLCBpbmRleCwgaW5zdGFuY2VQcm9wcykge1xuICAgIHJldHVybiBnZXRJdGVtTWV0YWRhdGEkMShwcm9wcywgaW5kZXgsIGluc3RhbmNlUHJvcHMpLm9mZnNldDtcbiAgfSxcbiAgZ2V0SXRlbVNpemU6IGZ1bmN0aW9uIGdldEl0ZW1TaXplKHByb3BzLCBpbmRleCwgaW5zdGFuY2VQcm9wcykge1xuICAgIHJldHVybiBpbnN0YW5jZVByb3BzLml0ZW1NZXRhZGF0YU1hcFtpbmRleF0uc2l6ZTtcbiAgfSxcbiAgZ2V0RXN0aW1hdGVkVG90YWxTaXplOiBnZXRFc3RpbWF0ZWRUb3RhbFNpemUsXG4gIGdldE9mZnNldEZvckluZGV4QW5kQWxpZ25tZW50OiBmdW5jdGlvbiBnZXRPZmZzZXRGb3JJbmRleEFuZEFsaWdubWVudChwcm9wcywgaW5kZXgsIGFsaWduLCBzY3JvbGxPZmZzZXQsIGluc3RhbmNlUHJvcHMsIHNjcm9sbGJhclNpemUpIHtcbiAgICB2YXIgZGlyZWN0aW9uID0gcHJvcHMuZGlyZWN0aW9uLFxuICAgICAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgICAgIGxheW91dCA9IHByb3BzLmxheW91dCxcbiAgICAgICAgd2lkdGggPSBwcm9wcy53aWR0aDsgLy8gVE9ETyBEZXByZWNhdGUgZGlyZWN0aW9uIFwiaG9yaXpvbnRhbFwiXG5cbiAgICB2YXIgaXNIb3Jpem9udGFsID0gZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgfHwgbGF5b3V0ID09PSAnaG9yaXpvbnRhbCc7XG4gICAgdmFyIHNpemUgPSBpc0hvcml6b250YWwgPyB3aWR0aCA6IGhlaWdodDtcbiAgICB2YXIgaXRlbU1ldGFkYXRhID0gZ2V0SXRlbU1ldGFkYXRhJDEocHJvcHMsIGluZGV4LCBpbnN0YW5jZVByb3BzKTsgLy8gR2V0IGVzdGltYXRlZCB0b3RhbCBzaXplIGFmdGVyIEl0ZW1NZXRhZGF0YSBpcyBjb21wdXRlZCxcbiAgICAvLyBUbyBlbnN1cmUgaXQgcmVmbGVjdHMgYWN0dWFsIG1lYXN1cmVtZW50cyBpbnN0ZWFkIG9mIGp1c3QgZXN0aW1hdGVzLlxuXG4gICAgdmFyIGVzdGltYXRlZFRvdGFsU2l6ZSA9IGdldEVzdGltYXRlZFRvdGFsU2l6ZShwcm9wcywgaW5zdGFuY2VQcm9wcyk7XG4gICAgdmFyIG1heE9mZnNldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGVzdGltYXRlZFRvdGFsU2l6ZSAtIHNpemUsIGl0ZW1NZXRhZGF0YS5vZmZzZXQpKTtcbiAgICB2YXIgbWluT2Zmc2V0ID0gTWF0aC5tYXgoMCwgaXRlbU1ldGFkYXRhLm9mZnNldCAtIHNpemUgKyBpdGVtTWV0YWRhdGEuc2l6ZSArIHNjcm9sbGJhclNpemUpO1xuXG4gICAgaWYgKGFsaWduID09PSAnc21hcnQnKSB7XG4gICAgICBpZiAoc2Nyb2xsT2Zmc2V0ID49IG1pbk9mZnNldCAtIHNpemUgJiYgc2Nyb2xsT2Zmc2V0IDw9IG1heE9mZnNldCArIHNpemUpIHtcbiAgICAgICAgYWxpZ24gPSAnYXV0byc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGlnbiA9ICdjZW50ZXInO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAoYWxpZ24pIHtcbiAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgcmV0dXJuIG1heE9mZnNldDtcblxuICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgcmV0dXJuIG1pbk9mZnNldDtcblxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobWluT2Zmc2V0ICsgKG1heE9mZnNldCAtIG1pbk9mZnNldCkgLyAyKTtcblxuICAgICAgY2FzZSAnYXV0byc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0ID49IG1pbk9mZnNldCAmJiBzY3JvbGxPZmZzZXQgPD0gbWF4T2Zmc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHNjcm9sbE9mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChzY3JvbGxPZmZzZXQgPCBtaW5PZmZzZXQpIHtcbiAgICAgICAgICByZXR1cm4gbWluT2Zmc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBtYXhPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgIH1cbiAgfSxcbiAgZ2V0U3RhcnRJbmRleEZvck9mZnNldDogZnVuY3Rpb24gZ2V0U3RhcnRJbmRleEZvck9mZnNldChwcm9wcywgb2Zmc2V0LCBpbnN0YW5jZVByb3BzKSB7XG4gICAgcmV0dXJuIGZpbmROZWFyZXN0SXRlbSQxKHByb3BzLCBpbnN0YW5jZVByb3BzLCBvZmZzZXQpO1xuICB9LFxuICBnZXRTdG9wSW5kZXhGb3JTdGFydEluZGV4OiBmdW5jdGlvbiBnZXRTdG9wSW5kZXhGb3JTdGFydEluZGV4KHByb3BzLCBzdGFydEluZGV4LCBzY3JvbGxPZmZzZXQsIGluc3RhbmNlUHJvcHMpIHtcbiAgICB2YXIgZGlyZWN0aW9uID0gcHJvcHMuZGlyZWN0aW9uLFxuICAgICAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgICAgIGl0ZW1Db3VudCA9IHByb3BzLml0ZW1Db3VudCxcbiAgICAgICAgbGF5b3V0ID0gcHJvcHMubGF5b3V0LFxuICAgICAgICB3aWR0aCA9IHByb3BzLndpZHRoOyAvLyBUT0RPIERlcHJlY2F0ZSBkaXJlY3Rpb24gXCJob3Jpem9udGFsXCJcblxuICAgIHZhciBpc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyB8fCBsYXlvdXQgPT09ICdob3Jpem9udGFsJztcbiAgICB2YXIgc2l6ZSA9IGlzSG9yaXpvbnRhbCA/IHdpZHRoIDogaGVpZ2h0O1xuICAgIHZhciBpdGVtTWV0YWRhdGEgPSBnZXRJdGVtTWV0YWRhdGEkMShwcm9wcywgc3RhcnRJbmRleCwgaW5zdGFuY2VQcm9wcyk7XG4gICAgdmFyIG1heE9mZnNldCA9IHNjcm9sbE9mZnNldCArIHNpemU7XG4gICAgdmFyIG9mZnNldCA9IGl0ZW1NZXRhZGF0YS5vZmZzZXQgKyBpdGVtTWV0YWRhdGEuc2l6ZTtcbiAgICB2YXIgc3RvcEluZGV4ID0gc3RhcnRJbmRleDtcblxuICAgIHdoaWxlIChzdG9wSW5kZXggPCBpdGVtQ291bnQgLSAxICYmIG9mZnNldCA8IG1heE9mZnNldCkge1xuICAgICAgc3RvcEluZGV4Kys7XG4gICAgICBvZmZzZXQgKz0gZ2V0SXRlbU1ldGFkYXRhJDEocHJvcHMsIHN0b3BJbmRleCwgaW5zdGFuY2VQcm9wcykuc2l6ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcEluZGV4O1xuICB9LFxuICBpbml0SW5zdGFuY2VQcm9wczogZnVuY3Rpb24gaW5pdEluc3RhbmNlUHJvcHMocHJvcHMsIGluc3RhbmNlKSB7XG4gICAgdmFyIF9yZWY0ID0gcHJvcHMsXG4gICAgICAgIGVzdGltYXRlZEl0ZW1TaXplID0gX3JlZjQuZXN0aW1hdGVkSXRlbVNpemU7XG4gICAgdmFyIGluc3RhbmNlUHJvcHMgPSB7XG4gICAgICBpdGVtTWV0YWRhdGFNYXA6IHt9LFxuICAgICAgZXN0aW1hdGVkSXRlbVNpemU6IGVzdGltYXRlZEl0ZW1TaXplIHx8IERFRkFVTFRfRVNUSU1BVEVEX0lURU1fU0laRSQxLFxuICAgICAgbGFzdE1lYXN1cmVkSW5kZXg6IC0xXG4gICAgfTtcblxuICAgIGluc3RhbmNlLnJlc2V0QWZ0ZXJJbmRleCA9IGZ1bmN0aW9uIChpbmRleCwgc2hvdWxkRm9yY2VVcGRhdGUpIHtcbiAgICAgIGlmIChzaG91bGRGb3JjZVVwZGF0ZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHNob3VsZEZvcmNlVXBkYXRlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaW5zdGFuY2VQcm9wcy5sYXN0TWVhc3VyZWRJbmRleCA9IE1hdGgubWluKGluc3RhbmNlUHJvcHMubGFzdE1lYXN1cmVkSW5kZXgsIGluZGV4IC0gMSk7IC8vIFdlIGNvdWxkIHBvdGVudGlhbGx5IG9wdGltaXplIGZ1cnRoZXIgYnkgb25seSBldmljdGluZyBzdHlsZXMgYWZ0ZXIgdGhpcyBpbmRleCxcbiAgICAgIC8vIEJ1dCBzaW5jZSBzdHlsZXMgYXJlIG9ubHkgY2FjaGVkIHdoaWxlIHNjcm9sbGluZyBpcyBpbiBwcm9ncmVzcy1cbiAgICAgIC8vIEl0IHNlZW1zIGFuIHVubmVjZXNzYXJ5IG9wdGltaXphdGlvbi5cbiAgICAgIC8vIEl0J3MgdW5saWtlbHkgdGhhdCByZXNldEFmdGVySW5kZXgoKSB3aWxsIGJlIGNhbGxlZCB3aGlsZSBhIHVzZXIgaXMgc2Nyb2xsaW5nLlxuXG4gICAgICBpbnN0YW5jZS5fZ2V0SXRlbVN0eWxlQ2FjaGUoLTEpO1xuXG4gICAgICBpZiAoc2hvdWxkRm9yY2VVcGRhdGUpIHtcbiAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIGluc3RhbmNlUHJvcHM7XG4gIH0sXG4gIHNob3VsZFJlc2V0U3R5bGVDYWNoZU9uSXRlbVNpemVDaGFuZ2U6IGZhbHNlLFxuICB2YWxpZGF0ZVByb3BzOiBmdW5jdGlvbiB2YWxpZGF0ZVByb3BzKF9yZWY1KSB7XG4gICAgdmFyIGl0ZW1TaXplID0gX3JlZjUuaXRlbVNpemU7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtU2l6ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBFcnJvcignQW4gaW52YWxpZCBcIml0ZW1TaXplXCIgcHJvcCBoYXMgYmVlbiBzcGVjaWZpZWQuICcgKyAnVmFsdWUgc2hvdWxkIGJlIGEgZnVuY3Rpb24uICcgKyAoXCJcXFwiXCIgKyAoaXRlbVNpemUgPT09IG51bGwgPyAnbnVsbCcgOiB0eXBlb2YgaXRlbVNpemUpICsgXCJcXFwiIHdhcyBzcGVjaWZpZWQuXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG52YXIgRml4ZWRTaXplR3JpZCA9IC8qI19fUFVSRV9fKi9jcmVhdGVHcmlkQ29tcG9uZW50KHtcbiAgZ2V0Q29sdW1uT2Zmc2V0OiBmdW5jdGlvbiBnZXRDb2x1bW5PZmZzZXQoX3JlZiwgaW5kZXgpIHtcbiAgICB2YXIgY29sdW1uV2lkdGggPSBfcmVmLmNvbHVtbldpZHRoO1xuICAgIHJldHVybiBpbmRleCAqIGNvbHVtbldpZHRoO1xuICB9LFxuICBnZXRDb2x1bW5XaWR0aDogZnVuY3Rpb24gZ2V0Q29sdW1uV2lkdGgoX3JlZjIsIGluZGV4KSB7XG4gICAgdmFyIGNvbHVtbldpZHRoID0gX3JlZjIuY29sdW1uV2lkdGg7XG4gICAgcmV0dXJuIGNvbHVtbldpZHRoO1xuICB9LFxuICBnZXRSb3dPZmZzZXQ6IGZ1bmN0aW9uIGdldFJvd09mZnNldChfcmVmMywgaW5kZXgpIHtcbiAgICB2YXIgcm93SGVpZ2h0ID0gX3JlZjMucm93SGVpZ2h0O1xuICAgIHJldHVybiBpbmRleCAqIHJvd0hlaWdodDtcbiAgfSxcbiAgZ2V0Um93SGVpZ2h0OiBmdW5jdGlvbiBnZXRSb3dIZWlnaHQoX3JlZjQsIGluZGV4KSB7XG4gICAgdmFyIHJvd0hlaWdodCA9IF9yZWY0LnJvd0hlaWdodDtcbiAgICByZXR1cm4gcm93SGVpZ2h0O1xuICB9LFxuICBnZXRFc3RpbWF0ZWRUb3RhbEhlaWdodDogZnVuY3Rpb24gZ2V0RXN0aW1hdGVkVG90YWxIZWlnaHQoX3JlZjUpIHtcbiAgICB2YXIgcm93Q291bnQgPSBfcmVmNS5yb3dDb3VudCxcbiAgICAgICAgcm93SGVpZ2h0ID0gX3JlZjUucm93SGVpZ2h0O1xuICAgIHJldHVybiByb3dIZWlnaHQgKiByb3dDb3VudDtcbiAgfSxcbiAgZ2V0RXN0aW1hdGVkVG90YWxXaWR0aDogZnVuY3Rpb24gZ2V0RXN0aW1hdGVkVG90YWxXaWR0aChfcmVmNikge1xuICAgIHZhciBjb2x1bW5Db3VudCA9IF9yZWY2LmNvbHVtbkNvdW50LFxuICAgICAgICBjb2x1bW5XaWR0aCA9IF9yZWY2LmNvbHVtbldpZHRoO1xuICAgIHJldHVybiBjb2x1bW5XaWR0aCAqIGNvbHVtbkNvdW50O1xuICB9LFxuICBnZXRPZmZzZXRGb3JDb2x1bW5BbmRBbGlnbm1lbnQ6IGZ1bmN0aW9uIGdldE9mZnNldEZvckNvbHVtbkFuZEFsaWdubWVudChfcmVmNywgY29sdW1uSW5kZXgsIGFsaWduLCBzY3JvbGxMZWZ0LCBpbnN0YW5jZVByb3BzLCBzY3JvbGxiYXJTaXplKSB7XG4gICAgdmFyIGNvbHVtbkNvdW50ID0gX3JlZjcuY29sdW1uQ291bnQsXG4gICAgICAgIGNvbHVtbldpZHRoID0gX3JlZjcuY29sdW1uV2lkdGgsXG4gICAgICAgIHdpZHRoID0gX3JlZjcud2lkdGg7XG4gICAgdmFyIGxhc3RDb2x1bW5PZmZzZXQgPSBNYXRoLm1heCgwLCBjb2x1bW5Db3VudCAqIGNvbHVtbldpZHRoIC0gd2lkdGgpO1xuICAgIHZhciBtYXhPZmZzZXQgPSBNYXRoLm1pbihsYXN0Q29sdW1uT2Zmc2V0LCBjb2x1bW5JbmRleCAqIGNvbHVtbldpZHRoKTtcbiAgICB2YXIgbWluT2Zmc2V0ID0gTWF0aC5tYXgoMCwgY29sdW1uSW5kZXggKiBjb2x1bW5XaWR0aCAtIHdpZHRoICsgc2Nyb2xsYmFyU2l6ZSArIGNvbHVtbldpZHRoKTtcblxuICAgIGlmIChhbGlnbiA9PT0gJ3NtYXJ0Jykge1xuICAgICAgaWYgKHNjcm9sbExlZnQgPj0gbWluT2Zmc2V0IC0gd2lkdGggJiYgc2Nyb2xsTGVmdCA8PSBtYXhPZmZzZXQgKyB3aWR0aCkge1xuICAgICAgICBhbGlnbiA9ICdhdXRvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWduID0gJ2NlbnRlcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChhbGlnbikge1xuICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICByZXR1cm4gbWF4T2Zmc2V0O1xuXG4gICAgICBjYXNlICdlbmQnOlxuICAgICAgICByZXR1cm4gbWluT2Zmc2V0O1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICAvLyBcIkNlbnRlcmVkXCIgb2Zmc2V0IGlzIHVzdWFsbHkgdGhlIGF2ZXJhZ2Ugb2YgdGhlIG1pbiBhbmQgbWF4LlxuICAgICAgICAvLyBCdXQgbmVhciB0aGUgZWRnZXMgb2YgdGhlIGxpc3QsIHRoaXMgZG9lc24ndCBob2xkIHRydWUuXG4gICAgICAgIHZhciBtaWRkbGVPZmZzZXQgPSBNYXRoLnJvdW5kKG1pbk9mZnNldCArIChtYXhPZmZzZXQgLSBtaW5PZmZzZXQpIC8gMik7XG5cbiAgICAgICAgaWYgKG1pZGRsZU9mZnNldCA8IE1hdGguY2VpbCh3aWR0aCAvIDIpKSB7XG4gICAgICAgICAgcmV0dXJuIDA7IC8vIG5lYXIgdGhlIGJlZ2lubmluZ1xuICAgICAgICB9IGVsc2UgaWYgKG1pZGRsZU9mZnNldCA+IGxhc3RDb2x1bW5PZmZzZXQgKyBNYXRoLmZsb29yKHdpZHRoIC8gMikpIHtcbiAgICAgICAgICByZXR1cm4gbGFzdENvbHVtbk9mZnNldDsgLy8gbmVhciB0aGUgZW5kXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG1pZGRsZU9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlICdhdXRvJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChzY3JvbGxMZWZ0ID49IG1pbk9mZnNldCAmJiBzY3JvbGxMZWZ0IDw9IG1heE9mZnNldCkge1xuICAgICAgICAgIHJldHVybiBzY3JvbGxMZWZ0O1xuICAgICAgICB9IGVsc2UgaWYgKG1pbk9mZnNldCA+IG1heE9mZnNldCkge1xuICAgICAgICAgIC8vIEJlY2F1c2Ugd2Ugb25seSB0YWtlIGludG8gYWNjb3VudCB0aGUgc2Nyb2xsYmFyIHNpemUgd2hlbiBjYWxjdWxhdGluZyBtaW5PZmZzZXRcbiAgICAgICAgICAvLyB0aGlzIHZhbHVlIGNhbiBiZSBsYXJnZXIgdGhhbiBtYXhPZmZzZXQgd2hlbiBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0XG4gICAgICAgICAgcmV0dXJuIG1pbk9mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChzY3JvbGxMZWZ0IDwgbWluT2Zmc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIG1pbk9mZnNldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbWF4T2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICB9XG4gIH0sXG4gIGdldE9mZnNldEZvclJvd0FuZEFsaWdubWVudDogZnVuY3Rpb24gZ2V0T2Zmc2V0Rm9yUm93QW5kQWxpZ25tZW50KF9yZWY4LCByb3dJbmRleCwgYWxpZ24sIHNjcm9sbFRvcCwgaW5zdGFuY2VQcm9wcywgc2Nyb2xsYmFyU2l6ZSkge1xuICAgIHZhciByb3dIZWlnaHQgPSBfcmVmOC5yb3dIZWlnaHQsXG4gICAgICAgIGhlaWdodCA9IF9yZWY4LmhlaWdodCxcbiAgICAgICAgcm93Q291bnQgPSBfcmVmOC5yb3dDb3VudDtcbiAgICB2YXIgbGFzdFJvd09mZnNldCA9IE1hdGgubWF4KDAsIHJvd0NvdW50ICogcm93SGVpZ2h0IC0gaGVpZ2h0KTtcbiAgICB2YXIgbWF4T2Zmc2V0ID0gTWF0aC5taW4obGFzdFJvd09mZnNldCwgcm93SW5kZXggKiByb3dIZWlnaHQpO1xuICAgIHZhciBtaW5PZmZzZXQgPSBNYXRoLm1heCgwLCByb3dJbmRleCAqIHJvd0hlaWdodCAtIGhlaWdodCArIHNjcm9sbGJhclNpemUgKyByb3dIZWlnaHQpO1xuXG4gICAgaWYgKGFsaWduID09PSAnc21hcnQnKSB7XG4gICAgICBpZiAoc2Nyb2xsVG9wID49IG1pbk9mZnNldCAtIGhlaWdodCAmJiBzY3JvbGxUb3AgPD0gbWF4T2Zmc2V0ICsgaGVpZ2h0KSB7XG4gICAgICAgIGFsaWduID0gJ2F1dG8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxpZ24gPSAnY2VudGVyJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKGFsaWduKSB7XG4gICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgIHJldHVybiBtYXhPZmZzZXQ7XG5cbiAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgIHJldHVybiBtaW5PZmZzZXQ7XG5cbiAgICAgIGNhc2UgJ2NlbnRlcic6XG4gICAgICAgIC8vIFwiQ2VudGVyZWRcIiBvZmZzZXQgaXMgdXN1YWxseSB0aGUgYXZlcmFnZSBvZiB0aGUgbWluIGFuZCBtYXguXG4gICAgICAgIC8vIEJ1dCBuZWFyIHRoZSBlZGdlcyBvZiB0aGUgbGlzdCwgdGhpcyBkb2Vzbid0IGhvbGQgdHJ1ZS5cbiAgICAgICAgdmFyIG1pZGRsZU9mZnNldCA9IE1hdGgucm91bmQobWluT2Zmc2V0ICsgKG1heE9mZnNldCAtIG1pbk9mZnNldCkgLyAyKTtcblxuICAgICAgICBpZiAobWlkZGxlT2Zmc2V0IDwgTWF0aC5jZWlsKGhlaWdodCAvIDIpKSB7XG4gICAgICAgICAgcmV0dXJuIDA7IC8vIG5lYXIgdGhlIGJlZ2lubmluZ1xuICAgICAgICB9IGVsc2UgaWYgKG1pZGRsZU9mZnNldCA+IGxhc3RSb3dPZmZzZXQgKyBNYXRoLmZsb29yKGhlaWdodCAvIDIpKSB7XG4gICAgICAgICAgcmV0dXJuIGxhc3RSb3dPZmZzZXQ7IC8vIG5lYXIgdGhlIGVuZFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBtaWRkbGVPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSAnYXV0byc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoc2Nyb2xsVG9wID49IG1pbk9mZnNldCAmJiBzY3JvbGxUb3AgPD0gbWF4T2Zmc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIHNjcm9sbFRvcDtcbiAgICAgICAgfSBlbHNlIGlmIChtaW5PZmZzZXQgPiBtYXhPZmZzZXQpIHtcbiAgICAgICAgICAvLyBCZWNhdXNlIHdlIG9ubHkgdGFrZSBpbnRvIGFjY291bnQgdGhlIHNjcm9sbGJhciBzaXplIHdoZW4gY2FsY3VsYXRpbmcgbWluT2Zmc2V0XG4gICAgICAgICAgLy8gdGhpcyB2YWx1ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gbWF4T2Zmc2V0IHdoZW4gYXQgdGhlIGVuZCBvZiB0aGUgbGlzdFxuICAgICAgICAgIHJldHVybiBtaW5PZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoc2Nyb2xsVG9wIDwgbWluT2Zmc2V0KSB7XG4gICAgICAgICAgcmV0dXJuIG1pbk9mZnNldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbWF4T2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICB9XG4gIH0sXG4gIGdldENvbHVtblN0YXJ0SW5kZXhGb3JPZmZzZXQ6IGZ1bmN0aW9uIGdldENvbHVtblN0YXJ0SW5kZXhGb3JPZmZzZXQoX3JlZjksIHNjcm9sbExlZnQpIHtcbiAgICB2YXIgY29sdW1uV2lkdGggPSBfcmVmOS5jb2x1bW5XaWR0aCxcbiAgICAgICAgY29sdW1uQ291bnQgPSBfcmVmOS5jb2x1bW5Db3VudDtcbiAgICByZXR1cm4gTWF0aC5tYXgoMCwgTWF0aC5taW4oY29sdW1uQ291bnQgLSAxLCBNYXRoLmZsb29yKHNjcm9sbExlZnQgLyBjb2x1bW5XaWR0aCkpKTtcbiAgfSxcbiAgZ2V0Q29sdW1uU3RvcEluZGV4Rm9yU3RhcnRJbmRleDogZnVuY3Rpb24gZ2V0Q29sdW1uU3RvcEluZGV4Rm9yU3RhcnRJbmRleChfcmVmMTAsIHN0YXJ0SW5kZXgsIHNjcm9sbExlZnQpIHtcbiAgICB2YXIgY29sdW1uV2lkdGggPSBfcmVmMTAuY29sdW1uV2lkdGgsXG4gICAgICAgIGNvbHVtbkNvdW50ID0gX3JlZjEwLmNvbHVtbkNvdW50LFxuICAgICAgICB3aWR0aCA9IF9yZWYxMC53aWR0aDtcbiAgICB2YXIgbGVmdCA9IHN0YXJ0SW5kZXggKiBjb2x1bW5XaWR0aDtcbiAgICB2YXIgbnVtVmlzaWJsZUNvbHVtbnMgPSBNYXRoLmNlaWwoKHdpZHRoICsgc2Nyb2xsTGVmdCAtIGxlZnQpIC8gY29sdW1uV2lkdGgpO1xuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbihjb2x1bW5Db3VudCAtIDEsIHN0YXJ0SW5kZXggKyBudW1WaXNpYmxlQ29sdW1ucyAtIDEgLy8gLTEgaXMgYmVjYXVzZSBzdG9wIGluZGV4IGlzIGluY2x1c2l2ZVxuICAgICkpO1xuICB9LFxuICBnZXRSb3dTdGFydEluZGV4Rm9yT2Zmc2V0OiBmdW5jdGlvbiBnZXRSb3dTdGFydEluZGV4Rm9yT2Zmc2V0KF9yZWYxMSwgc2Nyb2xsVG9wKSB7XG4gICAgdmFyIHJvd0hlaWdodCA9IF9yZWYxMS5yb3dIZWlnaHQsXG4gICAgICAgIHJvd0NvdW50ID0gX3JlZjExLnJvd0NvdW50O1xuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbihyb3dDb3VudCAtIDEsIE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSkpO1xuICB9LFxuICBnZXRSb3dTdG9wSW5kZXhGb3JTdGFydEluZGV4OiBmdW5jdGlvbiBnZXRSb3dTdG9wSW5kZXhGb3JTdGFydEluZGV4KF9yZWYxMiwgc3RhcnRJbmRleCwgc2Nyb2xsVG9wKSB7XG4gICAgdmFyIHJvd0hlaWdodCA9IF9yZWYxMi5yb3dIZWlnaHQsXG4gICAgICAgIHJvd0NvdW50ID0gX3JlZjEyLnJvd0NvdW50LFxuICAgICAgICBoZWlnaHQgPSBfcmVmMTIuaGVpZ2h0O1xuICAgIHZhciB0b3AgPSBzdGFydEluZGV4ICogcm93SGVpZ2h0O1xuICAgIHZhciBudW1WaXNpYmxlUm93cyA9IE1hdGguY2VpbCgoaGVpZ2h0ICsgc2Nyb2xsVG9wIC0gdG9wKSAvIHJvd0hlaWdodCk7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKHJvd0NvdW50IC0gMSwgc3RhcnRJbmRleCArIG51bVZpc2libGVSb3dzIC0gMSAvLyAtMSBpcyBiZWNhdXNlIHN0b3AgaW5kZXggaXMgaW5jbHVzaXZlXG4gICAgKSk7XG4gIH0sXG4gIGluaXRJbnN0YW5jZVByb3BzOiBmdW5jdGlvbiBpbml0SW5zdGFuY2VQcm9wcyhwcm9wcykgey8vIE5vb3BcbiAgfSxcbiAgc2hvdWxkUmVzZXRTdHlsZUNhY2hlT25JdGVtU2l6ZUNoYW5nZTogdHJ1ZSxcbiAgdmFsaWRhdGVQcm9wczogZnVuY3Rpb24gdmFsaWRhdGVQcm9wcyhfcmVmMTMpIHtcbiAgICB2YXIgY29sdW1uV2lkdGggPSBfcmVmMTMuY29sdW1uV2lkdGgsXG4gICAgICAgIHJvd0hlaWdodCA9IF9yZWYxMy5yb3dIZWlnaHQ7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBjb2x1bW5XaWR0aCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0FuIGludmFsaWQgXCJjb2x1bW5XaWR0aFwiIHByb3AgaGFzIGJlZW4gc3BlY2lmaWVkLiAnICsgJ1ZhbHVlIHNob3VsZCBiZSBhIG51bWJlci4gJyArIChcIlxcXCJcIiArIChjb2x1bW5XaWR0aCA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBjb2x1bW5XaWR0aCkgKyBcIlxcXCIgd2FzIHNwZWNpZmllZC5cIikpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHJvd0hlaWdodCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0FuIGludmFsaWQgXCJyb3dIZWlnaHRcIiBwcm9wIGhhcyBiZWVuIHNwZWNpZmllZC4gJyArICdWYWx1ZSBzaG91bGQgYmUgYSBudW1iZXIuICcgKyAoXCJcXFwiXCIgKyAocm93SGVpZ2h0ID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHJvd0hlaWdodCkgKyBcIlxcXCIgd2FzIHNwZWNpZmllZC5cIikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbnZhciBGaXhlZFNpemVMaXN0ID0gLyojX19QVVJFX18qL2NyZWF0ZUxpc3RDb21wb25lbnQoe1xuICBnZXRJdGVtT2Zmc2V0OiBmdW5jdGlvbiBnZXRJdGVtT2Zmc2V0KF9yZWYsIGluZGV4KSB7XG4gICAgdmFyIGl0ZW1TaXplID0gX3JlZi5pdGVtU2l6ZTtcbiAgICByZXR1cm4gaW5kZXggKiBpdGVtU2l6ZTtcbiAgfSxcbiAgZ2V0SXRlbVNpemU6IGZ1bmN0aW9uIGdldEl0ZW1TaXplKF9yZWYyLCBpbmRleCkge1xuICAgIHZhciBpdGVtU2l6ZSA9IF9yZWYyLml0ZW1TaXplO1xuICAgIHJldHVybiBpdGVtU2l6ZTtcbiAgfSxcbiAgZ2V0RXN0aW1hdGVkVG90YWxTaXplOiBmdW5jdGlvbiBnZXRFc3RpbWF0ZWRUb3RhbFNpemUoX3JlZjMpIHtcbiAgICB2YXIgaXRlbUNvdW50ID0gX3JlZjMuaXRlbUNvdW50LFxuICAgICAgICBpdGVtU2l6ZSA9IF9yZWYzLml0ZW1TaXplO1xuICAgIHJldHVybiBpdGVtU2l6ZSAqIGl0ZW1Db3VudDtcbiAgfSxcbiAgZ2V0T2Zmc2V0Rm9ySW5kZXhBbmRBbGlnbm1lbnQ6IGZ1bmN0aW9uIGdldE9mZnNldEZvckluZGV4QW5kQWxpZ25tZW50KF9yZWY0LCBpbmRleCwgYWxpZ24sIHNjcm9sbE9mZnNldCwgaW5zdGFuY2VQcm9wcywgc2Nyb2xsYmFyU2l6ZSkge1xuICAgIHZhciBkaXJlY3Rpb24gPSBfcmVmNC5kaXJlY3Rpb24sXG4gICAgICAgIGhlaWdodCA9IF9yZWY0LmhlaWdodCxcbiAgICAgICAgaXRlbUNvdW50ID0gX3JlZjQuaXRlbUNvdW50LFxuICAgICAgICBpdGVtU2l6ZSA9IF9yZWY0Lml0ZW1TaXplLFxuICAgICAgICBsYXlvdXQgPSBfcmVmNC5sYXlvdXQsXG4gICAgICAgIHdpZHRoID0gX3JlZjQud2lkdGg7XG4gICAgLy8gVE9ETyBEZXByZWNhdGUgZGlyZWN0aW9uIFwiaG9yaXpvbnRhbFwiXG4gICAgdmFyIGlzSG9yaXpvbnRhbCA9IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnIHx8IGxheW91dCA9PT0gJ2hvcml6b250YWwnO1xuICAgIHZhciBzaXplID0gaXNIb3Jpem9udGFsID8gd2lkdGggOiBoZWlnaHQ7XG4gICAgdmFyIGxhc3RJdGVtT2Zmc2V0ID0gTWF0aC5tYXgoMCwgaXRlbUNvdW50ICogaXRlbVNpemUgLSBzaXplKTtcbiAgICB2YXIgbWF4T2Zmc2V0ID0gTWF0aC5taW4obGFzdEl0ZW1PZmZzZXQsIGluZGV4ICogaXRlbVNpemUpO1xuICAgIHZhciBtaW5PZmZzZXQgPSBNYXRoLm1heCgwLCBpbmRleCAqIGl0ZW1TaXplIC0gc2l6ZSArIGl0ZW1TaXplICsgc2Nyb2xsYmFyU2l6ZSk7XG5cbiAgICBpZiAoYWxpZ24gPT09ICdzbWFydCcpIHtcbiAgICAgIGlmIChzY3JvbGxPZmZzZXQgPj0gbWluT2Zmc2V0IC0gc2l6ZSAmJiBzY3JvbGxPZmZzZXQgPD0gbWF4T2Zmc2V0ICsgc2l6ZSkge1xuICAgICAgICBhbGlnbiA9ICdhdXRvJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsaWduID0gJ2NlbnRlcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChhbGlnbikge1xuICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICByZXR1cm4gbWF4T2Zmc2V0O1xuXG4gICAgICBjYXNlICdlbmQnOlxuICAgICAgICByZXR1cm4gbWluT2Zmc2V0O1xuXG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICB7XG4gICAgICAgICAgLy8gXCJDZW50ZXJlZFwiIG9mZnNldCBpcyB1c3VhbGx5IHRoZSBhdmVyYWdlIG9mIHRoZSBtaW4gYW5kIG1heC5cbiAgICAgICAgICAvLyBCdXQgbmVhciB0aGUgZWRnZXMgb2YgdGhlIGxpc3QsIHRoaXMgZG9lc24ndCBob2xkIHRydWUuXG4gICAgICAgICAgdmFyIG1pZGRsZU9mZnNldCA9IE1hdGgucm91bmQobWluT2Zmc2V0ICsgKG1heE9mZnNldCAtIG1pbk9mZnNldCkgLyAyKTtcblxuICAgICAgICAgIGlmIChtaWRkbGVPZmZzZXQgPCBNYXRoLmNlaWwoc2l6ZSAvIDIpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDsgLy8gbmVhciB0aGUgYmVnaW5uaW5nXG4gICAgICAgICAgfSBlbHNlIGlmIChtaWRkbGVPZmZzZXQgPiBsYXN0SXRlbU9mZnNldCArIE1hdGguZmxvb3Ioc2l6ZSAvIDIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdEl0ZW1PZmZzZXQ7IC8vIG5lYXIgdGhlIGVuZFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbWlkZGxlT2Zmc2V0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICBjYXNlICdhdXRvJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChzY3JvbGxPZmZzZXQgPj0gbWluT2Zmc2V0ICYmIHNjcm9sbE9mZnNldCA8PSBtYXhPZmZzZXQpIHtcbiAgICAgICAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKHNjcm9sbE9mZnNldCA8IG1pbk9mZnNldCkge1xuICAgICAgICAgIHJldHVybiBtaW5PZmZzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG1heE9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgfVxuICB9LFxuICBnZXRTdGFydEluZGV4Rm9yT2Zmc2V0OiBmdW5jdGlvbiBnZXRTdGFydEluZGV4Rm9yT2Zmc2V0KF9yZWY1LCBvZmZzZXQpIHtcbiAgICB2YXIgaXRlbUNvdW50ID0gX3JlZjUuaXRlbUNvdW50LFxuICAgICAgICBpdGVtU2l6ZSA9IF9yZWY1Lml0ZW1TaXplO1xuICAgIHJldHVybiBNYXRoLm1heCgwLCBNYXRoLm1pbihpdGVtQ291bnQgLSAxLCBNYXRoLmZsb29yKG9mZnNldCAvIGl0ZW1TaXplKSkpO1xuICB9LFxuICBnZXRTdG9wSW5kZXhGb3JTdGFydEluZGV4OiBmdW5jdGlvbiBnZXRTdG9wSW5kZXhGb3JTdGFydEluZGV4KF9yZWY2LCBzdGFydEluZGV4LCBzY3JvbGxPZmZzZXQpIHtcbiAgICB2YXIgZGlyZWN0aW9uID0gX3JlZjYuZGlyZWN0aW9uLFxuICAgICAgICBoZWlnaHQgPSBfcmVmNi5oZWlnaHQsXG4gICAgICAgIGl0ZW1Db3VudCA9IF9yZWY2Lml0ZW1Db3VudCxcbiAgICAgICAgaXRlbVNpemUgPSBfcmVmNi5pdGVtU2l6ZSxcbiAgICAgICAgbGF5b3V0ID0gX3JlZjYubGF5b3V0LFxuICAgICAgICB3aWR0aCA9IF9yZWY2LndpZHRoO1xuICAgIC8vIFRPRE8gRGVwcmVjYXRlIGRpcmVjdGlvbiBcImhvcml6b250YWxcIlxuICAgIHZhciBpc0hvcml6b250YWwgPSBkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyB8fCBsYXlvdXQgPT09ICdob3Jpem9udGFsJztcbiAgICB2YXIgb2Zmc2V0ID0gc3RhcnRJbmRleCAqIGl0ZW1TaXplO1xuICAgIHZhciBzaXplID0gaXNIb3Jpem9udGFsID8gd2lkdGggOiBoZWlnaHQ7XG4gICAgdmFyIG51bVZpc2libGVJdGVtcyA9IE1hdGguY2VpbCgoc2l6ZSArIHNjcm9sbE9mZnNldCAtIG9mZnNldCkgLyBpdGVtU2l6ZSk7XG4gICAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWluKGl0ZW1Db3VudCAtIDEsIHN0YXJ0SW5kZXggKyBudW1WaXNpYmxlSXRlbXMgLSAxIC8vIC0xIGlzIGJlY2F1c2Ugc3RvcCBpbmRleCBpcyBpbmNsdXNpdmVcbiAgICApKTtcbiAgfSxcbiAgaW5pdEluc3RhbmNlUHJvcHM6IGZ1bmN0aW9uIGluaXRJbnN0YW5jZVByb3BzKHByb3BzKSB7Ly8gTm9vcFxuICB9LFxuICBzaG91bGRSZXNldFN0eWxlQ2FjaGVPbkl0ZW1TaXplQ2hhbmdlOiB0cnVlLFxuICB2YWxpZGF0ZVByb3BzOiBmdW5jdGlvbiB2YWxpZGF0ZVByb3BzKF9yZWY3KSB7XG4gICAgdmFyIGl0ZW1TaXplID0gX3JlZjcuaXRlbVNpemU7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtU2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ0FuIGludmFsaWQgXCJpdGVtU2l6ZVwiIHByb3AgaGFzIGJlZW4gc3BlY2lmaWVkLiAnICsgJ1ZhbHVlIHNob3VsZCBiZSBhIG51bWJlci4gJyArIChcIlxcXCJcIiArIChpdGVtU2l6ZSA9PT0gbnVsbCA/ICdudWxsJyA6IHR5cGVvZiBpdGVtU2l6ZSkgKyBcIlxcXCIgd2FzIHNwZWNpZmllZC5cIikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbi8vIFB1bGxlZCBmcm9tIHJlYWN0LWNvbXBhdFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2RldmVsb3BpdC9wcmVhY3QtY29tcGF0L2Jsb2IvN2M1ZGUwMGU3Yzg1ZTJmZmQwMTFiZjNhZjAyODk5YjYzZjY5OWQzYS9zcmMvaW5kZXguanMjTDM0OVxuZnVuY3Rpb24gc2hhbGxvd0RpZmZlcnMocHJldiwgbmV4dCkge1xuICBmb3IgKHZhciBhdHRyaWJ1dGUgaW4gcHJldikge1xuICAgIGlmICghKGF0dHJpYnV0ZSBpbiBuZXh0KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgX2F0dHJpYnV0ZSBpbiBuZXh0KSB7XG4gICAgaWYgKHByZXZbX2F0dHJpYnV0ZV0gIT09IG5leHRbX2F0dHJpYnV0ZV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxudmFyIF9leGNsdWRlZCA9IFtcInN0eWxlXCJdLFxuICAgIF9leGNsdWRlZDIgPSBbXCJzdHlsZVwiXTtcbi8vIEl0IGtub3dzIHRvIGNvbXBhcmUgaW5kaXZpZHVhbCBzdHlsZSBwcm9wcyBhbmQgaWdub3JlIHRoZSB3cmFwcGVyIG9iamVjdC5cbi8vIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RtZW1vXG5cbmZ1bmN0aW9uIGFyZUVxdWFsKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XG4gIHZhciBwcmV2U3R5bGUgPSBwcmV2UHJvcHMuc3R5bGUsXG4gICAgICBwcmV2UmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByZXZQcm9wcywgX2V4Y2x1ZGVkKTtcblxuICB2YXIgbmV4dFN0eWxlID0gbmV4dFByb3BzLnN0eWxlLFxuICAgICAgbmV4dFJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShuZXh0UHJvcHMsIF9leGNsdWRlZDIpO1xuXG4gIHJldHVybiAhc2hhbGxvd0RpZmZlcnMocHJldlN0eWxlLCBuZXh0U3R5bGUpICYmICFzaGFsbG93RGlmZmVycyhwcmV2UmVzdCwgbmV4dFJlc3QpO1xufVxuXG4vLyBJdCBrbm93cyB0byBjb21wYXJlIGluZGl2aWR1YWwgc3R5bGUgcHJvcHMgYW5kIGlnbm9yZSB0aGUgd3JhcHBlciBvYmplY3QuXG4vLyBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWNvbXBvbmVudC5odG1sI3Nob3VsZGNvbXBvbmVudHVwZGF0ZVxuXG5mdW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUpIHtcbiAgcmV0dXJuICFhcmVFcXVhbCh0aGlzLnByb3BzLCBuZXh0UHJvcHMpIHx8IHNoYWxsb3dEaWZmZXJzKHRoaXMuc3RhdGUsIG5leHRTdGF0ZSk7XG59XG5cbmV4cG9ydCB7IEZpeGVkU2l6ZUdyaWQsIEZpeGVkU2l6ZUxpc3QsIFZhcmlhYmxlU2l6ZUdyaWQsIFZhcmlhYmxlU2l6ZUxpc3QsIGFyZUVxdWFsLCBzaG91bGRDb21wb25lbnRVcGRhdGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzbS5qcy5tYXBcbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCBfc2xpY2VkVG9BcnJheSBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9zbGljZWRUb0FycmF5JztcbmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZCc7XG5pbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrJztcbmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MnO1xuaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4nO1xuaW1wb3J0IF9nZXRQcm90b3R5cGVPZiBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9nZXRQcm90b3R5cGVPZic7XG5pbXBvcnQgX2luaGVyaXRzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzJztcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZCc7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5JztcbmltcG9ydCB7IGNyZWF0ZVJlZiwgY3JlYXRlRWxlbWVudCwgQ29tcG9uZW50LCBjcmVhdGVDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZmluZERPTU5vZGUgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuaW1wb3J0IF90b0NvbnN1bWFibGVBcnJheSBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b0NvbnN1bWFibGVBcnJheSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG52YXIgTWFuYWdlciA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gTWFuYWdlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWFuYWdlcik7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkodGhpcywgXCJyZWZzXCIsIHt9KTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNYW5hZ2VyLCBbe1xuICAgIGtleTogXCJhZGRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkKGNvbGxlY3Rpb24sIHJlZikge1xuICAgICAgaWYgKCF0aGlzLnJlZnNbY29sbGVjdGlvbl0pIHtcbiAgICAgICAgdGhpcy5yZWZzW2NvbGxlY3Rpb25dID0gW107XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVmc1tjb2xsZWN0aW9uXS5wdXNoKHJlZik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmUoY29sbGVjdGlvbiwgcmVmKSB7XG4gICAgICB2YXIgaW5kZXggPSB0aGlzLmdldEluZGV4KGNvbGxlY3Rpb24sIHJlZik7XG5cbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5yZWZzW2NvbGxlY3Rpb25dLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImlzQWN0aXZlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzQWN0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRBY3RpdmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWN0aXZlKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIHRoaXMucmVmc1t0aGlzLmFjdGl2ZS5jb2xsZWN0aW9uXS5maW5kKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgIHZhciBub2RlID0gX3JlZi5ub2RlO1xuICAgICAgICByZXR1cm4gbm9kZS5zb3J0YWJsZUluZm8uaW5kZXggPT0gX3RoaXMuYWN0aXZlLmluZGV4O1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEluZGV4XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEluZGV4KGNvbGxlY3Rpb24sIHJlZikge1xuICAgICAgcmV0dXJuIHRoaXMucmVmc1tjb2xsZWN0aW9uXS5pbmRleE9mKHJlZik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldE9yZGVyZWRSZWZzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldE9yZGVyZWRSZWZzKCkge1xuICAgICAgdmFyIGNvbGxlY3Rpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHRoaXMuYWN0aXZlLmNvbGxlY3Rpb247XG4gICAgICByZXR1cm4gdGhpcy5yZWZzW2NvbGxlY3Rpb25dLnNvcnQoc29ydEJ5SW5kZXgpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBNYW5hZ2VyO1xufSgpO1xuXG5mdW5jdGlvbiBzb3J0QnlJbmRleChfcmVmMiwgX3JlZjMpIHtcbiAgdmFyIGluZGV4MSA9IF9yZWYyLm5vZGUuc29ydGFibGVJbmZvLmluZGV4O1xuICB2YXIgaW5kZXgyID0gX3JlZjMubm9kZS5zb3J0YWJsZUluZm8uaW5kZXg7XG4gIHJldHVybiBpbmRleDEgLSBpbmRleDI7XG59XG5cbmZ1bmN0aW9uIGFycmF5TW92ZShhcnJheSwgZnJvbSwgdG8pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJEZXByZWNhdGlvbiB3YXJuaW5nOiBhcnJheU1vdmUgd2lsbCBubyBsb25nZXIgYmUgZXhwb3J0ZWQgYnkgJ3JlYWN0LXNvcnRhYmxlLWhvYycgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4gUGxlYXNlIGluc3RhbGwgdGhlIGBhcnJheS1tb3ZlYCBwYWNrYWdlIGxvY2FsbHkgaW5zdGVhZC4gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvYXJyYXktbW92ZVwiKTtcbiAgICB9XG4gIH1cblxuICBhcnJheSA9IGFycmF5LnNsaWNlKCk7XG4gIGFycmF5LnNwbGljZSh0byA8IDAgPyBhcnJheS5sZW5ndGggKyB0byA6IHRvLCAwLCBhcnJheS5zcGxpY2UoZnJvbSwgMSlbMF0pO1xuICByZXR1cm4gYXJyYXk7XG59XG5mdW5jdGlvbiBvbWl0KG9iaiwga2V5c1RvT21pdCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywga2V5KSB7XG4gICAgaWYgKGtleXNUb09taXQuaW5kZXhPZihrZXkpID09PSAtMSkge1xuICAgICAgYWNjW2tleV0gPSBvYmpba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG52YXIgZXZlbnRzID0ge1xuICBlbmQ6IFsndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnLCAnbW91c2V1cCddLFxuICBtb3ZlOiBbJ3RvdWNobW92ZScsICdtb3VzZW1vdmUnXSxcbiAgc3RhcnQ6IFsndG91Y2hzdGFydCcsICdtb3VzZWRvd24nXVxufTtcbnZhciB2ZW5kb3JQcmVmaXggPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJycpIHx8IFsnLW1vei1oaWRkZW4taWZyYW1lJ107XG4gIHZhciBwcmUgPSAoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoc3R5bGVzKS5qb2luKCcnKS5tYXRjaCgvLShtb3p8d2Via2l0fG1zKS0vKSB8fCBzdHlsZXMuT0xpbmsgPT09ICcnICYmIFsnJywgJ28nXSlbMV07XG5cbiAgc3dpdGNoIChwcmUpIHtcbiAgICBjYXNlICdtcyc6XG4gICAgICByZXR1cm4gJ21zJztcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcHJlICYmIHByZS5sZW5ndGggPyBwcmVbMF0udG9VcHBlckNhc2UoKSArIHByZS5zdWJzdHIoMSkgOiAnJztcbiAgfVxufSgpO1xuZnVuY3Rpb24gc2V0SW5saW5lU3R5bGVzKG5vZGUsIHN0eWxlcykge1xuICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIG5vZGUuc3R5bGVba2V5XSA9IHN0eWxlc1trZXldO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHNldFRyYW5zbGF0ZTNkKG5vZGUsIHRyYW5zbGF0ZSkge1xuICBub2RlLnN0eWxlW1wiXCIuY29uY2F0KHZlbmRvclByZWZpeCwgXCJUcmFuc2Zvcm1cIildID0gdHJhbnNsYXRlID09IG51bGwgPyAnJyA6IFwidHJhbnNsYXRlM2QoXCIuY29uY2F0KHRyYW5zbGF0ZS54LCBcInB4LFwiKS5jb25jYXQodHJhbnNsYXRlLnksIFwicHgsMClcIik7XG59XG5mdW5jdGlvbiBzZXRUcmFuc2l0aW9uRHVyYXRpb24obm9kZSwgZHVyYXRpb24pIHtcbiAgbm9kZS5zdHlsZVtcIlwiLmNvbmNhdCh2ZW5kb3JQcmVmaXgsIFwiVHJhbnNpdGlvbkR1cmF0aW9uXCIpXSA9IGR1cmF0aW9uID09IG51bGwgPyAnJyA6IFwiXCIuY29uY2F0KGR1cmF0aW9uLCBcIm1zXCIpO1xufVxuZnVuY3Rpb24gY2xvc2VzdChlbCwgZm4pIHtcbiAgd2hpbGUgKGVsKSB7XG4gICAgaWYgKGZuKGVsKSkge1xuICAgICAgcmV0dXJuIGVsO1xuICAgIH1cblxuICAgIGVsID0gZWwucGFyZW50Tm9kZTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gbGltaXQobWluLCBtYXgsIHZhbHVlKSB7XG4gIHJldHVybiBNYXRoLm1heChtaW4sIE1hdGgubWluKHZhbHVlLCBtYXgpKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGl4ZWxWYWx1ZShzdHJpbmdWYWx1ZSkge1xuICBpZiAoc3RyaW5nVmFsdWUuc3Vic3RyKC0yKSA9PT0gJ3B4Jykge1xuICAgIHJldHVybiBwYXJzZUZsb2F0KHN0cmluZ1ZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBnZXRFbGVtZW50TWFyZ2luKGVsZW1lbnQpIHtcbiAgdmFyIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgYm90dG9tOiBnZXRQaXhlbFZhbHVlKHN0eWxlLm1hcmdpbkJvdHRvbSksXG4gICAgbGVmdDogZ2V0UGl4ZWxWYWx1ZShzdHlsZS5tYXJnaW5MZWZ0KSxcbiAgICByaWdodDogZ2V0UGl4ZWxWYWx1ZShzdHlsZS5tYXJnaW5SaWdodCksXG4gICAgdG9wOiBnZXRQaXhlbFZhbHVlKHN0eWxlLm1hcmdpblRvcClcbiAgfTtcbn1cbmZ1bmN0aW9uIHByb3ZpZGVEaXNwbGF5TmFtZShwcmVmaXgsIENvbXBvbmVudCQkMSkge1xuICB2YXIgY29tcG9uZW50TmFtZSA9IENvbXBvbmVudCQkMS5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQkJDEubmFtZTtcbiAgcmV0dXJuIGNvbXBvbmVudE5hbWUgPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiKFwiKS5jb25jYXQoY29tcG9uZW50TmFtZSwgXCIpXCIpIDogcHJlZml4O1xufVxuZnVuY3Rpb24gZ2V0U2Nyb2xsQWRqdXN0ZWRCb3VuZGluZ0NsaWVudFJlY3Qobm9kZSwgc2Nyb2xsRGVsdGEpIHtcbiAgdmFyIGJvdW5kaW5nQ2xpZW50UmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiBib3VuZGluZ0NsaWVudFJlY3QudG9wICsgc2Nyb2xsRGVsdGEudG9wLFxuICAgIGxlZnQ6IGJvdW5kaW5nQ2xpZW50UmVjdC5sZWZ0ICsgc2Nyb2xsRGVsdGEubGVmdFxuICB9O1xufVxuZnVuY3Rpb24gZ2V0UG9zaXRpb24oZXZlbnQpIHtcbiAgaWYgKGV2ZW50LnRvdWNoZXMgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogZXZlbnQudG91Y2hlc1swXS5wYWdlWCxcbiAgICAgIHk6IGV2ZW50LnRvdWNoZXNbMF0ucGFnZVlcbiAgICB9O1xuICB9IGVsc2UgaWYgKGV2ZW50LmNoYW5nZWRUb3VjaGVzICYmIGV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCxcbiAgICAgIHk6IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogZXZlbnQucGFnZVgsXG4gICAgICB5OiBldmVudC5wYWdlWVxuICAgIH07XG4gIH1cbn1cbmZ1bmN0aW9uIGlzVG91Y2hFdmVudChldmVudCkge1xuICByZXR1cm4gZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzLmxlbmd0aCB8fCBldmVudC5jaGFuZ2VkVG91Y2hlcyAmJiBldmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg7XG59XG5mdW5jdGlvbiBnZXRFZGdlT2Zmc2V0KG5vZGUsIHBhcmVudCkge1xuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7XG4gICAgbGVmdDogMCxcbiAgICB0b3A6IDBcbiAgfTtcblxuICBpZiAoIW5vZGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgdmFyIG5vZGVPZmZzZXQgPSB7XG4gICAgbGVmdDogb2Zmc2V0LmxlZnQgKyBub2RlLm9mZnNldExlZnQsXG4gICAgdG9wOiBvZmZzZXQudG9wICsgbm9kZS5vZmZzZXRUb3BcbiAgfTtcblxuICBpZiAobm9kZS5wYXJlbnROb2RlID09PSBwYXJlbnQpIHtcbiAgICByZXR1cm4gbm9kZU9mZnNldDtcbiAgfVxuXG4gIHJldHVybiBnZXRFZGdlT2Zmc2V0KG5vZGUucGFyZW50Tm9kZSwgcGFyZW50LCBub2RlT2Zmc2V0KTtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldEluZGV4KG5ld0luZGV4LCBwcmV2SW5kZXgsIG9sZEluZGV4KSB7XG4gIGlmIChuZXdJbmRleCA8IG9sZEluZGV4ICYmIG5ld0luZGV4ID4gcHJldkluZGV4KSB7XG4gICAgcmV0dXJuIG5ld0luZGV4IC0gMTtcbiAgfSBlbHNlIGlmIChuZXdJbmRleCA+IG9sZEluZGV4ICYmIG5ld0luZGV4IDwgcHJldkluZGV4KSB7XG4gICAgcmV0dXJuIG5ld0luZGV4ICsgMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3SW5kZXg7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldExvY2tQaXhlbE9mZnNldChfcmVmKSB7XG4gIHZhciBsb2NrT2Zmc2V0ID0gX3JlZi5sb2NrT2Zmc2V0LFxuICAgICAgd2lkdGggPSBfcmVmLndpZHRoLFxuICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gIHZhciBvZmZzZXRYID0gbG9ja09mZnNldDtcbiAgdmFyIG9mZnNldFkgPSBsb2NrT2Zmc2V0O1xuICB2YXIgdW5pdCA9ICdweCc7XG5cbiAgaWYgKHR5cGVvZiBsb2NrT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIHZhciBtYXRjaCA9IC9eWystXT9cXGQqKD86XFwuXFxkKik/KHB4fCUpJC8uZXhlYyhsb2NrT2Zmc2V0KTtcbiAgICBpbnZhcmlhbnQobWF0Y2ggIT09IG51bGwsICdsb2NrT2Zmc2V0IHZhbHVlIHNob3VsZCBiZSBhIG51bWJlciBvciBhIHN0cmluZyBvZiBhICcgKyAnbnVtYmVyIGZvbGxvd2VkIGJ5IFwicHhcIiBvciBcIiVcIi4gR2l2ZW4gJXMnLCBsb2NrT2Zmc2V0KTtcbiAgICBvZmZzZXRYID0gcGFyc2VGbG9hdChsb2NrT2Zmc2V0KTtcbiAgICBvZmZzZXRZID0gcGFyc2VGbG9hdChsb2NrT2Zmc2V0KTtcbiAgICB1bml0ID0gbWF0Y2hbMV07XG4gIH1cblxuICBpbnZhcmlhbnQoaXNGaW5pdGUob2Zmc2V0WCkgJiYgaXNGaW5pdGUob2Zmc2V0WSksICdsb2NrT2Zmc2V0IHZhbHVlIHNob3VsZCBiZSBhIGZpbml0ZS4gR2l2ZW4gJXMnLCBsb2NrT2Zmc2V0KTtcblxuICBpZiAodW5pdCA9PT0gJyUnKSB7XG4gICAgb2Zmc2V0WCA9IG9mZnNldFggKiB3aWR0aCAvIDEwMDtcbiAgICBvZmZzZXRZID0gb2Zmc2V0WSAqIGhlaWdodCAvIDEwMDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogb2Zmc2V0WCxcbiAgICB5OiBvZmZzZXRZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRMb2NrUGl4ZWxPZmZzZXRzKF9yZWYyKSB7XG4gIHZhciBoZWlnaHQgPSBfcmVmMi5oZWlnaHQsXG4gICAgICB3aWR0aCA9IF9yZWYyLndpZHRoLFxuICAgICAgbG9ja09mZnNldCA9IF9yZWYyLmxvY2tPZmZzZXQ7XG4gIHZhciBvZmZzZXRzID0gQXJyYXkuaXNBcnJheShsb2NrT2Zmc2V0KSA/IGxvY2tPZmZzZXQgOiBbbG9ja09mZnNldCwgbG9ja09mZnNldF07XG4gIGludmFyaWFudChvZmZzZXRzLmxlbmd0aCA9PT0gMiwgJ2xvY2tPZmZzZXQgcHJvcCBvZiBTb3J0YWJsZUNvbnRhaW5lciBzaG91bGQgYmUgYSBzaW5nbGUgJyArICd2YWx1ZSBvciBhbiBhcnJheSBvZiBleGFjdGx5IHR3byB2YWx1ZXMuIEdpdmVuICVzJywgbG9ja09mZnNldCk7XG5cbiAgdmFyIF9vZmZzZXRzID0gX3NsaWNlZFRvQXJyYXkob2Zmc2V0cywgMiksXG4gICAgICBtaW5Mb2NrT2Zmc2V0ID0gX29mZnNldHNbMF0sXG4gICAgICBtYXhMb2NrT2Zmc2V0ID0gX29mZnNldHNbMV07XG5cbiAgcmV0dXJuIFtnZXRMb2NrUGl4ZWxPZmZzZXQoe1xuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIGxvY2tPZmZzZXQ6IG1pbkxvY2tPZmZzZXQsXG4gICAgd2lkdGg6IHdpZHRoXG4gIH0pLCBnZXRMb2NrUGl4ZWxPZmZzZXQoe1xuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIGxvY2tPZmZzZXQ6IG1heExvY2tPZmZzZXQsXG4gICAgd2lkdGg6IHdpZHRoXG4gIH0pXTtcbn1cblxuZnVuY3Rpb24gaXNTY3JvbGxhYmxlKGVsKSB7XG4gIHZhciBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICB2YXIgb3ZlcmZsb3dSZWdleCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgdmFyIHByb3BlcnRpZXMgPSBbJ292ZXJmbG93JywgJ292ZXJmbG93WCcsICdvdmVyZmxvd1knXTtcbiAgcmV0dXJuIHByb3BlcnRpZXMuZmluZChmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dSZWdleC50ZXN0KGNvbXB1dGVkU3R5bGVbcHJvcGVydHldKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbGluZ1BhcmVudChlbCkge1xuICBpZiAoIShlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2UgaWYgKGlzU2Nyb2xsYWJsZShlbCkpIHtcbiAgICByZXR1cm4gZWw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldFNjcm9sbGluZ1BhcmVudChlbC5wYXJlbnROb2RlKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmVyR3JpZEdhcChlbGVtZW50KSB7XG4gIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gIGlmIChzdHlsZS5kaXNwbGF5ID09PSAnZ3JpZCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogZ2V0UGl4ZWxWYWx1ZShzdHlsZS5ncmlkQ29sdW1uR2FwKSxcbiAgICAgIHk6IGdldFBpeGVsVmFsdWUoc3R5bGUuZ3JpZFJvd0dhcClcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbn1cbnZhciBLRVlDT0RFID0ge1xuICBUQUI6IDksXG4gIEVTQzogMjcsXG4gIFNQQUNFOiAzMixcbiAgTEVGVDogMzcsXG4gIFVQOiAzOCxcbiAgUklHSFQ6IDM5LFxuICBET1dOOiA0MFxufTtcbnZhciBOb2RlVHlwZSA9IHtcbiAgQW5jaG9yOiAnQScsXG4gIEJ1dHRvbjogJ0JVVFRPTicsXG4gIENhbnZhczogJ0NBTlZBUycsXG4gIElucHV0OiAnSU5QVVQnLFxuICBPcHRpb246ICdPUFRJT04nLFxuICBUZXh0YXJlYTogJ1RFWFRBUkVBJyxcbiAgU2VsZWN0OiAnU0VMRUNUJ1xufTtcbmZ1bmN0aW9uIGNsb25lTm9kZShub2RlKSB7XG4gIHZhciBzZWxlY3RvciA9ICdpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgY2FudmFzLCBbY29udGVudGVkaXRhYmxlXSc7XG4gIHZhciBmaWVsZHMgPSBub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICB2YXIgY2xvbmVkTm9kZSA9IG5vZGUuY2xvbmVOb2RlKHRydWUpO1xuXG4gIHZhciBjbG9uZWRGaWVsZHMgPSBfdG9Db25zdW1hYmxlQXJyYXkoY2xvbmVkTm9kZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG5cbiAgY2xvbmVkRmllbGRzLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkLCBpKSB7XG4gICAgaWYgKGZpZWxkLnR5cGUgIT09ICdmaWxlJykge1xuICAgICAgZmllbGQudmFsdWUgPSBmaWVsZHNbaV0udmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyYWRpbycgJiYgZmllbGQubmFtZSkge1xuICAgICAgZmllbGQubmFtZSA9IFwiX19zb3J0YWJsZUNsb25lX19cIi5jb25jYXQoZmllbGQubmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkLnRhZ05hbWUgPT09IE5vZGVUeXBlLkNhbnZhcyAmJiBmaWVsZHNbaV0ud2lkdGggPiAwICYmIGZpZWxkc1tpXS5oZWlnaHQgPiAwKSB7XG4gICAgICB2YXIgZGVzdEN0eCA9IGZpZWxkLmdldENvbnRleHQoJzJkJyk7XG4gICAgICBkZXN0Q3R4LmRyYXdJbWFnZShmaWVsZHNbaV0sIDAsIDApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjbG9uZWROb2RlO1xufVxuXG5mdW5jdGlvbiBzb3J0YWJsZUhhbmRsZShXcmFwcGVkQ29tcG9uZW50KSB7XG4gIHZhciBfY2xhc3MsIF90ZW1wO1xuXG4gIHZhciBjb25maWcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHtcbiAgICB3aXRoUmVmOiBmYWxzZVxuICB9O1xuICByZXR1cm4gX3RlbXAgPSBfY2xhc3MgPSBmdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICAgIF9pbmhlcml0cyhXaXRoU29ydGFibGVIYW5kbGUsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gICAgZnVuY3Rpb24gV2l0aFNvcnRhYmxlSGFuZGxlKCkge1xuICAgICAgdmFyIF9nZXRQcm90b3R5cGVPZjI7XG5cbiAgICAgIHZhciBfdGhpcztcblxuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdpdGhTb3J0YWJsZUhhbmRsZSk7XG5cbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChfZ2V0UHJvdG90eXBlT2YyID0gX2dldFByb3RvdHlwZU9mKFdpdGhTb3J0YWJsZUhhbmRsZSkpLmNhbGwuYXBwbHkoX2dldFByb3RvdHlwZU9mMiwgW3RoaXNdLmNvbmNhdChhcmdzKSkpO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwid3JhcHBlZEluc3RhbmNlXCIsIGNyZWF0ZVJlZigpKTtcblxuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhXaXRoU29ydGFibGVIYW5kbGUsIFt7XG4gICAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBmaW5kRE9NTm9kZSh0aGlzKTtcbiAgICAgICAgbm9kZS5zb3J0YWJsZUhhbmRsZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldFdyYXBwZWRJbnN0YW5jZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFdyYXBwZWRJbnN0YW5jZSgpIHtcbiAgICAgICAgaW52YXJpYW50KGNvbmZpZy53aXRoUmVmLCAnVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBwYXNzIGluIHt3aXRoUmVmOiB0cnVlfSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBTb3J0YWJsZUhhbmRsZSgpIGNhbGwnKTtcbiAgICAgICAgcmV0dXJuIHRoaXMud3JhcHBlZEluc3RhbmNlLmN1cnJlbnQ7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInJlbmRlclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIHJlZiA9IGNvbmZpZy53aXRoUmVmID8gdGhpcy53cmFwcGVkSW5zdGFuY2UgOiBudWxsO1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChXcmFwcGVkQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgICAgICAgcmVmOiByZWZcbiAgICAgICAgfSwgdGhpcy5wcm9wcykpO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBXaXRoU29ydGFibGVIYW5kbGU7XG4gIH0oQ29tcG9uZW50KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJkaXNwbGF5TmFtZVwiLCBwcm92aWRlRGlzcGxheU5hbWUoJ3NvcnRhYmxlSGFuZGxlJywgV3JhcHBlZENvbXBvbmVudCkpLCBfdGVtcDtcbn1cbmZ1bmN0aW9uIGlzU29ydGFibGVIYW5kbGUobm9kZSkge1xuICByZXR1cm4gbm9kZS5zb3J0YWJsZUhhbmRsZSAhPSBudWxsO1xufVxuXG52YXIgQXV0b1Njcm9sbGVyID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBBdXRvU2Nyb2xsZXIoY29udGFpbmVyLCBvblNjcm9sbENhbGxiYWNrKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEF1dG9TY3JvbGxlcik7XG5cbiAgICB0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB0aGlzLm9uU2Nyb2xsQ2FsbGJhY2sgPSBvblNjcm9sbENhbGxiYWNrO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEF1dG9TY3JvbGxlciwgW3tcbiAgICBrZXk6IFwiY2xlYXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICBpZiAodGhpcy5pbnRlcnZhbCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlKF9yZWYpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciB0cmFuc2xhdGUgPSBfcmVmLnRyYW5zbGF0ZSxcbiAgICAgICAgICBtaW5UcmFuc2xhdGUgPSBfcmVmLm1pblRyYW5zbGF0ZSxcbiAgICAgICAgICBtYXhUcmFuc2xhdGUgPSBfcmVmLm1heFRyYW5zbGF0ZSxcbiAgICAgICAgICB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB2YXIgZGlyZWN0aW9uID0ge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwXG4gICAgICB9O1xuICAgICAgdmFyIHNwZWVkID0ge1xuICAgICAgICB4OiAxLFxuICAgICAgICB5OiAxXG4gICAgICB9O1xuICAgICAgdmFyIGFjY2VsZXJhdGlvbiA9IHtcbiAgICAgICAgeDogMTAsXG4gICAgICAgIHk6IDEwXG4gICAgICB9O1xuICAgICAgdmFyIF90aGlzJGNvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLFxuICAgICAgICAgIHNjcm9sbFRvcCA9IF90aGlzJGNvbnRhaW5lci5zY3JvbGxUb3AsXG4gICAgICAgICAgc2Nyb2xsTGVmdCA9IF90aGlzJGNvbnRhaW5lci5zY3JvbGxMZWZ0LFxuICAgICAgICAgIHNjcm9sbEhlaWdodCA9IF90aGlzJGNvbnRhaW5lci5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgc2Nyb2xsV2lkdGggPSBfdGhpcyRjb250YWluZXIuc2Nyb2xsV2lkdGgsXG4gICAgICAgICAgY2xpZW50SGVpZ2h0ID0gX3RoaXMkY29udGFpbmVyLmNsaWVudEhlaWdodCxcbiAgICAgICAgICBjbGllbnRXaWR0aCA9IF90aGlzJGNvbnRhaW5lci5jbGllbnRXaWR0aDtcbiAgICAgIHZhciBpc1RvcCA9IHNjcm9sbFRvcCA9PT0gMDtcbiAgICAgIHZhciBpc0JvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodCA9PT0gMDtcbiAgICAgIHZhciBpc0xlZnQgPSBzY3JvbGxMZWZ0ID09PSAwO1xuICAgICAgdmFyIGlzUmlnaHQgPSBzY3JvbGxXaWR0aCAtIHNjcm9sbExlZnQgLSBjbGllbnRXaWR0aCA9PT0gMDtcblxuICAgICAgaWYgKHRyYW5zbGF0ZS55ID49IG1heFRyYW5zbGF0ZS55IC0gaGVpZ2h0IC8gMiAmJiAhaXNCb3R0b20pIHtcbiAgICAgICAgZGlyZWN0aW9uLnkgPSAxO1xuICAgICAgICBzcGVlZC55ID0gYWNjZWxlcmF0aW9uLnkgKiBNYXRoLmFicygobWF4VHJhbnNsYXRlLnkgLSBoZWlnaHQgLyAyIC0gdHJhbnNsYXRlLnkpIC8gaGVpZ2h0KTtcbiAgICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlLnggPj0gbWF4VHJhbnNsYXRlLnggLSB3aWR0aCAvIDIgJiYgIWlzUmlnaHQpIHtcbiAgICAgICAgZGlyZWN0aW9uLnggPSAxO1xuICAgICAgICBzcGVlZC54ID0gYWNjZWxlcmF0aW9uLnggKiBNYXRoLmFicygobWF4VHJhbnNsYXRlLnggLSB3aWR0aCAvIDIgLSB0cmFuc2xhdGUueCkgLyB3aWR0aCk7XG4gICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZS55IDw9IG1pblRyYW5zbGF0ZS55ICsgaGVpZ2h0IC8gMiAmJiAhaXNUb3ApIHtcbiAgICAgICAgZGlyZWN0aW9uLnkgPSAtMTtcbiAgICAgICAgc3BlZWQueSA9IGFjY2VsZXJhdGlvbi55ICogTWF0aC5hYnMoKHRyYW5zbGF0ZS55IC0gaGVpZ2h0IC8gMiAtIG1pblRyYW5zbGF0ZS55KSAvIGhlaWdodCk7XG4gICAgICB9IGVsc2UgaWYgKHRyYW5zbGF0ZS54IDw9IG1pblRyYW5zbGF0ZS54ICsgd2lkdGggLyAyICYmICFpc0xlZnQpIHtcbiAgICAgICAgZGlyZWN0aW9uLnggPSAtMTtcbiAgICAgICAgc3BlZWQueCA9IGFjY2VsZXJhdGlvbi54ICogTWF0aC5hYnMoKHRyYW5zbGF0ZS54IC0gd2lkdGggLyAyIC0gbWluVHJhbnNsYXRlLngpIC8gd2lkdGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5pbnRlcnZhbCkge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaXNBdXRvU2Nyb2xsaW5nID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXJlY3Rpb24ueCAhPT0gMCB8fCBkaXJlY3Rpb24ueSAhPT0gMCkge1xuICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzLmlzQXV0b1Njcm9sbGluZyA9IHRydWU7XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHtcbiAgICAgICAgICAgIGxlZnQ6IHNwZWVkLnggKiBkaXJlY3Rpb24ueCxcbiAgICAgICAgICAgIHRvcDogc3BlZWQueSAqIGRpcmVjdGlvbi55XG4gICAgICAgICAgfTtcbiAgICAgICAgICBfdGhpcy5jb250YWluZXIuc2Nyb2xsVG9wICs9IG9mZnNldC50b3A7XG4gICAgICAgICAgX3RoaXMuY29udGFpbmVyLnNjcm9sbExlZnQgKz0gb2Zmc2V0LmxlZnQ7XG5cbiAgICAgICAgICBfdGhpcy5vblNjcm9sbENhbGxiYWNrKG9mZnNldCk7XG4gICAgICAgIH0sIDUpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBBdXRvU2Nyb2xsZXI7XG59KCk7XG5cbmZ1bmN0aW9uIGRlZmF1bHRHZXRIZWxwZXJEaW1lbnNpb25zKF9yZWYpIHtcbiAgdmFyIG5vZGUgPSBfcmVmLm5vZGU7XG4gIHJldHVybiB7XG4gICAgaGVpZ2h0OiBub2RlLm9mZnNldEhlaWdodCxcbiAgICB3aWR0aDogbm9kZS5vZmZzZXRXaWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0U2hvdWxkQ2FuY2VsU3RhcnQoZXZlbnQpIHtcbiAgdmFyIGludGVyYWN0aXZlRWxlbWVudHMgPSBbTm9kZVR5cGUuSW5wdXQsIE5vZGVUeXBlLlRleHRhcmVhLCBOb2RlVHlwZS5TZWxlY3QsIE5vZGVUeXBlLk9wdGlvbiwgTm9kZVR5cGUuQnV0dG9uXTtcblxuICBpZiAoaW50ZXJhY3RpdmVFbGVtZW50cy5pbmRleE9mKGV2ZW50LnRhcmdldC50YWdOYW1lKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChjbG9zZXN0KGV2ZW50LnRhcmdldCwgZnVuY3Rpb24gKGVsKSB7XG4gICAgcmV0dXJuIGVsLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnO1xuICB9KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG52YXIgcHJvcFR5cGVzID0ge1xuICBheGlzOiBQcm9wVHlwZXMub25lT2YoWyd4JywgJ3knLCAneHknXSksXG4gIGNvbnRlbnRXaW5kb3c6IFByb3BUeXBlcy5hbnksXG4gIGRpc2FibGVBdXRvc2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGlzdGFuY2U6IFByb3BUeXBlcy5udW1iZXIsXG4gIGdldENvbnRhaW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldEhlbHBlckRpbWVuc2lvbnM6IFByb3BUeXBlcy5mdW5jLFxuICBoZWxwZXJDbGFzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGVscGVyQ29udGFpbmVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgdHlwZW9mIEhUTUxFbGVtZW50ID09PSAndW5kZWZpbmVkJyA/IFByb3BUeXBlcy5hbnkgOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihIVE1MRWxlbWVudCldKSxcbiAgaGlkZVNvcnRhYmxlR2hvc3Q6IFByb3BUeXBlcy5ib29sLFxuICBrZXlib2FyZFNvcnRpbmdUcmFuc2l0aW9uRHVyYXRpb246IFByb3BUeXBlcy5udW1iZXIsXG4gIGxvY2tBeGlzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBsb2NrT2Zmc2V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkpXSksXG4gIGxvY2tUb0NvbnRhaW5lckVkZ2VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25Tb3J0RW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0TW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydE92ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnRTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG4gIHByZXNzRGVsYXk6IFByb3BUeXBlcy5udW1iZXIsXG4gIHByZXNzVGhyZXNob2xkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBrZXlDb2RlczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBsaWZ0OiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKSxcbiAgICBkcm9wOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKSxcbiAgICBjYW5jZWw6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpLFxuICAgIHVwOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKSxcbiAgICBkb3duOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKVxuICB9KSxcbiAgc2hvdWxkQ2FuY2VsU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICB0cmFuc2l0aW9uRHVyYXRpb246IFByb3BUeXBlcy5udW1iZXIsXG4gIHVwZGF0ZUJlZm9yZVNvcnRTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG4gIHVzZURyYWdIYW5kbGU6IFByb3BUeXBlcy5ib29sLFxuICB1c2VXaW5kb3dBc1Njcm9sbENvbnRhaW5lcjogUHJvcFR5cGVzLmJvb2xcbn07XG52YXIgZGVmYXVsdEtleUNvZGVzID0ge1xuICBsaWZ0OiBbS0VZQ09ERS5TUEFDRV0sXG4gIGRyb3A6IFtLRVlDT0RFLlNQQUNFXSxcbiAgY2FuY2VsOiBbS0VZQ09ERS5FU0NdLFxuICB1cDogW0tFWUNPREUuVVAsIEtFWUNPREUuTEVGVF0sXG4gIGRvd246IFtLRVlDT0RFLkRPV04sIEtFWUNPREUuUklHSFRdXG59O1xudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgYXhpczogJ3knLFxuICBkaXNhYmxlQXV0b3Njcm9sbDogZmFsc2UsXG4gIGRpc3RhbmNlOiAwLFxuICBnZXRIZWxwZXJEaW1lbnNpb25zOiBkZWZhdWx0R2V0SGVscGVyRGltZW5zaW9ucyxcbiAgaGlkZVNvcnRhYmxlR2hvc3Q6IHRydWUsXG4gIGxvY2tPZmZzZXQ6ICc1MCUnLFxuICBsb2NrVG9Db250YWluZXJFZGdlczogZmFsc2UsXG4gIHByZXNzRGVsYXk6IDAsXG4gIHByZXNzVGhyZXNob2xkOiA1LFxuICBrZXlDb2RlczogZGVmYXVsdEtleUNvZGVzLFxuICBzaG91bGRDYW5jZWxTdGFydDogZGVmYXVsdFNob3VsZENhbmNlbFN0YXJ0LFxuICB0cmFuc2l0aW9uRHVyYXRpb246IDMwMCxcbiAgdXNlV2luZG93QXNTY3JvbGxDb250YWluZXI6IGZhbHNlXG59O1xudmFyIG9taXR0ZWRQcm9wcyA9IE9iamVjdC5rZXlzKHByb3BUeXBlcyk7XG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BzKHByb3BzKSB7XG4gIGludmFyaWFudCghKHByb3BzLmRpc3RhbmNlICYmIHByb3BzLnByZXNzRGVsYXkpLCAnQXR0ZW1wdGVkIHRvIHNldCBib3RoIGBwcmVzc0RlbGF5YCBhbmQgYGRpc3RhbmNlYCBvbiBTb3J0YWJsZUNvbnRhaW5lciwgeW91IG1heSBvbmx5IHVzZSBvbmUgb3IgdGhlIG90aGVyLCBub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLicpO1xufVxuXG5mdW5jdGlvbiBfZmluYWxseVJldGhyb3dzKGJvZHksIGZpbmFsaXplcikge1xuICB0cnkge1xuICAgIHZhciByZXN1bHQgPSBib2R5KCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmluYWxpemVyKHRydWUsIGUpO1xuICB9XG5cbiAgaWYgKHJlc3VsdCAmJiByZXN1bHQudGhlbikge1xuICAgIHJldHVybiByZXN1bHQudGhlbihmaW5hbGl6ZXIuYmluZChudWxsLCBmYWxzZSksIGZpbmFsaXplci5iaW5kKG51bGwsIHRydWUpKTtcbiAgfVxuXG4gIHJldHVybiBmaW5hbGl6ZXIoZmFsc2UsIHZhbHVlKTtcbn1cbnZhciBTb3J0YWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHtcbiAgbWFuYWdlcjoge31cbn0pO1xuZnVuY3Rpb24gc29ydGFibGVDb250YWluZXIoV3JhcHBlZENvbXBvbmVudCkge1xuICB2YXIgX2NsYXNzLCBfdGVtcDtcblxuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7XG4gICAgd2l0aFJlZjogZmFsc2VcbiAgfTtcbiAgcmV0dXJuIF90ZW1wID0gX2NsYXNzID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoV2l0aFNvcnRhYmxlQ29udGFpbmVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICAgIGZ1bmN0aW9uIFdpdGhTb3J0YWJsZUNvbnRhaW5lcihwcm9wcykge1xuICAgICAgdmFyIF90aGlzO1xuXG4gICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV2l0aFNvcnRhYmxlQ29udGFpbmVyKTtcblxuICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoV2l0aFNvcnRhYmxlQ29udGFpbmVyKS5jYWxsKHRoaXMsIHByb3BzKSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJoYW5kbGVTdGFydFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgICBkaXN0YW5jZSA9IF90aGlzJHByb3BzLmRpc3RhbmNlLFxuICAgICAgICAgICAgc2hvdWxkQ2FuY2VsU3RhcnQgPSBfdGhpcyRwcm9wcy5zaG91bGRDYW5jZWxTdGFydDtcblxuICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAyIHx8IHNob3VsZENhbmNlbFN0YXJ0KGV2ZW50KSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnRvdWNoZWQgPSB0cnVlO1xuICAgICAgICBfdGhpcy5wb3NpdGlvbiA9IGdldFBvc2l0aW9uKGV2ZW50KTtcbiAgICAgICAgdmFyIG5vZGUgPSBjbG9zZXN0KGV2ZW50LnRhcmdldCwgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVsLnNvcnRhYmxlSW5mbyAhPSBudWxsO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobm9kZSAmJiBub2RlLnNvcnRhYmxlSW5mbyAmJiBfdGhpcy5ub2RlSXNDaGlsZChub2RlKSAmJiAhX3RoaXMuc3RhdGUuc29ydGluZykge1xuICAgICAgICAgIHZhciB1c2VEcmFnSGFuZGxlID0gX3RoaXMucHJvcHMudXNlRHJhZ0hhbmRsZTtcbiAgICAgICAgICB2YXIgX25vZGUkc29ydGFibGVJbmZvID0gbm9kZS5zb3J0YWJsZUluZm8sXG4gICAgICAgICAgICAgIGluZGV4ID0gX25vZGUkc29ydGFibGVJbmZvLmluZGV4LFxuICAgICAgICAgICAgICBjb2xsZWN0aW9uID0gX25vZGUkc29ydGFibGVJbmZvLmNvbGxlY3Rpb24sXG4gICAgICAgICAgICAgIGRpc2FibGVkID0gX25vZGUkc29ydGFibGVJbmZvLmRpc2FibGVkO1xuXG4gICAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHVzZURyYWdIYW5kbGUgJiYgIWNsb3Nlc3QoZXZlbnQudGFyZ2V0LCBpc1NvcnRhYmxlSGFuZGxlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzLm1hbmFnZXIuYWN0aXZlID0ge1xuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbixcbiAgICAgICAgICAgIGluZGV4OiBpbmRleFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAoIWlzVG91Y2hFdmVudChldmVudCkgJiYgZXZlbnQudGFyZ2V0LnRhZ05hbWUgPT09IE5vZGVUeXBlLkFuY2hvcikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWRpc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMucHJvcHMucHJlc3NEZWxheSA9PT0gMCkge1xuICAgICAgICAgICAgICBfdGhpcy5oYW5kbGVQcmVzcyhldmVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBfdGhpcy5wcmVzc1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmhhbmRsZVByZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgfSwgX3RoaXMucHJvcHMucHJlc3NEZWxheSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcIm5vZGVJc0NoaWxkXCIsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLnNvcnRhYmxlSW5mby5tYW5hZ2VyID09PSBfdGhpcy5tYW5hZ2VyO1xuICAgICAgfSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJoYW5kbGVNb3ZlXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgICBkaXN0YW5jZSA9IF90aGlzJHByb3BzMi5kaXN0YW5jZSxcbiAgICAgICAgICAgIHByZXNzVGhyZXNob2xkID0gX3RoaXMkcHJvcHMyLnByZXNzVGhyZXNob2xkO1xuXG4gICAgICAgIGlmICghX3RoaXMuc3RhdGUuc29ydGluZyAmJiBfdGhpcy50b3VjaGVkICYmICFfdGhpcy5fYXdhaXRpbmdVcGRhdGVCZWZvcmVTb3J0U3RhcnQpIHtcbiAgICAgICAgICB2YXIgcG9zaXRpb24gPSBnZXRQb3NpdGlvbihldmVudCk7XG4gICAgICAgICAgdmFyIGRlbHRhID0ge1xuICAgICAgICAgICAgeDogX3RoaXMucG9zaXRpb24ueCAtIHBvc2l0aW9uLngsXG4gICAgICAgICAgICB5OiBfdGhpcy5wb3NpdGlvbi55IC0gcG9zaXRpb24ueVxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIGNvbWJpbmVkRGVsdGEgPSBNYXRoLmFicyhkZWx0YS54KSArIE1hdGguYWJzKGRlbHRhLnkpO1xuICAgICAgICAgIF90aGlzLmRlbHRhID0gZGVsdGE7XG5cbiAgICAgICAgICBpZiAoIWRpc3RhbmNlICYmICghcHJlc3NUaHJlc2hvbGQgfHwgY29tYmluZWREZWx0YSA+PSBwcmVzc1RocmVzaG9sZCkpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChfdGhpcy5jYW5jZWxUaW1lcik7XG4gICAgICAgICAgICBfdGhpcy5jYW5jZWxUaW1lciA9IHNldFRpbWVvdXQoX3RoaXMuY2FuY2VsLCAwKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRpc3RhbmNlICYmIGNvbWJpbmVkRGVsdGEgPj0gZGlzdGFuY2UgJiYgX3RoaXMubWFuYWdlci5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBfdGhpcy5oYW5kbGVQcmVzcyhldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImhhbmRsZUVuZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnRvdWNoZWQgPSBmYWxzZTtcblxuICAgICAgICBfdGhpcy5jYW5jZWwoKTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiY2FuY2VsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gX3RoaXMucHJvcHMuZGlzdGFuY2U7XG4gICAgICAgIHZhciBzb3J0aW5nID0gX3RoaXMuc3RhdGUuc29ydGluZztcblxuICAgICAgICBpZiAoIXNvcnRpbmcpIHtcbiAgICAgICAgICBpZiAoIWRpc3RhbmNlKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoX3RoaXMucHJlc3NUaW1lcik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMubWFuYWdlci5hY3RpdmUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImhhbmRsZVByZXNzXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBhY3RpdmUgPSBfdGhpcy5tYW5hZ2VyLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgdmFyIF90ZW1wNiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgdmFyIF90ZW1wNyA9IGZ1bmN0aW9uIF90ZW1wNygpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBfbm9kZS5zb3J0YWJsZUluZm8uaW5kZXg7XG4gICAgICAgICAgICAgICAgdmFyIG1hcmdpbiA9IGdldEVsZW1lbnRNYXJnaW4oX25vZGUpO1xuICAgICAgICAgICAgICAgIHZhciBncmlkR2FwID0gZ2V0Q29udGFpbmVyR3JpZEdhcChfdGhpcy5jb250YWluZXIpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lckJvdW5kaW5nUmVjdCA9IF90aGlzLnNjcm9sbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgICAgIHZhciBkaW1lbnNpb25zID0gX2dldEhlbHBlckRpbWVuc2lvbnMoe1xuICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgbm9kZTogX25vZGUsXG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBfY29sbGVjdGlvblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgX3RoaXMubm9kZSA9IF9ub2RlO1xuICAgICAgICAgICAgICAgIF90aGlzLm1hcmdpbiA9IG1hcmdpbjtcbiAgICAgICAgICAgICAgICBfdGhpcy5ncmlkR2FwID0gZ3JpZEdhcDtcbiAgICAgICAgICAgICAgICBfdGhpcy53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGg7XG4gICAgICAgICAgICAgICAgX3RoaXMuaGVpZ2h0ID0gZGltZW5zaW9ucy5oZWlnaHQ7XG4gICAgICAgICAgICAgICAgX3RoaXMubWFyZ2luT2Zmc2V0ID0ge1xuICAgICAgICAgICAgICAgICAgeDogX3RoaXMubWFyZ2luLmxlZnQgKyBfdGhpcy5tYXJnaW4ucmlnaHQgKyBfdGhpcy5ncmlkR2FwLngsXG4gICAgICAgICAgICAgICAgICB5OiBNYXRoLm1heChfdGhpcy5tYXJnaW4udG9wLCBfdGhpcy5tYXJnaW4uYm90dG9tLCBfdGhpcy5ncmlkR2FwLnkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBfdGhpcy5ib3VuZGluZ0NsaWVudFJlY3QgPSBfbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBfdGhpcy5jb250YWluZXJCb3VuZGluZ1JlY3QgPSBjb250YWluZXJCb3VuZGluZ1JlY3Q7XG4gICAgICAgICAgICAgICAgX3RoaXMuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICBfdGhpcy5uZXdJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIF90aGlzLmF4aXMgPSB7XG4gICAgICAgICAgICAgICAgICB4OiBfYXhpcy5pbmRleE9mKCd4JykgPj0gMCxcbiAgICAgICAgICAgICAgICAgIHk6IF9heGlzLmluZGV4T2YoJ3knKSA+PSAwXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBfdGhpcy5vZmZzZXRFZGdlID0gZ2V0RWRnZU9mZnNldChfbm9kZSwgX3RoaXMuY29udGFpbmVyKTtcblxuICAgICAgICAgICAgICAgIGlmIChfaXNLZXlTb3J0aW5nKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5pbml0aWFsT2Zmc2V0ID0gZ2V0UG9zaXRpb24oX29iamVjdFNwcmVhZCh7fSwgZXZlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZVg6IF90aGlzLmJvdW5kaW5nQ2xpZW50UmVjdC5sZWZ0LFxuICAgICAgICAgICAgICAgICAgICBwYWdlWTogX3RoaXMuYm91bmRpbmdDbGllbnRSZWN0LnRvcFxuICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5pbml0aWFsT2Zmc2V0ID0gZ2V0UG9zaXRpb24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF90aGlzLmluaXRpYWxTY3JvbGwgPSB7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiBfdGhpcy5zY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgICAgICAgIHRvcDogX3RoaXMuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdGlhbFdpbmRvd1Njcm9sbCA9IHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IHdpbmRvdy5wYWdlWE9mZnNldCxcbiAgICAgICAgICAgICAgICAgIHRvcDogd2luZG93LnBhZ2VZT2Zmc2V0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBfdGhpcy5oZWxwZXIgPSBfdGhpcy5oZWxwZXJDb250YWluZXIuYXBwZW5kQ2hpbGQoY2xvbmVOb2RlKF9ub2RlKSk7XG4gICAgICAgICAgICAgICAgc2V0SW5saW5lU3R5bGVzKF90aGlzLmhlbHBlciwge1xuICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiXCIuY29uY2F0KF90aGlzLmhlaWdodCwgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IFwiXCIuY29uY2F0KF90aGlzLmJvdW5kaW5nQ2xpZW50UmVjdC5sZWZ0IC0gbWFyZ2luLmxlZnQsIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgICAgICAgICAgICAgIHRvcDogXCJcIi5jb25jYXQoX3RoaXMuYm91bmRpbmdDbGllbnRSZWN0LnRvcCAtIG1hcmdpbi50b3AsIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICB3aWR0aDogXCJcIi5jb25jYXQoX3RoaXMud2lkdGgsIFwicHhcIilcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChfaXNLZXlTb3J0aW5nKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5oZWxwZXIuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoX2hpZGVTb3J0YWJsZUdob3N0KSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5zb3J0YWJsZUdob3N0ID0gX25vZGU7XG4gICAgICAgICAgICAgICAgICBzZXRJbmxpbmVTdHlsZXMoX25vZGUsIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF90aGlzLm1pblRyYW5zbGF0ZSA9IHt9O1xuICAgICAgICAgICAgICAgIF90aGlzLm1heFRyYW5zbGF0ZSA9IHt9O1xuXG4gICAgICAgICAgICAgICAgaWYgKF9pc0tleVNvcnRpbmcpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBfcmVmID0gX3VzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyID8ge1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfdGhpcy5jb250ZW50V2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogX3RoaXMuY29udGVudFdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgICAgICAgICAgICAgfSA6IF90aGlzLmNvbnRhaW5lckJvdW5kaW5nUmVjdCxcbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJUb3AgPSBfcmVmLnRvcCxcbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJMZWZ0ID0gX3JlZi5sZWZ0LFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcldpZHRoID0gX3JlZi53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJIZWlnaHQgPSBfcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lckJvdHRvbSA9IGNvbnRhaW5lclRvcCArIGNvbnRhaW5lckhlaWdodDtcbiAgICAgICAgICAgICAgICAgIHZhciBjb250YWluZXJSaWdodCA9IGNvbnRhaW5lckxlZnQgKyBjb250YWluZXJXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLmF4aXMueCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5taW5UcmFuc2xhdGUueCA9IGNvbnRhaW5lckxlZnQgLSBfdGhpcy5ib3VuZGluZ0NsaWVudFJlY3QubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMubWF4VHJhbnNsYXRlLnggPSBjb250YWluZXJSaWdodCAtIChfdGhpcy5ib3VuZGluZ0NsaWVudFJlY3QubGVmdCArIF90aGlzLndpZHRoKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLmF4aXMueSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5taW5UcmFuc2xhdGUueSA9IGNvbnRhaW5lclRvcCAtIF90aGlzLmJvdW5kaW5nQ2xpZW50UmVjdC50b3A7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLm1heFRyYW5zbGF0ZS55ID0gY29udGFpbmVyQm90dG9tIC0gKF90aGlzLmJvdW5kaW5nQ2xpZW50UmVjdC50b3AgKyBfdGhpcy5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuYXhpcy54KSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLm1pblRyYW5zbGF0ZS54ID0gKF91c2VXaW5kb3dBc1Njcm9sbENvbnRhaW5lciA/IDAgOiBjb250YWluZXJCb3VuZGluZ1JlY3QubGVmdCkgLSBfdGhpcy5ib3VuZGluZ0NsaWVudFJlY3QubGVmdCAtIF90aGlzLndpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMubWF4VHJhbnNsYXRlLnggPSAoX3VzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyID8gX3RoaXMuY29udGVudFdpbmRvdy5pbm5lcldpZHRoIDogY29udGFpbmVyQm91bmRpbmdSZWN0LmxlZnQgKyBjb250YWluZXJCb3VuZGluZ1JlY3Qud2lkdGgpIC0gX3RoaXMuYm91bmRpbmdDbGllbnRSZWN0LmxlZnQgLSBfdGhpcy53aWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5heGlzLnkpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMubWluVHJhbnNsYXRlLnkgPSAoX3VzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyID8gMCA6IGNvbnRhaW5lckJvdW5kaW5nUmVjdC50b3ApIC0gX3RoaXMuYm91bmRpbmdDbGllbnRSZWN0LnRvcCAtIF90aGlzLmhlaWdodCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLm1heFRyYW5zbGF0ZS55ID0gKF91c2VXaW5kb3dBc1Njcm9sbENvbnRhaW5lciA/IF90aGlzLmNvbnRlbnRXaW5kb3cuaW5uZXJIZWlnaHQgOiBjb250YWluZXJCb3VuZGluZ1JlY3QudG9wICsgY29udGFpbmVyQm91bmRpbmdSZWN0LmhlaWdodCkgLSBfdGhpcy5ib3VuZGluZ0NsaWVudFJlY3QudG9wIC0gX3RoaXMuaGVpZ2h0IC8gMjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoX2hlbHBlckNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICBfaGVscGVyQ2xhc3Muc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmhlbHBlci5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfdGhpcy5saXN0ZW5lck5vZGUgPSBldmVudC50b3VjaGVzID8gZXZlbnQudGFyZ2V0IDogX3RoaXMuY29udGVudFdpbmRvdztcblxuICAgICAgICAgICAgICAgIGlmIChfaXNLZXlTb3J0aW5nKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5saXN0ZW5lck5vZGUuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBfdGhpcy5oYW5kbGVLZXlFbmQsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICBfdGhpcy5saXN0ZW5lck5vZGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgX3RoaXMuaGFuZGxlS2V5RW5kLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgICAgX3RoaXMubGlzdGVuZXJOb2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBfdGhpcy5oYW5kbGVLZXlEb3duKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgZXZlbnRzLm1vdmUuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5saXN0ZW5lck5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF90aGlzLmhhbmRsZVNvcnRNb3ZlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIGV2ZW50cy5lbmQuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5saXN0ZW5lck5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF90aGlzLmhhbmRsZVNvcnRFbmQsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIHNvcnRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICBzb3J0aW5nSW5kZXg6IGluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoX29uU29ydFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICBfb25Tb3J0U3RhcnQoe1xuICAgICAgICAgICAgICAgICAgICBub2RlOiBfbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBfY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgaXNLZXlTb3J0aW5nOiBfaXNLZXlTb3J0aW5nLFxuICAgICAgICAgICAgICAgICAgICBub2RlczogX3RoaXMubWFuYWdlci5nZXRPcmRlcmVkUmVmcygpLFxuICAgICAgICAgICAgICAgICAgICBoZWxwZXI6IF90aGlzLmhlbHBlclxuICAgICAgICAgICAgICAgICAgfSwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChfaXNLZXlTb3J0aW5nKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5rZXlNb3ZlKDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMsXG4gICAgICAgICAgICAgICAgICBfYXhpcyA9IF90aGlzJHByb3BzMy5heGlzLFxuICAgICAgICAgICAgICAgICAgX2dldEhlbHBlckRpbWVuc2lvbnMgPSBfdGhpcyRwcm9wczMuZ2V0SGVscGVyRGltZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgIF9oZWxwZXJDbGFzcyA9IF90aGlzJHByb3BzMy5oZWxwZXJDbGFzcyxcbiAgICAgICAgICAgICAgICAgIF9oaWRlU29ydGFibGVHaG9zdCA9IF90aGlzJHByb3BzMy5oaWRlU29ydGFibGVHaG9zdCxcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZUJlZm9yZVNvcnRTdGFydCA9IF90aGlzJHByb3BzMy51cGRhdGVCZWZvcmVTb3J0U3RhcnQsXG4gICAgICAgICAgICAgICAgICBfb25Tb3J0U3RhcnQgPSBfdGhpcyRwcm9wczMub25Tb3J0U3RhcnQsXG4gICAgICAgICAgICAgICAgICBfdXNlV2luZG93QXNTY3JvbGxDb250YWluZXIgPSBfdGhpcyRwcm9wczMudXNlV2luZG93QXNTY3JvbGxDb250YWluZXI7XG4gICAgICAgICAgICAgIHZhciBfbm9kZSA9IGFjdGl2ZS5ub2RlLFxuICAgICAgICAgICAgICAgICAgX2NvbGxlY3Rpb24gPSBhY3RpdmUuY29sbGVjdGlvbjtcbiAgICAgICAgICAgICAgdmFyIF9pc0tleVNvcnRpbmcgPSBfdGhpcy5tYW5hZ2VyLmlzS2V5U29ydGluZztcblxuICAgICAgICAgICAgICB2YXIgX3RlbXA4ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdXBkYXRlQmVmb3JlU29ydFN0YXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICBfdGhpcy5fYXdhaXRpbmdVcGRhdGVCZWZvcmVTb3J0U3RhcnQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICB2YXIgX3RlbXA5ID0gX2ZpbmFsbHlSZXRocm93cyhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IF9ub2RlLnNvcnRhYmxlSW5mby5pbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1cGRhdGVCZWZvcmVTb3J0U3RhcnQoe1xuICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb246IF9jb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICBub2RlOiBfbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICBpc0tleVNvcnRpbmc6IF9pc0tleVNvcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgfSwgZXZlbnQpKS50aGVuKGZ1bmN0aW9uICgpIHt9KTtcbiAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChfd2FzVGhyb3duLCBfcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLl9hd2FpdGluZ1VwZGF0ZUJlZm9yZVNvcnRTdGFydCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3dhc1Rocm93bikgdGhyb3cgX3Jlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgaWYgKF90ZW1wOSAmJiBfdGVtcDkudGhlbikgcmV0dXJuIF90ZW1wOS50aGVuKGZ1bmN0aW9uICgpIHt9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0oKTtcblxuICAgICAgICAgICAgICByZXR1cm4gX3RlbXA4ICYmIF90ZW1wOC50aGVuID8gX3RlbXA4LnRoZW4oX3RlbXA3KSA6IF90ZW1wNyhfdGVtcDgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0oKTtcblxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoX3RlbXA2ICYmIF90ZW1wNi50aGVuID8gX3RlbXA2LnRoZW4oZnVuY3Rpb24gKCkge30pIDogdm9pZCAwKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJoYW5kbGVTb3J0TW92ZVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdmFyIG9uU29ydE1vdmUgPSBfdGhpcy5wcm9wcy5vblNvcnRNb3ZlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgZXZlbnQucHJldmVudERlZmF1bHQgPT09ICdmdW5jdGlvbicgJiYgZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy51cGRhdGVIZWxwZXJQb3NpdGlvbihldmVudCk7XG5cbiAgICAgICAgX3RoaXMuYW5pbWF0ZU5vZGVzKCk7XG5cbiAgICAgICAgX3RoaXMuYXV0b3Njcm9sbCgpO1xuXG4gICAgICAgIGlmIChvblNvcnRNb3ZlKSB7XG4gICAgICAgICAgb25Tb3J0TW92ZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiaGFuZGxlU29ydEVuZFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzLFxuICAgICAgICAgICAgaGlkZVNvcnRhYmxlR2hvc3QgPSBfdGhpcyRwcm9wczQuaGlkZVNvcnRhYmxlR2hvc3QsXG4gICAgICAgICAgICBvblNvcnRFbmQgPSBfdGhpcyRwcm9wczQub25Tb3J0RW5kO1xuICAgICAgICB2YXIgX3RoaXMkbWFuYWdlciA9IF90aGlzLm1hbmFnZXIsXG4gICAgICAgICAgICBjb2xsZWN0aW9uID0gX3RoaXMkbWFuYWdlci5hY3RpdmUuY29sbGVjdGlvbixcbiAgICAgICAgICAgIGlzS2V5U29ydGluZyA9IF90aGlzJG1hbmFnZXIuaXNLZXlTb3J0aW5nO1xuXG4gICAgICAgIHZhciBub2RlcyA9IF90aGlzLm1hbmFnZXIuZ2V0T3JkZXJlZFJlZnMoKTtcblxuICAgICAgICBpZiAoX3RoaXMubGlzdGVuZXJOb2RlKSB7XG4gICAgICAgICAgaWYgKGlzS2V5U29ydGluZykge1xuICAgICAgICAgICAgX3RoaXMubGlzdGVuZXJOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgX3RoaXMuaGFuZGxlS2V5RW5kLCB0cnVlKTtcblxuICAgICAgICAgICAgX3RoaXMubGlzdGVuZXJOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIF90aGlzLmhhbmRsZUtleUVuZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIF90aGlzLmxpc3RlbmVyTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgX3RoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV2ZW50cy5tb3ZlLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubGlzdGVuZXJOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfdGhpcy5oYW5kbGVTb3J0TW92ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGV2ZW50cy5lbmQuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnROYW1lKSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdGhpcy5saXN0ZW5lck5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF90aGlzLmhhbmRsZVNvcnRFbmQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuaGVscGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoX3RoaXMuaGVscGVyKTtcblxuICAgICAgICBpZiAoaGlkZVNvcnRhYmxlR2hvc3QgJiYgX3RoaXMuc29ydGFibGVHaG9zdCkge1xuICAgICAgICAgIHNldElubGluZVN0eWxlcyhfdGhpcy5zb3J0YWJsZUdob3N0LCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAnJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbm9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICB2YXIgX25vZGUyID0gbm9kZXNbaV07XG4gICAgICAgICAgdmFyIGVsID0gX25vZGUyLm5vZGU7XG4gICAgICAgICAgX25vZGUyLmVkZ2VPZmZzZXQgPSBudWxsO1xuICAgICAgICAgIF9ub2RlMi5ib3VuZGluZ0NsaWVudFJlY3QgPSBudWxsO1xuICAgICAgICAgIHNldFRyYW5zbGF0ZTNkKGVsLCBudWxsKTtcbiAgICAgICAgICBzZXRUcmFuc2l0aW9uRHVyYXRpb24oZWwsIG51bGwpO1xuICAgICAgICAgIF9ub2RlMi50cmFuc2xhdGUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuYXV0b1Njcm9sbGVyLmNsZWFyKCk7XG5cbiAgICAgICAgX3RoaXMubWFuYWdlci5hY3RpdmUgPSBudWxsO1xuICAgICAgICBfdGhpcy5tYW5hZ2VyLmlzS2V5U29ydGluZyA9IGZhbHNlO1xuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzb3J0aW5nOiBmYWxzZSxcbiAgICAgICAgICBzb3J0aW5nSW5kZXg6IG51bGxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvblNvcnRFbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBvblNvcnRFbmQoe1xuICAgICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbixcbiAgICAgICAgICAgIG5ld0luZGV4OiBfdGhpcy5uZXdJbmRleCxcbiAgICAgICAgICAgIG9sZEluZGV4OiBfdGhpcy5pbmRleCxcbiAgICAgICAgICAgIGlzS2V5U29ydGluZzogaXNLZXlTb3J0aW5nLFxuICAgICAgICAgICAgbm9kZXM6IG5vZGVzXG4gICAgICAgICAgfSwgZXZlbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMudG91Y2hlZCA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJhdXRvc2Nyb2xsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRpc2FibGVBdXRvc2Nyb2xsID0gX3RoaXMucHJvcHMuZGlzYWJsZUF1dG9zY3JvbGw7XG4gICAgICAgIHZhciBpc0tleVNvcnRpbmcgPSBfdGhpcy5tYW5hZ2VyLmlzS2V5U29ydGluZztcblxuICAgICAgICBpZiAoZGlzYWJsZUF1dG9zY3JvbGwpIHtcbiAgICAgICAgICBfdGhpcy5hdXRvU2Nyb2xsZXIuY2xlYXIoKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0tleVNvcnRpbmcpIHtcbiAgICAgICAgICB2YXIgdHJhbnNsYXRlID0gX29iamVjdFNwcmVhZCh7fSwgX3RoaXMudHJhbnNsYXRlKTtcblxuICAgICAgICAgIHZhciBzY3JvbGxYID0gMDtcbiAgICAgICAgICB2YXIgc2Nyb2xsWSA9IDA7XG5cbiAgICAgICAgICBpZiAoX3RoaXMuYXhpcy54KSB7XG4gICAgICAgICAgICB0cmFuc2xhdGUueCA9IE1hdGgubWluKF90aGlzLm1heFRyYW5zbGF0ZS54LCBNYXRoLm1heChfdGhpcy5taW5UcmFuc2xhdGUueCwgX3RoaXMudHJhbnNsYXRlLngpKTtcbiAgICAgICAgICAgIHNjcm9sbFggPSBfdGhpcy50cmFuc2xhdGUueCAtIHRyYW5zbGF0ZS54O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfdGhpcy5heGlzLnkpIHtcbiAgICAgICAgICAgIHRyYW5zbGF0ZS55ID0gTWF0aC5taW4oX3RoaXMubWF4VHJhbnNsYXRlLnksIE1hdGgubWF4KF90aGlzLm1pblRyYW5zbGF0ZS55LCBfdGhpcy50cmFuc2xhdGUueSkpO1xuICAgICAgICAgICAgc2Nyb2xsWSA9IF90aGlzLnRyYW5zbGF0ZS55IC0gdHJhbnNsYXRlLnk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX3RoaXMudHJhbnNsYXRlID0gdHJhbnNsYXRlO1xuICAgICAgICAgIHNldFRyYW5zbGF0ZTNkKF90aGlzLmhlbHBlciwgX3RoaXMudHJhbnNsYXRlKTtcbiAgICAgICAgICBfdGhpcy5zY3JvbGxDb250YWluZXIuc2Nyb2xsTGVmdCArPSBzY3JvbGxYO1xuICAgICAgICAgIF90aGlzLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgKz0gc2Nyb2xsWTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5hdXRvU2Nyb2xsZXIudXBkYXRlKHtcbiAgICAgICAgICBoZWlnaHQ6IF90aGlzLmhlaWdodCxcbiAgICAgICAgICBtYXhUcmFuc2xhdGU6IF90aGlzLm1heFRyYW5zbGF0ZSxcbiAgICAgICAgICBtaW5UcmFuc2xhdGU6IF90aGlzLm1pblRyYW5zbGF0ZSxcbiAgICAgICAgICB0cmFuc2xhdGU6IF90aGlzLnRyYW5zbGF0ZSxcbiAgICAgICAgICB3aWR0aDogX3RoaXMud2lkdGhcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcIm9uQXV0b1Njcm9sbFwiLCBmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICAgIF90aGlzLnRyYW5zbGF0ZS54ICs9IG9mZnNldC5sZWZ0O1xuICAgICAgICBfdGhpcy50cmFuc2xhdGUueSArPSBvZmZzZXQudG9wO1xuXG4gICAgICAgIF90aGlzLmFuaW1hdGVOb2RlcygpO1xuICAgICAgfSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJoYW5kbGVLZXlEb3duXCIsIGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICB2YXIga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczUgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICAgIHNob3VsZENhbmNlbFN0YXJ0ID0gX3RoaXMkcHJvcHM1LnNob3VsZENhbmNlbFN0YXJ0LFxuICAgICAgICAgICAgX3RoaXMkcHJvcHM1JGtleUNvZGVzID0gX3RoaXMkcHJvcHM1LmtleUNvZGVzLFxuICAgICAgICAgICAgY3VzdG9tS2V5Q29kZXMgPSBfdGhpcyRwcm9wczUka2V5Q29kZXMgPT09IHZvaWQgMCA/IHt9IDogX3RoaXMkcHJvcHM1JGtleUNvZGVzO1xuXG4gICAgICAgIHZhciBrZXlDb2RlcyA9IF9vYmplY3RTcHJlYWQoe30sIGRlZmF1bHRLZXlDb2RlcywgY3VzdG9tS2V5Q29kZXMpO1xuXG4gICAgICAgIGlmIChfdGhpcy5tYW5hZ2VyLmFjdGl2ZSAmJiAhX3RoaXMubWFuYWdlci5pc0tleVNvcnRpbmcgfHwgIV90aGlzLm1hbmFnZXIuYWN0aXZlICYmICgha2V5Q29kZXMubGlmdC5pbmNsdWRlcyhrZXlDb2RlKSB8fCBzaG91bGRDYW5jZWxTdGFydChldmVudCkgfHwgIV90aGlzLmlzVmFsaWRTb3J0aW5nVGFyZ2V0KGV2ZW50KSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAoa2V5Q29kZXMubGlmdC5pbmNsdWRlcyhrZXlDb2RlKSAmJiAhX3RoaXMubWFuYWdlci5hY3RpdmUpIHtcbiAgICAgICAgICBfdGhpcy5rZXlMaWZ0KGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXlDb2Rlcy5kcm9wLmluY2x1ZGVzKGtleUNvZGUpICYmIF90aGlzLm1hbmFnZXIuYWN0aXZlKSB7XG4gICAgICAgICAgX3RoaXMua2V5RHJvcChldmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZXMuY2FuY2VsLmluY2x1ZGVzKGtleUNvZGUpKSB7XG4gICAgICAgICAgX3RoaXMubmV3SW5kZXggPSBfdGhpcy5tYW5hZ2VyLmFjdGl2ZS5pbmRleDtcblxuICAgICAgICAgIF90aGlzLmtleURyb3AoZXZlbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGVzLnVwLmluY2x1ZGVzKGtleUNvZGUpKSB7XG4gICAgICAgICAgX3RoaXMua2V5TW92ZSgtMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZXMuZG93bi5pbmNsdWRlcyhrZXlDb2RlKSkge1xuICAgICAgICAgIF90aGlzLmtleU1vdmUoMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwia2V5TGlmdFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgdmFyIG5vZGUgPSBjbG9zZXN0KHRhcmdldCwgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVsLnNvcnRhYmxlSW5mbyAhPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9ub2RlJHNvcnRhYmxlSW5mbzIgPSBub2RlLnNvcnRhYmxlSW5mbyxcbiAgICAgICAgICAgIGluZGV4ID0gX25vZGUkc29ydGFibGVJbmZvMi5pbmRleCxcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBfbm9kZSRzb3J0YWJsZUluZm8yLmNvbGxlY3Rpb247XG4gICAgICAgIF90aGlzLmluaXRpYWxGb2N1c2VkTm9kZSA9IHRhcmdldDtcbiAgICAgICAgX3RoaXMubWFuYWdlci5pc0tleVNvcnRpbmcgPSB0cnVlO1xuICAgICAgICBfdGhpcy5tYW5hZ2VyLmFjdGl2ZSA9IHtcbiAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvblxuICAgICAgICB9O1xuXG4gICAgICAgIF90aGlzLmhhbmRsZVByZXNzKGV2ZW50KTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwia2V5TW92ZVwiLCBmdW5jdGlvbiAoc2hpZnQpIHtcbiAgICAgICAgdmFyIG5vZGVzID0gX3RoaXMubWFuYWdlci5nZXRPcmRlcmVkUmVmcygpO1xuXG4gICAgICAgIHZhciBsYXN0SW5kZXggPSBub2Rlc1tub2Rlcy5sZW5ndGggLSAxXS5ub2RlLnNvcnRhYmxlSW5mby5pbmRleDtcbiAgICAgICAgdmFyIG5ld0luZGV4ID0gX3RoaXMubmV3SW5kZXggKyBzaGlmdDtcbiAgICAgICAgdmFyIHByZXZJbmRleCA9IF90aGlzLm5ld0luZGV4O1xuXG4gICAgICAgIGlmIChuZXdJbmRleCA8IDAgfHwgbmV3SW5kZXggPiBsYXN0SW5kZXgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgIF90aGlzLm5ld0luZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgIHZhciB0YXJnZXRJbmRleCA9IGdldFRhcmdldEluZGV4KF90aGlzLm5ld0luZGV4LCBfdGhpcy5wcmV2SW5kZXgsIF90aGlzLmluZGV4KTtcbiAgICAgICAgdmFyIHRhcmdldCA9IG5vZGVzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgdmFyIG5vZGUgPSBfcmVmMi5ub2RlO1xuICAgICAgICAgIHJldHVybiBub2RlLnNvcnRhYmxlSW5mby5pbmRleCA9PT0gdGFyZ2V0SW5kZXg7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldC5ub2RlO1xuICAgICAgICB2YXIgc2Nyb2xsRGVsdGEgPSBfdGhpcy5jb250YWluZXJTY3JvbGxEZWx0YTtcbiAgICAgICAgdmFyIHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9IHRhcmdldC5ib3VuZGluZ0NsaWVudFJlY3QgfHwgZ2V0U2Nyb2xsQWRqdXN0ZWRCb3VuZGluZ0NsaWVudFJlY3QodGFyZ2V0Tm9kZSwgc2Nyb2xsRGVsdGEpO1xuICAgICAgICB2YXIgdGFyZ2V0VHJhbnNsYXRlID0gdGFyZ2V0LnRyYW5zbGF0ZSB8fCB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiAwXG4gICAgICAgIH07XG4gICAgICAgIHZhciB0YXJnZXRQb3NpdGlvbiA9IHtcbiAgICAgICAgICB0b3A6IHRhcmdldEJvdW5kaW5nQ2xpZW50UmVjdC50b3AgKyB0YXJnZXRUcmFuc2xhdGUueSAtIHNjcm9sbERlbHRhLnRvcCxcbiAgICAgICAgICBsZWZ0OiB0YXJnZXRCb3VuZGluZ0NsaWVudFJlY3QubGVmdCArIHRhcmdldFRyYW5zbGF0ZS54IC0gc2Nyb2xsRGVsdGEubGVmdFxuICAgICAgICB9O1xuICAgICAgICB2YXIgc2hvdWxkQWRqdXN0Rm9yU2l6ZSA9IHByZXZJbmRleCA8IG5ld0luZGV4O1xuICAgICAgICB2YXIgc2l6ZUFkanVzdG1lbnQgPSB7XG4gICAgICAgICAgeDogc2hvdWxkQWRqdXN0Rm9yU2l6ZSAmJiBfdGhpcy5heGlzLnggPyB0YXJnZXROb2RlLm9mZnNldFdpZHRoIC0gX3RoaXMud2lkdGggOiAwLFxuICAgICAgICAgIHk6IHNob3VsZEFkanVzdEZvclNpemUgJiYgX3RoaXMuYXhpcy55ID8gdGFyZ2V0Tm9kZS5vZmZzZXRIZWlnaHQgLSBfdGhpcy5oZWlnaHQgOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgX3RoaXMuaGFuZGxlU29ydE1vdmUoe1xuICAgICAgICAgIHBhZ2VYOiB0YXJnZXRQb3NpdGlvbi5sZWZ0ICsgc2l6ZUFkanVzdG1lbnQueCxcbiAgICAgICAgICBwYWdlWTogdGFyZ2V0UG9zaXRpb24udG9wICsgc2l6ZUFkanVzdG1lbnQueSxcbiAgICAgICAgICBpZ25vcmVUcmFuc2l0aW9uOiBzaGlmdCA9PT0gMFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwia2V5RHJvcFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgX3RoaXMuaGFuZGxlU29ydEVuZChldmVudCk7XG5cbiAgICAgICAgaWYgKF90aGlzLmluaXRpYWxGb2N1c2VkTm9kZSkge1xuICAgICAgICAgIF90aGlzLmluaXRpYWxGb2N1c2VkTm9kZS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpLCBcImhhbmRsZUtleUVuZFwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKF90aGlzLm1hbmFnZXIuYWN0aXZlKSB7XG4gICAgICAgICAgX3RoaXMua2V5RHJvcChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSksIFwiaXNWYWxpZFNvcnRpbmdUYXJnZXRcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHZhciB1c2VEcmFnSGFuZGxlID0gX3RoaXMucHJvcHMudXNlRHJhZ0hhbmRsZTtcbiAgICAgICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgdmFyIG5vZGUgPSBjbG9zZXN0KHRhcmdldCwgZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgcmV0dXJuIGVsLnNvcnRhYmxlSW5mbyAhPSBudWxsO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS5zb3J0YWJsZUluZm8gJiYgIW5vZGUuc29ydGFibGVJbmZvLmRpc2FibGVkICYmICh1c2VEcmFnSGFuZGxlID8gaXNTb3J0YWJsZUhhbmRsZSh0YXJnZXQpIDogdGFyZ2V0LnNvcnRhYmxlSW5mbyk7XG4gICAgICB9KTtcblxuICAgICAgdmFyIG1hbmFnZXIgPSBuZXcgTWFuYWdlcigpO1xuICAgICAgdmFsaWRhdGVQcm9wcyhwcm9wcyk7XG4gICAgICBfdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgIF90aGlzLndyYXBwZWRJbnN0YW5jZSA9IGNyZWF0ZVJlZigpO1xuICAgICAgX3RoaXMuc29ydGFibGVDb250ZXh0VmFsdWUgPSB7XG4gICAgICAgIG1hbmFnZXI6IG1hbmFnZXJcbiAgICAgIH07XG4gICAgICBfdGhpcy5ldmVudHMgPSB7XG4gICAgICAgIGVuZDogX3RoaXMuaGFuZGxlRW5kLFxuICAgICAgICBtb3ZlOiBfdGhpcy5oYW5kbGVNb3ZlLFxuICAgICAgICBzdGFydDogX3RoaXMuaGFuZGxlU3RhcnRcbiAgICAgIH07XG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFdpdGhTb3J0YWJsZUNvbnRhaW5lciwgW3tcbiAgICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICB2YXIgdXNlV2luZG93QXNTY3JvbGxDb250YWluZXIgPSB0aGlzLnByb3BzLnVzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyO1xuICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpcy5nZXRDb250YWluZXIoKTtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGNvbnRhaW5lcikudGhlbihmdW5jdGlvbiAoY29udGFpbmVyTm9kZSkge1xuICAgICAgICAgIF90aGlzMi5jb250YWluZXIgPSBjb250YWluZXJOb2RlO1xuICAgICAgICAgIF90aGlzMi5kb2N1bWVudCA9IF90aGlzMi5jb250YWluZXIub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbiAgICAgICAgICB2YXIgY29udGVudFdpbmRvdyA9IF90aGlzMi5wcm9wcy5jb250ZW50V2luZG93IHx8IF90aGlzMi5kb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgICAgICAgX3RoaXMyLmNvbnRlbnRXaW5kb3cgPSB0eXBlb2YgY29udGVudFdpbmRvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbnRlbnRXaW5kb3coKSA6IGNvbnRlbnRXaW5kb3c7XG4gICAgICAgICAgX3RoaXMyLnNjcm9sbENvbnRhaW5lciA9IHVzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyID8gX3RoaXMyLmRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgfHwgX3RoaXMyLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA6IGdldFNjcm9sbGluZ1BhcmVudChfdGhpczIuY29udGFpbmVyKSB8fCBfdGhpczIuY29udGFpbmVyO1xuICAgICAgICAgIF90aGlzMi5hdXRvU2Nyb2xsZXIgPSBuZXcgQXV0b1Njcm9sbGVyKF90aGlzMi5zY3JvbGxDb250YWluZXIsIF90aGlzMi5vbkF1dG9TY3JvbGwpO1xuICAgICAgICAgIE9iamVjdC5rZXlzKF90aGlzMi5ldmVudHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGV2ZW50c1trZXldLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX3RoaXMyLmV2ZW50c1trZXldLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIF90aGlzMi5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIF90aGlzMi5oYW5kbGVLZXlEb3duKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAgIGlmICh0aGlzLmhlbHBlciAmJiB0aGlzLmhlbHBlci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgdGhpcy5oZWxwZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmhlbHBlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5ldmVudHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIHJldHVybiBldmVudHNba2V5XS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudE5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpczMuY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfdGhpczMuZXZlbnRzW2tleV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuaGFuZGxlS2V5RG93bik7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInVwZGF0ZUhlbHBlclBvc2l0aW9uXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlSGVscGVyUG9zaXRpb24oZXZlbnQpIHtcbiAgICAgICAgdmFyIF90aGlzJHByb3BzNiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgICBsb2NrQXhpcyA9IF90aGlzJHByb3BzNi5sb2NrQXhpcyxcbiAgICAgICAgICAgIGxvY2tPZmZzZXQgPSBfdGhpcyRwcm9wczYubG9ja09mZnNldCxcbiAgICAgICAgICAgIGxvY2tUb0NvbnRhaW5lckVkZ2VzID0gX3RoaXMkcHJvcHM2LmxvY2tUb0NvbnRhaW5lckVkZ2VzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHM2LnRyYW5zaXRpb25EdXJhdGlvbixcbiAgICAgICAgICAgIF90aGlzJHByb3BzNiRrZXlib2FyZCA9IF90aGlzJHByb3BzNi5rZXlib2FyZFNvcnRpbmdUcmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICAgICAgICBrZXlib2FyZFNvcnRpbmdUcmFuc2l0aW9uRHVyYXRpb24gPSBfdGhpcyRwcm9wczYka2V5Ym9hcmQgPT09IHZvaWQgMCA/IHRyYW5zaXRpb25EdXJhdGlvbiA6IF90aGlzJHByb3BzNiRrZXlib2FyZDtcbiAgICAgICAgdmFyIGlzS2V5U29ydGluZyA9IHRoaXMubWFuYWdlci5pc0tleVNvcnRpbmc7XG4gICAgICAgIHZhciBpZ25vcmVUcmFuc2l0aW9uID0gZXZlbnQuaWdub3JlVHJhbnNpdGlvbjtcbiAgICAgICAgdmFyIG9mZnNldCA9IGdldFBvc2l0aW9uKGV2ZW50KTtcbiAgICAgICAgdmFyIHRyYW5zbGF0ZSA9IHtcbiAgICAgICAgICB4OiBvZmZzZXQueCAtIHRoaXMuaW5pdGlhbE9mZnNldC54LFxuICAgICAgICAgIHk6IG9mZnNldC55IC0gdGhpcy5pbml0aWFsT2Zmc2V0LnlcbiAgICAgICAgfTtcbiAgICAgICAgdHJhbnNsYXRlLnkgLT0gd2luZG93LnBhZ2VZT2Zmc2V0IC0gdGhpcy5pbml0aWFsV2luZG93U2Nyb2xsLnRvcDtcbiAgICAgICAgdHJhbnNsYXRlLnggLT0gd2luZG93LnBhZ2VYT2Zmc2V0IC0gdGhpcy5pbml0aWFsV2luZG93U2Nyb2xsLmxlZnQ7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlID0gdHJhbnNsYXRlO1xuXG4gICAgICAgIGlmIChsb2NrVG9Db250YWluZXJFZGdlcykge1xuICAgICAgICAgIHZhciBfZ2V0TG9ja1BpeGVsT2Zmc2V0cyA9IGdldExvY2tQaXhlbE9mZnNldHMoe1xuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgICAgIGxvY2tPZmZzZXQ6IGxvY2tPZmZzZXQsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aFxuICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfZ2V0TG9ja1BpeGVsT2Zmc2V0czIgPSBfc2xpY2VkVG9BcnJheShfZ2V0TG9ja1BpeGVsT2Zmc2V0cywgMiksXG4gICAgICAgICAgICAgIG1pbkxvY2tPZmZzZXQgPSBfZ2V0TG9ja1BpeGVsT2Zmc2V0czJbMF0sXG4gICAgICAgICAgICAgIG1heExvY2tPZmZzZXQgPSBfZ2V0TG9ja1BpeGVsT2Zmc2V0czJbMV07XG5cbiAgICAgICAgICB2YXIgbWluT2Zmc2V0ID0ge1xuICAgICAgICAgICAgeDogdGhpcy53aWR0aCAvIDIgLSBtaW5Mb2NrT2Zmc2V0LngsXG4gICAgICAgICAgICB5OiB0aGlzLmhlaWdodCAvIDIgLSBtaW5Mb2NrT2Zmc2V0LnlcbiAgICAgICAgICB9O1xuICAgICAgICAgIHZhciBtYXhPZmZzZXQgPSB7XG4gICAgICAgICAgICB4OiB0aGlzLndpZHRoIC8gMiAtIG1heExvY2tPZmZzZXQueCxcbiAgICAgICAgICAgIHk6IHRoaXMuaGVpZ2h0IC8gMiAtIG1heExvY2tPZmZzZXQueVxuICAgICAgICAgIH07XG4gICAgICAgICAgdHJhbnNsYXRlLnggPSBsaW1pdCh0aGlzLm1pblRyYW5zbGF0ZS54ICsgbWluT2Zmc2V0LngsIHRoaXMubWF4VHJhbnNsYXRlLnggLSBtYXhPZmZzZXQueCwgdHJhbnNsYXRlLngpO1xuICAgICAgICAgIHRyYW5zbGF0ZS55ID0gbGltaXQodGhpcy5taW5UcmFuc2xhdGUueSArIG1pbk9mZnNldC55LCB0aGlzLm1heFRyYW5zbGF0ZS55IC0gbWF4T2Zmc2V0LnksIHRyYW5zbGF0ZS55KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2NrQXhpcyA9PT0gJ3gnKSB7XG4gICAgICAgICAgdHJhbnNsYXRlLnkgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGxvY2tBeGlzID09PSAneScpIHtcbiAgICAgICAgICB0cmFuc2xhdGUueCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNLZXlTb3J0aW5nICYmIGtleWJvYXJkU29ydGluZ1RyYW5zaXRpb25EdXJhdGlvbiAmJiAhaWdub3JlVHJhbnNpdGlvbikge1xuICAgICAgICAgIHNldFRyYW5zaXRpb25EdXJhdGlvbih0aGlzLmhlbHBlciwga2V5Ym9hcmRTb3J0aW5nVHJhbnNpdGlvbkR1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRyYW5zbGF0ZTNkKHRoaXMuaGVscGVyLCB0cmFuc2xhdGUpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJhbmltYXRlTm9kZXNcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBhbmltYXRlTm9kZXMoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczcgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHM3LnRyYW5zaXRpb25EdXJhdGlvbixcbiAgICAgICAgICAgIGhpZGVTb3J0YWJsZUdob3N0ID0gX3RoaXMkcHJvcHM3LmhpZGVTb3J0YWJsZUdob3N0LFxuICAgICAgICAgICAgb25Tb3J0T3ZlciA9IF90aGlzJHByb3BzNy5vblNvcnRPdmVyO1xuICAgICAgICB2YXIgY29udGFpbmVyU2Nyb2xsRGVsdGEgPSB0aGlzLmNvbnRhaW5lclNjcm9sbERlbHRhLFxuICAgICAgICAgICAgd2luZG93U2Nyb2xsRGVsdGEgPSB0aGlzLndpbmRvd1Njcm9sbERlbHRhO1xuICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLm1hbmFnZXIuZ2V0T3JkZXJlZFJlZnMoKTtcbiAgICAgICAgdmFyIHNvcnRpbmdPZmZzZXQgPSB7XG4gICAgICAgICAgbGVmdDogdGhpcy5vZmZzZXRFZGdlLmxlZnQgKyB0aGlzLnRyYW5zbGF0ZS54ICsgY29udGFpbmVyU2Nyb2xsRGVsdGEubGVmdCxcbiAgICAgICAgICB0b3A6IHRoaXMub2Zmc2V0RWRnZS50b3AgKyB0aGlzLnRyYW5zbGF0ZS55ICsgY29udGFpbmVyU2Nyb2xsRGVsdGEudG9wXG4gICAgICAgIH07XG4gICAgICAgIHZhciBpc0tleVNvcnRpbmcgPSB0aGlzLm1hbmFnZXIuaXNLZXlTb3J0aW5nO1xuICAgICAgICB2YXIgcHJldkluZGV4ID0gdGhpcy5uZXdJbmRleDtcbiAgICAgICAgdGhpcy5uZXdJbmRleCA9IG51bGw7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG5vZGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgdmFyIF9ub2RlMyA9IG5vZGVzW2ldLm5vZGU7XG4gICAgICAgICAgdmFyIGluZGV4ID0gX25vZGUzLnNvcnRhYmxlSW5mby5pbmRleDtcbiAgICAgICAgICB2YXIgd2lkdGggPSBfbm9kZTMub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgdmFyIGhlaWdodCA9IF9ub2RlMy5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHtcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQgPiBoZWlnaHQgPyBoZWlnaHQgLyAyIDogdGhpcy5oZWlnaHQgLyAyLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGggPiB3aWR0aCA/IHdpZHRoIC8gMiA6IHRoaXMud2lkdGggLyAyXG4gICAgICAgICAgfTtcbiAgICAgICAgICB2YXIgbXVzdFNoaWZ0QmFja3dhcmQgPSBpc0tleVNvcnRpbmcgJiYgaW5kZXggPiB0aGlzLmluZGV4ICYmIGluZGV4IDw9IHByZXZJbmRleDtcbiAgICAgICAgICB2YXIgbXVzdFNoaWZ0Rm9yd2FyZCA9IGlzS2V5U29ydGluZyAmJiBpbmRleCA8IHRoaXMuaW5kZXggJiYgaW5kZXggPj0gcHJldkluZGV4O1xuICAgICAgICAgIHZhciB0cmFuc2xhdGUgPSB7XG4gICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgeTogMFxuICAgICAgICAgIH07XG4gICAgICAgICAgdmFyIGVkZ2VPZmZzZXQgPSBub2Rlc1tpXS5lZGdlT2Zmc2V0O1xuXG4gICAgICAgICAgaWYgKCFlZGdlT2Zmc2V0KSB7XG4gICAgICAgICAgICBlZGdlT2Zmc2V0ID0gZ2V0RWRnZU9mZnNldChfbm9kZTMsIHRoaXMuY29udGFpbmVyKTtcbiAgICAgICAgICAgIG5vZGVzW2ldLmVkZ2VPZmZzZXQgPSBlZGdlT2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoaXNLZXlTb3J0aW5nKSB7XG4gICAgICAgICAgICAgIG5vZGVzW2ldLmJvdW5kaW5nQ2xpZW50UmVjdCA9IGdldFNjcm9sbEFkanVzdGVkQm91bmRpbmdDbGllbnRSZWN0KF9ub2RlMywgY29udGFpbmVyU2Nyb2xsRGVsdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBuZXh0Tm9kZSA9IGkgPCBub2Rlcy5sZW5ndGggLSAxICYmIG5vZGVzW2kgKyAxXTtcbiAgICAgICAgICB2YXIgcHJldk5vZGUgPSBpID4gMCAmJiBub2Rlc1tpIC0gMV07XG5cbiAgICAgICAgICBpZiAobmV4dE5vZGUgJiYgIW5leHROb2RlLmVkZ2VPZmZzZXQpIHtcbiAgICAgICAgICAgIG5leHROb2RlLmVkZ2VPZmZzZXQgPSBnZXRFZGdlT2Zmc2V0KG5leHROb2RlLm5vZGUsIHRoaXMuY29udGFpbmVyKTtcblxuICAgICAgICAgICAgaWYgKGlzS2V5U29ydGluZykge1xuICAgICAgICAgICAgICBuZXh0Tm9kZS5ib3VuZGluZ0NsaWVudFJlY3QgPSBnZXRTY3JvbGxBZGp1c3RlZEJvdW5kaW5nQ2xpZW50UmVjdChuZXh0Tm9kZS5ub2RlLCBjb250YWluZXJTY3JvbGxEZWx0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmluZGV4KSB7XG4gICAgICAgICAgICBpZiAoaGlkZVNvcnRhYmxlR2hvc3QpIHtcbiAgICAgICAgICAgICAgdGhpcy5zb3J0YWJsZUdob3N0ID0gX25vZGUzO1xuICAgICAgICAgICAgICBzZXRJbmxpbmVTdHlsZXMoX25vZGUzLCB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRyYW5zaXRpb25EdXJhdGlvbikge1xuICAgICAgICAgICAgc2V0VHJhbnNpdGlvbkR1cmF0aW9uKF9ub2RlMywgdHJhbnNpdGlvbkR1cmF0aW9uKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5heGlzLngpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmF4aXMueSkge1xuICAgICAgICAgICAgICBpZiAobXVzdFNoaWZ0Rm9yd2FyZCB8fCBpbmRleCA8IHRoaXMuaW5kZXggJiYgKHNvcnRpbmdPZmZzZXQubGVmdCArIHdpbmRvd1Njcm9sbERlbHRhLmxlZnQgLSBvZmZzZXQud2lkdGggPD0gZWRnZU9mZnNldC5sZWZ0ICYmIHNvcnRpbmdPZmZzZXQudG9wICsgd2luZG93U2Nyb2xsRGVsdGEudG9wIDw9IGVkZ2VPZmZzZXQudG9wICsgb2Zmc2V0LmhlaWdodCB8fCBzb3J0aW5nT2Zmc2V0LnRvcCArIHdpbmRvd1Njcm9sbERlbHRhLnRvcCArIG9mZnNldC5oZWlnaHQgPD0gZWRnZU9mZnNldC50b3ApKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlLnggPSB0aGlzLndpZHRoICsgdGhpcy5tYXJnaW5PZmZzZXQueDtcblxuICAgICAgICAgICAgICAgIGlmIChlZGdlT2Zmc2V0LmxlZnQgKyB0cmFuc2xhdGUueCA+IHRoaXMuY29udGFpbmVyQm91bmRpbmdSZWN0LndpZHRoIC0gb2Zmc2V0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobmV4dE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlLnggPSBuZXh0Tm9kZS5lZGdlT2Zmc2V0LmxlZnQgLSBlZGdlT2Zmc2V0LmxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZS55ID0gbmV4dE5vZGUuZWRnZU9mZnNldC50b3AgLSBlZGdlT2Zmc2V0LnRvcDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uZXdJbmRleCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5uZXdJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChtdXN0U2hpZnRCYWNrd2FyZCB8fCBpbmRleCA+IHRoaXMuaW5kZXggJiYgKHNvcnRpbmdPZmZzZXQubGVmdCArIHdpbmRvd1Njcm9sbERlbHRhLmxlZnQgKyBvZmZzZXQud2lkdGggPj0gZWRnZU9mZnNldC5sZWZ0ICYmIHNvcnRpbmdPZmZzZXQudG9wICsgd2luZG93U2Nyb2xsRGVsdGEudG9wICsgb2Zmc2V0LmhlaWdodCA+PSBlZGdlT2Zmc2V0LnRvcCB8fCBzb3J0aW5nT2Zmc2V0LnRvcCArIHdpbmRvd1Njcm9sbERlbHRhLnRvcCArIG9mZnNldC5oZWlnaHQgPj0gZWRnZU9mZnNldC50b3AgKyBoZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlLnggPSAtKHRoaXMud2lkdGggKyB0aGlzLm1hcmdpbk9mZnNldC54KTtcblxuICAgICAgICAgICAgICAgIGlmIChlZGdlT2Zmc2V0LmxlZnQgKyB0cmFuc2xhdGUueCA8IHRoaXMuY29udGFpbmVyQm91bmRpbmdSZWN0LmxlZnQgKyBvZmZzZXQud2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChwcmV2Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGUueCA9IHByZXZOb2RlLmVkZ2VPZmZzZXQubGVmdCAtIGVkZ2VPZmZzZXQubGVmdDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlLnkgPSBwcmV2Tm9kZS5lZGdlT2Zmc2V0LnRvcCAtIGVkZ2VPZmZzZXQudG9wO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubmV3SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKG11c3RTaGlmdEJhY2t3YXJkIHx8IGluZGV4ID4gdGhpcy5pbmRleCAmJiBzb3J0aW5nT2Zmc2V0LmxlZnQgKyB3aW5kb3dTY3JvbGxEZWx0YS5sZWZ0ICsgb2Zmc2V0LndpZHRoID49IGVkZ2VPZmZzZXQubGVmdCkge1xuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZS54ID0gLSh0aGlzLndpZHRoICsgdGhpcy5tYXJnaW5PZmZzZXQueCk7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXdJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG11c3RTaGlmdEZvcndhcmQgfHwgaW5kZXggPCB0aGlzLmluZGV4ICYmIHNvcnRpbmdPZmZzZXQubGVmdCArIHdpbmRvd1Njcm9sbERlbHRhLmxlZnQgPD0gZWRnZU9mZnNldC5sZWZ0ICsgb2Zmc2V0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlLnggPSB0aGlzLndpZHRoICsgdGhpcy5tYXJnaW5PZmZzZXQueDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5ld0luZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMubmV3SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXhpcy55KSB7XG4gICAgICAgICAgICBpZiAobXVzdFNoaWZ0QmFja3dhcmQgfHwgaW5kZXggPiB0aGlzLmluZGV4ICYmIHNvcnRpbmdPZmZzZXQudG9wICsgd2luZG93U2Nyb2xsRGVsdGEudG9wICsgb2Zmc2V0LmhlaWdodCA+PSBlZGdlT2Zmc2V0LnRvcCkge1xuICAgICAgICAgICAgICB0cmFuc2xhdGUueSA9IC0odGhpcy5oZWlnaHQgKyB0aGlzLm1hcmdpbk9mZnNldC55KTtcbiAgICAgICAgICAgICAgdGhpcy5uZXdJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtdXN0U2hpZnRGb3J3YXJkIHx8IGluZGV4IDwgdGhpcy5pbmRleCAmJiBzb3J0aW5nT2Zmc2V0LnRvcCArIHdpbmRvd1Njcm9sbERlbHRhLnRvcCA8PSBlZGdlT2Zmc2V0LnRvcCArIG9mZnNldC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLnkgPSB0aGlzLmhlaWdodCArIHRoaXMubWFyZ2luT2Zmc2V0Lnk7XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMubmV3SW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmV3SW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHNldFRyYW5zbGF0ZTNkKF9ub2RlMywgdHJhbnNsYXRlKTtcbiAgICAgICAgICBub2Rlc1tpXS50cmFuc2xhdGUgPSB0cmFuc2xhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5uZXdJbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5uZXdJbmRleCA9IHRoaXMuaW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNLZXlTb3J0aW5nKSB7XG4gICAgICAgICAgdGhpcy5uZXdJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBvbGRJbmRleCA9IGlzS2V5U29ydGluZyA/IHRoaXMucHJldkluZGV4IDogcHJldkluZGV4O1xuXG4gICAgICAgIGlmIChvblNvcnRPdmVyICYmIHRoaXMubmV3SW5kZXggIT09IG9sZEluZGV4KSB7XG4gICAgICAgICAgb25Tb3J0T3Zlcih7XG4gICAgICAgICAgICBjb2xsZWN0aW9uOiB0aGlzLm1hbmFnZXIuYWN0aXZlLmNvbGxlY3Rpb24sXG4gICAgICAgICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgICAgICAgIG5ld0luZGV4OiB0aGlzLm5ld0luZGV4LFxuICAgICAgICAgICAgb2xkSW5kZXg6IG9sZEluZGV4LFxuICAgICAgICAgICAgaXNLZXlTb3J0aW5nOiBpc0tleVNvcnRpbmcsXG4gICAgICAgICAgICBub2Rlczogbm9kZXMsXG4gICAgICAgICAgICBoZWxwZXI6IHRoaXMuaGVscGVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0V3JhcHBlZEluc3RhbmNlXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0V3JhcHBlZEluc3RhbmNlKCkge1xuICAgICAgICBpbnZhcmlhbnQoY29uZmlnLndpdGhSZWYsICdUbyBhY2Nlc3MgdGhlIHdyYXBwZWQgaW5zdGFuY2UsIHlvdSBuZWVkIHRvIHBhc3MgaW4ge3dpdGhSZWY6IHRydWV9IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIFNvcnRhYmxlQ29udGFpbmVyKCkgY2FsbCcpO1xuICAgICAgICByZXR1cm4gdGhpcy53cmFwcGVkSW5zdGFuY2UuY3VycmVudDtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwiZ2V0Q29udGFpbmVyXCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q29udGFpbmVyKCkge1xuICAgICAgICB2YXIgZ2V0Q29udGFpbmVyID0gdGhpcy5wcm9wcy5nZXRDb250YWluZXI7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBnZXRDb250YWluZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gZmluZERPTU5vZGUodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0Q29udGFpbmVyKGNvbmZpZy53aXRoUmVmID8gdGhpcy5nZXRXcmFwcGVkSW5zdGFuY2UoKSA6IHVuZGVmaW5lZCk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcInJlbmRlclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdmFyIHJlZiA9IGNvbmZpZy53aXRoUmVmID8gdGhpcy53cmFwcGVkSW5zdGFuY2UgOiBudWxsO1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChTb3J0YWJsZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zb3J0YWJsZUNvbnRleHRWYWx1ZVxuICAgICAgICB9LCBjcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIF9leHRlbmRzKHtcbiAgICAgICAgICByZWY6IHJlZlxuICAgICAgICB9LCBvbWl0KHRoaXMucHJvcHMsIG9taXR0ZWRQcm9wcykpKSk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImhlbHBlckNvbnRhaW5lclwiLFxuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHZhciBoZWxwZXJDb250YWluZXIgPSB0aGlzLnByb3BzLmhlbHBlckNvbnRhaW5lcjtcblxuICAgICAgICBpZiAodHlwZW9mIGhlbHBlckNvbnRhaW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBoZWxwZXJDb250YWluZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmhlbHBlckNvbnRhaW5lciB8fCB0aGlzLmRvY3VtZW50LmJvZHk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNvbnRhaW5lclNjcm9sbERlbHRhXCIsXG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgdmFyIHVzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyID0gdGhpcy5wcm9wcy51c2VXaW5kb3dBc1Njcm9sbENvbnRhaW5lcjtcblxuICAgICAgICBpZiAodXNlV2luZG93QXNTY3JvbGxDb250YWluZXIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIHRvcDogMFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbExlZnQgLSB0aGlzLmluaXRpYWxTY3JvbGwubGVmdCxcbiAgICAgICAgICB0b3A6IHRoaXMuc2Nyb2xsQ29udGFpbmVyLnNjcm9sbFRvcCAtIHRoaXMuaW5pdGlhbFNjcm9sbC50b3BcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwid2luZG93U2Nyb2xsRGVsdGFcIixcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuY29udGVudFdpbmRvdy5wYWdlWE9mZnNldCAtIHRoaXMuaW5pdGlhbFdpbmRvd1Njcm9sbC5sZWZ0LFxuICAgICAgICAgIHRvcDogdGhpcy5jb250ZW50V2luZG93LnBhZ2VZT2Zmc2V0IC0gdGhpcy5pbml0aWFsV2luZG93U2Nyb2xsLnRvcFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBXaXRoU29ydGFibGVDb250YWluZXI7XG4gIH0oQ29tcG9uZW50KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJkaXNwbGF5TmFtZVwiLCBwcm92aWRlRGlzcGxheU5hbWUoJ3NvcnRhYmxlTGlzdCcsIFdyYXBwZWRDb21wb25lbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJkZWZhdWx0UHJvcHNcIiwgZGVmYXVsdFByb3BzKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJwcm9wVHlwZXNcIiwgcHJvcFR5cGVzKSwgX3RlbXA7XG59XG5cbnZhciBwcm9wVHlwZXMkMSA9IHtcbiAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgY29sbGVjdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG52YXIgb21pdHRlZFByb3BzJDEgPSBPYmplY3Qua2V5cyhwcm9wVHlwZXMkMSk7XG5mdW5jdGlvbiBzb3J0YWJsZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCkge1xuICB2YXIgX2NsYXNzLCBfdGVtcDtcblxuICB2YXIgY29uZmlnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7XG4gICAgd2l0aFJlZjogZmFsc2VcbiAgfTtcbiAgcmV0dXJuIF90ZW1wID0gX2NsYXNzID0gZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoV2l0aFNvcnRhYmxlRWxlbWVudCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgICBmdW5jdGlvbiBXaXRoU29ydGFibGVFbGVtZW50KCkge1xuICAgICAgdmFyIF9nZXRQcm90b3R5cGVPZjI7XG5cbiAgICAgIHZhciBfdGhpcztcblxuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdpdGhTb3J0YWJsZUVsZW1lbnQpO1xuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoX2dldFByb3RvdHlwZU9mMiA9IF9nZXRQcm90b3R5cGVPZihXaXRoU29ydGFibGVFbGVtZW50KSkuY2FsbC5hcHBseShfZ2V0UHJvdG90eXBlT2YyLCBbdGhpc10uY29uY2F0KGFyZ3MpKSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSwgXCJ3cmFwcGVkSW5zdGFuY2VcIiwgY3JlYXRlUmVmKCkpO1xuXG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFdpdGhTb3J0YWJsZUVsZW1lbnQsIFt7XG4gICAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlcigpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJjb21wb25lbnREaWRVcGRhdGVcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGUpIHtcbiAgICAgICAgICBpZiAocHJldlByb3BzLmluZGV4ICE9PSB0aGlzLnByb3BzLmluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLm5vZGUuc29ydGFibGVJbmZvLmluZGV4ID0gdGhpcy5wcm9wcy5pbmRleDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocHJldlByb3BzLmRpc2FibGVkICE9PSB0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGUuc29ydGFibGVJbmZvLmRpc2FibGVkID0gdGhpcy5wcm9wcy5kaXNhYmxlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJldlByb3BzLmNvbGxlY3Rpb24gIT09IHRoaXMucHJvcHMuY29sbGVjdGlvbikge1xuICAgICAgICAgIHRoaXMudW5yZWdpc3RlcihwcmV2UHJvcHMuY29sbGVjdGlvbik7XG4gICAgICAgICAgdGhpcy5yZWdpc3RlcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHRoaXMudW5yZWdpc3RlcigpO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZWdpc3RlclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlZ2lzdGVyKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgY29sbGVjdGlvbiA9IF90aGlzJHByb3BzLmNvbGxlY3Rpb24sXG4gICAgICAgICAgICBkaXNhYmxlZCA9IF90aGlzJHByb3BzLmRpc2FibGVkLFxuICAgICAgICAgICAgaW5kZXggPSBfdGhpcyRwcm9wcy5pbmRleDtcbiAgICAgICAgdmFyIG5vZGUgPSBmaW5kRE9NTm9kZSh0aGlzKTtcbiAgICAgICAgbm9kZS5zb3J0YWJsZUluZm8gPSB7XG4gICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbixcbiAgICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgIG1hbmFnZXI6IHRoaXMuY29udGV4dC5tYW5hZ2VyXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMucmVmID0ge1xuICAgICAgICAgIG5vZGU6IG5vZGVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb250ZXh0Lm1hbmFnZXIuYWRkKGNvbGxlY3Rpb24sIHRoaXMucmVmKTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBrZXk6IFwidW5yZWdpc3RlclwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHVucmVnaXN0ZXIoKSB7XG4gICAgICAgIHZhciBjb2xsZWN0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB0aGlzLnByb3BzLmNvbGxlY3Rpb247XG4gICAgICAgIHRoaXMuY29udGV4dC5tYW5hZ2VyLnJlbW92ZShjb2xsZWN0aW9uLCB0aGlzLnJlZik7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImdldFdyYXBwZWRJbnN0YW5jZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFdyYXBwZWRJbnN0YW5jZSgpIHtcbiAgICAgICAgaW52YXJpYW50KGNvbmZpZy53aXRoUmVmLCAnVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBwYXNzIGluIHt3aXRoUmVmOiB0cnVlfSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBTb3J0YWJsZUVsZW1lbnQoKSBjYWxsJyk7XG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZWRJbnN0YW5jZS5jdXJyZW50O1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW5kZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciByZWYgPSBjb25maWcud2l0aFJlZiA/IHRoaXMud3JhcHBlZEluc3RhbmNlIDogbnVsbDtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgICAgICAgIHJlZjogcmVmXG4gICAgICAgIH0sIG9taXQodGhpcy5wcm9wcywgb21pdHRlZFByb3BzJDEpKSk7XG4gICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIFdpdGhTb3J0YWJsZUVsZW1lbnQ7XG4gIH0oQ29tcG9uZW50KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJkaXNwbGF5TmFtZVwiLCBwcm92aWRlRGlzcGxheU5hbWUoJ3NvcnRhYmxlRWxlbWVudCcsIFdyYXBwZWRDb21wb25lbnQpKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJjb250ZXh0VHlwZVwiLCBTb3J0YWJsZUNvbnRleHQpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcInByb3BUeXBlc1wiLCBwcm9wVHlwZXMkMSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIFwiZGVmYXVsdFByb3BzXCIsIHtcbiAgICBjb2xsZWN0aW9uOiAwXG4gIH0pLCBfdGVtcDtcbn1cblxuZXhwb3J0IHsgc29ydGFibGVDb250YWluZXIgYXMgU29ydGFibGVDb250YWluZXIsIHNvcnRhYmxlQ29udGFpbmVyLCBzb3J0YWJsZUVsZW1lbnQgYXMgU29ydGFibGVFbGVtZW50LCBzb3J0YWJsZUVsZW1lbnQsIHNvcnRhYmxlSGFuZGxlIGFzIFNvcnRhYmxlSGFuZGxlLCBzb3J0YWJsZUhhbmRsZSwgYXJyYXlNb3ZlIH07XG4iLCJpbXBvcnQgYXJyYXlXaXRob3V0SG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVNwcmVhZCBmcm9tIFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB8fCBpdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShhcnIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikge1xuICBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBpdGVyW1N5bWJvbC5pdGVyYXRvcl0gIT0gbnVsbCB8fCBpdGVyW1wiQEBpdGVyYXRvclwiXSAhPSBudWxsKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVTcHJlYWQoKSB7XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsImltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vdXRpbHMvY24nO1xuZXhwb3J0IHZhciBQbGF0Zm9ybTtcbihmdW5jdGlvbiAoUGxhdGZvcm0pIHtcbiAgICBQbGF0Zm9ybVtcIklPU1wiXSA9IFwiaW9zXCI7XG4gICAgUGxhdGZvcm1bXCJBTkRST0lEXCJdID0gXCJhbmRyb2lkXCI7XG4gICAgUGxhdGZvcm1bXCJCUk9XU0VSXCJdID0gXCJicm93c2VyXCI7XG59KShQbGF0Zm9ybSB8fCAoUGxhdGZvcm0gPSB7fSkpO1xuY29uc3QgYiA9IGJsb2NrKCdyb290Jyk7XG5leHBvcnQgY29uc3Qgcm9vdE1vYmlsZUNsYXNzTmFtZSA9IGIoeyBtb2JpbGU6IHRydWUgfSkuc3BsaXQoL1xccysvKVsxXTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IGluaXRpYWxWYWx1ZSA9IHtcbiAgICBtb2JpbGU6IGZhbHNlLFxuICAgIHBsYXRmb3JtOiBQbGF0Zm9ybS5CUk9XU0VSLFxuICAgIHVzZUhpc3Rvcnk6ICgpID0+ICh7IGFjdGlvbjogJycsIHJlcGxhY2UoKSB7IH0sIHB1c2goKSB7IH0sIGdvQmFjaygpIHsgfSB9KSxcbiAgICB1c2VMb2NhdGlvbjogKCkgPT4gKHsgcGF0aG5hbWU6ICcnLCBzZWFyY2g6ICcnLCBoYXNoOiAnJyB9KSxcbiAgICBzZXRNb2JpbGU6ICgpID0+IHsgfSxcbiAgICBzZXRQbGF0Zm9ybTogKCkgPT4geyB9LFxufTtcbmV4cG9ydCBjb25zdCBNb2JpbGVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChpbml0aWFsVmFsdWUpO1xuIiwiaW1wb3J0IHsgS2V5Q29kZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5leHBvcnQgY29uc3QgTGlzdFFhID0ge1xuICAgIEFDVElWRV9JVEVNOiAnbGlzdC1hY3RpdmUtaXRlbScsXG59O1xuZXhwb3J0IGNvbnN0IGxpc3ROYXZpZ2F0aW9uSWdub3JlZEtleXMgPSBbXG4gICAgLy8gVGFiIGtleSBzaG91bGQgZm9jdXMgdGhlIG5leHQgZWxlbWVudFxuICAgIEtleUNvZGUuVEFCLFxuXTtcbiIsImV4cG9ydCBjb25zdCBLZXlDb2RlID0ge1xuICAgIEJBQ0tTUEFDRTogJ0JhY2tzcGFjZScsXG4gICAgRU5URVI6ICdFbnRlcicsXG4gICAgVEFCOiAnVGFiJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlcyN3aGl0ZXNwYWNlX2tleXNcbiAgICBTUEFDRUJBUjogJyAnLFxufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhMTF5SGlkZGVuU3ZnUHJvcHMgfSBmcm9tICcuLi8uLi91dGlscy9zdmcnO1xuZXhwb3J0IGZ1bmN0aW9uIERyYWdIYW5kbGVJY29uKHByb3BzKSB7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIE9iamVjdC5hc3NpZ24oeyB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLCB2aWV3Qm94OiBcIjAgMCA2IDEwXCIsIHdpZHRoOiBcIjZcIiwgaGVpZ2h0OiBcIjEwXCIsIGZpbGw6IFwiY3VycmVudENvbG9yXCIgfSwgYTExeUhpZGRlblN2Z1Byb3BzLCBwcm9wcyksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZDogXCJNMCAwaDJ2Mkgwem0wIDRoMnYySDB6bTAgNGgydjJIMHptNC04aDJ2Mkg0em0wIDRoMnYySDR6bTAgNGgydjJINHpcIiB9KSkpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vLi4vdXRpbHMvY24nO1xuaW1wb3J0IHsgZXZlbnRCcm9rZXIgfSBmcm9tICcuLi8uLi91dGlscy9ldmVudC1icm9rZXInO1xuaW1wb3J0IHsgTGlzdFFhIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IERyYWdIYW5kbGVJY29uIH0gZnJvbSAnLi9EcmFnSGFuZGxlSWNvbic7XG5jb25zdCBiID0gYmxvY2soJ2xpc3QnKTtcbmNvbnN0IGRlZmF1bHRSZW5kZXJJdGVtID0gKGl0ZW0pID0+IFN0cmluZyhpdGVtKTtcbmV4cG9ydCBjbGFzcyBMaXN0SXRlbSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMucmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gICAgICAgIHRoaXMuZ2V0UmVmID0gKCkgPT4gdGhpcy5yZWY7XG4gICAgICAgIHRoaXMub25DbGljayA9ICgpID0+IHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IHRoaXMucHJvcHMpLm9uQ2xpY2spID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB0aGlzLnByb3BzLml0ZW0sIHRoaXMucHJvcHMuaXRlbUluZGV4KTsgfTtcbiAgICAgICAgdGhpcy5vbkNsaWNrQ2FwdHVyZSA9IChldmVudCkgPT4ge1xuICAgICAgICAgICAgTGlzdEl0ZW0ucHVibGlzaEV2ZW50KHtcbiAgICAgICAgICAgICAgICBkb21FdmVudDogZXZlbnQsXG4gICAgICAgICAgICAgICAgZXZlbnRJZDogJ2NsaWNrJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uTW91c2VFbnRlciA9ICgpID0+ICF0aGlzLnByb3BzLml0ZW0uZGlzYWJsZWQgJiYgdGhpcy5wcm9wcy5vbkFjdGl2YXRlKHRoaXMucHJvcHMuaXRlbUluZGV4KTtcbiAgICAgICAgdGhpcy5vbk1vdXNlTGVhdmUgPSAoKSA9PiB0aGlzLnByb3BzLm9uQWN0aXZhdGUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGl0ZW0sIHN0eWxlLCBzb3J0YWJsZSwgc29ydEhhbmRsZUFsaWduLCBpdGVtQ2xhc3NOYW1lLCBzZWxlY3RlZCwgYWN0aXZlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyByb2xlOiBcImxpc3RpdGVtXCIsIFwiZGF0YS1xYVwiOiBhY3RpdmUgPyBMaXN0UWEuQUNUSVZFX0lURU0gOiB1bmRlZmluZWQsIGNsYXNzTmFtZTogYignaXRlbScsIHtcbiAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmUsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgaW5hY3RpdmU6IGl0ZW0uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgJ3NvcnQtaGFuZGxlLWFsaWduJzogc29ydEhhbmRsZUFsaWduLFxuICAgICAgICAgICAgfSwgaXRlbUNsYXNzTmFtZSksIHN0eWxlOiBzdHlsZSwgb25DbGljazogaXRlbS5kaXNhYmxlZCA/IHVuZGVmaW5lZCA6IHRoaXMub25DbGljaywgb25DbGlja0NhcHR1cmU6IGl0ZW0uZGlzYWJsZWQgPyB1bmRlZmluZWQgOiB0aGlzLm9uQ2xpY2tDYXB0dXJlLCBvbk1vdXNlRW50ZXI6IHRoaXMub25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmU6IHRoaXMub25Nb3VzZUxlYXZlLCByZWY6IHRoaXMucmVmIH0sXG4gICAgICAgICAgICB0aGlzLnJlbmRlclNvcnRJY29uKCksXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbnRlbnQoKSkpO1xuICAgIH1cbiAgICByZW5kZXJTb3J0SWNvbigpIHtcbiAgICAgICAgY29uc3QgeyBzb3J0YWJsZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgcmV0dXJuIHNvcnRhYmxlID8gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2l0ZW0tc29ydC1pY29uJykgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRHJhZ0hhbmRsZUljb24sIG51bGwpKSkgOiBudWxsO1xuICAgIH1cbiAgICByZW5kZXJDb250ZW50KCkge1xuICAgICAgICBjb25zdCB7IHJlbmRlckl0ZW0gPSBkZWZhdWx0UmVuZGVySXRlbSwgaXRlbSwgYWN0aXZlLCBpdGVtSW5kZXggfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdpdGVtLWNvbnRlbnQnKSB9LCByZW5kZXJJdGVtKGl0ZW0sIGFjdGl2ZSwgaXRlbUluZGV4KSk7XG4gICAgfVxufVxuTGlzdEl0ZW0ucHVibGlzaEV2ZW50ID0gZXZlbnRCcm9rZXIud2l0aEV2ZW50UHVibGlzaGVyKCdMaXN0Jyk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IF9yYW5nZSBmcm9tICdsb2Rhc2gvcmFuZ2UnO1xuZnVuY3Rpb24gZ2V0UmVmcyhjb3VudCkge1xuICAgIHJldHVybiBfcmFuZ2UoY291bnQpLnJlZHVjZSgoYWNjLCBpbmRleCkgPT4ge1xuICAgICAgICBhY2NbaW5kZXhdID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xufVxuZXhwb3J0IGNsYXNzIFNpbXBsZUNvbnRhaW5lciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyh7IGl0ZW1Db3VudCB9LCBwcmV2U3RhdGUpIHtcbiAgICAgICAgY29uc3QgcmVmc0NvdW50ID0gT2JqZWN0LmtleXMocHJldlN0YXRlKS5sZW5ndGg7XG4gICAgICAgIGlmIChpdGVtQ291bnQgPT09IHJlZnNDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZTdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRSZWZzKGl0ZW1Db3VudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuICAgICAgICB0aGlzLnN0YXRlID0gZ2V0UmVmcyhwcm9wcy5pdGVtQ291bnQpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gUmVhY3QuQ2hpbGRyZW4ubWFwKHRoaXMucHJvcHMuY2hpbGRyZW4sIChjaGlsZCwgaW5kZXgpID0+IFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgeyByZWY6IHRoaXMuc3RhdGVbaW5kZXhdIH0pKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCwgY2hpbGRyZW4pO1xuICAgIH1cbiAgICBzY3JvbGxUb0l0ZW0oaW5kZXgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGNvbnN0IGxpc3RJdGVtID0gKF9hID0gdGhpcy5zdGF0ZVtpbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jdXJyZW50O1xuICAgICAgICBpZiAobGlzdEl0ZW0gJiYgdHlwZW9mIGxpc3RJdGVtLmdldFJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgcmVmID0gbGlzdEl0ZW0uZ2V0UmVmKCk7XG4gICAgICAgICAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAoX2MgPSAoX2IgPSByZWYuY3VycmVudCkuc2Nyb2xsSW50b1ZpZXcpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKF9iLCB7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaXN0LmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9MaXN0LmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIi8qIGVzbGludCBuZXctY2FwOiBcIm9mZlwiICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF1dG9TaXplciBmcm9tICdyZWFjdC12aXJ0dWFsaXplZC1hdXRvLXNpemVyJztcbmltcG9ydCB7IFZhcmlhYmxlU2l6ZUxpc3QgYXMgTGlzdENvbnRhaW5lciB9IGZyb20gJ3JlYWN0LXdpbmRvdyc7XG5pbXBvcnQgeyBTb3J0YWJsZUNvbnRhaW5lciwgU29ydGFibGVFbGVtZW50IH0gZnJvbSAncmVhY3Qtc29ydGFibGUtaG9jJztcbmltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vdXRpbHMvY24nO1xuaW1wb3J0IHsgTW9iaWxlQ29udGV4dCB9IGZyb20gJy4uL21vYmlsZSc7XG5pbXBvcnQgeyBUZXh0SW5wdXQgfSBmcm9tICcuLi9UZXh0SW5wdXQnO1xuaW1wb3J0IHsgTGlzdEl0ZW0sIFNpbXBsZUNvbnRhaW5lciB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBsaXN0TmF2aWdhdGlvbklnbm9yZWRLZXlzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICcuL0xpc3QuY3NzJztcbmNvbnN0IGIgPSBibG9jaygnbGlzdCcpO1xuY29uc3QgREVGQVVMVF9JVEVNX0hFSUdIVCA9IDI4O1xuY29uc3QgU29ydGFibGVMaXN0SXRlbSA9IFNvcnRhYmxlRWxlbWVudChMaXN0SXRlbSk7XG5jb25zdCBTb3J0YWJsZUxpc3RDb250YWluZXIgPSBTb3J0YWJsZUNvbnRhaW5lcihMaXN0Q29udGFpbmVyLCB7IHdpdGhSZWY6IHRydWUgfSk7XG5jb25zdCBTb3J0YWJsZVNpbXBsZUNvbnRhaW5lciA9IFNvcnRhYmxlQ29udGFpbmVyKFNpbXBsZUNvbnRhaW5lciwgeyB3aXRoUmVmOiB0cnVlIH0pO1xuZXhwb3J0IGNvbnN0IGxpc3REZWZhdWx0UHJvcHMgPSB7XG4gICAgaXRlbXM6IFtdLFxuICAgIGl0ZW1DbGFzc05hbWU6ICcnLFxuICAgIGZpbHRlcmFibGU6IHRydWUsXG4gICAgc29ydGFibGU6IGZhbHNlLFxuICAgIHZpcnR1YWxpemVkOiB0cnVlLFxuICAgIGRlYWN0aXZhdGVPbkxlYXZlOiB0cnVlLFxufTtcbmV4cG9ydCBjbGFzcyBMaXN0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnByb3BzLml0ZW1zLFxuICAgICAgICAgICAgZmlsdGVyOiAnJyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZWZGaWx0ZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICAgICAgdGhpcy5yZWZDb250YWluZXIgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICAgICAgdGhpcy5ibHVyVGltZXIgPSBudWxsO1xuICAgICAgICAvLyBGSVhNRTogQlJFQUtJTkcgQ0hBTkdFLiBSZW5hbWUgdG8gXCJoYW5kbGVLZXlEb3duXCJcbiAgICAgICAgdGhpcy5vbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYWN0aXZlSXRlbSwgcGFnZVNpemUgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgICAgICBpZiAobGlzdE5hdmlnYXRpb25JZ25vcmVkS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlS2V5TW92ZShldmVudCwgMSwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVLZXlNb3ZlKGV2ZW50LCAtMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdQYWdlRG93bic6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVLZXlNb3ZlKGV2ZW50LCBwYWdlU2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdQYWdlVXAnOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlS2V5TW92ZShldmVudCwgLXBhZ2VTaXplKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ0hvbWUnOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlS2V5TW92ZShldmVudCwgdGhpcy5zdGF0ZS5pdGVtcy5sZW5ndGggLSAoYWN0aXZlSXRlbSB8fCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlS2V5TW92ZShldmVudCwgLShhY3RpdmVJdGVtIHx8IDApIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdFbnRlcic6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3RpdmVJdGVtID09PSAnbnVtYmVyJyAmJiB0aGlzLnByb3BzLm9uSXRlbUNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uSXRlbUNsaWNrKHRoaXMuc3RhdGUuaXRlbXNbYWN0aXZlSXRlbV0sIGFjdGl2ZUl0ZW0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZkZpbHRlci5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZkZpbHRlci5jdXJyZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVuZGVySXRlbSA9ICh7IGluZGV4LCBzdHlsZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNvcnRIYW5kbGVBbGlnbiB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGNvbnN0IHsgaXRlbXMsIGFjdGl2ZUl0ZW0gfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3Qgc29ydGFibGUgPSB0aGlzLnByb3BzLnNvcnRhYmxlICYmIGl0ZW1zLmxlbmd0aCA+IDEgJiYgIXRoaXMuZ2V0RmlsdGVyKCk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpbmRleCA9PT0gYWN0aXZlSXRlbSB8fCBpbmRleCA9PT0gdGhpcy5wcm9wcy5hY3RpdmVJdGVtSW5kZXg7XG4gICAgICAgICAgICBjb25zdCBJdGVtID0gc29ydGFibGUgPyBTb3J0YWJsZUxpc3RJdGVtIDogTGlzdEl0ZW07XG4gICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSXRlbSwgeyBrZXk6IGluZGV4LCBzdHlsZTogc3R5bGUsIGluZGV4OiBpbmRleCwgaXRlbUluZGV4OiBpbmRleCwgaXRlbTogaXRlbSwgc29ydGFibGU6IHNvcnRhYmxlLCBzb3J0SGFuZGxlQWxpZ246IHNvcnRIYW5kbGVBbGlnbiwgcmVuZGVySXRlbTogdGhpcy5wcm9wcy5yZW5kZXJJdGVtLCBpdGVtQ2xhc3NOYW1lOiB0aGlzLnByb3BzLml0ZW1DbGFzc05hbWUsIGFjdGl2ZTogYWN0aXZlLCBzZWxlY3RlZDogaW5kZXggPT09IHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtSW5kZXgsIG9uQWN0aXZhdGU6IHRoaXMub25JdGVtQWN0aXZhdGUsIG9uQ2xpY2s6IHRoaXMucHJvcHMub25JdGVtQ2xpY2sgfSkpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpbHRlckl0ZW0gPSAoZmlsdGVyKSA9PiAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhpdGVtKS5pbmNsdWRlcyhmaWx0ZXIpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNjcm9sbFRvSW5kZXggPSAoaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKCk7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLnNjcm9sbFRvSXRlbShpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGVhY3RpdmF0ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5ibHVyVGltZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWFjdGl2YXRlT25MZWF2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBhY3RpdmVJdGVtOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5ibHVyVGltZXIpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5ibHVyVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuYmx1clRpbWVyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5oYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmJsdXJUaW1lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuYmx1clRpbWVyID0gc2V0VGltZW91dCh0aGlzLmRlYWN0aXZhdGUsIDUwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vblVwZGF0ZUZpbHRlckludGVybmFsID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGl0ZW1zLCBmaWx0ZXJJdGVtID0gdGhpcy5maWx0ZXJJdGVtLCBvbkZpbHRlckVuZCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGZpbHRlcjogdmFsdWUsXG4gICAgICAgICAgICAgICAgaXRlbXM6IHZhbHVlID8gaXRlbXMuZmlsdGVyKGZpbHRlckl0ZW0odmFsdWUpKSA6IGl0ZW1zLFxuICAgICAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvbkZpbHRlckVuZCkge1xuICAgICAgICAgICAgICAgICAgICBvbkZpbHRlckVuZCh7IGl0ZW1zOiB0aGlzLnN0YXRlLml0ZW1zIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uRmlsdGVyVXBkYXRlID0gKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkZpbHRlclVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25GaWx0ZXJVcGRhdGUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblVwZGF0ZUZpbHRlckludGVybmFsKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vbkl0ZW1zUmVuZGVyZWQgPSAoeyB2aXNpYmxlU3RhcnRJbmRleCwgdmlzaWJsZVN0b3BJbmRleCwgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IHZpc2libGVTdG9wSW5kZXggLSB2aXNpYmxlU3RhcnRJbmRleCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uSXRlbUFjdGl2YXRlID0gKGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGUuc29ydGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVJdGVtKGluZGV4LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25Nb3VzZUxlYXZlID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25Tb3J0U3RhcnQgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGluZzogdHJ1ZSB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vblNvcnRFbmQgPSAocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblNvcnRFbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uU29ydEVuZChwYXJhbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgc29ydGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgYWN0aXZlSXRlbTogcGFyYW1zLm5ld0luZGV4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ2V0SXRlbUhlaWdodCA9IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBpdGVtSGVpZ2h0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtSGVpZ2h0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbUhlaWdodChpdGVtc1tpbmRleF0sIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtSGVpZ2h0O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdldFZpcnR1YWxpemVkSXRlbUhlaWdodCA9IChpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbUhlaWdodChpbmRleCkgfHwgREVGQVVMVF9JVEVNX0hFSUdIVDtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc3RhdGljIG1vdmVMaXN0RWxlbWVudChsaXN0LCBvbGRJbmRleCwgbmV3SW5kZXgpIHtcbiAgICAgICAgaWYgKG9sZEluZGV4ICE9PSBuZXdJbmRleCkge1xuICAgICAgICAgICAgY29uc3QgW2l0ZW1dID0gbGlzdC5zcGxpY2Uob2xkSW5kZXgsIDEpO1xuICAgICAgICAgICAgbGlzdC5zcGxpY2UobmV3SW5kZXgsIDAsIGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cbiAgICBzdGF0aWMgZmluZE5leHRJbmRleChsaXN0LCBpbmRleCwgc3RlcCkge1xuICAgICAgICBjb25zdCBkYXRhTGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gICAgICAgIGxldCBjdXJyZW50SW5kZXggPSAoaW5kZXggKyBkYXRhTGVuZ3RoKSAlIGRhdGFMZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpZiAobGlzdFtjdXJyZW50SW5kZXhdICYmICFsaXN0W2N1cnJlbnRJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VycmVudEluZGV4ID0gKGN1cnJlbnRJbmRleCArIGRhdGFMZW5ndGggKyBzdGVwKSAlIGRhdGFMZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5pdGVtcyAhPT0gcHJldlByb3BzLml0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmdldEZpbHRlcigpO1xuICAgICAgICAgICAgY29uc3QgaW50ZXJuYWxGaWx0ZXJpbmcgPSBmaWx0ZXIgJiYgIXRoaXMucHJvcHMub25GaWx0ZXJVcGRhdGU7XG4gICAgICAgICAgICBpZiAoaW50ZXJuYWxGaWx0ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVXBkYXRlRmlsdGVySW50ZXJuYWwoZmlsdGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpdGVtczogdGhpcy5wcm9wcy5pdGVtcyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5hY3RpdmVJdGVtSW5kZXggIT09IHByZXZQcm9wcy5hY3RpdmVJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVJdGVtKHRoaXMucHJvcHMuYWN0aXZlSXRlbUluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgdGhpcy5ibHVyVGltZXIgPSBudWxsO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgZW1wdHlQbGFjZWhvbGRlciwgdmlydHVhbGl6ZWQsIGNsYXNzTmFtZSwgaXRlbXNDbGFzc05hbWUsIHFhIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGl0ZW1zIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTW9iaWxlQ29udGV4dC5Db25zdW1lciwgbnVsbCwgKHsgbW9iaWxlIH0pID0+IChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKHsgbW9iaWxlIH0sIGNsYXNzTmFtZSksIFwiZGF0YS1xYVwiOiBxYSwgdGFiSW5kZXg6IC0xLCBvbkZvY3VzOiB0aGlzLmhhbmRsZUZvY3VzLCBvbkJsdXI6IHRoaXMuaGFuZGxlQmx1ciwgb25LZXlEb3duOiB0aGlzLm9uS2V5RG93biB9LFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJGaWx0ZXIoKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2l0ZW1zJywgeyB2aXJ0dWFsaXplZCB9LCBpdGVtc0NsYXNzTmFtZSksIHN0eWxlOiB0aGlzLmdldEl0ZW1zU3R5bGUoKSwgb25Nb3VzZUxlYXZlOiB0aGlzLm9uTW91c2VMZWF2ZSB9LFxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVySXRlbXMoKSxcbiAgICAgICAgICAgICAgICBpdGVtcy5sZW5ndGggPT09IDAgJiYgQm9vbGVhbihlbXB0eVBsYWNlaG9sZGVyKSAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignZW1wdHktcGxhY2Vob2xkZXInKSB9LCBlbXB0eVBsYWNlaG9sZGVyKSkpKSkpKTtcbiAgICB9XG4gICAgZ2V0SXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLml0ZW1zO1xuICAgIH1cbiAgICBnZXRBY3RpdmVJdGVtKCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3RhdGUuYWN0aXZlSXRlbSA9PT0gJ251bWJlcicgPyB0aGlzLnN0YXRlLmFjdGl2ZUl0ZW0gOiBudWxsO1xuICAgIH1cbiAgICBhY3RpdmF0ZUl0ZW0oaW5kZXgsIHNjcm9sbFRvID0gdHJ1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJyAmJiBzY3JvbGxUbykge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0luZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSXRlbTogaW5kZXggfSk7XG4gICAgfVxuICAgIHJlbmRlckZpbHRlcigpIHtcbiAgICAgICAgY29uc3QgeyBzaXplLCBmaWx0ZXJhYmxlLCBmaWx0ZXIgPSB0aGlzLnN0YXRlLmZpbHRlciwgZmlsdGVyUGxhY2Vob2xkZXIsIGZpbHRlckNsYXNzTmFtZSA9ICcnLCBhdXRvRm9jdXMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWZpbHRlcmFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignZmlsdGVyJywgZmlsdGVyQ2xhc3NOYW1lKSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUZXh0SW5wdXQsIHsgY29udHJvbFJlZjogdGhpcy5yZWZGaWx0ZXIsIHNpemU6IHNpemUsIHBsYWNlaG9sZGVyOiBmaWx0ZXJQbGFjZWhvbGRlciwgdmFsdWU6IGZpbHRlciwgaGFzQ2xlYXI6IHRydWUsIG9uVXBkYXRlOiB0aGlzLm9uRmlsdGVyVXBkYXRlLCBhdXRvRm9jdXM6IGF1dG9Gb2N1cyB9KSkpO1xuICAgIH1cbiAgICByZW5kZXJTaW1wbGVDb250YWluZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgc29ydGFibGUgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgaXRlbXMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IENvbnRhaW5lciA9IHNvcnRhYmxlID8gU29ydGFibGVTaW1wbGVDb250YWluZXIgOiBTaW1wbGVDb250YWluZXI7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb250YWluZXIsIHsgaGVscGVyQ2xhc3M6IGIoJ2l0ZW0nLCB7IHNvcnRpbmc6IHRydWUgfSksIGRpc3RhbmNlOiA1LCBsb2NrQXhpczogXCJ5XCIsIG9uU29ydFN0YXJ0OiB0aGlzLm9uU29ydFN0YXJ0LCBvblNvcnRFbmQ6IHRoaXMub25Tb3J0RW5kLCBpdGVtQ291bnQ6IGl0ZW1zLmxlbmd0aCwgcmVmOiB0aGlzLnJlZkNvbnRhaW5lciB9LCBpdGVtcy5tYXAoKF9pdGVtLCBpbmRleCkgPT4gdGhpcy5yZW5kZXJJdGVtKHsgaW5kZXgsIHN0eWxlOiB7IGhlaWdodDogdGhpcy5nZXRJdGVtSGVpZ2h0KGluZGV4KSB9IH0pKSkpO1xuICAgIH1cbiAgICByZW5kZXJWaXJ0dWFsaXplZENvbnRhaW5lcigpIHtcbiAgICAgICAgY29uc3QgQ29udGFpbmVyID0gdGhpcy5wcm9wcy5zb3J0YWJsZSA/IFNvcnRhYmxlTGlzdENvbnRhaW5lciA6IExpc3RDb250YWluZXI7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChBdXRvU2l6ZXIsIG51bGwsICh7IHdpZHRoLCBoZWlnaHQgfSkgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGFpbmVyLCB7IHJlZjogdGhpcy5yZWZDb250YWluZXIsIHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQsIGl0ZW1TaXplOiB0aGlzLmdldFZpcnR1YWxpemVkSXRlbUhlaWdodCwgaXRlbURhdGE6IHRoaXMuc3RhdGUuaXRlbXMsIGl0ZW1Db3VudDogdGhpcy5zdGF0ZS5pdGVtcy5sZW5ndGgsIG92ZXJzY2FuQ291bnQ6IDEwLCBoZWxwZXJDbGFzczogYignaXRlbScsIHsgc29ydGluZzogdHJ1ZSB9KSwgZGlzdGFuY2U6IDUsIGxvY2tBeGlzOiBcInlcIiwgb25JdGVtc1JlbmRlcmVkOiB0aGlzLm9uSXRlbXNSZW5kZXJlZCwgb25Tb3J0U3RhcnQ6IHRoaXMub25Tb3J0U3RhcnQsIG9uU29ydEVuZDogdGhpcy5vblNvcnRFbmQsIFxuICAgICAgICAgICAgLy8gdGhpcyBwcm9wZXJ0eSB1c2VkIHRvIHJlcmVuZGVyIGl0ZW1zIGluIHZpZXdwb3J0XG4gICAgICAgICAgICAvLyBtdXN0IGJlIGxhc3QsIHR5cGVzY3JpcHQgc2tpcHMgY2hlY2tzIGZvciBhbGwgcHJvcHMgYmVoaW5kIHRzLWlnbm9yZS90cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgIGFjdGl2ZUl0ZW06IHRoaXMuc3RhdGUuYWN0aXZlSXRlbSB9LCB0aGlzLnJlbmRlckl0ZW0pKSkpO1xuICAgIH1cbiAgICByZW5kZXJJdGVtcygpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudmlydHVhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlclZpcnR1YWxpemVkQ29udGFpbmVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJTaW1wbGVDb250YWluZXIoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRDb250YWluZXIoKSB7XG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMucmVmQ29udGFpbmVyLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRJbnN0YW5jZSA9IHJlZiAmJlxuICAgICAgICAgICAgJ2dldFdyYXBwZWRJbnN0YW5jZScgaW4gcmVmICYmXG4gICAgICAgICAgICB0eXBlb2YgcmVmLmdldFdyYXBwZWRJbnN0YW5jZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICAgICAgcmVmLmdldFdyYXBwZWRJbnN0YW5jZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5zb3J0YWJsZSA/IHdyYXBwZWRJbnN0YW5jZSA6IHJlZjtcbiAgICB9XG4gICAgZ2V0RmlsdGVyKCkge1xuICAgICAgICBjb25zdCB7IGZpbHRlciA9IHRoaXMuc3RhdGUuZmlsdGVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cbiAgICBnZXRJdGVtc1N0eWxlKCkge1xuICAgICAgICBsZXQgeyBpdGVtc0hlaWdodCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtc0hlaWdodCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaXRlbXNIZWlnaHQgPSBpdGVtc0hlaWdodCh0aGlzLnN0YXRlLml0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbXNIZWlnaHQgPyB7IGhlaWdodDogaXRlbXNIZWlnaHQgfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaGFuZGxlS2V5TW92ZShldmVudCwgc3RlcCwgZGVmYXVsdEl0ZW1JbmRleCA9IDApIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgeyBhY3RpdmVJdGVtID0gZGVmYXVsdEl0ZW1JbmRleCB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUl0ZW0oTGlzdC5maW5kTmV4dEluZGV4KHRoaXMuc3RhdGUuaXRlbXMsIGFjdGl2ZUl0ZW0gKyBzdGVwLCBNYXRoLnNpZ24oc3RlcCkpKTtcbiAgICB9XG59XG5MaXN0LmRlZmF1bHRQcm9wcyA9IGxpc3REZWZhdWx0UHJvcHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgd2l0aFRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IHsgQnV0dG9uLCBMaXN0LCBQb3B1cCwgVGV4dElucHV0IH0gZnJvbSAnQGdyYXZpdHktdWkvdWlraXQnO1xuaW1wb3J0IHsgaXNJbnZhbGlkRW1haWwgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBnZXRQb3B1cFBvc2l0aW9uIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaWJlVHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLXN1YnNjcmliZScpO1xuY29uc3QgTElTVF9JVEVNX0hFSUdIVCA9IDM2O1xuY29uc3QgU3Vic2NyaWJlVmFyaWFudHNQb3B1cCA9IG1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyB0LCB2aXNpYmxlLCBzZXRWaXNpYmxlLCBhbmNob3IsIHZpZXcsIGlzVmVydGljYWxWaWV3LCBvblN1YnNjcmliZSwgb25TdWJtaXQgfSA9IHByb3BzO1xuICAgIGNvbnN0IGhpZGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRWaXNpYmxlKGZhbHNlKSwgW3NldFZpc2libGVdKTtcbiAgICBjb25zdCBbZW1haWwsIHNldEVtYWlsXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbc2hvd0Vycm9yLCBzZXRTaG93RXJyb3JdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtzdWJzY3JpYmVTZWxlY3RvcnMsIHNldFN1YnNjcmliZVNlbGVjdG9yc10gPSB1c2VTdGF0ZShTdWJzY3JpYmVUeXBlLmRvY3VtZW50YXRpb24pO1xuICAgIGNvbnN0IHJlc2V0U3Vic2NyaWJlQWRkaXRpb25hbEluZm8gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldEVtYWlsKCcnKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3Qgb25TZW5kU3Vic2NyaWJlSW5mb3JtYXRpb24gPSB1c2VDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKGlzSW52YWxpZEVtYWlsKGVtYWlsKSkge1xuICAgICAgICAgICAgc2V0U2hvd0Vycm9yKHQoJ2VtYWlsLXRleHQtaW52YWxpZCcpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRTaG93RXJyb3IoJycpO1xuICAgICAgICBpZiAob25TdWJzY3JpYmUpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgb25TdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogc3Vic2NyaWJlU2VsZWN0b3JzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uU3VibWl0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgc2V0U2hvd0Vycm9yKHQoJ2VtYWlsLXJlcXVlc3QtZmFpbCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc2V0U3Vic2NyaWJlQWRkaXRpb25hbEluZm8oKTtcbiAgICAgICAgfVxuICAgIH0sIFtvblN1YnNjcmliZSwgZW1haWwsIHJlc2V0U3Vic2NyaWJlQWRkaXRpb25hbEluZm8sIHN1YnNjcmliZVNlbGVjdG9ycywgb25TdWJtaXQsIHRdKTtcbiAgICBjb25zdCByZW5kZXJTdWJzY3JpYmVWYXJpYW50c0xpc3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGNvbnN0IElURU1TID0gW1xuICAgICAgICAgICAgeyB2YWx1ZTogU3Vic2NyaWJlVHlwZS5kb2N1bWVudGF0aW9uLCB0ZXh0OiB0KCdzdWJzY3JpYmUtZG9jdW1lbnRhdGlvbi10aXRsZScpIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiBTdWJzY3JpYmVUeXBlLnBhZ2UsIHRleHQ6IHQoJ3N1YnNjcmliZS1wYWdlLXRpdGxlJykgfSxcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaXRlbXNIZWlnaHQgPSBMSVNUX0lURU1fSEVJR0hUICogSVRFTVMubGVuZ3RoO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1JbmRleCA9IElURU1TLmZpbmRJbmRleCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gc3Vic2NyaWJlU2VsZWN0b3JzKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KExpc3QsIHsgZmlsdGVyYWJsZTogZmFsc2UsIGl0ZW1zOiBJVEVNUywgb25JdGVtQ2xpY2s6IChpdGVtKSA9PiBzZXRTdWJzY3JpYmVTZWxlY3RvcnMoaXRlbS52YWx1ZSksIHNlbGVjdGVkSXRlbUluZGV4OiBzZWxlY3RlZEl0ZW1JbmRleCwgaXRlbUhlaWdodDogTElTVF9JVEVNX0hFSUdIVCwgaXRlbXNIZWlnaHQ6IGl0ZW1zSGVpZ2h0LCByZW5kZXJJdGVtOiAoaXRlbSkgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigndmFyaWFudF9fbGlzdC1pdGVtJykgfSwgaXRlbS50ZXh0KSB9KSk7XG4gICAgfSwgW3N1YnNjcmliZVNlbGVjdG9ycywgdF0pO1xuICAgIGNvbnN0IHJlbmRlclN1YnNjcmliZUZvcm0gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImZvcm1cIiwgeyBvblN1Ym1pdDogb25TZW5kU3Vic2NyaWJlSW5mb3JtYXRpb24gfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ3RleHRhcmVhJykgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRleHRJbnB1dCwgeyBzaXplOiBcImxcIiwgcGxhY2Vob2xkZXI6IHQoJ3N1YnNjcmliZS1kb2N1bWVudGF0aW9uLXBsYWNlaG9sZGVyJyksIGVycm9yOiBzaG93RXJyb3IgfHwgdW5kZWZpbmVkLCB2YWx1ZTogZW1haWwsIG9uVXBkYXRlOiBzZXRFbWFpbCB9KSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCd2YXJpYW50cy1hY3Rpb25zJykgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyB2aWV3OiBcImFjdGlvblwiLCBjbGFzc05hbWU6IGIoJ3ZhcmlhbnRzLWFjdGlvbicpLCB0eXBlOiAnc3VibWl0JyB9LCB0KCdzdWJzY3JpYmUtdGV4dCcpKSkpKTtcbiAgICB9LCBbZW1haWwsIHNob3dFcnJvciwgb25TZW5kU3Vic2NyaWJlSW5mb3JtYXRpb24sIHRdKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUG9wdXAsIHsgYW5jaG9yUmVmOiBhbmNob3IsIG9wZW46IHZpc2libGUsIG9uT3V0c2lkZUNsaWNrOiBoaWRlLCBjbGFzc05hbWU6IGIoJ3ZhcmlhbnRzLXBvcHVwJywgeyB2aWV3IH0pLCBwbGFjZW1lbnQ6IGdldFBvcHVwUG9zaXRpb24oaXNWZXJ0aWNhbFZpZXcsIHZpZXcpIH0sXG4gICAgICAgIHJlbmRlclN1YnNjcmliZVZhcmlhbnRzTGlzdCgpLFxuICAgICAgICByZW5kZXJTdWJzY3JpYmVGb3JtKCkpKTtcbn0pO1xuU3Vic2NyaWJlVmFyaWFudHNQb3B1cC5kaXNwbGF5TmFtZSA9ICdTdWJzY3JpYmVWYXJpYW50c1BvcHVwJztcbmV4cG9ydCBkZWZhdWx0IHdpdGhUcmFuc2xhdGlvbignY29udHJvbHMnKShTdWJzY3JpYmVWYXJpYW50c1BvcHVwKTtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB3aWR0aDogXCIxNFwiLFxuICBoZWlnaHQ6IFwiMTBcIixcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBkOiBcIk0xMy4yNDYgMy40NzVjLS41ODQuNDU3LTEuMzIgMS4wMTUtMy45MSAyLjg5NEM4LjgyOCA2Ljc1IDcuODg5IDcuNTg4IDcgNy41ODhjLS45MTQgMC0xLjgyOC0uODM4LTIuMzYxLTEuMjE5QzIuMDQ5IDQuNDkgMS4zMTIgMy45MzIuNzI5IDMuNDc1Yy0uMTAyLS4wNzctLjIyOSAwLS4yMjkuMTI3djUuMThDLjUgOS40NjYgMS4wMzMgMTAgMS43MTkgMTBIMTIuMjhhMS4yMiAxLjIyIDAgMDAxLjIxOS0xLjIxOXYtNS4xOGMwLS4xMjYtLjE1Mi0uMjAzLS4yNTQtLjEyNnpNNyA2Ljc1Yy41ODQuMDI1IDEuNDIyLS43MzYgMS44NTQtMS4wNDEgMy4zNzctMi40MzggMy42My0yLjY2NiA0LjM5Mi0zLjI3NWEuNTc4LjU3OCAwIDAwLjI1NC0uNDgzVjEuNDdjMC0uNjYtLjU1OS0xLjIxOS0xLjIxOS0xLjIxOUgxLjcyQTEuMjE4IDEuMjE4IDAgMDAuNSAxLjQ2OXYuNDgyYzAgLjIwMy4wNzYuMzgxLjIyOS40ODMuNzYxLjYwOSAxLjAxNS44MzcgNC4zOTIgMy4yNzUuNDMyLjMwNSAxLjI3IDEuMDY2IDEuODc5IDEuMDQxelwiXG59KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZDogXCJNMTMuMjQ2IDMuNDc1bC0uMDYtLjA4aC0uMDAybC4wNjIuMDh6bS0zLjkxIDIuODk0bC0uMDU5LS4wOGgtLjAwMWwuMDYuMDh6bS00LjY5NyAwbC0uMDYuMDgxaC4wMDJsLjA1OC0uMDh6TS43MjkgMy40NzVsLjA2MS0uMDgtLjA2LjA4ek03IDYuNzVsLjAwNC0uMWgtLjAwOGwuMDA0LjF6bTEuODU0LTEuMDQxbC4wNTcuMDgyaC4wMDFsLS4wNTgtLjA4MnptNC4zOTItMy4yNzVsLS4wNTYtLjA4NC0uMDA2LjAwNi4wNjIuMDc4em0tMTIuNTE3IDBsLjA2Mi0uMDc5LS4wMDctLjAwNS0uMDU1LjA4NHpNNS4xMiA1LjcwOWwtLjA1OC4wODEuMDU4LS4wODF6bTguMDY0LTIuMzEzYy0uNTgzLjQ1Ni0xLjMxOCAxLjAxMy0zLjkwOCAyLjg5MmwuMTE4LjE2MmMyLjU5LTEuODc5IDMuMzI3LTIuNDM4IDMuOTEzLTIuODk3bC0uMTIzLS4xNTd6bS0zLjkxIDIuODkzYy0uMjYuMTk1LS42MTMuNDkzLTEuMDE3Ljc0OC0uNDA1LjI1NC0uODQzLjQ1LTEuMjU4LjQ1di4yYy40NzMgMCAuOTUtLjIyMSAxLjM2NC0uNDgxLjQxNC0uMjYuNzg0LS41NzEgMS4wMzItLjc1N2wtLjEyLS4xNnpNNyA3LjQ4OGMtLjQyOCAwLS44NjYtLjE5Ny0xLjI3LS40NTEtLjQwOC0uMjU2LS43NTYtLjU1MS0xLjAzMy0uNzVsLS4xMTYuMTY0Yy4yNTYuMTgzLjYzLjQ5NyAxLjA0Mi43NTUuNDE1LjI2Ljg5MS40ODIgMS4zNzcuNDgydi0uMnptLTIuMzAzLTEuMkMyLjEwNyA0LjQxIDEuMzczIDMuODUyLjc5IDMuMzk2bC0uMTIzLjE1N2MuNTg1LjQ1OSAxLjMyMyAxLjAxOCAzLjkxMyAyLjg5N2wuMTE3LS4xNjJ6TS43OSAzLjM5NWEuMjM2LjIzNiAwIDAwLS4yNjItLjAyLjI1OC4yNTggMCAwMC0uMTI3LjIyN2guMmMwLS4wMy4wMTQtLjA0Ni4wMjYtLjA1M2EuMDMyLjAzMiAwIDAxLjAxOC0uMDA1Yy4wMDYgMCAuMDE0LjAwMy4wMjUuMDFsLjEyLS4xNnptLS4zOS4yMDd2NS4xOGguMnYtNS4xOEguNHptMCA1LjE4YzAgLjc0LjU3OCAxLjMxOCAxLjMxOSAxLjMxOHYtLjJDMS4wODkgOS45LjYgOS40MTIuNiA4Ljc4MUguNHpNMS43MTkgMTAuMUgxMi4yOHYtLjJIMS43MnYuMnptMTAuNTYyIDBBMS4zMiAxLjMyIDAgMDAxMy42IDguNzgxaC0uMkExLjEyIDEuMTIgMCAwMTEyLjI4MSA5Ljl2LjJ6TTEzLjYgOC43ODF2LTUuMThoLS4ydjUuMThoLjJ6bTAtNS4xOGEuMjYuMjYgMCAwMC0uNDE0LS4yMDZsLjEyLjE2YS4wNTQuMDU0IDAgMDEuMDYtLjAwNGMuMDIyLjAxMS4wMzQuMDMuMDM0LjA1aC4yek02Ljk5NiA2Ljg1Yy4xNjcuMDA3LjM0NS0uMDQyLjUyLS4xMTdhMy40MiAzLjQyIDAgMDAuNTI0LS4yOTdjLjE3LS4xMTQuMzM2LS4yMzkuNDg1LS4zNTMuMTUtLjExNS4yOC0uMjE4LjM4Ni0uMjkybC0uMTE1LS4xNjRjLS4xMS4wNzgtLjI0Ni4xODUtLjM5My4yOTctLjE0OC4xMTQtLjMxLjIzNS0uNDc1LjM0Ni0uMTY1LjExMS0uMzMzLjIxLS40OTIuMjhhMS4wMTQgMS4wMTQgMCAwMS0uNDMyLjFsLS4wMDguMnptMS45MTYtMS4wNmMzLjM3OC0yLjQzOCAzLjYzMy0yLjY2OCA0LjM5Ny0zLjI3OGwtLjEyNS0uMTU2Yy0uNzYuNjA4LTEuMDEzLjgzNS00LjM4OSAzLjI3MmwuMTE3LjE2MnptNC4zOS0zLjI3M2EuNjc4LjY3OCAwIDAwLjI5OC0uNTY2aC0uMmEuNDguNDggMCAwMS0uMjEuNGwuMTEyLjE2NnptLjI5OC0uNTY2VjEuNDdoLS4ydi40ODJoLjJ6bTAtLjQ4MkMxMy42Ljc1MyAxMi45OTcuMTUgMTIuMjgxLjE1di4yYy42MDUgMCAxLjExOS41MTQgMS4xMTkgMS4xMTloLjJ6TTEyLjI4MS4xNUgxLjcydi4yaDEwLjU2di0uMnpNMS43Mi4xNUExLjMyIDEuMzIgMCAwMC40IDEuNDY5aC4yQy42Ljg2MiAxLjA5LjM1IDEuNzE5LjM1di0uMnpNLjQgMS40Njl2LjQ4MmguMlYxLjQ3SC40em0wIC40ODJjMCAuMjI3LjA4Ni40NDEuMjczLjU2NmwuMTExLS4xNjdDLjY2NiAyLjI3Mi42IDIuMTMuNiAxLjk1MUguNHptLjI2Ni41NmMuNzYzLjYxMSAxLjAxOS44NCA0LjM5NyAzLjI4bC4xMTctLjE2M0MxLjgwNCAzLjE5IDEuNTUgMi45NjQuNzkgMi4zNTZsLS4xMjUuMTU2em00LjM5NyAzLjI4Yy4xMDYuMDc0LjIzNy4xNzcuMzg3LjI5Mi4xNS4xMTQuMzE2LjIzOS40ODkuMzU0LjE3Mi4xMTQuMzUzLjIyLjUzMi4yOTYuMTc4LjA3Ni4zNi4xMjQuNTMzLjExN2wtLjAwOC0uMmExLjA2NCAxLjA2NCAwIDAxLS40NDctLjEwMSAzLjE3OCAzLjE3OCAwIDAxLS41LS4yOCA4LjgxMiA4LjgxMiAwIDAxLS40NzctLjM0NWMtLjE0Ny0uMTEyLS4yODMtLjIyLS4zOTMtLjI5N2wtLjExNi4xNjR6XCJcbn0pKSk7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU3Vic2NyaWJlLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU3Vic2NyaWJlLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IHsgd2l0aFRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBTdWJzY3JpYmVTdWNjZXNzUG9wdXAgfSBmcm9tICcuL1N1YnNjcmliZVN1Y2Nlc3NQb3B1cCc7XG5pbXBvcnQgeyBTdWJzY3JpYmVWYXJpYW50c1BvcHVwIH0gZnJvbSAnLi9TdWJzY3JpYmVWYXJpYW50c1BvcHVwJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJ0BncmF2aXR5LXVpL3Vpa2l0JztcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tICcuLi9Db250cm9sJztcbmltcG9ydCBTdWJzY3JpYmVJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdWJzY3JpYmUuc3ZnJztcbmltcG9ydCAnLi9TdWJzY3JpYmUuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLXN1YnNjcmliZScpO1xuZXhwb3J0IHZhciBTdWJzY3JpYmVWaWV3O1xuKGZ1bmN0aW9uIChTdWJzY3JpYmVWaWV3KSB7XG4gICAgU3Vic2NyaWJlVmlld1tcIldpZGVcIl0gPSBcIndpZGVcIjtcbiAgICBTdWJzY3JpYmVWaWV3W1wiUmVndWxhclwiXSA9IFwicmVndWxhclwiO1xufSkoU3Vic2NyaWJlVmlldyB8fCAoU3Vic2NyaWJlVmlldyA9IHt9KSk7XG5jb25zdCBTdWJzY3JpYmUgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgaXNWZXJ0aWNhbFZpZXcsIG9uU3Vic2NyaWJlLCB2aWV3LCBjbGFzc05hbWVDb250cm9sLCBwb3B1cFBvc2l0aW9uLCB0IH0gPSBwcm9wcztcbiAgICBjb25zdCBzdWJzY3JpYmVDb250cm9sUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtzaG93U3Vic2NyaWJlU3VjY2Vzc1BvcHVwLCBzZXRTaG93U3Vic2NyaWJlU3VjY2Vzc1BvcHVwXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2hvd1N1YnNjcmliZVZhcmlhbnRzUG9wdXAsIHNldFNob3dTdWJzY3JpYmVWYXJpYW50c1BvcHVwXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzZXRTdWJzY3JpYmVDb250cm9sUmVmID0gdXNlQ2FsbGJhY2soKHJlZikgPT4ge1xuICAgICAgICBzdWJzY3JpYmVDb250cm9sUmVmLmN1cnJlbnQgPSByZWY7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IG9uQ2hhbmdlU3Vic2NyaWJlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBzZXRTaG93U3Vic2NyaWJlVmFyaWFudHNQb3B1cCghc2hvd1N1YnNjcmliZVZhcmlhbnRzUG9wdXApO1xuICAgICAgICBzZXRTaG93U3Vic2NyaWJlU3VjY2Vzc1BvcHVwKGZhbHNlKTtcbiAgICB9LCBbc2hvd1N1YnNjcmliZVZhcmlhbnRzUG9wdXBdKTtcbiAgICBjb25zdCByZW5kZXJTdWJzY3JpYmVDb250cm9sID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbCwgeyBvbkNsaWNrOiBvbkNoYW5nZVN1YnNjcmliZSwgY2xhc3NOYW1lOiBiKCdjb250cm9sJywgeyB2aWV3IH0sIGNsYXNzTmFtZUNvbnRyb2wpLCBpc1ZlcnRpY2FsVmlldzogaXNWZXJ0aWNhbFZpZXcsIHRvb2x0aXBUZXh0OiB0KGBzdWJzY3JpYmUtdGV4dGApLCBzZXRSZWY6IHNldFN1YnNjcmliZUNvbnRyb2xSZWYsIGljb246IChhcmdzKSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KFN1YnNjcmliZUljb24sIE9iamVjdC5hc3NpZ24oe30sIGFyZ3MpKSwgcG9wdXBQb3NpdGlvbjogcG9wdXBQb3NpdGlvbiB9KSk7XG4gICAgfSwgW1xuICAgICAgICBjbGFzc05hbWVDb250cm9sLFxuICAgICAgICB2aWV3LFxuICAgICAgICBpc1ZlcnRpY2FsVmlldyxcbiAgICAgICAgc2V0U3Vic2NyaWJlQ29udHJvbFJlZixcbiAgICAgICAgb25DaGFuZ2VTdWJzY3JpYmUsXG4gICAgICAgIHBvcHVwUG9zaXRpb24sXG4gICAgICAgIHQsXG4gICAgXSk7XG4gICAgY29uc3QgcmVuZGVyV2lkZVN1YnNjcmliZUNvbnRyb2xzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2NvbnRhaW5lcicsIHsgdmlldyB9KSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignY29udGFpbmVyLXJvdycsIHsgdmlldyB9KSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJoM1wiLCB7IGNsYXNzTmFtZTogYigndGl0bGUnLCB7IHZpZXcgfSkgfSwgdCgnbWFpbi1xdWVzdGlvbicpKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdjb250cm9scycsIHsgdmlldyB9KSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyB2aWV3OiBcImZsYXQtc2Vjb25kYXJ5XCIsIHJlZjogc2V0U3Vic2NyaWJlQ29udHJvbFJlZiwgb25DbGljazogb25DaGFuZ2VTdWJzY3JpYmUsIGNsYXNzTmFtZTogYignY29udHJvbCcsIHsgdmlldyB9KSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTdWJzY3JpYmVJY29uLCB7IGNsYXNzTmFtZTogYignc3Vic2NyaWJlLWJ1dHRvbicpIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdCgnYnV0dG9uLVN1YnNjcmliZS10ZXh0JykpKSkpKTtcbiAgICB9LCBbdmlldywgc2V0U3Vic2NyaWJlQ29udHJvbFJlZiwgb25DaGFuZ2VTdWJzY3JpYmUsIHRdKTtcbiAgICBjb25zdCByZW5kZXJTdWJzY3JpYmVDb250cm9scyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHZpZXcgPT09IFN1YnNjcmliZVZpZXcuUmVndWxhclxuICAgICAgICAgICAgPyByZW5kZXJTdWJzY3JpYmVDb250cm9sKClcbiAgICAgICAgICAgIDogcmVuZGVyV2lkZVN1YnNjcmliZUNvbnRyb2xzKCk7XG4gICAgfSwgW3ZpZXcsIHJlbmRlclN1YnNjcmliZUNvbnRyb2wsIHJlbmRlcldpZGVTdWJzY3JpYmVDb250cm9sc10pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgcmVuZGVyU3Vic2NyaWJlQ29udHJvbHMoKSxcbiAgICAgICAgc2hvd1N1YnNjcmliZVN1Y2Nlc3NQb3B1cCAmJiBzdWJzY3JpYmVDb250cm9sUmVmLmN1cnJlbnQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3Vic2NyaWJlU3VjY2Vzc1BvcHVwLCBPYmplY3QuYXNzaWduKHsgdmlzaWJsZTogc2hvd1N1YnNjcmliZVN1Y2Nlc3NQb3B1cCwgc2V0VmlzaWJsZTogc2V0U2hvd1N1YnNjcmliZVN1Y2Nlc3NQb3B1cCB9LCB7IHZpZXcsIGlzVmVydGljYWxWaWV3LCBhbmNob3I6IHN1YnNjcmliZUNvbnRyb2xSZWYsIHQgfSkpKSxcbiAgICAgICAgc2hvd1N1YnNjcmliZVZhcmlhbnRzUG9wdXAgJiYgc3Vic2NyaWJlQ29udHJvbFJlZi5jdXJyZW50ICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFN1YnNjcmliZVZhcmlhbnRzUG9wdXAsIE9iamVjdC5hc3NpZ24oeyB2aXNpYmxlOiBzaG93U3Vic2NyaWJlVmFyaWFudHNQb3B1cCwgc2V0VmlzaWJsZTogc2V0U2hvd1N1YnNjcmliZVZhcmlhbnRzUG9wdXAsIG9uU3Vic2NyaWJlOiBvblN1YnNjcmliZSwgb25TdWJtaXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRTaG93U3Vic2NyaWJlVmFyaWFudHNQb3B1cChmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0U2hvd1N1YnNjcmliZVN1Y2Nlc3NQb3B1cCh0cnVlKTtcbiAgICAgICAgICAgIH0gfSwgeyB2aWV3LCBpc1ZlcnRpY2FsVmlldywgYW5jaG9yOiBzdWJzY3JpYmVDb250cm9sUmVmLCB0IH0pKSkpKTtcbn0pO1xuU3Vic2NyaWJlLmRpc3BsYXlOYW1lID0gJ1N1YnNjcmliZSc7XG5leHBvcnQgZGVmYXVsdCB3aXRoVHJhbnNsYXRpb24oJ2NvbnRyb2xzJykoU3Vic2NyaWJlKTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0RpdmlkZXJDb250cm9sLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRGl2aWRlckNvbnRyb2wuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY24gZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IHsgQ29udHJvbFNpemVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCAnLi9EaXZpZGVyQ29udHJvbC5zY3NzJztcbmNvbnN0IGIgPSBjbignZGMtZGl2aWRlci1jb250cm9sJyk7XG5jb25zdCBEaXZpZGVyQ29udHJvbCA9ICh7IHNpemUgPSBDb250cm9sU2l6ZXMuTSwgY2xhc3NOYW1lLCBpc1ZlcnRpY2FsVmlldyA9IHRydWUsIH0pID0+IHtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYih7IHNpemUsIHZlcnRpY2FsOiBpc1ZlcnRpY2FsVmlldyB9LCBjbGFzc05hbWUpIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IERpdmlkZXJDb250cm9sO1xuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHdpZHRoOiBcIjEyXCIsXG4gIGhlaWdodDogXCIxMlwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBkOiBcIk0xMS4zODMgNC41YS4zMDkuMzA5IDAgMDAuMzA1LS4zMDV2LS42MWEuMzI4LjMyOCAwIDAwLS4zMDUtLjMwNGgtMi41NFYuNzQyQS4zMjguMzI4IDAgMDA4LjU0LjQzOGgtLjYxYS4zMDkuMzA5IDAgMDAtLjMwNC4zMDR2My4xNDljMCAuMzU1LjI1NC42MDkuNjEuNjA5aDMuMTQ4em0tNy4wMDgtLjYxVi43NDNBLjMyOC4zMjggMCAwMDQuMDcuNDM4aC0uNjFhLjMwOS4zMDkgMCAwMC0uMzA0LjMwNHYyLjU0SC42MTdhLjMwOS4zMDkgMCAwMC0uMzA0LjMwNHYuNjFjMCAuMTc3LjEyNi4zMDQuMzA0LjMwNGgzLjE0OWMuMzMgMCAuNjA5LS4yNTQuNjA5LS42MXptMCA3LjYxOFY4LjM1OWMwLS4zMy0uMjgtLjYwOS0uNjEtLjYwOUguNjE4YS4zMDkuMzA5IDAgMDAtLjMwNC4zMDV2LjYxYzAgLjE3Ny4xMjYuMzA0LjMwNC4zMDRoMi41NHYyLjUzOWMwIC4xNzguMTI2LjMwNS4zMDQuMzA1aC42MWEuMzA5LjMwOSAwIDAwLjMwNC0uMzA1em00LjQ2OSAwdi0yLjU0aDIuNTM5YS4zMDkuMzA5IDAgMDAuMzA1LS4zMDR2LS42MWEuMzI4LjMyOCAwIDAwLS4zMDUtLjMwNEg4LjIzNGEuNjAyLjYwMiAwIDAwLS42MDkuNjF2My4xNDhjMCAuMTc4LjEyNy4zMDUuMzA1LjMwNWguNjFhLjMwOS4zMDkgMCAwMC4zMDQtLjMwNXpcIixcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIlxufSkpKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCBkZWZhdWx0ICgoe1xuICBzdHlsZXMgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgd2lkdGg6IFwiMTRcIixcbiAgaGVpZ2h0OiBcIjE0XCIsXG4gIGZpbGw6IFwibm9uZVwiLFxuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG59LCBwcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gIGQ6IFwiTS40MzggNS4xNDhjMCAuMjA2LjE0Ni4zNTIuMzUxLjM1MmguNzAzYS4zNTYuMzU2IDAgMDAuMzUyLS4zNTJ2LTIuOTNoMi45M2EuMzU2LjM1NiAwIDAwLjM1MS0uMzV2LS43MDRhLjM3OC4zNzggMCAwMC0uMzUyLS4zNTFIMS4xNDFhLjY5NC42OTQgMCAwMC0uNzA0LjcwM3YzLjYzMnptOC40MzctMy45ODR2LjcwM2MwIC4yMDUuMTQ2LjM1Mi4zNTIuMzUyaDIuOTN2Mi45M2MwIC4yMDUuMTQ2LjM1MS4zNS4zNTFoLjcwNGEuMzU2LjM1NiAwIDAwLjM1MS0uMzUyVjEuNTE2YS43MTMuNzEzIDAgMDAtLjcwMy0uNzA0SDkuMjI3YS4zNTYuMzU2IDAgMDAtLjM1Mi4zNTJ6bTQuMzM2IDguMDg2aC0uNzAzYS4zNTYuMzU2IDAgMDAtLjM1Mi4zNTJ2Mi45M2gtMi45M2EuMzU2LjM1NiAwIDAwLS4zNTEuMzV2LjcwNGMwIC4yMDUuMTQ2LjM1MS4zNTIuMzUxaDMuNjMyYS42OTQuNjk0IDAgMDAuNzA0LS43MDNWOS42MDJhLjM3OC4zNzggMCAwMC0uMzUyLS4zNTJ6bS04LjA4NiA0LjMzNnYtLjcwM2EuMzc4LjM3OCAwIDAwLS4zNTItLjM1MmgtMi45M3YtMi45M2EuMzc4LjM3OCAwIDAwLS4zNS0uMzUxSC43ODhhLjM1Ni4zNTYgMCAwMC0uMzUyLjM1MnYzLjYzMmMwIC40MS4yOTMuNzA0LjcwNC43MDRoMy42MzJhLjM1Ni4zNTYgMCAwMC4zNTItLjM1MnpcIixcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIlxufSkpKTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHdpdGhUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgSWNvbiBhcyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGdyYXZpdHktdWkvdWlraXQnO1xuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uLy4uL0NvbnRyb2wnO1xuaW1wb3J0IEZ1bGxTY3JlZW5DbGlja2VkSWNvbiBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvZnVsbC1zY3JlZW4tY2xpY2tlZC5zdmcnO1xuaW1wb3J0IEZ1bGxTY3JlZW5JY29uIGZyb20gJy4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9mdWxsLXNjcmVlbi5zdmcnO1xuY29uc3QgRnVsbFNjcmVlbkNvbnRyb2wgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgaXNWZXJ0aWNhbFZpZXcsIHNpemUsIHZhbHVlLCBvbkNoYW5nZSwgbGFuZywgcG9wdXBQb3NpdGlvbiwgaTE4biwgdCB9ID0gcHJvcHM7XG4gICAgY29uc3Qgb25DbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAgICAgICBvbkNoYW5nZSghdmFsdWUpO1xuICAgICAgICB9XG4gICAgfSwgW3ZhbHVlLCBvbkNoYW5nZV0pO1xuICAgIGNvbnN0IG9uS2V5RG93biA9IHVzZUNhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgb25DbGljaygpO1xuICAgICAgICB9XG4gICAgfSwgW29uQ2xpY2ssIHZhbHVlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIG9uS2V5RG93bik7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgb25LZXlEb3duKTtcbiAgICAgICAgfTtcbiAgICB9LCBbb25LZXlEb3duXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaTE4bi5jaGFuZ2VMYW5ndWFnZShsYW5nKTtcbiAgICB9LCBbaTE4biwgbGFuZ10pO1xuICAgIGNvbnN0IGFjdGl2ZU1vZGUgPSB2YWx1ZSA/ICdlbmFibGVkJyA6ICdkaXNhYmxlZCc7XG4gICAgaWYgKCFvbkNoYW5nZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIHsgc2l6ZTogc2l6ZSwgb25DbGljazogb25DbGljaywgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGlzVmVydGljYWxWaWV3OiBpc1ZlcnRpY2FsVmlldywgdG9vbHRpcFRleHQ6IHQoYGZ1bGwtc2NyZWVuLXRleHQtJHthY3RpdmVNb2RlfWApLCBpY29uOiAoYXJncykgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7IGRhdGE6IHZhbHVlID8gRnVsbFNjcmVlbkNsaWNrZWRJY29uIDogRnVsbFNjcmVlbkljb24gfSwgYXJncykpKSwgcG9wdXBQb3NpdGlvbjogcG9wdXBQb3NpdGlvbiB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCdjb250cm9scycpKEZ1bGxTY3JlZW5Db250cm9sKTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1N3aXRjaC5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU3dpdGNoLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBDb250cm9sTGFiZWwgfSBmcm9tICcuLi9Db250cm9sTGFiZWwnO1xuaW1wb3J0IHsgYmxvY2sgfSBmcm9tICcuLi91dGlscy9jbic7XG5pbXBvcnQgeyB1c2VDaGVja2JveCB9IGZyb20gJy4uL3V0aWxzL3VzZUNoZWNrYm94JztcbmltcG9ydCAnLi9Td2l0Y2guY3NzJztcbmNvbnN0IGIgPSBibG9jaygnc3dpdGNoJyk7XG5leHBvcnQgY29uc3QgU3dpdGNoID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBTd2l0Y2gocHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHsgc2l6ZSA9ICdtJywgZGlzYWJsZWQgPSBmYWxzZSwgY29udGVudCwgY2hpbGRyZW4sIHRpdGxlLCBzdHlsZSwgY2xhc3NOYW1lLCBxYSB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBjaGVja2VkLCBpbnB1dFByb3BzIH0gPSB1c2VDaGVja2JveChwcm9wcyk7XG4gICAgY29uc3QgdGV4dCA9IGNvbnRlbnQgfHwgY2hpbGRyZW47XG4gICAgY29uc3QgY29udHJvbCA9IChSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYignaW5kaWNhdG9yJykgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImlucHV0XCIsIE9iamVjdC5hc3NpZ24oe30sIGlucHV0UHJvcHMsIHsgY2xhc3NOYW1lOiBiKCdjb250cm9sJykgfSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYignb3V0bGluZScpIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7IGNsYXNzTmFtZTogYignc2xpZGVyJykgfSkpKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbExhYmVsLCB7IHJlZjogcmVmLCB0aXRsZTogdGl0bGUsIHN0eWxlOiBzdHlsZSwgc2l6ZTogc2l6ZSwgZGlzYWJsZWQ6IGRpc2FibGVkLCBjbGFzc05hbWU6IGIoe1xuICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgfSwgY2xhc3NOYW1lKSwgbGFiZWxDbGFzc05hbWU6IGIoJ3RleHQnKSwgcWE6IHFhLCBjb250cm9sOiBjb250cm9sIH0sIHRleHQpKTtcbn0pO1xuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHdpZHRoOiBcIjE1XCIsXG4gIGhlaWdodDogXCIxNVwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBkOiBcIk0xMy4yNDIgNi44MThsLjkzOC0uNTI3YS42OTQuNjk0IDAgMDAuMzIyLS43OTFjLS4zMjItMS4yMy0uOTk2LTIuMzQ0LTEuODc1LTMuMjUyLS4yMzQtLjIwNS0uNTg2LS4yNjQtLjg1LS4xMTdsLS45MzcuNTU3YTUuMTk3IDUuMTk3IDAgMDAtLjk2Ny0uNTU3VjEuMDQ3YzAtLjI5My0uMjM0LS42MTUtLjUyNy0uNjc0YTcuMjggNy4yOCAwIDAwLTMuNzIxIDAgLjY4Ny42ODcgMCAwMC0uNTI3LjY3NFYyLjEzYy0uMjkzLjExNy0uNzMzLjM4LS45NjcuNTU3bC0uOTM4LS41NTdjLS4yNjMtLjE0Ny0uNjE1LS4wODgtLjg1LjExN0MxLjQ2NiAzLjE1Ni43OTIgNC4yNy40NyA1LjVhLjY5NC42OTQgMCAwMC4zMjIuNzkxbC45MzguNTI3Yy0uMDMuMTc2LS4wMy40MS0uMDMuNTU3IDAgLjE3NiAwIC40MS4wMy41NTdsLS45MzguNTU2YS42OTQuNjk0IDAgMDAtLjMyMi43OTFjLjMyMiAxLjIzLjk5NiAyLjM0NCAxLjg3NSAzLjI1Mi4yMzQuMjA1LjU4Ni4yNjQuODUuMTE3bC45MzctLjU1NmMuMjM0LjE3Ni42NzQuNDQuOTY3LjU1NnYxLjA4NGMwIC4yOTMuMjM0LjYxNi41MjcuNjc0YTcuMjggNy4yOCAwIDAwMy43MiAwIC42ODcuNjg3IDAgMDAuNTI4LS42NzR2LTEuMDg0Yy4yOTMtLjExNy43MzItLjM4Ljk2Ny0uNTU2bC45MzcuNTU2Yy4yNjQuMTQ3LjYxNi4wODguODUtLjExNy44NzktLjkwOCAxLjU1My0yLjAyMSAxLjg3NS0zLjI1MmEuNjk0LjY5NCAwIDAwLS4zMjItLjc5bC0uOTM4LS41NTdjLjAzLS4zNTIuMDMtLjczMyAwLTEuMTE0ek0xMS42OSA4LjY5M2wxLjI5LjczM2MtLjE3Ni41MjctLjY0NSAxLjI4OS0uOTk3IDEuNjk5bC0xLjI4OS0uNzMyYy0uOTM3Ljc5LTEuMDU0Ljg3OC0yLjIyNiAxLjI4OXYxLjQ5NGMtLjI2NC4wMy0uNzAzLjA4OC0uOTY3LjA4OC0uMjkzIDAtLjczMi0uMDU5LS45OTYtLjA4OHYtMS40OTRjLTEuMTcyLS40MS0xLjMxOC0uNDk4LTIuMjI3LTEuMjlsLTEuMjg5LjczM2MtLjM1MS0uNDEtLjgyLTEuMTcyLS45OTYtMS43bDEuMjktLjczMmMtLjIzNS0xLjIzLS4yMzUtMS4zNzcgMC0yLjYwN2wtMS4yOS0uNzMyYy4yMzUtLjYxNi41NTctMS4yMDIuOTk2LTEuN2wxLjI5LjczM2MuOTM3LS43OTEgMS4wNTQtLjg4IDIuMjI2LTEuMjlWMS42MDVjLjI2NC0uMDMuNzAzLS4wODguOTk2LS4wODguMjY0IDAgLjcwMy4wNTguOTY3LjA4OHYxLjQ5NGMxLjE3Mi40MSAxLjMxOC40OTggMi4yMjYgMS4yODlsMS4yOS0uNzMzYy4zNTEuNDEuODIgMS4xNzIuOTk1IDEuN2wtMS4yODguNzMyYy4yMzQgMS4yMy4yMzQgMS4zNzcgMCAyLjYwN3pNNy41IDQuNTYzYy0xLjU1MyAwLTIuODEzIDEuMjg5LTIuODEzIDIuODEyQTIuODEzIDIuODEzIDAgMDA3LjUgMTAuMTg4YzEuNTIzIDAgMi44MTMtMS4yNiAyLjgxMy0yLjgxMyAwLTEuNTIzLTEuMjktMi44MTMtMi44MTMtMi44MTN6bTAgNC4yMThhMS4zODggMS4zODggMCAwMS0xLjQwNi0xLjQwNmMwLS43NjIuNjE1LTEuNDA2IDEuNDA2LTEuNDA2Ljc2MiAwIDEuNDA2LjY0NCAxLjQwNiAxLjQwNiAwIC43OTEtLjY0NCAxLjQwNi0xLjQwNiAxLjQwNnpcIixcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIlxufSkpKTsiLCJpbXBvcnQgeyBQb3BwZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2hvb2tzJztcbmV4cG9ydCBjb25zdCBnZXRQb3B1cFBvc2l0aW9uID0gKGlzVmVydGljYWxWaWV3KSA9PiB7XG4gICAgcmV0dXJuIGlzVmVydGljYWxWaWV3ID8gUG9wcGVyUG9zaXRpb24uTEVGVF9TVEFSVCA6IFBvcHBlclBvc2l0aW9uLkJPVFRPTV9FTkQ7XG59O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2V0dGluZ3NDb250cm9sLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vU2V0dGluZ3NDb250cm9sLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHdpdGhUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IGNuIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IEJ1dHRvbiwgUG9wdXAsIFN3aXRjaCwgTGlzdCwgSWNvbiBhcyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGdyYXZpdHktdWkvdWlraXQnO1xuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uLy4uLy4uL0NvbnRyb2wnO1xuaW1wb3J0IHsgVGV4dFNpemVzLCBUaGVtZSB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgU2V0dGluZ3NJY29uIGZyb20gJy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9jb2cuc3ZnJztcbmltcG9ydCB7IGdldFBvcHVwUG9zaXRpb24gfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgJy4vU2V0dGluZ3NDb250cm9sLnNjc3MnO1xuY29uc3QgSVRFTV9IRUlHSFQgPSA0ODtcbmNvbnN0IGIgPSBjbignZGMtc2V0dGluZ3MtY29udHJvbCcpO1xuY29uc3QgU2V0dGluZ3NDb250cm9sID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIGlzVmVydGljYWxWaWV3LCBzaXplLCBsYW5nLCBpMThuLCB0ZXh0U2l6ZSwgdGhlbWUsIHdpZGVGb3JtYXQsIHNob3dNaW5pVG9jLCBmdWxsU2NyZWVuLCBzaW5nbGVQYWdlLCBvbkNoYW5nZVRoZW1lLCBvbkNoYW5nZVdpZGVGb3JtYXQsIG9uQ2hhbmdlU2hvd01pbmlUb2MsIG9uQ2hhbmdlVGV4dFNpemUsIHBvcHVwUG9zaXRpb24sIHQsIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250cm9sUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtpc1Zpc2libGVQb3B1cCwgc2V0SXNWaXNpYmxlUG9wdXBdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHNob3dQb3B1cCA9ICgpID0+IHNldElzVmlzaWJsZVBvcHVwKHRydWUpO1xuICAgIGNvbnN0IGhpZGVQb3B1cCA9ICgpID0+IHNldElzVmlzaWJsZVBvcHVwKGZhbHNlKTtcbiAgICBjb25zdCBtYWtlT25DaGFuZ2VUZXh0U2l6ZSA9IHVzZUNhbGxiYWNrKCh0ZXh0U2l6ZUtleSkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAob25DaGFuZ2VUZXh0U2l6ZSkge1xuICAgICAgICAgICAgb25DaGFuZ2VUZXh0U2l6ZSh0ZXh0U2l6ZUtleSk7XG4gICAgICAgIH1cbiAgICB9LCBbb25DaGFuZ2VUZXh0U2l6ZV0pO1xuICAgIGNvbnN0IF9vbkNoYW5nZVRoZW1lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAob25DaGFuZ2VUaGVtZSkge1xuICAgICAgICAgICAgb25DaGFuZ2VUaGVtZSh0aGVtZSA9PT0gVGhlbWUuRGFyayA/IFRoZW1lLkxpZ2h0IDogVGhlbWUuRGFyayk7XG4gICAgICAgIH1cbiAgICB9LCBbdGhlbWUsIG9uQ2hhbmdlVGhlbWVdKTtcbiAgICBjb25zdCBfb25DaGFuZ2VXaWRlRm9ybWF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAob25DaGFuZ2VXaWRlRm9ybWF0KSB7XG4gICAgICAgICAgICBvbkNoYW5nZVdpZGVGb3JtYXQoIXdpZGVGb3JtYXQpO1xuICAgICAgICB9XG4gICAgfSwgW3dpZGVGb3JtYXQsIG9uQ2hhbmdlV2lkZUZvcm1hdF0pO1xuICAgIGNvbnN0IF9vbkNoYW5nZVNob3dNaW5pVG9jID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAob25DaGFuZ2VTaG93TWluaVRvYykge1xuICAgICAgICAgICAgb25DaGFuZ2VTaG93TWluaVRvYyghc2hvd01pbmlUb2MpO1xuICAgICAgICB9XG4gICAgfSwgW3Nob3dNaW5pVG9jLCBvbkNoYW5nZVNob3dNaW5pVG9jXSk7XG4gICAgY29uc3QgZ2V0U2V0dGluZ3NJdGVtcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgY29uc3QgYWxsVGV4dFNpemVzID0gT2JqZWN0LnZhbHVlcyhUZXh0U2l6ZXMpO1xuICAgICAgICBjb25zdCBzaG93TWluaVRvY0Rpc2FibGVkID0gZnVsbFNjcmVlbiB8fCBzaW5nbGVQYWdlO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgb25DaGFuZ2VXaWRlRm9ybWF0XG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHQoJ2xhYmVsX3dpZGVfZm9ybWF0JyksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KGBkZXNjcmlwdGlvbl93aWRlX2Zvcm1hdF8ke3dpZGVGb3JtYXQgPyAnZW5hYmxlZCcgOiAnZGlzYWJsZWQnfWApLFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sOiBSZWFjdC5jcmVhdGVFbGVtZW50KFN3aXRjaCwgeyBjaGVja2VkOiB3aWRlRm9ybWF0LCBvbkNoYW5nZTogX29uQ2hhbmdlV2lkZUZvcm1hdCB9KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgb25DaGFuZ2VTaG93TWluaVRvY1xuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0KCdsYWJlbF9zaG93X21pbmlfdG9jJyksXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KCdkZXNjcmlwdGlvbl9zaG93X21pbmlfdG9jJyksXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2w6IChSZWFjdC5jcmVhdGVFbGVtZW50KFN3aXRjaCwgeyBkaXNhYmxlZDogc2hvd01pbmlUb2NEaXNhYmxlZCwgY2hlY2tlZDogc2hvd01pbmlUb2MsIG9uQ2hhbmdlOiBfb25DaGFuZ2VTaG93TWluaVRvYyB9KSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIG9uQ2hhbmdlVGhlbWVcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdCgnbGFiZWxfZGFya190aGVtZScpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogVGhlbWUuTGlnaHQgPT09IHRoZW1lXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2Rlc2NyaXB0aW9uX2Rpc2FibGVkX2RhcmtfdGhlbWUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdkZXNjcmlwdGlvbl9lbmFibGVkX2RhcmtfdGhlbWUnKSxcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbDogUmVhY3QuY3JlYXRlRWxlbWVudChTd2l0Y2gsIHsgY2hlY2tlZDogdGhlbWUgPT09IFRoZW1lLkRhcmssIG9uQ2hhbmdlOiBfb25DaGFuZ2VUaGVtZSB9KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgb25DaGFuZ2VUZXh0U2l6ZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0KCdsYWJlbF90ZXh0X3NpemUnKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHQoYGRlc2NyaXB0aW9uXyR7dGV4dFNpemV9X3RleHRfc2l6ZWApLFxuICAgICAgICAgICAgICAgICAgICBjb250cm9sOiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigndGV4dC1zaXplLWNvbnRyb2wnKSB9LCBhbGxUZXh0U2l6ZXMubWFwKCh0ZXh0U2l6ZUtleSkgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLCB7IGtleTogdGV4dFNpemVLZXksIGNsYXNzTmFtZTogYigndGV4dC1zaXplLWJ1dHRvbicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dFNpemVLZXldOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksIHZpZXc6IFwiZmxhdFwiLCBvbkNsaWNrOiBtYWtlT25DaGFuZ2VUZXh0U2l6ZSh0ZXh0U2l6ZUtleSkgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLkljb24sIHsgY2xhc3NOYW1lOiBiKCd0ZXh0LXNpemUtYnV0dG9uLWljb24nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdGV4dFNpemUgPT09IHRleHRTaXplS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIH0sIFwiQVwiKSkpKSkpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xuICAgIH0sIFtcbiAgICAgICAgdCxcbiAgICAgICAgdGV4dFNpemUsXG4gICAgICAgIHRoZW1lLFxuICAgICAgICB3aWRlRm9ybWF0LFxuICAgICAgICBzaG93TWluaVRvYyxcbiAgICAgICAgZnVsbFNjcmVlbixcbiAgICAgICAgc2luZ2xlUGFnZSxcbiAgICAgICAgb25DaGFuZ2VUaGVtZSxcbiAgICAgICAgb25DaGFuZ2VXaWRlRm9ybWF0LFxuICAgICAgICBvbkNoYW5nZVNob3dNaW5pVG9jLFxuICAgICAgICBfb25DaGFuZ2VUaGVtZSxcbiAgICAgICAgX29uQ2hhbmdlV2lkZUZvcm1hdCxcbiAgICAgICAgX29uQ2hhbmdlU2hvd01pbmlUb2MsXG4gICAgICAgIG9uQ2hhbmdlVGV4dFNpemUsXG4gICAgICAgIG1ha2VPbkNoYW5nZVRleHRTaXplLFxuICAgIF0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobGFuZyk7XG4gICAgfSwgW2kxOG4sIGxhbmddKTtcbiAgICBjb25zdCBzZXRSZWYgPSB1c2VDYWxsYmFjaygocmVmKSA9PiB7XG4gICAgICAgIGNvbnRyb2xSZWYuY3VycmVudCA9IHJlZjtcbiAgICB9LCBbXSk7XG4gICAgaWYgKCEob25DaGFuZ2VXaWRlRm9ybWF0IHx8IG9uQ2hhbmdlVGhlbWUgfHwgb25DaGFuZ2VTaG93TWluaVRvYyB8fCBvbkNoYW5nZVRleHRTaXplKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgc2V0dGluZ3NJdGVtcyA9IGdldFNldHRpbmdzSXRlbXMoKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbCwgeyBzaXplOiBzaXplLCBvbkNsaWNrOiBzaG93UG9wdXAsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBpc1ZlcnRpY2FsVmlldzogaXNWZXJ0aWNhbFZpZXcsIHRvb2x0aXBUZXh0OiB0KCdzZXR0aW5ncy10ZXh0JyksIHNldFJlZjogc2V0UmVmLCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uLCBpY29uOiAoYXJncykgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHsgZGF0YTogU2V0dGluZ3NJY29uIH0sIGFyZ3MpKSB9KSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQb3B1cCwgeyBhbmNob3JSZWY6IGNvbnRyb2xSZWYsIG9wZW46IGlzVmlzaWJsZVBvcHVwLCBjbGFzc05hbWU6IGIoJ3BvcHVwJyksIG9uT3V0c2lkZUNsaWNrOiBoaWRlUG9wdXAsIHBsYWNlbWVudDogZ2V0UG9wdXBQb3NpdGlvbihpc1ZlcnRpY2FsVmlldykgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGlzdCwgeyBpdGVtczogc2V0dGluZ3NJdGVtcywgY2xhc3NOYW1lOiBiKCdsaXN0JyksIGl0ZW1IZWlnaHQ6IElURU1fSEVJR0hULCBpdGVtc0hlaWdodDogSVRFTV9IRUlHSFQgKiBzZXR0aW5nc0l0ZW1zLmxlbmd0aCwgZmlsdGVyYWJsZTogZmFsc2UsIHJlbmRlckl0ZW06IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbGlzdC1pdGVtJykgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2xpc3QtaXRlbS1jb250ZW50JykgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdsaXN0LWl0ZW0tdGV4dCcpIH0sIGl0ZW0udGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbGlzdC1pdGVtLWRlc2NyaXB0aW9uJykgfSwgaXRlbS5kZXNjcmlwdGlvbikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbGlzdC1pdGVtLWNvbnRyb2wnKSB9LCBpdGVtLmNvbnRyb2wpKSk7XG4gICAgICAgICAgICAgICAgfSB9KSkpKTtcbn07XG5leHBvcnQgZGVmYXVsdCB3aXRoVHJhbnNsYXRpb24oJ2NvbnRyb2xzJykoU2V0dGluZ3NDb250cm9sKTtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB3aWR0aDogXCIyNFwiLFxuICBoZWlnaHQ6IFwiMjRcIixcbiAgZmlsbDogXCJub25lXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiLFxuICBjbGlwUnVsZTogXCJldmVub2RkXCIsXG4gIGQ6IFwiTTEyIDIyYzUuNTIzIDAgMTAtNC40NzcgMTAtMTBTMTcuNTIzIDIgMTIgMiAyIDYuNDc3IDIgMTJzNC40NzcgMTAgMTAgMTB6bTcuODY1LTExLjQ5MWExLjAxMiAxLjAxMiAwIDAwLS4xNTMuMDMzYy0uOTc5LjI5NS0yLjA1NS41MjItMy4yMjguNjgtLjEyLTIuODgxLS44OTUtNS4yNTEtMS44MzMtNi44NjcgMi42NjYuOTQ4IDQuNjg3IDMuMjg1IDUuMjE0IDYuMTU0em0uMTE3IDIuMDM4Yy0uMjE3IDMuMjkzLTIuMzc4IDYuMDQ4LTUuMzMxIDcuMDk4Ljg4Ny0xLjUyOCAxLjYyOC0zLjczIDEuODA4LTYuNDAyYTIzLjgxNyAyMy44MTcgMCAwMDMuNTIzLS42OTZ6bS01LjQ5LTEuMTI2QzE0LjM2NyA3LjE2NiAxMi45MDQgNCAxMiA0Yy0uOTA0IDAtMi4zNjcgMy4xNjYtMi40OTIgNy40Mi43OTQuMDUzIDEuNjI0LjA4IDIuNDkyLjA4Ljg2OCAwIDEuNjk4LS4wMjYgMi40OTItLjA4di4wMDF6bS02Ljk1IDEuODIxYTIzLjgzIDIzLjgzIDAgMDEtMy41MjQtLjY5NWMuMjE3IDMuMjkzIDIuMzc4IDYuMDQ4IDUuMzMxIDcuMDk4LS44ODctMS41MjgtMS42MjgtMy43My0xLjgwOC02LjQwM2guMDAxem0tLjAyNi0yLjAyYy4xMi0yLjg4MS44OTUtNS4yNTEgMS44MzMtNi44NjctMi42NjYuOTQ4LTQuNjg3IDMuMjg1LTUuMjE0IDYuMTU0LjA1MS4wMDcuMTAyLjAxOC4xNTMuMDMzYTIxLjE3IDIxLjE3IDAgMDAzLjIyOC42OHptNi45MzIgMi4yMDZBMzkuODIgMzkuODIgMCAwMTEyIDEzLjVjLS44NDcgMC0xLjY2My0uMDI0LTIuNDQ5LS4wNzJDOS44MjggMTcuMjQ3IDExLjE1NyAyMCAxMiAyMGMuODQzIDAgMi4xNzItMi43NTIgMi40NDgtNi41NzJ6XCIsXG4gIGZpbGw6IFwiY3VycmVudENvbG9yXCJcbn0pKSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHdpZHRoOiBcIjI0XCIsXG4gIGhlaWdodDogXCIxNlwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgeG1sbnNYbGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgd2lkdGg6IFwiMjRcIixcbiAgaGVpZ2h0OiBcIjE1Ljk5XCIsXG4gIHJ4OiBcIjJcIixcbiAgZmlsbDogXCJ1cmwoI3J1cylcIlxufSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdHRlcm5cIiwge1xuICBpZDogXCJydXNcIixcbiAgcGF0dGVybkNvbnRlbnRVbml0czogXCJvYmplY3RCb3VuZGluZ0JveFwiLFxuICB3aWR0aDogXCIxXCIsXG4gIGhlaWdodDogXCIxXCJcbn0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidXNlXCIsIHtcbiAgeGxpbmtIcmVmOiBcIiNpbWFnZTBcIixcbiAgdHJhbnNmb3JtOiBcInNjYWxlKC4wMDEyNSAuMDAxODgpXCJcbn0pKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJpbWFnZVwiLCB7XG4gIGlkOiBcImltYWdlMFwiLFxuICB3aWR0aDogXCI4MDBcIixcbiAgaGVpZ2h0OiBcIjUzM1wiLFxuICB4bGlua0hyZWY6IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF5QUFBQUlWQ0FZQUFBQXBzSnZDQUFBZ0FFbEVRVlI0QWUzYndVbnRZQmhGMFVRQ3dtdkFIcHpZcEgwSXd1dkFlZ1I3RUtjUkxHSlB6cm9OSFA3Rk45bHdjOTczZlI5K0JBZ1FJRUNBQUFFQ0JBZ1FDQVFlZ2cwVEJBZ1FJRUNBQUFFQ0JBZ1ErQk1RSUE2QkFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNUUlCazFJWUlFQ0JBZ0FBQkFnUUlFQkFnYm9BQUFRSUVDQkFnUUlBQWdVeEFnR1RVaGdnUUlFQ0FBQUVDQkFnUUVDQnVnQUFCQWdRSUVDQkFnQUNCVEVDQVpOU0dDQkFnUUlBQUFRSUVDQkFRSUc2QUFBRUNCQWdRSUVDQUFJRk1RSUJrMUlZSUVDQkFnQUFCQWdRSUVCQWdib0FBQVFJRUNCQWdRSUFBZ1V4QWdHVFVoZ2dRSUVDQUFBRUNCQWdRRUNCdWdBQUJBZ1FJRUNCQWdBQ0JURUNBWk5TR0NCQWdRSUFBQVFJRUNCQVFJRzZBQUFFQ0JBZ1FJRUNBQUlGTVFJQmsxSVlJRUNCQWdBQUJBZ1FJRUJBZ2JvQUFBUUlFQ0JBZ1FJQUFnVXhBZ0dUVWhnZ1FJRUNBQUFFQ0JBZ1FFQ0J1Z0FBQkFnUUlFQ0JBZ0FDQlRFQ0FaTlNHQ0JBZ1FJQUFBUUlFQ0JBUUlHNkFBQUVDQkFnUUlFQ0FBSUZNNEhyNytNekdEQkVnUUlBQUFRSUVDQkFnc0Mxd0hpL3Y5emFCMXhNZ1FJQUFBUUlFQ0JBZ1VBbGN4NytyMnJKRGdBQUJBZ1FJRUNCQWdNQzRnRzlBeGcvQTh3a1FJRUNBQUFFQ0JBaVVBZ0trMUxaRmdBQUJBZ1FJRUNCQVlGeEFnSXdmZ09jVElFQ0FBQUVDQkFnUUtBVUVTS2x0aXdBQkFnUUlFQ0JBZ01DNGdBQVpQd0RQSjBDQUFBRUNCQWdRSUZBS0NKQlMyeFlCQWdRSUVDQkFnQUNCY1FFQk1uNEFuaytBQUFFQ0JBZ1FJRUNnRkJBZ3BiWXRBZ1FJRUNCQWdBQUJBdU1DQW1UOEFEeWZBQUVDQkFnUUlFQ0FRQ2tnUUVwdFd3UUlFQ0JBZ0FBQkFnVEdCUVRJK0FGNFBnRUNCQWdRSUVDQUFJRlNRSUNVMnJZSUVDQkFnQUFCQWdRSWpBc0lrUEVEOEh3Q0JBZ1FJRUNBQUFFQ3BZQUFLYlZ0RVNCQWdBQUJBZ1FJRUJnWEVDRGpCK0Q1QkFnUUlFQ0FBQUVDQkVvQkFWSnEyeUpBZ0FBQkFnUUlFQ0F3TGlCQXhnL0E4d2tRSUVDQUFBRUNCQWlVQWdLazFMWkZnQUFCQWdRSUVDQkFZRnhBZ0l3ZmdPY1RJRUNBQUFFQ0JBZ1FLQVVFU0tsdGl3QUJBZ1FJRUNCQWdNQzRnQUFaUHdEUEowQ0FBQUVDQkFnUUlGQUtDSkJTMnhZQkFnUUlFQ0JBZ0FDQmNRRUJNbjRBbmsrQUFBRUNCQWdRSUVDZ0ZCQWdwYll0QWdRSUVDQkFnQUFCQXVNQ0FtVDhBRHlmQUFFQ0JBZ1FJRUNBUUNrZ1FFcHRXd1FJRUNCQWdBQUJBZ1RHQlFUSStBRjRQZ0VDQkFnUUlFQ0FBSUZTUUlDVTJyWUlFQ0JBZ0FBQkFnUUlqQXNJa1BFRDhId0NCQWdRSUVDQUFBRUNwWUFBS2JWdEVTQkFnQUFCQWdRSUVCZ1hFQ0RqQitENUJBZ1FJRUNBQUFFQ0JFb0JBVkpxMnlKQWdBQUJBZ1FJRUNBd0xpQkF4Zy9BOHdrUUlFQ0FBQUVDQkFpVUFnS2sxTFpGZ0FBQkFnUUlFQ0JBWUZ4QWdJd2ZnT2NUSUVDQUFBRUNCQWdRS0FVRVNLbHRpd0FCQWdRSUVDQkFnTUM0Z0FBWlB3RFBKMENBQUFFQ0JBZ1FJRkFLQ0pCUzJ4WUJBZ1FJRUNCQWdBQ0JjUUVCTW40QW5rK0FBQUVDQkFnUUlFQ2dGQkFncGJZdEFnUUlFQ0JBZ0FBQkF1TUNBbVQ4QUR5ZkFBRUNCQWdRSUVDQVFDa2dRRXB0V3dRSUVDQkFnQUFCQWdUR0JRVEkrQUY0UGdFQ0JBZ1FJRUNBQUlGU1FJQ1UycllJRUNCQWdBQUJBZ1FJakFzSWtQRUQ4SHdDQkFnUUlFQ0FBQUVDcFlBQUtiVnRFU0JBZ0FBQkFnUUlFQmdYRUNEakIrRDVCQWdRSUVDQUFBRUNCRW9CQVZKcTJ5SkFnQUFCQWdRSUVDQXdMaUJBeGcvQTh3a1FJRUNBQUFFQ0JBaVVBZ0trMUxaRmdBQUJBZ1FJRUNCQVlGeEFnSXdmZ09jVElFQ0FBQUVDQkFnUUtBVUVTS2x0aXdBQkFnUUlFQ0JBZ01DNGdBQVpQd0RQSjBDQUFBRUNCQWdRSUZBS0NKQlMyeFlCQWdRSUVDQkFnQUNCY1FFQk1uNEFuaytBQUFFQ0JBZ1FJRUNnRkJBZ3BiWXRBZ1FJRUNCQWdBQUJBdU1DQW1UOEFEeWZBQUVDQkFnUUlFQ0FRQ2tnUUVwdFd3UUlFQ0JBZ0FBQkFnVEdCUVRJK0FGNFBnRUNCQWdRSUVDQUFJRlNRSUNVMnJZSUVDQkFnQUFCQWdRSWpBc0lrUEVEOEh3Q0JBZ1FJRUNBQUFFQ3BZQUFLYlZ0RVNCQWdBQUJBZ1FJRUJnWEVDRGpCK0Q1QkFnUUlFQ0FBQUVDQkVvQkFWSnEyeUpBZ0FBQkFnUUlFQ0F3TGlCQXhnL0E4d2tRSUVDQUFBRUNCQWlVQWdLazFMWkZnQUFCQWdRSUVDQkFZRnhBZ0l3ZmdPY1RJRUNBQUFFQ0JBZ1FLQVVFU0tsdGl3QUJBZ1FJRUNCQWdNQzRnQUFaUHdEUEowQ0FBQUVDQkFnUUlGQUtDSkJTMnhZQkFnUUlFQ0JBZ0FDQmNRRUJNbjRBbmsrQUFBRUNCQWdRSUVDZ0ZCQWdwYll0QWdRSUVDQkFnQUFCQXVNQ0FtVDhBRHlmQUFFQ0JBZ1FJRUNBUUNrZ1FFcHRXd1FJRUNCQWdBQUJBZ1RHQlFUSStBRjRQZ0VDQkFnUUlFQ0FBSUZTUUlDVTJyWUlFQ0JBZ0FBQkFnUUlqQXNJa1BFRDhId0NCQWdRSUVDQUFBRUNwWUFBS2JWdEVTQkFnQUFCQWdRSUVCZ1hFQ0RqQitENUJBZ1FJRUNBQUFFQ0JFb0JBVkpxMnlKQWdBQUJBZ1FJRUNBd0xpQkF4Zy9BOHdrUUlFQ0FBQUVDQkFpVUFnS2sxTFpGZ0FBQkFnUUlFQ0JBWUZ4QWdJd2ZnT2NUSUVDQUFBRUNCQWdRS0FVRVNLbHRpd0FCQWdRSUVDQkFnTUM0Z0FBWlB3RFBKMENBQUFFQ0JBZ1FJRkFLQ0pCUzJ4WUJBZ1FJRUNCQWdBQ0JjUUVCTW40QW5rK0FBQUVDQkFnUUlFQ2dGQkFncGJZdEFnUUlFQ0JBZ0FBQkF1TUNBbVQ4QUR5ZkFBRUNCQWdRSUVDQVFDa2dRRXB0V3dRSUVDQkFnQUFCQWdUR0JRVEkrQUY0UGdFQ0JBZ1FJRUNBQUlGU1FJQ1UycllJRUNCQWdBQUJBZ1FJakFzSWtQRUQ4SHdDQkFnUUlFQ0FBQUVDcFlBQUtiVnRFU0JBZ0FBQkFnUUlFQmdYRUNEakIrRDVCQWdRSUVDQUFBRUNCRW9CQVZKcTJ5SkFnQUFCQWdRSUVDQXdMaUJBeGcvQTh3a1FJRUNBQUFFQ0JBaVVBZ0trMUxaRmdBQUJBZ1FJRUNCQVlGeEFnSXdmZ09jVElFQ0FBQUVDQkFnUUtBVUVTS2x0aXdBQkFnUUlFQ0JBZ01DNGdBQVpQd0RQSjBDQUFBRUNCQWdRSUZBS0NKQlMyeFlCQWdRSUVDQkFnQUNCY1FFQk1uNEFuaytBQUFFQ0JBZ1FJRUNnRkJBZ3BiWXRBZ1FJRUNCQWdBQUJBdU1DQW1UOEFEeWZBQUVDQkFnUUlFQ0FRQ2tnUUVwdFd3UUlFQ0JBZ0FBQkFnVEdCUVRJK0FGNFBnRUNCQWdRSUVDQUFJRlNRSUNVMnJZSUVDQkFnQUFCQWdRSWpBc0lrUEVEOEh3Q0JBZ1FJRUNBQUFFQ3BZQUFLYlZ0RVNCQWdBQUJBZ1FJRUJnWEVDRGpCK0Q1QkFnUUlFQ0FBQUVDQkVvQkFWSnEyeUpBZ0FBQkFnUUlFQ0F3TGlCQXhnL0E4d2tRSUVDQUFBRUNCQWlVQWdLazFMWkZnQUFCQWdRSUVDQkFZRnhBZ0l3ZmdPY1RJRUNBQUFFQ0JBZ1FLQVVFU0tsdGl3QUJBZ1FJRUNCQWdNQzRnQUFaUHdEUEowQ0FBQUVDQkFnUUlGQUtDSkJTMnhZQkFnUUlFQ0JBZ0FDQmNRRUJNbjRBbmsrQUFBRUNCQWdRSUVDZ0ZCQWdwYll0QWdRSUVDQkFnQUFCQXVNQ0FtVDhBRHlmQUFFQ0JBZ1FJRUNBUUNrZ1FFcHRXd1FJRUNCQWdBQUJBZ1RHQlFUSStBRjRQZ0VDQkFnUUlFQ0FBSUZTUUlDVTJyWUlFQ0JBZ0FBQkFnUUlqQXNJa1BFRDhId0NCQWdRSUVDQUFBRUNwWUFBS2JWdEVTQkFnQUFCQWdRSUVCZ1hFQ0RqQitENUJBZ1FJRUNBQUFFQ0JFb0JBVkpxMnlKQWdBQUJBZ1FJRUNBd0xpQkF4Zy9BOHdrUUlFQ0FBQUVDQkFpVUFnS2sxTFpGZ0FBQkFnUUlFQ0JBWUZ4QWdJd2ZnT2NUSUVDQUFBRUNCQWdRS0FVRVNLbHRpd0FCQWdRSUVDQkFnTUM0Z0FBWlB3RFBKMENBQUFFQ0JBZ1FJRkFLQ0pCUzJ4WUJBZ1FJRUNCQWdBQ0JjUUVCTW40QW5rK0FBQUVDQkFnUUlFQ2dGQkFncGJZdEFnUUlFQ0JBZ0FBQkF1TUNBbVQ4QUR5ZkFBRUNCQWdRSUVDQVFDa2dRRXB0V3dRSUVDQkFnQUFCQWdUR0JRVEkrQUY0UGdFQ0JBZ1FJRUNBQUlGU1FJQ1UycllJRUNCQWdBQUJBZ1FJakFzSWtQRUQ4SHdDQkFnUUlFQ0FBQUVDcFlBQUtiVnRFU0JBZ0FBQkFnUUlFQmdYRUNEakIrRDVCQWdRSUVDQUFBRUNCRW9CQVZKcTJ5SkFnQUFCQWdRSUVDQXdMaUJBeGcvQTh3a1FJRUNBQUFFQ0JBaVVBZ0trMUxaRmdBQUJBZ1FJRUNCQVlGeEFnSXdmZ09jVElFQ0FBQUVDQkFnUUtBVUVTS2x0aXdBQkFnUUlFQ0JBZ01DNGdBQVpQd0RQSjBDQUFBRUNCQWdRSUZBS0NKQlMyeFlCQWdRSUVDQkFnQUNCY1FFQk1uNEFuaytBQUFFQ0JBZ1FJRUNnRkJBZ3BiWXRBZ1FJRUNCQWdBQUJBdU1DQW1UOEFEeWZBQUVDQkFnUUlFQ0FRQ2tnUUVwdFd3UUlFQ0JBZ0FBQkFnVEdCUVRJK0FGNFBnRUNCQWdRSUVDQUFJRlNRSUNVMnJZSUVDQkFnQUFCQWdRSWpBc0lrUEVEOEh3Q0JBZ1FJRUNBQUFFQ3BZQUFLYlZ0RVNCQWdBQUJBZ1FJRUJnWEVDRGpCK0Q1QkFnUUlFQ0FBQUVDQkVvQkFWSnEyeUpBZ0FBQkFnUUlFQ0F3TGlCQXhnL0E4d2tRSUVDQUFBRUNCQWlVQWdLazFMWkZnQUFCQWdRSUVDQkFZRnhBZ0l3ZmdPY1RJRUNBQUFFQ0JBZ1FLQVVFU0tsdGl3QUJBZ1FJRUNCQWdNQzRnQUFaUHdEUEowQ0FBQUVDQkFnUUlGQUtDSkJTMnhZQkFnUUlFQ0JBZ0FDQmNRRUJNbjRBbmsrQUFBRUNCQWdRSUVDZ0ZCQWdwYll0QWdRSUVDQkFnQUFCQXVNQ0FtVDhBRHlmQUFFQ0JBZ1FJRUNBUUNrZ1FFcHRXd1FJRUNCQWdBQUJBZ1RHQlFUSStBRjRQZ0VDQkFnUUlFQ0FBSUZTUUlDVTJyWUlFQ0JBZ0FBQkFnUUlqQXNJa1BFRDhId0NCQWdRSUVDQUFBRUNwWUFBS2JWdEVTQkFnQUFCQWdRSUVCZ1h1STd6Y1p6QTh3a1FJRUNBQUFFQ0JBZ1FxQVN1MTUvLzFaWWRBZ1FJRUNCQWdBQUJBZ1RHQmM2djU2ZDczTUR6Q1JBZ1FJQUFBUUlFQ0JDSUJLNXZmOEdLcU0wUUlFQ0FBQUVDQkFnUUlPQWpkRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUJYRzdNVUFBQUpkU1VSQlZFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtSUVBeWFrTUVDQkFnUUlBQUFRSUVDQWdRTjBDQUFBRUNCQWdRSUVDQVFDWWdRREpxUXdRSUVDQkFnQUFCQWdRSUNCQTNRSUFBQVFJRUNCQWdRSUJBSmlCQU1tcERCQWdRSUVDQUFBRUNCQWdJRURkQWdBQUJBZ1FJRUNCQWdFQW1JRUF5YWtNRUNCQWdRSUFBQVFJRUNBZ1FOMENBQUFFQ0JBZ1FJRUNBUUNZZ1FESnFRd1FJRUNCQWdBQUJBZ1FJQ0JBM1FJQUFBUUlFQ0JBZ1FJQkFKaUJBTW1wREJBZ1FJRUNBQUFFQ0JBZ0lFRGRBZ0FBQkFnUUlFQ0JBZ0VBbUlFQXlha01FQ0JBZ1FJQUFBUUlFQ0FnUU4wQ0FBQUVDQkFnUUlFQ0FRQ1lnUURKcVF3UUlFQ0JBZ0FBQkFnUUlDQkEzUUlBQUFRSUVDQkFnUUlCQUppQkFNbXBEQkFnUUlFQ0FBQUVDQkFnSUVEZEFnQUFCQWdRSUVDQkFnRUFtOEF1dXJ4R0J6RXBuRFFBQUFBQkpSVTVFcmtKZ2dnPT1cIlxufSkpKSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHdpZHRoOiBcIjI0XCIsXG4gIGhlaWdodDogXCIxNlwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgeG1sbnNYbGluazogXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJyZWN0XCIsIHtcbiAgd2lkdGg6IFwiMjRcIixcbiAgaGVpZ2h0OiBcIjE1Ljk5XCIsXG4gIHJ4OiBcIjJcIixcbiAgZmlsbDogXCJ1cmwoI2VuZylcIlxufSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGVmc1wiLCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdHRlcm5cIiwge1xuICBpZDogXCJlbmdcIixcbiAgcGF0dGVybkNvbnRlbnRVbml0czogXCJvYmplY3RCb3VuZGluZ0JveFwiLFxuICB3aWR0aDogXCIxXCIsXG4gIGhlaWdodDogXCIxXCJcbn0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwidXNlXCIsIHtcbiAgeGxpbmtIcmVmOiBcIiNpbWFnZTFcIixcbiAgdHJhbnNmb3JtOiBcIm1hdHJpeCguMDAxNTggMCAwIC4wMDIzOCAtLjEzMyAwKVwiXG59KSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1hZ2VcIiwge1xuICBpZDogXCJpbWFnZTFcIixcbiAgd2lkdGg6IFwiODAwXCIsXG4gIGhlaWdodDogXCI0MjFcIixcbiAgeGxpbmtIcmVmOiBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBeUFBQUFHbENBWUFBQUFDa3BJcUFBQWdBRWxFUVZSNEFleGRCMXhWNWZ0L1hMaHhvcWlBb0xLM29LQWdXR2s3Rzc5Mi9Tc3JtMmJMMUxTZGxhYVZhVGx6Wks2c3pNeFVITGszS3JoUVVYSGh3cTBvSU1MLzgzM3AwTG1YTzg2OTUzQTVoNTduODhGNzc1bnY5L3UrNS9nODcvdU1Lb2tKZllxSmhSbGdCcGlCL3hnRHRZb0s2WVdjcllSUEZtYUFHV0FHbUFGbWdCbHdIUU5WWFhjcnZoTXp3QXd3QTh3QU04QU1NQVBNQURQQURQelhHV0FENUw4K0FoZy9NOEFNTUFQTUFEUEFEREFEekFBejRFSUcyQUJ4SWRsOEsyYUFHV0FHbUFGbWdCbGdCcGdCWnVDL3pnQWJJUC8xRWNENG1RRm1nQmxnQnBnQlpvQVpZQWFZQVJjeXdBYUlDOG5tV3pFRHpBQXp3QXd3QTh3QU04QU1NQVAvZFFiWUFQbXZqd0RHend3d0E4d0FNOEFNTUFQTUFEUEFETGlRQVRaQVhFZzIzNG9aWUFhWUFXYUFHV0FHbUFGbWdCbjRyelBnVWdQayt2VWJsWTV2eG1TTUx1Vis0bjR5QmdQY1NtYUFHV0FHbUFGbW9QSXo0RElEcEZyVnF1VGowNHh1M0NpcU5LeFdxVktGL1B3OEt4VW1kQTR3VlRhcGJKandIQUVUeG1CbEVXRENPd0x2Q2habWdCbGdCcGdCWm9BWnFMd011T1IvZXN3K04ydmVpRjU1NVY2cVZzMGx0eXozSG9PeTFMaHhmWHJ4eFh2SXJVYjFjcitmSzI0QVRQWHExUmFZYXRldVdTa01LMkFDRnZRVHNPRjNaUkNNT1dEQ0dLd3NtUEJ1d0RzQzc0ckt1R0pWR2NZZFkyQUdtQUZtZ0JsZ0JyUmd3Q1hXUUVIQmRRb0w5Nk91TjBWU2l4Wk5LRC8vdWhadHI5QnJBRk5Ra0kvQTFOclBzOUpnQ2d6MEZwaDhmVDBKR0kwdXdBQXNHSHZBVmhrdzRmbkJtQU1tak1IS2dnbnZCbURDdTZJeVlETDZzOFB0WndhWUFXYUFHV0FHeW9zQmx4Z2dWYXRXb2FRdUVRSkRoNDZCZFAxNllYbmhjZGwxaTRxS0tTbjVIMHdkS2djbXpLUjNUZ2dWSEhicUZGSXBadGFCQ1ZnZ3dGWVpWZ3Z3L0VpWU1BWXhGbzB1d0lSM0F3VHZDcnd6V0pnQlpvQVpZQWFZQVdhZ2NqSlE3Z1lJWENtYU4yOUVrVkZ0QklOSlNSRlV3K0F1UzFCaW16WnRRTkhSL2dKVFlrSVkxYXpwWnVnUkFrd05HOWFqamgyRFNqQjFDVGU4eXhJd3dlMHFzVXU0d0FSc3dHaDBJd1JqTFQ0dVdHRENHTVJZTkRvbXZCUHdib0RnWFlGM0JydGhDVHI0SDJhQUdXQUdtQUZtb05JeFVPNEdDRndwb3FMYlVhTkc5UVY1b2FHKzVPM3RZV2psQXBnaUl0cFFpeGFOQmFiZ2tOWWlJTmpJcm1YQUJIY2V1Q3RCMnJScFFXM2F0cVRDUXVObUxrUGJnUUZZSU1CbWRKY2xqREVFbjJQTVFUQUdNUmFON0xJRVF3UHZCT0NBNEYyQmQ0YVJNUWtnL0E4endBd3dBOHdBTThBTVdHU2czQTBRdUZKMDdScFZlblBNU01mRUJCaGF1WURMaStTcUJHQTFhOVlRTGpGR2RpM0RESHFuemlYdVY4Q0VnT0F1aWVHR2RwZERmd0NEUFBFQk1CcDV0VUJ5djhLWWt3UmowY2h1V0RBMDhFNUFzZ0JKOE01Z055eUpEZjVrQnBnQlpvQVpZQVlxRndQbGFvQkEwZlB3YUVqdDI1ZTRLa25VSlNWSEdsYTVBQ2JNMEVxdVNoS21oSVF3dzdxV0FWUDkrblVvTVRGTWdpTStFeExEVEpSQ2s1MEcrQUdGRmhqa0FvekFhbFFqQks1S0dHdHl3VmpFbURRcUpoRWpsaHdwaHlUZUdYaDNHQldUQ1JqK3dRd3dBOHdBTThBTU1BTW1ERGlkUHhiMUJ3b0tDaWsvdjhEa2d2SWZjQmZwM0RtVW1qUnhsMjhXcmhaUUxnNGZQaVZXRDB4Mi92TUQxNjlWeTgxazl0clNjVnB2ZzhKejdWcSsxY3NDVS9zWWYvTHk4akE1QnBsN1dyWnNRdnYySFRNa3BnNGRnMHBkbFNSZ0FRRmUxTHAxYzBwUFA2QkxUSGw1QlZSY2JEa0FHLzBVR2RtV2dFRXVjTWZ5YTlPQ05tL2FZeFVUam9meElsODVrVitqdkw1ajdObkRCRHdZYTNMQldBd084YUcvbDIwekpDYU1zYWlvdG5KSTRwMEJkODBGQ3piYXhJUjRHRGUzNmxiSGdjbEYrUWN6d0F3d0E4d0FNOEFNNklLQktva0pmU3hyY0hhYUIyWHA5anM2aW93MVY2L2xXVHdhUHZqQndhM0ozNzlWbWYwYk4yYlFxVlBucVhyMWFtWDJTVUhxYzM1YlRkdTI3YWNhTmNvZVUrWWtEVFlBVTdmdU1YVHpUZEZrQzVPL3Z4Y0ZCL3VVdWVPVzFIMlVmZnlNVFV4Ly9MR1dVamZ2Y3hrbStOZDM3UnBKdDkvZTBTWW1QMTlQQ3YvSEIxOE9MRzNiZmpweTlMUlZURFdxVjZmNTg5ZlRtalU3WFlvSkt4bDMzOTJKcmhjV1duUVR3OWp6OFc0bVlnbmtlUEI5eC9hRGxIWG9wRVZNMkYrbmRpMWF0R2dUclZpUjdsSk1zUjBDNk41N0UwUnpMYm56QVZPcmxrMHBKamJBSEJKbFpCeWh6TXhqTmpIOXZYd2JMVjJ5eFdXR0ZjWmVkSFE3ZXVCL1hXeGlRc0I1M0Q5QjlYSmdtWm5abEpGeDJDYW1WYXUzMDZLRm01ekNWS3Vva0Y3STJVcjRaR0VHbUFGbWdCbGdCcGdCMXpHZ3lnQkJQTWRMTDk5RER6eFFvbUJvMVd5c1FIejMzVnlhOThjNnJTNnA2RG93UUREei9kenpkOURqajkraTZCeWxCMkZHZnR6WVB3bEcxWTBpMXhYRGt6QTkrV1EzNnZuczdVcWJxK2c0WEh2Q2hML281MW5MUlIwVVY2MFk0TDZJZ1hqazBadW9WNis3bkZJK2JRR2NQR2tSVFp1MlZLeUV1UW9UMm9NSzRGRFdYM3pwSHB1ei9yYmFibTNmakJuTGFPSVBDMTJPQ2UzcGNXOW42dDM3UHMzZCtlYk1XVTFqeC94SlY2NWNjMm9Nc0FGaWJiVHdkbWFBR1dBR21BRm1vSHdacU9iakUvZVJNN2VBM3phVTZtWEx0dEtlakNQVVBpYUE2dGF0NWN5bFRNN0JLc0tiYjQ2bVZhdTJrNXZidjRHMkpnZVYwdzlnZ2x2WnlwWHB0SE5ubG5BVmMzZXZxL3B1bUhGLysrMnh0SFRwRnBmSGlVaVkxcTdkS2R5T3dzUGJsR1lrVXdNTXM5UEF0T0N2RFdLR0d2ZHhsZUJlQ0xwZXYyNFhiZGlZUVdGaGZtWGMvSnhweThHREo2anYyMk5wN3R5MTRuUlhHaCs0SWR6Sk5tM2FJMWFUQWdPOFJDcGFaM0RJenpsMkxJY0dEcHhJczJZdXJ4Qk11T21XTGZ0bytmSTBhdGUybFhCVGxMZlBtZStuVDErZ1FRTW4wdFNwaXdWbnp2WlQ5ZUlpaXJsNmd2REp3Z3d3QTh3QU04QU1NQU91WThCcEF3Uk5oQ0lJSTJILy9teGhpTFJxNlVHK2ZpVnBYQjJGZ0ZudEg2ZWswT0RCMCtqQ2hTdFVwODYvR1hFY3ZaYWE0eVZNQncrY29DVkx0cEJuaThiVXRtMUxweStKbWVlUFA1b3EzTTIwTU5DY2FZaUVDY3JvNHNWYnFGR2plcUlxdURQWHdqbVllWDV2NEVUS3pzN1J4T2gwdGgwWWU4ZVBuNkdVaFp2SnZVRmQ0ZTduN0xYbXpWdEhnd1pPRW5GSjZDZHdWaEVDVEhCTlhMdzRWY1JBd1dCMFZqQisrL2NiTDF5ektoclR1WE9YS1NWbE0xV3RXbFVZOXM3eXUySjVPdlhyTjQ1MjdUb2thcnc0ZXgxd3lnYUlzeU9MejJNR21BRm1nQmxnQnRReG9Nb0FrVzZOSU5CTGw2NEtoZjN5bFdzaWc0MmwyQTdwZVBQUEV5Zk8wY0NCUDlDdnY2d1VLd1JTRElqNWNhNzhEVXpYcmhYUWtzV3BkUDc4WlpFbTFKRjJZWmIyd3crbUNGZWVhdFdxdVh3MXh4SlhhSDllWHNtcTFhblRGMFFoUlhrNlYwdm55TGVCQnhpSWt5WXVKQVFPT1hLdS9EcGFmZ2NtckZwaGhoMnhLc2k0SmsvbmF1OWVHTGREaDg0U3JqeFlWZEVMSmhqa1dJbmJuNWt0NGxnY01WN2h3dmoxVjcvUXlKRnpSTDBkUFdEQyt3QXJQRmlKMjdYN2tCaDc5ZXZYdHRjOXBmdUJhZFNvdWZUTk43L1MxYXY1RHZWeDZVWE12ckFCWWtZSS8yUUdtQUZtZ0JsZ0JsekVnQ1lHQ05vS0JRT1pxK0J1c1duelhwR0JTQ28rYUF1TG1ORjhaNXh3NDBKTWlab1pUVnYzY1dZZlhEdWc0RzdkbWtscjErNGlaT1h4OEdoZzkxSUl5TzdmYnh5bHB4OVVQVXRyOTJZT0hnQk1NSzYycHgrZ3RXdDJVbENRdHlKWEg3akd2ZlhXR0VyZHZGZGdjdGJ0eGNIbUtqcGN3b1JaOGRXcmR5aDI5WUZySEZ5dW9CUmo3T2tKRTU0RHJJWWdxOXFLRlduazdkT2NmSHlhMmVVRHdlaHZ2VGxHQk5ERGFORWpKcXd1TGx1NmxieGFLVnN4aFd2Y08rK01FNU1CTUtZY21RaXdSUmdiSUxiWTRYM01BRFBBRERBRHpFRDVNYUJwSFJBb08xRGtrT0owdzRiZGlscU5ERXJaMldjcTFKWEhYa09CQ2Fsb29iQXJFYmpQSERwMFNuQ2g1UGlLT0FhWUVPZXljdFYyUmJlSCt3eVVZZFRRMEt1Z2JWREEwVllsQXV6Z0FGem9WZEEyakNXTUtTV0NNWXF4cW1kTU1Jend6T1BaVnlKNGwrQ2RBa3g2TXFpVXRKMlBZUWFZQVdhQUdXQUdtSUd5REdocWdPRHljQjFCV3MzRXhQQ3lkN093NWVaYm9xMm0yYlJ3ZUlWc0FpYlVNa251YWxvc3pWcGprTWJYQ0xVSkVHQ2ZuQlJoRFliSjlsdTZ0UmNLb0xXNkd5WUhWOUFQdEExS0t0cXFSSUJkaXlRRFN1N2w3REhBaExGMDY2MnhpaTZCTVlxeGlqR3JaOEdLS1o1OUpZSjNDZDRwZXNla0JBc2Z3d3d3QTh3QU04QU1NQU5FbWhzZ0JRWFhLVFRNVjVHN0NEb2dOamFRbWpadG9HdmxBdlVYVUFET1VqMFRTNE1JaFFxaE1LRU9nbDRGR2N5QUp5VFVWMUVUSXlMYWtMZTNoNjR4Z1crMEVXMVZJc0FPRHNDRlhnV1lNSmFVWWdJZWpGV01XYjBLREFrODgzajJsUWhjei9CT3didUZoUmxnQnBnQlpvQVpZQWFNejREbUJnaVVDMVEvTnhjRW1pUFRrTG15MTZ4WlE2RmM2Vm01UUZHNFRwM0tZa0tnT1RDWlYwNTNkNjlETWJHQnVsYVlnQ2t1UHJpTVN3c0N6WUVKdFJYa2dzRHVtSmdBWFdQQ0dFSWJ6WVBRZ1FXWWdFMHVjT2NCQjVhSy9zbVBxOGp2QWxOc0lHRk15UVZqRHBqT25yMGszeXkrWTZ6cUhSTU1Lano3Y3NHN0FaandyakFYdkZONEJjU2NGZjdORERBRHpBQXp3QXdZa3dGTkRSQW9DQTNjNjFKOGZJZ0pHd2hnN3YzcXR6U2cvd1NSRnRSY3dVaEtqaEIxSFV4TzB0RVBLTFFKaVdFbUxVSUFjKzlYUndwTUNQbzljdVMweWY0dVhjSjFGVkJ2MGppUndjcU5PcG4xRStJbityejJuY0QwZXAvdkNNRy9ja2xLanRTMXV4emNldEJHdVFBRHNHRHNBUnN3eWdVYzFLenBKdCtrcSs4SVJzZFlrZ3ZHR3NZY01MMzgwZ2hSMlYyK0gyUFYzQWlUNzYvbzc4ZzJobWRlTG5nbklHVXdNT0ZkZ1hlR1hQQk93YnVGalJBNUsveWRHV0FHbUFGbWdCa3dKZ09hR2lDWXJRME9hVTF0MnJRUWJFQlorR0hDQW5yMTFaRjA5R2lPOEUxSGdjRm5lMzVKeUg0bENaUUx2YnBoWVZZV2RVRGcxZ0lCcHFsVGw5Q0xMMzVEQnc4ZUYrM2V2SGtQUGYvY2NGcXdZS01FaVdKakEzVHJoZ1ZNZm42ZUZCYnVWOXJlMmJOWDBNc3Zma01aR1ljRkpnUXlQL2ZzTURFakxSMFVGZFZXRkpMVG8yc1oydFN5WlJOQ0d5WEJiRG93QUF2R0Y3QUJJN0JLQWc3QWhmbktuTFMvSWo4bDl5dU1KVWt3eGpEV01PYUFDV01RWXhGalVsTE9NVll4WnZXSUNXMUV1K1dURkhnWDRKMkFkd1BpVi9DdXdEc0Q3dzRKRTk0cEFZSGV1bDZCay9xSVA1a0Jab0FaWUFhWUFXYkFOZ09hcGVIRmJhRHdQUFJ3VjVHQ0YwWHYzbnR2RXYzMjJ5b1JSQ3VsemtSQTdlWEwxMFNtb291WGNrWGRob1lONjRuMHZWbFpKelJMc1drYnR2SzllWGtGZFA4RFhhaGp4eUNDeTlYSEgvMUlLQzRJUEVpVENzRjMxQXhCVmZnelp5NVNkSHQvYXRDZ0x1M2VmWmoyN2prcThDdS9ZL2tmQ1V4MzNCa25adGJod3ZQSngxTnB5cFFVSXFwU1dnY0RtUEx6Q3dXbTdPTm5oV3NUc2t4aFJXSEhqaXhkWXVyZVBVWUVvS08yeDJlZlRhZng0K1pUY2ZHLzlVcUFTYXAwbjVWMVV2UVRNR0ZGWWR1MnpOTCtMUDhlVUhZSDlGT1hwSEM2NjY1NDRSSTNmTmhzR2ozNkQ1UGFIc0NFUVBYVnE3ZlRnUVBIUmMwUTFOZkFXRVZWZFdtTUtydGorUitWbjE4Z3h0TC9Ia3dTcm9zalJ2eEczM3o5Q3dHcnRHcURsU3pJdW5XN1JNMFF1R3NoV2NENUMxZkVOcTB3Y1JyZTh1OXZ2Z016d0F3d0E4d0FNMkNKZ1NxSkNYMVFVMDYxWUtZU09mcC9uRHBBS0hTZkRaNW1zL28zam9jZmUwUmtXL3JzczJkcCsvYUQ5TUg3azB1VkVEVU5rbVpOdFVyWk9XbHlQenAzcmtSUmg2dUlyYUp3aURjSUN2S2hMNFk4VDRleVRsSGZ2bU4waHdrejZ4TW12Q1ZtbHovNjZFZFIvZHRXMmxaZzh2ZjNvbzgvZVlZdVhjcWwxM3FQS2pWVTlOSlBNSDVIZmZlYVVGUlJBREl6ODVqTlZMVEExTHAxYy9yb282ZEZIRXl2WGw5VGpSb2xpcTllTU9INUdENzhaZkwxYTA3dkR2aUI5dXc1WWhOVGJtNGV0V2pSbUQ3NDhDbHEzTmhkckNxb3dTS2RpK2NKYmxOYThBTk1uM3phVThSOURSbzBTZFNqZ2VGaDdWa0ZKZ1RoRDNydlNaSFk0dW1uaG9pSkRtdkhTMjFXOGxtcnFKQjZacTJtMmtXRlNnN25ZNWdCWm9BWllBYVlBV1pBSXdZME0wQ2cxQ0lEVDBSa0cvcGw5a3FxV2hWRi9Pd3JkRkJJb0N6MXVMY3p6ZnVqSlBoWmpYSUJSVFFxcWgxZHVIQkZHRUpLMm1DTlMyQ0NlMDZIamtFMCsrY1ZWRlJVWW1SWk8xN2FEa3lZV2NjczcxL3pOOURGaTdsV0ZTenBIRnVmd0JRZTdpY3FRR1BtWGkybVZxMmFVSEp5Sk0yYXRWeGtTMUpTS1J0dHFGWExqUjUrcENzdFR0bE1aODVjVW9VSjNBWUdlUXZZV0NWU2d3a0tjdE9tN25UcmJSMUVQMkUyWFNrbXpMWS8rdWhOb3VwNGR2WlpWZTJReGt1ZE9qWEZLcEdTTmxqcmQyRENLdHBkZDhmVGI3K3Vvc3VYcnlveVpORlBlUGJRVDZpZG9jVjRRUllxckZLbXBlMVh4S3N0VERCMHBXY2RScjIwNm1IdEhHd0hyM2oySG4zc1p0cTJOWk15TTdOVjlST3VDWDdSbG9tOUVtemRtdmN4QTh3QU04QU1NQVBNUURrd29Ka0JncmFoRXJwUzVVK09SWnBoMWFKMkJtWk1CMy8yTE8zUHpCWnVSYlpXSytSdHNQWmR3Z1JGMVJIRENKaVFDaFZLdTlyYUdaaXRmLytELzZOelp5L1Q5OS9QdFRrTGJnMkhmTHRlTUwzNTFrT2lXWERCc2JVQ0kyKzd0ZTk2d2ZUcXEvZFI0eWIxNmROUGZxb1VtUEE4UGZQTWJkVE92eFc5TjJpU3pkVS9hMzBqMzQ1K2doc2NndXNkZVo1d0Rja0lWdnM4NFZvd2FwbzBxVTh6WjcxZkpzT1l2TDM4blJsZ0JwZ0Jab0FaWUFhMFo2QzZscGVFWXVETXJDOFVrV3JWU0xXaURxVy9VYVA2RkJjWExJSlpwMDVkckJxZU9reFZOY0dFMVJURW9Kdy9kNW5HajFmZlpSV05DWjJDbWU5T25VcXlwWTJ0WGRQdy9RUUFpTWVJaXd1aVJvM3JpeFV3R0tDT0t0bHlJdlRRVHpBVWtLcTRYYnRXNHRuQzZwNWFUTTZ1ZHVIZEFrNVltQUZtZ0JsZ0JwZ0Jac0RZREdpYUJhdWlxU2pKd3VVampJL1FVRi9kWm14eWhDZGdRa3lKbDVlSHlBTGs2K3VwNjJLQVNyQmhKaHRabXVDeWh6KzlabXhTZ2tVNkJqUHE2QnRrYWtKZm9jL1FkMFlXWUFJV1BFdklUaFVjWW54TVJ1NFBianN6d0F3d0E4d0FNMUJaR0toVUJnaFdRSktTU3VvTHdLVW5LdHJmOEVvZ01Fa3JCWmdCN3RBeGtKQkp5TWdpRlVHVU1PaTlHS0RVVGx1ZjZCUDBqYlFDaUQ1RDN4bFpZRUFoU1lUa0hvZG55K2lZak53ZjNIWm1nQmxnQnBnQlpxQ3lNRkJwREJBb1JpaFVCbGNsU1c2K0tWclh4UUNsZHRyNmhQSVgvNCtyRW81RGxXdTQraGhaVVBndk1lSGZ3bzc0cnVkaWdFcTRScDlJeGkrT1I1OUppcnVTOC9WNEROeXY4QXhKZ21lTGl3RktiUEFuTThBTU1BUE1BRFBBRERqTFFLVXhRRXJjcjFvTE54aUpqTWlvTnJvdEJpaTEwZFluWEpWUVZDNDQyS2YwTUJUYTgvYjJNS3diRmpBaHN4Z0tWa3FDNzNvdEJpaTEwZFluWEpYUUozQlZrZ1I5aHI0RFhpTUtNS0d3STU0aFNlQmlocjR5dW11WmhJYy9tUUZtZ0JsZ0JwZ0JacUJpR0RDTUFZSVZEbnQvS05vbUZ3U2tSMFczRXk1TDlzNlZuK2VxNy9iYWhJeGlTQUVzRjh5cXg4UUVHQm9UM0pNa1Z5Vmd3M2RzQTE1N25NaTVjTlYzZTIyU2l1dVpyM2lnNzR5TUtUeWlqUWc4bC9QY3FYT28zVDRDWHl6TUFEUEFEREFEekFBendBeFlZOEFRdmp5b2ZJd1V2VkRtckFteUtzWEhsMlJWa2gvVHZWc3NMZjg3elVUaGxlOUh6WVJhdFdxSUdodklXdVFxVVlJSmlqbnFkWmhMVW5Ja3paKy93U29tSEk5YUZGZXY1b3RVd09ibmw5ZHZwQ3AyZDY4ajdtdnRIamhHN3Fva0hZZHR2LzY2eW1hR0piMWlBZ2IwaWJtZzczNmV0ZHg4czhsdnBHbEdXbHBYcmlwSS9aU1hkMTNVMXpCcGtPd0huaDF6U1V3TW94K25wTmc4cnlJd21iZVRmek1EekFBendBd3dBOHlBZmhuUXRBNUllY0RFYkNxS3pMM1c1d0dSWGhkMUNXN2NNRFVVU3FvMFZ4ZFZvTTNiQUJlWW5Kd0w1cHZGNzJyVnFnbmo0ODgvTjlEa1NRczFxN0JzOFdheWpjQ0VJbk92OWJtZkVoUER5UkltSEk3Mk5XdldzSXhTanZOUG5EZ3J1K0svWHlWTVM1WnNvWEZqNTR0cTgyclNwdjU3WmR2ZjBDYXNBUFIrN1Q3cTBpV2NvTnlhOTVOMGhSWXRtamlGYWZYcUhmVGRxTG1FdWlpdXdnVEQ5c1dYN3FidTNXT2N3blQ2OUFXTFBLQ2ZVS05telpvZE5Hcms3NnFMVlVyYzJ2dEVQOEd3N2Zuc0hYVFBQZkUyTVhsNE5MUm81SjQ0Y1k2UVNBQXhJbktSeGw1cTZqNGFOWEtPNm1LVjhtdHIvUjB1Wmx3SFJHdFcrWHJNQURQQUREQUR6SUF5Qm5SdmdBQUdsQVhNckVPNTdkR2pzekprQ282Q01qWmh3bDgwZmRwUzRWYmlDcVZXYWhZd1FRR0ZjdnZ3dzEybHphby9nV25xajR0cDh1UkZZdlhEMVpocTEzYWpYaS9jUlk4L2ZvdHFMUElMekppeGpDYU0vNHV1WFN0UVhRVmJmbDE3MzhFblZneDY5cnlkbm5yNlZrME5uOW16VndnakVRYW9zN1V4N0xYZjBuNWd3cmg0NHNsdTFLdlhYWnBpbWpkdm5UQVNMMTI2NmxKTWxuRGEyc1lHaUMxMmVCOHp3QXd3QTh3QU0xQytERlR6OFluN3FIeHZvZjdxVUphZ2VDNWJ0cFdPSEQxTjdkdjdpMEoyYXE2Y21abE4vZnVOcC9sL3JoY3JEYTVVMU5GdTNBK3VOOHVYcDRtcTdZaFZVVnUxL2RDaGt6U2cvd1Q2L2ZmVjR2b1ZnUW1LM2NxVjZiUW40d2hGUnJXait2VnJxK2ttd216NysrOU5JaGdncUtJTlk4Q1ZnbGwrS094cjErNms3ZHNQVWxpWUx6VnNXRTlWRTdBcTh1RUhVMGdxbEZsUm1EWnMyRTJwcVhzcEpLU2t6b2NhVU9mUFg2YkJnNmZSRHhNV1VHRmhrYTZORCtERXFpbGMraDU4TU5uaUtvOGFMdmhjWm9BWllBYVlBV2FBR2JETmdDRU1FRUNBTW8wNGtGMjdEaEZjY2RxMWJTV3k5TmlHWjNrdlpta0hEWnhJUjQ2Y0ZrcS91U3VKNWJPMDM0cjdJaFprNzk2anRISkZHbm43TkNjZm4yWk8zV2pCZ28wMGFPQWtPbmp3dUM0dzdkK2ZUY3VXYmlXdlZoN2s2K2ZwRktZVnk5T3AzenZqYVBmdXc4SzlxNkw3S1N2ckpDMWJ0bzJhTkhVbmYzOHZwekN0V2JPVCt2Y2JSMmxwQjNTQjZkaXhIRnFja2txTkc5ZW53RUJ2cHpCdFNkMUg3N3d6ampadDJpTXd1ZHJ3ZGFiUmJJQTR3eHFmd3d3d0E4d0FNOEFNYU1PQVlRd1FDUzRVOW5Qbkx0UENoWnZFcHNpb3RtVjgwYVZqelQvaEZ2TFpaOU5wL0xqNVZGeGNrbjNKL0ppSytBMU1GeS9tVWtyS1pzb3Z1RTZSa1cwVnovUWpIbUw0c05rMGV2UWZ3bFZObmwycUlyQkk5NFN4ZVBueU5VSXN5dVVyMXdqcGc1WFdMN2wyTFo5R2pacExYMzAxVzZ3U0lhaFpEd0pNMGtyY21UTVhLYnE5dnpBZ2xiUU5zVWhqeC81Slh3NmRSVmV1NUluWmR5WG5sZmN4NkpQOC9FS3h1cGg5L0t6SXNLWjBER0ZsYU5MRWhXTGxBK01YS3dwR0VUWkFqTkpUM0U1bWdCbGdCcGlCeXNpQTRRd1FkSUxrc3JKdTNTNnhlcERjTmRLdWNvdVozbGRmR1VucjErL1M1U3d0TU1IRmFQMzYzYlI3MTJIcTJqWFNybklMVjU1WFh2NldWcTNhTGxZOTlEYnpERXo0UzkyOGx6YW43aE9ZRU5SdFMrREswN3YzS0ZxeU9GV1htTUF4bFBhMHRQMjBmdDF1a2RITG51c2NqTVMzM3hwRGMzOWZRekNtbEJwaXRualNjcCswdXJoelJ4YXRYYk9UT25VT0lYZjN1alp2QVNPeDN6dmo2WmRmVm9xVlNiMWhzdGw0ZHNHeVJ3L3Zad2FZQVdhQUdXQUd5cFVCdzlRQk1XZEJVZ1NQSHo5TFNLVnJUNUJpRjVtajdDbkE5cTVUbnZ1QnFVNmRXcFNkbmFQNE5qQkM5SXdKUUZEbC9QU3A4OG94blRxdis4cm80QnpjS3hYMEtmb1dmYXhYQWFhVEo4OHBTdDJNWnc3UEhnd1BQV1BTSzlmY0xtYUFHV0FHbUFGbTRML01nSDYxSVFXOWdsU2dTY2tSaW9KSVVjVVpCZnhjV1c5QkFZUXloNkNvWFpla0NMRktVMmFuMlFhazZPM1FJVkQzbU1BNUN0aWhNS1E5d1RFNFZ1LzloUGFCZS9TQlBVRjZZdlFwK2xiUEFreEk4SUJueFo3QVRRdlBIcDVCRm1hQUdXQUdtQUZtZ0JsZ0JoeGh3TkFHQ0diV2s1TWlGT09Gd2dTL2RUMExacFF0RmVxejFtWmdnais3bmdYQjQwbGRIT2luTGhHSzQzb3FFamU0Vnlyb1U3MjdLV0VjT1lJSnp4NmVRUlptZ0JsZ0JwZ0Jab0FaWUFZY1ljQ3dCZ2lDZXYzOFBDa2sxTmNFTDN6VGh3MzdtYVpPWFdLeUhUOWlZd05GQ2xXOUdpRklZZXZ0N1VFUkVXMU0yZzZzSTcrZFE1TW5MU3BqUUFGVDA2WU55bXczdVVBRi9nQ21saTJiVVBzWWY1TldvQThRbEkwLzgvN0FzVGdINStwUjBON0dqZDNGZUpLM0Q5dlJSK2dyOUpsYzBLZm9XejFqUW5GTWpDZHp3Yk9FWndyUGxsenc3T0VaTk1jcVA0YS9Nd1BNQURQQUREQUR6QUF6WU01QWRmTU5SdmtOMTQ5T25VSk0vTTlSMndPMUNMWnR6UlRiZCs4NlJQMEhQRnJxK29NVXQ2Rmh2clJoL1c1ZHhrM0FCYVpqeHlDVHRxRzJ4K2VmelNEVWJJQ3ZmWHI2QVJvNDZJbFMxeCs0QUVHNVhiRWl6ZVE4dmZRak1FVkYrNHRDa2xLYmtCQmd5SkNaSXVBWjIzYnV6S0lCQXg0akx5OFBjUWlLVHVJYzFHaHhaWUUrcVgzMlBvRXBJaUswdEE5d1BPSkJQdjlzdXFpQkFrTms1ODVETkhEUTQ2WHVUSWl2UU4vKy9QTUszV0tDNFNkUEE0MkVBRU9IekJMWjJTUk03NzMzSlBuN3R4SVVZVHppR2R5ejU0Z2lOMGg3dlBKK1pvQVpZQWFZQVdhQUdmaHZNR0RZRlJDNGZpUWtoSlgyMHB3NXE2blhjOE5wMTg0c3drd3UvTzZSMXJibk0xL1N4bzBacGNkMTdoeGFac2E5ZEdjRmY0R3JVa0ppZUdrclVOdmp1V2VIMDlhdCswb3hJZU5WejJlR0V1cEpTS0puTnl4ZzZ0TGxYMHhJeS90c3oyRzBibTFKTmpMMEU3NWpHL1pKZ25NcXF1NkgxQVpybithdVN1Z0w5QW42Qm5ndy90Qm42RHYwb1NUb1c3MWlnb0dCWjBNU1BETjRkdkFNU1pqd2JPRVp3N01tQ1o1QmRzT1MyT0JQWm9BWllBYVlBV2FBR1ZEQ2dDSFQ4TUxsbzNYcjV0VDd0ZnNJS1U1UjJ3TVZtQkVKSWE5aGdQb2FGeTVjb1pSRnFWUjQ0NFp3TDBHUTg4SUZtNFFyako2VVFjbFY2YlUrOTRzc1JNTysvRm5VOW9CaWFJcXBPcUdlQ1JSRHVNVEVkZ2lrSmszYzZhKy9Ob3FhR1hyRDVPSFJnRjUvNDM5aUxIN3p6YS8wN1lqZkJQZnkyaDVTZlEyazNyMTRLVmYwazZkblkxcTBhSk9vbWFHbkxFdm9qL3IxNjlBYmIveFBwTlQ5YnRUdndqM3A2dFY4a3hVb3hIdms1VjBYOVRWUU13VDlCTGV5Sll1M2lQN1RHeVlZR1crKythQkl2d3UzdUNGZnpCVHRsTmYyQUthQ2drSmF2anlOcEpvaFdERlp1bVFMblQxN3FUUTl0cElYVDBVZnczVkFLcm9IK1A3TUFEUEFEREFELzJVR1hHcUFvTTZGRmdJRDVNR0hrb1VpK0hxZlViUnhRNGFZcGJXazFFazFRK0RDQkZlZjVPUW9RcFh1ckt3VG1nUUZWNnRhbFlwUjFWQ2w1T1VWMEQwOU9nczNwTmY3ZkdlenRvZFVNMlR6NXIyVW1ycFhCSzBqZmVxK3ZVYzF3YVJWUDhGVjZaWnVNUlFVNUVOdnZQNjlVTVpSTThOU1AyRWJGTnd0Vy9iUmhnMFpZblhyekpsTGxKRnhXRmVZa01tcTYwMlJJbHNVYW51Z0lDWU1SRXNCNWhJbTFBeFp1M1lYZFl3THBqdmd2cTBBQUNBQVNVUkJWR3Q1QmJSdFc2YW9uYUZ5eUpCV1l3K1lzUHFCRlJwVW52OWo3bHFydFQyQUNRWWphb2FzV3BsT2tWSHR4S29PeGlLMnF4V3R4cDY5ZHJBQllvOGgzczhNTUFQTUFEUEFESlFmQXk0eFFEQnIzTEJoWGVyUm96T2xweCswcUlBNkFoR0tqbHVONnFJS001UlUrU3l0cGV0Z1ZRQ3JJUWNQbktBMXEzZUk3ems1RjFXM0EzNzk5Lyt2QzIxUFA2amF0UWFLWGEzYWJ2VGpsTVdpRG9pOTRuWVNKc1JUd1BVSEt3b25UNTVYalFuR3pVTVBKNHRpaUphNGRHUWJha1c0TjZoRFUzOWNUSWNQbnhLRkJlMmRqMzVDdlphLy85NG1GSHZFVnFoZDFZRlMrL0FqWFdudm5xTWFaQXlySWxhY1preGZKZ3haOUpPOTlnSFRxVlBuYWRteWJWUzFXaFhDMkxOM2pqMmU4RXlobjdLeVRpcXEyMkg3ZWxWRWNvYlpQeStuM2JzUEMyUGVYdnVBNmR5NXk2SmdaUFZxMVFpclBHb0ZxNENQUE5LVk1LYXhvbVN2RFdydXh3YUlHdmI0WEdhQUdXQUdtQUZtUUIwRExva0J3VXk0WDVzVzlPaGpONHRnWkNoUGFnVlYwTEVTSW5kUHNuZE5LSXRRMHJkdlA2aDZ0aGIzUmxhanh4NjdtWm8yZFZlZDNRZ0d5S2FOZTRSTEdRd2JwWUpqVDUrK1NLbWI5Mm1DQ1lIZ3dBVFhLYlVabTBxcW9PK2ppeGR6VGR5VDdHRURKcHdEVE5JS2xyMXpyTzBIQm1BQkptQkR2NmtSR0w5b0Z6aDN0Si9nTG9oejBkZHFCSmd3NXA1NHNwc1lnMXBnd2pPQlo4T2U0U3R2TjU0OTNCdlBvbHJCT3dISkIvQ093THNDN3d3V1pvQVpZQWFZQVdhQUdhaWNES2pUaEJSeUF1V2lZOGRna1RVb0pLUzFKc29GbEI5bkZEbGtWY0tmV3JjcFpPSHEwREZJeklhSFI3U3BOSmlpMi9zTFRGb1ViUVRINE5xWmZzSTVXdlFURkZsZ1Fad01zS2t0bkNkaFF0c2NGUW1UbytlWkh3OU1HSFBBaERGWTBaZ2NtUVF3eHlMOUJpYThHNURWRGU4S0xTWXBwR3Z6SnpQQUREQUR6QUF6d0F6b2k0RnlOMENnU0NCb0YrazZJWHJPMk9SSTEyRDJPK0dmckVIeWJGeU9YRU52eHlLT0lTR2hKQk5TVW5Ka3VickF1QW83M0hpQUJRSnNsbUkxWE5VV0xlOGpqVG1NUVVkV1lyUnNnNWJYa21jV3c3c0M3d3cyUXJSa21LL0ZEREFEekFBendBem9oNEZ5TjBBd3M0bTZBVkx0Z0U2ZFFrVmREaU1yRjNBN2FkdTJaV2tSeExpNFlHcmV2SkZxbDZXS0hCWnc2L0gxOVN3dGdvamFJbm91QnFpRUsyQUNCcW13SXo2QkVkdU5LbWc3eGhyR0hBVEZBREVXMWJwaFZTUWZlQmNnT3gzZURSRHBmWUYzQndzendBd3dBOHdBTThBTVZENEd5dDBBZ1hLUktLdHQwYUpGWXdvTzhkSEVaYW1pdWdNdUwzSHh3YVd1UlhDRkNRMzFwY0xDd29wcWt1cjdJaE5TVEl4LzZXdzYvUEZqT3dRWnVwK2d3QUlEc0VDd1VnQ013R3BVd1JpTGpHd3IzSytBQVc1ZEdJdHEzYkFxa2cvMEU5NEplRGRJZ25lR2tTY3BKQno4eVF3d0E4d0FNOEFNTUFObEdTaDNBd1QxQmVML2NiK1NicCtVRktGQk5pTHBhcTcvUk9HMVJGa1JSTFRBNks1bGNFM3FlbE9VQ1psd2hTblBURVFtTnl1SEgyaTc1UG9uWFI0WWpleUdCVmVsenYrNHlVbVlNQmFOWEF4UXVGOGxSVWh3eENmZUdaWEJ0Y3dFRlA5Z0JwZ0Jab0FaWUFhWUFjR0Fxc1Q5Y1Bzb0tyS2UwUXBGeXpCYkd4RGdaVUozZkh5SXlMYVRtNXRuVThHdFhyMjZDRVEyT2JtY2Y4REZ4ZFpLQmpDaHJrVndTR3VUbGdBVEttQ2o4S0d0b0dzOVlzSk1Neko2WVJWSExyR3hBZFM0c1R2bDVGd3dKQ1lQajRZRURISUJSay9QUm5UMGFJNGhNVFZzV0k4dzF1U0NzWWlDZ0h2MkhMR1pDVTJQWXcvR0J6SnZtV1BDT3dPdVplbnBCMnhpUXFwbkxZTGc1WHp5ZDJhQUdXQUdtQUZtZ0Jrb1h3WlVHU0RoNFg1VXUwNU5Lc2kzN0hxRVN0MzM5T2hVUnRHRHNuVEhIUjFwNzc1alZOT3Roa1dFcU8yQjJnbW9IMkZMb2JkNHNvcU5vYUd0UlFBczZoQllFbURxZm10c0dhVUgyWHZ1dkN1T2R1NDhwQ3RNTUM0Q2c3eXBVY042b3JhQ05Vekp5WkdpL29OOFAvenllOXpibVZCa3psWS9vUXIyZ1FQSFhkWlB3SVE0QWJpK1dldW4vSUxyMUtGRG9JZ3RrR1BDaWx5UEhnbTBjbVc2MVJsMmpMM3pGNjVRNXI1akxzWGs1K2NwNGp0c1lRb0w4eFdab3VTWW9JRGZmVThuTVNhdHJSb0EwK1hMVjJuZnZtUHlVOHYxTy9wSkNhYkFBQzloUU1rYmcyY2U3dzZJTlV4dU5hdlR0YXY1THNVa2J5Ti9ad2FZQVdhQUdXQUdtQUhuR0tpU21OREhxVExlV0NtSWp3K20vZ01lTS9IZGRxNFpaYy9ha3JxUGhnNmRSVWVPbkhiWktnZ3dSVWUzbzNjSFBsNUdJU3JiUXNlMzdOaCtrRDcvZklZb0h1ZE1HbGZINzBnaTRCcEcxYUQzbnFRMmJWbzRjd21iNTJSa0hLRWhRMmFLSW4rdXhBU2phc0NBeHlnNDJNZG0rNXpaZWZEZ0NmcHM4RFRhdFF0VjJCMVB0K3ZNUFRIMm9Ld1BIUGk0U0xIcnpEVnNuWVBuNkl2UFo5QzJiZnRkaWdtVERmMzdQMG94Wml0UnR0cXFkTitKRStkbzZKQ1p0R0ZEaHNPWVlCekJHSjNZSzRGcU5HNUl4WVhHVFV5Z2xDOCtqaGxnQnBnQlpvQVowQXNEVGhzZ0FJRFZBR1RrZWVlZFI2bnJUU1dwVHRVQ2cyS0F5dGtUSnZ3bEtqeTcycjBDbU9CMjlFNi9SNmg3OXhpMWNFclBuekZqR1kwWlBjL2g0b21sRjFEeEJaZ2FOS2hIcjcveGdLaEdyK0pTSnFmT25yMkNSbi8zQjEyOWxsOW1SY2prd0hMNEFmZS9PclZyMGl1OTc2V0hIKzZxMlIzbXpWdEgzNDZZUXhjdlhyRTY4NjdaemN3dUJFd1k3eSsvMG9NZWYvd1dzNzNPLzF5eVpBc04rL0puT25mdVVvVmdRakhKWHIzdW9xZWV2bFd6RmFVVnk5TnAyTEJaWXBYVTJncUpQY1pxRlJYU2MwZlhVODJDUEtwUzNUV0dwcjAyOFg1bWdCbGdCcGdCWnVDL3dJQXFBd1FFU1RFVGp6L1JqVjUrK1I1VkNzNnhZemxpTm4zdG1wM2lPcTUwdlpKM3RvVHBnUWU2VUovWEh5amptaVEvMXQ3MzA2Y3YwSmREWjlHeVpWc3JIQk95RGNGVnAyL2ZoMHN6UTlscnY2WDljTG1DUXB1U3NybENNY0ZZaFhGMTIyMGRoTUVJbHl4bjVkS2xxelI4K0d5YS8rZDZjbk9yNGZDTXVyUDNOVDlQd25UTExlMnBYLzlIeTdoYm1SOXY2emNxcjQvOGRnN05tYk9hS2lMK1EycWJoQ2toTVV5c1dxRWl2Yk9DL2g0ejVrK2FNWDJwYWt3d1FGN0kyVXI0WkdFR21BRm1nQmxnQnBnQjF6RlF6Y2NuN2lNMXQ0T1JnS3hDcVp2MzB1YlVmUlFXNWxlYUl0U1I2MktXdG4rLzhiUjM3MUdoOEZkazlpVUpVMXJhZmxxL2JyY0l6dmJ3YU9BSUhISHNtalU3cWUvYlkyakhqaXhkWUhKenEwNDdkMlRScXBYcEZCamdUWjZ5dEtkS3dXM2NtRUh2OUIxSFc3YnNxM0JNR0NNd0ZqSXlEb3VZRHI4MkxjZ1o1VFp0MjM1NjY2M1J0SEZEaHNCVVVZWXYra0RDaEZnTkdLMnRXM3M2NVE0STE3aStiNCtsVmF1Mml5QnZQV0E2ZU9BRS9mMzNOckZxaWdCelJ5VXpNNXY2OVJ0UFN4YW5hb0twZW5FUnhWdzlRZmhrWVFhWUFXYUFHV0FHbUFIWE1hRGFBSkdhQ2tYdytQRXpsTEp3TTdrM3FFdkJ3YVpab3FUanpEOHhvemxpeEcvMDdZamZ4R3BLclZwdTVvZFUyRzlnUWlEOG9vV2JDTzBLRDIranFDMXdwUm45L1I4MGJOalBJa2phV1JjUlJUZHo4Q0JnT25QbUlpMWF0Sm1RUVFqRitaUVllNWpGSGo5K1BnMzVZaVpodFFCQnpYb1JZRUwyc1pSRnFWUjRBM0U4L29veC9UZ2xoVDc5OUNmaG5vUnNUSG9SR0l2Z0dhdE1lRWFpb3RzUlhKbVVDTno5UHZ4Z2loaTdlc09VbTVzdkRJaUxsM0twZlh0L3hTbVJzWXJ6M3NDSmxKMmRJNHdQSlR6WU80WU5FSHNNOFg1bWdCbGdCcGdCWnFCOEdORE1BRUh6c0JLQ05MVll6V2pTdEtRNG43MW1mL1RSanpSenh0L2s3bDVYTS85d2UvZDBaRDh3UWZsZXZEaVY2cnZYRldtRjdaMlBRUE1wVTFLb1RwMWFpaFVzZTlmVWNqOHdGUmNYaTlsb2ZJK05EYlI3ZVJpSmlHR0JNWVZ6OUNhU2NvN3NWbkNoTTYvL1lhbTlNS2krK2ZwWFlWekNpTkdiQUZPVktsVUlLMmtYTCtZU01wWFprNmxUbDlEbm4wMFhzU1I2eENTdExxNWJ0MHVrZDRhcm1UMUJyTkVuSC85RVZUUk91Y3NHaUQzbWVUOHp3QXd3QTh3QU0xQStER2hlaUJCWmc3QmEwTHAxYzBVdDl2WnU1dklBWmtVTmt4MEVwUWt6L2o3ZXpXUmJyWC8xOWZVVW1DclM3Y1Y2NjByMm9HM29KMlFwVWlKZVhrME5nUWxCM0dpckVnRjJjS0QzZmdJbWpDa2xnakdLc2FwblRNQUJUSGoybFFqZUplZ25WMlVrVTlJbVBvWVpZQWFZQVdhQUdXQUduR2RBY3dNRTdrZFFsdURhbzBRd3E2c25GeVZMYmNhTWVzdVdUYWg5akwrbDNXVzJKU2FHaVZvaVdEblJxNkJ0eUdBV0Z4ZXNxSWxkdWtTSTdHQjZ4NFFNWm1pckVnRjJjS0IzVFBYcjF5R01LU1dDTVlxeGlqR3JaOEV6cjJSRkJ4andMc0U3QmU4V0ZtYUFHV0FHbUFGbWdCa3dQZ09hR3lEWHJ4ZFNoNDZCWll3S0tIbkl5bU11cUhqc0grQ2xhK1VDMmFOaU93Ulp6QnhsQ1JQcWJhQmFPczdUcTZCdHFGSnZLWE1VWWcvTXBVV0x4b1RDazNySGhEYWlyZVppQ1JPd2d3TzlZOEpZc2xURHhkTFljM2V2SThhcW5qSEJrTUF6ajJmZlhJREozQ0NFc1lKM0N0NHRMTXdBTThBTU1BUE1BRE5nZkFZME4wQVFINUNVWkRvRERZVml6Smg1OU1qRG40ajRFRGx0Y0JXQnY3NmVsUXNFYVNlWnphb0QwK1JKaXdTbUJRczJ5aUdKNzRsZHdzc29VbVVPcXNBTlJVWEZsSlJzMms5b0RnS1lIM3YwVTVHNjFieDVPQjduNlZXc1lVSUFNekFCbTdub0hSUEdHY2FTdVdETTRYbkNHRFJYMkRGV2xTUVdNTCttcTM3aldjY3piKzRtaHRneFlFSU5vREtZa2lKMEdYdmtLczc0UHN3QU04QU1NQVBNUUdWaVFOTWdkTGg5d1A4ZWhkU2tRR1hVOW5oM3dBLzA1N3gxbEpkM25aWXUyVUxtR1hCcXV0WDRKeXRURmQxeEMweEl3ZnZLcXoxS1YzVlFnZm1EOXljVGdtT0JDYWxGa1ZrcXVyMi9TQXNMRUFoQVg3aHdrMUNrOUtZTVFybHIyTEFlOVg3dC90S01RcWp0OGNuSFUybnExTVVDMDRvVjZaUjkvQ3hGUmJVdHhWMjNibTJCQ1p6b0VSTXlQcjM2Nm4zVW9FRmRNWTdPbjc5TVgzd3hrMzZZc0lEeThncG85ZW9kZENqcnBPZ25LWXNYQ2pRaUl4aG01ZldJQ2JFUHZYdmZWN3BTaFJXQ0lVTm0wZGd4OCtqYXRRSmF2MzZYU0YwZEdkV082dGV2TFhBM2FGaVhGcWVrMHBVcmVXV1VmRDA4WU5XcVZhTlhYdWtoM04vUUhua21QR0RhdEdrUGJkOStVSXc5SktlQVlMVnEyZEt0ZE9GQ3JtYVlPQWhkRDZPQjI4QU1NQVBNQURQd1gyUkEweFVRdUgzRXhBU1VLcXlZMFh5MjV6QkM3WWg2OVdxTHdGTzRVOHlZdm94ZTZQVTFvVllCSkNEUVd3U3Q2OUhIVzJDS0RhUkdqZXFMdHFJQzgvUFBEUlAxRmVTWWZ2bGxKZlY2L2l2YXNmMmdPTTdmdjVWd01Ta3MxSjh2UGpEQnI3NVpzNGFpcmVpZm5zOE1GU2xmSlV4UTVtRTBQdi9jY05xU3VrOGNoNkJ0dmJxV0FSUGFKZ1hWbzgxb096QUFDNEtlZ1ExcGJZRVZtQ0hnQUZ6Z2ZMMEp4bzV3VWZSdkpacUdzWVhuNmZjNXE4VXpKbUZDclErTVNZeE5DTVpxVEd5Z0xqSGhHVWRRZVVpb3IyZ3IzZ0Y0RitDZGdIZURoQW45QTZ4NGgwQ3dEKzhXUGZhVGFDRC93d3d3QTh3QU04QU1NQU9LR2RCMEJRU3BYVi90Zlo4b0JqZDB5RXdhT1hLT3hkb2VTQTk2NHNSWldwS1NTblhxMWhKKytDZFBucVBVMUwybEt3aUtFVmc1RUxQOFdzeG8zN2h4ZzE1ODhSN3k5Zk9rcjcvK2xiNzZhcmFZZVlaQ0pCZGdRczBRcE90RjFXbkVGcHc3ZTFuTVVHdVZEbFVyVEVpVi9QUXp0MUZnb0RlTkhmdW5TTnVLMlhKcFZVRENoWGFmTzNkWktPMm9HUklkM1k2dVhzMFRLd21vVTZHRmFJbnAvNTdxTG9wR3dpMXA4T0Jwb2phSUpVeElhYnR3d1NhNlVWUWtVaERuNVJmUTh1VnBwRGRNV0xWNTZLR3VnbmVrMS8zMGs1OUU2bHJ6Mmg3eW1pRlhjdk9FZTFNVnFrSkxscVNXcmtTcTdTdXQrZ21ZN3IwdmdlTGpnOFVLSWxZUzhTNndoQW1ySVNnNmlKV3N4TVJ3Y3F0WmcxSVdiVlpjRDhVZVpsNEJzY2NRNzJjR21BRm1nQmxnQnNxSEFXMjBTQ0poYUtDNmNmVnExZWpwcDRmUzl2UURZc2JaV3JPaHdCZGNMNlF2UHA5QmUvWWNGVEVXeVBZREkwWUxnUnVPcFNCZFI2NWQ0bExtSVZ4Yk1FdTdlZk1lTVJOcjdyc3VYUk9Zb0toOTgvVXZ0SGZ2RWJyampqamg2b1JaWDJ2blNPY3ErZFFDRTlxSElPMVdMWnRTNzk0amFlMmFuVFl4WVVZYTU4Q1kzTFhyRUQzMGNESTFiZHBBY0tzVnB0emNQRlg5anZhaFRaaFpSL1Z2VkJCSFg2RHRsa1RDTkc3c243UnpaeGIxZk9aMndjbjU4MWMwNnljdE1NRk5Ec0hhZ3daTnBBVi9iUlNZekExZkNaK0U2YWVwaTJsUHhoRjY4Y1c3eFVUQXlaUG5WYWV2QmI5WVBTckl2eTZNTnVtZXpuemlHUThMOWFOUFB2bUo1djYrUnFUWHRZWUphWGZ4TjJ2V2N0cWRjWVQ2dkhZLzRSMlRsWFZTTlNabjJzN25NQVBNQURQQUREQUR6SUEyREZSSlRPaWppY1lQSmFWUm8zckNFRGwzN3BKUWxwUTJFY29hWWtkUUpWa0xGd3NVYit2OTJuM0M5eDlHaUxPS3NvUUp3YzA1T1JlY3dvUVlFZmk0cXhXMEJaaW1UMXRLYWhSbFhBZUdERmFIc0dKalRmbXoxRjdnUU5wYUdHWmFZTUoxK3J4K1AvMzI2eXJLemo2clNxa0VEaWlyem1KQ0gyTmx4Tm14SXZFRll4T3hOUXNYYkZTdEtBTlRyVm8xNk5peE0yVldDS1Q3V2ZwRTMzaDROQlI5ckdhc1NOZkc5UkJiczJKbE91M2RjMVJWUDJGVkRiRXFSNDZjZGhnVFVpeWpqN1hBQkd5MWlncnBoWnl0NGxQQ3lwL01BRFBBRERBRHpBQXpVUDRNYUJZREFzVU5pZ0VVZmtlVVdrQ0UrOFdaTTVjME1UNmdBTFpxMVpUdXZUZEJ6SmFxTVdna1RGQk1uY0YwK3ZSRnpSUjFyRnJjZjM4aStmdDdxZUlKbUlBSGZlVW9KaHlQODdReVBtQ3czbjEzSndvSzlxSENRblVwVnRFbU5aaTBNRDVnM0dIVjRwNTc0alZKV1F4TUdFUG03a24yWGd2b0o2bVAxUnBVd0lSVmk3dnVqdGNrWlRHZXg5T25MemlGQ2U4VzlMRmFUUGI0NC8zTUFEUEFEREFEekFBelVMNE1hR2FBb0psUURKeFZEcHc5ejV5ZWtqb2tRY0w5cG1QSG9ETHBQTTJQdC9kYkRTYk0xbW9oVU5xUTVRaUtaZWVFMEFyRnBGVS93ZUJBMFR6VXJVaElDTk1rdmEremJWUFR4L0wrUlQrRmhMUVdRZUFkT2dacEVvUGs3QmpTRWhPQyt4R3NuNUFRcWtuOFJVWDNrN3pQK0RzendBd3dBOHdBTThBTXVKNEJUUTBRMXplLzdCMlIvaGVLRWdUMUUrQzdqbGxjSXd2Y3BhUTZKUEh4SVdLVzNlaVk0UElFd3dNU0d4c29ZamlNamdudGwycXJ4TVlHbExxckdYbnNBVk9uemlYUFUyaW9yeUdxckJ1WmIyNDdNOEFNTUFQTUFEUHdYMkNnVWhrZ2lDbnc5dllRYVZYUmVVaUYyNlp0UzlKaktseWxnd3VZV3Jac0lsWUxjQTdTeklhRythcHl3MUo2Ny9JNkRrb3Rnc1poZUVEMG5BcFhLUWZBaEJnRnJMcEJrQW8zS3JxZDRmc0pCanlLQmtMd0hmalV1RFdLQy9FL3pBQXp3QXd3QTh3QU0vQ2ZacUJTR1NCUWpLQWd5V01idWlTRzY3ckt1cjNSQjB4UjBTV3VTdEt4SFRzR0czcFZCNWprZFVpQUM2NWxXQlV4cWdCVGNJaVB5RHdsWWNBS2p4YXBvS1hydWZvVG1PUjFTSEQvenAyTmpjblZIUEw5bUFGbWdCbGdCcGdCWnFBc0E1WEtBSUd5bDVBWWJvSXlJVEhNeENBeDJXbUFIOERVcFlzcHBzVEVNQkVZakZsM0l3b01EY2xWU1dvL0RFZXNHaGdWRTlyZCtSOVhKUWxUWEZ5d3lFWmxaRXlvdnlFWHhPMWdSUTRyY3l6TUFEUEFEREFEekFBendBdzR3NEJtZFVDY3Via2o1eUM3RlFMTXJRbjIrL2w1VWxSVVc1TkRNSU9MK2hEcDZRZXMxb1hBQ1lnZHNWWTN3dVNDR3YxQXFtQVVCTXpQTDdCNlJTaXVTS2VLZUFLNXRHblRRcmlYclYrLzIyYWI5WW9KYVlBN2RDaHhWWkp3ZVhsNWlCV0V2NWR0czRrSkFjenlGUzdwL1BMNlZOcFBkZXJVRXNYeTVPMW8wc1JkRkVaY3NHQ2pyakNoalJoYnRyS1pZVDhLSE1iLzQzNGw0VUxTQUt6SS9mckxTdDFoa3RySW44d0FNOEFNTUFQTUFET2did1lNWVlCZ3RqVW1Kb0FpbzlyUzVjdFhMVEo2dmFCUXBIT0ZuN3Bjb0xBKys5d2R0SG5USHFwaHBYbzMwb3lpZU51bVRYdWN6dUlsdjZlUzd6QSs0SWFFR1dWYm1OcjV0eElyQStiWC9MLy91MVdrR2JhRmFYOW1ObTNjbUdGK2FybjlCcWJRME5hRURGQlhyK1lUcXNpYkMvb0pWZVdSVnRoYy91Ly91bFBMRmsxczl0T2hySk8wZHUxTzgxUEw3VGN3SVpZb0xqNVlHSXpXTUxWbzBVVEU1NWczNUxISGJxYkdqZXRieFFSakNwWEFWNi9hb2FvWW8vbDliZjNHOHdSakhhdUR3R2NKVTlHTkltclNwSUZ3d1RLLzFrTVBKbEd0bWpWc1lqcDM3akw5dlhTcjZzS0Y1dmZtMzh3QU04QU1NQVBNQUROZ2ZBWU1ZWURBRFFsSzJpT1AzRVJkYjRwMG1QWHUzV01JZjlaa1Mrbyt3c3k3S3dXWXNyTno2TDc3RStqT08rTWN2alY0c01YRmp1MEhhZVdLZERIVDdXemFVMGNiQlV6SGo1OFZMam85ZW5SMjlIU0N5eEwrckVsR3hoSENxZzltNTEySkNjVU5FU2ovOE1OZHJUWE42dmFZMkFEQ256WEp6TXltSVYvTUVJa1NYSWtKdFRoZ0dEMysrQzNXbW1aMWUzaEVHOEtmTlVHUndTOCtuMEVGMXd0ZDFrL1cyc0xibVFGbWdCbGdCcGdCWmtCL0RGVHo4WW43U0gvTk1tMFJGTnRMbDY0U1hGbE9uYjVBMGRIK050MC9UTSsyL2dzdUtLTkd6YVV2UHA4dUNyZkJaY2xWQWt4WHJ1VFJraVZiNk1qUjA5Uyt2YjhtcmtWd1JSczc5ay82OUpPZjZQejV5OEsxekpXWXJsMHJFSml3K29Jc1VJNFcwYlBVVmhnY2t5WXVwQTgvbUVJNXB5KzRIQk00WGI0OFRheVNvUjRMS25tckZXQ2FObTBwZmZqQlpEcDJMSWRRSWR4VmdyR0hsWStWSzlNcFBlMEFoWVg1aXRUT1d0eC85dXdWTktEL0JEcDgrS1JMTVRuVDl1ckZSUlJ6OVFUaGs0VVpZQWFZQVdhQUdXQUdYTWVBSVF3UTBJSFpZZmlrYjA4L1FHdlg3QlJ1TVo0VzNIaVVVb2VaNTM3OXh0T1N4YWxDU2E1ZVhadWlnVXJ2TDhlMGE5Y2hXcjE2QjdWcjIwcXNIamh5RGZteGh3NmRwSUh2VHFUNTg5Y0xBODJWQnBYVURpaTNVS2IzN2oxS0sxZWtrYmRQYzR1dVNkTHg5ajZobkwvMzNpVDY3YmRWb3Y4ckV0UCsvZG0wYk9sVzhtcmxJZHpJN0xYZDJuNnNQbno4MFk4MFk4WXlxbGF0V29VbzZsSS9aV1dkcEdYTHRsR1RwdTdrNys5bHJjbDJ0OFBZL2ZpanFUUmxTZ29oYnNhVjhWUjJHMmZsQURaQXJCRERtNWtCWm9BWllBYVlnWEptd0RBR2lNUURsTnV6WnkvUndvV2JxSVpiRFFvTDgzTTQxZW1jT2F2cC9mY21pWmxuTFdib3BiWTUrd2xNOEprSEpnaGlYYUFnT2lKWUhSclEvd2M2ZE9pRU1LZ2NQZCtSZXlrNUZwZ3VYc3lsbEpUTmxJOUs3cEZ0SGE2aXZXSjVPdlh2UDE2c1BDQzJwK0l4VmFmYzNIeGF0R2dUWGNuTkV3a1BIRFdJMXF6WlNYM2ZIa003ZG1TSnVocDZ3SVJWcTJYTHR0S1pNeGNwdXIyL3d3WVI0b3o2dmoyV3RtelpKekM1eXBWTXlUaTBkUXdiSUxiWTRYM01BRFBBRERBRHpFRDVNV0E0QXdSVVlMV2l1TGlZVnEvZUxtYmFsYnJGWUpiMml5OW0wZzhURmxCeE1lbHFsbFphZ1ZtM2JoZnQybjFJR0ZiSUZtVlA0SnIyMWZEWk5IcjBIeUkyUWs4eno4Q0UyWEFFOTZlbkh4UUZGSkZxMTU1Y3VYS052djEyRG4zejlTL0NWYWhXTFRkN3A3aHNQNVRycWxXckNtVjdjK28rQ2dyeUlRK1BCbmJ2RDNlL01hUG4wYkJoUDRzQWZWZG04ckxYT0dDQ0laV1d0cC9Xcjl0TmdRRmVvb3E3dmZQZ212YkREd3RveUJjemhZdGtuVG8xN1oyaXEvMXNnT2lxTzdneHpBQXp3QXd3QS84aEJneGJCd1JLRTJiRkZ5OU9wVEZqNWlucXN1blRsNG4wb1ZqMXFGSEQ5UzVYOWhvcFlVSkEvT2p2LzdCM3VOai8yNityUkN3QkZGbzlZOXF3WVRkOS9mVXZpakJoTldmeXBFVWlKa2JQbUxadHphVGh3MzVXaEFreEpJak5nVkdtSnlOUjNuZzhUM0FIL1BKTFpaaFdyZHBPSTcrZEkxYW05SXBKam8rL013UE1BRFBBRERBRHpJQStHRENzQVNMUmgxblgrSGpybVpPazQvRFpvVU9nTUZyazIvVDRIVFArSGVOTTYyUllheWRxaExpNzIxOHBzWGErcTdiRHVFSUZkeVVTSHQ2R1VFTURnZHA2Rm1CQ3ltRWxFaExTbXBwNU5GUnlhSVVlQTB4d3cxSWljS3REL1JZV1pvQVpZQWFZQVdhQUdXQUdIR0hBMEFZSUZOVEdqZDF0cG02Vms0RzZHOTdlSHJxdTRneE1jRk5DWlhBbEVoRG9MV282d0IxR3J3Sk1xTFdDQ3U1S0pEallSOVNmS0NqUUx5Ymd3S3BUY3JLeXROQyt2cDRVRnVGSGVzZFVzNlliSlNkRktPa21rWm9ZejVUZU1Ta0N3d2N4QTh3QU04QU1NQVBNZ01zWWNGM2UyWEtBQk1XbmZmc0lNVnN1dnp3VTNvTUhUNGpzUzNMWEVDaU1VT3huelZwT05XcW9UNlVxdjZkVzM0RUpiYlEwczR6TVhUNCt6VXhjZUlBUEJlWDI3RGxpc2wycjltaHhIV0NDVVlFSzd1WUNURjVlVGN1a0lPN1VLWlMyYnMwMFAxdzN2Mkh3QlFaNld5elVCMHdvdEdoZUZMTno1MUNSd1UwM0lNd2FBa3pDVUFyM005dEQ0bmxxMnJRQm9SSzZYSktTSStqdnYxMWJRMGQrZnkyK0Yxc29tS25GZGZrYXpBQXp3QXd3QTh3QU0yQ1pBVU1iSUVWRnhRUUZTQzRJOXYzdXU3bjA4NnpsZE9kZDhkUzM3OE1tU2xOQ1lqajk4c3RLK1NtNitnN2pxWE5DcUVtYm9CaU9HL3VuaVBXNCtlWm9lcWZmSXlaR1Y2ZjRFSnIyMDFLVGMvVDBBNWdTRThOTm1vUnRFeWI4SmVwN1FERWZPT2dKTWFNdUhRU2o2c2NmVTZTZnV2dThmcjFRVkVlSHk1SWt3RFQxeDhVMGJ0eDhpbzV1UjRQZWU4TEVrSXlQRHhFclFZV0ZOM1Jab0EvdDZ0QXhzSXdoaTNUQjM0MmFLNHpJOXovNFAyR2tTSmc3ZEFnU0szWjQ3dVJjU1B1TjhGbXRwckdDNTQzQUtiZVJHV0FHbUFGbWdCbXd4WUJoRFJBb2U1aVJSVkZDU1REelBIandORkVyQktzZGY4NWJKMUs0RGh6NHVDaUtoK09pb2tyODFrK2VQSys3b0cxZ2F0aXdub243RldwN29LZ2dWZ09BQ1dsdHNkcng3c0RIUzEzUHdzTDl4TW9JanBXditFaThWT1FuTUdFbElMNVRTR2t6cEVyWkNFd0hKZ1F6WjJZZW8zY0hQbEhxcGhVUTRFVnQycmFrak4ySGRZY0pRT0NxbEpqd3IwdlppUlBuYU9pUW1hSzRIekJ0M3J5SG51MDVUQmlMM2J2SENPeFlBUW9OOVJYN2NJemVCQUh5U1RMM0s2UzdIdmJsejJMTW9iM3A2UWZvdVdlSDA5dDlINkk3NzR3VHpjZEtUM2k0SDYxWnM2UE1LcGJlOE1uYmczRlp2VUY5dW4zS2RQbG0vczRNTUFQTUFEUEFEREFETG1EQXNBWUkzSG9pSWtLRnF3dDRRbTJQa1NQbTBKWGNhNld1TDFCOG9aUy84c3EzMUt2WFhmVFUwN2VLZmUxakFtanU3MnQwWjRBQUV3Sjc0UVlEbVRkdkhYMDdZZzVkdkhqRkJOUHg0MmZwOVQ3ZjB6TTlieE80WUhSQXdZY1NyemNEQkxQcS9nRmVZdlljbUZENUhVb3RhazVJTGtySVNwYVRjNUhlZW5NMFBmbGtOM3J4cFhzRWprNmRRb1F4cVRkTVdKRnEyN1lsaFVlMEVmMkVlaVhEaHMwaUdDRVNKaWpzU0pIODdvQUpJcjF0Nzk3M0NRVzlVK2RRZ3VHbE43bCsvWWFJajBKTUJ3UzFQVDRiUEkyT0hzMHh3WlNibTBjZnZEK1owcmJ0cHo2dlB5RDJZUlVTUnFTUkJLdW5xTUZTN09scHNrSnFKQXpjVm1hQUdXQUdtQUZtd0tnTS9Pcy80Z0lFbUhXRW9xT0ZRSUc0K1pab2dqSTRhTkJFR3Z6cE5Nckx2MTVtRmxaU1hrZU9uRU52MkF6Y2FRQUFJQUJKUkVGVXZ6VkdLSVczM1JicmNGRThhMjNXR2xQM1cyTkU5cWRQUHZtSlB2cndSNExDWno1YkRreFFudUNXMWZ2VmtZVEsydDI3dFJlejh0YmE2ZWgycmZvSnJrcTMzTkplM0I0ckJGRElvWmliRjRBRUpzekFUNTY4aUY1NWVZUW9Fbm5ycmJHbHlxK2o3YmQwdkphWWtydEdDcGVqcjcvK2xmcjFHeWNNS0hOTVNDR012cHN4ZlJtOTBPdHJZUXpmZkhNVU5YQ3ZxMW1HTDYwd3dmaUZFWXYySWwzd2E3MUhFVllKSllOSzRsUENCRGZHWHM5L1JSa1pSNFI3SFJJbjRGblFRclRDcEVWYitCck1BRFBBRERBRHpBQXpvRDBETGpOQW9KdzBhOWFRTU1NS28wR040RnJObXpjaXpLNy8zNU5mMElLL05ncUYxbHJOQ1BpbVE1SENMTzJUVDN4R3AwNmQxeVFiRnRyUnFGRTk0ZSt2Vm1uQ3RlQlNCaVg4bWFlSDB1OXpWaXZDaEpucXA1OGFRbG1IVG9wc1dGcTBBMXpGZGdqUXhGaUVTMW05ZXJYb3VXZUhpZUIvS0xqMitnbXVQazgvTlZTc0hNQU5TeTBtakRYY1Z5dE00S2R4NC9yMDhrc2o2S2VwaSszVzlzRHhHUm1IcWVjelg0cWlqTWhjaHJHclZsQnRIaW1vTVhiVUNsSS90Mjdkbk41NC9YdGgyTnFyVndKTVdIRjdvZGRYdEdKRkdnV0grR2lDcVZyVnFwcGhVc3NKbjg4TU1BUE1BRFBBRERBRDVjTkFsY1NFUHNYbGMyblRxeUpJdGNlOUNaVFVKWUw2OWgxVFpsYmY5R2o3djZBZ1FmSEt5eXR3eU8wSXlpd1VZQ2h2bVBWVkk4RFVyVnNNM1gxUEorRStKSzIyT0h0TllDb3VLcWFyMS9JZHhvUVZFU2paV21EQ1RIalBaMjZuVjE4ZGFkVllVSW9SbUNCWXlYR0VIL1FUTUVIUkJjOXFCQVp2VkZRN2V1MjErNFE3bnBwcjRWd0owK1hMVngwYXg1SWhoVXhTV21CQ0ZxNSsvUjRScXhVRjF3dFZCWUZEOGE5U3RRbzVpZ25QSUZZanRjQUVmcERsN2VOUG5xSFgrM3hIVjY1Y1U0WEpWai9qWGsyYTFLZVpzOTVuRnl4YlJQRStab0FaWUFhWUFXYWdIQmh3MlFvSWxCVDQ5R01XR3JVNzFNN2FZZ2E1dUxqWUlhVVcvRW16NzJvVmRWd0xHRkF3RUxnOFBSdXBucWtISmlpU2ppanFFaWFzOG1pR3FXTXd4Y1FHVUt0V1RUVEJCQVBBV1V4cUZYWHdBemV3OWpIK0ltWUQ2WTNWcnNDaG4zQU5HSHlPQ01ZZS9yVENGQkhaUm1CcTI2Nmw2cjYvVVZUa0ZDYU1PNjB3WWZ3aW9ZS29BeFBvcFJxVEkzM0R4eklEekFBendBd3dBOHlBNnhod2lRRUNSUjN1UlFpd3hveDIrL2IraGxjdWdBbnVSYkd4Z1dLV05pcGFHMHdWbWNvVW1OQS9NS2dncUVlaWhWRlRrWmlBQXhtcjR1TktxckFqdlM4TUVyVlMwWmhxMUtoZW1yRUtOVlBRZDJxbG9qRmh4UXNycEJCazQ5SUNrMXBPK0h4bWdCbGdCcGdCWm9BWjBKNEJseGdnVUdJUis0RVlFQWpxWEdCRnhNZ0NURUZCUHNKbEJEaTZkQWtYTGtOR3hvU1pmY1JjU0FVRFVUTkZjamN5S2k2c1ZQajVlVkp3U0dzQkFhbHpZWkFZV2VBKzVPM3RJWjRwNElCUkJjUFJ5QW83TUNHdUt6S3FKQXNYRFB2Njllc1lHcE9SeHhpM25SbGdCcGdCWm9BWktFOEdYR0tBd05pUUY5ZEQ4VEtzaUJoWllVTGJrVkpWa3RqWUFLRkFRWkV5cW1CbG9FdGllS25mUFdxbVFORTFPaWFzNkVndVlEQkVFR2VnMWcyckl2c1l4bTlNVEVDcEM1aFVNd1VHcEZGRllJb05GRVVOZ1VHcW1ZTHRMTXdBTThBTU1BUE1BRE5RdVJnb2R3TUVpanBTZE1LZFJ4SVVMOE9LaUZHVkMyQkNLdFhFeEg4TDBRRmpWSFE3dzJKQzN5Q21BYlBwa21CV0hZcXVVZnNKT0xEYWtTQXJHQWhEQlAybWhSdVd4Sk9yUDRXclVuSms2VzNoT2dVankraVlzSW9vRnhqNFJwNmtrR1BoNzh3QU04QU1NQVBNQURQd0x3T3FEUkFvQ0xiK2tLVUtsWklSL0NzWHJJallPay9hSnovSFZkK2xlMXY3QkNha1VwVmNsYVIyU1lxdXRmT2s3ZEx4cnZ5VTdtM3RFNEhSS0s2SDJYUzVkTzVjWXBCWU8wL2FMai9IVmQrbGUxdjdCQ2FzZGlDd1dTN29KeWp0MXM2VHRzdlBjZFYzNmQ3V1ByRnkwN0psazFMM0s2bGR5Y21Sd3RpeWRwNjBYVHJlbFovU3ZhMTlBcE9IUjBNUkd5WnZGNHdxR01GWWdiTjJMcmF6TUFQTUFEUEFEREFEeklDeEdGQlZDUjJwTzVGKzgrcFY2MmxTemQydkpIcXdJdUxwMlZpa1o3VVcvSXJhQkZBd3RNZ2FKTjNYM2ljd1Fla3BLQ2lrb2lMTHlnMWNYUkxOWm10eFhmaXRlM2sxcFFzWGNrdmRtTXp2aCtCaGlDc3hWYWxTUmRRcnljdTdiaE1UbEZqenZrRDJxSGJ0V3RISmsrZks3Sk93NlJVVHhoNVNDa3Z1VjFKN1EwSmJrNysvbHloMmFDM0dSZGVZNGtQS3BJNkY0UmdZNUUwSER4eTNHcmNEVE9oZnBMZDFwVFJvVU5mbTg0Uis2dEF4aUpvMGNUZHBscjkvS3dvTDh5UFVoVEh2UStuQWlzSWszWjgvbVFGbWdCbGdCcGdCWnNCeEJweXVBd0xEQU1wYno1NjNVNDk3T3dzRnc1SUxDSlI0QkpkYVNsbDY0c1E1eXM4dm9LcFZ5eTdFMUs5Zm0vYnRPMFpmRGYrRmpodzVYWm8rMTNHSWpwL3h4SlBkNklFSHVnampSMnRNQncrY29PSERaMU5XMWttWFlVSmZQZnJvVGZUb1l6ZmJ4SVM0SEJoZjVtS3JuMUQ5KytpUjAvVFZWNzlRWm1hMlN6SGQvMEFpUGZsa2Q5RmNhLzJFbE04d2tzMEYxZU92WHMyek9QYUFDZnVIRC91WmR1MDY3REpNbU9udjBhTVQ5WHoyRHMweHdaaS9lREdYdnY3cUY5cTJiYjlMTWQxNld5eTk4TUpkb3ZZT1ZnL05CZThJR0Nsd1l6U1hzMmN2aWRva2x0NFJ3QVJqYXVTM2MyakRoZ3lITUlGcnJnTml6amIvWmdhWUFXYUFHV0FHWE1PQTB3WUltZ2ZGRmpPcWp6eDZFNzM4Y2crck0rVE9RRm16WmlkOU9YUW1uVHg1M3Vyc3B6UFh0WGNPTUVFZWZDaVpYbjMxWGszdmphcmxYdzZkUlVlUDVtaDZYU1dZTU10OC8vMEoxT2YxQnl3YWcvYXVZVzEvMnJiOTlQbm5NK2pRb1pNdXhZVDJRSW04ODY0NGV1T04vMWswTXF5MTJkNzJqSXdqOVBsbjAybnYzcU11eHdSM3BPNjN4bERmdmc5YlZNanR0ZDNhZmhpSGd3ZFBvNHpkaHlzRUU5THE5dXYvYUdrbVBHdnRkR1E3eHR6bm44Mmd0TFQ5RG1OaUE4UVJwdmxZWm9BWllBYVlBV1pBV3dhcStmakVmZVRzSlJFTUM5bTRJWU5TVS9kU2VIZ2IxVW9UWEpOR2pQaU52aG8rbTY1ZHUwNXVicXE4eEJ5R0JrejRTOTI4Vjh5cUJnZTNKZytQQmc1ZlIzNENsTXJSMy85QlE0Zk1va3VYcmpxc0xNbXY1Y3gzNElHaHVIVnJKcTFhdFlQZzJ1TFpvckV6bHlvOUI0YmErUEh6YWZEZzZYVCsvR1dYWTBKRGdHbDcrZ0ZhdFRLZDJyVnRKV0lqU2h2b3hCZGcrbkZLQ24zNDRSVEt5YmxRSVppd3FyaHIxeUg2Kys5dDVPM1R2RFROc3hOd1NrK1pNV01admYvZUpEcCsvQXhoMWNEVkFreFl6Vnl5WkF0NXRmSWdYejlQMVUyWU0yYzF2ZHYvQnpwODVKUlRtR0NRMTZsVGt4NThNTGxDK2xrMUFYd0Jab0FaWUFhWUFXYkF3QXlvTWtBazNHNXVOWVEvL2FKRm02bHg0L29VR09ndDdYTG9FelBQL2Q0WlQ4dVdiU1c0d1VEQnJDZ0JwaE1uemxMS29zMVV0MTR0Q2czMWRhb3BCdytlb0FIOXg5UENoWnVFb2lQRkZqaDFNWlVuQVJNVWEvUlREYmNhd3I5ZU1pSWR1ZlN4WXpuMDdvQWY2SSs1YTRXQldOR1l6cDI3TFBnRmhzaW90azdWWTRHYjJRZnZUNmJaczFjUThGUTBKcmhMcGFSc3B2eUM2NktBcDdWWUZWdjlCamV5RHorWVF0T21MYVZxMWFvSkZ5aGJ4NWZuUGt3a1hMNThUV0M2ZUNsWEJKdzd3ekdNWGF6a1RKcTRrRkJKeUZwc2lEMHNiSURZWTRqM013UE1BRFBBRERBRDVjZUFKZ1lJbWdkbElqKy9VQmdQMmNmUEVtcElXSXI3c0FZRk01b2Z2RGRaek5MQytOQ0RBQk5teFpjdlQ2TkRXU2NwdXIyL21EVlYyclo1ODlZSlJSMHhMTURrakxLdjlGNUtqd09tNHVKaVdyMTZ1M0F4YWg4VElOcW05SHpNWXZmdk41NHlNNCtKZUJFOVlKS1U4M1hyZHRHdTNZZEVoaWgzOTdwS0lkR0s1ZW5DU01US0EySmc5SUlKeVFNMmJkcEQ2ZWtIS1R6Q2p4bzJyS2NZRTF3WSsvY2JSMmxwQjNTRkNlTnZ5NVo5dERsMW56Q0F6UVBQYlFIY2tycVAzbmxubk9BRS9hUm1nb0lORUZ0TTh6NW1nQmxnQnBnQlpxQjhHZERNQUVFem9SQmdwblBuaml4YXZYb0hvZUNncGNCU09TUW8rQjk5OUNOTkdQOFhFVlZ4ZWtaVGZrMHR2ME1aeGNwQlJzWmhXcjU4RzBWRit5dHl5VUlNd2ZmZi8wSEZ4YzdQMG1xSlEzNHRDZFArL2RuQ0xTWXMxRmVSUzliWFgvOHFncGdMQzR1Y2NudVJ0MEhyN3hJbUJQbkRTQW9JOUNxVCt0blNQY2VPL1pPR0RKbEIxNjRWT0dRd1c3cVcxdHNrVEVlUG5oWXJQTWhHaHJUQzltVHlwRVgwMmVCcGRPVktua01HczczcmFyVWZ6eFBjd1JZdTJFUmUzaDRpL2JPOWE1ZTRrVTBXTG94d25WSXJiSUNvWlpEUFp3YVlBV2FBR1dBR25HZWdYSHljTUR1Wm5YMVdVYlZwR0MxWkIwOEk0NlZHaldyT0l5bm5NNEhwK1BHemREVTNUOUdkRGgwNnBYdE1XSlU1ZGVvOFhWR0k2Y2poVXdLN252c0ptT0JtaGxnYkpZS1ZMUmpCenJyeUtMbUgybU93a29oc1VLZFBuMWQwcWFQSGNrUlJRcjFqdW5EaGl1Z3JKYUN5czg4UU1tanBHWk1TSEh3TU04QU1NQVBNQURQQURCQ1Zpd0dDb092UTBOWVVIT3lqaU9PYmI0NFdTcUNpZ3l2b0lHQkNRRHFxblN1UmJ0M2I2eDRUTWdINStYbFNUSXkvRWtpRWRLcDZGMkJDb2I2NHVHQkZUYjM5OW82cVhIa1UzVVRsUVRDUVdyVnFTb21KcHBYQ3JWMzJ0dHRpS3pTR3hWcTc1TnVCQ2U1WHlJNmxSRzYvclFQVnFhTVAxMHdsN2VWam1BRm1nQmxnQnBnQlpzQTZBK1ZpZ0tBbVE2ZE9vZGJ2YXJZSFJmMnd3Z0NsUks4Q1RCMDZCQ3BXVnVQalE0VFB2cDR4RlJSY3A1aVlBTVd1UjlIUi9vUmFJYnJIRkJ1b09DMXZaRlFiVWFjR2hvdGVCZjJFSkFqTm1qVlUxRVFjNiszdElkSVVLenFoQWc0U21NSjhGYm5Kb1hrQmdkN0NXTVpFQUFzendBd3dBOHdBTThBTUdKdUJjakZBNERLU2tCaFdoaGtFWlNPT3dMd0tPTkxDb3BJektvenJWV3JXZEtPRWhMS1lFRzh3ZE1qTU1pNC84TlVQRGZNbEtGcDZGUVJ2SnlWSGxta2VncklSdzRLTVEzSnAwYUt4Q1BEV015YkVUWFN4VUtVZU5WZysrZVFuVVdCUWpna3hTbGpWMGpNbXhDc2tKWmRkS1VCUU5qQWhnNWRjWU16RHNOUTlKZ3VySHp1Mkh4U1lVT05ETG5DOVFyVjBTd1VuNWNmeGQyYUFHV0FHbUFGbWdCblFQd09hR3lDWW9mUVA4QklHaFFRZkJnZVU5RTgrbmtwVEppK2lsMTRhSWFwbVMvdnhpUlVUdlNvWHdBUlhwYkJ3djlJbVl4dU1xVUVESjlMMDZjdm94UmUrSnFRUmxrdm56cUc2WFMyUVhKV1FyVXdTWUVKUTlvQUJFMmpXck9YMDRndmZFQW9OeWdXS01CUmlQUW93ZVhnMHBOallnTkxtWWJVR1FkbHZ2akdhZnYxbEpiM1E2eXVDTVNLWHJsMmpkSkg1U3Q0bTZUdmFqMVVucktqSkJVSFpiN3p4dmNEMC9IUERDRm12NUFMREVzYVlIZ1dZM092WG9ZNGRnMHlhaHhUSXIvVWVKVEM5L05JSWtVeEFma0J5VWdSaElvQ0ZHV0FHbUFGbWdCbGdCb3pOZ0taWnNFQUZBa1h2dXoreFZMbVFhbnVnc0JvQ2hGRUlEUmx3VWhadUp2Y0dkVVZjQmM2clhhY21MVml3VVpkS0V6RGRjV2RjNmN3NnFrb2pIZWlTeGFraXl4QXdJWmg3MGNKTkFoOEtNa0xxMTY5RGl4WnNFaXM3ZWxNR2dhbDc5eGk2cFZ0NzBWYk1PQTk4ZHlKaGxRcVp6T0J2ajZCbjFBeXBXcldxV1BrQUJxUzNSZmFpZ29KQzNmVVZNTUZBdXV1dWVJRUpLd01EQi80Z0ZGcWtmd1dtOCtldlVNcWlWQ3E4Y1lQZ1VnWk1TRytMZWkrNXVmbUtYZXpFRFZ6d1QzNStnVmpOK04rRFNlSnU1clU5Z0FrQjk2Z1pBa01mcXpsWTJVSTlucVZMdDRwOWF0TFZsZ2RFWUlxTWFrZFBQdGxOWEI0QjlwaWMrUEhIeGFLMkI5NFR1Ymw1NHZtUzF3eHAxS2dlTGY4N1RmU2hXa3ljQmFzOGVwYXZ5UXd3QTh3QU04QU1LR05BOHhVUTRhclV1U1QrQXpPYUpTc0RoMFdNaDlRa3VHamw1Vitud1o5T28wR0RKZ29sQ1FIcldEbkJMTHdXb3FWUFA1Ulh6TDVDb0tCakZuM1h6cXd5bURDek8rekxuNm52MjJORjFpSmZYMC9odTY2Vkt3d3c0UjVhQ0JSdnlmMEtodDhMdmI2bXJWdjNDVXhRN2xBclJLcmpNbkxrSEhyN3JUSEMxUWR1V09IaGZwcTU5MmlKQ2J4SWJuSndJM3UyNTVlMGJ1MHVFMHh3NVFIMmNXUC9wTjZ2amlUVWFFRXdkR1JrV3lvc0xOU0NXaEY3b1ZVL3lkMnZzTXFCMVE0WTgzQ3prdm9KbUdCMFRKNjhpRjU1ZVFTaCtDWDJvOGFMSHNjZXVPbVNWQkpRajlXbzU1NGRKZ3dvR0I3SXNJYXhoMCtNdnhuVGw0bXhpWWtNL083UU1WQXpUSnAwTmwrRUdXQUdtQUZtZ0JsZ0JoeG1RTk1WRUJnUFVPUjYzTnVaUHY5OE9rMlpuQ0ptejVIMzMxeWdQR0dtSGNYZlZxMU1wNGlJdHNLOUFzWGtzRjJOUUtrTkRQSVdxekZxNDBxQUNaWGRIM3E0SzMzMTFTODBkc3lmVm10N1FMRUYxcjE3ajRxYUljaWExYUJoWFZxN2RxZnFyRVRBaEZnWnVLbXB4WVJyd1RoNi9JbGJhUFQzYzJuVXlOOEp0VDBzcFRpVk1LRm15TEtsVzBVYmtHVUt4UmxobUtrUnRBT3ViUkRVNGNDOW5CVmNDNW1pZWo1N3V4aDN3NGI5TEZacHNEcGxMaEttckt5VFlwWEFyMDBMYXRPbXBmZ3VGVFUwUDBmcGJ3a1RGR2pNNHF2QkJFVWR4dEdMTDk1RE0yZitUVU8rbUNscWUwaUdvYnhORWlaVXFjZXFGYmhBWE5XeVpkdFVyK3BvalFtcmFLKzhjaS9OL1gwdERSNDhYVXhBV0t2dGdlZnB4SW16WW9XcVNWTjNpb3hvSzF5ejFQQUszbmdGUkQ1NitEc3p3QXd3QTh3QU0rQmFCalExUUZCMHIzbnpSdlRISDJ0cC9mcmRZaGJXbnFJQUJlUGN1Y3ZDM2FKYTFhcVVrM05STlFOUUx0NTk5M0U2ZlBnVW9YNkFHcVVTbUREcm41S1NTaXRYcEpYT1BOdHFKREJkdkpoTGl4ZW5VaFdxUW1keUxvcFpYVnZuMk51SG1leTMrejVNRjg1Zm9ZTUhqNnRTL3NHUFo0dkd0R0o1bWxEbXBObDBXMjJBVVFnWHBjVXBxY0lBZ3RzTXJxTkdnT21OTi85SCtYblhSV1YxTlFZTjJ0S2lSUk94NHZIWFh4dUV1NTg5TngxZ2d1R0Rmb0w3RnZwTXJYR0g2N3o4U2crcVhxTTY3ZDU5U0ZVL3dRQkI1aXRVRHY5ajdscGhJTnJqQ1B2ejh3dUZzUWlYck11WHI2bzI3bkFkR0hhTkd0Y1hNVUZxSmdpd3V1SGgwWUIyN3N3U3JuRzRsaEpNTUlKUUNCUzFRNjVlemFPclYvTlZHWGNZTHpCNkhud3cyYUxocldaYzg3bk1BRFBBRERBRHpBQXpZSnNCZFZQWVp0ZkdyTy8yN1FmRlZpaTFTZ1V6NzFocFdMVnF1MnBsQUlxS3AyY2o2dFFwUkNnNW16ZnZVWFZOWUlMN0J4UVdSekZCZ2RRS0V3dzcxRXhBWE1QS2xlbEtxYlY0SERCbDdqc21sRzFITU9FOHJURGhPbzBidTR2YUZsRGFZUVNvRWJUdHdJSGpUbUhDZmJYb0oyQkNjRFhxZFdEbFplN3ZhOVJBRW01SVdORkFmSTZqL1VSVXJSU1RQVVBNVmlPQkNmY0dKcmlyL1R4cnVhM0Q3ZTVEV3pDR2p4N05jUmdUK2hncnBIaGZxTUZrdDVGOEFEUEFEREFEekFBendBeVVLd09heDRCQVNjQ2Zvd0tGd3BJTGtLUFh3YXc2Zk45eHZmaTRZRTJ5NXVCYUZZMEp3Y1hnQjdWSW9CQkNNVlFqenZMdDdIbm1iVVUvaFlTMEZ2VTYycmYzRjRwN1JXRkMyN1FhZThFaHJjV3FSV3hzb0NZMVU5VHdyUVVtckFpMWFkdVNSRnJwME5hYTFFeXBhRXptWTVGL013UE1BRFBBRERBRHpJQnJHZERjQUhGdDg4dmVEUzVmcUt3T2dUS0lHQU90QXR2TDNzMTFXNlRnYWdUcjY3MW1paEpXc0tJazFiWkFQQXI2Q2thSmtRVUdsQlJjRGRjcEdGaEd4NFNZSTZ3bVFveFFNOFhJNDRmYnpnd3dBOHdBTThBTS9GY1lxRlFHQ055dkVDQWRFVkdTQmhjendGQ2U5RnBmUk1rZ2cxSUw5NnU0dU9EU3c0MWVrQTJZb016SzYwQkFjVmU3QWxKS1VBVjhRZHVSZGxsZXIwUFBOVk9VVW9TQTkyUlpzVXJKRUZaNlBoL0hEREFEekFBendBd3dBOHlBT1FPVnlnREJiSE5VdEw5dzY1R0FRbUd5RitRcUhhdkhUMkFLRGZVVjJaQ2s5a0VodEpRSlNkcXY5MDlnQ2c3eElTOHZqOUttZHVnUUpCUjRveG9od0JRVTVFTnQyclFveFFRREM0YVdVVEZoNWJCdDI1WW1SVVhoV2dhRDJLaVlTanVIdnpBRHpBQXp3QXd3QTh4QWhUR2dhUkI2aGFHUTNiaExsNUw2QXRLbWtORFdJdVVzQW5tMThJbVhydXVxVHloNmtxdVNkRSs0WUVFeHpNZzRiRWhEUkdENnA2NktoQWtwaHFIQW94YUpFWTByWUpKY2xTUk1NTEJnYUcxWXY5dVFtTEJ5R0JjZmJCTHdEZGN5R01SU1lWRUpxOUUrNGFxWmwzZWRNb1ovVCs1dTFlZ0cwdDJ4TUFQTUFEUEFEREFEeklCTEdEQ01BWUpVdWdpSWhadVZKVUVST2N6TXhzWUdtT3lHTWh2ZktZVDI3RGtpYXBLWTdKVDlxRjNiVGN6cUlrMm9xOFFlcHFLaUl2THdhR2ppMW9PMklZZ1hpbUY2K2dHcVh0MTZGK29WRTF5VjVPNVhFdDlRNERkczJHMFhVM0ZSTWQwb1VoZUVMOTFUeVNmNkNRWUdxcjliRXZTVE5NN005eU56MmFxVjIyMWlxbFd6cEU2T25qQUJCMVlPcFFLY2Nsd3dpSmN0MjJyMVdjU3hGWUZKM2taNzMvRU1WYzI3UmdjbS9FUzFpeXozcTcxcjhINW1nQmxnQnBnQlpvQVpjSTZCS29rSmZWeW5jVHZYUnFIb0lLN2p4UmZ2cGpwMWExRitYa0daSzBGQmRHOVFWeFRLTTkrSm1oV0hzazZhek9SS3gwQVJxVlc3cHFqRXJEYkZxSFJOSlo4d3BGQXM4WlZYZWhBS3MxbkRCTHdJUERlWDgrY3YwOEVESjJ4aVdya2luYVpPWGF5NkJvbjV2YTM5QmlZRS9iL2ErejVoRE9aZXVXYngwSnExM0N4aXVuVHBxa2dQakQ0eEY2bWZVRjltMGc4THFPQjZvVVhzNXVlcC9RMU15QUNGd25tdHZKcVNOVXhvWDBpb2I1azJYYmx5amZablpsdHNob1FKcWFJbi9yQ1FVRy9ERW5hTEo2dllDRXl0V2pXaDExNTd3Q2xNYU9mZVBVZXR0cUJ1dmRxMFk4ZEJVYlFUK0YyQnlXcGpiT3lvVlZSSUwrUnNKWHl5TUFQTUFEUEFEREFEeklEckdEQ0VBUUk2b0RURmRnaWdRWU9lRklVQnRhUm82dFFsTkhuU1FwRXR5NVhLRWpCRlI3ZWovZ01lRlc1aVdtS2FQWHNGalJzNzMyVktyZFIyWUFvTmJVMEQzbjNjb2pFb0hlZk01NXc1cXl0RXFRVW11SWdOSFBTRVJjUEpHU3pTT1FzV2JCU1Y2TStmditKVXFtZnBPbzUrQWhPTXhmNzlIeVdrZU5aU2xpelpRaU8rK1pYT25yM3NVa3lPWW1BRHhGSEcrSGhtZ0JsZ0JwZ0Jaa0FiQmpTdGhLNU5reXhmQllZQlZqRVcvTFdSR2pXcVI0R0IzcFlQZEdBckNxc042RDlCVkdTdVVxV0t5MmRxZ1FuVjJvRUpxemZCd2EwZGFMM2xRMUhrN2YzM0p0RzBhVXZGQWE0MHFIQkQzQS9GODRBSnhmakN3MHN5a2xsdXJiS3RwMDlmb0E4L21FSlRwcVNJMVp5S3dIVHExSG1hLytkNjRjYUgxVGpFRUtnUnJHQU5IanlOeG8rYkw0eHJaK3JNcUxrL09Nekp1VWgvL2JXUkNtL0FFUFpYalFrcldFT0h6cUx2UnYwdTNOVmNqY2xSUHFvWEYxSE0xUk9FVHhabWdCbGdCcGdCWm9BWmNCMERoakZBUUFsODBoRTRDdi96VTZjdkNLWEoyY0J5ekR3UGZIY2laV1llRTRYOTFDcVV6bllaTUNHMllQbnlORHB5OURTaEtKK3pRZGdybHFkVHYzZkcwZTdkaHlzY0UxemlVTEVkN2tlWVlhOWJ0NVpURksxWnM1UDY5eHRIYVdrSEtoUVQ0a0FRSDdSMjdVN2F1L2NvUlVhMW8vcjFhenVGYVV2cVBucm5uWEcwYWRNZWdjblZCcFhVYUdDQ0lPNW0rL2FESW4xMWd3WjFwZDBPZmFadDJ5OHdnUjhVeXF3b1RJNDBtZzBRUjlqaVk1a0Jab0FaWUFhWUFlMFlNSlFCQXRoUWJOemNxdFAyOUFPMGRzMU9DZ3J5RnZFR1NpbUJUL3J3WWJOcDlPZy94TXd6WnVrcldpUk11M1lkb3RXcmQxQzd0cTFFUFJPbDdZSlAvcWhSYyttcnIyWUxZMFlQbUdEUXViblZFTXI2eWhWcDVPM1RYTVJTS01XRUZMQmp4LzVKWHc2ZFJWZXU1RkdkT2pXVm5scHV4MG1ZOXUvUHBtVkx0NUpYS3cveTlmTlVmRDhZWlpNbUxoUXJIeGN2NXVvS0UxYmk0RHJWcEtrNytmdDdPWVFKcTIwZmZ6eVZ6cHk1NkxTaHFmaUdHaDdJQm9pR1pQS2xtQUZtZ0JsZ0JwZ0JCeGd3bkFFaVlZTnltNU56Z1JZdTNFUzE2OVJVNU9xVG1abE5iNzA1bWxhdDJpNFVKYjNOMGdMVHVYT1hCU2JnYkIvakw4RzErb24wd24zN2pxTWxpMU4xaXduS2Rrcktac292dUc0eCs1VTVPTGlSOVh0blBNMmZ2MTZrVHRaYkhSY1l3SmN2WHhPWXJ1VG1DVXoyVnREZ1J2YnV1eFBvdDk5V0NRTmFiNWpRbm12WENzVHFJZ3lKam5IQkpLMlFtUGVQOUJ0dVpGaEZuRFhyYjdFNmlmRnJKR0VEeEVpOXhXMWxCcGdCWm9BWnFFd01sRTAzWkNCMGNGWEM3UC9xVlRzVXRScktPbFlaNENLaVY0RkxHWXJhclY2akROT3hZMmRvMjlaTTNXTkNxbHFzV0dFVndKNGN6ejVEcWFsN2RlM0tnMzZxV3JVcXJWcVpMdEpEMjhPRVRHeFNQUkM5R2I1UzJ4R3pBVXh3bzBJTkVIdUN3UGtOR3pLRXk2QmVNZG5Ed1B1WkFXYUFHV0FHbUFGbXdQVU1HTm9BQVYwSUh1OSthNHdpNXVMaWdzblh0N2x3dlZKMFFnVWRoRmlEMjI2TFZYVDNxS2kySWtNVHNocnBXV0I0SkhlTlZCUWJFQmJ1SjVJTXdBMUx6d0lsL2VhYm94VVZ1RVFxNWNqSXRvcU1sWXJFakZvN3FGMml4RWhIMVhka2NZUEJ6TUlNTUFQTUFEUEFEREFEeklCU0JneHRnRUNwYmRTb1BuWHFGS29Jcjd0N0hZcUs5dGUxd2dSTUtOUVhIeCtpQ0JNVVJSVDF5ODh2V3h0RjBRVmNkQkJXcTVLVEl4WGREYXNMS0Vxb1pCWmUwUVhMNmFDYU5kMG9JU0ZNOGRVeFR2V09DYTVrQ1luaGlqRjFTUXBYdEtxbCtJSjhJRFBBRERBRHpBQXp3QXhVZWdZTWJZQmc1alU0eEtkTVhSQzRaVTJldElneU1vNlU2Y0F1WGNKVnB4c3RjMUVOTndCVFVKQVBZWFpaTGxnTlFMMFNaQnN5RnlpTWVuYUJRZHY5QTd3b0lNQTB1Qm5HMW93Wnkyamp4Z3h6U0dJV0hncStYZ1dZVUtBUXF6WG1naG9zeU41bExnbUpZVTVuT0RPL1Zubjh4aXFhbDVjSFlWWE5YRkNEQlZuV3pBV0dNZ3htOUNVTE04QU1NQVBNQURQQUREQURTaGlvcnVRZ3ZSNVRWRlFzRkZWNSt4RG44ZmxuTTJqTm1oMGlPOWFiYnoxSVBYcDBMajBrTmpaQWJOZHJrVFFvY29sZFRHZWdVVmRqeUpDWnRHcmxkbXJZc0I3MWZ1MCtldmpocnFXWW9EQkNjVHg1OHJ3dUM3OWgxcjlEaDBBVEl3bEIyY2h3dFhoeHFuRDNlZW5sSHZUVVU5MUxNYUZLUEJSODFHclJZejBKWUlydkZHTGlmb1dnN0tGRFpoRlNQTmVwVTR1ZWYvNU82dm5zN2FXNFlZQzFiZHRTWkFaek5uMTBLVUhsOEFYR2IvdVlBQlAzSzlUMkdENThOdjA1YjUwSU5IL3E2VnVwVjYrN1NuSERVSWJCdkhYclBsMGJWK1ZBRjErU0dXQUdtQUZtZ0JsZ0JweGt3TEJac0tDb283YkVhNi9kVDFMdEFpaCtBL3IvUUljT25hQUdEZXFKeXVhb0daSjkvQ3pGeEFRSXBRbXVRRHUyWnhGU3Flb3RFeEV3SVlYdVN5L2RReDRlRFVTWElqWHF3SGQvb0QwWlIwcG5tbGVzU0tlc3JKTVUzZDVmcEhKRjlxRjltZGtpd0I0Wm12UW0xYXBWbzk2OTd5dE5sNHpWZ2I1dmp4RzFKK0FXaDVpWDFhdTNtOVFNUWQ4Y09ueVMwdE1PaUt4UmVzTlVYRXowNGt0M0M4TVBiY01xVHQrM3g5S1dMZnNJbUNEcjF1MmlYYnNQaWZvYTd1NTF4Y3JiOGVOblJZQzlIak5HM2JoeGczcjF1cnMwdGJCVTIyUDkrbDNDS0VHOEZXcVhwS2NmcFBBSVAyRU1BK2Y1QzFjRVZqMWlFaDFoNVIvT2dtV0ZHTjdNRERBRHpBQXp3QXlVTXdPR05VQWlXOWRmQUFBZ0FFbEVRVlFRODRDZzNpZWV1SVdrMmg3ZmZUZVhzQ29pelM3RExRa0srYzRkV1NJRGs3OS9LL0pzMFpnS3JwY1UvdE9iQVlKWjlaQ1ExdlRjODNlSzdGNGpSdnhHMzQ3NHphUzJSMGt0aXVxVWtYRllGUHJ6YTlOQ0tNRW81cnhrU2FydWpDcTRLdm41dGFBWFg3cEhHQnFva2oxczJNOTA5V3ArYVIwTXFiN0d2bjNIUkJyWTFxMDl4ZW9IMHNDbUxOcHNOeDFzT1Q4alpTNWY0cXJVbEY1K3BZZmdHL1ZLaG53eGs3QmFJTlVya1RBZFBIQkMxTmZBdU1QcVIrMWFiclJvMFdiZHVRRUNrNmRuSTNxMTkzM2krWUVMNDZlZi9tUlMyMFBDZFBUb2FVcEpTUlZHTW1xR1lMVUg2YkJoUU9NWW93Z2JJRWJwS1c0bk04QU1NQVBNUUdWandPVUdDR1pSdFJCVUQrLzF3bDFDQVh6ajllOUZiUTlyRlpneE00czBxRkNTYXJqVkVHNWJ5NWR2RTdVYzlCUTdBV1g5eWYvckpnTHJnUW1yTjFqbHNkUkdZTHB3NFFxbExFb1ZkSGJySGlPS0dDSTFxcVhqdGVEY21Xc0EweU9QM0NRTWlqZGUvMDcwQVF4RVM4WWZqRVVvOFZMTmtHN2RZc1RLd3FsVDUzVmxoT1RsRmRBRC8rc2lYSS9lZm1zTS9URjNyZFhhSHNDRStocW8wM0x4VWk1MXZ6VldySUJnSmNSZW5RMW4rSGIySEdDNjQ0Nk8xS0ZERVBYdk41NFF4NEkrc3JTcWdlMTVlZGRMYTRZZ1k5djJIUWNKeFF3dDlhdXpiU3J2ODlnQUtXK0crZnJNQURQQUREQUR6SUJsQmx4cWdFQVp2ZitCUkRwOStqemw1dWFwbWkzRlRIUDllclhwMjIvbjBQSGpaNFNpYmhsaXlWWW9lNUtyVDg3cEMySmpUczVGMWNvNk1OMXpUeWVDL3o5V1l0VE1BR04ydkVrVGQ0RUpzOHd3UG15SnBNREMxZWZva2RNaUpmR0pFK29WV3dUeEkyNEdTaWxpWmRRWU5EQTJXclJvVEtORy9VNEhEaHdYbUd4eEJFeVNxMDltNWpIaGtwYWRmVWExc2c1TXQ5N1dnYWlZU0cyL2c0OVdYaDQwWnZRZkl0RUJERjlibUhBOEZITzRaMlhzUGlKV0RJNGV6ZEVFMHkzZDJvc1ZDN1VHRGRybzdkT01Kb3lmVCtucEI0VExsUkpNYVduN2FkdTIvVlMvWGgwUnJ5T05TVnZqMXRZKzlGUFhybEhDclZJTGptemRpdzBRVyt6d1BtYUFHV0FHbUFGbW9Qd1ljRm5BZ0JTejhkaGpOOU9waytmcCtQRTBWVUdydU43Y3VXdUZFb2U0RGlVQ0pRdks0dDkvYnhOS205cmdaclFCQ3ZialQ5eEN1VmZ6Nk5paXphb3dGUlVYTzQwSjFkMmgvRW51WjByNHNIWk05ZXJWNmY0SHVvamRlL2NlVlIwRVBtL2VlbkV0Ui90cDA4WTltbUZDZ2IwSDdrOFVLMlVvUnFtbTc4SHpncjgyQ2t6MmpFUTV4eGg3TUVLMDZpZGNHNFlpWXBxMmJzMVUxZmRvMCtLVWt0VTBSekh0MkpFbE1DRitDVWErR29FTDVlMjNkNlRqSjg3UWhnMjdWV0ZTMHc0K2x4bGdCcGdCWm9BWllBYktqd0dYcGVHVjBzc2lXMVA3R0gvVmFUdWg2RURaaGxIaHFHaWhwT09lS05yV3BtMUw4dlgxSkJRNWhQS2tSdFJpY29ZTDgvWmlSY2ZQejVOUU9LOUR4eUNiTS92bTUxcjZEVXhROXAxUitKM3RYL04ySUw3QjI5dURvcUxiaVN4UHRtYjJ6YysxOUZzdm1KbzNieVFDM09QaWdraHR5bUl0TU9FYWFnUUdmZE9tRGNUN0FhNWdTZzFXTmZma2M1a0Jab0FaWUFhWUFXYkE5UXc0cnIwNzJVWW9GNTA2bHhRTTdOdzVsQnE0MTFWdGhEalpGTTFPUTlBNEN1WkJvRENoS0NKd0dsbmttTnEzOXhlWnE2REFHMWxnL0NJTEdrUktXVndwTU1VR0NpVTlJTEFrWlRHTVJ5TUwraWtpb28zSUlvYjB2cWdkWTNSTVJ1NFBianN6d0F3d0E4d0FNMUJlRExqRUFJRlNqbUpsaVlrbFZhT3hZZ0NsQ1FxSGtRVXp0RkoxYjhRNWhJZjdHUjRUWWhXazZ0NklSd2tQYjBPRmhZVkc3aWF4aXBQMFR4VjJ1RUdoMW9YUnh4NVdjVkJVRTRLVkl0UWtnZkZvWk1FS1l1ZUVra2tLck9haGRvelJNUm01UDdqdHpBQXp3QXd3QTh4QWVUSGdFZ01FeXA1NWRXOFUyelB5YWdGbVpwRldWVjdkT3lrNVFyVWJWbmwxdEpMckFoT013NURRMXFXSEd4MFRWanJNcTNzbmRZbFE3VnBXU2xBRmZBRW1ENCtHaEJVcVNSSVNRZzJWZ1VwcXQvU0pkd0ZXRUR0MUtqRkFzRDA1S1lMZHNDU0MrSk1aWUFhWUFXYUFHYWhFRExqRUFJRnlJYmtxU2R6aE4xWkZqR3FFWUdZMkxqN1lKQVlsTmpaUVpPOHhLaWJFdEhUb1dPTFdJL1VUTU1FdjM2aVloRnRQWkZ1VDZ0NklRV3Jac2drWjFRMExLMUtvZ1lNVktrbmd1b1E0RjZOaVFqOWhCUkVyaVpLRWhQcFM2OWJOMlExTElvUS9tUUZtZ0JsZ0JwaUJTc0tBNml4WVVIaHN1ZWlVRkFaMEk2eDR5QVZGQVZGRWI5dldUSnVWcnBHOVNLdWdjZm45YlgyM2h3bm53a1VFTTdSeThmRnBScUZodnZUM3NtMmxCZW5rKzZYdkZZRUpCb1E5dHlNRUVTZVpZV3JXcktId3kwZVZlYW5Jbm9SRC9xbFhURENxYnI0cFd0NVVFV01RSHRHR2ZwK3p4cENZVU1RUksxTnlnVHNnNGx3eU1wWWFGcFBrZmlYaHdqT0dpUXFrQlM0cXNoNWJWUkZqVDJvamZ6SUR6QUF6d0F3d0E4eUE0d3lvTWtDZzFDSmpFckx4UUNteUpEZHUzS0RXdnA2RW9GSnp1ZmZlemxSMG84aXFtNFZiemVwMG83Q0lrRFpWYllZZDgzdGIrdzFNTUNRd1EyNExFeXBiSTQ3RlhPNjhNNDR1WHNpMWl5bGo5Mkc2WVVPcE1yK3VtdC9BaEpsbGIrOW1Oakg5ZjN2M0FTZFZkZlp4L0ZrcElnZ0lBb0lJU0dmcFZUcFlZOVM4OGRXWXZHbWFON1pZc1dJaEVhTlJYeFZqTDlpTm9rRlFyQkVRRUNrcVRYcVQzanNDQ2tyZjkvTS9lSEYyZDJaM2RtZjI3RjN2NzM0K1pIZG5aK2JjNTN0bXpYbnVQZWM4bWdLaksrazVqMS84b3F0dDNyTERqaXhiSnVldjNNL3FKeDN6NXE1d080UEZmVkthSDFSTVNvNDBaU3l2ZnRKZE50M3h5SG1jZFZablc3Tm1TOEtZTlBndFZmb0lWN2NqdjhRdDUzc1g5bWZGVksxYUpXdlE0UGc4WXpxcS9KR21PMU01anpQUDdHUmZMVnFUYjB5THZscmphdFlveHFJK0ZGT1ZLa2ViS3FacmlwOStqbmZvWEhyMnpKNVU2WGtxM0tnRXBGU3BVdkZlNWk0RTZBTEYvUGtydmNVVTkwUjRFQUVFRUVBQUFRU1NGc2pvMGIxUG9mZk8xSjBDRGRiNzlmdTkyK0kwNlZhVGZLS0srejMwMEJBYis4bk1iRk9ka254NW9aNm1tR3JYUHRadXVmVzNibXZkUXIxSkhpOVNzY0tISDM3TFJneWY0aldtbWpXcjJNMTkvK2Z3UmdCNW5HS0JmNlhpY1k4L05zemVlKzl6YnpFRkE5dnJiN2pBemppalE0SFBPYjhYYUxEODdNQVBiT2pRY2ZrOU5XMi9WMHlWSzFld2EvdWNaMHBrMDMwb3BwZGZIbUZ2dkQ3R2EwS3ZoZjlYWFBsZmR2NFB0V1hTR1pmTVhuNXBoQTE2YlpUdDNiZS9RSisvY2dmMzIrV2JwNXUrY2lDQUFBSUlJSUNBUDRHVUtxSHJxdVhXcmQvWThPRlRyRXpaTXRheVpmMjBMZTc5Y3RvaTY5djNXWnM2OVN1dlU3QVUwOWRmZjJzalIweXovUWNPV0x0MmpkTVcwNXpaeSt5bUd3ZWFLcGY3bkZhbW1MNzU1anNiTVdLS0tWbFFQUXdWbmt2SHNXREJLcnVsNzNNMmR1eE1yekZwRjZpZE8zZmJtTkhUYmZ1T25XNUJ0bmJ3U3NleGVQRmF1LzIyNTIzRWlLbDVUZzlNUjF1eDc2R1lkdTNhWTJQR1RMY05HN2U1S1ZWbEU5eDFpbjFkTXQrdldyWEpici90QmZ2Z2d5KzhMbFpYVEVwOFB2MTBwcTFadThWdGc1eXUraDdyMTM5dC9mcTlZTU9HVGJDTUl6SUtsSHpJakVyb3lYeHllQTRDQ0NDQUFBTHBGMGdwQWRIcGFDQ3I2VkVUSnN5MmVmTlh1QUY3eFlwSEZmcE1kVVh6dWVjK3RQdnVmY04yN0VnOGxhblFEU1R4d21Cd3Jrck1zMmN2YzlPU2RHVzZzSWRpR2pSb3RQMzl6bi9abGkwN3JIejVjb1Y5cTBLL1RrbElSa2FHUytoVU5WdmI2MnJLVlNySGtDR2YyaDEvZThuV3I5OWFiREdwcjFSZGZQTGtoWmFaV2MrcVY2K2NTa2h1TUt1WU5HQXZybjVTSWpWNzFsS2JPR0d1Tld0V3gwMXhUQ1VvcmQrNTlaYm5iY1dLOWNVU2s1SVF4VFIzem5LYk1HR09OV3BZMjAxeFRDV21VYU8rdE50dWZkNFdMbGhscXR5dU5ncDZrSUFVVkl6bkk0QUFBZ2dna0I2QmxCTVFuWWIrejE5WGFwY3RYZSt1U0o5UXU3cWRXTDltZ2M5d3pack43aXJ0ZSs5KzVxNDhwK3VLZG9GUEpDYW01Y3MzMk9qUjArM1lhcFhjUFBhQ3ZwZXUwdmEvNDJVYlBQZ1ROd2hMMXhYdGdwNkhuaC8wazV4MWRiOXExWXJXTk00Nmx2emVXM2U5N3I3clZYdmxsWkZ1Ym41eHhxUnpWZnRLZ2thT21Hb1ZqaTVuTFZxY21GOEl1WDZ2Nlg3MzNEUElYbnB4dUttZ3Q4ODdWTGxPNW9lWU5tL2ViaDkvUE0xS2x5NWRxTHVMbXU1My8vMkQ3ZW1uM25QYlE0Y2hKdDFkMUIxVEhXM2FOaXh3NHFBN2VJOCsrclk5OXVqYnRuZnZmaXRYcm13OHZxUWVJd0ZKaW9rbklZQUFBZ2dna0hhQnRDUWd3Vm1WTFZ2YVRTSFJWSitkdTNhNzZSYkpKaEc2b25uckxjL1o0c1ZyM0phcGhibWlHWnhIT3I4cXB1Ky8zK3VteGVqdVJidjJqZDJBTjVrMlBoMDd5MjY3OVRtM2lGN3o0TU1Tay9wa3o1NzlMcWExNjdhNnFUN0pEazRuVDE1Z045MzRqT2t1U3RoaTBwMG1UUVZic1h5RDY2ZThkdTJLN2I5Z3V0K1VLUXRkVExwYkZJWkQvYVNZZEhkeDZkSjFidXFjcnZZbmMyaTZuNmJHVFp3d0oxUXhCWGNYTlExUmQwd1BWVDVQN3U1aU1OMVBVOVRra0dvL2tZQWs4MG5pT1FnZ2dBQUNDS1JmSUswSmlFNVBnd0lObkNaUFdtQ3JWbTZ5bjUzWk1kK3oxaFNSVy9vKzY2N1NwbkpGTTkrR0N2bUVJQ1pOOWRFZGtaK2ZkVksrNzZUazQ0WWJucks5ZXcra2RKVTIzNFlLK1FURnBPUnExc3lsYmdlaHM4L3BuRytDTkhIaVhPdHo3Uk11eVV4MmNGL0kweXZVeTRJN1BIUG5McmVaTTViWU9lZDB5WGV0aTU1MzFWV1B1ZWwrWVk3cHE2OVd1Nytwczg0K0tkOEVXQVAxSzY1NHhEWnUzT1lHNm9YQ0xNSVhCZjIwZE1rNmx5RHA3eW0vZFNITGxxMjN5eS85cDYxYnR5VnRNWkdBRkdFbjg5WUlJSUFBQWdqa0laQ2VWYnR4R3RBQTkvamExZUw4SnZkRHg5V280Z2JwWmNxa1oyRjA3aGJTODRpdTNtcnIxMlNPNDJwV2NZTXFPWVQ1VUV5YWlwWE1lV3ByWXEyTFVHMk5NQjlLckZTa0w1bTdPdFdxVjdhamppb2IrbUozNmgvRnBMdE8rUjM2ak9wNTJ0RXR6SWN1VkZTcFdza3FWY3IvRG9pS1lWYXFYTjUyNzltWDFwQU83TjVqQnc2bTl6M1Rlb0s4R1FJSUlJQUFBajlCZ1NKTFFJNDhzbXl1UW4ySi9GcTJxbThOR3g3dnBwa2tNMmhNOUQ1Ri9iaXUzUGJxM1NhcFpwbzBPY0VhTnpuQlZPOGo3REdkZG5yN3BHSlNMUmV0cjVnNmRXRytWNnlUZXNNaWVwS0tYNTU2V3ZiaWc0bWFPdUdFNnE2cStNU0pjMElkazZaaTlleVZ2Wmhub3BpVXFLajJ5ZkNQcGxpWWsvcDkrL2JieWIzYkpKWDhWcXBVM3JwMGFXNXZ2VFUrclRIVmJONG9FU09QSTRBQUFnZ2dnRUFSQ1JSSkFxSnROMVVnVG9sRnprT0xTTFZvT1BhS3V3Ym9xbmk4Y09HcTBBN1dkVFZaZzlXMmJSdm1ETWx0YlpzekpzWFhzMGNydDV0UldCTVF4VlM5K2pGdUM5dWNRY1hySnoybmE3Y1dwdDNCd25wb29LN2R2VHAxYXBickZCUEZwS3JpNDhmUHp2WDhzRHlnbUk0NTVtanIxcTFGcmxOS0ZGUDM3aTNkb3Z4Y0x3alJBNXAyMWFWcjgxeG5wUDkrNk1qNWQ5T3RXMHUzUzFtdUZ4VGlBWDMyS3gxYnlkcThmci83dkdUdHB4WklJUmg1Q1FJSUlJQUFBb1VTS0pJRVJGYzJOYkRJT1lEUUdvSkhIaDdxcWh0ZmR0azUyWklRRFppMFZXMVlEMVhEYnQraFNhNHBNRnJBL01BRGcxMkJ2NzljOFYvWll1N2VvNlc5OU5Md3NJWmtoMkpxN0tiMnhKNmtGakRmZDk4Ykx0bnFjOTM1MmU0TTlPalIwbDU0L2o5dUdsWnNFaG43K3VMOFhqR2RkRkl6Vi9rOTlqeTBMdUsrZTE5M2Q2VnV2UEdDYlAybzUydWJaUTE4d3hxVGF1d29xWTg5dEM3aXJydGV0Uk5PcUdhMzN2bzcwMTJDNE9qY09kTWxsOXJLT293eHlUcXplVDNUbmNMWVF6dTAzWDNYYXk2V3YvN3REOW0yaXRaZEhVMEQzTFJwUjlydWdnUVYxak5LRjhsL0NtTkQ0M3NFRUVBQUFRUVErRUdnU0JZb2FHNTM5KzQvWHEzVllHUGd3QS9zNXBzRzJzcVZHMTJGNmV1dWU5STAyQWdPM1MzUkFDdTQraGs4SHBhdmJ2cFZ6OWFIVDBkWHBWOTQvaU83OXRvbmJObXlkYTdDOUxYWFBHRXJWbXc0L0J3TnJqUzFMTXd4S2ZHTFBkNTRZNHhibEszZHlBWVBIbXRYWFBHb3FUQmZjR2dhVnJObWRWM3lFandXcHErYWZ0VXQ1ck9uYzFPaHVpdi84b2d0V0xEUzNoazJ3UzY3OUorbWhDUTRnbWxZU2w3Q2VPaXoxcU5uOXVsWDc3Ly91WXRqM3R6bDl0Ri9KdHVsbHp6a0Z0NEg1NjlwV0czYU5BeHRQK2tpaGU1NnhpWkgyZ252NGo4UHNHblR2bkk3dFAzNWZ4ODA3Ym9XSEVxd09uWnFGdHFZZ3ZQa0t3SUlJSUFBQWdqa0xaRDJYYkFPVFZXcVpsZGU5VXUzRzVZS3V2M3RyeTlaVU50RFU1WDBUelZETk9Db1dhdXFHNlJyTWZTS2xSdmNya3o2ZlpnT3hWU3paaFc3K3ByL2RuYzRnZ3JNYjcrdCtlaWxYVHc2NTlXck45bklrZE5jTWJ6R2pVOXd1MHF0VzdmVkRhakNGcE1HdFpVckgyM1hYSHVlMjFWbzA2YnRkbWYvVjl4ZEtGMFYxdm5xbjNZZEdqbDhxbFdxWE1FVitsTy9hRHRpVGNNS1kwd1ZLNWEzUG4zT2N3dWJZMnQ3cUZKMkVKTjJoeG94ZklyYitFQUZHWFY4OCsxM2JocFdHR1BTVkNWOTlwUlVxS0s5N3JnTmZPYUR3N1U5ZE02cUdhTGFMbVhLbGpsY00yVHZQbTIxUE1Ock5mZGsvMjcxR2J2cXFsKzZJb3VxVi9MUWdDSDI1QlB2dUlYejJnbFBNVzNmdnROR2pwaG0rdzhjY0FWT2RSRkF0VDgrR1RQZC9kMGwyMWE4NXlsUjFhNW5GMXpRTzl0ZHkzalA1VEVFRUVBQUFRUVFTSzlBMnUrQTZDcXlwbDlwMEtUdGRYVmxWb3VXdFN0UDdOVk83ZU92d2RUdHR6MXZBd2E4NmFJNjlaUjJLUThzQWg0bERlazZGSk91dk9vS3JMYlh2ZmpQRDlybm44M0xGWk5pM3JWcnR5czhxT2srdXZOeDJtbnRUUXZ5MDNHa082YjI3UnU3WGIwME5lN1NTd2E0cTg0NSswa3hhZWVoZS80eHlQcjNmOFd0ZCtsOWNodlRRRjlKVEtwSHVtTnExYXErVzZ1anFYRzZncTY3QXpsclJpZ21uZnVBQjk5MDFiVDFPZFQ2Q3EyekNHTk11dVBVdUhGdDA5UTQvVDNwTG81aWlsMWdycGgwYUlxajZyUW8rZEkwTE8wZUZiYVk5SGVoRFJwYXRXN2c3a1JkZWNXak5uVG9PUGZmak5pWU5JVlRTY2V6QXord2E2NSszSlQ0NjY2SnBtR2w4M09UNm1lWTF5T0FBQUlJSUlCQXdRVFNmZ2RFU2NaRkYvN01ocjB6MFI1L2JKZ2JLT1JjQ3hLY29wNnJPd2lxci9IRkYvT3RaODlXcG5vSG16ZnZ5SmFzQk04dnlOZGF0YXE2WktBZ3IwbjAzSXlNREx2b1R6OXpkMnp1di8rTlBDc3dCekhObkxuRU5MRHYwaVhUbGk5ZmI3b1RFaFJoUzlST1hvOXJFRm1uVG8yMHhhUXJ3SC80NCtrdWticjNua0cyYytkdWQwVTQzamtvSm0xdE8zZk9jbGZvcjFQSHBtNzYzTnExVzFLTzZiampxdGplUGZzc1MrWEhVenkwUGZCdmYzZXF6WnExMU83cy95K1g0Q2FxN2FHQnJhNnlhMXJXMkU5bXVHS01xdkN1Z24vNlRCYjJVRDlwZ0t4QnRveFRQUlRUcjM5enNqdXZmcmUvNk80K0tmbUlkd1F4TFZteTFrWjlQTTBOOEhWM1lkRlhxMU9PU2YyazJOS1R6T3kzYzgvdGJycnJkdHV0ejdzcTl2bkZwUG83SDQrY1prMmIxYlU5ZS9lN2ZrdWxuN2dERXU4VHhHTUlJSUFBQWdqNEVjam8wYjFQNnFPa21IUFZvTzZZWXlxNGduMkpCaFV4VHovOHJYYnpxVnExa2hzRWEyQ2lRVzloRHczMCsvMzFEL2JvSTIvWnRtMDdVM292bllQZVQ3dEZhYTFIY0tVNW1YTUxZcXBZOFNoMzlUYVZtTlJlL3pzdnNxZWVmTmNOM0ZKOXIxSkhIR0UxanF2aVlsS2ZKZnQrR2xqcjdvZjZXRmVrazMxZFBDOWR4ZTUvNTRYMjJxdWozT2NsOXVwM3ZPZm45MWdxTWVtenFub29xY1lrbjcvZDhVY2JPbVNjV3p1VGFreEtmbXZYcnVZU0VIME9rL1hXZVdncVU4MmFWVjJ5bU96cjRobnJjNnkvcHhIRHA1b1M2MFFYRk9LOU50Rmp0V29kYTVxZXFhUXAyWFBUNTBXZWVxM1dqeVg3dW5qbm9QYzY5dGlLOXUvQmQyUmJ2Qi92dVR5R0FBSUlJSUFBQXVrVktQd29QOEY1YUxyUzJyVmIzUlNSQkUrSis3QUc5cnBhbTJyeW9ZRlgzWHJIMlJsbmREQ3R3MGpId21KZGhkWmdxU0RKaDRJTVlrckhvRllMcFJWVHVoYUFIemg0OEhCTUJSbklhZkNwQVdtcU1Xa0FxSFUxWjU3WnlUUnRLaDM5bEVwTSt0em9jMXNRaTV3ZjVFT0Qya3F1bjlxMWI1eVdtSFJuU0ZmLzVWNlFjOVB6Zzg5dFFWNlhNeWJkOGRDRmdkTlA3K0JxaTJqeGVEb08vVDBwbVNqSXVRWEpuRjVia05lbDQzeDVEd1FRUUFBQkJCQkluMERhRXhDZFdqQlFLT2hwYWxDUjZzQWkyRjFIYldzM3BIUk1HUWxEVEoxT09sVFhRalVyMGpHMXA3aGpVc0toYlkzVjM2cnZvQ3ZoNlRoUytld1Y5clhCZVIrS3FiRkxQTFVMWENwVDdvTDMxTmZDbnBkc0MvdmFvSDNGMUx4NVBYZVhvRXZuekxTdFowcmx2Rko1YlJBWFh4RkFBQUVFRUVDZytBU0tKQUVwdm5CVXZLeXNkZitoWUp2cU82UnJZWEZ4eHFTNTdzRzJ4aDA3TmszYnd1TGlqRWtKUjY4ZnRqVnUwN2FCMncxSmR4QksraEZzYTZ5SzhUK0Z4ZEpLZG9OdGpWVzNvMzc5OEc2VlhkSS9PNXcvQWdnZ2dBQUNVUkg0U1NVZ21rYWpBVktUcG5WYy82bXVTTHFtTEJYWEIwS0Q4anAxcWx2cjFvZTJpNjFSNHhoM1JUb2RVNWFLTXlZTnpsVllUb2NxbDdkdDF5Z3RVNWFLS3liZGFkT09VMG9RZFdnM01TWEFKYm1mRkpQNkpxakFybWxkdWhPWHJtbFl4ZFZYdElzQUFnZ2dnQUFDeFN2d2swcEFndWxYR2lnRlI5ZHU2WnVHRmJ5bno2OGF3R29nRzd2K0pKM1RzSHpHRXJTbG1OcTJhNXh0OGEvdUhLUnJHbGJRanMrdmlpblkxamhvdDFmdk5pVStwc3ptZGQyMnhrRk12WHUxVHRzMHJPQTkrWW9BQWdnZ2dBQUMwUkw0U1NVZ21uN1ZxOWVQMWNyVmxUMTZ0RXhiellyaStHaG9VTjY5Ui9ZcTJFcElkR1U2WGV0YmZNZWxtTFRsY3V5aG1oWGFhYXlrVHNPS25hb1V4S1c3VmlWNUdwWStYem4vbnBxM3FHZDE2OVlvc2YwVTlBMWZFVUFBQVFRUVFLRDRCQXBmOE1Eek9Xc3dwTjJYRWgyYWZwV1pXZGMwVHozMmFOQ2dsaXZpcGpvanNYZEdZcCtqNzVXOHFOWkZPdXBSNUh6dlJEOHJwdDI3OXlac001aFMxdUdIcVVyQisyaEhMRjJaL21UTWpCSVhrMkpXb3RHeFk1TWdIUGRWVmI2MWJrTEZLL1BySjkrTGtQUHJKLzFlYTQwNmRUcTBVVUFRbUFwWDZrN1BXMFBINVJtVDF2amtGWFB3ZnVuOG1reE01Y3VYc3k1ZG1tZHJWbmZpOUhtY08zZDVudWRjSERGbE8xRitRQUFCQkJCQUFJSFFDcFNJQkVSWHhUdDJhbUkvKzFsSE4yRFg5cUk1ai8zN0Q1cVNqWGdEdWN2LzhndnJmWEpiSzEwNjl3MGY3VlNrZWdtcWJENSsvT3lVZCtIS2VWNkpmbFpNN2RvMXNyUE9QaW5QbU9yV3FaRnQrbFh3ZnBkZWNyYWRkRkptbmpGTm5yekF4bjR5MDJ0TUxWclVzM04rMGNWdEFadW9uMVFrVW5kd2NoNlhYSHEydFc3VE1HNU1lcTdXVlV5YnRzaEdqL3JTYTB4Tm05V3hjOC90bG1kTTFhcFZNc1dWODdqd3dqT3NVYVBhZWNha0FvL0RoMC9KK2RJaSsxbWZQYTJWT3UvOEhtNm5MaVhCT1EvOVBhbldpMnFRNUR6KzU3ZW5XSzNqcStVWmt3cUtmdkQrRndtVDY1enZ5YzhJSUlBQUFnZ2dFQjJCRXBHQWFNck9ndm1yM0lEN29vdk9LSER2YUhxUC9pVTZoZzJiWU5PbkwwNzA2eUo1WERFdFhMaktWZUQrODhVL0wvQ0FXb3UyOVMvUm9Uc0pNMmNzU2ZUcklubGNkeWFXTGxubnFyNWZkdGs1Y1pQQnZCcDJkN0F5NnlaOHlxaFJYOXJNR1g3N1NURXRYN2JlVnF6WWFGZGUrVjl4azhHRUoyem03cjQxYmx3NzRWTW1UcHhyVTZZc2ROUHBVdDJDT21Fak9YNmhtRlRJYjhuaXRkYm51dk5kWXBmaktYbitxTTBkOUMvUm9jUjMwR3VqWGNMbUs2WkU1OExqQ0NDQUFBSUlJQkErZ1ZKMTYzYitlL2hPSy9zWmFiQytkKzkrbXpCaHRrMy9jckcxYWwzZlRYbkovcXlDLzZTaWgzZjJmOFZlZVdXa3UxTHJjN0NrbUhRbCt2UFA1OW1reVF1c1pjdjZwbWxJcVI1YnQzNWpkOS8xcWozLy9IK2NXYnBxVVNSN1hwckNObm5TQXBzMGFZRmxadGF6NnRVckovdlNoTS83NXB2djdONTdYN2VubjNyUGR1L2VsN2I2R2drYmpQT0xhVk8vc3ZIajU3aUVvbWFjT3gxeFhwTG5ReXE2K2RDQUlmYklJMi9aZDkvdExaYVlWTlZjMC9qcU42aVZiYUY1bmllZXh5ODFSZkxSUjkrMkJ4OFliRHQyN0RKTnd3cnJvVFU3NWNzZmFSZGMwTHZBaVhKWVkrSzhFRUFBQVFRUUtDa0NKU0lCRWFZRzdHWExsckhWcXpmWnlKSFQzTUJXbGM0TGUraks4ODAzUFdOejVpeDNWNEQxL3I2UElLWjE2N2JZeHlPbnVWMmhOR2d2N0tFcnozMXZmdGErL0hLUmk4bG5RaFY3enVxbjlldTMyc2dSVTYzQzBlWGMybzdZM3hma2U5M0Y2ZHYzV2Z2aWkzbkZIdFBtemR0dHhJaXBWcVpzR1pjd0Z2WXpzMkRCS3J2NXBvRnV5bCtGQ3VVS2ZQZXJJSDU1UFZmOXRIMzdUaHM1WXBwN1dwdTJEUXU5YTlmaXhXdnRsbHVlYzlQakZKUHZ4RGV2T09QOWpnUWtuZ3FQSVlBQUFnZ2c0RWVneENRZ0FZZXVxdW9xK0pneDAyM0xsaDNXcm4xamw1Z0V2OC92cXhaMjYwcjZnQUZ2Mm5mZjdTbndsSnI4M3I4d3YxZE1lL2JzdDdGalo5cmFkVnZkdEt4NGExa1N2YmNXRkQvMzNJZDIvLy85MjNTM1FGZDJpL3RRVERvdnhiUmkrUWJYVHdVNUw3MzJYNitNdEgvODR6WDcrdXR2UXhPVDd2RG9UcHpXT0xScDI4Z3FWanlxUU5SdnZESEczWFhidUhHYmFhQmUzRWVRS09oTzNMejVLMXk5bVVxVktoVG90RFNGOFcvOVhyUzFhemVISXFaa1RwNEVKQmtsbm9NQUFnZ2dnRURSQ0pTNEJFUU11ckt2QWE2bWtIengrWHhyMnVRRVYwazdQeUpkcGIzOXR1ZmRnbDhOOFBVZVlUa1VrM2JoMG9MazhlTm1XYU9HdGQwV3J2bWQzNnBWbTZ6ZjdTL1llKzkrNWw0ZnBwaUNPendMRnF5MHNXTm5XSjI2eDdrdFhQT0xhZjM2cjYzL0hTL2JrQ0dmdWo0S1kweExscXkxc1ovTXNOckhWN2NUNnlkZUR4SEVHa3ozR3pSb3RKVXFWYXBBU1hQd0hrWDFOZWluWlV2WG05YlphSXBadzRiSDU5dmN0bTNmMmozM0RMS1hYaHh1V1c0bnVSL3I3K1Q3NG1KK0FnbElNWGNBelNPQUFBSUlSRm9nOTdaUUpZaER1eUxObXJYVTNubjNzNlRPZXVUSXFhYnRlUFc2NHBxZWxOK0pWcXhZM3BRb0RSMDZMcitudXQrUEdUM2R4bzJiRmVxWTVLMUYzTnFPTnBsRGR4ZysvbmhhNkdOYXZYcXp2ZmJheDhtRVpOT21mZVcyR0E3elowOTNaRFROVEFsRk1zZXNtY3ZzbldFVDNWMFBMV3puUUFBQkJCQkFBQUVFa2hFbzBRbUlBdFMwbmw0OXN4Y2ZUQlM0cWppclhrT1lEMDN4MFoyUTAwNXZuOVJwOXVqWnlpMWUxNVNsTUIrYTZxTUs3c2tjcWoxeDNIRlZRbDFvVWYya0pEYlpmdXJZc2FsYjZCMzJmbEwvbkhaYWNwKzlObTBidU8xOHRaa0NCd0lJSUlBQUFnZ2drS3hBaVU1QU5QQlJwZW4yT1FyMUpRcStlWXNUclY2OTQwenJRTUo2YUlCYXRXb2xhOSsrY1ZLbnFDMWVtelE1d2ZidURYZE1xdnVoQ3U3SkhLcTAzYUxsaWFHUFNYZXJjaGJxU3hSZmpSckh1UFVWWWU0bm5ic0tEWGJ1bkZ3L3FVODdkR3dhNm41SzFCODhqZ0FDQ0NDQUFBTEZKMUNpRXhBTjVsUnBXaFduWXc5dEIvcnAyRmx1UVhaYkhnUUFBQ0FBU1VSQlZIYnM0N3BpM2JWcmM5dTNiMy9zdzZINlhqRXArY2k1SmErU0pzV2tlZmM1ajY1ZFc0VDZib0ZpVXVWMlZYQ1BQWlJzS1NadEhaeno2Tll0L0RFcCtWUHh5NXlIWXRJNmxweUg3Z0JwN1VGWUQzM0d0UFpEaVhyT1E3dkdxWFpJenFObnoxYUYzamtyNTN2eE13SUlJSUFBQWdoRVE2QkVKeUJhUEtzQlVPeWhnZC90dDcxZ2ZmbzhZVGRjLzVTdFdMRWg5dGZXdlh0TE8vTElzdGtlQzlNUEdxQjI2OTRpMnlscGdQN1hmaSs2bUs2Ly9tbTNSaVQyQ2QxN3RIVHJKY0k2dlVmbjFhdFg5dWxYU3FUdXV1dFZGOU0xVno5dWMyWXZpdzNKM1ZuUUhZWXd4OVNqUi9iUG5uWWd1L3Z1MSt5R0c1NnlhNjUrTEZjaHlFNmRtcmtLOEdHTlNZbDU1eTZaMmRaSEtabC80UDUvMjdYWFBHNVhYZm1vYWF2bjJFUEpzcWJMTVEwclZvWHZFVUFBQVFRUVFDQXZnUktiZ0dqQW80RlB4NDVORHNlbks4K1hYakxBMVZlb1hMbUNXNkIreWNVUHVjVy93Wk5hdHFydmRtSUs0elFzRFV5clZhdHNHcWdHaDY0OC8vbC9IM0RiRGl1bWVYT1gyMldYUEdUYStqUTROQVZMbGFuMzd3L2ZYSHpGcEhVM3NkT3Z2cHkyeUM2OTVDSDc0UDNQVFRFdFhyekdycnJxTWRNV3RjR2hPd3N0V29SekdwWmkwbUp5cmI4SkRpVlFmN244WVh0bjJBVDNPeTFRVjB3dnZ6VGljQkpWcTFaVmE5V3FmbWluTENreDc5RzlaUkNTcVY3SjVaYzliSU1IajNVeGJkaXd6YTdyODVRTkhQakI0WmgwcDY1VnF3YTJmMzk0N3lvZURvaHZFRUFBQVFRUVFDQVVBaVZ5RzE3SjdkNjkxM3IyYW1Ybm5OUEZyZWw0L1BGM2ZxZ3F2Y2ZLbHo5VVgwSGJ0NnBtaUxZVzNiaHB1N1ZyMTlqdDJMTjZ6V2FiTVdOeHFMWkNWVXg3OXV5MXpwMHo3VmUvNnVrR2VFOC8vWjZyS3IxejUrN0RkVEFVazZyQ3E3N0dxdFdiM0hRdHhhdHRYcWRNV1JqS21OcTBhV2gvL09QcExpYnRzS1N0VzFVcE82Z0xvcGcwcU5kdVhrc1dyN1cyN1JxNWZsTDlEOVduVU1HOE1CMjZVOUM4ZVQzNzg4VS9kNmYxNnF1ajdCOTN2MmF4dFQyMDZGNEwxVC83Ykc2Mm1pSGZmYi9IeG8yYjdUWWFDRk5NU3NpVjlGMTUxUy9kbENwdGdmejMvcStZaW1RRzlVcUNtaUdUSnMyMzJiT1h1VFV0U2lEMzd0dHZZOGJNQ0YxTWVmbXlEVzllT3Z3T0FRUVFRQUNCb2hYd21vQm9rS2xCV1dFclNNZFNIRGh3d0s2OTlueFhKK0s2NjU2eVVSOVBjd1BhWUpBVVBEZW9yekY3MWxMN2JPSmNON2c5b1hZMVY5RTZIVnZ4cGpNbTNjRzQrSkt6M0NMMEc2NS8yajc4OEF1TFY2OGtpR25ldkJVMlljSWNhNTVaejVvMHFlUHFtd1J4cC9JMW5URXBXZEpBdlhidDZ0YTM3MEI3KyszeGNldVZCTFVvVk9CdjNLY3pYVHk2QXpMOFA1UGRuWjFVUHpPS1NmL1MwZWNhclAvMmQ2ZTY5Ukw5Ym4vUjNibUpWOXNqaUVrMVE3UmRzdTVTS1FsV05YVzlSNm94cVk5MUp6QmRNZjNxZ2w2bVpQSE9PMTl4ZDI3TU10em5ML2F6Rk1TMGZQa0dHejE2dXFzWm92VTYydUphaVhJNnppVmRNY1dlZDg3dlNVQnlpdkF6QWdnZ2dBQUMvZ1M4SlNBYVZEUnFWTnVxVmEvc3J0YW5NbERSUUZKVGxXb2VWOVZWeWw2MWN1UGhxN1NKNkhRVlhUVU9objgweGFwWFA4WlZVZCsyYldkS0F5YkZwRUdsZHVKYXQyNnI1VXgrRXAxTHZNY1ZVK1hLUjF2OStyWHMzbnNIbVFhdHV2S2MxeUJWTWVrdXdVY2ZUWFlMOGJkOS9hMXQzZnB0eWpIVnFWUEQ2dFk5enRhdTNaSnlURnJIMGJSSkhidnYza0UyYjk1S041VW52NWgwZDJUNDhDbFc0ZWh5cGpVSXVydVQ2dWRGdTFBMXk2eHJxMVp1U2lrbTlkMVI1Y3E2NldFREJyeHAwNmN2VGlLbTB2YnR0OSs3UWJwaVYxS1dqcy9Mc2NkV3RNem05ZElTazdaK2J0MjZnVDMyNk50SjFjclI4Ny8vZnE5TC9QZjlNUFZQaTlSVC9SczQ1cGdLTGdsU2djMVUranplMzFqc1l5UWdzUnA4andBQ0NDQ0FnRitCakI3ZCszalpsbWZuenUrdFQ1L3o3Y2h5Wld6QWcyKzZRVnNxb1pZNjRnamIvY04ydWdVcGdxYUJ2dTQwbEQvcVNEdHdNTFhhR2J0MjdYWjNMTFJ0N04vdi9GZStTVkIrOFlZbHB0LzkvbFJyMjdhUjNYckxjMm1KU1ZOME5PQXJybjVTRXZQTGM3dTdlakUzMy95TTIybzJ2NzdJNi9jWkdSbnVNNlNZTkJEWFhiMWtqblIrOWhUVDZhZDNzUFBPNzJIWFh2TkVyanNWeVp4UDdIT0NtUFMzb2J0dUJUbDBOeWNkZjArS1NRdjdMN3p3REx2NjZzY0w5SGtweVBucXVicDRvQVR1MzRQdnlMV0xYa0hmaStjamdBQUNDQ0NBUU1FRVNoZnM2WVYvdGhhNGR1bmEzSTQ2cXF4TFBqUVlTK1VLcDVLSGdneG9nek5YbS9xWGF2S2g5OVBWWGkzYVBhNW1WYXRVc2J5YkMxL1NZOUlWZW0zcnE2dmh1c3VreERIVm1BNlpCejJRM05kRHIwbFBQeWxSMFBiTG5iczBjM2UvZE9lck1KK2Q0TXlESW9TbFNsblN5WWRlbTg2WTlQZHpVdWRtcGdLSHVnT25CZUxwaWFuZysxSW9ZVW5IMzVOaWF0K2hpWFhvMk1RVk9GeTZkRjJCazZHZ2ovaUtBQUlJSUlBQUF1RVY4SktBNkFxcDZndG90eVlOd2hvMFBONFd6RitaMHNDMnVFbDFCYlZPbmVyV3RGa2RkMFZkVTJHbVRsMlk4dFgxNG94TE1Xa3dxK1JEdFZXMDBIcml4RGtsT2lZTmFwVklhVzJEaXV5cGFLV200YVV5V0MvT1BsTGJpa2s3aXluNTBOK1RCdTN2dmpPeHhNZWs2WHBLRkhXb254WXVYRlhrQ1lqV2t1bklZaGN2NThEL0lJQUFBZ2dnNEVQQVN3S2lYWU0wc05CZ1NZZSsxNkx3Z2s3MThBR1NiQnNxcnFldFpUV29kVEYxYTJIYUhhZ2tINHFwMVEvSmgrSlE0Ynp4NDJlWDVKRGNscmV0Vzdjd3JRSFJvVG93U2tCSzh1R0tWWFpvN0xhVFZoeTllcmEyOTkvN3JDU0g1S2EwWldiV05SVjNkREgxYW0xRGg0d3JzcGlVZ083ZC9vM04rdTBsUmRZR2I0d0FBZ2dnZ0FBQzhRVzhKQ0NhZnFXQlgzQjA3OWJDWHYzWHg4R1BKZktycGlwMWp5bEVwNlRxK2FPUFN0dE9TOFdCb3BoT1BybnQ0YWFWWUdtYlZkM0JDcExIdzc4c0lkOW8rcFVTcWVEUVhRUFZqOUZDOTVJYWsrNkFhT2VwNE5EZEFzV2tEUWhLNnAyZFF4Y3Bmb3hKZCtGMGgzSHQycTFGR3RPRytVdXMzTUY5QVNWZkVVQUFBUVFRUU1DRFFKRW5JQnE4YXFlbzVpM3FIUTZuZVlzVDNaUXNiYmxhRXUrQ2FLclNDU2RVZDFPVmdxQjA1VFl6czU1Tm43N284RjJSNEhjbDRhdGkwdTVncW13ZEhJcXhSY3NUYmRJWDgwdGtUQnFvVjZsU01WdE11aE9pN1gwLy9YUm1pWTJwY3FVS3JsSjgwRSthTHRlaFkxUDc4SU12aW5Td0hyUlhGRjlWMkxGN2p4OHZVdWpPWW9jT1RXejU4dkZGR2xPcGNrZGFxWU9saWlJazNoTUJCQkJBQUFFRUVnZ1VmTVZwampmU0lDK3ZmN3F5MmVta3B0a0dlN3J5M0xsTHBpc21tTmRyOWJ2aU9QSTdKeFVNMUx4N0RmeGlEOTB4MEJhcitiMCs5alcrdnMvdm5CU1Qxa21vc25YczBhdFg2M3pqQ1dzL3FWaWxLbzhya1lvOWRFY2tQNDh3eDlTa2FSMVhOREEycHA0L1ZHWFBMNjdZMS9qNlByOXowdTVYdWtpaE5XS3hSNi9lYmR3MjFQbTlQdlkxZkk4QUFnZ2dnQUFDNFJkSTZRNklkb0hTbFVzTjlPSWRXUWV6M0RTWFUwOXBsK3ZYdlh1MXRpRnZmbXBIWkdSWXhoRVp1WDZ2QjhxVksrdmVXMXVEK2pvVWt4S0w3NzdiazdCSk42Mm41NC9UZW9JbjlqNjVqYjMrK21oVDNIbkZwQ1JGOC9oOUhkcmVONjkrMG5ua25Lb1VuSnVTS3QwWlVSOG5tcktrZmlxT21QTHJKMzF1WXFkZkJURjE2ZExjTGJaWGJZNlNHRk9QSDVLTklCNTk3ZGl4aVZzVHNuWHJOd2xyY2FpZk5KalhnTi9Yb2UxOXExUTUybmJ2M21jSEUyeDdyWDdxM2J0TnJyNW8yN2FoTldod3ZLMWZuN2pHVHBreWgvNFQ1ak1tWDNhMGd3QUNDQ0NBd0U5Vm9OQjFRRFNRMFRTSnE2ODUxMDQ1cGEycEpvWUdzVGtQclN1b1ZldllYSU1MdlY0RGkwU3ZVUkUrVmZsKzhvbDNVOTRLTnVjNUpmcFo1NlFwWVpkZGZvNmRkZFpKYnRDa096anhEczI1enpsOUxKbVl2dmhpdmozMTVMdVdhaEhFZU9jVTd6R2RVOWt5cGUxUC8zdW0vZmQ1M1FzY2s5NXovZnF2TFo2RCtsYjlOR3ZtTW52NDRTRzJaY3MzdWZvNTNqbWw0ekVOYkgvL2g5UHMxNy91N1pLZmVPZW5kcXBYcjV6dDdsdlFkbjR4cVdqaUl3OFBMZkkxQ01INUJGLy81N2VuMkc5K2M3SkxGQW9ha3dvMnhyc1lFUFRUb2tWcjdKOFBEVFVWK2ZPMVZrU2ZQOVVxK2RPZnpuUWh4anMvSlNiYXFVeEpjczRqVVV4NlhzV0tSOW5LRlJ2dG4vOGNhb3NYcnkxd1RPVU83cmZMTjA4M2ZlVkFBQUVFRUVBQUFYOENoVTVBZElyQjRQYmlTOCsyaXk0Nkk2MW5QV1RJcC9iTTArKzdhc3UrQmt0QlRMb3FyZ0hUbnkvK2VWb0gxTU9HVGJDbm5uelBKV3ZGRVpNR3Q1ZGRkazZ1eENtVmpsTVY5aWNlZjhjbFZMNWowbmxmOE92ZWR2WFY1NlkxcGxHanZyUkhIM25MKzZKdS9UMHBJZi9sTDd2YURUZGVFRGR4S214ZlRadzQxeDU4NE4rdVhrak94TG13NzVuczY3Uys2R2RuZHJTYmIvNU5ybW1MeWI1SHZPZE5ucnpBSG54Z3NLMWV2YmxRL1U4Q0VrK1Z4eEJBQUFFRUVDaDZnVkoxNjNiK2UyR2IwWlZWVForWU1HRzJ6WjI3L0lmNkVSVUsrM2J1ZGJyaStkZCtMOXFnUWFOTlY3azFKY3Jub1pnMEVQejg4M2syWThZU2E5VzZ2cXU1a01vNWFGck0zWGU5YWkrOU5OeTlUWEhGTkdYS1Fwc3k5U3RyMmJKK3JyVWVCWTN2bTIrK3MzdnZmZDBHUHZPQnF5cnRNL25RdWFxZjlHL2ExSzlzMHFRRmJnTUEzZTFJNVZEUnhZY0dETEVubjNqSDl1elpYK0FyNnFtMEhjU2s1SGZtekNVMmZ2d2N0eVZ0elZwVlUzcGJUVTE2OU5HMzdaOFBEYkh2djkvbktyZW45SWFGZUxGaW1qdG51WTM5WkliVmIxQXIxNXFjZ3I2bE5yWjQrcW4zN0lIN0I1cytoNFZOcUVwbkhiUU8zNjAzZmVWQUFBRUVFRUFBQVg4Q0tTVWdPazBOQXN1V0xXUExscTYzVHo2WjRiWURWZEhCd2h5NlNudnpUYy9ZdkhrcjNIUU12WGR4SEVGTXExZHZzcEVqcDdscFBJMGJaMThnbSt4NTZTcHQzNXVmdFMrL1hCU0ttTmF0MjJJZmo1eG1WYXRXdEtaTjZ5UWJScmJuZlRsdGtldW55Wk1XdUpnU3JhUEk5cUlpK2tHZlBVM2xHekY4aWpzWDdYQlZtR1BCZ2xWMjgwMERYZDBUVFNzcjdwZzJiOTV1STBaTXRUSmx5N2lFc1RCL0M1cVdkTXN0ejlub1VWKzZxWExGSGRQMjdUdHQ1SWhwcm52YXRHM28vdHRSMEw1YXNXS0QzWHJMY3paOCtCU1hlQVJyUUFyNlBubytDVWhoMUhnTkFnZ2dnQUFDcVF1a25JQUVwMUMyYkduYnRXdVBqZnA0bXUzNFpwZmIralRad1VGd1JYUEFnRGZkNHUrZ3VGL3czc1gxVmVldnhiTmp4a3kzTFZ0MldMdjJqVjJ5bGN6NTZDN0tjODk5YVBmLzM3L2RWZHJ5NVE4VkxFem10VVg1SE1Xa3EvdUthZTI2clc2cjAyU3ZJQ3VtZjcweTB1NjVaNUJwTUJtbW1IUnVZOGZPdEJYTE43aCtLc2k1dmZIR0dMdXoveXUyY2VNMk4xQXZTdjlrMzF2OWxKV1Y1ZTR1YXJ2cU5tMGJ1VFVQeWI1ZTAvMysxdTlGVzd0MmMyaGlDdTc4NmU3aXZQa3JDbnpIOVAzM1A3ZCt0NzlvSzFkdWRERVZKaW1MOVNNQmlkWGdld1FRUUFBQkJQd0pwQzBCMFNuckNxc0dUcnJhUDNYYUl0TVdydmtOQkRXRm9zKzFUN2dybW5wdU1FanhSNUIzUzBGTW1oYnp4ZWZ6WFVGRkxYN042OUMwbHh0dmZNYmVHVGJSVFhtUlNaZ094YVNFVWROaXhvK2JaVjI3dG5BRkIvTTZSeVdKdDkvMmdnMGUvSW5yNDdERkZOeTFXckJncFkwZE84TTZkbXFXN3pRekpTMTMzUEdTUzZwS2xTcVZkSEtabDFNNmZ4ZkV0R1RKV2hzemVycExGcE9aWm5iMzNhL1pzd00vTUxPTVFrOVBTbWNjc2U4VnhLUTdwbHByMDd4NVBiY2pXZXh6NG4zL3dQMy9kaHRTYUkxTXNnbHp2UGVKZll3RUpGYUQ3eEZBQUFFRUVQQW5rSElka0hpbnFzcm42OWR0amZlcnVJOXQyUEMxNlRWaFBuUlhSdWVaN0xGbTlXWTNVQy9PYVMvNW5hdGkwbTVReVd4enJNUnc3ZG90b1k5Sk95bHQyclFqcVpqVU4ydldiSEdKYzVqN1NWUENOQ1hydTEyNzgrdFM5M3Y5N1duOWxPOTFPVW1kM0E5UFVreTZxL2g5Z2kyOGM3N1g1czA3UWg5VHpuUG1ad1FRUUFBQkJCQ0lMMUFrQ1locVhIVHAyanpmSzlBNkpkVnk2TjY5cGRlNkdQRXA4bjVVTWFreWM2MGtGZ1ZyWUgvcXFlM2libDJiZHl0K2Y2dVkybmRvbkt1b1hieXowQUJkZFU0U2JRMGI3elhGOFpqdVByVm9VYzh5TStzbTFmeVpaM1owbXc0azllUmllcEx1UG1rTlV0dDJqWkk2Z3pOKzFpR3A1eFhuazdRelZxTkd0YTFEaDhaSm5jYXBwK1d1SlpUVUMza1NBZ2dnZ0FBQ0NJUk9vRWdTRUUyekNDb3pKeE54VVBFNG1lY1cxM00wOVNOZVVidEU1Nk9rS216VGxIS2VxNllnZGV2V0l1ZkRDWDlXc2Jpd3JNOUpkSktLcVVlUFZvbCtuZXR4RlNXc1dMRjhxSk1RSlgzZGU3Uk1lbUc4aWtkV3FWSXgxREVkU3VnYkovMTU2dGl4cWR2Z1F2M0xnUUFDQ0NDQUFBSWxXeUR0Q1lpdWJLcElueW96eHg0YU9MencvRWYyNUpQdjVob1l0Vzdkd0czTnFkZUc4ZEM1YTBEWHFWT3pYS2YzNnF1ajdQSEhocG11VXNjZXpWdlVzeE5Qck9tMnFJMTlQQ3pmSzZiS2xTckVUVUMwS0ZzYkF1U3NMdDJreVFtbUhjNXl4aHFXbUhRZW1vS2x1Mjg1RHkzS3Z1L2UxOTJHQUxHL2E5Q2dsalZyVmpmVWQrQTBQYkZybDl3eHFRYUwxbnRzMi9adGJFanVieW16ZWJoajBwUys3bkVTUmEwTDZkLy9GZE4yM0xGSGpSckhXSnMyRFVQZFQ3SG55L2NJSUlBQUFnZ2drRmdnN2F1amRXV3pWYXNHYnNBZU5LdDFCbHBFT203Y0xKZDh6SnU3d3Y3NnR6OGNyZ2VnYVZqdE96U3hkOStaR01wNTY0cEpWNVZqcDErcHRzZi8zZmVHMjAxS2cvbFpzNWJhSGYwdmRFbUg0dGFkZ2s0bk5UVXRJQTdqWEh6RnBBR2RrcVRnMEVEMm9ZZUcyUENQcHJnMUZIUG5yckRiYnZ2ZDRlbE1tb2JWdVV1bXEvbVNyb1hBUWR2cCtLckVLTE41UFZPaUZCemE1RUIxTU41Lzd6TlhNWDNPbk9YV3I5L3ZyVlhyQnNGVHJHdlg1aloxNnNMRFA0ZnBHOFdrcEs5bHEvcUhUMHVKb1pMZW9VUEh1WmkwbVlCaWlwMmlwUTBnUHY5czN1SFhoT2tiWFdpb1U2ZTZ0VzNiOFBCcEtVNHRuRmY5SDFWTG56MXJxZDNlNy9mV3VYUG00ZWQwNjk3Q1B2NzQwRGEraHgva0d3UVFRQUFCQkJBb2NRSnAzUVZMMFd1NmlDcUlCM1V6UGgwN3kyN3ArNnpObjcvU1haMHVWNjZzTFYrK3dlMkFveUpyUWMwUTFRSWJOV3BhS0tjdDdkMjczeTY4NkF4WDdFNHhxcmJIVFRjK1l6Tm5MajBjMDVvMW0xM05rQ3BWamo1Y1gwTlhlVWVPbUJxNm5iMFVnd1o4di83TnlTNEowYytxN2RHMzc3T21Zb1c2aTZCK1VzMFFuWC9sWXlvY2pyMXNtZEp1RUtocGRtRTdOSEQ5Ny9ONnVHUlI1elpuOWpKWE0yTGloRGx1MjFZbGhSczNmdTNPWC9FcFVkYWg3MGVPbk9xUzQ3REZwWmpPT3J2ejRTbU5xbGR5UzkvblhNMGRMZVJXVEZyTXJib1lSeHh4aE52YVZqSG9kMEVpR2NhWVRqKzl2WjEyZW52bnYyelplcnZ0MWg5cmU1UXZYODYyYlR0VU0yVC9nUVBXcmwxalZ6T2tVcVVLcm9hTlBydnBpSWxkc0J3Ly80TUFBZ2dnZ0lCM2diUW1JTG9UY095eGxlejY2My9sdGpUVmxlZEhIbm5MVGVXSlhUdWdMV0MvLzM2dnF4bWlxKzZhMmxTelpoVTNNUHoyMisrVG51dnVRMHN4YVRCMy9mVVh1RG9NbWtMMjRBTnZtczR6ZG90aHJmZFF6UkJ0QWJ0aDR6YTNZTDEyN1dxdUNOejI3YnRDRjVQNm84OTE1N3M3VlpvYWQ5OTlyK2VxN2FHWWRMVmE5VFZXcmQ3aytxbmVpY2ZaNk5IVFRic1NoVy9MNUZJdUptMVZxNmx4LzdqN3RWeTFQUlNUK2xSMzQ1WXNYbXNkT2pheHVuVnIyR2NUNTdwZHpzSVdVMWFXMmRWWG4rdTJxaDB5NUZQcmY4ZkxydkNpUHBQQm9YTld6WkRQUHB0clFjMFEzV0dZUEhtaHFaaG0yTllpSFRod3dQNXl4UytkdTJwN2FIdm5WYXMyWmF2dEVmVERwRW56YmZic1plNXVpZjZlZEtkeDZkSjFhWW1KQkNUNEJQRVZBUVFRUUFBQnZ3SnBUVUQyN05scko1L1MxbDJGdmU2NnAxeUNvYWs2OFFaQW1zNmp4NmRQWDJ5VEppMndMbDB5M1ZWUFZVR1A5M3kvTEQrMnBwZzBuVVdMbFhYWDQ4TVB2MGhZMnlPSVNkTkhKazZZYTFvNHF6dENxb3VpcENzc2gyTFMxQmIxMWUyM1AyOXZ2ejNlbWNkelYwdzZkL1hMMkU5bXVJSjRHaHpxTGxDNFl0cG5yVnMzdExQT09zbnUrdnUvVE90WUV0WDIwTlZ6VlZCZnRHaU5peWt6czU1VnJGVGVKazZjRzdxWU5LWHN2UE43MnYzM3YyRXZ2elRDSmJJNjk1eEhFRk5RTTZSeDQ5cFc2L2hqWGFJVnIxOXp2dDdYejBwb05lM3Y5Mzg0elYyY0dQak1CNllrSzk2VXZpQ200STVwL1FhMVRBbXdhcUtrSXlZU0VGKzlUanNJSUlBQUFnaGtGOGpvMGIxUFZ2YUhDditUcml4clc5Zmx5OWE3SzgreGR6M3llbGZOYWE5ZS9SaHIyT2g0bS83bDRsRGRMZENBcVYyN1JxNmk5THAxVzVQZXRVY3hWYTU4dEdreGNCaGowc0wvclZ0M3VPbHdzVmZUOCtvblRYM1JjN1YyUkVsVm1BNzFrN2JmMVowcERjSUxFcE9tWUxWdjM5Z2x3N3FURUpaRE1UVnRWc2YyN3RsbkN4ZXVjbFBqa2prMzlaT1NSSzFibWpsamlSMDRHSjZkb3hTVGtpTWRjK2N1VHpvbXZVNkhMbFJvSFkvV01LVjZsRHU0M3k3ZlBOMzBsUU1CQkJCQUFBRUUvQW1rTlFGUjhUT3RsOUJSMElYWFNsNjAxYTJ1cW9kcEVKaHFUQ3J5RisvcXJyOHV6dDBTTVdVMzBXY3ZqUDJrc3d6K0xncno5L1JUaTBrZVNxN1M5ZmRFQXBMOTc0Q2ZFRUFBQVFRUThDV1ExbmxCU2h3S09sQUtBdFZVbjFLbExGVEpoODR0OVpqU3Z0TnhRRmJvcjhTVW5lN1FaeTk4L2FTekRQNHVzcDl4L2ovOUZHTlMxT2xLUHZJWDVCa0lJSUFBQWdnZ1VGUUM0UngxRlZXMHZDOENDQ0NBQUFJSUlJQUFBZ2dVcXdBSlNMSHkwemdDQ0NDQUFBSUlJSUFBQXRFU0lBR0pWbjhUTFFJSUlJQUFBZ2dnZ0FBQ3hTcEFBbEtzL0RTT0FBSUlJSUFBQWdnZ2dFQzBCRWhBb3RYZlJJc0FBZ2dnZ0FBQ0NDQ0FRTEVLa0lBVUt6K05JNEFBQWdnZ2dBQUNDQ0FRTFFFU2tHajFOOUVpZ0FBQ0NDQ0FBQUlJSUZDc0FpUWd4Y3BQNHdnZ2dBQUNDQ0NBQUFJSVJFdUFCQ1JhL1UyMENDQ0FBQUlJSUlBQUFnZ1VxMERwblR1L0w5WVRvSEVFRUVDZ09BUjJaV1RZdnAyN3JQVEIvY1hSUEcwaWdBQUNDQ0FRV1lIU2wxeDZkbVNESjNBRUVJaTJRSXR2VzFqWnJBT1daUm5SaGlCNkJCQkFBQUVFUEFwa1pHVmxaWGxzajZZUVFBQUJCQkJBQUFFRUVFQWd3Z0tzQVlsdzV4TTZBZ2dnZ0FBQ0NDQ0FBQUsrQlVoQWZJdlRIZ0lJSUlBQUFnZ2dnQUFDRVJZZ0FZbHc1eE02QWdnZ2dBQUNDQ0NBQUFLK0JVaEFmSXZUSGdJSUlJQUFBZ2dnZ0FBQ0VSWWdBWWx3NXhNNkFnZ2dnQUFDQ0NDQUFBSytCVWhBZkl2VEhnSUlJSUFBQWdnZ2dBQUNFUllnQVlsdzV4TTZBZ2dnZ0FBQ0NDQ0FBQUsrQlVoQWZJdlRIZ0lJSUlBQUFnZ2dnQUFDRVJZZ0FZbHc1eE02QWdnZ2dBQUNDQ0NBQUFLK0JVaEFmSXZUSGdJSUlJQUFBZ2dnZ0FBQ0VSWWdBWWx3NXhNNkFnZ2dnQUFDQ0NDQUFBSytCVWhBZkl2VEhnSUlJSUFBQWdnZ2dBQUNFUllnQVlsdzV4TTZBZ2dnZ0FBQ0NDQ0FBQUsrQlVoQWZJdlRIZ0lJSUlBQUFnZ2dnQUFDRVJZZ0FZbHc1eE02QWdnZ2dBQUNDQ0NBQUFLK0JVaEFmSXZUSGdJSUlJQUFBZ2dnZ0FBQ0VSWWdBWWx3NXhNNkFnZ2dnQUFDQ0NDQUFBSytCVWhBZkl2VEhnSUlJSUFBQWdnZ2dBQUNFUllnQVlsdzV4TTZBZ2dnZ0FBQ0NDQ0FBQUsrQlVoQWZJdlRIZ0lJSUlBQUFnZ2dnQUFDRVJZZ0FZbHc1eE02QWdnZ2dBQUNDQ0NBQUFLK0JVaEFmSXZUSGdJSUlJQUFBZ2dnZ0FBQ0VSWWdBWWx3NXhNNkFnZ2dnQUFDQ0NDQUFBSytCVWhBZkl2VEhnSUlJSUFBQWdnZ2dBQUNFUllnQVlsdzV4TTZBZ2dnZ0FBQ0NDQ0FBQUsrQlVoQWZJdlRIZ0lJSUlBQUFnZ2dnQUFDRVJZZ0FZbHc1eE02QWdnZ2dBQUNDQ0NBQUFLK0JVaEFmSXZUSGdJSUlJQUFBZ2dnZ0FBQ0VSWWdBWWx3NXhNNkFnZ2dnQUFDQ0NDQUFBSytCVWhBZkl2VEhnSUlJSUFBQWdnZ2dBQUNFUllvL2UyaVpSRU9uOUFSUUFBQkJCQkFBQUVFRUVEQXAwREdCNDA3Wi9sc2tMWVFRQUFCQkJCQUFBRUVFRUFndWdLbEQrN2RHOTNvaVJ3QkJCQkFBQUVFRUVBQUFRUzhDcFRPS0ZYS2E0TTBoZ0FDQ0NDQUFBSUlJSUFBQXRFVllCRjZkUHVleUJGQUFBRUVFRUFBQVFRUThDNUFBdUtkbkFZUlFBQUJCQkJBQUFFRUVJaXVBQWxJZFB1ZXlCRkFBQUVFRUVBQUFRUVE4QzVBQXVLZG5BWVJRQUFCQkJCQUFBRUVFSWl1QUFsSWRQdWV5QkZBQUFFRUVFQUFBUVFROEM1QUF1S2RuQVlSUUFBQkJCQkFBQUVFRUlpdUFBbElkUHVleUJGQUFBRUVFRUFBQVFRUThDNUFBdUtkbkFZUlFBQUJCQkJBQUFFRUVJaXVBQWxJZFB1ZXlCRkFBQUVFRUVBQUFRUVE4QzVBQXVLZG5BWVJRQUFCQkJCQUFBRUVFSWl1QUFsSWRQdWV5QkZBQUFFRUVFQUFBUVFROEM1QUF1S2RuQVlSUUFBQkJCQkFBQUVFRUlpdUFBbElkUHVleUJGQUFBRUVFRUFBQVFRUThDNUFBdUtkbkFZUlFBQUJCQkJBQUFFRUVJaXVBQWxJZFB1ZXlCRkFBQUVFRUVBQUFRUVE4QzVBQXVLZG5BWVJRQUFCQkJCQUFBRUVFSWl1QUFsSWRQdWV5QkZBQUFFRUVFQUFBUVFROEM1QUF1S2RuQVlSUUFBQkJCQkFBQUVFRUlpdUFBbElkUHVleUJGQUFBRUVFRUFBQVFRUThDNUFBdUtkbkFZUlFBQUJCQkJBQUFFRUVJaXVBQWxJZFB1ZXlCRkFBQUVFRUVBQUFRUVE4QzVBQXVLZG5BWVJRQUFCQkJCQUFBRUVFSWl1QUFsSWRQdWV5QkZBQUFFRUVFQUFBUVFROEM1QUF1S2RuQVlSUUFBQkJCQkFBQUVFRUlpdUFBbElkUHVleUJGQUFBRUVFRUFBQVFRUThDNUFBdUtkbkFZUlFBQUJCQkJBQUFFRUVJaXVBQWxJZFB1ZXlCRkFBQUVFRUVBQUFRUVE4QzVBQXVLZG5BWVJRQUFCQkJCQUFBRUVFSWl1UU9rRHUzZEhOM29pUndBQkJCQkFBQUVFRUVBQUFhOENHZXRIZlpybHRVVWFRd0FCQkJCQUFBRUVFRUFBZ2NnS1pHUmxaWkdBUkxiN0NSd0JCQkJBQUFFRUVFQUFBYjhDckFIeDYwMXJDQ0NBQUFJSUlJQUFBZ2hFV29BRUpOTGRUL0FJSUlBQUFnZ2dnQUFDQ1BnVklBSHg2MDFyQ0NDQUFBSUlJSUFBQWdoRVdvQUVKTkxkVC9BSUlJQUFBZ2dnZ0FBQ0NQZ1ZJQUh4NjAxckNDQ0FBQUlJSUlBQUFnaEVXb0FFSk5MZFQvQUlJSUFBQWdnZ2dBQUNDUGdWSUFIeDYwMXJDQ0NBQUFJSUlJQUFBZ2hFV29BRUpOTGRUL0FJSUlBQUFnZ2dnQUFDQ1BnVklBSHg2MDFyQ0NDQUFBSUlJSUFBQWdoRVdvQUVKTkxkVC9BSUlJQUFBZ2dnZ0FBQ0NQZ1ZJQUh4NjAxckNDQ0FBQUlJSUlBQUFnaEVXb0FFSk5MZFQvQUlJSUFBQWdnZ2dBQUNDUGdWSUFIeDYwMXJDQ0NBQUFJSUlJQUFBZ2hFV29BRUpOTGRUL0FJSUlBQUFnZ2dnQUFDQ1BnVklBSHg2MDFyQ0NDQUFBSUlJSUFBQWdoRVdvQUVKTkxkVC9BSUlJQUFBZ2dnZ0FBQ0NQZ1ZJQUh4NjAxckNDQ0FBQUlJSUlBQUFnaEVXb0FFSk5MZFQvQUlJSUFBQWdnZ2dBQUNDUGdWSUFIeDYwMXJDQ0NBQUFJSUlJQUFBZ2hFV29BRUpOTGQ5aTFldVFBQUNIOUpSRUZVVC9BSUlJQUFBZ2dnZ0FBQ0NQZ1ZJQUh4NjAxckNDQ0FBQUlJSUlBQUFnaEVXb0FFSk5MZFQvQUlJSUFBQWdnZ2dBQUNDUGdWSUFIeDYwMXJDQ0NBQUFJSUlJQUFBZ2hFV29BRUpOTGRUL0FJSUlBQUFnZ2dnQUFDQ1BnVklBSHg2MDFyQ0NDQUFBSUlJSUFBQWdoRVdvQUVKTkxkVC9BSUlJQUFBZ2dnZ0FBQ0NQZ1ZJQUh4NjAxckNDQ0FBQUlJSUlBQUFnaEVXb0FFSk5MZFQvQUlJSUFBQWdnZ2dBQUNDUGdWSUFIeDYwMXJDQ0NBQUFJSUlJQUFBZ2hFV29BRUpOTGRUL0FJSUlBQUFnZ2dnQUFDQ1BnVktMMTZ5SHQrVzZRMUJCQkFBQUVFRUVBQUFRUVFpS3hBeHJBYW1WbVJqWjdBRVVBQUFRUVFRQUFCQkJCQXdLdEE2ZEpIVi9EYUlJMGhnQUFDQ0NDQUFBSUlJSUJBZEFWWUF4TGR2aWR5QkJCQUFBRUVFRUFBQVFTOEM1Q0FlQ2VuUVFRUVFBQUJCQkJBQUFFRW9pdEFBaExkdmlkeUJCQkFBQUVFRUVBQUFRUzhDNUNBZUNlblFRUVFRQUFCQkJCQUFBRUVvaXRBQWhMZHZpZHlCQkJBQUFFRUVFQUFBUVM4QzVDQWVDZW5RUVFRUUFBQkJCQkFBQUVFb2l0QUFoTGR2aWR5QkJCQUFBRUVFRUFBQVFTOEM1Q0FlQ2VuUVFRUVFBQUJCQkJBQUFFRW9pdEFBaExkdmlkeUJCQkFBQUVFRUVBQUFRUzhDNUNBZUNlblFRUVFRQUFCQkJCQUFBRUVvaXRBQWhMZHZpZHlCQkJBQUFFRUVFQUFBUVM4QzVDQWVDZW5RUVFRUUFBQkJCQkFBQUVFb2l0QUFoTGR2aWR5QkJCQUFBRUVFRUFBQVFTOEM1Q0FlQ2VuUVFRUVFBQUJCQkJBQUFFRW9pdEFBaExkdmlkeUJCQkFBQUVFRUVBQUFRUzhDNUNBZUNlblFRUVFRQUFCQkJCQUFBRUVvaXRBQWhMZHZpZHlCQkJBQUFFRUVFQUFBUVM4QzVDQWVDZW5RUVFRUUFBQkJCQkFBQUVFb2l0QUFoTGR2aWR5QkJCQUFBRUVFRUFBQVFTOEM1Q0FlQ2VuUVFRUVFBQUJCQkJBQUFFRW9pdEFBaExkdmlkeUJCQkFBQUVFRUVBQUFRUzhDNUNBZUNlblFRUVFRQUFCQkJCQUFBRUVvaXRBQWhMZHZpZHlCQkJBQUFFRUVFQUFBUVM4QzVDQWVDZW5RUVFRUUFBQkJCQkFBQUVFb2l0QUFoTGR2aWR5QkJCQUFBRUVFRUFBQVFTOEM1Q0FlQ2VuUVFRUVFBQUJCQkJBQUFFRW9pdEFBaExkdmlkeUJCQkFBQUVFRUVBQUFRUzhDNUNBZUNlblFRUVFRQUFCQkJCQUFBRUVvaXRRT3V2QWdlaEdUK1FJSUlBQUFnZ2dnQUFDQ0NEZ1ZhQjBtVW9WdlRaSVl3Z2dnQUFDQ0NDQUFBSUlJQkJkZ1l6djFtM0lpbTc0Ukk0QUFnZ2dnQUFDQ0NDQUFBSStCVEt5c3JKSVFIeUsweFlDQ0NDQUFBSUlJSUFBQWhFV1lCRjZoRHVmMEJGQUFBRUVFRUFBQVFRUThDMUFBdUpiblBZUVFBQUJCQkJBQUFFRUVJaXdBQWxJaER1ZjBCRkFBQUVFRUVBQUFRUVE4QzFBQXVKYm5QWVFRQUFCQkJCQUFBRUVFSWl3QUFsSWhEdWYwQkZBQUFFRUVFQUFBUVFROEMxQUF1SmJuUFlRUUFBQkJCQkFBQUVFRUlpd0FBbEloRHVmMEJGQUFBRUVFRUFBQVFRUThDMUFBdUpiblBZUVFBQUJCQkJBQUFFRUVJaXdBQWxJaER1ZjBCRkFBQUVFRUVBQUFRUVE4QzFBQXVKYm5QWVFRQUFCQkJCQUFBRUVFSWl3QUFsSWhEdWYwQkZBQUFFRUVFQUFBUVFROEMxQUF1SmJuUFlRUUFBQkJCQkFBQUVFRUlpd0FBbEloRHVmMEJGQUFBRUVFRUFBQVFRUThDMUFBdUpiblBZUVFBQUJCQkJBQUFFRUVJaXdBQWxJaER1ZjBCRkFBQUVFRUVBQUFRUVE4QzFBQXVKYm5QWVFRQUFCQkJCQUFBRUVFSWl3QUFsSWhEdWYwQkZBQUFFRUVFQUFBUVFROEMxQUF1SmJuUFlRUUFBQkJCQkFBQUVFRUlpd0FBbEloRHVmMEJGQUFBRUVFRUFBQVFRUThDMUFBdUpiblBZUVFBQUJCQkJBQUFFRUVJaXdBQWxJaER1ZjBCRkFBQUVFRUVBQUFRUVE4QzFBQXVKYm5QWVFRQUFCQkJCQUFBRUVFSWl3QUFsSWhEdWYwQkZBQUFFRUVFQUFBUVFROEMxQUF1SmJuUFlRUUFBQkJCQkFBQUVFRUlpd0FBbEloRHVmMEJGQUFBRUVFRUFBQVFRUThDMUFBdUpiblBZUVFBQUJCQkJBQUFFRUVJaXdBQWxJaER1ZjBCRkFBQUVFRUVBQUFRUVE4QzFBQXVKYm5QWVFRQUFCQkJCQUFBRUVFSWl3QUFsSWhEdWYwQkZBQUFFRUVFQUFBUVFROEMxQUF1SmJuUFlRUUFBQkJCQkFBQUVFRUlpd1FNYmtTMi9JaW5EOGhJNEFBZ2dnZ0FBQ0NDQ0FBQUllQlRLRzFjZ2tBZkVJVGxNSUlJQUFBZ2dnZ0FBQ0NFUlpvSFRwb3l0RU9YNWlSd0FCQkJCQUFBRUVFRUFBQVk4Q3JBSHhpRTFUQ0NDQUFBSUlJSUFBQWdoRVhZQUVKT3FmQU9KSEFBRUVFRUFBQVFRUVFNQ2pBQW1JUjJ5YVFnQUJCQkJBQUFFRUVFQWc2Z0lrSUZIL0JCQS9BZ2dnZ0FBQ0NDQ0FBQUllQlVoQVBHTFRGQUlJSUlBQUFnZ2dnQUFDVVJjZ0FZbjZKNEQ0RVVBQUFRUVFRQUFCQkJEd0tFQUM0aEdicGhCQUFBRUVFRUFBQVFRUWlMb0FDVWpVUHdIRWp3QUNDQ0NBQUFJSUlJQ0FSd0VTRUkvWU5JVUFBZ2dnZ0FBQ0NDQ0FRTlFGU0VDaS9na2dmZ1FRUUFBQkJCQkFBQUVFUEFxUWdIakVwaWtFRUVBQUFRUVFRQUFCQktJdVFBSVM5VThBOFNPQUFBSUlJSUFBQWdnZzRGR0FCTVFqTmswaGdBQUNDQ0NBQUFJSUlCQjFBUktRcUg4Q2lCOEJCQkJBQUFFRUVFQUFBWThDSkNBZXNXa0tBUVFRUUFBQkJCQkFBSUdvQzVDQVJQMFRRUHdJSUlBQUFnZ2dnQUFDQ0hnVUlBSHhpRTFUQ0NDQUFBSUlJSUFBQWdoRVhZQUVKT3FmQU9KSEFBRUVFRUFBQVFRUVFNQ2pBQW1JUjJ5YVFnQUJCQkJBQUFFRUVFQWc2Z0lrSUZIL0JCQS9BZ2dnZ0FBQ0NDQ0FBQUllQlVoQVBHTFRGQUlJSUlBQUFnZ2dnQUFDVVJjZ0FZbjZKNEQ0RVVBQUFRUVFRQUFCQkJEd0tFQUM0aEdicGhCQUFBRUVFRUFBQVFRUWlMb0FDVWpVUHdIRWp3QUNDQ0NBQUFJSUlJQ0FSd0VTRUkvWU5JVUFBZ2dnZ0FBQ0NDQ0FRTlFGU0VDaS9na2dmZ1FRUUFBQkJCQkFBQUVFUEFxUWdIakVwaWtFRUVBQUFRUVFRQUFCQktJdVFBSVM5VThBOFNPQUFBSUlJSUFBQWdnZzRGR0FCTVFqTmswaGdBQUNDQ0NBQUFJSUlCQjFBUktRcUg4Q2lCOEJCQkJBQUFFRUVFQUFBWThDL3c5SE1kbmZXUmRtRGdBQUFBQkpSVTVFcmtKZ2dnPT1cIlxufSkpKSk7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQ29udHJvbHMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250cm9scy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCBhbGxMYW5ncyBmcm9tICdsYW5ncyc7XG5pbXBvcnQgeyBQb3B1cCwgSWNvbiBhcyBJY29uQ29tcG9uZW50LCBMaXN0IH0gZnJvbSAnQGdyYXZpdHktdWkvdWlraXQnO1xuaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tICcuLi8uLi9Db250cm9sJztcbmltcG9ydCB7IExhbmcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0UG9wdXBQb3NpdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IExhbmdJY29uIGZyb20gJy4uLy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9sYW5nLnN2Zyc7XG5pbXBvcnQgUnVzSWNvbiBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvcnVzLnN2Zyc7XG5pbXBvcnQgRW5nSWNvbiBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvZW5nLnN2Zyc7XG5pbXBvcnQgJy4uL0NvbnRyb2xzLnNjc3MnO1xuY29uc3QgTEVHQUNZX0xBTkdfSVRFTVMgPSBbXG4gICAgeyB2YWx1ZTogTGFuZy5FbiwgdGV4dDogJ0VuZ2xpc2gnLCBpY29uOiBSZWFjdC5jcmVhdGVFbGVtZW50KEVuZ0ljb24sIG51bGwpIH0sXG4gICAgeyB2YWx1ZTogTGFuZy5SdSwgdGV4dDogJ9Cg0YPRgdGB0LrQuNC5JywgaWNvbjogUmVhY3QuY3JlYXRlRWxlbWVudChSdXNJY29uLCBudWxsKSB9LFxuXTtcbmNvbnN0IGIgPSBibG9jaygnZGMtY29udHJvbHMnKTtcbmNvbnN0IExJU1RfSVRFTV9IRUlHSFQgPSAzNjtcbmNvbnN0IExhbmdDb250cm9sID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIGlzVmVydGljYWxWaWV3LCBzaXplLCBsYW5nLCBsYW5ncyA9IFtdLCBpMThuLCBvbkNoYW5nZUxhbmcsIHBvcHVwUG9zaXRpb24sIHQsIH0gPSBwcm9wcztcbiAgICBjb25zdCBbbGFuZ0l0ZW1zLCBzZXRMYW5nSXRlbXNdID0gdXNlU3RhdGUoTEVHQUNZX0xBTkdfSVRFTVMpO1xuICAgIGNvbnN0IGNvbnRyb2xSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2lzVmlzaWJsZVBvcHVwLCBzZXRJc1Zpc2libGVQb3B1cF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgc2hvd1BvcHVwID0gKCkgPT4gc2V0SXNWaXNpYmxlUG9wdXAodHJ1ZSk7XG4gICAgY29uc3QgaGlkZVBvcHVwID0gKCkgPT4gc2V0SXNWaXNpYmxlUG9wdXAoZmFsc2UpO1xuICAgIGNvbnN0IF9vbkNoYW5nZUxhbmcgPSB1c2VDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKG9uQ2hhbmdlTGFuZykge1xuICAgICAgICAgICAgb25DaGFuZ2VMYW5nKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0sIFtvbkNoYW5nZUxhbmddKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBwcmVwYXJlZExhbmdzID0gbGFuZ3NcbiAgICAgICAgICAgIC5tYXAoKGNvZGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmdEYXRhID0gYWxsTGFuZ3Mud2hlcmUoJzEnLCBjb2RlKTtcbiAgICAgICAgICAgIHJldHVybiBsYW5nRGF0YVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBsYW5nRGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbGFuZ0RhdGFbJzEnXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICBpZiAocHJlcGFyZWRMYW5ncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNldExhbmdJdGVtcyhwcmVwYXJlZExhbmdzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldExhbmdJdGVtcyhMRUdBQ1lfTEFOR19JVEVNUyk7XG4gICAgICAgIH1cbiAgICB9LCBbbGFuZ3NdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpMThuLmNoYW5nZUxhbmd1YWdlKGxhbmcpO1xuICAgIH0sIFtpMThuLCBsYW5nXSk7XG4gICAgY29uc3Qgc2V0UmVmID0gdXNlQ2FsbGJhY2soKHJlZikgPT4ge1xuICAgICAgICBjb250cm9sUmVmLmN1cnJlbnQgPSByZWY7XG4gICAgfSwgW10pO1xuICAgIGlmICghb25DaGFuZ2VMYW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBpdGVtc0hlaWdodCA9IExJU1RfSVRFTV9IRUlHSFQgKiBsYW5nSXRlbXMubGVuZ3RoO1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbUluZGV4ID0gbGFuZ0l0ZW1zLmZpbmRJbmRleCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gbGFuZyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIHsgc2l6ZTogc2l6ZSwgb25DbGljazogc2hvd1BvcHVwLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCB0b29sdGlwVGV4dDogdCgnbGFuZy10ZXh0JyksIGljb246IChhcmdzKSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KEljb25Db21wb25lbnQsIE9iamVjdC5hc3NpZ24oeyBkYXRhOiBMYW5nSWNvbiB9LCBhcmdzKSksIHNldFJlZjogc2V0UmVmLCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFBvcHVwLCB7IGFuY2hvclJlZjogY29udHJvbFJlZiwgb3BlbjogaXNWaXNpYmxlUG9wdXAsIG9uT3V0c2lkZUNsaWNrOiBoaWRlUG9wdXAsIHBsYWNlbWVudDogZ2V0UG9wdXBQb3NpdGlvbihpc1ZlcnRpY2FsVmlldykgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGlzdCwgeyBmaWx0ZXJhYmxlOiBmYWxzZSwgY2xhc3NOYW1lOiBiKCdsaXN0JywgeyBsYW5nczogdHJ1ZSB9KSwgaXRlbXM6IGxhbmdJdGVtcywgb25JdGVtQ2xpY2s6IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIF9vbkNoYW5nZUxhbmcoaXRlbS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSwgc2VsZWN0ZWRJdGVtSW5kZXg6IHNlbGVjdGVkSXRlbUluZGV4LCBpdGVtSGVpZ2h0OiBMSVNUX0lURU1fSEVJR0hULCBpdGVtc0hlaWdodDogaXRlbXNIZWlnaHQsIHJlbmRlckl0ZW06IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbGFuZy1pdGVtJykgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2xpc3QtaWNvbicpIH0sIGl0ZW0uaWNvbiksXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0udGV4dCkpO1xuICAgICAgICAgICAgICAgIH0gfSkpKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCdjb250cm9scycpKExhbmdDb250cm9sKTtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB3aWR0aDogXCIxNlwiLFxuICBoZWlnaHQ6IFwiMTZcIixcbiAgZmlsbDogXCJub25lXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZDogXCJNNi43ODQgNy4zOWEuNDE4LjQxOCAwIDAwLS40MDcuNDA3di40MDZhLjQuNCAwIDAwLjQwNy40MDZIOS4yMmEuNDE4LjQxOCAwIDAwLjQwNi0uNDA2di0uNDA2YS40MzcuNDM3IDAgMDAtLjQwNi0uNDA2SDYuNzg0em04LjEyNSAwaC0zLjI1YS40MTguNDE4IDAgMDAtLjQwNy40MDd2LjQwNmEuNC40IDAgMDAuNDA3LjQwNmgzLjI1YS40MTguNDE4IDAgMDAuNDA2LS40MDZ2LS40MDZhLjQzNy40MzcgMCAwMC0uNDA2LS40MDZ6bS0xMC4xNTcuODEzdi0uNDA2YS40MzcuNDM3IDAgMDAtLjQwNi0uNDA2aC0zLjI1YS40MTguNDE4IDAgMDAtLjQwNi40MDZ2LjQwNmEuNC40IDAgMDAuNDA2LjQwNmgzLjI1YS40MTguNDE4IDAgMDAuNDA2LS40MDZ6bTMuMDA4IDIuODkybC0xLjgyOCAxLjgyOGMtLjE3OC4yMDQtLjA1LjUzNC4yMjkuNTM0aDEuMjQ0djIuMTMyYzAgLjE1My4xMjcuMzA1LjMwNC4zMDVoLjYxYS4zMjguMzI4IDAgMDAuMzA1LS4zMDV2LTIuMTMzaDEuMjE4Yy4yOCAwIC40MDYtLjMzLjIyOS0uNTMzbC0xLjgyOC0xLjgyOGEuMzUzLjM1MyAwIDAwLS40ODMgMHptLjQ4My02LjE5bDEuODI4LTEuODI4Yy4xNzgtLjIwMy4wNS0uNTM0LS4yMjktLjUzNEg4LjU5OFYuNDExYS4zMDkuMzA5IDAgMDAtLjMwNS0uMzA1aC0uNjA5YS4zMjguMzI4IDAgMDAtLjMwNS4zMDV2Mi4xMzJINi4xNjFjLS4yOCAwLS40MDcuMzMtLjIyOS41MzRMNy43NiA0LjkwNWEuMzUzLjM1MyAwIDAwLjQ4MyAwelwiLFxuICBmaWxsOiBcImN1cnJlbnRDb2xvclwiXG59KSkpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB3aWR0aDogXCIxNlwiLFxuICBoZWlnaHQ6IFwiMTZcIixcbiAgZmlsbDogXCJub25lXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZDogXCJNNC44NDQgMi44N2w0LjA2Mi0uMDI2djIuODQ0YzAgLjIyOC4xNzguNDA2LjQwNi40MDZoMi44NDR2MS4wMTVoMS4yMTlWNC45NzdjLS4wMjUtLjI1NC0uMTc4LS42Ni0uMzgtLjg2NGwtMi4xMDgtMi4xMDdjLS4yMDMtLjIwMy0uNjEtLjM4MS0uODY0LS4zODFsLTUuNTg1LjAyNWEuODAyLjgwMiAwIDAwLS44MTMuODEzdjQuNjQ2aDEuMjE5VjIuODd6bTUuMjgxLjA3NWwxLjkzIDEuOTNoLTEuOTN2LTEuOTN6TTcuMjgxIDguMzI4YS40MTguNDE4IDAgMDAtLjQwNi40MDZ2LjQwN2MwIC4yMjguMTc4LjQwNi40MDYuNDA2SDkuNzJhLjQxOC40MTggMCAwMC40MDYtLjQwNnYtLjQwN2EuNDM3LjQzNyAwIDAwLS40MDYtLjQwNkg3LjI4em00Ljg3NSA1LjA3OEg0Ljg0NHYtMi42NEgzLjYyNXYzLjA0NmMwIC40NTguMzU1LjgxMy44MTMuODEzaDguMTI1YS44MTguODE4IDAgMDAuODEyLS44MTN2LTMuMDQ2aC0xLjIxOXYyLjY0em0zLjI1LTUuMDc4aC0zLjI1YS40MTguNDE4IDAgMDAtLjQwNi40MDZ2LjQwN2MwIC4yMjguMTc4LjQwNi40MDYuNDA2aDMuMjVhLjQxOC40MTggMCAwMC40MDYtLjQwNnYtLjQwN2EuNDM3LjQzNyAwIDAwLS40MDYtLjQwNnpNNS4yNSA5LjE0MXYtLjQwN2EuNDM3LjQzNyAwIDAwLS40MDYtLjQwNmgtMy4yNWEuNDE4LjQxOCAwIDAwLS40MDcuNDA2di40MDdjMCAuMjI4LjE3OC40MDYuNDA3LjQwNmgzLjI1YS40MTguNDE4IDAgMDAuNDA2LS40MDZ6XCIsXG4gIGZpbGw6IFwiY3VycmVudENvbG9yXCJcbn0pKSk7IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IEljb24gYXMgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BncmF2aXR5LXVpL3Vpa2l0JztcbmltcG9ydCB7IENvbnRyb2wgfSBmcm9tICcuLi8uLi9Db250cm9sJztcbmltcG9ydCBTaW5nbGVQYWdlSWNvbiBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvc2luZ2xlLXBhZ2Uuc3ZnJztcbmltcG9ydCBTaW5nbGVQYWdlQ2xpY2tlZEljb24gZnJvbSAnLi4vLi4vLi4vLi4vYXNzZXRzL2ljb25zL3NpbmdsZS1wYWdlLWNsaWNrZWQuc3ZnJztcbmNvbnN0IFNpbmdsZVBhZ2VDb250cm9sID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIGlzVmVydGljYWxWaWV3LCBzaXplLCB2YWx1ZSwgb25DaGFuZ2UsIGxhbmcsIGkxOG4sIHBvcHVwUG9zaXRpb24sIHQgfSA9IHByb3BzO1xuICAgIGNvbnN0IG9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAgICAgb25DaGFuZ2UoIXZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0sIFt2YWx1ZSwgb25DaGFuZ2VdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpMThuLmNoYW5nZUxhbmd1YWdlKGxhbmcpO1xuICAgIH0sIFtpMThuLCBsYW5nXSk7XG4gICAgY29uc3QgYWN0aXZlTW9kZSA9IHZhbHVlID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJztcbiAgICBpZiAoIW9uQ2hhbmdlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbCwgeyBzaXplOiBzaXplLCBvbkNsaWNrOiBvbkNsaWNrLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCB0b29sdGlwVGV4dDogdChgc2luZ2xlLXBhZ2UtdGV4dC0ke2FjdGl2ZU1vZGV9YCksIGljb246IChhcmdzKSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHsgZGF0YTogdmFsdWUgPyBTaW5nbGVQYWdlQ2xpY2tlZEljb24gOiBTaW5nbGVQYWdlSWNvbiB9LCBhcmdzKSkpLCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCB3aXRoVHJhbnNsYXRpb24oJ2NvbnRyb2xzJykoU2luZ2xlUGFnZUNvbnRyb2wpO1xuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHdpZHRoOiBcIjM4XCIsXG4gIGhlaWdodDogXCI1MFwiLFxuICBjbGFzc05hbWU6IChzdHlsZXNbXCJ5Yy1pY29uXCJdIHx8IFwieWMtaWNvblwiKSArIFwiIFwiICsgKHN0eWxlc1tcImF0dGFjaG1lbnQtaWNvblwiXSB8fCBcImF0dGFjaG1lbnQtaWNvblwiKSArIFwiIFwiICsgKHN0eWxlc1tcImF0dGFjaG1lbnQtaWNvbl90eXBlX3BkZlwiXSB8fCBcImF0dGFjaG1lbnQtaWNvbl90eXBlX3BkZlwiKSxcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHZpZXdCb3g6IFwiMCAwIDM4NCA1MTJcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBkOiBcIk04Ni4xIDQyOC4xYzAgLjggMTMuMi01LjQgMzQuOS00MC4yLTYuNyA2LjMtMjkuMSAyNC41LTM0LjkgNDAuMnptOTMuOC0yMTguOWMtMi45IDAtMyAzMC45IDIgNDYuOSA1LjYtMTAgNi40LTQ2LjktMi00Ni45em04MC4yIDE0Mi4xYzM3LjEgMTUuOCA0Mi44IDkgNDIuOCA5IDQuMS0yLjctMi41LTExLjktNDIuOC05em0tNzkuOS00OGMtNy43IDIwLjItMTcuMyA0My4zLTI4LjQgNjIuNyAxOC4zLTcgMzktMTcuMiA2Mi45LTIxLjktMTIuNy05LjYtMjQuOS0yMy40LTM0LjUtNDAuOHpNMjcyIDEyOGExNiAxNiAwIDAxLTE2LTE2VjBIMjRBMjMuOTQgMjMuOTQgMCAwMDAgMjMuODhWNDg4YTIzLjk0IDIzLjk0IDAgMDAyMy44OCAyNEgzNjBhMjMuOTQgMjMuOTQgMCAwMDI0LTIzLjg4VjEyOHptMjEuOSAyNTQuNGMtMTYuOSAwLTQyLjMtNy43LTY0LTE5LjUtMjQuOSA0LjEtNTMuMiAxNC43LTc5IDIzLjItMjUuNCA0My44LTQzLjIgNjEuOC02MS4xIDYxLjgtNS41IDAtMTUuOS0zLjEtMjEuNS0xMC0xOS4xLTIzLjUgMjcuNC01NC4xIDU0LjUtNjggLjEgMCAuMS0uMS4yLS4xIDEyLjEtMjEuMiAyOS4yLTU4LjIgNDAuOC04NS44LTguNS0zMi45LTEzLjEtNTguNy04LjEtNzcgNS40LTE5LjcgNDMuMS0yMi42IDQ3LjggNi44IDUuNCAxNy42LTEuNyA0NS43LTYuMiA2NC4yIDkuNCAyNC44IDIyLjcgNDEuNiA0Mi43IDUzLjggMTkuMy0yLjUgNTkuNy02LjQgNzMuNiA3LjIgMTEuNSAxMS40IDkuNSA0My40LTE5LjcgNDMuNHpcIixcbiAgb3BhY2l0eTogXCIuNFwiXG59KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZDogXCJNMzc3IDEwNUwyNzkuMSA3YTI0IDI0IDAgMDAtMTctN0gyNTZ2MTEyYTE2IDE2IDAgMDAxNiAxNmgxMTJ2LTYuMWEyMy45IDIzLjkgMCAwMC03LTE2Ljl6TTI0MCAzMzEuOGMtMjAtMTIuMi0zMy4zLTI5LTQyLjctNTMuOCA0LjUtMTguNSAxMS42LTQ2LjYgNi4yLTY0LjItNC43LTI5LjQtNDIuNC0yNi41LTQ3LjgtNi44LTUgMTguMy0uNCA0NC4xIDguMSA3Ny0xMS42IDI3LjYtMjguNyA2NC42LTQwLjggODUuOC0uMSAwLS4xLjEtLjIuMS0yNy4xIDEzLjktNzMuNiA0NC41LTU0LjUgNjggNS42IDYuOSAxNiAxMCAyMS41IDEwIDE3LjkgMCAzNS43LTE4IDYxLjEtNjEuOCAyNS44LTguNSA1NC4xLTE5LjEgNzktMjMuMiAyMS43IDExLjggNDcuMSAxOS41IDY0IDE5LjUgMjkuMiAwIDMxLjItMzIgMTkuNy00My40LTEzLjktMTMuNi01NC4zLTkuNy03My42LTcuMnpNODYuMSA0MjguMWM1LjgtMTUuNyAyOC4yLTMzLjkgMzQuOS00MC4yLTIxLjcgMzQuOC0zNC45IDQxLTM0LjkgNDAuMnptOTMuOC0yMTguOWM4LjQgMCA3LjYgMzYuOSAyIDQ2LjktNS0xNi00LjktNDYuOS0yLTQ2Ljl6TTE1MS44IDM2NmMxMS4xLTE5LjQgMjAuNy00Mi41IDI4LjQtNjIuNyA5LjYgMTcuNCAyMS44IDMxLjIgMzQuNSA0MC44LTIzLjkgNC43LTQ0LjYgMTQuOS02Mi45IDIxLjl6bTE1MS4xLTUuN3MtNS43IDYuOC00Mi44LTljNDAuMy0yLjkgNDYuOSA2LjMgNDIuOCA5elwiLFxuICBjbGFzc05hbWU6IHN0eWxlc1tcImZpbGUtcGRmX3N2Z19fZmEtcHJpbWFyeVwiXSB8fCBcImZpbGUtcGRmX3N2Z19fZmEtcHJpbWFyeVwiXG59KSkpKTsiLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgd2l0aFRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBJY29uIGFzIEljb25Db21wb25lbnQgfSBmcm9tICdAZ3Jhdml0eS11aS91aWtpdCc7XG5pbXBvcnQgeyBDb250cm9sIH0gZnJvbSAnLi4vLi4vQ29udHJvbCc7XG5pbXBvcnQgUGRmSWNvbiBmcm9tICcuLi8uLi8uLi8uLi9hc3NldHMvaWNvbnMvcGRmLnN2Zyc7XG5jb25zdCBQZGZDb250cm9sID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUsIGlzVmVydGljYWxWaWV3LCBzaXplLCBwZGZMaW5rLCBsYW5nLCBpMThuLCBwb3B1cFBvc2l0aW9uLCB0IH0gPSBwcm9wcztcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpMThuLmNoYW5nZUxhbmd1YWdlKGxhbmcpO1xuICAgIH0sIFtpMThuLCBsYW5nXSk7XG4gICAgaWYgKCFwZGZMaW5rKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgaHJlZjogcGRmTGluaywgdGFyZ2V0OiBcIl9ibGFua1wiLCByZWw6IFwibm9yZWZlcnJlciBub29wZW5lclwiIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbCwgeyBzaXplOiBzaXplLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCB0b29sdGlwVGV4dDogdCgncGRmLXRleHQnKSwgaWNvbjogKGFyZ3MpID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7IGRhdGE6IFBkZkljb24gfSwgYXJncykpLCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uIH0pKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCdjb250cm9scycpKFBkZkNvbnRyb2wpO1xuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHdpZHRoOiBcIjE2XCIsXG4gIGhlaWdodDogXCIxNlwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBmaWxsUnVsZTogXCJldmVub2RkXCIsXG4gIGNsaXBSdWxlOiBcImV2ZW5vZGRcIixcbiAgZDogXCJNMy41NjEgMTQuOTk4SDEuMzE5QS4zMTcuMzE3IDAgMDExIDE0LjY4di0yLjI0MmMwLS4xNzYuMS0uNDIuMjIyLS41NEw5LjczOSAzLjM4YS4zMTguMzE4IDAgMDEuNDQ4LjAwNWwyLjQyOCAyLjQyOGEuMzE4LjMxOCAwIDAxLjAwNS40NDdsLTguNTE4IDguNTE4YS44NjcuODY3IDAgMDEtLjU0MS4yMjJ6TTE0LjAyNCA0Ljg1NWEuMzIuMzIgMCAwMS0uNDQ5LS4wMDNsLTIuNDI4LTIuNDI5YS4zMTguMzE4IDAgMDEtLjAwNC0uNDQ4bC43MzgtLjczOGMuMzMzLS4zMTMuNjUyLS4zMi45NiAwbDEuOTIgMS45MmMuMzI0LjMyLjMxMy42NTIgMCAuOTZsLS43MzcuNzM4elwiLFxuICBmaWxsOiBcImN1cnJlbnRDb2xvclwiXG59KSkpOyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IHsgd2l0aFRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBDb250cm9sIH0gZnJvbSAnLi4vQ29udHJvbCc7XG5pbXBvcnQgeyBGZWVkYmFjaywgRmVlZGJhY2tWaWV3IH0gZnJvbSAnLi4vRmVlZGJhY2snO1xuaW1wb3J0IHsgU3Vic2NyaWJlLCBTdWJzY3JpYmVWaWV3IH0gZnJvbSAnLi4vU3Vic2NyaWJlJztcbmltcG9ydCB7IEZ1bGxTY3JlZW5Db250cm9sLCBTZXR0aW5nc0NvbnRyb2wsIFNpbmdsZVBhZ2VDb250cm9sLCBMYW5nQ29udHJvbCwgRGl2aWRlckNvbnRyb2wsIFBkZkNvbnRyb2wsIH0gZnJvbSAnLi8nO1xuaW1wb3J0IEVkaXRJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9lZGl0LnN2Zyc7XG5pbXBvcnQgJy4vQ29udHJvbHMuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLWNvbnRyb2xzJyk7XG5jbGFzcyBDb250cm9scyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMucmVuZGVyRmVlZGJhY2tDb250cm9scyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbGFuZywgc2luZ2xlUGFnZSwgb25TZW5kRmVlZGJhY2ssIGlzTGlrZWQsIGlzRGlzbGlrZWQsIGRpc2xpa2VWYXJpYW50cywgaXNWZXJ0aWNhbFZpZXcsIGhpZGVGZWVkYmFja0NvbnRyb2xzLCBwb3B1cFBvc2l0aW9uLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGlmIChzaW5nbGVQYWdlIHx8ICFvblNlbmRGZWVkYmFjayB8fCBoaWRlRmVlZGJhY2tDb250cm9scykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRGl2aWRlckNvbnRyb2wsIHsgY2xhc3NOYW1lOiBiKCdkaXZpZGVyJyksIGlzVmVydGljYWxWaWV3OiAhaXNWZXJ0aWNhbFZpZXcgfSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChGZWVkYmFjaywgeyBsYW5nOiBsYW5nLCBzaW5nbGVQYWdlOiBzaW5nbGVQYWdlLCBpc0xpa2VkOiBpc0xpa2VkLCBpc0Rpc2xpa2VkOiBpc0Rpc2xpa2VkLCBkaXNsaWtlVmFyaWFudHM6IGRpc2xpa2VWYXJpYW50cywgb25TZW5kRmVlZGJhY2s6IG9uU2VuZEZlZWRiYWNrLCBpc1ZlcnRpY2FsVmlldzogaXNWZXJ0aWNhbFZpZXcsIHZpZXc6IEZlZWRiYWNrVmlldy5SZWd1bGFyLCBjbGFzc05hbWVDb250cm9sOiBiKCdjb250cm9sJyksIHBvcHVwUG9zaXRpb246IHBvcHVwUG9zaXRpb24gfSkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZW5kZXJTdWJzY3JpYmVDb250cm9scyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgbGFuZywgc2luZ2xlUGFnZSwgb25TdWJzY3JpYmUsIGlzVmVydGljYWxWaWV3LCBwb3B1cFBvc2l0aW9uIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgaWYgKHNpbmdsZVBhZ2UgfHwgIW9uU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEaXZpZGVyQ29udHJvbCwgeyBjbGFzc05hbWU6IGIoJ2RpdmlkZXInKSwgaXNWZXJ0aWNhbFZpZXc6ICFpc1ZlcnRpY2FsVmlldyB9KSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFN1YnNjcmliZSwgeyBsYW5nOiBsYW5nLCBvblN1YnNjcmliZTogb25TdWJzY3JpYmUsIGlzVmVydGljYWxWaWV3OiBpc1ZlcnRpY2FsVmlldywgdmlldzogU3Vic2NyaWJlVmlldy5SZWd1bGFyLCBjbGFzc05hbWVDb250cm9sOiBiKCdjb250cm9sJyksIHBvcHVwUG9zaXRpb246IHBvcHVwUG9zaXRpb24gfSkpKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgICBjb25zdCB7IGkxOG4sIGxhbmcgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChwcmV2UHJvcHMubGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgICAgaTE4bi5jaGFuZ2VMYW5ndWFnZShsYW5nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgbGFuZywgaTE4biwgY2xhc3NOYW1lLCBpc1ZlcnRpY2FsVmlldyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGkxOG4ubGFuZ3VhZ2UgIT09IGxhbmcpIHtcbiAgICAgICAgICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobGFuZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKHsgdmVydGljYWw6IGlzVmVydGljYWxWaWV3IH0sIGNsYXNzTmFtZSkgfSxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29tbW9uQ29udHJvbHMoKSxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRWRpdExpbmsoKSxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRmVlZGJhY2tDb250cm9scygpLFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJTdWJzY3JpYmVDb250cm9scygpKSk7XG4gICAgfVxuICAgIHJlbmRlckVkaXRMaW5rKCkge1xuICAgICAgICBjb25zdCB7IHZjc1VybCwgdmNzVHlwZSwgc2hvd0VkaXRDb250cm9sLCBzaW5nbGVQYWdlLCBpc1ZlcnRpY2FsVmlldywgY29udHJvbFNpemUsIHBvcHVwUG9zaXRpb24sIHQsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIXNob3dFZGl0Q29udHJvbCB8fCBzaW5nbGVQYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERpdmlkZXJDb250cm9sLCB7IHNpemU6IGNvbnRyb2xTaXplLCBpc1ZlcnRpY2FsVmlldzogIWlzVmVydGljYWxWaWV3LCBjbGFzc05hbWU6IGIoJ2RpdmlkZXInKSB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgaHJlZjogdmNzVXJsLCB0YXJnZXQ6IFwiX2JsYW5rXCIsIHJlbDogXCJub3JlZmVycmVyIG5vb3BlbmVyXCIsIGNsYXNzTmFtZTogYignY29udHJvbCcpIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDb250cm9sLCB7IHNpemU6IGNvbnRyb2xTaXplLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnKSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCB0b29sdGlwVGV4dDogdChgZWRpdC10ZXh0LSR7dmNzVHlwZX1gKSwgaWNvbjogRWRpdEljb24sIHBvcHVwUG9zaXRpb246IHBvcHVwUG9zaXRpb24gfSkpKSk7XG4gICAgfVxuICAgIHJlbmRlckNvbW1vbkNvbnRyb2xzKCkge1xuICAgICAgICBjb25zdCB7IGZ1bGxTY3JlZW4sIHNpbmdsZVBhZ2UsIHRoZW1lLCB3aWRlRm9ybWF0LCBzaG93TWluaVRvYywgdGV4dFNpemUsIG9uQ2hhbmdlRnVsbFNjcmVlbiwgb25DaGFuZ2VUaGVtZSwgb25DaGFuZ2VTaG93TWluaVRvYywgb25DaGFuZ2VUZXh0U2l6ZSwgb25DaGFuZ2VXaWRlRm9ybWF0LCBvbkNoYW5nZUxhbmcsIG9uQ2hhbmdlU2luZ2xlUGFnZSwgaXNWZXJ0aWNhbFZpZXcsIGNvbnRyb2xTaXplLCBsYW5nLCBsYW5ncywgcG9wdXBQb3NpdGlvbiwgcGRmTGluaywgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRnVsbFNjcmVlbkNvbnRyb2wsIHsgbGFuZzogbGFuZywgc2l6ZTogY29udHJvbFNpemUsIHZhbHVlOiBmdWxsU2NyZWVuLCBvbkNoYW5nZTogb25DaGFuZ2VGdWxsU2NyZWVuLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnKSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc0NvbnRyb2wsIHsgbGFuZzogbGFuZywgc2l6ZTogY29udHJvbFNpemUsIHRoZW1lOiB0aGVtZSwgd2lkZUZvcm1hdDogd2lkZUZvcm1hdCwgc2hvd01pbmlUb2M6IHNob3dNaW5pVG9jLCB0ZXh0U2l6ZTogdGV4dFNpemUsIG9uQ2hhbmdlVGhlbWU6IG9uQ2hhbmdlVGhlbWUsIG9uQ2hhbmdlU2hvd01pbmlUb2M6IG9uQ2hhbmdlU2hvd01pbmlUb2MsIG9uQ2hhbmdlVGV4dFNpemU6IG9uQ2hhbmdlVGV4dFNpemUsIG9uQ2hhbmdlV2lkZUZvcm1hdDogb25DaGFuZ2VXaWRlRm9ybWF0LCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnKSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChMYW5nQ29udHJvbCwgeyBsYW5nOiBsYW5nLCBsYW5nczogbGFuZ3MsIHNpemU6IGNvbnRyb2xTaXplLCBvbkNoYW5nZUxhbmc6IG9uQ2hhbmdlTGFuZywgY2xhc3NOYW1lOiBiKCdjb250cm9sJyksIGlzVmVydGljYWxWaWV3OiBpc1ZlcnRpY2FsVmlldywgcG9wdXBQb3NpdGlvbjogcG9wdXBQb3NpdGlvbiB9KSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2luZ2xlUGFnZUNvbnRyb2wsIHsgbGFuZzogbGFuZywgc2l6ZTogY29udHJvbFNpemUsIHZhbHVlOiBzaW5nbGVQYWdlLCBvbkNoYW5nZTogb25DaGFuZ2VTaW5nbGVQYWdlLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnKSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uIH0pLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChQZGZDb250cm9sLCB7IGxhbmc6IGxhbmcsIHNpemU6IGNvbnRyb2xTaXplLCBwZGZMaW5rOiBwZGZMaW5rLCBjbGFzc05hbWU6IGIoJ2NvbnRyb2wnKSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCBwb3B1cFBvc2l0aW9uOiBwb3B1cFBvc2l0aW9uIH0pKSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCdjb250cm9scycpKENvbnRyb2xzKTtcbiIsImV4cG9ydCBjbGFzcyBUb2NJdGVtUmVnaXN0cnkge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1zLCBub3JtYWxpemVVcmwpIHtcbiAgICAgICAgdGhpcy5pdGVtQnlJZCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5wYXJlbnRCeUlkID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLml0ZW1JZEJ5VXJsID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZVVybCA9IG5vcm1hbGl6ZVVybDtcbiAgICAgICAgdGhpcy5jb25zdW1lSXRlbXMoaXRlbXMpO1xuICAgIH1cbiAgICBnZXRJZEJ5VXJsKHVybCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtSWRCeVVybC5nZXQodXJsKTtcbiAgICB9XG4gICAgZ2V0SXRlbUJ5SWQoaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbUJ5SWQuZ2V0KGlkKTtcbiAgICB9XG4gICAgZ2V0UGFyZW50SWQoaWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50QnlJZC5nZXQoaWQpIHx8ICcnO1xuICAgIH1cbiAgICBnZXRQYXJlbnRJZHMoaWQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGxldCBwYXJlbnRJZCA9IHRoaXMuZ2V0UGFyZW50SWQoaWQpO1xuICAgICAgICB3aGlsZSAocGFyZW50SWQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcmVudElkKTtcbiAgICAgICAgICAgIHBhcmVudElkID0gdGhpcy5nZXRQYXJlbnRJZChwYXJlbnRJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0Q2hpbGRJZHMoaWQpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbUJ5SWQuZ2V0KGlkKTtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChpdGVtLml0ZW1zIHx8IFtdKS5yZWR1Y2UoKGFjYywgY2hpbGQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhY2MuY29uY2F0KFtjaGlsZC5pZF0sIHRoaXMuZ2V0Q2hpbGRJZHMoY2hpbGQuaWQpKTtcbiAgICAgICAgfSwgW10pO1xuICAgIH1cbiAgICBjb25zdW1lSXRlbXMoaXRlbXMsIHBhcmVudCkge1xuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICB0aGlzLml0ZW1CeUlkLnNldChpdGVtLmlkLCBpdGVtKTtcbiAgICAgICAgICAgIGlmIChpdGVtLmhyZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbcGF0aG5hbWUsIGhhc2hdID0gaXRlbS5ocmVmLnNwbGl0KCcjJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ub3JtYWxpemVVcmwocGF0aG5hbWUsIGhhc2gpO1xuICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtSWRCeVVybC5zZXQodXJsLCBpdGVtLmlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRCeUlkLnNldChpdGVtLmlkLCBwYXJlbnQuaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWVJdGVtcyhpdGVtLml0ZW1zLCBpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9jLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9jLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IG9taXQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQ29udHJvbFNpemVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFRvY0l0ZW0gYXMgSXRlbSB9IGZyb20gJy4uL1RvY0l0ZW0nO1xuaW1wb3J0IHsgSFRNTCB9IGZyb20gJy4uL0hUTUwnO1xuaW1wb3J0IHsgQ29udHJvbHMgfSBmcm9tICcuLi9Db250cm9scyc7XG5pbXBvcnQgeyBpc0FjdGl2ZUl0ZW0sIG5vcm1hbGl6ZUhhc2gsIG5vcm1hbGl6ZVBhdGggfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBUb2NJdGVtUmVnaXN0cnkgfSBmcm9tICcuL1RvY0l0ZW1SZWdpc3RyeSc7XG5pbXBvcnQgJy4vVG9jLnNjc3MnO1xuaW1wb3J0IHsgUG9wcGVyUG9zaXRpb24gfSBmcm9tICcuLi8uLi9ob29rcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLXRvYycpO1xuY29uc3QgSEVBREVSX0RFRkFVTFRfSEVJR0hUID0gMDtcbmZ1bmN0aW9uIHppcChhcnJheSwgZmlsbCkge1xuICAgIHJldHVybiBhcnJheS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2l0ZW1dOiBmaWxsIH0pLCB7fSk7XG59XG5jbGFzcyBUb2MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5jb250ZW50UmVmID0gUmVhY3QuY3JlYXRlUmVmKCk7XG4gICAgICAgIHRoaXMucm9vdFJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICAgICAgICB0aGlzLmFjdGl2ZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lckVsID0gbnVsbDtcbiAgICAgICAgdGhpcy5mb290ZXJFbCA9IG51bGw7XG4gICAgICAgIHRoaXMubm9ybWFsaXplVXJsID0gKHBhdGgsIGhhc2gpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgc2luZ2xlUGFnZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVQYWdlID8gbm9ybWFsaXplSGFzaChoYXNoKSA6IG5vcm1hbGl6ZVBhdGgocGF0aCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVuZGVyTGlzdCA9IChpdGVtcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0b2dnbGVJdGVtIH0gPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgeyBzaW5nbGVQYWdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgeyBhY3RpdmVJZCwgZml4ZWRCeUlkIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGFjdGl2ZUlkICYmIHRoaXMuc3RhdGUucmVnaXN0cnkuZ2V0SXRlbUJ5SWQoYWN0aXZlSWQpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlU2NvcGUgPSBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgPyB6aXAoW2FjdGl2ZUlkXS5jb25jYXQodGhpcy5zdGF0ZS5yZWdpc3RyeS5nZXRQYXJlbnRJZHMoYWN0aXZlSWQpKSwgdHJ1ZSlcbiAgICAgICAgICAgICAgICA6IHt9O1xuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgeyBjbGFzc05hbWU6IGIoJ2xpc3QnKSB9LCBpdGVtcy5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFpbiA9ICF0aGlzLnN0YXRlLnJlZ2lzdHJ5LmdldFBhcmVudElkKGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IChzaW5nbGVQYWdlICYmICFhY3RpdmVJZCAmJiBpbmRleCA9PT0gMCAmJiBtYWluKSB8fCBpdGVtLmlkID09PSBhY3RpdmVJZDtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVuZWQgPSBmaXhlZEJ5SWRbaXRlbS5pZF0gPT09ICdvcGVuZWQnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlZCA9IGZpeGVkQnlJZFtpdGVtLmlkXSA9PT0gJ2Nsb3NlZCc7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5kYWJsZSA9IEJvb2xlYW4oaXRlbS5pdGVtcyAmJiBpdGVtLml0ZW1zLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kYWJsZSAmJiAhY2xvc2VkICYmIChpdGVtLmV4cGFuZGVkIHx8IGFjdGl2ZVNjb3BlW2l0ZW0uaWRdIHx8IG9wZW5lZCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmID0gYWN0aXZlID8geyByZWY6IHRoaXMuYWN0aXZlUmVmIH0gOiB7fTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7IGtleTogaXRlbS5pZCwgaWQ6IGl0ZW0uaWQsIGNsYXNzTmFtZTogYignbGlzdC1pdGVtJywgeyBtYWluLCBhY3RpdmUsIG9wZW5lZDogZXhwYW5kZWQgfSkgfSxcbiAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJdGVtLCBPYmplY3QuYXNzaWduKHt9LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaXRlbSksIHJlZiksIHsgYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlSXRlbSB9KSkpLFxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCAmJiB0aGlzLnJlbmRlckxpc3QoaXRlbS5pdGVtcykpKTtcbiAgICAgICAgICAgIH0pKSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRUb2NIZWlnaHQoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5oYW5kbGVSZXNpemUgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFRvY0hlaWdodCgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlSXRlbSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hY3RpdmVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlUmVmLmN1cnJlbnQuc2Nyb2xsVG9JdGVtKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaGFuZGxlQ29udGVudFNjcm9sbCA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnROb2RlID0gdGhpcy5jb250ZW50UmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50U2Nyb2xsZWQgPSBjb250ZW50Tm9kZSA/IGNvbnRlbnROb2RlLnNjcm9sbFRvcCA+IDAgOiBmYWxzZTtcbiAgICAgICAgICAgIGlmIChjb250ZW50U2Nyb2xsZWQgIT09IHRoaXMuc3RhdGUuY29udGVudFNjcm9sbGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbnRlbnRTY3JvbGxlZCB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vcGVuSXRlbSA9IChpZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2U3RhdGUpLCB7IGZpeGVkQnlJZDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2U3RhdGUuZml4ZWRCeUlkKSwgeyBbaWRdOiAnb3BlbmVkJyB9KSB9KSkpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNsb3NlSXRlbSA9IChpZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWRzID0gdGhpcy5zdGF0ZS5yZWdpc3RyeS5nZXRDaGlsZElkcyhpZCk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKChwcmV2U3RhdGUpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXZTdGF0ZSksIHsgZml4ZWRCeUlkOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9taXQocHJldlN0YXRlLmZpeGVkQnlJZCwgaWRzKSksIHsgW2lkXTogJ2Nsb3NlZCcgfSkgfSkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50b2dnbGVJdGVtID0gKGlkLCBvcGVuZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChvcGVuZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlSXRlbShpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5JdGVtKGlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuY29tcHV0ZVN0YXRlKHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkpO1xuICAgIH1cbiAgICBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZWdpc3RyeTogbmV3IFRvY0l0ZW1SZWdpc3RyeSh0aGlzLnByb3BzLml0ZW1zLCB0aGlzLm5vcm1hbGl6ZVVybCksXG4gICAgICAgICAgICBmaXhlZEJ5SWQ6IHt9LFxuICAgICAgICAgICAgYWN0aXZlSWQ6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50U2Nyb2xsZWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5MYXlvdXRfX2NvbnRlbnQnKTtcbiAgICAgICAgdGhpcy5mb290ZXJFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5Gb290ZXInKTtcbiAgICAgICAgdGhpcy5zZXRUb2NIZWlnaHQoKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlUmVzaXplKTtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFJlZiAmJiB0aGlzLmNvbnRlbnRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50UmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5oYW5kbGVDb250ZW50U2Nyb2xsKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlSXRlbSgpO1xuICAgIH1cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgY29uc3QgeyByb3V0ZXIsIHNpbmdsZVBhZ2UsIGl0ZW1zIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBsZXQgbmV4dFN0YXRlO1xuICAgICAgICBpZiAocHJldlByb3BzLml0ZW1zICE9PSBpdGVtcykge1xuICAgICAgICAgICAgbmV4dFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJldlByb3BzLnJvdXRlci5wYXRobmFtZSAhPT0gcm91dGVyLnBhdGhuYW1lIHx8XG4gICAgICAgICAgICBwcmV2UHJvcHMucm91dGVyLmhhc2ggIT09IHJvdXRlci5oYXNoIHx8XG4gICAgICAgICAgICBwcmV2UHJvcHMuc2luZ2xlUGFnZSAhPT0gc2luZ2xlUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUb2NIZWlnaHQoKTtcbiAgICAgICAgICAgIG5leHRTdGF0ZSA9IHRoaXMuY29tcHV0ZVN0YXRlKG5leHRTdGF0ZSB8fCBwcmV2U3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZXZTdGF0ZS5hY3RpdmVJZCAhPT0gdGhpcy5zdGF0ZS5hY3RpdmVJZCkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZUl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dFN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhhbmRsZVNjcm9sbCk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmhhbmRsZVJlc2l6ZSk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRSZWYgJiYgdGhpcy5jb250ZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudFJlZi5jdXJyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGFuZGxlQ29udGVudFNjcm9sbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGl0ZW1zLCBoaWRlVG9jSGVhZGVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gaXRlbXMgPyB0aGlzLnJlbmRlckxpc3QoaXRlbXMpIDogdGhpcy5yZW5kZXJFbXB0eSgnJyk7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigpLCByZWY6IHRoaXMucm9vdFJlZiB9LFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJUb3AoKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2NvbnRlbnQnLCB7IG9mZnNldF90b3A6IGhpZGVUb2NIZWFkZXIgfSksIHJlZjogdGhpcy5jb250ZW50UmVmIH0sIGNvbnRlbnQpLFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJCb3R0b20oKSkpO1xuICAgIH1cbiAgICBjb21wdXRlU3RhdGUocHJldlN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHsgcm91dGVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lLCBoYXNoIH0gPSByb3V0ZXI7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVVybCA9IHRoaXMubm9ybWFsaXplVXJsKHBhdGhuYW1lLCBoYXNoKTtcbiAgICAgICAgY29uc3QgYWN0aXZlSWQgPSBhY3RpdmVVcmwgJiYgcHJldlN0YXRlLnJlZ2lzdHJ5LmdldElkQnlVcmwoYWN0aXZlVXJsKTtcbiAgICAgICAgbGV0IGZpeGVkQnlJZCA9IHByZXZTdGF0ZS5maXhlZEJ5SWQ7XG4gICAgICAgIGlmIChhY3RpdmVJZCAmJiBwcmV2U3RhdGUuYWN0aXZlSWQgJiYgYWN0aXZlSWQgIT09IHByZXZTdGF0ZS5hY3RpdmVJZCkge1xuICAgICAgICAgICAgY29uc3QgZXhwYW5kZWRJZHMgPSBbYWN0aXZlSWRdLmNvbmNhdChwcmV2U3RhdGUucmVnaXN0cnkuZ2V0UGFyZW50SWRzKGFjdGl2ZUlkKSk7XG4gICAgICAgICAgICBjb25zdCBkcm9wQ2xvc2VkU2lnbiA9IGV4cGFuZGVkSWRzLmZpbHRlcigoaWQpID0+IHByZXZTdGF0ZS5maXhlZEJ5SWRbaWRdID09PSAnY2xvc2VkJyk7XG4gICAgICAgICAgICBpZiAoZHJvcENsb3NlZFNpZ24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZml4ZWRCeUlkID0gb21pdChmaXhlZEJ5SWQsIGRyb3BDbG9zZWRTaWduKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2U3RhdGUpLCB7IGFjdGl2ZUlkLCBmaXhlZEJ5SWQgfSk7XG4gICAgfVxuICAgIHJlbmRlckVtcHR5KHRleHQpIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2VtcHR5JykgfSwgdGV4dCk7XG4gICAgfVxuICAgIHJlbmRlclRvcCgpIHtcbiAgICAgICAgY29uc3QgeyByb3V0ZXIsIHRpdGxlLCBocmVmLCB0b2NUaXRsZUljb24sIGhpZGVUb2NIZWFkZXIsIHNpbmdsZVBhZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgY29udGVudFNjcm9sbGVkIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBsZXQgdG9wSGVhZGVyO1xuICAgICAgICBpZiAoaGlkZVRvY0hlYWRlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhyZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGlzQWN0aXZlSXRlbShyb3V0ZXIsIGhyZWYsIHNpbmdsZVBhZ2UpO1xuICAgICAgICAgICAgdG9wSGVhZGVyID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgaHJlZjogaHJlZiwgY2xhc3NOYW1lOiBiKCd0b3AtaGVhZGVyJywgeyBhY3RpdmUsIGxpbms6IHRydWUgfSksIFwiZGF0YS1yb3V0ZXItc2hhbGxvd1wiOiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChIVE1MLCBudWxsLCB0aXRsZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRvcEhlYWRlciA9IChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCd0b3AtaGVhZGVyJykgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEhUTUwsIG51bGwsIHRpdGxlKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigndG9wJywgeyBzY3JvbGxlZDogY29udGVudFNjcm9sbGVkIH0pIH0sXG4gICAgICAgICAgICB0b2NUaXRsZUljb24gPyBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCd0b3AtaGVhZGVyLWljb24nKSB9LCB0b2NUaXRsZUljb24pIDogbnVsbCxcbiAgICAgICAgICAgIHRvcEhlYWRlcikpO1xuICAgIH1cbiAgICByZW5kZXJCb3R0b20oKSB7XG4gICAgICAgIGNvbnN0IHsgbGFuZywgc2luZ2xlUGFnZSwgb25DaGFuZ2VTaW5nbGVQYWdlLCBwZGZMaW5rIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGNvbnRlbnRTY3JvbGxlZCB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdib3R0b20nLCB7IHNjcm9sbGVkOiBjb250ZW50U2Nyb2xsZWQgfSkgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbHMsIHsgbGFuZzogbGFuZywgc2luZ2xlUGFnZTogc2luZ2xlUGFnZSwgb25DaGFuZ2VTaW5nbGVQYWdlOiBvbkNoYW5nZVNpbmdsZVBhZ2UsIHBvcHVwUG9zaXRpb246IFBvcHBlclBvc2l0aW9uLlRPUF9TVEFSVCwgY29udHJvbFNpemU6IENvbnRyb2xTaXplcy5MLCBwZGZMaW5rOiBwZGZMaW5rIH0pKSk7XG4gICAgfVxuICAgIHNldFRvY0hlaWdodCgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBjb25zdCB7IGhlYWRlckhlaWdodCA9IEhFQURFUl9ERUZBVUxUX0hFSUdIVCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gKF9iID0gKF9hID0gdGhpcy5jb250YWluZXJFbCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldEhlaWdodCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMDtcbiAgICAgICAgY29uc3QgZm9vdGVySGVpZ2h0ID0gKF9kID0gKF9jID0gdGhpcy5mb290ZXJFbCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldEhlaWdodCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsRGlmZiA9IHdpbmRvdy5zY3JvbGxZICsgd2luZG93LmlubmVySGVpZ2h0ICsgZm9vdGVySGVpZ2h0IC0gaGVhZGVySGVpZ2h0IC0gY29udGFpbmVySGVpZ2h0O1xuICAgICAgICBjb25zdCByb290Tm9kZSA9IHRoaXMucm9vdFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIXJvb3ROb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNjcm9sbERpZmYgPiAwKSB7XG4gICAgICAgICAgICByb290Tm9kZS5zdHlsZS5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWFkZXJIZWlnaHQgLSBzY3JvbGxEaWZmICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb250YWluZXJIZWlnaHQgPCB3aW5kb3cuaW5uZXJIZWlnaHQpIHtcbiAgICAgICAgICAgIHJvb3ROb2RlLnN0eWxlLmhlaWdodCA9IGNvbnRhaW5lckhlaWdodCAtIGZvb3RlckhlaWdodCArICdweCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByb290Tm9kZS5zdHlsZS5oZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWFkZXJIZWlnaHQgKyAncHgnO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgVG9jO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRG9jTGF5b3V0LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRG9jTGF5b3V0LnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IGdldFN0YXRlS2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgVG9jIH0gZnJvbSAnLi4vVG9jJztcbmltcG9ydCAnLi9Eb2NMYXlvdXQuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLWRvYy1sYXlvdXQnKTtcbmNvbnN0IExlZnQgPSAoKSA9PiBudWxsO1xuY29uc3QgQ2VudGVyID0gKCkgPT4gbnVsbDtcbmNvbnN0IFJpZ2h0ID0gKCkgPT4gbnVsbDtcbmV4cG9ydCBjbGFzcyBEb2NMYXlvdXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBmdWxsU2NyZWVuID0gZmFsc2UsIHdpZGVGb3JtYXQgPSBmYWxzZSwgaGlkZVJpZ2h0ID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgZm9vdGVyID0gbnVsbCwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGxldCBsZWZ0LCBjZW50ZXIsIHJpZ2h0O1xuICAgICAgICBjb25zdCBtb2RlcyA9IHtcbiAgICAgICAgICAgICdyZWd1bGFyLXBhZ2Utd2lkdGgnOiAhd2lkZUZvcm1hdCxcbiAgICAgICAgICAgICdmdWxsLXNjcmVlbic6IGZ1bGxTY3JlZW4sXG4gICAgICAgICAgICAnaGlkZGVuLXJpZ2h0JzogaGlkZVJpZ2h0LFxuICAgICAgICAgICAgbG9hZGluZzogbG9hZGluZyxcbiAgICAgICAgfTtcbiAgICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoIChjaGlsZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMZWZ0OlxuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gY2hpbGQucHJvcHMuY2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ2VudGVyOlxuICAgICAgICAgICAgICAgICAgICBjZW50ZXIgPSBjaGlsZC5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBSaWdodDpcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBjaGlsZC5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIobnVsbCwgY2xhc3NOYW1lKSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbW9iaWxlLW9ubHknKSB9LCBmb290ZXIpLFxuICAgICAgICAgICAgZnVsbFNjcmVlbiA/IG51bGwgOiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbGVmdCcsIG1vZGVzKSB9LFxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyVG9jKCksXG4gICAgICAgICAgICAgICAgbGVmdCkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignY2VudGVyJywgbW9kZXMpIH0sXG4gICAgICAgICAgICAgICAgY2VudGVyLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2Rlc2t0b3Atb25seScpIH0sIGZvb3RlcikpLFxuICAgICAgICAgICAgZnVsbFNjcmVlbiB8fCBoaWRlUmlnaHQgPyBudWxsIDogUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigncmlnaHQnLCBtb2RlcykgfSwgcmlnaHQpKSk7XG4gICAgfVxuICAgIHJlbmRlclRvYygpIHtcbiAgICAgICAgY29uc3QgeyB0b2MsIHJvdXRlciwgaGVhZGVySGVpZ2h0LCB0b2NUaXRsZUljb24sIGhpZGVSaWdodCwgd2lkZUZvcm1hdCwgaGlkZVRvY0hlYWRlciwgaGlkZVRvYywgbGFuZywgc2luZ2xlUGFnZSwgb25DaGFuZ2VTaW5nbGVQYWdlLCBwZGZMaW5rLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCF0b2MgfHwgaGlkZVRvYykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCd0b2MnKSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChUb2NcbiAgICAgICAgICAgIC8qIFRoaXMga2V5IGFsbG93cyByZWNhbGN1bGF0aW5nIHRoZSBvZmZzZXQgZm9yIHRoZSB0b2MgZm9yIFNhZmFyaSAqL1xuICAgICAgICAgICAgLCBPYmplY3QuYXNzaWduKHsgXG4gICAgICAgICAgICAgICAgLyogVGhpcyBrZXkgYWxsb3dzIHJlY2FsY3VsYXRpbmcgdGhlIG9mZnNldCBmb3IgdGhlIHRvYyBmb3IgU2FmYXJpICovXG4gICAgICAgICAgICAgICAga2V5OiBnZXRTdGF0ZUtleShoaWRlUmlnaHQsIHdpZGVGb3JtYXQsIHRvYy5zaW5nbGVQYWdlKSB9LCB0b2MsIHsgcm91dGVyOiByb3V0ZXIsIGhlYWRlckhlaWdodDogaGVhZGVySGVpZ2h0LCB0b2NUaXRsZUljb246IHRvY1RpdGxlSWNvbiwgaGlkZVRvY0hlYWRlcjogaGlkZVRvY0hlYWRlciwgbGFuZzogbGFuZywgc2luZ2xlUGFnZTogc2luZ2xlUGFnZSwgb25DaGFuZ2VTaW5nbGVQYWdlOiBvbkNoYW5nZVNpbmdsZVBhZ2UsIHBkZkxpbms6IHBkZkxpbmsgfSkpKSk7XG4gICAgfVxufVxuRG9jTGF5b3V0LkxlZnQgPSBMZWZ0O1xuRG9jTGF5b3V0LkNlbnRlciA9IENlbnRlcjtcbkRvY0xheW91dC5SaWdodCA9IFJpZ2h0O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTWFyay5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL01hcmsuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0ICcuL01hcmsuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLW1hcmsnKTtcbmV4cG9ydCBjb25zdCBNYXJrID0gKHsgdGV4dCwgY29sb3IgPSAnYmx1ZScsIHNpemUgPSAncycsIGNsYXNzTmFtZSB9KSA9PiB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBiKHsgY29sb3IsIHNpemUgfSwgY2xhc3NOYW1lKSB9LCB0ZXh0LnRvVXBwZXJDYXNlKCkpO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNYXJrIH0gZnJvbSAnLi4vTWFyayc7XG5jb25zdCBjb2xvckJ5U3RhZ2UgPSB7XG4gICAgcHJldmlldzogJ2JsdWUnLFxuICAgIG5ldzogJ2dyZWVuJyxcbn07XG5jb25zdCBwb3NzaWJsZVN0YWdlcyA9IE9iamVjdC5rZXlzKGNvbG9yQnlTdGFnZSk7XG5leHBvcnQgY29uc3QgU3RhZ2VMYWJlbCA9ICh7IHN0YWdlLCBzaXplID0gJ3MnLCBjbGFzc05hbWUgfSkgPT4ge1xuICAgIGlmICghKHN0YWdlICYmIHBvc3NpYmxlU3RhZ2VzLmluY2x1ZGVzKHN0YWdlKSkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNvbG9yID0gY29sb3JCeVN0YWdlW3N0YWdlXTtcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChNYXJrLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCB0ZXh0OiBzdGFnZSwgY29sb3I6IGNvbG9yLCBzaXplOiBzaXplIH0pO1xufTtcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICB3aWR0aDogXCIyNFwiLFxuICBoZWlnaHQ6IFwiMjRcIixcbiAgZmlsbDogXCJub25lXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIixcbiAgZDogXCJNMTIgMTYuODhsLTQuNjU1IDMuMzM0YS41LjUgMCAwMS0uNzY4LS41NThMOC4zMSAxNC4yIDMuNyAxMC44MDJhLjUuNSAwIDAxLjI5NC0uOTAybDUuNzI1LS4wMzkgMS44MDctNS40MzRhLjUuNSAwIDAxLjk0OCAwbDEuODA3IDUuNDM0IDUuNzI1LjAzOWEuNS41IDAgMDEuMjk0LjkwMkwxNS42OSAxNC4ybDEuNzMzIDUuNDU3YS41LjUgMCAwMS0uNzY4LjU1OEwxMiAxNi44OHpcIlxufSkpKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCBkZWZhdWx0ICgoe1xuICBzdHlsZXMgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgd2lkdGg6IFwiMjRcIixcbiAgaGVpZ2h0OiBcIjI0XCIsXG4gIGZpbGw6IFwibm9uZVwiXG59LCBwcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gIGZpbGw6IFwiY3VycmVudENvbG9yXCIsXG4gIGQ6IFwiTTguOTE3IDE3LjI0M0wxMiAxNS4wMzVsMy4wODMgMi4yMDgtMS4xNDgtMy42MTQgMy4wNTMtMi4yNS0zLjc5Mi0uMDI1TDEyIDcuNzU1bC0xLjE5NiAzLjU5OS0zLjc5Mi4wMjUgMy4wNTMgMi4yNS0xLjE0OCAzLjYxNHpNMTIgMTYuODhsLTQuNjU1IDMuMzM0YS41LjUgMCAwMS0uNzY4LS41NThMOC4zMSAxNC4yIDMuNyAxMC44MDJhLjUuNSAwIDAxLjI5NC0uOTAybDUuNzI1LS4wMzkgMS44MDctNS40MzRhLjUuNSAwIDAxLjk0OCAwbDEuODA3IDUuNDM0IDUuNzI1LjAzOWEuNS41IDAgMDEuMjk0LjkwMkwxNS42OSAxNC4ybDEuNzMzIDUuNDU3YS41LjUgMCAwMS0uNzY4LjU1OEwxMiAxNi44OHpcIlxufSkpKTsiLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Cb29rbWFya0J1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0Jvb2ttYXJrQnV0dG9uLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IEJ1dHRvbiwgSWNvbiBhcyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGdyYXZpdHktdWkvdWlraXQnO1xuaW1wb3J0IFN0YXJBY3RpdmUgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL3N0YXItYWN0aXZlLnN2Zyc7XG5pbXBvcnQgU3RhckluYWN0aXZlIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9zdGFyLWluYWN0aXZlLnN2Zyc7XG5pbXBvcnQgJy4vQm9va21hcmtCdXR0b24uc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLWJvb2ttYXJrLWJ1dHRvbicpO1xuZXhwb3J0IGNvbnN0IEJvb2ttYXJrQnV0dG9uID0gKHsgYm9va21hcmtlZFBhZ2UsIG9uQ2hhbmdlQm9va21hcmtQYWdlLCB9KSA9PiB7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyBjbGFzc05hbWU6IGIoeyBhY3RpdmU6IGJvb2ttYXJrZWRQYWdlIH0pLCBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICBvbkNoYW5nZUJvb2ttYXJrUGFnZSghYm9va21hcmtlZFBhZ2UpO1xuICAgICAgICB9LCB2aWV3OiBcImZsYXQtc2Vjb25kYXJ5XCIgfSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChCdXR0b24uSWNvbiwgeyBjbGFzc05hbWU6IGIoJ2ljb24nKSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChJY29uQ29tcG9uZW50LCB7IGRhdGE6IGJvb2ttYXJrZWRQYWdlID8gU3RhckFjdGl2ZSA6IFN0YXJJbmFjdGl2ZSwgc2l6ZTogMjQgfSkpKSk7XG59O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRG9jUGFnZVRpdGxlLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRG9jUGFnZVRpdGxlLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IFN0YWdlTGFiZWwgfSBmcm9tICcuLi9TdGFnZUxhYmVsJztcbmltcG9ydCB7IEJvb2ttYXJrQnV0dG9uIH0gZnJvbSAnLi4vQm9va21hcmtCdXR0b24nO1xuaW1wb3J0ICcuL0RvY1BhZ2VUaXRsZS5zY3NzJztcbmNvbnN0IGIgPSBibG9jaygnZGMtZG9jLXBhZ2UtdGl0bGUnKTtcbmV4cG9ydCBjb25zdCBEb2NQYWdlVGl0bGUgPSAoeyBjaGlsZHJlbiwgc3RhZ2UsIGNsYXNzTmFtZSwgYm9va21hcmtlZFBhZ2UsIG9uQ2hhbmdlQm9va21hcmtQYWdlLCB9KSA9PiB7XG4gICAgY29uc3QgdmlzaWJsZVN0YWdlID0gc3RhZ2UgPT09ICd0ZWNoLXByZXZpZXcnID8gJ3ByZXZpZXcnIDogc3RhZ2U7XG4gICAgY29uc3QgbGFiZWwgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFN0YWdlTGFiZWwsIHsgc3RhZ2U6IHZpc2libGVTdGFnZSwgY2xhc3NOYW1lOiBiKCdsYWJlbCcpIH0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImgxXCIsIHsgY2xhc3NOYW1lOiBiKG51bGwsIGNsYXNzTmFtZSkgfSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB0eXBlb2YgYm9va21hcmtlZFBhZ2UgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB0eXBlb2Ygb25DaGFuZ2VCb29rbWFya1BhZ2UgIT09ICd1bmRlZmluZWQnICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KEJvb2ttYXJrQnV0dG9uLCB7IGJvb2ttYXJrZWRQYWdlOiBib29rbWFya2VkUGFnZSwgb25DaGFuZ2VCb29rbWFya1BhZ2U6IG9uQ2hhbmdlQm9va21hcmtQYWdlIH0pKSkpO1xufTtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIVE1MIH0gZnJvbSAnLi4vSFRNTCc7XG5leHBvcnQgY29uc3QgVGV4dCA9ICh7IGRhdGEgPSAnJywgaHRtbCA9IGZhbHNlLCBibG9jayA9IGZhbHNlIH0pID0+IHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHBhcmFncmFwaHMgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtkYXRhXTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIHBhcmFncmFwaHMubWFwKCh0ZXh0LCBpbmRleCkgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChibG9jayA/ICdkaXYnIDogJ3AnLCB7XG4gICAgICAgIGtleTogaW5kZXgsXG4gICAgICAgIGNsYXNzTmFtZTogYmxvY2sgPyAncCcgOiBudWxsLFxuICAgIH0sIGh0bWwgPyBSZWFjdC5jcmVhdGVFbGVtZW50KEhUTUwsIG51bGwsIHRleHQpIDogdGV4dCkpKSk7XG59O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRG9jTGVhZGluZ1BhZ2Uuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Eb2NMZWFkaW5nUGFnZS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgeyBEb2NMYXlvdXQgfSBmcm9tICcuLi9Eb2NMYXlvdXQnO1xuaW1wb3J0IHsgRG9jUGFnZVRpdGxlIH0gZnJvbSAnLi4vRG9jUGFnZVRpdGxlJztcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0JztcbmltcG9ydCB7IEhUTUwgfSBmcm9tICcuLi9IVE1MJztcbmltcG9ydCB7IERFRkFVTFRfU0VUVElOR1MgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0ICcuL0RvY0xlYWRpbmdQYWdlLnNjc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdkYy1kb2MtbGVhZGluZy1wYWdlJyk7XG5jb25zdCB7IHdpZGVGb3JtYXQ6IGRlZmF1bHRXaWRlRm9ybWF0IH0gPSBERUZBVUxUX1NFVFRJTkdTO1xuY29uc3QgcmVuZGVyTGVmdCA9IChkYXRhLCBpc1Jvb3QpID0+IHtcbiAgICBjb25zdCB7IGltZ1NyYyB9ID0gZGF0YTtcbiAgICBpZiAoIWltZ1NyYyB8fCAhaXNSb290KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2xpbmtzLWxlZnQnKSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsgc3JjOiBpbWdTcmMgfSkpKTtcbn07XG5jb25zdCByZW5kZXJSaWdodCA9IChkYXRhLCBpc1Jvb3QpID0+IHtcbiAgICBjb25zdCB7IHRpdGxlLCBkZXNjcmlwdGlvbiwgaHJlZiwgbGlua3MgfSA9IGRhdGE7XG4gICAgbGV0IHRpdGxlQ29udGVudDtcbiAgICBpZiAoaHJlZikge1xuICAgICAgICB0aXRsZUNvbnRlbnQgPSAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgeyBocmVmOiBocmVmLCBjbGFzc05hbWU6IGIoJ2xpbmtzLWxpbmsnKSB9LCB0aXRsZSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGl0bGVDb250ZW50ID0gdGl0bGU7XG4gICAgfVxuICAgIGlmIChpc1Jvb3QpIHtcbiAgICAgICAgdGl0bGVDb250ZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChcImgyXCIsIHsgY2xhc3NOYW1lOiBiKCdsaW5rcy10aXRsZScsIHsgcm9vdDogaXNSb290IH0pIH0sIHRpdGxlQ29udGVudCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aXRsZUNvbnRlbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdsaW5rcy10aXRsZScpIH0sIHRpdGxlQ29udGVudCk7XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbGlua3MtcmlnaHQnKSB9LFxuICAgICAgICB0aXRsZUNvbnRlbnQsXG4gICAgICAgIGRlc2NyaXB0aW9uICYmIGlzUm9vdCA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwXCIsIHsgY2xhc3NOYW1lOiBiKCdsaW5rcy1kZXNjcmlwdGlvbicpIH0sIGRlc2NyaXB0aW9uKSA6IG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGlua3MsIHsgbGlua3M6IGxpbmtzIH0pKSk7XG59O1xuZXhwb3J0IGNvbnN0IExpbmsgPSAoeyBkYXRhLCBpc1Jvb3QgfSkgPT4ge1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHsgY2xhc3NOYW1lOiBiKCdsaW5rcy1pdGVtJywgeyByb290OiBpc1Jvb3QgfSkgfSxcbiAgICAgICAgcmVuZGVyTGVmdChkYXRhLCBpc1Jvb3QpLFxuICAgICAgICByZW5kZXJSaWdodChkYXRhLCBpc1Jvb3QpKSk7XG59O1xuZXhwb3J0IGNvbnN0IExpbmtzID0gKHsgbGlua3MsIGlzUm9vdCB9KSA9PiB7XG4gICAgaWYgKCFsaW5rcyB8fCAhbGlua3MubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiLCB7IGNsYXNzTmFtZTogYignbGlua3MnLCB7IHJvb3Q6IGlzUm9vdCB9KSB9LCBsaW5rcy5tYXAoKGRhdGEsIGluZGV4KSA9PiAoUmVhY3QuY3JlYXRlRWxlbWVudChMaW5rLCB7IGtleTogaW5kZXgsIGRhdGE6IGRhdGEsIGlzUm9vdDogaXNSb290IH0pKSkpKTtcbn07XG5leHBvcnQgY29uc3QgRG9jTGVhZGluZ1BhZ2UgPSAoeyBkYXRhOiB7IHRpdGxlLCBkZXNjcmlwdGlvbiwgbGlua3MgfSwgdG9jLCByb3V0ZXIsIGxhbmcsIGhlYWRlckhlaWdodCwgd2lkZUZvcm1hdCA9IGRlZmF1bHRXaWRlRm9ybWF0LCBoaWRlVG9jSGVhZGVyLCBoaWRlVG9jLCB0b2NUaXRsZUljb24sIGZvb3RlciwgfSkgPT4ge1xuICAgIGNvbnN0IG1vZGVzID0ge1xuICAgICAgICAncmVndWxhci1wYWdlLXdpZHRoJzogIXdpZGVGb3JtYXQsXG4gICAgfTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9jTGF5b3V0LCB7IHRvYzogdG9jLCByb3V0ZXI6IHJvdXRlciwgbGFuZzogbGFuZywgaGVhZGVySGVpZ2h0OiBoZWFkZXJIZWlnaHQsIGNsYXNzTmFtZTogYihtb2RlcyksIGhpZGVUb2NIZWFkZXI6IGhpZGVUb2NIZWFkZXIsIGhpZGVUb2M6IGhpZGVUb2MsIHRvY1RpdGxlSWNvbjogdG9jVGl0bGVJY29uLCBmb290ZXI6IGZvb3RlciB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChEb2NMYXlvdXQuQ2VudGVyLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcIm1haW5cIiwgeyBjbGFzc05hbWU6IGIoJ21haW4nKSB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9jUGFnZVRpdGxlLCB7IHN0YWdlOiB0b2Muc3RhZ2UsIGNsYXNzTmFtZTogYigndGl0bGUnKSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEhUTUwsIG51bGwsIHRpdGxlKSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignZGVzY3JpcHRpb24nKSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFRleHQsIHsgZGF0YTogZGVzY3JpcHRpb24sIGh0bWw6IHRydWUsIGJsb2NrOiB0cnVlIH0pKSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KExpbmtzLCB7IGxpbmtzOiBsaW5rcywgaXNSb290OiB0cnVlIH0pKSkpKTtcbn07XG4iLCJmdW5jdGlvbiB0KHQpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT10JiYxPT09dC5ub2RlVHlwZX1mdW5jdGlvbiBlKHQsZSl7cmV0dXJuKCFlfHxcImhpZGRlblwiIT09dCkmJlwidmlzaWJsZVwiIT09dCYmXCJjbGlwXCIhPT10fWZ1bmN0aW9uIG4odCxuKXtpZih0LmNsaWVudEhlaWdodDx0LnNjcm9sbEhlaWdodHx8dC5jbGllbnRXaWR0aDx0LnNjcm9sbFdpZHRoKXt2YXIgcj1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk7cmV0dXJuIGUoci5vdmVyZmxvd1ksbil8fGUoci5vdmVyZmxvd1gsbil8fGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2lmKCF0Lm93bmVyRG9jdW1lbnR8fCF0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpcmV0dXJuIG51bGw7dHJ5e3JldHVybiB0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZnJhbWVFbGVtZW50fWNhdGNoKHQpe3JldHVybiBudWxsfX0odCk7cmV0dXJuISFlJiYoZS5jbGllbnRIZWlnaHQ8dC5zY3JvbGxIZWlnaHR8fGUuY2xpZW50V2lkdGg8dC5zY3JvbGxXaWR0aCl9KHQpfXJldHVybiExfWZ1bmN0aW9uIHIodCxlLG4scixpLG8sbCxkKXtyZXR1cm4gbzx0JiZsPmV8fG8+dCYmbDxlPzA6bzw9dCYmZDw9bnx8bD49ZSYmZD49bj9vLXQtcjpsPmUmJmQ8bnx8bzx0JiZkPm4/bC1lK2k6MH12YXIgaT1mdW5jdGlvbihlLGkpe3ZhciBvPXdpbmRvdyxsPWkuc2Nyb2xsTW9kZSxkPWkuYmxvY2ssZj1pLmlubGluZSxoPWkuYm91bmRhcnksdT1pLnNraXBPdmVyZmxvd0hpZGRlbkVsZW1lbnRzLHM9XCJmdW5jdGlvblwiPT10eXBlb2YgaD9oOmZ1bmN0aW9uKHQpe3JldHVybiB0IT09aH07aWYoIXQoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgdGFyZ2V0XCIpO2Zvcih2YXIgYSxjLGc9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHA9W10sbT1lO3QobSkmJnMobSk7KXtpZigobT1udWxsPT0oYz0oYT1tKS5wYXJlbnRFbGVtZW50KT9hLmdldFJvb3ROb2RlKCkuaG9zdHx8bnVsbDpjKT09PWcpe3AucHVzaChtKTticmVha31udWxsIT1tJiZtPT09ZG9jdW1lbnQuYm9keSYmbihtKSYmIW4oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KXx8bnVsbCE9bSYmbihtLHUpJiZwLnB1c2gobSl9Zm9yKHZhciB3PW8udmlzdWFsVmlld3BvcnQ/by52aXN1YWxWaWV3cG9ydC53aWR0aDppbm5lcldpZHRoLHY9by52aXN1YWxWaWV3cG9ydD9vLnZpc3VhbFZpZXdwb3J0LmhlaWdodDppbm5lckhlaWdodCxXPXdpbmRvdy5zY3JvbGxYfHxwYWdlWE9mZnNldCxIPXdpbmRvdy5zY3JvbGxZfHxwYWdlWU9mZnNldCxiPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseT1iLmhlaWdodCxFPWIud2lkdGgsTT1iLnRvcCxWPWIucmlnaHQseD1iLmJvdHRvbSxJPWIubGVmdCxDPVwic3RhcnRcIj09PWR8fFwibmVhcmVzdFwiPT09ZD9NOlwiZW5kXCI9PT1kP3g6TSt5LzIsUj1cImNlbnRlclwiPT09Zj9JK0UvMjpcImVuZFwiPT09Zj9WOkksVD1bXSxrPTA7azxwLmxlbmd0aDtrKyspe3ZhciBCPXBba10sRD1CLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLE89RC5oZWlnaHQsWD1ELndpZHRoLFk9RC50b3AsTD1ELnJpZ2h0LFM9RC5ib3R0b20saj1ELmxlZnQ7aWYoXCJpZi1uZWVkZWRcIj09PWwmJk0+PTAmJkk+PTAmJng8PXYmJlY8PXcmJk0+PVkmJng8PVMmJkk+PWomJlY8PUwpcmV0dXJuIFQ7dmFyIE49Z2V0Q29tcHV0ZWRTdHlsZShCKSxxPXBhcnNlSW50KE4uYm9yZGVyTGVmdFdpZHRoLDEwKSx6PXBhcnNlSW50KE4uYm9yZGVyVG9wV2lkdGgsMTApLEE9cGFyc2VJbnQoTi5ib3JkZXJSaWdodFdpZHRoLDEwKSxGPXBhcnNlSW50KE4uYm9yZGVyQm90dG9tV2lkdGgsMTApLEc9MCxKPTAsSz1cIm9mZnNldFdpZHRoXCJpbiBCP0Iub2Zmc2V0V2lkdGgtQi5jbGllbnRXaWR0aC1xLUE6MCxQPVwib2Zmc2V0SGVpZ2h0XCJpbiBCP0Iub2Zmc2V0SGVpZ2h0LUIuY2xpZW50SGVpZ2h0LXotRjowLFE9XCJvZmZzZXRXaWR0aFwiaW4gQj8wPT09Qi5vZmZzZXRXaWR0aD8wOlgvQi5vZmZzZXRXaWR0aDowLFU9XCJvZmZzZXRIZWlnaHRcImluIEI/MD09PUIub2Zmc2V0SGVpZ2h0PzA6Ty9CLm9mZnNldEhlaWdodDowO2lmKGc9PT1CKUc9XCJzdGFydFwiPT09ZD9DOlwiZW5kXCI9PT1kP0MtdjpcIm5lYXJlc3RcIj09PWQ/cihILEgrdix2LHosRixIK0MsSCtDK3kseSk6Qy12LzIsSj1cInN0YXJ0XCI9PT1mP1I6XCJjZW50ZXJcIj09PWY/Ui13LzI6XCJlbmRcIj09PWY/Ui13OnIoVyxXK3csdyxxLEEsVytSLFcrUitFLEUpLEc9TWF0aC5tYXgoMCxHK0gpLEo9TWF0aC5tYXgoMCxKK1cpO2Vsc2V7Rz1cInN0YXJ0XCI9PT1kP0MtWS16OlwiZW5kXCI9PT1kP0MtUytGK1A6XCJuZWFyZXN0XCI9PT1kP3IoWSxTLE8seixGK1AsQyxDK3kseSk6Qy0oWStPLzIpK1AvMixKPVwic3RhcnRcIj09PWY/Ui1qLXE6XCJjZW50ZXJcIj09PWY/Ui0oaitYLzIpK0svMjpcImVuZFwiPT09Zj9SLUwrQStLOnIoaixMLFgscSxBK0ssUixSK0UsRSk7dmFyIFo9Qi5zY3JvbGxMZWZ0LCQ9Qi5zY3JvbGxUb3A7Qys9JC0oRz1NYXRoLm1heCgwLE1hdGgubWluKCQrRy9VLEIuc2Nyb2xsSGVpZ2h0LU8vVStQKSkpLFIrPVotKEo9TWF0aC5tYXgoMCxNYXRoLm1pbihaK0ovUSxCLnNjcm9sbFdpZHRoLVgvUStLKSkpfVQucHVzaCh7ZWw6Qix0b3A6RyxsZWZ0Okp9KX1yZXR1cm4gVH07ZXhwb3J0e2kgYXMgZGVmYXVsdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgY29tcHV0ZSBmcm9tICdjb21wdXRlLXNjcm9sbC1pbnRvLXZpZXcnO1xuXG5mdW5jdGlvbiBpc09wdGlvbnNPYmplY3Qob3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucyA9PT0gT2JqZWN0KG9wdGlvbnMpICYmIE9iamVjdC5rZXlzKG9wdGlvbnMpLmxlbmd0aCAhPT0gMDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdEJlaGF2aW9yKGFjdGlvbnMsIGJlaGF2aW9yKSB7XG4gIGlmIChiZWhhdmlvciA9PT0gdm9pZCAwKSB7XG4gICAgYmVoYXZpb3IgPSAnYXV0byc7XG4gIH1cblxuICB2YXIgY2FuU21vb3RoU2Nyb2xsID0gKCdzY3JvbGxCZWhhdmlvcicgaW4gZG9jdW1lbnQuYm9keS5zdHlsZSk7XG4gIGFjdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZikge1xuICAgIHZhciBlbCA9IF9yZWYuZWwsXG4gICAgICAgIHRvcCA9IF9yZWYudG9wLFxuICAgICAgICBsZWZ0ID0gX3JlZi5sZWZ0O1xuXG4gICAgaWYgKGVsLnNjcm9sbCAmJiBjYW5TbW9vdGhTY3JvbGwpIHtcbiAgICAgIGVsLnNjcm9sbCh7XG4gICAgICAgIHRvcDogdG9wLFxuICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICBiZWhhdmlvcjogYmVoYXZpb3JcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbC5zY3JvbGxUb3AgPSB0b3A7XG4gICAgICBlbC5zY3JvbGxMZWZ0ID0gbGVmdDtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJsb2NrOiAnZW5kJyxcbiAgICAgIGlubGluZTogJ25lYXJlc3QnXG4gICAgfTtcbiAgfVxuXG4gIGlmIChpc09wdGlvbnNPYmplY3Qob3B0aW9ucykpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYmxvY2s6ICdzdGFydCcsXG4gICAgaW5saW5lOiAnbmVhcmVzdCdcbiAgfTtcbn1cblxuZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcodGFyZ2V0LCBvcHRpb25zKSB7XG4gIHZhciBpc1RhcmdldEF0dGFjaGVkID0gdGFyZ2V0LmlzQ29ubmVjdGVkIHx8IHRhcmdldC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0YXJnZXQpO1xuXG4gIGlmIChpc09wdGlvbnNPYmplY3Qob3B0aW9ucykgJiYgdHlwZW9mIG9wdGlvbnMuYmVoYXZpb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gb3B0aW9ucy5iZWhhdmlvcihpc1RhcmdldEF0dGFjaGVkID8gY29tcHV0ZSh0YXJnZXQsIG9wdGlvbnMpIDogW10pO1xuICB9XG5cbiAgaWYgKCFpc1RhcmdldEF0dGFjaGVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGNvbXB1dGVPcHRpb25zID0gZ2V0T3B0aW9ucyhvcHRpb25zKTtcbiAgcmV0dXJuIGRlZmF1bHRCZWhhdmlvcihjb21wdXRlKHRhcmdldCwgY29tcHV0ZU9wdGlvbnMpLCBjb21wdXRlT3B0aW9ucy5iZWhhdmlvcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNjcm9sbEludG9WaWV3OyIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHNjcm9sbEludG9WaWV3IGZyb20gJ3Njcm9sbC1pbnRvLXZpZXctaWYtbmVlZGVkJztcbmV4cG9ydCBjbGFzcyBTY3JvbGxzcHkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICAgICAgdGhpcy5pdGVtUmVmcyA9IHRoaXMucHJvcHMuaXRlbXMubWFwKCgpID0+IFJlYWN0LmNyZWF0ZVJlZigpKTtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxWYWx1ZXMgPSAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJFbCA9IHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lckVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyBjaGlsZEhlaWdodCwgbWF4SXRlbXNJblZpZXcgfSA9IHRoaXMuZ2V0Q29udGFpbmVyVmFsdWVzKGNvbnRhaW5lckVsKTtcbiAgICAgICAgICAgIHRoaXMubGFzdEl0ZW1JbmRleEluVmlldyA9XG4gICAgICAgICAgICAgICAgTWF0aC5yb3VuZChjb250YWluZXJFbC5zY3JvbGxUb3AgLyBjaGlsZEhlaWdodCkgKyBtYXhJdGVtc0luVmlldyAtIDE7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpcnN0SXRlbUluZGV4SW5WaWV3KG1heEl0ZW1zSW5WaWV3KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0xpc3RJdGVtID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLnNjcm9sbFRvTGlzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gdGhpcy5zdGF0ZS5pblZpZXdTdGF0ZS5maW5kSW5kZXgoKGlzQWN0aXZlKSA9PiBpc0FjdGl2ZSk7XG4gICAgICAgICAgICBpZiAoaXRlbUluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLml0ZW1SZWZzW2l0ZW1JbmRleF0gJiYgdGhpcy5pdGVtUmVmc1tpdGVtSW5kZXhdLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsSW50b1ZpZXcocmVmLCB7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbE1vZGU6ICdpZi1uZWVkZWQnLFxuICAgICAgICAgICAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgICAgICAgICAgICBpbmxpbmU6ICduZWFyZXN0JyxcbiAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmluaXRTZWN0aW9ucyA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUFjdGl2ZUl0ZW1zKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaGFuZGxlU2Nyb2xsID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsQnlDbGljaykge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBlbmQgb2Ygc21vb3RoIGF1dG8tc2Nyb2xsXG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGFuZGxlU2Nyb2xsRGVib3VuY2VkKTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5oYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQnlDbGljayA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zYXZlQWN0aXZlSXRlbXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcsIHJlYWN0L3NvcnQtY29tcFxuICAgICAgICB0aGlzLmhhbmRsZVNjcm9sbERlYm91bmNlZCA9IF8uZGVib3VuY2UodGhpcy5oYW5kbGVTY3JvbGwsIDEwMCk7XG4gICAgICAgIHRoaXMuaGFuZGxlU2VjdGlvbkNsaWNrID0gKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG9uU2VjdGlvbkNsaWNrIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXVzZVNjcm9sbEhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVBY3RpdmVJdGVtcyh0YXJnZXQuaGFzaCk7XG4gICAgICAgICAgICAgICAgaWYgKG9uU2VjdGlvbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uU2VjdGlvbkNsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB0YXJnZXRJdGVtczogW10sXG4gICAgICAgICAgICBpblZpZXdTdGF0ZTogW10sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2Nyb2xsQnlDbGljayA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpcnN0SXRlbUluZGV4SW5WaWV3ID0gLTE7XG4gICAgICAgIHRoaXMubGFzdEl0ZW1JbmRleEluVmlldyA9IC0xO1xuICAgIH1cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5pbml0SXRlbXMoKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGFuZGxlU2Nyb2xsKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLmNvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoY29udGFpbmVyRWwpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMudXBkYXRlU2Nyb2xsVmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgICAgY29uc3QgeyBpdGVtcywgcm91dGVyIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGluVmlld1N0YXRlIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBpZiAoIV8uaXNFcXVhbChpblZpZXdTdGF0ZSwgcHJldlN0YXRlLmluVmlld1N0YXRlKSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0xpc3RJdGVtKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFfLmlzRXF1YWwoaXRlbXMsIHByZXZQcm9wcy5pdGVtcykgfHwgcHJldlByb3BzLnJvdXRlci5wYXRobmFtZSAhPT0gcm91dGVyLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRJdGVtcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb3V0ZXIuaGFzaCAhPT0gcHJldlByb3BzLnJvdXRlci5oYXNoKSB7XG4gICAgICAgICAgICB0aGlzLnBhdXNlU2Nyb2xsSGFuZGxlcigpO1xuICAgICAgICAgICAgdGhpcy5zYXZlQWN0aXZlSXRlbXMocm91dGVyLmhhc2gpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5oYW5kbGVTY3JvbGwpO1xuICAgICAgICBjb25zdCBjb250YWluZXJFbCA9IHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjb250YWluZXJFbCkge1xuICAgICAgICAgICAgY29udGFpbmVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy51cGRhdGVTY3JvbGxWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgY3VycmVudENsYXNzTmFtZSwgY2xhc3NOYW1lIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCB7IGluVmlld1N0YXRlIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCBpdGVtcyA9IGNoaWxkcmVuLm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNoaWxkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBDaGlsZFRhZyA9IGNoaWxkLnR5cGU7XG4gICAgICAgICAgICBsZXQgY2hpbGRDbGFzc05hbWVzID0gY2hpbGQucHJvcHMuY2xhc3NOYW1lO1xuICAgICAgICAgICAgaWYgKGluVmlld1N0YXRlW2luZGV4XSAmJiBjdXJyZW50Q2xhc3NOYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjaGlsZENsYXNzTmFtZXMgKz0gYCAke2N1cnJlbnRDbGFzc05hbWV9YDtcbiAgICAgICAgICAgICAgICB0aGlzLnN5bmNTY3JvbGwoaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KENoaWxkVGFnLCB7IGtleTogY2hpbGQua2V5LCBjbGFzc05hbWU6IGNoaWxkQ2xhc3NOYW1lcywgb25DbGljazogdGhpcy5oYW5kbGVTZWN0aW9uQ2xpY2ssIHJlZjogdGhpcy5pdGVtUmVmc1tpbmRleF0gfSwgY2hpbGQucHJvcHMuY2hpbGRyZW4pKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHJlZjogdGhpcy5jb250YWluZXJSZWYgfSwgaXRlbXMpKTtcbiAgICB9XG4gICAgdXBkYXRlRmlyc3RJdGVtSW5kZXhJblZpZXcobWF4SXRlbXNJblZpZXcpIHtcbiAgICAgICAgdGhpcy5maXJzdEl0ZW1JbmRleEluVmlldyA9IE1hdGgubWF4KHRoaXMubGFzdEl0ZW1JbmRleEluVmlldyAtIChtYXhJdGVtc0luVmlldyAtIDEpLCAwKTtcbiAgICB9XG4gICAgZ2V0Q29udGFpbmVyVmFsdWVzKGNvbnRhaW5lckVsKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIC8qIEF2ZXJhZ2UgdmFsdWVzICovXG4gICAgICAgIGNvbnN0IGNoaWxkSGVpZ2h0ID0gTWF0aC5yb3VuZChjb250YWluZXJFbC5zY3JvbGxIZWlnaHQgLyBjaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICBjb25zdCBtYXhJdGVtc0luVmlldyA9IE1hdGgucm91bmQoY29udGFpbmVyRWwuY2xpZW50SGVpZ2h0IC8gY2hpbGRIZWlnaHQpO1xuICAgICAgICByZXR1cm4geyBjaGlsZEhlaWdodCwgbWF4SXRlbXNJblZpZXcgfTtcbiAgICB9XG4gICAgc3luY1Njcm9sbChpbmRleCkge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBjb250YWluZXJFbCA9IHRoaXMuY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghY29udGFpbmVyRWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGNoaWxkSGVpZ2h0LCBtYXhJdGVtc0luVmlldyB9ID0gdGhpcy5nZXRDb250YWluZXJWYWx1ZXMoY29udGFpbmVyRWwpO1xuICAgICAgICBpZiAodGhpcy5sYXN0SXRlbUluZGV4SW5WaWV3ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5sYXN0SXRlbUluZGV4SW5WaWV3ID0gbWF4SXRlbXNJblZpZXcgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRmlyc3RJdGVtSW5kZXhJblZpZXcobWF4SXRlbXNJblZpZXcpO1xuICAgICAgICBsZXQgaXRlbUluVmlldyA9IGZhbHNlO1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5sYXN0SXRlbUluZGV4SW5WaWV3KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RJdGVtSW5kZXhJblZpZXcgPSBNYXRoLm1pbihpbmRleCArIDEsIGNoaWxkcmVuLmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGluZGV4IDw9IHRoaXMuZmlyc3RJdGVtSW5kZXhJblZpZXcpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEl0ZW1JbmRleEluVmlldyA9IE1hdGgubWF4KGluZGV4ICsgbWF4SXRlbXNJblZpZXcgLSAyLCBtYXhJdGVtc0luVmlldyAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaXRlbUluVmlldyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVGaXJzdEl0ZW1JbmRleEluVmlldyhtYXhJdGVtc0luVmlldyk7XG4gICAgICAgIGNvbnN0IGVuZElzTmVhciA9IGluZGV4ICsgbWF4SXRlbXNJblZpZXcgLyAyID4gY2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgICBpZiAoaXRlbUluVmlldykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGVuZElzTmVhcikge1xuICAgICAgICAgICAgY29udGFpbmVyRWwuc2Nyb2xsVG9wID0gY29udGFpbmVyRWwuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29udGFpbmVyRWwuc2Nyb2xsVG9wID0gY2hpbGRIZWlnaHQgKiB0aGlzLmZpcnN0SXRlbUluZGV4SW5WaWV3O1xuICAgICAgICB9XG4gICAgfVxuICAgIGluaXRJdGVtcygpIHtcbiAgICAgICAgY29uc3QgeyBpdGVtcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgdGFyZ2V0SXRlbXMgPSBpdGVtc1xuICAgICAgICAgICAgLm1hcCgoaXRlbSkgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaXRlbS5zbGljZSgxKSkpXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGFyZ2V0SXRlbXMgfSwgdGhpcy5pbml0U2VjdGlvbnMpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvTGlzdEl0ZW0oKTtcbiAgICB9XG4gICAgc2F2ZUFjdGl2ZUl0ZW1zKGhhc2gpIHtcbiAgICAgICAgY29uc3QgdmlzaWJsZUl0ZW1zID0gdGhpcy5nZXRWaWV3U3RhdGUoaGFzaCk7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpblZpZXdTdGF0ZTogdmlzaWJsZUl0ZW1zIH0pO1xuICAgIH1cbiAgICBnZXRWaWV3U3RhdGUoaGFzaCkge1xuICAgICAgICBjb25zdCB7IHRhcmdldEl0ZW1zLCBpblZpZXdTdGF0ZSB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3QgeyBoZWFkZXJIZWlnaHQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPZmZzZXQgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgIGNvbnN0IHZpc2libGVJdGVtT2Zmc2V0ID0gW107XG4gICAgICAgIGxldCBpc09uZUFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwdXJlSGFzaCA9IGhhc2ggJiYgaGFzaC5zdGFydHNXaXRoKCcjJykgPyBoYXNoLnN1YnN0cmluZygxKSA6IGhhc2g7XG4gICAgICAgIHRhcmdldEl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSBpdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZUl0ZW0gPSBvZmZzZXRUb3AgPCBoZWFkZXJIZWlnaHQgKyAxO1xuICAgICAgICAgICAgaWYgKHB1cmVIYXNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHB1cmVIYXNoID09PSBpdGVtLmdldEF0dHJpYnV0ZSgnaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlSXRlbU9mZnNldC5wdXNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpc09uZUFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmxlSXRlbU9mZnNldC5wdXNoKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc1Zpc2libGVJdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZpc2libGVJdGVtT2Zmc2V0W2luZGV4IC0gMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUl0ZW1PZmZzZXRbaW5kZXggLSAxXSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2aXNpYmxlSXRlbU9mZnNldC5wdXNoKHRydWUpO1xuICAgICAgICAgICAgICAgIGlzT25lQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZpc2libGVJdGVtT2Zmc2V0LnB1c2goZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRhcmdldEl0ZW1zICYmIHRhcmdldEl0ZW1zLmxlbmd0aCAmJiAhaXNPbmVBY3RpdmUpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50T2Zmc2V0IDwgdGFyZ2V0SXRlbXNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZUl0ZW1PZmZzZXRbMF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlzT25lQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNPbmVBY3RpdmUgPyB2aXNpYmxlSXRlbU9mZnNldCA6IGluVmlld1N0YXRlO1xuICAgIH1cbiAgICBwYXVzZVNjcm9sbEhhbmRsZXIoKSB7XG4gICAgICAgIC8vIHdhaXQgZm9yIHRoZSBlbmQgb2Ygc21vb3RoIGF1dG8tc2Nyb2xsXG4gICAgICAgIHRoaXMuc2Nyb2xsQnlDbGljayA9IHRydWU7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhhbmRsZVNjcm9sbCk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhhbmRsZVNjcm9sbERlYm91bmNlZCk7XG4gICAgfVxufVxuU2Nyb2xsc3B5LmRlZmF1bHRQcm9wcyA9IHtcbiAgICBjdXJyZW50Q2xhc3NOYW1lOiAnU2Nyb2xsc3B5JyxcbiAgICBzZWN0aW9uT2Zmc2V0OiAyMCxcbiAgICBoZWFkZXJIZWlnaHQ6IDAsXG59O1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTWluaVRvYy5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL01pbmlUb2Muc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCB7IHdpdGhUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgU2Nyb2xsc3B5IH0gZnJvbSAnLi4vU2Nyb2xsc3B5JztcbmltcG9ydCAnLi9NaW5pVG9jLnNjc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdkYy1taW5pLXRvYycpO1xuY2xhc3MgTWluaVRvYyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMucmVuZGVyU2VjdGlvbiA9IChwcmV2U2VjdGlvbnMsIGhlYWRpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2U2VjdGlvbnMuY29uY2F0KHRoaXMucmVuZGVySXRlbShoZWFkaW5nKSwgaGVhZGluZy5pdGVtcyA/IGhlYWRpbmcuaXRlbXMubWFwKChpdGVtKSA9PiB0aGlzLnJlbmRlckl0ZW0oaXRlbSwgdHJ1ZSkpIDogW10pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlbmRlckl0ZW0gPSAoeyB0aXRsZSwgaHJlZiB9LCBpc0NoaWxkID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHsga2V5OiBocmVmLCBcImRhdGEtaGFzaFwiOiBocmVmLCBjbGFzc05hbWU6IGIoJ3NlY3Rpb24nLCB7IGNoaWxkOiBpc0NoaWxkIH0pIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgeyBocmVmOiBocmVmLCBjbGFzc05hbWU6IGIoJ3NlY3Rpb24tbGluaycpLCBcImRhdGEtcm91dGVyLXNoYWxsb3dcIjogdHJ1ZSB9LCB0aXRsZSkpKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgICBjb25zdCB7IGkxOG4sIGxhbmcgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChwcmV2UHJvcHMubGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgICAgaTE4bi5jaGFuZ2VMYW5ndWFnZShsYW5nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgbGFuZywgaTE4biwgdCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGkxOG4ubGFuZ3VhZ2UgIT09IGxhbmcpIHtcbiAgICAgICAgICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobGFuZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCkgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ3RpdGxlJykgfSxcbiAgICAgICAgICAgICAgICB0KCd0aXRsZScpLFxuICAgICAgICAgICAgICAgIFwiOlwiKSxcbiAgICAgICAgICAgIHRoaXMucmVuZGVyU2VjdGlvbnMoKSkpO1xuICAgIH1cbiAgICByZW5kZXJTZWN0aW9ucygpIHtcbiAgICAgICAgY29uc3QgeyBoZWFkaW5ncywgcm91dGVyLCBoZWFkZXJIZWlnaHQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChoZWFkaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlY3Rpb25IcmVmcyA9IGhlYWRpbmdzLnJlZHVjZSgocHJldkhyZWZzLCB7IGhyZWYsIGl0ZW1zIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gaXRlbXMgPyBpdGVtcy5tYXAoKHsgaHJlZjogaXRlbUhyZWYgfSkgPT4gaXRlbUhyZWYpIDogW107XG4gICAgICAgICAgICByZXR1cm4gcHJldkhyZWZzLmNvbmNhdChocmVmLCBjaGlsZHJlbik7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgaWYgKHNlY3Rpb25IcmVmcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChTY3JvbGxzcHksIHsgY2xhc3NOYW1lOiBiKCdzZWN0aW9ucycpLCBjdXJyZW50Q2xhc3NOYW1lOiBiKCdzZWN0aW9uJywgeyBhY3RpdmU6IHRydWUgfSksIGl0ZW1zOiBzZWN0aW9uSHJlZnMsIHJvdXRlcjogcm91dGVyLCBoZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCB9LCBoZWFkaW5ncy5yZWR1Y2UodGhpcy5yZW5kZXJTZWN0aW9uLCBbXSkpKTtcbiAgICB9XG59XG5NaW5pVG9jLnByb3BUeXBlcyA9IHtcbiAgICBoZWFkaW5nczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG59O1xuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCdtaW5pLXRvYycpKE1pbmlUb2MpO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQnJlYWRjcnVtYnMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9CcmVhZGNydW1icy5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgJy4vQnJlYWRjcnVtYnMuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLWJyZWFkY3J1bWJzJyk7XG5leHBvcnQgY29uc3QgQnJlYWRjcnVtYnMgPSAoeyBpdGVtcywgY2xhc3NOYW1lIH0pID0+IHtcbiAgICBpZiAoIWl0ZW1zIHx8ICFpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcIm5hdlwiLCB7IGNsYXNzTmFtZTogYihudWxsLCBjbGFzc05hbWUpLCBcImFyaWEtbGFiZWxcIjogXCJCcmVhZGNydW1ic1wiIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJvbFwiLCB7IGNsYXNzTmFtZTogYignaXRlbXMnKSB9LCBpdGVtcy5tYXAoKHsgbmFtZSwgdXJsIH0sIGluZGV4LCBzdWJJdGVtcykgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7IGtleTogaW5kZXgsIGNsYXNzTmFtZTogYignaXRlbScpIH0sIHJlbmRlckl0ZW0oeyBuYW1lLCB1cmwgfSwgaW5kZXggPT09IHN1Ykl0ZW1zLmxlbmd0aCAtIDEpKSkpKSkpO1xufTtcbmZ1bmN0aW9uIHJlbmRlckl0ZW0oeyBuYW1lLCB1cmwgfSwgaXNMYXN0KSB7XG4gICAgY29uc3QgaGFzVXJsID0gQm9vbGVhbih1cmwpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KGhhc1VybCAmJiAhaXNMYXN0ID8gJ2EnIDogJ3NwYW4nLCB7XG4gICAgICAgIGNsYXNzTmFtZTogYigndGV4dCcsIHsgbGluazogaGFzVXJsIH0pLFxuICAgICAgICBocmVmOiB1cmwsXG4gICAgICAgIFsnYXJpYS1jdXJyZW50J106IGlzTGFzdCA/ICdwYWdlJyA6IG51bGwsXG4gICAgfSwgbmFtZSk7XG59XG4iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmV4cG9ydCBkZWZhdWx0ICgoe1xuICBzdHlsZXMgPSB7fSxcbiAgLi4ucHJvcHNcbn0pID0+IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3ZnXCIsIF9leHRlbmRzKHtcbiAgd2lkdGg6IFwiMTVcIixcbiAgaGVpZ2h0OiBcIjEwXCIsXG4gIGZpbGw6IFwibm9uZVwiLFxuICB4bWxuczogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG59LCBwcm9wcyksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gIGQ6IFwiTTUuMjUgOS40MDZsLjYyNS0uNjI1YS4zODkuMzg5IDAgMDAtLjAzMS0uNTMxbC0yLjUtMi40MzhoMTAuNzgxYS4zOC4zOCAwIDAwLjM3NS0uMzc1di0uODc1YS40MDMuNDAzIDAgMDAtLjM3NS0uMzc1SDMuMzQ0bDIuNS0yLjQwNmEuMzg5LjM4OSAwIDAwLjAzMS0uNTMxTDUuMjUuNjI1YS40MjMuNDIzIDAgMDAtLjUzMSAwTC41OTQgNC43NWEuNDIzLjQyMyAwIDAwMCAuNTMxbDQuMTI1IDQuMTI1YS40MjMuNDIzIDAgMDAuNTMxIDB6XCIsXG4gIGZpbGw6IFwiY3VycmVudENvbG9yXCJcbn0pKSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHdpZHRoOiBcIjE1XCIsXG4gIGhlaWdodDogXCIxMFwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBkOiBcIk05LjcxOS42MjVsLS42MjUuNjI1YS4zODkuMzg5IDAgMDAuMDMxLjUzMWwyLjUgMi40MDdILjg3NWEuMzguMzggMCAwMC0uMzc1LjM3NXYuODc1YzAgLjIxOC4xNTYuMzc1LjM3NS4zNzVoMTAuNzVsLTIuNSAyLjQzN2EuMzg5LjM4OSAwIDAwLS4wMzEuNTMxbC42MjUuNjI1YS40MjMuNDIzIDAgMDAuNTMxIDBsNC4xMjUtNC4xMjVhLjQyMy40MjMgMCAwMDAtLjUzMUwxMC4yNS42MjVhLjQyMy40MjMgMCAwMC0uNTMxIDB6XCIsXG4gIGZpbGw6IFwiY3VycmVudENvbG9yXCJcbn0pKSk7IiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vVG9jTmF2UGFuZWwuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Ub2NOYXZQYW5lbC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgeyB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCBBcnJvd0xlZnQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL2Fycm93LWxlZnQuc3ZnJztcbmltcG9ydCBBcnJvd1JpZ2h0IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pY29ucy9hcnJvdy1yaWdodC5zdmcnO1xuaW1wb3J0IHsgaXNFeHRlcm5hbEhyZWYsIGlzQWN0aXZlSXRlbSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCAnLi9Ub2NOYXZQYW5lbC5zY3NzJztcbmNvbnN0IGIgPSBibG9jaygnZGMtbmF2LXRvYy1wYW5lbCcpO1xuY2xhc3MgVG9jTmF2UGFuZWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgZmxhdFRvYzogW10sXG4gICAgICAgICAgICBhY3RpdmVJdGVtSW5kZXg6IDAsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHRoaXMuZ2V0U3RhdGUodGhpcy5wcm9wcykpO1xuICAgIH1cbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgcm91dGVyLCBpMThuLCBsYW5nIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAocHJldlByb3BzLnJvdXRlci5wYXRobmFtZSAhPT0gcm91dGVyLnBhdGhuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHRoaXMuZ2V0U3RhdGUodGhpcy5wcm9wcykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmV2UHJvcHMubGFuZyAhPT0gbGFuZykge1xuICAgICAgICAgICAgaTE4bi5jaGFuZ2VMYW5ndWFnZShsYW5nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgZmxhdFRvYywgYWN0aXZlSXRlbUluZGV4IH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB7IGZpeGVkID0gZmFsc2UsIGNsYXNzTmFtZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCFmbGF0VG9jLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldkl0ZW0gPSBhY3RpdmVJdGVtSW5kZXggPiAwID8gZmxhdFRvY1thY3RpdmVJdGVtSW5kZXggLSAxXSA6IG51bGw7XG4gICAgICAgIGNvbnN0IG5leHRJdGVtID0gYWN0aXZlSXRlbUluZGV4IDwgZmxhdFRvYy5sZW5ndGggLSAxID8gZmxhdFRvY1thY3RpdmVJdGVtSW5kZXggKyAxXSA6IG51bGw7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYih7IGZpeGVkIH0sIGNsYXNzTmFtZSkgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2NvbnRlbnQnKSB9LFxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQ29udHJvbChwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb250cm9sKG5leHRJdGVtLCB0cnVlKSkpKTtcbiAgICB9XG4gICAgcmVuZGVyQ29udHJvbCh0b2NJdGVtLCBpc05leHQpIHtcbiAgICAgICAgY29uc3QgeyB0IH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBjb25zdCBrZXlIaW50ID0gaXNOZXh0ID8gJ2hpbnRfbmV4dCcgOiAnaGludF9wcmV2aW91cyc7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignY29udHJvbCcsIHsgbGVmdDogIWlzTmV4dCwgcmlnaHQ6IGlzTmV4dCB9KSB9LCB0b2NJdGVtICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignY29udHJvbC1oaW50JykgfSwgdChrZXlIaW50KSksXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdjb250cm9sLXRleHQnKSB9LCB0aGlzLnJlbmRlckxpbmsodG9jSXRlbSwgaXNOZXh0KSkpKSkpO1xuICAgIH1cbiAgICByZW5kZXJMaW5rKGl0ZW0sIGlzTmV4dCkge1xuICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzRXh0ZXJuYWwgPSBpc0V4dGVybmFsSHJlZihpdGVtLmhyZWYpO1xuICAgICAgICBjb25zdCBsaW5rQXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgIGhyZWY6IGl0ZW0uaHJlZixcbiAgICAgICAgICAgIHRhcmdldDogaXNFeHRlcm5hbCA/ICdfYmxhbmsnIDogJ19zZWxmJyxcbiAgICAgICAgICAgIHJlbDogaXNFeHRlcm5hbCA/ICdub29wZW5lciBub3JlZmVycmVyJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBPYmplY3QuYXNzaWduKHt9LCBsaW5rQXR0cmlidXRlcywgeyBjbGFzc05hbWU6IGIoJ2xpbmsnKSwgXCJkYXRhLXJvdXRlci1zaGFsbG93XCI6IHRydWUgfSksXG4gICAgICAgICAgICAhaXNOZXh0ICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXJyb3dMZWZ0LCBudWxsKSxcbiAgICAgICAgICAgIGl0ZW0ubmFtZSxcbiAgICAgICAgICAgIGlzTmV4dCAmJiBSZWFjdC5jcmVhdGVFbGVtZW50KEFycm93UmlnaHQsIG51bGwpKSk7XG4gICAgfVxuICAgIGdldFN0YXRlKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IGZsYXRUb2MgPSBbXTtcbiAgICAgICAgbGV0IGFjdGl2ZUl0ZW1JbmRleCA9IDA7XG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NJdGVtcyhpdGVtcykge1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoeyBocmVmLCBuYW1lLCBpdGVtczogc3ViSXRlbXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzSXRlbXMoc3ViSXRlbXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaHJlZikge1xuICAgICAgICAgICAgICAgICAgICBmbGF0VG9jLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaHJlZiAmJiBpc0FjdGl2ZUl0ZW0ocHJvcHMucm91dGVyLCBocmVmKSkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtSW5kZXggPSBmbGF0VG9jLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzc0l0ZW1zKHByb3BzLml0ZW1zKTtcbiAgICAgICAgcmV0dXJuIHsgZmxhdFRvYywgYWN0aXZlSXRlbUluZGV4IH07XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCd0b2MtbmF2LXBhbmVsJykoVG9jTmF2UGFuZWwpO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRWRpdEJ1dHRvbi5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0VkaXRCdXR0b24uc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IHsgd2l0aFRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBCdXR0b24sIEljb24gYXMgSWNvbkNvbXBvbmVudCB9IGZyb20gJ0BncmF2aXR5LXVpL3Vpa2l0JztcbmltcG9ydCBFZGl0SWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaWNvbnMvZWRpdC5zdmcnO1xuaW1wb3J0ICcuL0VkaXRCdXR0b24uc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLWVkaXQtYnV0dG9uJyk7XG5jbGFzcyBFZGl0QnV0dG9uIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgaTE4biwgbGFuZyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKHByZXZQcm9wcy5sYW5nICE9PSBsYW5nKSB7XG4gICAgICAgICAgICBpMThuLmNoYW5nZUxhbmd1YWdlKGxhbmcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyB0LCBocmVmIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJhXCIsIHsgaHJlZjogaHJlZiwgdGFyZ2V0OiBcIl9ibGFua1wiLCByZWw6IFwibm9yZWZlcnJlciBub29wZW5lclwiIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbiwgeyBjbGFzc05hbWU6IGIoKSwgdmlldzogXCJyYWlzZWRcIiB9LFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLkljb24sIG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoSWNvbkNvbXBvbmVudCwgeyBkYXRhOiBFZGl0SWNvbiB9KSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGIoJ3RleHQnKSB9LCB0KCdlZGl0LXRleHQnKSkpKSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgd2l0aFRyYW5zbGF0aW9uKCdjb250cm9scycpKEVkaXRCdXR0b24pO1xuIiwiLyoqISBcbiAqIGhvdGtleXMtanMgdjMuOS40IFxuICogQSBzaW1wbGUgbWljcm8tbGlicmFyeSBmb3IgZGVmaW5pbmcgYW5kIGRpc3BhdGNoaW5nIGtleWJvYXJkIHNob3J0Y3V0cy4gSXQgaGFzIG5vIGRlcGVuZGVuY2llcy4gXG4gKiBcbiAqIENvcHlyaWdodCAoYykgMjAyMiBrZW5ueSB3b25nIDx3b3dvaG9vQHFxLmNvbT4gXG4gKiBodHRwOi8vamF5d2NqbG92ZS5naXRodWIuaW8vaG90a2V5cyBcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBcbiAqL1xuXG52YXIgaXNmZiA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnID8gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSA+IDAgOiBmYWxzZTsgLy8g57uR5a6a5LqL5Lu2XG5cbmZ1bmN0aW9uIGFkZEV2ZW50KG9iamVjdCwgZXZlbnQsIG1ldGhvZCwgdXNlQ2FwdHVyZSkge1xuICBpZiAob2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICBvYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgbWV0aG9kLCB1c2VDYXB0dXJlKTtcbiAgfSBlbHNlIGlmIChvYmplY3QuYXR0YWNoRXZlbnQpIHtcbiAgICBvYmplY3QuYXR0YWNoRXZlbnQoXCJvblwiLmNvbmNhdChldmVudCksIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1ldGhvZCh3aW5kb3cuZXZlbnQpO1xuICAgIH0pO1xuICB9XG59IC8vIOS/rumlsOmUrui9rOaNouaIkOWvueW6lOeahOmUrueggVxuXG5cbmZ1bmN0aW9uIGdldE1vZHMobW9kaWZpZXIsIGtleSkge1xuICB2YXIgbW9kcyA9IGtleS5zbGljZSgwLCBrZXkubGVuZ3RoIC0gMSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgaSsrKSB7XG4gICAgbW9kc1tpXSA9IG1vZGlmaWVyW21vZHNbaV0udG9Mb3dlckNhc2UoKV07XG4gIH1cblxuICByZXR1cm4gbW9kcztcbn0gLy8g5aSE55CG5Lyg55qEa2V55a2X56ym5Liy6L2s5o2i5oiQ5pWw57uEXG5cblxuZnVuY3Rpb24gZ2V0S2V5cyhrZXkpIHtcbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnKSBrZXkgPSAnJztcbiAga2V5ID0ga2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7IC8vIOWMuemFjeS7u+S9leepuueZveWtl+espizljIXmi6znqbrmoLzjgIHliLbooajnrKbjgIHmjaLpobXnrKbnrYnnrYlcblxuICB2YXIga2V5cyA9IGtleS5zcGxpdCgnLCcpOyAvLyDlkIzml7borr7nva7lpJrkuKrlv6vmjbfplK7vvIzku6UnLCfliIblibJcblxuICB2YXIgaW5kZXggPSBrZXlzLmxhc3RJbmRleE9mKCcnKTsgLy8g5b+r5o236ZSu5Y+v6IO95YyF5ZCrJywn77yM6ZyA54m55q6K5aSE55CGXG5cbiAgZm9yICg7IGluZGV4ID49IDA7KSB7XG4gICAga2V5c1tpbmRleCAtIDFdICs9ICcsJztcbiAgICBrZXlzLnNwbGljZShpbmRleCwgMSk7XG4gICAgaW5kZXggPSBrZXlzLmxhc3RJbmRleE9mKCcnKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufSAvLyDmr5TovoPkv67ppbDplK7nmoTmlbDnu4RcblxuXG5mdW5jdGlvbiBjb21wYXJlQXJyYXkoYTEsIGEyKSB7XG4gIHZhciBhcnIxID0gYTEubGVuZ3RoID49IGEyLmxlbmd0aCA/IGExIDogYTI7XG4gIHZhciBhcnIyID0gYTEubGVuZ3RoID49IGEyLmxlbmd0aCA/IGEyIDogYTE7XG4gIHZhciBpc0luZGV4ID0gdHJ1ZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyMi5pbmRleE9mKGFycjFbaV0pID09PSAtMSkgaXNJbmRleCA9IGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzSW5kZXg7XG59XG5cbnZhciBfa2V5TWFwID0ge1xuICBiYWNrc3BhY2U6IDgsXG4gIHRhYjogOSxcbiAgY2xlYXI6IDEyLFxuICBlbnRlcjogMTMsXG4gIHJldHVybjogMTMsXG4gIGVzYzogMjcsXG4gIGVzY2FwZTogMjcsXG4gIHNwYWNlOiAzMixcbiAgbGVmdDogMzcsXG4gIHVwOiAzOCxcbiAgcmlnaHQ6IDM5LFxuICBkb3duOiA0MCxcbiAgZGVsOiA0NixcbiAgZGVsZXRlOiA0NixcbiAgaW5zOiA0NSxcbiAgaW5zZXJ0OiA0NSxcbiAgaG9tZTogMzYsXG4gIGVuZDogMzUsXG4gIHBhZ2V1cDogMzMsXG4gIHBhZ2Vkb3duOiAzNCxcbiAgY2Fwc2xvY2s6IDIwLFxuICBudW1fMDogOTYsXG4gIG51bV8xOiA5NyxcbiAgbnVtXzI6IDk4LFxuICBudW1fMzogOTksXG4gIG51bV80OiAxMDAsXG4gIG51bV81OiAxMDEsXG4gIG51bV82OiAxMDIsXG4gIG51bV83OiAxMDMsXG4gIG51bV84OiAxMDQsXG4gIG51bV85OiAxMDUsXG4gIG51bV9tdWx0aXBseTogMTA2LFxuICBudW1fYWRkOiAxMDcsXG4gIG51bV9lbnRlcjogMTA4LFxuICBudW1fc3VidHJhY3Q6IDEwOSxcbiAgbnVtX2RlY2ltYWw6IDExMCxcbiAgbnVtX2RpdmlkZTogMTExLFxuICAn4oeqJzogMjAsXG4gICcsJzogMTg4LFxuICAnLic6IDE5MCxcbiAgJy8nOiAxOTEsXG4gICdgJzogMTkyLFxuICAnLSc6IGlzZmYgPyAxNzMgOiAxODksXG4gICc9JzogaXNmZiA/IDYxIDogMTg3LFxuICAnOyc6IGlzZmYgPyA1OSA6IDE4NixcbiAgJ1xcJyc6IDIyMixcbiAgJ1snOiAyMTksXG4gICddJzogMjIxLFxuICAnXFxcXCc6IDIyMFxufTsgLy8gTW9kaWZpZXIgS2V5c1xuXG52YXIgX21vZGlmaWVyID0ge1xuICAvLyBzaGlmdEtleVxuICAn4oenJzogMTYsXG4gIHNoaWZ0OiAxNixcbiAgLy8gYWx0S2V5XG4gICfijKUnOiAxOCxcbiAgYWx0OiAxOCxcbiAgb3B0aW9uOiAxOCxcbiAgLy8gY3RybEtleVxuICAn4oyDJzogMTcsXG4gIGN0cmw6IDE3LFxuICBjb250cm9sOiAxNyxcbiAgLy8gbWV0YUtleVxuICAn4oyYJzogOTEsXG4gIGNtZDogOTEsXG4gIGNvbW1hbmQ6IDkxXG59O1xudmFyIG1vZGlmaWVyTWFwID0ge1xuICAxNjogJ3NoaWZ0S2V5JyxcbiAgMTg6ICdhbHRLZXknLFxuICAxNzogJ2N0cmxLZXknLFxuICA5MTogJ21ldGFLZXknLFxuICBzaGlmdEtleTogMTYsXG4gIGN0cmxLZXk6IDE3LFxuICBhbHRLZXk6IDE4LFxuICBtZXRhS2V5OiA5MVxufTtcbnZhciBfbW9kcyA9IHtcbiAgMTY6IGZhbHNlLFxuICAxODogZmFsc2UsXG4gIDE3OiBmYWxzZSxcbiAgOTE6IGZhbHNlXG59O1xudmFyIF9oYW5kbGVycyA9IHt9OyAvLyBGMX5GMTIgc3BlY2lhbCBrZXlcblxuZm9yICh2YXIgayA9IDE7IGsgPCAyMDsgaysrKSB7XG4gIF9rZXlNYXBbXCJmXCIuY29uY2F0KGspXSA9IDExMSArIGs7XG59XG5cbnZhciBfZG93bktleXMgPSBbXTsgLy8g6K6w5b2V5pGB5LiL55qE57uR5a6a6ZSuXG5cbnZhciB3aW5MaXN0ZW5kRm9jdXMgPSBmYWxzZTsgLy8gd2luZG935piv5ZCm5bey57uP55uR5ZCs5LqGZm9jdXPkuovku7ZcblxudmFyIF9zY29wZSA9ICdhbGwnOyAvLyDpu5jorqTng63plK7ojIPlm7RcblxudmFyIGVsZW1lbnRIYXNCaW5kRXZlbnQgPSBbXTsgLy8g5bey57uR5a6a5LqL5Lu255qE6IqC54K56K6w5b2VXG4vLyDov5Tlm57plK7noIFcblxudmFyIGNvZGUgPSBmdW5jdGlvbiBjb2RlKHgpIHtcbiAgcmV0dXJuIF9rZXlNYXBbeC50b0xvd2VyQ2FzZSgpXSB8fCBfbW9kaWZpZXJbeC50b0xvd2VyQ2FzZSgpXSB8fCB4LnRvVXBwZXJDYXNlKCkuY2hhckNvZGVBdCgwKTtcbn07IC8vIOiuvue9ruiOt+WPluW9k+WJjeiMg+WbtO+8iOm7mOiupOS4uifmiYDmnIkn77yJXG5cblxuZnVuY3Rpb24gc2V0U2NvcGUoc2NvcGUpIHtcbiAgX3Njb3BlID0gc2NvcGUgfHwgJ2FsbCc7XG59IC8vIOiOt+WPluW9k+WJjeiMg+WbtFxuXG5cbmZ1bmN0aW9uIGdldFNjb3BlKCkge1xuICByZXR1cm4gX3Njb3BlIHx8ICdhbGwnO1xufSAvLyDojrflj5bmkYHkuIvnu5HlrprplK7nmoTplK7lgLxcblxuXG5mdW5jdGlvbiBnZXRQcmVzc2VkS2V5Q29kZXMoKSB7XG4gIHJldHVybiBfZG93bktleXMuc2xpY2UoMCk7XG59IC8vIOihqOWNleaOp+S7tuaOp+S7tuWIpOaWrSDov5Tlm54gQm9vbGVhblxuLy8gaG90a2V5IGlzIGVmZmVjdGl2ZSBvbmx5IHdoZW4gZmlsdGVyIHJldHVybiB0cnVlXG5cblxuZnVuY3Rpb24gZmlsdGVyKGV2ZW50KSB7XG4gIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgdmFyIHRhZ05hbWUgPSB0YXJnZXQudGFnTmFtZTtcbiAgdmFyIGZsYWcgPSB0cnVlOyAvLyBpZ25vcmU6IGlzQ29udGVudEVkaXRhYmxlID09PSAndHJ1ZScsIDxpbnB1dD4gYW5kIDx0ZXh0YXJlYT4gd2hlbiByZWFkT25seSBzdGF0ZSBpcyBmYWxzZSwgPHNlbGVjdD5cblxuICBpZiAodGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlIHx8ICh0YWdOYW1lID09PSAnSU5QVVQnIHx8IHRhZ05hbWUgPT09ICdURVhUQVJFQScgfHwgdGFnTmFtZSA9PT0gJ1NFTEVDVCcpICYmICF0YXJnZXQucmVhZE9ubHkpIHtcbiAgICBmbGFnID0gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZmxhZztcbn0gLy8g5Yik5pat5pGB5LiL55qE6ZSu5piv5ZCm5Li65p+Q5Liq6ZSu77yM6L+U5ZuedHJ1ZeaIluiAhWZhbHNlXG5cblxuZnVuY3Rpb24gaXNQcmVzc2VkKGtleUNvZGUpIHtcbiAgaWYgKHR5cGVvZiBrZXlDb2RlID09PSAnc3RyaW5nJykge1xuICAgIGtleUNvZGUgPSBjb2RlKGtleUNvZGUpOyAvLyDovazmjaLmiJDplK7noIFcbiAgfVxuXG4gIHJldHVybiBfZG93bktleXMuaW5kZXhPZihrZXlDb2RlKSAhPT0gLTE7XG59IC8vIOW+queOr+WIoOmZpGhhbmRsZXJz5Lit55qE5omA5pyJIHNjb3BlKOiMg+WbtClcblxuXG5mdW5jdGlvbiBkZWxldGVTY29wZShzY29wZSwgbmV3U2NvcGUpIHtcbiAgdmFyIGhhbmRsZXJzO1xuICB2YXIgaTsgLy8g5rKh5pyJ5oyH5a6ac2NvcGXvvIzojrflj5ZzY29wZVxuXG4gIGlmICghc2NvcGUpIHNjb3BlID0gZ2V0U2NvcGUoKTtcblxuICBmb3IgKHZhciBrZXkgaW4gX2hhbmRsZXJzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfaGFuZGxlcnMsIGtleSkpIHtcbiAgICAgIGhhbmRsZXJzID0gX2hhbmRsZXJzW2tleV07XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBoYW5kbGVycy5sZW5ndGg7KSB7XG4gICAgICAgIGlmIChoYW5kbGVyc1tpXS5zY29wZSA9PT0gc2NvcGUpIGhhbmRsZXJzLnNwbGljZShpLCAxKTtlbHNlIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8g5aaC5p6cc2NvcGXooqvliKDpmaTvvIzlsIZzY29wZemHjee9ruS4umFsbFxuXG5cbiAgaWYgKGdldFNjb3BlKCkgPT09IHNjb3BlKSBzZXRTY29wZShuZXdTY29wZSB8fCAnYWxsJyk7XG59IC8vIOa4hemZpOS/rumlsOmUrlxuXG5cbmZ1bmN0aW9uIGNsZWFyTW9kaWZpZXIoZXZlbnQpIHtcbiAgdmFyIGtleSA9IGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2ggfHwgZXZlbnQuY2hhckNvZGU7XG5cbiAgdmFyIGkgPSBfZG93bktleXMuaW5kZXhPZihrZXkpOyAvLyDku47liJfooajkuK3muIXpmaTmjInljovov4fnmoTplK5cblxuXG4gIGlmIChpID49IDApIHtcbiAgICBfZG93bktleXMuc3BsaWNlKGksIDEpO1xuICB9IC8vIOeJueauiuWkhOeQhiBjbW1hbmQg6ZSu77yM5ZyoIGNtbWFuZCDnu4TlkIjlv6vmjbfplK4ga2V5dXAg5Y+q5omn6KGM5LiA5qyh55qE6Zeu6aKYXG5cblxuICBpZiAoZXZlbnQua2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnbWV0YScpIHtcbiAgICBfZG93bktleXMuc3BsaWNlKDAsIF9kb3duS2V5cy5sZW5ndGgpO1xuICB9IC8vIOS/rumlsOmUriBzaGlmdEtleSBhbHRLZXkgY3RybEtleSAoY29tbWFuZHx8bWV0YUtleSkg5riF6ZmkXG5cblxuICBpZiAoa2V5ID09PSA5MyB8fCBrZXkgPT09IDIyNCkga2V5ID0gOTE7XG5cbiAgaWYgKGtleSBpbiBfbW9kcykge1xuICAgIF9tb2RzW2tleV0gPSBmYWxzZTsgLy8g5bCG5L+u6aWw6ZSu6YeN572u5Li6ZmFsc2VcblxuICAgIGZvciAodmFyIGsgaW4gX21vZGlmaWVyKSB7XG4gICAgICBpZiAoX21vZGlmaWVyW2tdID09PSBrZXkpIGhvdGtleXNba10gPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5iaW5kKGtleXNJbmZvKSB7XG4gIC8vIHVuYmluZCgpLCB1bmJpbmQgYWxsIGtleXNcbiAgaWYgKHR5cGVvZiBrZXlzSW5mbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBPYmplY3Qua2V5cyhfaGFuZGxlcnMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIGRlbGV0ZSBfaGFuZGxlcnNba2V5XTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGtleXNJbmZvKSkge1xuICAgIC8vIHN1cHBvcnQgbGlrZSA6IHVuYmluZChbe2tleTogJ2N0cmwrYScsIHNjb3BlOiAnczEnfSwge2tleTogJ2N0cmwtYScsIHNjb3BlOiAnczInLCBzcGxpdEtleTogJy0nfV0pXG4gICAga2V5c0luZm8uZm9yRWFjaChmdW5jdGlvbiAoaW5mbykge1xuICAgICAgaWYgKGluZm8ua2V5KSBlYWNoVW5iaW5kKGluZm8pO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBrZXlzSW5mbyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBzdXBwb3J0IGxpa2UgdW5iaW5kKHtrZXk6ICdjdHJsK2EsIGN0cmwrYicsIHNjb3BlOidhYmMnfSlcbiAgICBpZiAoa2V5c0luZm8ua2V5KSBlYWNoVW5iaW5kKGtleXNJbmZvKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Yga2V5c0luZm8gPT09ICdzdHJpbmcnKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgLy8gc3VwcG9ydCBvbGQgbWV0aG9kXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIHZhciBzY29wZSA9IGFyZ3NbMF0sXG4gICAgICAgIG1ldGhvZCA9IGFyZ3NbMV07XG5cbiAgICBpZiAodHlwZW9mIHNjb3BlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBtZXRob2QgPSBzY29wZTtcbiAgICAgIHNjb3BlID0gJyc7XG4gICAgfVxuXG4gICAgZWFjaFVuYmluZCh7XG4gICAgICBrZXk6IGtleXNJbmZvLFxuICAgICAgc2NvcGU6IHNjb3BlLFxuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICBzcGxpdEtleTogJysnXG4gICAgfSk7XG4gIH1cbn0gLy8g6Kej6Zmk57uR5a6a5p+Q5Liq6IyD5Zu055qE5b+r5o236ZSuXG5cblxudmFyIGVhY2hVbmJpbmQgPSBmdW5jdGlvbiBlYWNoVW5iaW5kKF9yZWYpIHtcbiAgdmFyIGtleSA9IF9yZWYua2V5LFxuICAgICAgc2NvcGUgPSBfcmVmLnNjb3BlLFxuICAgICAgbWV0aG9kID0gX3JlZi5tZXRob2QsXG4gICAgICBfcmVmJHNwbGl0S2V5ID0gX3JlZi5zcGxpdEtleSxcbiAgICAgIHNwbGl0S2V5ID0gX3JlZiRzcGxpdEtleSA9PT0gdm9pZCAwID8gJysnIDogX3JlZiRzcGxpdEtleTtcbiAgdmFyIG11bHRpcGxlS2V5cyA9IGdldEtleXMoa2V5KTtcbiAgbXVsdGlwbGVLZXlzLmZvckVhY2goZnVuY3Rpb24gKG9yaWdpbktleSkge1xuICAgIHZhciB1bmJpbmRLZXlzID0gb3JpZ2luS2V5LnNwbGl0KHNwbGl0S2V5KTtcbiAgICB2YXIgbGVuID0gdW5iaW5kS2V5cy5sZW5ndGg7XG4gICAgdmFyIGxhc3RLZXkgPSB1bmJpbmRLZXlzW2xlbiAtIDFdO1xuICAgIHZhciBrZXlDb2RlID0gbGFzdEtleSA9PT0gJyonID8gJyonIDogY29kZShsYXN0S2V5KTtcbiAgICBpZiAoIV9oYW5kbGVyc1trZXlDb2RlXSkgcmV0dXJuOyAvLyDliKTmlq3mmK/lkKbkvKDlhaXojIPlm7TvvIzmsqHmnInlsLHojrflj5bojIPlm7RcblxuICAgIGlmICghc2NvcGUpIHNjb3BlID0gZ2V0U2NvcGUoKTtcbiAgICB2YXIgbW9kcyA9IGxlbiA+IDEgPyBnZXRNb2RzKF9tb2RpZmllciwgdW5iaW5kS2V5cykgOiBbXTtcbiAgICBfaGFuZGxlcnNba2V5Q29kZV0gPSBfaGFuZGxlcnNba2V5Q29kZV0uZmlsdGVyKGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgIC8vIOmAmui/h+WHveaVsOWIpOaWre+8jOaYr+WQpuino+mZpOe7keWumu+8jOWHveaVsOebuOetieebtOaOpei/lOWbnlxuICAgICAgdmFyIGlzTWF0Y2hpbmdNZXRob2QgPSBtZXRob2QgPyByZWNvcmQubWV0aG9kID09PSBtZXRob2QgOiB0cnVlO1xuICAgICAgcmV0dXJuICEoaXNNYXRjaGluZ01ldGhvZCAmJiByZWNvcmQuc2NvcGUgPT09IHNjb3BlICYmIGNvbXBhcmVBcnJheShyZWNvcmQubW9kcywgbW9kcykpO1xuICAgIH0pO1xuICB9KTtcbn07IC8vIOWvueebkeWQrOWvueW6lOW/q+aNt+mUrueahOWbnuiwg+WHveaVsOi/m+ihjOWkhOeQhlxuXG5cbmZ1bmN0aW9uIGV2ZW50SGFuZGxlcihldmVudCwgaGFuZGxlciwgc2NvcGUsIGVsZW1lbnQpIHtcbiAgaWYgKGhhbmRsZXIuZWxlbWVudCAhPT0gZWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBtb2RpZmllcnNNYXRjaDsgLy8g55yL5a6D5piv5ZCm5Zyo5b2T5YmN6IyD5Zu0XG5cbiAgaWYgKGhhbmRsZXIuc2NvcGUgPT09IHNjb3BlIHx8IGhhbmRsZXIuc2NvcGUgPT09ICdhbGwnKSB7XG4gICAgLy8g5qOA5p+l5piv5ZCm5Yy56YWN5L+u6aWw56ym77yI5aaC5p6c5pyJ6L+U5ZuedHJ1Ze+8iVxuICAgIG1vZGlmaWVyc01hdGNoID0gaGFuZGxlci5tb2RzLmxlbmd0aCA+IDA7XG5cbiAgICBmb3IgKHZhciB5IGluIF9tb2RzKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF9tb2RzLCB5KSkge1xuICAgICAgICBpZiAoIV9tb2RzW3ldICYmIGhhbmRsZXIubW9kcy5pbmRleE9mKCt5KSA+IC0xIHx8IF9tb2RzW3ldICYmIGhhbmRsZXIubW9kcy5pbmRleE9mKCt5KSA9PT0gLTEpIHtcbiAgICAgICAgICBtb2RpZmllcnNNYXRjaCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyDosIPnlKjlpITnkIbnqIvluo/vvIzlpoLmnpzmmK/kv67ppbDplK7kuI3lgZrlpITnkIZcblxuXG4gICAgaWYgKGhhbmRsZXIubW9kcy5sZW5ndGggPT09IDAgJiYgIV9tb2RzWzE2XSAmJiAhX21vZHNbMThdICYmICFfbW9kc1sxN10gJiYgIV9tb2RzWzkxXSB8fCBtb2RpZmllcnNNYXRjaCB8fCBoYW5kbGVyLnNob3J0Y3V0ID09PSAnKicpIHtcbiAgICAgIGlmIChoYW5kbGVyLm1ldGhvZChldmVudCwgaGFuZGxlcikgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtlbHNlIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoZXZlbnQuY2FuY2VsQnViYmxlKSBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyDlpITnkIZrZXlkb3du5LqL5Lu2XG5cblxuZnVuY3Rpb24gZGlzcGF0Y2goZXZlbnQsIGVsZW1lbnQpIHtcbiAgdmFyIGFzdGVyaXNrID0gX2hhbmRsZXJzWycqJ107XG4gIHZhciBrZXkgPSBldmVudC5rZXlDb2RlIHx8IGV2ZW50LndoaWNoIHx8IGV2ZW50LmNoYXJDb2RlOyAvLyDooajljZXmjqfku7bov4fmu6Qg6buY6K6k6KGo5Y2V5o6n5Lu25LiN6Kem5Y+R5b+r5o236ZSuXG5cbiAgaWYgKCFob3RrZXlzLmZpbHRlci5jYWxsKHRoaXMsIGV2ZW50KSkgcmV0dXJuOyAvLyBHZWNrbyhGaXJlZm94KeeahGNvbW1hbmTplK7lgLwyMjTvvIzlnKhXZWJraXQoQ2hyb21lKeS4reS/neaMgeS4gOiHtFxuICAvLyBXZWJraXTlt6blj7MgY29tbWFuZCDplK7lgLzkuI3kuIDmoLdcblxuICBpZiAoa2V5ID09PSA5MyB8fCBrZXkgPT09IDIyNCkga2V5ID0gOTE7XG4gIC8qKlxuICAgKiBDb2xsZWN0IGJvdW5kIGtleXNcbiAgICogSWYgYW4gSW5wdXQgTWV0aG9kIEVkaXRvciBpcyBwcm9jZXNzaW5nIGtleSBpbnB1dCBhbmQgdGhlIGV2ZW50IGlzIGtleWRvd24sIHJldHVybiAyMjkuXG4gICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI1MDQzOTM0L2lzLWl0LW9rLXRvLWlnbm9yZS1rZXlkb3duLWV2ZW50cy13aXRoLWtleWNvZGUtMjI5XG4gICAqIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1kb20vMjAxMEp1bFNlcC9hdHQtMDE4Mi9rZXlDb2RlLXNwZWMuaHRtbFxuICAgKi9cblxuICBpZiAoX2Rvd25LZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEgJiYga2V5ICE9PSAyMjkpIF9kb3duS2V5cy5wdXNoKGtleSk7XG4gIC8qKlxuICAgKiBKZXN0IHRlc3QgY2FzZXMgYXJlIHJlcXVpcmVkLlxuICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAqL1xuXG4gIFsnY3RybEtleScsICdhbHRLZXknLCAnc2hpZnRLZXknLCAnbWV0YUtleSddLmZvckVhY2goZnVuY3Rpb24gKGtleU5hbWUpIHtcbiAgICB2YXIga2V5TnVtID0gbW9kaWZpZXJNYXBba2V5TmFtZV07XG5cbiAgICBpZiAoZXZlbnRba2V5TmFtZV0gJiYgX2Rvd25LZXlzLmluZGV4T2Yoa2V5TnVtKSA9PT0gLTEpIHtcbiAgICAgIF9kb3duS2V5cy5wdXNoKGtleU51bSk7XG4gICAgfSBlbHNlIGlmICghZXZlbnRba2V5TmFtZV0gJiYgX2Rvd25LZXlzLmluZGV4T2Yoa2V5TnVtKSA+IC0xKSB7XG4gICAgICBfZG93bktleXMuc3BsaWNlKF9kb3duS2V5cy5pbmRleE9mKGtleU51bSksIDEpO1xuICAgIH0gZWxzZSBpZiAoa2V5TmFtZSA9PT0gJ21ldGFLZXknICYmIGV2ZW50W2tleU5hbWVdICYmIF9kb3duS2V5cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIC8qKlxuICAgICAgICogRml4IGlmIENvbW1hbmQgaXMgcHJlc3NlZDpcbiAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgICAqL1xuICAgICAgaWYgKCEoZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5hbHRLZXkpKSB7XG4gICAgICAgIF9kb3duS2V5cyA9IF9kb3duS2V5cy5zbGljZShfZG93bktleXMuaW5kZXhPZihrZXlOdW0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICAvKipcbiAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKi9cblxuICBpZiAoa2V5IGluIF9tb2RzKSB7XG4gICAgX21vZHNba2V5XSA9IHRydWU7IC8vIOWwhueJueauiuWtl+espueahGtleeazqOWGjOWIsCBob3RrZXlzIOS4ilxuXG4gICAgZm9yICh2YXIgayBpbiBfbW9kaWZpZXIpIHtcbiAgICAgIGlmIChfbW9kaWZpZXJba10gPT09IGtleSkgaG90a2V5c1trXSA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFhc3RlcmlzaykgcmV0dXJuO1xuICB9IC8vIOWwhiBtb2RpZmllck1hcCDph4zpnaLnmoTkv67ppbDplK7nu5HlrprliLAgZXZlbnQg5LitXG5cblxuICBmb3IgKHZhciBlIGluIF9tb2RzKSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChfbW9kcywgZSkpIHtcbiAgICAgIF9tb2RzW2VdID0gZXZlbnRbbW9kaWZpZXJNYXBbZV1dO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2pheXdjamxvdmUvaG90a2V5cy9wdWxsLzEyOVxuICAgKiBUaGlzIHNvbHZlcyB0aGUgaXNzdWUgaW4gRmlyZWZveCBvbiBXaW5kb3dzIHdoZXJlIGhvdGtleXMgY29ycmVzcG9uZGluZyB0byBzcGVjaWFsIGNoYXJhY3RlcnMgd291bGQgbm90IHRyaWdnZXIuXG4gICAqIEFuIGV4YW1wbGUgb2YgdGhpcyBpcyBjdHJsK2FsdCttIG9uIGEgU3dlZGlzaCBrZXlib2FyZCB3aGljaCBpcyB1c2VkIHRvIHR5cGUgzrwuXG4gICAqIEJyb3dzZXIgc3VwcG9ydDogaHR0cHM6Ly9jYW5pdXNlLmNvbS8jZmVhdD1rZXlib2FyZGV2ZW50LWdldG1vZGlmaWVyc3RhdGVcbiAgICovXG5cblxuICBpZiAoZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSAmJiAhKGV2ZW50LmFsdEtleSAmJiAhZXZlbnQuY3RybEtleSkgJiYgZXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZSgnQWx0R3JhcGgnKSkge1xuICAgIGlmIChfZG93bktleXMuaW5kZXhPZigxNykgPT09IC0xKSB7XG4gICAgICBfZG93bktleXMucHVzaCgxNyk7XG4gICAgfVxuXG4gICAgaWYgKF9kb3duS2V5cy5pbmRleE9mKDE4KSA9PT0gLTEpIHtcbiAgICAgIF9kb3duS2V5cy5wdXNoKDE4KTtcbiAgICB9XG5cbiAgICBfbW9kc1sxN10gPSB0cnVlO1xuICAgIF9tb2RzWzE4XSA9IHRydWU7XG4gIH0gLy8g6I635Y+W6IyD5Zu0IOm7mOiupOS4uiBgYWxsYFxuXG5cbiAgdmFyIHNjb3BlID0gZ2V0U2NvcGUoKTsgLy8g5a+55Lu75L2V5b+r5o236ZSu6YO96ZyA6KaB5YGa55qE5aSE55CGXG5cbiAgaWYgKGFzdGVyaXNrKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhc3Rlcmlzay5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFzdGVyaXNrW2ldLnNjb3BlID09PSBzY29wZSAmJiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmIGFzdGVyaXNrW2ldLmtleWRvd24gfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJyAmJiBhc3Rlcmlza1tpXS5rZXl1cCkpIHtcbiAgICAgICAgZXZlbnRIYW5kbGVyKGV2ZW50LCBhc3Rlcmlza1tpXSwgc2NvcGUsIGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBrZXkg5LiN5ZyoIF9oYW5kbGVycyDkuK3ov5Tlm55cblxuXG4gIGlmICghKGtleSBpbiBfaGFuZGxlcnMpKSByZXR1cm47XG5cbiAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IF9oYW5kbGVyc1trZXldLmxlbmd0aDsgX2krKykge1xuICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93bicgJiYgX2hhbmRsZXJzW2tleV1bX2ldLmtleWRvd24gfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJyAmJiBfaGFuZGxlcnNba2V5XVtfaV0ua2V5dXApIHtcbiAgICAgIGlmIChfaGFuZGxlcnNba2V5XVtfaV0ua2V5KSB7XG4gICAgICAgIHZhciByZWNvcmQgPSBfaGFuZGxlcnNba2V5XVtfaV07XG4gICAgICAgIHZhciBzcGxpdEtleSA9IHJlY29yZC5zcGxpdEtleTtcbiAgICAgICAgdmFyIGtleVNob3J0Y3V0ID0gcmVjb3JkLmtleS5zcGxpdChzcGxpdEtleSk7XG4gICAgICAgIHZhciBfZG93bktleXNDdXJyZW50ID0gW107IC8vIOiusOW9leW9k+WJjeaMiemUrumUruWAvFxuXG4gICAgICAgIGZvciAodmFyIGEgPSAwOyBhIDwga2V5U2hvcnRjdXQubGVuZ3RoOyBhKyspIHtcbiAgICAgICAgICBfZG93bktleXNDdXJyZW50LnB1c2goY29kZShrZXlTaG9ydGN1dFthXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF9kb3duS2V5c0N1cnJlbnQuc29ydCgpLmpvaW4oJycpID09PSBfZG93bktleXMuc29ydCgpLmpvaW4oJycpKSB7XG4gICAgICAgICAgLy8g5om+5Yiw5aSE55CG5YaF5a65XG4gICAgICAgICAgZXZlbnRIYW5kbGVyKGV2ZW50LCByZWNvcmQsIHNjb3BlLCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyDliKTmlq0gZWxlbWVudCDmmK/lkKblt7Lnu4/nu5Hlrprkuovku7ZcblxuXG5mdW5jdGlvbiBpc0VsZW1lbnRCaW5kKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnRIYXNCaW5kRXZlbnQuaW5kZXhPZihlbGVtZW50KSA+IC0xO1xufVxuXG5mdW5jdGlvbiBob3RrZXlzKGtleSwgb3B0aW9uLCBtZXRob2QpIHtcbiAgX2Rvd25LZXlzID0gW107XG4gIHZhciBrZXlzID0gZ2V0S2V5cyhrZXkpOyAvLyDpnIDopoHlpITnkIbnmoTlv6vmjbfplK7liJfooahcblxuICB2YXIgbW9kcyA9IFtdO1xuICB2YXIgc2NvcGUgPSAnYWxsJzsgLy8gc2NvcGXpu5jorqTkuLphbGzvvIzmiYDmnInojIPlm7Tpg73mnInmlYhcblxuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50OyAvLyDlv6vmjbfplK7kuovku7bnu5HlrproioLngrlcblxuICB2YXIgaSA9IDA7XG4gIHZhciBrZXl1cCA9IGZhbHNlO1xuICB2YXIga2V5ZG93biA9IHRydWU7XG4gIHZhciBzcGxpdEtleSA9ICcrJztcbiAgdmFyIGNhcHR1cmUgPSBmYWxzZTsgLy8g5a+55Li66K6+5a6a6IyD5Zu055qE5Yik5patXG5cbiAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBtZXRob2QgPSBvcHRpb247XG4gIH1cblxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9wdGlvbikgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgaWYgKG9wdGlvbi5zY29wZSkgc2NvcGUgPSBvcHRpb24uc2NvcGU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIGlmIChvcHRpb24uZWxlbWVudCkgZWxlbWVudCA9IG9wdGlvbi5lbGVtZW50OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAob3B0aW9uLmtleXVwKSBrZXl1cCA9IG9wdGlvbi5rZXl1cDsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKG9wdGlvbi5rZXlkb3duICE9PSB1bmRlZmluZWQpIGtleWRvd24gPSBvcHRpb24ua2V5ZG93bjsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKG9wdGlvbi5jYXB0dXJlICE9PSB1bmRlZmluZWQpIGNhcHR1cmUgPSBvcHRpb24uY2FwdHVyZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb24uc3BsaXRLZXkgPT09ICdzdHJpbmcnKSBzcGxpdEtleSA9IG9wdGlvbi5zcGxpdEtleTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSBzY29wZSA9IG9wdGlvbjsgLy8g5a+55LqO5q+P5Liq5b+r5o236ZSu6L+b6KGM5aSE55CGXG5cbiAgZm9yICg7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXS5zcGxpdChzcGxpdEtleSk7IC8vIOaMiemUruWIl+ihqFxuXG4gICAgbW9kcyA9IFtdOyAvLyDlpoLmnpzmmK/nu4TlkIjlv6vmjbfplK7lj5blvpfnu4TlkIjlv6vmjbfplK5cblxuICAgIGlmIChrZXkubGVuZ3RoID4gMSkgbW9kcyA9IGdldE1vZHMoX21vZGlmaWVyLCBrZXkpOyAvLyDlsIbpnZ7kv67ppbDplK7ovazljJbkuLrplK7noIFcblxuICAgIGtleSA9IGtleVtrZXkubGVuZ3RoIC0gMV07XG4gICAga2V5ID0ga2V5ID09PSAnKicgPyAnKicgOiBjb2RlKGtleSk7IC8vICrooajnpLrljLnphY3miYDmnInlv6vmjbfplK5cbiAgICAvLyDliKTmlq1rZXnmmK/lkKblnKhfaGFuZGxlcnPkuK3vvIzkuI3lnKjlsLHotYvkuIDkuKrnqbrmlbDnu4RcblxuICAgIGlmICghKGtleSBpbiBfaGFuZGxlcnMpKSBfaGFuZGxlcnNba2V5XSA9IFtdO1xuXG4gICAgX2hhbmRsZXJzW2tleV0ucHVzaCh7XG4gICAgICBrZXl1cDoga2V5dXAsXG4gICAgICBrZXlkb3duOiBrZXlkb3duLFxuICAgICAgc2NvcGU6IHNjb3BlLFxuICAgICAgbW9kczogbW9kcyxcbiAgICAgIHNob3J0Y3V0OiBrZXlzW2ldLFxuICAgICAgbWV0aG9kOiBtZXRob2QsXG4gICAgICBrZXk6IGtleXNbaV0sXG4gICAgICBzcGxpdEtleTogc3BsaXRLZXksXG4gICAgICBlbGVtZW50OiBlbGVtZW50XG4gICAgfSk7XG4gIH0gLy8g5Zyo5YWo5bGAZG9jdW1lbnTkuIrorr7nva7lv6vmjbfplK5cblxuXG4gIGlmICh0eXBlb2YgZWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgIWlzRWxlbWVudEJpbmQoZWxlbWVudCkgJiYgd2luZG93KSB7XG4gICAgZWxlbWVudEhhc0JpbmRFdmVudC5wdXNoKGVsZW1lbnQpO1xuICAgIGFkZEV2ZW50KGVsZW1lbnQsICdrZXlkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGRpc3BhdGNoKGUsIGVsZW1lbnQpO1xuICAgIH0sIGNhcHR1cmUpO1xuXG4gICAgaWYgKCF3aW5MaXN0ZW5kRm9jdXMpIHtcbiAgICAgIHdpbkxpc3RlbmRGb2N1cyA9IHRydWU7XG4gICAgICBhZGRFdmVudCh3aW5kb3csICdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX2Rvd25LZXlzID0gW107XG4gICAgICB9LCBjYXB0dXJlKTtcbiAgICB9XG5cbiAgICBhZGRFdmVudChlbGVtZW50LCAna2V5dXAnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZGlzcGF0Y2goZSwgZWxlbWVudCk7XG4gICAgICBjbGVhck1vZGlmaWVyKGUpO1xuICAgIH0sIGNhcHR1cmUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRyaWdnZXIoc2hvcnRjdXQpIHtcbiAgdmFyIHNjb3BlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAnYWxsJztcbiAgT2JqZWN0LmtleXMoX2hhbmRsZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgZGF0YSA9IF9oYW5kbGVyc1trZXldLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLnNjb3BlID09PSBzY29wZSAmJiBpdGVtLnNob3J0Y3V0ID09PSBzaG9ydGN1dDtcbiAgICB9KTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEubWV0aG9kKSB7XG4gICAgICBkYXRhLm1ldGhvZCgpO1xuICAgIH1cbiAgfSk7XG59XG5cbnZhciBfYXBpID0ge1xuICBzZXRTY29wZTogc2V0U2NvcGUsXG4gIGdldFNjb3BlOiBnZXRTY29wZSxcbiAgZGVsZXRlU2NvcGU6IGRlbGV0ZVNjb3BlLFxuICBnZXRQcmVzc2VkS2V5Q29kZXM6IGdldFByZXNzZWRLZXlDb2RlcyxcbiAgaXNQcmVzc2VkOiBpc1ByZXNzZWQsXG4gIGZpbHRlcjogZmlsdGVyLFxuICB0cmlnZ2VyOiB0cmlnZ2VyLFxuICB1bmJpbmQ6IHVuYmluZCxcbiAga2V5TWFwOiBfa2V5TWFwLFxuICBtb2RpZmllcjogX21vZGlmaWVyLFxuICBtb2RpZmllck1hcDogbW9kaWZpZXJNYXBcbn07XG5cbmZvciAodmFyIGEgaW4gX2FwaSkge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF9hcGksIGEpKSB7XG4gICAgaG90a2V5c1thXSA9IF9hcGlbYV07XG4gIH1cbn1cblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHZhciBfaG90a2V5cyA9IHdpbmRvdy5ob3RrZXlzO1xuXG4gIGhvdGtleXMubm9Db25mbGljdCA9IGZ1bmN0aW9uIChkZWVwKSB7XG4gICAgaWYgKGRlZXAgJiYgd2luZG93LmhvdGtleXMgPT09IGhvdGtleXMpIHtcbiAgICAgIHdpbmRvdy5ob3RrZXlzID0gX2hvdGtleXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvdGtleXM7XG4gIH07XG5cbiAgd2luZG93LmhvdGtleXMgPSBob3RrZXlzO1xufVxuXG5leHBvcnQgeyBob3RrZXlzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBob3RrZXlzIGZyb20gJ2hvdGtleXMtanMnO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG4vKipcclxuICogQGRlcHJlY2F0ZWQgVXNlIGlzSG90a2V5UHJlc3NlZCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgdmVyc2lvbiA0LlxyXG4gKi9cblxuZnVuY3Rpb24gdXNlSXNIb3RrZXlQcmVzc2VkKCkge1xuICByZXR1cm4gaG90a2V5cy5pc1ByZXNzZWQ7XG59XG5cbmhvdGtleXMuZmlsdGVyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciB0YWdGaWx0ZXIgPSBmdW5jdGlvbiB0YWdGaWx0ZXIoX3JlZiwgZW5hYmxlT25UYWdzKSB7XG4gIHZhciB0YXJnZXQgPSBfcmVmLnRhcmdldDtcbiAgdmFyIHRhcmdldFRhZ05hbWUgPSB0YXJnZXQgJiYgdGFyZ2V0LnRhZ05hbWU7XG4gIHJldHVybiBCb29sZWFuKHRhcmdldFRhZ05hbWUgJiYgZW5hYmxlT25UYWdzICYmIGVuYWJsZU9uVGFncy5pbmNsdWRlcyh0YXJnZXRUYWdOYW1lKSk7XG59O1xuXG52YXIgaXNLZXlib2FyZEV2ZW50VHJpZ2dlcmVkQnlJbnB1dCA9IGZ1bmN0aW9uIGlzS2V5Ym9hcmRFdmVudFRyaWdnZXJlZEJ5SW5wdXQoZXYpIHtcbiAgcmV0dXJuIHRhZ0ZpbHRlcihldiwgWydJTlBVVCcsICdURVhUQVJFQScsICdTRUxFQ1QnXSk7XG59O1xuXG5mdW5jdGlvbiB1c2VIb3RrZXlzKGtleXMsIGNhbGxiYWNrLCBvcHRpb25zLCBkZXBzKSB7XG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICBkZXBzID0gb3B0aW9ucztcbiAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdmFyIF9yZWYyID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIGVuYWJsZU9uVGFncyA9IF9yZWYyLmVuYWJsZU9uVGFncyxcbiAgICAgIGZpbHRlciA9IF9yZWYyLmZpbHRlcixcbiAgICAgIGtleXVwID0gX3JlZjIua2V5dXAsXG4gICAgICBrZXlkb3duID0gX3JlZjIua2V5ZG93bixcbiAgICAgIF9yZWYyJGZpbHRlclByZXZlbnREZSA9IF9yZWYyLmZpbHRlclByZXZlbnREZWZhdWx0LFxuICAgICAgZmlsdGVyUHJldmVudERlZmF1bHQgPSBfcmVmMiRmaWx0ZXJQcmV2ZW50RGUgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmMiRmaWx0ZXJQcmV2ZW50RGUsXG4gICAgICBfcmVmMiRlbmFibGVkID0gX3JlZjIuZW5hYmxlZCxcbiAgICAgIGVuYWJsZWQgPSBfcmVmMiRlbmFibGVkID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZjIkZW5hYmxlZCxcbiAgICAgIF9yZWYyJGVuYWJsZU9uQ29udGVudCA9IF9yZWYyLmVuYWJsZU9uQ29udGVudEVkaXRhYmxlLFxuICAgICAgZW5hYmxlT25Db250ZW50RWRpdGFibGUgPSBfcmVmMiRlbmFibGVPbkNvbnRlbnQgPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZjIkZW5hYmxlT25Db250ZW50O1xuXG4gIHZhciByZWYgPSB1c2VSZWYobnVsbCk7IC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBjYWxsYmFjayBkZXRlcm1pbmVzIGlmIHRoZSBicm93c2VycyBkZWZhdWx0IGJlaGF2aW9yIGlzIHByZXZlbnRlZC5cblxuICB2YXIgbWVtb2lzZWRDYWxsYmFjayA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpIHtcbiAgICB2YXIgX2tleWJvYXJkRXZlbnQkdGFyZ2V0LCBfcmVmJGN1cnJlbnQ7XG5cbiAgICBpZiAoZmlsdGVyICYmICFmaWx0ZXIoa2V5Ym9hcmRFdmVudCkpIHtcbiAgICAgIHJldHVybiAhZmlsdGVyUHJldmVudERlZmF1bHQ7XG4gICAgfSAvLyBDaGVjayB3aGV0aGVyIHRoZSBob3RrZXlzIHdhcyB0cmlnZ2VyZWQgaW5zaWRlIGFuIGlucHV0IGFuZCB0aGF0IGlucHV0IGlzIGVuYWJsZWQgb3IgaWYgaXQgd2FzIHRyaWdnZXJlZCBieSBhIGNvbnRlbnQgZWRpdGFibGUgdGFnIGFuZCBpdCBpcyBlbmFibGVkLlxuXG5cbiAgICBpZiAoaXNLZXlib2FyZEV2ZW50VHJpZ2dlcmVkQnlJbnB1dChrZXlib2FyZEV2ZW50KSAmJiAhdGFnRmlsdGVyKGtleWJvYXJkRXZlbnQsIGVuYWJsZU9uVGFncykgfHwgKF9rZXlib2FyZEV2ZW50JHRhcmdldCA9IGtleWJvYXJkRXZlbnQudGFyZ2V0KSAhPSBudWxsICYmIF9rZXlib2FyZEV2ZW50JHRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZSAmJiAhZW5hYmxlT25Db250ZW50RWRpdGFibGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyZWYuY3VycmVudCA9PT0gbnVsbCB8fCBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSByZWYuY3VycmVudCB8fCAoX3JlZiRjdXJyZW50ID0gcmVmLmN1cnJlbnQpICE9IG51bGwgJiYgX3JlZiRjdXJyZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICBjYWxsYmFjayhrZXlib2FyZEV2ZW50LCBob3RrZXlzRXZlbnQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LCBkZXBzID8gW3JlZiwgZW5hYmxlT25UYWdzLCBmaWx0ZXJdLmNvbmNhdChkZXBzKSA6IFtyZWYsIGVuYWJsZU9uVGFncywgZmlsdGVyXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICBob3RrZXlzLnVuYmluZChrZXlzLCBtZW1vaXNlZENhbGxiYWNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIEluIHRoaXMgY2FzZSBrZXlkb3duIGlzIGxpa2VseSB1bmRlZmluZWQsIHNvIHdlIHNldCBpdCB0byBmYWxzZSwgc2luY2UgaG90a2V5cyBuZWVkcyB0aGUgYGtleWRvd25gIGtleSB0byBoYXZlIGEgdmFsdWUuXG5cblxuICAgIGlmIChrZXl1cCAmJiBrZXlkb3duICE9PSB0cnVlKSB7XG4gICAgICBvcHRpb25zLmtleWRvd24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBob3RrZXlzKGtleXMsIG9wdGlvbnMgfHwge30sIG1lbW9pc2VkQ2FsbGJhY2spO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaG90a2V5cy51bmJpbmQoa2V5cywgbWVtb2lzZWRDYWxsYmFjayk7XG4gICAgfTtcbiAgfSwgW21lbW9pc2VkQ2FsbGJhY2ssIGtleXMsIGVuYWJsZWRdKTtcbiAgcmV0dXJuIHJlZjtcbn1cblxudmFyIGlzSG90a2V5UHJlc3NlZCA9IGhvdGtleXMuaXNQcmVzc2VkO1xuXG5leHBvcnQgeyBpc0hvdGtleVByZXNzZWQsIHVzZUhvdGtleXMsIHVzZUlzSG90a2V5UHJlc3NlZCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtaG90a2V5cy1ob29rLmVzbS5qcy5tYXBcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB3aWR0aDogXCIxMFwiLFxuICBoZWlnaHQ6IFwiMTBcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBmaWxsOiBcImN1cnJlbnRDb2xvclwiLFxuICBkOiBcIk05Ljc1NiA4LjU3N2EuODMzLjgzMyAwIDExLTEuMTc5IDEuMTc5TDUgNi4xNzkgMS40MjMgOS43NTZBLjgzMy44MzMgMCAxMS4yNDQgOC41NzdMMy44MjEgNSAuMjQ0IDEuNDIzQS44MzMuODMzIDAgMTExLjQyMy4yNDRMNSAzLjgyMSA4LjU3Ny4yNDRhLjgzMy44MzMgMCAxMTEuMTc5IDEuMTc5TDYuMTc5IDVsMy41NzcgMy41Nzd6XCJcbn0pKSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5leHBvcnQgZGVmYXVsdCAoKHtcbiAgc3R5bGVzID0ge30sXG4gIC4uLnByb3BzXG59KSA9PiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gIHdpZHRoOiBcIjE2XCIsXG4gIGhlaWdodDogXCIxNlwiLFxuICBmaWxsOiBcIm5vbmVcIixcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxufSwgcHJvcHMpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBmaWxsUnVsZTogXCJldmVub2RkXCIsXG4gIGNsaXBSdWxlOiBcImV2ZW5vZGRcIixcbiAgZDogXCJNNC4xMzYgNy44NjNjMC0uNDEyLjE1NS0uNjY1LjQ4Ny0uOTk3TDEwLjM3IDEuMTJhLjg3NS44NzUgMCAxMTEuMjM3IDEuMjM3TDYuMTAxIDcuODYzbDUuNTA2IDUuNTA3YS44NzUuODc1IDAgMTEtMS4yMzcgMS4yMzdMNC42NDQgOC44ODFjLS4zNC0uMzM5LS41MDgtLjYwNi0uNTA4LTEuMDE4elwiLFxuICBmaWxsOiBcImN1cnJlbnRDb2xvclwiXG59KSkpOyIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1NlYXJjaEJhci5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL1NlYXJjaEJhci5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgeyB3aXRoVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IHVzZUhvdGtleXMgfSBmcm9tICdyZWFjdC1ob3RrZXlzLWhvb2snO1xuaW1wb3J0IHsgQ29udHJvbCB9IGZyb20gJy4uL0NvbnRyb2wnO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaWNvbnMvY2xvc2Uuc3ZnJztcbmltcG9ydCBBcnJvd0ljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL3NlYXJjaC1iYXItYXJyb3cuc3ZnJztcbmltcG9ydCAnLi9TZWFyY2hCYXIuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2RjLXNlYXJjaC1iYXInKTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7IH07XG5jb25zdCBTZWFyY2hCYXIgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHQsIGkxOG4sIGxhbmcsIHNlYXJjaFF1ZXJ5LCBzZWFyY2hDdXJyZW50SW5kZXgsIHNlYXJjaENvdW50UmVzdWx0cywgb25DbGlja1ByZXZTZWFyY2ggPSBub29wLCBvbkNsaWNrTmV4dFNlYXJjaCA9IG5vb3AsIG9uQ2xvc2VTZWFyY2hCYXIgPSBub29wLCB9ID0gcHJvcHM7XG4gICAgY29uc3QgaG90a2V5c09wdGlvbnMgPSB7IGZpbHRlclByZXZlbnREZWZhdWx0OiB0cnVlIH07XG4gICAgY29uc3QgaG90a2V5c1ByZXYgPSAn4oenK2VudGVyJztcbiAgICBjb25zdCBob3RrZXlzTmV4dCA9ICdlbnRlcic7XG4gICAgdXNlSG90a2V5cyhob3RrZXlzUHJldiwgb25DbGlja1ByZXZTZWFyY2gsIGhvdGtleXNPcHRpb25zLCBbb25DbGlja1ByZXZTZWFyY2hdKTtcbiAgICB1c2VIb3RrZXlzKGhvdGtleXNOZXh0LCBvbkNsaWNrTmV4dFNlYXJjaCwgaG90a2V5c09wdGlvbnMsIFtvbkNsaWNrTmV4dFNlYXJjaF0pO1xuICAgIGlmIChpMThuLmxhbmd1YWdlICE9PSBsYW5nKSB7XG4gICAgICAgIGkxOG4uY2hhbmdlTGFuZ3VhZ2UobGFuZyk7XG4gICAgfVxuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigpIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2xlZnQnKSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignbmF2aWdhdGlvbicpIH0sXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDb250cm9sLCB7IG9uQ2xpY2s6IG9uQ2xpY2tQcmV2U2VhcmNoLCB0b29sdGlwVGV4dDogYCR7dCgncHJldicpfSAoJHtob3RrZXlzUHJldn0pYCwgaWNvbjogKGFyZ3MpID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXJyb3dJY29uLCBPYmplY3QuYXNzaWduKHt9LCBhcmdzKSkgfSksXG4gICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGIoJ2NvdW50ZXInKSB9LFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hDdXJyZW50SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIFwiL1wiLFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hDb3VudFJlc3VsdHMpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJvbCwgeyBvbkNsaWNrOiBvbkNsaWNrTmV4dFNlYXJjaCwgdG9vbHRpcFRleHQ6IGAke3QoJ25leHQnKX0gKCR7aG90a2V5c05leHR9KWAsIGljb246IChhcmdzKSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KEFycm93SWNvbiwgT2JqZWN0LmFzc2lnbih7fSwgYXJncywgeyBjbGFzc05hbWU6IGIoJ25leHQtYXJyb3cnKSB9KSkgfSkpLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGIoJ3NlYXJjaC1xdWVyeS1sYWJlbCcpIH0sXG4gICAgICAgICAgICAgICAgdCgnc2VhcmNoLXF1ZXJ5LWxhYmVsJyksXG4gICAgICAgICAgICAgICAgXCI6XFx1MDBBMFwiKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBiKCdzZWFyY2gtcXVlcnknKSB9LCBzZWFyY2hRdWVyeSkpLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdyaWdodCcpIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2wsIHsgb25DbGljazogb25DbG9zZVNlYXJjaEJhciwgdG9vbHRpcFRleHQ6IHQoJ2Nsb3NlJyksIGljb246ICgpID0+IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2xvc2VJY29uLCB7IHdpZHRoOiBcIjEwXCIsIGhlaWdodDogXCIxMFwiIH0pIH0pKSkpO1xufTtcblNlYXJjaEJhci5kaXNwbGF5TmFtZSA9ICdEQ1NlYXJjaEJhcic7XG5leHBvcnQgZGVmYXVsdCB3aXRoVHJhbnNsYXRpb24oJ3NlYXJjaC1iYXInKShTZWFyY2hCYXIpO1xuIiwiaW1wb3J0IE1hcmsgZnJvbSAnbWFyay50cyc7XG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KHsgaHRtbCwga2V5d29yZHMsIG9wdGlvbnMgfSkge1xuICAgIGNvbnN0IHRtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRtcERpdi5pbm5lckhUTUwgPSBodG1sO1xuICAgIGNvbnN0IG1hcmtJbnN0YW5jZSA9IG5ldyBNYXJrKHRtcERpdik7XG4gICAgbWFya0luc3RhbmNlLm1hcmsoa2V5d29yZHMsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0bXBEaXYuaW5uZXJIVE1MO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbFRvSXRlbShpdGVtKSB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbS5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgIGJsb2NrOiAnY2VudGVyJyxcbiAgICAgICAgaW5saW5lOiAnY2VudGVyJyxcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldEVsZW1lbnRPZmZzZXQoaXRlbSwgb2Zmc2V0ID0gMCkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE51bWJlcihpdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCkpIC0gb2Zmc2V0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEl0ZW1JbmRleEluVmlldyh7IGVsZW1lbnRzLCBvZmZzZXQgPSAwLCB0b3AgPSAwLCBib3R0b20gPSBJbmZpbml0eSwgcmV2ZXJzZSA9IGZhbHNlLCB9KSB7XG4gICAgbGV0IGl0ZW1JbmRleDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZWxlbWVudHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBlbGVtZW50c1tpbmRleF07XG4gICAgICAgIGNvbnN0IGl0ZW1PZmZzZXQgPSBnZXRFbGVtZW50T2Zmc2V0KGl0ZW0sIG9mZnNldCk7XG4gICAgICAgIGlmIChpdGVtT2Zmc2V0ID49IHRvcCAmJiBpdGVtT2Zmc2V0IDw9IGJvdHRvbSkge1xuICAgICAgICAgICAgaXRlbUluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgaWYgKCFyZXZlcnNlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1JbmRleDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRIaWdobGlnaHRlZEl0ZW1JbmRleEluVmlldyh7IGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsIGhlYWRlckhlaWdodCwgaGFzaCwgfSkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gaGlnaGxpZ2h0ZWRET01FbGVtZW50cztcbiAgICBjb25zdCBvZmZzZXQgPSBoZWFkZXJIZWlnaHQ7XG4gICAgbGV0IHRvcCA9IDA7XG4gICAgaWYgKGhhc2ggJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zdCBhbmNob3JFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGhhc2gpO1xuICAgICAgICBpZiAoYW5jaG9yRWwpIHtcbiAgICAgICAgICAgIHRvcCA9IGdldEVsZW1lbnRPZmZzZXQoYW5jaG9yRWwsIG9mZnNldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZmlyc3RJbmRleEluVmlldyA9IGdldEl0ZW1JbmRleEluVmlldyh7IHRvcCwgZWxlbWVudHMsIG9mZnNldCB9KTtcbiAgICBjb25zdCBmaXJzdEluZGV4T3V0Vmlld0JvdHRvbSA9IGdldEl0ZW1JbmRleEluVmlldyh7XG4gICAgICAgIHRvcDogdG9wICsgd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgb2Zmc2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IGxhc3RJbmRleE91dFZpZXdUb3AgPSBnZXRJdGVtSW5kZXhJblZpZXcoe1xuICAgICAgICB0b3A6IC1JbmZpbml0eSxcbiAgICAgICAgYm90dG9tOiB0b3AsXG4gICAgICAgIHJldmVyc2U6IHRydWUsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICBvZmZzZXQsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpcnN0SW5kZXhJblZpZXcgfHwgZmlyc3RJbmRleE91dFZpZXdCb3R0b20gfHwgbGFzdEluZGV4T3V0Vmlld1RvcDtcbn1cbiIsImV4cG9ydCBjb25zdCBDTEFTU05BTUUgPSAnZGMtc2VhcmNoLWhpZ2hsaWdodGVkJztcbmV4cG9ydCBjb25zdCBDTEFTU05BTUVfU0VMRUNURUQgPSAnZGMtc2VhcmNoLWhpZ2hsaWdodGVkX3NlbGVjdGVkJztcbmV4cG9ydCBjb25zdCBISUdITElHSFRfT1BUSU9OUyA9IHtcbiAgICBlbGVtZW50OiAnc3BhbicsXG4gICAgY2xhc3NOYW1lOiBDTEFTU05BTUUsXG4gICAgZXhjbHVkZTogW1xuICAgICAgICBgLiR7Q0xBU1NOQU1FfWAsXG4gICAgICAgICdzdmcgKicsXG4gICAgXSxcbn07XG4iLCJleHBvcnQgZnVuY3Rpb24gZ2V0TmFtZShjb250cmlidXRvciwgdXNlRnVsbE5hbWUgPSBmYWxzZSkge1xuICAgIHJldHVybiB1c2VGdWxsTmFtZVxuICAgICAgICA/IGdldFVzZXJJZGVudGlmaWNhdG9yKGNvbnRyaWJ1dG9yKVxuICAgICAgICA6IGdldFNob3J0Q29udHJpYnV0b3JOYW1lKGdldFVzZXJJZGVudGlmaWNhdG9yKGNvbnRyaWJ1dG9yKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlcklkZW50aWZpY2F0b3IoY29udHJpYnV0b3IpIHtcbiAgICBjb25zdCB7IG5hbWUsIGVtYWlsLCBsb2dpbiB9ID0gY29udHJpYnV0b3I7XG4gICAgcmV0dXJuIG5hbWUgfHwgbG9naW4gfHwgZW1haWw7XG59XG5mdW5jdGlvbiBnZXRTaG9ydENvbnRyaWJ1dG9yTmFtZShmdWxsQ29udHJpYnV0b3JOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bGxDb250cmlidXRvck5hbWUuc3BsaXQoJyAnKS5yZWR1Y2UoKHJlc3VsdCwgY3VycmVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gMCA/IGAke3Jlc3VsdH0gJHtjdXJyZW50LmNoYXJBdCgwKX0uYCA6IGN1cnJlbnQ7XG4gICAgfSwgJycpO1xufVxuIiwiZXhwb3J0IHZhciBBdmF0YXJTaXplcztcbihmdW5jdGlvbiAoQXZhdGFyU2l6ZXMpIHtcbiAgICBBdmF0YXJTaXplc1tcIkJJR1wiXSA9IFwiYmlnXCI7XG4gICAgQXZhdGFyU2l6ZXNbXCJTTUFMTFwiXSA9IFwic21hbGxcIjtcbn0pKEF2YXRhclNpemVzIHx8IChBdmF0YXJTaXplcyA9IHt9KSk7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250cmlidXRvckF2YXRhcnMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250cmlidXRvckF2YXRhcnMuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQXZhdGFyU2l6ZXMgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0VXNlcklkZW50aWZpY2F0b3IgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgJy4uL0NvbnRyaWJ1dG9yQXZhdGFycy5zY3NzJztcbmNvbnN0IGIgPSBibG9jaygnY29udHJpYnV0b3ItYXZhdGFycycpO1xuY29uc3QgQXZhdGFyID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBhdmF0YXJEYXRhLCBwb3B1cERhdGEsIGlzUmVkaXJlY3QgPSBmYWxzZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgeyBjb250cmlidXRvciwgc2l6ZSA9IEF2YXRhclNpemVzLlNNQUxMLCBpbkRldGFpbHMgPSBmYWxzZSB9ID0gYXZhdGFyRGF0YTtcbiAgICBjb25zdCB7IGNoYW5nZVZpc2libGlsaXR5UG9wdXAgPSAoKSA9PiB7IH0sIHJlZiB9ID0gcG9wdXBEYXRhIHx8IHt9O1xuICAgIGNvbnN0IHsgYXZhdGFyLCBlbWFpbCwgbG9naW4gfSA9IGNvbnRyaWJ1dG9yO1xuICAgIGNvbnN0IGtleSA9IGBhdmF0YXItJHtsb2dpbiB8fCBlbWFpbH1gO1xuICAgIGlmIChhdmF0YXIpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiaW1nXCIsIHsga2V5OiBrZXksIGNsYXNzTmFtZTogYignYXZhdGFyJywgeyBzaXplIH0pLCBzcmM6IGF2YXRhciwgcmVmOiByZWYsIG9uTW91c2VPdmVyOiAoKSA9PiBjaGFuZ2VWaXNpYmxpbGl0eVBvcHVwKHRydWUpLCBvbk1vdXNlTGVhdmU6ICgpID0+IGNoYW5nZVZpc2libGlsaXR5UG9wdXAoZmFsc2UpLCBvblRvdWNoU3RhcnQ6ICgpID0+IGNoYW5nZVZpc2libGlsaXR5UG9wdXAoKSwgb25Ub3VjaEVuZDogKGV2ZW50KSA9PiBwcmV2ZW50RGVmYXVsdEJ5Q29tcG9uZW50KGV2ZW50LCBpbkRldGFpbHMsIGlzUmVkaXJlY3QpIH0pKTtcbiAgICB9XG4gICAgY29uc3QgaW5pdGlhbHMgPSBnZXRJbml0aWFscyhjb250cmlidXRvcik7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsga2V5OiBrZXksIGNsYXNzTmFtZTogYignYXZhdGFyJywgeyBzaXplLCBkZWZhdWx0OiB0cnVlIH0pLCByZWY6IHJlZiwgb25Nb3VzZU92ZXI6ICgpID0+IGNoYW5nZVZpc2libGlsaXR5UG9wdXAodHJ1ZSksIG9uTW91c2VMZWF2ZTogKCkgPT4gY2hhbmdlVmlzaWJsaWxpdHlQb3B1cChmYWxzZSksIG9uVG91Y2hTdGFydDogKCkgPT4gY2hhbmdlVmlzaWJsaWxpdHlQb3B1cCgpLCBvblRvdWNoRW5kOiAoZXZlbnQpID0+IHByZXZlbnREZWZhdWx0QnlDb21wb25lbnQoZXZlbnQsIGluRGV0YWlscywgaXNSZWRpcmVjdCkgfSwgaW5pdGlhbHMpKTtcbn07XG5mdW5jdGlvbiBwcmV2ZW50RGVmYXVsdEJ5Q29tcG9uZW50KGV2ZW50LCBpbkRldGFpbHMsIGlzUmVkaXJlY3QpIHtcbiAgICBpZiAoaW5EZXRhaWxzIHx8IGlzUmVkaXJlY3QpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xufVxuZnVuY3Rpb24gZ2V0SW5pdGlhbHMoY29udHJpYnV0b3IpIHtcbiAgICByZXR1cm4gZ2V0VXNlcklkZW50aWZpY2F0b3IoY29udHJpYnV0b3IpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpO1xufVxuZXhwb3J0IGRlZmF1bHQgQXZhdGFyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuY29uc3QgTGluayA9ICh7IGNoaWxkcmVuLCB1cmwgfSkgPT4ge1xuICAgIHJldHVybiB1cmwgPyAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgeyBocmVmOiB1cmwsIHRhcmdldDogXCJfYmxhbmtcIiwgcmVsOiBcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIiB9LCBjaGlsZHJlbikpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsIGNoaWxkcmVuKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgTGluaztcbiIsImltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICdAZ3Jhdml0eS11aS91aWtpdCc7XG5pbXBvcnQgQXZhdGFyIGZyb20gJy4vQXZhdGFyJztcbmltcG9ydCBMaW5rIGZyb20gJy4uLy4uL0xpbmsnO1xuaW1wb3J0IHsgQXZhdGFyU2l6ZXMgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgZ2V0TmFtZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFBvcHBlclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MnO1xuaW1wb3J0ICcuLi9Db250cmlidXRvckF2YXRhcnMuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2NvbnRyaWJ1dG9yLWF2YXRhcnMnKTtcbmNvbnN0IERldGFpbHMgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNvbnRyaWJ1dG9ycywgcG9wdXBEYXRhIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHJlZiwgaXNWaXNpYmxlUG9wdXAsIGNoYW5nZVZpc2libGlsaXR5UG9wdXAgfSA9IHBvcHVwRGF0YSB8fCB7fTtcbiAgICBjb25zdCBjb250cmlidXRvcnNEZXRhaWxzID0gY29udHJpYnV0b3JzLm1hcCgoYXV0aG9yKSA9PiB7XG4gICAgICAgIHJldHVybiBnZXRDb250cmlidXRvckRldGFpbHMoYXV0aG9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUG9wdXAsIHsgYW5jaG9yUmVmOiByZWYsIG9wZW46IGlzVmlzaWJsZVBvcHVwLCBvbk91dHNpZGVDbGljazogKCkgPT4gY2hhbmdlVmlzaWJsaWxpdHlQb3B1cChmYWxzZSksIGNsYXNzTmFtZTogYigncG9wdXAnKSwgcGxhY2VtZW50OiBQb3BwZXJQb3NpdGlvbi5CT1RUT00sIGhhc0Fycm93OiB0cnVlIH0sIGNvbnRyaWJ1dG9yc0RldGFpbHMpKTtcbn07XG5mdW5jdGlvbiBnZXRDb250cmlidXRvckRldGFpbHMoY29udHJpYnV0b3IpIHtcbiAgICBjb25zdCB7IGxvZ2luLCBlbWFpbCwgdXJsIH0gPSBjb250cmlidXRvcjtcbiAgICBjb25zdCBhdmF0YXJEYXRhID0ge1xuICAgICAgICBjb250cmlidXRvcixcbiAgICAgICAgc2l6ZTogQXZhdGFyU2l6ZXMuQklHLFxuICAgICAgICBpbkRldGFpbHM6IHRydWUsXG4gICAgfTtcbiAgICBjb25zdCBhdmF0YXJJbWcgPSBSZWFjdC5jcmVhdGVFbGVtZW50KEF2YXRhciwgeyBhdmF0YXJEYXRhOiBhdmF0YXJEYXRhIH0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChMaW5rLCB7IHVybDogdXJsLCBrZXk6IGBkZXRhaWxzLSR7bG9naW4gfHwgZW1haWx9YCB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdkZXRhaWxzJykgfSxcbiAgICAgICAgICAgIGF2YXRhckltZyxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2RldGFpbHNfbmFtZScpIH0sIGdldE5hbWUoY29udHJpYnV0b3IsIHRydWUpKSkpKTtcbn1cbmV4cG9ydCBkZWZhdWx0IERldGFpbHM7XG4iLCJpbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IERldGFpbHMgZnJvbSAnLi9EZXRhaWxzJztcbmltcG9ydCAnLi4vQ29udHJpYnV0b3JBdmF0YXJzLnNjc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdjb250cmlidXRvci1hdmF0YXJzJyk7XG5jb25zdCBMT1dFUl9CT1VORF9NT1JFX0NPTlRSSUJVVE9SUyA9IDk7XG5jb25zdCBIaWRkZW5BdmF0YXJzID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjb250cmlidXRvcnMsIGF2YXRhcnNTaXplIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250cmlidXRvcnNDb3VudCA9IGNvbnRyaWJ1dG9ycy5sZW5ndGg7XG4gICAgY29uc3QgY29udHJvbFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbaXNWaXNpYmxlUG9wdXAsIHNldElzVmlzaWJsZVBvcHVwXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBpZiAoY29udHJpYnV0b3JzQ291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHBvcHVwRGF0YSA9IHtcbiAgICAgICAgcmVmOiBjb250cm9sUmVmLFxuICAgICAgICBpc1Zpc2libGVQb3B1cCxcbiAgICAgICAgY2hhbmdlVmlzaWJsaWxpdHlQb3B1cDogKCkgPT4gc2V0SXNWaXNpYmxlUG9wdXAoZmFsc2UpLFxuICAgIH07XG4gICAgY29uc3QgY29udHJpYnV0b3JzQ291bnRTdHJpbmcgPSBjb250cmlidXRvcnNDb3VudCA+IExPV0VSX0JPVU5EX01PUkVfQ09OVFJJQlVUT1JTXG4gICAgICAgID8gYCR7TE9XRVJfQk9VTkRfTU9SRV9DT05UUklCVVRPUlN9K2BcbiAgICAgICAgOiBgKyR7Y29udHJpYnV0b3JzQ291bnR9YDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2F2YXRhcicsIHsgc2l6ZTogYXZhdGFyc1NpemUgfSksIHJlZjogY29udHJvbFJlZiwgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0SXNWaXNpYmxlUG9wdXAoIWlzVmlzaWJsZVBvcHVwKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSB9LCBjb250cmlidXRvcnNDb3VudFN0cmluZyksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRGV0YWlscywgeyBjb250cmlidXRvcnM6IGNvbnRyaWJ1dG9ycywgcG9wdXBEYXRhOiBwb3B1cERhdGEgfSkpKTtcbn07XG5leHBvcnQgZGVmYXVsdCBIaWRkZW5BdmF0YXJzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IEZyYWdtZW50LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IEF2YXRhciBmcm9tICcuL0F2YXRhcic7XG5pbXBvcnQgRGV0YWlscyBmcm9tICcuL0RldGFpbHMnO1xuY29uc3QgQXZhdGFyV2l0aERlc2NyaXB0aW9uID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjb250cmlidXRvciwgYXZhdGFyU2l6ZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udHJvbFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbaXNWaXNpYmxlUG9wdXAsIHNldElzVmlzaWJsZVBvcHVwXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjaGFuZ2VWaXNpYmxpbGl0eVBvcHVwID0gKHZpc2libGUpID0+IHtcbiAgICAgICAgaWYgKHZpc2libGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0SXNWaXNpYmxlUG9wdXAodmlzaWJsZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0SXNWaXNpYmxlUG9wdXAoIWlzVmlzaWJsZVBvcHVwKTtcbiAgICB9O1xuICAgIGNvbnN0IGF2YXRhckRhdGEgPSB7XG4gICAgICAgIGNvbnRyaWJ1dG9yLFxuICAgICAgICBzaXplOiBhdmF0YXJTaXplLFxuICAgIH07XG4gICAgY29uc3QgcG9wdXBEYXRhID0ge1xuICAgICAgICBjaGFuZ2VWaXNpYmxpbGl0eVBvcHVwLFxuICAgICAgICByZWY6IGNvbnRyb2xSZWYsXG4gICAgICAgIGlzVmlzaWJsZVBvcHVwLFxuICAgIH07XG4gICAgY29uc3QgYXZhdGFySW1nID0gUmVhY3QuY3JlYXRlRWxlbWVudChBdmF0YXIsIHsgYXZhdGFyRGF0YTogYXZhdGFyRGF0YSwgcG9wdXBEYXRhOiBwb3B1cERhdGEgfSk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLFxuICAgICAgICBhdmF0YXJJbWcsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRGV0YWlscywgeyBjb250cmlidXRvcnM6IFtjb250cmlidXRvcl0sIHBvcHVwRGF0YTogcG9wdXBEYXRhIH0pKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgQXZhdGFyV2l0aERlc2NyaXB0aW9uO1xuIiwiaW1wb3J0IGJsb2NrIGZyb20gJ2JlbS1jbi1saXRlJztcbmltcG9ydCBSZWFjdCwgeyBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldE5hbWUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEF2YXRhclNpemVzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IEhpZGRlbkF2YXRhcnMgZnJvbSAnLi9BdmF0YXJzL0hpZGRlbkF2YXRhcnMnO1xuaW1wb3J0IEF2YXRhcldpdGhEZXNjcmlwdGlvbiBmcm9tICcuL0F2YXRhcnMvQXZhdGFyV2l0aERlc2NyaXB0aW9uJztcbmltcG9ydCBMaW5rIGZyb20gJy4uL0xpbmsnO1xuaW1wb3J0IEF2YXRhciBmcm9tICcuL0F2YXRhcnMvQXZhdGFyJztcbmltcG9ydCAnLi9Db250cmlidXRvckF2YXRhcnMuc2Nzcyc7XG5jb25zdCBiID0gYmxvY2soJ2NvbnRyaWJ1dG9yLWF2YXRhcnMnKTtcbmNvbnN0IE1BWF9ESVNQTEFZRURfQ09OVFJJQlVUT1JTID0gMztcbmNvbnN0IENvbnRyaWJ1dG9yQXZhdGFycyA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY29udHJpYnV0b3JzLCBpc0F1dGhvciA9IGZhbHNlLCBvbmx5QXV0aG9yID0gZmFsc2UgfSA9IHByb3BzO1xuICAgIGlmICghY29udHJpYnV0b3JzIHx8IGNvbnRyaWJ1dG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChjb250cmlidXRvcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IG9uZUF2YXRhciA9IGdldE9uZUF2YXRhcihjb250cmlidXRvcnNbMF0sIGlzQXV0aG9yLCBvbmx5QXV0aG9yKTtcbiAgICAgICAgcmV0dXJuIG9uZUF2YXRhcjtcbiAgICB9XG4gICAgY29uc3QgZGlzcGxheWVkQ29udHJpYnV0b3JzID0gWy4uLmNvbnRyaWJ1dG9yc107XG4gICAgY29uc3QgaGlkZGVuQ29udHJpYnV0b3JzID0gZGlzcGxheWVkQ29udHJpYnV0b3JzLnNwbGljZShNQVhfRElTUExBWUVEX0NPTlRSSUJVVE9SUyk7XG4gICAgY29uc3QgZGlzcGxheWVkQXZhdGFycyA9IGRpc3BsYXllZENvbnRyaWJ1dG9ycy5tYXAoKGNvbnRyaWJ1dG9yKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdXJsLCBsb2dpbiwgZW1haWwgfSA9IGNvbnRyaWJ1dG9yO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGluaywgeyBrZXk6IGBkaXNwbGF5ZWQtY29udHJpYnV0b3JzLSR7bG9naW4gfHwgZW1haWx9YCwgdXJsOiB1cmwgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXZhdGFyV2l0aERlc2NyaXB0aW9uLCB7IGNvbnRyaWJ1dG9yOiBjb250cmlidXRvciwgYXZhdGFyU2l6ZTogQXZhdGFyU2l6ZXMuU01BTEwgfSkpKTtcbiAgICB9KTtcbiAgICBjb25zdCBoaWRkZW5BdmF0YXJzID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoSGlkZGVuQXZhdGFycywgeyBjb250cmlidXRvcnM6IGhpZGRlbkNvbnRyaWJ1dG9ycywgYXZhdGFyc1NpemU6IEF2YXRhclNpemVzLlNNQUxMIH0pKTtcbiAgICBjb25zdCBhdmF0YXJzID0gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2Rpc3BsYXllZF9hdmF0YXJzJykgfSwgZGlzcGxheWVkQXZhdGFycyksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2hpZGRlbl9hdmF0YXJzJykgfSwgaGlkZGVuQXZhdGFycykpKTtcbiAgICByZXR1cm4gYXZhdGFycztcbn07XG5mdW5jdGlvbiBnZXRPbmVBdmF0YXIoY29udHJpYnV0b3IsIGlzQXV0aG9yLCBvbmx5QXV0aG9yKSB7XG4gICAgY29uc3QgYXZhdGFyRGF0YSA9IHtcbiAgICAgICAgY29udHJpYnV0b3IsXG4gICAgICAgIHNpemU6IEF2YXRhclNpemVzLlNNQUxMLFxuICAgIH07XG4gICAgY29uc3Qgd3JhcHBlck1vZGlmaWVycyA9IGlzQXV0aG9yID8geyBvbmx5QXV0aG9yIH0gOiB7fTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ29uZV9jb250cmlidXRvcicsIHdyYXBwZXJNb2RpZmllcnMpIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6ICdkZXNrdG9wJyB9LFxuICAgICAgICAgICAgZ2V0UmVkaXJlY3RpbmdBdmF0YXIoYXZhdGFyRGF0YSwgY29udHJpYnV0b3IudXJsKSxcbiAgICAgICAgICAgIFwiIFwiKSxcbiAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ21vYmlsZScgfSwgaXNBdXRob3IgJiYgb25seUF1dGhvciA/IChnZXRSZWRpcmVjdGluZ0F2YXRhcihhdmF0YXJEYXRhLCBjb250cmlidXRvci51cmwsIHRydWUpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KEF2YXRhcldpdGhEZXNjcmlwdGlvbiwgeyBjb250cmlidXRvcjogY29udHJpYnV0b3IsIGF2YXRhclNpemU6IEF2YXRhclNpemVzLlNNQUxMIH0pKSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgbnVsbCxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGluaywgeyB1cmw6IGNvbnRyaWJ1dG9yLnVybCB9LCBnZXROYW1lKGNvbnRyaWJ1dG9yLCBpc0F1dGhvcikpKSkpO1xufVxuZnVuY3Rpb24gZ2V0UmVkaXJlY3RpbmdBdmF0YXIoYXZhdGFyRGF0YSwgdXJsLCBpc1JlZGlyZWN0ID0gZmFsc2UpIHtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGluaywgeyB1cmw6IHVybCB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEF2YXRhciwgeyBhdmF0YXJEYXRhOiBhdmF0YXJEYXRhLCBpc1JlZGlyZWN0OiBpc1JlZGlyZWN0IH0pKSk7XG59XG5leHBvcnQgZGVmYXVsdCBDb250cmlidXRvckF2YXRhcnM7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250cmlidXRvcnMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Db250cmlidXRvcnMuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgYmxvY2sgZnJvbSAnYmVtLWNuLWxpdGUnO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IENvbnRyaWJ1dG9yQXZhdGFycyB9IGZyb20gJy4uL0NvbnRyaWJ1dG9yQXZhdGFycyc7XG5pbXBvcnQgJy4vQ29udHJpYnV0b3JzLnNjc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdjb250cmlidXRvcnMnKTtcbmNvbnN0IENvbnRyaWJ1dG9ycyA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdXNlcnMsIGxhbmcsIG9ubHlBdXRob3IgPSBmYWxzZSwgaXNBdXRob3IgPSBmYWxzZSwgdHJhbnNsYXRpb25OYW1lID0gJ2NvbnRyaWJ1dG9ycycsIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uTmFtZSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaTE4bi5jaGFuZ2VMYW5ndWFnZShsYW5nKTtcbiAgICB9LCBbaTE4biwgbGFuZ10pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigpIH0sXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ3RpdGxlJykgfSwgdCgndGl0bGUnKSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJpYnV0b3JBdmF0YXJzLCB7IGNvbnRyaWJ1dG9yczogdXNlcnMsIGlzQXV0aG9yOiBpc0F1dGhvciwgb25seUF1dGhvcjogb25seUF1dGhvciB9KSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IENvbnRyaWJ1dG9ycztcbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlZmF1bHQgKCh7XG4gIHN0eWxlcyA9IHt9LFxuICAuLi5wcm9wc1xufSkgPT4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgX2V4dGVuZHMoe1xuICB3aWR0aDogXCIxNFwiLFxuICBoZWlnaHQ6IFwiMTRcIixcbiAgZmlsbDogXCJub25lXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbn0sIHByb3BzKSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHtcbiAgZmlsbFJ1bGU6IFwiZXZlbm9kZFwiLFxuICBjbGlwUnVsZTogXCJldmVub2RkXCIsXG4gIGQ6IFwiTTEzLjI5NCAyLjIxNEwxMS43NjcuNjg0Yy0uOTExLS45MTItMi40OTktLjkxMi0zLjQxIDBMNi44MyAyLjIxNGEyLjQxMiAyLjQxMiAwIDAwLS4xNDcgMy4yMzNMNy45MzYgNC4xOWEuNjYuNjYgMCAwMS4xMzItLjczOGwxLjUyNy0xLjUzYS42NTguNjU4IDAgMDEuOTM0IDBsMS41MjcgMS41M2EuNjY0LjY2NCAwIDAxMCAuOTM2bC0xLjUyNyAxLjUzYS42OC42OCAwIDAxLS43MzQuMTI5TDguNTQgNy4zMDZjLjQzLjM1Ni45NTguNTU5IDEuNTIzLjU1OS42NDQgMCAxLjI0OS0uMjUxIDEuNzA1LS43MDdsMS41MjctMS41M2EyLjQyIDIuNDIgMCAwMDAtMy40MTR6TTkuNTMyIDUuNjlhLjg3Ni44NzYgMCAwMC0xLjIzNy0xLjIzOWwtLjA4Mi4wODItMS4yMzggMS4yNC0xLjE4OSAxLjE5LTEuMjM3IDEuMjQtLjA4Mi4wODJhLjg3Ni44NzYgMCAwMDEuMjM3IDEuMjRsLjA4Mi0uMDgzIDEuMjM4LTEuMjM5IDEuMTg5LTEuMTkxIDEuMjM3LTEuMjQuMDgyLS4wODJ6bS0zLjYwMSA0LjgzM2MuMi0uMi4yNC0uNDk0LjEzMS0uNzM4TDcuMzE2IDguNTNhMi40MTIgMi40MTIgMCAwMS0uMTQ4IDMuMjMzbC0xLjUyNyAxLjUyOUEyLjM5MiAyLjM5MiAwIDAxMy45MzcgMTRjLS42NDUgMC0xLjI1LS4yNS0xLjcwNS0uNzA3bC0xLjUyNy0xLjUzYTIuNDIxIDIuNDIxIDAgMDEwLTMuNDE1TDIuMjMyIDYuODJjLjg1NC0uODU2IDIuMjk5LS44OTggMy4yMjctLjE0Nkw0LjIwNyA3LjkyN2EuNjUuNjUgMCAwMC0uNzM3LjEzMWwtMS41MjggMS41M2EuNjY0LjY2NCAwIDAwMCAuOTM2bDEuNTI3IDEuNTNhLjY4LjY4IDAgMDAuOTM1IDBsMS41MjctMS41M3pcIixcbiAgZmlsbDogXCJjdXJyZW50Q29sb3JcIlxufSkpKTsiLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi95Zm0uY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3lmbS5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Eb2NQYWdlLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vRG9jUGFnZS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTVNlcnZlciBmcm9tICdyZWFjdC1kb20vc2VydmVyJztcbmltcG9ydCBibG9jayBmcm9tICdiZW0tY24tbGl0ZSc7XG5pbXBvcnQgJ0Bkb2MtdG9vbHMvdHJhbnNmb3JtL2Rpc3QvanMveWZtJztcbmltcG9ydCB7IERvY0xheW91dCB9IGZyb20gJy4uL0RvY0xheW91dCc7XG5pbXBvcnQgeyBEb2NQYWdlVGl0bGUgfSBmcm9tICcuLi9Eb2NQYWdlVGl0bGUnO1xuaW1wb3J0IHsgTWluaVRvYyB9IGZyb20gJy4uL01pbmlUb2MnO1xuaW1wb3J0IHsgSFRNTCB9IGZyb20gJy4uL0hUTUwnO1xuaW1wb3J0IHsgQnJlYWRjcnVtYnMgfSBmcm9tICcuLi9CcmVhZGNydW1icyc7XG5pbXBvcnQgeyBUb2NOYXZQYW5lbCB9IGZyb20gJy4uL1RvY05hdlBhbmVsJztcbmltcG9ydCB7IENvbnRyb2xzIH0gZnJvbSAnLi4vQ29udHJvbHMnO1xuaW1wb3J0IHsgRWRpdEJ1dHRvbiB9IGZyb20gJy4uL0VkaXRCdXR0b24nO1xuaW1wb3J0IHsgU2VhcmNoQmFyLCB3aXRoSGlnaGxpZ2h0ZWRTZWFyY2hXb3JkcyB9IGZyb20gJy4uL1NlYXJjaEJhcic7XG5pbXBvcnQgeyBGZWVkYmFjaywgRmVlZGJhY2tWaWV3IH0gZnJvbSAnLi4vRmVlZGJhY2snO1xuaW1wb3J0IENvbnRyaWJ1dG9ycyBmcm9tICcuLi9Db250cmlidXRvcnMvQ29udHJpYnV0b3JzJztcbmltcG9ydCB7IGNhbGxTYWZlLCBjcmVhdGVFbGVtZW50RnJvbUhUTUwsIGdldEhlYWRlclRhZywgZ2V0U3RhdGVLZXksIGdldFJhbmRvbUtleSwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBERUZBVUxUX1NFVFRJTkdTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCBMaW5rSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaWNvbnMvbGluay5zdmcnO1xuaW1wb3J0ICdAZG9jLXRvb2xzL3RyYW5zZm9ybS9kaXN0L2Nzcy95Zm0uY3NzJztcbmltcG9ydCAnLi9Eb2NQYWdlLnNjc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdkYy1kb2MtcGFnZScpO1xuY2xhc3MgRG9jUGFnZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgICAgICAga2V5RE9NOiBnZXRSYW5kb21LZXkoKSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5ib2R5UmVmID0gbnVsbDtcbiAgICAgICAgdGhpcy5ib2R5T2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZUJvZHlNdXRhdGlvbiA9IChtdXRhdGlvbnNMaXN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IG9uQ29udGVudE11dGF0aW9uLCBvbkNvbnRlbnRMb2FkZWQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5zaW5nbGVQYWdlICYmIHRoaXMuYm9keU9ic2VydmVyICYmIHRoaXMuYm9keVJlZikge1xuICAgICAgICAgICAgICAgIHRoaXMuYm9keU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZExpbmtzVG9PcmlnaW5hbEFydGljbGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvZHlPYnNlcnZlci5vYnNlcnZlKHRoaXMuYm9keVJlZiwge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob25Db250ZW50TXV0YXRpb24pIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KG9uQ29udGVudE11dGF0aW9uLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGlmICghb25Db250ZW50TG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgbXV0YXRpb25zTGlzdFxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ2NoaWxkTGlzdCcpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5Zm1Sb290ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB5Zm1JbWFnZXMgPSBbLi4ueWZtUm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKV07XG4gICAgICAgICAgICAgICAgICAgIHlmbUltYWdlcy5mb3JFYWNoKChpbWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgb25Db250ZW50TG9hZGVkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0Qm9keVJlZiA9IChyZWYpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYm9keVJlZiA9IHJlZjtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hZGRMaW5rc1RvT3JpZ2luYWxBcnRpY2xlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBzaW5nbGVQYWdlLCBsYW5nLCBjb252ZXJ0UGF0aFRvT3JpZ2luYWxBcnRpY2xlLCBnZW5lcmF0ZVBhdGhUb1ZjcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIGlmIChzaW5nbGVQYWdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1vcmlnaW5hbC1hcnRpY2xlXScpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaHJlZiA9IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1vcmlnaW5hbC1hcnRpY2xlJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmtXcmFwcGVyRWwgPSBnZXRIZWFkZXJUYWcoZWwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGlua1dyYXBwZXJFbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLyogSGlkZSBhbmNob3JzICovXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbmNob3JzID0gbGlua1dyYXBwZXJFbC5xdWVyeVNlbGVjdG9yQWxsKCcueWZtLWFuY2hvcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhbmNob3Igb2YgYW5jaG9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvci5jbGFzc0xpc3QuYWRkKCd5Zm0tYW5jaG9yX2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLyogQ3JlYXRlIHRoZSBsaW5rIHRvIHRoZSBvcmlnaW5hbCBhcnRpY2xlICovXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5rVG9PcmlnaW5hbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUb09yaWdpbmFsLmhyZWYgPSBjYWxsU2FmZShjb252ZXJ0UGF0aFRvT3JpZ2luYWxBcnRpY2xlLCBocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUb09yaWdpbmFsLmNsYXNzTmFtZSA9ICd5Zm0tYW5jaG9yIHlmbS1vcmlnaW5hbC1saW5rJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUb09yaWdpbmFsLmlubmVySFRNTCA9IFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RhdGljTWFya3VwKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTGlua0ljb24sIG51bGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtXcmFwcGVyRWwuYXBwZW5kKGxpbmtUb09yaWdpbmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIENyZWF0ZSB0aGUgbGluayB0byB0aGUgdmNzICovXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGdlbmVyYXRlUGF0aFRvVmNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmNzSHJlZiA9IGNhbGxTYWZlKGdlbmVyYXRlUGF0aFRvVmNzLCBocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5rVG9WY3MgPSBjcmVhdGVFbGVtZW50RnJvbUhUTUwoUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdGF0aWNNYXJrdXAoUmVhY3QuY3JlYXRlRWxlbWVudChFZGl0QnV0dG9uLCB7IGxhbmc6IGxhbmcsIGhyZWY6IHZjc0hyZWYgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rV3JhcHBlckVsLmFwcGVuZChsaW5rVG9WY3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtXcmFwcGVyRWwuY2xhc3NMaXN0LmFkZChiKCdoZWFkZXItY29udGFpbmVyJykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdldElzVmVydGljYWxWaWV3ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBmdWxsU2NyZWVuIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnNob3dNaW5pVG9jIHx8IGZ1bGxTY3JlZW47XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVuZGVyU2VhcmNoQmFyID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBzaG93U2VhcmNoQmFyLCBzZWFyY2hRdWVyeSwgc2VhcmNoQ3VycmVudEluZGV4LCBzZWFyY2hDb3VudFJlc3VsdHMsIG9uQ2xpY2tQcmV2U2VhcmNoLCBvbkNsaWNrTmV4dFNlYXJjaCwgb25DbG9zZVNlYXJjaEJhciwgbGFuZywgc2luZ2xlUGFnZSwgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICBpZiAoIXNob3dTZWFyY2hCYXIgfHwgc2luZ2xlUGFnZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdzZWFyY2gtYmFyJykgfSxcbiAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFNlYXJjaEJhciwgeyBsYW5nOiBsYW5nLCBzZWFyY2hDdXJyZW50SW5kZXg6IHNlYXJjaEN1cnJlbnRJbmRleCwgc2VhcmNoQ291bnRSZXN1bHRzOiBzZWFyY2hDb3VudFJlc3VsdHMsIG9uQ2xpY2tQcmV2U2VhcmNoOiBvbkNsaWNrUHJldlNlYXJjaCwgb25DbGlja05leHRTZWFyY2g6IG9uQ2xpY2tOZXh0U2VhcmNoLCBvbkNsb3NlU2VhcmNoQmFyOiBvbkNsb3NlU2VhcmNoQmFyLCBzZWFyY2hRdWVyeTogc2VhcmNoUXVlcnkgfSkpKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGNvbnN0IHsgc2luZ2xlUGFnZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKHNpbmdsZVBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTGlua3NUb09yaWdpbmFsQXJ0aWNsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgdGhpcy5hZGRCb2R5T2JzZXJ2ZXIoKTtcbiAgICB9XG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgICBpZiAocHJldlByb3BzLnNpbmdsZVBhZ2UgIT09IHRoaXMucHJvcHMuc2luZ2xlUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByZXZQcm9wcy5odG1sICE9PSB0aGlzLnByb3BzLmh0bWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBrZXlET006IGdldFJhbmRvbUtleSgpIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgICBpZiAodGhpcy5ib2R5T2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgdG9jLCByb3V0ZXIsIGxhbmcsIGhlYWRlckhlaWdodCwgd2lkZUZvcm1hdCwgZnVsbFNjcmVlbiwgc2luZ2xlUGFnZSwgdG9jVGl0bGVJY29uLCBoaWRlVG9jSGVhZGVyLCBoaWRlVG9jLCBmb290ZXIsIG9uQ2hhbmdlU2luZ2xlUGFnZSwgcGRmTGluaywgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGhpZGVNaW5pVG9jID0gIXRoaXMuc2hvd01pbmlUb2M7XG4gICAgICAgIGNvbnN0IG1vZGVzID0ge1xuICAgICAgICAgICAgJ3JlZ3VsYXItcGFnZS13aWR0aCc6ICF3aWRlRm9ybWF0LFxuICAgICAgICAgICAgJ2Z1bGwtc2NyZWVuJzogZnVsbFNjcmVlbixcbiAgICAgICAgICAgICdoaWRkZW4tbWluaS10b2MnOiBoaWRlTWluaVRvYyxcbiAgICAgICAgICAgICdzaW5nbGUtcGFnZSc6IHNpbmdsZVBhZ2UsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChEb2NMYXlvdXQsIHsgdG9jOiB0b2MsIHJvdXRlcjogcm91dGVyLCBsYW5nOiBsYW5nLCBoZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCwgY2xhc3NOYW1lOiBiKG1vZGVzKSwgZnVsbFNjcmVlbjogZnVsbFNjcmVlbiwgaGlkZVJpZ2h0OiBoaWRlTWluaVRvYywgdG9jVGl0bGVJY29uOiB0b2NUaXRsZUljb24sIHdpZGVGb3JtYXQ6IHdpZGVGb3JtYXQsIGhpZGVUb2NIZWFkZXI6IGhpZGVUb2NIZWFkZXIsIGhpZGVUb2M6IGhpZGVUb2MsIGxvYWRpbmc6IHRoaXMuc3RhdGUubG9hZGluZywgZm9vdGVyOiBmb290ZXIsIHNpbmdsZVBhZ2U6IHNpbmdsZVBhZ2UsIG9uQ2hhbmdlU2luZ2xlUGFnZTogb25DaGFuZ2VTaW5nbGVQYWdlLCBwZGZMaW5rOiBwZGZMaW5rIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KERvY0xheW91dC5DZW50ZXIsIG51bGwsXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJTZWFyY2hCYXIoKSxcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckJyZWFkY3J1bWJzKCksXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJDb250cm9scygpLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ21haW4nKSB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwibWFpblwiLCB7IGNsYXNzTmFtZTogYignY29udGVudCcpIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclRpdGxlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlclBhZ2VDb250cmlidXRvcnMoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVNaW5pVG9jID8gbnVsbCA6IHRoaXMucmVuZGVyQ29udGVudE1pbmlUb2MoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyQm9keSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJGZWVkYmFjaygpKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJUb2NOYXZQYW5lbCgpKSxcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckxvYWRlcigpKSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9jTGF5b3V0LlJpZ2h0LCBudWxsLFxuICAgICAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2FzaWRlJyksIGtleTogZ2V0U3RhdGVLZXkodGhpcy5zaG93TWluaVRvYywgd2lkZUZvcm1hdCwgc2luZ2xlUGFnZSkgfSwgaGlkZU1pbmlUb2MgPyBudWxsIDogdGhpcy5yZW5kZXJBc2lkZU1pbmlUb2MoKSkpKSk7XG4gICAgfVxuICAgIGFkZEJvZHlPYnNlcnZlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmJvZHlPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5ib2R5T2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcih0aGlzLmhhbmRsZUJvZHlNdXRhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYm9keVJlZikge1xuICAgICAgICAgICAgdGhpcy5ib2R5T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmJvZHlSZWYsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJlbmRlckxvYWRlcigpIHtcbiAgICAgICAgY29uc3QgeyByZW5kZXJMb2FkZXIgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgbG9hZGluZyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgaWYgKCFyZW5kZXJMb2FkZXIgfHwgIWxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdsb2FkZXItd3JhcHBlcicpIH0sIHJlbmRlckxvYWRlcigpKTtcbiAgICB9XG4gICAgZ2V0IHNob3dNaW5pVG9jKCkge1xuICAgICAgICBjb25zdCB7IHNob3dNaW5pVG9jLCBzaW5nbGVQYWdlLCBoZWFkaW5ncywgdG9jIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoc2luZ2xlUGFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVtcHR5SGVhZGVyT3JTaW5nbGVQYWdlID0gaGVhZGluZ3MubGVuZ3RoID09PSAwIHx8IHRvYy5zaW5nbGVQYWdlO1xuICAgICAgICBjb25zdCBzb2xvSGVhZGVyV2l0aENoaWxkcmVuID0gaGVhZGluZ3MubGVuZ3RoID09PSAxICYmIGhlYWRpbmdzWzBdLml0ZW1zICYmIGhlYWRpbmdzWzBdLml0ZW1zLmxlbmd0aCA+PSAxO1xuICAgICAgICBpZiAoZW1wdHlIZWFkZXJPclNpbmdsZVBhZ2UgfHwgIShzb2xvSGVhZGVyV2l0aENoaWxkcmVuIHx8IGhlYWRpbmdzLmxlbmd0aCA+PSAyKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzaG93TWluaVRvYztcbiAgICB9XG4gICAgcmVuZGVyQnJlYWRjcnVtYnMoKSB7XG4gICAgICAgIGNvbnN0IHsgYnJlYWRjcnVtYnMgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmICghYnJlYWRjcnVtYnMgfHwgYnJlYWRjcnVtYnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdicmVhZGNydW1icycpIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJyZWFkY3J1bWJzLCB7IGl0ZW1zOiBicmVhZGNydW1icyB9KSkpO1xuICAgIH1cbiAgICByZW5kZXJUaXRsZSgpIHtcbiAgICAgICAgY29uc3QgeyB0aXRsZSwgbWV0YSwgYm9va21hcmtlZFBhZ2UsIG9uQ2hhbmdlQm9va21hcmtQYWdlIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIXRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoRG9jUGFnZVRpdGxlLCB7IHN0YWdlOiBtZXRhLnN0YWdlLCBjbGFzc05hbWU6IGIoJ3RpdGxlJyksIGJvb2ttYXJrZWRQYWdlOiBib29rbWFya2VkUGFnZSwgb25DaGFuZ2VCb29rbWFya1BhZ2U6IG9uQ2hhbmdlQm9va21hcmtQYWdlIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEhUTUwsIG51bGwsIHRpdGxlKSkpO1xuICAgIH1cbiAgICByZW5kZXJQYWdlQ29udHJpYnV0b3JzKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IHsgbWV0YSwgaGlkZUNvbnRyaWJ1dG9ycyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKGhpZGVDb250cmlidXRvcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGF1dGhvciA9IHRoaXMucmVuZGVyQXV0aG9yKCEoKF9hID0gbWV0YSA9PT0gbnVsbCB8fCBtZXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtZXRhLmNvbnRyaWJ1dG9ycykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxlbmd0aCkpO1xuICAgICAgICBjb25zdCBjb250cmlidXRvcnMgPSB0aGlzLnJlbmRlckNvbnRyaWJ1dG9ycygpO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSBhdXRob3IgJiYgY29udHJpYnV0b3JzICYmIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ3NlcGFyYXRvcicpIH0sICcsJyk7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYigncGFnZS1jb250cmlidXRvcnMnKSB9LFxuICAgICAgICAgICAgYXV0aG9yLFxuICAgICAgICAgICAgXCIgXCIsXG4gICAgICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgICAgICBcIiBcIixcbiAgICAgICAgICAgIGNvbnRyaWJ1dG9ycykpO1xuICAgIH1cbiAgICByZW5kZXJBdXRob3Iob25seUF1dGhvcikge1xuICAgICAgICBjb25zdCB7IG1ldGEsIGxhbmcgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmICghKG1ldGEgPT09IG51bGwgfHwgbWV0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbWV0YS5hdXRob3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udHJpYnV0b3JzLCB7IGxhbmc6IGxhbmcsIHVzZXJzOiBbbWV0YS5hdXRob3JdLCBvbmx5QXV0aG9yOiBvbmx5QXV0aG9yLCB0cmFuc2xhdGlvbk5hbWU6ICdhdXRob3JzJywgaXNBdXRob3I6IHRydWUgfSkpO1xuICAgIH1cbiAgICByZW5kZXJDb250cmlidXRvcnMoKSB7XG4gICAgICAgIGNvbnN0IHsgbWV0YSwgbGFuZyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCEobWV0YSA9PT0gbnVsbCB8fCBtZXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBtZXRhLmNvbnRyaWJ1dG9ycykgfHwgbWV0YS5jb250cmlidXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb250cmlidXRvcnMsIHsgbGFuZzogbGFuZywgdXNlcnM6IG1ldGEuY29udHJpYnV0b3JzIH0pO1xuICAgIH1cbiAgICByZW5kZXJDb250ZW50TWluaVRvYygpIHtcbiAgICAgICAgY29uc3QgeyBoZWFkaW5ncyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdjb250ZW50LW1pbmktdG9jJywgJ3lmbScpIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwidWxcIiwgbnVsbCwgaGVhZGluZ3MubWFwKCh7IHRpdGxlLCBocmVmLCBsZXZlbCwgaXRlbXMgfSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobGV2ZWwgIT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImxpXCIsIHsga2V5OiBpbmRleCB9LFxuICAgICAgICAgICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiYVwiLCB7IGhyZWY6IGhyZWYgfSwgdGl0bGUpLFxuICAgICAgICAgICAgICAgICAgICBpdGVtcyAmJiAoUmVhY3QuY3JlYXRlRWxlbWVudChcInVsXCIsIG51bGwsIGl0ZW1zLm1hcCgoeyB0aXRsZTogaXRlbVRpdGxlLCBocmVmOiBpdGVtSHJlZiwgbGV2ZWw6IGl0ZW1MZXZlbCwgfSwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbUxldmVsICE9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJsaVwiLCB7IGtleTogaWR4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgeyBocmVmOiBpdGVtSHJlZiB9LCBpdGVtVGl0bGUpKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pKSkpKTtcbiAgICAgICAgICAgIH0pKSkpO1xuICAgIH1cbiAgICByZW5kZXJCb2R5KCkge1xuICAgICAgICBjb25zdCB7IGh0bWwsIHRleHRTaXplIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWh0bWwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHJlZjogdGhpcy5zZXRCb2R5UmVmLCBjbGFzc05hbWU6IGIoJ2JvZHknLCB7ICd0ZXh0LXNpemUnOiB0ZXh0U2l6ZSB9LCAneWZtJyksIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7IF9faHRtbDogaHRtbCB9IH0pKTtcbiAgICB9XG4gICAgcmVuZGVyQXNpZGVNaW5pVG9jKCkge1xuICAgICAgICBjb25zdCB7IGhlYWRpbmdzLCByb3V0ZXIsIGhlYWRlckhlaWdodCwgbGFuZyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBrZXlET00gfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYignYXNpZGUtbWluaS10b2MnKSB9LFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChNaW5pVG9jLCB7IGhlYWRpbmdzOiBoZWFkaW5ncywgcm91dGVyOiByb3V0ZXIsIGhlYWRlckhlaWdodDogaGVhZGVySGVpZ2h0LCBsYW5nOiBsYW5nLCBrZXk6IGtleURPTSB9KSkpO1xuICAgIH1cbiAgICByZW5kZXJGZWVkYmFjaygpIHtcbiAgICAgICAgY29uc3QgeyB0b2MsIGxhbmcsIHNpbmdsZVBhZ2UsIGlzTGlrZWQsIGlzRGlzbGlrZWQsIG9uU2VuZEZlZWRiYWNrLCBkaXNsaWtlVmFyaWFudHMsIGhpZGVGZWVkYmFja0NvbnRyb2xzLCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCF0b2MgfHwgdG9jLnNpbmdsZVBhZ2UgfHwgaGlkZUZlZWRiYWNrQ29udHJvbHMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzVmVydGljYWxWaWV3ID0gdGhpcy5nZXRJc1ZlcnRpY2FsVmlldygpO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2ZlZWRiYWNrJykgfSxcbiAgICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRmVlZGJhY2ssIHsgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCBsYW5nOiBsYW5nLCBzaW5nbGVQYWdlOiBzaW5nbGVQYWdlLCBpc0xpa2VkOiBpc0xpa2VkLCBpc0Rpc2xpa2VkOiBpc0Rpc2xpa2VkLCBkaXNsaWtlVmFyaWFudHM6IGRpc2xpa2VWYXJpYW50cywgb25TZW5kRmVlZGJhY2s6IG9uU2VuZEZlZWRiYWNrLCB2aWV3OiBGZWVkYmFja1ZpZXcuV2lkZSB9KSkpO1xuICAgIH1cbiAgICByZW5kZXJUb2NOYXZQYW5lbCgpIHtcbiAgICAgICAgY29uc3QgeyB0b2MsIHJvdXRlciwgZnVsbFNjcmVlbiwgbGFuZyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCF0b2MgfHwgdG9jLnNpbmdsZVBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChUb2NOYXZQYW5lbCwgT2JqZWN0LmFzc2lnbih7fSwgdG9jLCB7IGxhbmc6IGxhbmcsIHJvdXRlcjogcm91dGVyLCBmaXhlZDogZnVsbFNjcmVlbiwgY2xhc3NOYW1lOiBiKCd0b2MtbmF2LXBhbmVsJykgfSkpKTtcbiAgICB9XG4gICAgaXNFZGl0YWJsZSgpIHtcbiAgICAgICAgY29uc3QgeyB0b2MsIG1ldGEsIHZjc1VybCwgdmNzVHlwZSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgZWRpdGFibGUgPSB0b2Muc3RhZ2UgIT09ICdwcmV2aWV3JyAmJlxuICAgICAgICAgICAgbWV0YS5zdGFnZSAhPT0gJ3ByZXZpZXcnICYmXG4gICAgICAgICAgICBtZXRhLmVkaXRhYmxlICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgdG9jLmVkaXRhYmxlICE9PSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oZWRpdGFibGUgJiYgdmNzVXJsICYmIHZjc1R5cGUpO1xuICAgIH1cbiAgICByZW5kZXJDb250cm9scygpIHtcbiAgICAgICAgY29uc3QgeyBsYW5nLCBsYW5ncywgdGV4dFNpemUsIHRoZW1lLCB3aWRlRm9ybWF0LCBmdWxsU2NyZWVuLCBzaW5nbGVQYWdlLCB2Y3NVcmwsIHZjc1R5cGUsIG9uQ2hhbmdlTGFuZywgb25DaGFuZ2VGdWxsU2NyZWVuLCBvbkNoYW5nZVdpZGVGb3JtYXQsIG9uQ2hhbmdlU2hvd01pbmlUb2MsIG9uQ2hhbmdlVGhlbWUsIG9uQ2hhbmdlVGV4dFNpemUsIG9uU2VuZEZlZWRiYWNrLCBvblN1YnNjcmliZSwgaXNMaWtlZCwgaXNEaXNsaWtlZCwgZGlzbGlrZVZhcmlhbnRzLCBoaWRlQ29udHJvbHMsIGhpZGVFZGl0Q29udHJvbCwgaGlkZUZlZWRiYWNrQ29udHJvbHMsIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoaGlkZUNvbnRyb2xzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzaG93RWRpdENvbnRyb2wgPSAhaGlkZUVkaXRDb250cm9sICYmICFmdWxsU2NyZWVuICYmIHRoaXMuaXNFZGl0YWJsZSgpO1xuICAgICAgICBjb25zdCBpc1ZlcnRpY2FsVmlldyA9IHRoaXMuZ2V0SXNWZXJ0aWNhbFZpZXcoKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdjb250cm9scycsIHsgdmVydGljYWw6IGlzVmVydGljYWxWaWV3IH0pIH0sXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2xzLCB7IGxhbmc6IGxhbmcsIGxhbmdzOiBsYW5ncywgdGV4dFNpemU6IHRleHRTaXplLCB0aGVtZTogdGhlbWUsIHdpZGVGb3JtYXQ6IHdpZGVGb3JtYXQsIHNob3dNaW5pVG9jOiB0aGlzLnNob3dNaW5pVG9jLCBmdWxsU2NyZWVuOiBmdWxsU2NyZWVuLCBzaW5nbGVQYWdlOiBzaW5nbGVQYWdlLCBvbkNoYW5nZUxhbmc6IG9uQ2hhbmdlTGFuZywgdmNzVXJsOiB2Y3NVcmwsIHZjc1R5cGU6IHZjc1R5cGUsIGlzTGlrZWQ6IGlzTGlrZWQsIGlzRGlzbGlrZWQ6IGlzRGlzbGlrZWQsIGRpc2xpa2VWYXJpYW50czogZGlzbGlrZVZhcmlhbnRzLCBzaG93RWRpdENvbnRyb2w6IHNob3dFZGl0Q29udHJvbCwgb25DaGFuZ2VGdWxsU2NyZWVuOiBvbkNoYW5nZUZ1bGxTY3JlZW4sIG9uQ2hhbmdlV2lkZUZvcm1hdDogb25DaGFuZ2VXaWRlRm9ybWF0LCBvbkNoYW5nZVNob3dNaW5pVG9jOiBvbkNoYW5nZVNob3dNaW5pVG9jLCBvbkNoYW5nZVRoZW1lOiBvbkNoYW5nZVRoZW1lLCBvbkNoYW5nZVRleHRTaXplOiBvbkNoYW5nZVRleHRTaXplLCBvblNlbmRGZWVkYmFjazogb25TZW5kRmVlZGJhY2ssIG9uU3Vic2NyaWJlOiBvblN1YnNjcmliZSwgaXNWZXJ0aWNhbFZpZXc6IGlzVmVydGljYWxWaWV3LCBoaWRlRmVlZGJhY2tDb250cm9sczogaGlkZUZlZWRiYWNrQ29udHJvbHMgfSkpKTtcbiAgICB9XG59XG5Eb2NQYWdlLmRlZmF1bHRQcm9wcyA9IERFRkFVTFRfU0VUVElOR1M7XG5leHBvcnQgZGVmYXVsdCB3aXRoSGlnaGxpZ2h0ZWRTZWFyY2hXb3JkcyhEb2NQYWdlKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUhpZ2hsaWdodGVkU2VhcmNoV29yZHMsIHVzZVNlYXJjaEJhck5hdmlnYXRpb24sIHVzZUN1cnJlbnRXb3JkU2VsZWN0aW9uRWZmZWN0LCB1c2VDdXJyZW50V29yZFNlbGVjdGlvblN5bmNTY3JvbGxFZmZlY3QsIH0gZnJvbSAnLi9ob29rcyc7XG5mdW5jdGlvbiB3aXRoSGlnaGxpZ2h0ZWRTZWFyY2hXb3JkcyhDb21wb25lbnQpIHtcbiAgICBjb25zdCBTZWFyY2hXb3Jkc0hpZ2hsaWdodGVyID0gKHByb3BzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaHRtbCwgc2VhcmNoV29yZHMgPSBbXSwgc2hvd1NlYXJjaEJhciA9IGZhbHNlLCBvbkNsb3NlU2VhcmNoQmFyLCBvbk5vdEZvdW5kV29yZHMgPSAoKSA9PiB7IH0sIG9uQ29udGVudE11dGF0aW9uOiBfb25Db250ZW50TXV0YXRpb24sIG9uQ29udGVudExvYWRlZDogX29uQ29udGVudExvYWRlZCwgaGVhZGVySGVpZ2h0ID0gMCwgcm91dGVyOiB7IGhhc2ggfSwgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBbc3luY09uU2Nyb2xsLCBzZXRTeW5jT25TY3JvbGxdID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgICAgIGNvbnN0IHN0b3BTeW5jT25TY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRTeW5jT25TY3JvbGwoZmFsc2UpLCBbXSk7XG4gICAgICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBzZXRTeW5jT25TY3JvbGwoZmFsc2UpO1xuICAgICAgICB9LCBbaHRtbCwgc2VhcmNoV29yZHNdKTtcbiAgICAgICAgY29uc3QgeyBoaWdobGlnaHRlZEh0bWwsIGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsIHNlYXJjaEJhcklzVmlzaWJsZSwgd2FzQ2hhbmdlZERPTSwgb25Db250ZW50TXV0YXRpb24sIG9uQ29udGVudExvYWRlZCwgfSA9IHVzZUhpZ2hsaWdodGVkU2VhcmNoV29yZHMoe1xuICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgIHNlYXJjaFdvcmRzLFxuICAgICAgICAgICAgc2hvd1NlYXJjaEJhcixcbiAgICAgICAgICAgIG9uQ29udGVudE11dGF0aW9uOiBfb25Db250ZW50TXV0YXRpb24sXG4gICAgICAgICAgICBvbkNvbnRlbnRMb2FkZWQ6IF9vbkNvbnRlbnRMb2FkZWQsXG4gICAgICAgICAgICBvbk5vdEZvdW5kV29yZHMsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB7IHNlYXJjaEN1cnJlbnRJbmRleCwgc2V0U2VhcmNoQ3VycmVudEluZGV4LCBzZWFyY2hDb3VudFJlc3VsdHMsIG9uQ2xpY2tQcmV2U2VhcmNoLCBvbkNsaWNrTmV4dFNlYXJjaCwgfSA9IHVzZVNlYXJjaEJhck5hdmlnYXRpb24oeyBoaWdobGlnaHRlZERPTUVsZW1lbnRzLCBzdG9wU3luY09uU2Nyb2xsLCBoZWFkZXJIZWlnaHQsIGhhc2ggfSk7XG4gICAgICAgIHVzZUN1cnJlbnRXb3JkU2VsZWN0aW9uRWZmZWN0KHtcbiAgICAgICAgICAgIHNlYXJjaEN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgIGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsXG4gICAgICAgICAgICB3YXNDaGFuZ2VkRE9NLFxuICAgICAgICAgICAgc3luY09uU2Nyb2xsLFxuICAgICAgICAgICAgaGFzaCxcbiAgICAgICAgfSk7XG4gICAgICAgIC8qIFN5bmMgc2Nyb2xsIHdpdGggYSBjdXJyZW50IGl0ZW0gaW4gdmlld3BvcnQgKi9cbiAgICAgICAgdXNlQ3VycmVudFdvcmRTZWxlY3Rpb25TeW5jU2Nyb2xsRWZmZWN0KHtcbiAgICAgICAgICAgIGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsXG4gICAgICAgICAgICBzZWFyY2hXb3JkcyxcbiAgICAgICAgICAgIHN5bmNPblNjcm9sbCxcbiAgICAgICAgICAgIHNlYXJjaEJhcklzVmlzaWJsZSxcbiAgICAgICAgICAgIHNldFNlYXJjaEN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgIGhlYWRlckhlaWdodCxcbiAgICAgICAgICAgIHNldFN5bmNPblNjcm9sbCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChzZWFyY2hCYXJJc1Zpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7IGh0bWw6IGhpZ2hsaWdodGVkSHRtbCwgb25Db250ZW50TXV0YXRpb246IG9uQ29udGVudE11dGF0aW9uLCBvbkNvbnRlbnRMb2FkZWQ6IG9uQ29udGVudExvYWRlZCwgc2VhcmNoQ3VycmVudEluZGV4OiBzZWFyY2hDdXJyZW50SW5kZXgsIHNlYXJjaENvdW50UmVzdWx0czogc2VhcmNoQ291bnRSZXN1bHRzLCBvbkNsb3NlU2VhcmNoQmFyOiBvbkNsb3NlU2VhcmNoQmFyLCBvbkNsaWNrUHJldlNlYXJjaDogb25DbGlja1ByZXZTZWFyY2gsIG9uQ2xpY2tOZXh0U2VhcmNoOiBvbkNsaWNrTmV4dFNlYXJjaCB9KSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KENvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHsgc2hvd1NlYXJjaEJhcjogZmFsc2UgfSkpO1xuICAgIH07XG4gICAgY29uc3QgU2VhcmNoV29yZHNIaWdobGlnaHRlcldyYXBwZXIgPSAocHJvcHMpID0+IHtcbiAgICAgICAgY29uc3QgeyB1c2VTZWFyY2hCYXIgPSBmYWxzZSB9ID0gcHJvcHM7XG4gICAgICAgIGlmICh1c2VTZWFyY2hCYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNlYXJjaFdvcmRzSGlnaGxpZ2h0ZXIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCBwcm9wcykpO1xuICAgIH07XG4gICAgcmV0dXJuIFNlYXJjaFdvcmRzSGlnaGxpZ2h0ZXJXcmFwcGVyO1xufVxuZXhwb3J0IGRlZmF1bHQgd2l0aEhpZ2hsaWdodGVkU2VhcmNoV29yZHM7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGdldEhpZ2hsaWdodGVkSXRlbUluZGV4SW5WaWV3LCBoaWdobGlnaHQsIHNjcm9sbFRvSXRlbSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ0xBU1NOQU1FLCBDTEFTU05BTUVfU0VMRUNURUQsIEhJR0hMSUdIVF9PUFRJT05TIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUhpZ2hsaWdodGVkU2VhcmNoV29yZHMoeyBodG1sLCBzZWFyY2hXb3Jkcywgc2hvd1NlYXJjaEJhciwgb25Db250ZW50TXV0YXRpb246IF9vbkNvbnRlbnRNdXRhdGlvbiwgb25Db250ZW50TG9hZGVkOiBfb25Db250ZW50TG9hZGVkLCBvbk5vdEZvdW5kV29yZHMsIH0pIHtcbiAgICBjb25zdCBoaWdobGlnaHRlZEh0bWwgPSB1c2VIaWdobGlnaHRlZEhUTUxTdHJpbmcoaHRtbCwgc2VhcmNoV29yZHMsIHNob3dTZWFyY2hCYXIpO1xuICAgIGNvbnN0IHsgd2FzQ2hhbmdlZERPTSwgb25Db250ZW50TXV0YXRpb24sIG9uQ29udGVudExvYWRlZCB9ID0gdXNlQ2FsbGJhY2tET01DaGFuZ2Uoe1xuICAgICAgICBvbkNvbnRlbnRNdXRhdGlvbjogX29uQ29udGVudE11dGF0aW9uLFxuICAgICAgICBvbkNvbnRlbnRMb2FkZWQ6IF9vbkNvbnRlbnRMb2FkZWQsXG4gICAgfSk7XG4gICAgY29uc3QgaGlnaGxpZ2h0ZWRET01FbGVtZW50cyA9IHVzZUhpZ2hsaWdodGVkRE9NRWxlbWVudHMoaGlnaGxpZ2h0ZWRIdG1sLCB3YXNDaGFuZ2VkRE9NLCBzaG93U2VhcmNoQmFyKTtcbiAgICBjb25zdCBzZWFyY2hCYXJJc1Zpc2libGUgPSB1c2VTZWFyY2hCYXJJc1Zpc2libGUoe1xuICAgICAgICBzaG93U2VhcmNoQmFyLFxuICAgICAgICBzZWFyY2hXb3JkcyxcbiAgICAgICAgaGlnaGxpZ2h0ZWRIdG1sLFxuICAgICAgICBodG1sLFxuICAgIH0pO1xuICAgIHVzZU5vU2VhcmNoV29yZHNGb3VuZEVmZmVjdCh7IGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsIHNob3dTZWFyY2hCYXIsIG9uTm90Rm91bmRXb3JkcyB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBoaWdobGlnaHRlZEh0bWwsXG4gICAgICAgIGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsXG4gICAgICAgIHNlYXJjaEJhcklzVmlzaWJsZSxcbiAgICAgICAgd2FzQ2hhbmdlZERPTSxcbiAgICAgICAgb25Db250ZW50TXV0YXRpb24sXG4gICAgICAgIG9uQ29udGVudExvYWRlZCxcbiAgICB9O1xufVxuZnVuY3Rpb24gdXNlSGlnaGxpZ2h0ZWRET01FbGVtZW50cyhoaWdobGlnaHRlZEh0bWwsIHdhc0NoYW5nZWRET00sIHNob3dTZWFyY2hCYXIpIHtcbiAgICBjb25zdCBjYWNoZWRIaWdobGlnaHRlZERPTUVsZW1lbnRzID0gdXNlUmVmKFtdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjYWNoZWRIaWdobGlnaHRlZERPTUVsZW1lbnRzLmN1cnJlbnQgPSBbXTtcbiAgICB9LCBbaGlnaGxpZ2h0ZWRIdG1sXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHdhc0NoYW5nZWRET00pIHtcbiAgICAgICAgICAgIGNhY2hlZEhpZ2hsaWdodGVkRE9NRWxlbWVudHMuY3VycmVudCA9IFtdO1xuICAgICAgICB9XG4gICAgfSwgW3dhc0NoYW5nZWRET01dKTtcbiAgICBpZiAoY2FjaGVkSGlnaGxpZ2h0ZWRET01FbGVtZW50cy5jdXJyZW50Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkSGlnaGxpZ2h0ZWRET01FbGVtZW50cy5jdXJyZW50O1xuICAgIH1cbiAgICBpZiAoIXNob3dTZWFyY2hCYXIgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgLiR7Q0xBU1NOQU1FfWApO1xuICAgIGNhY2hlZEhpZ2hsaWdodGVkRE9NRWxlbWVudHMuY3VycmVudCA9IFsuLi5lbGVtZW50c107XG4gICAgcmV0dXJuIGNhY2hlZEhpZ2hsaWdodGVkRE9NRWxlbWVudHMuY3VycmVudDtcbn1cbi8qIFRyeSB3cmFwcGluZyB0aGUgc2VhcmNoIHdvcmRzIGluIGFuIGh0bWwgc3RyaW5nIGJ5IHNwYW4gZWxlbWVudHMgd2l0aCBhIGhpZ2hsaWdodCBjbGFzcyAqL1xuZnVuY3Rpb24gdXNlSGlnaGxpZ2h0ZWRIVE1MU3RyaW5nKGh0bWwsIHNlYXJjaFdvcmRzLCBzaG93U2VhcmNoQmFyKSB7XG4gICAgY29uc3QgW2hpZ2hsaWdodGVkSHRtbCwgc2V0SGlnaGxpZ2h0ZWRIdG1sXSA9IHVzZVN0YXRlKGh0bWwpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghc2VhcmNoV29yZHMubGVuZ3RoIHx8ICFzaG93U2VhcmNoQmFyKSB7XG4gICAgICAgICAgICBzZXRIaWdobGlnaHRlZEh0bWwoaHRtbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRSZXN1bHQgPSBoaWdobGlnaHQoe1xuICAgICAgICAgICAgaHRtbCxcbiAgICAgICAgICAgIGtleXdvcmRzOiBzZWFyY2hXb3JkcyxcbiAgICAgICAgICAgIG9wdGlvbnM6IEhJR0hMSUdIVF9PUFRJT05TLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGhpZ2hsaWdodGVkUmVzdWx0LmluY2x1ZGVzKENMQVNTTkFNRSkpIHtcbiAgICAgICAgICAgIHNldEhpZ2hsaWdodGVkSHRtbChoaWdobGlnaHRlZFJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzZXRIaWdobGlnaHRlZEh0bWwoaHRtbCk7XG4gICAgICAgIH1cbiAgICB9LCBbaHRtbCwgc2VhcmNoV29yZHMsIHNob3dTZWFyY2hCYXJdKTtcbiAgICByZXR1cm4gaGlnaGxpZ2h0ZWRIdG1sO1xufVxuZnVuY3Rpb24gdXNlU2VhcmNoQmFySXNWaXNpYmxlKHsgc2hvd1NlYXJjaEJhciwgc2VhcmNoV29yZHMsIGhpZ2hsaWdodGVkSHRtbCwgaHRtbCwgfSkge1xuICAgIGNvbnN0IFtzZWFyY2hCYXJJc1Zpc2libGUsIHNldFNlYXJjaEJhcklzVmlzaWJsZV0gPSB1c2VTdGF0ZShzaG93U2VhcmNoQmFyKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRTZWFyY2hCYXJJc1Zpc2libGUoc2hvd1NlYXJjaEJhciAmJiBCb29sZWFuKHNlYXJjaFdvcmRzICYmIHNlYXJjaFdvcmRzLmxlbmd0aCkgJiYgaGlnaGxpZ2h0ZWRIdG1sICE9PSBodG1sKTtcbiAgICB9LCBbc2hvd1NlYXJjaEJhciwgc2VhcmNoV29yZHMsIGhpZ2hsaWdodGVkSHRtbCwgaHRtbF0pO1xuICAgIHJldHVybiBzZWFyY2hCYXJJc1Zpc2libGU7XG59XG5mdW5jdGlvbiB1c2VDYWxsYmFja0RPTUNoYW5nZSh7IG9uQ29udGVudE11dGF0aW9uOiBfb25Db250ZW50TXV0YXRpb24sIG9uQ29udGVudExvYWRlZDogX29uQ29udGVudExvYWRlZCwgfSkge1xuICAgIGNvbnN0IFt3YXNDaGFuZ2VkRE9NLCBzZXRXYXNDaGFuZ2VkRE9NXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAod2FzQ2hhbmdlZERPTSkge1xuICAgICAgICAgICAgc2V0V2FzQ2hhbmdlZERPTShmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9LCBbd2FzQ2hhbmdlZERPTV0pO1xuICAgIC8qIENhbGxiYWNrIGZvciBkYW5nZXJvdXNseVNldElubmVySFRNTCB3aGVuIGluc2VydGluZyBjb250ZW50ICovXG4gICAgY29uc3Qgb25Db250ZW50TXV0YXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmIChfb25Db250ZW50TXV0YXRpb24pIHtcbiAgICAgICAgICAgIF9vbkNvbnRlbnRNdXRhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIHNldFdhc0NoYW5nZWRET00odHJ1ZSk7XG4gICAgfSwgW19vbkNvbnRlbnRNdXRhdGlvbl0pO1xuICAgIC8qIENhbGxiYWNrIGZvciBsb2FkaW5nIHJlc291cmNlcyBhZnRlciBpbnNlcnRpbmcgY29udGVudCAqL1xuICAgIGNvbnN0IG9uQ29udGVudExvYWRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKF9vbkNvbnRlbnRMb2FkZWQpIHtcbiAgICAgICAgICAgIF9vbkNvbnRlbnRMb2FkZWQoKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRXYXNDaGFuZ2VkRE9NKHRydWUpO1xuICAgIH0sIFtfb25Db250ZW50TG9hZGVkXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2FzQ2hhbmdlZERPTSxcbiAgICAgICAgb25Db250ZW50TXV0YXRpb24sXG4gICAgICAgIG9uQ29udGVudExvYWRlZCxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZU5vU2VhcmNoV29yZHNGb3VuZEVmZmVjdCh7IHNob3dTZWFyY2hCYXIsIGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsIG9uTm90Rm91bmRXb3JkcywgfSkge1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghb25Ob3RGb3VuZFdvcmRzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3dTZWFyY2hCYXIgJiYgIWhpZ2hsaWdodGVkRE9NRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBvbk5vdEZvdW5kV29yZHMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtoaWdobGlnaHRlZERPTUVsZW1lbnRzLCBzaG93U2VhcmNoQmFyLCBvbk5vdEZvdW5kV29yZHNdKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VTZWFyY2hCYXJOYXZpZ2F0aW9uKHsgaGlnaGxpZ2h0ZWRET01FbGVtZW50cywgc3RvcFN5bmNPblNjcm9sbCwgaGVhZGVySGVpZ2h0LCBoYXNoLCB9KSB7XG4gICAgY29uc3QgW3NlYXJjaEN1cnJlbnRJbmRleCwgc2V0U2VhcmNoQ3VycmVudEluZGV4XSA9IHVzZVN0YXRlKDEpO1xuICAgIGNvbnN0IFtzZWFyY2hDb3VudFJlc3VsdHMsIHNldFNlYXJjaENvdW50UmVzdWx0c10gPSB1c2VTdGF0ZSgxKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydEluZGV4ID0gZ2V0SGlnaGxpZ2h0ZWRJdGVtSW5kZXhJblZpZXcoeyBoaWdobGlnaHRlZERPTUVsZW1lbnRzLCBoZWFkZXJIZWlnaHQsIGhhc2ggfSkgfHwgMTtcbiAgICAgICAgc2V0U2VhcmNoQ3VycmVudEluZGV4KHN0YXJ0SW5kZXgpO1xuICAgICAgICBzZXRTZWFyY2hDb3VudFJlc3VsdHMoaGlnaGxpZ2h0ZWRET01FbGVtZW50cy5sZW5ndGggfHwgMSk7XG4gICAgfSwgW2hpZ2hsaWdodGVkRE9NRWxlbWVudHMsIGhlYWRlckhlaWdodCwgaGFzaF0pO1xuICAgIGNvbnN0IG9uQ2xpY2tOZXh0U2VhcmNoID0gdXNlQ2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzdG9wU3luY09uU2Nyb2xsKCk7XG4gICAgICAgIGlmICghaGlnaGxpZ2h0ZWRET01FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmV3SW5kZXggPSBzZWFyY2hDdXJyZW50SW5kZXggKyAxO1xuICAgICAgICBpZiAobmV3SW5kZXggPiBoaWdobGlnaHRlZERPTUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgbmV3SW5kZXggPSAxO1xuICAgICAgICB9XG4gICAgICAgIHNldFNlYXJjaEN1cnJlbnRJbmRleChuZXdJbmRleCk7XG4gICAgfSwgW2hpZ2hsaWdodGVkRE9NRWxlbWVudHMsIHNlYXJjaEN1cnJlbnRJbmRleCwgc2V0U2VhcmNoQ3VycmVudEluZGV4LCBzdG9wU3luY09uU2Nyb2xsXSk7XG4gICAgY29uc3Qgb25DbGlja1ByZXZTZWFyY2ggPSB1c2VDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHN0b3BTeW5jT25TY3JvbGwoKTtcbiAgICAgICAgaWYgKCFoaWdobGlnaHRlZERPTUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuZXdJbmRleCA9IHNlYXJjaEN1cnJlbnRJbmRleCAtIDE7XG4gICAgICAgIGlmIChuZXdJbmRleCA8IDEpIHtcbiAgICAgICAgICAgIG5ld0luZGV4ID0gaGlnaGxpZ2h0ZWRET01FbGVtZW50cy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgc2V0U2VhcmNoQ3VycmVudEluZGV4KG5ld0luZGV4KTtcbiAgICB9LCBbaGlnaGxpZ2h0ZWRET01FbGVtZW50cywgc2VhcmNoQ3VycmVudEluZGV4LCBzZXRTZWFyY2hDdXJyZW50SW5kZXgsIHN0b3BTeW5jT25TY3JvbGxdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzZWFyY2hDdXJyZW50SW5kZXgsXG4gICAgICAgIHNldFNlYXJjaEN1cnJlbnRJbmRleCxcbiAgICAgICAgc2VhcmNoQ291bnRSZXN1bHRzLFxuICAgICAgICBvbkNsaWNrUHJldlNlYXJjaCxcbiAgICAgICAgb25DbGlja05leHRTZWFyY2gsXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1c2VDdXJyZW50V29yZFNlbGVjdGlvbkVmZmVjdCh7IHNlYXJjaEN1cnJlbnRJbmRleCwgaGlnaGxpZ2h0ZWRET01FbGVtZW50cywgd2FzQ2hhbmdlZERPTSwgc3luY09uU2Nyb2xsLCBoYXNoLCB9KSB7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghaGlnaGxpZ2h0ZWRET01FbGVtZW50cyB8fCAhaGlnaGxpZ2h0ZWRET01FbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaGlnaGxpZ2h0ZWRET01FbGVtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gaGlnaGxpZ2h0ZWRET01FbGVtZW50c1tpbmRleF07XG4gICAgICAgICAgICAgICAgaXRlbS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTTkFNRV9TRUxFQ1RFRCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaGlnaGxpZ2h0ZWRET01FbGVtZW50c1tzZWFyY2hDdXJyZW50SW5kZXggLSAxXTtcbiAgICAgICAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZChDTEFTU05BTUVfU0VMRUNURUQpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfSwgW2hpZ2hsaWdodGVkRE9NRWxlbWVudHMsIHNlYXJjaEN1cnJlbnRJbmRleCwgd2FzQ2hhbmdlZERPTV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jT25TY3JvbGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzY3JvbGxUb0l0ZW0oaGlnaGxpZ2h0ZWRET01FbGVtZW50c1tzZWFyY2hDdXJyZW50SW5kZXggLSAxXSk7XG4gICAgfSwgW3dhc0NoYW5nZWRET00sIHNlYXJjaEN1cnJlbnRJbmRleCwgaGlnaGxpZ2h0ZWRET01FbGVtZW50cywgc3luY09uU2Nyb2xsLCBoYXNoXSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlQ3VycmVudFdvcmRTZWxlY3Rpb25TeW5jU2Nyb2xsRWZmZWN0KHsgaGlnaGxpZ2h0ZWRET01FbGVtZW50cywgc2VhcmNoV29yZHMsIHN5bmNPblNjcm9sbCwgc2VhcmNoQmFySXNWaXNpYmxlLCBzZXRTZWFyY2hDdXJyZW50SW5kZXgsIGhlYWRlckhlaWdodCwgc2V0U3luY09uU2Nyb2xsLCB9KSB7XG4gICAgY29uc3Qgc2Nyb2xsRW5kVGltZXIgPSB1c2VSZWYoKTtcbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmIChzY3JvbGxFbmRUaW1lci5jdXJyZW50KSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoc2Nyb2xsRW5kVGltZXIuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgc2Nyb2xsRW5kVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0U3luY09uU2Nyb2xsKHRydWUpO1xuICAgICAgICB9LCA1MCk7XG4gICAgICAgIGlmICghc3luY09uU2Nyb2xsIHx8ICFzZWFyY2hCYXJJc1Zpc2libGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoaWdobGlnaHRlZEl0ZW1JbmRleEluVmlldyA9IGdldEhpZ2hsaWdodGVkSXRlbUluZGV4SW5WaWV3KHtcbiAgICAgICAgICAgIGhpZ2hsaWdodGVkRE9NRWxlbWVudHMsXG4gICAgICAgICAgICBoZWFkZXJIZWlnaHQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNOYU4oaGlnaGxpZ2h0ZWRJdGVtSW5kZXhJblZpZXcpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0U2VhcmNoQ3VycmVudEluZGV4KGhpZ2hsaWdodGVkSXRlbUluZGV4SW5WaWV3KTtcbiAgICB9LCBbXG4gICAgICAgIHNldFN5bmNPblNjcm9sbCxcbiAgICAgICAgc2VhcmNoQmFySXNWaXNpYmxlLFxuICAgICAgICBzeW5jT25TY3JvbGwsXG4gICAgICAgIHNldFNlYXJjaEN1cnJlbnRJbmRleCxcbiAgICAgICAgaGlnaGxpZ2h0ZWRET01FbGVtZW50cyxcbiAgICAgICAgaGVhZGVySGVpZ2h0LFxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZVNjcm9sbFRocm90dGxlZCA9IF8udGhyb3R0bGUoaGFuZGxlU2Nyb2xsLCA1MCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNlYXJjaEJhcklzVmlzaWJsZSkge1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbFRocm90dGxlZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGxUaHJvdHRsZWQpO1xuICAgICAgICB9O1xuICAgIH0sIFtzZWFyY2hCYXJJc1Zpc2libGUsIHNlYXJjaFdvcmRzLCBoYW5kbGVTY3JvbGxUaHJvdHRsZWRdKTtcbn1cbiIsImltcG9ydCB7VGV4dFNpemVzLCBUaGVtZX0gZnJvbSAnQGRvYy10b29scy9jb21wb25lbnRzJztcblxuY29uc3QgREVGQVVMVF9VU0VSX1NFVFRJTkdTID0ge1xuICAgIHRoZW1lOiBUaGVtZS5MaWdodCxcbiAgICB0ZXh0U2l6ZTogVGV4dFNpemVzLk0sXG4gICAgc2hvd01pbmlUb2M6IHRydWUsXG4gICAgd2lkZUZvcm1hdDogdHJ1ZSxcbiAgICBmdWxsU2NyZWVuOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREb2NTZXR0aW5ncygpIHtcbiAgICBjb25zdCB7XG4gICAgICAgIHRoZW1lOiBkZWZhdWx0VGhlbWUsXG4gICAgICAgIHRleHRTaXplOiBkZWZhdWx0VGV4dFNpemUsXG4gICAgICAgIHNob3dNaW5pVG9jOiBkZWZhdWx0U2hvd01pbmlUb2MsXG4gICAgICAgIHdpZGVGb3JtYXQ6IGRlZmF1bHRXaWRlRm9ybWF0LFxuICAgICAgICBmdWxsU2NyZWVuOiBkZWZhdWx0RnVsbFNjcmVlbixcbiAgICB9ID0gREVGQVVMVF9VU0VSX1NFVFRJTkdTO1xuXG4gICAgY29uc3QgdGhlbWUgPSBnZXRTZXR0aW5nKCd0aGVtZScpIGFzIFRoZW1lIHx8IGRlZmF1bHRUaGVtZTtcbiAgICBjb25zdCB0ZXh0U2l6ZSA9IGdldFNldHRpbmcoJ3RleHRTaXplJykgYXMgVGV4dFNpemVzIHx8IGRlZmF1bHRUZXh0U2l6ZTtcbiAgICBjb25zdCBzaG93TWluaVRvYyA9IGdldFNldHRpbmcoJ3Nob3dNaW5pVG9jJykgfHwgZGVmYXVsdFNob3dNaW5pVG9jO1xuICAgIGNvbnN0IHdpZGVGb3JtYXQgPSBnZXRTZXR0aW5nKCd3aWRlRm9ybWF0JykgfHwgZGVmYXVsdFdpZGVGb3JtYXQ7XG4gICAgY29uc3QgZnVsbFNjcmVlbiA9IGdldFNldHRpbmcoJ2Z1bGxTY3JlZW4nKSB8fCBkZWZhdWx0RnVsbFNjcmVlbjtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRoZW1lLFxuICAgICAgICB0ZXh0U2l6ZSxcbiAgICAgICAgc2hvd01pbmlUb2M6IHN0clRvQm9vbGVhbihzaG93TWluaVRvYyksXG4gICAgICAgIHdpZGVGb3JtYXQ6IHN0clRvQm9vbGVhbih3aWRlRm9ybWF0KSxcbiAgICAgICAgZnVsbFNjcmVlbjogc3RyVG9Cb29sZWFuKGZ1bGxTY3JlZW4pLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nKG5hbWU6IHN0cmluZykge1xuICAgIGlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShuYW1lKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVTZXR0aW5nPFQ+KG5hbWU6IHN0cmluZywgdmFsdWU6IFQpIHtcbiAgICBpZiAodHlwZW9mIHNlc3Npb25TdG9yYWdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0obmFtZSwgU3RyaW5nKHZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJUb0Jvb2xlYW4oc3RyOiBzdHJpbmcgfCBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiBzdHIgPT09ICdib29sZWFuJykge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIHJldHVybiBzdHIgPyBzdHIgPT09ICd0cnVlJyA6IGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNhdmluZ1NldHRpbmc8VD4oc2V0dGluZ05hbWU6IHN0cmluZywgb25DaGFuZ2U6ICh2YWx1ZTogVCkgPT4gdm9pZCkge1xuICAgIHJldHVybiAodmFsdWU6IFQpID0+IHtcbiAgICAgICAgc2F2ZVNldHRpbmc8VD4oc2V0dGluZ05hbWUsIHZhbHVlKTtcblxuICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVJvb3RDbGFzc05hbWUodGhlbWU6IFRoZW1lLCBpc01vYmlsZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgdGhlbWVDbGFzc05hbWUgPSB0aGVtZSA9PT0gJ2xpZ2h0JyA/ICd5Yy1yb290X3RoZW1lX2xpZ2h0JyA6ICd5Yy1yb290X3RoZW1lX2RhcmsnO1xuICAgIGNvbnN0IG1vYmlsZUNsYXNzTmFtZSA9IGlzTW9iaWxlID8gJ21vYmlsZScgOiAnJztcblxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gYHljLXJvb3QgJHt0aGVtZUNsYXNzTmFtZX0gJHttb2JpbGVDbGFzc05hbWV9YDtcbn1cbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RleHQuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RleHQuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgYmxvY2sgfSBmcm9tICcuLi8uLi91dGlscy9jbic7XG5pbXBvcnQgJy4vdGV4dC5jc3MnO1xuY29uc3QgYiA9IGJsb2NrKCd0ZXh0Jyk7XG5leHBvcnQgY29uc3QgVEVYVF9WQVJJQU5UUyA9IFtcbiAgICAnZGlzcGxheS00JyxcbiAgICAnZGlzcGxheS0zJyxcbiAgICAnZGlzcGxheS0yJyxcbiAgICAnZGlzcGxheS0xJyxcbiAgICAnaGVhZGVyLTInLFxuICAgICdoZWFkZXItMScsXG4gICAgJ3N1YmhlYWRlci0zJyxcbiAgICAnc3ViaGVhZGVyLTInLFxuICAgICdzdWJoZWFkZXItMScsXG4gICAgJ2JvZHktMycsXG4gICAgJ2JvZHktMicsXG4gICAgJ2JvZHktMScsXG4gICAgJ2JvZHktc2hvcnQnLFxuICAgICdjYXB0aW9uLTInLFxuICAgICdjYXB0aW9uLTEnLFxuICAgICdjb2RlLTMnLFxuICAgICdjb2RlLWlubGluZS0zJyxcbiAgICAnY29kZS0yJyxcbiAgICAnY29kZS1pbmxpbmUtMicsXG4gICAgJ2NvZGUtMScsXG4gICAgJ2NvZGUtaW5saW5lLTEnLFxuXTtcbi8qKlxuICogVXRpbGl0eSB0byBnZW5lcmF0ZSB0ZXh0IGNsYXNzZXMuXG4gKlxuICogKipIaW50OioqIEhvdmVyIG9uIHByb3BzIGluIHlvdXIgZWRpdG9yIHRvIHJlYWQganNkb2NcbiAqXG4gKiAtLS1cbiAqIGBgYGpzeFxuICogLy8gXCJ0ZXh0IHRleHRfZGlzcGxheTEgc29tZS1jbGFzc1wiXG4gKiB0ZXh0KHt2YXJpYW50OiAnZGlzcGxheS0xJ30sICdzb21lLWNsYXNzJylgXG4gKmBgYFxuICovXG5leHBvcnQgY29uc3QgdGV4dCA9ICh7IHZhcmlhbnQgPSAnYm9keS0xJywgZWxsaXBzaXMsIHdoaXRlU3BhY2UsIHdvcmRCcmVhayB9LCBjbGFzc05hbWUpID0+IGIoeyB2YXJpYW50LCBlbGxpcHNpcywgd3M6IHdoaXRlU3BhY2UsIHdiOiB3b3JkQnJlYWsgfSwgY2xhc3NOYW1lKTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2NvbG9yVGV4dC5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vY29sb3JUZXh0LmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vLi4vdXRpbHMvY24nO1xuaW1wb3J0ICcuL2NvbG9yVGV4dC5jc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdjb2xvci10ZXh0Jyk7XG5leHBvcnQgY29uc3QgVEVYVF9DT0xPUlMgPSBbXG4gICAgJ3ByaW1hcnknLFxuICAgICdjb21wbGVtZW50YXJ5JyxcbiAgICAnc2Vjb25kYXJ5JyxcbiAgICAnaGludCcsXG4gICAgJ2luZm8nLFxuICAgICdpbmZvLWhlYXZ5JyxcbiAgICAncG9zaXRpdmUnLFxuICAgICdwb3NpdGl2ZS1oZWF2eScsXG4gICAgJ3dhcm5pbmcnLFxuICAgICd3YXJuaW5nLWhlYXZ5JyxcbiAgICAnZGFuZ2VyJyxcbiAgICAnZGFuZ2VyLWhlYXZ5JyxcbiAgICAndXRpbGl0eScsXG4gICAgJ3V0aWxpdHktaGVhdnknLFxuICAgICdtaXNjJyxcbiAgICAnbWlzYy1oZWF2eScsXG4gICAgJ3NwZWNpYWwnLFxuICAgICdsaW5rJyxcbiAgICAnbGluay1ob3ZlcicsXG4gICAgJ2xpbmstdmlzaXRlZCcsXG4gICAgJ2xpbmstdmlzaXRlZC1ob3ZlcicsXG4gICAgJ3lhbmRleC1yZWQnLFxuICAgICdkYXJrLXByaW1hcnknLFxuICAgICdkYXJrLWNvbXBsZW1lbnRhcnknLFxuICAgICdkYXJrLXNlY29uZGFyeScsXG4gICAgJ2xpZ2h0LXByaW1hcnknLFxuICAgICdsaWdodC1jb21wbGVtZW50YXJ5JyxcbiAgICAnbGlnaHQtc2Vjb25kYXJ5JyxcbiAgICAnbGlnaHQtaGludCcsXG4gICAgJ2ludmVydGVkLXByaW1hcnknLFxuICAgICdpbnZlcnRlZC1jb21wbGVtZW50YXJ5JyxcbiAgICAnaW52ZXJ0ZWQtc2Vjb25kYXJ5JyxcbiAgICAnaW52ZXJ0ZWQtaGludCcsXG5dO1xuLyoqXG4gKiBVdGlsaXR5IHRvIGdlbmVyYXRlIHRleHQgY29sb3JzIGNsYXNzZXMuXG4gKiBTdG9yeWJvb2s6IGh0dHBzOi8vcHJldmlldy55YW5kZXhjbG91ZC5kZXYvdWlraXQvP3BhdGg9L3N0b3J5L2NvbG9ycy0tdGV4dHNcbiAqXG4gKiAtLS1cbiAqIEZvciBleGFtcGxlOlxuICogYGBganN4XG4gKiAvLyBcImNvbG9yLXRleHQgY29sb3ItdGV4dF9jb2xvcl9pbmhlcml0IHNvbWUtY2xhc3NcIlxuICogY29sb3JUZXh0KHtjb2xvcjogJ2luaGVyaXQnfSwgJ3NvbWUtY2xhc3MnKVxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBjb2xvclRleHQgPSAoeyBjb2xvciB9LCBjbGFzc05hbWUpID0+IGIoeyBjb2xvciB9LCBjbGFzc05hbWUpO1xuIiwiaW1wb3J0IHsgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdGV4dCB9IGZyb20gJy4vdGV4dC90ZXh0JztcbmltcG9ydCB7IGNvbG9yVGV4dCB9IGZyb20gJy4vY29sb3JUZXh0L2NvbG9yVGV4dCc7XG4vKipcbiAqIEEgY29tcG9uZW50IGZvciB3b3JraW5nIHdpdGggdHlwb2dyYXBoeS5cbiAqXG4gKiBTdG9yeWJvb2s6IGh0dHBzOi8vcHJldmlldy5ncmF2aXR5LXVpLmNvbS91aWtpdC8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy10ZXh0LS1kZWZhdWx0XG4gKlxuICogKipIaW50OioqIEhvdmVyIG9uIHByb3BzIGluIHlvdXIgZWRpdG9yIHRvIHJlYWQganNkb2NcbiAqXG4gKiBQcm92aWRlcyBhIGNvbnZlbmllbnQgQVBJIGZvciB3b3JraW5nIHdpdGggbWl4aW5zIG9mIHR5cG9ncmFwaHkgYW5kIHRleHQgY29sb3JzLiBKdXN0IHBvaW50IGF0IHRoZSBwcm9wIGluIHlvdSBmYXZvcml0ZSBjb2RlIGVkaXRvciBhbmQgcmVhZCB0aGUgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gdmlhIGBqc2RvY2Agb24gd2hlcmUgdG8gYXBwbHkgdGhpcyBvciB0aGF0IGZvbnQgb3IgY29sb3IuXG4gKlxuICogYGBganN4XG4gKiBpbXBvcnQge1RleHR9IGZyb20gJ0BncmF2aXR5LXVpL3Vpa2l0JztcbiAqXG4gKiA8VGV4dCB2YXJpYW50PVwiYm9keS0xXCIgY29sb3I9XCJpbmhlcml0XCIgZWxpcHNpcz5zb21lIHRlc3Q8L1RleHQ+XG4gKiBgYGBcbiAqXG4gKiBZb3UgY2FuIGFsc28gdXNlIGEgbW9yZSBmbGV4aWJsZSB3YXkgb2Ygc2V0dGluZyB0aGUgc3R5bGUuIFwiR3Jhdml0eSBVSVwiIGFsc28gcHJvdmlkZSBgdGV4dGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqXG4gKmBgYGpzeFxuICogaW1wb3J0IHt0ZXh0fSBmcm9tICdAZ3Jhdml0eS11aS91aWtpdCc7XG4gKlxuICogLy8gdGV4dFN0eWxlcyA9ICd0ZXh0IHRleHRfdmFyaWFudF9kaXNwbGF5LTEgc29tZS1jbGFzcy1uYW1lJ1xuICogY29uc3QgdGV4dFN0eWxlcyA9IHRleHQoe3ZhcmlhbnQ6ICdkaXNwbGF5LTEnfSwgJ3NvbWUtY2xhc3MtbmFtZScpKTtcbiAqXG4gKiA8c3BhbiBjbGFzc05hbWU9e3RleHRTdHlsZXN9PnNvbWUgdGV4dDwvc3Bhbj5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVGV4dCA9IFJlYWN0LmZvcndhcmRSZWYoKF9hLCByZWYpID0+IHtcbiAgICB2YXIgeyBhcywgY2hpbGRyZW4sIHZhcmlhbnQsIGNsYXNzTmFtZSwgZWxsaXBzaXMsIGNvbG9yLCB3aGl0ZVNwYWNlLCB3b3JkQnJlYWsgfSA9IF9hLCByZXN0ID0gX19yZXN0KF9hLCBbXCJhc1wiLCBcImNoaWxkcmVuXCIsIFwidmFyaWFudFwiLCBcImNsYXNzTmFtZVwiLCBcImVsbGlwc2lzXCIsIFwiY29sb3JcIiwgXCJ3aGl0ZVNwYWNlXCIsIFwid29yZEJyZWFrXCJdKTtcbiAgICBjb25zdCBUYWcgPSBhcyB8fCAnc3Bhbic7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFRhZywgT2JqZWN0LmFzc2lnbih7IHJlZjogcmVmLCBjbGFzc05hbWU6IHRleHQoeyB2YXJpYW50LCBlbGxpcHNpcywgd2hpdGVTcGFjZSwgd29yZEJyZWFrIH0sIGNvbG9yID8gY29sb3JUZXh0KHsgY29sb3IgfSwgY2xhc3NOYW1lKSA6IGNsYXNzTmFtZSkgfSwgcmVzdCksIGNoaWxkcmVuKSk7XG59KTtcblRleHQuZGlzcGxheU5hbWUgPSAnVGV4dCc7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DYXJkLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DYXJkLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBibG9jayB9IGZyb20gJy4uL3V0aWxzL2NuJztcbmltcG9ydCAnLi9DYXJkLmNzcyc7XG5jb25zdCBiID0gYmxvY2soJ2NhcmQnKTtcbmV4cG9ydCBjb25zdCBDYXJkID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDYXJkKHByb3BzLCByZWYpIHtcbiAgICBjb25zdCB7IHR5cGUgPSAnY29udGFpbmVyJywgdGhlbWUsIHZpZXcsIHNpemUgPSAnbScsIGNoaWxkcmVuLCBjbGFzc05hbWUsIG9uQ2xpY2ssIGRpc2FibGVkLCBzZWxlY3RlZCwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGlzVHlwZUFjdGlvbiA9IHR5cGUgPT09ICdhY3Rpb24nO1xuICAgIGNvbnN0IGlzVHlwZVNlbGVjdGlvbiA9IHR5cGUgPT09ICdzZWxlY3Rpb24nO1xuICAgIGNvbnN0IGlzVHlwZUNvbnRhaW5lciA9IHR5cGUgPT09ICdjb250YWluZXInO1xuICAgIC8qIENsaWNrYWJsZSBjYXJkIOKAlCBvbmx5IHdpdGggdHlwZSAnYWN0aW9uJyBvciAnc2VsZWN0aW9uJyBhbmQgbm90IHNlbGVjdGVkIG9yIGRpc2FibGVkICovXG4gICAgY29uc3QgaGFzQWN0aW9uID0gaXNUeXBlQWN0aW9uIHx8IGlzVHlwZVNlbGVjdGlvbjtcbiAgICBjb25zdCBpc0NsaWNrYWJsZSA9IGhhc0FjdGlvbiAmJiBCb29sZWFuKG9uQ2xpY2spICYmICEoZGlzYWJsZWQgfHwgc2VsZWN0ZWQpO1xuICAgIC8qIFRoZW1lIG9ubHkgd2l0aCB0eXBlICdjb250YWluZXInICovXG4gICAgY29uc3QgZGVmYXVsdFRoZW1lID0gaXNUeXBlQ29udGFpbmVyID8gJ25vcm1hbCcgOiB1bmRlZmluZWQ7XG4gICAgLyogVmlldyBvbmx5IHdpdGggdHlwZSAnY29udGFpbmVyJyBhbmQgJ3NlbGVjdGlvbicgKi9cbiAgICBjb25zdCBkZWZhdWx0VmlldyA9IGlzVHlwZUNvbnRhaW5lciB8fCBpc1R5cGVTZWxlY3Rpb24gPyAnb3V0bGluZWQnIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IHJlZjogcmVmLCBjbGFzc05hbWU6IGIoe1xuICAgICAgICAgICAgdGhlbWU6IHRoZW1lIHx8IGRlZmF1bHRUaGVtZSxcbiAgICAgICAgICAgIHZpZXc6IHZpZXcgfHwgZGVmYXVsdFZpZXcsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBjbGlja2FibGU6IGlzQ2xpY2thYmxlLFxuICAgICAgICB9LCBjbGFzc05hbWUpLCBvbkNsaWNrOiBpc0NsaWNrYWJsZSA/IG9uQ2xpY2sgOiB1bmRlZmluZWQgfSwgY2hpbGRyZW4pKTtcbn0pO1xuIiwiZXhwb3J0IHZhciBDb3B5VG9DbGlwYm9hcmRTdGF0dXM7XG4oZnVuY3Rpb24gKENvcHlUb0NsaXBib2FyZFN0YXR1cykge1xuICAgIENvcHlUb0NsaXBib2FyZFN0YXR1c1tcIlBlbmRpbmdcIl0gPSBcInBlbmRpbmdcIjtcbiAgICBDb3B5VG9DbGlwYm9hcmRTdGF0dXNbXCJTdWNjZXNzXCJdID0gXCJzdWNjZXNzXCI7XG4gICAgQ29weVRvQ2xpcGJvYXJkU3RhdHVzW1wiRXJyb3JcIl0gPSBcImVycm9yXCI7XG59KShDb3B5VG9DbGlwYm9hcmRTdGF0dXMgfHwgKENvcHlUb0NsaXBib2FyZFN0YXR1cyA9IHt9KSk7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DbGlwYm9hcmRJY29uLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DbGlwYm9hcmRJY29uLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBibG9jayB9IGZyb20gJy4uL3V0aWxzL2NuJztcbmltcG9ydCB7IGExMXlIaWRkZW5TdmdQcm9wcyB9IGZyb20gJy4uL3V0aWxzL3N2Zyc7XG5pbXBvcnQgeyBDb3B5VG9DbGlwYm9hcmRTdGF0dXMgfSBmcm9tICcuLi9Db3B5VG9DbGlwYm9hcmQvdHlwZXMnO1xuaW1wb3J0ICcuL0NsaXBib2FyZEljb24uY3NzJztcbmNvbnN0IGIgPSBibG9jaygnY2xpcGJvYXJkLWljb24nKTtcbmNvbnN0IHJlbmRlclN0YXR1c1BhdGggPSAocGF0aCkgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgc3Ryb2tlOiBcImN1cnJlbnRDb2xvclwiLCBmaWxsOiBcInRyYW5zcGFyZW50XCIsIGNsYXNzTmFtZTogYignc3RhdGUnKSwgc3Ryb2tlV2lkdGg6IFwiMS41XCIsIGQ6IHBhdGggfSkpO1xuY29uc3QgU1RBVFVTX1BBVEggPSB7XG4gICAgW0NvcHlUb0NsaXBib2FyZFN0YXR1cy5TdWNjZXNzXTogcmVuZGVyU3RhdHVzUGF0aCgnTTkuNSAxM2wzIDNsNSAtNScpLFxuICAgIFtDb3B5VG9DbGlwYm9hcmRTdGF0dXMuRXJyb3JdOiByZW5kZXJTdGF0dXNQYXRoKCdNOS41IDEwbDggOG0tOCAwbDggLTgnKSxcbn07XG5leHBvcnQgZnVuY3Rpb24gQ2xpcGJvYXJkSWNvbih7IHNpemUsIHN0YXR1cywgY2xhc3NOYW1lIH0pIHtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdmdcIiwgT2JqZWN0LmFzc2lnbih7IHdpZHRoOiBzaXplLCBoZWlnaHQ6IHNpemUsIHZpZXdCb3g6IFwiMCAwIDI0IDI0XCIsIGNsYXNzTmFtZTogYihudWxsLCBjbGFzc05hbWUpIH0sIGExMXlIaWRkZW5TdmdQcm9wcyksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIsIHsgZmlsbDogXCJjdXJyZW50Q29sb3JcIiwgZDogXCJNMTksMjFIOFY3SDE5TTE5LDVIOEEyLDIgMCAwLDAgNiw3VjIxQTIsMiAwIDAsMCA4LDIzSDE5QTIsMiAwIDAsMCAyMSwyMVY3QTIsMiAwIDAsMCAxOSw1TTE2LDFINEEyLDIgMCAwLDAgMiwzVjE3SDRWM0gxNlYxWlwiIH0pLFxuICAgICAgICBzdGF0dXMgPT09IENvcHlUb0NsaXBib2FyZFN0YXR1cy5QZW5kaW5nID8gbnVsbCA6IFNUQVRVU19QQVRIW3N0YXR1c10pKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RDb3B5VG9DbGlwYm9hcmQgZnJvbSAncmVhY3QtY29weS10by1jbGlwYm9hcmQnO1xuaW1wb3J0IHsgQ29weVRvQ2xpcGJvYXJkU3RhdHVzIH0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgY2xhc3MgQ29weVRvQ2xpcGJvYXJkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHN0YXR1czogQ29weVRvQ2xpcGJvYXJkLklOSVRJQUxfU1RBVFVTLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmhhbmRsZUNvcHkgPSAodGV4dCwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHRpbWVvdXQsIG9uQ29weSB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzdWx0ID8gQ29weVRvQ2xpcGJvYXJkU3RhdHVzLlN1Y2Nlc3MgOiBDb3B5VG9DbGlwYm9hcmRTdGF0dXMuRXJyb3IsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVySWQpO1xuICAgICAgICAgICAgdGhpcy50aW1lcklkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzdGF0dXM6IENvcHlUb0NsaXBib2FyZC5JTklUSUFMX1NUQVRVUyB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVySWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9LCB0aW1lb3V0KTtcbiAgICAgICAgICAgIG9uQ29weSA9PT0gbnVsbCB8fCBvbkNvcHkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ29weSh0ZXh0LCByZXN1bHQpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXJJZCk7XG4gICAgfVxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiwgdGV4dCwgb3B0aW9ucyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjaGlsZHJlbihzdGF0dXMpO1xuICAgICAgICBpZiAoIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNvbnRlbnQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgbXVzdCBiZSBhIHZhbGlkIHJlYWN0IGVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3RDb3B5VG9DbGlwYm9hcmQsIHsgdGV4dDogU3RyaW5nKHRleHQpLCBvbkNvcHk6IHRoaXMuaGFuZGxlQ29weSwgb3B0aW9uczogb3B0aW9ucyB9LCBjb250ZW50KSk7XG4gICAgfVxufVxuQ29weVRvQ2xpcGJvYXJkLklOSVRJQUxfU1RBVFVTID0gQ29weVRvQ2xpcGJvYXJkU3RhdHVzLlBlbmRpbmc7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9DbGlwYm9hcmRCdXR0b24uY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0NsaXBib2FyZEJ1dHRvbi5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nO1xuaW1wb3J0IHsgQ2xpcGJvYXJkSWNvbiB9IGZyb20gJy4uL0NsaXBib2FyZEljb24nO1xuaW1wb3J0IHsgQ29weVRvQ2xpcGJvYXJkIH0gZnJvbSAnLi4vQ29weVRvQ2xpcGJvYXJkJztcbmltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vdXRpbHMvY24nO1xuaW1wb3J0ICcuL0NsaXBib2FyZEJ1dHRvbi5jc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdjbGlwYm9hcmQtYnV0dG9uJyk7XG5jb25zdCBERUZBVUxUX0lDT05fU0laRSA9IDI0O1xuY29uc3QgREVGQVVMVF9USU1FT1VUID0gMTAwMDtcbmV4cG9ydCBmdW5jdGlvbiBDbGlwYm9hcmRCdXR0b24oeyB0ZXh0LCBzaXplID0gREVGQVVMVF9JQ09OX1NJWkUsIGNsYXNzTmFtZSwgcWEsIG9uQ29weSwgdGltZW91dCA9IERFRkFVTFRfVElNRU9VVCwgb3B0aW9ucywgfSkge1xuICAgIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZihudWxsKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIChfYSA9IGJ1dHRvblJlZiA9PT0gbnVsbCB8fCBidXR0b25SZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGJ1dHRvblJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3R5bGUuc2V0UHJvcGVydHkoJy0teWMtYnV0dG9uLWhlaWdodCcsIGAke3NpemV9cHhgKTtcbiAgICB9LCBbc2l6ZV0pO1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChDb3B5VG9DbGlwYm9hcmQsIHsgdGV4dDogdGV4dCwgdGltZW91dDogdGltZW91dCwgb25Db3B5OiBvbkNvcHksIG9wdGlvbnM6IG9wdGlvbnMgfSwgKHN0YXR1cykgPT4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQnV0dG9uLCB7IHJlZjogYnV0dG9uUmVmLCB2aWV3OiBcImZsYXRcIiwgY2xhc3NOYW1lOiBiKG51bGwsIGNsYXNzTmFtZSksIHFhOiBxYSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KEJ1dHRvbi5JY29uLCBudWxsLFxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChDbGlwYm9hcmRJY29uLCB7IHN0YXR1czogc3RhdHVzLCBzaXplOiBzaXplLCBjbGFzc05hbWU6IGIoJ2ljb24nKSB9KSkpKSkpO1xufVxuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vTG9hZGVyLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uLy4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9Mb2FkZXIuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGJsb2NrIH0gZnJvbSAnLi4vdXRpbHMvY24nO1xuaW1wb3J0ICcuL0xvYWRlci5jc3MnO1xuY29uc3QgYiA9IGJsb2NrKCdsb2FkZXInKTtcbmV4cG9ydCBmdW5jdGlvbiBMb2FkZXIoeyBzaXplID0gJ3MnLCBjbGFzc05hbWUgfSkge1xuICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogYih7IHNpemUgfSwgY2xhc3NOYW1lKSB9LFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdsZWZ0JykgfSksXG4gICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGIoJ2NlbnRlcicpIH0pLFxuICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBiKCdyaWdodCcpIH0pKSk7XG59XG4iLCJ2YXIgaGU9T2JqZWN0LmNyZWF0ZTt2YXIgWT1PYmplY3QuZGVmaW5lUHJvcGVydHksU2U9T2JqZWN0LmRlZmluZVByb3BlcnRpZXMsRWU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcix4ZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyx5ZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxlZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFRlPU9iamVjdC5nZXRQcm90b3R5cGVPZixyZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LF9lPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7dmFyIHRlPShuLHIsZSk9PnIgaW4gbj9ZKG4scix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pOm5bcl09ZSxfPShuLHIpPT57Zm9yKHZhciBlIGluIHJ8fChyPXt9KSlyZS5jYWxsKHIsZSkmJnRlKG4sZSxyW2VdKTtpZihlZSlmb3IodmFyIGUgb2YgZWUocikpX2UuY2FsbChyLGUpJiZ0ZShuLGUscltlXSk7cmV0dXJuIG59LGo9KG4scik9PlNlKG4seGUocikpO3ZhciBuZT0obixyKT0+KCk9PihyfHxuKChyPXtleHBvcnRzOnt9fSkuZXhwb3J0cyxyKSxyLmV4cG9ydHMpO3ZhciBPZT0obixyLGUsdCk9PntpZihyJiZ0eXBlb2Ygcj09XCJvYmplY3RcInx8dHlwZW9mIHI9PVwiZnVuY3Rpb25cIilmb3IobGV0IG8gb2YgeWUocikpIXJlLmNhbGwobixvKSYmbyE9PWUmJlkobixvLHtnZXQ6KCk9PnJbb10sZW51bWVyYWJsZTohKHQ9RWUocixvKSl8fHQuZW51bWVyYWJsZX0pO3JldHVybiBufTt2YXIgUmU9KG4scixlKT0+KGU9biE9bnVsbD9oZShUZShuKSk6e30sT2Uocnx8IW58fCFuLl9fZXNNb2R1bGU/WShlLFwiZGVmYXVsdFwiLHt2YWx1ZTpuLGVudW1lcmFibGU6ITB9KTplLG4pKTt2YXIgaz0obixyLGUpPT5uZXcgUHJvbWlzZSgodCxvKT0+e3ZhciBzPWk9Pnt0cnl7bShlLm5leHQoaSkpfWNhdGNoKHgpe28oeCl9fSxhPWk9Pnt0cnl7bShlLnRocm93KGkpKX1jYXRjaCh4KXtvKHgpfX0sbT1pPT5pLmRvbmU/dChpLnZhbHVlKTpQcm9taXNlLnJlc29sdmUoaS52YWx1ZSkudGhlbihzLGEpO20oKGU9ZS5hcHBseShuLHIpKS5uZXh0KCkpfSk7dmFyIHNlPW5lKChGLFYpPT57KGZ1bmN0aW9uKG4scil7dHlwZW9mIEY9PVwib2JqZWN0XCImJnR5cGVvZiBWPT1cIm9iamVjdFwiP1YuZXhwb3J0cz1yKCk6dHlwZW9mIGRlZmluZT09XCJmdW5jdGlvblwiJiZkZWZpbmUuYW1kP2RlZmluZShbXSxyKTp0eXBlb2YgRj09XCJvYmplY3RcIj9GLmJsb2NrPXIoKTpuLmJsb2NrPXIoKX0pKEYsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHI9e307ZnVuY3Rpb24gZSh0KXtpZihyW3RdKXJldHVybiByW3RdLmV4cG9ydHM7dmFyIG89clt0XT17aTp0LGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIG5bdF0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsZSksby5sPSEwLG8uZXhwb3J0c31yZXR1cm4gZS5tPW4sZS5jPXIsZS5kPWZ1bmN0aW9uKHQsbyxzKXtlLm8odCxvKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbyx7ZW51bWVyYWJsZTohMCxnZXQ6c30pfSxlLnI9ZnVuY3Rpb24odCl7dHlwZW9mIFN5bWJvbCE9XCJ1bmRlZmluZWRcIiYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sZS50PWZ1bmN0aW9uKHQsbyl7aWYoMSZvJiYodD1lKHQpKSw4Jm98fDQmbyYmdHlwZW9mIHQ9PVwib2JqZWN0XCImJnQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgcz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUucihzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkocyxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSksMiZvJiZ0eXBlb2YgdCE9XCJzdHJpbmdcIilmb3IodmFyIGEgaW4gdCllLmQocyxhLGZ1bmN0aW9uKG0pe3JldHVybiB0W21dfS5iaW5kKG51bGwsYSkpO3JldHVybiBzfSxlLm49ZnVuY3Rpb24odCl7dmFyIG89dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIGUuZChvLFwiYVwiLG8pLG99LGUubz1mdW5jdGlvbih0LG8pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxvKX0sZS5wPVwiXCIsZShlLnM9MCl9KFtmdW5jdGlvbihuLHIsZSl7XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSk7dmFyIHQ9ZSgxKTtyLkVSUk9SX0JMT0NLX05BTUVfVFlQRT1cIkJsb2NrIG5hbWUgc2hvdWxkIGJlIGEgc3RyaW5nXCIsci5FUlJPUl9CTE9DS19OQU1FX0VNUFRZPVwiQmxvY2sgbmFtZSBzaG91bGQgYmUgbm9uLWVtcHR5XCI7dmFyIG89e25zOlwiXCIsZWw6XCJfX1wiLG1vZDpcIl9cIixtb2RWYWx1ZTpcIl9cIn0scz1mdW5jdGlvbih1KXtyZXR1cm4gdHlwZW9mIHU9PVwic3RyaW5nXCJ9LGE9ZnVuY3Rpb24odSl7cmV0dXJuIHR5cGVvZiB1IT1cInN0cmluZ1wifSxtPWZ1bmN0aW9uKHUsbCl7Zm9yKHZhciBjPVtdLGQ9MjtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKWNbZC0yXT1hcmd1bWVudHNbZF07dmFyIGg9dC5hc3NpZ24oe30sbCk7cmV0dXJuIGgubWl4ZXM9aC5taXhlcy5jb25jYXQoYyksUChoLHUpfSxpPWZ1bmN0aW9uKHUsbCxjKXtmb3IodmFyIGQ9W10saD0zO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZFtoLTNdPWFyZ3VtZW50c1toXTt2YXIgVD10LmFzc2lnbih7fSxsKSxmPXQuYXNzaWduKHt9LFQuc3RhdGVzfHx7fSk7cmV0dXJuIGZbY109dC5hc3NpZ24uYXBwbHkodm9pZCAwLFt7fSxmW2NdfHx7fV0uY29uY2F0KGQpKSxULnN0YXRlcz1mLFAoVCx1KX0seD1mdW5jdGlvbih1LGwsYyxkKXtyZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5zcGxpdC5jYWxsKHkodSxsKSxjLGQpfSx5PWZ1bmN0aW9uKHUsbCl7dmFyIGM9bC5uYW1lLGQ9bC5tb2RzLGg9bC5taXhlcyxUPWwuc3RhdGVzLGY9W2NdO2lmKGQmJihmPWYuY29uY2F0KE9iamVjdC5rZXlzKGQpLmZpbHRlcihmdW5jdGlvbihwKXtyZXR1cm4gZFtwXX0pLm1hcChmdW5jdGlvbihwKXt2YXIgdj1kW3BdO3JldHVybiB2PT09ITA/Yyt1Lm1vZCtwOmMrdS5tb2QrcCt1Lm1vZFZhbHVlK3Z9KSkpLFQmJk9iamVjdC5rZXlzKFQpLmZvckVhY2goZnVuY3Rpb24ocCl7dmFyIHY9VFtwXTtmPWYuY29uY2F0KE9iamVjdC5rZXlzKHYpLmZpbHRlcihmdW5jdGlvbihCKXtyZXR1cm4gdltCXX0pLm1hcChmdW5jdGlvbihCKXtyZXR1cm4gcCtCfSkpfSksdS5ucyYmKGY9Zi5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHUubnMrcH0pKSxoJiYoZj1mLmNvbmNhdChmdW5jdGlvbihwKXtyZXR1cm4gcD09PXZvaWQgMCYmKHA9W10pLHAubWFwKGZ1bmN0aW9uKHYpe3JldHVybiBBcnJheS5pc0FycmF5KHYpP3Yuam9pbihcIiBcIik6dHlwZW9mIHY9PVwib2JqZWN0XCImJnYhPT1udWxsfHx0eXBlb2Ygdj09XCJmdW5jdGlvblwiP3YudG9TdHJpbmcoKTp0eXBlb2Ygdj09XCJzdHJpbmdcIj92OlwiXCJ9KS5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuISF2fSl9KGgpKSksdS5jbGFzc01hcCl7dmFyIEE9dS5jbGFzc01hcDtmPWYubWFwKGZ1bmN0aW9uKHApe3JldHVybiBBW3BdfHxwfSl9cmV0dXJuIGYuam9pbihcIiBcIil9LFA9ZnVuY3Rpb24odSxsKXtyZXR1cm57bWl4Om0uYmluZChudWxsLGwsdSksc3BsaXQ6eC5iaW5kKG51bGwsbCx1KSxpczppLmJpbmQobnVsbCxsLHUsXCJpcy1cIiksaGFzOmkuYmluZChudWxsLGwsdSxcImhhcy1cIiksc3RhdGU6aS5iaW5kKG51bGwsbCx1LFwiaXMtXCIpLHRvU3RyaW5nOnkuYmluZChudWxsLGwsdSl9fSxiZT1mdW5jdGlvbih1LGwpe3ZhciBjPXtuYW1lOnUsbW9kczp7fSxtaXhlczpbXSxzdGF0ZXM6e1wiaXMtXCI6e30sXCJoYXMtXCI6e319fSxkPWZ1bmN0aW9uKGgsVCl7Zm9yKHZhciBmPVtdLEE9MjtBPGFyZ3VtZW50cy5sZW5ndGg7QSsrKWZbQS0yXT1hcmd1bWVudHNbQV07aWYoIWYubGVuZ3RoKXJldHVybiB5KGgsVCk7dmFyIHA9dC5hc3NpZ24oe30sVCksdj1mLmZpbHRlcihzKS5yZWR1Y2UoZnVuY3Rpb24oRCxIKXtyZXR1cm4gRCtoLmVsK0h9LFwiXCIpO3YmJihwLm5hbWU9cC5uYW1lK3YpO3ZhciBCPWYuZmlsdGVyKGEpLnJlZHVjZShmdW5jdGlvbihELEgpe3JldHVybiB0LmFzc2lnbihELEgpfSx7fSk7cmV0dXJuIHAubW9kcz10LmFzc2lnbih7fSxwLm1vZHMsQiksUChwLGgpfS5iaW5kKG51bGwsbCxjKTtyZXR1cm4gZC5taXg9bS5iaW5kKG51bGwsbCxjKSxkLnNwbGl0PXguYmluZChudWxsLGwsYyksZC5pcz1pLmJpbmQobnVsbCxsLGMsXCJpcy1cIiksZC5oYXM9aS5iaW5kKG51bGwsbCxjLFwiaGFzLVwiKSxkLnN0YXRlPWkuYmluZChudWxsLGwsYyxcImlzLVwiKSxkLnRvU3RyaW5nPXkuYmluZChudWxsLGwsYyksZH07ci5zZXR1cD1mdW5jdGlvbih1KXtyZXR1cm4gdT09PXZvaWQgMCYmKHU9e30pLGZ1bmN0aW9uKGwpe2lmKHR5cGVvZiBsIT1cInN0cmluZ1wiKXRocm93IG5ldyBFcnJvcihyLkVSUk9SX0JMT0NLX05BTUVfVFlQRSk7dmFyIGM9bC50cmltKCk7aWYoIWMpdGhyb3cgbmV3IEVycm9yKHIuRVJST1JfQkxPQ0tfTkFNRV9FTVBUWSk7cmV0dXJuIGJlKGMsdC5hc3NpZ24oe30sbyx1KSl9fSxyLmJsb2NrPXIuc2V0dXAoKSxyLmRlZmF1bHQ9ci5ibG9ja30sZnVuY3Rpb24obixyLGUpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHIuYXNzaWduPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbz1bXSxzPTE7czxhcmd1bWVudHMubGVuZ3RoO3MrKylvW3MtMV09YXJndW1lbnRzW3NdO2Zvcih2YXIgYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgbT1vW2FdO2Zvcih2YXIgaSBpbiBtKW0uaGFzT3duUHJvcGVydHkoaSkmJih0W2ldPW1baV0pfXJldHVybiB0fX1dKX0pfSk7dmFyIGFlPW5lKEo9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoSixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgSz1zZSgpLHo9Sy5zZXR1cCgpO2Z1bmN0aW9uIFEobil7dmFyIHI9eihuKTtmdW5jdGlvbiBlKCl7Zm9yKHZhciB0PVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXRbb109YXJndW1lbnRzW29dO3ZhciBzPXQuc2hpZnQoKSxhPXRbMF0sbT10WzFdLGk7cmV0dXJuKHR5cGVvZiBzIT1cInN0cmluZ1wifHx0eXBlb2YgYT09XCJzdHJpbmdcIikmJihtPWEsYT1udWxsKSxpPXIocyxhKSxtJiYoaT1pLm1peChtKSksaS50b1N0cmluZygpfXJldHVybiBlLmJ1aWxkZXI9ZnVuY3Rpb24oKXtyZXR1cm4gcn0sZX1RLnNldHVwPWZ1bmN0aW9uKG4pe3o9Sy5zZXR1cChuKX07US5yZXNldD1mdW5jdGlvbigpe3o9Sy5zZXR1cCgpfTtKLmRlZmF1bHQ9UX0pO2ltcG9ydCBRZSx7dXNlRWZmZWN0IGFzIEplLHVzZVN0YXRlIGFzIFdlfWZyb21cInJlYWN0XCI7aW1wb3J0e2NyZWF0ZVBvcnRhbCBhcyAkZX1mcm9tXCJyZWFjdC1kb21cIjt2YXJ7cmVwbGFjZTpQZX09XCJcIixOZT0vJig/OmFtcHwjMzh8bHR8IzYwfGd0fCM2MnxhcG9zfCMzOXxxdW90fCMzNCk7L2c7dmFyIExlPXtcIiZhbXA7XCI6XCImXCIsXCImIzM4O1wiOlwiJlwiLFwiJmx0O1wiOlwiPFwiLFwiJiM2MDtcIjpcIjxcIixcIiZndDtcIjpcIj5cIixcIiYjNjI7XCI6XCI+XCIsXCImYXBvcztcIjpcIidcIixcIiYjMzk7XCI6XCInXCIsXCImcXVvdDtcIjonXCInLFwiJiMzNDtcIjonXCInfSxDZT1uPT5MZVtuXSxvZT1uPT5QZS5jYWxsKG4sTmUsQ2UpO2ltcG9ydCBSLHt1c2VTdGF0ZSBhcyBLZSx1c2VSZWYgYXMgcX1mcm9tXCJyZWFjdFwiO2ltcG9ydHtCdXR0b24gYXMgemV9ZnJvbVwiQGdyYXZpdHktdWkvdWlraXRcIjtpbXBvcnQgQWUgZnJvbVwicmVhY3RcIjt2YXIgaWU9UmUoYWUoKSksUz17QlVUVE9OX1NVQk1JVDpcIlNlbmRcIixIRUFERVJfUEFSQU1TX1NFQ1RJT05fVElUTEU6XCJIZWFkZXIgcGFyYW1zXCIsUVVFUllfUEFSQU1TX1NFQ1RJT05fVElUTEU6XCJRdWVyeSBwYXJhbXNcIixQQVRIX1BBUkFNU19TRUNUSU9OX1RJVExFOlwiUGF0aCBwYXJhbXNcIixCT0RZX0lOUFVUX0xBQkVMOlwiQm9keVwiLFJFU1BPTlNFX0VSUk9SX1NFQ1RJT05fVElUTEU6XCJSZXNwb25zZSBlcnJvclwiLFJFU1BPTlNFX1NFQ1RJT05fVElUTEU6XCJSZXNwb25zZVwiLFVSTF9WQUxVRV9MQUJFTDpcIlJlcXVlc3QgVVJMXCIsUkVTUE9OU0VfU1RBVFVTX0xBQkVMOlwiU3RhdHVzXCIsUkVTUE9OU0VfQk9EWV9MQUJFTDpcIkJvZHlcIixSRVNQT05TRV9GSUxFX0xBQkVMOlwiRmlsZSBmcm9tIHJlc3BvbnNlXCJ9LGI9KDAsaWUuZGVmYXVsdCkoXCJ5Zm0tc2FuZGJveFwiKSx1ZT1bXCJDT1JTXCIsXCJOZXR3b3JrIEZhaWx1cmVcIiwnVVJMIHNjaGVtZSBtdXN0IGJlIFwiaHR0cFwiIG9yIFwiaHR0cHNcIiBmb3IgQ09SUyByZXF1ZXN0LiddO3ZhciBFPSh7Y2xhc3NOYW1lOm4sZ2FwOnI9MjAsY2hpbGRyZW46ZX0pPT57bGV0IHQ9e2dhcDpyK1wicHhcIn07cmV0dXJuIEFlLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOmIoXCJjb2x1bW5cIixuKSxzdHlsZTp0fSxlKX07aW1wb3J0IE4gZnJvbVwicmVhY3RcIjtpbXBvcnR7VGV4dElucHV0IGFzIGplLFRleHQgYXMgV31mcm9tXCJAZ3Jhdml0eS11aS91aWtpdFwiO3ZhciB3PShuLHIpPT5uLnJlZHVjZSgoZSx0KT0+T2JqZWN0LmFzc2lnbihlLHIodCkpLHt9KSxsZT0obix7c2VhcmNoOnIsaGVhZGVyczplLHBhdGg6dCxib2R5Om99KT0+e2xldCBzPU9iamVjdC5lbnRyaWVzKHQpLnJlZHVjZSgoeCxbeSxQXSk9PngucmVwbGFjZShgeyR7eX19YCxlbmNvZGVVUklDb21wb25lbnQoUCkpLG4pLGE9bmV3IFVSTFNlYXJjaFBhcmFtcztPYmplY3QuZW50cmllcyhyKS5mb3JFYWNoKChbeCx5XSk9PnthLmFwcGVuZCh4LHkpfSk7bGV0IG09YS50b1N0cmluZygpO3JldHVybnt1cmw6cysobT9cIj9cIittOlwiXCIpLGhlYWRlcnM6bz9qKF8oe30sZSkse1wiQ29udGVudC1UeXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uXCJ9KTplLGJvZHk6bz97Ym9keTpvfTp7fX19LG1lPSh7aGVhZGVyczpuLHNlY3VyaXR5OnJ9KT0+e2xldCBlPW4/Wy4uLm5dOltdO3JldHVybihyPT1udWxsP3ZvaWQgMDpyLmZpbmQoKHt0eXBlOm99KT0+bz09PVwib2F1dGgyXCIpKSYmZS5wdXNoKHtuYW1lOlwiQXV0aG9yaXphdGlvblwiLHNjaGVtYTp7dHlwZTpcInN0cmluZ1wifSxpbjpcImhlYWRlclwiLHJlcXVpcmVkOiEwLGRlc2NyaXB0aW9uOlwiXCIsZXhhbXBsZTpcIkJlYXJlciA8dG9rZW4+XCJ9KSxlfTtmdW5jdGlvbiBwZShuKXtsZXQgcj1PYmplY3Qua2V5cyhuKS5yZWR1Y2UoKGUsdCk9PntsZXQgbz1uW3RdLmN1cnJlbnQ7aWYoIW8pcmV0dXJuIGU7bGV0IHM9by52YWxpZGF0ZSgpO3JldHVybiBzJiYoZVt0XT1zKSxlfSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKHIpLmxlbmd0aD9yOm51bGx9ZnVuY3Rpb24gY2Uobil7cmV0dXJuIE9iamVjdC5rZXlzKG4pLnJlZHVjZSgoZSx0KT0+e2xldCBvPW5bdF0uY3VycmVudDtyZXR1cm4gbyYmKGVbdF09by52YWx1ZSgpKSxlfSx7fSl9ZnVuY3Rpb24gQmUobixyKXtsZXQgZT13KG58fFtdLHQ9PnQucmVxdWlyZWQmJiFyW3QubmFtZV0/e1t0Lm5hbWVdOlwiUmVxdWlyZWRcIn06dm9pZCAwKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoP2U6dm9pZCAwfXZhciBMPWNsYXNzIGV4dGVuZHMgTi5Db21wb25lbnR7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5jcmVhdGVPbkNoYW5nZT1lPT50PT57dGhpcy5zZXRTdGF0ZShvPT4oe2Vycm9yczp2b2lkIDAsdmFsdWVzOmooXyh7fSxvLnZhbHVlcykse1tlXTp0fSl9KSl9O3RoaXMuc3RhdGU9e2Vycm9yczp2b2lkIDAsdmFsdWVzOncoZS5wYXJhbXN8fFtdLHQ9Pnt2YXIgbztyZXR1cm57W3QubmFtZV06KG89dC5leGFtcGxlKSE9bnVsbD9vOlwiXCJ9fSl9LHRoaXMub25jaGFuZ2U9dyhlLnBhcmFtc3x8W10sdD0+KHtbdC5uYW1lXTp0aGlzLmNyZWF0ZU9uQ2hhbmdlKHQubmFtZSl9KSl9cmVuZGVyKCl7bGV0e3BhcmFtczplLHRpdGxlOnR9PXRoaXMucHJvcHMse3ZhbHVlczpvLGVycm9yczpzfT10aGlzLnN0YXRlO3JldHVybiFlfHwhZS5sZW5ndGg/bnVsbDpOLmNyZWF0ZUVsZW1lbnQoRSx7Z2FwOjE1fSxOLmNyZWF0ZUVsZW1lbnQoVyx7dmFyaWFudDpcImhlYWRlci0xXCJ9LHQpLE4uY3JlYXRlRWxlbWVudChFLHtnYXA6MTB9LGUubWFwKChhLG0pPT5OLmNyZWF0ZUVsZW1lbnQoRSx7Z2FwOjUsa2V5Om19LE4uY3JlYXRlRWxlbWVudChXLHt2YXJpYW50OlwiYm9keS0yXCJ9LGEubmFtZSwhIWEucmVxdWlyZWQmJk4uY3JlYXRlRWxlbWVudChXLHt2YXJpYW50OlwiYm9keS0yXCIsY29sb3I6XCJkYW5nZXJcIn0sXCIqXCIpLFwiOlwiKSxOLmNyZWF0ZUVsZW1lbnQoamUse3ZhbHVlOm9bYS5uYW1lXSxuYW1lOmEubmFtZSxwbGFjZWhvbGRlcjphLnBsYWNlaG9sZGVyLG9uVXBkYXRlOnRoaXMub25jaGFuZ2VbYS5uYW1lXSxlcnJvcjpzJiZzW2EubmFtZV18fCExfSkpKSkpfXZhbGlkYXRlKCl7bGV0IGU9QmUodGhpcy5wcm9wcy5wYXJhbXMsdGhpcy5zdGF0ZS52YWx1ZXMpO3JldHVybiB0aGlzLnNldFN0YXRlKHtlcnJvcnM6ZX0pLGV9dmFsdWUoKXtyZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZXN9fTtpbXBvcnQgTSBmcm9tXCJyZWFjdFwiO2ltcG9ydHtUZXh0SW5wdXQgYXMgRmUsVGV4dCBhcyBJZX1mcm9tXCJAZ3Jhdml0eS11aS91aWtpdFwiO3ZhciBJPWNsYXNzIGV4dGVuZHMgTS5Db21wb25lbnR7Y29uc3RydWN0b3Iocil7c3VwZXIociksdGhpcy5zdGF0ZT17ZXJyb3I6bnVsbCx2YWx1ZTpyLnZhbHVlfX1yZW5kZXIoKXtsZXR7ZXJyb3I6cix2YWx1ZTplfT10aGlzLnN0YXRlO2lmKGU9PW51bGwpcmV0dXJuIG51bGw7bGV0IHQ9bz0+e3RoaXMuc2V0U3RhdGUocz0+aihfKHt9LHMpLHt2YWx1ZTpvfSkpfTtyZXR1cm4gTS5jcmVhdGVFbGVtZW50KEUse2dhcDoxMH0sTS5jcmVhdGVFbGVtZW50KEllLHt2YXJpYW50OlwiaGVhZGVyLTFcIn0sUy5CT0RZX0lOUFVUX0xBQkVMKSxNLmNyZWF0ZUVsZW1lbnQoRmUse2Vycm9yOnJ8fCExLG11bHRpbGluZTohMCxyb3dzOjEwLG5hbWU6XCJib2R5XCIsdmFsdWU6ZSxvblVwZGF0ZTp0fSkpfXZhbGlkYXRlKCl7bGV0IHI9dGhpcy5pc1JlcXVpcmVkJiYhdGhpcy5zdGF0ZS52YWx1ZT9cIlJlcXVpcmVkXCI6dm9pZCAwO3JldHVybiB0aGlzLnNldFN0YXRlKHtlcnJvcjpyfSkscn12YWx1ZSgpe3JldHVybiB0aGlzLnN0YXRlLnZhbHVlfWdldCBpc1JlcXVpcmVkKCl7cmV0dXJuIHRoaXMucHJvcHMudmFsdWUhPT12b2lkIDAmJnRoaXMucHJvcHMudmFsdWUhPT1udWxsfX07aW1wb3J0IGcse3VzZVN0YXRlIGFzIFVlLHVzZUVmZmVjdCBhcyBrZX1mcm9tXCJyZWFjdFwiO2ltcG9ydHtUZXh0IGFzIE8sQ2FyZCBhcyB3ZSxDbGlwYm9hcmRCdXR0b24gYXMgTWV9ZnJvbVwiQGdyYXZpdHktdWkvdWlraXRcIjt2YXIgJD0oe3Jlc3BvbnNlOm59KT0+e2xldHt1cmw6cixzdGF0dXM6ZSxmaWxlOnQsdGV4dDpvfT1uLFtzLGFdPVVlKG51bGwpO3JldHVybiBrZSgoKT0+KHQmJmEod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwodC5ibG9iKSksKCk9PntzJiZ3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChzKX0pLFt0XSksZy5jcmVhdGVFbGVtZW50KEUse2dhcDoxMH0sZy5jcmVhdGVFbGVtZW50KE8se3ZhcmlhbnQ6XCJoZWFkZXItMlwifSxTLlJFU1BPTlNFX1NFQ1RJT05fVElUTEUpLGcuY3JlYXRlRWxlbWVudChcImRpdlwiLG51bGwsZy5jcmVhdGVFbGVtZW50KE8se3ZhcmlhbnQ6XCJzdWJoZWFkZXItMlwiLGFzOlwiZGl2XCJ9LFMuUkVTUE9OU0VfU1RBVFVTX0xBQkVMLFwiOlwiKSxnLmNyZWF0ZUVsZW1lbnQoTyx7dmFyaWFudDpcImJvZHktMlwiLGFzOlwiZGl2XCJ9LGUpKSxnLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIixudWxsLGcuY3JlYXRlRWxlbWVudChPLHt2YXJpYW50Olwic3ViaGVhZGVyLTJcIixhczpcImRpdlwifSxTLlVSTF9WQUxVRV9MQUJFTCxcIjpcIiksZy5jcmVhdGVFbGVtZW50KE8se3ZhcmlhbnQ6XCJib2R5LTJcIixhczpcImRpdlwifSxyKSksbyE9PXZvaWQgMCYmZy5jcmVhdGVFbGVtZW50KFwiZGl2XCIsbnVsbCxnLmNyZWF0ZUVsZW1lbnQoTyx7dmFyaWFudDpcInN1YmhlYWRlci0yXCJ9LFMuUkVTUE9OU0VfQk9EWV9MQUJFTCxcIjpcIiksZy5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2NsYXNzTmFtZTpiKFwiY2FyZC13cmFwcGVyXCIpfSxnLmNyZWF0ZUVsZW1lbnQod2Use3RoZW1lOlwiaW5mb1wiLHR5cGU6XCJjb250YWluZXJcIix2aWV3OlwiZmlsbGVkXCIsY2xhc3NOYW1lOmIoXCJjYXJkXCIpfSxnLmNyZWF0ZUVsZW1lbnQoTyx7dmFyaWFudDpcImNvZGUtMlwiLGNsYXNzTmFtZTpiKFwiY2FyZC10ZXh0XCIpfSxnLmNyZWF0ZUVsZW1lbnQoXCJwcmVcIix7Y2xhc3NOYW1lOmIoXCJwcmVcIil9LG8pKSksZy5jcmVhdGVFbGVtZW50KE1lLHtzaXplOjE2LHRleHQ6byxjbGFzc05hbWU6YihcImNsaXBib2FyZC1idXR0b25cIil9KSkpLHQmJnMmJmcuY3JlYXRlRWxlbWVudChcImRpdlwiLG51bGwsZy5jcmVhdGVFbGVtZW50KE8se3ZhcmlhbnQ6XCJzdWJoZWFkZXItMlwiLGFzOlwiZGl2XCJ9LFMuUkVTUE9OU0VfRklMRV9MQUJFTCxcIjpcIiksZy5jcmVhdGVFbGVtZW50KE8se3ZhcmlhbnQ6XCJib2R5LTJcIixhczpcImRpdlwifSxnLmNyZWF0ZUVsZW1lbnQoXCJhXCIse2hyZWY6cyxkb3dubG9hZDp0Lm5hbWUsXCJkYXRhLXJvdXRlclwiOlwib2ZmXCJ9LHQubmFtZSkpKSl9O2ltcG9ydCBDIGZyb21cInJlYWN0XCI7aW1wb3J0e1RleHQgYXMgZGUsQ2FyZCBhcyBxZX1mcm9tXCJAZ3Jhdml0eS11aS91aWtpdFwiO3ZhciBHPSh7bWVzc2FnZTpufSk9PkMuY3JlYXRlRWxlbWVudChFLG51bGwsQy5jcmVhdGVFbGVtZW50KGRlLHt2YXJpYW50OlwiaGVhZGVyLTFcIn0sUy5SRVNQT05TRV9FUlJPUl9TRUNUSU9OX1RJVExFKSxDLmNyZWF0ZUVsZW1lbnQocWUse3RoZW1lOlwiZGFuZ2VyXCIsdHlwZTpcImNvbnRhaW5lclwiLHZpZXc6XCJmaWxsZWRcIixjbGFzc05hbWU6YihcImNhcmRcIil9LEMuY3JlYXRlRWxlbWVudChkZSx7dmFyaWFudDpcImNvZGUtMlwiLGNsYXNzTmFtZTpiKFwiY2FyZC10ZXh0XCIpfSxuLFwiIFwiLEMuY3JlYXRlRWxlbWVudChcImJyXCIsbnVsbCksXCJQb3NzaWJsZSBSZWFzb25zOlwiLEMuY3JlYXRlRWxlbWVudChcInVsXCIse2NsYXNzTmFtZTpiKFwicG9zc2libGUtcmVhc29uc1wiKX0sdWUubWFwKChyLGUpPT5DLmNyZWF0ZUVsZW1lbnQoXCJsaVwiLHtrZXk6ZX0scikpKSkpKTtpbXBvcnQgZmUgZnJvbVwicmVhY3RcIjtpbXBvcnR7TG9hZGVyIGFzIERlfWZyb21cIkBncmF2aXR5LXVpL3Vpa2l0XCI7dmFyIFg9KCk9PmZlLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7Y2xhc3NOYW1lOmIoXCJsb2FkZXItY29udGFpbmVyXCIpfSxmZS5jcmVhdGVFbGVtZW50KERlLG51bGwpKTtpbXBvcnQgVSx7dXNlU3RhdGUgYXMgdmUsdXNlRWZmZWN0IGFzIEhlfWZyb21cInJlYWN0XCI7dmFyIFllPW49PntsZXQgcj1cInVua25vd24gZmlsZVwiLGU9bi5oZWFkZXJzLmdldChcIkNvbnRlbnQtRGlzcG9zaXRpb25cIik7aWYoZSl7bGV0IG89L2ZpbGVuYW1lW147PVxcbl0qPSgoWydcIl0pLio/XFwyfFteO1xcbl0qKS8uZXhlYyhlKTtpZihvIT09bnVsbCYmb1sxXSlyZXR1cm4gb1sxXS5yZXBsYWNlKC9bJ1wiXS9nLFwiXCIpfXJldHVybiByfTtmdW5jdGlvbiBWZShuKXtyZXR1cm4gayh0aGlzLG51bGwsZnVuY3Rpb24qKCl7bGV0IHI9bi5oZWFkZXJzLmdldChcIkNvbnRlbnQtVHlwZVwiKXx8XCJcIjtpZigobi5oZWFkZXJzLmdldChcIkNvbnRlbnQtRGlzcG9zaXRpb25cIil8fFwiXCIpLmluY2x1ZGVzKFwiYXR0YWNobWVudFwiKSlyZXR1cm57c3RhdHVzOm4uc3RhdHVzLHVybDpuLnVybCxmaWxlOntibG9iOnlpZWxkIG4uYmxvYigpLG5hbWU6WWUobil9fTt7bGV0IG87cmV0dXJuIHIuaW5jbHVkZXMoXCJqc29uXCIpP289SlNPTi5zdHJpbmdpZnkoeWllbGQgbi5qc29uKCksbnVsbCwyKTpvPXlpZWxkIG4udGV4dCgpLHtzdGF0dXM6bi5zdGF0dXMsdXJsOm4udXJsLHRleHQ6b319fSl9dmFyIFo9KHtyZXF1ZXN0Om59KT0+e2xldFtyLGVdPXZlKG51bGwpLFt0LG9dPXZlKG51bGwpO3JldHVybiBIZSgoKT0+e2xldCBzPW4sYT1pPT5zPT09bj9lKGkpOm51bGwsbT1pPT5zPT09bj9vKGkpOm51bGw7cmV0dXJuIG4udGhlbihWZSkudGhlbihhLG0pLCgpPT57ZShudWxsKSxvKG51bGwpfX0sW25dKSxVLmNyZWF0ZUVsZW1lbnQoVS5GcmFnbWVudCxudWxsLCFyJiYhdCYmVS5jcmVhdGVFbGVtZW50KFgsbnVsbCksciYmVS5jcmVhdGVFbGVtZW50KCQse3Jlc3BvbnNlOnJ9KSx0JiZVLmNyZWF0ZUVsZW1lbnQoRyx7bWVzc2FnZTp0Lm1lc3NhZ2V9KSl9O3ZhciBnZT1uPT57bGV0IHI9bWUobiksZT17cGF0aDpxKG51bGwpLHNlYXJjaDpxKG51bGwpLGhlYWRlcnM6cShudWxsKSxib2R5OnEobnVsbCl9LFt0LG9dPUtlKG51bGwpO3JldHVybiBSLmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIse29uU3VibWl0OmE9Pmsodm9pZCAwLG51bGwsZnVuY3Rpb24qKCl7dmFyIFA7aWYoYS5wcmV2ZW50RGVmYXVsdCgpLHBlKGUpKXJldHVybjtsZXQgbT1jZShlKSx7dXJsOmksaGVhZGVyczp4LGJvZHk6eX09bGUoKChQPW4uaG9zdCkhPW51bGw/UDpcIlwiKStcIi9cIituLnBhdGgsbSk7byhmZXRjaChpLF8oe21ldGhvZDpuLm1ldGhvZCxoZWFkZXJzOnh9LHkpKSl9KSxjbGFzc05hbWU6YigpfSxSLmNyZWF0ZUVsZW1lbnQoRSxudWxsLFIuY3JlYXRlRWxlbWVudChMLHtyZWY6ZS5wYXRoLHRpdGxlOlMuUEFUSF9QQVJBTVNfU0VDVElPTl9USVRMRSxwYXJhbXM6bi5wYXRoUGFyYW1zfSksUi5jcmVhdGVFbGVtZW50KEwse3JlZjplLnNlYXJjaCx0aXRsZTpTLlFVRVJZX1BBUkFNU19TRUNUSU9OX1RJVExFLHBhcmFtczpuLnNlYXJjaFBhcmFtc30pLFIuY3JlYXRlRWxlbWVudChMLHtyZWY6ZS5oZWFkZXJzLHRpdGxlOlMuSEVBREVSX1BBUkFNU19TRUNUSU9OX1RJVExFLHBhcmFtczpyfSksUi5jcmVhdGVFbGVtZW50KEkse3JlZjplLmJvZHksdmFsdWU6bi5ib2R5fSksdCYmUi5jcmVhdGVFbGVtZW50KFose3JlcXVlc3Q6dH0pLFIuY3JlYXRlRWxlbWVudChcImRpdlwiLG51bGwsUi5jcmVhdGVFbGVtZW50KHplLHtzaXplOlwibFwiLHZpZXc6XCJhY3Rpb25cIix0eXBlOlwic3VibWl0XCJ9LFMuQlVUVE9OX1NVQk1JVCkpKSl9O3ZhciBtcj0oKT0+e2xldFtuLHJdPVdlKG51bGwpO2lmKEplKCgpPT57cihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnlmbS1zYW5kYm94LWpzXCIpKX0pLCFufHwhbi5kYXRhc2V0LnByb3BzKXJldHVybiBudWxsO3RyeXtsZXQgZT1KU09OLnBhcnNlKG9lKG4uZGF0YXNldC5wcm9wcykpO3JldHVybiAkZShRZS5jcmVhdGVFbGVtZW50KGdlLF8oe30sZSkpLG4pfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmxvZyhlKSxudWxsfX07ZXhwb3J0e21yIGFzIFJ1bnRpbWV9O1xuLyohIEJ1bmRsZWQgbGljZW5zZSBpbmZvcm1hdGlvbjpcblxuYmVtLWNuL2xpYi9pbmRleC5qczpcbiAgKCohXG4gICAqIGJlbS1jbiB2My4wLjFcbiAgICogRnJpZW5kbHkgQkVNIGNsYXNzIG5hbWVzIGdlbmVyYXRvciwgZ3JlYXRlIGZvciBSZWFjdFxuICAgKiBAYXV0aG9yIEFsZXhhbmRlciBCdXJ0c2V2LCBodHRwczovL2dpdGh1Yi5jb20vYWxiYnVydHNldlxuICAgKilcbiovXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5taW4uanMubWFwXG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9pbmRleC5taW4uY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2luZGV4Lm1pbi5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi90aGVtZXMuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi90aGVtZXMuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgXG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2RlZmF1bHQuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnRCZWZvcmVBdChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjdXN0b20tc3R5bGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEluc2VydGVkRWxlbWVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0SW5zZXJ0ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXIgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi9kZWZhdWx0LnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi90eXBvZ3JhcGh5LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gZnVuY3Rpb24gaW5zZXJ0QmVmb3JlQXQoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWVudiBicm93c2VyICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY3VzdG9tLXN0eWxlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RJbnNlcnRlZEVsZW1lbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5fbGFzdEVsZW1lbnRJbnNlcnRlZEJ5U3R5bGVMb2FkZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEluc2VydGVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoZWxlbWVudCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdEluc2VydGVkRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vdHlwb2dyYXBoeS5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIFxuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL0FwcC5zY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydEJlZm9yZUF0KGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2N1c3RvbS1zdHlsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SW5zZXJ0ZWRFbGVtZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX2xhc3RFbGVtZW50SW5zZXJ0ZWRCeVN0eWxlTG9hZGVyO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxhc3RJbnNlcnRlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RJbnNlcnRlZEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vQXBwLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgUmVhY3QsIHtSZWFjdEVsZW1lbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7XG4gICAgRG9jTGVhZGluZ1BhZ2UsXG4gICAgRG9jTGVhZGluZ1BhZ2VEYXRhLFxuICAgIERvY1BhZ2UsXG4gICAgRG9jUGFnZURhdGEsXG4gICAgTGFuZyxcbiAgICBSb3V0ZXIsXG4gICAgVGV4dFNpemVzLFxuICAgIFRoZW1lLFxufSBmcm9tICdAZG9jLXRvb2xzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtnZXREb2NTZXR0aW5ncywgdXBkYXRlUm9vdENsYXNzTmFtZSwgd2l0aFNhdmluZ1NldHRpbmd9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuaW1wb3J0ICcuLi8uLi9pbnRlcmNlcHRvcnMvbGVhZGluZy1wYWdlLWxpbmtzJztcblxuaW1wb3J0IHt1c2VNZXJtYWlkfSBmcm9tICdAZGlwbG9kb2MvbWVybWFpZC1leHRlbnNpb24vaG9va3MnO1xuaW1wb3J0IHtSdW50aW1lIGFzIE9wZW5hcGlTYW5kYm94fSBmcm9tICdAZGlwbG9kb2Mvb3BlbmFwaS1leHRlbnNpb24vcnVudGltZSc7XG5pbXBvcnQgJ0BkaXBsb2RvYy9vcGVuYXBpLWV4dGVuc2lvbi9ydW50aW1lL3N0eWxlcyc7XG5cbmltcG9ydCAnQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy90aGVtZXMuc2Nzcyc7XG5pbXBvcnQgJ0Bkb2MtdG9vbHMvY29tcG9uZW50cy9zdHlsZXMvZGVmYXVsdC5zY3NzJztcbmltcG9ydCAnQGRvYy10b29scy9jb21wb25lbnRzL3N0eWxlcy90eXBvZ3JhcGh5LnNjc3MnO1xuaW1wb3J0ICdAZG9jLXRvb2xzL3RyYW5zZm9ybS9kaXN0L2Nzcy95Zm0uY3NzJztcbmltcG9ydCAnLi9BcHAuc2Nzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jUHJvcHMge1xuICAgIGRhdGE6IERvY0xlYWRpbmdQYWdlRGF0YSB8IERvY1BhZ2VEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcFByb3BzIHtcbiAgICBsYW5nOiBMYW5nO1xuICAgIHJvdXRlcjogUm91dGVyO1xufVxuXG5leHBvcnQgdHlwZSBEb2NJbm5lclByb3BzID1cbiAgICAmIERvY1Byb3BzXG4gICAgJiBBcHBQcm9wcztcblxuY29uc3QgTU9CSUxFX1ZJRVdfV0lEVEhfQlJFQUtQT0lOVCA9IDkwMDtcblxuZXhwb3J0IGZ1bmN0aW9uIEFwcChwcm9wczogRG9jSW5uZXJQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG4gICAgY29uc3Qge2RhdGEsIHJvdXRlciwgbGFuZ30gPSBwcm9wcztcblxuICAgIGNvbnN0IGRvY1NldHRpbmdzID0gZ2V0RG9jU2V0dGluZ3MoKTtcbiAgICBjb25zdCBbaXNNb2JpbGVWaWV3LCBzZXRJc01vYmlsZVZpZXddID0gdXNlU3RhdGUodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDw9IE1PQklMRV9WSUVXX1dJRFRIX0JSRUFLUE9JTlQpO1xuICAgIGNvbnN0IFt3aWRlRm9ybWF0LCBzZXRXaWRlRm9ybWF0XSA9IHVzZVN0YXRlKGRvY1NldHRpbmdzLndpZGVGb3JtYXQpO1xuICAgIGNvbnN0IFtmdWxsU2NyZWVuLCBzZXRGdWxsU2NyZWVuXSA9IHVzZVN0YXRlKGRvY1NldHRpbmdzLmZ1bGxTY3JlZW4pO1xuICAgIGNvbnN0IFtzaG93TWluaVRvYywgc2V0U2hvd01pbmlUb2NdID0gdXNlU3RhdGUoZG9jU2V0dGluZ3Muc2hvd01pbmlUb2MpO1xuICAgIGNvbnN0IFt0aGVtZSwgc2V0VGhlbWVdID0gdXNlU3RhdGUoZG9jU2V0dGluZ3MudGhlbWUpO1xuICAgIGNvbnN0IFt0ZXh0U2l6ZSwgc2V0VGV4dFNpemVdID0gdXNlU3RhdGUoZG9jU2V0dGluZ3MudGV4dFNpemUpO1xuICAgIGNvbnN0IHBhZ2VQcm9wcyA9IHtcbiAgICAgICAgcm91dGVyLFxuICAgICAgICBsYW5nLFxuICAgICAgICBoZWFkZXJIZWlnaHQ6IDAsXG4gICAgICAgIHdpZGVGb3JtYXQsXG4gICAgICAgIGZ1bGxTY3JlZW4sXG4gICAgICAgIHNob3dNaW5pVG9jLFxuICAgICAgICB0aGVtZSxcbiAgICAgICAgdGV4dFNpemUsXG4gICAgICAgIG9uQ2hhbmdlRnVsbFNjcmVlbjogd2l0aFNhdmluZ1NldHRpbmc8Ym9vbGVhbj4oJ2Z1bGxTY3JlZW4nLCBzZXRGdWxsU2NyZWVuKSxcbiAgICAgICAgb25DaGFuZ2VXaWRlRm9ybWF0OiB3aXRoU2F2aW5nU2V0dGluZzxib29sZWFuPignd2lkZUZvcm1hdCcsIHNldFdpZGVGb3JtYXQpLFxuICAgICAgICBvbkNoYW5nZVNob3dNaW5pVG9jOiB3aXRoU2F2aW5nU2V0dGluZzxib29sZWFuPignc2hvd01pbmlUb2MnLCBzZXRTaG93TWluaVRvYyksXG4gICAgICAgIG9uQ2hhbmdlVGhlbWU6IHdpdGhTYXZpbmdTZXR0aW5nPFRoZW1lPigndGhlbWUnLCBzZXRUaGVtZSksXG4gICAgICAgIG9uQ2hhbmdlVGV4dFNpemU6IHdpdGhTYXZpbmdTZXR0aW5nPFRleHRTaXplcz4oJ3RleHRTaXplJywgc2V0VGV4dFNpemUpLFxuICAgIH07XG5cbiAgICBjb25zdCBvblJlc2l6ZUhhbmRsZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNldElzTW9iaWxlVmlldyhkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDw9IE1PQklMRV9WSUVXX1dJRFRIX0JSRUFLUE9JTlQpO1xuICAgIH0sIFtdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlc2l6ZUhhbmRsZXIpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemVIYW5kbGVyKTtcbiAgICB9LCBbXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB1cGRhdGVSb290Q2xhc3NOYW1lKHRoZW1lLCBpc01vYmlsZVZpZXcpO1xuICAgIH0sIFt0aGVtZSwgaXNNb2JpbGVWaWV3XSk7XG5cbiAgICBjb25zdCByZW5kZXJNZXJtYWlkID0gdXNlTWVybWFpZCgpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHJlbmRlck1lcm1haWQoe1xuICAgICAgICAgICAgdGhlbWU6IHRoZW1lID09PSBUaGVtZS5EYXJrID8gJ2RhcmsnIDogJ25ldXRyYWwnLFxuICAgICAgICB9KTtcbiAgICB9LCBbdGhlbWUsIHJlbmRlck1lcm1haWRdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIC8vIFRPRE8odmxhZGltaXJmZWRpbik6IFJlcGxhY2UgTGF5b3V0X19jb250ZW50IGNsYXNzLlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcCBMYXlvdXRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIHtkYXRhLmxlYWRpbmdcbiAgICAgICAgICAgICAgICA/IDxEb2NMZWFkaW5nUGFnZSB7Li4uZGF0YX0gey4uLnBhZ2VQcm9wc30vPlxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICA6IDxEb2NQYWdlIHsuLi5kYXRhfSB7Li4ucGFnZVByb3BzfS8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8T3BlbmFwaVNhbmRib3ggLz5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn1cbiIsInZhciBfX2FzeW5jID0gKF9fdGhpcywgX19hcmd1bWVudHMsIGdlbmVyYXRvcikgPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHZhciBmdWxmaWxsZWQgPSAodmFsdWUpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIHJlamVjdGVkID0gKHZhbHVlKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvci50aHJvdyh2YWx1ZSkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB2YXIgc3RlcCA9ICh4KSA9PiB4LmRvbmUgPyByZXNvbHZlKHgudmFsdWUpIDogUHJvbWlzZS5yZXNvbHZlKHgudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KF9fdGhpcywgX19hcmd1bWVudHMpKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbi8vIHNyYy9ob29rcy91c2VNZXJtYWlkLnRzXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gdXNlTWVybWFpZCgpIHtcbiAgY29uc3QgW21lcm1haWQsIHNldE1lcm1haWRdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlbmRlciA9IHVzZUNhbGxiYWNrKChjb25maWcsIG9wdGlvbnMpID0+IF9fYXN5bmModGhpcywgbnVsbCwgZnVuY3Rpb24qICgpIHtcbiAgICBpZiAobWVybWFpZCkge1xuICAgICAgbWVybWFpZC5pbml0aWFsaXplKGNvbmZpZyk7XG4gICAgICByZXR1cm4gbWVybWFpZC5ydW4ob3B0aW9ucyk7XG4gICAgfVxuICB9KSwgW21lcm1haWRdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAod2luZG93Lm1lcm1haWRKc29ucCA9IHdpbmRvdy5tZXJtYWlkSnNvbnAgfHwgW10pLnB1c2goc2V0TWVybWFpZCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gd2luZG93Lm1lcm1haWRKc29ucC5pbmRleE9mKHNldE1lcm1haWQpO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgd2luZG93Lm1lcm1haWRKc29ucC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIHJlbmRlcjtcbn1cbmV4cG9ydCB7XG4gIHVzZU1lcm1haWRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXBcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBoeWRyYXRlUm9vdCwgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IHsgcmVuZGVyVG9TdHJpbmcgfSBmcm9tICdyZWFjdC1kb20vc2VydmVyJztcblxuaW1wb3J0IHsgQXBwLCBEb2NJbm5lclByb3BzIH0gZnJvbSAnLi9jb21wb25lbnRzL0FwcC9BcHAnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7IFNUQVRJQ19DT05URU5UOiBib29sZWFuOyB9XG59XG5cbmxldCByZW5kZXI6IChwcm9wczogRG9jSW5uZXJQcm9wcykgPT4gc3RyaW5nO1xuXG5pZiAocHJvY2Vzcy5lbnYuQlJPV1NFUikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290Jyk7XG4gICAgY29uc3QgcHJvcHMgPSAod2luZG93IGFzIGFueSkuX19EQVRBX18gfHwge307XG5cbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb290IGVsZW1lbnQgbm90IGZvdW5kIScpO1xuICAgIH1cblxuICAgIGlmICh3aW5kb3cuU1RBVElDX0NPTlRFTlQpIHtcbiAgICAgICAgaHlkcmF0ZVJvb3Qocm9vdCwgPEFwcCB7IC4uLnByb3BzIH0gLz4pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNyZWF0ZVJvb3Qocm9vdCkucmVuZGVyKDxBcHAgeyAuLi5wcm9wcyB9IC8+KTtcbiAgICB9XG59IGVsc2Uge1xuICAgIHJlbmRlciA9IChwcm9wczogRG9jSW5uZXJQcm9wcykgPT4gcmVuZGVyVG9TdHJpbmcoPEFwcCB7IC4uLnByb3BzIH0gLz4pO1xufVxuXG5leHBvcnQgeyByZW5kZXIgfTtcblxuXG4iXSwibmFtZXMiOlsiZ2V0Um9vdE5vZGVQb2x5ZmlsbCIsImV4cG9ydHMiLCJtb2R1bGUiLCJnZXRTaGFkb3dJbmNsdWRpbmdSb290Iiwibm9kZSIsInJvb3QiLCJnZXRSb290Iiwibm9kZU5hbWUiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJpc1NoYWRvd1Jvb3QiLCJob3N0IiwicGFyZW50Tm9kZSIsIm9wdCIsIkJvb2xlYW4iLCJjb21wb3NlZCIsInRoaXMiLCJlIiwibWF0Y2hlcyIsImdldFJvb3ROb2RlIiwiZG9jdW1lbnQiLCJFbGVtZW50IiwicHJvdG90eXBlIiwibWF0Y2hlc1NlbGVjdG9yIiwid2Via2l0TWF0Y2hlc1NlbGVjdG9yIiwibW96TWF0Y2hlc1NlbGVjdG9yIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJvTWF0Y2hlc1NlbGVjdG9yIiwic2VsZWN0b3IiLCJjYWxsIiwicXVlcnlTZWxlY3RvckFsbCIsInRoIiwiQXJyYXkiLCJzb21lIiwiZ2V0RXZlbnRUYXJnZXQiLCJldmVudCIsInBhdGgiLCJjb21wb3NlZFBhdGgiLCJpc0FycmF5IiwibGVuZ3RoIiwidGFyZ2V0IiwiaXNDdXN0b20iLCJTZWxlY3RvciQyIiwiQ2xhc3NOYW1lJDEiLCJhZGRFdmVudExpc3RlbmVyIiwiZWxlbWVudCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwidGFiIiwidGFiTGlzdCIsInRhYnNDb250YWluZXIiLCJhbGxUYWJzIiwiZnJvbSIsImFsbFBhbmVscyIsInRhcmdldEluZGV4IiwiaW5kZXhPZiIsImkiLCJwYW5lbCIsInRvZ2dsZSIsInNldEF0dHJpYnV0ZSIsInNlbGVjdFRhYiIsInBhcmVudCIsImNvZGUiLCJxdWVyeVNlbGVjdG9yIiwidGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwidGV4dGFyZWEiLCJjcmVhdGVFbGVtZW50IiwidGV4dENvbnRlbnQiLCJib2R5IiwiYXBwZW5kIiwic2VsZWN0IiwiZXhlY0NvbW1hbmQiLCJyZW1vdmVDaGlsZCIsImNvcHlUb0NsaXBib2FyZCIsImlubmVyVGV4dCIsInRoZW4iLCJzdmdCdXR0b24iLCJpZCIsImdldEF0dHJpYnV0ZSIsImljb24iLCJnZXRFbGVtZW50QnlJZCIsImJlZ2luRWxlbWVudCIsIm5vdGlmeVN1Y2Nlc3MiLCJTZWxlY3RvciQxIiwiQ1VUIiwiVElUTEUiLCJDT05URU5UIiwiQ2xhc3NOYW1lIiwibWF0Y2hUaXRsZSIsIl9hIiwiSFRNTEVsZW1lbnQiLCJ0aXRsZSIsImZpbmQiLCJmaW5kVGl0bGVJblBhdGgiLCJjdXROb2RlIiwidG9nZ2xlQ3V0IiwiU2VsZWN0b3IiLCJvcGVuQ2xhc3MiLCJvcGVuRGVmaW5pdGlvbkNsYXNzIiwicmVwbGFjZSIsImlzTGlzdGVuZXJOZWVkZWQiLCJzZXREZWZpbml0aW9uUG9zaXRpb24iLCJkZWZpbml0aW9uRWxlbWVudCIsInRlcm1FbGVtZW50IiwieCIsInRlcm1YIiwieSIsInRlcm1ZIiwicmlnaHQiLCJ0ZXJtUmlnaHQiLCJsZWZ0IiwidGVybUxlZnQiLCJ3aWR0aCIsInRlcm1XaWR0aCIsImhlaWdodCIsInRlcm1IZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0ZXJtUGFyZW50IiwidGVybVBhcmVudEVsZW1lbnQiLCJ0ZXJtUGFyZW50UmlnaHQiLCJ0ZXJtUGFyZW50TGVmdCIsImNsb3NlRGVmaW5pdGlvbiIsInRlcm1PblJlc2l6ZSIsInJlbGF0aXZlWCIsIk51bWJlciIsInJlbGF0aXZlWSIsIlN0cmluZyIsIm9mZnNldFRvcCIsImRlZmluaXRpb25QYXJlbnQiLCJwYXJlbnRFbGVtZW50IiwiZGVmaW5pdGlvbldpZHRoIiwiZGVmaW5pdGlvblBhcmVudExlZnQiLCJkZWZpbml0aW9uUmlnaHRDb29yZGluYXRlIiwiZ2V0Q29vcmRzIiwiZml0RGVmaW5pdGlvbkRvY3VtZW50IiwiY2xpZW50V2lkdGgiLCJjdXN0b21IZWFkZXJUb3AiLCJ0b3AiLCJzdHlsZSIsIm9mZnNldExlZnQiLCJvcGVuRGVmaW5pdGlvbiIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJ0ZXJtSWQiLCJ0ZXJtIiwiY2xvc2VzdCIsImRlZmluaXRpb24iLCJyZW1vdmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZWxlbSIsImJveCIsImRvY0VsIiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsVG9wIiwid2luZG93IiwicGFnZVlPZmZzZXQiLCJzY3JvbGxMZWZ0IiwicGFnZVhPZmZzZXQiLCJjbGllbnRUb3AiLCJjbGllbnRMZWZ0IiwiTWF0aCIsInJvdW5kIiwidGVybUtleSIsImRlZmluaXRpb25UZW1wbGF0ZSIsImNvbnRlbnQiLCJjbG9uZU5vZGUiLCJmaXJzdENoaWxkIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVEZWZpbml0aW9uRWxlbWVudCIsImlzVGFyZ2V0RGVmaW5pdGlvbkNvbnRlbnQiLCJqb2luIiwicmFuZG9tIiwidG9TdHJpbmciLCJzdWJzdHIiLCJzZXREZWZpbml0aW9uSWQiLCJrZXkiLCJiZW1fY25fMSIsImJsb2NrIiwic2V0dXAiLCJiZW1DbGFzc05hbWVMaXRlIiwiYmxvY2tOYW1lIiwiYiIsImFyZ3MiLCJfaSIsImFyZ3VtZW50cyIsInJlc3VsdCIsImVsZW1lbnROYW1lIiwic2hpZnQiLCJtb2RpZmllcnMiLCJtaXhpbiIsIm1peCIsImJ1aWxkZXIiLCJjb25maWciLCJyZXNldCIsImVsIiwiaHJlZiIsImxvY2F0aW9uT3JpZ2luIiwibG9jYXRpb24iLCJvcmlnaW4iLCJzdGFydHNXaXRoIiwicHJldmVudERlZmF1bHQiLCJleHRlbnRpb24iLCJlbmRzV2l0aCIsImNvbmNhdCIsInNwbGl0ZWRIcmVmIiwic3BsaXQiLCJpc1N0cmluZyIsImRhdGEiLCJldmVyeSIsIm4iLCJ0IiwiciIsIm8iLCJsIiwibSIsImMiLCJkIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsIl9fZXNNb2R1bGUiLCJjcmVhdGUiLCJiaW5kIiwiZGVmYXVsdCIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJFUlJPUl9CTE9DS19OQU1FX1RZUEUiLCJFUlJPUl9CTE9DS19OQU1FX0VNUFRZIiwibnMiLCJtb2QiLCJtb2RWYWx1ZSIsInUiLCJhc3NpZ24iLCJtaXhlcyIsImEiLCJzdGF0ZXMiLCJhcHBseSIsImYiLCJtb2RzIiwia2V5cyIsImZpbHRlciIsIm1hcCIsImZvckVhY2giLCJjbGFzc01hcCIsImlzIiwiaGFzIiwic3RhdGUiLCJyZWR1Y2UiLCJFcnJvciIsInRyaW0iLCJkZXNlbGVjdEN1cnJlbnQiLCJjbGlwYm9hcmRUb0lFMTFGb3JtYXR0aW5nIiwib3B0aW9ucyIsImRlYnVnIiwibWVzc2FnZSIsInJlc2VsZWN0UHJldmlvdXMiLCJyYW5nZSIsInNlbGVjdGlvbiIsIm1hcmsiLCJzdWNjZXNzIiwiY3JlYXRlUmFuZ2UiLCJnZXRTZWxlY3Rpb24iLCJhcmlhSGlkZGVuIiwiYWxsIiwicG9zaXRpb24iLCJjbGlwIiwid2hpdGVTcGFjZSIsIndlYmtpdFVzZXJTZWxlY3QiLCJNb3pVc2VyU2VsZWN0IiwibXNVc2VyU2VsZWN0IiwidXNlclNlbGVjdCIsInN0b3BQcm9wYWdhdGlvbiIsImZvcm1hdCIsImNsaXBib2FyZERhdGEiLCJjb25zb2xlIiwid2FybiIsImNsZWFyRGF0YSIsInNldERhdGEiLCJvbkNvcHkiLCJzZWxlY3ROb2RlQ29udGVudHMiLCJhZGRSYW5nZSIsImVyciIsImVycm9yIiwiY29weUtleSIsInRlc3QiLCJ1c2VyQWdlbnQiLCJwcm9tcHQiLCJyZW1vdmVSYW5nZSIsInJlbW92ZUFsbFJhbmdlcyIsIl9fX0NTU19MT0FERVJfRVhQT1JUX19fIiwicHVzaCIsIl9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fIiwiVVJMIiwiX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyIsIl9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fIiwiX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzJfX18iLCJfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfM19fXyIsIl9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF80X19fIiwiX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzVfX18iLCJfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8xX19fIiwiX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMl9fXyIsIl9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzNfX18iLCJfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF80X19fIiwiX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfNV9fXyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJsaXN0IiwiaXRlbSIsIm5lZWRMYXllciIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJ1bmRlZmluZWQiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwidXJsIiwic2xpY2UiLCJoYXNoIiwibmVlZFF1b3RlcyIsImNzc01hcHBpbmciLCJidG9hIiwiYmFzZTY0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJKU09OIiwic3RyaW5naWZ5Iiwic291cmNlTWFwcGluZyIsImNvbmRpdGlvbiIsImFyZ0luZGV4IiwiZnJhbWVzVG9Qb3AiLCJsYW5ncyIsImNyaXQiLCJ2YWwiLCJmaW5kQnkiLCJjb2RlcyIsInR5cGUiLCJpc1ZhbGlkVHlwZSIsImZvckFsbCIsInJvdyIsIm5hbWVzIiwibG9jYWwiLCJ3aGVyZSIsImFyciIsImZuIiwib3V0IiwiZ2V0UmF3VGFnIiwib2JqZWN0VG9TdHJpbmciLCJzeW1Ub1N0cmluZ1RhZyIsIm5hdGl2ZUNlaWwiLCJjZWlsIiwibmF0aXZlTWF4IiwibWF4Iiwic3RhcnQiLCJlbmQiLCJzdGVwIiwiZnJvbVJpZ2h0IiwiaW5kZXgiLCJ0cmltbWVkRW5kSW5kZXgiLCJyZVRyaW1TdGFydCIsInN0cmluZyIsImJhc2VSYW5nZSIsImlzSXRlcmF0ZWVDYWxsIiwidG9GaW5pdGUiLCJmcmVlR2xvYmFsIiwiZyIsIm9iamVjdFByb3RvIiwibmF0aXZlT2JqZWN0VG9TdHJpbmciLCJpc093biIsInRhZyIsInVubWFza2VkIiwicmVJc1VpbnQiLCJlcSIsImlzQXJyYXlMaWtlIiwiaXNJbmRleCIsImlzT2JqZWN0Iiwib2JqZWN0IiwiZnJlZVNlbGYiLCJzZWxmIiwiRnVuY3Rpb24iLCJyZVdoaXRlc3BhY2UiLCJjaGFyQXQiLCJub3ciLCJ0b051bWJlciIsIm5hdGl2ZU1pbiIsIm1pbiIsImZ1bmMiLCJ3YWl0IiwibGFzdEFyZ3MiLCJsYXN0VGhpcyIsIm1heFdhaXQiLCJ0aW1lcklkIiwibGFzdENhbGxUaW1lIiwibGFzdEludm9rZVRpbWUiLCJsZWFkaW5nIiwibWF4aW5nIiwidHJhaWxpbmciLCJUeXBlRXJyb3IiLCJpbnZva2VGdW5jIiwidGltZSIsInRoaXNBcmciLCJzaG91bGRJbnZva2UiLCJ0aW1lU2luY2VMYXN0Q2FsbCIsInRpbWVyRXhwaXJlZCIsInRyYWlsaW5nRWRnZSIsInNldFRpbWVvdXQiLCJ0aW1lV2FpdGluZyIsInJlbWFpbmluZ1dhaXQiLCJkZWJvdW5jZWQiLCJpc0ludm9raW5nIiwibGVhZGluZ0VkZ2UiLCJjbGVhclRpbWVvdXQiLCJjYW5jZWwiLCJmbHVzaCIsIm90aGVyIiwiaXNGdW5jdGlvbiIsImlzTGVuZ3RoIiwiYmFzZUdldFRhZyIsImlzT2JqZWN0TGlrZSIsIkZVTkNfRVJST1JfVEVYVCIsIkhBU0hfVU5ERUZJTkVEIiwiUExBQ0VIT0xERVIiLCJXUkFQX1BBUlRJQUxfRkxBRyIsIldSQVBfQVJZX0ZMQUciLCJJTkZJTklUWSIsIk1BWF9TQUZFX0lOVEVHRVIiLCJOQU4iLCJNQVhfQVJSQVlfTEVOR1RIIiwid3JhcEZsYWdzIiwiYXJnc1RhZyIsImFycmF5VGFnIiwiYm9vbFRhZyIsImRhdGVUYWciLCJlcnJvclRhZyIsImZ1bmNUYWciLCJnZW5UYWciLCJtYXBUYWciLCJudW1iZXJUYWciLCJvYmplY3RUYWciLCJwcm9taXNlVGFnIiwicmVnZXhwVGFnIiwic2V0VGFnIiwic3RyaW5nVGFnIiwic3ltYm9sVGFnIiwid2Vha01hcFRhZyIsImFycmF5QnVmZmVyVGFnIiwiZGF0YVZpZXdUYWciLCJmbG9hdDMyVGFnIiwiZmxvYXQ2NFRhZyIsImludDhUYWciLCJpbnQxNlRhZyIsImludDMyVGFnIiwidWludDhUYWciLCJ1aW50OENsYW1wZWRUYWciLCJ1aW50MTZUYWciLCJ1aW50MzJUYWciLCJyZUVtcHR5U3RyaW5nTGVhZGluZyIsInJlRW1wdHlTdHJpbmdNaWRkbGUiLCJyZUVtcHR5U3RyaW5nVHJhaWxpbmciLCJyZUVzY2FwZWRIdG1sIiwicmVVbmVzY2FwZWRIdG1sIiwicmVIYXNFc2NhcGVkSHRtbCIsIlJlZ0V4cCIsInNvdXJjZSIsInJlSGFzVW5lc2NhcGVkSHRtbCIsInJlRXNjYXBlIiwicmVFdmFsdWF0ZSIsInJlSW50ZXJwb2xhdGUiLCJyZUlzRGVlcFByb3AiLCJyZUlzUGxhaW5Qcm9wIiwicmVQcm9wTmFtZSIsInJlUmVnRXhwQ2hhciIsInJlSGFzUmVnRXhwQ2hhciIsInJlV3JhcENvbW1lbnQiLCJyZVdyYXBEZXRhaWxzIiwicmVTcGxpdERldGFpbHMiLCJyZUFzY2lpV29yZCIsInJlRm9yYmlkZGVuSWRlbnRpZmllckNoYXJzIiwicmVFc2NhcGVDaGFyIiwicmVFc1RlbXBsYXRlIiwicmVGbGFncyIsInJlSXNCYWRIZXgiLCJyZUlzQmluYXJ5IiwicmVJc0hvc3RDdG9yIiwicmVJc09jdGFsIiwicmVMYXRpbiIsInJlTm9NYXRjaCIsInJlVW5lc2NhcGVkU3RyaW5nIiwicnNBc3RyYWxSYW5nZSIsInJzQ29tYm9SYW5nZSIsInJzQ29tYm9NYXJrc1JhbmdlIiwicnNEaW5nYmF0UmFuZ2UiLCJyc0xvd2VyUmFuZ2UiLCJyc1VwcGVyUmFuZ2UiLCJyc1ZhclJhbmdlIiwicnNCcmVha1JhbmdlIiwicnNNYXRoT3BSYW5nZSIsInJzQXN0cmFsIiwicnNCcmVhayIsInJzQ29tYm8iLCJyc0RpZ2l0cyIsInJzRGluZ2JhdCIsInJzTG93ZXIiLCJyc01pc2MiLCJyc0ZpdHoiLCJyc05vbkFzdHJhbCIsInJzUmVnaW9uYWwiLCJyc1N1cnJQYWlyIiwicnNVcHBlciIsInJzWldKIiwicnNNaXNjTG93ZXIiLCJyc01pc2NVcHBlciIsInJzT3B0Q29udHJMb3dlciIsInJzT3B0Q29udHJVcHBlciIsInJlT3B0TW9kIiwicnNNb2RpZmllciIsInJzT3B0VmFyIiwicnNTZXEiLCJyc0Vtb2ppIiwicnNTeW1ib2wiLCJyZUFwb3MiLCJyZUNvbWJvTWFyayIsInJlVW5pY29kZSIsInJlVW5pY29kZVdvcmQiLCJyZUhhc1VuaWNvZGUiLCJyZUhhc1VuaWNvZGVXb3JkIiwiY29udGV4dFByb3BzIiwidGVtcGxhdGVDb3VudGVyIiwidHlwZWRBcnJheVRhZ3MiLCJjbG9uZWFibGVUYWdzIiwic3RyaW5nRXNjYXBlcyIsImZyZWVQYXJzZUZsb2F0IiwicGFyc2VGbG9hdCIsImZyZWVQYXJzZUludCIsInBhcnNlSW50IiwiZnJlZUV4cG9ydHMiLCJub2RlVHlwZSIsImZyZWVNb2R1bGUiLCJtb2R1bGVFeHBvcnRzIiwiZnJlZVByb2Nlc3MiLCJwcm9jZXNzIiwibm9kZVV0aWwiLCJyZXF1aXJlIiwidHlwZXMiLCJiaW5kaW5nIiwibm9kZUlzQXJyYXlCdWZmZXIiLCJpc0FycmF5QnVmZmVyIiwibm9kZUlzRGF0ZSIsImlzRGF0ZSIsIm5vZGVJc01hcCIsImlzTWFwIiwibm9kZUlzUmVnRXhwIiwiaXNSZWdFeHAiLCJub2RlSXNTZXQiLCJpc1NldCIsIm5vZGVJc1R5cGVkQXJyYXkiLCJpc1R5cGVkQXJyYXkiLCJhcnJheUFnZ3JlZ2F0b3IiLCJhcnJheSIsInNldHRlciIsIml0ZXJhdGVlIiwiYWNjdW11bGF0b3IiLCJhcnJheUVhY2giLCJhcnJheUVhY2hSaWdodCIsImFycmF5RXZlcnkiLCJwcmVkaWNhdGUiLCJhcnJheUZpbHRlciIsInJlc0luZGV4IiwiYXJyYXlJbmNsdWRlcyIsImJhc2VJbmRleE9mIiwiYXJyYXlJbmNsdWRlc1dpdGgiLCJjb21wYXJhdG9yIiwiYXJyYXlNYXAiLCJhcnJheVB1c2giLCJ2YWx1ZXMiLCJvZmZzZXQiLCJhcnJheVJlZHVjZSIsImluaXRBY2N1bSIsImFycmF5UmVkdWNlUmlnaHQiLCJhcnJheVNvbWUiLCJhc2NpaVNpemUiLCJiYXNlUHJvcGVydHkiLCJiYXNlRmluZEtleSIsImNvbGxlY3Rpb24iLCJlYWNoRnVuYyIsImJhc2VGaW5kSW5kZXgiLCJmcm9tSW5kZXgiLCJzdHJpY3RJbmRleE9mIiwiYmFzZUlzTmFOIiwiYmFzZUluZGV4T2ZXaXRoIiwiYmFzZU1lYW4iLCJiYXNlU3VtIiwiYmFzZVByb3BlcnR5T2YiLCJiYXNlUmVkdWNlIiwiY3VycmVudCIsImJhc2VUaW1lcyIsImJhc2VUcmltIiwiYmFzZVVuYXJ5IiwiYmFzZVZhbHVlcyIsInByb3BzIiwiY2FjaGVIYXMiLCJjYWNoZSIsImNoYXJzU3RhcnRJbmRleCIsInN0clN5bWJvbHMiLCJjaHJTeW1ib2xzIiwiY2hhcnNFbmRJbmRleCIsImRlYnVyckxldHRlciIsImVzY2FwZUh0bWxDaGFyIiwiZXNjYXBlU3RyaW5nQ2hhciIsImNociIsImhhc1VuaWNvZGUiLCJtYXBUb0FycmF5Iiwic2l6ZSIsIm92ZXJBcmciLCJ0cmFuc2Zvcm0iLCJhcmciLCJyZXBsYWNlSG9sZGVycyIsInBsYWNlaG9sZGVyIiwic2V0VG9BcnJheSIsInNldCIsInNldFRvUGFpcnMiLCJzdHJpbmdTaXplIiwibGFzdEluZGV4IiwidW5pY29kZVNpemUiLCJzdHJpbmdUb0FycmF5IiwibWF0Y2giLCJ1bmljb2RlVG9BcnJheSIsImFzY2lpVG9BcnJheSIsInVuZXNjYXBlSHRtbENoYXIiLCJfIiwicnVuSW5Db250ZXh0IiwiY29udGV4dCIsInVpZCIsImRlZmF1bHRzIiwicGljayIsIkRhdGUiLCJhcnJheVByb3RvIiwiZnVuY1Byb3RvIiwiY29yZUpzRGF0YSIsImZ1bmNUb1N0cmluZyIsImlkQ291bnRlciIsIm1hc2tTcmNLZXkiLCJleGVjIiwiSUVfUFJPVE8iLCJvYmplY3RDdG9yU3RyaW5nIiwib2xkRGFzaCIsInJlSXNOYXRpdmUiLCJCdWZmZXIiLCJVaW50OEFycmF5IiwiYWxsb2NVbnNhZmUiLCJnZXRQcm90b3R5cGUiLCJnZXRQcm90b3R5cGVPZiIsIm9iamVjdENyZWF0ZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic3BsaWNlIiwic3ByZWFkYWJsZVN5bWJvbCIsImlzQ29uY2F0U3ByZWFkYWJsZSIsInN5bUl0ZXJhdG9yIiwiaXRlcmF0b3IiLCJnZXROYXRpdmUiLCJjdHhDbGVhclRpbWVvdXQiLCJjdHhOb3ciLCJjdHhTZXRUaW1lb3V0IiwibmF0aXZlRmxvb3IiLCJmbG9vciIsIm5hdGl2ZUdldFN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJuYXRpdmVJc0J1ZmZlciIsImlzQnVmZmVyIiwibmF0aXZlSXNGaW5pdGUiLCJpc0Zpbml0ZSIsIm5hdGl2ZUpvaW4iLCJuYXRpdmVLZXlzIiwibmF0aXZlTm93IiwibmF0aXZlUGFyc2VJbnQiLCJuYXRpdmVSYW5kb20iLCJuYXRpdmVSZXZlcnNlIiwicmV2ZXJzZSIsIkRhdGFWaWV3IiwiTWFwIiwiU2V0IiwiV2Vha01hcCIsIm5hdGl2ZUNyZWF0ZSIsIm1ldGFNYXAiLCJyZWFsTmFtZXMiLCJkYXRhVmlld0N0b3JTdHJpbmciLCJ0b1NvdXJjZSIsIm1hcEN0b3JTdHJpbmciLCJwcm9taXNlQ3RvclN0cmluZyIsInNldEN0b3JTdHJpbmciLCJ3ZWFrTWFwQ3RvclN0cmluZyIsInN5bWJvbFByb3RvIiwic3ltYm9sVmFsdWVPZiIsInZhbHVlT2YiLCJzeW1ib2xUb1N0cmluZyIsImxvZGFzaCIsIkxhenlXcmFwcGVyIiwiTG9kYXNoV3JhcHBlciIsIndyYXBwZXJDbG9uZSIsImJhc2VDcmVhdGUiLCJwcm90byIsImJhc2VMb2Rhc2giLCJjaGFpbkFsbCIsIl9fd3JhcHBlZF9fIiwiX19hY3Rpb25zX18iLCJfX2NoYWluX18iLCJfX2luZGV4X18iLCJfX3ZhbHVlc19fIiwiX19kaXJfXyIsIl9fZmlsdGVyZWRfXyIsIl9faXRlcmF0ZWVzX18iLCJfX3Rha2VDb3VudF9fIiwiX192aWV3c19fIiwiSGFzaCIsImVudHJpZXMiLCJjbGVhciIsImVudHJ5IiwiTGlzdENhY2hlIiwiTWFwQ2FjaGUiLCJTZXRDYWNoZSIsIl9fZGF0YV9fIiwiYWRkIiwiU3RhY2siLCJhcnJheUxpa2VLZXlzIiwiaW5oZXJpdGVkIiwiaXNBcnIiLCJpc0FyZyIsImlzQXJndW1lbnRzIiwiaXNCdWZmIiwiaXNUeXBlIiwic2tpcEluZGV4ZXMiLCJhcnJheVNhbXBsZSIsImJhc2VSYW5kb20iLCJhcnJheVNhbXBsZVNpemUiLCJzaHVmZmxlU2VsZiIsImNvcHlBcnJheSIsImJhc2VDbGFtcCIsImFycmF5U2h1ZmZsZSIsImFzc2lnbk1lcmdlVmFsdWUiLCJiYXNlQXNzaWduVmFsdWUiLCJhc3NpZ25WYWx1ZSIsIm9ialZhbHVlIiwiYXNzb2NJbmRleE9mIiwiYmFzZUFnZ3JlZ2F0b3IiLCJiYXNlRWFjaCIsImJhc2VBc3NpZ24iLCJjb3B5T2JqZWN0IiwiYmFzZUF0IiwicGF0aHMiLCJza2lwIiwibnVtYmVyIiwibG93ZXIiLCJ1cHBlciIsImJhc2VDbG9uZSIsImJpdG1hc2siLCJjdXN0b21pemVyIiwic3RhY2siLCJpc0RlZXAiLCJpc0ZsYXQiLCJpc0Z1bGwiLCJpbnB1dCIsImluaXRDbG9uZUFycmF5IiwiZ2V0VGFnIiwiaXNGdW5jIiwiY2xvbmVCdWZmZXIiLCJpbml0Q2xvbmVPYmplY3QiLCJnZXRTeW1ib2xzSW4iLCJjb3B5U3ltYm9sc0luIiwia2V5c0luIiwiYmFzZUFzc2lnbkluIiwiZ2V0U3ltYm9scyIsImNvcHlTeW1ib2xzIiwic3ltYm9sIiwiQ3RvciIsImNsb25lQXJyYXlCdWZmZXIiLCJkYXRhVmlldyIsImJ1ZmZlciIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiY2xvbmVEYXRhVmlldyIsImNsb25lVHlwZWRBcnJheSIsInJlZ2V4cCIsImNsb25lUmVnRXhwIiwiaW5pdENsb25lQnlUYWciLCJzdGFja2VkIiwic3ViVmFsdWUiLCJnZXRBbGxLZXlzSW4iLCJnZXRBbGxLZXlzIiwiYmFzZUNvbmZvcm1zVG8iLCJiYXNlRGVsYXkiLCJiYXNlRGlmZmVyZW5jZSIsImluY2x1ZGVzIiwiaXNDb21tb24iLCJ2YWx1ZXNMZW5ndGgiLCJvdXRlciIsImNvbXB1dGVkIiwidmFsdWVzSW5kZXgiLCJ0ZW1wbGF0ZVNldHRpbmdzIiwicG9wIiwiZ2V0TWFwRGF0YSIsInBhaXJzIiwiTEFSR0VfQVJSQVlfU0laRSIsImNyZWF0ZUJhc2VFYWNoIiwiYmFzZUZvck93biIsImJhc2VFYWNoUmlnaHQiLCJiYXNlRm9yT3duUmlnaHQiLCJiYXNlRXZlcnkiLCJiYXNlRXh0cmVtdW0iLCJpc1N5bWJvbCIsImJhc2VGaWx0ZXIiLCJiYXNlRmxhdHRlbiIsImRlcHRoIiwiaXNTdHJpY3QiLCJpc0ZsYXR0ZW5hYmxlIiwiYmFzZUZvciIsImNyZWF0ZUJhc2VGb3IiLCJiYXNlRm9yUmlnaHQiLCJiYXNlRnVuY3Rpb25zIiwiYmFzZUdldCIsImNhc3RQYXRoIiwidG9LZXkiLCJiYXNlR2V0QWxsS2V5cyIsImtleXNGdW5jIiwic3ltYm9sc0Z1bmMiLCJiYXNlR3QiLCJiYXNlSGFzIiwiYmFzZUhhc0luIiwiYmFzZUludGVyc2VjdGlvbiIsImFycmF5cyIsIm90aExlbmd0aCIsIm90aEluZGV4IiwiY2FjaGVzIiwibWF4TGVuZ3RoIiwiSW5maW5pdHkiLCJzZWVuIiwiYmFzZUludm9rZSIsImxhc3QiLCJiYXNlSXNBcmd1bWVudHMiLCJiYXNlSXNFcXVhbCIsImVxdWFsRnVuYyIsIm9iaklzQXJyIiwib3RoSXNBcnIiLCJvYmpUYWciLCJvdGhUYWciLCJvYmpJc09iaiIsIm90aElzT2JqIiwiaXNTYW1lVGFnIiwiZXF1YWxBcnJheXMiLCJjb252ZXJ0IiwiaXNQYXJ0aWFsIiwiZXF1YWxCeVRhZyIsIm9iaklzV3JhcHBlZCIsIm90aElzV3JhcHBlZCIsIm9ialVud3JhcHBlZCIsIm90aFVud3JhcHBlZCIsIm9ialByb3BzIiwib2JqTGVuZ3RoIiwib2JqU3RhY2tlZCIsIm90aFN0YWNrZWQiLCJza2lwQ3RvciIsIm90aFZhbHVlIiwiY29tcGFyZWQiLCJvYmpDdG9yIiwib3RoQ3RvciIsImVxdWFsT2JqZWN0cyIsImJhc2VJc0VxdWFsRGVlcCIsImJhc2VJc01hdGNoIiwibWF0Y2hEYXRhIiwibm9DdXN0b21pemVyIiwic3JjVmFsdWUiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsImJhc2VJc05hdGl2ZSIsImJhc2VJdGVyYXRlZSIsImlkZW50aXR5IiwiYmFzZU1hdGNoZXNQcm9wZXJ0eSIsImJhc2VNYXRjaGVzIiwicHJvcGVydHkiLCJiYXNlS2V5cyIsImlzUHJvdG90eXBlIiwiYmFzZUx0IiwiYmFzZU1hcCIsImdldE1hdGNoRGF0YSIsIm1hdGNoZXNTdHJpY3RDb21wYXJhYmxlIiwiaXNLZXkiLCJpc1N0cmljdENvbXBhcmFibGUiLCJoYXNJbiIsImJhc2VNZXJnZSIsInNyY0luZGV4IiwibWVyZ2VGdW5jIiwic2FmZUdldCIsIm5ld1ZhbHVlIiwiaXNUeXBlZCIsImlzQXJyYXlMaWtlT2JqZWN0IiwiaXNQbGFpbk9iamVjdCIsInRvUGxhaW5PYmplY3QiLCJiYXNlTWVyZ2VEZWVwIiwiYmFzZU50aCIsImJhc2VPcmRlckJ5IiwiaXRlcmF0ZWVzIiwib3JkZXJzIiwiZ2V0SXRlcmF0ZWUiLCJjcml0ZXJpYSIsImNvbXBhcmVyIiwic29ydCIsIm9iakNyaXRlcmlhIiwib3RoQ3JpdGVyaWEiLCJvcmRlcnNMZW5ndGgiLCJjb21wYXJlQXNjZW5kaW5nIiwiY29tcGFyZU11bHRpcGxlIiwiYmFzZVNvcnRCeSIsImJhc2VQaWNrQnkiLCJiYXNlU2V0IiwiYmFzZVB1bGxBbGwiLCJiYXNlUHVsbEF0IiwiaW5kZXhlcyIsInByZXZpb3VzIiwiYmFzZVVuc2V0IiwiYmFzZVJlcGVhdCIsImJhc2VSZXN0Iiwic2V0VG9TdHJpbmciLCJvdmVyUmVzdCIsImJhc2VTYW1wbGUiLCJiYXNlU2FtcGxlU2l6ZSIsIm5lc3RlZCIsImJhc2VTZXREYXRhIiwiYmFzZVNldFRvU3RyaW5nIiwiY29uc3RhbnQiLCJiYXNlU2h1ZmZsZSIsImJhc2VTbGljZSIsImJhc2VTb21lIiwiYmFzZVNvcnRlZEluZGV4IiwicmV0SGlnaGVzdCIsImxvdyIsImhpZ2giLCJtaWQiLCJiYXNlU29ydGVkSW5kZXhCeSIsInZhbElzTmFOIiwidmFsSXNOdWxsIiwidmFsSXNTeW1ib2wiLCJ2YWxJc1VuZGVmaW5lZCIsIm90aElzRGVmaW5lZCIsIm90aElzTnVsbCIsIm90aElzUmVmbGV4aXZlIiwib3RoSXNTeW1ib2wiLCJzZXRMb3ciLCJiYXNlU29ydGVkVW5pcSIsImJhc2VUb051bWJlciIsImJhc2VUb1N0cmluZyIsImJhc2VVbmlxIiwiY3JlYXRlU2V0Iiwic2VlbkluZGV4IiwiYmFzZVVwZGF0ZSIsInVwZGF0ZXIiLCJiYXNlV2hpbGUiLCJpc0Ryb3AiLCJiYXNlV3JhcHBlclZhbHVlIiwiYWN0aW9ucyIsImFjdGlvbiIsImJhc2VYb3IiLCJiYXNlWmlwT2JqZWN0IiwiYXNzaWduRnVuYyIsInZhbHNMZW5ndGgiLCJjYXN0QXJyYXlMaWtlT2JqZWN0IiwiY2FzdEZ1bmN0aW9uIiwic3RyaW5nVG9QYXRoIiwiY2FzdFJlc3QiLCJjYXN0U2xpY2UiLCJjb3B5IiwiYXJyYXlCdWZmZXIiLCJ0eXBlZEFycmF5IiwidmFsSXNEZWZpbmVkIiwidmFsSXNSZWZsZXhpdmUiLCJjb21wb3NlQXJncyIsInBhcnRpYWxzIiwiaG9sZGVycyIsImlzQ3VycmllZCIsImFyZ3NJbmRleCIsImFyZ3NMZW5ndGgiLCJob2xkZXJzTGVuZ3RoIiwibGVmdEluZGV4IiwibGVmdExlbmd0aCIsInJhbmdlTGVuZ3RoIiwiaXNVbmN1cnJpZWQiLCJjb21wb3NlQXJnc1JpZ2h0IiwiaG9sZGVyc0luZGV4IiwicmlnaHRJbmRleCIsInJpZ2h0TGVuZ3RoIiwiaXNOZXciLCJjcmVhdGVBZ2dyZWdhdG9yIiwiaW5pdGlhbGl6ZXIiLCJjcmVhdGVBc3NpZ25lciIsImFzc2lnbmVyIiwic291cmNlcyIsImd1YXJkIiwiaXRlcmFibGUiLCJjcmVhdGVDYXNlRmlyc3QiLCJtZXRob2ROYW1lIiwiY3JlYXRlQ29tcG91bmRlciIsImNhbGxiYWNrIiwid29yZHMiLCJkZWJ1cnIiLCJjcmVhdGVDdG9yIiwidGhpc0JpbmRpbmciLCJjcmVhdGVGaW5kIiwiZmluZEluZGV4RnVuYyIsImNyZWF0ZUZsb3ciLCJmbGF0UmVzdCIsImZ1bmNzIiwicHJlcmVxIiwidGhydSIsIndyYXBwZXIiLCJnZXRGdW5jTmFtZSIsImZ1bmNOYW1lIiwiZ2V0RGF0YSIsImlzTGF6aWFibGUiLCJwbGFudCIsImNyZWF0ZUh5YnJpZCIsInBhcnRpYWxzUmlnaHQiLCJob2xkZXJzUmlnaHQiLCJhcmdQb3MiLCJhcnkiLCJhcml0eSIsImlzQXJ5IiwiaXNCaW5kIiwiaXNCaW5kS2V5IiwiaXNGbGlwIiwiZ2V0SG9sZGVyIiwiaG9sZGVyc0NvdW50IiwiY291bnRIb2xkZXJzIiwibmV3SG9sZGVycyIsImNyZWF0ZVJlY3VycnkiLCJhcnJMZW5ndGgiLCJvbGRBcnJheSIsInJlb3JkZXIiLCJjcmVhdGVJbnZlcnRlciIsInRvSXRlcmF0ZWUiLCJiYXNlSW52ZXJ0ZXIiLCJjcmVhdGVNYXRoT3BlcmF0aW9uIiwib3BlcmF0b3IiLCJkZWZhdWx0VmFsdWUiLCJjcmVhdGVPdmVyIiwiYXJyYXlGdW5jIiwiY3JlYXRlUGFkZGluZyIsImNoYXJzIiwiY2hhcnNMZW5ndGgiLCJjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uIiwid3JhcEZ1bmMiLCJpc0N1cnJ5IiwibmV3RGF0YSIsInNldFdyYXBUb1N0cmluZyIsImNyZWF0ZVJvdW5kIiwicHJlY2lzaW9uIiwidG9JbnRlZ2VyIiwicGFpciIsIm5vb3AiLCJjcmVhdGVUb1BhaXJzIiwiYmFzZVRvUGFpcnMiLCJjcmVhdGVXcmFwIiwic3JjQml0bWFzayIsIm5ld0JpdG1hc2siLCJpc0NvbWJvIiwibWVyZ2VEYXRhIiwiY3JlYXRlQ3VycnkiLCJjcmVhdGVQYXJ0aWFsIiwiY3JlYXRlQmluZCIsImN1c3RvbURlZmF1bHRzQXNzaWduSW4iLCJjdXN0b21EZWZhdWx0c01lcmdlIiwiY3VzdG9tT21pdENsb25lIiwiYXJyU3RhY2tlZCIsImFyclZhbHVlIiwiZmxhdHRlbiIsIm90aGVyRnVuYyIsImlzS2V5YWJsZSIsImdldFZhbHVlIiwic3R1YkFycmF5IiwiaGFzUGF0aCIsImhhc0Z1bmMiLCJBcnJheUJ1ZmZlciIsImN0b3JTdHJpbmciLCJpc01hc2thYmxlIiwic3R1YkZhbHNlIiwib3RoZXJBcmdzIiwic2hvcnRPdXQiLCJyZWZlcmVuY2UiLCJkZXRhaWxzIiwiaW5zZXJ0V3JhcERldGFpbHMiLCJ1cGRhdGVXcmFwRGV0YWlscyIsImdldFdyYXBEZXRhaWxzIiwiY291bnQiLCJsYXN0Q2FsbGVkIiwic3RhbXAiLCJyZW1haW5pbmciLCJyYW5kIiwibWVtb2l6ZSIsImNoYXJDb2RlQXQiLCJxdW90ZSIsInN1YlN0cmluZyIsImNsb25lIiwiZGlmZmVyZW5jZSIsImRpZmZlcmVuY2VCeSIsImRpZmZlcmVuY2VXaXRoIiwiZmluZEluZGV4IiwiZmluZExhc3RJbmRleCIsImhlYWQiLCJpbnRlcnNlY3Rpb24iLCJtYXBwZWQiLCJpbnRlcnNlY3Rpb25CeSIsImludGVyc2VjdGlvbldpdGgiLCJwdWxsIiwicHVsbEFsbCIsInB1bGxBdCIsInVuaW9uIiwidW5pb25CeSIsInVuaW9uV2l0aCIsInVuemlwIiwiZ3JvdXAiLCJ1bnppcFdpdGgiLCJ3aXRob3V0IiwieG9yIiwieG9yQnkiLCJ4b3JXaXRoIiwiemlwIiwiemlwV2l0aCIsImNoYWluIiwiaW50ZXJjZXB0b3IiLCJ3cmFwcGVyQXQiLCJjb3VudEJ5IiwiZmluZExhc3QiLCJmb3JFYWNoUmlnaHQiLCJncm91cEJ5IiwiaW52b2tlTWFwIiwia2V5QnkiLCJwYXJ0aXRpb24iLCJzb3J0QnkiLCJiZWZvcmUiLCJiaW5kS2V5IiwiV1JBUF9CSU5EX0ZMQUciLCJkZWJvdW5jZSIsImRlZmVyIiwiZGVsYXkiLCJyZXNvbHZlciIsIm1lbW9pemVkIiwiQ2FjaGUiLCJuZWdhdGUiLCJvdmVyQXJncyIsInRyYW5zZm9ybXMiLCJmdW5jc0xlbmd0aCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiLCJyZWFyZyIsImd0IiwiZ3RlIiwiaXNFcnJvciIsImlzSW50ZWdlciIsImlzTnVtYmVyIiwibHQiLCJsdGUiLCJ0b0FycmF5IiwibmV4dCIsImRvbmUiLCJpdGVyYXRvclRvQXJyYXkiLCJyZW1haW5kZXIiLCJ0b0xlbmd0aCIsImlzQmluYXJ5IiwiYXNzaWduSW4iLCJhc3NpZ25JbldpdGgiLCJhc3NpZ25XaXRoIiwiYXQiLCJwcm9wc0luZGV4IiwicHJvcHNMZW5ndGgiLCJkZWZhdWx0c0RlZXAiLCJtZXJnZVdpdGgiLCJpbnZlcnQiLCJpbnZlcnRCeSIsImludm9rZSIsIm5hdGl2ZUtleXNJbiIsImlzUHJvdG8iLCJiYXNlS2V5c0luIiwibWVyZ2UiLCJvbWl0IiwiQ0xPTkVfREVFUF9GTEFHIiwiYmFzZVBpY2siLCJwaWNrQnkiLCJwcm9wIiwidG9QYWlycyIsInRvUGFpcnNJbiIsImNhbWVsQ2FzZSIsIndvcmQiLCJ0b0xvd2VyQ2FzZSIsImNhcGl0YWxpemUiLCJ1cHBlckZpcnN0Iiwia2ViYWJDYXNlIiwibG93ZXJDYXNlIiwibG93ZXJGaXJzdCIsInNuYWtlQ2FzZSIsInN0YXJ0Q2FzZSIsInVwcGVyQ2FzZSIsInRvVXBwZXJDYXNlIiwicGF0dGVybiIsImhhc1VuaWNvZGVXb3JkIiwidW5pY29kZVdvcmRzIiwiYXNjaWlXb3JkcyIsImF0dGVtcHQiLCJiaW5kQWxsIiwibWV0aG9kTmFtZXMiLCJmbG93IiwiZmxvd1JpZ2h0IiwibWV0aG9kIiwibWV0aG9kT2YiLCJvdmVyIiwib3ZlckV2ZXJ5Iiwib3ZlclNvbWUiLCJiYXNlUHJvcGVydHlEZWVwIiwicmFuZ2VSaWdodCIsImF1Z2VuZCIsImFkZGVuZCIsImRpdmlkZSIsImRpdmlkZW5kIiwiZGl2aXNvciIsIm11bHRpcGx5IiwibXVsdGlwbGllciIsIm11bHRpcGxpY2FuZCIsInN1YnRyYWN0IiwibWludWVuZCIsInN1YnRyYWhlbmQiLCJhZnRlciIsImNhc3RBcnJheSIsImNodW5rIiwiY29tcGFjdCIsImNvbmQiLCJjb25mb3JtcyIsImJhc2VDb25mb3JtcyIsInByb3BlcnRpZXMiLCJjdXJyeSIsImN1cnJ5UmlnaHQiLCJkcm9wIiwiZHJvcFJpZ2h0IiwiZHJvcFJpZ2h0V2hpbGUiLCJkcm9wV2hpbGUiLCJmaWxsIiwiYmFzZUZpbGwiLCJmbGF0TWFwIiwiZmxhdE1hcERlZXAiLCJmbGF0TWFwRGVwdGgiLCJmbGF0dGVuRGVlcCIsImZsYXR0ZW5EZXB0aCIsImZsaXAiLCJmcm9tUGFpcnMiLCJmdW5jdGlvbnMiLCJmdW5jdGlvbnNJbiIsImluaXRpYWwiLCJtYXBLZXlzIiwibWFwVmFsdWVzIiwibWF0Y2hlc1Byb3BlcnR5IiwibnRoQXJnIiwib21pdEJ5Iiwib25jZSIsIm9yZGVyQnkiLCJwcm9wZXJ0eU9mIiwicHVsbEFsbEJ5IiwicHVsbEFsbFdpdGgiLCJyZWplY3QiLCJyZXN0Iiwic2FtcGxlU2l6ZSIsInNldFdpdGgiLCJzaHVmZmxlIiwic29ydGVkVW5pcSIsInNvcnRlZFVuaXFCeSIsInNlcGFyYXRvciIsImxpbWl0Iiwic3ByZWFkIiwidGFpbCIsInRha2UiLCJ0YWtlUmlnaHQiLCJ0YWtlUmlnaHRXaGlsZSIsInRha2VXaGlsZSIsInRhcCIsInRocm90dGxlIiwidG9QYXRoIiwiaXNBcnJMaWtlIiwidW5hcnkiLCJ1bmlxIiwidW5pcUJ5IiwidW5pcVdpdGgiLCJ1bnNldCIsInVwZGF0ZSIsInVwZGF0ZVdpdGgiLCJ2YWx1ZXNJbiIsIndyYXAiLCJ6aXBPYmplY3QiLCJ6aXBPYmplY3REZWVwIiwiZW50cmllc0luIiwiZXh0ZW5kIiwiZXh0ZW5kV2l0aCIsImNsYW1wIiwiY2xvbmVEZWVwIiwiY2xvbmVEZWVwV2l0aCIsImNsb25lV2l0aCIsImNvbmZvcm1zVG8iLCJkZWZhdWx0VG8iLCJlc2NhcGUiLCJlc2NhcGVSZWdFeHAiLCJmaW5kS2V5IiwiZmluZExhc3RLZXkiLCJmb3JJbiIsImZvckluUmlnaHQiLCJmb3JPd24iLCJmb3JPd25SaWdodCIsImluUmFuZ2UiLCJiYXNlSW5SYW5nZSIsImlzQm9vbGVhbiIsImlzRWxlbWVudCIsImlzRW1wdHkiLCJpc0VxdWFsIiwiaXNFcXVhbFdpdGgiLCJpc01hdGNoIiwiaXNNYXRjaFdpdGgiLCJpc05hTiIsImlzTmF0aXZlIiwiaXNOaWwiLCJpc051bGwiLCJpc1NhZmVJbnRlZ2VyIiwiaXNVbmRlZmluZWQiLCJpc1dlYWtNYXAiLCJpc1dlYWtTZXQiLCJsYXN0SW5kZXhPZiIsInN0cmljdExhc3RJbmRleE9mIiwibWF4QnkiLCJtZWFuIiwibWVhbkJ5IiwibWluQnkiLCJzdHViT2JqZWN0Iiwic3R1YlN0cmluZyIsInN0dWJUcnVlIiwibnRoIiwibm9Db25mbGljdCIsInBhZCIsInN0ckxlbmd0aCIsInBhZEVuZCIsInBhZFN0YXJ0IiwicmFkaXgiLCJmbG9hdGluZyIsInRlbXAiLCJyZWR1Y2VSaWdodCIsInJlcGVhdCIsInNhbXBsZSIsInNvcnRlZEluZGV4Iiwic29ydGVkSW5kZXhCeSIsInNvcnRlZEluZGV4T2YiLCJzb3J0ZWRMYXN0SW5kZXgiLCJzb3J0ZWRMYXN0SW5kZXhCeSIsInNvcnRlZExhc3RJbmRleE9mIiwic3VtIiwic3VtQnkiLCJ0ZW1wbGF0ZSIsInNldHRpbmdzIiwiaXNFc2NhcGluZyIsImlzRXZhbHVhdGluZyIsImltcG9ydHMiLCJpbXBvcnRzS2V5cyIsImltcG9ydHNWYWx1ZXMiLCJpbnRlcnBvbGF0ZSIsInJlRGVsaW1pdGVycyIsImV2YWx1YXRlIiwic291cmNlVVJMIiwiZXNjYXBlVmFsdWUiLCJpbnRlcnBvbGF0ZVZhbHVlIiwiZXNUZW1wbGF0ZVZhbHVlIiwiZXZhbHVhdGVWYWx1ZSIsInZhcmlhYmxlIiwidGltZXMiLCJ0b0xvd2VyIiwidG9TYWZlSW50ZWdlciIsInRvVXBwZXIiLCJ0cmltRW5kIiwidHJpbVN0YXJ0IiwidHJ1bmNhdGUiLCJvbWlzc2lvbiIsInNlYXJjaCIsInN1YnN0cmluZyIsImdsb2JhbCIsIm5ld0VuZCIsInVuaXF1ZUlkIiwicHJlZml4IiwiZWFjaCIsImVhY2hSaWdodCIsImZpcnN0IiwiVkVSU0lPTiIsImlzRmlsdGVyIiwidGFrZU5hbWUiLCJkcm9wTmFtZSIsImNoZWNrSXRlcmF0ZWUiLCJpc1Rha2VyIiwibG9kYXNoRnVuYyIsInJldFVud3JhcHBlZCIsImlzTGF6eSIsInVzZUxhenkiLCJpc0h5YnJpZCIsImlzVW53cmFwcGVkIiwib25seUxhenkiLCJjaGFpbk5hbWUiLCJkaXIiLCJpc1JpZ2h0IiwidmlldyIsImdldFZpZXciLCJpdGVyTGVuZ3RoIiwidGFrZUNvdW50IiwiaXRlckluZGV4IiwiY29tbWl0Iiwid3JhcHBlZCIsInRvSlNPTiIsIkRPTUl0ZXJhdG9yIiwiY3R4IiwiZXhjbHVkZSIsInN0YXRpYyIsInNlbGVjdG9ycyIsInNlbCIsImdldENvbnRleHRzIiwiZmlsdGVyZWRDdHgiLCJOb2RlTGlzdCIsImlzUHJvdG90eXBlT2YiLCJpc0Rlc2NlbmRhbnQiLCJjb250ZXh0cyIsImNyZWF0ZUl0ZXJhdG9yIiwid2hhdFRvU2hvdyIsImNyZWF0ZU5vZGVJdGVyYXRvciIsImdldEl0ZXJhdG9yTm9kZSIsIml0ciIsInByZXZOb2RlIiwicHJldmlvdXNOb2RlIiwibmV4dE5vZGUiLCJpdGVyYXRlVGhyb3VnaE5vZGVzIiwiZWFjaENiIiwiZmlsdGVyQ2IiLCJkb25lQ2IiLCJlbGVtZW50cyIsInJldHJpZXZlTm9kZXMiLCJmb3JFYWNoTm9kZSIsIm9wZW4iLCJpZSIsInVhIiwiX29wdCIsIl9pdGVyYXRvciIsImxvZyIsIm1zZyIsImxldmVsIiwiZXNjYXBlU3RyIiwic3RyIiwiY3JlYXRlUmVnRXhwIiwid2lsZGNhcmRzIiwic2V0dXBXaWxkY2FyZHNSZWdFeHAiLCJzeW5vbnltcyIsImNyZWF0ZVN5bm9ueW1zUmVnRXhwIiwiaWdub3JlSm9pbmVycyIsInNldHVwSWdub3JlSm9pbmVyc1JlZ0V4cCIsImRpYWNyaXRpY3MiLCJjcmVhdGVEaWFjcml0aWNzUmVnRXhwIiwiY3JlYXRlTWVyZ2VkQmxhbmtzUmVnRXhwIiwiY3JlYXRlSWdub3JlSm9pbmVyc1JlZ0V4cCIsImNyZWF0ZVdpbGRjYXJkc1JlZ0V4cCIsImNyZWF0ZUFjY3VyYWN5UmVnRXhwIiwic3luIiwic2VucyIsImNhc2VTZW5zaXRpdmUiLCJrMSIsImsyIiwic3BhY2VzIiwiaW5keCIsIm9yaWdpbmFsIiwibmV4dENoYXIiLCJkY3QiLCJoYW5kbGVkIiwiY2giLCJhY2MiLCJhY2N1cmFjeSIsImxzIiwibGltaXRlcnMiLCJsc0pvaW4iLCJsaW1pdGVyIiwiZ2V0U2VwYXJhdGVkS2V5d29yZHMiLCJzdiIsImt3Iiwic2VwYXJhdGVXb3JkU2VhcmNoIiwia3dTcGxpdHRlZCIsImdldFRleHROb2RlcyIsImNiIiwibm9kZXMiLCJOb2RlRmlsdGVyIiwiU0hPV19URVhUIiwibWF0Y2hlc0V4Y2x1ZGUiLCJGSUxURVJfUkVKRUNUIiwiRklMVEVSX0FDQ0VQVCIsIndyYXBSYW5nZUluVGV4dE5vZGUiLCJoRWwiLCJzdGFydE5vZGUiLCJzcGxpdFRleHQiLCJyZXQiLCJyZXBsIiwiY2xhc3NOYW1lIiwicmVwbGFjZUNoaWxkIiwid3JhcFJhbmdlSW5NYXBwZWRUZXh0Tm9kZSIsImRpY3QiLCJzaWJsIiwic3RhcnRTdHIiLCJlbmRTdHIiLCJqIiwicHJldmlvdXNTaWJsaW5nIiwid3JhcE1hdGNoZXMiLCJyZWdleCIsImlnbm9yZUdyb3VwcyIsImVuZENiIiwibWF0Y2hJZHgiLCJwb3MiLCJ3cmFwTWF0Y2hlc0Fjcm9zc0VsZW1lbnRzIiwidW53cmFwTWF0Y2hlcyIsImRvY0ZyYWciLCJjcmVhdGVEb2N1bWVudEZyYWdtZW50Iiwibm9ybWFsaXplVGV4dE5vZGUiLCJub3JtYWxpemUiLCJuZXh0U2libGluZyIsIm5vZGVWYWx1ZSIsIm1hcmtSZWdFeHAiLCJ0b3RhbE1hdGNoZXMiLCJhY3Jvc3NFbGVtZW50cyIsIm5vTWF0Y2giLCJrZXl3b3JkcyIsImt3QXJyIiwia3dBcnJMZW4iLCJoYW5kbGVyIiwidW5tYXJrIiwiU0hPV19FTEVNRU5UIiwibWF0Y2hlc1NlbCIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYmlnaW50IiwiYm9vbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib2JqIiwicXMiLCJzZXAiLCJtYXhLZXlzIiwibGVuIiwia3N0ciIsInZzdHIiLCJ2IiwiaWR4IiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwic3RyaW5naWZ5UHJpbWl0aXZlIiwia3MiLCJkZWNvZGUiLCJwYXJzZSIsImVuY29kZSIsIl90eXBlb2YiLCJDb3B5VG9DbGlwYm9hcmQiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NvcHlUb0NsaXBib2FyZCIsIl9leGNsdWRlZCIsIm93bktleXMiLCJlbnVtZXJhYmxlT25seSIsInN5bWJvbHMiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfZGVmaW5lUHJvcGVydGllcyIsImRlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9zZXRQcm90b3R5cGVPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiX2dldFByb3RvdHlwZU9mIiwiX1JlYWN0JFB1cmVDb21wb25lbnQiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJfaW5oZXJpdHMiLCJDb25zdHJ1Y3RvciIsInByb3RvUHJvcHMiLCJEZXJpdmVkIiwiaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIl9zdXBlciIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzaGFtIiwiUHJveHkiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiU3VwZXIiLCJOZXdUYXJnZXQiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl90aGlzIiwiaW5zdGFuY2UiLCJfY2xhc3NDYWxsQ2hlY2siLCJfbGVuIiwiX2tleSIsIl90aGlzJHByb3BzIiwiY2hpbGRyZW4iLCJDaGlsZHJlbiIsIm9ubHkiLCJvbkNsaWNrIiwiX3RoaXMkcHJvcHMyIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiY2xvbmVFbGVtZW50IiwiUHVyZUNvbXBvbmVudCIsImFhIiwiZmEiLCJoYSIsImlhIiwiamEiLCJhY2NlcHRzQm9vbGVhbnMiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlTmFtZXNwYWNlIiwibXVzdFVzZVByb3BlcnR5IiwicHJvcGVydHlOYW1lIiwic2FuaXRpemVVUkwiLCJyZW1vdmVFbXB0eVN0cmluZyIsImthIiwibGEiLCJ4bGlua0hyZWYiLCJhbmltYXRpb25JdGVyYXRpb25Db3VudCIsImFzcGVjdFJhdGlvIiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNsaWNlIiwiYm9yZGVySW1hZ2VXaWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRpbmFsR3JvdXAiLCJjb2x1bW5Db3VudCIsImNvbHVtbnMiLCJmbGV4IiwiZmxleEdyb3ciLCJmbGV4UG9zaXRpdmUiLCJmbGV4U2hyaW5rIiwiZmxleE5lZ2F0aXZlIiwiZmxleE9yZGVyIiwiZ3JpZEFyZWEiLCJncmlkUm93IiwiZ3JpZFJvd0VuZCIsImdyaWRSb3dTcGFuIiwiZ3JpZFJvd1N0YXJ0IiwiZ3JpZENvbHVtbiIsImdyaWRDb2x1bW5FbmQiLCJncmlkQ29sdW1uU3BhbiIsImdyaWRDb2x1bW5TdGFydCIsImZvbnRXZWlnaHQiLCJsaW5lQ2xhbXAiLCJsaW5lSGVpZ2h0Iiwib3BhY2l0eSIsIm9yZGVyIiwib3JwaGFucyIsInRhYlNpemUiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJ6b29tIiwiZmlsbE9wYWNpdHkiLCJmbG9vZE9wYWNpdHkiLCJzdG9wT3BhY2l0eSIsInN0cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJzdHJva2VNaXRlcmxpbWl0Iiwic3Ryb2tlT3BhY2l0eSIsInN0cm9rZVdpZHRoIiwibWEiLCJuYSIsIm9hIiwicGEiLCJxYSIsInciLCJpbnNlcnRpb25Nb2RlIiwic2VsZWN0ZWRWYWx1ZSIsInNhIiwidGEiLCJfX2h0bWwiLCJ2YSIsIkEiLCJ3YSIsInhhIiwiemEiLCJDYSIsIkRhIiwiRmEiLCJnZW5lcmF0ZVN0YXRpY01hcmt1cCIsIkIiLCJHYSIsImZvciIsIkhhIiwiSWEiLCJKYSIsIkthIiwiTGEiLCJNYSIsIk5hIiwiT2EiLCJQYSIsIlFhIiwiUmEiLCJTYSIsIlRhIiwiVWEiLCJWYSIsIldhIiwiWGEiLCJkaXNwbGF5TmFtZSIsIiQkdHlwZW9mIiwiX2NvbnRleHQiLCJyZW5kZXIiLCJfcGF5bG9hZCIsIl9pbml0IiwiWWEiLCJaYSIsImNvbnRleHRUeXBlcyIsIkUiLCJGIiwiX2N1cnJlbnRWYWx1ZTIiLCJwYXJlbnRWYWx1ZSIsIiRhIiwiYWIiLCJiYiIsIkciLCJkYiIsImlzTW91bnRlZCIsImVucXVldWVTZXRTdGF0ZSIsIl9yZWFjdEludGVybmFscyIsInF1ZXVlIiwiZW5xdWV1ZVJlcGxhY2VTdGF0ZSIsImVucXVldWVGb3JjZVVwZGF0ZSIsImViIiwiY29udGV4dFR5cGUiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsIlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsTW91bnQiLCJoIiwiZmIiLCJvdmVyZmxvdyIsImdiIiwiSCIsImNsejMyIiwiaWIiLCJqYiIsIkxOMiIsImxiIiwiSSIsIm9iIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJwYiIsIm1lbW9pemVkU3RhdGUiLCJxYiIsInJiIiwic2IiLCJ0YiIsImRpc3BhdGNoIiwiZGVsZXRlIiwidWIiLCJ2YiIsIndiIiwiUiIsInhiIiwicmVhZENvbnRleHQiLCJ1c2VDb250ZXh0IiwidXNlTWVtbyIsInVzZVJlZHVjZXIiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUluc2VydGlvbkVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZUNhbGxiYWNrIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZUVmZmVjdCIsInVzZURlYnVnVmFsdWUiLCJ1c2VEZWZlcnJlZFZhbHVlIiwidXNlVHJhbnNpdGlvbiIsInVzZUlkIiwidHJlZUNvbnRleHQiLCJTIiwiaWRQcmVmaXgiLCJ1c2VNdXRhYmxlU291cmNlIiwiX3NvdXJjZSIsInVzZVN5bmNFeHRlcm5hbFN0b3JlIiwieWIiLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudERpc3BhdGNoZXIiLCJ6YiIsIlQiLCJCYiIsImFsbFBlbmRpbmdUYXNrcyIsInBlbmRpbmdSb290VGFza3MiLCJwZW5kaW5nVGFza3MiLCJwaW5nIiwicGluZ2VkVGFza3MiLCJDYiIsImJsb2NrZWRCb3VuZGFyeSIsImJsb2NrZWRTZWdtZW50IiwiYWJvcnRTZXQiLCJsZWdhY3lDb250ZXh0IiwiVSIsInN0YXR1cyIsInBhcmVudEZsdXNoZWQiLCJjaHVua3MiLCJmb3JtYXRDb250ZXh0IiwiYm91bmRhcnkiLCJsYXN0UHVzaGVkVGV4dCIsInRleHRFbWJlZGRlZCIsIlYiLCJvbkVycm9yIiwiVyIsIm9uU2hlbGxFcnJvciIsIm9uRmF0YWxFcnJvciIsImRlc3RpbmF0aW9uIiwiZGVzdHJveSIsImZhdGFsRXJyb3IiLCJEYiIsIkViIiwiY2hpbGRDb250ZXh0VHlwZXMiLCJnZXRDaGlsZENvbnRleHQiLCJYIiwiRmIiLCJkZWZhdWx0UHJvcHMiLCJHYiIsImlzUmVhY3RDb21wb25lbnQiLCJmYWxsYmFjayIsInJvb3RTZWdtZW50SUQiLCJmb3JjZUNsaWVudFJlbmRlciIsImNvbXBsZXRlZFNlZ21lbnRzIiwiYnl0ZVNpemUiLCJmYWxsYmFja0Fib3J0YWJsZVRhc2tzIiwiZXJyb3JEaWdlc3QiLCJIYiIsInJlc3BvbnNlU3RhdGUiLCJZIiwiX2RlZmF1bHRWYWx1ZSIsInEiLCJDIiwiRCIsInlhIiwicmEiLCJyZWYiLCJJYiIsIkpiIiwiS2IiLCJMYiIsImNsaWVudFJlbmRlcmVkQm91bmRhcmllcyIsIm9uQWxsUmVhZHkiLCJjb21wbGV0ZWRSb290U2VnbWVudCIsIm9uU2hlbGxSZWFkeSIsImNvbXBsZXRlZEJvdW5kYXJpZXMiLCJwYXJ0aWFsQm91bmRhcmllcyIsInoiLCJNYiIsIloiLCJuZXh0U2VnbWVudElkIiwicGxhY2Vob2xkZXJQcmVmaXgiLCJOYiIsIm5leHRTdXNwZW5zZUlEIiwiYm91bmRhcnlQcmVmaXgiLCJwcm9ncmVzc2l2ZUNodW5rU2l6ZSIsIk9iIiwic2VnbWVudFByZWZpeCIsIkFhIiwiQmEiLCJQYiIsIlFiIiwic3RhcnRJbmxpbmVTY3JpcHQiLCJzZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uIiwic2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uIiwiYm9vdHN0cmFwQ2h1bmtzIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3JDb21wb25lbnRTdGFjayIsInNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbiIsImJhIiwiY2EiLCJtYiIsImRhIiwibmIiLCJlYSIsIlJiIiwiYWJvcnRhYmxlVGFza3MiLCJTYiIsIlRiIiwiQWIiLCJFYSIsImlkZW50aWZpZXJQcmVmaXgiLCJyZW5kZXJUb05vZGVTdHJlYW0iLCJyZW5kZXJUb1N0YXRpY01hcmt1cCIsInJlbmRlclRvU3RhdGljTm9kZVN0cmVhbSIsInJlbmRlclRvU3RyaW5nIiwidmVyc2lvbiIsImVucXVldWUiLCJzdWJhcnJheSIsIlRleHRFbmNvZGVyIiwiY2xvc2UiLCJoYiIsImtiIiwiVWIiLCJWYiIsIldiIiwiWGIiLCJZYiIsIlpiIiwiJGIiLCJhYyIsImJjIiwiY2MiLCJkYyIsImVjIiwiZmMiLCJnYyIsImhjIiwiaWMiLCJqYyIsImtjIiwibGMiLCJfY3VycmVudFZhbHVlIiwibWMiLCJuYyIsIm9jIiwicGMiLCJxYyIsInJjIiwic2MiLCJ0YyIsInVjIiwid2MiLCJ4YyIsInpjIiwiQWMiLCJCYyIsIkNjIiwiRGMiLCJFYyIsIkZjIiwiR2MiLCJIYyIsIkljIiwiSmMiLCJLYyIsIkxjIiwiTWMiLCJPYyIsIk5jIiwiUGMiLCJRYyIsIlRjIiwiVWMiLCJTYyIsIlZjIiwiV2MiLCJYYyIsIlljIiwiWmMiLCIkYyIsImFkIiwiYmQiLCJjZCIsImRkIiwiZWQiLCJmZCIsImdkIiwiaGQiLCJqZCIsImtkIiwibGQiLCJyZW5kZXJUb1JlYWRhYmxlU3RyZWFtIiwiUmMiLCJub25jZSIsImJvb3RzdHJhcFNjcmlwdENvbnRlbnQiLCJib290c3RyYXBTY3JpcHRzIiwiYm9vdHN0cmFwTW9kdWxlcyIsIm5hbWVzcGFjZVVSSSIsIlJlYWRhYmxlU3RyZWFtIiwiaGlnaFdhdGVyTWFyayIsImFsbFJlYWR5IiwiY2F0Y2giLCJzaWduYWwiLCJyZWFzb24iLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGVOUyIsInByZXBhcmVTdGFja1RyYWNlIiwiX3ZhbHVlVHJhY2tlciIsInNldFZhbHVlIiwic3RvcFRyYWNraW5nIiwiY2hlY2tlZCIsImFjdGl2ZUVsZW1lbnQiLCJkZWZhdWx0Q2hlY2tlZCIsIl93cmFwcGVyU3RhdGUiLCJpbml0aWFsQ2hlY2tlZCIsImluaXRpYWxWYWx1ZSIsImNvbnRyb2xsZWQiLCJvd25lckRvY3VtZW50Iiwic2VsZWN0ZWQiLCJkZWZhdWx0U2VsZWN0ZWQiLCJkaXNhYmxlZCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiaW5uZXJIVE1MIiwiTVNBcHAiLCJleGVjVW5zYWZlTG9jYWxGdW5jdGlvbiIsImxhc3RDaGlsZCIsInNldFByb3BlcnR5IiwibWVudWl0ZW0iLCJhcmVhIiwiYmFzZSIsImJyIiwiY29sIiwiZW1iZWQiLCJociIsImltZyIsImtleWdlbiIsImxpbmsiLCJtZXRhIiwicGFyYW0iLCJ0cmFjayIsIndiciIsInNyY0VsZW1lbnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsInN0YXRlTm9kZSIsImFsdGVybmF0ZSIsInJldHVybiIsImZsYWdzIiwiZGVoeWRyYXRlZCIsImNoaWxkIiwic2libGluZyIsInVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2siLCJ1bnN0YWJsZV9jYW5jZWxDYWxsYmFjayIsInVuc3RhYmxlX3Nob3VsZFlpZWxkIiwidW5zdGFibGVfcmVxdWVzdFBhaW50IiwidW5zdGFibGVfbm93IiwidW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwiLCJ1bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSIsInVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5IiwidW5zdGFibGVfTm9ybWFsUHJpb3JpdHkiLCJ1bnN0YWJsZV9Mb3dQcmlvcml0eSIsInVuc3RhYmxlX0lkbGVQcmlvcml0eSIsInBlbmRpbmdMYW5lcyIsInN1c3BlbmRlZExhbmVzIiwicGluZ2VkTGFuZXMiLCJlbnRhbmdsZWRMYW5lcyIsImVudGFuZ2xlbWVudHMiLCJ2YyIsInljIiwiZXZlbnRUaW1lcyIsInBvaW50ZXJJZCIsIm5hdGl2ZUV2ZW50IiwiYmxvY2tlZE9uIiwiZG9tRXZlbnROYW1lIiwiZXZlbnRTeXN0ZW1GbGFncyIsInRhcmdldENvbnRhaW5lcnMiLCJwcmlvcml0eSIsImlzRGVoeWRyYXRlZCIsImNvbnRhaW5lckluZm8iLCJkaXNwYXRjaEV2ZW50IiwiUmVhY3RDdXJyZW50QmF0Y2hDb25maWciLCJ0cmFuc2l0aW9uIiwibWQiLCJuZCIsIm9kIiwia2V5Q29kZSIsImNoYXJDb2RlIiwicGQiLCJxZCIsInJkIiwiX3JlYWN0TmFtZSIsIl90YXJnZXRJbnN0IiwiY3VycmVudFRhcmdldCIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZXR1cm5WYWx1ZSIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiY2FuY2VsQnViYmxlIiwicGVyc2lzdCIsImlzUGVyc2lzdGVudCIsIndkIiwieGQiLCJ5ZCIsInNkIiwiZXZlbnRQaGFzZSIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwidGltZVN0YW1wIiwiaXNUcnVzdGVkIiwidGQiLCJ1ZCIsImRldGFpbCIsInZkIiwiQWQiLCJzY3JlZW5YIiwic2NyZWVuWSIsImNsaWVudFgiLCJjbGllbnRZIiwicGFnZVgiLCJwYWdlWSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsIm1ldGFLZXkiLCJnZXRNb2RpZmllclN0YXRlIiwiemQiLCJidXR0b24iLCJidXR0b25zIiwicmVsYXRlZFRhcmdldCIsImZyb21FbGVtZW50IiwidG9FbGVtZW50IiwibW92ZW1lbnRYIiwibW92ZW1lbnRZIiwiQmQiLCJEZCIsImRhdGFUcmFuc2ZlciIsIkZkIiwiSGQiLCJhbmltYXRpb25OYW1lIiwiZWxhcHNlZFRpbWUiLCJwc2V1ZG9FbGVtZW50IiwiSWQiLCJKZCIsIkxkIiwiTWQiLCJFc2MiLCJTcGFjZWJhciIsIkxlZnQiLCJVcCIsIlJpZ2h0IiwiRG93biIsIkRlbCIsIldpbiIsIk1lbnUiLCJBcHBzIiwiU2Nyb2xsIiwiTW96UHJpbnRhYmxlS2V5IiwiTmQiLCJPZCIsIkFsdCIsIkNvbnRyb2wiLCJNZXRhIiwiU2hpZnQiLCJQZCIsIlFkIiwiZnJvbUNoYXJDb2RlIiwibG9jYWxlIiwid2hpY2giLCJSZCIsIlRkIiwicHJlc3N1cmUiLCJ0YW5nZW50aWFsUHJlc3N1cmUiLCJ0aWx0WCIsInRpbHRZIiwidHdpc3QiLCJwb2ludGVyVHlwZSIsImlzUHJpbWFyeSIsIlZkIiwidG91Y2hlcyIsInRhcmdldFRvdWNoZXMiLCJjaGFuZ2VkVG91Y2hlcyIsIlhkIiwiWWQiLCJkZWx0YVgiLCJ3aGVlbERlbHRhWCIsImRlbHRhWSIsIndoZWVsRGVsdGFZIiwid2hlZWxEZWx0YSIsImRlbHRhWiIsImRlbHRhTW9kZSIsIlpkIiwiJGQiLCJhZSIsImJlIiwiZG9jdW1lbnRNb2RlIiwiY2UiLCJkZSIsImVlIiwiZmUiLCJnZSIsImhlIiwibGUiLCJjb2xvciIsImRhdGUiLCJkYXRldGltZSIsImVtYWlsIiwibW9udGgiLCJwYXNzd29yZCIsInRlbCIsIndlZWsiLCJtZSIsIm5lIiwib2UiLCJsaXN0ZW5lcnMiLCJwZSIsInFlIiwicmUiLCJzZSIsInRlIiwidWUiLCJ2ZSIsIndlIiwieGUiLCJ5ZSIsInplIiwib25pbnB1dCIsIkFlIiwiZGV0YWNoRXZlbnQiLCJCZSIsIkNlIiwiYXR0YWNoRXZlbnQiLCJEZSIsIkVlIiwiRmUiLCJIZSIsIkllIiwiSmUiLCJLZSIsIkxlIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJNZSIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudFdpbmRvdyIsIk5lIiwiY29udGVudEVkaXRhYmxlIiwiT2UiLCJmb2N1c2VkRWxlbSIsInNlbGVjdGlvblJhbmdlIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJkZWZhdWx0VmlldyIsInJhbmdlQ291bnQiLCJhbmNob3JOb2RlIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNOb2RlIiwiZm9jdXNPZmZzZXQiLCJzZXRTdGFydCIsInNldEVuZCIsImZvY3VzIiwiUGUiLCJRZSIsIlJlIiwiU2UiLCJUZSIsIlVlIiwiVmUiLCJXZSIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImFuaW1hdGlvbnN0YXJ0IiwidHJhbnNpdGlvbmVuZCIsIlhlIiwiWWUiLCJaZSIsImFuaW1hdGlvbiIsIiRlIiwiYWYiLCJiZiIsImNmIiwiZGYiLCJlZiIsImZmIiwiZ2YiLCJoZiIsImxmIiwibWYiLCJuZiIsImxpc3RlbmVyIiwib2YiLCJwZiIsInFmIiwicmYiLCJzZiIsImNhcHR1cmUiLCJwYXNzaXZlIiwidGYiLCJ1ZiIsInBhcmVudFdpbmRvdyIsInZmIiwid2YiLCJqZSIsImNoYXIiLCJrZSIsInVuc2hpZnQiLCJ4ZiIsInlmIiwiemYiLCJBZiIsIkJmIiwiQ2YiLCJEZiIsIkVmIiwiRmYiLCJHZiIsIkhmIiwiSmYiLCJxdWV1ZU1pY3JvdGFzayIsIklmIiwiS2YiLCJMZiIsIk1mIiwiTmYiLCJPZiIsIlBmIiwiUWYiLCJSZiIsIlNmIiwiVGYiLCJVZiIsIlZmIiwiV2YiLCJYZiIsIllmIiwiX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dCIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0IiwiWmYiLCIkZiIsImFnIiwiYmciLCJjZyIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0IiwiZGciLCJlZyIsImZnIiwiZ2ciLCJoZyIsImpnIiwia2ciLCJsZyIsIm1nIiwibmciLCJvZyIsInBnIiwicWciLCJyZyIsInNnIiwidGciLCJ1ZyIsInZnIiwid2ciLCJ4ZyIsInlnIiwiemciLCJBZyIsIkJnIiwiZGVsZXRpb25zIiwiQ2ciLCJwZW5kaW5nUHJvcHMiLCJyZXRyeUxhbmUiLCJEZyIsIm1vZGUiLCJFZyIsIkZnIiwiR2ciLCJtZW1vaXplZFByb3BzIiwiSGciLCJJZyIsIkpnIiwiS2ciLCJMZyIsIk1nIiwiTmciLCJPZyIsIlBnIiwiUWciLCJSZyIsIlNnIiwiY2hpbGRMYW5lcyIsIlRnIiwiZGVwZW5kZW5jaWVzIiwiZmlyc3RDb250ZXh0IiwibGFuZXMiLCJVZyIsIlZnIiwibWVtb2l6ZWRWYWx1ZSIsIldnIiwiWGciLCJZZyIsImludGVybGVhdmVkIiwiWmciLCIkZyIsImFoIiwidXBkYXRlUXVldWUiLCJiYXNlU3RhdGUiLCJmaXJzdEJhc2VVcGRhdGUiLCJsYXN0QmFzZVVwZGF0ZSIsInNoYXJlZCIsInBlbmRpbmciLCJlZmZlY3RzIiwiYmgiLCJldmVudFRpbWUiLCJsYW5lIiwicGF5bG9hZCIsImRoIiwiZWgiLCJmaCIsImdoIiwiaGgiLCJpaCIsImpoIiwiQ29tcG9uZW50IiwicmVmcyIsImtoIiwibmgiLCJsaCIsIm1oIiwib2giLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsInBoIiwicWgiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJyaCIsImNvbXBvbmVudERpZE1vdW50Iiwic2giLCJfb3duZXIiLCJfc3RyaW5nUmVmIiwidWgiLCJ2aCIsIndoIiwieGgiLCJ5aCIsImltcGxlbWVudGF0aW9uIiwiemgiLCJBaCIsIkJoIiwiQ2giLCJEaCIsIkVoIiwiRmgiLCJHaCIsIkhoIiwiSWgiLCJ0YWdOYW1lIiwiSmgiLCJLaCIsIkxoIiwiTWgiLCJyZXZlYWxPcmRlciIsIk5oIiwiT2giLCJfd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeSIsIlBoIiwiUWgiLCJSaCIsIlNoIiwiVGgiLCJVaCIsIlZoIiwiV2giLCJYaCIsIlloIiwiWmgiLCIkaCIsImFpIiwiYmkiLCJjaSIsImJhc2VRdWV1ZSIsImRpIiwiZWkiLCJmaSIsImxhc3RSZW5kZXJlZFJlZHVjZXIiLCJoYXNFYWdlclN0YXRlIiwiZWFnZXJTdGF0ZSIsImxhc3RSZW5kZXJlZFN0YXRlIiwiZ2kiLCJoaSIsImlpIiwiamkiLCJraSIsImdldFNuYXBzaG90IiwibGkiLCJtaSIsIm5pIiwibGFzdEVmZmVjdCIsInN0b3JlcyIsIm9pIiwicGkiLCJxaSIsInJpIiwiZGVwcyIsInNpIiwidGkiLCJ1aSIsInZpIiwid2kiLCJ4aSIsInlpIiwiemkiLCJBaSIsIkJpIiwiQ2kiLCJEaSIsIkVpIiwiRmkiLCJHaSIsIkhpIiwiSWkiLCJKaSIsInVuc3RhYmxlX2lzTmV3UmVjb25jaWxlciIsIktpIiwiZGlnZXN0IiwiTGkiLCJNaSIsIk5pIiwiT2kiLCJQaSIsIlFpIiwiUmkiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJjb21wb25lbnREaWRDYXRjaCIsIlNpIiwiY29tcG9uZW50U3RhY2siLCJUaSIsInBpbmdDYWNoZSIsIlVpIiwiVmkiLCJXaSIsIlhpIiwiUmVhY3RDdXJyZW50T3duZXIiLCJZaSIsIlppIiwiJGkiLCJhaiIsImJqIiwiY29tcGFyZSIsImNqIiwiZGoiLCJlaiIsImJhc2VMYW5lcyIsImNhY2hlUG9vbCIsInRyYW5zaXRpb25zIiwiZmoiLCJnaiIsImhqIiwiaWoiLCJqaiIsIlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlIiwiY29tcG9uZW50V2lsbFVwZGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImtqIiwibGoiLCJwZW5kaW5nQ29udGV4dCIsIm1qIiwiQWoiLCJCaiIsIkNqIiwiRGoiLCJuaiIsIm9qIiwicGoiLCJxaiIsInJqIiwidGoiLCJkYXRhc2V0IiwiZGdzdCIsInVqIiwidmoiLCJfcmVhY3RSZXRyeSIsInNqIiwic3VidHJlZUZsYWdzIiwid2oiLCJ4aiIsImlzQmFja3dhcmRzIiwicmVuZGVyaW5nIiwicmVuZGVyaW5nU3RhcnRUaW1lIiwidGFpbE1vZGUiLCJ5aiIsIkVqIiwiRmoiLCJHaiIsIndhc011bHRpcGxlIiwibXVsdGlwbGUiLCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciLCJvbmNsaWNrIiwiY3JlYXRlRWxlbWVudE5TIiwiYXV0b0ZvY3VzIiwiY3JlYXRlVGV4dE5vZGUiLCJIaiIsIklqIiwiSmoiLCJLaiIsIkxqIiwiV2Vha1NldCIsIk1qIiwiTmoiLCJPaiIsIlFqIiwiUmoiLCJTaiIsIlRqIiwiVWoiLCJWaiIsIldqIiwiaW5zZXJ0QmVmb3JlIiwiX3JlYWN0Um9vdENvbnRhaW5lciIsIlhqIiwiWWoiLCJaaiIsImFrIiwib25Db21taXRGaWJlclVubW91bnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImJrIiwiY2siLCJkayIsImVrIiwiZmsiLCJpc0hpZGRlbiIsImdrIiwiaGsiLCJkaXNwbGF5IiwiaWsiLCJqayIsImtrIiwibGsiLCJfX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsInNyYyIsIldrIiwibWsiLCJuayIsIm9rIiwicGsiLCJxayIsInJrIiwic2siLCJ0ayIsInVrIiwidmsiLCJ3ayIsInhrIiwieWsiLCJ6ayIsIkFrIiwiQmsiLCJDayIsIkRrIiwiRWsiLCJjYWxsYmFja05vZGUiLCJleHBpcmF0aW9uVGltZXMiLCJleHBpcmVkTGFuZXMiLCJjYWxsYmFja1ByaW9yaXR5IiwiaWciLCJGayIsIkdrIiwiSGsiLCJJayIsIkprIiwiS2siLCJMayIsIk1rIiwiTmsiLCJPayIsIlBrIiwiZmluaXNoZWRXb3JrIiwiZmluaXNoZWRMYW5lcyIsIlFrIiwidGltZW91dEhhbmRsZSIsIlJrIiwiU2siLCJUayIsIlVrIiwiVmsiLCJtdXRhYmxlUmVhZExhbmVzIiwiUGoiLCJvbkNvbW1pdEZpYmVyUm9vdCIsIm9uUmVjb3ZlcmFibGVFcnJvciIsIlhrIiwib25Qb3N0Q29tbWl0RmliZXJSb290IiwiWWsiLCJaayIsImFsIiwicGVuZGluZ0NoaWxkcmVuIiwiYmwiLCJtdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhIiwiY2wiLCJwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzIiwiZmwiLCJnbCIsImhsIiwiaWwiLCJqbCIsInpqIiwiJGsiLCJsbCIsInJlcG9ydEVycm9yIiwibWwiLCJfaW50ZXJuYWxSb290IiwibmwiLCJvbCIsInBsIiwicWwiLCJzbCIsInJsIiwidW5tb3VudCIsInVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uIiwiZm9ybSIsInRsIiwidXNpbmdDbGllbnRFbnRyeVBvaW50IiwiRXZlbnRzIiwidWwiLCJmaW5kRmliZXJCeUhvc3RJbnN0YW5jZSIsImJ1bmRsZVR5cGUiLCJyZW5kZXJlclBhY2thZ2VOYW1lIiwidmwiLCJyZW5kZXJlckNvbmZpZyIsIm92ZXJyaWRlSG9va1N0YXRlIiwib3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoIiwib3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoIiwib3ZlcnJpZGVQcm9wcyIsIm92ZXJyaWRlUHJvcHNEZWxldGVQYXRoIiwib3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGgiLCJzZXRFcnJvckhhbmRsZXIiLCJzZXRTdXNwZW5zZUhhbmRsZXIiLCJzY2hlZHVsZVVwZGF0ZSIsImN1cnJlbnREaXNwYXRjaGVyUmVmIiwiZmluZEhvc3RJbnN0YW5jZUJ5RmliZXIiLCJmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2giLCJzY2hlZHVsZVJlZnJlc2giLCJzY2hlZHVsZVJvb3QiLCJzZXRSZWZyZXNoSGFuZGxlciIsImdldEN1cnJlbnRGaWJlciIsInJlY29uY2lsZXJWZXJzaW9uIiwiX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwid2wiLCJpc0Rpc2FibGVkIiwic3VwcG9ydHNGaWJlciIsImluamVjdCIsImNyZWF0ZVBvcnRhbCIsImRsIiwiY3JlYXRlUm9vdCIsInVuc3RhYmxlX3N0cmljdE1vZGUiLCJmaW5kRE9NTm9kZSIsImZsdXNoU3luYyIsImh5ZHJhdGUiLCJoeWRyYXRlUm9vdCIsImh5ZHJhdGVkU291cmNlcyIsIl9nZXRWZXJzaW9uIiwidW5tb3VudENvbXBvbmVudEF0Tm9kZSIsInVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzIiwidW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXIiLCJjaGVja0RDRSIsImhhc0VsZW1lbnRUeXBlIiwiaGFzTWFwIiwiaGFzU2V0IiwiaGFzQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJlcXVhbCIsIml0Iiwic2V0U3RhdGUiLCJmb3JjZVVwZGF0ZSIsIl9fc2VsZiIsIl9fc291cmNlIiwiX3N0YXR1cyIsIl9yZXN1bHQiLCJGcmFnbWVudCIsIlByb2ZpbGVyIiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwiY3JlYXRlQ29udGV4dCIsIl90aHJlYWRDb3VudCIsIlByb3ZpZGVyIiwiQ29uc3VtZXIiLCJfZ2xvYmFsTmFtZSIsImNyZWF0ZUZhY3RvcnkiLCJjcmVhdGVSZWYiLCJmb3J3YXJkUmVmIiwiaXNWYWxpZEVsZW1lbnQiLCJsYXp5IiwibWVtbyIsInN0YXJ0VHJhbnNpdGlvbiIsInVuc3RhYmxlX2FjdCIsInNvcnRJbmRleCIsInBlcmZvcm1hbmNlIiwic2V0SW1tZWRpYXRlIiwic3RhcnRUaW1lIiwiZXhwaXJhdGlvblRpbWUiLCJwcmlvcml0eUxldmVsIiwic2NoZWR1bGluZyIsImlzSW5wdXRQZW5kaW5nIiwiTWVzc2FnZUNoYW5uZWwiLCJwb3J0MiIsInBvcnQxIiwib25tZXNzYWdlIiwicG9zdE1lc3NhZ2UiLCJ1bnN0YWJsZV9Qcm9maWxpbmciLCJ1bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbiIsInVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlIiwidW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGUiLCJ1bnN0YWJsZV9uZXh0IiwidW5zdGFibGVfcGF1c2VFeGVjdXRpb24iLCJ1bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHkiLCJ1bnN0YWJsZV93cmFwQ2FsbGJhY2siLCJzdHlsZXNJbkRPTSIsImdldEluZGV4QnlJZGVudGlmaWVyIiwiaWRlbnRpZmllciIsIm1vZHVsZXNUb0RvbSIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImluZGV4QnlJZGVudGlmaWVyIiwiY3NzIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsImFkZEVsZW1lbnRTdHlsZSIsImJ5SW5kZXgiLCJhcGkiLCJkb21BUEkiLCJuZXdPYmoiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2luZGV4Iiwic2V0QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJpbnNlcnQiLCJzdHlsZUVsZW1lbnQiLCJpbnNlcnRTdHlsZUVsZW1lbnQiLCJzdHlsZVRhZ1RyYW5zZm9ybSIsInJlbW92ZVN0eWxlRWxlbWVudCIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiYWN0aXZlIiwicmFuZ2VzIiwiZ2V0UmFuZ2VBdCIsImJsdXIiLCJwdW55Y29kZSIsIm1heEludCIsInRNYXgiLCJza2V3IiwiZGFtcCIsInJlZ2V4UHVueWNvZGUiLCJyZWdleE5vbkFTQ0lJIiwicmVnZXhTZXBhcmF0b3JzIiwiZXJyb3JzIiwiYmFzZU1pbnVzVE1pbiIsInN0cmluZ0Zyb21DaGFyQ29kZSIsIlJhbmdlRXJyb3IiLCJtYXBEb21haW4iLCJwYXJ0cyIsInVjczJkZWNvZGUiLCJleHRyYSIsIm91dHB1dCIsImNvdW50ZXIiLCJ1Y3MyZW5jb2RlIiwiZGlnaXRUb0Jhc2ljIiwiZGlnaXQiLCJmbGFnIiwiYWRhcHQiLCJkZWx0YSIsIm51bVBvaW50cyIsImZpcnN0VGltZSIsImJhc2ljIiwib2xkaSIsImJhc2VNaW51c1QiLCJjb2RlUG9pbnQiLCJpbnB1dExlbmd0aCIsImJpYXMiLCJoYW5kbGVkQ1BDb3VudCIsImJhc2ljTGVuZ3RoIiwiY3VycmVudFZhbHVlIiwiaGFuZGxlZENQQ291bnRQbHVzT25lIiwicU1pbnVzVCIsInV0aWwiLCJVcmwiLCJwcm90b2NvbCIsInNsYXNoZXMiLCJhdXRoIiwicG9ydCIsImhvc3RuYW1lIiwicXVlcnkiLCJwYXRobmFtZSIsInVybFBhcnNlIiwicHJvdG9jb2xQYXR0ZXJuIiwicG9ydFBhdHRlcm4iLCJzaW1wbGVQYXRoUGF0dGVybiIsInVud2lzZSIsImF1dG9Fc2NhcGUiLCJub25Ib3N0Q2hhcnMiLCJob3N0RW5kaW5nQ2hhcnMiLCJob3N0bmFtZVBhcnRQYXR0ZXJuIiwiaG9zdG5hbWVQYXJ0U3RhcnQiLCJ1bnNhZmVQcm90b2NvbCIsImhvc3RsZXNzUHJvdG9jb2wiLCJzbGFzaGVkUHJvdG9jb2wiLCJxdWVyeXN0cmluZyIsInBhcnNlUXVlcnlTdHJpbmciLCJzbGFzaGVzRGVub3RlSG9zdCIsInF1ZXJ5SW5kZXgiLCJzcGxpdHRlciIsInVTcGxpdCIsInNpbXBsZVBhdGgiLCJsb3dlclByb3RvIiwiYXRTaWduIiwiaG9zdEVuZCIsImhlYyIsInBhcnNlSG9zdCIsImlwdjZIb3N0bmFtZSIsImhvc3RwYXJ0cyIsInBhcnQiLCJuZXdwYXJ0IiwidmFsaWRQYXJ0cyIsIm5vdEhvc3QiLCJiaXQiLCJ0b0FTQ0lJIiwiZXNjIiwicW0iLCJyZWxhdGl2ZSIsInJlc29sdmVPYmplY3QiLCJyZWwiLCJ0a2V5cyIsInRrZXkiLCJya2V5cyIsInJrZXkiLCJyZWxQYXRoIiwiaXNTb3VyY2VBYnMiLCJpc1JlbEFicyIsIm11c3RFbmRBYnMiLCJyZW1vdmVBbGxEb3RzIiwic3JjUGF0aCIsInBzeWNob3RpYyIsImlzTnVsbE9yVW5kZWZpbmVkIiwiYXV0aEluSG9zdCIsImhhc1RyYWlsaW5nU2xhc2giLCJ1cCIsImlzQWJzb2x1dGUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiYW1kTyIsImdldHRlciIsImdsb2JhbFRoaXMiLCJubWQiLCJiYXNlVVJJIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJhcnIyIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibWluTGVuIiwiX3NsaWNlZFRvQXJyYXkiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwiX3RvUHJvcGVydHlLZXkiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwic3RhdGljUHJvcHMiLCJjb25zb2xlTG9nZ2VyIiwiTG9nZ2VyIiwiY29uY3JldGVMb2dnZXIiLCJpbml0IiwibG9nZ2VyIiwiZm9yd2FyZCIsIl9sZW4yIiwiX2tleTIiLCJfbGVuMyIsIl9rZXkzIiwiX2xlbjQiLCJfa2V5NCIsImx2bCIsImRlYnVnT25seSIsIm1vZHVsZU5hbWUiLCJiYXNlTG9nZ2VyIiwiRXZlbnRFbWl0dGVyIiwib2JzZXJ2ZXJzIiwiZXZlbnRzIiwib2JzZXJ2ZXIiLCJyZWoiLCJwcm9taXNlIiwibWFrZVN0cmluZyIsImdldExhc3RPZlBhdGgiLCJFbXB0eSIsImNsZWFuS2V5IiwiY2FuTm90VHJhdmVyc2VEZWVwZXIiLCJzZXRQYXRoIiwiX2dldExhc3RPZlBhdGgiLCJnZXRQYXRoIiwiX2dldExhc3RPZlBhdGgzIiwiZ2V0UGF0aFdpdGhEZWZhdWx0cyIsImRlZmF1bHREYXRhIiwiZGVlcEV4dGVuZCIsIm92ZXJ3cml0ZSIsInJlZ2V4RXNjYXBlIiwiX2VudGl0eU1hcCIsImlzSUUxMCIsIlJlc291cmNlU3RvcmUiLCJfRXZlbnRFbWl0dGVyIiwiZGVmYXVsdE5TIiwia2V5U2VwYXJhdG9yIiwibG5nIiwic2lsZW50IiwiYWRkTmFtZXNwYWNlcyIsImVtaXQiLCJyZXNvdXJjZXMiLCJhZGRSZXNvdXJjZSIsImRlZXAiLCJwYWNrIiwiaGFzUmVzb3VyY2VCdW5kbGUiLCJyZW1vdmVOYW1lc3BhY2VzIiwiZ2V0UmVzb3VyY2UiLCJjb21wYXRpYmlsaXR5QVBJIiwicG9zdFByb2Nlc3NvciIsInByb2Nlc3NvcnMiLCJhZGRQb3N0UHJvY2Vzc29yIiwiaGFuZGxlIiwidHJhbnNsYXRvciIsInByb2Nlc3NvciIsImNoZWNrZWRMb2FkZWRGb3IiLCJUcmFuc2xhdG9yIiwic2VydmljZXMiLCJsYW5ndWFnZSIsImludGVycG9sYXRpb24iLCJyZXNvbHZlZCIsIm5zU2VwYXJhdG9yIiwibmFtZXNwYWNlcyIsImludGVycG9sYXRvciIsIm5lc3RpbmdSZWdleHAiLCJsYXN0S2V5IiwiX3RoaXMyIiwib3ZlcmxvYWRUcmFuc2xhdGlvbk9wdGlvbkhhbmRsZXIiLCJfdGhpcyRleHRyYWN0RnJvbUtleSIsImV4dHJhY3RGcm9tS2V5IiwibmFtZXNwYWNlIiwiYXBwZW5kTmFtZXNwYWNlVG9DSU1vZGUiLCJyZXNVc2VkS2V5IiwidXNlZEtleSIsInJlc0V4YWN0VXNlZEtleSIsImV4YWN0VXNlZEtleSIsInJlc1R5cGUiLCJqb2luQXJyYXlzIiwiaGFuZGxlQXNPYmplY3RJbkkxOG5Gb3JtYXQiLCJpMThuRm9ybWF0IiwiaGFuZGxlQXNPYmplY3QiLCJyZXR1cm5PYmplY3RzIiwicmV0dXJuZWRPYmplY3RIYW5kbGVyIiwicmVzVHlwZUlzQXJyYXkiLCJuZXdLZXlUb1VzZSIsImRlZXBLZXkiLCJ0cmFuc2xhdGUiLCJleHRlbmRUcmFuc2xhdGlvbiIsInVzZWREZWZhdWx0IiwibmVlZHNQbHVyYWxIYW5kbGluZyIsImhhc0RlZmF1bHRWYWx1ZSIsImRlZmF1bHRWYWx1ZVN1ZmZpeCIsInBsdXJhbFJlc29sdmVyIiwiZ2V0U3VmZml4IiwiaXNWYWxpZExvb2t1cCIsInVwZGF0ZU1pc3NpbmciLCJsbmdzIiwiZmFsbGJhY2tMbmdzIiwibGFuZ3VhZ2VVdGlscyIsImdldEZhbGxiYWNrQ29kZXMiLCJmYWxsYmFja0xuZyIsInNhdmVNaXNzaW5nVG8iLCJ0b1Jlc29sdmVIaWVyYXJjaHkiLCJzZW5kIiwiZmFsbGJhY2tWYWx1ZSIsIm1pc3NpbmdLZXlIYW5kbGVyIiwiYmFja2VuZENvbm5lY3RvciIsInNhdmVNaXNzaW5nIiwic2F2ZU1pc3NpbmdQbHVyYWxzIiwiZ2V0U3VmZml4ZXMiLCJzdWZmaXgiLCJhcHBlbmROYW1lc3BhY2VUb01pc3NpbmdLZXkiLCJwYXJzZU1pc3NpbmdLZXlIYW5kbGVyIiwiX3RoaXMzIiwidXNlZExuZyIsInVzZWROUyIsInNraXBJbnRlcnBvbGF0aW9uIiwibmVzdEJlZiIsInNraXBPblZhcmlhYmxlcyIsImRlZmF1bHRWYXJpYWJsZXMiLCJuZXN0IiwicG9zdFByb2Nlc3MiLCJwb3N0UHJvY2Vzc29yTmFtZXMiLCJhcHBseVBvc3RQcm9jZXNzb3IiLCJwb3N0UHJvY2Vzc1Bhc3NSZXNvbHZlZCIsImkxOG5SZXNvbHZlZCIsImZvdW5kIiwiX3RoaXM0IiwiZXh0cmFjdGVkIiwiZmFsbGJhY2tOUyIsIm5lZWRzQ29udGV4dEhhbmRsaW5nIiwidXRpbHMiLCJoYXNMb2FkZWROYW1lc3BhY2UiLCJwbHVyYWxTdWZmaXgiLCJwb3NzaWJsZUtleSIsImZpbmFsS2V5IiwiZmluYWxLZXlzIiwiYWRkTG9va3VwS2V5cyIsImNvbnRleHRTZXBhcmF0b3IiLCJyZXR1cm5OdWxsIiwicmV0dXJuRW1wdHlTdHJpbmciLCJyZXNvdXJjZVN0b3JlIiwib3B0aW9uIiwiTGFuZ3VhZ2VVdGlsIiwid2hpdGVsaXN0Iiwic3VwcG9ydGVkTG5ncyIsImZvcm1hdExhbmd1YWdlQ29kZSIsInNwZWNpYWxDYXNlcyIsImxvd2VyQ2FzZUxuZyIsImNsZWFuQ29kZSIsImRlcHJlY2F0ZSIsImlzU3VwcG9ydGVkQ29kZSIsImxvYWQiLCJub25FeHBsaWNpdFN1cHBvcnRlZExuZ3MiLCJnZXRMYW5ndWFnZVBhcnRGcm9tQ29kZSIsImNsZWFuZWRMbmciLCJsbmdPbmx5Iiwic3VwcG9ydGVkTG5nIiwiZmFsbGJhY2tzIiwiZ2V0U2NyaXB0UGFydEZyb21Db2RlIiwiZmFsbGJhY2tDb2RlIiwiZmFsbGJhY2tDb2RlcyIsImFkZENvZGUiLCJzZXRzIiwibnIiLCJfcnVsZXNQbHVyYWxzVHlwZXMiLCJQbHVyYWxSZXNvbHZlciIsInJ1bGVzIiwibnVtYmVycyIsInBsdXJhbHMiLCJydWxlIiwiZ2V0UnVsZSIsIm5vQWJzIiwiYWJzIiwic2ltcGxpZnlQbHVyYWxTdWZmaXgiLCJyZXR1cm5TdWZmaXgiLCJwcmVwZW5kIiwiY29tcGF0aWJpbGl0eUpTT04iLCJJbnRlcnBvbGF0b3IiLCJpT3B0cyIsInVzZVJhd1ZhbHVlVG9Fc2NhcGUiLCJwcmVmaXhFc2NhcGVkIiwic3VmZml4RXNjYXBlZCIsImZvcm1hdFNlcGFyYXRvciIsInVuZXNjYXBlUHJlZml4IiwidW5lc2NhcGVTdWZmaXgiLCJuZXN0aW5nUHJlZml4IiwibmVzdGluZ1ByZWZpeEVzY2FwZWQiLCJuZXN0aW5nU3VmZml4IiwibmVzdGluZ1N1ZmZpeEVzY2FwZWQiLCJuZXN0aW5nT3B0aW9uc1NlcGFyYXRvciIsIm1heFJlcGxhY2VzIiwiYWx3YXlzRm9ybWF0IiwicmVzZXRSZWdFeHAiLCJyZWdleHBTdHIiLCJyZWdleHBVbmVzY2FwZVN0ciIsInJlZ2V4cFVuZXNjYXBlIiwibmVzdGluZ1JlZ2V4cFN0ciIsInJlcGxhY2VzIiwicmVnZXhTYWZlIiwiaGFuZGxlRm9ybWF0IiwibWlzc2luZ0ludGVycG9sYXRpb25IYW5kbGVyIiwic2FmZVZhbHVlIiwidG9kbyIsImNsb25lZE9wdGlvbnMiLCJoYW5kbGVIYXNPcHRpb25zIiwiaW5oZXJpdGVkT3B0aW9ucyIsIm9wdGlvbnNTdHJpbmciLCJmb3JtYXR0ZXJzIiwiZG9SZWR1Y2UiLCJDb25uZWN0b3IiLCJiYWNrZW5kIiwic3RvcmUiLCJsYW5ndWFnZXMiLCJ0b0xvYWQiLCJ0b0xvYWRMYW5ndWFnZXMiLCJ0b0xvYWROYW1lc3BhY2VzIiwiaGFzQWxsTmFtZXNwYWNlcyIsInJlbG9hZCIsImFkZFJlc291cmNlQnVuZGxlIiwiX2dldExhc3RPZlBhdGgyIiwicHVzaFBhdGgiLCJ3aGF0IiwiZmNOYW1lIiwidHJpZWQiLCJyZWFkIiwicXVldWVMb2FkIiwibG9hZE9uZSIsInByZXBhcmVMb2FkaW5nIiwiX3RoaXM1IiwiaXNVcGRhdGUiLCJ0cmFuc2Zvcm1PcHRpb25zIiwibm9uRXhwbGljaXRXaGl0ZWxpc3QiLCJJMThuIiwiZXh0ZXJuYWwiLCJpc0luaXRpYWxpemVkIiwiaXNDbG9uZSIsImluaXRJbW1lZGlhdGUiLCJjcmVhdGVDbGFzc09uRGVtYW5kIiwiQ2xhc3NPck9iamVjdCIsInByZWxvYWQiLCJwbHVyYWxTZXBhcmF0b3IiLCJwYXJ0aWFsQnVuZGxlZExhbmd1YWdlcyIsInREZXNjcmlwdGlvbiIsIl9mb3JtYXQiLCJsdSIsIm9uIiwibGFuZ3VhZ2VEZXRlY3RvciIsImRldGVjdGlvbiIsIl90aGlzMiRzdG9yZSIsIl90aGlzMiRzdG9yZTIiLCJkZWZlcnJlZCIsImZpbmlzaCIsImNoYW5nZUxhbmd1YWdlIiwidXNlZENhbGxiYWNrIiwiaXNMYW5ndWFnZUNoYW5naW5nVG8iLCJzZXRMbmciLCJnZXRCZXN0TWF0Y2hGcm9tQ29kZXMiLCJjYWNoZVVzZXJMYW5ndWFnZSIsImxvYWRSZXNvdXJjZXMiLCJhc3luYyIsImRldGVjdCIsImZpeGVkVCIsIm9wdHMiLCJfdGhpcyR0cmFuc2xhdG9yIiwiX3RoaXMkdHJhbnNsYXRvcjIiLCJleGlzdHMiLCJfdGhpczYiLCJsYXN0TG5nIiwibG9hZE5vdFBlbmRpbmciLCJsb2FkU3RhdGUiLCJwcmVjaGVjayIsInByZVJlc3VsdCIsIl90aGlzNyIsInByZWxvYWRlZCIsIm5ld0xuZ3MiLCJfdGhpczgiLCJtZXJnZWRPcHRpb25zIiwiaTE4bkluc3RhbmNlIiwiZGVmYXVsdE9wdGlvbnMiLCJiaW5kSTE4biIsImJpbmRJMThuU3RvcmUiLCJ0cmFuc0VtcHR5Tm9kZVZhbHVlIiwidHJhbnNTdXBwb3J0QmFzaWNIdG1sTm9kZXMiLCJ0cmFuc1dyYXBUZXh0Tm9kZXMiLCJ0cmFuc0tlZXBCYXNpY0h0bWxOb2Rlc0ZvciIsInVzZVN1c3BlbnNlIiwiSTE4bkNvbnRleHQiLCJSZXBvcnROYW1lc3BhY2VzIiwidXNlZE5hbWVzcGFjZXMiLCJUaGVtZSIsIlRleHRTaXplcyIsIkNvbnRyb2xTaXplcyIsIlZjcyIsIkxhbmciLCJGZWVkYmFja1R5cGUiLCJTdWJzY3JpYmVUeXBlIiwiaW5pdFJlYWN0STE4bmV4dCIsInNldERlZmF1bHRzIiwicmVhY3QiLCJzZXRJMThuIiwiRW4iLCJydSIsIm5vcm1hbGl6ZVBhdGgiLCJub3JtYWxpemVIYXNoIiwiaXNBY3RpdmVJdGVtIiwicm91dGVyIiwic2luZ2xlUGFnZSIsImlzRXh0ZXJuYWxIcmVmIiwiZ2V0U3RhdGVLZXkiLCJzaG93TWluaVRvYyIsIndpZGVGb3JtYXQiLCJjYWxsU2FmZSIsImdldEhlYWRlclRhZyIsInJlc3VsdEVsIiwiaXNIZWFkZXJUYWciLCJjcmVhdGVFbGVtZW50RnJvbUhUTUwiLCJodG1sU3RyaW5nIiwiZGl2IiwiZ2V0UmFuZG9tS2V5Iiwic3R5bGVzIiwieG1sbnMiLCJ2aWV3Qm94Iiwic3Ryb2tlIiwibGFzdEluc2VydGVkRWxlbWVudCIsIl9sYXN0RWxlbWVudEluc2VydGVkQnlTdHlsZUxvYWRlciIsInRoaW4iLCJzbG93Iiwic3VwZXIiLCJjb250ZW50UmVmIiwic2Nyb2xsVG9JdGVtIiwiaXRlbUVsZW1lbnQiLCJpdGVtSGVpZ2h0Iiwib2Zmc2V0SGVpZ2h0IiwiaXRlbU9mZnNldCIsInNjcm9sbGFibGVQYXJlbnQiLCJvZmZzZXRQYXJlbnQiLCJzY3JvbGxhYmxlSGVpZ2h0Iiwic2Nyb2xsYWJsZU9mZnNldCIsImhhbmRsZUNsaWNrIiwiZXhwYW5kZWQiLCJ0b2dnbGVJdGVtIiwiZXhwYW5kYWJsZSIsImlzRXh0ZXJuYWwiLCJsaW5rQXR0cmlidXRlcyIsIkhUTUwiLCJfY29uc29sZSIsImFscmVhZHlXYXJuZWQiLCJ3YXJuT25jZSIsImxvYWROYW1lc3BhY2VzIiwiaTE4biIsImluaXRpYWxpemVkIiwib2ZmIiwidXNlVHJhbnNsYXRpb24iLCJpMThuRnJvbVByb3BzIiwiX3JlZiIsImkxOG5Gcm9tQ29udGV4dCIsImRlZmF1bHROU0Zyb21Db250ZXh0IiwicmVwb3J0TmFtZXNwYWNlcyIsIm5vdFJlYWR5VCIsInJldE5vdFJlYWR5IiwicmVhZHkiLCJpMThuT3B0aW9ucyIsImtleVByZWZpeCIsImFkZFVzZWROYW1lc3BhY2VzIiwiaW5pdGlhbGl6ZWRTdG9yZU9uY2UiLCJnZXRUIiwiZ2V0Rml4ZWRUIiwibnNNb2RlIiwiX3VzZVN0YXRlMiIsInNldFQiLCJib3VuZFJlc2V0IiwiaXNJbml0aWFsIiwid2l0aFRyYW5zbGF0aW9uIiwiV3JhcHBlZENvbXBvbmVudCIsIkkxOG5leHRXaXRoVHJhbnNsYXRpb24iLCJmb3J3YXJkZWRSZWYiLCJfdXNlVHJhbnNsYXRpb24yIiwicGFzc0Rvd25Qcm9wcyIsInRSZWFkeSIsIndpdGhSZWYiLCJOQU1FU1BBQ0UiLCJtb2RzQ2xhc3NOYW1lIiwiaXNPZlR5cGUiLCJjb21wb25lbnQiLCJfX3Jlc3QiLCJldmVudEJyb2tlciIsInN1YnNjcmlwdGlvbnMiLCJjb21wb25lbnRQcmVmaXgiLCJzdWJzY3JpYmUiLCJzdWJzY3JpcHRpb24iLCJ1bnN1YnNjcmliZSIsInB1Ymxpc2giLCJjb21wb25lbnRJZCIsInJlc3REYXRhIiwid2l0aEV2ZW50UHVibGlzaGVyIiwiZXZlbnRCcm9rZXJEYXRhIiwiQnV0dG9uSWNvbiIsInNpZGUiLCJhMTF5SGlkZGVuU3ZnUHJvcHMiLCJpc1Nwcml0ZURhdGEiLCJpc1N0cmluZ1N2Z0RhdGEiLCJnZXRTdHJpbmdWaWV3Qm94IiwiaXNDb21wb25lbnRTdmdEYXRhIiwiaXNTdmdyRGF0YSIsInhtbG5zWGxpbmsiLCJwcmVwYXJlZERhdGEiLCJwcmVwYXJlU3RyaW5nRGF0YSIsIkljb25Db21wb25lbnQiLCJuZXh0VW5pcXVlSWQiLCJpc0ljb24iLCJCdXR0b25XaXRoSGFuZGxlcnMiLCJwaW4iLCJsb2FkaW5nIiwidGFiSW5kZXgiLCJleHRyYVByb3BzIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Gb2N1cyIsIm9uQmx1ciIsImNvbW1vblByb3BzIiwib25DbGlja0NhcHR1cmUiLCJldmVudElkIiwiZG9tRXZlbnQiLCJsaW5rUHJvcHMiLCJwcmVwYXJlQ2hpbGRyZW4iLCJJY29uIiwiaXNCdXR0b25JY29uQ29tcG9uZW50IiwiaXRlbXMiLCJvbmx5SXRlbSIsImxlZnRJY29uIiwicmlnaHRJY29uIiwiaXNJY29uRWxlbWVudCIsImlzQnV0dG9uSWNvbkVsZW1lbnQiLCJfaW5oZXJpdHNMb29zZSIsInJlcGxhY2VDbGFzc05hbWUiLCJvcmlnQ2xhc3MiLCJjbGFzc1RvUmVtb3ZlIiwiZm9yY2VSZWZsb3ciLCJVTk1PVU5URUQiLCJFWElURUQiLCJFTlRFUklORyIsIkVOVEVSRUQiLCJFWElUSU5HIiwiVHJhbnNpdGlvbiIsIl9SZWFjdCRDb21wb25lbnQiLCJpbml0aWFsU3RhdHVzIiwiYXBwZWFyIiwiaXNNb3VudGluZyIsImVudGVyIiwiYXBwZWFyU3RhdHVzIiwiaW4iLCJ1bm1vdW50T25FeGl0IiwibW91bnRPbkVudGVyIiwibmV4dENhbGxiYWNrIiwicHJldlN0YXRlIiwiX3Byb3RvIiwidXBkYXRlU3RhdHVzIiwicHJldlByb3BzIiwibmV4dFN0YXR1cyIsImNhbmNlbE5leHRDYWxsYmFjayIsImdldFRpbWVvdXRzIiwiZXhpdCIsInRpbWVvdXQiLCJtb3VudGluZyIsIm5vZGVSZWYiLCJwZXJmb3JtRW50ZXIiLCJwZXJmb3JtRXhpdCIsImFwcGVhcmluZyIsIl9yZWYyIiwibWF5YmVOb2RlIiwibWF5YmVBcHBlYXJpbmciLCJ0aW1lb3V0cyIsImVudGVyVGltZW91dCIsIm9uRW50ZXIiLCJzYWZlU2V0U3RhdGUiLCJvbkVudGVyaW5nIiwib25UcmFuc2l0aW9uRW5kIiwib25FbnRlcmVkIiwib25FeGl0Iiwib25FeGl0aW5nIiwib25FeGl0ZWQiLCJuZXh0U3RhdGUiLCJzZXROZXh0Q2FsbGJhY2siLCJkb2VzTm90SGF2ZVRpbWVvdXRPckxpc3RlbmVyIiwiYWRkRW5kTGlzdGVuZXIiLCJfcmVmMyIsIm1heWJlTmV4dENhbGxiYWNrIiwiY2hpbGRQcm9wcyIsIlRyYW5zaXRpb25Hcm91cENvbnRleHQiLCJwcm9wVHlwZXMiLCJyZW1vdmVDbGFzcyIsImNsYXNzZXMiLCJiYXNlVmFsIiwiQ1NTVHJhbnNpdGlvbiIsImFwcGxpZWRDbGFzc2VzIiwiX3RoaXMkcmVzb2x2ZUFyZ3VtZW50IiwicmVzb2x2ZUFyZ3VtZW50cyIsInJlbW92ZUNsYXNzZXMiLCJhZGRDbGFzcyIsIl90aGlzJHJlc29sdmVBcmd1bWVudDIiLCJfdGhpcyRyZXNvbHZlQXJndW1lbnQzIiwiZ2V0Q2xhc3NOYW1lcyIsImNsYXNzTmFtZXMiLCJpc1N0cmluZ0NsYXNzTmFtZXMiLCJiYXNlQ2xhc3NOYW1lIiwiYWN0aXZlQ2xhc3NOYW1lIiwiZG9uZUNsYXNzTmFtZSIsInBoYXNlIiwiaGFzQ2xhc3MiLCJfYWRkQ2xhc3MiLCJfdGhpcyRhcHBsaWVkQ2xhc3NlcyQiLCJnZXRDU1NUcmFuc2l0aW9uQ2xhc3NOYW1lcyIsImFwcGVhckFjdGl2ZSIsImFwcGVhckRvbmUiLCJlbnRlckFjdGl2ZSIsImVudGVyRG9uZSIsImV4aXRBY3RpdmUiLCJleGl0RG9uZSIsIlBvcnRhbENvbnRleHQiLCJQb3J0YWwiLCJjb250YWluZXIiLCJkaXNhYmxlUG9ydGFsIiwiZGVmYXVsdENvbnRhaW5lciIsInVzZVBvcnRhbENvbnRhaW5lciIsImNvbnRhaW5lck5vZGUiLCJsYXllck1hbmFnZXIiLCJoYW5kbGVEb2N1bWVudEtleURvd24iLCJfYiIsIl9jIiwidG9wTGF5ZXIiLCJnZXRUb3BMYXllciIsImRpc2FibGVFc2NhcGVLZXlEb3duIiwib25Fc2NhcGVLZXlEb3duIiwib25DbG9zZSIsIm9uRW50ZXJLZXlEb3duIiwiaGFuZGxlRG9jdW1lbnRDbGljayIsIm1vdXNlRG93blRhcmdldCIsIm1vdXNlRG93bkxheWVyVGFyZ2V0IiwiZGlzYWJsZU91dHNpZGVDbGljayIsImlzT3V0c2lkZUNsaWNrIiwib25PdXRzaWRlQ2xpY2siLCJoYW5kbGVEb2N1bWVudE1vdXNlRG93biIsImFkZExpc3RlbmVycyIsIm5vdGlmeUxheWVyc0NoYW5nZSIsInJlbW92ZUxpc3RlbmVycyIsImdldExheWVyc0NvdW50IiwibGF5ZXJzQ291bnQiLCJjb250ZW50RWxlbWVudHMiLCJjb250ZW50UmVmcyIsImdldFdpbmRvdyIsImlzSFRNTEVsZW1lbnQiLCJTaGFkb3dSb290IiwiZ2V0VUFTdHJpbmciLCJ1YURhdGEiLCJ1c2VyQWdlbnREYXRhIiwiYnJhbmRzIiwiYnJhbmQiLCJpc0xheW91dFZpZXdwb3J0IiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlWCIsInNjYWxlWSIsIm9mZnNldFdpZHRoIiwidmlzdWFsVmlld3BvcnQiLCJhZGRWaXN1YWxPZmZzZXRzIiwiYm90dG9tIiwiZ2V0V2luZG93U2Nyb2xsIiwid2luIiwiZ2V0Tm9kZU5hbWUiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImlzU2Nyb2xsUGFyZW50IiwiX2dldENvbXB1dGVkU3R5bGUiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJnZXRDb21wb3NpdGVSZWN0IiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJpc0ZpeGVkIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRQYXJlbnRJc1NjYWxlZCIsInJlY3QiLCJpc0VsZW1lbnRTY2FsZWQiLCJzY3JvbGwiLCJvZmZzZXRzIiwiZ2V0TGF5b3V0UmVjdCIsImdldFBhcmVudE5vZGUiLCJhc3NpZ25lZFNsb3QiLCJnZXRTY3JvbGxQYXJlbnQiLCJsaXN0U2Nyb2xsUGFyZW50cyIsIl9lbGVtZW50JG93bmVyRG9jdW1lbiIsInNjcm9sbFBhcmVudCIsImlzQm9keSIsInVwZGF0ZWRMaXN0IiwiaXNUYWJsZUVsZW1lbnQiLCJnZXRUcnVlT2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50IiwiaXNGaXJlZm94IiwiY3VycmVudE5vZGUiLCJwZXJzcGVjdGl2ZSIsImNvbnRhaW4iLCJ3aWxsQ2hhbmdlIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiYXV0byIsImJhc2VQbGFjZW1lbnRzIiwidmlld3BvcnQiLCJwb3BwZXIiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwicGxhY2VtZW50IiwibW9kaWZpZXJQaGFzZXMiLCJ2aXNpdGVkIiwibW9kaWZpZXIiLCJyZXF1aXJlcyIsInJlcXVpcmVzSWZFeGlzdHMiLCJkZXAiLCJkZXBNb2RpZmllciIsIkRFRkFVTFRfT1BUSU9OUyIsInN0cmF0ZWd5IiwiYXJlVmFsaWRFbGVtZW50cyIsInBvcHBlckdlbmVyYXRvciIsImdlbmVyYXRvck9wdGlvbnMiLCJfZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZiIsImRlZmF1bHRNb2RpZmllcnMiLCJfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyIiwib3JkZXJlZE1vZGlmaWVycyIsIm1vZGlmaWVyc0RhdGEiLCJlZmZlY3RDbGVhbnVwRm5zIiwiaXNEZXN0cm95ZWQiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJzY3JvbGxQYXJlbnRzIiwiY29udGV4dEVsZW1lbnQiLCJtZXJnZWQiLCJvcmRlck1vZGlmaWVycyIsImV4aXN0aW5nIiwiZW5hYmxlZCIsIl9yZWYkb3B0aW9ucyIsImVmZmVjdCIsImNsZWFudXBGbiIsIl9zdGF0ZSRlbGVtZW50cyIsInJlY3RzIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllIiwiX3N0YXRlJG9yZGVyZWRNb2RpZmllMiIsIl9vcHRpb25zIiwib25GaXJzdFVwZGF0ZSIsIl9vcHRpb25zJHNjcm9sbCIsIl9vcHRpb25zJHJlc2l6ZSIsInJlc2l6ZSIsImdldEJhc2VQbGFjZW1lbnQiLCJnZXRWYXJpYXRpb24iLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJjb21wdXRlT2Zmc2V0cyIsImJhc2VQbGFjZW1lbnQiLCJ2YXJpYXRpb24iLCJjb21tb25YIiwiY29tbW9uWSIsIm1haW5BeGlzIiwidW5zZXRTaWRlcyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsImdwdUFjY2VsZXJhdGlvbiIsImFkYXB0aXZlIiwicm91bmRPZmZzZXRzIiwiX29mZnNldHMkeCIsIl9vZmZzZXRzJHkiLCJoYXNYIiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwiX09iamVjdCRhc3NpZ24iLCJjb21tb25TdHlsZXMiLCJfcmVmNCIsImRwciIsImRldmljZVBpeGVsUmF0aW8iLCJyb3VuZE9mZnNldHNCeURQUiIsIl9yZWY1IiwiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwiX29wdGlvbnMkYWRhcHRpdmUiLCJfb3B0aW9ucyRyb3VuZE9mZnNldHMiLCJwb3BwZXJPZmZzZXRzIiwiYXJyb3ciLCJfb3B0aW9ucyRvZmZzZXQiLCJpbnZlcnREaXN0YW5jZSIsInNraWRkaW5nIiwiZGlzdGFuY2UiLCJkaXN0YW5jZUFuZFNraWRkaW5nVG9YWSIsIl9kYXRhJHN0YXRlJHBsYWNlbWVudCIsImdldE9wcG9zaXRlUGxhY2VtZW50IiwibWF0Y2hlZCIsImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50Iiwicm9vdE5vZGUiLCJpc1NhbWVOb2RlIiwicmVjdFRvQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJodG1sIiwiY2xpZW50SGVpZ2h0IiwibGF5b3V0Vmlld3BvcnQiLCJnZXRWaWV3cG9ydFJlY3QiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsIndpblNjcm9sbCIsInNjcm9sbFdpZHRoIiwic2Nyb2xsSGVpZ2h0IiwiZGlyZWN0aW9uIiwiZ2V0RG9jdW1lbnRSZWN0IiwibWVyZ2VQYWRkaW5nT2JqZWN0IiwicGFkZGluZ09iamVjdCIsImV4cGFuZFRvSGFzaE1hcCIsImhhc2hNYXAiLCJkZXRlY3RPdmVyZmxvdyIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJHN0cmF0ZWd5IiwiX29wdGlvbnMkYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJlbGVtZW50Q29udGV4dCIsIl9vcHRpb25zJGFsdEJvdW5kYXJ5IiwiYWx0Qm91bmRhcnkiLCJfb3B0aW9ucyRwYWRkaW5nIiwicGFkZGluZyIsImFsdENvbnRleHQiLCJjbGlwcGluZ0NsaWVudFJlY3QiLCJtYWluQ2xpcHBpbmdQYXJlbnRzIiwiY2xpcHBpbmdQYXJlbnRzIiwiY2xpcHBlckVsZW1lbnQiLCJnZXRDbGlwcGluZ1BhcmVudHMiLCJmaXJzdENsaXBwaW5nUGFyZW50IiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldENsaXBwaW5nUmVjdCIsInJlZmVyZW5jZUNsaWVudFJlY3QiLCJwb3BwZXJDbGllbnRSZWN0IiwiZWxlbWVudENsaWVudFJlY3QiLCJvdmVyZmxvd09mZnNldHMiLCJvZmZzZXREYXRhIiwiYXhpcyIsIl9za2lwIiwiX29wdGlvbnMkbWFpbkF4aXMiLCJjaGVja01haW5BeGlzIiwiX29wdGlvbnMkYWx0QXhpcyIsImFsdEF4aXMiLCJjaGVja0FsdEF4aXMiLCJzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMiLCJmYWxsYmFja1BsYWNlbWVudHMiLCJfb3B0aW9ucyRmbGlwVmFyaWF0aW8iLCJmbGlwVmFyaWF0aW9ucyIsImFsbG93ZWRBdXRvUGxhY2VtZW50cyIsInByZWZlcnJlZFBsYWNlbWVudCIsIm9wcG9zaXRlUGxhY2VtZW50IiwiZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMiLCJwbGFjZW1lbnRzIiwiX29wdGlvbnMkYWxsb3dlZEF1dG9QIiwiYWxsb3dlZFBsYWNlbWVudHMiLCJvdmVyZmxvd3MiLCJjb21wdXRlQXV0b1BsYWNlbWVudCIsInJlZmVyZW5jZVJlY3QiLCJjaGVja3NNYXAiLCJtYWtlRmFsbGJhY2tDaGVja3MiLCJmaXJzdEZpdHRpbmdQbGFjZW1lbnQiLCJfYmFzZVBsYWNlbWVudCIsImlzU3RhcnRWYXJpYXRpb24iLCJpc1ZlcnRpY2FsIiwibWFpblZhcmlhdGlvblNpZGUiLCJhbHRWYXJpYXRpb25TaWRlIiwiY2hlY2tzIiwiY2hlY2siLCJfbG9vcCIsImZpdHRpbmdQbGFjZW1lbnQiLCJ3aXRoaW4iLCJfb3B0aW9ucyR0ZXRoZXIiLCJ0ZXRoZXIiLCJfb3B0aW9ucyR0ZXRoZXJPZmZzZXQiLCJ0ZXRoZXJPZmZzZXQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJ0ZXRoZXJPZmZzZXRWYWx1ZSIsIm5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZSIsIm9mZnNldE1vZGlmaWVyU3RhdGUiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQiLCJtYWluU2lkZSIsImFsdFNpZGUiLCJhZGRpdGl2ZSIsIm1heExlbiIsImFycm93RWxlbWVudCIsImFycm93UmVjdCIsImFycm93UGFkZGluZ09iamVjdCIsImFycm93UGFkZGluZ01pbiIsImFycm93UGFkZGluZ01heCIsImFycm93TGVuIiwibWluT2Zmc2V0IiwibWF4T2Zmc2V0IiwiYXJyb3dPZmZzZXRQYXJlbnQiLCJjbGllbnRPZmZzZXQiLCJvZmZzZXRNb2RpZmllclZhbHVlIiwidGV0aGVyTWF4IiwicHJldmVudGVkT2Zmc2V0IiwiX29mZnNldE1vZGlmaWVyU3RhdGUkMiIsIl9tYWluU2lkZSIsIl9hbHRTaWRlIiwiX29mZnNldCIsIl9taW4iLCJfbWF4IiwiaXNPcmlnaW5TaWRlIiwiX29mZnNldE1vZGlmaWVyVmFsdWUiLCJfdGV0aGVyTWluIiwiX3RldGhlck1heCIsIl9wcmV2ZW50ZWRPZmZzZXQiLCJ3aXRoaW5NYXhDbGFtcCIsIl9zdGF0ZSRtb2RpZmllcnNEYXRhJCIsInRvUGFkZGluZ09iamVjdCIsIm1pblByb3AiLCJtYXhQcm9wIiwiZW5kRGlmZiIsInN0YXJ0RGlmZiIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsImdldFNpZGVPZmZzZXRzIiwicHJldmVudGVkT2Zmc2V0cyIsImlzQW55U2lkZUZ1bGx5Q2xpcHBlZCIsImV2ZW50TGlzdGVuZXJzIiwiaW5pdGlhbFN0eWxlcyIsIm1hcmdpbiIsImF0dHJpYnV0ZSIsInByZXZlbnRPdmVyZmxvdyIsInJlZmVyZW5jZU92ZXJmbG93IiwicG9wcGVyQWx0T3ZlcmZsb3ciLCJyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMiLCJwb3BwZXJFc2NhcGVPZmZzZXRzIiwiaXNSZWZlcmVuY2VIaWRkZW4iLCJoYXNQb3BwZXJFc2NhcGVkIiwiZnJvbUVudHJpZXMiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwiRU1QVFlfTU9ESUZJRVJTIiwiREVGQVVMVF9QTEFDRU1FTlQiLCJjYW5kaWRhdGVTZWxlY3RvcnMiLCJjYW5kaWRhdGVTZWxlY3RvciIsIk5vRWxlbWVudCIsIl9lbGVtZW50JGdldFJvb3ROb2RlIiwiaXNJbmVydCIsImxvb2tVcCIsIl9ub2RlJGdldEF0dHJpYnV0ZSIsImluZXJ0QXR0IiwiaXNJbnB1dCIsImlzWmVyb0FyZWEiLCJfbm9kZSRnZXRCb3VuZGluZ0NsaWUiLCJpc05vZGVNYXRjaGluZ1NlbGVjdG9yRm9jdXNhYmxlIiwiaXNIaWRkZW5JbnB1dCIsImRpc3BsYXlDaGVjayIsImdldFNoYWRvd1Jvb3QiLCJ2aXNpYmlsaXR5Iiwibm9kZVVuZGVyRGV0YWlscyIsIm9yaWdpbmFsTm9kZSIsInNoYWRvd1Jvb3QiLCJfbm9kZVJvb3QiLCJfbm9kZVJvb3RIb3N0IiwiX25vZGVSb290SG9zdCRvd25lckRvIiwiX25vZGUkb3duZXJEb2N1bWVudCIsIm5vZGVSb290Iiwibm9kZVJvb3RIb3N0IiwiYXR0YWNoZWQiLCJfbm9kZVJvb3QyIiwiX25vZGVSb290SG9zdDIiLCJfbm9kZVJvb3RIb3N0MiRvd25lckQiLCJpc05vZGVBdHRhY2hlZCIsImdldENsaWVudFJlY3RzIiwiaXNEZXRhaWxzV2l0aFN1bW1hcnkiLCJpc0Rpc2FibGVkRnJvbUZpZWxkc2V0IiwiaXNOb2RlTWF0Y2hpbmdTZWxlY3RvclRhYmJhYmxlIiwiaXNSYWRpbyIsInJhZGlvU2V0IiwicmFkaW9TY29wZSIsInF1ZXJ5UmFkaW9zIiwiQ1NTIiwiZ2V0Q2hlY2tlZFJhZGlvIiwiaXNUYWJiYWJsZVJhZGlvIiwiaXNOb25UYWJiYWJsZVJhZGlvIiwiaXNTY29wZSIsIl9ub2RlJGdldEF0dHJpYnV0ZTIiLCJhdHRWYWx1ZSIsImlzQ29udGVudEVkaXRhYmxlIiwiZ2V0VGFiaW5kZXgiLCJpc1RhYmJhYmxlIiwiZm9jdXNhYmxlQ2FuZGlkYXRlU2VsZWN0b3IiLCJQb3B1cEFycm93Iiwic2V0QXJyb3dSZWYiLCJ1c2VVbmlxSWQiLCJmb2N1c1RyYXBDb250ZXh0IiwiYldyYXBwZXIiLCJrZWVwTW91bnRlZCIsImhhc0Fycm93IiwiYW5jaG9yUmVmIiwiZGlzYWJsZUxheWVyIiwicmVzdG9yZUZvY3VzIiwicmVzdG9yZUZvY3VzUmVmIiwiY29udGFpbmVyUmVmIiwibGF5ZXJDb25maWdSZWYiLCJsYXllckNvbmZpZyIsInVzZUxheWVyIiwic2V0UG9wcGVyUmVmIiwicG9wcGVyRWxlbWVudCIsInNldFBvcHBlckVsZW1lbnQiLCJzZXRBcnJvd0VsZW1lbnQiLCJyZWZlcmVuY2VFbGVtZW50IiwicHJldk9wdGlvbnMiLCJvcHRpb25zV2l0aERlZmF1bHRzIiwiX1JlYWN0JHVzZVN0YXRlIiwidXBkYXRlU3RhdGVNb2RpZmllciIsInBvcHBlck9wdGlvbnMiLCJuZXdPcHRpb25zIiwicG9wcGVySW5zdGFuY2VSZWYiLCJwb3BwZXJJbnN0YW5jZSIsImNyZWF0ZVBvcHBlciIsImhhbmRsZVJlZiIsImFkZE5vZGUiLCJyZW1vdmVOb2RlIiwidXNlUGFyZW50Rm9jdXNUcmFwIiwiY29udGFpbmVyUHJvcHMiLCJmb2N1c1RyYXBwZWQiLCJpbml0aWFsQWN0aXZlRWxlbWVudFJlZiIsImxhc3RBY3RpdmVFbGVtZW50UmVmIiwiaGFuZGxlRm9jdXNJbiIsImhhbmRsZVBvaW50ZXJEb3duIiwibGFzdEFjdGl2ZSIsImlzRm9jdXNhYmxlIiwidXNlUmVzdG9yZUZvY3VzIiwiUG9wcGVyUG9zaXRpb24iLCJJQ09OU19TSVpFUyIsInRvb2x0aXBUZXh0IiwiaXNWZXJ0aWNhbFZpZXciLCJzZXRSZWYiLCJwb3B1cFBvc2l0aW9uIiwiY29udHJvbFJlZiIsImlzVmlzaWJsZVRvb2x0aXAiLCJzZXRJc1Zpc2libGVUb29sdGlwIiwiaGlkZVRvb2x0aXAiLCJnZXRUb29sdGlwQWxpZ24iLCJMRUZUX1NUQVJUIiwiQk9UVE9NX0VORCIsIl9zZXRSZWYiLCJpY29uU2l6ZSIsImxhYmVsQ2xhc3NOYW1lIiwiY29udHJvbCIsImNsb25lZENvbnRyb2wiLCJ1c2VDaGVja2JveCIsImluZGV0ZXJtaW5hdGUiLCJvblVwZGF0ZSIsIm9uQ2hhbmdlIiwiY29udHJvbFByb3BzIiwiaW5uZXJDb250cm9sUmVmIiwiY2hlY2tlZFN0YXRlIiwic2V0Q2hlY2tlZFN0YXRlIiwiaXNDb250cm9sbGVkIiwiaXNDaGVja2VkIiwiaW5wdXRDaGVja2VkIiwiaW5wdXRBcmlhQ2hlY2tlZCIsImhhbmRsZUNsaWNrQ2FwdHVyZSIsImlucHV0UHJvcHMiLCJDaGVja2JveFRpY2tJY29uIiwiQ2hlY2tib3hEYXNoSWNvbiIsIk1hcFNoaW0iLCJnZXRJbmRleCIsImNsYXNzXzEiLCJfX2VudHJpZXNfXyIsImlzQnJvd3NlciIsImdsb2JhbCQxIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lJDEiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ0cmFuc2l0aW9uS2V5cyIsIm11dGF0aW9uT2JzZXJ2ZXJTdXBwb3J0ZWQiLCJNdXRhdGlvbk9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyIiwiY29ubmVjdGVkXyIsIm11dGF0aW9uRXZlbnRzQWRkZWRfIiwibXV0YXRpb25zT2JzZXJ2ZXJfIiwib2JzZXJ2ZXJzXyIsIm9uVHJhbnNpdGlvbkVuZF8iLCJyZWZyZXNoIiwibGVhZGluZ0NhbGwiLCJ0cmFpbGluZ0NhbGwiLCJyZXNvbHZlUGVuZGluZyIsInByb3h5IiwidGltZW91dENhbGxiYWNrIiwiYWRkT2JzZXJ2ZXIiLCJjb25uZWN0XyIsInJlbW92ZU9ic2VydmVyIiwiZGlzY29ubmVjdF8iLCJ1cGRhdGVPYnNlcnZlcnNfIiwiYWN0aXZlT2JzZXJ2ZXJzIiwiZ2F0aGVyQWN0aXZlIiwiaGFzQWN0aXZlIiwiYnJvYWRjYXN0QWN0aXZlIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsImNoYXJhY3RlckRhdGEiLCJzdWJ0cmVlIiwiZGlzY29ubmVjdCIsImdldEluc3RhbmNlIiwiaW5zdGFuY2VfIiwiZGVmaW5lQ29uZmlndXJhYmxlIiwiZ2V0V2luZG93T2YiLCJlbXB0eVJlY3QiLCJjcmVhdGVSZWN0SW5pdCIsInRvRmxvYXQiLCJnZXRCb3JkZXJzU2l6ZSIsInBvc2l0aW9ucyIsImlzU1ZHR3JhcGhpY3NFbGVtZW50IiwiU1ZHR3JhcGhpY3NFbGVtZW50IiwiU1ZHRWxlbWVudCIsImdldEJCb3giLCJnZXRDb250ZW50UmVjdCIsImJib3giLCJnZXRTVkdDb250ZW50UmVjdCIsInBhZGRpbmdzIiwicG9zaXRpb25zXzEiLCJnZXRQYWRkaW5ncyIsImhvcml6UGFkIiwidmVydFBhZCIsImJveFNpemluZyIsImlzRG9jdW1lbnRFbGVtZW50IiwidmVydFNjcm9sbGJhciIsImhvcml6U2Nyb2xsYmFyIiwiZ2V0SFRNTEVsZW1lbnRDb250ZW50UmVjdCIsIlJlc2l6ZU9ic2VydmF0aW9uIiwiYnJvYWRjYXN0V2lkdGgiLCJicm9hZGNhc3RIZWlnaHQiLCJjb250ZW50UmVjdF8iLCJpc0FjdGl2ZSIsImJyb2FkY2FzdFJlY3QiLCJSZXNpemVPYnNlcnZlckVudHJ5IiwicmVjdEluaXQiLCJDb25zdHIiLCJjb250ZW50UmVjdCIsIkRPTVJlY3RSZWFkT25seSIsIlJlc2l6ZU9ic2VydmVyU1BJIiwiY29udHJvbGxlciIsImNhbGxiYWNrQ3R4IiwiYWN0aXZlT2JzZXJ2YXRpb25zXyIsIm9ic2VydmF0aW9uc18iLCJjYWxsYmFja18iLCJjb250cm9sbGVyXyIsImNhbGxiYWNrQ3R4XyIsIm9ic2VydmF0aW9ucyIsInVub2JzZXJ2ZSIsImNsZWFyQWN0aXZlIiwib2JzZXJ2YXRpb24iLCJSZXNpemVPYnNlcnZlciIsInVzZUVsZW1lbnRTaXplIiwic2V0U2l6ZSIsImJvcmRlckJveFNpemUiLCJpbmxpbmVTaXplIiwiYmxvY2tTaXplIiwiSW5wdXRDb250cm9sIiwiYXV0b0NvbXBsZXRlIiwib25LZXlEb3duIiwib25LZXlVcCIsIm9uS2V5UHJlc3MiLCJUZXh0QXJlYUNvbnRyb2wiLCJyb3dzIiwibWluUm93cyIsIm1heFJvd3MiLCJ0ZXh0YXJlYVJvd3MiLCJyZXNpemVIZWlnaHQiLCJudW1iZXJPZkxpbmVzIiwiY29udHJvbFN0eWxlcyIsImdldFByb3BlcnR5VmFsdWUiLCJib3JkZXJXaWR0aCIsInBhZGRpbmdUb3AiLCJsaW5lcyIsIkNyb3NzSWNvbiIsIlBBUkFNX1JFR0VYUCIsIlBsdXJhbEZvcm0iLCJwbHVyYWxGb3JtcyIsIk5vbmUiLCJPbmUiLCJNYW55IiwibGFzdERpZ2l0IiwibGFzdDJEaWdpdHMiLCJGZXciLCJsYW5nIiwicGx1cmFsaXplcnMiLCJlbiIsInNldExhbmciLCJjb25maWd1cmVQbHVyYWxpemF0aW9uIiwicmVnaXN0ZXJLZXlzZXQiLCJrZXlzZXROYW1lIiwicmVnaXN0ZXJLZXlzZXRzIiwibGFuZ3VhZ2VEYXRhIiwiZ2V0TGFuZ3VhZ2VEYXRhIiwicGFyYW1zIiwia2V5c2V0Iiwia2V5VmFsdWUiLCJnZXRMYW5ndWFnZVBsdXJhbGl6ZXIiLCJwbHVyYWxpemVyIiwicmVwbGFjZVBhcmFtcyIsImNhY2hlS2V5IiwibGFuZ0NvZGUiLCJDbGVhckFjdGlvbiIsIkFkZGl0aW9uYWxDb250ZW50IiwicHJlcGFyZUF1dG9Db21wbGV0ZSIsImxhYmVsIiwibXVsdGlsaW5lIiwiaGFzQ2xlYXIiLCJvcmlnaW5hbElkIiwib3JpZ2luYWxDb250cm9sUHJvcHMiLCJsZWZ0Q29udGVudCIsInJpZ2h0Q29udGVudCIsInVuY29udHJvbGxlZFZhbHVlIiwic2V0VW5jb250cm9sbGVkVmFsdWUiLCJsYWJlbFJlZiIsImxlZnRDb250ZW50UmVmIiwiaGFzVmVydGljYWxTY3JvbGxiYXIiLCJzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhciIsImdldFRleHRJbnB1dFN0YXRlIiwiaW5wdXRWYWx1ZSIsImlzTGFiZWxWaXNpYmxlIiwiaXNFcnJvck1zZ1Zpc2libGUiLCJpc0NsZWFyQ29udHJvbFZpc2libGUiLCJpc0xlZnRDb250ZW50VmlzaWJsZSIsImlzUmlnaHRDb250ZW50VmlzaWJsZSIsImlzQXV0b0NvbXBsZXRlT2ZmIiwiaW5uZXJJZCIsImxhYmVsU2l6ZSIsImxlZnRDb250ZW50U2l6ZSIsInBhZGRpbmdMZWZ0IiwiaGFuZGxlQWRkaXRpb25hbENvbnRlbnRDbGljayIsImhhc0FjdGl2ZUVsZW1lbnQiLCJoYXNTZWxlY3Rpb24iLCJjdXJySGFzVmVydGljYWxTY3JvbGxiYXIiLCJtYXhXaWR0aCIsImh0bWxGb3IiLCJzeW50aGV0aWNFdmVudCIsIkRJU0xJS0VfVkFSSUFOVFMiLCJSdSIsIkRFRkFVTFRfU0VUVElOR1MiLCJmdWxsU2NyZWVuIiwiYm9va21hcmtlZFBhZ2UiLCJ0aGVtZSIsIkRhcmsiLCJ0ZXh0U2l6ZSIsImlzTGlrZWQiLCJpc0Rpc2xpa2VkIiwiaXNQaW5uZWQiLCJGZWVkYmFja1ZpZXciLCJkaXNsaWtlVmFyaWFudHMiLCJvblNlbmRGZWVkYmFjayIsImNsYXNzTmFtZUNvbnRyb2wiLCJsaWtlQ29udHJvbFJlZiIsImRpc2xpa2VDb250cm9sUmVmIiwiaW5uZXJJc0Rpc2xpa2VkIiwic2V0SW5uZXJJc0Rpc2xpa2VkIiwiZmVlZGJhY2tDb21tZW50Iiwic2V0RmVlZGJhY2tDb21tZW50IiwiZmVlZGJhY2tDaGVja2JveGVzIiwic2V0RmVlZGJhY2tDaGVja2JveGVzIiwic2hvd0xpa2VTdWNjZXNzUG9wdXAiLCJzZXRTaG93TGlrZVN1Y2Nlc3NQb3B1cCIsInNob3dEaXNsaWtlU3VjY2Vzc1BvcHVwIiwic2V0U2hvd0Rpc2xpa2VTdWNjZXNzUG9wdXAiLCJzaG93RGlzbGlrZVZhcmlhbnRzUG9wdXAiLCJzZXRTaG93RGlzbGlrZVZhcmlhbnRzUG9wdXAiLCJoaWRlRmVlZGJhY2tQb3B1cHMiLCJyZXNldEZlZWRiYWNrQWRkaXRpb25hbEluZm8iLCJzZXRUaW1lciIsImNsZWFyVGltZXIiLCJzZXRMaWtlQ29udHJvbFJlZiIsInNldERpc2xpa2VDb250cm9sUmVmIiwib25TZW5kRGlzbGlrZUluZm9ybWF0aW9uIiwiZGlzbGlrZSIsImFkZGl0aW9uYWxJbmZvIiwiY29tbWVudCIsImFuc3dlcnMiLCJnZXRQcmVwYXJlZEZlZWRiYWNrQWRkaXRpb25hbEluZm8iLCJnZXRQb3B1cFBvc2l0aW9uIiwiUmVndWxhciIsIlJJR0hUIiwib25DaGFuZ2VMaWtlIiwibGlrZSIsIm9uQ2hhbmdlRGlzbGlrZSIsInJlbmRlckxpa2VDb250cm9sIiwicmVuZGVyRGlzbGlrZUNvbnRyb2wiLCJyZW5kZXJSZWd1bGFyRmVlZGJhY2tDb250cm9scyIsInJlbmRlcldpZGVGZWVkYmFja0NvbnRyb2xzIiwicmVuZGVyRmVlZGJhY2tDb250cm9scyIsInJlbmRlckZlZWRiYWNrU3VjY2Vzc1BvcHVwIiwiYW5jaG9yIiwidmlzaWJsZSIsInJlbmRlckRpc2xpa2VWYXJpYW50c0xpc3QiLCJ2YXJpYW50IiwicmVuZGVyRGlzbGlrZVZhcmlhbnRzVGV4dEFyZWEiLCJfZXZlbnQiLCJyZW5kZXJEaXNsaWtlVmFyaWFudHNBY3Rpb25zIiwicmVuZGVyRGlzbGlrZVZhcmlhbnRzQ29udGVudCIsInJlbmRlckRpc2xpa2VWYXJpYW50c1BvcHVwIiwiU3Vic2NyaWJlVmlldyIsIlN1YnNjcmliZVN1Y2Nlc3NQb3B1cCIsInNldFZpc2libGUiLCJoaWRlIiwic2F2ZWRDYWxsYmFjayIsImNyZWF0ZUNsYXNzIiwicG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIndpbmRvd09iamVjdCIsImNhbmNlbEZyYW1lIiwicmVxdWVzdEZyYW1lIiwiY2xlYXJUaW1lb3V0Rm4iLCJzZXRUaW1lb3V0Rm4iLCJjYW5jZWxBbmltYXRpb25GcmFtZUZuIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJtb3pDYW5jZWxBbmltYXRpb25GcmFtZSIsIndlYmtpdENhbmNlbEFuaW1hdGlvbkZyYW1lIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lRm4iLCJtb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ3ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzbGljZUl0ZXJhdG9yIiwic2xpY2VkVG9BcnJheSIsImFuaW1hdGlvbkZyYW1lSUQiLCJ0aW1lb3V0SUQiLCJBdXRvU2l6ZXIiLCJfdGVtcCIsImNsYXNzQ2FsbENoZWNrIiwiZGVmYXVsdEhlaWdodCIsImRlZmF1bHRXaWR0aCIsIl9vblJlc2l6ZSIsImRpc2FibGVIZWlnaHQiLCJkaXNhYmxlV2lkdGgiLCJvblJlc2l6ZSIsIl9wYXJlbnROb2RlIiwiX2hlaWdodCIsIl93aWR0aCIsIl9zdHlsZSIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJuZXdIZWlnaHQiLCJuZXdXaWR0aCIsImF1dG9TaXplciIsIl9hdXRvU2l6ZXIiLCJpbmhlcml0cyIsIl9kZXRlY3RFbGVtZW50UmVzaXplIiwiYW5pbWF0aW9uS2V5ZnJhbWVzIiwiYW5pbWF0aW9uU3RhcnRFdmVudCIsImFuaW1hdGlvblN0eWxlIiwiY2hlY2tUcmlnZ2VycyIsInJlc2V0VHJpZ2dlcnMiLCJzY3JvbGxMaXN0ZW5lciIsInRyaWdnZXJzIiwiX19yZXNpemVUcmlnZ2Vyc19fIiwiZXhwYW5kIiwiZmlyc3RFbGVtZW50Q2hpbGQiLCJjb250cmFjdCIsImxhc3RFbGVtZW50Q2hpbGQiLCJleHBhbmRDaGlsZCIsIl9fcmVzaXplTGFzdF9fIiwiX19yZXNpemVSQUZfXyIsIl9fcmVzaXplTGlzdGVuZXJzX18iLCJrZXlmcmFtZXByZWZpeCIsImRvbVByZWZpeGVzIiwic3RhcnRFdmVudHMiLCJlbG0iLCJhZGRSZXNpemVMaXN0ZW5lciIsImRvYyIsImVsZW1lbnRTdHlsZSIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiY3JlYXRlU3R5bGVzIiwiZXhwYW5kVHJpZ2dlciIsImNvbnRyYWN0VHJpZ2dlciIsIl9fYW5pbWF0aW9uTGlzdGVuZXJfXyIsInJlbW92ZVJlc2l6ZUxpc3RlbmVyIiwiY3JlYXRlRGV0ZWN0RWxlbWVudFJlc2l6ZSIsIl9wcm9wcyIsIl9zdGF0ZSIsIm91dGVyU3R5bGUiLCJjaGlsZFBhcmFtcyIsImJhaWxvdXRPbkNoaWxkcmVuIiwic2FmZUlzTmFOIiwiYXJlSW5wdXRzRXF1YWwiLCJuZXdJbnB1dHMiLCJsYXN0SW5wdXRzIiwic2Vjb25kIiwicmVzdWx0Rm4iLCJsYXN0UmVzdWx0IiwiY2FsbGVkT25jZSIsIm5ld0FyZ3MiLCJjYW5jZWxUaW1lb3V0IiwiZ2V0U2Nyb2xsYmFyU2l6ZSIsInJlY2FsY3VsYXRlIiwiY2FjaGVkUlRMUmVzdWx0IiwiZ2V0UlRMT2Zmc2V0VHlwZSIsIm91dGVyRGl2IiwiaW5uZXJEaXYiLCJpbm5lclN0eWxlIiwiZGVmYXVsdEl0ZW1LZXkkMSIsImNyZWF0ZUxpc3RDb21wb25lbnQiLCJfY2xhc3MiLCJnZXRJdGVtT2Zmc2V0IiwiZ2V0RXN0aW1hdGVkVG90YWxTaXplIiwiZ2V0SXRlbVNpemUiLCJnZXRPZmZzZXRGb3JJbmRleEFuZEFsaWdubWVudCIsImdldFN0YXJ0SW5kZXhGb3JPZmZzZXQiLCJnZXRTdG9wSW5kZXhGb3JTdGFydEluZGV4IiwiaW5pdEluc3RhbmNlUHJvcHMiLCJzaG91bGRSZXNldFN0eWxlQ2FjaGVPbkl0ZW1TaXplQ2hhbmdlIiwidmFsaWRhdGVQcm9wcyIsIl9QdXJlQ29tcG9uZW50IiwiTGlzdCIsIl9pbnN0YW5jZVByb3BzIiwiX291dGVyUmVmIiwiX3Jlc2V0SXNTY3JvbGxpbmdUaW1lb3V0SWQiLCJpc1Njcm9sbGluZyIsInNjcm9sbERpcmVjdGlvbiIsInNjcm9sbE9mZnNldCIsImluaXRpYWxTY3JvbGxPZmZzZXQiLCJzY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQiLCJfY2FsbE9uSXRlbXNSZW5kZXJlZCIsIm92ZXJzY2FuU3RhcnRJbmRleCIsIm92ZXJzY2FuU3RvcEluZGV4IiwidmlzaWJsZVN0YXJ0SW5kZXgiLCJ2aXNpYmxlU3RvcEluZGV4Iiwib25JdGVtc1JlbmRlcmVkIiwiX2NhbGxPblNjcm9sbCIsIm9uU2Nyb2xsIiwiX2dldEl0ZW1TdHlsZSIsIml0ZW1TaXplIiwibGF5b3V0IiwiaXRlbVN0eWxlQ2FjaGUiLCJfZ2V0SXRlbVN0eWxlQ2FjaGUiLCJpc0hvcml6b250YWwiLCJpc1J0bCIsIm9mZnNldEhvcml6b250YWwiLCJfXyIsIl9fXyIsIl9vblNjcm9sbEhvcml6b250YWwiLCJfZXZlbnQkY3VycmVudFRhcmdldCIsIl9yZXNldElzU2Nyb2xsaW5nRGVib3VuY2VkIiwiX29uU2Nyb2xsVmVydGljYWwiLCJfZXZlbnQkY3VycmVudFRhcmdldDIiLCJfb3V0ZXJSZWZTZXR0ZXIiLCJvdXRlclJlZiIsInRpY2siLCJyZXF1ZXN0VGltZW91dCIsIl9yZXNldElzU2Nyb2xsaW5nIiwibmV4dFByb3BzIiwidmFsaWRhdGVTaGFyZWRQcm9wcyQxIiwic2Nyb2xsVG8iLCJhbGlnbiIsIml0ZW1Db3VudCIsInNjcm9sbGJhclNpemUiLCJfdGhpcyRwcm9wczMiLCJfY2FsbFByb3BzQ2FsbGJhY2tzIiwiX3RoaXMkcHJvcHM0IiwiX3RoaXMkc3RhdGUiLCJfdGhpcyRwcm9wczUiLCJpbm5lclJlZiIsImlubmVyRWxlbWVudFR5cGUiLCJpbm5lclRhZ05hbWUiLCJpdGVtRGF0YSIsIl90aGlzJHByb3BzNSRpdGVtS2V5IiwiaXRlbUtleSIsIm91dGVyRWxlbWVudFR5cGUiLCJvdXRlclRhZ05hbWUiLCJ1c2VJc1Njcm9sbGluZyIsIl90aGlzJF9nZXRSYW5nZVRvUmVuZCIsIl9nZXRSYW5nZVRvUmVuZGVyIiwic3RhcnRJbmRleCIsInN0b3BJbmRleCIsImVzdGltYXRlZFRvdGFsU2l6ZSIsIldlYmtpdE92ZXJmbG93U2Nyb2xsaW5nIiwicG9pbnRlckV2ZW50cyIsIl90aGlzJF9nZXRSYW5nZVRvUmVuZDIiLCJfb3ZlcnNjYW5TdGFydEluZGV4IiwiX292ZXJzY2FuU3RvcEluZGV4IiwiX3Zpc2libGVTdGFydEluZGV4IiwiX3Zpc2libGVTdG9wSW5kZXgiLCJfdGhpcyRzdGF0ZTIiLCJfc2Nyb2xsRGlyZWN0aW9uIiwiX3Njcm9sbE9mZnNldCIsIl9zY3JvbGxVcGRhdGVXYXNSZXF1ZXN0ZWQiLCJfdGhpcyRwcm9wczYiLCJvdmVyc2NhbkNvdW50IiwiX3RoaXMkc3RhdGUzIiwib3ZlcnNjYW5CYWNrd2FyZCIsIm92ZXJzY2FuRm9yd2FyZCIsImdldEl0ZW1NZXRhZGF0YSQxIiwiaW5zdGFuY2VQcm9wcyIsIml0ZW1NZXRhZGF0YU1hcCIsImxhc3RNZWFzdXJlZEluZGV4IiwiaXRlbU1ldGFkYXRhIiwiZmluZE5lYXJlc3RJdGVtQmluYXJ5U2VhcmNoJDEiLCJtaWRkbGUiLCJjdXJyZW50T2Zmc2V0IiwiZXN0aW1hdGVkSXRlbVNpemUiLCJ0b3RhbFNpemVPZk1lYXN1cmVkSXRlbXMiLCJWYXJpYWJsZVNpemVMaXN0IiwiaW50ZXJ2YWwiLCJmaW5kTmVhcmVzdEl0ZW1FeHBvbmVudGlhbFNlYXJjaCQxIiwiZmluZE5lYXJlc3RJdGVtJDEiLCJyZXNldEFmdGVySW5kZXgiLCJzaG91bGRGb3JjZVVwZGF0ZSIsIk1hbmFnZXIiLCJzb3J0YWJsZUluZm8iLCJzb3J0QnlJbmRleCIsImtleXNUb09taXQiLCJtb3ZlIiwidmVuZG9yUHJlZml4IiwicHJlIiwiT0xpbmsiLCJzZXRJbmxpbmVTdHlsZXMiLCJzZXRUcmFuc2xhdGUzZCIsInNldFRyYW5zaXRpb25EdXJhdGlvbiIsImR1cmF0aW9uIiwiZ2V0UGl4ZWxWYWx1ZSIsInN0cmluZ1ZhbHVlIiwicHJvdmlkZURpc3BsYXlOYW1lIiwiQ29tcG9uZW50JCQxIiwiZ2V0U2Nyb2xsQWRqdXN0ZWRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxEZWx0YSIsImJvdW5kaW5nQ2xpZW50UmVjdCIsImdldFBvc2l0aW9uIiwiZ2V0RWRnZU9mZnNldCIsIm5vZGVPZmZzZXQiLCJnZXRMb2NrUGl4ZWxPZmZzZXQiLCJsb2NrT2Zmc2V0Iiwib2Zmc2V0WCIsIm9mZnNldFkiLCJ1bml0IiwiZ2V0U2Nyb2xsaW5nUGFyZW50IiwiY29tcHV0ZWRTdHlsZSIsIm92ZXJmbG93UmVnZXgiLCJpc1Njcm9sbGFibGUiLCJOb2RlVHlwZSIsIkFuY2hvciIsIkJ1dHRvbiIsIkNhbnZhcyIsIklucHV0IiwiT3B0aW9uIiwiVGV4dGFyZWEiLCJTZWxlY3QiLCJpc1NvcnRhYmxlSGFuZGxlIiwic29ydGFibGVIYW5kbGUiLCJBdXRvU2Nyb2xsZXIiLCJvblNjcm9sbENhbGxiYWNrIiwiY2xlYXJJbnRlcnZhbCIsIm1pblRyYW5zbGF0ZSIsIm1heFRyYW5zbGF0ZSIsInNwZWVkIiwiX3RoaXMkY29udGFpbmVyIiwiaXNUb3AiLCJpc0JvdHRvbSIsImlzTGVmdCIsImlzQXV0b1Njcm9sbGluZyIsInNldEludGVydmFsIiwiZGlzYWJsZUF1dG9zY3JvbGwiLCJnZXRDb250YWluZXIiLCJnZXRIZWxwZXJEaW1lbnNpb25zIiwiaGVscGVyQ2xhc3MiLCJoZWxwZXJDb250YWluZXIiLCJoaWRlU29ydGFibGVHaG9zdCIsImtleWJvYXJkU29ydGluZ1RyYW5zaXRpb25EdXJhdGlvbiIsImxvY2tBeGlzIiwibG9ja1RvQ29udGFpbmVyRWRnZXMiLCJvblNvcnRFbmQiLCJvblNvcnRNb3ZlIiwib25Tb3J0T3ZlciIsIm9uU29ydFN0YXJ0IiwicHJlc3NEZWxheSIsInByZXNzVGhyZXNob2xkIiwia2V5Q29kZXMiLCJsaWZ0IiwiZG93biIsInNob3VsZENhbmNlbFN0YXJ0IiwidHJhbnNpdGlvbkR1cmF0aW9uIiwidXBkYXRlQmVmb3JlU29ydFN0YXJ0IiwidXNlRHJhZ0hhbmRsZSIsInVzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyIiwiZGVmYXVsdEtleUNvZGVzIiwib21pdHRlZFByb3BzIiwiU29ydGFibGVDb250ZXh0IiwibWFuYWdlciIsInNvcnRhYmxlQ29udGFpbmVyIiwiV2l0aFNvcnRhYmxlQ29udGFpbmVyIiwidG91Y2hlZCIsIm5vZGVJc0NoaWxkIiwic29ydGluZyIsIl9ub2RlJHNvcnRhYmxlSW5mbyIsImlzVG91Y2hFdmVudCIsImhhbmRsZVByZXNzIiwicHJlc3NUaW1lciIsIl9hd2FpdGluZ1VwZGF0ZUJlZm9yZVNvcnRTdGFydCIsImNvbWJpbmVkRGVsdGEiLCJjYW5jZWxUaW1lciIsImdldEFjdGl2ZSIsIl90ZW1wNiIsIl90ZW1wNyIsImZpZWxkcyIsImNsb25lZE5vZGUiLCJfbm9kZSIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsIm1hcmdpblRvcCIsImdyaWRHYXAiLCJncmlkQ29sdW1uR2FwIiwiZ3JpZFJvd0dhcCIsImdldENvbnRhaW5lckdyaWRHYXAiLCJjb250YWluZXJCb3VuZGluZ1JlY3QiLCJzY3JvbGxDb250YWluZXIiLCJkaW1lbnNpb25zIiwiX2dldEhlbHBlckRpbWVuc2lvbnMiLCJfY29sbGVjdGlvbiIsIm1hcmdpbk9mZnNldCIsIm5ld0luZGV4IiwiX2F4aXMiLCJvZmZzZXRFZGdlIiwiaW5pdGlhbE9mZnNldCIsIl9pc0tleVNvcnRpbmciLCJpbml0aWFsU2Nyb2xsIiwiaW5pdGlhbFdpbmRvd1Njcm9sbCIsImhlbHBlciIsIml0ZXIiLCJmaWVsZCIsImdldENvbnRleHQiLCJkcmF3SW1hZ2UiLCJfaGlkZVNvcnRhYmxlR2hvc3QiLCJzb3J0YWJsZUdob3N0IiwiX3VzZVdpbmRvd0FzU2Nyb2xsQ29udGFpbmVyIiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0IiwiY29udGFpbmVyVG9wIiwiY29udGFpbmVyTGVmdCIsImNvbnRhaW5lcldpZHRoIiwiY29udGFpbmVyQm90dG9tIiwiY29udGFpbmVyUmlnaHQiLCJfaGVscGVyQ2xhc3MiLCJsaXN0ZW5lck5vZGUiLCJoYW5kbGVLZXlFbmQiLCJoYW5kbGVLZXlEb3duIiwiZXZlbnROYW1lIiwiaGFuZGxlU29ydE1vdmUiLCJoYW5kbGVTb3J0RW5kIiwic29ydGluZ0luZGV4IiwiX29uU29ydFN0YXJ0IiwiaXNLZXlTb3J0aW5nIiwiZ2V0T3JkZXJlZFJlZnMiLCJrZXlNb3ZlIiwiX3RlbXA4IiwiX3RlbXA5IiwiZmluYWxpemVyIiwiX2ZpbmFsbHlSZXRocm93cyIsIl93YXNUaHJvd24iLCJ1cGRhdGVIZWxwZXJQb3NpdGlvbiIsImFuaW1hdGVOb2RlcyIsImF1dG9zY3JvbGwiLCJfdGhpcyRtYW5hZ2VyIiwiX25vZGUyIiwiZWRnZU9mZnNldCIsImF1dG9TY3JvbGxlciIsIm9sZEluZGV4Iiwic2Nyb2xsWCIsInNjcm9sbFkiLCJfdGhpcyRwcm9wczUka2V5Q29kZXMiLCJpc1ZhbGlkU29ydGluZ1RhcmdldCIsImtleUxpZnQiLCJrZXlEcm9wIiwiX25vZGUkc29ydGFibGVJbmZvMiIsImluaXRpYWxGb2N1c2VkTm9kZSIsInByZXZJbmRleCIsImdldFRhcmdldEluZGV4IiwidGFyZ2V0Tm9kZSIsImNvbnRhaW5lclNjcm9sbERlbHRhIiwidGFyZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidGFyZ2V0VHJhbnNsYXRlIiwidGFyZ2V0UG9zaXRpb24iLCJzaG91bGRBZGp1c3RGb3JTaXplIiwic2l6ZUFkanVzdG1lbnQiLCJpZ25vcmVUcmFuc2l0aW9uIiwid3JhcHBlZEluc3RhbmNlIiwic29ydGFibGVDb250ZXh0VmFsdWUiLCJoYW5kbGVFbmQiLCJoYW5kbGVNb3ZlIiwiaGFuZGxlU3RhcnQiLCJzY3JvbGxpbmdFbGVtZW50Iiwib25BdXRvU2Nyb2xsIiwiX3RoaXMkcHJvcHM2JGtleWJvYXJkIiwiX2dldExvY2tQaXhlbE9mZnNldHMiLCJfb2Zmc2V0cyIsIm1pbkxvY2tPZmZzZXQiLCJtYXhMb2NrT2Zmc2V0IiwiZ2V0TG9ja1BpeGVsT2Zmc2V0cyIsIl9nZXRMb2NrUGl4ZWxPZmZzZXRzMiIsIl90aGlzJHByb3BzNyIsIndpbmRvd1Njcm9sbERlbHRhIiwic29ydGluZ09mZnNldCIsIl9ub2RlMyIsIm11c3RTaGlmdEJhY2t3YXJkIiwibXVzdFNoaWZ0Rm9yd2FyZCIsImdldFdyYXBwZWRJbnN0YW5jZSIsIlBsYXRmb3JtIiwicHJvcFR5cGVzJDEiLCJvbWl0dGVkUHJvcHMkMSIsIm1vYmlsZSIsInBsYXRmb3JtIiwiQlJPV1NFUiIsInVzZUhpc3RvcnkiLCJnb0JhY2siLCJ1c2VMb2NhdGlvbiIsInNldE1vYmlsZSIsInNldFBsYXRmb3JtIiwiTW9iaWxlQ29udGV4dCIsImxpc3ROYXZpZ2F0aW9uSWdub3JlZEtleXMiLCJEcmFnSGFuZGxlSWNvbiIsImRlZmF1bHRSZW5kZXJJdGVtIiwiTGlzdEl0ZW0iLCJnZXRSZWYiLCJpdGVtSW5kZXgiLCJwdWJsaXNoRXZlbnQiLCJvbkFjdGl2YXRlIiwic29ydGFibGUiLCJzb3J0SGFuZGxlQWxpZ24iLCJpdGVtQ2xhc3NOYW1lIiwicm9sZSIsImluYWN0aXZlIiwicmVuZGVyU29ydEljb24iLCJyZW5kZXJDb250ZW50IiwicmVuZGVySXRlbSIsImdldFJlZnMiLCJTaW1wbGVDb250YWluZXIiLCJsaXN0SXRlbSIsInNjcm9sbEludG9WaWV3IiwiU29ydGFibGVMaXN0SXRlbSIsIldpdGhTb3J0YWJsZUVsZW1lbnQiLCJfZ2V0UHJvdG90eXBlT2YyIiwicmVnaXN0ZXIiLCJ1bnJlZ2lzdGVyIiwiU29ydGFibGVMaXN0Q29udGFpbmVyIiwiU29ydGFibGVTaW1wbGVDb250YWluZXIiLCJyZWZGaWx0ZXIiLCJyZWZDb250YWluZXIiLCJibHVyVGltZXIiLCJhY3RpdmVJdGVtIiwicGFnZVNpemUiLCJoYW5kbGVLZXlNb3ZlIiwib25JdGVtQ2xpY2siLCJnZXRGaWx0ZXIiLCJhY3RpdmVJdGVtSW5kZXgiLCJJdGVtIiwic2VsZWN0ZWRJdGVtSW5kZXgiLCJvbkl0ZW1BY3RpdmF0ZSIsImZpbHRlckl0ZW0iLCJzY3JvbGxUb0luZGV4IiwiZGVhY3RpdmF0ZSIsImRlYWN0aXZhdGVPbkxlYXZlIiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVCbHVyIiwib25VcGRhdGVGaWx0ZXJJbnRlcm5hbCIsIm9uRmlsdGVyRW5kIiwib25GaWx0ZXJVcGRhdGUiLCJhY3RpdmF0ZUl0ZW0iLCJnZXRJdGVtSGVpZ2h0IiwiZ2V0VmlydHVhbGl6ZWRJdGVtSGVpZ2h0IiwiZGF0YUxlbmd0aCIsImN1cnJlbnRJbmRleCIsImVtcHR5UGxhY2Vob2xkZXIiLCJ2aXJ0dWFsaXplZCIsIml0ZW1zQ2xhc3NOYW1lIiwicmVuZGVyRmlsdGVyIiwiZ2V0SXRlbXNTdHlsZSIsInJlbmRlckl0ZW1zIiwiZ2V0SXRlbXMiLCJnZXRBY3RpdmVJdGVtIiwiZmlsdGVyYWJsZSIsImZpbHRlclBsYWNlaG9sZGVyIiwiZmlsdGVyQ2xhc3NOYW1lIiwicmVuZGVyU2ltcGxlQ29udGFpbmVyIiwiQ29udGFpbmVyIiwiX2l0ZW0iLCJyZW5kZXJWaXJ0dWFsaXplZENvbnRhaW5lciIsIml0ZW1zSGVpZ2h0IiwiZGVmYXVsdEl0ZW1JbmRleCIsImZpbmROZXh0SW5kZXgiLCJzaWduIiwiU3Vic2NyaWJlVmFyaWFudHNQb3B1cCIsIm9uU3Vic2NyaWJlIiwib25TdWJtaXQiLCJzZXRFbWFpbCIsInNob3dFcnJvciIsInNldFNob3dFcnJvciIsInN1YnNjcmliZVNlbGVjdG9ycyIsInNldFN1YnNjcmliZVNlbGVjdG9ycyIsImRvY3VtZW50YXRpb24iLCJyZXNldFN1YnNjcmliZUFkZGl0aW9uYWxJbmZvIiwib25TZW5kU3Vic2NyaWJlSW5mb3JtYXRpb24iLCJpc0ludmFsaWRFbWFpbCIsInJlbmRlclN1YnNjcmliZVZhcmlhbnRzTGlzdCIsIklURU1TIiwicGFnZSIsInJlbmRlclN1YnNjcmliZUZvcm0iLCJzdWJzY3JpYmVDb250cm9sUmVmIiwic2hvd1N1YnNjcmliZVN1Y2Nlc3NQb3B1cCIsInNldFNob3dTdWJzY3JpYmVTdWNjZXNzUG9wdXAiLCJzaG93U3Vic2NyaWJlVmFyaWFudHNQb3B1cCIsInNldFNob3dTdWJzY3JpYmVWYXJpYW50c1BvcHVwIiwic2V0U3Vic2NyaWJlQ29udHJvbFJlZiIsIm9uQ2hhbmdlU3Vic2NyaWJlIiwicmVuZGVyU3Vic2NyaWJlQ29udHJvbCIsInJlbmRlcldpZGVTdWJzY3JpYmVDb250cm9scyIsInJlbmRlclN1YnNjcmliZUNvbnRyb2xzIiwidmVydGljYWwiLCJhY3RpdmVNb2RlIiwib25DaGFuZ2VUaGVtZSIsIm9uQ2hhbmdlV2lkZUZvcm1hdCIsIm9uQ2hhbmdlU2hvd01pbmlUb2MiLCJvbkNoYW5nZVRleHRTaXplIiwiaXNWaXNpYmxlUG9wdXAiLCJzZXRJc1Zpc2libGVQb3B1cCIsIm1ha2VPbkNoYW5nZVRleHRTaXplIiwidGV4dFNpemVLZXkiLCJfb25DaGFuZ2VUaGVtZSIsIkxpZ2h0IiwiX29uQ2hhbmdlV2lkZUZvcm1hdCIsIl9vbkNoYW5nZVNob3dNaW5pVG9jIiwiZ2V0U2V0dGluZ3NJdGVtcyIsImFsbFRleHRTaXplcyIsInNob3dNaW5pVG9jRGlzYWJsZWQiLCJkZXNjcmlwdGlvbiIsInNldHRpbmdzSXRlbXMiLCJmaWxsUnVsZSIsImNsaXBSdWxlIiwiTEVHQUNZX0xBTkdfSVRFTVMiLCJyeCIsInBhdHRlcm5Db250ZW50VW5pdHMiLCJvbkNoYW5nZUxhbmciLCJsYW5nSXRlbXMiLCJzZXRMYW5nSXRlbXMiLCJfb25DaGFuZ2VMYW5nIiwicHJlcGFyZWRMYW5ncyIsImxhbmdEYXRhIiwicGRmTGluayIsImhpZGVGZWVkYmFja0NvbnRyb2xzIiwicmVuZGVyQ29tbW9uQ29udHJvbHMiLCJyZW5kZXJFZGl0TGluayIsInZjc1VybCIsInZjc1R5cGUiLCJzaG93RWRpdENvbnRyb2wiLCJjb250cm9sU2l6ZSIsIm9uQ2hhbmdlRnVsbFNjcmVlbiIsIm9uQ2hhbmdlU2luZ2xlUGFnZSIsIlRvY0l0ZW1SZWdpc3RyeSIsIm5vcm1hbGl6ZVVybCIsIml0ZW1CeUlkIiwicGFyZW50QnlJZCIsIml0ZW1JZEJ5VXJsIiwiY29uc3VtZUl0ZW1zIiwiZ2V0SWRCeVVybCIsImdldEl0ZW1CeUlkIiwiZ2V0UGFyZW50SWQiLCJnZXRQYXJlbnRJZHMiLCJwYXJlbnRJZCIsImdldENoaWxkSWRzIiwiSEVBREVSX0RFRkFVTFRfSEVJR0hUIiwicm9vdFJlZiIsImFjdGl2ZVJlZiIsImNvbnRhaW5lckVsIiwiZm9vdGVyRWwiLCJyZW5kZXJMaXN0IiwiYWN0aXZlSWQiLCJmaXhlZEJ5SWQiLCJhY3RpdmVTY29wZSIsInJlZ2lzdHJ5IiwibWFpbiIsIm9wZW5lZCIsImNsb3NlZCIsImhhbmRsZVNjcm9sbCIsInNldFRvY0hlaWdodCIsImhhbmRsZVJlc2l6ZSIsInNjcm9sbFRvQWN0aXZlSXRlbSIsImhhbmRsZUNvbnRlbnRTY3JvbGwiLCJjb250ZW50Tm9kZSIsImNvbnRlbnRTY3JvbGxlZCIsIm9wZW5JdGVtIiwiY2xvc2VJdGVtIiwiaWRzIiwiY29tcHV0ZVN0YXRlIiwiZ2V0SW5pdGlhbFN0YXRlIiwiaGlkZVRvY0hlYWRlciIsInJlbmRlckVtcHR5IiwicmVuZGVyVG9wIiwib2Zmc2V0X3RvcCIsInJlbmRlckJvdHRvbSIsImFjdGl2ZVVybCIsImRyb3BDbG9zZWRTaWduIiwidG9jVGl0bGVJY29uIiwidG9wSGVhZGVyIiwic2Nyb2xsZWQiLCJUT1BfU1RBUlQiLCJoZWFkZXJIZWlnaHQiLCJjb250YWluZXJIZWlnaHQiLCJmb290ZXJIZWlnaHQiLCJzY3JvbGxEaWZmIiwiQ2VudGVyIiwiaGlkZVJpZ2h0IiwiZm9vdGVyIiwibW9kZXMiLCJyZW5kZXJUb2MiLCJ0b2MiLCJoaWRlVG9jIiwiY29sb3JCeVN0YWdlIiwicHJldmlldyIsIm5ldyIsInBvc3NpYmxlU3RhZ2VzIiwiU3RhZ2VMYWJlbCIsInN0YWdlIiwib25DaGFuZ2VCb29rbWFya1BhZ2UiLCJ2aXNpYmxlU3RhZ2UiLCJUZXh0IiwicGFyYWdyYXBocyIsImRlZmF1bHRXaWRlRm9ybWF0IiwiTGluayIsImlzUm9vdCIsImltZ1NyYyIsInJlbmRlckxlZnQiLCJsaW5rcyIsInRpdGxlQ29udGVudCIsIkxpbmtzIiwicmVuZGVyUmlnaHQiLCJmcmFtZUVsZW1lbnQiLCJzY3JvbGxNb2RlIiwiaW5saW5lIiwic2tpcE92ZXJmbG93SGlkZGVuRWxlbWVudHMiLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsIiQiLCJpc09wdGlvbnNPYmplY3QiLCJTY3JvbGxzcHkiLCJpdGVtUmVmcyIsInVwZGF0ZVNjcm9sbFZhbHVlcyIsImNoaWxkSGVpZ2h0IiwibWF4SXRlbXNJblZpZXciLCJnZXRDb250YWluZXJWYWx1ZXMiLCJsYXN0SXRlbUluZGV4SW5WaWV3IiwidXBkYXRlRmlyc3RJdGVtSW5kZXhJblZpZXciLCJzY3JvbGxUb0xpc3RJdGVtIiwiaW5WaWV3U3RhdGUiLCJpc1RhcmdldEF0dGFjaGVkIiwiaXNDb25uZWN0ZWQiLCJiZWhhdmlvciIsImNvbXB1dGVPcHRpb25zIiwiZ2V0T3B0aW9ucyIsImNhblNtb290aFNjcm9sbCIsImRlZmF1bHRCZWhhdmlvciIsImluaXRTZWN0aW9ucyIsInNhdmVBY3RpdmVJdGVtcyIsInNjcm9sbEJ5Q2xpY2siLCJoYW5kbGVTY3JvbGxEZWJvdW5jZWQiLCJoYW5kbGVTZWN0aW9uQ2xpY2siLCJvblNlY3Rpb25DbGljayIsInBhdXNlU2Nyb2xsSGFuZGxlciIsInRhcmdldEl0ZW1zIiwiZmlyc3RJdGVtSW5kZXhJblZpZXciLCJpbml0SXRlbXMiLCJjdXJyZW50Q2xhc3NOYW1lIiwiQ2hpbGRUYWciLCJjaGlsZENsYXNzTmFtZXMiLCJzeW5jU2Nyb2xsIiwiaXRlbUluVmlldyIsImVuZElzTmVhciIsInZpc2libGVJdGVtcyIsImdldFZpZXdTdGF0ZSIsInZpc2libGVJdGVtT2Zmc2V0IiwiaXNPbmVBY3RpdmUiLCJwdXJlSGFzaCIsImlzVmlzaWJsZUl0ZW0iLCJzZWN0aW9uT2Zmc2V0IiwicmVuZGVyU2VjdGlvbiIsInByZXZTZWN0aW9ucyIsImhlYWRpbmciLCJpc0NoaWxkIiwicmVuZGVyU2VjdGlvbnMiLCJoZWFkaW5ncyIsInNlY3Rpb25IcmVmcyIsInByZXZIcmVmcyIsIml0ZW1IcmVmIiwic3ViSXRlbXMiLCJpc0xhc3QiLCJoYXNVcmwiLCJmbGF0VG9jIiwiZ2V0U3RhdGUiLCJmaXhlZCIsInByZXZJdGVtIiwibmV4dEl0ZW0iLCJyZW5kZXJDb250cm9sIiwidG9jSXRlbSIsImlzTmV4dCIsImtleUhpbnQiLCJyZW5kZXJMaW5rIiwicHJvY2Vzc0l0ZW1zIiwiaXNmZiIsImFkZEV2ZW50IiwidXNlQ2FwdHVyZSIsImdldE1vZHMiLCJnZXRLZXlzIiwiX2tleU1hcCIsImJhY2tzcGFjZSIsInNwYWNlIiwiZGVsIiwiaW5zIiwiaG9tZSIsInBhZ2V1cCIsInBhZ2Vkb3duIiwiY2Fwc2xvY2siLCJudW1fMCIsIm51bV8xIiwibnVtXzIiLCJudW1fMyIsIm51bV80IiwibnVtXzUiLCJudW1fNiIsIm51bV83IiwibnVtXzgiLCJudW1fOSIsIm51bV9tdWx0aXBseSIsIm51bV9hZGQiLCJudW1fZW50ZXIiLCJudW1fc3VidHJhY3QiLCJudW1fZGVjaW1hbCIsIm51bV9kaXZpZGUiLCJfbW9kaWZpZXIiLCJhbHQiLCJjdHJsIiwiY21kIiwiY29tbWFuZCIsIm1vZGlmaWVyTWFwIiwiX21vZHMiLCJfaGFuZGxlcnMiLCJfZG93bktleXMiLCJ3aW5MaXN0ZW5kRm9jdXMiLCJfc2NvcGUiLCJlbGVtZW50SGFzQmluZEV2ZW50Iiwic2V0U2NvcGUiLCJzY29wZSIsImdldFNjb3BlIiwiZWFjaFVuYmluZCIsIl9yZWYkc3BsaXRLZXkiLCJzcGxpdEtleSIsIm9yaWdpbktleSIsInVuYmluZEtleXMiLCJyZWNvcmQiLCJhMSIsImEyIiwiYXJyMSIsImNvbXBhcmVBcnJheSIsImV2ZW50SGFuZGxlciIsIm1vZGlmaWVyc01hdGNoIiwic2hvcnRjdXQiLCJhc3RlcmlzayIsImtleU5hbWUiLCJrZXlOdW0iLCJrZXlkb3duIiwia2V5dXAiLCJrZXlTaG9ydGN1dCIsIl9kb3duS2V5c0N1cnJlbnQiLCJpc0VsZW1lbnRCaW5kIiwiY2xlYXJNb2RpZmllciIsIl9hcGkiLCJkZWxldGVTY29wZSIsIm5ld1Njb3BlIiwiaGFuZGxlcnMiLCJnZXRQcmVzc2VkS2V5Q29kZXMiLCJpc1ByZXNzZWQiLCJyZWFkT25seSIsInRyaWdnZXIiLCJ1bmJpbmQiLCJrZXlzSW5mbyIsImluZm8iLCJrZXlNYXAiLCJfaG90a2V5cyIsImhvdGtleXMiLCJ0YWdGaWx0ZXIiLCJlbmFibGVPblRhZ3MiLCJ0YXJnZXRUYWdOYW1lIiwidXNlSG90a2V5cyIsIl9yZWYyJGZpbHRlclByZXZlbnREZSIsImZpbHRlclByZXZlbnREZWZhdWx0IiwiX3JlZjIkZW5hYmxlZCIsIl9yZWYyJGVuYWJsZU9uQ29udGVudCIsImVuYWJsZU9uQ29udGVudEVkaXRhYmxlIiwibWVtb2lzZWRDYWxsYmFjayIsImtleWJvYXJkRXZlbnQiLCJob3RrZXlzRXZlbnQiLCJfa2V5Ym9hcmRFdmVudCR0YXJnZXQiLCJfcmVmJGN1cnJlbnQiLCJzZWFyY2hRdWVyeSIsInNlYXJjaEN1cnJlbnRJbmRleCIsInNlYXJjaENvdW50UmVzdWx0cyIsIm9uQ2xpY2tQcmV2U2VhcmNoIiwib25DbGlja05leHRTZWFyY2giLCJvbkNsb3NlU2VhcmNoQmFyIiwiaG90a2V5c09wdGlvbnMiLCJob3RrZXlzUHJldiIsImhvdGtleXNOZXh0IiwiZ2V0RWxlbWVudE9mZnNldCIsImdldEl0ZW1JbmRleEluVmlldyIsImdldEhpZ2hsaWdodGVkSXRlbUluZGV4SW5WaWV3IiwiaGlnaGxpZ2h0ZWRET01FbGVtZW50cyIsImFuY2hvckVsIiwiZmlyc3RJbmRleEluVmlldyIsImZpcnN0SW5kZXhPdXRWaWV3Qm90dG9tIiwibGFzdEluZGV4T3V0Vmlld1RvcCIsIkNMQVNTTkFNRSIsIkNMQVNTTkFNRV9TRUxFQ1RFRCIsIkhJR0hMSUdIVF9PUFRJT05TIiwiZ2V0TmFtZSIsImNvbnRyaWJ1dG9yIiwidXNlRnVsbE5hbWUiLCJnZXRVc2VySWRlbnRpZmljYXRvciIsImxvZ2luIiwiQXZhdGFyU2l6ZXMiLCJwcmV2ZW50RGVmYXVsdEJ5Q29tcG9uZW50IiwiaW5EZXRhaWxzIiwiaXNSZWRpcmVjdCIsImF2YXRhckRhdGEiLCJwb3B1cERhdGEiLCJTTUFMTCIsImNoYW5nZVZpc2libGlsaXR5UG9wdXAiLCJhdmF0YXIiLCJvbk1vdXNlT3ZlciIsIm9uVG91Y2hTdGFydCIsIm9uVG91Y2hFbmQiLCJpbml0aWFscyIsImdldEluaXRpYWxzIiwiY29udHJpYnV0b3JzIiwiY29udHJpYnV0b3JzRGV0YWlscyIsImF1dGhvciIsIkJJRyIsImF2YXRhckltZyIsImdldENvbnRyaWJ1dG9yRGV0YWlscyIsIkJPVFRPTSIsImF2YXRhcnNTaXplIiwiY29udHJpYnV0b3JzQ291bnQiLCJjb250cmlidXRvcnNDb3VudFN0cmluZyIsImF2YXRhclNpemUiLCJnZXRSZWRpcmVjdGluZ0F2YXRhciIsImlzQXV0aG9yIiwib25seUF1dGhvciIsIm9uZUF2YXRhciIsIndyYXBwZXJNb2RpZmllcnMiLCJnZXRPbmVBdmF0YXIiLCJkaXNwbGF5ZWRDb250cmlidXRvcnMiLCJoaWRkZW5Db250cmlidXRvcnMiLCJkaXNwbGF5ZWRBdmF0YXJzIiwiaGlkZGVuQXZhdGFycyIsInVzZXJzIiwidHJhbnNsYXRpb25OYW1lIiwia2V5RE9NIiwiYm9keVJlZiIsImJvZHlPYnNlcnZlciIsImhhbmRsZUJvZHlNdXRhdGlvbiIsIm11dGF0aW9uc0xpc3QiLCJvbkNvbnRlbnRNdXRhdGlvbiIsIm9uQ29udGVudExvYWRlZCIsImFkZExpbmtzVG9PcmlnaW5hbEFydGljbGUiLCJtdXRhdGlvbiIsInNldEJvZHlSZWYiLCJjb252ZXJ0UGF0aFRvT3JpZ2luYWxBcnRpY2xlIiwiZ2VuZXJhdGVQYXRoVG9WY3MiLCJsaW5rV3JhcHBlckVsIiwiYW5jaG9ycyIsImxpbmtUb09yaWdpbmFsIiwidmNzSHJlZiIsImxpbmtUb1ZjcyIsImdldElzVmVydGljYWxWaWV3IiwicmVuZGVyU2VhcmNoQmFyIiwic2hvd1NlYXJjaEJhciIsImFkZEJvZHlPYnNlcnZlciIsImhpZGVNaW5pVG9jIiwicmVuZGVyQnJlYWRjcnVtYnMiLCJyZW5kZXJDb250cm9scyIsInJlbmRlclRpdGxlIiwicmVuZGVyUGFnZUNvbnRyaWJ1dG9ycyIsInJlbmRlckNvbnRlbnRNaW5pVG9jIiwicmVuZGVyQm9keSIsInJlbmRlckZlZWRiYWNrIiwicmVuZGVyVG9jTmF2UGFuZWwiLCJyZW5kZXJMb2FkZXIiLCJyZW5kZXJBc2lkZU1pbmlUb2MiLCJlbXB0eUhlYWRlck9yU2luZ2xlUGFnZSIsInNvbG9IZWFkZXJXaXRoQ2hpbGRyZW4iLCJicmVhZGNydW1icyIsImhpZGVDb250cmlidXRvcnMiLCJyZW5kZXJBdXRob3IiLCJyZW5kZXJDb250cmlidXRvcnMiLCJpdGVtVGl0bGUiLCJpdGVtTGV2ZWwiLCJXaWRlIiwiaXNFZGl0YWJsZSIsImVkaXRhYmxlIiwiaGlkZUNvbnRyb2xzIiwiaGlkZUVkaXRDb250cm9sIiwiU2VhcmNoV29yZHNIaWdobGlnaHRlciIsInNlYXJjaFdvcmRzIiwib25Ob3RGb3VuZFdvcmRzIiwiX29uQ29udGVudE11dGF0aW9uIiwiX29uQ29udGVudExvYWRlZCIsInN5bmNPblNjcm9sbCIsInNldFN5bmNPblNjcm9sbCIsInN0b3BTeW5jT25TY3JvbGwiLCJoaWdobGlnaHRlZEh0bWwiLCJzZWFyY2hCYXJJc1Zpc2libGUiLCJ3YXNDaGFuZ2VkRE9NIiwic2V0SGlnaGxpZ2h0ZWRIdG1sIiwiaGlnaGxpZ2h0ZWRSZXN1bHQiLCJ0bXBEaXYiLCJoaWdobGlnaHQiLCJ1c2VIaWdobGlnaHRlZEhUTUxTdHJpbmciLCJzZXRXYXNDaGFuZ2VkRE9NIiwidXNlQ2FsbGJhY2tET01DaGFuZ2UiLCJjYWNoZWRIaWdobGlnaHRlZERPTUVsZW1lbnRzIiwidXNlSGlnaGxpZ2h0ZWRET01FbGVtZW50cyIsInNldFNlYXJjaEJhcklzVmlzaWJsZSIsInVzZVNlYXJjaEJhcklzVmlzaWJsZSIsInVzZU5vU2VhcmNoV29yZHNGb3VuZEVmZmVjdCIsInVzZUhpZ2hsaWdodGVkU2VhcmNoV29yZHMiLCJzZXRTZWFyY2hDdXJyZW50SW5kZXgiLCJzZXRTZWFyY2hDb3VudFJlc3VsdHMiLCJ1c2VTZWFyY2hCYXJOYXZpZ2F0aW9uIiwidXNlQ3VycmVudFdvcmRTZWxlY3Rpb25FZmZlY3QiLCJzY3JvbGxFbmRUaW1lciIsImhpZ2hsaWdodGVkSXRlbUluZGV4SW5WaWV3IiwiaGFuZGxlU2Nyb2xsVGhyb3R0bGVkIiwidXNlQ3VycmVudFdvcmRTZWxlY3Rpb25TeW5jU2Nyb2xsRWZmZWN0IiwidXNlU2VhcmNoQmFyIiwiREVGQVVMVF9VU0VSX1NFVFRJTkdTIiwiZ2V0U2V0dGluZyIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsInN0clRvQm9vbGVhbiIsIndpdGhTYXZpbmdTZXR0aW5nIiwic2V0dGluZ05hbWUiLCJzZXRJdGVtIiwic2F2ZVNldHRpbmciLCJlbGxpcHNpcyIsIndvcmRCcmVhayIsIndzIiwiYXMiLCJUYWciLCJpc1R5cGVTZWxlY3Rpb24iLCJpc1R5cGVDb250YWluZXIiLCJpc0NsaWNrYWJsZSIsImRlZmF1bHRUaGVtZSIsImNsaWNrYWJsZSIsIkNvcHlUb0NsaXBib2FyZFN0YXR1cyIsInJlbmRlclN0YXR1c1BhdGgiLCJTVEFUVVNfUEFUSCIsIlN1Y2Nlc3MiLCJQZW5kaW5nIiwiSU5JVElBTF9TVEFUVVMiLCJoYW5kbGVDb3B5IiwiYnV0dG9uUmVmIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInRocm93IiwiZGVmaW5lIiwiZ2FwIiwiY3JlYXRlT25DaGFuZ2UiLCJleGFtcGxlIiwib25jaGFuZ2UiLCJyZXF1aXJlZCIsInZhbGlkYXRlIiwicmVzcG9uc2UiLCJmaWxlIiwiY3JlYXRlT2JqZWN0VVJMIiwiYmxvYiIsInJldm9rZU9iamVjdFVSTCIsImRvd25sb2FkIiwiaGVhZGVycyIsImpzb24iLCJyZXF1ZXN0Iiwic2VjdXJpdHkiLCJzY2hlbWEiLCJVUkxTZWFyY2hQYXJhbXMiLCJmZXRjaCIsInBhdGhQYXJhbXMiLCJzZWFyY2hQYXJhbXMiLCJtciIsIkFwcCIsImRvY1NldHRpbmdzIiwiZGVmYXVsdFRleHRTaXplIiwiZGVmYXVsdFNob3dNaW5pVG9jIiwiZGVmYXVsdEZ1bGxTY3JlZW4iLCJnZXREb2NTZXR0aW5ncyIsImlzTW9iaWxlVmlldyIsInNldElzTW9iaWxlVmlldyIsIl91c2VTdGF0ZTQiLCJzZXRXaWRlRm9ybWF0IiwiX3VzZVN0YXRlNiIsInNldEZ1bGxTY3JlZW4iLCJfdXNlU3RhdGU4Iiwic2V0U2hvd01pbmlUb2MiLCJfdXNlU3RhdGUxMCIsInNldFRoZW1lIiwiX3VzZVN0YXRlMTIiLCJzZXRUZXh0U2l6ZSIsInBhZ2VQcm9wcyIsIm9uUmVzaXplSGFuZGxlciIsInRoZW1lQ2xhc3NOYW1lIiwibW9iaWxlQ2xhc3NOYW1lIiwidXBkYXRlUm9vdENsYXNzTmFtZSIsInJlbmRlck1lcm1haWQiLCJtZXJtYWlkIiwic2V0TWVybWFpZCIsIl9fYXN5bmMiLCJfX3RoaXMiLCJfX2FyZ3VtZW50cyIsImdlbmVyYXRvciIsImluaXRpYWxpemUiLCJydW4iLCJmdWxmaWxsZWQiLCJyZWplY3RlZCIsIm1lcm1haWRKc29ucCIsInVzZU1lcm1haWQiLCJSZWFjdCIsIkRvY0xlYWRpbmdQYWdlIiwiX2V4dGVuZHMiLCJEb2NQYWdlIiwiT3BlbmFwaVNhbmRib3giLCJfX0RBVEFfXyIsIlNUQVRJQ19DT05URU5UIl0sInNvdXJjZVJvb3QiOiIifQ==