@zinejs/pdf 0.7.4 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -2
- package/dist/index.js +49 -48
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/dist/pdfSource.d.ts +8 -0
- package/package.json +3 -3
package/dist/index.umd.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ZineJS=e.ZineJS||{}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=256*1024*1024,n=.35,r=6;function i(e){typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement&&(e.width=0,e.height=0)}function a(e){return typeof e==`object`&&!!e&&`numPages`in e&&typeof e.getPage==`function`}function o(e){try{let t=new URL(e,`http://x`).pathname.split(`/`).filter(Boolean).pop();return t&&/\.[a-z0-9]+$/i.test(t)?decodeURIComponent(t):`document.pdf`}catch{return`document.pdf`}}async function s(){let e=globalThis;return e.pdfjsLib?e.pdfjsLib:await import(`pdfjs-dist`)}e.PdfSource=class{pageCount=0;#e;#t;#n;#r;#i=null;#a;#o;#s;#c=null;#l=new Map;#u=0;#d=null;#f=new Map;#p=new Map;constructor(e,n={}){this.#e=e,this.#t=n.workerSrc,this.#n=n.renderScale??1,this.#r=n.preload??1,this.#a=n.maxCacheBytes??t,this.#o=n.progressive??!1,this.#s=n.disableAutoFetch??!1}onPageUpdate(e){this.#d=e}onProgress(e){this.#c=e}async open(){if(a(this.#e))this.#i=this.#e;else{let e=await s();e.GlobalWorkerOptions.workerSrc=this.#m(e.GlobalWorkerOptions.workerSrc);let t=typeof this.#e==`string`?{url:this.#e}:{data:this.#e};this.#s&&(t.disableAutoFetch=!0);let n=e.getDocument(t);this.#c&&(n.onProgress=this.#c),this.#i=await n.promise}this.pageCount=this.#i.numPages}#m(e){if(this.#t)return this.#t;if(e)return e;try{return(() => { throw new Error('PdfSource: pass workerSrc for UMD/CDN'); })()}catch{throw Error(`PdfSource: couldn't auto-resolve pdf.js's worker. Pass a \`workerSrc\` URL (see the @zinejs/pdf README, "The pdf.js worker"), set pdfjs GlobalWorkerOptions.workerSrc yourself, or pass a pre-created pdf.js document.`)}}get(e,t){if(t&&t.scale>1)return this.#b(e,t.scale);let n=this.#_(e);for(let t=1;t<=this.#r;t++)this.prefetch([e-t,e+t]);return n}prefetch(e){for(let t of e)t>=0&&t<this.pageCount&&this.#_(t).catch(()=>{})}getText(e){let t=this.#p.get(e);if(t)return t;let n=this.#g(e).catch(()=>``);return this.#p.set(e,n),n}async getOutline(){let e=this.#i;if(!e||typeof e.getOutline!=`function`)return[];let t;try{t=await e.getOutline()}catch{return[]}if(!t?.length)return[];let n=async e=>Promise.all(e.map(async e=>({title:(e.title??``).trim()||`Untitled`,page:await this.#h(e.dest),children:e.items?.length?await n(e.items):[]})));return n(t)}async#h(e){let t=this.#i;if(!t||e==null)return null;try{let n=(typeof e==`string`?await t.getDestination?.(e):e)?.[0];if(n==null)return null;if(typeof n==`number`)return n;let r=await t.getPageIndex?.(n);return typeof r==`number`?r:null}catch{return null}}async getDownload(){let e=this.#e;if(typeof e==`string`)return{url:e,filename:o(e)};if(e instanceof ArrayBuffer||ArrayBuffer.isView(e)){let t=new Blob([e],{type:`application/pdf`});return{url:URL.createObjectURL(t),filename:`document.pdf`,revoke:!0}}return null}async#g(e){if(this.#i===null)throw Error(`PdfSource: use after open() — the document is not loaded.`);let t=await this.#i.getPage(e+1);if(typeof t.getTextContent!=`function`)return``;let n=await t.getTextContent(),r=``;for(let e of n.items)typeof e.str==`string`&&(r+=e.str,r+=e.hasEOL?`
|
|
2
|
-
`:``);return r}destroy(){this.#i?.destroy?.(),this.#
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ZineJS=e.ZineJS||{}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=256*1024*1024,n=.35,r=6;function i(e){typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement&&(e.width=0,e.height=0)}function a(e){return typeof e==`object`&&!!e&&`numPages`in e&&typeof e.getPage==`function`}function o(e){try{let t=new URL(e,`http://x`).pathname.split(`/`).filter(Boolean).pop();return t&&/\.[a-z0-9]+$/i.test(t)?decodeURIComponent(t):`document.pdf`}catch{return`document.pdf`}}async function s(e){let t=globalThis;return t.pdfjsLib?t.pdfjsLib:e?await import(`pdfjs-dist/legacy/build/pdf.mjs`):await import(`pdfjs-dist`)}e.PdfSource=class{pageCount=0;#e;#t;#n;#r;#i=null;#a;#o;#s;#c;#l=null;#u=new Map;#d=0;#f=null;#p=new Map;#m=new Map;constructor(e,n={}){this.#e=e,this.#t=n.workerSrc,this.#n=n.renderScale??1,this.#r=n.preload??1,this.#a=n.maxCacheBytes??t,this.#o=n.progressive??!1,this.#s=n.disableAutoFetch??!1,this.#c=n.legacy??!0}onPageUpdate(e){this.#f=e}onProgress(e){this.#l=e}async open(){if(a(this.#e))this.#i=this.#e;else{let e=await s(this.#c);e.GlobalWorkerOptions.workerSrc=this.#h(e.GlobalWorkerOptions.workerSrc);let t=typeof this.#e==`string`?{url:this.#e}:{data:this.#e};this.#s&&(t.disableAutoFetch=!0);let n=e.getDocument(t);this.#l&&(n.onProgress=this.#l),this.#i=await n.promise}this.pageCount=this.#i.numPages}#h(e){if(this.#t)return this.#t;if(e)return e;try{return this.#c?new URL(`data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KLyoqCiAqIHBkZmpzVmVyc2lvbiA9IDYuMi4xMDgKICogcGRmanNCdWlsZCA9IDAzNjVjYmRlMAogKi92YXIgZT17OTMwNihlLHQsbil7dmFyIGE9big0OTAxKSxyPW4oNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2KGUsdCxuKXt2YXIgYT1uKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODAoZSx0LG4pe3ZhciBhPW4oNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sMzQ2MyhlKXt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTt0aHJvdyBuZXcgdCgiQXJndW1lbnQgaXMgbm90IGEgc3RyaW5nIil9fSw0MzI4KGUsdCxuKXt2YXIgYT1uKDQ5OTUpLHI9bmV3IGEuV2Vha01hcCxzPWEuc2V0LGk9YS5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3MocixlLDEpO2kocixlKTtyZXR1cm4gZX19LDY1NTcoZSx0LG4pe3ZhciBhPW4oNDk5NSkuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjQ2OShlLHQsbil7dmFyIGE9big4MjI3KSxyPW4oMjM2MCkscz1uKDQ5MTMpLmYsaT1hKCJ1bnNjb3BhYmxlcyIpLG89QXJyYXkucHJvdG90eXBlO3ZvaWQgMD09PW9baV0mJnMobyxpLHtjb25maWd1cmFibGU6ITAsdmFsdWU6cihudWxsKX0pO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtvW2ldW2VdPSEwfX0sNjc5KGUsdCxuKXt2YXIgYT1uKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDM5NzIoZSx0LG4pe3ZhciBhPW4oMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lfHxhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpfX0sODU1MShlLHQsbil7dmFyIGE9bigzNCkscj1TdHJpbmcscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhbiBvYmplY3QiKX19LDQxNTQoZSx0LG4pe3ZhciBhPW4oNjk1NSkscj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJVaW50OEFycmF5Ij09PWEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHIoIkFyZ3VtZW50IGlzIG5vdCBhbiBVaW50OEFycmF5Iil9fSw3ODExKGUpe2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3fSw3Mzk0KGUsdCxuKXt2YXIgYT1uKDQ1NzYpLHI9big2NzA2KSxzPW4oMjE5NSksaT1hLkFycmF5QnVmZmVyLG89YS5UeXBlRXJyb3I7ZS5leHBvcnRzPWkmJnIoaS5wcm90b3R5cGUsImJ5dGVMZW5ndGgiLCJnZXQiKXx8ZnVuY3Rpb24oZSl7aWYoIkFycmF5QnVmZmVyIiE9PXMoZSkpdGhyb3cgbmV3IG8oIkFycmF5QnVmZmVyIGV4cGVjdGVkIik7cmV0dXJuIGUuYnl0ZUxlbmd0aH19LDMyMzgoZSx0LG4pe3ZhciBhPW4oNDU3Nikscj1uKDc4MTEpLHM9big3Mzk0KSxpPWEuRGF0YVZpZXc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFyfHwwIT09cyhlKSlyZXR1cm4hMTt0cnl7bmV3IGkoZSk7cmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITB9fX0sNTE2OShlLHQsbil7dmFyIGE9bigzMjM4KSxyPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoYShlKSl0aHJvdyBuZXcgcigiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtyZXR1cm4gZX19LDQ2NDQoZSx0LG4pe3ZhciBhLHIscyxpPW4oNzgxMSksbz1uKDM3MjQpLGw9big0NTc2KSxmPW4oNDkwMSksYz1uKDM0KSxoPW4oOTI5NyksdT1uKDY5NTUpLG09big2ODIzKSxwPW4oNjY5OSksZD1uKDY4NDApLGc9bigyMTA2KSxiPW4oMTYyNSksdz1uKDI3ODcpLGo9bigyOTY3KSxrPW4oODIyNykseT1uKDMzOTIpLHE9bigxMTgxKSx2PXEuZW5mb3JjZSxTPXEuZ2V0LHg9bC5JbnQ4QXJyYXksQz14JiZ4LnByb3RvdHlwZSxUPWwuVWludDhDbGFtcGVkQXJyYXksTz1UJiZULnByb3RvdHlwZSxSPXgmJncoeCksRD1DJiZ3KEMpLEg9T2JqZWN0LnByb3RvdHlwZSxNPWwuVHlwZUVycm9yLE49aygidG9TdHJpbmdUYWciKSxfPXkoIlRZUEVEX0FSUkFZX1RBRyIpLEU9IlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsej1pJiYhIWomJiJPcGVyYSIhPT11KGwub3BlcmEpLEw9ITEsVT17SW50OEFycmF5OjEsVWludDhBcnJheToxLFVpbnQ4Q2xhbXBlZEFycmF5OjEsSW50MTZBcnJheToyLFVpbnQxNkFycmF5OjIsSW50MzJBcnJheTo0LFVpbnQzMkFycmF5OjQsRmxvYXQzMkFycmF5OjQsRmxvYXQ2NEFycmF5Ojh9LFc9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSxnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I9ZnVuY3Rpb24oZSl7dmFyIHQ9dyhlKTtpZihjKHQpKXt2YXIgbj1TKHQpO3JldHVybiBuJiZoKG4sRSk/bltFXTpnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IodCl9fSxpc1R5cGVkQXJyYXk9ZnVuY3Rpb24oZSl7aWYoIWMoZSkpcmV0dXJuITE7dmFyIHQ9dShlKTtyZXR1cm4gaChVLHQpfHxoKFcsdCl9O2ZvcihhIGluIFUpKHM9KHI9bFthXSkmJnIucHJvdG90eXBlKT92KHMpW0VdPXI6ej0hMTtmb3IoYSBpbiBXKShzPShyPWxbYV0pJiZyLnByb3RvdHlwZSkmJih2KHMpW0VdPXIpO2lmKCF6fHwhZihSKXx8Uj09PUZ1bmN0aW9uLnByb3RvdHlwZSl7Uj1mdW5jdGlvbiBUeXBlZEFycmF5KCl7dGhyb3cgbmV3IE0oIkluY29ycmVjdCBpbnZvY2F0aW9uIil9O2lmKHopZm9yKGEgaW4gVSlsW2FdJiZqKGxbYV0sUil9aWYoIXp8fCFEfHxEPT09SCl7RD1SLnByb3RvdHlwZTtpZih6KWZvcihhIGluIFUpbFthXSYmaihsW2FdLnByb3RvdHlwZSxEKX16JiZ3KE8pIT09RCYmaihPLEQpO2lmKG8mJiFoKEQsTikpe0w9ITA7ZyhELE4se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYyh0aGlzKT90aGlzW19dOnZvaWQgMH19KTtmb3IoYSBpbiBVKWxbYV0mJnAobFthXS5wcm90b3R5cGUsXyxhKX1lLmV4cG9ydHM9e05BVElWRV9BUlJBWV9CVUZGRVJfVklFV1M6eixUWVBFRF9BUlJBWV9UQUc6TCYmXyxhVHlwZWRBcnJheTpmdW5jdGlvbihlKXtpZihpc1R5cGVkQXJyYXkoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IE0oIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKGUpe2lmKGYoZSkmJighanx8YihSLGUpKSlyZXR1cm4gZTt0aHJvdyBuZXcgTShtKGUpKyIgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IiKX0sZXhwb3J0VHlwZWRBcnJheU1ldGhvZDpmdW5jdGlvbihlLHQsbixhKXtpZihvKXtpZihuKWZvcih2YXIgciBpbiBVKXt2YXIgcz1sW3JdO2lmKHMmJmgocy5wcm90b3R5cGUsZSkpdHJ5e2RlbGV0ZSBzLnByb3RvdHlwZVtlXX1jYXRjaChuKXt0cnl7cy5wcm90b3R5cGVbZV09dH1jYXRjaChlKXt9fX1EW2VdJiYhbnx8ZChELGUsbj90OnomJkNbZV18fHQsYSl9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYSxyO2lmKG8pe2lmKGope2lmKG4pZm9yKGEgaW4gVSlpZigocj1sW2FdKSYmaChyLGUpKXRyeXtkZWxldGUgcltlXX1jYXRjaChlKXt9aWYoUltlXSYmIW4pcmV0dXJuO3RyeXtyZXR1cm4gZChSLGUsbj90OnomJlJbZV18fHQpfWNhdGNoKGUpe319Zm9yKGEgaW4gVSkhKHI9bFthXSl8fHJbZV0mJiFufHxkKHIsZSx0KX19LGdldFR5cGVkQXJyYXlDb25zdHJ1Y3Rvcixpc1ZpZXc6ZnVuY3Rpb24gaXNWaWV3KGUpe2lmKCFjKGUpKXJldHVybiExO3ZhciB0PXUoZSk7cmV0dXJuIkRhdGFWaWV3Ij09PXR8fGgoVSx0KXx8aChXLHQpfSxpc1R5cGVkQXJyYXksVHlwZWRBcnJheTpSLFR5cGVkQXJyYXlQcm90b3R5cGU6RH19LDUzNzAoZSx0LG4pe3ZhciBhPW4oNjE5OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxzPWFyZ3VtZW50cy5sZW5ndGg+Mj9uOmEodCksaT1uZXcgZShzKTtzPnI7KWlbcl09dFtyKytdO3JldHVybiBpfX0sOTYxNyhlLHQsbil7dmFyIGE9big1Mzk3KSxyPW4oNTYxMCkscz1uKDYxOTgpLGNyZWF0ZU1ldGhvZD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuLGkpe3ZhciBvPWEodCksbD1zKG8pO2lmKDA9PT1sKXJldHVybiFlJiYtMTt2YXIgZixjPXIoaSxsKTtpZihlJiZuIT1uKXtmb3IoO2w+YzspaWYoKGY9b1tjKytdKSE9ZilyZXR1cm4hMH1lbHNlIGZvcig7bD5jO2MrKylpZigoZXx8YyBpbiBvKSYmb1tjXT09PW4pcmV0dXJuIGV8fGN8fDA7cmV0dXJuIWUmJi0xfX07ZS5leHBvcnRzPXtpbmNsdWRlczpjcmVhdGVNZXRob2QoITApLGluZGV4T2Y6Y3JlYXRlTWV0aG9kKCExKX19LDQ1MjcoZSx0LG4pe3ZhciBhPW4oMzcyNCkscj1uKDQzNzYpLHM9VHlwZUVycm9yLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPWEmJiFmdW5jdGlvbigpe2lmKHZvaWQgMCE9PXRoaXMpcmV0dXJuITA7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShbXSwibGVuZ3RoIix7d3JpdGFibGU6ITF9KS5sZW5ndGg9MX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCk7ZS5leHBvcnRzPW8/ZnVuY3Rpb24oZSx0KXtpZihyKGUpJiYhaShlLCJsZW5ndGgiKS53cml0YWJsZSl0aHJvdyBuZXcgcygiQ2Fubm90IHNldCByZWFkIG9ubHkgLmxlbmd0aCIpO3JldHVybiBlLmxlbmd0aD10fTpmdW5jdGlvbihlLHQpe3JldHVybiBlLmxlbmd0aD10fX0sNzY4MChlLHQsbil7dmFyIGE9big5NTA0KTtlLmV4cG9ydHM9YShbXS5zbGljZSl9LDI4MDQoZSl7dmFyIHQ9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IixuPXQrIisvIixhPXQrIi1fIixpbnZlcnNlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD17fSxuPTA7bjw2NDtuKyspdFtlLmNoYXJBdChuKV09bjtyZXR1cm4gdH07ZS5leHBvcnRzPXtpMmM6bixjMmk6aW52ZXJzZShuKSxpMmNVcmw6YSxjMmlVcmw6aW52ZXJzZShhKX19LDYzMTkoZSx0LG4pe3ZhciBhPW4oODU1MSkscj1uKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixzKXt0cnl7cmV0dXJuIHM/dChhKG4pWzBdLG5bMV0pOnQobil9Y2F0Y2godCl7cihlLCJ0aHJvdyIsdCl9fX0sMjE5NShlLHQsbil7dmFyIGE9big5NTA0KSxyPWEoe30udG9TdHJpbmcpLHM9YSgiIi5zbGljZSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzKHIoZSksOCwtMSl9fSw2OTU1KGUsdCxuKXt2YXIgYT1uKDIxNDApLHI9big0OTAxKSxzPW4oMjE5NSksaT1uKDgyMjcpKCJ0b1N0cmluZ1RhZyIpLG89T2JqZWN0LGw9IkFyZ3VtZW50cyI9PT1zKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7ZS5leHBvcnRzPWE/czpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIHZvaWQgMD09PWU/IlVuZGVmaW5lZCI6bnVsbD09PWU/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChlKXt9fSh0PW8oZSksaSkpP246bD9zKHQpOiJPYmplY3QiPT09KGE9cyh0KSkmJnIodC5jYWxsZWUpPyJBcmd1bWVudHMiOmF9fSw3NzQwKGUsdCxuKXt2YXIgYT1uKDkyOTcpLHI9big1MDMxKSxzPW4oNzM0NyksaT1uKDQ5MTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciBvPXIodCksbD1pLmYsZj1zLmYsYz0wO2M8by5sZW5ndGg7YysrKXt2YXIgaD1vW2NdO2EoZSxoKXx8biYmYShuLGgpfHxsKGUsaCxmKHQsaCkpfX19LDIyMTEoZSx0LG4pe3ZhciBhPW4oOTAzOSk7ZS5leHBvcnRzPSFhKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe31GLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsO3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEYpIT09Ri5wcm90b3R5cGV9KX0sMjUyOShlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fX0sNjY5OShlLHQsbil7dmFyIGE9bigzNzI0KSxyPW4oNDkxMykscz1uKDY5ODApO2UuZXhwb3J0cz1hP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gci5mKGUsdCxzKDEsbikpfTpmdW5jdGlvbihlLHQsbil7ZVt0XT1uO3JldHVybiBlfX0sNjk4MChlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm57ZW51bWVyYWJsZTohKDEmZSksY29uZmlndXJhYmxlOiEoMiZlKSx3cml0YWJsZTohKDQmZSksdmFsdWU6dH19fSw0NjU5KGUsdCxuKXt2YXIgYT1uKDM3MjQpLHI9big0OTEzKSxzPW4oNjk4MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXthP3IuZihlLHQscygwLG4pKTplW3RdPW59fSwyMTA2KGUsdCxuKXt2YXIgYT1uKDI4Mykscj1uKDQ5MTMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7bi5nZXQmJmEobi5nZXQsdCx7Z2V0dGVyOiEwfSk7bi5zZXQmJmEobi5zZXQsdCx7c2V0dGVyOiEwfSk7cmV0dXJuIHIuZihlLHQsbil9fSw2ODQwKGUsdCxuKXt2YXIgYT1uKDQ5MDEpLHI9big0OTEzKSxzPW4oMjgzKSxpPW4oOTQzMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLG8pe298fChvPXt9KTt2YXIgbD1vLmVudW1lcmFibGUsZj12b2lkIDAhPT1vLm5hbWU/by5uYW1lOnQ7YShuKSYmcyhuLGYsbyk7aWYoby5nbG9iYWwpbD9lW3RdPW46aSh0LG4pO2Vsc2V7dHJ5e28udW5zYWZlP2VbdF0mJihsPSEwKTpkZWxldGUgZVt0XX1jYXRjaChlKXt9bD9lW3RdPW46ci5mKGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohby5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IW8ubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19LDYyNzkoZSx0LG4pe3ZhciBhPW4oNjg0MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gdClhKGUscix0W3JdLG4pO3JldHVybiBlfX0sOTQzMyhlLHQsbil7dmFyIGE9big0NTc2KSxyPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7cihhLGUse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2gobil7YVtlXT10fXJldHVybiB0fX0sMzcyNChlLHQsbil7dmFyIGE9big5MDM5KTtlLmV4cG9ydHM9IWEoZnVuY3Rpb24oKXtyZXR1cm4gNyE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pfSw0MDU1KGUsdCxuKXt2YXIgYT1uKDQ1NzYpLHI9bigzNCkscz1hLmRvY3VtZW50LGk9cihzKSYmcihzLmNyZWF0ZUVsZW1lbnQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaT9zLmNyZWF0ZUVsZW1lbnQoZSk6e319fSw2ODM3KGUpe3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoZT45MDA3MTk5MjU0NzQwOTkxKXRocm93IG5ldyB0KCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtyZXR1cm4gZX19LDg3MjcoZSl7ZS5leHBvcnRzPVsiY29uc3RydWN0b3IiLCJoYXNPd25Qcm9wZXJ0eSIsImlzUHJvdG90eXBlT2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRvTG9jYWxlU3RyaW5nIiwidG9TdHJpbmciLCJ2YWx1ZU9mIl19LDI4MzkoZSx0LG4pe3ZhciBhPW4oNDU3NikubmF2aWdhdG9yLHI9YSYmYS51c2VyQWdlbnQ7ZS5leHBvcnRzPXI/U3RyaW5nKHIpOiIifSw5NTE5KGUsdCxuKXt2YXIgYSxyLHM9big0NTc2KSxpPW4oMjgzOSksbz1zLnByb2Nlc3MsbD1zLkRlbm8sZj1vJiZvLnZlcnNpb25zfHxsJiZsLnZlcnNpb24sYz1mJiZmLnY4O2MmJihyPShhPWMuc3BsaXQoIi4iKSlbMF0+MCYmYVswXTw0PzE6KyhhWzBdK2FbMV0pKTshciYmaSYmKCEoYT1pLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8YVsxXT49NzQpJiYoYT1pLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocj0rYVsxXSk7ZS5leHBvcnRzPXJ9LDY1MTgoZSx0LG4pe3ZhciBhPW4oNDU3Nikscj1uKDczNDcpLmYscz1uKDY2OTkpLGk9big2ODQwKSxvPW4oOTQzMyksbD1uKDc3NDApLGY9bigyNzk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixjLGgsdSxtLHA9ZS50YXJnZXQsZD1lLmdsb2JhbCxnPWUuc3RhdDtpZihuPWQ/YTpnP2FbcF18fG8ocCx7fSk6YVtwXSYmYVtwXS5wcm90b3R5cGUpZm9yKGMgaW4gdCl7dT10W2NdO2g9ZS5kb250Q2FsbEdldFNldD8obT1yKG4sYykpJiZtLnZhbHVlOm5bY107aWYoIWYoZD9jOnArKGc/Ii4iOiIjIikrYyxlLmZvcmNlZCkmJnZvaWQgMCE9PWgpe2lmKHR5cGVvZiB1PT10eXBlb2YgaCljb250aW51ZTtsKHUsaCl9KGUuc2hhbXx8aCYmaC5zaGFtKSYmcyh1LCJzaGFtIiwhMCk7aShuLGMsdSxlKX19fSw5MDM5KGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sODc0NShlLHQsbil7dmFyIGE9big2MTYpLHI9RnVuY3Rpb24ucHJvdG90eXBlLHM9ci5hcHBseSxpPXIuY2FsbDtlLmV4cG9ydHM9Im9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmFwcGx5fHwoYT9pLmJpbmQocyk6ZnVuY3Rpb24oKXtyZXR1cm4gaS5hcHBseShzLGFyZ3VtZW50cyl9KX0sNjA4MChlLHQsbil7dmFyIGE9big3NDc2KSxyPW4oOTMwNikscz1uKDYxNiksaT1hKGEuYmluZCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cihlKTtyZXR1cm4gdm9pZCAwPT09dD9lOnM/aShlLHQpOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX19LDYxNihlLHQsbil7dmFyIGE9big5MDM5KTtlLmV4cG9ydHM9IWEoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe30uYmluZCgpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiBlfHxlLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKX0pfSw5NTY1KGUsdCxuKXt2YXIgYT1uKDYxNikscj1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9YT9yLmJpbmQocik6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShyLGFyZ3VtZW50cyl9fSwzNTAoZSx0LG4pe3ZhciBhPW4oMzcyNCkscj1uKDkyOTcpLHM9RnVuY3Rpb24ucHJvdG90eXBlLGk9YSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPXIocywibmFtZSIpLGw9byYmInNvbWV0aGluZyI9PT1mdW5jdGlvbiBzb21ldGhpbmcoKXt9Lm5hbWUsZj1vJiYoIWF8fGEmJmkocywibmFtZSIpLmNvbmZpZ3VyYWJsZSk7ZS5leHBvcnRzPXtFWElTVFM6byxQUk9QRVI6bCxDT05GSUdVUkFCTEU6Zn19LDY3MDYoZSx0LG4pe3ZhciBhPW4oOTUwNCkscj1uKDkzMDYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dHJ5e3JldHVybiBhKHIoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpW25dKSl9Y2F0Y2goZSl7fX19LDc0NzYoZSx0LG4pe3ZhciBhPW4oMjE5NSkscj1uKDk1MDQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiRnVuY3Rpb24iPT09YShlKSlyZXR1cm4gcihlKX19LDk1MDQoZSx0LG4pe3ZhciBhPW4oNjE2KSxyPUZ1bmN0aW9uLnByb3RvdHlwZSxzPXIuY2FsbCxpPWEmJnIuYmluZC5iaW5kKHMscyk7ZS5leHBvcnRzPWE/aTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcy5hcHBseShlLGFyZ3VtZW50cyl9fX0sOTQ0KGUpe3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5hbHBoYWJldDtpZih2b2lkIDA9PT1ufHwiYmFzZTY0Ij09PW58fCJiYXNlNjR1cmwiPT09bilyZXR1cm4gbnx8ImJhc2U2NCI7dGhyb3cgbmV3IHQoIkluY29ycmVjdCBgYWxwaGFiZXRgIG9wdGlvbiIpfX0sNzc1MShlLHQsbil7dmFyIGE9big0NTc2KSxyPW4oNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8obj1hW2VdLHIobik/bjp2b2lkIDApOmFbZV0mJmFbZV1bdF07dmFyIG59fSwxNzY3KGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm57aXRlcmF0b3I6ZSxuZXh0OmUubmV4dCxkb25lOiExfX19LDg2NDYoZSx0LG4pe3ZhciBhPW4oOTU2NSkscj1uKDg1NTEpLHM9bigxNzY3KSxpPW4oODUxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0JiYic3RyaW5nIj09dHlwZW9mIGV8fHIoZSk7dmFyIG49aShlKTtyZXR1cm4gcyhyKHZvaWQgMCE9PW4/YShuLGUpOmUpKX19LDg1MShlLHQsbil7dmFyIGE9big2OTU1KSxyPW4oNTk2Nikscz1uKDQxMTcpLGk9big2MjY5KSxvPW4oODIyNykoIml0ZXJhdG9yIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCFzKGUpKXJldHVybiByKGUsbyl8fHIoZSwiQEBpdGVyYXRvciIpfHxpW2EoZSldfX0sODEoZSx0LG4pe3ZhciBhPW4oOTU2NSkscj1uKDkzMDYpLHM9big4NTUxKSxpPW4oNjgyMyksbz1uKDg1MSksbD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDwyP28oZSk6dDtpZihyKG4pKXJldHVybiBzKGEobixlKSk7dGhyb3cgbmV3IGwoaShlKSsiIGlzIG5vdCBpdGVyYWJsZSIpfX0sNTk2NihlLHQsbil7dmFyIGE9big5MzA2KSxyPW4oNDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZVt0XTtyZXR1cm4gcihuKT92b2lkIDA6YShuKX19LDM3ODkoZSx0LG4pe3ZhciBhPW4oOTMwNikscj1uKDg1NTEpLHM9big5NTY1KSxpPW4oMTI5MSksbz1uKDE3NjcpLGw9IkludmFsaWQgc2l6ZSIsZj1SYW5nZUVycm9yLGM9VHlwZUVycm9yLGg9TWF0aC5tYXgsU2V0UmVjb3JkPWZ1bmN0aW9uKGUsdCl7dGhpcy5zZXQ9ZTt0aGlzLnNpemU9aCh0LDApO3RoaXMuaGFzPWEoZS5oYXMpO3RoaXMua2V5cz1hKGUua2V5cyl9O1NldFJlY29yZC5wcm90b3R5cGU9e2dldEl0ZXJhdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG8ocihzKHRoaXMua2V5cyx0aGlzLnNldCkpKX0saW5jbHVkZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHModGhpcy5oYXMsdGhpcy5zZXQsZSl9fTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cihlKTt2YXIgdD0rZS5zaXplO2lmKHQhPXQpdGhyb3cgbmV3IGMobCk7dmFyIG49aSh0KTtpZihuPDApdGhyb3cgbmV3IGYobCk7cmV0dXJuIG5ldyBTZXRSZWNvcmQoZSxuKX19LDQ1NzYoZSl7dmFyIGNoZWNrPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLk1hdGg9PT1NYXRoJiZlfTtlLmV4cG9ydHM9Y2hlY2soIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fGNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHRoaXMmJnRoaXMpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfSw5Mjk3KGUsdCxuKXt2YXIgYT1uKDk1MDQpLHI9big4OTgxKSxzPWEoe30uaGFzT3duUHJvcGVydHkpO2UuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbiBoYXNPd24oZSx0KXtyZXR1cm4gcyhyKGUpLHQpfX0sNDIxKGUpe2UuZXhwb3J0cz17fX0sMzk3KGUsdCxuKXt2YXIgYT1uKDc3NTEpO2UuZXhwb3J0cz1hKCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIpfSw1OTE3KGUsdCxuKXt2YXIgYT1uKDM3MjQpLHI9big5MDM5KSxzPW4oNDA1NSk7ZS5leHBvcnRzPSFhJiYhcihmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSw3MDU1KGUsdCxuKXt2YXIgYT1uKDk1MDQpLHI9big5MDM5KSxzPW4oMjE5NSksaT1PYmplY3Qsbz1hKCIiLnNwbGl0KTtlLmV4cG9ydHM9cihmdW5jdGlvbigpe3JldHVybiFpKCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09PXMoZSk/byhlLCIiKTppKGUpfTppfSwzNzA2KGUsdCxuKXt2YXIgYT1uKDk1MDQpLHI9big0OTAxKSxzPW4oNzYyOSksaT1hKEZ1bmN0aW9uLnRvU3RyaW5nKTtyKHMuaW5zcGVjdFNvdXJjZSl8fChzLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSl9KTtlLmV4cG9ydHM9cy5pbnNwZWN0U291cmNlfSwxMTgxKGUsdCxuKXt2YXIgYSxyLHMsaT1uKDg2MjIpLG89big0NTc2KSxsPW4oMzQpLGY9big2Njk5KSxjPW4oOTI5NyksaD1uKDc2MjkpLHU9big2MTE5KSxtPW4oNDIxKSxwPSJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIsZD1vLlR5cGVFcnJvcixnPW8uV2Vha01hcDtpZihpfHxoLnN0YXRlKXt2YXIgYj1oLnN0YXRlfHwoaC5zdGF0ZT1uZXcgZyk7Yi5nZXQ9Yi5nZXQ7Yi5oYXM9Yi5oYXM7Yi5zZXQ9Yi5zZXQ7YT1mdW5jdGlvbihlLHQpe2lmKGIuaGFzKGUpKXRocm93IG5ldyBkKHApO3QuZmFjYWRlPWU7Yi5zZXQoZSx0KTtyZXR1cm4gdH07cj1mdW5jdGlvbihlKXtyZXR1cm4gYi5nZXQoZSl8fHt9fTtzPWZ1bmN0aW9uKGUpe3JldHVybiBiLmhhcyhlKX19ZWxzZXt2YXIgdz11KCJzdGF0ZSIpO21bd109ITA7YT1mdW5jdGlvbihlLHQpe2lmKGMoZSx3KSl0aHJvdyBuZXcgZChwKTt0LmZhY2FkZT1lO2YoZSx3LHQpO3JldHVybiB0fTtyPWZ1bmN0aW9uKGUpe3JldHVybiBjKGUsdyk/ZVt3XTp7fX07cz1mdW5jdGlvbihlKXtyZXR1cm4gYyhlLHcpfX1lLmV4cG9ydHM9e3NldDphLGdldDpyLGhhczpzLGVuZm9yY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSk/cihlKTphKGUse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuO2lmKCFsKHQpfHwobj1yKHQpKS50eXBlIT09ZSl0aHJvdyBuZXcgZCgiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK2UrIiByZXF1aXJlZCIpO3JldHVybiBufX19fSw0MjA5KGUsdCxuKXt2YXIgYT1uKDgyMjcpLHI9big2MjY5KSxzPWEoIml0ZXJhdG9yIiksaT1BcnJheS5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiYoci5BcnJheT09PWV8fGlbc109PT1lKX19LDQzNzYoZSx0LG4pe3ZhciBhPW4oMjE5NSk7ZS5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uIGlzQXJyYXkoZSl7cmV0dXJuIkFycmF5Ij09PWEoZSl9fSwxMTA4KGUsdCxuKXt2YXIgYT1uKDY5NTUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiJCaWdJbnQ2NEFycmF5Ij09PXR8fCJCaWdVaW50NjRBcnJheSI9PT10fX0sNDkwMShlKXt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7ZS5leHBvcnRzPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT10fTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDI3OTYoZSx0LG4pe3ZhciBhPW4oOTAzOSkscj1uKDQ5MDEpLHM9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1vW2koZSldO3JldHVybiBuPT09Znx8biE9PWwmJihyKHQpP2EodCk6ISF0KX0saT1pc0ZvcmNlZC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHMsIi4iKS50b0xvd2VyQ2FzZSgpfSxvPWlzRm9yY2VkLmRhdGE9e30sbD1pc0ZvcmNlZC5OQVRJVkU9Ik4iLGY9aXNGb3JjZWQuUE9MWUZJTEw9IlAiO2UuZXhwb3J0cz1pc0ZvcmNlZH0sNDExNyhlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9fSwzNChlLHQsbil7dmFyIGE9big0OTAxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlP251bGwhPT1lOmEoZSl9fSwzOTI1KGUsdCxuKXt2YXIgYT1uKDM0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl8fG51bGw9PT1lfX0sNjM5NShlKXtlLmV4cG9ydHM9ITF9LDU4MTAoZSx0LG4pe3ZhciBhPW4oMzQpLHI9bigxMTgxKS5nZXQ7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzUmF3SlNPTihlKXtpZighYShlKSlyZXR1cm4hMTt2YXIgdD1yKGUpO3JldHVybiEhdCYmIlJhd0pTT04iPT09dC50eXBlfX0sNzU3KGUsdCxuKXt2YXIgYT1uKDc3NTEpLHI9big0OTAxKSxzPW4oMTYyNSksaT1uKDcwNDApLG89T2JqZWN0O2UuZXhwb3J0cz1pP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU3ltYm9sIik7cmV0dXJuIHIodCkmJnModC5wcm90b3R5cGUsbyhlKSl9fSw1MDcoZSx0LG4pe3ZhciBhPW4oOTU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIscyxpPW4/ZTplLml0ZXJhdG9yLG89ZS5uZXh0OyEocj1hKG8saSkpLmRvbmU7KWlmKHZvaWQgMCE9PShzPXQoci52YWx1ZSkpKXJldHVybiBzfX0sMjY1MihlLHQsbil7dmFyIGE9big2MDgwKSxyPW4oOTU2NSkscz1uKDg1NTEpLGk9big2ODIzKSxvPW4oNDIwOSksbD1uKDYxOTgpLGY9bigxNjI1KSxjPW4oODEpLGg9big4NTEpLHU9big5NTM5KSxtPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZTt0aGlzLnJlc3VsdD10fSxwPVJlc3VsdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgZCxnLGIsdyxqLGsseSxxPW4mJm4udGhhdCx2PSEoIW58fCFuLkFTX0VOVFJJRVMpLFM9ISghbnx8IW4uSVNfUkVDT1JEKSx4PSEoIW58fCFuLklTX0lURVJBVE9SKSxDPSEoIW58fCFuLklOVEVSUlVQVEVEKSxUPWEodCxxKSxzdG9wPWZ1bmN0aW9uKGUpe3ZhciB0PWQ7ZD12b2lkIDA7dCYmdSh0LCJub3JtYWwiKTtyZXR1cm4gbmV3IFJlc3VsdCghMCxlKX0sY2FsbEZuPWZ1bmN0aW9uKGUpe2lmKHYpe3MoZSk7cmV0dXJuIEM/VChlWzBdLGVbMV0sc3RvcCk6VChlWzBdLGVbMV0pfXJldHVybiBDP1QoZSxzdG9wKTpUKGUpfTtpZihTKWQ9ZS5pdGVyYXRvcjtlbHNlIGlmKHgpZD1lO2Vsc2V7aWYoIShnPWgoZSkpKXRocm93IG5ldyBtKGkoZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGcpKXtmb3IoYj0wLHc9bChlKTt3PmI7YisrKWlmKChqPWNhbGxGbihlW2JdKSkmJmYocCxqKSlyZXR1cm4gajtyZXR1cm4gbmV3IFJlc3VsdCghMSl9ZD1jKGUsZyl9az1TP2UubmV4dDpkLm5leHQ7Zm9yKDshKHk9cihrLGQpKS5kb25lOyl7dmFyIE89eS52YWx1ZTt0cnl7aj1jYWxsRm4oTyl9Y2F0Y2goZSl7aWYoIWQpdGhyb3cgZTt1KGQsInRocm93IixlKX1pZigib2JqZWN0Ij09dHlwZW9mIGomJmomJmYocCxqKSlyZXR1cm4gan1yZXR1cm4gbmV3IFJlc3VsdCghMSl9fSwxMzg1KGUsdCxuKXt2YXIgYT1uKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPWUubGVuZ3RoLTE7cj49MDtyLS0paWYodm9pZCAwIT09ZVtyXSl0cnl7bj1hKGVbcl0uaXRlcmF0b3IsdCxuKX1jYXRjaChlKXt0PSJ0aHJvdyI7bj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IG47cmV0dXJuIG59fSw5NTM5KGUsdCxuKXt2YXIgYT1uKDk1NjUpLHI9big4NTUxKSxzPW4oNTk2Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxvO3IoZSk7dHJ5e2lmKCEoaT1zKGUsInJldHVybiIpKSl7aWYoInRocm93Ij09PXQpdGhyb3cgbjtyZXR1cm4gbn1pPWEoaSxlKX1jYXRjaChlKXtvPSEwO2k9ZX1pZigidGhyb3ciPT09dCl0aHJvdyBuO2lmKG8pdGhyb3cgaTtyKGkpO3JldHVybiBufX0sOTQ2MihlLHQsbil7dmFyIGE9big5NTY1KSxyPW4oMjM2MCkscz1uKDY2OTkpLGk9big2Mjc5KSxvPW4oODIyNyksbD1uKDExODEpLGY9big1OTY2KSxjPW4oNzY1NykuSXRlcmF0b3JQcm90b3R5cGUsaD1uKDI1MjkpLHU9big5NTM5KSxtPW4oMTM4NSkscD1vKCJ0b1N0cmluZ1RhZyIpLGQ9Ikl0ZXJhdG9ySGVscGVyIixnPSJXcmFwRm9yVmFsaWRJdGVyYXRvciIsYj0ibm9ybWFsIix3PSJ0aHJvdyIsaj1sLnNldCxjcmVhdGVJdGVyYXRvclByb3h5UHJvdG90eXBlPWZ1bmN0aW9uKGUpe3ZhciB0PWwuZ2V0dGVyRm9yKGU/ZzpkKTtyZXR1cm4gaShyKGMpLHtuZXh0OmZ1bmN0aW9uIG5leHQoKXt2YXIgbj10KHRoaXMpO2lmKGUpcmV0dXJuIG4ubmV4dEhhbmRsZXIoKTtpZihuLmRvbmUpcmV0dXJuIGgodm9pZCAwLCEwKTt0cnl7dmFyIGE9bi5uZXh0SGFuZGxlcigpO3JldHVybiBuLnJldHVybkhhbmRsZXJSZXN1bHQ/YTpoKGEsbi5kb25lKX1jYXRjaChlKXtuLmRvbmU9ITA7dGhyb3cgZX19LHJldHVybjpmdW5jdGlvbigpe3ZhciBuPXQodGhpcykscj1uLml0ZXJhdG9yLHM9bi5kb25lO24uZG9uZT0hMDtpZihlKXt2YXIgaT1mKHIsInJldHVybiIpO3JldHVybiBpP2EoaSxyKTpoKHZvaWQgMCwhMCl9aWYocylyZXR1cm4gaCh2b2lkIDAsITApO2lmKG4uaW5uZXIpdHJ5e3Uobi5pbm5lci5pdGVyYXRvcixiKX1jYXRjaChlKXtyZXR1cm4gdShyLHcsZSl9aWYobi5vcGVuSXRlcnMpdHJ5e20obi5vcGVuSXRlcnMsYil9Y2F0Y2goZSl7aWYocilyZXR1cm4gdShyLHcsZSk7dGhyb3cgZX1yJiZ1KHIsYik7cmV0dXJuIGgodm9pZCAwLCEwKX19KX0saz1jcmVhdGVJdGVyYXRvclByb3h5UHJvdG90eXBlKCEwKSx5PWNyZWF0ZUl0ZXJhdG9yUHJveHlQcm90b3R5cGUoITEpO3MoeSxwLCJJdGVyYXRvciBIZWxwZXIiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhPWZ1bmN0aW9uIEl0ZXJhdG9yKGEscil7aWYocil7ci5pdGVyYXRvcj1hLml0ZXJhdG9yO3IubmV4dD1hLm5leHR9ZWxzZSByPWE7ci50eXBlPXQ/ZzpkO3IucmV0dXJuSGFuZGxlclJlc3VsdD0hIW47ci5uZXh0SGFuZGxlcj1lO3IuY291bnRlcj0wO3IuZG9uZT0hMTtqKHRoaXMscil9O2EucHJvdG90eXBlPXQ/azp5O3JldHVybiBhfX0sNjg0KGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBJdGVyYXRvciYmSXRlcmF0b3IucHJvdG90eXBlW2VdO2lmKG4pdHJ5e24uY2FsbCh7bmV4dDpudWxsfSx0KS5uZXh0KCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0sNDU0OShlLHQsbil7dmFyIGE9big0NTc2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hLkl0ZXJhdG9yLHI9biYmbi5wcm90b3R5cGUscz1yJiZyW2VdLGk9ITE7aWYocyl0cnl7cy5jYWxsKHtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fSxyZXR1cm46ZnVuY3Rpb24oKXtpPSEwfX0sLTEpfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiB0fHwoaT0hMSl9aWYoIWkpcmV0dXJuIHN9fSw3NjU3KGUsdCxuKXt2YXIgYSxyLHMsaT1uKDkwMzkpLG89big0OTAxKSxsPW4oMzQpLGY9bigyMzYwKSxjPW4oMjc4NyksaD1uKDY4NDApLHU9big4MjI3KSxtPW4oNjM5NSkscD11KCJpdGVyYXRvciIpLGQ9ITE7W10ua2V5cyYmKCJuZXh0ImluKHM9W10ua2V5cygpKT8ocj1jKGMocykpKSE9PU9iamVjdC5wcm90b3R5cGUmJihhPXIpOmQ9ITApOyFsKGEpfHxpKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGFbcF0uY2FsbChlKSE9PWV9KT9hPXt9Om0mJihhPWYoYSkpO28oYVtwXSl8fGgoYSxwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KTtlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOmEsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzpkfX0sNjI2OShlKXtlLmV4cG9ydHM9e319LDYxOTgoZSx0LG4pe3ZhciBhPW4oODAxNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUubGVuZ3RoKX19LDI4MyhlLHQsbil7dmFyIGE9big5NTA0KSxyPW4oOTAzOSkscz1uKDQ5MDEpLGk9big5Mjk3KSxvPW4oMzcyNCksbD1uKDM1MCkuQ09ORklHVVJBQkxFLGY9bigzNzA2KSxjPW4oMTE4MSksaD1jLmVuZm9yY2UsdT1jLmdldCxtPVN0cmluZyxwPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxkPWEoIiIuc2xpY2UpLGc9YSgiIi5yZXBsYWNlKSxiPWEoW10uam9pbiksdz1vJiYhcihmdW5jdGlvbigpe3JldHVybiA4IT09cChmdW5jdGlvbigpe30sImxlbmd0aCIse3ZhbHVlOjh9KS5sZW5ndGh9KSxqPVN0cmluZyhTdHJpbmcpLnNwbGl0KCJTdHJpbmciKSxrPWUuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7IlN5bWJvbCgiPT09ZChtKHQpLDAsNykmJih0PSJbIitnKG0odCksL15TeW1ib2xcKChbXildKilcKS4qJC8sIiQxIikrIl0iKTtuJiZuLmdldHRlciYmKHQ9ImdldCAiK3QpO24mJm4uc2V0dGVyJiYodD0ic2V0ICIrdCk7KCFpKGUsIm5hbWUiKXx8bCYmZS5uYW1lIT09dCkmJihvP3AoZSwibmFtZSIse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwfSk6ZS5uYW1lPXQpO3cmJm4mJmkobiwiYXJpdHkiKSYmZS5sZW5ndGghPT1uLmFyaXR5JiZwKGUsImxlbmd0aCIse3ZhbHVlOm4uYXJpdHl9KTt0cnl7biYmaShuLCJjb25zdHJ1Y3RvciIpJiZuLmNvbnN0cnVjdG9yP28mJnAoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KTplLnByb3RvdHlwZSYmKGUucHJvdG90eXBlPXZvaWQgMCl9Y2F0Y2goZSl7fXZhciBhPWgoZSk7aShhLCJzb3VyY2UiKXx8KGEuc291cmNlPWIoaiwic3RyaW5nIj09dHlwZW9mIHQ/dDoiIikpO3JldHVybiBlfTtGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9ayhmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZ1KHRoaXMpLnNvdXJjZXx8Zih0aGlzKX0sInRvU3RyaW5nIil9LDIyNDgoZSx0LG4pe3ZhciBhPW4oOTUwNCkscj1NYXAucHJvdG90eXBlO2UuZXhwb3J0cz17TWFwLHNldDphKHIuc2V0KSxnZXQ6YShyLmdldCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sNzQxKGUpe3ZhciB0PU1hdGguY2VpbCxuPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uIHRydW5jKGUpe3ZhciBhPStlO3JldHVybihhPjA/bjp0KShhKX19LDc4MTkoZSx0LG4pe3ZhciBhPW4oOTAzOSk7ZS5leHBvcnRzPSFhKGZ1bmN0aW9uKCl7dmFyIGU9IjkwMDcxOTkyNTQ3NDA5OTMiLHQ9SlNPTi5yYXdKU09OKGUpO3JldHVybiFKU09OLmlzUmF3SlNPTih0KXx8SlNPTi5zdHJpbmdpZnkodCkhPT1lfSl9LDYwNDMoZSx0LG4pe3ZhciBhPW4oOTMwNikscj1UeXBlRXJyb3IsUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oZSl7dmFyIHQsbjt0aGlzLnByb21pc2U9bmV3IGUoZnVuY3Rpb24oZSxhKXtpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1uKXRocm93IG5ldyByKCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvciIpO3Q9ZTtuPWF9KTt0aGlzLnJlc29sdmU9YSh0KTt0aGlzLnJlamVjdD1hKG4pfTtlLmV4cG9ydHMuZj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KGUpfX0sMjM2MChlLHQsbil7dmFyIGEscj1uKDg1NTEpLHM9big2ODAxKSxpPW4oODcyNyksbz1uKDQyMSksbD1uKDM5NyksZj1uKDQwNTUpLGM9big2MTE5KSxoPSJwcm90b3R5cGUiLHU9InNjcmlwdCIsbT1jKCJJRV9QUk9UTyIpLEVtcHR5Q29uc3RydWN0b3I9ZnVuY3Rpb24oKXt9LHNjcmlwdFRhZz1mdW5jdGlvbihlKXtyZXR1cm4iPCIrdSsiPiIrZSsiPC8iK3UrIj4ifSxOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYPWZ1bmN0aW9uKGUpe2Uud3JpdGUoc2NyaXB0VGFnKCIiKSk7ZS5jbG9zZSgpO3ZhciB0PWUucGFyZW50V2luZG93Lk9iamVjdDtlPW51bGw7cmV0dXJuIHR9LE51bGxQcm90b09iamVjdD1mdW5jdGlvbigpe3RyeXthPW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKGUpe31OdWxsUHJvdG9PYmplY3Q9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudC5kb21haW4mJmE/TnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhKTpmdW5jdGlvbigpe3ZhciBlLHQ9ZigiaWZyYW1lIiksbj0iamF2YSIrdSsiOiI7dC5zdHlsZS5kaXNwbGF5PSJub25lIjtsLmFwcGVuZENoaWxkKHQpO3Quc3JjPVN0cmluZyhuKTsoZT10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKTtlLndyaXRlKHNjcmlwdFRhZygiZG9jdW1lbnQuRj1PYmplY3QiKSk7ZS5jbG9zZSgpO3JldHVybiBlLkZ9KCk6TnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhKTtmb3IodmFyIGU9aS5sZW5ndGg7ZS0tOylkZWxldGUgTnVsbFByb3RvT2JqZWN0W2hdW2lbZV1dO3JldHVybiBOdWxsUHJvdG9PYmplY3QoKX07b1ttXT0hMDtlLmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24gY3JlYXRlKGUsdCl7dmFyIG47aWYobnVsbCE9PWUpe0VtcHR5Q29uc3RydWN0b3JbaF09cihlKTtuPW5ldyBFbXB0eUNvbnN0cnVjdG9yO0VtcHR5Q29uc3RydWN0b3JbaF09bnVsbDtuW21dPWV9ZWxzZSBuPU51bGxQcm90b09iamVjdCgpO3JldHVybiB2b2lkIDA9PT10P246cy5mKG4sdCl9fSw2ODAxKGUsdCxuKXt2YXIgYT1uKDM3MjQpLHI9big4Njg2KSxzPW4oNDkxMyksaT1uKDg1NTEpLG89big1Mzk3KSxsPW4oMTA3Mik7dC5mPWEmJiFyP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoZSx0KXtpKGUpO2Zvcih2YXIgbixhPW8odCkscj1sKHQpLGY9ci5sZW5ndGgsYz0wO2Y+Yzspcy5mKGUsbj1yW2MrK10sYVtuXSk7cmV0dXJuIGV9fSw0OTEzKGUsdCxuKXt2YXIgYT1uKDM3MjQpLHI9big1OTE3KSxzPW4oODY4NiksaT1uKDg1NTEpLG89big2OTY5KSxsPVR5cGVFcnJvcixmPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsaD0iZW51bWVyYWJsZSIsdT0iY29uZmlndXJhYmxlIixtPSJ3cml0YWJsZSI7dC5mPWE/cz9mdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShlLHQsbil7aShlKTt0PW8odCk7aShuKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSYmInByb3RvdHlwZSI9PT10JiYidmFsdWUiaW4gbiYmbSBpbiBuJiYhblttXSl7dmFyIGE9YyhlLHQpO2lmKGEmJmFbbV0pe2VbdF09bi52YWx1ZTtuPXtjb25maWd1cmFibGU6dSBpbiBuP25bdV06YVt1XSxlbnVtZXJhYmxlOmggaW4gbj9uW2hdOmFbaF0sd3JpdGFibGU6ITF9fX1yZXR1cm4gZihlLHQsbil9OmY6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LG4pe2koZSk7dD1vKHQpO2kobik7aWYocil0cnl7cmV0dXJuIGYoZSx0LG4pfWNhdGNoKGUpe31pZigiZ2V0ImluIG58fCJzZXQiaW4gbil0aHJvdyBuZXcgbCgiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTsidmFsdWUiaW4gbiYmKGVbdF09bi52YWx1ZSk7cmV0dXJuIGV9fSw3MzQ3KGUsdCxuKXt2YXIgYT1uKDM3MjQpLHI9big5NTY1KSxzPW4oODc3MyksaT1uKDY5ODApLG89big1Mzk3KSxsPW4oNjk2OSksZj1uKDkyOTcpLGM9big1OTE3KSxoPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dC5mPWE/aDpmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KXtlPW8oZSk7dD1sKHQpO2lmKGMpdHJ5e3JldHVybiBoKGUsdCl9Y2F0Y2goZSl7fWlmKGYoZSx0KSlyZXR1cm4gaSghcihzLmYsZSx0KSxlW3RdKX19LDg0ODAoZSx0LG4pe3ZhciBhPW4oMTgyOCkscj1uKDg3MjcpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGUpe3JldHVybiBhKGUscil9fSwzNzE3KGUsdCl7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LDI3ODcoZSx0LG4pe3ZhciBhPW4oOTI5Nykscj1uKDQ5MDEpLHM9big4OTgxKSxpPW4oNjExOSksbz1uKDIyMTEpLGw9aSgiSUVfUFJPVE8iKSxmPU9iamVjdCxjPWYucHJvdG90eXBlO2UuZXhwb3J0cz1vP2YuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9cyhlKTtpZihhKHQsbCkpcmV0dXJuIHRbbF07dmFyIG49dC5jb25zdHJ1Y3RvcjtyZXR1cm4gcihuKSYmdCBpbnN0YW5jZW9mIG4/bi5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIGY/YzpudWxsfX0sMTYyNShlLHQsbil7dmFyIGE9big5NTA0KTtlLmV4cG9ydHM9YSh7fS5pc1Byb3RvdHlwZU9mKX0sMTgyOChlLHQsbil7dmFyIGE9big5NTA0KSxyPW4oOTI5Nykscz1uKDUzOTcpLGk9big5NjE3KS5pbmRleE9mLG89big0MjEpLGw9YShbXS5wdXNoKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixhPXMoZSksZj0wLGM9W107Zm9yKG4gaW4gYSkhcihvLG4pJiZyKGEsbikmJmwoYyxuKTtmb3IoO3QubGVuZ3RoPmY7KXIoYSxuPXRbZisrXSkmJih+aShjLG4pfHxsKGMsbikpO3JldHVybiBjfX0sMTA3MihlLHQsbil7dmFyIGE9bigxODI4KSxyPW4oODcyNyk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbiBrZXlzKGUpe3JldHVybiBhKGUscil9fSw4NzczKGUsdCl7dmFyIG49e30ucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHI9YSYmIW4uY2FsbCh7MToyfSwxKTt0LmY9cj9mdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShlKXt2YXIgdD1hKHRoaXMsZSk7cmV0dXJuISF0JiZ0LmVudW1lcmFibGV9Om59LDI5NjcoZSx0LG4pe3ZhciBhPW4oNjcwNikscj1uKDM0KSxzPW4oNzc1MCksaT1uKDM1MDYpO2UuZXhwb3J0cz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgZSx0PSExLG49e307dHJ5eyhlPWEoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIiwic2V0IikpKG4sW10pO3Q9biBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKGUpe31yZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YobixhKXtzKG4pO2koYSk7aWYoIXIobikpcmV0dXJuIG47dD9lKG4sYSk6bi5fX3Byb3RvX189YTtyZXR1cm4gbn19KCk6dm9pZCAwKX0sNDI3MChlLHQsbil7dmFyIGE9big5NTY1KSxyPW4oNDkwMSkscz1uKDM0KSxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixvO2lmKCJzdHJpbmciPT09dCYmcihuPWUudG9TdHJpbmcpJiYhcyhvPWEobixlKSkpcmV0dXJuIG87aWYocihuPWUudmFsdWVPZikmJiFzKG89YShuLGUpKSlyZXR1cm4gbztpZigic3RyaW5nIiE9PXQmJnIobj1lLnRvU3RyaW5nKSYmIXMobz1hKG4sZSkpKXJldHVybiBvO3Rocm93IG5ldyBpKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX19LDUwMzEoZSx0LG4pe3ZhciBhPW4oNzc1MSkscj1uKDk1MDQpLHM9big4NDgwKSxpPW4oMzcxNyksbz1uKDg1NTEpLGw9cihbXS5jb25jYXQpO2UuZXhwb3J0cz1hKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbiBvd25LZXlzKGUpe3ZhciB0PXMuZihvKGUpKSxuPWkuZjtyZXR1cm4gbj9sKHQsbihlKSk6dH19LDgyMzUoZSx0LG4pe3ZhciBhPW4oOTUwNCkscj1uKDkyOTcpLHM9U3ludGF4RXJyb3IsaT1wYXJzZUludCxvPVN0cmluZy5mcm9tQ2hhckNvZGUsbD1hKCIiLmNoYXJBdCksZj1hKCIiLnNsaWNlKSxjPWEoLy4vLmV4ZWMpLGg9eydcXCInOiciJywiXFxcXCI6IlxcIiwiXFwvIjoiLyIsIlxcYiI6IlxiIiwiXFxmIjoiXGYiLCJcXG4iOiJcbiIsIlxcciI6IlxyIiwiXFx0IjoiXHQifSx1PS9eW1xkYS1mXXs0fSQvaSxtPS9eW1x1MDAwMC1cdTAwMUZdJC87ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPSEwLGE9IiI7dDxlLmxlbmd0aDspe3ZhciBwPWwoZSx0KTtpZigiXFwiPT09cCl7dmFyIGQ9ZihlLHQsdCsyKTtpZihyKGgsZCkpe2ErPWhbZF07dCs9Mn1lbHNle2lmKCJcXHUiIT09ZCl0aHJvdyBuZXcgcygnVW5rbm93biBlc2NhcGUgc2VxdWVuY2U6ICInK2QrJyInKTt2YXIgZz1mKGUsdCs9Mix0KzQpO2lmKCFjKHUsZykpdGhyb3cgbmV3IHMoIkJhZCBVbmljb2RlIGVzY2FwZSBhdDogIit0KTthKz1vKGkoZywxNikpO3QrPTR9fWVsc2V7aWYoJyInPT09cCl7bj0hMTt0Kys7YnJlYWt9aWYoYyhtLHApKXRocm93IG5ldyBzKCJCYWQgY29udHJvbCBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwgYXQ6ICIrdCk7YSs9cDt0Kyt9fWlmKG4pdGhyb3cgbmV3IHMoIlVudGVybWluYXRlZCBzdHJpbmcgYXQ6ICIrdCk7cmV0dXJue3ZhbHVlOmEsZW5kOnR9fX0sMTEwMyhlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTplKCl9fWNhdGNoKGUpe3JldHVybntlcnJvcjohMCx2YWx1ZTplfX19fSw3NzUwKGUsdCxuKXt2YXIgYT1uKDQxMTcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXRocm93IG5ldyByKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sOTI4NihlLHQsbil7dmFyIGE9big0NDAyKSxyPW4oODQ2OSkscz1hLlNldCxpPWEuYWRkO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcztyKGUsZnVuY3Rpb24oZSl7aSh0LGUpfSk7cmV0dXJuIHR9fSwzNDQwKGUsdCxuKXt2YXIgYT1uKDcwODApLHI9big0NDAyKSxzPW4oOTI4NiksaT1uKDUxNzApLG89bigzNzg5KSxsPW4oODQ2OSksZj1uKDUwNyksYz1yLmhhcyxoPXIucmVtb3ZlO2UuZXhwb3J0cz1mdW5jdGlvbiBkaWZmZXJlbmNlKGUpe3ZhciB0PWEodGhpcyksbj1vKGUpLHI9cyh0KTtpKHIpPD1uLnNpemU/bChyLGZ1bmN0aW9uKGUpe24uaW5jbHVkZXMoZSkmJmgocixlKX0pOmYobi5nZXRJdGVyYXRvcigpLGZ1bmN0aW9uKGUpe2MocixlKSYmaChyLGUpfSk7cmV0dXJuIHJ9fSw0NDAyKGUsdCxuKXt2YXIgYT1uKDk1MDQpLHI9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6YShyLmFkZCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sODc1MChlLHQsbil7dmFyIGE9big3MDgwKSxyPW4oNDQwMikscz1uKDUxNzApLGk9bigzNzg5KSxvPW4oODQ2OSksbD1uKDUwNyksZj1yLlNldCxjPXIuYWRkLGg9ci5oYXM7ZS5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbihlKXt2YXIgdD1hKHRoaXMpLG49aShlKSxyPW5ldyBmO3ModCk+bi5zaXplP2wobi5nZXRJdGVyYXRvcigpLGZ1bmN0aW9uKGUpe2godCxlKSYmYyhyLGUpfSk6byh0LGZ1bmN0aW9uKGUpe24uaW5jbHVkZXMoZSkmJmMocixlKX0pO3JldHVybiByfX0sNDQ0OShlLHQsbil7dmFyIGE9big3MDgwKSxyPW4oNDQwMikuaGFzLHM9big1MTcwKSxpPW4oMzc4OSksbz1uKDg0NjkpLGw9big1MDcpLGY9big5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNEaXNqb2ludEZyb20oZSl7dmFyIHQ9YSh0aGlzKSxuPWkoZSk7aWYocyh0KTw9bi5zaXplKXJldHVybiExIT09byh0LGZ1bmN0aW9uKGUpe2lmKG4uaW5jbHVkZXMoZSkpcmV0dXJuITF9LCEwKTt2YXIgYz1uLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1sKGMsZnVuY3Rpb24oZSl7aWYocih0LGUpKXJldHVybiBmKGMuaXRlcmF0b3IsIm5vcm1hbCIsITEpfSl9fSwzODM4KGUsdCxuKXt2YXIgYT1uKDcwODApLHI9big1MTcwKSxzPW4oODQ2OSksaT1uKDM3ODkpO2UuZXhwb3J0cz1mdW5jdGlvbiBpc1N1YnNldE9mKGUpe3ZhciB0PWEodGhpcyksbj1pKGUpO3JldHVybiEocih0KT5uLnNpemUpJiYhMSE9PXModCxmdW5jdGlvbihlKXtpZighbi5pbmNsdWRlcyhlKSlyZXR1cm4hMX0sITApfX0sODUyNyhlLHQsbil7dmFyIGE9big3MDgwKSxyPW4oNDQwMikuaGFzLHM9big1MTcwKSxpPW4oMzc4OSksbz1uKDUwNyksbD1uKDk1MzkpO2UuZXhwb3J0cz1mdW5jdGlvbiBpc1N1cGVyc2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxuPWkoZSk7aWYocyh0KTxuLnNpemUpcmV0dXJuITE7dmFyIGY9bi5nZXRJdGVyYXRvcigpO3JldHVybiExIT09byhmLGZ1bmN0aW9uKGUpe2lmKCFyKHQsZSkpcmV0dXJuIGwoZi5pdGVyYXRvciwibm9ybWFsIiwhMSl9KX19LDg0NjkoZSx0LG4pe3ZhciBhPW4oOTUwNCkscj1uKDUwNykscz1uKDQ0MDIpLGk9cy5TZXQsbz1zLnByb3RvLGw9YShvLmZvckVhY2gpLGY9YShvLmtleXMpLGM9ZihuZXcgaSkubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP3Ioe2l0ZXJhdG9yOmYoZSksbmV4dDpjfSx0KTpsKGUsdCl9fSw0OTE2KGUsdCxuKXt2YXIgYT1uKDc3NTEpLGNyZWF0ZVNldExpa2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX0sY3JlYXRlU2V0TGlrZVdpdGhJbmZpbml0eVNpemU9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sa2V5czpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiZSIpfX19O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWEoIlNldCIpO3RyeXsobmV3IG4pW2VdKGNyZWF0ZVNldExpa2UoMCkpO3RyeXsobmV3IG4pW2VdKGNyZWF0ZVNldExpa2UoLTEpKTtyZXR1cm4hMX1jYXRjaChhKXtpZighdClyZXR1cm4hMDt0cnl7KG5ldyBuKVtlXShjcmVhdGVTZXRMaWtlV2l0aEluZmluaXR5U2l6ZSgtMS8wKSk7cmV0dXJuITF9Y2F0Y2goYSl7cmV0dXJuIHQobmV3IG4oWzEsMl0pW2VdKGNyZWF0ZVNldExpa2VXaXRoSW5maW5pdHlTaXplKDEvMCkpKX19fWNhdGNoKGUpe3JldHVybiExfX19LDk4MzUoZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXt2YXIgdD1uZXcgU2V0LG49e3NpemU6MCxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sa2V5czpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIm5leHQiLHtnZXQ6ZnVuY3Rpb24oKXt0LmNsZWFyKCk7dC5hZGQoNCk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19KX19LGE9dFtlXShuKTtyZXR1cm4gMT09PWEuc2l6ZSYmND09PWEudmFsdWVzKCkubmV4dCgpLnZhbHVlfWNhdGNoKGUpe3JldHVybiExfX19LDUxNzAoZSx0LG4pe3ZhciBhPW4oNjcwNikscj1uKDQ0MDIpO2UuZXhwb3J0cz1hKHIucHJvdG8sInNpemUiLCJnZXQiKXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2l6ZX19LDM2NTAoZSx0LG4pe3ZhciBhPW4oNzA4MCkscj1uKDQ0MDIpLHM9big5Mjg2KSxpPW4oMzc4OSksbz1uKDUwNyksbD1yLmFkZCxmPXIuaGFzLGM9ci5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UoZSl7dmFyIHQ9YSh0aGlzKSxuPWkoZSkuZ2V0SXRlcmF0b3IoKSxyPXModCk7byhuLGZ1bmN0aW9uKGUpe2YodCxlKT9jKHIsZSk6bChyLGUpfSk7cmV0dXJuIHJ9fSw0MjA0KGUsdCxuKXt2YXIgYT1uKDcwODApLHI9big0NDAyKS5hZGQscz1uKDkyODYpLGk9bigzNzg5KSxvPW4oNTA3KTtlLmV4cG9ydHM9ZnVuY3Rpb24gdW5pb24oZSl7dmFyIHQ9YSh0aGlzKSxuPWkoZSkuZ2V0SXRlcmF0b3IoKSxsPXModCk7byhuLGZ1bmN0aW9uKGUpe3IobCxlKX0pO3JldHVybiBsfX0sNjExOShlLHQsbil7dmFyIGE9big1NzQ1KSxyPW4oMzM5Mikscz1hKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzW2VdfHwoc1tlXT1yKGUpKX19LDc2MjkoZSx0LG4pe3ZhciBhPW4oNjM5NSkscj1uKDQ1NzYpLHM9big5NDMzKSxpPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZS5leHBvcnRzPXJbaV18fHMoaSx7fSk7KG8udmVyc2lvbnN8fChvLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjoiMy40OS4wIixtb2RlOmE/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxM+KAkzIwMjUgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSksIDIwMjXigJMyMDI2IENvcmVKUyBDb21wYW55IChjb3JlLWpzLmlvKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iLGxpY2Vuc2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuNDkuMC9MSUNFTlNFIixzb3VyY2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pfSw1NzQ1KGUsdCxuKXt2YXIgYT1uKDc2MjkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBhW2VdfHwoYVtlXT10fHx7fSl9fSw0NDk1KGUsdCxuKXt2YXIgYT1uKDk1MTkpLHI9big5MDM5KSxzPW4oNDU3NikuU3RyaW5nO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFyKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIXMoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmEmJmE8NDF9KX0sNTYxMChlLHQsbil7dmFyIGE9bigxMjkxKSxyPU1hdGgubWF4LHM9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49YShlKTtyZXR1cm4gbjwwP3Iobit0LDApOnMobix0KX19LDU4NTQoZSx0LG4pe3ZhciBhPW4oMjc3Nykscj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSwibnVtYmVyIik7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyByKCJDYW4ndCBjb252ZXJ0IG51bWJlciB0byBiaWdpbnQiKTtyZXR1cm4gQmlnSW50KHQpfX0sNTM5NyhlLHQsbil7dmFyIGE9big3MDU1KSxyPW4oNzc1MCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKHIoZSkpfX0sMTI5MShlLHQsbil7dmFyIGE9big3NDEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0rZTtyZXR1cm4gdCE9dHx8MD09PXQ/MDphKHQpfX0sODAxNChlLHQsbil7dmFyIGE9bigxMjkxKSxyPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiB0PjA/cih0LDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSw4OTgxKGUsdCxuKXt2YXIgYT1uKDc3NTApLHI9T2JqZWN0O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihhKGUpKX19LDI3NzcoZSx0LG4pe3ZhciBhPW4oOTU2NSkscj1uKDM0KSxzPW4oNzU3KSxpPW4oNTk2Niksbz1uKDQyNzApLGw9big4MjI3KSxmPVR5cGVFcnJvcixjPWwoInRvUHJpbWl0aXZlIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoIXIoZSl8fHMoZSkpcmV0dXJuIGU7dmFyIG4sbD1pKGUsYyk7aWYobCl7dm9pZCAwPT09dCYmKHQ9ImRlZmF1bHQiKTtuPWEobCxlLHQpO2lmKCFyKG4pfHxzKG4pKXJldHVybiBuO3Rocm93IG5ldyBmKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX12b2lkIDA9PT10JiYodD0ibnVtYmVyIik7cmV0dXJuIG8oZSx0KX19LDY5NjkoZSx0LG4pe3ZhciBhPW4oMjc3Nykscj1uKDc1Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSwic3RyaW5nIik7cmV0dXJuIHIodCk/dDp0KyIifX0sMjE0MChlLHQsbil7dmFyIGE9e307YVtuKDgyMjcpKCJ0b1N0cmluZ1RhZyIpXT0ieiI7ZS5leHBvcnRzPSJbb2JqZWN0IHpdIj09PVN0cmluZyhhKX0sNjU1KGUsdCxuKXt2YXIgYT1uKDY5NTUpLHI9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiU3ltYm9sIj09PWEoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmciKTtyZXR1cm4gcihlKX19LDY4MjMoZSl7dmFyIHQ9U3RyaW5nO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIHQoZSl9Y2F0Y2goZSl7cmV0dXJuIk9iamVjdCJ9fX0sMzM5MihlLHQsbil7dmFyIGE9big5NTA0KSxyPTAscz1NYXRoLnJhbmRvbSgpLGk9YSgxLjEudG9TdHJpbmcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PWU/IiI6ZSkrIilfIitpKCsrcitzLDM2KX19LDkxNDMoZSx0LG4pe3ZhciBhPW4oNDU3Nikscj1uKDk1MDQpLHM9bigzOTcyKSxpPW4oMzQ2Myksbz1uKDkyOTcpLGw9bigyODA0KSxmPW4oOTQ0KSxjPW4oNTE2OSksaD1sLmMyaSx1PWwuYzJpVXJsLG09YS5TeW50YXhFcnJvcixwPWEuVHlwZUVycm9yLGQ9cigiIi5jaGFyQXQpLHNraXBBc2NpaVdoaXRlc3BhY2U9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49ZS5sZW5ndGg7dDxuO3QrKyl7dmFyIGE9ZChlLHQpO2lmKCIgIiE9PWEmJiJcdCIhPT1hJiYiXG4iIT09YSYmIlxmIiE9PWEmJiJcciIhPT1hKWJyZWFrfXJldHVybiB0fSxkZWNvZGVCYXNlNjRDaHVuaz1mdW5jdGlvbihlLHQsbil7dmFyIGE9ZS5sZW5ndGg7YTw0JiYoZSs9Mj09PWE/IkFBIjoiQSIpO3ZhciByPSh0W2QoZSwwKV08PDE4KSsodFtkKGUsMSldPDwxMikrKHRbZChlLDIpXTw8NikrdFtkKGUsMyldLHM9W3I+PjE2JjI1NSxyPj44JjI1NSwyNTUmcl07aWYoMj09PWEpe2lmKG4mJjAhPT1zWzFdKXRocm93IG5ldyBtKCJFeHRyYSBiaXRzIik7cmV0dXJuW3NbMF1dfWlmKDM9PT1hKXtpZihuJiYwIT09c1syXSl0aHJvdyBuZXcgbSgiRXh0cmEgYml0cyIpO3JldHVybltzWzBdLHNbMV1dfXJldHVybiBzfSx3cml0ZUJ5dGVzPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIGE9dC5sZW5ndGgscj0wO3I8YTtyKyspZVtuK3JdPXRbcl07cmV0dXJuIG4rYX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuLGEpe2koZSk7cyh0KTt2YXIgcj0iYmFzZTY0Ij09PWYodCk/aDp1LGw9dD90Lmxhc3RDaHVua0hhbmRsaW5nOnZvaWQgMDt2b2lkIDA9PT1sJiYobD0ibG9vc2UiKTtpZigibG9vc2UiIT09bCYmInN0cmljdCIhPT1sJiYic3RvcC1iZWZvcmUtcGFydGlhbCIhPT1sKXRocm93IG5ldyBwKCJJbmNvcnJlY3QgYGxhc3RDaHVua0hhbmRsaW5nYCBvcHRpb24iKTtuJiZjKG4uYnVmZmVyKTt2YXIgZz1lLmxlbmd0aCxiPW58fFtdLHc9MCxqPTAsaz0iIix5PTA7aWYoYSlmb3IoOzspe2lmKCh5PXNraXBBc2NpaVdoaXRlc3BhY2UoZSx5KSk9PT1nKXtpZihrLmxlbmd0aD4wKXtpZigic3RvcC1iZWZvcmUtcGFydGlhbCI9PT1sKWJyZWFrO2lmKCJsb29zZSIhPT1sKXRocm93IG5ldyBtKCJNaXNzaW5nIHBhZGRpbmciKTtpZigxPT09ay5sZW5ndGgpdGhyb3cgbmV3IG0oIk1hbGZvcm1lZCBwYWRkaW5nOiBleGFjdGx5IG9uZSBhZGRpdGlvbmFsIGNoYXJhY3RlciIpO3c9d3JpdGVCeXRlcyhiLGRlY29kZUJhc2U2NENodW5rKGssciwhMSksdyl9aj1nO2JyZWFrfXZhciBxPWQoZSx5KTsrK3k7aWYoIj0iPT09cSl7aWYoay5sZW5ndGg8Mil0aHJvdyBuZXcgbSgiUGFkZGluZyBpcyB0b28gZWFybHkiKTt5PXNraXBBc2NpaVdoaXRlc3BhY2UoZSx5KTtpZigyPT09ay5sZW5ndGgpe2lmKHk9PT1nKXtpZigic3RvcC1iZWZvcmUtcGFydGlhbCI9PT1sKWJyZWFrO3Rocm93IG5ldyBtKCJNYWxmb3JtZWQgcGFkZGluZzogb25seSBvbmUgPSIpfWlmKCI9Ij09PWQoZSx5KSl7Kyt5O3k9c2tpcEFzY2lpV2hpdGVzcGFjZShlLHkpfX1pZih5PGcpdGhyb3cgbmV3IG0oIlVuZXhwZWN0ZWQgY2hhcmFjdGVyIGFmdGVyIHBhZGRpbmciKTt3PXdyaXRlQnl0ZXMoYixkZWNvZGVCYXNlNjRDaHVuayhrLHIsInN0cmljdCI9PT1sKSx3KTtqPWc7YnJlYWt9aWYoIW8ocixxKSl0aHJvdyBuZXcgbSgiVW5leHBlY3RlZCBjaGFyYWN0ZXIiKTt2YXIgdj1hLXc7aWYoMT09PXYmJjI9PT1rLmxlbmd0aHx8Mj09PXYmJjM9PT1rLmxlbmd0aClicmVhaztpZig0PT09KGsrPXEpLmxlbmd0aCl7dz13cml0ZUJ5dGVzKGIsZGVjb2RlQmFzZTY0Q2h1bmsoayxyLCExKSx3KTtrPSIiO2o9eTtpZih3PT09YSlicmVha319cmV0dXJue2J5dGVzOmIscmVhZDpqLHdyaXR0ZW46d319fSwyMzAzKGUsdCxuKXt2YXIgYT1uKDQ1NzYpLHI9big5NTA0KSxzPWEuVWludDhBcnJheSxpPWEuU3ludGF4RXJyb3Isbz1NYXRoLm1pbixsPXIoIiIubWF0Y2gpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoO2lmKG4lMiE9MCl0aHJvdyBuZXcgaSgiU3RyaW5nIHNob3VsZCBiZSBhbiBldmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzIik7Zm9yKHZhciBhPXQ/byh0Lmxlbmd0aCxuLzIpOm4vMixyPXR8fG5ldyBzKGEpLGY9bChlLC8uezJ9L2cpLGM9MDtjPGE7YysrKXt2YXIgaD0rKCIweCIrZltjXSsiMCIpO2lmKGghPWgpdGhyb3cgbmV3IGkoIlN0cmluZyBzaG91bGQgb25seSBjb250YWluIGhleCBjaGFyYWN0ZXJzIik7cltjXT1oPj40fXJldHVybntieXRlczpyLHJlYWQ6Yzw8MX19fSw3NDE2KGUsdCxuKXt2YXIgYT1uKDkwMzkpLHI9big4MjI3KSxzPW4oMzcyNCksaT1uKDYzOTUpLG89cigiaXRlcmF0b3IiKTtlLmV4cG9ydHM9IWEoZnVuY3Rpb24oKXt2YXIgZT1uZXcgVVJMKCJiP2E9MSZiPTImYz0zIiwiaHR0cHM6Ly9hIiksdD1lLnNlYXJjaFBhcmFtcyxuPW5ldyBVUkxTZWFyY2hQYXJhbXMoImE9MSZhPTImYj0zIiksYT0iIjtlLnBhdGhuYW1lPSJjJTIwZCI7dC5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7dC5kZWxldGUoImIiKTthKz1uK2V9KTtuLmRlbGV0ZSgiYSIsMik7bi5kZWxldGUoImIiLHZvaWQgMCk7cmV0dXJuIGkmJighZS50b0pTT058fCFuLmhhcygiYSIsMSl8fG4uaGFzKCJhIiwyKXx8IW4uaGFzKCJhIix2b2lkIDApfHxuLmhhcygiYiIpKXx8IXQuc2l6ZSYmKGl8fCFzKXx8IXQuc29ydHx8Imh0dHBzOi8vYS9jJTIwZD9hPTEmYz0zIiE9PWUuaHJlZnx8IjMiIT09dC5nZXQoImMiKXx8ImE9MSIhPT1TdHJpbmcobmV3IFVSTFNlYXJjaFBhcmFtcygiP2E9MSIpKXx8IXRbb118fCJhIiE9PW5ldyBVUkwoImh0dHBzOi8vYUBiIikudXNlcm5hbWV8fCJiIiE9PW5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygiYT1iIikpLmdldCgiYSIpfHwieG4tLWUxYXliYyIhPT1uZXcgVVJMKCJodHRwczovL9GC0LXRgdGCIikuaG9zdHx8IiMlRDAlQjEiIT09bmV3IFVSTCgiaHR0cHM6Ly9hI9CxIikuaGFzaHx8ImExYzMiIT09YXx8IngiIT09bmV3IFVSTCgiaHR0cHM6Ly94Iix2b2lkIDApLmhvc3R9KX0sNzA0MChlLHQsbil7dmFyIGE9big0NDk1KTtlLmV4cG9ydHM9YSYmIVN5bWJvbC5zaGFtJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcn0sODY4NihlLHQsbil7dmFyIGE9bigzNzI0KSxyPW4oOTAzOSk7ZS5leHBvcnRzPWEmJnIoZnVuY3Rpb24oKXtyZXR1cm4gNDIhPT1PYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKXt9LCJwcm90b3R5cGUiLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZX0pfSwyODEyKGUpe3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXtpZihlPG4pdGhyb3cgbmV3IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSw4NjIyKGUsdCxuKXt2YXIgYT1uKDQ1NzYpLHI9big0OTAxKSxzPWEuV2Vha01hcDtlLmV4cG9ydHM9cihzKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhzKSl9LDQ5OTUoZSx0LG4pe3ZhciBhPW4oOTUwNCkscj1XZWFrTWFwLnByb3RvdHlwZTtlLmV4cG9ydHM9e1dlYWtNYXAsc2V0OmEoci5zZXQpLGdldDphKHIuZ2V0KSxoYXM6YShyLmhhcykscmVtb3ZlOmEoci5kZWxldGUpfX0sODIyNyhlLHQsbil7dmFyIGE9big0NTc2KSxyPW4oNTc0NSkscz1uKDkyOTcpLGk9bigzMzkyKSxvPW4oNDQ5NSksbD1uKDcwNDApLGY9YS5TeW1ib2wsYz1yKCJ3a3MiKSxoPWw/Zi5mb3J8fGY6ZiYmZi53aXRob3V0U2V0dGVyfHxpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtzKGMsZSl8fChjW2VdPW8mJnMoZixlKT9mW2VdOmgoIlN5bWJvbC4iK2UpKTtyZXR1cm4gY1tlXX19LDQ0MjMoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDk2MTcpLmluY2x1ZGVzLHM9big5MDM5KSxpPW4oNjQ2OSksbz1zKGZ1bmN0aW9uKCl7cmV0dXJuIUFycmF5KDEpLmluY2x1ZGVzKCl9KSxsPXMoZnVuY3Rpb24oKXtyZXR1cm5bLDFdLmluY2x1ZGVzKHZvaWQgMCwxKX0pO2Eoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpvfHxsfSx7aW5jbHVkZXM6ZnVuY3Rpb24gaW5jbHVkZXMoZSl7cmV0dXJuIHIodGhpcyxlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTtpKCJpbmNsdWRlcyIpfSw0MTE0KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big4OTgxKSxzPW4oNjE5OCksaT1uKDQ1MjcpLG89big2ODM3KTthKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxhcml0eToxLGZvcmNlZDpuKDkwMzkpKGZ1bmN0aW9uKCl7cmV0dXJuIDQyOTQ5NjcyOTchPT1bXS5wdXNoLmNhbGwoe2xlbmd0aDo0Mjk0OTY3Mjk2fSwxKX0pfHwhZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLnB1c2goKX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCl9LHtwdXNoOmZ1bmN0aW9uIHB1c2goZSl7dmFyIHQ9cih0aGlzKSxuPXModCksYT1hcmd1bWVudHMubGVuZ3RoO28obithKTtmb3IodmFyIGw9MDtsPGE7bCsrKXt0W25dPWFyZ3VtZW50c1tsXTtuKyt9aSh0LG4pO3JldHVybiBufX0pfSw4MTExKGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big0NTc2KSxzPW4oNjc5KSxpPW4oODU1MSksbz1uKDQ5MDEpLGw9bigyNzg3KSxmPW4oMjEwNiksYz1uKDQ2NTkpLGg9big5MDM5KSx1PW4oOTI5NyksbT1uKDgyMjcpLHA9big3NjU3KS5JdGVyYXRvclByb3RvdHlwZSxkPW4oMzcyNCksZz1uKDYzOTUpLGI9ImNvbnN0cnVjdG9yIix3PSJJdGVyYXRvciIsaj1tKCJ0b1N0cmluZ1RhZyIpLGs9VHlwZUVycm9yLHk9clt3XSxxPWd8fCFvKHkpfHx5LnByb3RvdHlwZSE9PXB8fCFoKGZ1bmN0aW9uKCl7eSh7fSl9KSx2PWZ1bmN0aW9uIEl0ZXJhdG9yKCl7cyh0aGlzLHApO2lmKGwodGhpcyk9PT1wKXRocm93IG5ldyBrKCJBYnN0cmFjdCBjbGFzcyBJdGVyYXRvciBub3QgZGlyZWN0bHkgY29uc3RydWN0YWJsZSIpfSxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yPWZ1bmN0aW9uKGUsdCl7ZD9mKHAsZSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxzZXQ6ZnVuY3Rpb24odCl7aSh0aGlzKTtpZih0aGlzPT09cCl0aHJvdyBuZXcgaygiWW91IGNhbid0IHJlZGVmaW5lIHRoaXMgcHJvcGVydHkiKTt1KHRoaXMsZSk/dGhpc1tlXT10OmModGhpcyxlLHQpfX0pOnBbZV09dH07dShwLGopfHxkZWZpbmVJdGVyYXRvclByb3RvdHlwZUFjY2Vzc29yKGosdyk7IXEmJnUocCxiKSYmcFtiXSE9PU9iamVjdHx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihiLHYpO3YucHJvdG90eXBlPXA7YSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpxfSx7SXRlcmF0b3I6dn0pfSwxMTQ4KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big5NTY1KSxzPW4oMjY1MiksaT1uKDkzMDYpLG89big4NTUxKSxsPW4oMTc2NyksZj1uKDk1MzkpLGM9big0NTQ5KSgiZXZlcnkiLFR5cGVFcnJvcik7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6Y30se2V2ZXJ5OmZ1bmN0aW9uIGV2ZXJ5KGUpe28odGhpcyk7dHJ5e2koZSl9Y2F0Y2goZSl7Zih0aGlzLCJ0aHJvdyIsZSl9aWYoYylyZXR1cm4gcihjLHRoaXMsZSk7dmFyIHQ9bCh0aGlzKSxuPTA7cmV0dXJuIXModCxmdW5jdGlvbih0LGEpe2lmKCFlKHQsbisrKSlyZXR1cm4gYSgpfSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KX0sMjQ4OShlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oOTU2NSkscz1uKDkzMDYpLGk9big4NTUxKSxvPW4oMTc2NyksbD1uKDk0NjIpLGY9big2MzE5KSxjPW4oNjM5NSksaD1uKDk1MzkpLHU9big2ODQpLG09big0NTQ5KSxwPSFjJiYhdSgiZmlsdGVyIixmdW5jdGlvbigpe30pLGQ9IWMmJiFwJiZtKCJmaWx0ZXIiLFR5cGVFcnJvciksZz1jfHxwfHxkLGI9bChmdW5jdGlvbigpe2Zvcih2YXIgZSx0LG49dGhpcy5pdGVyYXRvcixhPXRoaXMucHJlZGljYXRlLHM9dGhpcy5uZXh0Ozspe2U9aShyKHMsbikpO2lmKHRoaXMuZG9uZT0hIWUuZG9uZSlyZXR1cm47dD1lLnZhbHVlO2lmKGYobixhLFt0LHRoaXMuY291bnRlcisrXSwhMCkpcmV0dXJuIHR9fSk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6Z30se2ZpbHRlcjpmdW5jdGlvbiBmaWx0ZXIoZSl7aSh0aGlzKTt0cnl7cyhlKX1jYXRjaChlKXtoKHRoaXMsInRocm93IixlKX1yZXR1cm4gZD9yKGQsdGhpcyxlKTpuZXcgYihvKHRoaXMpLHtwcmVkaWNhdGU6ZX0pfX0pfSwxMTYoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDk1NjUpLHM9bigyNjUyKSxpPW4oOTMwNiksbz1uKDg1NTEpLGw9bigxNzY3KSxmPW4oOTUzOSksYz1uKDQ1NDkpKCJmaW5kIixUeXBlRXJyb3IpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmN9LHtmaW5kOmZ1bmN0aW9uIGZpbmQoZSl7byh0aGlzKTt0cnl7aShlKX1jYXRjaChlKXtmKHRoaXMsInRocm93IixlKX1pZihjKXJldHVybiByKGMsdGhpcyxlKTt2YXIgdD1sKHRoaXMpLG49MDtyZXR1cm4gcyh0LGZ1bmN0aW9uKHQsYSl7aWYoZSh0LG4rKykpcmV0dXJuIGEodCl9LHtJU19SRUNPUkQ6ITAsSU5URVJSVVBURUQ6ITB9KS5yZXN1bHR9fSl9LDUzMShlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oOTU2NSkscz1uKDkzMDYpLGk9big4NTUxKSxvPW4oMTc2NyksbD1uKDg2NDYpLGY9big5NDYyKSxjPW4oOTUzOSksaD1uKDYzOTUpLHU9big2ODQpLG09big0NTQ5KTt2YXIgcD0haCYmIXUoImZsYXRNYXAiLGZ1bmN0aW9uKCl7fSksZD0haCYmIXAmJm0oImZsYXRNYXAiLFR5cGVFcnJvciksZz1ofHxwfHxkfHxmdW5jdGlvbiB0aHJvd3NPbkl0ZXJhdG9yV2l0aG91dFJldHVybigpe3RyeXt2YXIgZT1JdGVyYXRvci5wcm90b3R5cGUuZmxhdE1hcC5jYWxsKG5ldyBNYXAoW1s0LDVdXSkuZW50cmllcygpLGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7ZS5uZXh0KCk7ZS5yZXR1cm4oKX1jYXRjaChlKXtyZXR1cm4hMH19KCksYj1mKGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQsbj10aGlzLml0ZXJhdG9yLGE9dGhpcy5tYXBwZXI7Oyl7aWYodD10aGlzLmlubmVyKXRyeXtpZighKGU9aShyKHQubmV4dCx0Lml0ZXJhdG9yKSkpLmRvbmUpcmV0dXJuIGUudmFsdWU7dGhpcy5pbm5lcj1udWxsfWNhdGNoKGUpe2MobiwidGhyb3ciLGUpfWU9aShyKHRoaXMubmV4dCxuKSk7aWYodGhpcy5kb25lPSEhZS5kb25lKXJldHVybjt0cnl7dGhpcy5pbm5lcj1sKGEoZS52YWx1ZSx0aGlzLmNvdW50ZXIrKyksITEpfWNhdGNoKGUpe2MobiwidGhyb3ciLGUpfX19KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpnfSx7ZmxhdE1hcDpmdW5jdGlvbiBmbGF0TWFwKGUpe2kodGhpcyk7dHJ5e3MoZSl9Y2F0Y2goZSl7Yyh0aGlzLCJ0aHJvdyIsZSl9cmV0dXJuIGQ/cihkLHRoaXMsZSk6bmV3IGIobyh0aGlzKSx7bWFwcGVyOmUsaW5uZXI6bnVsbH0pfX0pfSw3NTg4KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big5NTY1KSxzPW4oMjY1MiksaT1uKDkzMDYpLG89big4NTUxKSxsPW4oMTc2NyksZj1uKDk1MzkpLGM9big0NTQ5KSgiZm9yRWFjaCIsVHlwZUVycm9yKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpjfSx7Zm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKGUpe28odGhpcyk7dHJ5e2koZSl9Y2F0Y2goZSl7Zih0aGlzLCJ0aHJvdyIsZSl9aWYoYylyZXR1cm4gcihjLHRoaXMsZSk7dmFyIHQ9bCh0aGlzKSxuPTA7cyh0LGZ1bmN0aW9uKHQpe2UodCxuKyspfSx7SVNfUkVDT1JEOiEwfSl9fSl9LDE3MDEoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDk1NjUpLHM9big5MzA2KSxpPW4oODU1MSksbz1uKDE3NjcpLGw9big5NDYyKSxmPW4oNjMxOSksYz1uKDk1MzkpLGg9big2ODQpLHU9big0NTQ5KSxtPW4oNjM5NSkscD0hbSYmIWgoIm1hcCIsZnVuY3Rpb24oKXt9KSxkPSFtJiYhcCYmdSgibWFwIixUeXBlRXJyb3IpLGc9bXx8cHx8ZCxiPWwoZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZXJhdG9yLHQ9aShyKHRoaXMubmV4dCxlKSk7aWYoISh0aGlzLmRvbmU9ISF0LmRvbmUpKXJldHVybiBmKGUsdGhpcy5tYXBwZXIsW3QudmFsdWUsdGhpcy5jb3VudGVyKytdLCEwKX0pO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmd9LHttYXA6ZnVuY3Rpb24gbWFwKGUpe2kodGhpcyk7dHJ5e3MoZSl9Y2F0Y2goZSl7Yyh0aGlzLCJ0aHJvdyIsZSl9cmV0dXJuIGQ/cihkLHRoaXMsZSk6bmV3IGIobyh0aGlzKSx7bWFwcGVyOmV9KX19KX0sMzU3OShlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oOTU2NSkscz1uKDI2NTIpLGk9big5MzA2KSxvPW4oODU1MSksbD1uKDE3NjcpLGY9big5NTM5KSxjPW4oNDU0OSkoInNvbWUiLFR5cGVFcnJvcik7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6Y30se3NvbWU6ZnVuY3Rpb24gc29tZShlKXtvKHRoaXMpO3RyeXtpKGUpfWNhdGNoKGUpe2YodGhpcywidGhyb3ciLGUpfWlmKGMpcmV0dXJuIHIoYyx0aGlzLGUpO3ZhciB0PWwodGhpcyksbj0wO3JldHVybiBzKHQsZnVuY3Rpb24odCxhKXtpZihlKHQsbisrKSlyZXR1cm4gYSgpfSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkuc3RvcHBlZH19KX0sMTgwNihlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oODU1MSkscz1uKDQ2NTkpLGk9bigyNjUyKSxvPW4oMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3RvQXJyYXk6ZnVuY3Rpb24gdG9BcnJheSgpe3ZhciBlPVtdLHQ9MDtpKG8ocih0aGlzKSksZnVuY3Rpb24obil7cyhlLHQrKyxuKX0se0lTX1JFQ09SRDohMH0pO3JldHVybiBlfX0pfSwzMTEwKGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big3NzUxKSxzPW4oODc0NSksaT1uKDk1NjUpLG89big5NTA0KSxsPW4oOTAzOSksZj1uKDQzNzYpLGM9big0OTAxKSxoPW4oNTgxMCksdT1uKDc1NyksbT1uKDIxOTUpLHA9big2NTUpLGQ9big3NjgwKSxnPW4oODIzNSksYj1uKDMzOTIpLHc9big0NDk1KSxqPW4oNzgxOSksaz1TdHJpbmcseT1yKCJKU09OIiwic3RyaW5naWZ5IikscT1vKC8uLy5leGVjKSx2PW8oIiIuY2hhckF0KSxTPW8oIiIuY2hhckNvZGVBdCkseD1vKCIiLnJlcGxhY2UpLEM9bygiIi5zbGljZSksVD1vKFtdLnB1c2gpLE89bygxLjEudG9TdHJpbmcpLFI9L1tcdUQ4MDAtXHVERkZGXS9nLEQ9L15bXHVEODAwLVx1REJGRl0kLyxIPS9eW1x1REMwMC1cdURGRkZdJC8sTT1iKCksTj1NLmxlbmd0aCxfPSF3fHxsKGZ1bmN0aW9uKCl7dmFyIGU9cigiU3ltYm9sIikoInN0cmluZ2lmeSBkZXRlY3Rpb24iKTtyZXR1cm4iW251bGxdIiE9PXkoW2VdKXx8Int9IiE9PXkoe2E6ZX0pfHwie30iIT09eShPYmplY3QoZSkpfSksRT1sKGZ1bmN0aW9uKCl7cmV0dXJuJyJcXHVkZjA2XFx1ZDgzNCInIT09eSgiXHVkZjA2XHVkODM0Iil8fCciXFx1ZGVhZCInIT09eSgiXHVkZWFkIil9KSx6PV8/ZnVuY3Rpb24oZSx0KXt2YXIgbj1kKGFyZ3VtZW50cyksYT1nZXRSZXBsYWNlckZ1bmN0aW9uKHQpO2lmKGMoYSl8fHZvaWQgMCE9PWUmJiF1KGUpKXtuWzFdPWZ1bmN0aW9uKGUsdCl7YyhhKSYmKHQ9aShhLHRoaXMsayhlKSx0KSk7aWYoIXUodCkpcmV0dXJuIHR9O3JldHVybiBzKHksbnVsbCxuKX19OnksZml4SWxsRm9ybWVkSlNPTj1mdW5jdGlvbihlLHQsbil7dmFyIGE9dihuLHQtMSkscj12KG4sdCsxKTtyZXR1cm4gcShELGUpJiYhcShILHIpfHxxKEgsZSkmJiFxKEQsYSk/IlxcdSIrTyhTKGUsMCksMTYpOmV9LGdldFJlcGxhY2VyRnVuY3Rpb249ZnVuY3Rpb24oZSl7aWYoYyhlKSlyZXR1cm4gZTtpZihmKGUpKXtmb3IodmFyIHQ9ZS5sZW5ndGgsbj1bXSxhPTA7YTx0O2ErKyl7dmFyIHI9ZVthXTsic3RyaW5nIj09dHlwZW9mIHI/VChuLHIpOiJudW1iZXIiIT10eXBlb2YgciYmIk51bWJlciIhPT1tKHIpJiYiU3RyaW5nIiE9PW0ocil8fFQobixwKHIpKX12YXIgcz1uLmxlbmd0aCxpPSEwO3JldHVybiBmdW5jdGlvbihlLHQpe2lmKGkpe2k9ITE7cmV0dXJuIHR9aWYoZih0aGlzKSlyZXR1cm4gdDtmb3IodmFyIGE9MDthPHM7YSsrKWlmKG5bYV09PT1lKXJldHVybiB0fX19O3kmJmEoe3RhcmdldDoiSlNPTiIsc3RhdDohMCxhcml0eTozLGZvcmNlZDpffHxFfHwhan0se3N0cmluZ2lmeTpmdW5jdGlvbiBzdHJpbmdpZnkoZSx0LG4pe3ZhciBhPWdldFJlcGxhY2VyRnVuY3Rpb24odCkscj1bXSxzPXooZSxmdW5jdGlvbihlLHQpe3ZhciBuPWMoYSk/aShhLHRoaXMsayhlKSx0KTp0O3JldHVybiFqJiZoKG4pP00rKFQocixuLnJhd0pTT04pLTEpOm59LG4pO2lmKCJzdHJpbmciIT10eXBlb2YgcylyZXR1cm4gcztFJiYocz14KHMsUixmaXhJbGxGb3JtZWRKU09OKSk7aWYoailyZXR1cm4gcztmb3IodmFyIG89IiIsbD1zLmxlbmd0aCxmPTA7ZjxsO2YrKyl7dmFyIHU9dihzLGYpO2lmKCciJz09PXUpe3ZhciBtPWcocywrK2YpLmVuZC0xLHA9QyhzLGYsbSk7bys9QyhwLDAsTik9PT1NP3JbQyhwLE4pXTonIicrcCsnIic7Zj1tfWVsc2Ugbys9dX1yZXR1cm4gb319KX0sMjczMShlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oOTMwNikscz1uKDIyNDgpLGk9big2Mzk1KSxvPXMuZ2V0LGw9cy5oYXMsZj1zLnNldDthKHt0YXJnZXQ6Ik1hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6aX0se2dldE9ySW5zZXJ0Q29tcHV0ZWQ6ZnVuY3Rpb24gZ2V0T3JJbnNlcnRDb21wdXRlZChlLHQpe3ZhciBuPWwodGhpcyxlKTtyKHQpO2lmKG4pcmV0dXJuIG8odGhpcyxlKTswPT09ZSYmMS9lPT0tMS8wJiYoZT0wKTt2YXIgYT10KGUpO2YodGhpcyxlLGEpO3JldHVybiBhfX0pfSw1MzY3KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9bigyMjQ4KSxzPW4oNjM5NSksaT1yLmdldCxvPXIuaGFzLGw9ci5zZXQ7YSh7dGFyZ2V0OiJNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOnN9LHtnZXRPckluc2VydDpmdW5jdGlvbiBnZXRPckluc2VydChlLHQpe2lmKG8odGhpcyxlKSlyZXR1cm4gaSh0aGlzLGUpO2wodGhpcyxlLHQpO3JldHVybiB0fX0pfSwzMDY4KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big5NTA0KSxzPW4oMjY1MiksaT1SYW5nZUVycm9yLG89VHlwZUVycm9yLGw9MS8wLGY9TWF0aC5hYnMsYz1NYXRoLnBvdyxoPXIoW10ucHVzaCksdT1jKDIsMTAyMyksbT1jKDIsNTMpLTEscD1OdW1iZXIuTUFYX1ZBTFVFLGQ9YygyLDk3MSksZz17fSxiPXt9LHc9e30saj17fSxrPXt9LHR3b3N1bT1mdW5jdGlvbihlLHQpe3ZhciBuPWUrdDtyZXR1cm57aGk6bixsbzp0LShuLWUpfX07YSh7dGFyZ2V0OiJNYXRoIixzdGF0OiEwfSx7c3VtUHJlY2lzZTpmdW5jdGlvbiBzdW1QcmVjaXNlKGUpe3ZhciB0PVtdLG49MCxhPWo7cyhlLGZ1bmN0aW9uKGUpe2lmKCsrbj5tKXRocm93IG5ldyBpKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IG8oIlZhbHVlIGlzIG5vdCBhIG51bWJlciIpO2lmKGEhPT1nKWlmKGUhPWUpYT1nO2Vsc2UgaWYoZT09PWwpYT1hPT09Yj9nOnc7ZWxzZSBpZihlPT09LTEvMClhPWE9PT13P2c6YjtlbHNlIGlmKCEoMD09PWUmJjEvZSE9PWx8fGEhPT1qJiZhIT09aykpe2E9aztoKHQsZSl9fSk7c3dpdGNoKGEpe2Nhc2UgZzpyZXR1cm4gTmFOO2Nhc2UgYjpyZXR1cm4tMS8wO2Nhc2UgdzpyZXR1cm4gbDtjYXNlIGo6cmV0dXJuLTB9Zm9yKHZhciByLGMseSxxLHYsUyx4PVtdLEM9MCxUPTA7VDx0Lmxlbmd0aDtUKyspe3I9dFtUXTtmb3IodmFyIE89MCxSPTA7Ujx4Lmxlbmd0aDtSKyspe2M9eFtSXTtpZihmKHIpPGYoYykpe1M9cjtyPWM7Yz1TfXE9KHk9dHdvc3VtKHIsYykpLmhpO3Y9eS5sbztpZihmKHEpPT09bCl7dmFyIEQ9cT09PWw/MTotMTtDKz1EO2lmKGYocj1yLUQqdS1EKnUpPGYoYykpe1M9cjtyPWM7Yz1TfXE9KHk9dHdvc3VtKHIsYykpLmhpO3Y9eS5sb30wIT09diYmKHhbTysrXT12KTtyPXF9eC5sZW5ndGg9TzswIT09ciYmaCh4LHIpfXZhciBIPXgubGVuZ3RoLTE7cT0wO3Y9MDtpZigwIT09Qyl7dmFyIE09SD49MD94W0hdOjA7SC0tO2lmKGYoQyk+MXx8Qz4wJiZNPjB8fEM8MCYmTTwwKXJldHVybiBDPjA/bDotMS8wO3E9KHk9dHdvc3VtKEMqdSxNLzIpKS5oaTt2PXkubG87dio9MjtpZihmKDIqcSk9PT1sKXJldHVybiBxPjA/cT09PXUmJnY9PT0tZC8yJiZIPj0wJiZ4W0hdPDA/cDpsOnE9PT0tdSYmdj09PWQvMiYmSD49MCYmeFtIXT4wPy1wOi0xLzA7aWYoMCE9PXYpe3hbKytIXT12O3Y9MH1xKj0yfWZvcig7SD49MDspe3E9KHk9dHdvc3VtKHEseFtILS1dKSkuaGk7aWYoMCE9PSh2PXkubG8pKWJyZWFrfUg+PTAmJih2PDAmJnhbSF08MHx8dj4wJiZ4W0hdPjApJiYoYz0yKnYpPT09KHI9cStjKS1xJiYocT1yKTtyZXR1cm4gcX19KX0sMTY4OShlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oNDU3Nikscz1uKDg3NDUpLGk9big3NjgwKSxvPW4oNjA0MyksbD1uKDkzMDYpLGY9bigxMTAzKSxjPXIuUHJvbWlzZSxoPSExO2Eoe3RhcmdldDoiUHJvbWlzZSIsc3RhdDohMCxmb3JjZWQ6IWN8fCFjLnRyeXx8ZihmdW5jdGlvbigpe2MudHJ5KGZ1bmN0aW9uKGUpe2g9OD09PWV9LDgpfSkuZXJyb3J8fCFofSx7dHJ5OmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MT9pKGFyZ3VtZW50cywxKTpbXSxuPW8uZih0aGlzKSxhPWYoZnVuY3Rpb24oKXtyZXR1cm4gcyhsKGUpLHZvaWQgMCx0KX0pOyhhLmVycm9yP24ucmVqZWN0Om4ucmVzb2x2ZSkoYS52YWx1ZSk7cmV0dXJuIG4ucHJvbWlzZX19KX0sNDYyOChlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oNjA0Myk7YSh7dGFyZ2V0OiJQcm9taXNlIixzdGF0OiEwfSx7d2l0aFJlc29sdmVyczpmdW5jdGlvbiB3aXRoUmVzb2x2ZXJzKCl7dmFyIGU9ci5mKHRoaXMpO3JldHVybntwcm9taXNlOmUucHJvbWlzZSxyZXNvbHZlOmUucmVzb2x2ZSxyZWplY3Q6ZS5yZWplY3R9fX0pfSw3NjQyKGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9bigzNDQwKSxzPW4oOTAzOSk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFuKDQ5MTYpKCJkaWZmZXJlbmNlIixmdW5jdGlvbihlKXtyZXR1cm4gMD09PWUuc2l6ZX0pfHxzKGZ1bmN0aW9uKCl7dmFyIGU9e3NpemU6MSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sa2V5czpmdW5jdGlvbigpe3ZhciBlPTA7cmV0dXJue25leHQ6ZnVuY3Rpb24oKXt2YXIgbj1lKys+MTt0LmhhcygxKSYmdC5jbGVhcigpO3JldHVybntkb25lOm4sdmFsdWU6Mn19fX19LHQ9bmV3IFNldChbMSwyLDMsNF0pO3JldHVybiAzIT09dC5kaWZmZXJlbmNlKGUpLnNpemV9KX0se2RpZmZlcmVuY2U6cn0pfSw4MDA0KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big5MDM5KSxzPW4oODc1MCk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFuKDQ5MTYpKCJpbnRlcnNlY3Rpb24iLGZ1bmN0aW9uKGUpe3JldHVybiAyPT09ZS5zaXplJiZlLmhhcygxKSYmZS5oYXMoMil9KXx8cihmdW5jdGlvbigpe3JldHVybiIzLDIiIT09U3RyaW5nKEFycmF5LmZyb20obmV3IFNldChbMSwyLDNdKS5pbnRlcnNlY3Rpb24obmV3IFNldChbMywyXSkpKSl9KX0se2ludGVyc2VjdGlvbjpzfSl9LDM4NTMoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDQ0NDkpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohbig0OTE2KSgiaXNEaXNqb2ludEZyb20iLGZ1bmN0aW9uKGUpe3JldHVybiFlfSl9LHtpc0Rpc2pvaW50RnJvbTpyfSl9LDU4NzYoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDM4MzgpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohbig0OTE2KSgiaXNTdWJzZXRPZiIsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KX0se2lzU3Vic2V0T2Y6cn0pfSwyNDc1KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big4NTI3KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IW4oNDkxNikoImlzU3VwZXJzZXRPZiIsZnVuY3Rpb24oZSl7cmV0dXJuIWV9KX0se2lzU3VwZXJzZXRPZjpyfSl9LDUwMjQoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDM2NTApLHM9big5ODM1KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IW4oNDkxNikoInN5bW1ldHJpY0RpZmZlcmVuY2UiKXx8IXMoInN5bW1ldHJpY0RpZmZlcmVuY2UiKX0se3N5bW1ldHJpY0RpZmZlcmVuY2U6cn0pfSwxNjk4KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big0MjA0KSxzPW4oOTgzNSk7YSh7dGFyZ2V0OiJTZXQiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiFuKDQ5MTYpKCJ1bmlvbiIpfHwhcygidW5pb24iKX0se3VuaW9uOnJ9KX0sOTU3NyhlLHQsbil7dmFyIGE9big0NjQ0KSxyPW4oMTEwOCkscz1uKDYxOTgpLGk9bigxMjkxKSxvPW4oNTg1NCksbD1hLmFUeXBlZEFycmF5LGY9YS5nZXRUeXBlZEFycmF5Q29uc3RydWN0b3IsYz1hLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsaD1SYW5nZUVycm9yLHU9ZnVuY3Rpb24oKXt0cnl7bmV3IEludDhBcnJheSgxKS53aXRoKDIse3ZhbHVlT2Y6ZnVuY3Rpb24oKXt0aHJvdyA4fX0pfWNhdGNoKGUpe3JldHVybiA4PT09ZX19KCksbT11JiZmdW5jdGlvbigpe3RyeXtuZXcgSW50OEFycmF5KDEpLndpdGgoLS41LDEpfWNhdGNoKGUpe3JldHVybiEwfX0oKTtjKCJ3aXRoIix7d2l0aDpmdW5jdGlvbihlLHQpe3ZhciBuPWwodGhpcyksYT1zKG4pLGM9aShlKSx1PWM8MD9hK2M6YyxtPXIobik/byh0KTordDtpZih1Pj1hfHx1PDApdGhyb3cgbmV3IGgoIkluY29ycmVjdCBpbmRleCIpO2Zvcih2YXIgcD1uZXcoZihuKSkoYSksZD0wO2Q8YTtkKyspcFtkXT1kPT09dT9tOm5bZF07cmV0dXJuIHB9fS53aXRoLCF1fHxtKX0sNTIxMyhlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oNDU3Nikscz1uKDUzNzApLGk9big5MTQzKSxvPXIuVWludDhBcnJheSxsPSFvfHwhby5mcm9tQmFzZTY0fHwhZnVuY3Rpb24oKXt0cnl7by5mcm9tQmFzZTY0KCJhIik7cmV0dXJufWNhdGNoKGUpe310cnl7by5mcm9tQmFzZTY0KCIiLG51bGwpfWNhdGNoKGUpe3JldHVybiEwfX0oKTtvJiZhKHt0YXJnZXQ6IlVpbnQ4QXJyYXkiLHN0YXQ6ITAsZm9yY2VkOmx9LHtmcm9tQmFzZTY0OmZ1bmN0aW9uIGZyb21CYXNlNjQoZSl7dmFyIHQ9aShlLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLG51bGwsOTAwNzE5OTI1NDc0MDk5MSk7cmV0dXJuIHMobyx0LmJ5dGVzKX19KX0sNjYzMihlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oNDU3Nikscz1uKDkxNDMpLGk9big0MTU0KSxvPXIuVWludDhBcnJheSxsPSFvfHwhby5wcm90b3R5cGUuc2V0RnJvbUJhc2U2NHx8IWZ1bmN0aW9uKCl7dmFyIGU9bmV3IG8oWzI1NSwyNTUsMjU1LDI1NSwyNTVdKTt0cnl7ZS5zZXRGcm9tQmFzZTY0KCIiLG51bGwpO3JldHVybn1jYXRjaChlKXt9dHJ5e2Uuc2V0RnJvbUJhc2U2NCgiYSIpO3JldHVybn1jYXRjaChlKXt9dHJ5e2Uuc2V0RnJvbUJhc2U2NCgiTWpZeVpnPT09Iil9Y2F0Y2godCl7cmV0dXJuIDUwPT09ZVswXSYmNTQ9PT1lWzFdJiY1MD09PWVbMl0mJjI1NT09PWVbM10mJjI1NT09PWVbNF19fSgpO28mJmEoe3RhcmdldDoiVWludDhBcnJheSIscHJvdG86ITAsZm9yY2VkOmx9LHtzZXRGcm9tQmFzZTY0OmZ1bmN0aW9uIHNldEZyb21CYXNlNjQoZSl7aSh0aGlzKTt2YXIgdD1zKGUsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsdGhpcyx0aGlzLmxlbmd0aCk7cmV0dXJue3JlYWQ6dC5yZWFkLHdyaXR0ZW46dC53cml0dGVufX19KX0sNDIyNihlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oNDU3Nikscz1uKDM0NjMpLGk9big0MTU0KSxvPW4oNTE2OSksbD1uKDIzMDMpO3IuVWludDhBcnJheSYmYSh7dGFyZ2V0OiJVaW50OEFycmF5Iixwcm90bzohMCxmb3JjZWQ6ZnVuY3Rpb24gdGhyb3dzT25MZW5ndGhUcmFja2luZ1ZpZXcoKXt0cnl7dmFyIGU9bmV3IEFycmF5QnVmZmVyKDE2LHttYXhCeXRlTGVuZ3RoOjEwMjR9KTtuZXcgVWludDhBcnJheShlKS5zZXRGcm9tSGV4KCJjYWZlZDAwZCIpfWNhdGNoKGUpe3JldHVybiEwfX0oKX0se3NldEZyb21IZXg6ZnVuY3Rpb24gc2V0RnJvbUhleChlKXtpKHRoaXMpO3MoZSk7byh0aGlzLmJ1ZmZlcik7dmFyIHQ9bChlLHRoaXMpLnJlYWQ7cmV0dXJue3JlYWQ6dCx3cml0dGVuOnQvMn19fSl9LDk0ODYoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDQ1NzYpLHM9big5NTA0KSxpPW4oMzk3Miksbz1uKDQxNTQpLGw9big1MTY5KSxmPW4oMjgwNCksYz1uKDk0NCksaD1mLmkyYyx1PWYuaTJjVXJsLG09cygiIi5jaGFyQXQpLHA9ci5VaW50OEFycmF5LGQ9IXB8fCFwLnByb3RvdHlwZS50b0Jhc2U2NHx8IWZ1bmN0aW9uKCl7dHJ5eyhuZXcgcCkudG9CYXNlNjQobnVsbCl9Y2F0Y2goZSl7cmV0dXJuITB9fSgpO3AmJmEoe3RhcmdldDoiVWludDhBcnJheSIscHJvdG86ITAsZm9yY2VkOmR9LHt0b0Jhc2U2NDpmdW5jdGlvbiB0b0Jhc2U2NCgpe3ZhciBlPW8odGhpcyksdD1hcmd1bWVudHMubGVuZ3RoP2koYXJndW1lbnRzWzBdKTp2b2lkIDAsbj0iYmFzZTY0Ij09PWModCk/aDp1LGE9ISF0JiYhIXQub21pdFBhZGRpbmc7bCh0aGlzLmJ1ZmZlcik7Zm9yKHZhciByLHM9IiIsZj0wLHA9ZS5sZW5ndGgsYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG0obixyPj42KmUmNjMpfTtmKzI8cDtmKz0zKXtyPShlW2ZdPDwxNikrKGVbZisxXTw8OCkrZVtmKzJdO3MrPWF0KDMpK2F0KDIpK2F0KDEpK2F0KDApfWlmKGYrMj09PXApe3I9KGVbZl08PDE2KSsoZVtmKzFdPDw4KTtzKz1hdCgzKSthdCgyKSthdCgxKSsoYT8iIjoiPSIpfWVsc2UgaWYoZisxPT09cCl7cj1lW2ZdPDwxNjtzKz1hdCgzKSthdCgyKSsoYT8iIjoiPT0iKX1yZXR1cm4gc319KX0sNDU2KGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big0NTc2KSxzPW4oOTUwNCksaT1uKDQxNTQpLG89big1MTY5KSxsPXMoMS4xLnRvU3RyaW5nKSxmPXMoW10uam9pbiksYz1BcnJheSxoPXIuVWludDhBcnJheSx1PSFofHwhaC5wcm90b3R5cGUudG9IZXh8fCFmdW5jdGlvbigpe3RyeXtyZXR1cm4iZmZmZmZmZmZmZmZmZmZmZiI9PT1uZXcgaChbMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NV0pLnRvSGV4KCl9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO2gmJmEoe3RhcmdldDoiVWludDhBcnJheSIscHJvdG86ITAsZm9yY2VkOnV9LHt0b0hleDpmdW5jdGlvbiB0b0hleCgpe2kodGhpcyk7byh0aGlzLmJ1ZmZlcik7Zm9yKHZhciBlPWModGhpcy5sZW5ndGgpLHQ9MCxuPXRoaXMubGVuZ3RoO3Q8bjt0Kyspe3ZhciBhPWwodGhpc1t0XSwxNik7ZVt0XT0xPT09YS5sZW5ndGg/IjAiK2E6YX1yZXR1cm4gZihlLCIiKX19KX0sOTQ1MihlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oOTMwNikscz1uKDY1NTcpLGk9big0MzI4KSxvPW4oNDk5NSksbD1uKDYzOTUpLGY9by5nZXQsYz1vLmhhcyxoPW8uc2V0O2Eoe3RhcmdldDoiV2Vha01hcCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6bHx8IWZ1bmN0aW9uKCl7dHJ5e1dlYWtNYXAucHJvdG90eXBlLmdldE9ySW5zZXJ0Q29tcHV0ZWQmJihuZXcgV2Vha01hcCkuZ2V0T3JJbnNlcnRDb21wdXRlZCgxLGZ1bmN0aW9uKCl7dGhyb3cgMX0pfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKX0se2dldE9ySW5zZXJ0Q29tcHV0ZWQ6ZnVuY3Rpb24gZ2V0T3JJbnNlcnRDb21wdXRlZChlLHQpe2x8fHModGhpcyk7aShlKTtyKHQpO2lmKGModGhpcyxlKSlyZXR1cm4gZih0aGlzLGUpO3ZhciBuPXQoZSk7aCh0aGlzLGUsbik7cmV0dXJuIG59fSl9LDg0NTQoZSx0LG4pe3ZhciBhPW4oNjUxOCkscj1uKDQ5OTUpLHM9big2Mzk1KSxpPXIuZ2V0LG89ci5oYXMsbD1yLnNldDthKHt0YXJnZXQ6IldlYWtNYXAiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOnN9LHtnZXRPckluc2VydDpmdW5jdGlvbiBnZXRPckluc2VydChlLHQpe2lmKG8odGhpcyxlKSlyZXR1cm4gaSh0aGlzLGUpO2wodGhpcyxlLHQpO3JldHVybiB0fX0pfSwzNjExKGUsdCxuKXt2YXIgYT1uKDY1MTgpLHI9big0NTc2KSxzPW4oMjEwNiksaT1uKDM3MjQpLG89VHlwZUVycm9yLGw9T2JqZWN0LmRlZmluZVByb3BlcnR5LGY9ci5zZWxmIT09cjt0cnl7aWYoaSl7dmFyIGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLCJzZWxmIik7IWYmJmMmJmMuZ2V0JiZjLmVudW1lcmFibGV8fHMociwic2VsZiIse2dldDpmdW5jdGlvbiBzZWxmKCl7cmV0dXJuIHJ9LHNldDpmdW5jdGlvbiBzZWxmKGUpe2lmKHRoaXMhPT1yKXRocm93IG5ldyBvKCJJbGxlZ2FsIGludm9jYXRpb24iKTtsKHIsInNlbGYiLHt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9ZWxzZSBhKHtnbG9iYWw6ITAsc2ltcGxlOiEwLGZvcmNlZDpmfSx7c2VsZjpyfSl9Y2F0Y2goZSl7fX0sNTc4MShlLHQsbil7dmFyIGE9big2NTE4KSxyPW4oNzc1MSkscz1uKDI4MTIpLGk9big2NTUpLG89big3NDE2KSxsPXIoIlVSTCIpO2Eoe3RhcmdldDoiVVJMIixzdGF0OiEwLGZvcmNlZDohb30se3BhcnNlOmZ1bmN0aW9uIHBhcnNlKGUpe3ZhciB0PXMoYXJndW1lbnRzLmxlbmd0aCwxKSxuPWkoZSksYT10PDJ8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT92b2lkIDA6aShhcmd1bWVudHNbMV0pO3RyeXtyZXR1cm4gbmV3IGwobixhKX1jYXRjaChlKXtyZXR1cm4gbnVsbH19fSl9fTtjb25zdCB0PXt9O2Z1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obil7Y29uc3QgYT10W25dO2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEuZXhwb3J0cztjb25zdCByPXRbbl09e2V4cG9ydHM6e319O2Vbbl0uY2FsbChyLmV4cG9ydHMscixyLmV4cG9ydHMsX193ZWJwYWNrX3JlcXVpcmVfXyk7cmV0dXJuIHIuZXhwb3J0c31fX3dlYnBhY2tfcmVxdWlyZV9fLmQ9KGUsdCk9PntpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbj0wO248dC5sZW5ndGg7KXt2YXIgYT10W24rK10scj10W24rK107X193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsYSk/MD09PXImJm4rKzowPT09cj9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxhLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnRbbisrXX0pOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGEse2VudW1lcmFibGU6ITAsZ2V0OnJ9KX1lbHNlIGZvcih2YXIgYSBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LGEpJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsYSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGEse2VudW1lcmFibGU6ITAsZ2V0OnRbYV19KX07X193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KTtfX3dlYnBhY2tfcmVxdWlyZV9fKDQxMTQpLF9fd2VicGFja19yZXF1aXJlX18oODExMSksX193ZWJwYWNrX3JlcXVpcmVfXygyNDg5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MDEpLF9fd2VicGFja19yZXF1aXJlX18oMzU3OSksX193ZWJwYWNrX3JlcXVpcmVfXyg1MzY3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI3MzEpLF9fd2VicGFja19yZXF1aXJlX18oNDYyOCksX193ZWJwYWNrX3JlcXVpcmVfXyg3NjQyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDgwMDQpLF9fd2VicGFja19yZXF1aXJlX18oMzg1MyksX193ZWJwYWNrX3JlcXVpcmVfXyg1ODc2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NzUpLF9fd2VicGFja19yZXF1aXJlX18oNTAyNCksX193ZWJwYWNrX3JlcXVpcmVfXygxNjk4KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDk1NzcpLF9fd2VicGFja19yZXF1aXJlX18oNjYzMiksX193ZWJwYWNrX3JlcXVpcmVfXyg0MjI2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDk0ODYpLF9fd2VicGFja19yZXF1aXJlX18oNDU2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNDQyMyksX193ZWJwYWNrX3JlcXVpcmVfXyg1NzgxKTtjb25zdCBuPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSxhPVsxLzAsMS8wLC0xLzAsLTEvMF0scj1uZXcgRmxvYXQzMkFycmF5KGEpLHM9Wy4wMDEsMCwwLC4wMDEsMCwwXSxpPS4zNS8xLjM1LG89Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixsPTEsZj0yLGM9NCxoPTgsdT0xNixtPTY0LHA9MTI4LGQ9MjU2LGc9InBkZmpzX2ludGVybmFsX2VkaXRvcl8iLGI9Myx3PTksaj0xMyxrPTE1LHk9MTAxLHE9e1BSSU5UOjQsTU9ESUZZX0NPTlRFTlRTOjgsQ09QWToxNixNT0RJRllfQU5OT1RBVElPTlM6MzIsRklMTF9JTlRFUkFDVElWRV9GT1JNUzoyNTYsQ09QWV9GT1JfQUNDRVNTSUJJTElUWTo1MTIsQVNTRU1CTEU6MTAyNCxQUklOVF9ISUdIX1FVQUxJVFk6MjA0OH0sdj0xLFM9Mix4PTMsQz0wLFQ9NCxPPTEsUj0yLEQ9MyxIPXtURVhUOjEsTElOSzoyLEZSRUVURVhUOjMsTElORTo0LFNRVUFSRTo1LENJUkNMRTo2LFBPTFlHT046NyxQT0xZTElORTo4LEhJR0hMSUdIVDo5LFVOREVSTElORToxMCxTUVVJR0dMWToxMSxTVFJJS0VPVVQ6MTIsU1RBTVA6MTMsQ0FSRVQ6MTQsSU5LOjE1LFBPUFVQOjE2LEZJTEVBVFRBQ0hNRU5UOjE3LFNPVU5EOjE4LE1PVklFOjE5LFdJREdFVDoyMCxTQ1JFRU46MjEsUFJJTlRFUk1BUks6MjIsVFJBUE5FVDoyMyxXQVRFUk1BUks6MjQsVEhSRUVEOjI1LFJFREFDVDoyNixSSUNITUVESUE6Mjd9LE09Ikdyb3VwIixOPSJSIixfPTAsRT00LHo9MSxMPTIsVT00LFc9MTYsWD0zMixLPTEyOCxHPTUxMixWPTEsJD0yLFk9NDA5NixKPTgxOTIsUT0zMjc2OCxaPTY1NTM2LGVlPTEzMTA3Mix0ZT0xMDQ4NTc2LG5lPTIwOTcxNTIsYWU9ODM4ODYwOCxyZT0xNjc3NzIxNixzZT0xLGllPTIsb2U9MyxsZT00LGZlPTUsY2U9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9LGhlPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifSx1ZT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9LG1lPTEscGU9NSxkZT0xLGdlPTIsYmU9Myx3ZT00LGplPTUsa2U9Nix5ZT03LHFlPTgsdmU9OSxTZT0xMCxBZT0xMSx4ZT0xMixDZT0xMyxJZT0xNCxGZT0xNSxUZT0xNixPZT0xNyxSZT0xOCxCZT0xOSxEZT0yMCxIZT0yMSxNZT0yMixOZT0yMyxQZT0yNCxfZT0yNSxFZT0yNix6ZT0yNyxMZT0yOCxVZT0yOSxXZT0zMCxYZT0zMSxLZT0zMixHZT0zMyxWZT0zNCwkZT0zNSxZZT0zNixKZT0zNyxRZT0zOCxaZT0zOSxldD00MCx0dD00MSxudD00MixydD00MyxzdD00NCxpdD00NSxvdD00NixsdD00NyxmdD00OCxjdD00OSxodD01MCx1dD01MSxtdD01MixwdD01MyxkdD01NCxndD01NSxidD01Nix3dD01NyxqdD01OCxrdD01OSx5dD02MCxxdD02MSx2dD02MixTdD02MyxBdD02NCx4dD02NSxDdD02NixJdD02NyxGdD02OCxUdD02OSxPdD03MCxSdD03MSxCdD03MixEdD03MyxIdD03NCxNdD03NSxOdD03NixQdD03NyxfdD04MCxFdD04MSx6dD04MyxMdD04NCxVdD04NSxXdD04NixYdD04NyxLdD04OCxHdD04OSxWdD05MCwkdD05MSxZdD05MixKdD05MyxRdD05NCxadD0wLGVuPTEsdG49Mixubj0zLGFuPTQscm49MSxzbj0yO2xldCBvbj1tZTtmdW5jdGlvbiBnZXRWZXJib3NpdHlMZXZlbCgpe3JldHVybiBvbn1mdW5jdGlvbiBpbmZvKGUpe29uPj1wZSYmY29uc29sZS5pbmZvKGBJbmZvOiAke2V9YCl9ZnVuY3Rpb24gd2FybihlKXtvbj49bWUmJmNvbnNvbGUud2FybihgV2FybmluZzogJHtlfWApfWZ1bmN0aW9uIHVucmVhY2hhYmxlKGUpe3Rocm93IG5ldyBFcnJvcihlKX1mdW5jdGlvbiBhc3NlcnQoZSx0KXtlfHx1bnJlYWNoYWJsZSh0KX1mdW5jdGlvbiBjcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsdD1udWxsLG49bnVsbCl7aWYoIWUpcmV0dXJuIG51bGw7aWYobiYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihuLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dD8ubGVuZ3RoPj0yJiYoZT1gaHR0cDovLyR7ZX1gKX1pZihuLnRyeUNvbnZlcnRFbmNvZGluZyl0cnl7ZT1zdHJpbmdUb1VURjhTdHJpbmcoZSl9Y2F0Y2h7fX1jb25zdCBhPXQ/VVJMLnBhcnNlKGUsdCk6VVJMLnBhcnNlKGUpO3JldHVybiBmdW5jdGlvbiBfaXNWYWxpZFByb3RvY29sKGUpe3N3aXRjaChlPy5wcm90b2NvbCl7Y2FzZSJodHRwOiI6Y2FzZSJodHRwczoiOmNhc2UiZnRwOiI6Y2FzZSJtYWlsdG86IjpjYXNlInRlbDoiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fShhKT9hOm51bGx9ZnVuY3Rpb24gc2hhZG93KGUsdCxuLGE9ITEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohYSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITF9KTtyZXR1cm4gbn1jb25zdCBsbj1mdW5jdGlvbiBCYXNlRXhjZXB0aW9uQ2xvc3VyZSgpe2Z1bmN0aW9uIEJhc2VFeGNlcHRpb24oZSx0KXt0aGlzLm1lc3NhZ2U9ZTt0aGlzLm5hbWU9dH1CYXNlRXhjZXB0aW9uLnByb3RvdHlwZT1uZXcgRXJyb3I7QmFzZUV4Y2VwdGlvbi5jb25zdHJ1Y3Rvcj1CYXNlRXhjZXB0aW9uO3JldHVybiBCYXNlRXhjZXB0aW9ufSgpO2NsYXNzIFBhc3N3b3JkRXhjZXB0aW9uIGV4dGVuZHMgbG57Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJQYXNzd29yZEV4Y2VwdGlvbiIpO3RoaXMuY29kZT10fX1jbGFzcyBVbmtub3duRXJyb3JFeGNlcHRpb24gZXh0ZW5kcyBsbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlVua25vd25FcnJvckV4Y2VwdGlvbiIpO3RoaXMuZGV0YWlscz10fX1jbGFzcyBJbnZhbGlkUERGRXhjZXB0aW9uIGV4dGVuZHMgbG57Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSW52YWxpZFBERkV4Y2VwdGlvbiIpfX1jbGFzcyBSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIGxue2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcihlLCJSZXNwb25zZUV4Y2VwdGlvbiIpO3RoaXMuc3RhdHVzPXQ7dGhpcy5taXNzaW5nPW59fWNsYXNzIEZvcm1hdEVycm9yIGV4dGVuZHMgbG57Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRm9ybWF0RXJyb3IiKX19Y2xhc3MgQWJvcnRFeGNlcHRpb24gZXh0ZW5kcyBsbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJBYm9ydEV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBieXRlc1RvU3RyaW5nKGUpeyJvYmplY3QiPT10eXBlb2YgZSYmdm9pZCAwIT09ZT8ubGVuZ3RofHx1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3IgYnl0ZXNUb1N0cmluZyIpO2NvbnN0IHQ9ZS5sZW5ndGgsbj04MTkyO2lmKHQ8bilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGUpO2NvbnN0IGE9W107Zm9yKGxldCByPTA7cjx0O3IrPW4pe2NvbnN0IHM9TWF0aC5taW4ocituLHQpLGk9ZS5zdWJhcnJheShyLHMpO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsaSkpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvQnl0ZXMoZSl7InN0cmluZyIhPXR5cGVvZiBlJiZ1bnJlYWNoYWJsZSgiSW52YWxpZCBhcmd1bWVudCBmb3Igc3RyaW5nVG9CeXRlcyIpO2NvbnN0IHQ9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7KythKW5bYV09MjU1JmUuY2hhckNvZGVBdChhKTtyZXR1cm4gbn1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7Y29uc3QgZT1uZXcgVWludDhBcnJheSg0KTtlWzBdPTE7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsMT09PW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciwwLDEpWzBdKX1zdGF0aWMgZ2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMpfXN0YXRpYyBnZXQgaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlRGVjb2Rlcil9c3RhdGljIGdldCBpc0Zsb2F0MTZBcnJheVN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgRmxvYXQxNkFycmF5KX1zdGF0aWMgZ2V0IGlzU2FuaXRpemVyU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc1Nhbml0aXplclN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBTYW5pdGl6ZXIpfXN0YXRpYyBnZXQgcGxhdGZvcm0oKXtjb25zdHtwbGF0Zm9ybTplLHVzZXJBZ2VudDp0fT1uYXZpZ2F0b3I7cmV0dXJuIHNoYWRvdyh0aGlzLCJwbGF0Zm9ybSIse2lzQW5kcm9pZDp0LmluY2x1ZGVzKCJBbmRyb2lkIiksaXNMaW51eDplLmluY2x1ZGVzKCJMaW51eCIpLGlzTWFjOmUuaW5jbHVkZXMoIk1hYyIpLGlzV2luZG93czplLmluY2x1ZGVzKCJXaW4iKSxpc0ZpcmVmb3g6dC5pbmNsdWRlcygiRmlyZWZveCIpfSl9c3RhdGljIGdldCBpc0NhbnZhc0ZpbHRlclN1cHBvcnRlZCgpe2xldCBlO3RoaXMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQmJihlPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKS5nZXRDb250ZXh0KCIyZCIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImlzQ2FudmFzRmlsdGVyU3VwcG9ydGVkIix2b2lkIDAhPT1lPy5maWx0ZXIpfXN0YXRpYyBnZXQgaXNBbHBoYUNvbG9ySW5wdXRTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzQWxwaGFDb2xvcklucHV0U3VwcG9ydGVkIiwhMSl9c3RhdGljIGdldCBpc0JhY2tkcm9wRmlsdGVyU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0JhY2tkcm9wRmlsdGVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIENTUyYmQ1NTLnN1cHBvcnRzKCJiYWNrZHJvcC1maWx0ZXIiLCJibHVyKDFweCkiKSl9fWNsYXNzIFV0aWx7c3RhdGljIGdldCBoZXhOdW1zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoZXhOdW1zIixBcnJheS5mcm9tKEFycmF5KDI1Nikua2V5cygpLGU9PmUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkpfXN0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LG4pe3JldHVybmAjJHt0aGlzLmhleE51bXNbZV19JHt0aGlzLmhleE51bXNbdF19JHt0aGlzLmhleE51bXNbbl19YH1zdGF0aWMgdHJhbnNmb3JtKGUsdCl7cmV0dXJuW2VbMF0qdFswXStlWzJdKnRbMV0sZVsxXSp0WzBdK2VbM10qdFsxXSxlWzBdKnRbMl0rZVsyXSp0WzNdLGVbMV0qdFsyXStlWzNdKnRbM10sZVswXSp0WzRdK2VbMl0qdFs1XStlWzRdLGVbMV0qdFs0XStlWzNdKnRbNV0rZVs1XV19c3RhdGljIG11bHRpcGx5QnlET01NYXRyaXgoZSx0KXtyZXR1cm5bZVswXSp0LmErZVsyXSp0LmIsZVsxXSp0LmErZVszXSp0LmIsZVswXSp0LmMrZVsyXSp0LmQsZVsxXSp0LmMrZVszXSp0LmQsZVswXSp0LmUrZVsyXSp0LmYrZVs0XSxlWzFdKnQuZStlWzNdKnQuZitlWzVdXX1zdGF0aWMgYXBwbHlUcmFuc2Zvcm0oZSx0LG49MCl7Y29uc3QgYT1lW25dLHI9ZVtuKzFdO2Vbbl09YSp0WzBdK3IqdFsyXSt0WzRdO2VbbisxXT1hKnRbMV0rcip0WzNdK3RbNV19c3RhdGljIGFwcGx5VHJhbnNmb3JtVG9CZXppZXIoZSx0LG49MCl7Y29uc3QgYT10WzBdLHI9dFsxXSxzPXRbMl0saT10WzNdLG89dFs0XSxsPXRbNV07Zm9yKGxldCB0PTA7dDw2O3QrPTIpe2NvbnN0IGY9ZVtuK3RdLGM9ZVtuK3QrMV07ZVtuK3RdPWYqYStjKnMrbztlW24rdCsxXT1mKnIrYyppK2x9fXN0YXRpYyBhcHBseUludmVyc2VUcmFuc2Zvcm0oZSx0KXtjb25zdCBuPWVbMF0sYT1lWzFdLHI9dFswXSp0WzNdLXRbMV0qdFsyXTtlWzBdPShuKnRbM10tYSp0WzJdK3RbMl0qdFs1XS10WzRdKnRbM10pL3I7ZVsxXT0oLW4qdFsxXSthKnRbMF0rdFs0XSp0WzFdLXRbNV0qdFswXSkvcn1zdGF0aWMgYXhpYWxBbGlnbmVkQm91bmRpbmdCb3goZSx0LG4pe2NvbnN0IGE9dFswXSxyPXRbMV0scz10WzJdLGk9dFszXSxvPXRbNF0sbD10WzVdLGY9ZVswXSxjPWVbMV0saD1lWzJdLHU9ZVszXTtsZXQgbT1hKmYrbyxwPW0sZD1hKmgrbyxnPWQsYj1pKmMrbCx3PWIsaj1pKnUrbCxrPWo7aWYoMCE9PXJ8fDAhPT1zKXtjb25zdCBlPXIqZix0PXIqaCxuPXMqYyxhPXMqdTttKz1uO2crPW47ZCs9YTtwKz1hO2IrPWU7ays9ZTtqKz10O3crPXR9blswXT1NYXRoLm1pbihuWzBdLG0sZCxwLGcpO25bMV09TWF0aC5taW4oblsxXSxiLGosdyxrKTtuWzJdPU1hdGgubWF4KG5bMl0sbSxkLHAsZyk7blszXT1NYXRoLm1heChuWzNdLGIsaix3LGspfXN0YXRpYyBpbnZlcnNlVHJhbnNmb3JtKGUpe2NvbnN0IHQ9ZVswXSplWzNdLWVbMV0qZVsyXTtyZXR1cm5bZVszXS90LC1lWzFdL3QsLWVbMl0vdCxlWzBdL3QsKGVbMl0qZVs1XS1lWzRdKmVbM10pL3QsKGVbNF0qZVsxXS1lWzVdKmVbMF0pL3RdfXN0YXRpYyBzaW5ndWxhclZhbHVlRGVjb21wb3NlMmRTY2FsZShlLHQpe2NvbnN0IG49ZVswXSxhPWVbMV0scj1lWzJdLHM9ZVszXSxpPW4qKjIrYSoqMixvPW4qcithKnMsbD1yKioyK3MqKjIsZj0oaStsKS8yLGM9TWF0aC5zcXJ0KGYqKjItKGkqbC1vKioyKSk7dFswXT1NYXRoLnNxcnQoZitjfHwxKTt0WzFdPU1hdGguc3FydChmLWN8fDEpfXN0YXRpYyBub3JtYWxpemVSZWN0KGUpe2NvbnN0IHQ9ZS5zbGljZSgwKTtpZihlWzBdPmVbMl0pe3RbMF09ZVsyXTt0WzJdPWVbMF19aWYoZVsxXT5lWzNdKXt0WzFdPWVbM107dFszXT1lWzFdfXJldHVybiB0fXN0YXRpYyBpbnRlcnNlY3QoZSx0KXtjb25zdCBuPU1hdGgubWF4KE1hdGgubWluKGVbMF0sZVsyXSksTWF0aC5taW4odFswXSx0WzJdKSksYT1NYXRoLm1pbihNYXRoLm1heChlWzBdLGVbMl0pLE1hdGgubWF4KHRbMF0sdFsyXSkpO2lmKG4+YSlyZXR1cm4gbnVsbDtjb25zdCByPU1hdGgubWF4KE1hdGgubWluKGVbMV0sZVszXSksTWF0aC5taW4odFsxXSx0WzNdKSkscz1NYXRoLm1pbihNYXRoLm1heChlWzFdLGVbM10pLE1hdGgubWF4KHRbMV0sdFszXSkpO3JldHVybiByPnM/bnVsbDpbbixyLGEsc119c3RhdGljIHBvaW50Qm91bmRpbmdCb3goZSx0LG4pe25bMF09TWF0aC5taW4oblswXSxlKTtuWzFdPU1hdGgubWluKG5bMV0sdCk7blsyXT1NYXRoLm1heChuWzJdLGUpO25bM109TWF0aC5tYXgoblszXSx0KX1zdGF0aWMgcmVjdEJvdW5kaW5nQm94KGUsdCxuLGEscil7clswXT1NYXRoLm1pbihyWzBdLGUsbik7clsxXT1NYXRoLm1pbihyWzFdLHQsYSk7clsyXT1NYXRoLm1heChyWzJdLGUsbik7clszXT1NYXRoLm1heChyWzNdLHQsYSl9c3RhdGljI2UoZSx0LG4sYSxyLHMsaSxvLGwsZil7aWYobDw9MHx8bD49MSlyZXR1cm47Y29uc3QgYz0xLWwsaD1sKmwsdT1oKmwsbT1jKihjKihjKmUrMypsKnQpKzMqaCpuKSt1KmEscD1jKihjKihjKnIrMypsKnMpKzMqaCppKSt1Km87ZlswXT1NYXRoLm1pbihmWzBdLG0pO2ZbMV09TWF0aC5taW4oZlsxXSxwKTtmWzJdPU1hdGgubWF4KGZbMl0sbSk7ZlszXT1NYXRoLm1heChmWzNdLHApfXN0YXRpYyN0KGUsdCxuLGEscixzLGksbyxsLGYsYyxoKXtpZihNYXRoLmFicyhsKTwxZS0xMil7TWF0aC5hYnMoZik+PTFlLTEyJiZ0aGlzLiNlKGUsdCxuLGEscixzLGksbywtYy9mLGgpO3JldHVybn1jb25zdCB1PWYqKjItNCpjKmw7aWYodTwwKXJldHVybjtjb25zdCBtPU1hdGguc3FydCh1KSxwPTIqbDt0aGlzLiNlKGUsdCxuLGEscixzLGksbywoLWYrbSkvcCxoKTt0aGlzLiNlKGUsdCxuLGEscixzLGksbywoLWYtbSkvcCxoKX1zdGF0aWMgYmV6aWVyQm91bmRpbmdCb3goZSx0LG4sYSxyLHMsaSxvLGwpe2xbMF09TWF0aC5taW4obFswXSxlLGkpO2xbMV09TWF0aC5taW4obFsxXSx0LG8pO2xbMl09TWF0aC5tYXgobFsyXSxlLGkpO2xbM109TWF0aC5tYXgobFszXSx0LG8pO3RoaXMuI3QoZSxuLHIsaSx0LGEscyxvLDMqKDMqKG4tciktZStpKSw2KihlLTIqbityKSwzKihuLWUpLGwpO3RoaXMuI3QoZSxuLHIsaSx0LGEscyxvLDMqKDMqKGEtcyktdCtvKSw2Kih0LTIqYStzKSwzKihhLXQpLGwpfX1mdW5jdGlvbiBzdHJpbmdUb1VURjhTdHJpbmcoZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWZ1bmN0aW9uIHV0ZjhTdHJpbmdUb1N0cmluZyhlKXtyZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUpKX1mdW5jdGlvbiBpc0FycmF5RXF1YWwoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKylpZihlW25dIT09dFtuXSlyZXR1cm4hMTtyZXR1cm4hMH1sZXQgZm49bnVsbCxjbj1udWxsO2NvbnN0IG1ha2VBcnI9KCk9PltdLG1ha2VNYXA9KCk9Pm5ldyBNYXAsbWFrZU9iaj0oKT0+T2JqZWN0LmNyZWF0ZShudWxsKSxtYWtlU2V0PSgpPT5uZXcgU2V0OyJmdW5jdGlvbiIhPXR5cGVvZiBCbG9iLnByb3RvdHlwZS5ieXRlcyYmKEJsb2IucHJvdG90eXBlLmJ5dGVzPWFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF3YWl0IHRoaXMuYXJyYXlCdWZmZXIoKSl9KTsiZnVuY3Rpb24iIT10eXBlb2YgUmVzcG9uc2UucHJvdG90eXBlLmJ5dGVzJiYoUmVzcG9uc2UucHJvdG90eXBlLmJ5dGVzPWFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGF3YWl0IHRoaXMuYXJyYXlCdWZmZXIoKSl9KTsiZnVuY3Rpb24iIT10eXBlb2YgSXRlcmF0b3IucHJvdG90eXBlLmpvaW4mJihJdGVyYXRvci5wcm90b3R5cGUuam9pbj1mdW5jdGlvbihlKXtyZXR1cm5bLi4udGhpc10uam9pbihlKX0pO19fd2VicGFja19yZXF1aXJlX18oMTE0OCk7Y29uc3QgaG49U3ltYm9sKCJDSVJDVUxBUl9SRUYiKSx1bj1TeW1ib2woIkVPRiIpO2xldCBtbj1PYmplY3QuY3JlYXRlKG51bGwpLHBuPU9iamVjdC5jcmVhdGUobnVsbCksZG49T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBOYW1le2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIHBuW2VdfHw9bmV3IE5hbWUoZSl9fWNsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIG1uW2VdfHw9bmV3IENtZChlKX19Y29uc3QgZ249ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBnbn07Y2xhc3MgRGljdHtfX25vblNlcmlhbGl6YWJsZV9fPWduOyNuPW5ldyBNYXA7b2JqSWQ9bnVsbDtzdXBwcmVzc0VuY3J5cHRpb249ITE7eHJlZjtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMueHJlZj1lfWFzc2lnblhyZWYoZSl7dGhpcy54cmVmPWV9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy4jbi5zaXplfSNhKGUsdCxuLGEpe2xldCByPXRoaXMuI24uZ2V0KHQpO2lmKHZvaWQgMD09PXImJnZvaWQgMCE9PW4pe3I9dGhpcy4jbi5nZXQobik7dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy4jbi5nZXQoYSkpfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/ZT90aGlzLnhyZWYuZmV0Y2hBc3luYyhyLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTp0aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXQoZSx0LG4pe3JldHVybiB0aGlzLiNhKCExLGUsdCxuKX1hc3luYyBnZXRBc3luYyhlLHQsbil7cmV0dXJuIHRoaXMuI2EoITAsZSx0LG4pfWdldEFycmF5KGUsdCxuKXtsZXQgYT10aGlzLiNhKCExLGUsdCxuKTtpZihBcnJheS5pc0FycmF5KGEpKXthPWEuc2xpY2UoKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspYVtlXWluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhW2VdPXRoaXMueHJlZi5mZXRjaChhW2VdLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSl9cmV0dXJuIGF9Z2V0UmF3KGUpe3JldHVybiB0aGlzLiNuLmdldChlKX1nZXRLZXlzKCl7cmV0dXJuIHRoaXMuI24ua2V5cygpfWdldFJhd1ZhbHVlcygpe3JldHVybiB0aGlzLiNuLnZhbHVlcygpfWdldFJhd0VudHJpZXMoKXtyZXR1cm4gdGhpcy4jbi5lbnRyaWVzKCl9c2V0KGUsdCl7dGhpcy4jbi5zZXQoZSx0KX1zZXRJZk5vdEV4aXN0cyhlLHQpe3RoaXMuaGFzKGUpfHx0aGlzLnNldChlLHQpfXNldElmTnVtYmVyKGUsdCl7Im51bWJlciI9PXR5cGVvZiB0JiZ0aGlzLnNldChlLHQpfXNldElmQXJyYXkoZSx0KXsoQXJyYXkuaXNBcnJheSh0KXx8QXJyYXlCdWZmZXIuaXNWaWV3KHQpKSYmdGhpcy5zZXQoZSx0KX1zZXRJZkRlZmluZWQoZSx0KXtudWxsIT10JiZ0aGlzLnNldChlLHQpfXNldElmTmFtZShlLHQpeyJzdHJpbmciPT10eXBlb2YgdD90aGlzLnNldChlLE5hbWUuZ2V0KHQpKTp0IGluc3RhbmNlb2YgTmFtZSYmdGhpcy5zZXQoZSx0KX1zZXRJZkRpY3QoZSx0KXt0IGluc3RhbmNlb2YgRGljdCYmdGhpcy5zZXQoZSx0KX1oYXMoZSl7cmV0dXJuIHRoaXMuI24uaGFzKGUpfSpbU3ltYm9sLml0ZXJhdG9yXSgpe2Zvcihjb25zdFtlLHRdb2YgdGhpcy4jbil5aWVsZFtlLHQgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2godCx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dF19c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOm49ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHI9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZS5nZXRSYXdFbnRyaWVzKCkpe2NvbnN0IGU9ci5nZXRPckluc2VydENvbXB1dGVkKHQsbWFrZUFycik7KCFlLmxlbmd0aHx8biYmYSBpbnN0YW5jZW9mIERpY3QpJiZlLnB1c2goYSl9Zm9yKGNvbnN0W3Qsbl1vZiByKXtpZigxPT09bi5sZW5ndGh8fCEoblswXWluc3RhbmNlb2YgRGljdCkpe2Euc2V0KHQsblswXSk7Y29udGludWV9Y29uc3Qgcj1uZXcgRGljdChlKTtmb3IoY29uc3QgZSBvZiBuKWZvcihjb25zdFt0LG5db2YgZS5nZXRSYXdFbnRyaWVzKCkpci5zZXRJZk5vdEV4aXN0cyh0LG4pO3Iuc2l6ZT4wJiZhLnNldCh0LHIpfXIuY2xlYXIoKTtyZXR1cm4gYS5zaXplPjA/YTpEaWN0LmVtcHR5fWNsb25lKCl7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcihjb25zdFt0LG5db2YgdGhpcy4jbillLnNldCh0LG4pO3JldHVybiBlfWRlbGV0ZShlKXt0aGlzLiNuLmRlbGV0ZShlKX19Y2xhc3MgUmVmeyNyO2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLiNyPWU7dGhpcy5udW09dDt0aGlzLmdlbj1ufXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuI3J9c3RhdGljIGZyb21TdHJpbmcoZSl7Y29uc3QgdD1kbltlXTtpZih0KXJldHVybiB0O2NvbnN0IG49L14oXGQrKVIoXGQqKSQvLmV4ZWMoZSk7aWYoIW58fCIwIj09PW5bMV0pcmV0dXJuIG51bGw7Y29uc3QgYT1wYXJzZUludChuWzFdLDEwKSxyPW5bMl0/cGFyc2VJbnQoblsyXSwxMCk6MDtyZXR1cm4gZG5bZV09bmV3IFJlZihlLGEscil9c3RhdGljIGdldChlLHQpe2NvbnN0IG49MD09PXQ/YCR7ZX1SYDpgJHtlfVIke3R9YDtyZXR1cm4gZG5bbl18fD1uZXcgUmVmKG4sZSx0KX19Y2xhc3MgUmVmU2V0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fc2V0PW5ldyBTZXQoZT8uX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX1jbGFzcyBSZWZTZXRDYWNoZXtfbWFwPW5ldyBNYXA7Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9cHV0QWxpYXMoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9Z2V0T3JQdXRDb21wdXRlZChlLHQpe2NvbnN0IG49dGhpcy5fbWFwLGE9ZS50b1N0cmluZygpO24uaGFzKGEpfHxuLnNldChhLHQoZSkpO3JldHVybiBuLmdldChhKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLl9tYXAudmFsdWVzKCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX0qdmFsdWVzKCl7eWllbGQqdGhpcy5fbWFwLnZhbHVlcygpfSppdGVtcygpe2Zvcihjb25zdFtlLHRdb2YgdGhpcy5fbWFwKXlpZWxkW1JlZi5mcm9tU3RyaW5nKGUpLHRdfSprZXlzKCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fbWFwLmtleXMoKSl5aWVsZCBSZWYuZnJvbVN0cmluZyhlKX19ZnVuY3Rpb24gaXNOYW1lKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lJiYodm9pZCAwPT09dHx8ZS5uYW1lPT09dCl9ZnVuY3Rpb24gaXNDbWQoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIENtZCYmKHZvaWQgMD09PXR8fGUuY21kPT09dCl9ZnVuY3Rpb24gaXNEaWN0KGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0JiYodm9pZCAwPT09dHx8aXNOYW1lKGUuZ2V0KCJUeXBlIiksdCkpfWZ1bmN0aW9uIGlzUmVmc0VxdWFsKGUsdCl7cmV0dXJuIGUubnVtPT09dC5udW0mJmUuZ2VuPT09dC5nZW59Y2xhc3MgQmFzZVN0cmVhbXtnZXQgbGVuZ3RoKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgbGVuZ3RoYCBhY2Nlc3NlZCIpfWdldCBpc0VtcHR5KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IGdldHRlciBgaXNFbXB0eWAgYWNjZXNzZWQiKX1nZXQgaXNEYXRhTG9hZGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0RhdGFMb2FkZWQiLCEwKX1nZXRCeXRlKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZWAgY2FsbGVkIil9Z2V0Qnl0ZXMoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZXNgIGNhbGxlZCIpfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe3JldHVybiB0aGlzLmdldEJ5dGVzKGUsdCl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGFzeW5jR2V0Qnl0ZXNgIGNhbGxlZCIpfWdldCBpc0FzeW5jKCl7cmV0dXJuITF9Z2V0IGlzQXN5bmNEZWNvZGVyKCl7cmV0dXJuITF9Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMX1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4hMX1hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe3JldHVybiBudWxsfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4gYnl0ZXNUb1N0cmluZyh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQsbj1udWxsKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtYWtlU3ViU3RyZWFtYCBjYWxsZWQiKX1jbG9uZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGNsb25lYCBjYWxsZWQiKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiBudWxsfWdldE9yaWdpbmFsU3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtPy5nZXRPcmlnaW5hbFN0cmVhbSgpfHx0aGlzfX1mdW5jdGlvbiBzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGUpe3JldHVybiBudWxsPT1lfHxmdW5jdGlvbiBpc0FzY2lpKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKCFlfHwvXltceDAwLVx4N0ZdKiQvLnRlc3QoZSkpfShlKT9lOnN0cmluZ1RvVVRGMTZTdHJpbmcoZSwhMCl9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQobik7dC5wdXNoKFV0aWwuaGV4TnVtc1thPj44JjI1NV0sVXRpbC5oZXhOdW1zWzI1NSZhXSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNlN0cmluZyhlLHQ9ITEpe2NvbnN0IG49W107dCYmbi5wdXNoKCLDvsO/Iik7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY2hhckNvZGVBdCh0KTtuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShhPj44JjI1NSksU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUmYSkpfXJldHVybiBuLmpvaW4oIiIpfWNvbnN0IGJuPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3MjgsNzExLDcxMCw3MjksNzMzLDczMSw3MzAsNzMyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgyMjYsODIyNCw4MjI1LDgyMzAsODIxMiw4MjExLDQwMiw4MjYwLDgyNDksODI1MCw4NzIyLDgyNDAsODIyMiw4MjIwLDgyMjEsODIxNiw4MjE3LDgyMTgsODQ4Miw2NDI1Nyw2NDI1OCwzMjEsMzM4LDM1MiwzNzYsMzgxLDMwNSwzMjIsMzM5LDM1MywzODIsMCw4MzY0XTtmdW5jdGlvbiBzdHJpbmdUb1BERlN0cmluZyhlLHQ9ITEpe2lmKGVbMF0+PSLDryIpe2xldCBuO2lmKCLDviI9PT1lWzBdJiYiw78iPT09ZVsxXSl7bj0idXRmLTE2YmUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2UgaWYoIsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdKXtuPSJ1dGYtMTZsZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSLDryI9PT1lWzBdJiYiwrsiPT09ZVsxXSYmIsK/Ij09PWVbMl0mJihuPSJ1dGYtOCIpO2lmKG4pdHJ5e2NvbnN0IGE9bmV3IFRleHREZWNvZGVyKG4se2ZhdGFsOiEwfSkscj1zdHJpbmdUb0J5dGVzKGUpLHM9YS5kZWNvZGUocik7cmV0dXJuIHR8fCFzLmluY2x1ZGVzKCIbIik/czpzLnJlcGxhY2VBbGwoL1x4MWJbXlx4MWJdKig/Olx4MWJ8JCkvZywiIil9Y2F0Y2goZSl7d2Fybihgc3RyaW5nVG9QREZTdHJpbmc6ICIke2V9Ii5gKX19Y29uc3Qgbj1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHM9ZS5jaGFyQ29kZUF0KGEpO2lmKCF0JiYyNz09PXMpe2Zvcig7KythPHImJjI3IT09ZS5jaGFyQ29kZUF0KGEpOyk7Y29udGludWV9Y29uc3QgaT1ibltzXTtuLnB1c2goaT9TdHJpbmcuZnJvbUNoYXJDb2RlKGkpOmUuY2hhckF0KGEpKX1yZXR1cm4gbi5qb2luKCIiKX1jb25zdCB3bj0vXlsxLTldXC5cZCQvLGpuPTIqKjMxLTEsa249WzEsMCwwLDEsMCwwXSx5bj1bIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdLHFuPVsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il07ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19Y2xhc3MgTWlzc2luZ0RhdGFFeGNlcHRpb24gZXh0ZW5kcyBsbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBNaXNzaW5nIGRhdGEgWyR7ZX0sICR7dH0pYCwiTWlzc2luZ0RhdGFFeGNlcHRpb24iKTt0aGlzLmJlZ2luPWU7dGhpcy5lbmQ9dH19Y2xhc3MgUGFyc2VyRU9GRXhjZXB0aW9uIGV4dGVuZHMgbG57Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiUGFyc2VyRU9GRXhjZXB0aW9uIil9fWNsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIGxue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZFbnRyeUV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmUGFyc2VFeGNlcHRpb24gZXh0ZW5kcyBsbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19ZnVuY3Rpb24gYXJyYXlCdWZmZXJzVG9CeXRlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybiBuZXcgVWludDhBcnJheSgwKTtpZigxPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZVswXSk7bGV0IG49MDtmb3IobGV0IGE9MDthPHQ7YSsrKW4rPWVbYV0uYnl0ZUxlbmd0aDtjb25zdCBhPW5ldyBVaW50OEFycmF5KG4pO2xldCByPTA7Zm9yKGxldCBuPTA7bjx0O24rKyl7Y29uc3QgdD1uZXcgVWludDhBcnJheShlW25dKTthLnNldCh0LHIpO3IrPXQuYnl0ZUxlbmd0aH1yZXR1cm4gYX1hc3luYyBmdW5jdGlvbiBmZXRjaEJpbmFyeURhdGEoZSl7Y29uc3QgdD1hd2FpdCBmZXRjaChlKTtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmaWxlICIke2V9IiB3aXRoICIke3Quc3RhdHVzVGV4dH0iLmApO3JldHVybiB0LmJ5dGVzKCl9ZnVuY3Rpb24gZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDplLGtleTp0LGdldEFycmF5Om49ITEsc3RvcFdoZW5Gb3VuZDphPSEwfSl7bGV0IHI7Y29uc3Qgcz1uZXcgUmVmU2V0O2Zvcig7ZSBpbnN0YW5jZW9mIERpY3QmJighZS5vYmpJZHx8IXMuaGFzKGUub2JqSWQpKTspe2Uub2JqSWQmJnMucHV0KGUub2JqSWQpO2NvbnN0IGk9bj9lLmdldEFycmF5KHQpOmUuZ2V0KHQpO2lmKHZvaWQgMCE9PWkpe2lmKGEpcmV0dXJuIGk7KHJ8fD1bXSkucHVzaChpKX1lPWUuZ2V0KCJQYXJlbnQiKX1yZXR1cm4gcn1mdW5jdGlvbiBkZWVwQ29tcGFyZShlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKGUgaW5zdGFuY2VvZiBSZWYmJnQgaW5zdGFuY2VvZiBSZWYpcmV0dXJuIGlzUmVmc0VxdWFsKGUsdCk7aWYoZSBpbnN0YW5jZW9mIE5hbWUmJnQgaW5zdGFuY2VvZiBOYW1lKXJldHVybiBlLm5hbWU9PT10Lm5hbWU7aWYoZSBpbnN0YW5jZW9mIERpY3QmJnQgaW5zdGFuY2VvZiBEaWN0KXtpZihlLnNpemUhPT10LnNpemUpcmV0dXJuITE7Zm9yKGNvbnN0W24sYV1vZiBlLmdldFJhd0VudHJpZXMoKSl7Y29uc3QgZT10LmdldFJhdyhuKTtpZih2b2lkIDA9PT1lfHwhZGVlcENvbXBhcmUoYSxlKSlyZXR1cm4hMX1yZXR1cm4hMH1pZihBcnJheS5pc0FycmF5KGUpJiZBcnJheS5pc0FycmF5KHQpKXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKylpZighZGVlcENvbXBhcmUoZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1jb25zdCB2bj1bIiIsIkMiLCJDQyIsIkNDQyIsIkNEIiwiRCIsIkRDIiwiRENDIiwiRENDQyIsIkNNIiwiIiwiWCIsIlhYIiwiWFhYIiwiWEwiLCJMIiwiTFgiLCJMWFgiLCJMWFhYIiwiWEMiLCIiLCJJIiwiSUkiLCJJSUkiLCJJViIsIlYiLCJWSSIsIlZJSSIsIlZJSUkiLCJJWCJdO2Z1bmN0aW9uIHRvUm9tYW5OdW1lcmFscyhlLHQ9ITEpe2Fzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAsIlRoZSBudW1iZXIgc2hvdWxkIGJlIGEgcG9zaXRpdmUgaW50ZWdlci4iKTtjb25zdCBuPSJNIi5yZXBlYXQoZS8xZTN8MCkrdm5bZSUxZTMvMTAwfDBdK3ZuWzEwKyhlJTEwMC8xMHwwKV0rdm5bMjArZSUxMF07cmV0dXJuIHQ/bi50b0xvd2VyQ2FzZSgpOm59ZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGUpe3JldHVybiAzMj09PWV8fDk9PT1lfHwxMz09PWV8fDEwPT09ZX1mdW5jdGlvbiBpc051bWJlckFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/KG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KGU9PiJudW1iZXIiPT10eXBlb2YgZSk6QXJyYXlCdWZmZXIuaXNWaWV3KGUpJiYhKGUgaW5zdGFuY2VvZiBCaWdJbnQ2NEFycmF5fHxlIGluc3RhbmNlb2YgQmlnVWludDY0QXJyYXkpJiYobnVsbD09PXR8fGUubGVuZ3RoPT09dCl9ZnVuY3Rpb24gbG9va3VwTWF0cml4KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw2KT9lOnR9ZnVuY3Rpb24gbG9va3VwUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/ZTp0fWZ1bmN0aW9uIGxvb2t1cE5vcm1hbFJlY3QoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDQpP1V0aWwubm9ybWFsaXplUmVjdChlKTp0fWZ1bmN0aW9uIHBhcnNlWEZBUGF0aChlKXtjb25zdCB0PS8oLispXFsoXGQrKVxdJC87cmV0dXJuIGUuc3BsaXQoIi4iKS5tYXAoZT0+e2NvbnN0IG49ZS5tYXRjaCh0KTtyZXR1cm4gbj97bmFtZTpuWzFdLHBvczpwYXJzZUludChuWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KX1mdW5jdGlvbiBlc2NhcGVQREZOYW1lKGUpe2NvbnN0IHQ9W107bGV0IG49MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO2lmKHI8MzN8fHI+MTI2fHwzNT09PXJ8fDQwPT09cnx8NDE9PT1yfHw2MD09PXJ8fDYyPT09cnx8OTE9PT1yfHw5Mz09PXJ8fDEyMz09PXJ8fDEyNT09PXJ8fDQ3PT09cnx8Mzc9PT1yKXtuPGEmJnQucHVzaChlLnN1YnN0cmluZyhuLGEpKTt0LnB1c2goYCMke3IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKX1gKTtuPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO248ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhuKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLGU9PiJcbiI9PT1lPyJcXG4iOiJcciI9PT1lPyJcXHIiOmBcXCR7ZX1gKX1mdW5jdGlvbiBfY29sbGVjdEpTKGUsdCxuLGEpe2lmKCFlKXJldHVybjtsZXQgcj1udWxsO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKGUpKXJldHVybjtyPWU7YS5wdXQocik7ZT10LmZldGNoKGUpfWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHIgb2YgZSlfY29sbGVjdEpTKHIsdCxuLGEpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe2lmKGlzTmFtZShlLmdldCgiUyIpLCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9ZS5nZXQoIkpTIik7bGV0IGE7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YT10LmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgdCYmKGE9dCk7YSYmPXN0cmluZ1RvUERGU3RyaW5nKGEsITApLnJlcGxhY2VBbGwoIlwwIiwiIik7YSYmbi5wdXNoKGEudHJpbSgpKX1fY29sbGVjdEpTKGUuZ2V0UmF3KCJOZXh0IiksdCxuLGEpfXImJmEucmVtb3ZlKHIpfWZ1bmN0aW9uIGNvbGxlY3RBY3Rpb25zKGUsdCxuKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJBQSIsc3RvcFdoZW5Gb3VuZDohMX0pO2lmKHIpZm9yKGxldCB0PXIubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0IHM9clt0XTtpZihzIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbdCxyXW9mIHMuZ2V0UmF3RW50cmllcygpKXtjb25zdCBzPW5bdF07aWYoIXMpY29udGludWU7Y29uc3QgaT1bXTtfY29sbGVjdEpTKHIsZSxpLG5ldyBSZWZTZXQpO2kubGVuZ3RoPjAmJihhW3NdPWkpfX1pZih0LmhhcygiQSIpKXtjb25zdCBuPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLG4sbmV3IFJlZlNldCk7bi5sZW5ndGg+MCYmKGEuQWN0aW9uPW4pfXJldHVybiBPYmplY3Qua2V5cyhhKS5sZW5ndGg/YTpudWxsfWNvbnN0IFNuPXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWUuY29kZVBvaW50QXQodCk7bj41NTI5NSYmKG48NTczNDR8fG4+NjU1MzMpJiZ0Kys7eWllbGQgbn19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgbj0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KGEpO2lmKDMyPD1yJiZyPD0xMjYpe2NvbnN0IHM9U25bcl07aWYocyl7bjxhJiZ0LnB1c2goZS5zdWJzdHJpbmcobixhKSk7dC5wdXNoKHMpO249YSsxfX1lbHNle248YSYmdC5wdXNoKGUuc3Vic3RyaW5nKG4sYSkpO3QucHVzaChgJiN4JHtyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtyPjY1NTM1JiZhKys7bj1hKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTtuPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcobikpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHZhbGlkYXRlRm9udE5hbWUoZSx0PSExKXtjb25zdCBuPS9eKCJ8JykuKigifCcpJC8uZXhlYyhlKTtpZihuJiZuWzFdPT09blsyXSl7aWYobmV3IFJlZ0V4cChgW15cXFxcXSR7blsxXX1gKS50ZXN0KGUuc2xpY2UoMSwtMSkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIHVuZXNjYXBlZCAke25bMV19OiAke2V9LmApO3JldHVybiExfX1lbHNlIGZvcihjb25zdCBuIG9mIGUuc3BsaXQoL1sgXHRdKy8pKWlmKC9eKD86XGR8LVtcZC1dKS8udGVzdChuKXx8IS9eW1x3XFwtXSskLy50ZXN0KG4pKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTpuLGZvbnRXZWlnaHQ6YSxpdGFsaWNBbmdsZTpyfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKG4sITApKXJldHVybiExO2NvbnN0IHM9YT9hLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHMpP3M6IjQwMCI7Y29uc3QgaT1wYXJzZUZsb2F0KHIpO2UuaXRhbGljQW5nbGU9aXNOYU4oaSl8fGk8LTkwfHxpPjkwPyIxNCI6ci50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtuLGFdb2YgZSluLnN0YXJ0c1dpdGgoZykmJnQuZ2V0T3JJbnNlcnRDb21wdXRlZChhLnBhZ2VJbmRleCxtYWtlQXJyKS5wdXNoKGEpO3JldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtlIGluc3RhbmNlb2YgRGF0ZXx8KGU9bmV3IERhdGUoZSkpO3JldHVybltlLmdldFVUQ0Z1bGxZZWFyKCkudG9TdHJpbmcoKSwoZS5nZXRVVENNb250aCgpKzEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpLGUuZ2V0VVRDSG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ1NlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKV0uam9pbigiIil9ZnVuY3Rpb24gZ2V0Um90YXRpb25NYXRyaXgoZSx0LG4pe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxuXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxuXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1mdW5jdGlvbiBnZXRTaXplSW5CeXRlcyhlKXtyZXR1cm4gTWF0aC5jZWlsKE1hdGguY2VpbChNYXRoLmxvZzIoMStlKSkvOCl9Y29uc3QgQW49MT09PW5ldyBVaW50OEFycmF5KG5ldyBVaW50MzJBcnJheShbMV0pLmJ1ZmZlcilbMF0/NDI3ODE5MDA4MDoyNTUseG49fkFuO2NsYXNzIFFDTVN7c3RhdGljI3M9bnVsbDtzdGF0aWMgX21lbW9yeT1udWxsO3N0YXRpYyBfZGVzdEJ1ZmZlcj1udWxsO3N0YXRpYyBfZGVzdE9mZnNldD0wO3N0YXRpYyBfa2VlcEFscGhhPSExO3N0YXRpYyBnZXQgX21lbW9yeUFycmF5KCl7Y29uc3QgZT10aGlzLiNzO3JldHVybiBlPy5ieXRlTGVuZ3RoP2U6dGhpcy4jcz1uZXcgVWludDhBcnJheSh0aGlzLl9tZW1vcnkuYnVmZmVyKX19Y29uc3QgQ249T2JqZWN0LmZyZWV6ZSh7UkdCODowLDA6IlJHQjgiLFJHQkE4OjEsMToiUkdCQTgiLEJHUkE4OjIsMjoiQkdSQTgiLEdyYXk4OjMsMzoiR3JheTgiLEdyYXlBODo0LDQ6IkdyYXlBOCIsQ01ZSzo1LDU6IkNNWUsifSksSW49T2JqZWN0LmZyZWV6ZSh7UGVyY2VwdHVhbDowLDA6IlBlcmNlcHR1YWwiLFJlbGF0aXZlQ29sb3JpbWV0cmljOjEsMToiUmVsYXRpdmVDb2xvcmltZXRyaWMiLFNhdHVyYXRpb246MiwyOiJTYXR1cmF0aW9uIixBYnNvbHV0ZUNvbG9yaW1ldHJpYzozLDM6IkFic29sdXRlQ29sb3JpbWV0cmljIn0pO2Z1bmN0aW9uIHFjbXNfY29udmVydF9hcnJheShlLHQsbil7Y29uc3QgYT1wYXNzQXJyYXk4VG9XYXNtMCh0LEhuLl9fd2JpbmRnZW5fbWFsbG9jKSxyPU1uO0huLnFjbXNfY29udmVydF9hcnJheShlLGEscixuKX1mdW5jdGlvbiBfX3diZ19nZXRfaW1wb3J0cygpe3JldHVybntfX3Byb3RvX186bnVsbCwiLi9xY21zX2JnLmpzIjp7X19wcm90b19fOm51bGwsX193YmdfX193YmluZGdlbl90aHJvd18zNDRmNDJkMzIxMWM0NzY1OmZ1bmN0aW9uKGUsdCl7dGhyb3cgbmV3IEVycm9yKGZ1bmN0aW9uIGdldFN0cmluZ0Zyb21XYXNtMChlLHQpe3JldHVybiBmdW5jdGlvbiBkZWNvZGVUZXh0KGUsdCl7Um4rPXQ7aWYoUm4+PU9uKXtUbj1uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7aWdub3JlQk9NOiEwLGZhdGFsOiEwfSk7VG4uZGVjb2RlKCk7Um49dH1yZXR1cm4gVG4uZGVjb2RlKGdldFVpbnQ4QXJyYXlNZW1vcnkwKCkuc3ViYXJyYXkoZSxlK3QpKX0oZT4+PjAsdCl9KGUsdCkpfSxfX3diZ19jb3B5X3Jlc3VsdF8wZDE1ZjNiZjlkOTAxMmFlOmZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9uIGNvcHlfcmVzdWx0KGUsdCl7Y29uc3R7X2Rlc3RCdWZmZXI6bixfZGVzdE9mZnNldDphLF9rZWVwQWxwaGE6cixfbWVtb3J5QXJyYXk6c309UUNNUztpZighcil7bi5zZXQocy5zdWJhcnJheShlLGUrdCksYSk7cmV0dXJufWNvbnN0IGk9dD4+MixvPW4uYnl0ZU9mZnNldCthO2lmKCEoMyYob3xlKSkpe2NvbnN0IHQ9bmV3IFVpbnQzMkFycmF5KG4uYnVmZmVyLG8saSksYT1uZXcgVWludDMyQXJyYXkoUUNNUy5fbWVtb3J5LmJ1ZmZlcixlLGkpO2ZvcihsZXQgZT0wO2U8aTtlKyspdFtlXT10W2VdJkFufGFbZV0meG47cmV0dXJufWZvcihsZXQgcj1lLGk9ZSt0LG89YTtyPGk7cis9NCxvKz00KXtuW29dPXNbcl07bltvKzFdPXNbcisxXTtuW28rMl09c1tyKzJdfX0oZT4+PjAsdD4+PjApfSxfX3diaW5kZ2VuX2luaXRfZXh0ZXJucmVmX3RhYmxlOmZ1bmN0aW9uKCl7Y29uc3QgZT1Ibi5fX3diaW5kZ2VuX2V4dGVybnJlZnMsdD1lLmdyb3coNCk7ZS5zZXQoMCx2b2lkIDApO2Uuc2V0KHQrMCx2b2lkIDApO2Uuc2V0KHQrMSxudWxsKTtlLnNldCh0KzIsITApO2Uuc2V0KHQrMywhMSl9fX19bGV0IEZuPW51bGw7ZnVuY3Rpb24gZ2V0VWludDhBcnJheU1lbW9yeTAoKXtudWxsIT09Rm4mJjAhPT1Gbi5ieXRlTGVuZ3RofHwoRm49bmV3IFVpbnQ4QXJyYXkoSG4ubWVtb3J5LmJ1ZmZlcikpO3JldHVybiBGbn1mdW5jdGlvbiBwYXNzQXJyYXk4VG9XYXNtMChlLHQpe2NvbnN0IG49dCgxKmUubGVuZ3RoLDEpPj4+MDtnZXRVaW50OEFycmF5TWVtb3J5MCgpLnNldChlLG4vMSk7TW49ZS5sZW5ndGg7cmV0dXJuIG59bGV0IFRuPW5ldyBUZXh0RGVjb2RlcigidXRmLTgiLHtpZ25vcmVCT006ITAsZmF0YWw6ITB9KTtUbi5kZWNvZGUoKTtjb25zdCBPbj0yMTQ2NDM1MDcyO2xldCBSbj0wO2xldCBCbixEbixIbixNbj0wO2Z1bmN0aW9uIF9fd2JnX2ZpbmFsaXplX2luaXQoZSx0KXtEbj1lO0huPWUuZXhwb3J0cztCbj10O0ZuPW51bGw7SG4uX193YmluZGdlbl9zdGFydCgpO3JldHVybiBIbn1mdW5jdGlvbiBNYXRoQ2xhbXAoZSx0LG4pe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChlLHQpLG4pfWZ1bmN0aW9uIGlzRGVmYXVsdERlY29kZUhlbHBlcihlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2NvbnN0IG49ZS5sZW5ndGg7aWYobjx0KXt3YXJuKCJEZWNvZGUgbWFwIGxlbmd0aCBpcyB0b28gc2hvcnQuIik7cmV0dXJuITB9aWYobj50KXtpbmZvKCJUcnVuY2F0aW5nIHRvbyBsb25nIGRlY29kZSBtYXAuIik7ZS5sZW5ndGg9dH1yZXR1cm4hMX1jbGFzcyBDb2xvclNwYWNle3N0YXRpYyNpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubmFtZT1lO3RoaXMubnVtQ29tcHM9dH1nZXRSZ2IoZSx0LG49bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpKXt0aGlzLmdldFJnYkl0ZW0oZSx0LG4sMCk7cmV0dXJuIG59Z2V0UmdiSGV4KGUsdCl7Y29uc3Qgbj10aGlzLmdldFJnYihlLHQsQ29sb3JTcGFjZS4jaSk7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKG5bMF0sblsxXSxuWzJdKX1nZXRSZ2JJdGVtKGUsdCxuLGEpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JJdGVtIil9Z2V0UmdiQnVmZmVyKGUsdCxuLGEscixzLGkpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JCdWZmZXIiKX1nZXRSZ2JJdGVtcyhlLHQsbixhLHIpe2NvbnN0e251bUNvbXBzOnN9PXRoaXM7Zm9yKGxldCBpPTAsbz0wO2k8dDtpKyssbys9cyl7dGhpcy5nZXRSZ2JJdGVtKGUsbyxuLGEpO2ErPTMrcn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldE91dHB1dExlbmd0aCIpfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuITF9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuIENvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKGUsdGhpcy5udW1Db21wcyl9ZmlsbFJnYihlLHQsbixhLHIscyxpLG8sbCl7Y29uc3QgZj10Km47bGV0IGM9bnVsbDtjb25zdCBoPTE8PGksdT1uIT09cnx8dCE9PWE7aWYodGhpcy5pc1Bhc3N0aHJvdWdoKGkpKWM9bztlbHNlIGlmKDE9PT10aGlzLm51bUNvbXBzJiZmPmgmJiJEZXZpY2VHcmF5IiE9PXRoaXMubmFtZSYmIkRldmljZVJHQiIhPT10aGlzLm5hbWUpe2NvbnN0IHQ9aTw9OD9uZXcgVWludDhBcnJheShoKTpuZXcgVWludDE2QXJyYXkoaCk7Zm9yKGxldCBlPTA7ZTxoO2UrKyl0W2VdPWU7Y29uc3Qgbj1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypoKTt0aGlzLmdldFJnYkJ1ZmZlcih0LDAsaCxuLDAsaSwwKTtpZih1KXtjPW5ldyBVaW50OEFycmF5KDMqZik7bGV0IGU9MDtmb3IobGV0IHQ9MDt0PGY7Kyt0KXtjb25zdCBhPTMqb1t0XTtjW2UrK109blthXTtjW2UrK109blthKzFdO2NbZSsrXT1uW2ErMl19fWVsc2V7bGV0IHQ9MDtmb3IobGV0IGE9MDthPGY7KythKXtjb25zdCByPTMqb1thXTtlW3QrK109bltyXTtlW3QrK109bltyKzFdO2VbdCsrXT1uW3IrMl07dCs9bH19fWVsc2UgaWYodSl7Yz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypmKTt0aGlzLmdldFJnYkJ1ZmZlcihvLDAsZixjLDAsaSwwKX1lbHNlIHRoaXMuZ2V0UmdiQnVmZmVyKG8sMCxhKnMsZSwwLGksbCk7aWYoYylpZih1KSFmdW5jdGlvbiByZXNpemVSZ2JJbWFnZShlLHQsbixhLHIscyxpKXtpPTEhPT1pPzA6aTtjb25zdCBvPW4vcixsPWEvcztsZXQgZixjPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkociksdT0zKm47Zm9yKGxldCBlPTA7ZTxyO2UrKyloW2VdPTMqTWF0aC5mbG9vcihlKm8pO2ZvcihsZXQgbj0wO248cztuKyspe2NvbnN0IGE9TWF0aC5mbG9vcihuKmwpKnU7Zm9yKGxldCBuPTA7bjxyO24rKyl7Zj1hK2hbbl07dFtjKytdPWVbZisrXTt0W2MrK109ZVtmKytdO3RbYysrXT1lW2YrK107Yys9aX19fShjLGUsdCxuLGEscixsKTtlbHNle2xldCB0PTAsbj0wO2ZvcihsZXQgcj0wLGk9YSpzO3I8aTtyKyspe2VbdCsrXT1jW24rK107ZVt0KytdPWNbbisrXTtlW3QrK109Y1tuKytdO3QrPWx9fX1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCEwKX1zdGF0aWMgaXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoaXNEZWZhdWx0RGVjb2RlSGVscGVyKGUsMip0KSlyZXR1cm4hMDtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kz0yKWlmKDAhPT1lW3RdfHwxIT09ZVt0KzFdKXJldHVybiExO3JldHVybiEwfX1jbGFzcyBBbHRlcm5hdGVDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKCJBbHRlcm5hdGUiLGUpO3RoaXMuYmFzZT10O3RoaXMudGludEZuPW47dGhpcy50bXBCdWY9bmV3IEZsb2F0MzJBcnJheSh0Lm51bUNvbXBzKX1nZXRSZ2JJdGVtKGUsdCxuLGEpe2NvbnN0IHI9dGhpcy50bXBCdWY7dGhpcy50aW50Rm4oZSx0LHIsMCk7dGhpcy5iYXNlLmdldFJnYkl0ZW0ociwwLG4sYSl9Z2V0UmdiSXRlbXMoZSx0LG4sYSxyKXtjb25zdHtiYXNlOnMsbnVtQ29tcHM6aSx0aW50Rm46b309dGhpcyxsPXMubnVtQ29tcHMsZj1uZXcgRmxvYXQzMkFycmF5KHQqbCk7Zm9yKGxldCBuPTAsYT0wLHI9MDtuPHQ7bisrKXtvKGUsYSxmLHIpO2ErPWk7cis9bH1zLmdldFJnYkl0ZW1zKGYsdCxuLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxuLGEscixzLGkpe2NvbnN0IG89dGhpcy50aW50Rm4sbD10aGlzLmJhc2UsZj0xLygoMTw8cyktMSksYz1sLm51bUNvbXBzLGg9bC51c2VzWmVyb1RvT25lUmFuZ2UsdT0obC5pc1Bhc3N0aHJvdWdoKDgpfHwhaCkmJjA9PT1pO2xldCBtPXU/cjowO2NvbnN0IHA9dT9hOm5ldyBVaW50OENsYW1wZWRBcnJheShjKm4pLGQ9dGhpcy5udW1Db21wcyxnPW5ldyBGbG9hdDMyQXJyYXkoZCksYj1uZXcgRmxvYXQzMkFycmF5KGMpO2xldCB3LGo7Zm9yKHc9MDt3PG47dysrKXtmb3Ioaj0wO2o8ZDtqKyspZ1tqXT1lW3QrK10qZjtvKGcsMCxiLDApO2lmKGgpZm9yKGo9MDtqPGM7aisrKXBbbSsrXT0yNTUqYltqXTtlbHNle2wuZ2V0UmdiSXRlbShiLDAscCxtKTttKz1jfX11fHxsLmdldFJnYkJ1ZmZlcihwLDAsbixhLHIsOCxpKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5iYXNlLmdldE91dHB1dExlbmd0aChlKnRoaXMuYmFzZS5udW1Db21wcy90aGlzLm51bUNvbXBzLHQpfX1jbGFzcyBQYXR0ZXJuQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJQYXR0ZXJuIixudWxsKTt0aGlzLmJhc2U9ZX1pc0RlZmF1bHREZWNvZGUoZSx0KXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIFBhdHRlcm5DUy5pc0RlZmF1bHREZWNvZGUiKX19Y2xhc3MgSW5kZXhlZENTIGV4dGVuZHMgQ29sb3JTcGFjZXsjbztjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoIkluZGV4ZWQiLDEpO3RoaXMuaGlnaFZhbD10O2NvbnN0IGE9dCsxLHI9ZS5udW1Db21wcyphLHM9bmV3IFVpbnQ4QXJyYXkocik7aWYobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pcy5zZXQobi5nZXRCeXRlcyhyKSk7ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke259YCk7Zm9yKGxldCBlPTA7ZTxyOysrZSlzW2VdPW4uY2hhckNvZGVBdChlKX10aGlzLiNvPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmEpO2UuZ2V0UmdiQnVmZmVyKHMsMCxhLHRoaXMuI28sMCw4LDApfWdldFJnYkl0ZW0oZSx0LG4sYSl7Y29uc3Qgcj10aGlzLiNvLHM9MypNYXRoQ2xhbXAoTWF0aC5yb3VuZChlW3RdKSwwLHRoaXMuaGlnaFZhbCk7blthXT1yW3NdO25bYSsxXT1yW3MrMV07blthKzJdPXJbcysyXX1nZXRSZ2JCdWZmZXIoZSx0LG4sYSxyLHMsaSl7Y29uc3R7aGlnaFZhbDpvfT10aGlzLGw9dGhpcy4jbztmb3IobGV0IHM9MDtzPG47KytzKXtjb25zdCBuPTMqTWF0aENsYW1wKE1hdGgucm91bmQoZVt0KytdKSwwLG8pO2FbcisrXT1sW25dO2FbcisrXT1sW24rMV07YVtyKytdPWxbbisyXTtyKz1pfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX1pc0RlZmF1bHREZWNvZGUoZSx0KXtpZihpc0RlZmF1bHREZWNvZGVIZWxwZXIoZSwyKSlyZXR1cm4hMDtpZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXt3YXJuKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxuLGEpe2NvbnN0IHI9MjU1KmVbdF07blthXT1uW2ErMV09blthKzJdPXJ9Z2V0UmdiQnVmZmVyKGUsdCxuLGEscixzLGkpe2NvbnN0IG89MjU1LygoMTw8cyktMSk7bGV0IGw9dCxmPXI7Zm9yKGxldCB0PTA7dDxuOysrdCl7Y29uc3QgdD1vKmVbbCsrXTthW2YrK109dDthW2YrK109dDthW2YrK109dDtmKz1pfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsbixhKXtuW2FdPTI1NSplW3RdO25bYSsxXT0yNTUqZVt0KzFdO25bYSsyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsbixhLHIscyxpKXtpZig4PT09cyYmMD09PWkpe2Euc2V0KGUuc3ViYXJyYXkodCx0KzMqbikscik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8cyktMSk7bGV0IGw9dCxmPXI7Zm9yKGxldCB0PTA7dDxuOysrdCl7YVtmKytdPW8qZVtsKytdO2FbZisrXT1vKmVbbCsrXTthW2YrK109byplW2wrK107Zis9aX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jbGFzcyBEZXZpY2VSZ2JhQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQkEiLDQpfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiA0KmV9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9ZmlsbFJnYihlLHQsbixhLHIscyxpLG8sbCl7biE9PXJ8fHQhPT1hP2Z1bmN0aW9uIHJlc2l6ZVJnYmFJbWFnZShlLHQsbixhLHIscyxpKXtjb25zdCBvPW4vcixsPWEvcztsZXQgZj0wO2NvbnN0IGM9bmV3IFVpbnQxNkFycmF5KHIpO2lmKDE9PT1pKXtmb3IobGV0IGU9MDtlPHI7ZSsrKWNbZV09TWF0aC5mbG9vcihlKm8pO2NvbnN0IGE9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxpPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciksaD1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IHQ9YS5zdWJhcnJheShNYXRoLmZsb29yKGUqbCkqbik7Zm9yKGxldCBlPTA7ZTxyO2UrKylpW2YrK118PXRbY1tlXV0maH19ZWxzZXtjb25zdCBhPTQsaT1uKmE7Zm9yKGxldCBlPTA7ZTxyO2UrKyljW2VdPU1hdGguZmxvb3IoZSpvKSphO2ZvcihsZXQgbj0wO248cztuKyspe2NvbnN0IGE9ZS5zdWJhcnJheShNYXRoLmZsb29yKG4qbCkqaSk7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7Y29uc3Qgbj1jW2VdO3RbZisrXT1hW25dO3RbZisrXT1hW24rMV07dFtmKytdPWFbbisyXX19fX0obyxlLHQsbixhLHIsbCk6ZnVuY3Rpb24gY29weVJnYmFJbWFnZShlLHQsbil7aWYoMT09PW4pe2NvbnN0IG49bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyKSxhPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikscj1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj8xNjc3NzIxNTo0Mjk0OTY3MDQwO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKylhW2VdfD1uW2VdJnJ9ZWxzZXtsZXQgbj0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErPTQpe3RbbisrXT1lW2FdO3RbbisrXT1lW2ErMV07dFtuKytdPWVbYSsyXX19fShvLGUsbCl9fWNsYXNzIERldmljZUNteWtDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlQ01ZSyIsNCl9I2woZSx0LG4sYSxyKXtjb25zdCBzPWVbdF0qbixpPWVbdCsxXSpuLG89ZVt0KzJdKm4sbD1lW3QrM10qbjthW3JdPTI1NStzKigtNC4zODczMzIzODQ2MDk5ODgqcys1NC40ODYxNTE5NDE4OTE3NippKzE4LjgyMjkwNTAyMTY1MzAyKm8rMjEyLjI1NjYyNDUxNjM5NTg1KmwtMjg1LjIzMzEwMjYxMzcwMDQpK2kqKDEuNzE0OTc2MzQ3NzM2MjEzNCppLTUuNjA5NjczNjkwNDA0NzMxNSpvKy0xNy44NzM4NzA4NjE0MTU0NDQqbC01LjQ5NzAwNjQyNzE5NjM2NikrbyooLTIuNTIxNzM0MDEzMTY4MzAzMypvLTIxLjI0ODkyMzMzNzM1MzA3MypsKzE3LjUxMTkyNzA4NDE4MTMpK2wqKC0yMS44NjEyMjE0NzQ2MzYwNSpsLTE4OS40ODE4MDgzNTkyMjc0Nyk7YVtyKzFdPTI1NStzKig4Ljg0MTA0MTQyMjAzNjE0OSpzKzYwLjExODAyNzA0NTU5NzM2NippKzYuODcxNDI1NTkyMDQ5MDA3Km8rMzEuMTU5MTAwMTMwMDU1OTIyKmwtNzkuMjk3MDg0NDgxNjU0OCkraSooLTE1LjMxMDM2MTMwNjk2NzgxNyppKzE3LjU3NTI1MTI2MTEwOTQ4MipvKzEzMS4zNTI1MDkxMjQ5Mzk3NipsLTE5MC45NDUzMzAyNTg4OTUxKStvKig0LjQ0NDMzOTEwMjg1MjczOSpvKzkuODYzMjg2MTQ5MzQwNSpsLTI0Ljg2NzQxNTgyNTU1ODc4KStsKigtMjAuNzM3MzI1NDcxMTgxMDM0KmwtMTg3LjgwNDUzNzA5NzE5NTc4KTthW3IrMl09MjU1K3MqKC44ODQyNTIyNDMwMDAzMjk2KnMrOC4wNzg2Nzc1MDMxMTI5MjgqaSszMC44OTk3ODMwOTcwMzcyOSpvLS4yMzg4MzIzODY4OTE3ODkzNCpsLTE0LjE4MzU3Njc5OTY3MzI4NikraSooMTAuNDk1OTMyNzM0MzIwNzIqaSs2My4wMjM3ODQ5NDc1NDA1MipvKzUwLjYwNjk1NzY1NjM2MDczNCpsLTExMi4yMzg4NDI1MzcxOTI0OCkrbyooLjAzMjk2MDQxMTE0ODczMjE3Km8rMTE1LjYwMzg0NDQ5NjQ2NjQxKmwtMTkzLjU4MjA5MzU2ODYxNTA1KStsKigtMjIuMzM4MTY4MDczMDk4ODYqbC0xODAuMTI2MTM5NzQ3MDgzNjcpfWdldFJnYkl0ZW0oZSx0LG4sYSl7dGhpcy4jbChlLHQsMSxuLGEpfWdldFJnYkJ1ZmZlcihlLHQsbixhLHIscyxpKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPG47cysrKXt0aGlzLiNsKGUsdCxvLGEscik7dCs9NDtyKz0zK2l9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlLzQqKDMrdCl8MH19Y2xhc3MgQ2FsR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoIkNhbEdyYXkiLDEpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbEdyYXkiKTtbdGhpcy5YVyx0aGlzLllXLHRoaXMuWlddPWU7W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO3RoaXMuRz1ufHwxO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfTA9PT10aGlzLlhCJiYwPT09dGhpcy5ZQiYmMD09PXRoaXMuWkJ8fHdhcm4oYCR7dGhpcy5uYW1lfSwgQmxhY2tQb2ludDogWEI6ICR7dGhpcy5YQn0sIFlCOiAke3RoaXMuWUJ9LCBaQjogJHt0aGlzLlpCfSwgb25seSBkZWZhdWx0IHZhbHVlcyBhcmUgc3VwcG9ydGVkLmApO2lmKHRoaXMuRzwxKXtpbmZvKGBJbnZhbGlkIEdhbW1hOiAke3RoaXMuR30gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HPTF9fSNsKGUsdCxuLGEscil7Y29uc3Qgcz0oZVt0XSpyKSoqdGhpcy5HLGk9dGhpcy5ZVypzLG89TWF0aC5tYXgoMjk1LjgqaSoqLjMzMzMzMzMzMzMzMzMzMzMtNDAuOCwwKTtuW2FdPW87blthKzFdPW87blthKzJdPW99Z2V0UmdiSXRlbShlLHQsbixhKXt0aGlzLiNsKGUsdCxuLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxuLGEscixzLGkpe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe3RoaXMuI2woZSx0LGEscixvKTt0Kz0xO3IrPTMraX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCl9fWNsYXNzIENhbFJHQkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtzdGF0aWMjZj1uZXcgRmxvYXQzMkFycmF5KFsuODk1MSwuMjY2NCwtLjE2MTQsLS43NTAyLDEuNzEzNSwuMDM2NywuMDM4OSwtLjA2ODUsMS4wMjk2XSk7c3RhdGljI2M9bmV3IEZsb2F0MzJBcnJheShbLjk4Njk5MjksLS4xNDcwNTQzLC4xNTk5NjI3LC40MzIzMDUzLC41MTgzNjAzLC4wNDkyOTEyLC0uMDA4NTI4NywuMDQwMDQyOCwuOTY4NDg2N10pO3N0YXRpYyNoPW5ldyBGbG9hdDMyQXJyYXkoWzMuMjQwNDU0MiwtMS41MzcxMzg1LC0uNDk4NTMxNCwtLjk2OTI2NiwxLjg3NjAxMDgsLjA0MTU1NiwuMDU1NjQzNCwtLjIwNDAyNTksMS4wNTcyMjUyXSk7c3RhdGljI3U9bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtzdGF0aWMjbT1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNwPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI2Q9bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjZz0oMjQvMTE2KSoqMy84O2NvbnN0cnVjdG9yKGUsdCxuLGEpe3N1cGVyKCJDYWxSR0IiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIENhbFJHQiIpO2NvbnN0W3IscyxpXT10aGlzLndoaXRlUG9pbnQ9ZSxbbyxsLGZdPXRoaXMuYmxhY2tQb2ludD10fHxuZXcgRmxvYXQzMkFycmF5KDMpO1t0aGlzLkdSLHRoaXMuR0csdGhpcy5HQl09bnx8bmV3IEZsb2F0MzJBcnJheShbMSwxLDFdKTtbdGhpcy5NWEEsdGhpcy5NWUEsdGhpcy5NWkEsdGhpcy5NWEIsdGhpcy5NWUIsdGhpcy5NWkIsdGhpcy5NWEMsdGhpcy5NWUMsdGhpcy5NWkNdPWF8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMCwwLDAsMSwwLDAsMCwxXSk7aWYocjwwfHxpPDB8fDEhPT1zKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICR7dGhpcy5uYW1lfSwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlYCk7aWYobzwwfHxsPDB8fGY8MCl7aW5mbyhgSW52YWxpZCBCbGFja1BvaW50IGZvciAke3RoaXMubmFtZX0gWyR7b30sICR7bH0sICR7Zn1dLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLmJsYWNrUG9pbnQ9bmV3IEZsb2F0MzJBcnJheSgzKX1pZih0aGlzLkdSPDB8fHRoaXMuR0c8MHx8dGhpcy5HQjwwKXtpbmZvKGBJbnZhbGlkIEdhbW1hIFske3RoaXMuR1J9LCAke3RoaXMuR0d9LCAke3RoaXMuR0J9XSBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLkdSPXRoaXMuR0c9dGhpcy5HQj0xfX0jYihlLHQsbil7blswXT1lWzBdKnRbMF0rZVsxXSp0WzFdK2VbMl0qdFsyXTtuWzFdPWVbM10qdFswXStlWzRdKnRbMV0rZVs1XSp0WzJdO25bMl09ZVs2XSp0WzBdK2VbN10qdFsxXStlWzhdKnRbMl19I3coZSx0LG4pe25bMF09MSp0WzBdL2VbMF07blsxXT0xKnRbMV0vZVsxXTtuWzJdPTEqdFsyXS9lWzJdfSNqKGUsdCxuKXtuWzBdPS45NTA0Nyp0WzBdL2VbMF07blsxXT0xKnRbMV0vZVsxXTtuWzJdPTEuMDg4ODMqdFsyXS9lWzJdfSNrKGUpe3JldHVybiBlPD0uMDAzMTMwOD9NYXRoQ2xhbXAoMTIuOTIqZSwwLDEpOmU+PS45OTU1NDUyNT8xOk1hdGhDbGFtcCgxLjA1NSplKiooMS8yLjQpLS4wNTUsMCwxKX0jeShlKXtyZXR1cm4gZTwwPy10aGlzLiN5KC1lKTplPjg/KChlKzE2KS8xMTYpKiozOmUqQ2FsUkdCQ1MuI2d9I3EoZSx0LG4pe2lmKDA9PT1lWzBdJiYwPT09ZVsxXSYmMD09PWVbMl0pe25bMF09dFswXTtuWzFdPXRbMV07blsyXT10WzJdO3JldHVybn1jb25zdCBhPXRoaXMuI3koMCkscj0oMS1hKS8oMS10aGlzLiN5KGVbMF0pKSxzPTEtcixpPSgxLWEpLygxLXRoaXMuI3koZVsxXSkpLG89MS1pLGw9KDEtYSkvKDEtdGhpcy4jeShlWzJdKSksZj0xLWw7blswXT10WzBdKnIrcztuWzFdPXRbMV0qaStvO25bMl09dFsyXSpsK2Z9I3YoZSx0LG4pe2lmKDE9PT1lWzBdJiYxPT09ZVsyXSl7blswXT10WzBdO25bMV09dFsxXTtuWzJdPXRbMl07cmV0dXJufWNvbnN0IGE9bjt0aGlzLiNiKENhbFJHQkNTLiNmLHQsYSk7Y29uc3Qgcj1DYWxSR0JDUy4jbTt0aGlzLiN3KGUsYSxyKTt0aGlzLiNiKENhbFJHQkNTLiNjLHIsbil9I1MoZSx0LG4pe2NvbnN0IGE9bjt0aGlzLiNiKENhbFJHQkNTLiNmLHQsYSk7Y29uc3Qgcj1DYWxSR0JDUy4jbTt0aGlzLiNqKGUsYSxyKTt0aGlzLiNiKENhbFJHQkNTLiNjLHIsbil9I2woZSx0LG4sYSxyKXtjb25zdCBzPU1hdGhDbGFtcChlW3RdKnIsMCwxKSxpPU1hdGhDbGFtcChlW3QrMV0qciwwLDEpLG89TWF0aENsYW1wKGVbdCsyXSpyLDAsMSksbD0xPT09cz8xOnMqKnRoaXMuR1IsZj0xPT09aT8xOmkqKnRoaXMuR0csYz0xPT09bz8xOm8qKnRoaXMuR0IsaD10aGlzLk1YQSpsK3RoaXMuTVhCKmYrdGhpcy5NWEMqYyx1PXRoaXMuTVlBKmwrdGhpcy5NWUIqZit0aGlzLk1ZQypjLG09dGhpcy5NWkEqbCt0aGlzLk1aQipmK3RoaXMuTVpDKmMscD1DYWxSR0JDUy4jcDtwWzBdPWg7cFsxXT11O3BbMl09bTtjb25zdCBkPUNhbFJHQkNTLiNkO3RoaXMuI3YodGhpcy53aGl0ZVBvaW50LHAsZCk7Y29uc3QgZz1DYWxSR0JDUy4jcDt0aGlzLiNxKHRoaXMuYmxhY2tQb2ludCxkLGcpO2NvbnN0IGI9Q2FsUkdCQ1MuI2Q7dGhpcy4jUyhDYWxSR0JDUy4jdSxnLGIpO2NvbnN0IHc9Q2FsUkdCQ1MuI3A7dGhpcy4jYihDYWxSR0JDUy4jaCxiLHcpO25bYV09MjU1KnRoaXMuI2sod1swXSk7blthKzFdPTI1NSp0aGlzLiNrKHdbMV0pO25bYSsyXT0yNTUqdGhpcy4jayh3WzJdKX1nZXRSZ2JJdGVtKGUsdCxuLGEpe3RoaXMuI2woZSx0LG4sYSwxKX1nZXRSZ2JCdWZmZXIoZSx0LG4sYSxyLHMsaSl7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxuOysrcyl7dGhpcy4jbChlLHQsYSxyLG8pO3QrPTM7cis9MytpfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9fWNsYXNzIExhYkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoIkxhYiIsMyk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgTGFiIik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLmFtaW4sdGhpcy5hbWF4LHRoaXMuYm1pbix0aGlzLmJtYXhdPW58fFstMTAwLDEwMCwtMTAwLDEwMF07W3RoaXMuWEIsdGhpcy5ZQix0aGlzLlpCXT10fHxbMCwwLDBdO2lmKHRoaXMuWFc8MHx8dGhpcy5aVzwwfHwxIT09dGhpcy5ZVyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzLCBubyBmYWxsYmFjayBhdmFpbGFibGUiKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKCJJbnZhbGlkIEJsYWNrUG9pbnQsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0Iik7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH1pZih0aGlzLmFtaW4+dGhpcy5hbWF4fHx0aGlzLmJtaW4+dGhpcy5ibWF4KXtpbmZvKCJJbnZhbGlkIFJhbmdlLCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdHMiKTt0aGlzLmFtaW49LTEwMDt0aGlzLmFtYXg9MTAwO3RoaXMuYm1pbj0tMTAwO3RoaXMuYm1heD0xMDB9fSNBKGUpe3JldHVybiBlPj02LzI5P2UqKjM6MTA4Lzg0MSooZS00LzI5KX0jeChlLHQsbixhKXtyZXR1cm4gbitlKihhLW4pL3R9I2woZSx0LG4sYSxyKXtsZXQgcz1lW3RdLGk9ZVt0KzFdLG89ZVt0KzJdO2lmKCExIT09bil7cz10aGlzLiN4KHMsbiwwLDEwMCk7aT10aGlzLiN4KGksbix0aGlzLmFtaW4sdGhpcy5hbWF4KTtvPXRoaXMuI3gobyxuLHRoaXMuYm1pbix0aGlzLmJtYXgpfWk+dGhpcy5hbWF4P2k9dGhpcy5hbWF4Omk8dGhpcy5hbWluJiYoaT10aGlzLmFtaW4pO28+dGhpcy5ibWF4P289dGhpcy5ibWF4Om88dGhpcy5ibWluJiYobz10aGlzLmJtaW4pO2NvbnN0IGw9KHMrMTYpLzExNixmPWwraS81MDAsYz1sLW8vMjAwLGg9dGhpcy5YVyp0aGlzLiNBKGYpLHU9dGhpcy5ZVyp0aGlzLiNBKGwpLG09dGhpcy5aVyp0aGlzLiNBKGMpO2xldCBwLGQsZztpZih0aGlzLlpXPDEpe3A9My4xMzM5KmgrLTEuNjE3KnUrLS40OTA2Km07ZD0tLjk3ODUqaCsxLjkxNip1Ky4wMzMzKm07Zz0uMDcyKmgrLS4yMjkqdSsxLjQwNTcqbX1lbHNle3A9My4yNDA2KmgrLTEuNTM3Mip1Ky0uNDk4NiptO2Q9LS45Njg5KmgrMS44NzU4KnUrLjA0MTUqbTtnPS4wNTU3KmgrLS4yMDQqdSsxLjA1NyptfWFbcl09MjU1Kk1hdGguc3FydChwKTthW3IrMV09MjU1Kk1hdGguc3FydChkKTthW3IrMl09MjU1Kk1hdGguc3FydChnKX1nZXRSZ2JJdGVtKGUsdCxuLGEpe3RoaXMuI2woZSx0LCExLG4sYSl9Z2V0UmdiQnVmZmVyKGUsdCxuLGEscixzLGkpe2NvbnN0IG89KDE8PHMpLTE7Zm9yKGxldCBzPTA7czxuO3MrKyl7dGhpcy4jbChlLHQsbyxhLHIpO3QrPTM7cis9MytpfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNEZWZhdWx0RGVjb2RlKGUsdCl7cmV0dXJuITB9Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMSl9fWZ1bmN0aW9uIGZldGNoU3luYyhlKXtjb25zdCB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oIkdFVCIsZSwhMSk7dC5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt0LnNlbmQobnVsbCk7cmV0dXJuIHQucmVzcG9uc2V9Y2xhc3MgSWNjQ29sb3JTcGFjZSBleHRlbmRzIENvbG9yU3BhY2V7I0M7I0k7c3RhdGljI0Y9ITA7c3RhdGljI1Q9bnVsbDtzdGF0aWMjTz1udWxsO2NvbnN0cnVjdG9yKGUsdCxuKXtpZighSWNjQ29sb3JTcGFjZS5pc1VzYWJsZSl0aHJvdyBuZXcgRXJyb3IoIk5vIElDQyBjb2xvciBzcGFjZSBzdXBwb3J0Iik7c3VwZXIodCxuKTtsZXQgYTtzd2l0Y2gobil7Y2FzZSAxOmE9Q24uR3JheTg7dGhpcy4jST0oZSx0KT0+ZnVuY3Rpb24gcWNtc19jb252ZXJ0X29uZShlLHQpe3JldHVybiBIbi5xY21zX2NvbnZlcnRfb25lKGUsdCk+Pj4wfSh0aGlzLiNDLDI1NSplW3RdKTticmVhaztjYXNlIDM6YT1Dbi5SR0I4O3RoaXMuI0k9KGUsdCk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF90aHJlZShlLHQsbixhKXtyZXR1cm4gSG4ucWNtc19jb252ZXJ0X3RocmVlKGUsdCxuLGEpPj4+MH0odGhpcy4jQywyNTUqZVt0XSwyNTUqZVt0KzFdLDI1NSplW3QrMl0pO2JyZWFrO2Nhc2UgNDphPUNuLkNNWUs7dGhpcy4jST0oZSx0KT0+ZnVuY3Rpb24gcWNtc19jb252ZXJ0X2ZvdXIoZSx0LG4sYSxyKXtyZXR1cm4gSG4ucWNtc19jb252ZXJ0X2ZvdXIoZSx0LG4sYSxyKT4+PjB9KHRoaXMuI0MsMjU1KmVbdF0sMjU1KmVbdCsxXSwyNTUqZVt0KzJdLDI1NSplW3QrM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBudW1iZXIgb2YgY29tcG9uZW50czogJHtufWApfXRoaXMuI0M9ZnVuY3Rpb24gcWNtc190cmFuc2Zvcm1lcl9mcm9tX21lbW9yeShlLHQsbil7Y29uc3QgYT1wYXNzQXJyYXk4VG9XYXNtMChlLEhuLl9fd2JpbmRnZW5fbWFsbG9jKSxyPU1uO3JldHVybiBIbi5xY21zX3RyYW5zZm9ybWVyX2Zyb21fbWVtb3J5KGEscix0LG4pPj4+MH0oZSxhLEluLlBlcmNlcHR1YWwpO2lmKCF0aGlzLiNDKXRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBJQ0MgY29sb3Igc3BhY2UiKTtJY2NDb2xvclNwYWNlLiNPfHw9bmV3IEZpbmFsaXphdGlvblJlZ2lzdHJ5KGU9PnshZnVuY3Rpb24gcWNtc19kcm9wX3RyYW5zZm9ybWVyKGUpe0huLnFjbXNfZHJvcF90cmFuc2Zvcm1lcihlKX0oZSl9KTtJY2NDb2xvclNwYWNlLiNPLnJlZ2lzdGVyKHRoaXMsdGhpcy4jQyl9Z2V0UmdiSGV4KGUsdCl7Y29uc3Qgbj10aGlzLiNJKGUsdCk7cmV0dXJuIFV0aWwubWFrZUhleENvbG9yKG4+PjE2LG4+PjgmMjU1LDI1NSZuKX1nZXRSZ2JJdGVtKGUsdCxuLGEpe2NvbnN0IHI9dGhpcy4jSShlLHQpO25bYV09cj4+MTY7blthKzFdPXI+PjgmMjU1O25bYSsyXT0yNTUmcn1nZXRSZ2JJdGVtcyhlLHQsbixhLHIpe2NvbnN0e251bUNvbXBzOnN9PXRoaXMsaT10KnMsbz1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IHQ9MDt0PGk7dCsrKW9bdF09MjU1KmVbdF07UUNNUy5fZGVzdEJ1ZmZlcj1uO1FDTVMuX2Rlc3RPZmZzZXQ9YTtRQ01TLl9rZWVwQWxwaGE9MT09PXI7cWNtc19jb252ZXJ0X2FycmF5KHRoaXMuI0MsbywxPT09cik7UUNNUy5fZGVzdEJ1ZmZlcj1udWxsfWdldFJnYkJ1ZmZlcihlLHQsbixhLHIscyxpKXtlPWUuc3ViYXJyYXkodCx0K24qdGhpcy5udW1Db21wcyk7aWYoOCE9PXMpe2NvbnN0IHQ9MjU1LygoMTw8cyktMSk7Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKWVbbl0qPXR9UUNNUy5fZGVzdEJ1ZmZlcj1hO1FDTVMuX2Rlc3RPZmZzZXQ9cjtRQ01TLl9rZWVwQWxwaGE9MT09PWkmJmEuYnVmZmVyIT09ZS5idWZmZXI7cWNtc19jb252ZXJ0X2FycmF5KHRoaXMuI0MsZSwxPT09aSk7UUNNUy5fZGVzdEJ1ZmZlcj1udWxsfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlL3RoaXMubnVtQ29tcHMqKDMrdCl8MH1zdGF0aWMgc2V0T3B0aW9ucyh7dXNlV2FzbTplLHVzZVdvcmtlckZldGNoOnQsd2FzbVVybDpufSl7aWYodCl7dGhpcy4jRj1lO3RoaXMuI1Q9bn1lbHNlIHRoaXMuI0Y9ITF9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO2lmKHRoaXMuI0YpaWYodGhpcy4jVCl0cnl7dGhpcy5fbW9kdWxlPWZ1bmN0aW9uIGluaXRTeW5jKGUpe2lmKHZvaWQgMCE9PUhuKXJldHVybiBIbjt2b2lkIDAhPT1lJiYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZT8oe21vZHVsZTplfT1lKTpjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgYGluaXRTeW5jKClgOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpO2NvbnN0IHQ9X193YmdfZ2V0X2ltcG9ydHMoKTtlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTW9kdWxlfHwoZT1uZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGUpKTtyZXR1cm4gX193YmdfZmluYWxpemVfaW5pdChuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoZSx0KSxlKX0oe21vZHVsZTpmZXRjaFN5bmMoYCR7dGhpcy4jVH1xY21zX2JnLndhc21gKX0pO2U9ISF0aGlzLl9tb2R1bGU7UUNNUy5fbWVtb3J5PXRoaXMuX21vZHVsZS5tZW1vcnl9Y2F0Y2goZSl7d2FybihgSUNDQmFzZWQgY29sb3Igc3BhY2U6ICIke2V9Ii5gKX1lbHNlIHdhcm4oIk5vIElDQyBjb2xvciBzcGFjZSBzdXBwb3J0IGR1ZSB0byBtaXNzaW5nIGB3YXNtVXJsYCBBUEkgb3B0aW9uIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc1VzYWJsZSIsZSl9fWNsYXNzIENteWtJQ0NCYXNlZENTIGV4dGVuZHMgSWNjQ29sb3JTcGFjZXtzdGF0aWMjUjtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBVaW50OEFycmF5KGZldGNoU3luYyhgJHtDbXlrSUNDQmFzZWRDUy4jUn1DR0FUUzAwMUNvbXBhdC12Mi1taWNyby5pY2NgKSksIkRldmljZUNNWUsiLDQpfXN0YXRpYyBzZXRPcHRpb25zKHtpY2NVcmw6ZX0pe3RoaXMuI1I9ZX1zdGF0aWMgZ2V0IGlzVXNhYmxlKCl7bGV0IGU9ITE7SWNjQ29sb3JTcGFjZS5pc1VzYWJsZSYmKHRoaXMuI1I/ZT0hMDp3YXJuKCJObyBDTVlLIElDQyBwcm9maWxlIHN1cHBvcnQgZHVlIHRvIG1pc3NpbmcgYGljY1VybGAgQVBJIG9wdGlvbiIpKTtyZXR1cm4gc2hhZG93KHRoaXMsImlzVXNhYmxlIixlKX19Y2xhc3MgU3RyZWFtIGV4dGVuZHMgQmFzZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsbixhKXtzdXBlcigpO3RoaXMuYnl0ZXM9ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXk/ZTpuZXcgVWludDhBcnJheShlKTt0aGlzLnN0YXJ0PXR8fDA7dGhpcy5wb3M9dGhpcy5zdGFydDt0aGlzLmVuZD10K258fHRoaXMuYnl0ZXMubGVuZ3RoO3RoaXMuZGljdD1hfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5lbmQtdGhpcy5zdGFydH1nZXQgaXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5sZW5ndGh9Z2V0Qnl0ZSgpe3JldHVybiB0aGlzLnBvcz49dGhpcy5lbmQ/LTE6dGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMucG9zLG49ZT9NYXRoLm1pbih0K2UsdGhpcy5lbmQpOnRoaXMuZW5kO3RoaXMucG9zPW47cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkodCxuKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LG49bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LG4pfWNsb25lKCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsdGhpcy5zdGFydCx0aGlzLmxlbmd0aCx0aGlzLmRpY3Q/LmNsb25lKCkpfX1jbGFzcyBTdHJpbmdTdHJlYW0gZXh0ZW5kcyBTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe3N1cGVyKHN0cmluZ1RvQnl0ZXMoZSksTmFOLE5hTix0KX19Y2xhc3MgTnVsbFN0cmVhbSBleHRlbmRzIFN0cmVhbXtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBVaW50OEFycmF5KDApKX19Y2xhc3MgQ2h1bmtlZFN0cmVhbSBleHRlbmRzIFN0cmVhbXtwcm9ncmVzc2l2ZURhdGFMZW5ndGg9MDtfbGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9LTE7X2xvYWRlZENodW5rcz1uZXcgU2V0O2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcihuZXcgVWludDhBcnJheShlKSwwLGUsbnVsbCk7dGhpcy5jaHVua1NpemU9dDt0aGlzLm51bUNodW5rcz1NYXRoLmNlaWwoZS90KTt0aGlzLm1hbmFnZXI9bn1nZXRNaXNzaW5nQ2h1bmtzKCl7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MCxuPXRoaXMubnVtQ2h1bmtzO3Q8bjsrK3QpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KXx8ZS5wdXNoKHQpO3JldHVybiBlfWdldCBudW1DaHVua3NMb2FkZWQoKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLnNpemV9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfW9uUmVjZWl2ZURhdGEoZSx0KXtjb25zdCBuPXRoaXMuY2h1bmtTaXplO2lmKGUlbiE9PTApdGhyb3cgbmV3IEVycm9yKGBCYWQgYmVnaW4gb2Zmc2V0OiAke2V9YCk7Y29uc3QgYT1lK3QuYnl0ZUxlbmd0aDtpZihhJW4hPT0wJiZhIT09dGhpcy5ieXRlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBCYWQgZW5kIG9mZnNldDogJHthfWApO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KHQpLGUpO2NvbnN0IHI9TWF0aC5mbG9vcihlL24pLHM9TWF0aC5mbG9vcigoYS0xKS9uKSsxO2ZvcihsZXQgZT1yO2U8czsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEoZSl7bGV0IHQ9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg7Y29uc3Qgbj1NYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO3RoaXMuYnl0ZXMuc2V0KG5ldyBVaW50OEFycmF5KGUpLHQpO3QrPWUuYnl0ZUxlbmd0aDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD10O2NvbnN0IGE9dD49dGhpcy5lbmQ/dGhpcy5udW1DaHVua3M6TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTtmb3IobGV0IGU9bjtlPGE7KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9ZW5zdXJlQnl0ZShlKXtpZihlPHRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybjtjb25zdCB0PU1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSk7aWYoISh0PnRoaXMubnVtQ2h1bmtzKSYmdCE9PXRoaXMuX2xhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMuX2xhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rPXR9fWVuc3VyZVJhbmdlKGUsdCl7aWYoZT49dClyZXR1cm47aWYodDw9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IG49TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZihuPnRoaXMubnVtQ2h1bmtzKXJldHVybjtjb25zdCBhPU1hdGgubWluKE1hdGguZmxvb3IoKHQtMSkvdGhpcy5jaHVua1NpemUpKzEsdGhpcy5udW1DaHVua3MpO2ZvcihsZXQgcj1uO3I8YTsrK3IpaWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpdGhyb3cgbmV3IE1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IG49MDtuPHQ7KytuKXtjb25zdCBhPShlK24pJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMoYSkpcmV0dXJuIGF9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMucG9zLG49ZT9NYXRoLm1pbih0K2UsdGhpcy5lbmQpOnRoaXMuZW5kO24+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UodCxuKTt0aGlzLnBvcz1uO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KHQsbil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsbj1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksbj1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLGE9W107Zm9yKGxldCBlPXQ7ZTxuOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxhLnB1c2goZSk7cmV0dXJuIGF9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IGE9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07YS5wb3M9YS5zdGFydD1lO2EuZW5kPWUrdHx8dGhpcy5lbmQ7YS5kaWN0PW47cmV0dXJuIGF9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2VyeyNCPSExO2N1cnJSZXF1ZXN0SWQ9MDtfY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7I0Q9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7X3Byb21pc2VzQnlSZXF1ZXN0PW5ldyBNYXA7X3JlcXVlc3RzQnlDaHVuaz1uZXcgTWFwO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZlN0cmVhbT1lO3RoaXMuZGlzYWJsZUF1dG9GZXRjaD10LmRpc2FibGVBdXRvRmV0Y2g7dGhpcy5tc2dIYW5kbGVyPXQubXNnSGFuZGxlcn1hc3luYyBzZW5kUmVxdWVzdChlLHQpe2NvbnN0IG49dGhpcy5wZGZTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTtsZXQgYT1bXTtmb3IoOzspe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCBuLnJlYWQoKTtpZih0aGlzLiNCKXthPW51bGw7cmV0dXJufWlmKHQpYnJlYWs7YS5wdXNoKGUpfWlmKDA9PT1hLmxlbmd0aCYmdGhpcy5kaXNhYmxlQXV0b0ZldGNoKXJldHVybjtjb25zdCByPWFycmF5QnVmZmVyc1RvQnl0ZXMoYSk7YT1udWxsO3RoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6ci5idWZmZXIsYmVnaW46ZX0pfXJlcXVlc3RBbGxDaHVua3MoZT0hMSl7aWYoIWUpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpO3RoaXMuX3JlcXVlc3RDaHVua3MoZSl9cmV0dXJuIHRoaXMuI0QucHJvbWlzZX1fcmVxdWVzdENodW5rcyhlKXtjb25zdCB0PXRoaXMuY3VyclJlcXVlc3RJZCsrLG49bmV3IFNldDt0aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3Quc2V0KHQsbik7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLnN0cmVhbS5oYXNDaHVuayh0KXx8bi5hZGQodCk7aWYoMD09PW4uc2l6ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgYT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQodCxhKTtjb25zdCByPVtdO2Zvcihjb25zdCBlIG9mIG4pe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXRPckluc2VydENvbXB1dGVkKGUsKCk9PntyLnB1c2goZSk7cmV0dXJuW119KS5wdXNoKHQpfWlmKHIubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5ncm91cENodW5rcyhyKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQuYmVnaW5DaHVuayp0aGlzLmNodW5rU2l6ZSxuPU1hdGgubWluKHQuZW5kQ2h1bmsqdGhpcy5jaHVua1NpemUsdGhpcy5sZW5ndGgpO3RoaXMuc2VuZFJlcXVlc3QoZSxuKS5jYXRjaChhLnJlamVjdCl9fXJldHVybiBhLnByb21pc2UuY2F0Y2goZT0+e2lmKCF0aGlzLiNCKXRocm93IGV9KX1nZXRTdHJlYW0oKXtyZXR1cm4gdGhpcy5zdHJlYW19cmVxdWVzdFJhbmdlKGUsdCl7dD1NYXRoLm1pbih0LHRoaXMubGVuZ3RoKTtjb25zdCBuPXRoaXMuZ2V0QmVnaW5DaHVuayhlKSxhPXRoaXMuZ2V0RW5kQ2h1bmsodCkscj1bXTtmb3IobGV0IGU9bjtlPGE7KytlKXIucHVzaChlKTtyZXR1cm4gdGhpcy5fcmVxdWVzdENodW5rcyhyKX1yZXF1ZXN0UmFuZ2VzKGU9W10pe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT10aGlzLmdldEJlZ2luQ2h1bmsobi5iZWdpbiksYT10aGlzLmdldEVuZENodW5rKG4uZW5kKTtmb3IobGV0IG49ZTtuPGE7KytuKXQuaW5jbHVkZXMobil8fHQucHVzaChuKX10LnNvcnQoKGUsdCk9PmUtdCk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3ModCl9Z3JvdXBDaHVua3MoZSl7Y29uc3QgdD1bXTtsZXQgbj0tMSxhPS0xO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzOysrcil7Y29uc3Qgcz1lW3JdO248MCYmKG49cyk7aWYoYT49MCYmYSsxIT09cyl7dC5wdXNoKHtiZWdpbkNodW5rOm4sZW5kQ2h1bms6YSsxfSk7bj1zfXIrMT09PWUubGVuZ3RoJiZ0LnB1c2goe2JlZ2luQ2h1bms6bixlbmRDaHVuazpzKzF9KTthPXN9cmV0dXJuIHR9b25SZWNlaXZlRGF0YShlKXtjb25zdHtjaHVua1NpemU6dCxsZW5ndGg6bixzdHJlYW06YX09dGhpcyxyPWUuY2h1bmsscz12b2lkIDA9PT1lLmJlZ2luLGk9cz9hLnByb2dyZXNzaXZlRGF0YUxlbmd0aDplLmJlZ2luLG89aStyLmJ5dGVMZW5ndGgsbD1NYXRoLmZsb29yKGkvdCksZj1vPG4/TWF0aC5mbG9vcihvL3QpOk1hdGguY2VpbChvL3QpO3M/YS5vblJlY2VpdmVQcm9ncmVzc2l2ZURhdGEocik6YS5vblJlY2VpdmVEYXRhKGkscik7YS5pc0RhdGFMb2FkZWQmJnRoaXMuI0QucmVzb2x2ZShhKTtjb25zdCBjPVtdO2ZvcihsZXQgZT1sO2U8ZjsrK2Upe2NvbnN0IHQ9dGhpcy5fcmVxdWVzdHNCeUNodW5rLmdldChlKTtpZih0KXt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZGVsZXRlKGUpO2Zvcihjb25zdCBuIG9mIHQpe2NvbnN0IHQ9dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0LmdldChuKTt0LmhhcyhlKSYmdC5kZWxldGUoZSk7dC5zaXplPjB8fGMucHVzaChuKX19fWlmKCF0aGlzLmRpc2FibGVBdXRvRmV0Y2gmJjA9PT10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuc2l6ZSl7bGV0IGU7aWYoMT09PWEubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PWEubnVtQ2h1bmtzLTE7YS5oYXNDaHVuayh0KXx8KGU9dCl9ZWxzZSBlPWEubmV4dEVtcHR5Q2h1bmsoZik7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKTt0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6TWF0aENsYW1wKGEubnVtQ2h1bmtzTG9hZGVkKnQsYS5wcm9ncmVzc2l2ZURhdGFMZW5ndGgsbiksdG90YWw6bn0pfWdldEJlZ2luQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoZS90aGlzLmNodW5rU2l6ZSl9Z2V0RW5kQ2h1bmsoZSl7cmV0dXJuIE1hdGguZmxvb3IoKGUtMSkvdGhpcy5jaHVua1NpemUpKzF9YWJvcnQoZSl7dGhpcy4jQj0hMDt0aGlzLnBkZlN0cmVhbT8uY2FuY2VsQWxsUmVxdWVzdHMoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QudmFsdWVzKCkpdC5yZWplY3QoZSk7dGhpcy4jRC5yZWplY3QoZSl9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSBPOnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIFI6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDpuLGRlc3RQb3M6YT0wLHdpZHRoOnIsaGVpZ2h0OnN9KXtsZXQgaT0wO2NvbnN0IG89cipzKjMsbD1vPj4yLGY9bmV3IFVpbnQzMkFycmF5KGUuYnVmZmVyLHQsbCksYz1GZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7Zm9yKDtpPGwtMjtpKz0zLGErPTQpe2NvbnN0IGU9ZltpXSx0PWZbaSsxXSxyPWZbaSsyXTtuW2FdPWV8YztuW2ErMV09ZT4+PjI0fHQ8PDh8YztuW2ErMl09dD4+PjE2fHI8PDE2fGM7blthKzNdPXI+Pj44fGN9Zm9yKGxldCByPTQqaSxzPXQrbztyPHM7cis9MyluW2ErK109ZVtyXXxlW3IrMV08PDh8ZVtyKzJdPDwxNnxjfWVsc2V7Zm9yKDtpPGwtMjtpKz0zLGErPTQpe2NvbnN0IGU9ZltpXSx0PWZbaSsxXSxyPWZbaSsyXTtuW2FdPWV8YztuW2ErMV09ZTw8MjR8dD4+Pjh8YztuW2ErMl09dDw8MTZ8cj4+PjE2fGM7blthKzNdPXI8PDh8Y31mb3IobGV0IHI9NCppLHM9dCtvO3I8cztyKz0zKW5bYSsrXT1lW3JdPDwyNHxlW3IrMV08PDE2fGVbcisyXTw8OHxjfXJldHVybntzcmNQb3M6dCtvLGRlc3RQb3M6YX19KGUpfXJldHVybiBudWxsfWZ1bmN0aW9uIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6bix3aWR0aDphLGhlaWdodDpyLG5vbkJsYWNrQ29sb3I6cz00Mjk0OTY3Mjk1LGludmVyc2VEZWNvZGU6aT0hMX0pe2NvbnN0IG89RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2wsZl09aT9bcyxvXTpbbyxzXSxjPWE+PjMsaD03JmEsdT1sXmYsbT1lLmxlbmd0aDtuPW5ldyBVaW50MzJBcnJheShuLmJ1ZmZlcik7bGV0IHA9MDtmb3IobGV0IGE9MDthPHI7KythKXtmb3IoY29uc3QgYT10K2M7dDxhOysrdCxwKz04KXtjb25zdCBhPWVbdF07bltwXT1sXi0oYT4+NyYxKSZ1O25bcCsxXT1sXi0oYT4+NiYxKSZ1O25bcCsyXT1sXi0oYT4+NSYxKSZ1O25bcCszXT1sXi0oYT4+NCYxKSZ1O25bcCs0XT1sXi0oYT4+MyYxKSZ1O25bcCs1XT1sXi0oYT4+MiYxKSZ1O25bcCs2XT1sXi0oYT4+MSYxKSZ1O25bcCs3XT1sXi0oMSZhKSZ1fWlmKDA9PT1oKWNvbnRpbnVlO2NvbnN0IGE9dDxtP2VbdCsrXToyNTU7Zm9yKGxldCBlPTA7ZTxoOysrZSwrK3ApbltwXT1sXi0oYT4+Ny1lJjEpJnV9cmV0dXJue3NyY1Bvczp0LGRlc3RQb3M6cH19Y2xhc3MgSW1hZ2VSZXNpemVye3N0YXRpYyNIPTIwNDg7c3RhdGljI009RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9pbWdEYXRhPWU7dGhpcy5faXNNYXNrPXR9c3RhdGljIGdldCBjYW5Vc2VJbWFnZURlY29kZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNhblVzZUltYWdlRGVjb2RlciIsdGhpcy4jTT9JbWFnZURlY29kZXIuaXNUeXBlU3VwcG9ydGVkKCJpbWFnZS9ibXAiKTpQcm9taXNlLnJlc29sdmUoITEpKX1zdGF0aWMgbmVlZHNUb0JlUmVzaXplZChlLHQpe2lmKGU8PXRoaXMuI0gmJnQ8PXRoaXMuI0gpcmV0dXJuITE7Y29uc3R7TUFYX0RJTTpufT10aGlzO2lmKGU+bnx8dD5uKXJldHVybiEwO2NvbnN0IGE9ZSp0O2lmKHRoaXMuX2hhc01heEFyZWEpcmV0dXJuIGE+dGhpcy5NQVhfQVJFQTtpZihhPHRoaXMuI0gqKjIpcmV0dXJuITE7aWYodGhpcy5fYXJlR29vZERpbXMoZSx0KSl7dGhpcy4jSD1NYXRoLm1heCh0aGlzLiNILE1hdGguZmxvb3IoTWF0aC5zcXJ0KGUqdCkpKTtyZXR1cm4hMX10aGlzLiNIPXRoaXMuX2d1ZXNzTWF4KHRoaXMuI0gsbiwxMjgsMCk7cmV0dXJuIGE+KHRoaXMuTUFYX0FSRUE9dGhpcy4jSCoqMil9c3RhdGljIGdldFJlZHVjZVBvd2VyRm9ySlBYKGUsdCxuKXtjb25zdCBhPWUqdCxyPTIqKjMwLyg0Km4pO2lmKCF0aGlzLm5lZWRzVG9CZVJlc2l6ZWQoZSx0KSlyZXR1cm4gYT5yP01hdGguY2VpbChNYXRoLmxvZzIoYS9yKSk6MDtjb25zdHtNQVhfRElNOnMsTUFYX0FSRUE6aX09dGhpcyxvPU1hdGgubWF4KGUvcyx0L3MsTWF0aC5zcXJ0KGEvTWF0aC5taW4ocixpKSkpO3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2cyKG8pKX1zdGF0aWMgZ2V0IE1BWF9ESU0oKXtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9ESU0iLHRoaXMuX2d1ZXNzTWF4KDIwNDgsMzI3NjgsMCwxKSl9c3RhdGljIGdldCBNQVhfQVJFQSgpe3RoaXMuX2hhc01heEFyZWE9ITA7cmV0dXJuIHNoYWRvdyh0aGlzLCJNQVhfQVJFQSIsdGhpcy5fZ3Vlc3NNYXgodGhpcy4jSCx0aGlzLk1BWF9ESU0sMTI4LDApKioyKX1zdGF0aWMgc2V0IE1BWF9BUkVBKGUpe2lmKGU+PTApe3RoaXMuX2hhc01heEFyZWE9ITA7c2hhZG93KHRoaXMsIk1BWF9BUkVBIixlKX19c3RhdGljIHNldE9wdGlvbnMoe2NhbnZhc01heEFyZWFJbkJ5dGVzOmU9LTEsaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6dD0hMX0pe3RoaXMuX2hhc01heEFyZWF8fCh0aGlzLk1BWF9BUkVBPWU+PjIpO3RoaXMuI009dH1zdGF0aWMgX2FyZUdvb2REaW1zKGUsdCl7dHJ5e2NvbnN0IG49bmV3IE9mZnNjcmVlbkNhbnZhcyhlLHQpLGE9bi5nZXRDb250ZXh0KCIyZCIpO2EuZmlsbFJlY3QoMCwwLDEsMSk7Y29uc3Qgcj1hLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhWzNdO24ud2lkdGg9bi5oZWlnaHQ9MTtyZXR1cm4gMCE9PXJ9Y2F0Y2h7cmV0dXJuITF9fXN0YXRpYyBfZ3Vlc3NNYXgoZSx0LG4sYSl7Zm9yKDtlK24rMTx0Oyl7Y29uc3Qgbj1NYXRoLmZsb29yKChlK3QpLzIpLHI9YXx8bjt0aGlzLl9hcmVHb29kRGltcyhuLHIpP2U9bjp0PW59cmV0dXJuIGV9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdD0hMSl7cmV0dXJuIG5ldyBJbWFnZVJlc2l6ZXIoZSx0KS5fY3JlYXRlSW1hZ2UoKX1hc3luYyBfY3JlYXRlSW1hZ2UoKXtjb25zdHtfaW1nRGF0YTplfT10aGlzLHt3aWR0aDp0LGhlaWdodDpufT1lO2lmKHQqbio0PmpuKXtjb25zdCBlPXRoaXMuI04oKTtpZihlKXJldHVybiBlfWNvbnN0IGE9dGhpcy5fZW5jb2RlQk1QKCk7bGV0IHIscztpZihhd2FpdCBJbWFnZVJlc2l6ZXIuY2FuVXNlSW1hZ2VEZWNvZGVyKXtyPW5ldyBJbWFnZURlY29kZXIoe2RhdGE6YSx0eXBlOiJpbWFnZS9ibXAiLHByZWZlckFuaW1hdGlvbjohMSx0cmFuc2ZlcjpbYS5idWZmZXJdfSk7cz1yLmRlY29kZSgpLmNhdGNoKGU9Pnt3YXJuKGBCTVAgaW1hZ2UgZGVjb2RpbmcgZmFpbGVkOiAke2V9YCk7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFt0aGlzLl9lbmNvZGVCTVAoKS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpfSkuZmluYWxseSgoKT0+e3IuY2xvc2UoKX0pfWVsc2Ugcz1jcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYS5idWZmZXJdLHt0eXBlOiJpbWFnZS9ibXAifSkpO2NvbnN0e01BWF9BUkVBOmksTUFYX0RJTTpvfT1JbWFnZVJlc2l6ZXIsbD1NYXRoLm1heCh0L28sbi9vLE1hdGguc3FydCh0Km4vaSkpLGY9TWF0aC5tYXgobCwyKSxjPU1hdGgucm91bmQoMTAqKGwrMS4yNSkpLzEwL2YsaD1NYXRoLmZsb29yKE1hdGgubG9nMihjKSksdT1uZXcgQXJyYXkoaCsyKS5maWxsKDIpO3VbMF09Zjt1LnNwbGljZSgtMSwxLGMvKDE8PGgpKTtsZXQgbT10LHA9bjtjb25zdCBkPWF3YWl0IHM7bGV0IGc9ZC5pbWFnZXx8ZDtmb3IoY29uc3QgZSBvZiB1KXtjb25zdCB0PW0sbj1wO209TWF0aC5mbG9vcihtL2UpO3A9TWF0aC5mbG9vcihwL2UpO2NvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcyhtLHApO2EuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoZywwLDAsdCxuLDAsMCxtLHApO2cuY2xvc2UoKTtnPWEudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9ZS5kYXRhPW51bGw7ZS5iaXRtYXA9ZztlLndpZHRoPW07ZS5oZWlnaHQ9cDtyZXR1cm4gZX0jTigpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse2RhdGE6dCx3aWR0aDpuLGhlaWdodDphLGtpbmQ6cn09ZSxzPW4qYSo0LGk9TWF0aC5jZWlsKE1hdGgubG9nMihzL2puKSksbz1uPj5pLGw9YT4+aTtsZXQgZixjPWE7dHJ5e2Y9bmV3IFVpbnQ4QXJyYXkocyl9Y2F0Y2h7bGV0IGU9TWF0aC5mbG9vcihNYXRoLmxvZzIocysxKSk7Zm9yKDs7KXRyeXtmPW5ldyBVaW50OEFycmF5KDIqKmUtMSk7YnJlYWt9Y2F0Y2h7ZS09MX1jPU1hdGguZmxvb3IoKDIqKmUtMSkvKDQqbikpO2NvbnN0IHQ9bipjKjQ7dDxmLmxlbmd0aCYmKGY9bmV3IFVpbnQ4QXJyYXkodCkpfWNvbnN0IGg9bmV3IFVpbnQzMkFycmF5KGYuYnVmZmVyKSx1PW5ldyBVaW50MzJBcnJheShvKmwpO2xldCBtPTAscD0wO2NvbnN0IGQ9TWF0aC5jZWlsKGEvYyksZz1hJWM9PT0wP2E6YSVjO2ZvcihsZXQgZT0wO2U8ZDtlKyspe2NvbnN0IGE9ZTxkLTE/YzpnOyh7c3JjUG9zOm19PWNvbnZlcnRUb1JHQkEoe2tpbmQ6cixzcmM6dCxkZXN0Omgsd2lkdGg6bixoZWlnaHQ6YSxpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6bX0pKTtmb3IobGV0IGU9MCx0PWE+Pmk7ZTx0O2UrKyl7Y29uc3QgdD1oLnN1YmFycmF5KChlPDxpKSpuKTtmb3IobGV0IGU9MDtlPG87ZSsrKXVbcCsrXT10W2U8PGldfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGwpKXtlLmRhdGE9dTtlLndpZHRoPW87ZS5oZWlnaHQ9bDtlLmtpbmQ9RDtyZXR1cm4gbnVsbH1jb25zdCBiPW5ldyBPZmZzY3JlZW5DYW52YXMobyxsKTtiLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHUuYnVmZmVyKSxvLGwpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Yi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9bDtyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOm59PXRoaXMuX2ltZ0RhdGE7bGV0IGEscj10aGlzLl9pbWdEYXRhLmRhdGEscz1uZXcgVWludDhBcnJheSgwKSxpPXMsbz0wO3N3aXRjaChuKXtjYXNlIE86e2E9MTtzPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IG49ZSs3Pj4zLGk9biszJi00O2lmKG4hPT1pKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkqdCk7bGV0IGE9MDtmb3IobGV0IHM9MCxvPXQqbjtzPG87cys9bixhKz1pKWUuc2V0KHIuc3ViYXJyYXkocyxzK24pLGEpO3I9ZX1icmVha31jYXNlIFI6YT0yNDtpZigzJmUpe2NvbnN0IG49MyplLGE9biszJi00LHM9YS1uLGk9bmV3IFVpbnQ4QXJyYXkoYSp0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLGE9dCpuO2U8YTtlKz1uKXtjb25zdCB0PXIuc3ViYXJyYXkoZSxlK24pO2ZvcihsZXQgZT0wO2U8bjtlKz0zKXtpW28rK109dFtlKzJdO2lbbysrXT10W2UrMV07aVtvKytdPXRbZV19bys9c31yPWl9ZWxzZSBmb3IobGV0IGU9MCx0PXIubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PXJbZV07cltlXT1yW2UrMl07cltlKzJdPXR9YnJlYWs7Y2FzZSBEOmE9MzI7bz0zO2k9bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IG49bmV3IERhdGFWaWV3KGkuYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7bi5zZXRVaW50MzIoMCwyNTUsITApO24uc2V0VWludDMyKDQsNjUyODAsITApO24uc2V0VWludDMyKDgsMTY3MTE2ODAsITApO24uc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7bi5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTtuLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTtuLnNldFVpbnQzMig4LDY1MjgwLCEwKTtuLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBsPTA7Y29uc3QgZj00MCtpLmxlbmd0aCxjPTE0K2Yrcy5sZW5ndGgrci5sZW5ndGgsaD1uZXcgVWludDhBcnJheShjKSx1PW5ldyBEYXRhVmlldyhoLmJ1ZmZlcik7dS5zZXRVaW50MTYobCwxOTc3OCwhMCk7bCs9Mjt1LnNldFVpbnQzMihsLGMsITApO2wrPTQ7dS5zZXRVaW50MzIobCwwLCEwKTtsKz00O3Uuc2V0VWludDMyKGwsMTQrZitzLmxlbmd0aCwhMCk7bCs9NDt1LnNldFVpbnQzMihsLGYsITApO2wrPTQ7dS5zZXRJbnQzMihsLGUsITApO2wrPTQ7dS5zZXRJbnQzMihsLC10LCEwKTtsKz00O3Uuc2V0VWludDE2KGwsMSwhMCk7bCs9Mjt1LnNldFVpbnQxNihsLGEsITApO2wrPTI7dS5zZXRVaW50MzIobCxvLCEwKTtsKz00O3Uuc2V0VWludDMyKGwsMCwhMCk7bCs9NDt1LnNldEludDMyKGwsMCwhMCk7bCs9NDt1LnNldEludDMyKGwsMCwhMCk7bCs9NDt1LnNldFVpbnQzMihsLHMubGVuZ3RoLzQsITApO2wrPTQ7dS5zZXRVaW50MzIobCwwLCEwKTtsKz00O2guc2V0KGksbCk7bCs9aS5sZW5ndGg7aC5zZXQocyxsKTtsKz1zLmxlbmd0aDtoLnNldChyLGwpO3JldHVybiBofX1jb25zdCBObj1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2J1ZmZlcj1ObjtidWZmZXJMZW5ndGg9MDtlb2Y9ITE7bWluQnVmZmVyTGVuZ3RoPTUxMjtwb3M9MDtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX3Jhd01pbkJ1ZmZlckxlbmd0aD1lfHwwO2lmKGUpZm9yKDt0aGlzLm1pbkJ1ZmZlckxlbmd0aDxlOyl0aGlzLm1pbkJ1ZmZlckxlbmd0aCo9Mn1yZWFkQmxvY2soKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZWFkQmxvY2tgIGNhbGxlZCIpfWdldCBpc0VtcHR5KCl7Zm9yKDshdGhpcy5lb2YmJjA9PT10aGlzLmJ1ZmZlckxlbmd0aDspdGhpcy5yZWFkQmxvY2soKTtyZXR1cm4gMD09PXRoaXMuYnVmZmVyTGVuZ3RofWVuc3VyZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnVmZmVyO2lmKGU8PXQuYnl0ZUxlbmd0aClyZXR1cm4gdDtsZXQgbj10aGlzLm1pbkJ1ZmZlckxlbmd0aDtmb3IoO248ZTspbio9Mjtjb25zdCBhPW5ldyBVaW50OEFycmF5KG4pO2Euc2V0KHQpO3JldHVybiB0aGlzLmJ1ZmZlcj1hfWdldEJ5dGUoKXtjb25zdCBlPXRoaXMucG9zO2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PWU7KXtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLnJlYWRCbG9jaygpfXJldHVybiB0aGlzLmJ1ZmZlclt0aGlzLnBvcysrXX1nZXRCeXRlcyhlLHQ9bnVsbCl7Y29uc3Qgbj10aGlzLnBvcztsZXQgYTtpZihlKXt0aGlzLmVuc3VyZUJ1ZmZlcihuK2UpO2E9bitlO2Zvcig7IXRoaXMuZW9mJiZ0aGlzLmJ1ZmZlckxlbmd0aDxhOyl0aGlzLnJlYWRCbG9jayh0KTtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoO2E+ciYmKGE9cil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2sodCk7YT10aGlzLmJ1ZmZlckxlbmd0aH10aGlzLnBvcz1hO3JldHVybiB0aGlzLmJ1ZmZlci5zdWJhcnJheShuLGEpfWFzeW5jIGdldEltYWdlRGF0YShlLHQpe2lmKCF0aGlzLmNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKXJldHVybiB0aGlzLmlzQXN5bmNEZWNvZGVyP3RoaXMuZGVjb2RlSW1hZ2UobnVsbCxlLHQpOnRoaXMuZ2V0Qnl0ZXMoZSx0KTtjb25zdCBuPWF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gdGhpcy5kZWNvZGVJbWFnZShuLGUsdCl9YXN5bmMgYXN5bmNHZXRCeXRlc0Zyb21EZWNvbXByZXNzaW9uU3RyZWFtKGUpe3RoaXMuc3RyZWFtLnJlc2V0KCk7Y29uc3QgdD10aGlzLnN0cmVhbS5pc0FzeW5jP2F3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKTp0aGlzLnN0cmVhbS5nZXRCeXRlcygpO3RyeXtjb25zdHtyZWFkYWJsZTpuLHdyaXRhYmxlOmF9PW5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKGUpLHI9YS5nZXRXcml0ZXIoKTthd2FpdCByLnJlYWR5O3Iud3JpdGUodCkudGhlbihhc3luYygpPT57YXdhaXQgci5yZWFkeTthd2FpdCByLmNsb3NlKCl9KS5jYXRjaCgoKT0+e30pO2NvbnN0IHM9W107bGV0IGk9MDtmb3IgYXdhaXQoY29uc3QgZSBvZiBuKXtzLnB1c2goZSk7aSs9ZS5ieXRlTGVuZ3RofWNvbnN0IG89bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IGw9MDtmb3IoY29uc3QgZSBvZiBzKXtvLnNldChlLGwpO2wrPWUuYnl0ZUxlbmd0aH1yZXR1cm57ZGVjb21wcmVzc2VkOm8sY29tcHJlc3NlZDp0fX1jYXRjaHtyZXR1cm57ZGVjb21wcmVzc2VkOm51bGwsY29tcHJlc3NlZDp0fX19cmVzZXQoKXt0aGlzLnBvcz0wfW1ha2VTdWJTdHJlYW0oZSx0LG49bnVsbCl7aWYodm9pZCAwPT09dClmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtlbHNle2NvbnN0IG49ZSt0O2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8PW4mJiF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKX1yZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ1ZmZlcixlLHQsbil9Y2xvbmUoKXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2soKTtyZXR1cm4gbmV3IFN0cmVhbSh0aGlzLmJ1ZmZlciwwLHRoaXMuYnVmZmVyTGVuZ3RoLHRoaXMuZGljdD8uY2xvbmUoKSl9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gdGhpcy5zdHJlYW0/dGhpcy5zdHJlYW0uZ2V0QmFzZVN0cmVhbXMoKTpudWxsfX1jbGFzcyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0PW51bGwpe2U9ZS5maWx0ZXIoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFlLmlzSW1hZ2VTdHJlYW0pO2xldCBuPTA7Zm9yKGNvbnN0IHQgb2YgZSluKz10IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtP3QuX3Jhd01pbkJ1ZmZlckxlbmd0aDp0Lmxlbmd0aDtzdXBlcihuKTt0aGlzLnN0cmVhbXM9ZTt0aGlzLl9vbkVycm9yPXR9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbXM7aWYoMD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLnNoaWZ0KCk7bGV0IG47dHJ5e249dC5nZXRCeXRlcygpfWNhdGNoKGUpe2lmKHRoaXMuX29uRXJyb3Ipe3RoaXMuX29uRXJyb3IoZSx0LmRpY3Q/Lm9iaklkKTtyZXR1cm59dGhyb3cgZX1jb25zdCBhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9YStuLmxlbmd0aDt0aGlzLmVuc3VyZUJ1ZmZlcihyKS5zZXQobixhKTt0aGlzLmJ1ZmZlckxlbmd0aD1yfWdldEJhc2VTdHJlYW1zKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzLnN0cmVhbXMpe2NvbnN0IG49dC5nZXRCYXNlU3RyZWFtcygpO24mJmUucHVzaCguLi5uKX1yZXR1cm4gZS5sZW5ndGg+MD9lOm51bGx9fWNsYXNzIENvbG9yU3BhY2VVdGlsc3tzdGF0aWMgcGFyc2Uoe2NzOmUseHJlZjp0LHJlc291cmNlczpuPW51bGwscGRmRnVuY3Rpb25GYWN0b3J5OmEsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cyxhc3luY0lmTm90Q2FjaGVkOmk9ITF9KXtjb25zdCBvPXt4cmVmOnQscmVzb3VyY2VzOm4scGRmRnVuY3Rpb25GYWN0b3J5OmEsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6c307bGV0IGwsZixjO2lmKGUgaW5zdGFuY2VvZiBSZWYpe2Y9ZTtjb25zdCBuPXIuZ2V0QnlSZWYoZil8fHMuZ2V0QnlSZWYoZik7aWYobilyZXR1cm4gbjtlPXQuZmV0Y2goZSl9aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2w9ZS5uYW1lO2NvbnN0IHQ9cy5nZXRCeU5hbWUobCk7aWYodClyZXR1cm4gdH10cnl7Yz10aGlzLiNQKGUsbyl9Y2F0Y2goZSl7aWYoaSYmIShlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXJldHVybiBQcm9taXNlLnJlamVjdChlKTt0aHJvdyBlfWlmKGx8fGYpe3Muc2V0KGwsZixjKTtmJiZyLnNldChudWxsLGYsYyl9cmV0dXJuIGk/UHJvbWlzZS5yZXNvbHZlKGMpOmN9c3RhdGljI18oZSx0KXtjb25zdHtnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bn09dDtsZXQgYTtpZihlIGluc3RhbmNlb2YgUmVmKXthPWU7Y29uc3QgdD1uLmdldEJ5UmVmKGEpO2lmKHQpcmV0dXJuIHR9Y29uc3Qgcj10aGlzLiNQKGUsdCk7YSYmbi5zZXQobnVsbCxhLHIpO3JldHVybiByfXN0YXRpYyNQKGUsdCl7Y29uc3R7eHJlZjpuLHJlc291cmNlczphLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpzfT10O2lmKChlPW4uZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5yZ2I7Y2FzZSJEZXZpY2VSR0JBIjpyZXR1cm4gdGhpcy5yZ2JhO2Nhc2UiQ01ZSyI6Y2FzZSJEZXZpY2VDTVlLIjpyZXR1cm4gdGhpcy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihhIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgbj1hLmdldCgiQ29sb3JTcGFjZSIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPW4uZ2V0KGUubmFtZSk7aWYoYSl7aWYoYSBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIHRoaXMuI1AoYSx0KTtlPWE7YnJlYWt9fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZTogJHtlLm5hbWV9YCk7cmV0dXJuIHRoaXMuZ3JheX1pZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBhPW4uZmV0Y2hJZlJlZihlWzBdKS5uYW1lO2xldCBpLG8sbCxmLGMsaDtzd2l0Y2goYSl7Y2FzZSJHIjpjYXNlIkRldmljZUdyYXkiOnJldHVybiB0aGlzLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLmNteWs7Y2FzZSJDYWxHcmF5IjppPW4uZmV0Y2hJZlJlZihlWzFdKTtmPWkuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPWkuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtoPWkuZ2V0KCJHYW1tYSIpO3JldHVybiBuZXcgQ2FsR3JheUNTKGYsYyxoKTtjYXNlIkNhbFJHQiI6aT1uLmZldGNoSWZSZWYoZVsxXSk7Zj1pLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7Yz1pLmdldEFycmF5KCJCbGFja1BvaW50Iik7aD1pLmdldEFycmF5KCJHYW1tYSIpO2NvbnN0IHU9aS5nZXRBcnJheSgiTWF0cml4Iik7cmV0dXJuIG5ldyBDYWxSR0JDUyhmLGMsaCx1KTtjYXNlIklDQ0Jhc2VkIjpjb25zdCBtPWVbMV1pbnN0YW5jZW9mIFJlZjtpZihtKXtjb25zdCB0PXMuZ2V0QnlSZWYoZVsxXSk7aWYodClyZXR1cm4gdH1jb25zdCBwPW4uZmV0Y2hJZlJlZihlWzFdKSxkPXAuZGljdDtvPWQuZ2V0KCJOIik7aWYoSWNjQ29sb3JTcGFjZS5pc1VzYWJsZSl0cnl7Y29uc3QgdD1uZXcgSWNjQ29sb3JTcGFjZShwLmdldEJ5dGVzKCksIklDQ0Jhc2VkIixvKTttJiZzLnNldChudWxsLGVbMV0sdCk7cmV0dXJuIHR9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IHQ7d2FybihgSUNDQmFzZWQgY29sb3Igc3BhY2UgKCR7ZVsxXX0pOiAiJHt0fSIuYCl9Y29uc3QgZz1kLmdldFJhdygiQWx0ZXJuYXRlIik7aWYoZyl7Y29uc3QgZT10aGlzLiNfKGcsdCk7aWYoZS5udW1Db21wcz09PW8pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1vKXJldHVybiB0aGlzLmdyYXk7aWYoMz09PW8pcmV0dXJuIHRoaXMucmdiO2lmKDQ9PT1vKXJldHVybiB0aGlzLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpsPWVbMV18fG51bGw7bCYmPXRoaXMuI18obCx0KTtyZXR1cm4gbmV3IFBhdHRlcm5DUyhsKTtjYXNlIkkiOmNhc2UiSW5kZXhlZCI6bD10aGlzLiNfKGVbMV0sdCk7Y29uc3QgYj1NYXRoQ2xhbXAobi5mZXRjaElmUmVmKGVbMl0pLDAsMjU1KSx3PW4uZmV0Y2hJZlJlZihlWzNdKTtyZXR1cm4gbmV3IEluZGV4ZWRDUyhsLGIsdyk7Y2FzZSJTZXBhcmF0aW9uIjpjYXNlIkRldmljZU4iOmNvbnN0IGo9bi5mZXRjaElmUmVmKGVbMV0pO289QXJyYXkuaXNBcnJheShqKT9qLmxlbmd0aDoxO2w9dGhpcy4jXyhlWzJdLHQpO2NvbnN0IGs9ci5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhvLGwsayk7Y2FzZSJMYWIiOmk9bi5mZXRjaElmUmVmKGVbMV0pO2Y9aS5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9aS5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHk9aS5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGYsYyx5KTtkZWZhdWx0Ondhcm4oYFVuaW1wbGVtZW50ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7YX1gKTtyZXR1cm4gdGhpcy5ncmF5fX13YXJuKGBVbnJlY29nbml6ZWQgQ29sb3JTcGFjZSBvYmplY3Q6ICR7ZX1gKTtyZXR1cm4gdGhpcy5ncmF5fXN0YXRpYyBnZXQgZ3JheSgpe3JldHVybiBzaGFkb3codGhpcywiZ3JheSIsbmV3IERldmljZUdyYXlDUyl9c3RhdGljIGdldCByZ2IoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYiIsbmV3IERldmljZVJnYkNTKX1zdGF0aWMgZ2V0IHJnYmEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJnYmEiLG5ldyBEZXZpY2VSZ2JhQ1MpfXN0YXRpYyBnZXQgY215aygpe2lmKENteWtJQ0NCYXNlZENTLmlzVXNhYmxlKXRyeXtyZXR1cm4gc2hhZG93KHRoaXMsImNteWsiLG5ldyBDbXlrSUNDQmFzZWRDUyl9Y2F0Y2h7d2FybigiQ01ZSyBmYWxsYmFjazogRGV2aWNlQ01ZSyIpfXJldHVybiBzaGFkb3codGhpcywiY215ayIsbmV3IERldmljZUNteWtDUyl9fWNsYXNzIEpwZWdFcnJvciBleHRlbmRzIGxue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpwZWdFcnJvciIpfX1jbGFzcyBETkxNYXJrZXJFcnJvciBleHRlbmRzIGxue2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiRE5MTWFya2VyRXJyb3IiKTt0aGlzLnNjYW5MaW5lcz10fX1jbGFzcyBFT0lNYXJrZXJFcnJvciBleHRlbmRzIGxue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkVPSU1hcmtlckVycm9yIil9fWNvbnN0IFBuPW5ldyBVaW50OEFycmF5KFswLDEsOCwxNiw5LDIsMywxMCwxNywyNCwzMiwyNSwxOCwxMSw0LDUsMTIsMTksMjYsMzMsNDAsNDgsNDEsMzQsMjcsMjAsMTMsNiw3LDE0LDIxLDI4LDM1LDQyLDQ5LDU2LDU3LDUwLDQzLDM2LDI5LDIyLDE1LDIzLDMwLDM3LDQ0LDUxLDU4LDU5LDUyLDQ1LDM4LDMxLDM5LDQ2LDUzLDYwLDYxLDU0LDQ3LDU1LDYyLDYzXSksX249NDAxNyxFbj03OTksem49MzQwNixMbj0yMjc2LFVuPTE1NjcsV249Mzc4NCxYbj01NzkzLEtuPTI4OTY7ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0KXtsZXQgbixhLHI9MCxzPTE2O2Zvcig7cz4wJiYhZVtzLTFdOylzLS07Y29uc3QgaT1be2NoaWxkcmVuOltdLGluZGV4OjB9XTtsZXQgbyxsPWlbMF07Zm9yKG49MDtuPHM7bisrKXtmb3IoYT0wO2E8ZVtuXTthKyspe2w9aS5wb3AoKTtsLmNoaWxkcmVuW2wuaW5kZXhdPXRbcl07Zm9yKDtsLmluZGV4PjA7KWw9aS5wb3AoKTtsLmluZGV4Kys7aS5wdXNoKGwpO2Zvcig7aS5sZW5ndGg8PW47KXtpLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2wuY2hpbGRyZW5bbC5pbmRleF09by5jaGlsZHJlbjtsPW99cisrfWlmKG4rMTxzKXtpLnB1c2gobz17Y2hpbGRyZW46W10saW5kZXg6MH0pO2wuY2hpbGRyZW5bbC5pbmRleF09by5jaGlsZHJlbjtsPW99fXJldHVybiBpWzBdLmNoaWxkcmVufWZ1bmN0aW9uIGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUsdCxuKXtyZXR1cm4gNjQqKChlLmJsb2Nrc1BlckxpbmUrMSkqdCtuKX1mdW5jdGlvbiBkZWNvZGVTY2FuKGUsdCxuLGEscixzLGksbyxsLGYsYz0hMSl7Y29uc3QgaD1hLm1jdXNQZXJMaW5lLHU9YS5wcm9ncmVzc2l2ZSxtPW47bGV0IHA9MCxkPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGQ+MCl7ZC0tO3JldHVybiBwPj5kJjF9cD1lW24rK107aWYoMjU1PT09cCl7Y29uc3Qgcj1lW24rK107aWYocil7aWYoMjIwPT09ciYmYyl7bis9Mjtjb25zdCBlPXQuZ2V0VWludDE2KG4pO24rPTI7aWYoZT4wJiZlIT09YS5zY2FuTGluZXMpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBETkwgbWFya2VyICgweEZGREMpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIixlKX1lbHNlIGlmKDIxNz09PXIpe2lmKGMpe2NvbnN0IGU9aiooOD09PWEucHJlY2lzaW9uPzg6MCk7aWYoZT4wJiZNYXRoLnJvdW5kKGEuc2NhbkxpbmVzL2UpPj01KXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSwgcG9zc2libHkgY2F1c2VkIGJ5IGluY29ycmVjdCBgc2NhbkxpbmVzYCBwYXJhbWV0ZXIiLGUpfXRocm93IG5ldyBFT0lNYXJrZXJFcnJvcigiRm91bmQgRU9JIG1hcmtlciAoMHhGRkQ5KSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIpfXRocm93IG5ldyBKcGVnRXJyb3IoYHVuZXhwZWN0ZWQgbWFya2VyICR7KHA8PDh8cikudG9TdHJpbmcoMTYpfWApfX1kPTc7cmV0dXJuIHA+Pj43fWZ1bmN0aW9uIGRlY29kZUh1ZmZtYW4oZSl7bGV0IHQ9ZTtmb3IoOzspe3Q9dFtyZWFkQml0KCldO3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJudW1iZXIiOnJldHVybiB0O2Nhc2Uib2JqZWN0Ijpjb250aW51ZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2UiKX19ZnVuY3Rpb24gcmVjZWl2ZShlKXtsZXQgdD0wO2Zvcig7ZT4wOyl7dD10PDwxfHJlYWRCaXQoKTtlLS19cmV0dXJuIHR9ZnVuY3Rpb24gcmVjZWl2ZUFuZEV4dGVuZChlKXtpZigxPT09ZSlyZXR1cm4gMT09PXJlYWRCaXQoKT8xOi0xO2NvbnN0IHQ9cmVjZWl2ZShlKTtyZXR1cm4gdD49MTw8ZS0xP3Q6dCsoLTE8PGUpKzF9bGV0IGc9MDtsZXQgYix3PTA7bGV0IGo9MDtmdW5jdGlvbiBkZWNvZGVNY3UoZSx0LG4sYSxyKXtjb25zdCBzPW4laDtqPShuL2h8MCkqZS52K2E7Y29uc3QgaT1zKmUuaCtyO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLGosaSkpfWZ1bmN0aW9uIGRlY29kZUJsb2NrKGUsdCxuKXtqPW4vZS5ibG9ja3NQZXJMaW5lfDA7Y29uc3QgYT1uJWUuYmxvY2tzUGVyTGluZTt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxqLGEpKX1jb25zdCBrPXIubGVuZ3RoO2xldCB5LHEsdixTLHgsQztDPXU/MD09PWk/MD09PWw/ZnVuY3Rpb24gZGVjb2RlRENGaXJzdChlLHQpe2NvbnN0IG49ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1uPzA6cmVjZWl2ZUFuZEV4dGVuZChuKTw8ZjtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWF9OmZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShlLHQpe2UuYmxvY2tEYXRhW3RdfD1yZWFkQml0KCk8PGZ9OjA9PT1sP2Z1bmN0aW9uIGRlY29kZUFDRmlyc3QoZSx0KXtpZihnPjApe2ctLTtyZXR1cm59bGV0IG49aTtjb25zdCBhPW87Zm9yKDtuPD1hOyl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLHI9MTUmYSxzPWE+PjQ7aWYoMD09PXIpe2lmKHM8MTUpe2c9cmVjZWl2ZShzKSsoMTw8cyktMTticmVha31uKz0xNjtjb250aW51ZX1uKz1zO2NvbnN0IGk9UG5bbl07ZS5ibG9ja0RhdGFbdCtpXT1yZWNlaXZlQW5kRXh0ZW5kKHIpKigxPDxmKTtuKyt9fTpmdW5jdGlvbiBkZWNvZGVBQ1N1Y2Nlc3NpdmUoZSx0KXtsZXQgbj1pO2NvbnN0IGE9bztsZXQgcixzLGw9MDtmb3IoO248PWE7KXtjb25zdCBhPXQrUG5bbl0saT1lLmJsb2NrRGF0YVthXTwwPy0xOjE7c3dpdGNoKHcpe2Nhc2UgMDpzPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyk7cj0xNSZzO2w9cz4+NDtpZigwPT09cilpZihsPDE1KXtnPXJlY2VpdmUobCkrKDE8PGwpO3c9NH1lbHNle2w9MTY7dz0xfWVsc2V7aWYoMSE9PXIpdGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBBQ24gZW5jb2RpbmciKTtiPXJlY2VpdmVBbmRFeHRlbmQocik7dz1sPzI6M31jb250aW51ZTtjYXNlIDE6Y2FzZSAyOmlmKGUuYmxvY2tEYXRhW2FdKWUuYmxvY2tEYXRhW2FdKz1pKihyZWFkQml0KCk8PGYpO2Vsc2V7bC0tOzA9PT1sJiYodz0yPT09dz8zOjApfWJyZWFrO2Nhc2UgMzppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9aSoocmVhZEJpdCgpPDxmKTtlbHNle2UuYmxvY2tEYXRhW2FdPWI8PGY7dz0wfWJyZWFrO2Nhc2UgNDplLmJsb2NrRGF0YVthXSYmKGUuYmxvY2tEYXRhW2FdKz1pKihyZWFkQml0KCk8PGYpKX1uKyt9aWYoND09PXcpe2ctLTswPT09ZyYmKHc9MCl9fTpmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShlLHQpe2NvbnN0IG49ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZURDKSxhPTA9PT1uPzA6cmVjZWl2ZUFuZEV4dGVuZChuKTtlLmJsb2NrRGF0YVt0XT1lLnByZWQrPWE7bGV0IHI9MTtmb3IoO3I8NjQ7KXtjb25zdCBuPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksYT0xNSZuLHM9bj4+NDtpZigwPT09YSl7aWYoczwxNSlicmVhaztyKz0xNjtjb250aW51ZX1yKz1zO2NvbnN0IGk9UG5bcl07ZS5ibG9ja0RhdGFbdCtpXT1yZWNlaXZlQW5kRXh0ZW5kKGEpO3IrK319O2xldCBULE89MDtjb25zdCBSPTE9PT1rP3JbMF0uYmxvY2tzUGVyTGluZSpyWzBdLmJsb2Nrc1BlckNvbHVtbjpoKmEubWN1c1BlckNvbHVtbjtsZXQgRCxIO2Zvcig7Tzw9Ujspe2NvbnN0IGE9cz9NYXRoLm1pbihSLU8scyk6UjtpZihhPjApe2ZvcihxPTA7cTxrO3ErKylyW3FdLnByZWQ9MDtnPTA7aWYoMT09PWspe3k9clswXTtmb3IoeD0wO3g8YTt4Kyspe2RlY29kZUJsb2NrKHksQyxPKTtPKyt9fWVsc2UgZm9yKHg9MDt4PGE7eCsrKXtmb3IocT0wO3E8aztxKyspe3k9cltxXTtEPXkuaDtIPXkudjtmb3Iodj0wO3Y8SDt2KyspZm9yKFM9MDtTPEQ7UysrKWRlY29kZU1jdSh5LEMsTyx2LFMpfU8rK319ZD0wO1Q9ZmluZE5leHRGaWxlTWFya2VyKGUsdCxuKTtpZighVClicmVhaztpZihULmludmFsaWQpe3dhcm4oYGRlY29kZVNjYW4gLSAke2E+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSJ9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtULmludmFsaWR9YCk7bj1ULm9mZnNldH1pZighKFQubWFya2VyPj02NTQ4OCYmVC5tYXJrZXI8PTY1NDk1KSlicmVhaztuKz0yfXJldHVybiBuLW19ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxuKXtjb25zdCBhPWUucXVhbnRpemF0aW9uVGFibGUscj1lLmJsb2NrRGF0YTtsZXQgcyxpLG8sbCxmLGMsaCx1LG0scCxkLGcsYix3LGosayx5O2lmKCFhKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7bT1yW3QrZV07cD1yW3QrZSsxXTtkPXJbdCtlKzJdO2c9clt0K2UrM107Yj1yW3QrZSs0XTt3PXJbdCtlKzVdO2o9clt0K2UrNl07az1yW3QrZSs3XTttKj1hW2VdO2lmKDAhPT0ocHxkfGd8Ynx3fGp8aykpe3AqPWFbZSsxXTtkKj1hW2UrMl07Zyo9YVtlKzNdO2IqPWFbZSs0XTt3Kj1hW2UrNV07aio9YVtlKzZdO2sqPWFbZSs3XTtzPVhuKm0rMTI4Pj44O2k9WG4qYisxMjg+Pjg7bz1kO2w9ajtmPUtuKihwLWspKzEyOD4+ODt1PUtuKihwK2spKzEyOD4+ODtjPWc8PDQ7aD13PDw0O3M9cytpKzE+PjE7aT1zLWk7eT1vKlduK2wqVW4rMTI4Pj44O289bypVbi1sKlduKzEyOD4+ODtsPXk7Zj1mK2grMT4+MTtoPWYtaDt1PXUrYysxPj4xO2M9dS1jO3M9cytsKzE+PjE7bD1zLWw7aT1pK28rMT4+MTtvPWktbzt5PWYqTG4rdSp6bisyMDQ4Pj4xMjtmPWYqem4tdSpMbisyMDQ4Pj4xMjt1PXk7eT1jKkVuK2gqX24rMjA0OD4+MTI7Yz1jKl9uLWgqRW4rMjA0OD4+MTI7aD15O25bZV09cyt1O25bZSs3XT1zLXU7bltlKzFdPWkraDtuW2UrNl09aS1oO25bZSsyXT1vK2M7bltlKzVdPW8tYztuW2UrM109bCtmO25bZSs0XT1sLWZ9ZWxzZXt5PVhuKm0rNTEyPj4xMDtuW2VdPXk7bltlKzFdPXk7bltlKzJdPXk7bltlKzNdPXk7bltlKzRdPXk7bltlKzVdPXk7bltlKzZdPXk7bltlKzddPXl9fWZvcihsZXQgZT0wO2U8ODsrK2Upe209bltlXTtwPW5bZSs4XTtkPW5bZSsxNl07Zz1uW2UrMjRdO2I9bltlKzMyXTt3PW5bZSs0MF07aj1uW2UrNDhdO2s9bltlKzU2XTtpZigwIT09KHB8ZHxnfGJ8d3xqfGspKXtzPVhuKm0rMjA0OD4+MTI7aT1YbipiKzIwNDg+PjEyO289ZDtsPWo7Zj1LbioocC1rKSsyMDQ4Pj4xMjt1PUtuKihwK2spKzIwNDg+PjEyO2M9ZztoPXc7cz00MTEyKyhzK2krMT4+MSk7aT1zLWk7eT1vKlduK2wqVW4rMjA0OD4+MTI7bz1vKlVuLWwqV24rMjA0OD4+MTI7bD15O2Y9ZitoKzE+PjE7aD1mLWg7dT11K2MrMT4+MTtjPXUtYztzPXMrbCsxPj4xO2w9cy1sO2k9aStvKzE+PjE7bz1pLW87eT1mKkxuK3Uqem4rMjA0OD4+MTI7Zj1mKnpuLXUqTG4rMjA0OD4+MTI7dT15O3k9YypFbitoKl9uKzIwNDg+PjEyO2M9Yypfbi1oKkVuKzIwNDg+PjEyO2g9eTttPXMrdTtrPXMtdTtwPWkraDtqPWktaDtkPW8rYzt3PW8tYztnPWwrZjtiPWwtZjttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O3A8MTY/cD0wOnA+PTQwODA/cD0yNTU6cD4+PTQ7ZDwxNj9kPTA6ZD49NDA4MD9kPTI1NTpkPj49NDtnPDE2P2c9MDpnPj00MDgwP2c9MjU1Omc+Pj00O2I8MTY/Yj0wOmI+PTQwODA/Yj0yNTU6Yj4+PTQ7dzwxNj93PTA6dz49NDA4MD93PTI1NTp3Pj49NDtqPDE2P2o9MDpqPj00MDgwP2o9MjU1Omo+Pj00O2s8MTY/az0wOms+PTQwODA/az0yNTU6az4+PTQ7clt0K2VdPW07clt0K2UrOF09cDtyW3QrZSsxNl09ZDtyW3QrZSsyNF09ZztyW3QrZSszMl09YjtyW3QrZSs0MF09dztyW3QrZSs0OF09ajtyW3QrZSs1Nl09a31lbHNle3k9WG4qbSs4MTkyPj4xNDt5PXk8LTIwNDA/MDp5Pj0yMDI0PzI1NTp5KzIwNTY+PjQ7clt0K2VdPXk7clt0K2UrOF09eTtyW3QrZSsxNl09eTtyW3QrZSsyNF09eTtyW3QrZSszMl09eTtyW3QrZSs0MF09eTtyW3QrZSs0OF09eTtyW3QrZSs1Nl09eX19fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IG49dC5ibG9ja3NQZXJMaW5lLGE9dC5ibG9ja3NQZXJDb2x1bW4scj1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxhO2UrKylmb3IobGV0IGE9MDthPG47YSsrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsYSkscil9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsbixhPW4pe2NvbnN0IHI9ZS5sZW5ndGgtMTtsZXQgcz1hPG4/YTpuO2lmKG4+PXIpcmV0dXJuIG51bGw7Y29uc3QgaT10LmdldFVpbnQxNihuKTtpZihpPj02NTQ3MiYmaTw9NjU1MzQpcmV0dXJue2ludmFsaWQ6bnVsbCxtYXJrZXI6aSxvZmZzZXQ6bn07bGV0IG89dC5nZXRVaW50MTYocyk7Zm9yKDshKG8+PTY1NDcyJiZvPD02NTUzNCk7KXtpZigrK3M+PXIpcmV0dXJuIG51bGw7bz10LmdldFVpbnQxNihzKX1yZXR1cm57aW52YWxpZDppLnRvU3RyaW5nKDE2KSxtYXJrZXI6byxvZmZzZXQ6c319ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksbj1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCBhIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgcj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqYS5oL2UubWF4SCkscz1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKmEudi9lLm1heFYpLGk9dCphLmgsbz02NCoobiphLnYpKihpKzEpO2EuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO2EuYmxvY2tzUGVyTGluZT1yO2EuYmxvY2tzUGVyQ29sdW1uPXN9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1ufWZ1bmN0aW9uIHJlYWREYXRhQmxvY2soZSx0LG4pe2NvbnN0IGE9dC5nZXRVaW50MTYobik7bGV0IHI9KG4rPTIpK2EtMjtjb25zdCBzPWZpbmROZXh0RmlsZU1hcmtlcihlLHQscixuKTtpZihzPy5pbnZhbGlkKXt3YXJuKCJyZWFkRGF0YUJsb2NrIC0gaW5jb3JyZWN0IGxlbmd0aCwgY3VycmVudCBtYXJrZXIgaXM6ICIrcy5pbnZhbGlkKTtyPXMub2Zmc2V0fWNvbnN0IGk9ZS5zdWJhcnJheShuLHIpO3JldHVybnthcHBEYXRhOmksb2xkT2Zmc2V0Om4sbmV3T2Zmc2V0Om4raS5sZW5ndGh9fWZ1bmN0aW9uIHNraXBEYXRhKGUsdCxuKXtjb25zdCBhPXQuZ2V0VWludDE2KG4pLHI9KG4rPTIpK2EtMixzPWZpbmROZXh0RmlsZU1hcmtlcihlLHQscixuKTtyZXR1cm4gcz8uaW52YWxpZD9zLm9mZnNldDpyfWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1zdGF0aWMgY2FuVXNlSW1hZ2VEZWNvZGVyKGUsdD0tMSl7Y29uc3Qgbj1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7bGV0IGE9bnVsbCxyPTAscz1udWxsLGk9bi5nZXRVaW50MTYocik7cis9MjtpZig2NTQ5NiE9PWkpdGhyb3cgbmV3IEpwZWdFcnJvcigiU09JIG5vdCBmb3VuZCIpO2k9bi5nZXRVaW50MTYocik7cis9MjtlOmZvcig7NjU0OTchPT1pOyl7c3dpdGNoKGkpe2Nhc2UgNjU1MDU6Y29uc3R7YXBwRGF0YTp0LG9sZE9mZnNldDpvLG5ld09mZnNldDpsfT1yZWFkRGF0YUJsb2NrKGUsbixyKTtyPWw7aWYoNjk9PT10WzBdJiYxMjA9PT10WzFdJiYxMDU9PT10WzJdJiYxMDI9PT10WzNdJiYwPT09dFs0XSYmMD09PXRbNV0pe2lmKGEpdGhyb3cgbmV3IEpwZWdFcnJvcigiRHVwbGljYXRlIEVYSUYtYmxvY2tzIGZvdW5kLiIpO2E9e2V4aWZTdGFydDpvKzYsZXhpZkVuZDpsfX1pPW4uZ2V0VWludDE2KHIpO3IrPTI7Y29udGludWU7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6cz1lW3IrN107YnJlYWsgZTtjYXNlIDY1NTM1OjI1NSE9PWVbcl0mJnItLX1yPXNraXBEYXRhKGUsbixyKTtpPW4uZ2V0VWludDE2KHIpO3IrPTJ9cmV0dXJuIDQ9PT1zfHwzPT09cyYmMD09PXQ/bnVsbDphfHx7fX1wYXJzZShlLHtkbmxTY2FuTGluZXM6dD1udWxsfT17fSl7Y29uc3Qgbj1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCksYT1lLmxlbmd0aC0xO2xldCByLHMsaT0wLG89bnVsbCxsPW51bGwsZj0wO2NvbnN0IGM9W10saD1bXSx1PVtdO2xldCBtPW4uZ2V0VWludDE2KGkpO2krPTI7aWYoNjU0OTYhPT1tKXRocm93IG5ldyBKcGVnRXJyb3IoIlNPSSBub3QgZm91bmQiKTttPW4uZ2V0VWludDE2KGkpO2krPTI7ZTpmb3IoOzY1NDk3IT09bTspe2xldCBwLGQsZztzd2l0Y2gobSl7Y2FzZSA2NTUwNDpjYXNlIDY1NTA1OmNhc2UgNjU1MDY6Y2FzZSA2NTUwNzpjYXNlIDY1NTA4OmNhc2UgNjU1MDk6Y2FzZSA2NTUxMDpjYXNlIDY1NTExOmNhc2UgNjU1MTI6Y2FzZSA2NTUxMzpjYXNlIDY1NTE0OmNhc2UgNjU1MTU6Y2FzZSA2NTUxNjpjYXNlIDY1NTE3OmNhc2UgNjU1MTg6Y2FzZSA2NTUxOTpjYXNlIDY1NTM0OmNvbnN0e2FwcERhdGE6YixuZXdPZmZzZXQ6d309cmVhZERhdGFCbG9jayhlLG4saSk7aT13OzY1NTA0PT09bSYmNzQ9PT1iWzBdJiY3MD09PWJbMV0mJjczPT09YlsyXSYmNzA9PT1iWzNdJiYwPT09Yls0XSYmKG89e3ZlcnNpb246e21ham9yOmJbNV0sbWlub3I6Yls2XX0sZGVuc2l0eVVuaXRzOmJbN10seERlbnNpdHk6Yls4XTw8OHxiWzldLHlEZW5zaXR5OmJbMTBdPDw4fGJbMTFdLHRodW1iV2lkdGg6YlsxMl0sdGh1bWJIZWlnaHQ6YlsxM10sdGh1bWJEYXRhOmIuc3ViYXJyYXkoMTQsMTQrMypiWzEyXSpiWzEzXSl9KTs2NTUxOD09PW0mJjY1PT09YlswXSYmMTAwPT09YlsxXSYmMTExPT09YlsyXSYmOTg9PT1iWzNdJiYxMDE9PT1iWzRdJiYobD17dmVyc2lvbjpiWzVdPDw4fGJbNl0sZmxhZ3MwOmJbN108PDh8Yls4XSxmbGFnczE6Yls5XTw8OHxiWzEwXSx0cmFuc2Zvcm1Db2RlOmJbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBqPW4uZ2V0VWludDE2KGkpO2krPTI7Y29uc3Qgaz1qK2ktMjtsZXQgeTtmb3IoO2k8azspe2NvbnN0IHQ9ZVtpKytdLGE9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40KXtpZih0Pj40IT0xKXRocm93IG5ldyBKcGVnRXJyb3IoIkRRVCAtIGludmFsaWQgdGFibGUgc3BlYyIpO2ZvcihkPTA7ZDw2NDtkKyspe3k9UG5bZF07YVt5XT1uLmdldFVpbnQxNihpKTtpKz0yfX1lbHNlIGZvcihkPTA7ZDw2NDtkKyspe3k9UG5bZF07YVt5XT1lW2krK119Y1sxNSZ0XT1hfWJyZWFrO2Nhc2UgNjU0NzI6Y2FzZSA2NTQ3MzpjYXNlIDY1NDc0OmlmKHIpdGhyb3cgbmV3IEpwZWdFcnJvcigiT25seSBzaW5nbGUgZnJhbWUgSlBFR3Mgc3VwcG9ydGVkIik7aSs9MjtyPXt9O3IuZXh0ZW5kZWQ9NjU0NzM9PT1tO3IucHJvZ3Jlc3NpdmU9NjU0NzQ9PT1tO3IucHJlY2lzaW9uPWVbaSsrXTtjb25zdCBxPW4uZ2V0VWludDE2KGkpO2krPTI7ci5zY2FuTGluZXM9dHx8cTtyLnNhbXBsZXNQZXJMaW5lPW4uZ2V0VWludDE2KGkpO2krPTI7ci5jb21wb25lbnRzPVtdO3IuY29tcG9uZW50SWRzPXt9O2NvbnN0IHY9ZVtpKytdO2xldCBTPTAseD0wO2ZvcihwPTA7cDx2O3ArKyl7Y29uc3QgdD1lW2ldLG49ZVtpKzFdPj40LGE9MTUmZVtpKzFdO1M8biYmKFM9bik7eDxhJiYoeD1hKTtjb25zdCBzPWVbaSsyXTtnPXIuY29tcG9uZW50cy5wdXNoKHtoOm4sdjphLHF1YW50aXphdGlvbklkOnMscXVhbnRpemF0aW9uVGFibGU6bnVsbH0pO3IuY29tcG9uZW50SWRzW3RdPWctMTtpKz0zfXIubWF4SD1TO3IubWF4Vj14O3ByZXBhcmVDb21wb25lbnRzKHIpO2JyZWFrO2Nhc2UgNjU0NzY6Y29uc3QgQz1uLmdldFVpbnQxNihpKTtpKz0yO2ZvcihwPTI7cDxDOyl7Y29uc3QgdD1lW2krK10sbj1uZXcgVWludDhBcnJheSgxNik7bGV0IGE9MDtmb3IoZD0wO2Q8MTY7ZCsrLGkrKylhKz1uW2RdPWVbaV07Y29uc3Qgcj1uZXcgVWludDhBcnJheShhKTtmb3IoZD0wO2Q8YTtkKyssaSsrKXJbZF09ZVtpXTtwKz0xNythOyh0Pj40P2g6dSlbMTUmdF09YnVpbGRIdWZmbWFuVGFibGUobixyKX1icmVhaztjYXNlIDY1NTAxOmkrPTI7cz1uLmdldFVpbnQxNihpKTtpKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3QgVD0xPT09KytmJiYhdDtpKz0yO2NvbnN0IE89ZVtpKytdLFI9W107Zm9yKHA9MDtwPE87cCsrKXtjb25zdCB0PWVbaSsrXSxuPXIuY29tcG9uZW50SWRzW3RdLGE9ci5jb21wb25lbnRzW25dO2EuaW5kZXg9dDtjb25zdCBzPWVbaSsrXTthLmh1ZmZtYW5UYWJsZURDPXVbcz4+NF07YS5odWZmbWFuVGFibGVBQz1oWzE1JnNdO1IucHVzaChhKX1jb25zdCBEPWVbaSsrXSxIPWVbaSsrXSxNPWVbaSsrXTt0cnl7aSs9ZGVjb2RlU2NhbihlLG4saSxyLFIscyxELEgsTT4+NCwxNSZNLFQpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBETkxNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGF0dGVtcHRpbmcgdG8gcmUtcGFyc2UgdGhlIEpQRUcgaW1hZ2UuYCk7cmV0dXJuIHRoaXMucGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQuc2NhbkxpbmVzfSl9aWYodCBpbnN0YW5jZW9mIEVPSU1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gaWdub3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGltYWdlIGRhdGEuYCk7YnJlYWsgZX10aHJvdyB0fWJyZWFrO2Nhc2UgNjU1MDA6aSs9NDticmVhaztjYXNlIDY1NTM1OjI1NSE9PWVbaV0mJmktLTticmVhaztkZWZhdWx0OmNvbnN0IE49ZmluZE5leHRGaWxlTWFya2VyKGUsbixpLTIsaS0zKTtpZihOPy5pbnZhbGlkKXt3YXJuKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK04uaW52YWxpZCk7aT1OLm9mZnNldDticmVha31pZighTnx8aT49YSl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIGV9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrbS50b1N0cmluZygxNikpfWlmKGk8YSl7bT1uLmdldFVpbnQxNihpKTtpKz0yfWVsc2UgbT0wfWlmKCFyKXRocm93IG5ldyBKcGVnRXJyb3IoIkpwZWdJbWFnZS5wYXJzZSAtIG5vIGZyYW1lIGRhdGEgZm91bmQuIik7dGhpcy53aWR0aD1yLnNhbXBsZXNQZXJMaW5lO3RoaXMuaGVpZ2h0PXIuc2NhbkxpbmVzO3RoaXMuamZpZj1vO3RoaXMuYWRvYmU9bDt0aGlzLmNvbXBvbmVudHM9W107Zm9yKGNvbnN0IGUgb2Ygci5jb21wb25lbnRzKXtjb25zdCB0PWNbZS5xdWFudGl6YXRpb25JZF07dCYmKGUucXVhbnRpemF0aW9uVGFibGU9dCk7dGhpcy5jb21wb25lbnRzLnB1c2goe2luZGV4OmUuaW5kZXgsb3V0cHV0OmJ1aWxkQ29tcG9uZW50RGF0YSgwLGUpLHNjYWxlWDplLmgvci5tYXhILHNjYWxlWTplLnYvci5tYXhWLGJsb2Nrc1BlckxpbmU6ZS5ibG9ja3NQZXJMaW5lLGJsb2Nrc1BlckNvbHVtbjplLmJsb2Nrc1BlckNvbHVtbn0pfXRoaXMubnVtQ29tcG9uZW50cz10aGlzLmNvbXBvbmVudHMubGVuZ3RofSNFKGUsdCxuKXtjb25zdCBhPXRoaXMud2lkdGgvZSxyPXRoaXMuaGVpZ2h0L3Q7bGV0IHMsaSxvLGwsZixjLGgsdSxtLHAsZCxnPTA7Y29uc3QgYj10aGlzLmNvbXBvbmVudHMubGVuZ3RoLHc9ZSp0KmIsaj1uZXcgVWludDhDbGFtcGVkQXJyYXkodyksaz1uZXcgVWludDMyQXJyYXkoZSkseT00Mjk0OTY3Mjg4O2xldCBxO2ZvcihoPTA7aDxiO2grKyl7cz10aGlzLmNvbXBvbmVudHNbaF07aT1zLnNjYWxlWCphO289cy5zY2FsZVkqcjtnPWg7ZD1zLm91dHB1dDtsPXMuYmxvY2tzUGVyTGluZSsxPDwzO2lmKGkhPT1xKXtmb3IoZj0wO2Y8ZTtmKyspe3U9MHxmKmk7a1tmXT0odSZ5KTw8M3w3JnV9cT1pfWZvcihjPTA7Yzx0O2MrKyl7dT0wfGMqbztwPWwqKHUmeSl8KDcmdSk8PDM7Zm9yKGY9MDtmPGU7ZisrKXtqW2ddPWRbcCtrW2ZdXTtnKz1ifX19bGV0IHY9dGhpcy5fZGVjb2RlVHJhbnNmb3JtO2lmKHYpZm9yKGg9MDtoPHc7KWZvcih1PTAsbT0wO3U8Yjt1KyssaCsrLG0rPTIpaltoXT0oaltoXSp2W21dPj44KSt2W20rMV07cmV0dXJuIGp9Z2V0IF9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCgpe3JldHVybiB0aGlzLmFkb2JlPyEhdGhpcy5hZG9iZS50cmFuc2Zvcm1Db2RlOjM9PT10aGlzLm51bUNvbXBvbmVudHM/MCE9PXRoaXMuX2NvbG9yVHJhbnNmb3JtJiYoODIhPT10aGlzLmNvbXBvbmVudHNbMF0uaW5kZXh8fDcxIT09dGhpcy5jb21wb25lbnRzWzFdLmluZGV4fHw2NiE9PXRoaXMuY29tcG9uZW50c1syXS5pbmRleCk6MT09PXRoaXMuX2NvbG9yVHJhbnNmb3JtfV9jb252ZXJ0WWNjVG9SZ2IoZSl7bGV0IHQsbixhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTMpe3Q9ZVtyXTtuPWVbcisxXTthPWVbcisyXTtlW3JdPXQtMTc5LjQ1NisxLjQwMiphO2VbcisxXT10KzEzNS40NTktLjM0NCpuLS43MTQqYTtlW3IrMl09dC0yMjYuODE2KzEuNzcyKm59cmV0dXJuIGV9X2NvbnZlcnRZY2NUb1JnYmEoZSx0KXtmb3IobGV0IG49MCxhPTAscj1lLmxlbmd0aDtuPHI7bis9MyxhKz00KXtjb25zdCByPWVbbl0scz1lW24rMV0saT1lW24rMl07dFthXT1yLTE3OS40NTYrMS40MDIqaTt0W2ErMV09cisxMzUuNDU5LS4zNDQqcy0uNzE0Kmk7dFthKzJdPXItMjI2LjgxNisxLjc3MipzO3RbYSszXT0yNTV9cmV0dXJuIHR9X2NvbnZlcnRZY2NrVG9SZ2IoZSl7dGhpcy5fY29udmVydFljY2tUb0NteWsoZSk7cmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2IoZSl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe3RoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGUpO3JldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiYShlKX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsbixhO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrPTQpe3Q9ZVtyXTtuPWVbcisxXTthPWVbcisyXTtlW3JdPTQzNC40NTYtdC0xLjQwMiphO2VbcisxXT0xMTkuNTQxLXQrLjM0NCpuKy43MTQqYTtlW3IrMl09NDgxLjgxNi10LTEuNzcyKm59cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7Y29uc3QgdD1lLmxlbmd0aC80O0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkJ1ZmZlcihlLDAsdCxlLDAsOCwwKTtyZXR1cm4gZS5zdWJhcnJheSgwLDMqdCl9X2NvbnZlcnRDbXlrVG9SZ2JhKGUpe0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkJ1ZmZlcihlLDAsZS5sZW5ndGgvNCxlLDAsOCwxKTtpZihDb2xvclNwYWNlVXRpbHMuY215ayBpbnN0YW5jZW9mIERldmljZUNteWtDUylmb3IobGV0IHQ9MyxuPWUubGVuZ3RoO3Q8bjt0Kz00KWVbdF09MjU1O3JldHVybiBlfWdldERhdGEoe3dpZHRoOmUsaGVpZ2h0OnQsZm9yY2VSR0JBOm49ITEsZm9yY2VSR0I6YT0hMSxpc1NvdXJjZVBERjpyPSEwfSl7aWYodGhpcy5udW1Db21wb25lbnRzPjQpdGhyb3cgbmV3IEpwZWdFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgbW9kZSIpO2NvbnN0IHM9dGhpcy4jRShlLHQscik7aWYoMT09PXRoaXMubnVtQ29tcG9uZW50cyYmKG58fGEpKXtjb25zdCBlPXMubGVuZ3RoKihuPzQ6MyksdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7bGV0IGE9MDtpZihuKSFmdW5jdGlvbiBncmF5VG9SR0JBKGUsdCl7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXRbbl09NjU3OTMqZVtuXXw0Mjc4MTkwMDgwO2Vsc2UgZm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXRbbl09MTY4NDMwMDgqZVtuXXwyNTV9KHMsbmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKSk7ZWxzZSBmb3IoY29uc3QgZSBvZiBzKXt0W2ErK109ZTt0W2ErK109ZTt0W2ErK109ZX1yZXR1cm4gdH1pZigzPT09dGhpcy5udW1Db21wb25lbnRzJiZ0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCl7aWYobil7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkocy5sZW5ndGgvMyo0KTtyZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiYShzLGUpfXJldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2Iocyl9aWYoND09PXRoaXMubnVtQ29tcG9uZW50cyl7aWYodGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIG4/dGhpcy5fY29udmVydFljY2tUb1JnYmEocyk6YT90aGlzLl9jb252ZXJ0WWNja1RvUmdiKHMpOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKHMpO2lmKG4pcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2JhKHMpO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iocyl9cmV0dXJuIHN9fWNsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17c3RhdGljI009RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9bn1zdGF0aWMgZ2V0IGNhblVzZUltYWdlRGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiY2FuVXNlSW1hZ2VEZWNvZGVyIix0aGlzLiNNP0ltYWdlRGVjb2Rlci5pc1R5cGVTdXBwb3J0ZWQoImltYWdlL2pwZWciKTpQcm9taXNlLnJlc29sdmUoITEpKX1zdGF0aWMgc2V0T3B0aW9ucyh7aXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6ZT0hMX0pe3RoaXMuI009ZX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt0aGlzLmRlY29kZUltYWdlKCl9Z2V0IGpwZWdPcHRpb25zKCl7Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYoKHRoaXMuZm9yY2VSR0JBfHx0aGlzLmZvcmNlUkdCKSYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3Qgbj10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsYT10Lmxlbmd0aCxyPW5ldyBJbnQzMkFycmF5KGEpO2xldCBzPSExO2NvbnN0IGk9KDE8PG4pLTE7Zm9yKGxldCBlPTA7ZTxhO2UrPTIpe3JbZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtyW2UrMV09dFtlXSppfDA7MjU2PT09cltlXSYmMD09PXJbZSsxXXx8KHM9ITApfXMmJihlLmRlY29kZVRyYW5zZm9ybT1yKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9dGhpcy5wYXJhbXMuZ2V0KCJDb2xvclRyYW5zZm9ybSIpO051bWJlci5pc0ludGVnZXIodCkmJihlLmNvbG9yVHJhbnNmb3JtPXQpfXJldHVybiBzaGFkb3codGhpcywianBlZ09wdGlvbnMiLGUpfSN6KGUpe2ZvcihsZXQgdD0wLG49ZS5sZW5ndGgtMTt0PG47dCsrKWlmKDI1NT09PWVbdF0mJjIxNj09PWVbdCsxXSl7dD4wJiYoZT1lLnN1YmFycmF5KHQpKTticmVha31yZXR1cm4gZX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZT10aGlzLiN6KGV8fHRoaXMuYnl0ZXMpO2NvbnN0IHQ9bmV3IEpwZWdJbWFnZSh0aGlzLmpwZWdPcHRpb25zKTt0LnBhcnNlKGUpO2NvbnN0IG49dC5nZXREYXRhKHt3aWR0aDp0aGlzLmRyYXdXaWR0aCxoZWlnaHQ6dGhpcy5kcmF3SGVpZ2h0LGZvcmNlUkdCQTp0aGlzLmZvcmNlUkdCQSxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCfSk7dGhpcy5idWZmZXI9bjt0aGlzLmJ1ZmZlckxlbmd0aD1uLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9YXN5bmMgZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKXtpZighYXdhaXQgSnBlZ1N0cmVhbS5jYW5Vc2VJbWFnZURlY29kZXIpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmpwZWdPcHRpb25zO2lmKGUuZGVjb2RlVHJhbnNmb3JtKXJldHVybiBudWxsO2xldCB0O3RyeXtjb25zdCBuPXRoaXMuY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXImJmF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKXx8dGhpcy5ieXRlcztpZighbilyZXR1cm4gbnVsbDtsZXQgYT10aGlzLiN6KG4pO2NvbnN0IHI9SnBlZ0ltYWdlLmNhblVzZUltYWdlRGVjb2RlcihhLGUuY29sb3JUcmFuc2Zvcm0pO2lmKCFyKXJldHVybiBudWxsO2lmKHIuZXhpZlN0YXJ0KXthPWEuc2xpY2UoKTthLmZpbGwoMCxyLmV4aWZTdGFydCxyLmV4aWZFbmQpfXQ9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTphLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX0pO3JldHVybihhd2FpdCB0LmRlY29kZSgpKS5pbWFnZX1jYXRjaChlKXt3YXJuKGBnZXRUcmFuc2ZlcmFibGVJbWFnZSAtIGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7dD8uY2xvc2UoKX19Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMH19ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LG4sYSxyKXtsZXQgcz1lO2ZvcihsZXQgZT0wLG49dC5sZW5ndGgtMTtlPG47ZSsrKXtjb25zdCBuPXRbZV07cz1zW25dfHw9W119c1t0LmF0KC0xKV09e2NoZWNrRm46bixpdGVyYXRlRm46YSxwcm9jZXNzRm46cn19Y29uc3QgR249W107YWRkU3RhdGUoR24sW1NlLHhlLFd0LEFlXSxudWxsLGZ1bmN0aW9uIGl0ZXJhdGVJbmxpbmVJbWFnZUdyb3VwKGUsdCl7Y29uc3Qgbj1lLmZuQXJyYXksYT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBuW3RdPT09U2U7Y2FzZSAxOnJldHVybiBuW3RdPT09eGU7Y2FzZSAyOnJldHVybiBuW3RdPT09V3Q7Y2FzZSAzOnJldHVybiBuW3RdPT09QWV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9LGZ1bmN0aW9uIGZvdW5kSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IG49ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLGk9ci0yLG89ci0xLGw9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwyMDApO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgZj0wO2NvbnN0IGM9W107bGV0IGg9MCx1PTEsbT0xO2ZvcihsZXQgZT0wO2U8bDtlKyspe2NvbnN0IHQ9YVtpKyhlPDwyKV0sbj1hW28rKGU8PDIpXVswXTtpZih1K24ud2lkdGg+MWUzKXtmPU1hdGgubWF4KGYsdSk7bSs9aCsyO3U9MDtoPTB9Yy5wdXNoKHt0cmFuc2Zvcm06dCx4OnUseTptLHc6bi53aWR0aCxoOm4uaGVpZ2h0fSk7dSs9bi53aWR0aCsyO2g9TWF0aC5tYXgoaCxuLmhlaWdodCl9Y29uc3QgcD1NYXRoLm1heChmLHUpKzEsZD1tK2grMSxnPW5ldyBVaW50OEFycmF5KHAqZCo0KSxiPXA8PDI7Zm9yKGxldCBlPTA7ZTxsO2UrKyl7Y29uc3QgdD1hW28rKGU8PDIpXVswXS5kYXRhLG49Y1tlXS53PDwyO2xldCByPTAscz1jW2VdLngrY1tlXS55KnA8PDI7Zy5zZXQodC5zdWJhcnJheSgwLG4pLHMtYik7Zm9yKGxldCBhPTAsaT1jW2VdLmg7YTxpO2ErKyl7Zy5zZXQodC5zdWJhcnJheShyLHIrbikscyk7cis9bjtzKz1ifWcuc2V0KHQuc3ViYXJyYXkoci1uLHIpLHMpO2Zvcig7cz49MDspe3Rbcy00XT10W3NdO3Rbcy0zXT10W3MrMV07dFtzLTJdPXRbcysyXTt0W3MtMV09dFtzKzNdO3RbcytuXT10W3Mrbi00XTt0W3MrbisxXT10W3Mrbi0zXTt0W3MrbisyXT10W3Mrbi0yXTt0W3MrbiszXT10W3Mrbi0xXTtzLT1ifX1jb25zdCB3PXt3aWR0aDpwLGhlaWdodDpkfTtpZihlLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMocCxkKTtlLmdldENvbnRleHQoIjJkIikucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGcuYnVmZmVyKSxwLGQpLDAsMCk7dy5iaXRtYXA9ZS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTt3LmRhdGE9bnVsbH1lbHNle3cua2luZD1EO3cuZGF0YT1nfW4uc3BsaWNlKHMsNCpsLFh0KTthLnNwbGljZShzLDQqbCxbdyxjXSk7cmV0dXJuIHMrMX0pO2FkZFN0YXRlKEduLFtTZSx4ZSx6dCxBZV0sbnVsbCxmdW5jdGlvbiBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBuPWUuZm5BcnJheSxhPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIG5bdF09PT1TZTtjYXNlIDE6cmV0dXJuIG5bdF09PT14ZTtjYXNlIDI6cmV0dXJuIG5bdF09PT16dDtjYXNlIDM6cmV0dXJuIG5bdF09PT1BZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZU1hc2tHcm91cCAtIGludmFsaWQgcG9zOiAke2F9YCl9LGZ1bmN0aW9uIGZvdW5kSW1hZ2VNYXNrR3JvdXAoZSx0KXtjb25zdCBuPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxpPXItMixvPXItMTtsZXQgbD1NYXRoLmZsb29yKCh0LXMpLzQpO2lmKGw8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgZixjLGg9ITE7Y29uc3QgdT1hW29dWzBdLG09YVtpXVswXSxwPWFbaV1bMV0sZD1hW2ldWzJdLGc9YVtpXVszXTtpZihwPT09ZCl7aD0hMDtmPWkrNDtsZXQgZT1vKzQ7Zm9yKGxldCB0PTE7dDxsO3QrKyxmKz00LGUrPTQpe2M9YVtmXTtpZihhW2VdWzBdIT09dXx8Y1swXSE9PW18fGNbMV0hPT1wfHxjWzJdIT09ZHx8Y1szXSE9PWcpe3Q8MTA/aD0hMTpsPXQ7YnJlYWt9fX1pZihoKXtsPU1hdGgubWluKGwsMWUzKTtjb25zdCBlPW5ldyBGbG9hdDMyQXJyYXkoMipsKTtmPWk7Zm9yKGxldCB0PTA7dDxsO3QrKyxmKz00KXtjPWFbZl07ZVt0PDwxXT1jWzRdO2VbMSsodDw8MSldPWNbNV19bi5zcGxpY2Uocyw0KmwsR3QpO2Euc3BsaWNlKHMsNCpsLFt1LG0scCxkLGcsZV0pfWVsc2V7bD1NYXRoLm1pbihsLDEwMCk7Y29uc3QgZT1bXTtmb3IobGV0IHQ9MDt0PGw7dCsrKXtjPWFbaSsodDw8MildO2NvbnN0IG49YVtvKyh0PDwyKV1bMF07ZS5wdXNoKHtkYXRhOm4uZGF0YSx3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCxpbnRlcnBvbGF0ZTpuLmludGVycG9sYXRlLGNvdW50Om4uY291bnQsdHJhbnNmb3JtOmN9KX1uLnNwbGljZShzLDQqbCxMdCk7YS5zcGxpY2Uocyw0KmwsW2VdKX1yZXR1cm4gcysxfSk7YWRkU3RhdGUoR24sW1NlLHhlLFV0LEFlXSxmdW5jdGlvbihlKXtjb25zdCB0PWUuYXJnc0FycmF5LG49ZS5pQ3Vyci0yO3JldHVybiAwPT09dFtuXVsxXSYmMD09PXRbbl1bMl19LGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZUdyb3VwKGUsdCl7Y29uc3Qgbj1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPSh0LShlLmlDdXJyLTMpKSU0O3N3aXRjaChyKXtjYXNlIDA6cmV0dXJuIG5bdF09PT1TZTtjYXNlIDE6aWYoblt0XSE9PXhlKXJldHVybiExO2NvbnN0IHI9ZS5pQ3Vyci0yLHM9YVtyXVswXSxpPWFbcl1bM107cmV0dXJuIGFbdF1bMF09PT1zJiYwPT09YVt0XVsxXSYmMD09PWFbdF1bMl0mJmFbdF1bM109PT1pO2Nhc2UgMjppZihuW3RdIT09VXQpcmV0dXJuITE7Y29uc3Qgbz1hW2UuaUN1cnItMV1bMF07cmV0dXJuIGFbdF1bMF09PT1vO2Nhc2UgMzpyZXR1cm4gblt0XT09PUFlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSxmdW5jdGlvbihlLHQpe2NvbnN0IG49ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLGk9ci0yLG89YVtyLTFdWzBdLGw9YVtpXVswXSxmPWFbaV1bM10sYz1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzQpLDFlMyk7aWYoYzwzKXJldHVybiB0LSh0LXMpJTQ7Y29uc3QgaD1uZXcgRmxvYXQzMkFycmF5KDIqYyk7bGV0IHU9aTtmb3IobGV0IGU9MDtlPGM7ZSsrLHUrPTQpe2NvbnN0IHQ9YVt1XTtoW2U8PDFdPXRbNF07aFsxKyhlPDwxKV09dFs1XX1jb25zdCBtPVtvLGwsZixoXTtuLnNwbGljZShzLDQqYyxLdCk7YS5zcGxpY2Uocyw0KmMsbSk7cmV0dXJuIHMrMX0pO2FkZFN0YXRlKEduLFtYZSxKZSxudCxzdCxLZV0sbnVsbCxmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IG49ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBuW3RdPT09WGU7Y2FzZSAxOnJldHVybiBuW3RdPT09SmU7Y2FzZSAyOnJldHVybiBuW3RdPT09bnQ7Y2FzZSAzOmlmKG5bdF0hPT1zdClyZXR1cm4hMTtjb25zdCByPWUuaUN1cnItMyxzPWFbcl1bMF0saT1hW3JdWzFdO3JldHVybiBhW3RdWzBdPT09cyYmYVt0XVsxXT09PWk7Y2FzZSA0OnJldHVybiBuW3RdPT09S2V9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlU2hvd1RleHRHcm91cCAtIGludmFsaWQgcG9zOiAke3J9YCl9LGZ1bmN0aW9uKGUsdCl7Y29uc3Qgbj1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTQsaT1yLTMsbz1yLTIsbD1yLTEsZj1yLGM9YVtpXVswXSxoPWFbaV1bMV07bGV0IHU9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS81KSwxZTMpO2lmKHU8MylyZXR1cm4gdC0odC1zKSU1O2xldCBtPXM7aWYocz49NCYmbltzLTRdPT09bltpXSYmbltzLTNdPT09bltvXSYmbltzLTJdPT09bltsXSYmbltzLTFdPT09bltmXSYmYVtzLTRdWzBdPT09YyYmYVtzLTRdWzFdPT09aCl7dSsrO20tPTV9bGV0IHA9bSs0O2ZvcihsZXQgZT0xO2U8dTtlKyspe24uc3BsaWNlKHAsMyk7YS5zcGxpY2UocCwzKTtwKz0yfXJldHVybiBwKzF9KTthZGRTdGF0ZShHbixbU2UseGUsJHQsQWVdLGU9Pntjb25zdCB0PWUuYXJnc0FycmF5LG49dFtlLmlDdXJyLTFdWzBdO2lmKG4hPT1EZSYmbiE9PUhlJiZuIT09UGUmJm4hPT1fZSYmbiE9PUVlJiZuIT09emUpcmV0dXJuITA7Y29uc3QgYT10W2UuaUN1cnItMl07cmV0dXJuIDE9PT1hWzBdJiYwPT09YVsxXSYmMD09PWFbMl0mJjE9PT1hWzNdfSwoKT0+ITEsKGUsdCk9Pntjb25zdHtmbkFycmF5Om4sYXJnc0FycmF5OmF9PWUscz1lLmlDdXJyLGk9cy0zLG89cy0yLGw9YVtzLTFdLGY9YVtvXSxbLFtjXSxoXT1sO2lmKGgpe2NvbnN0IGU9ci5zbGljZSgpO1V0aWwuYXhpYWxBbGlnbmVkQm91bmRpbmdCb3goaCxmLGUpO2guc2V0KGUpO2ZvcihsZXQgZT0wLHQ9Yy5sZW5ndGg7ZTx0Oylzd2l0Y2goY1tlKytdKXtjYXNlIFp0OmNhc2UgZW46VXRpbC5hcHBseVRyYW5zZm9ybShjLGYsZSk7ZSs9MjticmVhaztjYXNlIHRuOlV0aWwuYXBwbHlUcmFuc2Zvcm1Ub0JlemllcihjLGYsZSk7ZSs9Nn19bi5zcGxpY2UoaSw0LCR0KTthLnNwbGljZShpLDQsbCk7cmV0dXJuIGkrMX0pO2NsYXNzIE51bGxPcHRpbWl6ZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5xdWV1ZT1lfV9vcHRpbWl6ZSgpe31wdXNoKGUsdCl7dGhpcy5xdWV1ZS5mbkFycmF5LnB1c2goZSk7dGhpcy5xdWV1ZS5hcmdzQXJyYXkucHVzaCh0KTt0aGlzLl9vcHRpbWl6ZSgpfWZsdXNoKCl7fXJlc2V0KCl7fX1jbGFzcyBRdWV1ZU9wdGltaXplciBleHRlbmRzIE51bGxPcHRpbWl6ZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5zdGF0ZT1udWxsO3RoaXMuY29udGV4dD17aUN1cnI6MCxmbkFycmF5OmUuZm5BcnJheSxhcmdzQXJyYXk6ZS5hcmdzQXJyYXksaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6T3BlcmF0b3JMaXN0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfTt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9X29wdGltaXplKCl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXk7bGV0IHQ9dGhpcy5sYXN0UHJvY2Vzc2VkLG49ZS5sZW5ndGgsYT10aGlzLnN0YXRlLHI9dGhpcy5tYXRjaDtpZighYSYmIXImJnQrMT09PW4mJiFHbltlW3RdXSl7dGhpcy5sYXN0UHJvY2Vzc2VkPW47cmV0dXJufWNvbnN0IHM9dGhpcy5jb250ZXh0O2Zvcig7dDxuOyl7aWYocil7aWYoKDAsci5pdGVyYXRlRm4pKHMsdCkpe3QrKztjb250aW51ZX10PSgwLHIucHJvY2Vzc0ZuKShzLHQrMSk7bj1lLmxlbmd0aDtyPW51bGw7YT1udWxsO2lmKHQ+PW4pYnJlYWt9YT0oYXx8R24pW2VbdF1dO2lmKGEmJiFBcnJheS5pc0FycmF5KGEpKXtzLmlDdXJyPXQ7dCsrO2lmKCFhLmNoZWNrRm58fCgwLGEuY2hlY2tGbikocykpe3I9YTthPW51bGx9ZWxzZSBhPW51bGx9ZWxzZSB0Kyt9dGhpcy5zdGF0ZT1hO3RoaXMubWF0Y2g9cjt0aGlzLmxhc3RQcm9jZXNzZWQ9dH1mbHVzaCgpe2Zvcig7dGhpcy5tYXRjaDspe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5Lmxlbmd0aDt0aGlzLmxhc3RQcm9jZXNzZWQ9KDAsdGhpcy5tYXRjaC5wcm9jZXNzRm4pKHRoaXMuY29udGV4dCxlKTt0aGlzLm1hdGNoPW51bGw7dGhpcy5zdGF0ZT1udWxsO3RoaXMuX29wdGltaXplKCl9fXJlc2V0KCl7dGhpcy5zdGF0ZT1udWxsO3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH19Y2xhc3MgT3BlcmF0b3JMaXN0e3N0YXRpYyBDSFVOS19TSVpFPTFlMztzdGF0aWMgQ0hVTktfU0laRV9BQk9VVD10aGlzLkNIVU5LX1NJWkUtNTtzdGF0aWMgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ9ITE7Y29uc3RydWN0b3IoZT0wLHQpe3RoaXMuX3N0cmVhbVNpbms9dDt0aGlzLmZuQXJyYXk9W107dGhpcy5hcmdzQXJyYXk9W107dGhpcy5vcHRpbWl6ZXI9IXR8fGUmZD9uZXcgTnVsbE9wdGltaXplcih0aGlzKTpuZXcgUXVldWVPcHRpbWl6ZXIodGhpcyk7dGhpcy5kZXBlbmRlbmNpZXM9bmV3IFNldDt0aGlzLl90b3RhbExlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5fcmVzb2x2ZWQ9dD9udWxsOlByb21pc2UucmVzb2x2ZSgpfXN0YXRpYyBzZXRPcHRpb25zKHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDplfSl7dGhpcy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5hcmdzQXJyYXkubGVuZ3RofWdldCByZWFkeSgpe3JldHVybiB0aGlzLl9yZXNvbHZlZHx8dGhpcy5fc3RyZWFtU2luay5yZWFkeX1nZXQgdG90YWxMZW5ndGgoKXtyZXR1cm4gdGhpcy5fdG90YWxMZW5ndGgrdGhpcy5sZW5ndGh9YWRkT3AoZSx0KXt0aGlzLm9wdGltaXplci5wdXNoKGUsdCk7dGhpcy53ZWlnaHQrKzt0aGlzLl9zdHJlYW1TaW5rJiYodGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFfHx0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkVfQUJPVVQmJihlPT09QWV8fGU9PT1LZSkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LG4sYT0hMSl7aWYoYSl7dGhpcy5hZGRPcChTZSk7dGhpcy5hZGRPcCh2ZSxbW1siU01hc2siLCExXV1dKX12b2lkIDAhPT1uJiZ0aGlzLmFkZE9wKE90LFsiT0MiLG5dKTt0aGlzLmFkZE9wKGUsdCk7dm9pZCAwIT09biYmdGhpcy5hZGRPcChSdCxbXSk7YSYmdGhpcy5hZGRPcChBZSl9YWRkRGVwZW5kZW5jeShlKXtpZighdGhpcy5kZXBlbmRlbmNpZXMuaGFzKGUpKXt0aGlzLmRlcGVuZGVuY2llcy5hZGQoZSk7dGhpcy5hZGRPcChkZSxbZV0pfX1hZGREZXBlbmRlbmNpZXMoZSl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZERlcGVuZGVuY3kodCl9YWRkT3BMaXN0KGUpe2lmKGUgaW5zdGFuY2VvZiBPcGVyYXRvckxpc3Qpe2Zvcihjb25zdCB0IG9mIGUuZGVwZW5kZW5jaWVzKXRoaXMuZGVwZW5kZW5jaWVzLmFkZCh0KTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspdGhpcy5hZGRPcChlLmZuQXJyYXlbdF0sZS5hcmdzQXJyYXlbdF0pfWVsc2Ugd2FybignYWRkT3BMaXN0IC0gaWdub3JpbmcgaW52YWxpZCAib3BMaXN0IiBwYXJhbWV0ZXIuJyl9Z2V0SVIoKXtyZXR1cm57Zm5BcnJheTp0aGlzLmZuQXJyYXksYXJnc0FycmF5OnRoaXMuYXJnc0FycmF5LGxlbmd0aDp0aGlzLmxlbmd0aH19Z2V0IF90cmFuc2ZlcnMoKXtjb25zdCBlPVtdLHtmbkFycmF5OnQsYXJnc0FycmF5Om4sbGVuZ3RoOmF9PXRoaXM7Zm9yKGxldCByPTA7cjxhO3IrKylzd2l0Y2godFtyXSl7Y2FzZSBXdDpjYXNlIFh0OmNhc2UgenQ6e2NvbnN0e2JpdG1hcDp0LGRhdGE6YX09bltyXVswXTsodHx8YT8uYnVmZmVyKSYmZS5wdXNoKHR8fGEuYnVmZmVyKTticmVha31jYXNlICR0Ontjb25zdFssW3RdLGFdPW5bcl07dCYmZS5wdXNoKHQuYnVmZmVyLGEuYnVmZmVyKTticmVha31jYXNlIEh0OmNvbnN0W3QsYV09bltyXTt0JiZlLnB1c2godC5idWZmZXIpO2EmJmUucHVzaChhLmJ1ZmZlcik7YnJlYWs7Y2FzZSBudDplLnB1c2gobltyXVswXS5idWZmZXIpfXJldHVybiBlfWZsdXNoKGU9ITEsdD1udWxsKXt0aGlzLm9wdGltaXplci5mbHVzaCgpO2NvbnN0IG49dGhpcy5sZW5ndGg7dGhpcy5fdG90YWxMZW5ndGgrPW47dGhpcy5fc3RyZWFtU2luay5lbnF1ZXVlKHtmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGFzdENodW5rOmUsc2VwYXJhdGVBbm5vdHM6dCxsZW5ndGg6bn0sMSx0aGlzLl90cmFuc2ZlcnMpO3RoaXMuZGVwZW5kZW5jaWVzLmNsZWFyKCk7dGhpcy5mbkFycmF5Lmxlbmd0aD0wO3RoaXMuYXJnc0FycmF5Lmxlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5vcHRpbWl6ZXIucmVzZXQoKX19Y2xhc3MgQ2hlY2tlZE9wZXJhdG9yTGlzdCBleHRlbmRzIE9wZXJhdG9yTGlzdHtuZWVkc0lzb2xhdGlvbj0hMTtoYXNTb2Z0TWFzaz0hMTthZGRPcChlLHQpe2lmKCF0aGlzLm5lZWRzSXNvbGF0aW9ufHwhdGhpcy5oYXNTb2Z0TWFzaylpZihlPT09TnQpe3RoaXMubmVlZHNJc29sYXRpb258fD10WzBdLm5lZWRzSXNvbGF0aW9uO3RoaXMuaGFzU29mdE1hc2t8fD10WzBdLmhhc1NvZnRNYXNrfWVsc2UgaWYoZT09PXZlKWZvcihjb25zdFtlLG5db2YgdFswXSlpZigiQk0iPT09ZSYmInNvdXJjZS1vdmVyIiE9PW4pdGhpcy5uZWVkc0lzb2xhdGlvbj0hMDtlbHNlIGlmKCJTTWFzayI9PT1lJiYhMSE9PW4pe3RoaXMubmVlZHNJc29sYXRpb249ITA7dGhpcy5oYXNTb2Z0TWFzaz0hMH1zdXBlci5hZGRPcChlLHQpfX1jb25zdCBWbj0xLCRuPTIsWW49MyxKbj00LFFuPTUsWm49NixlYT03O2Z1bmN0aW9uIGdldENvbG9yQ29udmVyc2lvbkJhdGNoU2l6ZShlLHQpe3JldHVybiBNYXRoQ2xhbXAoTWF0aC5mbG9vcig2NTUzNi90KSwxLGUpfWNsYXNzIFBhdHRlcm57c3RhdGljI0w9ITE7Y29uc3RydWN0b3IoKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgUGF0dGVybi4iKX1zdGF0aWMgc2V0T3B0aW9ucyh7aGFzR1BVOmV9KXt0aGlzLiNMPWV9c3RhdGljIHBhcnNlU2hhZGluZyhlLHQsbixhLHIscyl7Y29uc3QgaT1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxvPWkuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobyl7Y2FzZSBWbjpyZXR1cm4gbmV3IEZ1bmN0aW9uQmFzZWRTaGFkaW5nKGksdCxuLGEscixzKTtjYXNlICRuOmNhc2UgWW46cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcoaSx0LG4sYSxyLHMpO2Nhc2UgSm46Y2FzZSBRbjpjYXNlIFpuOmNhc2UgZWE6cmV0dXJuIG5ldyBNZXNoU2hhZGluZyhlLHQsbixhLHIscyk7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuc3VwcG9ydGVkIFNoYWRpbmdUeXBlOiAiK28pfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGUpO3JldHVybiBuZXcgRHVtbXlTaGFkaW5nfX19Y2xhc3MgQmFzZVNoYWRpbmd7c3RhdGljIFNNQUxMX05VTUJFUj0xZS02O2dldElSKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0SVJgIGNhbGxlZC4iKX19Y2xhc3MgUmFkaWFsQXhpYWxTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Y29uc3RydWN0b3IoZSx0LG4sYSxyLHMpe3N1cGVyKCk7dGhpcy5zaGFkaW5nVHlwZT1lLmdldCgiU2hhZGluZ1R5cGUiKTtsZXQgaT0wO3RoaXMuc2hhZGluZ1R5cGU9PT0kbj9pPTQ6dGhpcy5zaGFkaW5nVHlwZT09PVluJiYoaT02KTt0aGlzLmNvb3Jkc0Fycj1lLmdldEFycmF5KCJDb29yZHMiKTtpZighaXNOdW1iZXJBcnJheSh0aGlzLmNvb3Jkc0FycixpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlJhZGlhbEF4aWFsU2hhZGluZzogSW52YWxpZCAvQ29vcmRzIGFycmF5LiIpO2NvbnN0IG89Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOm4scGRmRnVuY3Rpb25GYWN0b3J5OmEsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pO3RoaXMuYmJveD1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgbD0wLGY9MTtjb25zdCBjPWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2lzTnVtYmVyQXJyYXkoYywyKSYmKFtsLGZdPWMpO2xldCBoPSExLHU9ITE7Y29uc3QgbT1lLmdldEFycmF5KCJFeHRlbmQiKTsoZnVuY3Rpb24gaXNCb29sZWFuQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KGU9PiJib29sZWFuIj09dHlwZW9mIGUpfSkobSwyKSYmKFtoLHVdPW0pO3RoaXMuZXh0ZW5kU3RhcnQ9aDt0aGlzLmV4dGVuZEVuZD11O2NvbnN0IHA9ZS5nZXRSYXcoIkZ1bmN0aW9uIiksZD1hLmNyZWF0ZShwLCEwKSxnPTg0MCxiPShmLWwpL2csdz10aGlzLmNvbG9yU3RvcHM9W107aWYobD49Znx8Yjw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdHtudW1Db21wczpqfT1vLGs9bmV3IEZsb2F0MzJBcnJheSgxKSx5PWdldENvbG9yQ29udmVyc2lvbkJhdGNoU2l6ZShnLGopLHE9bmV3IEZsb2F0MzJBcnJheSh5KmopLHY9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDI1MjApO2ZvcihsZXQgZT0wO2U8ZztlKz15KXtjb25zdCB0PU1hdGgubWluKHksZy1lKTtmb3IobGV0IG49MCxhPTA7bjx0O24rKyxhKz1qKXtrWzBdPWwrKGUrbikqYjtkKGssMCxxLGEpfW8uZ2V0UmdiSXRlbXMocSx0LHYsMyplLDApfWxldCBTPTAseD12WzBdLEM9dlsxXSxUPXZbMl07dy5wdXNoKFswLFV0aWwubWFrZUhleENvbG9yKHgsQyxUKV0pO2xldCBPPTEsUj12WzNdLEQ9dls0XSxIPXZbNV0sTT1SLXgrMSxOPUQtQysxLF89SC1UKzEsRT1SLXgtMSx6PUQtQy0xLEw9SC1ULTE7Zm9yKGxldCBlPTI7ZTxnO2UrKyl7Y29uc3QgdD0zKmUsbj12W3RdLGE9dlt0KzFdLHI9dlt0KzJdLHM9ZS1TO009TWF0aC5taW4oTSwobi14KzEpL3MpO049TWF0aC5taW4oTiwoYS1DKzEpL3MpO189TWF0aC5taW4oXywoci1UKzEpL3MpO0U9TWF0aC5tYXgoRSwobi14LTEpL3MpO3o9TWF0aC5tYXgoeiwoYS1DLTEpL3MpO0w9TWF0aC5tYXgoTCwoci1ULTEpL3MpO2lmKCEoRTw9TSYmejw9TiYmTDw9Xykpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoUixELEgpO3cucHVzaChbTy9nLGVdKTtNPW4tUisxO049YS1EKzE7Xz1yLUgrMTtFPW4tUi0xO3o9YS1ELTE7TD1yLUgtMTtTPU87eD1SO0M9RDtUPUh9Tz1lO1I9bjtEPWE7SD1yfXcucHVzaChbMSxVdGlsLm1ha2VIZXhDb2xvcihSLEQsSCldKTtjb25zdCBVPWUuaGFzKCJCYWNrZ3JvdW5kIik/by5nZXRSZ2JIZXgoZS5nZXQoIkJhY2tncm91bmQiKSwwKToidHJhbnNwYXJlbnQiO2lmKCFoKXt3LnVuc2hpZnQoWzAsVV0pO3dbMV1bMF0rPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUn1pZighdSl7dy5hdCgtMSlbMF0tPUJhc2VTaGFkaW5nLlNNQUxMX05VTUJFUjt3LnB1c2goWzEsVV0pfXRoaXMuY29sb3JTdG9wcz13fWdldElSKCl7Y29uc3R7Y29vcmRzQXJyOmUsc2hhZGluZ1R5cGU6dH09dGhpcztsZXQgbixhLHIscyxpO2lmKHQ9PT0kbil7YT1bZVswXSxlWzFdXTtyPVtlWzJdLGVbM11dO3M9bnVsbDtpPW51bGw7bj0iYXhpYWwifWVsc2UgaWYodD09PVluKXthPVtlWzBdLGVbMV1dO3I9W2VbM10sZVs0XV07cz1lWzJdO2k9ZVs1XTtuPSJyYWRpYWwifWVsc2UgdW5yZWFjaGFibGUoYGdldFBhdHRlcm4gdHlwZSB1bmtub3duOiAke3R9YCk7cmV0dXJuWyJSYWRpYWxBeGlhbCIsbix0aGlzLmJib3gsdGhpcy5jb2xvclN0b3BzLGEscixzLGldfX1mdW5jdGlvbiBidWlsZE1lc2hWZXJ0ZXhEYXRhKGUsdCxuKXtsZXQgYT0wO2Zvcihjb25zdCBlIG9mIG4paWYoZS50eXBlPT09dilhKz1lLmNvb3Jkcy5sZW5ndGg7ZWxzZSBpZihlLnR5cGU9PT1TKXtjb25zdCB0PWUudmVydGljZXNQZXJSb3c7YSs9KE1hdGguZmxvb3IoZS5jb29yZHMubGVuZ3RoL3QpLTEpKih0LTEpKjZ9Y29uc3Qgcj1uZXcgRmxvYXQzMkFycmF5KDIqYSkscz1uZXcgVWludDhBcnJheSg0KmEpO2xldCBpPTAsbz0wO2NvbnN0IGFkZFZlcnRleD0obixhKT0+e3JbaSsrXT1lWzIqbl07cltpKytdPWVbMipuKzFdO3NbbysrXT10WzQqYV07c1tvKytdPXRbNCphKzFdO3NbbysrXT10WzQqYSsyXTtvKyt9O2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IHQ9ZS5jb29yZHMsbj1lLmNvbG9ycztpZihlLnR5cGU9PT12KWZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKylhZGRWZXJ0ZXgodFtlXSxuW2VdKTtlbHNlIGlmKGUudHlwZT09PVMpe2NvbnN0IGE9ZS52ZXJ0aWNlc1BlclJvdyxyPU1hdGguZmxvb3IodC5sZW5ndGgvYSktMSxzPWEtMTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtsZXQgcj1lKmE7Zm9yKGxldCBlPTA7ZTxzO2UrKyxyKyspe2FkZFZlcnRleCh0W3JdLG5bcl0pO2FkZFZlcnRleCh0W3IrMV0sbltyKzFdKTthZGRWZXJ0ZXgodFtyK2FdLG5bcithXSk7YWRkVmVydGV4KHRbcithKzFdLG5bcithKzFdKTthZGRWZXJ0ZXgodFtyKzFdLG5bcisxXSk7YWRkVmVydGV4KHRbcithXSxuW3IrYV0pfX19fXJldHVybntwb3NEYXRhOnIsY29sRGF0YTpzLHZlcnRleENvdW50OmF9fWNsYXNzIEZ1bmN0aW9uQmFzZWRTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1BWF9TVEVQX0NPVU5UPTUxMjtjb25zdHJ1Y3RvcihlLHQsbixyLHMsaSl7c3VwZXIoKTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCk7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmUuZ2V0UmF3KCJDUyIpfHxlLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6bixwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSk7dGhpcy5iYWNrZ3JvdW5kPWUuaGFzKCJCYWNrZ3JvdW5kIik/by5nZXRSZ2IoZS5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IGw9ZS5nZXRSYXcoIkZ1bmN0aW9uIik7aWYoIWwpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGdW5jdGlvbkJhc2VkU2hhZGluZzogbWlzc2luZyAvRnVuY3Rpb24iKTtjb25zdCBmPXIuY3JlYXRlKGwsITApLFtjLGgsdSxtXT1sb29rdXBSZWN0KGUuZ2V0QXJyYXkoIkRvbWFpbiIpLFswLDEsMCwxXSkscD1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4Iiksa24pO3RoaXMuYm91bmRzPWEuc2xpY2UoKTtVdGlsLmF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KFtjLHUsaCxtXSxwLHRoaXMuYm91bmRzKTtjb25zdCBkPXRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdLGc9dGhpcy5ib3VuZHNbM10tdGhpcy5ib3VuZHNbMV0sYj1NYXRoQ2xhbXAoTWF0aC5jZWlsKGQpLDEsRnVuY3Rpb25CYXNlZFNoYWRpbmcuTUFYX1NURVBfQ09VTlQpLHc9TWF0aENsYW1wKE1hdGguY2VpbChnKSwxLEZ1bmN0aW9uQmFzZWRTaGFkaW5nLk1BWF9TVEVQX0NPVU5UKSxqPWIrMSxrPSh3KzEpKmoseT10aGlzLmNvb3Jkcz1uZXcgRmxvYXQzMkFycmF5KDIqaykscT10aGlzLmNvbG9ycz1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCprKSx7bnVtQ29tcHM6dn09byx4PW5ldyBGbG9hdDMyQXJyYXkoMiksQz1nZXRDb2xvckNvbnZlcnNpb25CYXRjaFNpemUoayx2KSxUPW5ldyBGbG9hdDMyQXJyYXkoQyp2KSxPPShoLWMpL2IsUj0obS11KS93LEQ9Ty8yLEg9Ui8yO2xldCBNPTAsTj0wLF89MCxFPTA7Zm9yKGxldCBlPTA7ZTw9dztlKyspe2NvbnN0IHQ9dStSKmU7eFsxXT1lPT09dz90LUg6dDtmb3IobGV0IGU9MDtlPD1iO2UrKyl7Y29uc3Qgbj1jK08qZTt4WzBdPWU9PT1iP24tRDpuO2YoeCwwLFQsTik7Tis9djtfKys7eVtNXT1uO3lbTSsxXT10O1V0aWwuYXBwbHlUcmFuc2Zvcm0oeSxwLE0pO00rPTI7aWYoXz09PUMpe28uZ2V0UmdiSXRlbXMoVCxfLHEsRSwxKTtFKz00Kl87Tj1fPTB9fX1fPjAmJm8uZ2V0UmdiSXRlbXMoVCxfLHEsRSwxKTtjb25zdCB6PW5ldyBVaW50MzJBcnJheShrKTtmb3IobGV0IGU9MDtlPGs7ZSsrKXpbZV09ZTt0aGlzLmZpZ3VyZXM9W3t0eXBlOlMsY29vcmRzOnosY29sb3JzOm5ldyBVaW50MzJBcnJheSh6KSx2ZXJ0aWNlc1BlclJvdzpqfV19Z2V0SVIoKXtjb25zdHtwb3NEYXRhOmUsY29sRGF0YTp0LHZlcnRleENvdW50Om59PWJ1aWxkTWVzaFZlcnRleERhdGEodGhpcy5jb29yZHMsdGhpcy5jb2xvcnMsdGhpcy5maWd1cmVzKTtyZXR1cm5bIk1lc2giLFZuLGUsdCxuLHRoaXMuYm91bmRzLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBNZXNoU3RyZWFtUmVhZGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLmNvbnRleHQ9dDt0aGlzLmJ1ZmZlcj0wO3RoaXMuYnVmZmVyTGVuZ3RoPTA7Y29uc3Qgbj10Lm51bUNvbXBzO3RoaXMudG1wQ29tcHNCdWY9bmV3IEZsb2F0MzJBcnJheShuKTtjb25zdCBhPXQuY29sb3JTcGFjZS5udW1Db21wczt0aGlzLnRtcENzQ29tcHNCdWY9dC5jb2xvckZuP25ldyBGbG9hdDMyQXJyYXkoYSk6dGhpcy50bXBDb21wc0J1Zn1nZXQgaGFzRGF0YSgpe2lmKHRoaXMuc3RyZWFtLmVuZClyZXR1cm4gdGhpcy5zdHJlYW0ucG9zPHRoaXMuc3RyZWFtLmVuZDtpZih0aGlzLmJ1ZmZlckxlbmd0aD4wKXJldHVybiEwO2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKGU8MClyZXR1cm4hMTt0aGlzLmJ1ZmZlcj1lO3RoaXMuYnVmZmVyTGVuZ3RoPTg7cmV0dXJuITB9cmVhZEJpdHMoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXM7bGV0e2J1ZmZlcjpuLGJ1ZmZlckxlbmd0aDphfT10aGlzO2lmKDMyPT09ZSl7aWYoMD09PWEpcmV0dXJuIHQuZ2V0SW50MzIoKT4+PjA7bj1uPDwyNHx0LmdldEJ5dGUoKTw8MTZ8dC5nZXRCeXRlKCk8PDh8dC5nZXRCeXRlKCk7Y29uc3QgZT10LmdldEJ5dGUoKTt0aGlzLmJ1ZmZlcj1lJigxPDxhKS0xO3JldHVybihuPDw4LWF8KDI1NSZlKT4+YSk+Pj4wfWlmKDg9PT1lJiYwPT09YSlyZXR1cm4gdC5nZXRCeXRlKCk7Zm9yKDthPGU7KXtuPW48PDh8dC5nZXRCeXRlKCk7YSs9OH1hLT1lO3RoaXMuYnVmZmVyTGVuZ3RoPWE7dGhpcy5idWZmZXI9biYoMTw8YSktMTtyZXR1cm4gbj4+YX1hbGlnbigpe3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MH1yZWFkRmxhZygpe3JldHVybiB0aGlzLnJlYWRCaXRzKHRoaXMuY29udGV4dC5iaXRzUGVyRmxhZyl9cmVhZENvb3JkaW5hdGUoKXtjb25zdHtiaXRzUGVyQ29vcmRpbmF0ZTplLGRlY29kZTp0fT10aGlzLmNvbnRleHQsbj10aGlzLnJlYWRCaXRzKGUpLGE9dGhpcy5yZWFkQml0cyhlKSxyPWU8MzI/MS8oKDE8PGUpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTA7cmV0dXJuW24qcioodFsxXS10WzBdKSt0WzBdLGEqcioodFszXS10WzJdKSt0WzJdXX1yZWFkQ29tcG9uZW50cygpe2NvbnN0e2JpdHNQZXJDb21wb25lbnQ6ZSxjb2xvckZuOnQsY29sb3JTcGFjZTpuLGRlY29kZTphLG51bUNvbXBzOnJ9PXRoaXMuY29udGV4dCxzPWU8MzI/MS8oKDE8PGUpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTAsaT10aGlzLnRtcENvbXBzQnVmO2ZvcihsZXQgdD0wLG49NDt0PHI7dCsrLG4rPTIpe2NvbnN0IHI9dGhpcy5yZWFkQml0cyhlKTtpW3RdPXIqcyooYVtuKzFdLWFbbl0pK2Fbbl19Y29uc3Qgbz10aGlzLnRtcENzQ29tcHNCdWY7dD8uKGksMCxvLDApO3JldHVybiBuLmdldFJnYihvLDApfX1sZXQgdGE9bnVsbDtmdW5jdGlvbiBnZXRCKGUpe3JldHVybih0YT8/PW5ldyBNYXApLmdldE9ySW5zZXJ0Q29tcHV0ZWQoZSwoKT0+QXJyYXkuZnJvbSh7bGVuZ3RoOmUrMX0sKHQsbik9Pntjb25zdCBhPW4vZSxyPTEtYTtyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShbcioqMywzKmEqcioqMiwzKmEqKjIqcixhKiozXSl9KSl9Y2xhc3MgTWVzaFNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tzdGF0aWMgTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MztzdGF0aWMgTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQ9MjA7c3RhdGljIFRSSUFOR0xFX0RFTlNJVFk9MjA7Y29uc3RydWN0b3IoZSx0LG4sYSxyLHMpe3N1cGVyKCk7aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNZXNoIGRhdGEgaXMgbm90IGEgc3RyZWFtIik7Y29uc3QgaT1lLmRpY3Q7dGhpcy5zaGFkaW5nVHlwZT1pLmdldCgiU2hhZGluZ1R5cGUiKTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChpLmdldEFycmF5KCJCQm94IiksbnVsbCk7Y29uc3Qgbz1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmkuZ2V0UmF3KCJDUyIpfHxpLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6bixwZGZGdW5jdGlvbkZhY3Rvcnk6YSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6cixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSk7dGhpcy5iYWNrZ3JvdW5kPWkuaGFzKCJCYWNrZ3JvdW5kIik/by5nZXRSZ2IoaS5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IGw9aS5nZXRSYXcoIkZ1bmN0aW9uIiksZj1sP2EuY3JlYXRlKGwsITApOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGM9e2JpdHNQZXJDb29yZGluYXRlOmkuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6aS5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzppLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6aS5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjpmLGNvbG9yU3BhY2U6byxudW1Db21wczpmPzE6by5udW1Db21wc30saD1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGMpO2xldCB1PSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIEpuOnRoaXMuX2RlY29kZVR5cGU0U2hhZGluZyhoKTticmVhaztjYXNlIFFuOmNvbnN0IGU9MHxpLmdldCgiVmVydGljZXNQZXJSb3ciKTtpZihlPDIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKGgsZSk7YnJlYWs7Y2FzZSBabjp0aGlzLl9kZWNvZGVUeXBlNlNoYWRpbmcoaCk7dT0hMDticmVhaztjYXNlIGVhOnRoaXMuX2RlY29kZVR5cGU3U2hhZGluZyhoKTt1PSEwO2JyZWFrO2RlZmF1bHQ6dW5yZWFjaGFibGUoIlVuc3VwcG9ydGVkIG1lc2ggdHlwZS4iKX1pZih1KXt0aGlzLl91cGRhdGVCb3VuZHMoKTtmb3IobGV0IGU9MCx0PXRoaXMuZmlndXJlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLl9idWlsZEZpZ3VyZUZyb21QYXRjaChlKX10aGlzLl91cGRhdGVCb3VuZHMoKTt0aGlzLl9wYWNrRGF0YSgpfV9kZWNvZGVUeXBlNFNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxuPXRoaXMuY29sb3JzLGE9W10scj1bXTtsZXQgcz0wO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgaT1lLnJlYWRGbGFnKCksbz1lLnJlYWRDb29yZGluYXRlKCksbD1lLnJlYWRDb21wb25lbnRzKCk7aWYoMD09PXMpe2lmKCEoMDw9aSYmaTw9MikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2goaSl7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6ci5wdXNoKHIuYXQoLTIpLHIuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOnIucHVzaChyLmF0KC0zKSxyLmF0KC0xKSk7cz0xfWEucHVzaChpKX1yLnB1c2godC5sZW5ndGgpO3QucHVzaChvKTtuLnB1c2gobCk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZTp2LGNvb3JkczpuZXcgSW50MzJBcnJheShyKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX1fZGVjb2RlVHlwZTVTaGFkaW5nKGUsdCl7Y29uc3Qgbj10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9W107Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCB0PWUucmVhZENvb3JkaW5hdGUoKSxzPWUucmVhZENvbXBvbmVudHMoKTtyLnB1c2gobi5sZW5ndGgpO24ucHVzaCh0KTthLnB1c2gocyl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6Uyxjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsbj10aGlzLmNvbG9ycyxhPW5ldyBJbnQzMkFycmF5KDE2KSxyPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTYgZmxhZyIpO2NvbnN0IGk9dC5sZW5ndGg7Zm9yKGxldCBuPTAsYT0wIT09cz84OjEyO248YTtuKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1uLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1zPzI6NDt0PGE7dCsrKW4ucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBsLGYsYyxoO3N3aXRjaChzKXtjYXNlIDA6YVsxMl09aSszO2FbMTNdPWkrNDthWzE0XT1pKzU7YVsxNV09aSs2O2FbOF09aSsyO2FbMTFdPWkrNzthWzRdPWkrMTthWzddPWkrODthWzBdPWk7YVsxXT1pKzExO2FbMl09aSsxMDthWzNdPWkrOTtyWzJdPW8rMTtyWzNdPW8rMjtyWzBdPW87clsxXT1vKzM7YnJlYWs7Y2FzZSAxOmw9YVsxMl07Zj1hWzEzXTtjPWFbMTRdO2g9YVsxNV07YVsxMl09aDthWzEzXT1pKzA7YVsxNF09aSsxO2FbMTVdPWkrMjthWzhdPWM7YVsxMV09aSszO2FbNF09ZjthWzddPWkrNDthWzBdPWw7YVsxXT1pKzc7YVsyXT1pKzY7YVszXT1pKzU7bD1yWzJdO2Y9clszXTtyWzJdPWY7clszXT1vO3JbMF09bDtyWzFdPW8rMTticmVhaztjYXNlIDI6bD1hWzE1XTtmPWFbMTFdO2FbMTJdPWFbM107YVsxM109aSswO2FbMTRdPWkrMTthWzE1XT1pKzI7YVs4XT1hWzddO2FbMTFdPWkrMzthWzRdPWY7YVs3XT1pKzQ7YVswXT1sO2FbMV09aSs3O2FbMl09aSs2O2FbM109aSs1O2w9clszXTtyWzJdPXJbMV07clszXT1vO3JbMF09bDtyWzFdPW8rMTticmVhaztjYXNlIDM6YVsxMl09YVswXTthWzEzXT1pKzA7YVsxNF09aSsxO2FbMTVdPWkrMjthWzhdPWFbMV07YVsxMV09aSszO2FbNF09YVsyXTthWzddPWkrNDthWzBdPWFbM107YVsxXT1pKzc7YVsyXT1pKzY7YVszXT1pKzU7clsyXT1yWzBdO3JbM109bztyWzBdPXJbMV07clsxXT1vKzF9YVs1XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMF1dWzBdLXRbYVsxNV1dWzBdKzYqKHRbYVs0XV1bMF0rdFthWzFdXVswXSktMioodFthWzEyXV1bMF0rdFthWzNdXVswXSkrMyoodFthWzEzXV1bMF0rdFthWzddXVswXSkpLzksKC00KnRbYVswXV1bMV0tdFthWzE1XV1bMV0rNioodFthWzRdXVsxXSt0W2FbMV1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMTNdXVsxXSt0W2FbN11dWzFdKSkvOV0pO2FbNl09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzNdXVswXS10W2FbMTJdXVswXSs2Kih0W2FbMl1dWzBdK3RbYVs3XV1bMF0pLTIqKHRbYVswXV1bMF0rdFthWzE1XV1bMF0pKzMqKHRbYVs0XV1bMF0rdFthWzE0XV1bMF0pKS85LCgtNCp0W2FbM11dWzFdLXRbYVsxMl1dWzFdKzYqKHRbYVsyXV1bMV0rdFthWzddXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzRdXVsxXSt0W2FbMTRdXVsxXSkpLzldKTthWzldPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxMl1dWzBdLXRbYVszXV1bMF0rNioodFthWzhdXVswXSt0W2FbMTNdXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzExXV1bMF0rdFthWzFdXVswXSkpLzksKC00KnRbYVsxMl1dWzFdLXRbYVszXV1bMV0rNioodFthWzhdXVsxXSt0W2FbMTNdXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzExXV1bMV0rdFthWzFdXVsxXSkpLzldKTthWzEwXT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMTVdXVswXS10W2FbMF1dWzBdKzYqKHRbYVsxMV1dWzBdK3RbYVsxNF1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMl1dWzBdK3RbYVs4XV1bMF0pKS85LCgtNCp0W2FbMTVdXVsxXS10W2FbMF1dWzFdKzYqKHRbYVsxMV1dWzFdK3RbYVsxNF1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMl1dWzFdK3RbYVs4XV1bMV0pKS85XSk7dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6eCxjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpfSl9fV9kZWNvZGVUeXBlN1NoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxuPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNyBmbGFnIik7Y29uc3QgaT10Lmxlbmd0aDtmb3IobGV0IG49MCxhPTAhPT1zPzEyOjE2O248YTtuKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1uLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1zPzI6NDt0PGE7dCsrKW4ucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBsLGYsYyxoO3N3aXRjaChzKXtjYXNlIDA6YVsxMl09aSszO2FbMTNdPWkrNDthWzE0XT1pKzU7YVsxNV09aSs2O2FbOF09aSsyO2FbOV09aSsxMzthWzEwXT1pKzE0O2FbMTFdPWkrNzthWzRdPWkrMTthWzVdPWkrMTI7YVs2XT1pKzE1O2FbN109aSs4O2FbMF09aTthWzFdPWkrMTE7YVsyXT1pKzEwO2FbM109aSs5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6bD1hWzEyXTtmPWFbMTNdO2M9YVsxNF07aD1hWzE1XTthWzEyXT1oO2FbMTNdPWkrMDthWzE0XT1pKzE7YVsxNV09aSsyO2FbOF09YzthWzldPWkrOTthWzEwXT1pKzEwO2FbMTFdPWkrMzthWzRdPWY7YVs1XT1pKzg7YVs2XT1pKzExO2FbN109aSs0O2FbMF09bDthWzFdPWkrNzthWzJdPWkrNjthWzNdPWkrNTtsPXJbMl07Zj1yWzNdO3JbMl09ZjtyWzNdPW87clswXT1sO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpsPWFbMTVdO2Y9YVsxMV07YVsxMl09YVszXTthWzEzXT1pKzA7YVsxNF09aSsxO2FbMTVdPWkrMjthWzhdPWFbN107YVs5XT1pKzk7YVsxMF09aSsxMDthWzExXT1pKzM7YVs0XT1mO2FbNV09aSs4O2FbNl09aSsxMTthWzddPWkrNDthWzBdPWw7YVsxXT1pKzc7YVsyXT1pKzY7YVszXT1pKzU7bD1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1sO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPWkrMDthWzE0XT1pKzE7YVsxNV09aSsyO2FbOF09YVsxXTthWzldPWkrOTthWzEwXT1pKzEwO2FbMTFdPWkrMzthWzRdPWFbMl07YVs1XT1pKzg7YVs2XT1pKzExO2FbN109aSs0O2FbMF09YVszXTthWzFdPWkrNzthWzJdPWkrNjthWzNdPWkrNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZTp4LGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpe2NvbnN0IHQ9dGhpcy5maWd1cmVzW2VdO2Fzc2VydCh0LnR5cGU9PT14LCJVbmV4cGVjdGVkIHBhdGNoIG1lc2ggZmlndXJlIik7Y29uc3Qgbj10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9dC5jb29yZHMscz10LmNvbG9ycyxpPU1hdGgubWluKG5bclswXV1bMF0sbltyWzNdXVswXSxuW3JbMTJdXVswXSxuW3JbMTVdXVswXSksbz1NYXRoLm1pbihuW3JbMF1dWzFdLG5bclszXV1bMV0sbltyWzEyXV1bMV0sbltyWzE1XV1bMV0pLGw9TWF0aC5tYXgobltyWzBdXVswXSxuW3JbM11dWzBdLG5bclsxMl1dWzBdLG5bclsxNV1dWzBdKSxmPU1hdGgubWF4KG5bclswXV1bMV0sbltyWzNdXVsxXSxuW3JbMTJdXVsxXSxuW3JbMTVdXVsxXSk7bGV0IGM9TWF0aC5jZWlsKChsLWkpKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdKSk7Yz1NYXRoQ2xhbXAoYyxNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCk7bGV0IGg9TWF0aC5jZWlsKChmLW8pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdKSk7aD1NYXRoQ2xhbXAoaCxNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCk7Y29uc3QgdT1jKzEsbT1uZXcgSW50MzJBcnJheSgoaCsxKSp1KSxwPW5ldyBJbnQzMkFycmF5KChoKzEpKnUpO2xldCBkPTA7Y29uc3QgZz1uZXcgVWludDhBcnJheSgzKSxiPW5ldyBVaW50OEFycmF5KDMpLHc9YVtzWzBdXSxqPWFbc1sxXV0saz1hW3NbMl1dLHk9YVtzWzNdXSxxPWdldEIoaCksdj1nZXRCKGMpO2ZvcihsZXQgZT0wO2U8PWg7ZSsrKXtnWzBdPSh3WzBdKihoLWUpK2tbMF0qZSkvaHwwO2dbMV09KHdbMV0qKGgtZSkra1sxXSplKS9ofDA7Z1syXT0od1syXSooaC1lKStrWzJdKmUpL2h8MDtiWzBdPShqWzBdKihoLWUpK3lbMF0qZSkvaHwwO2JbMV09KGpbMV0qKGgtZSkreVsxXSplKS9ofDA7YlsyXT0oalsyXSooaC1lKSt5WzJdKmUpL2h8MDtmb3IobGV0IHQ9MDt0PD1jO3QrKyxkKyspe2lmKCEoMCE9PWUmJmUhPT1ofHwwIT09dCYmdCE9PWMpKWNvbnRpbnVlO2xldCBzPTAsaT0wLG89MDtmb3IobGV0IGE9MDthPD0zO2ErKylmb3IobGV0IGw9MDtsPD0zO2wrKyxvKyspe2NvbnN0IGY9cVtlXVthXSp2W3RdW2xdO3MrPW5bcltvXV1bMF0qZjtpKz1uW3Jbb11dWzFdKmZ9bVtkXT1uLmxlbmd0aDtuLnB1c2goW3MsaV0pO3BbZF09YS5sZW5ndGg7Y29uc3QgbD1uZXcgVWludDhBcnJheSgzKTtsWzBdPShnWzBdKihjLXQpK2JbMF0qdCkvY3wwO2xbMV09KGdbMV0qKGMtdCkrYlsxXSp0KS9jfDA7bFsyXT0oZ1syXSooYy10KStiWzJdKnQpL2N8MDthLnB1c2gobCl9fW1bMF09clswXTtwWzBdPXNbMF07bVtjXT1yWzNdO3BbY109c1sxXTttW3UqaF09clsxMl07cFt1KmhdPXNbMl07bVt1KmgrY109clsxNV07cFt1KmgrY109c1szXTt0aGlzLmZpZ3VyZXNbZV09e3R5cGU6Uyxjb29yZHM6bSxjb2xvcnM6cCx2ZXJ0aWNlc1BlclJvdzp1fX1fdXBkYXRlQm91bmRzKCl7IWZ1bmN0aW9uIG1lc2hVcGRhdGVCb3VuZHMoZSl7bGV0IHQ9ZS5jb29yZHNbMF1bMF0sbj1lLmNvb3Jkc1swXVsxXSxhPXQscj1uO2ZvcihsZXQgcz0xLGk9ZS5jb29yZHMubGVuZ3RoO3M8aTtzKyspe2NvbnN0IGk9ZS5jb29yZHNbc11bMF0sbz1lLmNvb3Jkc1tzXVsxXTt0PXQ+aT9pOnQ7bj1uPm8/bzpuO2E9YTxpP2k6YTtyPXI8bz9vOnJ9ZS5ib3VuZHM9W3QsbixhLHJdfSh0aGlzKX1fcGFja0RhdGEoKXshZnVuY3Rpb24gbWVzaFBhY2tEYXRhKGUpe2xldCB0LG4sYTtjb25zdCByPWUuY29vcmRzLHM9bmV3IEZsb2F0MzJBcnJheSgyKnIubGVuZ3RoKTtmb3IodD0wLG49MCxhPXIubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGU9clt0XTtzW24rK109ZVswXTtzW24rK109ZVsxXX1lLmNvb3Jkcz1zO2NvbnN0IGk9ZS5jb2xvcnMsbz1uZXcgVWludDhBcnJheSg0KmkubGVuZ3RoKTtmb3IodD0wLG49MCxhPWkubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGU9aVt0XTtvW24rK109ZVswXTtvW24rK109ZVsxXTtvW24rK109ZVsyXTtuKyt9ZS5jb2xvcnM9bztmb3IoY29uc3QgdCBvZiBlLmZpZ3VyZXMpe3QuY29vcmRzPW5ldyBVaW50MzJBcnJheSh0LmNvb3Jkcyk7dC5jb2xvcnM9bmV3IFVpbnQzMkFycmF5KHQuY29sb3JzKX19KHRoaXMpfWdldElSKCl7Y29uc3R7cG9zRGF0YTplLGNvbERhdGE6dCx2ZXJ0ZXhDb3VudDpufT1idWlsZE1lc2hWZXJ0ZXhEYXRhKHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyk7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLGUsdCxuLHRoaXMuYm91bmRzLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBEdW1teVNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tnZXRJUigpe3JldHVyblsiRHVtbXkiXX19ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsdCxuLGE9ITApe2NvbnN0IHI9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIk1hdHJpeCIpLGtuKSxzPWxvb2t1cE5vcm1hbFJlY3QodC5nZXRBcnJheSgiQkJveCIpLG51bGwpO2lmKCFzfHxzWzJdLXNbMF09PT0wfHxzWzNdLXNbMV09PT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL0JCb3ggYXJyYXkuIik7Y29uc3QgaT10LmdldCgiWFN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWFN0ZXAgdmFsdWUuIik7Y29uc3Qgbz10LmdldCgiWVN0ZXAiKTtpZigibnVtYmVyIiE9dHlwZW9mIG8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvWVN0ZXAgdmFsdWUuIik7Y29uc3QgbD10LmdldCgiUGFpbnRUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIobCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvUGFpbnRUeXBlIHZhbHVlLiIpO2NvbnN0IGY9dC5nZXQoIlRpbGluZ1R5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihmKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9UaWxpbmdUeXBlIHZhbHVlLiIpO3JldHVyblsiVGlsaW5nUGF0dGVybiIsbixlLHIscyxpLG8sbCxmLGFdfV9fd2VicGFja19yZXF1aXJlX18oMTE2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDMwNjgpLF9fd2VicGFja19yZXF1aXJlX18oNzU4OCk7ZnVuY3Rpb24gaGV4VG9JbnQoZSx0KXtsZXQgbj0wO2ZvcihsZXQgYT0wO2E8PXQ7YSsrKW49bjw8OHxlW2FdO3JldHVybiBuPj4+MH1mdW5jdGlvbiBoZXhUb1N0cihlLHQpe3JldHVybiAxPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSk6Mz09PXQ/U3RyaW5nLmZyb21DaGFyQ29kZShlWzBdLGVbMV0sZVsyXSxlWzNdKTpTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmUuc3ViYXJyYXkoMCx0KzEpKX1mdW5jdGlvbiBhZGRIZXgoZSx0LG4pe2xldCBhPTA7Zm9yKGxldCByPW47cj49MDtyLS0pe2ErPWVbcl0rdFtyXTtlW3JdPTI1NSZhO2E+Pj04fX1mdW5jdGlvbiBpbmNIZXgoZSx0KXtsZXQgbj0xO2ZvcihsZXQgYT10O2E+PTAmJm4+MDthLS0pe24rPWVbYV07ZVthXT0yNTUmbjtuPj49OH19Y29uc3QgbmE9MTY7Y2xhc3MgQmluYXJ5Q01hcFN0cmVhbSBleHRlbmRzIFN0cmVhbXt0bXBCdWY9bmV3IFVpbnQ4QXJyYXkoMTkpO2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsMCxlLmxlbmd0aCxudWxsKX1yZWFkTnVtYmVyKCl7bGV0IGUsdD0wO2Rve2NvbnN0IG49dGhpcy5nZXRCeXRlKCk7aWYobjwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4Jm4pO3Q9dDw8N3wxMjcmbn13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5nZXRCeXRlcyh0KzEpKX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IG47Y29uc3QgYT10aGlzLnRtcEJ1ZjtsZXQgcj0wO2Rve2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7aWYoZTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtuPSEoMTI4JmUpO2FbcisrXT0xMjcmZX13aGlsZSghbik7bGV0IHM9dCxpPTAsbz0wO2Zvcig7cz49MDspe2Zvcig7bzw4JiZhLmxlbmd0aD4wOyl7aXw9YVstLXJdPDxvO28rPTd9ZVtzXT0yNTUmaTtzLS07aT4+PTg7by09OH19cmVhZEhleFNpZ25lZChlLHQpe3RoaXMucmVhZEhleE51bWJlcihlLHQpO2NvbnN0IG49MSZlW3RdPzI1NTowO2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspe2E9KDEmYSk8PDh8ZVtyXTtlW3JdPWE+PjFebn19cmVhZFN0cmluZygpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCksdD1uZXcgQXJyYXkoZSk7Zm9yKGxldCBuPTA7bjxlO24rKyl0W25dPXRoaXMucmVhZE51bWJlcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKC4uLnQpfX1jbGFzcyBCaW5hcnlDTWFwUmVhZGVye2FzeW5jIHByb2Nlc3MoZSx0LG4pe2NvbnN0IGE9bmV3IEJpbmFyeUNNYXBTdHJlYW0oZSkscj1hLmdldEJ5dGUoKTt0LnZlcnRpY2FsPSEhKDEmcik7bGV0IHM9bnVsbDtjb25zdCBpPW5ldyBVaW50OEFycmF5KG5hKSxvPW5ldyBVaW50OEFycmF5KG5hKSxsPW5ldyBVaW50OEFycmF5KG5hKSxmPW5ldyBVaW50OEFycmF5KG5hKSxjPW5ldyBVaW50OEFycmF5KG5hKTtsZXQgaCx1O2Zvcig7KHU9YS5nZXRCeXRlKCkpPj0wOyl7Y29uc3QgZT11Pj41O2lmKDc9PT1lKXtzd2l0Y2goMzEmdSl7Y2FzZSAwOmEucmVhZFN0cmluZygpO2JyZWFrO2Nhc2UgMTpzPWEucmVhZFN0cmluZygpfWNvbnRpbnVlfWNvbnN0IG49ISEoMTYmdSkscj0xNSZ1O2lmKHIrMT5uYSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBtPTEscD1hLnJlYWROdW1iZXIoKTtzd2l0Y2goZSl7Y2FzZSAwOmEucmVhZEhleChpLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLGkscik7dC5hZGRDb2Rlc3BhY2VSYW5nZShyKzEsaGV4VG9JbnQoaSxyKSxoZXhUb0ludChvLHIpKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobyxyKTthLnJlYWRIZXhOdW1iZXIoaSxyKTthZGRIZXgoaSxvLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLGkscik7dC5hZGRDb2Rlc3BhY2VSYW5nZShyKzEsaGV4VG9JbnQoaSxyKSxoZXhUb0ludChvLHIpKX1icmVhaztjYXNlIDE6YS5yZWFkSGV4KGkscik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8saSxyKTthLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobyxyKTthLnJlYWRIZXhOdW1iZXIoaSxyKTthZGRIZXgoaSxvLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLGkscik7YS5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOmEucmVhZEhleChsLHIpO2g9YS5yZWFkTnVtYmVyKCk7dC5tYXBPbmUoaGV4VG9JbnQobCxyKSxoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobCxyKTtpZighbil7YS5yZWFkSGV4TnVtYmVyKGMscik7YWRkSGV4KGwsYyxyKX1oPWEucmVhZFNpZ25lZCgpKyhoKzEpO3QubWFwT25lKGhleFRvSW50KGwsciksaCl9YnJlYWs7Y2FzZSAzOmEucmVhZEhleChpLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLGkscik7aD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KGksciksaGV4VG9JbnQobyxyKSxoKTtmb3IobGV0IGU9MTtlPHA7ZSsrKXtpbmNIZXgobyxyKTtpZihuKWkuc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKGkscik7YWRkSGV4KGksbyxyKX1hLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxpLHIpO2g9YS5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChpLHIpLGhleFRvSW50KG8sciksaCl9YnJlYWs7Y2FzZSA0OmEucmVhZEhleChsLG0pO2EucmVhZEhleChmLHIpO3QubWFwT25lKGhleFRvSW50KGwsbSksaGV4VG9TdHIoZixyKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KGwsbSk7aWYoIW4pe2EucmVhZEhleE51bWJlcihjLG0pO2FkZEhleChsLGMsbSl9aW5jSGV4KGYscik7YS5yZWFkSGV4U2lnbmVkKGMscik7YWRkSGV4KGYsYyxyKTt0Lm1hcE9uZShoZXhUb0ludChsLG0pLGhleFRvU3RyKGYscikpfWJyZWFrO2Nhc2UgNTphLnJlYWRIZXgoaSxtKTthLnJlYWRIZXhOdW1iZXIobyxtKTthZGRIZXgobyxpLG0pO2EucmVhZEhleChmLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChpLG0pLGhleFRvSW50KG8sbSksaGV4VG9TdHIoZixyKSk7Zm9yKGxldCBlPTE7ZTxwO2UrKyl7aW5jSGV4KG8sbSk7aWYobilpLnNldChvKTtlbHNle2EucmVhZEhleE51bWJlcihpLG0pO2FkZEhleChpLG8sbSl9YS5yZWFkSGV4TnVtYmVyKG8sbSk7YWRkSGV4KG8saSxtKTthLnJlYWRIZXgoZixyKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQoaSxtKSxoZXhUb0ludChvLG0pLGhleFRvU3RyKGYscikpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7ZX1gKX19cmV0dXJuIHM/bihzKTp0fX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFteyNVPW5ldyBVaW50OEFycmF5KDUpO2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3R9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtsZXQgdD1lLmdldEJ5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZSh0KTspdD1lLmdldEJ5dGUoKTtpZigtMT09PXR8fDEyNj09PXQpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCBuPXRoaXMuYnVmZmVyTGVuZ3RoO2xldCBhLHI7aWYoMTIyPT09dCl7YT10aGlzLmVuc3VyZUJ1ZmZlcihuKzQpO2EuZmlsbCgwLG4sbis0KTt0aGlzLmJ1ZmZlckxlbmd0aCs9NH1lbHNle2NvbnN0IHM9dGhpcy4jVTtzWzBdPXQ7Zm9yKHI9MTtyPDU7KytyKXt0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO3Nbcl09dDtpZigtMT09PXR8fDEyNj09PXQpYnJlYWt9YT10aGlzLmVuc3VyZUJ1ZmZlcihuK3ItMSk7dGhpcy5idWZmZXJMZW5ndGgrPXItMTtpZihyPDUpe3MuZmlsbCgxMTcsciw1KTt0aGlzLmVvZj0hMH1sZXQgaT0wO2ZvcihyPTA7cjw1OysrcilpPTg1KmkrKHNbcl0tMzMpO2ZvcihyPTM7cj49MDstLXIpe2FbbityXT0yNTUmaTtpPj49OH19fX1jbGFzcyBBc2NpaUhleFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3QmJih0Kj0uNSk7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZmlyc3REaWdpdD0tMX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKDhlMyk7aWYoIWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59Y29uc3QgdD1lLmxlbmd0aCsxPj4xLG49dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrdCk7bGV0IGE9dGhpcy5idWZmZXJMZW5ndGgscj10aGlzLmZpcnN0RGlnaXQ7Zm9yKGNvbnN0IHQgb2YgZSl7bGV0IGU7aWYodD49NDgmJnQ8PTU3KWU9MTUmdDtlbHNle2lmKCEodD49NjUmJnQ8PTcwfHx0Pj05NyYmdDw9MTAyKSl7aWYoNjI9PT10KXt0aGlzLmVvZj0hMDticmVha31jb250aW51ZX1lPTkrKDE1JnQpfWlmKHI8MClyPWU7ZWxzZXtuW2ErK109cjw8NHxlO3I9LTF9fWlmKHI+PTAmJnRoaXMuZW9mKXtuW2ErK109cjw8NDtyPS0xfXRoaXMuZmlyc3REaWdpdD1yO3RoaXMuYnVmZmVyTGVuZ3RoPWF9fWxldCBhYT0oKCk9Pntjb25zdCBlPUludDMyQXJyYXkuZnJvbShbMjU2LDQwMiw0MzYsNDY4LDUwMCw1MzQsNTY2LDU5OCw2MzAsNjYyLDY5NCw3MjYsNzU4LDc5MCw4MjIsODU0LDg4Niw5MjAsOTUyLDk4NCwxMDE2LDEwNDgsMTA4MF0pLHQ9SW50MzJBcnJheS5mcm9tKFsxLDIsMyw0LDAsNSwxNyw2LDE2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1XSksbj1JbnQzMkFycmF5LmZyb20oWzAsMywyLDEsMCwwLDAsMCwwLDAsMywzLDMsMywzLDNdKSxhPUludDMyQXJyYXkuZnJvbShbMCwwLDAsMCwtMSwxLC0yLDIsLTMsMywtMSwxLC0yLDIsLTMsM10pLHI9SW50MzJBcnJheS5mcm9tKFsxMzEwNzIsMTMxMDc2LDEzMTA3NSwxOTY2MTAsMTMxMDcyLDEzMTA3NiwxMzEwNzUsMjYyMTQ1LDEzMTA3MiwxMzEwNzYsMTMxMDc1LDE5NjYxMCwxMzEwNzIsMTMxMDc2LDEzMTA3NSwyNjIxNDldKSxzPUludDMyQXJyYXkuZnJvbShbMSw1LDksMTMsMTcsMjUsMzMsNDEsNDksNjUsODEsOTcsMTEzLDE0NSwxNzcsMjA5LDI0MSwzMDUsMzY5LDQ5Nyw3NTMsMTI2NSwyMjg5LDQzMzcsODQzMywxNjYyNV0pLGk9SW50MzJBcnJheS5mcm9tKFsyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDYsNiw3LDgsOSwxMCwxMSwxMiwxMywyNF0pLG89SW50MTZBcnJheS5mcm9tKFswLDAsMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNyw4LDksMTAsMTIsMTQsMjRdKSxsPUludDE2QXJyYXkuZnJvbShbMCwwLDAsMCwwLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw3LDgsOSwxMCwyNF0pLGY9bmV3IEludDE2QXJyYXkoMjgxNik7IWZ1bmN0aW9uIHVucGFja0NvbW1hbmRMb29rdXBUYWJsZShlKXtjb25zdCB0PW5ldyBJbnQzMkFycmF5KDI0KSxuPW5ldyBJbnQzMkFycmF5KDI0KTtuWzBdPTI7Zm9yKGxldCBlPTA7ZTwyMzsrK2Upe3RbZSsxXT10W2VdKygxPDxvW2VdKTtuW2UrMV09bltlXSsoMTw8bFtlXSl9Zm9yKGxldCBhPTA7YTw3MDQ7KythKXtsZXQgcj1hPj42LHM9LTQ7aWYocj49Mil7ci09MjtzPTB9Y29uc3QgaT0oMTcwMDY0Pj4yKnImMyk8PDN8YT4+MyY3LGY9KDE1NjIyOD4+MipyJjMpPDwzfDcmYSxjPW5bZl0saD1zK01hdGgubWluKGMsNSktMix1PTQqYTtlW3VdPW9baV18bFtmXTw8ODtlW3UrMV09dFtpXTtlW3UrMl09bltmXTtlW3UrM109aH19KGYpO2Z1bmN0aW9uIGxvZzJmbG9vcihlKXtsZXQgdD0tMSxuPTE2LGE9ZTtmb3IoO24+MDspe2xldCBlPWE+Pm47aWYoMCE9PWUpe3QrPW47YT1lfW4+Pj0xfXJldHVybiB0K2F9ZnVuY3Rpb24gY2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldFNpemUoZSx0LG4pe3JldHVybiAxNit0KzIqKG48PGUpfWZ1bmN0aW9uIGNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRMaW1pdChlLHQsbixhKXtpZih0PGErKDI8PG4pKXJldHVybiBtYWtlRXJyb3IoZSwtMjMpO2NvbnN0IHI9NCsodC1hPj5uKSxzPWxvZzJmbG9vcihyKS0xO3JldHVybigocy0xPDwxfHI+PnMmMSktMTw8bikrKDE8PG4pK2ErMTZ9ZnVuY3Rpb24gaW5pdFN0YXRlKGUpe2lmKDAhPT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTI2KTtlLmJsb2NrVHJlZXM9bmV3IEludDMyQXJyYXkoMzA5MSk7ZS5ibG9ja1RyZWVzWzBdPTc7ZS5kaXN0UmJJZHg9MztsZXQgdD1jYWxjdWxhdGVEaXN0YW5jZUFscGhhYmV0TGltaXQoZSwyMTQ3NDgzNjQ0LDMsMTIwKTtpZih0PDApcmV0dXJuIHQ7Y29uc3Qgbj10O2UuZGlzdEV4dHJhQml0cz1uZXcgSW50OEFycmF5KG4pO2UuZGlzdE9mZnNldD1uZXcgSW50MzJBcnJheShuKTt0PWZ1bmN0aW9uIGluaXRCaXRSZWFkZXIoZSl7ZS5ieXRlQnVmZmVyPW5ldyBJbnQ4QXJyYXkoNDE2MCk7ZS5hY2N1bXVsYXRvcjMyPTA7ZS5zaG9ydEJ1ZmZlcj1uZXcgSW50MTZBcnJheSgyMDgwKTtlLmJpdE9mZnNldD0zMjtlLmhhbGZPZmZzZXQ9MjA0ODtlLmVuZE9mU3RyZWFtUmVhY2hlZD0wO3JldHVybiBwcmVwYXJlKGUpfShlKTtpZih0PDApcmV0dXJuIHQ7ZS5ydW5uaW5nU3RhdGU9MTtyZXR1cm4gMH1mdW5jdGlvbiBkZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoZSl7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1pZigwIT09cmVhZEZld0JpdHMoZSwxKSl7Y29uc3QgdD1yZWFkRmV3Qml0cyhlLDMpO3JldHVybiAwPT09dD8xOnJlYWRGZXdCaXRzKGUsdCkrKDE8PHQpfXJldHVybiAwfWZ1bmN0aW9uIHJlYWRTeW1ib2woZSx0LG4pe2xldCBhPWVbdF07Y29uc3Qgcj1uLmFjY3VtdWxhdG9yMzI+Pj5uLmJpdE9mZnNldDthKz0yNTUmcjtjb25zdCBzPWVbYV0+PjE2LGk9NjU1MzUmZVthXTtpZihzPD04KXtuLmJpdE9mZnNldCs9cztyZXR1cm4gaX1hKz1pO2ErPShyJigxPDxzKS0xKT4+Pjg7bi5iaXRPZmZzZXQrPTgrKGVbYV0+PjE2KTtyZXR1cm4gNjU1MzUmZVthXX1mdW5jdGlvbiByZWFkQmxvY2tMZW5ndGgoZSx0LG4pe2lmKG4uYml0T2Zmc2V0Pj0xNil7bi5hY2N1bXVsYXRvcjMyPW4uc2hvcnRCdWZmZXJbbi5oYWxmT2Zmc2V0KytdPDwxNnxuLmFjY3VtdWxhdG9yMzI+Pj4xNjtuLmJpdE9mZnNldC09MTZ9Y29uc3QgYT1yZWFkU3ltYm9sKGUsdCxuKSxyPWlbYV07aWYobi5iaXRPZmZzZXQ+PTE2KXtuLmFjY3VtdWxhdG9yMzI9bi5zaG9ydEJ1ZmZlcltuLmhhbGZPZmZzZXQrK108PDE2fG4uYWNjdW11bGF0b3IzMj4+PjE2O24uYml0T2Zmc2V0LT0xNn1yZXR1cm4gc1thXSsocjw9MTY/cmVhZEZld0JpdHMobixyKTpyZWFkTWFueUJpdHMobixyKSl9ZnVuY3Rpb24gbW92ZVRvRnJvbnQoZSx0KXtsZXQgbj10O2NvbnN0IGE9ZVtuXTtmb3IoO24+MDspe2Vbbl09ZVtuLTFdO24tLX1lWzBdPWF9ZnVuY3Rpb24gcmVhZFNpbXBsZUh1ZmZtYW5Db2RlKGUsdCxuLGEscil7Y29uc3Qgcz1uZXcgSW50MzJBcnJheSh0KSxpPW5ldyBJbnQzMkFycmF5KDQpLG89MStsb2cyZmxvb3IoZS0xKSxsPXJlYWRGZXdCaXRzKHIsMikrMTtmb3IobGV0IGU9MDtlPGw7KytlKXtpZihyLmJpdE9mZnNldD49MTYpe3IuYWNjdW11bGF0b3IzMj1yLnNob3J0QnVmZmVyW3IuaGFsZk9mZnNldCsrXTw8MTZ8ci5hY2N1bXVsYXRvcjMyPj4+MTY7ci5iaXRPZmZzZXQtPTE2fWNvbnN0IG49cmVhZEZld0JpdHMocixvKTtpZihuPj10KXJldHVybiBtYWtlRXJyb3IociwtMTUpO2lbZV09bn1jb25zdCBmPWZ1bmN0aW9uIGNoZWNrRHVwZXMoZSx0LG4pe2ZvcihsZXQgYT0wO2E8bi0xOysrYSlmb3IobGV0IHI9YSsxO3I8bjsrK3IpaWYodFthXT09PXRbcl0pcmV0dXJuIG1ha2VFcnJvcihlLC03KTtyZXR1cm4gMH0ocixpLGwpO2lmKGY8MClyZXR1cm4gZjtsZXQgYz1sOzQ9PT1sJiYoYys9cmVhZEZld0JpdHMociwxKSk7c3dpdGNoKGMpe2Nhc2UgMTpzW2lbMF1dPTE7YnJlYWs7Y2FzZSAyOnNbaVswXV09MTtzW2lbMV1dPTE7YnJlYWs7Y2FzZSAzOnNbaVswXV09MTtzW2lbMV1dPTI7c1tpWzJdXT0yO2JyZWFrO2Nhc2UgNDpzW2lbMF1dPTI7c1tpWzFdXT0yO3NbaVsyXV09MjtzW2lbM11dPTI7YnJlYWs7Y2FzZSA1OnNbaVswXV09MTtzW2lbMV1dPTI7c1tpWzJdXT0zO3NbaVszXV09M31yZXR1cm4gYnVpbGRIdWZmbWFuVGFibGUobixhLDgscyx0KX1mdW5jdGlvbiByZWFkQ29tcGxleEh1ZmZtYW5Db2RlKGUsbixhLHMsaSl7Y29uc3Qgbz1uZXcgSW50MzJBcnJheShlKSxsPW5ldyBJbnQzMkFycmF5KDE4KTtsZXQgZj0zMixjPTA7Zm9yKGxldCBlPW47ZTwxODsrK2Upe2NvbnN0IG49dFtlXTtpZihpLmJpdE9mZnNldD49MTYpe2kuYWNjdW11bGF0b3IzMj1pLnNob3J0QnVmZmVyW2kuaGFsZk9mZnNldCsrXTw8MTZ8aS5hY2N1bXVsYXRvcjMyPj4+MTY7aS5iaXRPZmZzZXQtPTE2fWNvbnN0IGE9aS5hY2N1bXVsYXRvcjMyPj4+aS5iaXRPZmZzZXQmMTU7aS5iaXRPZmZzZXQrPXJbYV0+PjE2O2NvbnN0IHM9NjU1MzUmclthXTtsW25dPXM7aWYoMCE9PXMpe2YtPTMyPj5zO2MrKztpZihmPD0wKWJyZWFrfX1pZigwIT09ZiYmMSE9PWMpcmV0dXJuIG1ha2VFcnJvcihpLC00KTtjb25zdCBoPWZ1bmN0aW9uIHJlYWRIdWZmbWFuQ29kZUxlbmd0aHMoZSx0LG4sYSl7bGV0IHI9MCxzPTgsaT0wLG89MCxsPTMyNzY4O2NvbnN0IGY9bmV3IEludDMyQXJyYXkoMzMpO2J1aWxkSHVmZm1hblRhYmxlKGYsZi5sZW5ndGgtMSw1LGUsMTgpO2Zvcig7cjx0JiZsPjA7KXtpZihhLmhhbGZPZmZzZXQ+MjAzMCl7Y29uc3QgZT1yZWFkTW9yZUlucHV0KGEpO2lmKGU8MClyZXR1cm4gZX1pZihhLmJpdE9mZnNldD49MTYpe2EuYWNjdW11bGF0b3IzMj1hLnNob3J0QnVmZmVyW2EuaGFsZk9mZnNldCsrXTw8MTZ8YS5hY2N1bXVsYXRvcjMyPj4+MTY7YS5iaXRPZmZzZXQtPTE2fWNvbnN0IGU9YS5hY2N1bXVsYXRvcjMyPj4+YS5iaXRPZmZzZXQmMzE7YS5iaXRPZmZzZXQrPWZbZV0+PjE2O2NvbnN0IGM9NjU1MzUmZltlXTtpZihjPDE2KXtpPTA7bltyKytdPWM7aWYoMCE9PWMpe3M9YztsLT0zMjc2OD4+Y319ZWxzZXtjb25zdCBlPWMtMTQ7bGV0IGY9MDsxNj09PWMmJihmPXMpO2lmKG8hPT1mKXtpPTA7bz1mfWNvbnN0IGg9aTtpZihpPjApe2ktPTI7aTw8PWV9aWYoYS5iaXRPZmZzZXQ+PTE2KXthLmFjY3VtdWxhdG9yMzI9YS5zaG9ydEJ1ZmZlclthLmhhbGZPZmZzZXQrK108PDE2fGEuYWNjdW11bGF0b3IzMj4+PjE2O2EuYml0T2Zmc2V0LT0xNn1pKz1yZWFkRmV3Qml0cyhhLGUpKzM7Y29uc3QgdT1pLWg7aWYocit1PnQpcmV0dXJuIG1ha2VFcnJvcihhLC0yKTtmb3IobGV0IGU9MDtlPHU7KytlKW5bcisrXT1vOzAhPT1vJiYobC09dTw8MTUtbyl9fWlmKDAhPT1sKXJldHVybiBtYWtlRXJyb3IoYSwtMTgpO24uZmlsbCgwLHIsdCk7cmV0dXJuIDB9KGwsZSxvLGkpO3JldHVybiBoPDA/aDpidWlsZEh1ZmZtYW5UYWJsZShhLHMsOCxvLGUpfWZ1bmN0aW9uIHJlYWRIdWZmbWFuQ29kZShlLHQsbixhLHIpe2lmKHIuaGFsZk9mZnNldD4yMDMwKXtjb25zdCBlPXJlYWRNb3JlSW5wdXQocik7aWYoZTwwKXJldHVybiBlfWlmKHIuYml0T2Zmc2V0Pj0xNil7ci5hY2N1bXVsYXRvcjMyPXIuc2hvcnRCdWZmZXJbci5oYWxmT2Zmc2V0KytdPDwxNnxyLmFjY3VtdWxhdG9yMzI+Pj4xNjtyLmJpdE9mZnNldC09MTZ9Y29uc3Qgcz1yZWFkRmV3Qml0cyhyLDIpO3JldHVybiAxPT09cz9yZWFkU2ltcGxlSHVmZm1hbkNvZGUoZSx0LG4sYSxyKTpyZWFkQ29tcGxleEh1ZmZtYW5Db2RlKHQscyxuLGEscil9ZnVuY3Rpb24gZGVjb2RlQ29udGV4dE1hcCh0LG4sYSl7bGV0IHI7aWYoYS5oYWxmT2Zmc2V0PjIwMzApe3I9cmVhZE1vcmVJbnB1dChhKTtpZihyPDApcmV0dXJuIHJ9Y29uc3Qgcz1kZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoYSkrMTtpZigxPT09cyl7bi5maWxsKDAsMCx0KTtyZXR1cm4gc31pZihhLmJpdE9mZnNldD49MTYpe2EuYWNjdW11bGF0b3IzMj1hLnNob3J0QnVmZmVyW2EuaGFsZk9mZnNldCsrXTw8MTZ8YS5hY2N1bXVsYXRvcjMyPj4+MTY7YS5iaXRPZmZzZXQtPTE2fWxldCBpPTA7MCE9PXJlYWRGZXdCaXRzKGEsMSkmJihpPXJlYWRGZXdCaXRzKGEsNCkrMSk7Y29uc3Qgbz1zK2ksbD1lW28rMzE+PjVdLGY9bmV3IEludDMyQXJyYXkobCsxKSxjPWYubGVuZ3RoLTE7cj1yZWFkSHVmZm1hbkNvZGUobyxvLGYsYyxhKTtpZihyPDApcmV0dXJuIHI7bGV0IGg9MDtmb3IoO2g8dDspe2lmKGEuaGFsZk9mZnNldD4yMDMwKXtyPXJlYWRNb3JlSW5wdXQoYSk7aWYocjwwKXJldHVybiByfWlmKGEuYml0T2Zmc2V0Pj0xNil7YS5hY2N1bXVsYXRvcjMyPWEuc2hvcnRCdWZmZXJbYS5oYWxmT2Zmc2V0KytdPDwxNnxhLmFjY3VtdWxhdG9yMzI+Pj4xNjthLmJpdE9mZnNldC09MTZ9Y29uc3QgZT1yZWFkU3ltYm9sKGYsYyxhKTtpZigwPT09ZSl7bltoXT0wO2grK31lbHNlIGlmKGU8PWkpe2lmKGEuYml0T2Zmc2V0Pj0xNil7YS5hY2N1bXVsYXRvcjMyPWEuc2hvcnRCdWZmZXJbYS5oYWxmT2Zmc2V0KytdPDwxNnxhLmFjY3VtdWxhdG9yMzI+Pj4xNjthLmJpdE9mZnNldC09MTZ9bGV0IHI9KDE8PGUpK3JlYWRGZXdCaXRzKGEsZSk7Zm9yKDswIT09cjspe2lmKGg+PXQpcmV0dXJuIG1ha2VFcnJvcihhLC0zKTtuW2hdPTA7aCsrO3ItLX19ZWxzZXtuW2hdPWUtaTtoKyt9fWlmKGEuYml0T2Zmc2V0Pj0xNil7YS5hY2N1bXVsYXRvcjMyPWEuc2hvcnRCdWZmZXJbYS5oYWxmT2Zmc2V0KytdPDwxNnxhLmFjY3VtdWxhdG9yMzI+Pj4xNjthLmJpdE9mZnNldC09MTZ9MT09PXJlYWRGZXdCaXRzKGEsMSkmJmZ1bmN0aW9uIGludmVyc2VNb3ZlVG9Gcm9udFRyYW5zZm9ybShlLHQpe2NvbnN0IG49bmV3IEludDMyQXJyYXkoMjU2KTtmb3IobGV0IGU9MDtlPDI1NjsrK2UpbltlXT1lO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2NvbnN0IHQ9MjU1JmVbYV07ZVthXT1uW3RdOzAhPT10JiZtb3ZlVG9Gcm9udChuLHQpfX0obix0KTtyZXR1cm4gc31mdW5jdGlvbiBkZWNvZGVCbG9ja1R5cGVBbmRMZW5ndGgoZSx0LG4pe2NvbnN0IGE9ZS5yaW5ncyxyPTQrMip0O2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9bGV0IHM9cmVhZFN5bWJvbChlLmJsb2NrVHJlZXMsMip0LGUpO2NvbnN0IGk9cmVhZEJsb2NrTGVuZ3RoKGUuYmxvY2tUcmVlcywyKnQrMSxlKTsxPT09cz9zPWFbcisxXSsxOjA9PT1zP3M9YVtyXTpzLT0yO3M+PW4mJihzLT1uKTthW3JdPWFbcisxXTthW3IrMV09cztyZXR1cm4gaX1mdW5jdGlvbiBkZWNvZGVMaXRlcmFsQmxvY2tTd2l0Y2goZSl7ZS5saXRlcmFsQmxvY2tMZW5ndGg9ZGVjb2RlQmxvY2tUeXBlQW5kTGVuZ3RoKGUsMCxlLm51bUxpdGVyYWxCbG9ja1R5cGVzKTtjb25zdCB0PWUucmluZ3NbNV07ZS5jb250ZXh0TWFwU2xpY2U9dDw8NjtlLmxpdGVyYWxUcmVlSWR4PTI1NSZlLmNvbnRleHRNYXBbZS5jb250ZXh0TWFwU2xpY2VdO2NvbnN0IG49ZS5jb250ZXh0TW9kZXNbdF07ZS5jb250ZXh0TG9va3VwT2Zmc2V0MT1uPDw5O2UuY29udGV4dExvb2t1cE9mZnNldDI9ZS5jb250ZXh0TG9va3VwT2Zmc2V0MSsyNTZ9ZnVuY3Rpb24gZGVjb2RlQ29tbWFuZEJsb2NrU3dpdGNoKGUpe2UuY29tbWFuZEJsb2NrTGVuZ3RoPWRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChlLDEsZS5udW1Db21tYW5kQmxvY2tUeXBlcyk7ZS5jb21tYW5kVHJlZUlkeD1lLnJpbmdzWzddfWZ1bmN0aW9uIGRlY29kZURpc3RhbmNlQmxvY2tTd2l0Y2goZSl7ZS5kaXN0YW5jZUJsb2NrTGVuZ3RoPWRlY29kZUJsb2NrVHlwZUFuZExlbmd0aChlLDIsZS5udW1EaXN0YW5jZUJsb2NrVHlwZXMpO2UuZGlzdENvbnRleHRNYXBTbGljZT1lLnJpbmdzWzldPDwyfWZ1bmN0aW9uIHJlYWROZXh0TWV0YWJsb2NrSGVhZGVyKGUpe2lmKDAhPT1lLmlucHV0RW5kKXtlLm5leHRSdW5uaW5nU3RhdGU9MTA7ZS5ydW5uaW5nU3RhdGU9MTI7cmV0dXJuIDB9ZS5saXRlcmFsVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KDApO2UuY29tbWFuZFRyZWVHcm91cD1uZXcgSW50MzJBcnJheSgwKTtlLmRpc3RhbmNlVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KDApO2xldCB0O2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fXQ9ZnVuY3Rpb24gZGVjb2RlTWV0YUJsb2NrTGVuZ3RoKGUpe2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9ZS5pbnB1dEVuZD1yZWFkRmV3Qml0cyhlLDEpO2UubWV0YUJsb2NrTGVuZ3RoPTA7ZS5pc1VuY29tcHJlc3NlZD0wO2UuaXNNZXRhZGF0YT0wO2lmKDAhPT1lLmlucHV0RW5kJiYwIT09cmVhZEZld0JpdHMoZSwxKSlyZXR1cm4gMDtjb25zdCB0PXJlYWRGZXdCaXRzKGUsMikrNDtpZig3PT09dCl7ZS5pc01ldGFkYXRhPTE7aWYoMCE9PXJlYWRGZXdCaXRzKGUsMSkpcmV0dXJuIG1ha2VFcnJvcihlLC02KTtjb25zdCB0PXJlYWRGZXdCaXRzKGUsMik7aWYoMD09PXQpcmV0dXJuIDA7Zm9yKGxldCBuPTA7bjx0Oysrbil7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1jb25zdCBhPXJlYWRGZXdCaXRzKGUsOCk7aWYoMD09PWEmJm4rMT09PXQmJnQ+MSlyZXR1cm4gbWFrZUVycm9yKGUsLTgpO2UubWV0YUJsb2NrTGVuZ3RoKz1hPDw4Km59fWVsc2UgZm9yKGxldCBuPTA7bjx0Oysrbil7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1jb25zdCBhPXJlYWRGZXdCaXRzKGUsNCk7aWYoMD09PWEmJm4rMT09PXQmJnQ+NClyZXR1cm4gbWFrZUVycm9yKGUsLTgpO2UubWV0YUJsb2NrTGVuZ3RoKz1hPDw0Km59ZS5tZXRhQmxvY2tMZW5ndGgrKzswPT09ZS5pbnB1dEVuZCYmKGUuaXNVbmNvbXByZXNzZWQ9cmVhZEZld0JpdHMoZSwxKSk7cmV0dXJuIDB9KGUpO2lmKHQ8MClyZXR1cm4gdDtpZigwPT09ZS5tZXRhQmxvY2tMZW5ndGgmJjA9PT1lLmlzTWV0YWRhdGEpcmV0dXJuIDA7aWYoMCE9PWUuaXNVbmNvbXByZXNzZWR8fDAhPT1lLmlzTWV0YWRhdGEpe3Q9anVtcFRvQnl0ZUJvdW5kYXJ5KGUpO2lmKHQ8MClyZXR1cm4gdDswPT09ZS5pc01ldGFkYXRhP2UucnVubmluZ1N0YXRlPTY6ZS5ydW5uaW5nU3RhdGU9NX1lbHNlIGUucnVubmluZ1N0YXRlPTM7aWYoMCE9PWUuaXNNZXRhZGF0YSlyZXR1cm4gMDtlLmV4cGVjdGVkVG90YWxTaXplKz1lLm1ldGFCbG9ja0xlbmd0aDtlLmV4cGVjdGVkVG90YWxTaXplPjE8PDMwJiYoZS5leHBlY3RlZFRvdGFsU2l6ZT0xPDwzMCk7ZS5yaW5nQnVmZmVyU2l6ZTxlLm1heFJpbmdCdWZmZXJTaXplJiZmdW5jdGlvbiBtYXliZVJlYWxsb2NhdGVSaW5nQnVmZmVyKGUpe2xldCB0PWUubWF4UmluZ0J1ZmZlclNpemU7aWYodD5lLmV4cGVjdGVkVG90YWxTaXplKXtjb25zdCBuPWUuZXhwZWN0ZWRUb3RhbFNpemU7Zm9yKDt0Pj4xPm47KXQ+Pj0xOzA9PT1lLmlucHV0RW5kJiZ0PDE2Mzg0JiZlLm1heFJpbmdCdWZmZXJTaXplPj0xNjM4NCYmKHQ9MTYzODQpfWlmKHQ8PWUucmluZ0J1ZmZlclNpemUpcmV0dXJuO2NvbnN0IG49bmV3IEludDhBcnJheSh0KzM3KSxhPWUucmluZ0J1ZmZlcjswIT09YS5sZW5ndGgmJm4uc2V0KGEuc3ViYXJyYXkoMCxlLnJpbmdCdWZmZXJTaXplKSwwKTtlLnJpbmdCdWZmZXI9bjtlLnJpbmdCdWZmZXJTaXplPXR9KGUpO3JldHVybiAwfWZ1bmN0aW9uIHJlYWRNZXRhYmxvY2tQYXJ0aXRpb24oZSx0LG4pe2xldCBhPWUuYmxvY2tUcmVlc1syKnRdO2lmKG48PTEpe2UuYmxvY2tUcmVlc1syKnQrMV09YTtlLmJsb2NrVHJlZXNbMip0KzJdPWE7cmV0dXJuIDE8PDI4fWNvbnN0IHI9bisyO2xldCBzPXJlYWRIdWZmbWFuQ29kZShyLHIsZS5ibG9ja1RyZWVzLDIqdCxlKTtpZihzPDApcmV0dXJuIHM7YSs9cztlLmJsb2NrVHJlZXNbMip0KzFdPWE7cz1yZWFkSHVmZm1hbkNvZGUoMjYsMjYsZS5ibG9ja1RyZWVzLDIqdCsxLGUpO2lmKHM8MClyZXR1cm4gczthKz1zO2UuYmxvY2tUcmVlc1syKnQrMl09YTtyZXR1cm4gcmVhZEJsb2NrTGVuZ3RoKGUuYmxvY2tUcmVlcywyKnQrMSxlKX1mdW5jdGlvbiByZWFkTWV0YWJsb2NrSHVmZm1hbkNvZGVzQW5kQ29udGV4dE1hcHMoZSl7ZS5udW1MaXRlcmFsQmxvY2tUeXBlcz1kZWNvZGVWYXJMZW5VbnNpZ25lZEJ5dGUoZSkrMTtsZXQgdD1yZWFkTWV0YWJsb2NrUGFydGl0aW9uKGUsMCxlLm51bUxpdGVyYWxCbG9ja1R5cGVzKTtpZih0PDApcmV0dXJuIHQ7ZS5saXRlcmFsQmxvY2tMZW5ndGg9dDtlLm51bUNvbW1hbmRCbG9ja1R5cGVzPWRlY29kZVZhckxlblVuc2lnbmVkQnl0ZShlKSsxO3Q9cmVhZE1ldGFibG9ja1BhcnRpdGlvbihlLDEsZS5udW1Db21tYW5kQmxvY2tUeXBlcyk7aWYodDwwKXJldHVybiB0O2UuY29tbWFuZEJsb2NrTGVuZ3RoPXQ7ZS5udW1EaXN0YW5jZUJsb2NrVHlwZXM9ZGVjb2RlVmFyTGVuVW5zaWduZWRCeXRlKGUpKzE7dD1yZWFkTWV0YWJsb2NrUGFydGl0aW9uKGUsMixlLm51bURpc3RhbmNlQmxvY2tUeXBlcyk7aWYodDwwKXJldHVybiB0O2UuZGlzdGFuY2VCbG9ja0xlbmd0aD10O2lmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fWlmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9ZS5kaXN0YW5jZVBvc3RmaXhCaXRzPXJlYWRGZXdCaXRzKGUsMik7ZS5udW1EaXJlY3REaXN0YW5jZUNvZGVzPXJlYWRGZXdCaXRzKGUsNCk8PGUuZGlzdGFuY2VQb3N0Zml4Qml0cztlLmNvbnRleHRNb2Rlcz1uZXcgSW50OEFycmF5KGUubnVtTGl0ZXJhbEJsb2NrVHlwZXMpO2xldCBuPTA7Zm9yKDtuPGUubnVtTGl0ZXJhbEJsb2NrVHlwZXM7KXtjb25zdCBhPU1hdGgubWluKG4rOTYsZS5udW1MaXRlcmFsQmxvY2tUeXBlcyk7Zm9yKDtuPGE7KXtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWUuY29udGV4dE1vZGVzW25dPXJlYWRGZXdCaXRzKGUsMik7bisrfWlmKGUuaGFsZk9mZnNldD4yMDMwKXt0PXJlYWRNb3JlSW5wdXQoZSk7aWYodDwwKXJldHVybiB0fX1jb25zdCBhPWUubnVtTGl0ZXJhbEJsb2NrVHlwZXM8PDY7ZS5jb250ZXh0TWFwPW5ldyBJbnQ4QXJyYXkoYSk7dD1kZWNvZGVDb250ZXh0TWFwKGEsZS5jb250ZXh0TWFwLGUpO2lmKHQ8MClyZXR1cm4gdDtjb25zdCByPXQ7ZS50cml2aWFsTGl0ZXJhbENvbnRleHQ9MTtmb3IobGV0IHQ9MDt0PGE7Kyt0KWlmKGUuY29udGV4dE1hcFt0XSE9PXQ+PjYpe2UudHJpdmlhbExpdGVyYWxDb250ZXh0PTA7YnJlYWt9ZS5kaXN0Q29udGV4dE1hcD1uZXcgSW50OEFycmF5KGUubnVtRGlzdGFuY2VCbG9ja1R5cGVzPDwyKTt0PWRlY29kZUNvbnRleHRNYXAoZS5udW1EaXN0YW5jZUJsb2NrVHlwZXM8PDIsZS5kaXN0Q29udGV4dE1hcCxlKTtpZih0PDApcmV0dXJuIHQ7Y29uc3Qgcz10O2UubGl0ZXJhbFRyZWVHcm91cD1uZXcgSW50MzJBcnJheShodWZmbWFuVHJlZUdyb3VwQWxsb2NTaXplKDI1NixyKSk7dD1kZWNvZGVIdWZmbWFuVHJlZUdyb3VwKDI1NiwyNTYscixlLGUubGl0ZXJhbFRyZWVHcm91cCk7aWYodDwwKXJldHVybiB0O2UuY29tbWFuZFRyZWVHcm91cD1uZXcgSW50MzJBcnJheShodWZmbWFuVHJlZUdyb3VwQWxsb2NTaXplKDcwNCxlLm51bUNvbW1hbmRCbG9ja1R5cGVzKSk7dD1kZWNvZGVIdWZmbWFuVHJlZUdyb3VwKDcwNCw3MDQsZS5udW1Db21tYW5kQmxvY2tUeXBlcyxlLGUuY29tbWFuZFRyZWVHcm91cCk7aWYodDwwKXJldHVybiB0O2xldCBpPWNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRTaXplKGUuZGlzdGFuY2VQb3N0Zml4Qml0cyxlLm51bURpcmVjdERpc3RhbmNlQ29kZXMsMjQpLG89aTtpZigxPT09ZS5pc0xhcmdlV2luZG93KXtpPWNhbGN1bGF0ZURpc3RhbmNlQWxwaGFiZXRTaXplKGUuZGlzdGFuY2VQb3N0Zml4Qml0cyxlLm51bURpcmVjdERpc3RhbmNlQ29kZXMsNjIpO3Q9Y2FsY3VsYXRlRGlzdGFuY2VBbHBoYWJldExpbWl0KGUsMjE0NzQ4MzY0NCxlLmRpc3RhbmNlUG9zdGZpeEJpdHMsZS5udW1EaXJlY3REaXN0YW5jZUNvZGVzKTtpZih0PDApcmV0dXJuIHQ7bz10fWUuZGlzdGFuY2VUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoaHVmZm1hblRyZWVHcm91cEFsbG9jU2l6ZShvLHMpKTt0PWRlY29kZUh1ZmZtYW5UcmVlR3JvdXAoaSxvLHMsZSxlLmRpc3RhbmNlVHJlZUdyb3VwKTtpZih0PDApcmV0dXJuIHQ7IWZ1bmN0aW9uIGNhbGN1bGF0ZURpc3RhbmNlTHV0KGUsdCl7Y29uc3Qgbj1lLmRpc3RFeHRyYUJpdHMsYT1lLmRpc3RPZmZzZXQscj1lLmRpc3RhbmNlUG9zdGZpeEJpdHMscz1lLm51bURpcmVjdERpc3RhbmNlQ29kZXMsaT0xPDxyO2xldCBvPTEsbD0wLGY9MTY7Zm9yKGxldCBlPTA7ZTxzOysrZSl7bltmXT0wO2FbZl09ZSsxOysrZn1mb3IoO2Y8dDspe2NvbnN0IGU9cysoKDIrbDw8byktNDw8cikrMTtmb3IobGV0IHQ9MDt0PGk7Kyt0KXtuW2ZdPW87YVtmXT1lK3Q7KytmfW8rPWw7bF49MX19KGUsbyk7ZS5jb250ZXh0TWFwU2xpY2U9MDtlLmRpc3RDb250ZXh0TWFwU2xpY2U9MDtlLmNvbnRleHRMb29rdXBPZmZzZXQxPTUxMiplLmNvbnRleHRNb2Rlc1swXTtlLmNvbnRleHRMb29rdXBPZmZzZXQyPWUuY29udGV4dExvb2t1cE9mZnNldDErMjU2O2UubGl0ZXJhbFRyZWVJZHg9MDtlLmNvbW1hbmRUcmVlSWR4PTA7ZS5yaW5nc1s0XT0xO2UucmluZ3NbNV09MDtlLnJpbmdzWzZdPTE7ZS5yaW5nc1s3XT0wO2UucmluZ3NbOF09MTtlLnJpbmdzWzldPTA7cmV0dXJuIDB9ZnVuY3Rpb24gY29weVVuY29tcHJlc3NlZERhdGEoZSl7Y29uc3QgdD1lLnJpbmdCdWZmZXI7bGV0IG47aWYoZS5tZXRhQmxvY2tMZW5ndGg8PTApe249cmVsb2FkKGUpO2lmKG48MClyZXR1cm4gbjtlLnJ1bm5pbmdTdGF0ZT0yO3JldHVybiAwfWNvbnN0IGE9TWF0aC5taW4oZS5yaW5nQnVmZmVyU2l6ZS1lLnBvcyxlLm1ldGFCbG9ja0xlbmd0aCk7bj1mdW5jdGlvbiBjb3B5UmF3Qnl0ZXMoZSx0LG4sYSl7bGV0IHI9bixzPWE7aWYoNyZlLmJpdE9mZnNldClyZXR1cm4gbWFrZUVycm9yKGUsLTMwKTtmb3IoOzMyIT09ZS5iaXRPZmZzZXQmJjAhPT1zOyl7dFtyKytdPWUuYWNjdW11bGF0b3IzMj4+PmUuYml0T2Zmc2V0O2UuYml0T2Zmc2V0Kz04O3MtLX1pZigwPT09cylyZXR1cm4gMDtjb25zdCBpPU1hdGgubWluKGhhbGZBdmFpbGFibGUoZSkscz4+MSk7aWYoaT4wKXtjb25zdCBuPWUuaGFsZk9mZnNldDw8MSxhPWk8PDE7dC5zZXQoZS5ieXRlQnVmZmVyLnN1YmFycmF5KG4sbithKSxyKTtyKz1hO3MtPWE7ZS5oYWxmT2Zmc2V0Kz1pfWlmKDA9PT1zKXJldHVybiAwO2lmKGhhbGZBdmFpbGFibGUoZSk+MCl7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1mb3IoOzAhPT1zOyl7dFtyKytdPWUuYWNjdW11bGF0b3IzMj4+PmUuYml0T2Zmc2V0O2UuYml0T2Zmc2V0Kz04O3MtLX1yZXR1cm4gY2hlY2tIZWFsdGgoZSwwKX1mb3IoO3M+MDspe2NvbnN0IG49cmVhZElucHV0KGUsdCxyLHMpO2lmKG48LTEpcmV0dXJuIG47aWYobjw9MClyZXR1cm4gbWFrZUVycm9yKGUsLTE2KTtyKz1uO3MtPW59cmV0dXJuIDB9KGUsdCxlLnBvcyxhKTtpZihuPDApcmV0dXJuIG47ZS5tZXRhQmxvY2tMZW5ndGgtPWE7ZS5wb3MrPWE7aWYoZS5wb3M9PT1lLnJpbmdCdWZmZXJTaXplKXtlLm5leHRSdW5uaW5nU3RhdGU9NjtlLnJ1bm5pbmdTdGF0ZT0xMjtyZXR1cm4gMH1uPXJlbG9hZChlKTtpZihuPDApcmV0dXJuIG47ZS5ydW5uaW5nU3RhdGU9MjtyZXR1cm4gMH1mdW5jdGlvbiB3cml0ZVJpbmdCdWZmZXIoZSl7Y29uc3QgdD1NYXRoLm1pbihlLm91dHB1dExlbmd0aC1lLm91dHB1dFVzZWQsZS5yaW5nQnVmZmVyQnl0ZXNSZWFkeS1lLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4pO2lmKDAhPT10KXtlLm91dHB1dC5zZXQoZS5yaW5nQnVmZmVyLnN1YmFycmF5KGUucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbixlLnJpbmdCdWZmZXJCeXRlc1dyaXR0ZW4rdCksZS5vdXRwdXRPZmZzZXQrZS5vdXRwdXRVc2VkKTtlLm91dHB1dFVzZWQrPXQ7ZS5yaW5nQnVmZmVyQnl0ZXNXcml0dGVuKz10fXJldHVybiBlLm91dHB1dFVzZWQ8ZS5vdXRwdXRMZW5ndGg/MDoyfWZ1bmN0aW9uIGh1ZmZtYW5UcmVlR3JvdXBBbGxvY1NpemUodCxuKXtyZXR1cm4gbituKmVbdCszMT4+NV19ZnVuY3Rpb24gZGVjb2RlSHVmZm1hblRyZWVHcm91cChlLHQsbixhLHIpe2xldCBzPW47Zm9yKGxldCBpPTA7aTxuOysraSl7cltpXT1zO2NvbnN0IG49cmVhZEh1ZmZtYW5Db2RlKGUsdCxyLGksYSk7aWYobjwwKXJldHVybiBuO3MrPW59cmV0dXJuIDB9ZnVuY3Rpb24gY2FsY3VsYXRlRmVuY2UoZSl7bGV0IHQ9ZS5yaW5nQnVmZmVyU2l6ZTswIT09ZS5pc0VhZ2VyJiYodD1NYXRoLm1pbih0LGUucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbitlLm91dHB1dExlbmd0aC1lLm91dHB1dFVzZWQpKTtyZXR1cm4gdH1mdW5jdGlvbiBkb1VzZURpY3Rpb25hcnkoZSx0KXtpZihlLmRpc3RhbmNlPjIxNDc0ODM2NDQpcmV0dXJuIG1ha2VFcnJvcihlLC05KTtjb25zdCBuPWUuZGlzdGFuY2UtZS5tYXhEaXN0YW5jZS0xLWUuY2RUb3RhbFNpemU7aWYobjwwKXtjb25zdCB0PWZ1bmN0aW9uIGluaXRpYWxpemVDb21wb3VuZERpY3Rpb25hcnlDb3B5KGUsdCxuKXstMT09PWUuY2RCbG9ja0JpdHMmJmZ1bmN0aW9uIGluaXRpYWxpemVDb21wb3VuZERpY3Rpb25hcnkoZSl7ZS5jZEJsb2NrTWFwPW5ldyBJbnQ4QXJyYXkoMjU2KTtsZXQgdD04O2Zvcig7ZS5jZFRvdGFsU2l6ZS0xPj50Oyl0Kys7dC09ODtlLmNkQmxvY2tCaXRzPXQ7bGV0IG49MCxhPTA7Zm9yKDtuPGUuY2RUb3RhbFNpemU7KXtmb3IoO2UuY2RDaHVua09mZnNldHNbYSsxXTxuOylhKys7ZS5jZEJsb2NrTWFwW24+PnRdPWE7bis9MTw8dH19KGUpO2xldCBhPWUuY2RCbG9ja01hcFt0Pj5lLmNkQmxvY2tCaXRzXTtmb3IoO3Q+PWUuY2RDaHVua09mZnNldHNbYSsxXTspYSsrO2lmKGUuY2RUb3RhbFNpemU+dCtuKXJldHVybiBtYWtlRXJyb3IoZSwtOSk7ZS5kaXN0UmJJZHg9ZS5kaXN0UmJJZHgrMSYzO2UucmluZ3NbZS5kaXN0UmJJZHhdPWUuZGlzdGFuY2U7ZS5tZXRhQmxvY2tMZW5ndGgtPW47ZS5jZEJySW5kZXg9YTtlLmNkQnJPZmZzZXQ9dC1lLmNkQ2h1bmtPZmZzZXRzW2FdO2UuY2RCckxlbmd0aD1uO2UuY2RCckNvcGllZD0wO3JldHVybiAwfShlLC1uLTEsZS5jb3B5TGVuZ3RoKTtpZih0PDApcmV0dXJuIHQ7ZS5ydW5uaW5nU3RhdGU9MTR9ZWxzZXtjb25zdCBhPXUscj1lLmNvcHlMZW5ndGg7aWYocj4zMSlyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2NvbnN0IHM9cFtyXTtpZigwPT09cylyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2xldCBpPW1bcl07Y29uc3Qgbz1uPj5zO2krPShuJigxPDxzKS0xKSpyO2NvbnN0IGw9YztpZihvPj1sLm51bVRyYW5zZm9ybXMpcmV0dXJuIG1ha2VFcnJvcihlLC05KTtjb25zdCBmPWZ1bmN0aW9uIHRyYW5zZm9ybURpY3Rpb25hcnlXb3JkKGUsdCxuLGEscixzLGkpe2xldCBvPXQ7Y29uc3QgbD1zLnRyaXBsZXRzLGY9cy5wcmVmaXhTdWZmaXhTdG9yYWdlLGM9cy5wcmVmaXhTdWZmaXhIZWFkcyxoPTMqaSx1PWxbaF0sbT1sW2grMV0scD1sW2grMl07bGV0IGQ9Y1t1XTtjb25zdCBnPWNbdSsxXTtsZXQgYj1jW3BdO2NvbnN0IHc9Y1twKzFdO2xldCBqPW0tMTEsaz1tOyhqPDF8fGo+OSkmJihqPTApOyhrPDF8fGs+OSkmJihrPTApO2Zvcig7ZCE9PWc7KWVbbysrXT1mW2QrK107bGV0IHk9cjtqPnkmJihqPXkpO2xldCBxPWErajt5LT1qO3ktPWs7bGV0IHY9eTtmb3IoO3Y+MDspe2VbbysrXT1uW3ErK107di0tfWlmKDEwPT09bXx8MTE9PT1tKXtsZXQgdD1vLXk7MTA9PT1tJiYoeT0xKTtmb3IoO3k+MDspe2NvbnN0IG49MjU1JmVbdF07aWYobjwxOTIpe24+PTk3JiZuPD0xMjImJihlW3RdPTMyXmVbdF0pO3QrPTE7eS09MX1lbHNlIGlmKG48MjI0KXtlW3QrMV09MzJeZVt0KzFdO3QrPTI7eS09Mn1lbHNle2VbdCsyXT01XmVbdCsyXTt0Kz0zO3ktPTN9fX1lbHNlIGlmKDIxPT09bXx8MjI9PT1tKXtsZXQgdD1vLXk7Y29uc3Qgbj1zLnBhcmFtc1tpXTtsZXQgYT0xNjc3NzIxNi0oMzI3NjgmbikrKDMyNzY3Jm4pO2Zvcig7eT4wOyl7bGV0IG49MTtjb25zdCByPTI1NSZlW3RdO2lmKHI8MTI4KXthKz1yO2VbdF09MTI3JmF9ZWxzZSBpZihyPDE5Mik7ZWxzZSBpZihyPDIyNClpZih5Pj0yKXtjb25zdCBzPWVbdCsxXTthKz02MyZzfCgzMSZyKTw8NjtlW3RdPTE5MnxhPj42JjMxO2VbdCsxXT0xOTImc3w2MyZhO249Mn1lbHNlIG49eTtlbHNlIGlmKHI8MjQwKWlmKHk+PTMpe2NvbnN0IHM9ZVt0KzFdLGk9ZVt0KzJdO2ErPTYzJml8KDYzJnMpPDw2fCgxNSZyKTw8MTI7ZVt0XT0yMjR8YT4+MTImMTU7ZVt0KzFdPTE5MiZzfGE+PjYmNjM7ZVt0KzJdPTE5MiZpfDYzJmE7bj0zfWVsc2Ugbj15O2Vsc2UgaWYocjwyNDgpaWYoeT49NCl7Y29uc3Qgcz1lW3QrMV0saT1lW3QrMl0sbz1lW3QrM107YSs9NjMmb3woNjMmaSk8PDZ8KDYzJnMpPDwxMnwoNyZyKTw8MTg7ZVt0XT0yNDB8YT4+MTgmNztlW3QrMV09MTkyJnN8YT4+MTImNjM7ZVt0KzJdPTE5MiZpfGE+PjYmNjM7ZVt0KzNdPTE5MiZvfDYzJmE7bj00fWVsc2Ugbj15O3QrPW47eS09bjsyMT09PW0mJih5PTApfX1mb3IoO2IhPT13OyllW28rK109ZltiKytdO3JldHVybiBvLXR9KGUucmluZ0J1ZmZlcixlLnBvcyxhLGkscixsLG8pO2UucG9zKz1mO2UubWV0YUJsb2NrTGVuZ3RoLT1mO2lmKGUucG9zPj10KXtlLm5leHRSdW5uaW5nU3RhdGU9NDtlLnJ1bm5pbmdTdGF0ZT0xMjtyZXR1cm4gMH1lLnJ1bm5pbmdTdGF0ZT00fXJldHVybiAwfWZ1bmN0aW9uIGNvcHlGcm9tQ29tcG91bmREaWN0aW9uYXJ5KGUsdCl7bGV0IG49ZS5wb3M7Y29uc3QgYT1uO2Zvcig7ZS5jZEJyTGVuZ3RoIT09ZS5jZEJyQ29waWVkOyl7Y29uc3QgYT10LW4scj1lLmNkQ2h1bmtPZmZzZXRzW2UuY2RCckluZGV4KzFdLWUuY2RDaHVua09mZnNldHNbZS5jZEJySW5kZXhdLWUuY2RCck9mZnNldDtsZXQgcz1lLmNkQnJMZW5ndGgtZS5jZEJyQ29waWVkO3M+ciYmKHM9cik7cz5hJiYocz1hKTtlLnJpbmdCdWZmZXIuc2V0KGUuY2RDaHVua3NbZS5jZEJySW5kZXhdLnN1YmFycmF5KGUuY2RCck9mZnNldCxlLmNkQnJPZmZzZXQrcyksbik7bis9cztlLmNkQnJPZmZzZXQrPXM7ZS5jZEJyQ29waWVkKz1zO2lmKHM9PT1yKXtlLmNkQnJJbmRleCsrO2UuY2RCck9mZnNldD0wfWlmKG4+PXQpYnJlYWt9cmV0dXJuIG4tYX1mdW5jdGlvbiBkZWNvbXByZXNzKGUpe2xldCB0O2lmKDA9PT1lLnJ1bm5pbmdTdGF0ZSlyZXR1cm4gbWFrZUVycm9yKGUsLTI1KTtpZihlLnJ1bm5pbmdTdGF0ZTwwKXJldHVybiBtYWtlRXJyb3IoZSwtMjgpO2lmKDExPT09ZS5ydW5uaW5nU3RhdGUpcmV0dXJuIG1ha2VFcnJvcihlLC0yMik7aWYoMT09PWUucnVubmluZ1N0YXRlKXtjb25zdCB0PWZ1bmN0aW9uIGRlY29kZVdpbmRvd0JpdHMoZSl7Y29uc3QgdD1lLmlzTGFyZ2VXaW5kb3c7ZS5pc0xhcmdlV2luZG93PTA7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1pZigwPT09cmVhZEZld0JpdHMoZSwxKSlyZXR1cm4gMTY7bGV0IG49cmVhZEZld0JpdHMoZSwzKTtpZigwIT09bilyZXR1cm4gMTcrbjtuPXJlYWRGZXdCaXRzKGUsMyk7aWYoMCE9PW4pe2lmKDE9PT1uKXtpZigwPT09dClyZXR1cm4tMTtlLmlzTGFyZ2VXaW5kb3c9MTtpZigxPT09cmVhZEZld0JpdHMoZSwxKSlyZXR1cm4tMTtuPXJlYWRGZXdCaXRzKGUsNik7cmV0dXJuIG48MTB8fG4+MzA/LTE6bn1yZXR1cm4gOCtufXJldHVybiAxN30oZSk7aWYoLTE9PT10KXJldHVybiBtYWtlRXJyb3IoZSwtMTEpO2UubWF4UmluZ0J1ZmZlclNpemU9MTw8dDtlLm1heEJhY2t3YXJkRGlzdGFuY2U9ZS5tYXhSaW5nQnVmZmVyU2l6ZS0xNjtlLnJ1bm5pbmdTdGF0ZT0yfWxldCByPWNhbGN1bGF0ZUZlbmNlKGUpLHM9ZS5yaW5nQnVmZmVyU2l6ZS0xLGk9ZS5yaW5nQnVmZmVyO2Zvcig7MTAhPT1lLnJ1bm5pbmdTdGF0ZTspc3dpdGNoKGUucnVubmluZ1N0YXRlKXtjYXNlIDI6aWYoZS5tZXRhQmxvY2tMZW5ndGg8MClyZXR1cm4gbWFrZUVycm9yKGUsLTEwKTt0PXJlYWROZXh0TWV0YWJsb2NrSGVhZGVyKGUpO2lmKHQ8MClyZXR1cm4gdDtyPWNhbGN1bGF0ZUZlbmNlKGUpO3M9ZS5yaW5nQnVmZmVyU2l6ZS0xO2k9ZS5yaW5nQnVmZmVyO2NvbnRpbnVlO2Nhc2UgMzp0PXJlYWRNZXRhYmxvY2tIdWZmbWFuQ29kZXNBbmRDb250ZXh0TWFwcyhlKTtpZih0PDApcmV0dXJuIHQ7ZS5ydW5uaW5nU3RhdGU9NDtjb250aW51ZTtjYXNlIDQ6aWYoZS5tZXRhQmxvY2tMZW5ndGg8PTApe2UucnVubmluZ1N0YXRlPTI7Y29udGludWV9aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9MD09PWUuY29tbWFuZEJsb2NrTGVuZ3RoJiZkZWNvZGVDb21tYW5kQmxvY2tTd2l0Y2goZSk7ZS5jb21tYW5kQmxvY2tMZW5ndGgtLTtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IG89cmVhZFN5bWJvbChlLmNvbW1hbmRUcmVlR3JvdXAsZS5jb21tYW5kVHJlZUlkeCxlKTw8MixsPWZbb10sYz1mW28rMV0sdT1mW28rMl07ZS5kaXN0YW5jZUNvZGU9ZltvKzNdO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9Y29uc3QgbT0yNTUmbDtlLmluc2VydExlbmd0aD1jKyhtPD0xNj9yZWFkRmV3Qml0cyhlLG0pOnJlYWRNYW55Qml0cyhlLG0pKTtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IHA9bD4+ODtlLmNvcHlMZW5ndGg9dSsocDw9MTY/cmVhZEZld0JpdHMoZSxwKTpyZWFkTWFueUJpdHMoZSxwKSk7ZS5qPTA7ZS5ydW5uaW5nU3RhdGU9Nztjb250aW51ZTtjYXNlIDc6aWYoMCE9PWUudHJpdmlhbExpdGVyYWxDb250ZXh0KWZvcig7ZS5qPGUuaW5zZXJ0TGVuZ3RoOyl7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9MD09PWUubGl0ZXJhbEJsb2NrTGVuZ3RoJiZkZWNvZGVMaXRlcmFsQmxvY2tTd2l0Y2goZSk7ZS5saXRlcmFsQmxvY2tMZW5ndGgtLTtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWlbZS5wb3NdPXJlYWRTeW1ib2woZS5saXRlcmFsVHJlZUdyb3VwLGUubGl0ZXJhbFRyZWVJZHgsZSk7ZS5wb3MrKztlLmorKztpZihlLnBvcz49cil7ZS5uZXh0UnVubmluZ1N0YXRlPTc7ZS5ydW5uaW5nU3RhdGU9MTI7YnJlYWt9fWVsc2V7bGV0IG49MjU1JmlbZS5wb3MtMSZzXSxhPTI1NSZpW2UucG9zLTImc107Zm9yKDtlLmo8ZS5pbnNlcnRMZW5ndGg7KXtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH0wPT09ZS5saXRlcmFsQmxvY2tMZW5ndGgmJmRlY29kZUxpdGVyYWxCbG9ja1N3aXRjaChlKTtjb25zdCBzPWhbZS5jb250ZXh0TG9va3VwT2Zmc2V0MStuXXxoW2UuY29udGV4dExvb2t1cE9mZnNldDIrYV0sbz0yNTUmZS5jb250ZXh0TWFwW2UuY29udGV4dE1hcFNsaWNlK3NdO2UubGl0ZXJhbEJsb2NrTGVuZ3RoLS07YT1uO2lmKGUuYml0T2Zmc2V0Pj0xNil7ZS5hY2N1bXVsYXRvcjMyPWUuc2hvcnRCdWZmZXJbZS5oYWxmT2Zmc2V0KytdPDwxNnxlLmFjY3VtdWxhdG9yMzI+Pj4xNjtlLmJpdE9mZnNldC09MTZ9bj1yZWFkU3ltYm9sKGUubGl0ZXJhbFRyZWVHcm91cCxvLGUpO2lbZS5wb3NdPW47ZS5wb3MrKztlLmorKztpZihlLnBvcz49cil7ZS5uZXh0UnVubmluZ1N0YXRlPTc7ZS5ydW5uaW5nU3RhdGU9MTI7YnJlYWt9fX1pZig3IT09ZS5ydW5uaW5nU3RhdGUpY29udGludWU7ZS5tZXRhQmxvY2tMZW5ndGgtPWUuaW5zZXJ0TGVuZ3RoO2lmKGUubWV0YUJsb2NrTGVuZ3RoPD0wKXtlLnJ1bm5pbmdTdGF0ZT00O2NvbnRpbnVlfWxldCBkPWUuZGlzdGFuY2VDb2RlO2lmKGQ8MCllLmRpc3RhbmNlPWUucmluZ3NbZS5kaXN0UmJJZHhdO2Vsc2V7aWYoZS5oYWxmT2Zmc2V0PjIwMzApe3Q9cmVhZE1vcmVJbnB1dChlKTtpZih0PDApcmV0dXJuIHR9MD09PWUuZGlzdGFuY2VCbG9ja0xlbmd0aCYmZGVjb2RlRGlzdGFuY2VCbG9ja1N3aXRjaChlKTtlLmRpc3RhbmNlQmxvY2tMZW5ndGgtLTtpZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fWNvbnN0IHI9MjU1JmUuZGlzdENvbnRleHRNYXBbZS5kaXN0Q29udGV4dE1hcFNsaWNlK2RdO2Q9cmVhZFN5bWJvbChlLmRpc3RhbmNlVHJlZUdyb3VwLHIsZSk7aWYoZDwxNil7Y29uc3QgdD1lLmRpc3RSYklkeCtuW2RdJjM7ZS5kaXN0YW5jZT1lLnJpbmdzW3RdK2FbZF07aWYoZS5kaXN0YW5jZTwwKXJldHVybiBtYWtlRXJyb3IoZSwtMTIpfWVsc2V7Y29uc3QgdD1lLmRpc3RFeHRyYUJpdHNbZF07bGV0IG47aWYoZS5iaXRPZmZzZXQrdDw9MzIpbj1yZWFkRmV3Qml0cyhlLHQpO2Vsc2V7aWYoZS5iaXRPZmZzZXQ+PTE2KXtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNn1uPXQ8PTE2P3JlYWRGZXdCaXRzKGUsdCk6cmVhZE1hbnlCaXRzKGUsdCl9ZS5kaXN0YW5jZT1lLmRpc3RPZmZzZXRbZF0rKG48PGUuZGlzdGFuY2VQb3N0Zml4Qml0cyl9fWUubWF4RGlzdGFuY2UhPT1lLm1heEJhY2t3YXJkRGlzdGFuY2UmJmUucG9zPGUubWF4QmFja3dhcmREaXN0YW5jZT9lLm1heERpc3RhbmNlPWUucG9zOmUubWF4RGlzdGFuY2U9ZS5tYXhCYWNrd2FyZERpc3RhbmNlO2lmKGUuZGlzdGFuY2U+ZS5tYXhEaXN0YW5jZSl7ZS5ydW5uaW5nU3RhdGU9OTtjb250aW51ZX1pZihkPjApe2UuZGlzdFJiSWR4PWUuZGlzdFJiSWR4KzEmMztlLnJpbmdzW2UuZGlzdFJiSWR4XT1lLmRpc3RhbmNlfWlmKGUuY29weUxlbmd0aD5lLm1ldGFCbG9ja0xlbmd0aClyZXR1cm4gbWFrZUVycm9yKGUsLTkpO2Uuaj0wO2UucnVubmluZ1N0YXRlPTg7Y29udGludWU7Y2FzZSA4OmxldCBnPWUucG9zLWUuZGlzdGFuY2UmcyxiPWUucG9zO2NvbnN0IHc9ZS5jb3B5TGVuZ3RoLWUuaixqPWcrdyxrPWIrdztpZihqPHMmJms8cyl7aWYodzwxMnx8aj5iJiZrPmcpe2NvbnN0IGU9dyszPj4yO2ZvcihsZXQgdD0wO3Q8ZTsrK3Qpe2lbYisrXT1pW2crK107aVtiKytdPWlbZysrXTtpW2IrK109aVtnKytdO2lbYisrXT1pW2crK119fWVsc2UgaS5jb3B5V2l0aGluKGIsZyxqKTtlLmorPXc7ZS5tZXRhQmxvY2tMZW5ndGgtPXc7ZS5wb3MrPXd9ZWxzZSBmb3IoO2UuajxlLmNvcHlMZW5ndGg7KXtpW2UucG9zXT1pW2UucG9zLWUuZGlzdGFuY2Umc107ZS5tZXRhQmxvY2tMZW5ndGgtLTtlLnBvcysrO2UuaisrO2lmKGUucG9zPj1yKXtlLm5leHRSdW5uaW5nU3RhdGU9ODtlLnJ1bm5pbmdTdGF0ZT0xMjticmVha319OD09PWUucnVubmluZ1N0YXRlJiYoZS5ydW5uaW5nU3RhdGU9NCk7Y29udGludWU7Y2FzZSA5OnQ9ZG9Vc2VEaWN0aW9uYXJ5KGUscik7aWYodDwwKXJldHVybiB0O2NvbnRpbnVlO2Nhc2UgMTQ6ZS5wb3MrPWNvcHlGcm9tQ29tcG91bmREaWN0aW9uYXJ5KGUscik7aWYoZS5wb3M+PXIpe2UubmV4dFJ1bm5pbmdTdGF0ZT0xNDtlLnJ1bm5pbmdTdGF0ZT0xMjtyZXR1cm4gMn1lLnJ1bm5pbmdTdGF0ZT00O2NvbnRpbnVlO2Nhc2UgNTpmb3IoO2UubWV0YUJsb2NrTGVuZ3RoPjA7KXtpZihlLmhhbGZPZmZzZXQ+MjAzMCl7dD1yZWFkTW9yZUlucHV0KGUpO2lmKHQ8MClyZXR1cm4gdH1pZihlLmJpdE9mZnNldD49MTYpe2UuYWNjdW11bGF0b3IzMj1lLnNob3J0QnVmZmVyW2UuaGFsZk9mZnNldCsrXTw8MTZ8ZS5hY2N1bXVsYXRvcjMyPj4+MTY7ZS5iaXRPZmZzZXQtPTE2fXJlYWRGZXdCaXRzKGUsOCk7ZS5tZXRhQmxvY2tMZW5ndGgtLX1lLnJ1bm5pbmdTdGF0ZT0yO2NvbnRpbnVlO2Nhc2UgNjp0PWNvcHlVbmNvbXByZXNzZWREYXRhKGUpO2lmKHQ8MClyZXR1cm4gdDtjb250aW51ZTtjYXNlIDEyOmUucmluZ0J1ZmZlckJ5dGVzUmVhZHk9TWF0aC5taW4oZS5wb3MsZS5yaW5nQnVmZmVyU2l6ZSk7ZS5ydW5uaW5nU3RhdGU9MTM7Y29udGludWU7Y2FzZSAxMzp0PXdyaXRlUmluZ0J1ZmZlcihlKTtpZigwIT09dClyZXR1cm4gdDtlLnBvcz49ZS5tYXhCYWNrd2FyZERpc3RhbmNlJiYoZS5tYXhEaXN0YW5jZT1lLm1heEJhY2t3YXJkRGlzdGFuY2UpO2lmKGUucG9zPj1lLnJpbmdCdWZmZXJTaXplKXtlLnBvcz5lLnJpbmdCdWZmZXJTaXplJiZpLmNvcHlXaXRoaW4oMCxlLnJpbmdCdWZmZXJTaXplLGUucG9zKTtlLnBvcz1lLnBvcyZzO2UucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbj0wfWUucnVubmluZ1N0YXRlPWUubmV4dFJ1bm5pbmdTdGF0ZTtjb250aW51ZTtkZWZhdWx0OnJldHVybiBtYWtlRXJyb3IoZSwtMjgpfWlmKDEwIT09ZS5ydW5uaW5nU3RhdGUpcmV0dXJuIG1ha2VFcnJvcihlLC0yOSk7aWYoZS5tZXRhQmxvY2tMZW5ndGg8MClyZXR1cm4gbWFrZUVycm9yKGUsLTEwKTt0PWp1bXBUb0J5dGVCb3VuZGFyeShlKTtpZigwIT09dClyZXR1cm4gdDt0PWNoZWNrSGVhbHRoKGUsMSk7cmV0dXJuIDAhPT10P3Q6MX1jb25zdCBjPW5ldyBmdW5jdGlvbiBUcmFuc2Zvcm1zKGUsdCxuKXt0aGlzLm51bVRyYW5zZm9ybXM9MDt0aGlzLnRyaXBsZXRzPW5ldyBJbnQzMkFycmF5KDApO3RoaXMucHJlZml4U3VmZml4U3RvcmFnZT1uZXcgSW50OEFycmF5KDApO3RoaXMucHJlZml4U3VmZml4SGVhZHM9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5wYXJhbXM9bmV3IEludDE2QXJyYXkoMCk7dGhpcy5udW1UcmFuc2Zvcm1zPWU7dGhpcy50cmlwbGV0cz1uZXcgSW50MzJBcnJheSgzKmUpO3RoaXMucGFyYW1zPW5ldyBJbnQxNkFycmF5KGUpO3RoaXMucHJlZml4U3VmZml4U3RvcmFnZT1uZXcgSW50OEFycmF5KHQpO3RoaXMucHJlZml4U3VmZml4SGVhZHM9bmV3IEludDMyQXJyYXkobisxKX0oMTIxLDE2Nyw1MCk7IWZ1bmN0aW9uIHVucGFja1RyYW5zZm9ybXMoZSx0LG4sYSxyKXtjb25zdCBzPXRvVXRmOFJ1bmVzKGEpLGk9cy5sZW5ndGg7bGV0IG89MSxsPTA7Zm9yKGxldCBuPTA7bjxpOysrbil7Y29uc3QgYT1zW25dOzM1PT09YT90W28rK109bDplW2wrK109YX1mb3IobGV0IGU9MDtlPDM2MzsrK2UpbltlXT1yLmNoYXJDb2RlQXQoZSktMzJ9KGMucHJlZml4U3VmZml4U3RvcmFnZSxjLnByZWZpeFN1ZmZpeEhlYWRzLGMudHJpcGxldHMsJyMgI3MgIywgI2UgIy4jIHRoZSAjLmNvbS8jw4LCoCMgb2YgIyBhbmQgIyBpbiAjIHRvICMiIyI+I1xuI10jIGZvciAjIGEgIyB0aGF0ICMuICMgd2l0aCAjXCcjIGZyb20gIyBieSAjLiBUaGUgIyBvbiAjIGFzICMgaXMgI2luZyAjXG5cdCM6I2VkICMoIyBhdCAjbHkgIz0iIyBvZiB0aGUgIy4gVGhpcyAjLCMgbm90ICNlciAjYWwgIz1cJyNmdWwgI2l2ZSAjbGVzcyAjZXN0ICNpemUgI291cyAjJywiICAgICAhISAhICwgICohICAmISAgXCIgISAgKSAqICAgKiAtICAhICMgISAgIyEqISAgKyAgLCQgISAgLSAgJSAgLiAgLyAjICAgMCAgMSAuICBcIiAgIDIgIDMhKiAgIDQlICAhICMgLyAgIDUgIDYgIDcgIDggMCAgMSAmICAgJCAgIDkgKyAgIDogIDsgIDwgJyAgIT0gID4gID8hIDQgIEAgNCAgMiAgJiAgIEEgKiMgKCAgIEIgIEMmICkgJSAgKSAhKiMgKi0lIEEgKyEgKi4gIEQhICUnICAmIEUgKjYgIEYgIEclICEgKkEgKiUgIEghIEQgIEkhKyEgIEohKyAgIEsgKy0gKjQhIEEgIEwhKjQgIE0gIE4gKzYgIE8hKiUgKy4hIEsgKkcgIFAgKyUoICAhIEcgKkQgK0QgIFEgKyMgKkshKkchK0QhKyMgK0cgK0EgKzQhKyUgK0shKzQhKkQhK0shKksiKTtmdW5jdGlvbiBnZXROZXh0S2V5KGUsdCl7bGV0IG49MTw8dC0xO2Zvcig7MCE9PShlJm4pOyluPj49MTtyZXR1cm4oZSZuLTEpK259ZnVuY3Rpb24gcmVwbGljYXRlVmFsdWUoZSx0LG4sYSxyKXtsZXQgcz1hO2Zvcig7cz4wOyl7cy09bjtlW3Qrc109cn19ZnVuY3Rpb24gbmV4dFRhYmxlQml0U2l6ZShlLHQsbil7bGV0IGE9dCxyPTE8PGEtbjtmb3IoO2E8MTU7KXtyLT1lW2FdO2lmKHI8PTApYnJlYWs7YSsrO3I8PD0xfXJldHVybiBhLW59ZnVuY3Rpb24gYnVpbGRIdWZmbWFuVGFibGUoZSx0LG4sYSxyKXtjb25zdCBzPWVbdF0saT1uZXcgSW50MzJBcnJheShyKSxvPW5ldyBJbnQzMkFycmF5KDE2KSxsPW5ldyBJbnQzMkFycmF5KDE2KTtmb3IobGV0IGU9MDtlPHI7KytlKW9bYVtlXV0rKztsWzFdPTA7Zm9yKGxldCBlPTE7ZTwxNTsrK2UpbFtlKzFdPWxbZV0rb1tlXTtmb3IobGV0IGU9MDtlPHI7KytlKTAhPT1hW2VdJiYoaVtsW2FbZV1dKytdPWUpO2xldCBmPW4sYz0xPDxmLGg9YztpZigxPT09bFsxNV0pe2ZvcihsZXQgdD0wO3Q8aDsrK3QpZVtzK3RdPWlbMF07cmV0dXJuIGh9bGV0IHU9MCxtPTAscD0xO2ZvcihsZXQgdD0xO3Q8PW47Kyt0KXtwPDw9MTtmb3IoO29bdF0+MDspe3JlcGxpY2F0ZVZhbHVlKGUscyt1LHAsYyx0PDwxNnxpW20rK10pO3U9Z2V0TmV4dEtleSh1LHQpO29bdF0tLX19Y29uc3QgZD1oLTE7bGV0IGc9LTEsYj1zO3A9MTtmb3IobGV0IHQ9bisxO3Q8PTE1OysrdCl7cDw8PTE7Zm9yKDtvW3RdPjA7KXtpZigodSZkKSE9PWcpe2IrPWM7Zj1uZXh0VGFibGVCaXRTaXplKG8sdCxuKTtjPTE8PGY7aCs9YztnPXUmZDtlW3MrZ109ZituPDwxNnxiLXMtZ31yZXBsaWNhdGVWYWx1ZShlLGIrKHU+Pm4pLHAsYyx0LW48PDE2fGlbbSsrXSk7dT1nZXROZXh0S2V5KHUsdCk7b1t0XS0tfX1yZXR1cm4gaH1mdW5jdGlvbiByZWFkTW9yZUlucHV0KGUpe2lmKDAhPT1lLmVuZE9mU3RyZWFtUmVhY2hlZClyZXR1cm4gaGFsZkF2YWlsYWJsZShlKT49LTI/MDptYWtlRXJyb3IoZSwtMTYpO2NvbnN0IHQ9ZS5oYWxmT2Zmc2V0PDwxO2xldCBuPTQwOTYtdDtlLmJ5dGVCdWZmZXIuY29weVdpdGhpbigwLHQsNDA5Nik7ZS5oYWxmT2Zmc2V0PTA7Zm9yKDtuPDQwOTY7KXtjb25zdCB0PTQwOTYtbixhPXJlYWRJbnB1dChlLGUuYnl0ZUJ1ZmZlcixuLHQpO2lmKGE8LTEpcmV0dXJuIGE7aWYoYTw9MCl7ZS5lbmRPZlN0cmVhbVJlYWNoZWQ9MTtlLnRhaWxCeXRlcz1uO24rPTE7YnJlYWt9bis9YX0hZnVuY3Rpb24gYnl0ZXNUb05pYmJsZXMoZSx0KXtjb25zdCBuPWUuYnl0ZUJ1ZmZlcixhPXQ+PjEscj1lLnNob3J0QnVmZmVyO2ZvcihsZXQgZT0wO2U8YTsrK2UpcltlXT0yNTUmblsyKmVdfCgyNTUmblsyKmUrMV0pPDw4fShlLG4pO3JldHVybiAwfWZ1bmN0aW9uIGNoZWNrSGVhbHRoKGUsdCl7aWYoMD09PWUuZW5kT2ZTdHJlYW1SZWFjaGVkKXJldHVybiAwO2NvbnN0IG49KGUuaGFsZk9mZnNldDw8MSkrKGUuYml0T2Zmc2V0Kzc+PjMpLTQ7cmV0dXJuIG4+ZS50YWlsQnl0ZXM/bWFrZUVycm9yKGUsLTEzKTowIT09dCYmbiE9PWUudGFpbEJ5dGVzP21ha2VFcnJvcihlLC0xNyk6MH1mdW5jdGlvbiByZWFkRmV3Qml0cyhlLHQpe2NvbnN0IG49ZS5hY2N1bXVsYXRvcjMyPj4+ZS5iaXRPZmZzZXQmKDE8PHQpLTE7ZS5iaXRPZmZzZXQrPXQ7cmV0dXJuIG59ZnVuY3Rpb24gcmVhZE1hbnlCaXRzKGUsdCl7Y29uc3Qgbj1yZWFkRmV3Qml0cyhlLDE2KTtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNjtyZXR1cm4gbnxyZWFkRmV3Qml0cyhlLHQtMTYpPDwxNn1mdW5jdGlvbiBwcmVwYXJlKGUpe2lmKGUuaGFsZk9mZnNldD4yMDMwKXtjb25zdCB0PXJlYWRNb3JlSW5wdXQoZSk7aWYoMCE9PXQpcmV0dXJuIHR9bGV0IHQ9Y2hlY2tIZWFsdGgoZSwwKTtpZigwIT09dClyZXR1cm4gdDtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNjtlLmFjY3VtdWxhdG9yMzI9ZS5zaG9ydEJ1ZmZlcltlLmhhbGZPZmZzZXQrK108PDE2fGUuYWNjdW11bGF0b3IzMj4+PjE2O2UuYml0T2Zmc2V0LT0xNjtyZXR1cm4gMH1mdW5jdGlvbiByZWxvYWQoZSl7cmV0dXJuIDMyPT09ZS5iaXRPZmZzZXQ/cHJlcGFyZShlKTowfWZ1bmN0aW9uIGp1bXBUb0J5dGVCb3VuZGFyeShlKXtjb25zdCB0PTMyLWUuYml0T2Zmc2V0Jjc7aWYoMCE9PXQpe2lmKDAhPT1yZWFkRmV3Qml0cyhlLHQpKXJldHVybiBtYWtlRXJyb3IoZSwtNSl9cmV0dXJuIDB9ZnVuY3Rpb24gaGFsZkF2YWlsYWJsZShlKXtsZXQgdD0yMDQ4OzAhPT1lLmVuZE9mU3RyZWFtUmVhY2hlZCYmKHQ9ZS50YWlsQnl0ZXMrMT4+MSk7cmV0dXJuIHQtZS5oYWxmT2Zmc2V0fWNvbnN0IGg9bmV3IEludDMyQXJyYXkoMjA0OCk7IWZ1bmN0aW9uIHVucGFja0xvb2t1cFRhYmxlKGUsdCxuKXtmb3IobGV0IHQ9MDt0PDI1NjsrK3Qpe2VbdF09NjMmdDtlWzUxMit0XT10Pj4yO2VbMTc5Mit0XT0yKyh0Pj42KX1mb3IobGV0IG49MDtuPDEyODsrK24pZVsxMDI0K25dPTQqKHQuY2hhckNvZGVBdChuKS0zMik7Zm9yKGxldCB0PTA7dDw2NDsrK3Qpe2VbMTE1Mit0XT0xJnQ7ZVsxMjE2K3RdPTIrKDEmdCl9bGV0IGE9MTI4MDtmb3IobGV0IHQ9MDt0PDE5OysrdCl7Y29uc3Qgcj0zJnQscz1uLmNoYXJDb2RlQXQodCktMzI7Zm9yKGxldCB0PTA7dDxzOysrdCllW2ErK109cn1mb3IobGV0IHQ9MDt0PDE2OysrdCl7ZVsxNzkyK3RdPTE7ZVsyMDMyK3RdPTZ9ZVsxNzkyXT0wO2VbMjA0N109Nztmb3IobGV0IHQ9MDt0PDI1NjsrK3QpZVsxNTM2K3RdPWVbMTc5Mit0XTw8M30oaCwiICAgICAgICAgISEgICEgICAgICAgICAgICAgICAgICBcIiMkIyMlIyQmJyMjKCMpIysrKysrKysrKysoKCYqJyMjLC0tLSwtLS0sLS0tLS0sLS0tLS0sLS0tLS0mIycjIyMuLy8vLi8vLy4vLy8vLy4vLy8vLy4vLy8vLyYjJyMgIiwiQS8qICAnOiAgJiA6ICQgIMKBIEAiKTtmdW5jdGlvbiBTdGF0ZSgpe3RoaXMucmluZ0J1ZmZlcj1uZXcgSW50OEFycmF5KDApO3RoaXMuY29udGV4dE1vZGVzPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5jb250ZXh0TWFwPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5kaXN0Q29udGV4dE1hcD1uZXcgSW50OEFycmF5KDApO3RoaXMuZGlzdEV4dHJhQml0cz1uZXcgSW50OEFycmF5KDApO3RoaXMub3V0cHV0PW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5ieXRlQnVmZmVyPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5zaG9ydEJ1ZmZlcj1uZXcgSW50MTZBcnJheSgwKTt0aGlzLmludEJ1ZmZlcj1uZXcgSW50MzJBcnJheSgwKTt0aGlzLnJpbmdzPW5ldyBJbnQzMkFycmF5KDApO3RoaXMuYmxvY2tUcmVlcz1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmxpdGVyYWxUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5jb21tYW5kVHJlZUdyb3VwPW5ldyBJbnQzMkFycmF5KDApO3RoaXMuZGlzdGFuY2VUcmVlR3JvdXA9bmV3IEludDMyQXJyYXkoMCk7dGhpcy5kaXN0T2Zmc2V0PW5ldyBJbnQzMkFycmF5KDApO3RoaXMuYWNjdW11bGF0b3I2ND0wO3RoaXMucnVubmluZ1N0YXRlPTA7dGhpcy5uZXh0UnVubmluZ1N0YXRlPTA7dGhpcy5hY2N1bXVsYXRvcjMyPTA7dGhpcy5iaXRPZmZzZXQ9MDt0aGlzLmhhbGZPZmZzZXQ9MDt0aGlzLnRhaWxCeXRlcz0wO3RoaXMuZW5kT2ZTdHJlYW1SZWFjaGVkPTA7dGhpcy5tZXRhQmxvY2tMZW5ndGg9MDt0aGlzLmlucHV0RW5kPTA7dGhpcy5pc1VuY29tcHJlc3NlZD0wO3RoaXMuaXNNZXRhZGF0YT0wO3RoaXMubGl0ZXJhbEJsb2NrTGVuZ3RoPTA7dGhpcy5udW1MaXRlcmFsQmxvY2tUeXBlcz0wO3RoaXMuY29tbWFuZEJsb2NrTGVuZ3RoPTA7dGhpcy5udW1Db21tYW5kQmxvY2tUeXBlcz0wO3RoaXMuZGlzdGFuY2VCbG9ja0xlbmd0aD0wO3RoaXMubnVtRGlzdGFuY2VCbG9ja1R5cGVzPTA7dGhpcy5wb3M9MDt0aGlzLm1heERpc3RhbmNlPTA7dGhpcy5kaXN0UmJJZHg9MDt0aGlzLnRyaXZpYWxMaXRlcmFsQ29udGV4dD0wO3RoaXMubGl0ZXJhbFRyZWVJZHg9MDt0aGlzLmNvbW1hbmRUcmVlSWR4PTA7dGhpcy5qPTA7dGhpcy5pbnNlcnRMZW5ndGg9MDt0aGlzLmNvbnRleHRNYXBTbGljZT0wO3RoaXMuZGlzdENvbnRleHRNYXBTbGljZT0wO3RoaXMuY29udGV4dExvb2t1cE9mZnNldDE9MDt0aGlzLmNvbnRleHRMb29rdXBPZmZzZXQyPTA7dGhpcy5kaXN0YW5jZUNvZGU9MDt0aGlzLm51bURpcmVjdERpc3RhbmNlQ29kZXM9MDt0aGlzLmRpc3RhbmNlUG9zdGZpeEJpdHM9MDt0aGlzLmRpc3RhbmNlPTA7dGhpcy5jb3B5TGVuZ3RoPTA7dGhpcy5tYXhCYWNrd2FyZERpc3RhbmNlPTA7dGhpcy5tYXhSaW5nQnVmZmVyU2l6ZT0wO3RoaXMucmluZ0J1ZmZlclNpemU9MDt0aGlzLmV4cGVjdGVkVG90YWxTaXplPTA7dGhpcy5vdXRwdXRPZmZzZXQ9MDt0aGlzLm91dHB1dExlbmd0aD0wO3RoaXMub3V0cHV0VXNlZD0wO3RoaXMucmluZ0J1ZmZlckJ5dGVzV3JpdHRlbj0wO3RoaXMucmluZ0J1ZmZlckJ5dGVzUmVhZHk9MDt0aGlzLmlzRWFnZXI9MDt0aGlzLmlzTGFyZ2VXaW5kb3c9MDt0aGlzLmNkTnVtQ2h1bmtzPTA7dGhpcy5jZFRvdGFsU2l6ZT0wO3RoaXMuY2RCckluZGV4PTA7dGhpcy5jZEJyT2Zmc2V0PTA7dGhpcy5jZEJyTGVuZ3RoPTA7dGhpcy5jZEJyQ29waWVkPTA7dGhpcy5jZENodW5rcz1uZXcgQXJyYXkoMCk7dGhpcy5jZENodW5rT2Zmc2V0cz1uZXcgSW50MzJBcnJheSgwKTt0aGlzLmNkQmxvY2tCaXRzPTA7dGhpcy5jZEJsb2NrTWFwPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5pbnB1dD1uZXcgSW5wdXRTdHJlYW0obmV3IEludDhBcnJheSgwKSk7dGhpcy5yaW5nQnVmZmVyPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5yaW5ncz1uZXcgSW50MzJBcnJheSgxMCk7dGhpcy5yaW5nc1swXT0xNjt0aGlzLnJpbmdzWzFdPTE1O3RoaXMucmluZ3NbMl09MTE7dGhpcy5yaW5nc1szXT00fWxldCB1PW5ldyBJbnQ4QXJyYXkoMCk7Y29uc3QgbT1uZXcgSW50MzJBcnJheSgzMikscD1uZXcgSW50MzJBcnJheSgzMik7Y29uc3QgZD1uZXcgSW50OEFycmF5KDEyMjc4NCksZz1uZXcgSW50MzJBcnJheSgyNSk7IWZ1bmN0aW9uIHVucGFja0RpY3Rpb25hcnlEYXRhKGUsdCxuLGEscixzKXtjb25zdCBpPWZ1bmN0aW9uIHRvVXNBc2NpaUJ5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGgsbj1uZXcgSW50OEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDsrK2EpblthXT1lLmNoYXJDb2RlQXQoYSk7cmV0dXJuIG59KHQrbiksbz10b1V0ZjhSdW5lcyhhKTtsZXQgbD0wO2NvbnN0IGY9by5sZW5ndGg+PjE7Zm9yKGxldCBlPTA7ZTxmOysrZSl7Y29uc3QgdD1vWzIqZV0tMzYsbj1vWzIqZSsxXS0zNjtmb3IobGV0IGU9MDtlPHQ7KytlKXtpW2xdPTNeaVtsXTtsKyt9Zm9yKGxldCBlPTA7ZTxuOysrZSl7aVtsXT0yMzZeaVtsXTtsKyt9fWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7KytlKXJbZV09cy5jaGFyQ29kZUF0KGUpLTY1O2Uuc2V0KGkpfShkLCd3am5mZ2x0bW9qZWZvZmV3YWJgaGBsZ2ZnYndicGtsdGxtb3pwandmYGp3emxzZm1pdnB3b2poZmVxZmZ0bHFod2Z7d3pmYnFsdWZxYWxnem9sdWZlbHFuYWxsaHNvYnpvanVmb2ptZmtmb3NrbG5mcGpnZm5scWZ0bHFnb2xtZHdrZm51amZ0ZWptZ3NiZGZnYnpwZXZvb2tmYmd3ZnFuZmJga2JxZmJlcWxud3F2Zm5icWhiYW9mdnNsbWtqZGtnYndmb2JtZ21mdHBmdWZtbWZ7d2BicGZhbHdrc2xwd3ZwZmduYmdma2JtZ2tmcWZ0a2J3bWJuZk9qbWhhb2xkcGp5ZmFicGZrZm9nbmJoZm5iam12cGZxJCojKGtsb2dmbWdwdGp3a01mdHBxZmJndGZxZnBqZG13Ymhma2J1ZmRibmZwZmZtYGJvb3Nid2t0Zm9vc292cG5mbXZlam9uc2Jxd2lsam13a2pwb2pwd2RsbGdtZmZndGJ6cHRmcHdpbGFwbmptZ2JvcGxvbGRscWpga3ZwZnBvYnB3d2ZibmJxbnplbGxnaGptZHRqb29mYnB3dGJxZ2FmcHdlanFmU2JkZmhtbHRidGJ6LXNtZG5sdWZ3a2Jtb2xiZ2RqdWZwZm9lbWx3Zm52YGtlZmZnbmJtenFsYGhqYGxtbG1gZm9sbGhramdmZ2pmZ0tsbmZxdm9ma2xwd2JpYntqbWVsYG92YW9idHBvZnBwa2JvZXBsbmZwdmBreWxtZjIzMyZsbWZwYGJxZldqbmZxYmBmYW92ZmVsdnF0ZmZoZWJgZmtsc2ZkYnVma2JxZ29scHd0a2Ztc2JxaGhmc3dzYnBwcGtqc3FsbG5LV05Pc29ibVd6c2ZnbG1mcGJ1ZmhmZnNlb2Jkb2ptaHBsb2dlanVmd2xsaHFid2Z3bHRtaXZuc3drdnBnYnFoYGJxZ2Vqb2ZlZmJxcHdiemhqb293a2J3ZWJvb2J2d2xmdWZxLWBsbndib2hwa2xzdWx3ZmdmZnNubGdmcWZwd3d2cW1hbHFtYWJtZ2Vmb29xbHBmdnFvK3Boam1xbG9mYGxuZmJgd3BiZGZwbmZmd2Rsb2ctaXNkandmbnVicXplZm93d2tmbXBmbWdncWxzVWpmdGBsc3oyLTMhPyxiPXB3bHNmb3Bmb2pmcHdsdnFzYmBoLWRqZXNicHdgcHA8ZHFiem5mYm0lZHc4cWpnZnBrbHdvYndmcGJqZ3FsYmd1YnEjZWZmb2lsa21xamBoc2xxd2VicHckVkIuZ2ZiZz8sYT1zbGxxYWpvb3d6c2ZWLVAtdGxsZ252cHcxc3s4Sm1lbHFibWh0amdmdGJtd3Rib29vZmJnWDNeOHNidm90YnVmcHZxZlwnKyQgdGJqd25icHBicW5wZGxmcGRiam1vYm1kc2JqZyIuLiNvbGBodm1qd3FsbHd0Ym9oZWpxbnRqZWZ7bm8hcGxtZHdmcHcxM3N7aGptZ3FsdHB3bGxvZWxtd25iam9wYmVmcHdicW5ic3BgbHFmcWJqbWVvbHRhYmF6cHNibXBienA3c3s4NXN7OGJxd3BlbGx3cWZib3RqaGprZmJ3cHdmc3dxanNscWQsb2JoZnRmYmh3bG9nRWxxbmBicHdlYm1wYWJtaHVmcXpxdm1waXZvendicGgyc3s4ZGxib2RxZnRwb2x0ZmdkZmpnPiFwZndwNnN7OC1pcDw3M3N7amUjK3BsbG1wZmJ3bWxtZnd2YWZ5ZnFscGZtd3FmZmdlYmB3am13bGRqZXdrYnFuMjtze2BibmZram9vYWxvZ3lsbG51bGpnZmJwenFqbWRlam9vc2ZiaGptandgbHB3MHN7OGliYGh3YmRwYWp3cHFsb29mZ2p3aG1mdG1mYnE/Ii4uZHFsdElQTE1ndnd6TWJuZnBib2Z6bHYjb2x3cHNiam1pYnl5YGxvZ2Z6ZnBlanBrdHR0LXFqcGh3YmFwc3FmdTIzc3txanBmMTZze0FvdmZnam1kMDMzL2Fib29lbHFnZmJxbXRqb2dhbHstZWJqcW9iYGh1ZnFwc2JqcWl2bWZ3ZmBramUrInNqYGhmdWpvXCcrISB0YnFub2xxZ2dsZnBzdm9vLzMzM2pnZmJncWJ0a3ZkZnBzbHdldm1nYXZxbWtxZmVgZm9vaGZ6cHdqYGhrbHZxb2xwcGV2Zm8yMXN7cHZqd2dmYm9RUFAhYmRmZ2RxZnpERlchZmJwZmJqbnBkanFvYmpncDtzezhtYnV6ZHFqZ3dqc3AgOjo6dGJxcG9iZ3pgYnFwKjgjfnNrczxrZm9vd2Jvb3RrbG55azlcdCksDlx0IzIzM2tib28tXHRcdEI0c3s4c3Zwa2BrYnczc3s4YHFmdCksPyxrYnBrNDZze2VvYndxYnFmIyUlI3dmb29gYm5zbG13bG9iamduanBwcGhqc3dmbXdlam1mbmJvZmRmd3Bzb2x3NzMzLw5cdA5cdGBsbG9lZmZ3LXNrcz9hcT1mcWpgbmxwd2R2amdhZm9vZ2ZwYGtianFuYndrYndsbixqbmQlIDsxb3ZgaGBmbXczMzM4d2ptemRsbWZrd25vcGZvb2dxdmRFUUZGbWxnZm1qYGg8amc+b2xwZm12b291YnB3dGptZ1FQUCN0ZmJxcWZvemFmZm1wYm5mZ3ZoZm1icGJgYnNmdGpwa2R2b2VXMTA5a2p3cHBvbHdkYndmaGpgaGFvdnF3a2Z6MjZzeyQkKjgqOCE9bnBqZnRqbXBhanFncGxxd2Fmd2JwZmZoVzI7OWxxZ3B3cWZmbmJvbzUzc3tlYnFuDmx1cGFsenBYM14tJCo4IVNMUFdhZmJxaGpncCo4fn5uYnF6d2ZtZytWSCpydmJneWs5XG4ucGp5Li4uLnNxbHMkKjgOb2pld1cyOjl1amBmYm1nemdmYXc9UVBQc2xsb21mYGhhb2x0VzI1OWdsbHFmdWJvVzI0OW9md3BlYmpvbHFib3Nsb29tbHViYGxvcGRmbWYjDmx4cGxld3FsbmZ3am9vcWxwcD9rMD1zbHZxZWJnZnNqbWg/d3E9bmptaip/Iituam1meWs5BGFicXBrZmJxMzMqOG5qb2gjLi49anFsbWVxZmdnanBodGZtd3Bsam9zdndwLGlwLGtsb3pXMTE5SlBBTVcxMzliZ2JucGZmcD9rMT1pcGxtJC8jJGBsbXdXMTI5I1FQUG9sbHNicGpibmxsbT8scz1wbHZvT0pNRmVscXdgYnF3VzI3OT9rMj07M3N7Ii4uPzpzezhXMzc5bmpoZjk3NVltamBmam1ga1pscWhxamBmeWs5XGIkKio4c3ZxZm5iZGZzYnFid2xtZmFsbWc5MDRZXFxsZVxcJF4qODMzMy95azlcdndibWh6YnFnYWx0b2F2cGs5NjVZSWJ1YjAzc3tcdH9+XHQmQDAmOTA3WWlmZWVGW1NKYGJwa3VqcGJkbG9lcG1sdHlrOQVydmZxLWBwcHBqYGhuZmJ3bmptLWFqbWdnZm9va2pxZnNqYHBxZm13OTA1WUtXV1MuMTMyZWx3bHRsb2VGTUcje2Fsezk2N1lBTEdaZ2pgaDhcdH5cdGZ7anc5MDZZdWJxcGFmYnckfio4Z2pmdzo6OjhibW1mfn4/LFhqXi1PYm1kaG4uXnRqcWZ3bHpwYmdncHBmYm9ib2Z7OFx0XG5+ZmBrbG1qbWYtbHFkMzM2KndsbXppZnRwcGJtZ29mZHBxbGxlMzMzKiMxMzN0am1mZGZicWdsZHBhbGx3ZGJxemB2d3B3em9md2Zuc3dqbG0te25vYGxgaGRibWRcJyskLTYzc3tTay1HbmpwYGJvYm1vbGJtZ2ZwaG5qb2ZxemJtdm1qe2dqcGAqOH5cdGd2cHdgb2pzKi1cdFx0NDNzey4xMzNHVUdwNF49P3dic2ZnZm5saigoKnRiZGZmdnFsc2tqb2xzd3BrbG9mRUJScGJwam0uMTVXb2JhcHNmd3BWUU8jYXZvaGBsbGg4fg5cdEtGQkdYM14qYmFhcWl2Ym0rMjo7b2Zwa3d0am0/LGo9cGxtemR2enBldmBoc2pzZn8uXHQiMzMxKm1nbHRYMl44WF44XHRPbGQjcGJvdw5cdFxuXG5hYm1kd3FqbmFid2sqeA5cdDMzc3tcdH4qOGhsOVwwZWZmcGJnPQ5wOSwsI1heOHdsb29zb3ZkKyp4XHR4Dlx0Iy1pcCQxMzNzZ3Zib2FsYnctSVNEKjhcdH5ydmx3KjhcdFx0JCo4XHQOXHR+DjEzMjcxMzI2MTMyNTEzMjQxMzI7MTMyOjEzMTMxMzEyMTMxMTEzMTAxMzE3MTMxNjEzMTUxMzE0MTMxOzEzMToxMzAzMTMwMjEzMDExMzAwMTMwNzEzMDYxMzA1MTMwNDEzMjAxMzIxMTMyMjEzMjMxMzM6MTMzOzEzMzQxMzM1MTMzNjEzMzcxMzMwMTMzMTEzMzIxMzMzMjo6OjI6OjsyOjo0Mjo6NTI6OjYyOjo3Mjo6MDI6OjEyOjoyMjo6MzI6OzoyOjs7Mjo7NDI6OzUyOjs2Mjo7NzI6OzAyOjsxMjo7MjI6OzMyOjQ6Mjo0OzI6NDQyOjQ1Mjo0NjI6NDcyOjQwMjo0MTI6NDIyOjQzMjo1OjI6NTsyOjU0Mjo1NTI6NTYyOjU3Mjo1MDI6NTEyOjUyMjo1MzI6NjoyOjY7Mjo2NDI6NjUyOjY2Mjo2NzI6NjAyOjYxMjo2MjI6NjMyMzMzMjMxNzIwOjczMzMzOjo6OmBsbmxuL01wZnB3ZmZwd2JzZnFsd2xnbGtiYGZgYmdiYi9dbGFqZm1nL0FiYnAvQXVqZ2JgYnBsbHdxbGVscWxwbG9sbHdxYmB2Ym9namlscGpnbGRxYm13anNsd2ZuYmdmYWZib2RscnYvRWZwd2xtYmdid3FmcHNsYGxgYnBiYWJpbHdsZ2Jwam1sYmR2YnN2ZnB2bWxwYm13ZmdqYGZvdmpwZm9vYm5iemx5bG1iYm5scXNqcGxsYXFiYG9qYGZvb2xnamxwa2xxYmBicGo8WzxcXDxRPFxcPFI8UD1sPFxcPWw9bz1uPFxcPFE8WTxTPFI8Uj1uPFQ8WzxRPFI8WDxSPW48UjxaPFk8UjxRPFQ9aTxxPFxcPFk8WTxdPWc8UD1nPH49Zz1tPFI8Xj1nPF48UjxxPFI8UjxdPHM8UjxXPFQ8UTxUPEw8SDxxPFk8cD1nPW49ZzxyPFE8VDxQPFg8XFw8ezxcXDx4PFxcPHE9bzxyPF09bjxZPHQ8WzxZPFU8UT1vPFA8UDxOPWc9bzxaNW01ZjRPNWo1aTRLNWk0VTVvNWg0TzVkNF00QzVmNEs1bTVlNWs1ZDVoNWk1aDVvNEs1ZDVoNWs0RDRfNEs1aDRJNWo1azVmNE81ZjVuNEM1azVoNEc1aTRENWs1aDVkNWg1ZjRENWg0SzVmNEQ1bzRYNWY0SzVpNE81aTVqNEY0RDVmNWg1ajRBNEQ1azVpNWk0WDVkNFhlanFwd3VqZ2Zsb2pka3d0bHFvZ25mZ2pidGtqd2Zgb2xwZmFvYmBocWpka3dwbmJvb2FsbGhwc29iYGZudnBqYGVqZm9nbHFnZnFzbGptd3Vib3Zmb2Z1Zm93YmFvZmFsYnFna2x2cGZkcWx2c3RscWhwemZicXBwd2J3ZndsZ2J6dGJ3ZnFwd2Jxd3B3em9mZ2Zid2tzbHRmcXNrbG1mbWpka3dmcXFscWptc3Z3YmFsdnd3ZnFucHdqd29md2xsb3BmdWZtd29sYGJvd2puZnBvYnFkZnRscWdwZGJuZnBwa2xxd3BzYmBmZWxgdnBgb2ZicW5sZ2ZvYW9sYGhkdmpnZnFiZ2pscGticWZ0bG5mbWJkYmptbmxtZnpqbmJkZm1ibmZwemx2bWRvam1mcG9id2ZxYGxvbHFkcWZmbWVxbG13JWJuczh0Yndga2VscWBmc3FqYGZxdm9mcGFmZGptYmV3ZnF1anBqd2pwcHZmYnFmYnBhZm9sdGptZ2Z7d2x3Ym9rbHZxcG9iYWZvc3FqbXdzcWZwcGF2am93b2ptaHBwc2ZmZ3B3dmd6d3FiZ2ZlbHZtZ3BmbXBmdm1nZnFwa2x0bWVscW5wcWJtZGZiZ2dmZ3B3am9vbmx1Zmd3YmhmbWJhbHVmZW9icGtlantmZ2xld2ZtbHdrZnF1amZ0cGBrZmBob2ZkYm9xanVmcWp3Zm5wcnZqYGhwa2JzZmt2bmJtZntqcHdkbGptZG5sdWpmd2tqcWdhYnBqYHNmYmBmcHdiZGZ0amd3a29sZGptamdmYnB0cWx3ZnNiZGZwdnBmcXBncWp1ZnB3bHFmYXFmYmhwbHZ3a3VsamBmcGp3ZnBubG13a3RrZnFmYXZqb2d0a2pga2ZicXdrZWxxdm53a3FmZnBzbHF3c2Jxd3pAb2pgaG9sdGZxb2p1ZnBgb2JwcG9iemZxZm13cXpwd2xxenZwYmRmcGx2bWdgbHZxd3psdnEjYWpxd2tzbHN2c3d6c2ZwYnNzb3pKbmJkZmFmam1kdnNzZnFtbHdmcGZ1ZnF6cGtsdHBuZmJtcGZ7d3FibmJ3YGt3cWJgaGhtbHRtZmJxb3phZmRibXB2c2Zxc2JzZnFtbHF3a29mYnFtZGp1Zm1tYm5mZ2ZtZ2ZnV2ZxbnBzYnF3cERxbHZzYXFibWd2cGptZHRsbmJtZWJvcGZxZmJnemJ2Z2psd2JoZnB0a2pvZi1gbG4sb2p1ZmdgYnBmcGdiam96YGtqb2dkcWZid2l2Z2Rmd2tscGZ2bWp3cG1mdWZxYXFsYmdgbGJwd2BsdWZxYnNzb2Zlam9mcGB6YG9mcGBmbWZzb2JtcGBvamBodHFqd2ZydmZmbXNqZmBmZm5iam9lcWJuZmxvZ2Zxc2tsd2xvam5qd2BiYGtmYGp1am9wYGJvZmZtd2Zxd2tmbmZ3a2ZxZndsdmBrYWx2bWdxbHpib2JwaGZndGtsb2Zwam1gZnB3bGBoI21ibmZlYmp3a2tmYnF3Zm5zd3psZWVmcXBgbHNmbHRtZmduamRrd2JvYXZud2tqbWhhb2xsZ2JxcWJ6bmJpbHF3cXZwd2BibWxtdm1qbG1gbHZtd3Vib2pncHdsbWZQd3pvZk9sZGpta2Jzc3psYGB2cW9mZXc5ZXFmcGtydmp3ZmVqb25wZHFiZ2ZtZmZncHZxYWJtZWpka3dhYnBqcGtsdWZxYnZ3bDhxbHZ3Zi1rd25vbmp7Zmdlam1ib1psdnEjcG9qZ2Z3bHNqYGFxbHRtYm9sbWZncWJ0bXBzb2p3cWZiYGtRamRrd2did2ZwbmJxYGtydmx3ZmRsbGdwT2ptaHBnbHZhd2Jwem1gd2t2bmFib29sdGBramZlemx2d2ttbHVmbzIzc3s4cGZxdWZ2bXdqb2tibWdwQGtmYGhQc2JgZnJ2ZnF6aWJuZnBmcnZib3d0amBmMy8zMzNQd2Jxd3NibWZvcGxtZHBxbHZtZ2ZqZGt3cGtqZXd0bHF3a3NscHdwb2ZiZ3B0ZmZocGJ1bGpnd2tmcGZuam9mcHNvYm1mcG5icXdib3NrYnNvYm13bmJxaHBxYndmcHNvYnpwYG9iam5wYm9mcHdme3dwcHdicXB0cWxtZD8sazA9d2tqbWQtbHFkLG52b3dqa2ZicWdTbHRmcXB3Ym1nd2xoZm1wbG9qZyt3a2pwYXFqbWRwa2pzcHB3YmVld3FqZmdgYm9vcGV2b296ZWJgd3BiZGZtd1dranAjLCwuLj1iZ25qbWZkenN3RnVmbXcyNnN7OEZuYmpvd3F2ZiFgcWxwcHBzZm13YW9sZHBhbHshPW1sd2Znb2ZidWZga2ptYnBqeWZwZHZmcHc/LGs3PXFsYWx3a2ZidXp3cXZmL3BmdWZtZHFibWdgcWpuZnBqZG1wYnRicWZnYm1gZnNrYnBmPT8iLi5mbVxcVlAlIDA6ODEzM3N7XFxtYm5mb2J3am1mbWlsemJpYnstYndqbG1wbmp3a1YtUC0ja2xvZ3BzZndmcWptZ2pibWJ1IT1ga2JqbXBgbHFmYGxuZnBnbGptZHNxamxxUGticWYyOjozcHFsbmJtb2pwd3BpYnNibWVib29wd3FqYm9sdG1mcWJkcWZmPyxrMT1iYXZwZmJvZnF3bHNmcWIhLiwsVGBicWdwa2pvb3B3ZmJucFNrbHdsd3F2d2tgb2ZibS1za3M8cGJqbXduZndib29sdmpwbmZibXdzcWxsZWFxamZlcWx0IT1kZm1xZndxdmBob2xsaHBVYm92ZkVxYm5mLW1mdywuLj1cdD93cXojeFx0dWJxI25iaGZwYGxwd3Bzb2JqbWJndm93cnZmcHd3cWJqbW9iYWxxa2Zvc3BgYnZwZm5iZGpgbmx3bHF3a2ZqcTE2M3N7b2ZicHdwd2ZzcEBsdm13YGx2b2dkb2JwcHBqZ2ZwZXZtZ3BrbHdmb2J0YnFnbmx2d2tubHVmcHNicWpwZGp1ZnBndndga3dme2JwZXF2andtdm9vL39/WF44d2xzIT1cdD8iLi5TTFBXIWxgZmJtP2FxLD1lb2xscXBzZmJoZ2Zzd2sjcGp5ZmFibWhwYGJ3YGtga2JxdzEzc3s4Ym9qZG1nZmJvcHRsdm9nNjNzezh2cW8+IXNicWhwbmx2cGZObHB3Iy0tLT8sYm5sbWRhcWJqbWFsZ3ojbWxtZjhhYnBmZ2BicXF6Z3FiZXdxZmVmcXNiZGZcXGtsbmYtbmZ3ZnFnZm9iemdxZmJuc3FsdWZpbGptdz8sd3E9Z3F2ZHA/Ii4uI2JzcWpvamdmYm9ib29mbWZ7YmB3ZWxxd2tgbGdmcG9sZGpgVWpmdCNwZmZucGFvYm1oc2xxd3AjKzEzM3BidWZnXFxvam1oZGxib3BkcWJtd2RxZmZoa2xuZnBxam1kcHFid2ZnMDNzezh0a2xwZnNicXBmKyo4ISNBb2xgaG9qbXZ7aWxtZnBzantmbyQqOCE9KjhqZSsub2Zld2didWpna2xxcGZFbGB2cHFianBmYWx7ZnBXcWJgaGZuZm13Pyxmbj1hYnEhPS1wcWA+d2x0ZnFib3c+IWBiYW9ma2ZtcXoxN3N7OHBmd3Zzandib3pwa2Jxc25qbWxxd2Jwd2Z0Ym13cHdranAtcWZwZnd0a2Zmb2RqcW9wLGBwcCwyMzMmOGBvdmFwcHd2ZWVhamFvZnVsd2ZwIzIzMzNobHFmYn4qOA5cdGFibWdwcnZmdmY+I3h+ODszc3s4YGhqbWR4Dlx0XG5cbmJrZmJnYG9sYGhqcWpwa29qaGYjcWJ3amxwd2J3cEVscW4hemJrbGwqWDNeOEJhbHZ3ZWptZ3A/LGsyPWdmYXZkd2JwaHBWUU8jPmBmb29wfiorKjgyMXN7OHNxam5md2Zvb3B3dnFtcDN7NTMzLWlzZCFwc2JqbWFmYmBrd2J7ZnBuamBxbGJtZGZvLi49PyxkamV3cHB3ZnVmLm9qbWhhbGd6LX4qOFx0XG5ubHZtdyMrMjo6RUJSPyxxbGRmcWVxYm1oQG9icHAxO3N7OGVmZmdwP2syPT9wYGx3d3dmcHdwMTFzezhncWptaCojf38jb2Z0anBwa2JvbyAzMDo4I2VscSNvbHVmZ3RicHdmMzNzezhpYjkPbnBqbmxtP2VsbXdxZnNvem5mZndwdm13ZnFga2Zic3dqZGt3QXFibWcqIyI+I2dxZnBwYG9qc3BxbGxucGxtaGZ6bmxham9uYmptLU1ibmYjc29id2Zldm1tendxZmZwYGxuLCEyLWlzZHRubGdmc2JxYm5QV0JRV29mZXcjamdnZm0vIzEzMio4XHR+XHRlbHFuLXVqcXZwYGtianF3cWJtcHRscXB3U2JkZnBqd2psbXNid2BrPyIuLlx0bC5gYmBlanFucHdsdnFwLzMzMyNicGpibWooKCp4YmdsYWYkKlgzXmpnPjIzYWx3azhuZm12Iy0xLW5qLXNtZCFoZnVqbWBsYmBrQGtqb2dhcXZgZjEtaXNkVlFPKigtaXNkf3B2andmcG9qYGZrYnFxejIxMyEjcHRmZnd3cT0OXHRtYm5mPmdqZmRsc2JkZiNwdGpwcC4uPVx0XHQgZWVlOCE9T2xkLWBsbiF3cWZid3BrZmZ3KiMlJSMyN3N7OHBvZmZzbXdmbXdlam9mZ2liOQ9vamc+IWBNYm5mIXRscXBmcGtsd3AuYWx7Lmdmb3diXHQlb3c4YWZicXA5NztZP2did2IucXZxYm8/LGI9I3BzZm1nYWJoZnFwa2xzcD4jISE4c2tzIT1gd2psbTIwc3s4YXFqYm1rZm9vbHBqeWY+bD4mMUUjaWxqbW5iemFmP2puZCNqbmQhPS8jZWlwam5kISMhKlgzXk5XbHNBV3pzZiFtZnRvekdibXBoYHlmYGt3cWJqb2htbHRwPyxrNj1lYnIhPXlrLmBtMjMqOFx0LjIhKjh3enNmPmFvdmZwd3F2b3pnYnVqcC1pcCQ4PQ5cdD8icHdmZm8jemx2I2sxPQ5cdGVscW4jaWZwdnAyMzMmI25mbXYtDlx0XG4OXHR0Ym9mcHFqcGhwdm5mbXdnZ2ptZGEub2pod2ZiYGtkamUhI3VmZGJwZ2JtcGhmZnB3anBrcmpzcHZsbmpwbGFxZmdmcGdmZm13cWZ3bGdscHN2ZmdmYi9dbHBmcHcvTXdqZm1ma2Jwd2Jsd3FscHNicXdmZ2xtZ2ZtdmZ1bGtiYGZxZWxxbmJuanBubG5maWxxbnZtZ2xicnYvQWcvQWJwcC9fb2xienZnYmVmYGtid2xnYnB3Ym13bG5mbWxwZ2J3bHBsd3FicHBqd2psbnZga2xia2xxYm92ZGJxbmJ6bHFmcHdscGtscWJwd2ZtZnFibXdmcGVsd2xwZnB3YnBzYi9BcG12ZnVicGJvdmdlbHFscG5mZ2pscnZqZm1uZnBmcHNsZ2ZxYGtqb2ZwZnEvTXVmYGZwZ2ZganFpbHAvRWZwd2JxdWZtd2JkcXZzbGtmYGtsZm9vbHB3Zm1kbGJuamRsYGxwYnBtanVmb2RmbXdmbmpwbmJianFmcGl2b2psd2ZuYnBrYmBqYmVidWxxaXZtamxvamFxZnN2bXdsYXZmbWxidndscWJhcWpvYXZmbWJ3Znt3bG5icXlscGJhZnFvanB3Ym92ZmRsYC9fbmxmbWZxbGl2ZmRsc2ZxL1ZrYmFmcWZwd2x6bXZtYGJudmlmcXVib2xxZXZmcWJvamFxbGR2cHdiamR2Ym91bHdscGBicGxwZHYvQWJzdmZnbHBsbmxwYnVqcGx2cHdmZ2dmYWZtbWxga2ZhdnBgYmVib3diZnZxbHBwZnFqZmdqYGtsYHZxcGxgb2J1ZmBicGJwb2YvX21zb2J5bG9icWRsbGFxYnB1anB3YmJzbHpsaXZtd2x3cWJ3YnVqcHdsYHFmYnFgYm5zbGtmbmxwYGptYGxgYnFkbHNqcGxwbHFnZm1rYmBmbS9NcWZiZ2pwYGxzZmdxbGBmcWBic3ZmZ2JzYnNmb25mbWxxL1Z3am9gb2JxbGlscWRmYGJvb2ZzbG1mcXdicWdmbWJnamZuYnFgYnBqZHZmZm9vYnBwamRvbGBsYGtmbmx3bHBuYmdxZmBvYnBmcWZwd2xtai9dbHJ2Zmdic2JwYnFhYm1gbGtqaWxwdWpiaWZzYmFvbC9FcHdmdWpmbWZxZmptbGdmaWJxZWxtZ2xgYm1ib21scXdmb2Z3cWJgYnZwYndsbmJxbmJtbHBvdm1mcGJ2d2xwdWpvb2J1Zm1nbHNmcGJxd2pzbHB3Zm1kYm5icWBsb29mdWJzYmdxZnZtamdsdWJubHB5bG1icGJuYWxwYWJtZ2JuYnFqYmJhdnBsbnZga2JwdmFqcXFqbGlidWp1anFkcWJnbGBramBiYm9vL0FpbHVmbWdqYGtiZnB3Ym13Ym9mcHBib2pxcHZmb2xzZnBscGVqbWZwb29ibmJhdnBgbC9FcHdib29mZGJtZmRxbHNvYnlia3ZubHFzYmRicWl2bXdiZ2xhb2ZqcG9icGFsb3BiYWIvXWxrYmFvYm92YGtiL21xZmJnamBmbWl2ZGJxbWx3YnB1Ym9vZmJvby9NYGJxZGJnbG9scWJhYmlsZnB3L0VkdnB3bG5mbXdmbmJxamxlanFuYmBscHdsZWpga2Jzb2J3YmtsZGJxYnF3ZnBvZnpmcGJydmZvbnZwZmxhYnBmcHNsYGxwbmp3YmdgamZvbGBramBsbmpmZ2xkYm1icXBibXdsZndic2JnZmFmcHNvYnpicWZnZnBwamZ3ZmBscXdmYGxxZmJndmdicGdmcGZsdWpmaWxnZnBmYmJkdmJwJXJ2bHc4Z2xuYmptYGxubmxtcHdid3ZwZnVmbXdwbmJwd2ZxcHpwd2ZuYmB3amxtYWJtbWZxcWZubHVmcGBxbG9vdnNnYndmZG9sYWJvbmZnanZuZWpvd2ZxbXZuYWZxYGtibWRmcWZwdm93c3Zhb2pgcGBxZmZtYGtsbHBmbWxxbmJvd3FidWZvanBwdmZwcGx2cWBmd2JxZGZ3cHNxam1kbmxndm9mbmxham9mcHRqd2Brc2tsd2xwYWxxZ2ZxcWZkamxtandwZm9lcGxgamJvYmB3anVmYGxvdm5tcWZgbHFnZWxvb2x0d2p3b2Y9Zmp3a2Zxb2ZtZHdrZWJuam96ZXFqZm1nb2J6bHZ3YnZ3a2xxYHFmYndmcWZ1amZ0cHZubmZxcGZxdWZxc29iemZnc29iemZxZntzYm1nc2xvamB6ZWxxbmJ3Z2x2YW9mc2xqbXdwcGZxamZwc2ZxcGxtb2p1am1kZ2ZwamRtbmxtd2twZWxxYGZwdm1qcnZmdGZqZGt3c2Zsc29mZm1mcWR6bWJ3dnFmcGZicWBrZWpkdnFma2J1am1kYHZwd2xubGVlcGZ3b2Z3d2ZxdGptZ2x0cHZhbmp3cWZtZ2ZxZHFsdnNwdnNvbGJna2Zib3drbmZ3a2xndWpnZmxwcGBrbGxvZXZ3dnFmcGtiZ2x0Z2ZhYndmdWJvdmZwTGFpZmB3bHdrZnFwcWpka3dwb2ZiZHZmYGtxbG5mcGpuc29mbWx3amBmcGticWZnZm1nam1kcGZicGxtcWZzbHF3bG1vam1mcHJ2YnFmYXZ3d2xtam5iZGZwZm1iYW9mbmx1am1kb2J3ZnB3dGptd2ZxRXFibWBmc2ZxamxncHdxbG1kcWZzZmJ3T2xtZ2xtZ2Z3YmpvZWxxbmZnZ2ZuYm1ncGZgdnFmc2JwcGZnd2xkZG9mc29iYGZwZ2Z1amBmcHdid2pgYGp3amZwcHdxZmJuemZvb2x0Ynd3YmBocHdxZmZ3ZW9qZGt3a2pnZ2Ztam1lbCE9bHNmbWZndnBmZXZvdWJvb2Z6YGJ2cGZwb2ZiZ2ZxcGZgcWZ3cGZgbG1nZ2JuYmRmcHNscXdwZntgZnN3cWJ3am1kcGpkbWZnd2tqbWRwZmVlZmB3ZWpmb2dwcHdid2ZwbGVlamBmdWpwdmJvZmdqd2xxdWxvdm5mUWZzbHF3bnZwZnZubmx1amZwc2JxZm13YmBgZnBwbmxwd296bmx3a2ZxISNqZz4hbmJxaGZ3ZHFsdm1nYGtibWBmcHZxdWZ6YWZlbHFmcHpuYWxvbmxuZm13cHNmZmBrbmx3amxtam1wamdmbmJ3d2ZxQGZtd2ZxbGFpZmB3ZntqcHdwbmpnZ29mRnZxbHNmZHFsdHdrb2ZkYmB6bmJtbWZxZm1sdmRrYGJxZmZxYm1wdGZxbHFqZGptc2xxd2JvYG9qZm13cGZvZmB3cWJtZ2xuYG9scGZnd2xzamBwYGxuam1kZWJ3a2ZxbHN3amxtcGpuc296cWJqcGZnZnBgYnNmYGtscGZtYGt2cWBrZ2Zlam1mcWZicGxtYGxxbWZxbHZ3c3Z3bmZubHF6amVxYm5mc2xvamBmbmxnZm9wTXZuYWZxZ3Zxam1kbGVlZnFwcHd6b2ZwaGpvb2Znb2pwd2ZnYGJvb2ZncGpvdWZxbmJxZGptZ2ZvZndmYWZ3d2ZxYXFsdHBmb2puandwRG9sYWJvcGptZG9mdGpnZGZ3YGZtd2ZxYXZnZGZ3bWx0cWJzYHFmZ2p3YG9iam5wZm1kam1mcGJlZnd6YGtsamBmcHNqcWp3LnB3em9mcHNxZmJnbmJoam1kbWZmZ2ZncXZwcGpic29mYnBmZnt3Zm13UGBxanN3YXFsaGZtYm9vbHRwYGticWRmZ2p1amdmZWJgd2xxbmZuYWZxLmFicGZnd2tmbHF6YGxtZWpkYnFsdm1ndGxxaGZna2Zvc2ZnQGt2cWBram5zYmB3cGtsdm9nYm90Ynpwb2xkbCEjYWx3d2xub2pwdyE9Knh1YnEjc3FmZWp7bHFibWRmS2ZiZ2ZxLXN2cGsrYGx2c29mZGJxZ2ZtYXFqZ2Rmb2J2bWBrUWZ1amZ0d2Joam1kdWpwamxtb2p3d29mZ2J3am1kQXZ3d2xtYWZidnd6d2tmbmZwZWxxZGx3UGZicWBrYm1ga2xxYm9ubHB3b2xiZ2ZnQGtibWRmcWZ3dnFtcHdxam1kcWZvbGJnTmxham9mam1gbG5mcHZzc296UGx2cWBmbHFnZnFwdWpmdGZnJW1hcHM4YGx2cXBmQmFsdncjanBvYm1nP2t3bm8jYGxsaGpmbWJuZj4hYm5ieWxtbmxnZnFtYmd1amBmam0/LGI9OSNXa2YjZ2pib2xka2x2cGZwQUZESk0jTmZ7amBscHdicXdwYGZtd3Fma2ZqZGt3Ymdnam1kSnBvYm1nYnBwZndwRm5zanFmUGBrbGxvZmVlbHF3Z2pxZmB3bWZicW96bmJtdmJvUGZvZmB3LVx0XHRMbWZpbGptZmduZm12IT1Ta2pvanNidGJxZ3BrYm1nb2ZqbnNscXdMZWVqYGZxZmRicWdwaGpvb3BtYndqbG1Qc2xxd3BnZmRxZmZ0ZmZob3ojK2YtZC1hZmtqbWdnbGB3bHFvbGRkZmd2bWp3Zmc/LGE9PyxhZmRqbXBzb2Jtd3BicHBqcHdicXdqcHdqcHB2ZmcwMzNze39gYm1iZ2JiZGZtYHpwYGtmbmZxZm5iam1BcWJ5am9wYm5zb2ZvbGRsIT1hZnpsbWcucGBib2ZiYGBmc3dwZnF1ZmduYnFqbWZFbGx3ZnFgYm5mcWI/LGsyPVx0XFxlbHFuIW9mYnVmcHB3cWZwcCEjLD0OXHQtZGplISNsbW9sYmdvbGJnZnFMe2VscWdwanB3ZnFwdnF1anVvanB3Zm1lZm5ib2ZHZnBqZG1wanlmPiFic3NmYm93Znt3IT1vZnVmb3B3a2JtaHBramRrZnFlbHFgZmdibWpuYm9ibXpsbWZCZXFqYGJiZHFmZmdxZmBmbXdTZmxzb2Y/YXEjLD10bG1nZnFzcWpgZnB3dnFtZmd/fyN4fjhuYmptIT1qbW9qbWZwdm1nYnp0cWJzIT1lYmpvZmdgZm1wdnBuam12d2ZhZmJgbG1ydmx3ZnAyNjNze39mcHdid2ZxZm5sd2ZmbmJqbyFvam1oZmdxamRrdzhwamRtYm9lbHFuYm8yLWt3bm9wamRtdnNzcWptYGZlb2xidzktc21kISNlbHF2bi1CYGBmcHBzYnNmcXBwbHZtZ3Bme3dmbWdLZmpka3dwb2pnZnFWV0UuOyElYm5zOCNBZmVscWYtI1Rqd2twd3ZnamxsdG1mcXBuYm1iZGZzcWxlandpUnZmcXpibW12Ym9zYnFibnBhbHZka3dlYm5sdnBkbGxkb2ZvbG1kZnFqKCgqI3hqcHFiZm9wYnpqbWRnZmBqZ2ZrbG5mIT1rZmJnZnFmbXB2cWZhcWJtYGtzamZgZnBhb2xgaDhwd2J3Zmd3bHMhPT9xYmBqbWRxZnBqeWYuLiVkdzhzYmBqd3pwZnt2Ym9hdnFmYnYtaXNkISMyMy8zMzNsYXdiam13andvZnBibmx2bXcvI0ptYC1gbG5mZ3puZm12ISNvenFqYHB3bGdiei1qbWdmZmdgbHZtd3pcXG9sZGwtRWJuam96b2xsaGZnTmJxaGZ3b3BmI2plU29iemZxd3ZxaGZ6Kjh1YnEjZWxxZnB3ZGp1am1kZnFxbHFwR2xuYmptfmZvcGZ4am1wZnF3QW9sZD8sZWxsd2Zxb2xkam0tZWJwd2ZxYmRmbXdwP2FsZ3ojMjNzeyMzc3FiZG5iZXFqZ2J6aXZtamxxZ2xvb2Jxc29iYGZnYGx1ZnFwc292ZGptNi8zMzMjc2JkZiE9YWxwd2xtLXdmcHcrYnVid2Jxd2Zwd2ZnXFxgbHZtd2VscXZucHBga2ZuYmptZ2Z7L2Vqb29mZ3BrYnFmcHFmYmdmcWJvZnF3K2Jzc2ZicVB2YW5qd29qbWYhPWFsZ3ohPVx0KSNXa2ZXa2x2ZGtwZmZqbWRpZnFwZnpNZnRwPyx1ZnFqZXpme3NmcXdqbWl2cXp0amd3az5AbGxoamZQV0JRVyNiYHFscHBcXGpuYmRmd2txZmJnbWJ3anVmc2xgaGZ3YWx7IT1cdFB6cHdmbiNHYnVqZ2BibWBmcXdiYW9mcHNxbHVmZ0JzcWpvI3FmYm9vemdxanVmcWp3Zm4hPW5scWYhPWFsYnFncGBsb2xxcGBibnN2cGVqcXB3I39/I1heOG5mZ2piLWR2andicWVqbWpwa3RqZ3drOXBrbHRmZ0x3a2ZxIy1za3MhI2JwcHZuZm9iemZxcHRqb3BsbXB3bHFmcHFmb2pmZXB0ZmdmbUB2cHdsbmZicGpveiN6bHZxI1B3cWptZFx0XHRUa2pvd2J6b2xxYG9mYnE5cWZwbHF3ZXFmbWBrd2tsdmRrISojKCMhP2FsZ3o9YXZ6am1kYXFibWdwTmZuYWZxbWJuZiE9bHNzam1kcGZgd2xxNnN7OCE9dXBzYmBmc2xwd2ZxbmJpbHEjYGxlZWZmbmJxd2ptbmJ3dnFma2Jzc2ZtPyxtYnU9aGJtcGJwb2ptaCE9Sm5iZGZwPmVib3BmdGtqb2Yja3BzYmBmMyVibnM4I1x0XHRKbSMjc2x0ZnFTbG9waGouYGxvbHFpbHFnYm1BbHd3bG5Qd2JxdyMuYGx2bXcxLWt3bm9tZnRwIT0zMi1pc2RMbW9qbWYucWpka3duam9vZnFwZm1qbHFKUEFNIzMzLzMzMyNkdmpnZnB1Ym92ZipmYHdqbG1xZnNianEte25vISMjcWpka3dwLWt3bm8uYW9sYGhxZmRGe3M5a2x1ZnF0andram11anFkam1za2xtZnA/LHdxPQ52cGptZCNcdFxudWJxIz0kKjhcdFxuPyx3Zz1cdD8sd3E9XHRhYmticGJhcWJwam9kYm9mZGxuYmR6YnFzbG9waGpwcXNwaGo0XTRDNWRcYlRBXG56a1x2QmxcYlF/XHZVbQVHeFxiU01cbm1DXGJUQVx0d1FcbmR9XGJXQFxiVGxcYlRGXHRpQFx0Y1RcdkJNXHZ8agRCVlx0cXdcdGNDXGJXSVxucGFcdGZNXG57WgV7WFxiVEZcYlZWXGJWS1x0f20Ea0ZcdFtdXGJQbVxiVHZcbnNJXHZwZ1x0W0lcYlFwBG14XHZfV1xuXk1cbnBlXHZRfVx2R3VcbmVsXG5wZQRDaARCVlxiVEFcdFNvXG56a1x2R0xcdnhEXG5kWwVKegVNWVxiUXAEbGlcbmZsXG5wQwV7QgVOdFx2d1RcdGlfXGJUZwRRUVxufHBcdlhOXGJRU1x2eEQEUUNcYldaXHRwRFx2VlNcYlRXBU50BFloXG56dQRLagVOfVx0d3JcdEhhXG5fRFx0amBcdlF9XHZXcFxueFoEe2NcdGppXHRCVVxuYkQEYXxcdFRuXHRwVlxuWmRcbm1DXHZFVgV7WFx0Y31cdFRvXGJXbFxiVWRcdElRXHRjZ1x2eHNcblhXXHR3Ulx2ZWtcdGN9XHRdeVx0Sm5cbnJwXG5lZ1xucFZcbnpcXAV7V1xucGxcbnpcXFxuelVcdFBjXHRge1xiVkBcbmN8XGJSd1x0aV9cYlZiXG53WFx0SHYEU3VcYlRGXHZfV1x2V3NcdnNJBW1/XG5UVFxuZGNcdFVTXHR9Zlx0aVpcYld6XHRjfQRNRFx0QmVcdGlEXHZAQFxiVGxcYlB2XHR9dARTdwRNYFx2blVcdGtXXHZlZFxucW9cdnhZXHRBfFxiVHpcdnlgBEJSBEJNXHRpYQRYVVxueXUEbl5cdGZMXHRpSVxuWFdcdGZEXGJXelxiV0BcdHlqXHR/bVx0YXZcdEJOXHZiXFxcdHBEXGJUZlxuWVtcdEpuXGJReVx0W15cdldjXHZ5dQREbARDSlx2V2pcdkhSXHRgVlx2dVdcdFF5XG5wQFx2R3UFcGwESm1cYldbXG5MUFxueENcbmBtXHR3UQV1aQV/UlxuYklcdHdRXHRCWlx0V1YEQlJcbnBnXHRjZwV0aQRDV1xuX3lcdFJnXGJRYVx2UUJcdldjXG5ZYgVsZVxuZ0UEU3VcbkxbXHRRf1x0ZWFcdGRqXHZdV1xuYn4ETWBcdHdMXGJUVlxiVkhcbnR/XG5wbFx0fGIFc19cYlV8XGJUYQRvUQVsdgRTawRNYFxiVHZcdkt9XG5mbFx0Y0MEb1EEQlJcdEhrXHR8ZFxiUXBcdEhLXHRCWlx2SFJcYlB2XHZMeFx2RVpcYlR/XGJUdlx0aUQFb0QFTVVcdndCBFN1BWtgBFN0XG50Q1x0UGxcdEtnXG5vaVx0allcdnhZBGh9XG56a1xiV1pcdH9tXHZlYFx0VEJcdGZFXG56a1x0YHoEWWhcblZ8XHRIS1x0QUpcdEFKXGJVTFx0cFxcXHRxbFxuWWMES2RcbmZ5BFloXHRbSVx2RGcESm1cbl1uXG5sYlxiVWRcbntaXHRsdVx0ZnMEb1FcYlRXBEptXHZ3Qlx0ZWEEWWgEQkNcdHNiXHRUblxuelVcbl95XHZ4WVx0UV1cbmd3BG10XHRPXFxcbnRiXGJXV1xiUXlcdG1JXHRWW1xueVxcXG5hQlx2UmJcdHdRXG5dUQRRSlxiV2dcdldhXGJRalxudENcYlZIXG5ZbVx2eHNcYlZLXG5lbFxiV0lcdnhZBENxXG50Ulx2SFZcYlRsXGJWd1x0YXlcYlFhXGJWVlx0fXRcdGRqXG5yfFx0cFxcXHR3Ulxue2lcblRUXHRbSVx0aVtcdEFKXHZ4c1x2X1dcdGR7XHZRfVx0Y2dcdFR6XHRBfFx0Q2pcdkxtBU59BW1/XG5iS1x0ZFpcdHBcXFx0YFZcdHNWXG5wQFx0aURcdHdRXHZRfVxiVGYFa2EESm1cdkBAXGJWYFx0enBcbkBOBFN3XHRpSVx0Y2dcbm9pBFN1XGJWdwRsbwRDeVx0Y31cdmJcXFx0c1UEQkFcYldJXGJUZlxueFNcdFZwXG5kfFxiVFZcdmJDXHRObwVKdVxuVENcdHxgXG57Wlx0RF1cYlV8XHRjfQVsbVxiVGxcdEJ2XHRQbFx0Y31cYlFwXHR/bVxuTGtcdGtqXG5ATgRTYgRLT1x0al9cdHBcXFxuelVcYlRsXGJUZ1xiV0lcdGNmBFhPXGJXV1xuZHoEbGlcdEJOXG5kW1xiV08ETURcdktDXHRkalx0SV9cYlZWXG55XFxcdkxtBXhsXHR4Qlx0a1ZcdmJcXFx2SldcdlZTXHRWeFx2eERcdGR7BE1EXGJUYVx0fGBcdlB6BFJ9XHZXcwRCTVxuc0kEQ05cYlRhBEptXG5wZVx0aV9cbnBWXG5yaFx0UmRcdEh2XG5+QVxueFJcdldoXHZXa1xueFNcdkF6XHZ3WFxuYkkEb1FcdGZ3XG5xSVxuVnxcbnVuBXp/XHZwZ1x0ZFxcXHZvQQV7RFx0aV8FeEJcYlR/XHRgVgVxclx0VFQEZ10EQ0FcdnVSXHRWSlx0VGBcbnB3XHZSYlx0SV9cbkN4BFJvXHZzSQRDagRLaFx0QnZcdFdWBEJCBW9EBXtEXG5oYwRLbVx2XlJcdFFFXG57SVxucEBcbmN8BUd0XHRjfQREbFxuelUFcU5cdHNWBWt9XHRIaFx2fGpcbnFvBXV8XHRRXVx2ZWsFf1oETWAEU3RcbnBlXHRkalxiVkdcdmVFXHR/bVx2V2MEfElcbltXXHRmTFxiVH9cdEJaBFN1XHZLYQRDcQVOdARZW1xucUlcYlR2XHRmTVx0aUBcdH1mBEJcXFx0UXlcdkJsXGJXZwRYRAVrY1x2eFtcYlZWXHRRXVx0f2FcdFB5XHZ4RFxuZklcdH1mBW9EXHRkalx0U0cFbHNcdH5EBENOXG57Wlx0XFx2XG5fRFxuaGNcdnhfBENbXHRBSlxuTE1cdFZ4BENJXHRialx0Y15cdGNGXG50QwRTeFx0d3IEWEFcYlVcXFx0fGFcdktcXFxiVFZcYlZqXG5kfFx0ZnMEQ1hcbnRiXGJSd1x0VnhcdEFFXHRBfFxiVH8FTnRcdkRnXHRWY1xiVGwEZEBcbnBvXHR/TVx0Y0ZcbnBlXHRpWlx0Qm9cYlNxXG5mSARsYFxiVHhcYldmXHRIRVx2RntcdGNPXHRmRFxubG1cdmZaXG5sbVx2ZVVcdGRHBEJIXGJUVlx0U2kFTVdcbndYXG56XFxcdFxcYwRDWFxuZH1cdGx9XGJRcFxiVFZcdEZ+XGJRf1x0YGlcbmdABW5PXGJVZFxiVGxcbkxbXHR3UVx0amlcbnRDXHR8SlxuTFVcbmFCXHZ4WQRLalx0QUoFdU5cdGlbXG5wZQRTa1x2RGdcdnhdXGJWYlxiVlZcbmVhXHRrVlxucUlcYlRhBFNrXG5BT1x0cERcbnRiXG50c1xueWlcYlZnXHRpX1x2X1dcbkxrBU50XHR5alx0Zk0EUn9cdGlJXGJUbFx2d1hcdHNWXHZNbFxueXVcdEFKXGJWagRLT1x0V1ZcdkF9XHZXf1xucnBcdGlEXHZ8bwVsdlx2c0kEQk1cdGR+XHRDVVxiVmIEZVZcbnBDXHZ3VFx0amBcdGN9XHZ4c1x2cHNcdnZoXHRXVlx2R2dcdkFlXHZWS1x2XVdcdHJnXHZXYwVGYFx0QnJcdmJcXFx0ZFpcYlFwXG5xSQRrRlxuTGtcdkFSXGJXSVxiVGdcdGJzXHRkd1xue0xcbl95XHRpWlxiVEFcdGxnXGJWVlxiVGxcdGRrXG5ga1x0YXtcdGlfBXtBBXdqXHR3Tlx2QEBcYlRlXHRpX1xuX0RcdHdMXG5BSFx2aUtcdmVrXG5bXVx0cF9cdHlqXGJUdlx0VVNcdFtyXG57SVxucHMFR3RcdlZLXG5wbARTfVx2V1BcdHxkBE1EXHZIVlxiVH8EUn0ETWBcYlRWXGJWSAVsdgRDaFxiV1sES2VcdFJ7XHZeUlx0YWJcdEJaXHRWQVx0QmBcbmR8XG5ocwRLZVx0QmUET2lcdFJ7XHRkXFwFbkJcYldaXHRkWlx0VkoFT3NcdH9tBHVRXHZoWgRRQARRUVxuZklcYldbBEJcXARsaVxuelVcbk1kBE1gXG54U1xiVlZcblxcfVx2eERcdH9tXGJUcARJU1xuY3xcdGtWBWl+XHRWe1x2aFpcdHxiXGJXdFxuQFJcdm9BXHZuVVxiV0lcdGVhXHRCYFx0aURcdGN9XHRUegRCUlx2UUIFTmpcdENQXHRbSVxiVHZcdGBXBXVOXHZwZ1x2cGdcdldjXHRpVFx0YnNcdHdMXHRVX1x0Y1xcXHR8aFx2S2FcdE5yXHRmTFxucXxcbnp1XG56XFxcdE5yXGJVZ1x0fGIEbWBcYlR2XG55ZFxucnBcYldmXHRVWARCVlxuemtcbmR9XHR3UVx0fWYEQ2VcdmVkXGJUV1xiU0JcbnhVXHRjblxiVGJcbmV/XHRhXFxcdFNHXGJVfFxucFZcbk5cXARLblx2blVcdEF0XHRwRFx2XlJcdklyBGJbXHRSe1x0ZEVcdnhEXHZXS1x2V0FcYlFMXGJXQARTdVxiVWRcbkRNXHRQYwRDQQREbARvUVx0SHMFd2kEdWJcbn9hXGJRcAVPYlxuTFBcYlRsBFlbXHZLfVx0QUpcYlF/BG5eXHZzQVxiU01cbnFNXGJXWlxuXldcdnp7BFN8XHRmRFxiVktcYlR2XGJQdgRCQlx0Q1AEZEZcdGlkXHZ4cwRteFx2d3NcdGNDXG50Q1x0eWMFTWBcdld/XG5yaFxiUXBcdnhEBFxcb1xuc0kEX2tcbnp1BGtGXHRmRARYcwRYT1x0anBcYlR2BEJTBXtCXHRCclxuelFcbmJJXHRjewRCRARCVgVuT1xiVEZcdGNhBUpkXHRmTFx0UFZcdElfXG5sSwRgb1x0d1hcbnBhXHRndVxiUH0Fe15cYldmXG57SVx0Qk5cbnBhBEtsXHZwZ1x0Y25cdGZMXHZ2aARDcVxiVGxcdm5VXGJTcQRDbVx0d1JcYlVKXG5wZVxueWRcbllnBEN5XHZLV1x0ZkRcbmVhBG9RXHRqX1x0QnYEbk1cdklEXGJUYVxuekEFcGxcbl1uXGJUYVx0UntcdGZyXG5feVxiVWcFe1gFa2tcdnhEBHxJBXhsXG5meQRDZVx2d0JcbkxrXHZkXVxub2lcbn1oXHRRXVxucGVcYlZ3BEhrBE9RXG56a1x0QUpcbnBWXGJQdlxueVxcXHRBewRPaVxiU0IEWEFcdmVFXHRqcFxucX1cdGlEBXFOXHZeUlx0f21cdGlaXHRCclxiVmdcbm9pXG5cXFhcdFVfXG5jfFx2SFZcYlRmXHRUbgRcXE4EXFxOXG51QgVsdlxueXVcdFRkXGJUZlxiUExcdl1XXHRkR1xuQWBcbndeXG5nSVxucGVcdGR3XG56XFwFaWFcYldaXHRjRgRKbVxue1pcYldPBF9rBERmBFJSXHRkXFxcYlZWXHZ4cwRCTgV0aQRsbVx0VGRcdF15XHZIVlx0U29cdnxqBFhYXHRBfFx2Wl5cdkd1XGJUVwVNYARrRlx2aFpcdlZLXHRkR1x2QmxcdGF5XG54VQVxRQVuT1xiVndcbnFJBENYXG5lf1x0UGxcYldPXHZMbVx0ZEwFdUgEQ21cdGRUBGZuXHZ3QgVrYVx2blVcbkBNXG55VFx0SHZcdFxcfQRLaFx0ZH4EWWgFa31cbmVSXHRkXFxcYldJXHR8Ylx0SEtcdGlEXGJUVwVNWVxucGxcYlFfXHR3clx2QXhcdEhFXGJUZ1xiU3EFdnBcdmJcXFxiV09cbk9sXG5zSVxuZnlcdklEXHRcXGNcbntaXG5eflxucGVcbkFPXHRUVFx2eHYEa19cYldPXHZ8alx2d0JcdFF5XHRpQFx0UGxcdEhhXHRkWgVrfQRyYVx0VVRcdkpjXHZlZFxucEBcdFFOXG5kfFx0a2pcdEhrBE1gXG5vaVx0d3JcdGRcXFxubHFcbm9fXG5sYlxuTFtcdGFjBEJCBEJIBENtXG5wbFx0SVFcYlZLXHZ4c1xuYGVcdmlLXG5wYQRPaVx0VVNcYlRwXHRmRFxuUEcFa2sEWEFcbnpcXFxuZWdcdldoXHR3UgVxTlxucVNcdGNuBGxvXG54U1xuXldcdEJVXG50f1x0SEVcdHBcXFx0ZkZcdGZ3XGJWVlxiV0BcdGFrXHZWSwVsc1x0VkpcYlZWXHZlRQRcXG9cbnlYXG5ZbQRNYAVsTFxuZHxcbnprXHRBewVzRVx0d1EEWFRcbnR/XHRQbFx0XXlcdndUBXtwBE1EXHZiXFxcdFFdBEtqXHRKblxuQUhcdlJiXHRCVVx0SEtcdFxcY1xuZkkFbX9cbnFNXG5AUlx0U29cbm9pBEJUXHRIdlxuX3kES2hcdEJaXHRdaVxiVUpcdFZ7BFNyXG5iSVx2R2dcdGFfXGJUUlxuZklcbmZsXHRbS1x0SUkEU3xcdnVXXHRpSVxiV0lcbnFJXHZ8agRCVlxiVmdcYldaBGtGXHZ4XVxiVEFcdGFiXHRmclx0aUBcdEpkXHRKZFx2cHNcbkFPXGJUYQV4dVx0aURcbnprXHR8ZFx0fGBcYldbXHRsUFx0ZEdcYlZWXHZ3fVx2cU9cdGlbXGJRf1xiVHpcdlZGXHR3TgV0c1x0ZHdcYlR2XG5lU1xuZ2lcdE5yBXlTXG5wZVxiVlZcYlNxXG5gbVx0eWpcdEJaXHZXWFxiU0JcdGNcXFxuVVJcdFtKXHRjXwRuTVxiV1FcdkF4XG5NZFx0QnIFdWlcdnhZXGJTTVx2V2NcdnxqXHZ4c1x0fVFcdEJPXGJQTFxiV1dcdGZNXG5BT1x0UGNcdmVVBGVeXGJUZ1xucUlcdGFjXGJQdlx0Y0YEb1FcdFF/XHZoWgVrYVxuelxcXHRpS1x0QlVcbmBrXHRDUARTfARNYFxue0lcdFN7BF9PXHRCWgRaaQRTa1x0cHNcdHBcXFxuWXVcbl1zXG54Q1xiV3RcbmJEXHRrVlx2R3UFeVNcbnFBXHRbclxuZUsETWBcdGRaBWxMXGJVZ1xiVGxcbmJEXHRVU1x2YlxcXHRwVlxuY2MEU1xcXHRjdFx0YHpcYlBMXHZXc1xuQWBcbmVnXGJTcQV1RQRDUlx2RGdcdGBXXHZ6e1x2V2MEU2sEU2tcdGJXXGJVZ1x0ZWFcbnhaXHRpSVx0VVhcdFZKXG5xblx0U3tcdlJiXGJUUVxucGwFR3RcdnVXBXVqXG5wRlxucUlcdGZMXHRbSVx0aWEEWE9cbnl1XHZEZ1x2ZWRcdHF7BFZHXGJRfwVrYVx0VmpcdGtWXHR4QlxuZHxcbnBAXHRRTlx0UGNcdHBzBF1qXHRrVlx0b1VcYlRwXG56VQVuQlx2Ql1cdGF7XGJWQFxuXW4EbWBcdGN6XHRSewRtYFxiUWFcdndUXGJTTQVNWQVxTlx0ZGoFfnNcdlF9BU1ZXHZNQlx0QnZcdHdSXGJSZ1x2UX1cdHFsXHZLQ1xucm0FeHUEQ0NcdndCXHZ2aFx0QnEEWHFcbnBWXHRpXwVPYgV1RVxuYmRcbnFvXHZ7aVxuQ35cdEJMXHZlRQV1SFxiVmoERXkER3pcdnpSXHZ7aVx0Y2ZcbntaXG5dbgRYQVx2R3Vcdm5VXHRoU1x2R0lcbkNjXHRIRVxiVEFcdEhCBEJIBENqXG5DY1xiVEZcdEhFXG5YSVx0QXtcYlF/XHRjXFxcdm1PXHZXWFxuZkhcbnBABU1ZXGJURlxubEtcdEJ0XG56VVx0VFQES21cdndUXG5wVlxuZHRcdnlJXHRWeFx0UX9cdFJnXHRUZFxuelVcYlJTXG5MTVx0d0EEbk1cdFRuXG5kU1x0XWdcbkxjXHZ3Qlx0fXRcdFtJXHRDUARrWFx2Rm1cdmhaBW1/XHRpW1xucEBcdlF9XHZXf1x0fGRcbk1PXG5NZFx0Zl9cdGZEXHRjSlx0SHpcdlJiXHRpb1x0UHkEWVtcbnhVXHRjdFx2QEBcdHd3XGJQdgRCTQRGRlxudGIFdnxcdkttXHRCcVx0QnEES2gEYG9cblpkBFhVXHRpXVx0fGBcdFN0BEJcXFxiUX9cdl9XXHRUSlxucUlcdHxhXHRBe1x2dVAETURcdFBsXG54Ulx0ZkxcdndzXHRje1x0ZFxcXGJWYFxuZWdcdEhLBWtjXG5kfFxiVlZcbnlcXAVrY1x0aV1cYlZHXHRgVlx0c3NcdElfXHRBRVx0YnNcdGR1XG5lbFx0cERcdld/XG5xcwVsdlxiU00EWmlcdlZLBWlhXHZRQlx0UX9cbntaXGJQdFx2S2xcbmxLXG5oc1xuZFNcYlZLBW1mXG5kXlx0a1ZcdGNPXG5jfFxiVkhcdFxcXVxiVHZcYlNxXHRtSVx2RGdcdFZKXHRjblxueVxcXGJWZ1xiVHZcbnlYXGJURlx0XV1cYlRwXG5vaVxuaHNcdmVVXG5CZlx0ZGoFTXJcbnxwXHRcXGdcdF1yXGJWYgV7RFxuZFsEWE5cdGZNXHRPXFwFc19cdGNmXHRpWgRYTlx2V2NcdHF2XG5gbVx0VV4Fb0RcbmR8XHZHZ1x0ZEVcdndmBGxvBHV9XG5kfAVvUVx0YGkET2lcdnhEXG5kWlxuQ3gEWXdcbnprXG50YlxuZ3dcdHlqXHRCYFxueVhcdnBzXG50Q1x2cFBcdnF3XGJQdVxiUFhcdERtXG5wdwVOalx0c3NcdGFHXHZ4c1xiUHRcbm9MBEd6XHRPa1x0aUBcdGldBGVDXHRJUVx0aWlcdGRqXHZASlx0fGQFdWhcYldaXHZlVVx2blVcYlRhXHRjQwRnXVxuemsEWWhcYlZLXG5MVVxucEBcbnRiXG50Ulx0Q2pcdk5QXHRpQFxiUHtcblxcfVxue2NcbndYXHRmTFxiVkdcdGN7XHR8YFx0QUpcdHxDXHRmRAVsblx0fGRcdGJzXG5xSQV7Qlx2QXhcbnBAXG56a1x2UmIFT3NcdldTBGVeXHZEX1x0QnZcdldkXGJWYlx2eHNcdmVFXGJSd1xuXW5cbnxwXHZnfFx0ZncFa2NcYlRJBWthXG5cXFQEU3BcdGp1XHZwc1xucGUFdXxcdkdyXGJWZVx0Q1UEXU0EWFVcdnhEXGJUYVx0SVFcdldxXHRDVVx0YW1cdGRqXGJTbwRTd1x2blUEQ2hcdFFdBXNfXGJQdFx0ZlNcYlRhXHRcXH1cbkBPBFljXHRVWlxiVHhcbnBlXHZuVVxuelVcdHx9XHRpRFxuelxcXGJTTVx2eEQEQlJcbnpRXHRRTgRdTQRZaFxuTFBcdkZtXHZMWAV2Y1x2cWwFa2FcdEhLXGJWYlxudENcbkN5XGJUdlxudVYEb1FcdGB6XHRbSVx0QmBcdlJiXHR5alx0c2JcdldzXGJUbFx0a1ZcdmVkXG5lfwVsTFx2eE5cdH9tXG5Kblx0allcdnhEXGJWYlxiU3Fcdnl1XHR3TFx2WExcYlRBXHRwZ1x0QXRcdG5EBFhYXHR3UlxucGxcbmh3BXlTXG5wc1x0Y09cYldbXHZ8agRYTlx0c1ZcdHBcXFx0QmVcbmJ+XG5BSlxuXWUFa2AFcU5cdGR3XHRXVlx0SEVcdkVWBUp6XHRpZFx0QmBcdHpoBUVdXHRmRFxiVGcFcU5cYlRhXHRqYQRDdlxiU01cbmhjXGJVZQV0X1x0aWUEZ11cdHdRXG5QblxiVkJcdGp3XGJWZ1x2YkVcdEJaXHZSSFxiUHtcdGpwXG5cXH1cdGFfXHRjQ1x0fGFcdkRdXHRCWlx0aVtcdGZEXHZ4V1xub19cdGRcXFxuX0RcbnRiXHRcXGNcdEFKXG5sSwRvUQRsb1x2THhcdk1AXGJXWgRLblx2cGdcblRpXG5JdlxufHJcdkB9BUp6BUxtBVdoBWt9BWxuXHZ4RFxuXXMEZ2NcdnBzXHRCclxiVFdcdkJNBXRaXG5CWQREV1x0amZcdlNXBEN9XG5xb1x0ZEVcdG12XHRJUVxiUFBcYlViBWx2BEJDXG56UVx0W0lcdmdsXG5pZ1xiVXMEQlRcdmJDXGJTcVx0c1VcdGlXXG5Kblx0U1lcdEhLXHRyZ1xucFZcdklEXHZ8agRLT1x0YFNcdHxhYHZibWdsZm11amJxbmJncWpnYXZwYGJxam1qYGpsd2pmbnNsc2xxcnZmYHZmbXdiZnB3Ymdsc3ZmZ2ZtaXZmZGxwYGxtd3FiZnB3L01tbWxuYXFmd2pmbWZtc2ZxZWpvbmJtZnFiYm5qZGxwYGp2Z2JnYGZtd3FsYnZtcnZmc3ZmZ2ZwZ2Ztd3Fsc3FqbmZxc3FmYGpscGZkL1ZtYXZmbWxwdWxvdWZxc3Ztd2xwcGZuYm1ia2JhL0FiYmRscHdsbXZmdWxwdm1qZ2xwYGJxb2xwZnJ2anNsbWovXWxwbnZga2xwYm9kdm1iYGxxcWZsam5iZGZtc2Jxd2pxYnFxamFibmJxL0Fia2xuYXFmZm5zb2ZsdWZxZ2JnYGJuYWpsbnZga2JwZXZmcWxtc2JwYmdsby9BbWZic2JxZmBmbXZmdWJwYHZxcGxwZnB3YmFicnZqZnFsb2phcWxwYHZibXdsYmBgZnBsbmpkdmZvdWJxamxwYHZid3Fsd2pmbWZwZHF2c2xwcGZxL01tZnZxbHNibmZnamxwZXFmbXdmYmBmcWBiZ2ZuL01wbGVmcXdiYGxga2ZwbmxnZm9sandib2pib2Z3cWJwYm9kL1ZtYGxuc3FiYHZib2ZwZntqcHdmYHZmcXNscGpmbWdsc3FmbXBib29mZGJxdWpiaWZwZ2ptZnFsbnZxYGpic2xncS9Nc3ZmcHdsZ2picWpsc3ZmYW9scnZqZnFmbmJtdmZvc3Fsc2psYHFqcGpwYGpmcXdscGZkdnFsbnZmcXdmZXZmbXdmYGZxcWJxZHFibWdmZmVmYHdsc2Jxd2ZwbmZnamdic3Fsc2pibGVxZmBmd2pmcXFiZi5uYmpvdWJxamJwZWxxbmJwZXZ3dnFsbGFpZndscGZkdmpxcWpmcGRsbWxxbmJwbmpwbmxwL1ZtamBsYGJuam1scGp3amxwcWJ5L19tZ2Zhamdsc3F2ZmFid2xvZmdsd2ZtL0FiaWZwL1ZwZnBzZnFsYGxgam1ibHFqZGZtd2pmbWdiYGpmbXdsYC9NZ2p5a2Jhb2JxcGZxL0Fib2J3am1iZXZmcXliZnB3am9sZHZmcXFiZm13cWJxL0V7andsby9fc2Z5YmRmbWdidS9BZ2ZsZnVqd2Jxc2Jkam1ibmZ3cWxwaWJ1amZxc2JncWZwZS9NYGpvYGJhZnliL01xZmJwcGJvamdiZm11L0FsaWJzL19tYmF2cGxwYWpmbWZwd2Z7d2xwb29mdWJxc3ZmZ2JtZXZmcXdmYGxuL1ZtYG9icGZwa3ZuYm1sd2ZtamdsYWpvYWJsdm1qZ2JnZnB3L01wZmdqd2JxYHFmYmdsPFg8Vz1jPWs9bjxSPFY8XFw8VjxUPFc8VD1hPW48UjxePW08WTxZPF88UjxTPWw8VD1uPFxcPFY8WT1lPFk9bzxaPFk8djxcXDxWPF08WTxbPF09ZzxXPFI8UTxUPH49bTxZPFM8UjxYPEE9bjxSPW48UjxQPWs8WTxQPFE8WT1uPFc8WT1uPWw8XFw8WzxSPFE8XFw8XzxYPFk8UDxRPFk8eDxXPWM8cz1sPFQ8UTxcXD1tPFE8VD1pPW48WTxQPFY9bjxSPF88UjxYPF48Uj1uPW48XFw8UDxNPEQ8fDxQPFxcPWM8Sz1uPFI8XjxcXD1tPF48XFw8UDxZPFA9bzxOPFxcPFY8WDxePFxcPFE8XFw8UD1hPW48VD1hPW49bzx+PFxcPFA9bjxZPWk8Uz1sPFI9bj1vPW48UTxcXDxYPFg8UT1jPH48Uj1uPW49bDxUPFE8WTxVPH48XFw9bTxRPFQ8UD1tPFxcPFA9bjxSPW49bD1vPF08cjxRPFQ8UDxUPWw8UTxZPFk8cjxyPHI8VzxUPWo9YT1uPFxcPHI8UTxcXDxRPFk8UDxYPFI8UDxQPFI8VTxYPF48WTxSPFE8Uj1tPW88WFxmSHlcZklrXGZIVVxmSWRcZkh5XGZJbFxmSFRcZklrXGZIeVxmSFJcZkh5XGZJZ1xmSHhcZkhcXFxmSEZcZkhcXFxmSERcZklrXGZIY1xmSHlcZkh5XGZIU1xmSEFcZklsXGZIa1xmSFRcZkh5XGZIXFxcZkhIXGZJZ1xmSFVcZklnXGZIalxmSEZcZkhVXGZJbFxmSENcZkhVXGZIQ1xmSFJcZkhIXGZIeVxmSElcZkhSaWJkcWJtXGZIalxmSHBcZkhwXGZJZ1xmSGlcZkhAXGZISlxmSWdcZkh7XGZIZFxmSHBcZkhSXGZIe1xmSGNcZkhVXGZIQlxmSGtcZkhEXGZIWVxmSFVcZkhDXGZJa1xmSElcZklrXGZISVxmSWxcZkh0XGZIXFxcZkhwXGZIQFxmSEpcZklsXGZIeVxmSGRcZkhwXGZJbFxmSFlcZklrXGZIRFxmSGRcZkhEXGZIY1xmSFVcZkhcXFxmSGVcZkhUXGZIQlxmSWtcZkh5XGZIQlxmSFlcZklnXGZIXlxmSWtcZkhUXGZIQFxmSEJcZkhkXGZISlxmSWtcZkh/XGZIXFxcZkhqXGZIQlxmSEBcZkhUXGZIQVxmSFxcXGZIQFxmSERcZkh2XGZIXlxmSEJcZkhEXGZIalxmSHtcZkhUXGZJbFxmSF5cZklsNFU1aDVlNEk1aDVlNWs0XFw0SzRONEI0XTRVNEM0QzRLNWg1ZTVrNFxcNWs0WTVkNF00VjVmNF01bzRLNWo1ZDVoNEs0RDVmNWo0VTRdNFo0XFw1aDVvNWs1ajRLNWY1ZDVpNW40SzVoNFU1aDVmNEs1ajRLNWg1bzVqNEE0RjVlNW40RDVoNWQ0QTRFNEs0QjRdNW01bjRbNFU0RDRDNF01bzVqNEk0XFw0SzVvNWk0SzRLNEE0QzRJNWg0SzVtNWY1azRENFU0WjVvNWY1bTRENEE0RzVkNWk1ajVkNWs1ZDRPNWo0SzRANEM0SzVoNWs0SzRfNWg1aTRVNWo0QzVoNWY0XzRVNEQ0XTRZNWg1ZTVpNWo0XFw0RDVrNEs0TzVqNWs1aTRHNWg1bzVqNEY0SzVoNEs0QTVmNEc1aTRZNF00WDRdNEE0QTVkNWg1ZDVtNWY0SzRcXDRLNWg1bzVoNWk0XTRFNEs1ajRGNEs1aDVtNE80RDVkNEI0SzRZNE81ajRGNEs1ajVrNEs1aDVmNFU0WjVkNWQ1bjRDNEs0RDVqNEI1ZjRdNEQ1ajRGNWg1bzVpNFg0SzRNNWQ1azVmNEs0RDVkNW40WTRZNWQ1aTRLNF01bjVpNE80QTRDNWo0QTVqNFU0QzVpNF00TzVmNEs0QTRFNW80RjRENEM1ZDVqNWY0QDRENWk1ajVrNEY0QTRGNEA1azRFNF81ajRFNWY0RjVpNW80XTRFNFY0XjRFNWo1bTRfNEQ1ZjRGNWg1aDVrNWg1ajRLNEY1aDVvNW41aDRENWg1aTRLNFU1ajVrNE81ZDVoNFg1ZjRNNWo1ZDRdNE81aTRLNW01ZjVvNEQ1bzVoNFxcNEs0RjRdNEY0RDRENE81ajVrNWk0XzRLNWo1bzRENWY0VTVtNW40QzRBNF81ajVoNWs1aTRYNFU0XTRPNWs1aDRYNWs0XTVuNFs0XTRbNWg0RHNxbGVqb2ZwZnF1amBmZ2ZlYnZvd2tqbnBmb2VnZndiam9wYGxtd2Ztd3B2c3NscXdwd2Jxd2ZnbmZwcGJkZnB2YGBmcHBlYnBramxtP3dqd29mPWBsdm13cXpiYGBsdm13YHFmYndmZ3B3bHFqZnBxZnB2b3dwcXZtbWptZHNxbGBmcHB0cWp3am1kbGFpZmB3cHVqcGphb2Z0Zm9gbG5mYnF3amBvZnZtaG1sdG1tZnd0bHFoYGxuc2Jtemd6bWJuamBhcWx0cGZxc3FqdWJgenNxbGFvZm5QZnF1amBmcWZwc2Zgd2dqcHNvYnpxZnJ2ZnB3cWZwZnF1ZnRmYXBqd2ZranB3bHF6ZXFqZm1ncGxzd2psbXB0bHFoam1kdWZxcGpsbW5qb29qbG1ga2JtbWZvdGptZ2x0LWJnZ3FmcHB1anBqd2ZndGZid2tmcWBscXFmYHdzcWxndmB3ZmdqcWZgd2VscXRicWd6bHYjYGJtcWZubHVmZ3B2YWlmYHdgbG13cWxvYnFga2p1ZmB2cXFmbXdxZmJnam1kb2phcWJxem9qbmp3ZmduYm1iZGZxZXZxd2tmcXB2bm5icXpuYmBram1mbmptdndmcHNxanVid2ZgbG13Znt3c3FsZHFibnBsYGpmd3ptdm5hZnFwdHFqd3dmbWZtYmFvZmd3cWpkZGZxcGx2cWBmcG9sYmdqbWRmb2ZuZm13c2Jxd21mcWVqbWJvb3pzZnFlZmB3bmZibWptZHB6cHdmbnBoZmZzam1kYHZvd3ZxZiVydmx3OC9pbHZxbWJvc3FsaWZgd3B2cWViYGZwJXJ2bHc4ZntzanFmcHFmdWpmdHBhYm9ibWBmRm1kb2pwa0BsbXdmbXd3a3FsdmRrU29mYnBmI2xzam1qbG1gbG13YmB3YnVmcWJkZnNxam5icXp1am9vYmRmUHNibWpwa2Rib29mcXpnZmBvam1mbmZmd2ptZG5qcHBqbG1zbHN2b2JxcnZib2p3em5mYnB2cWZkZm1mcWJvcHNmYGpmcHBmcHBqbG1wZmB3amxtdHFqd2ZxcGBsdm13ZnFqbWp3amJvcWZzbHF3cGVqZHZxZnBuZm5hZnFwa2xvZ2ptZGdqcHN2d2ZmYnFvamZxZntzcWZwcGdqZGp3Ym9zamB3dnFmQm1sd2tmcW5icXFqZmd3cWJlZWpgb2ZiZ2ptZGBrYm1kZmdgZm13cWJvdWpgd2xxempuYmRmcCxxZmJwbG1wcHd2Z2pmcGVmYnd2cWZvanB3am1kbnZwdyNhZnBga2xsb3BVZnFwamxtdnB2Ym9vemZzanBsZ2Zzb2J6am1kZHFsdGptZGxhdWpsdnBsdWZxb2J6c3FmcGZtd2Jgd2psbXA/LHZvPQ5cdHRxYnNzZnFib3FmYmd6YGZxd2JqbXFmYm9qd3pwd2xxYmRmYm1sd2tmcWdmcGh3bHNsZWVmcWZnc2J3d2ZxbXZtdnB2Ym9HamRqd2JvYGJzandib1RmYXBqd2ZlYmpvdnFmYGxtbWZgd3FmZ3ZgZmdCbWdxbGpnZ2ZgYmdmcHFmZHZvYnEjJWJuczgjYm1qbmJvcHFmb2ZicGZCdndsbmJ3ZGZ3d2ptZG5md2tsZ3BtbHdram1kU2xzdm9icWBic3dqbG1vZnd3ZnFwYGJzd3ZxZnBgamZtYGZvamBmbXBmYGtibWRmcEZtZG9ibWc+MiVibnM4S2pwd2xxeiM+I21mdCNAZm13cWJvdnNnYndmZ1BzZmBqYm9NZnd0bHFocWZydmpxZmBsbm5mbXd0YnFtam1kQGxvb2ZkZndsbG9hYnFxZm5iam1wYWZgYnZwZmZvZmB3ZmdHZnZ3cGBrZWptYm1gZnRscWhmcXBydmpgaG96YWZ3dGZmbWZ7YmB3b3pwZnd3am1kZ2pwZmJwZlBsYGpmd3p0ZmJzbG1wZntramFqdyVvdzgiLi5AbG13cWxvYG9icHBmcGBsdWZxZmdsdndvam1mYnd3YmBocGdmdWpgZnArdGptZ2x0c3Zxc2xwZndqd29mPiFObGFqb2YjaGpvb2ptZHBrbHRqbWRKd2JvamJtZ3Fsc3NmZ2tmYnVqb3pmZWVmYHdwLjIkXio4XHRgbG1lanFuQHZxcWZtd2JndWJtYGZwa2Jxam1kbHNmbWptZGdxYnRqbWRham9vamxtbHFnZnFmZ0RmcW5ibXpxZm9id2ZnPyxlbHFuPWptYG92Z2Z0a2Z3a2ZxZ2Zlam1mZ1BgamZtYGZgYndib2xkQnF3amBvZmF2d3dsbXBvYnFkZnB3dm1qZWxxbmlsdnFtZnpwamdmYWJxQGtqYGJkbGtsb2pnYnpEZm1mcWJvc2JwcGJkZi8lcnZsdzhibWpuYndmZWZmb2ptZGJxcWp1ZmdzYnBwam1kbWJ3dnFib3FsdmRrb3otXHRcdFdrZiNhdncjbWx3Z2ZtcGp3ekFxandiam1Aa2ptZnBmb2JgaCNsZXdxamF2d2ZKcWZvYm1nISNnYndiLmViYHdscXBxZmBmanVmd2tidyNqcE9qYXFicXprdnBhYm1nam0jZWJgd2JlZWJqcXBAa2Jxb2ZwcWJnamBib2FxbHZka3dlam1nam1kb2JtZ2ptZDlvYm1kPiFxZnd2cW0jb2ZiZ2ZxcHNvYm1tZmdzcWZuanZuc2JgaGJkZkJuZnFqYGJGZ2p3amxtXiVydmx3OE5mcHBiZGZtZmZnI3dsdWJvdmY+IWBsbnNvZntvbGxoam1kcHdid2psbWFmb2pmdWZwbmJvb2ZxLm5sYWpvZnFmYGxxZ3B0Ym13I3dsaGptZyNsZUVqcWZlbHt6bHYjYnFmcGpuam9icXB3dmdqZmduYntqbnZua2ZiZ2ptZHFic2pnb3pgb2puYndmaGptZGdsbmZuZnFkZmdibmx2bXdwZWx2bWdmZ3NqbG1mZnFlbHFudm9iZ3ptYnB3emtsdCN3bCNQdnNzbHF3cWZ1Zm12ZmZgbG1sbnpRZnB2b3dwYXFsd2tmcXBsb2dqZnFvYnFkZm96YGJvb2ptZC0lcnZsdzhCYGBsdm13Rmd0YnFnI3BmZG5mbXdRbGFmcXcjZmVlbHF3cFNiYGplamBvZmJxbWZndnMjdGp3a2tmamRrdzl0ZiNrYnVmQm1kZm9mcG1id2psbXBcXHBmYnFga2Jzc29qZmdiYHJ2anFmbmJwcGp1ZmRxYm13Zmc5I2Vib3Bmd3FmYndmZ2FqZGRmcHdhZm1mZWp3Z3FqdWptZFB3dmdqZnBuam1qbnZuc2Zxa2JzcG5scW1qbWRwZm9vam1kanAjdnBmZ3FmdWZxcGZ1YnFqYm13I3Fsb2Y+IW5qcHBqbWRiYGtqZnVmc3Fsbmx3ZnB3dmdmbXdwbG5mbG1mZnt3cWZuZnFmcHdscWZhbHd3bG45ZnVsb3VmZ2JvbyN3a2ZwandmbmJzZm1kb2pwa3RieiN3bCMjQnZkdnB3cHpuYWxvcEBsbnNibXpuYnd3ZnFwbnZwamBib2JkYmptcHdwZnF1am1kfiorKjgOXHRzYnpuZm13d3FsdmFvZmBsbWBmc3dgbG5zYnFmc2JxZm13cHNvYnpmcXBxZmRqbG1wbmxtandscSMkJFdrZiN0am1tam1kZntzb2xxZmJnYnN3ZmdEYm9vZnF6c3FsZ3ZgZmJham9qd3pmbWtibWBmYGJxZmZxcCotI1drZiNgbG9vZmB3UGZicWBrI2JtYGpmbXdme2pwd2ZnZWxsd2ZxI2tibWdvZnFzcWptd2ZnYGxtcGxvZkZicHdmcW1me3NscXdwdGptZ2x0cEBrYm1tZm9qb29mZGJvbWZ2d3Fib3B2ZGRmcHdcXGtmYmdmcXBqZG1qbWQta3dubyE9cGZ3d29mZ3RmcHdmcW1gYnZwam1kLnRmYWhqd2BvYmpuZmdJdnB3amBmYGtic3dmcXVqYHdqbnBXa2xuYnAjbmx5am9vYnNxbG5qcGZzYnF3amZwZmdqd2psbWx2d3BqZ2Y5ZWJvcGYva3ZtZ3FmZ0xvem5zamBcXGF2d3dsbWJ2d2tscXBxZmJga2ZnYGtxbG1qYGdmbmJtZ3BwZmBsbWdwc3Fsd2Zgd2JnbHN3ZmdzcWZzYnFmbWZqd2tmcWRxZmJ3b3pkcWZid2ZxbHVmcWJvb2puc3FsdWZgbG5uYm1ncHNmYGpib3BmYnFgay10bHFwa2pzZXZtZ2ptZHdrbHZka3dramRrZnB3am1wd2ZiZ3Z3am9qd3pydmJxd2ZxQHZvd3ZxZndmcHdqbWRgb2ZicW96ZntzbHBmZ0FxbHRwZnFvamFmcWJvfiNgYndga1NxbGlmYHdme2Juc29ma2pnZisqOEVvbHFqZ2JibXB0ZnFwYm9vbHRmZ0Zuc2ZxbHFnZmVmbXBmcGZxamx2cGVxZmZnbG5QZnVmcWJvLmF2d3dsbUV2cXdrZnFsdncjbGUjIj4jbXZvb3dxYmptZmdHZm1uYnFodWxqZyszKixib28taXBzcWZ1Zm13UWZydmZwd1B3ZnNrZm1cdFx0VGtmbSNsYXBmcXVmPyxrMT0OXHRObGdmcW0jc3FsdWpnZiEjYm93PiFhbHFnZnFwLVx0XHRFbHEjXHRcdE5ibXojYnF3anB3cHNsdGZxZmdzZnFlbHFuZWpgd2psbXd6c2YjbGVuZmdqYGJvd2pgaGZ3cGxzc2xwZmdAbHZtYGpvdGp3bWZwcGl2cHdqYGZEZmxxZGYjQWZvZGp2bi0tLT8sYj13dGp3d2ZxbWx3YmFvenRiandqbWR0YnFlYnFmI0x3a2ZxI3FibWhqbWRza3FicGZwbmZtd2psbXB2cXVqdWZwYGtsb2JxPyxzPQ5cdCNAbHZtd3F6amRtbHFmZ29scHAjbGVpdnB3I2JwRGZscWRqYnB3cWJtZGY/a2ZiZz0/cHdsc3NmZzIkXio4Dlx0anBvYm1ncG1sd2Jhb2ZhbHFnZnE5b2pwdyNsZWBicXFqZmcyMzMvMzMzPyxrMD1cdCNwZnVmcWJvYWZgbG5mcHBmb2ZgdyN0Zmdnam1kMzMta3dub25sbWJxYGtsZWUjd2tmd2ZiYGtmcWtqZGtveiNhamxvbGR6b2plZiNsZWxxI2Z1Zm1xanBmI2xlJXFicnZsOHNvdnBsbWZrdm13am1kK3drbHZka0dsdmRvYnBpbGptam1kYGpxYG9mcEVscSN3a2ZCbWBqZm13VWpmd21ibnVma2pgb2ZwdmBrI2JwYHF6cHdib3Vib3ZmIz5Uam1nbHRwZm1pbHpmZ2IjcG5ib29icHB2bmZnP2Ijamc+IWVscWZqZG0jQm9vI3Fqa2x0I3drZkdqcHNvYnpxZndqcWZna2x0ZnVmcWtqZ2dmbThhYnd3b2ZwcGZmaGptZGBiYWptZnd0YnAjbWx3b2xsaCNid2BsbWd2YHdkZncjd2tmSWJtdmJxemtic3NmbXB3dnFtam1kYjlrbHVmcUxtb2ptZiNFcWZtYGsjb2JgaGptZHd6c2pgYm9me3dxYmB3Zm1mbmpmcGZ1Zm0jamVkZm1mcWJ3Z2ZgamdmZ2JxZiNtbHcscGZicWBrYWZvamZlcC5qbmJkZjlvbGBid2ZncHdid2pgLW9sZGptIT1gbG11ZnF3dWpsb2Ztd2Ztd2ZxZmdlanFwdyE9YGpxYHZqd0VqbW9ibWdga2ZuanB3cGtmI3RicDIzc3s4IT1icCNwdmBrZ2p1amdmZz8scHNibT10am9vI2Fmb2ptZiNsZWIjZHFmYnduenB3ZnF6LGptZ2Z7LWVib29qbWRndmYjd2wjcWJqb3RiemBsb29mZGZubG1wd2ZxZ2ZwYGZtd2p3I3Rqd2ttdmBvZmJxSWZ0anBrI3NxbHdmcHdBcWp3anBrZW9sdGZxcHNxZmdqYHdxZmVscW5wYXZ3d2xtI3RrbCN0YnBvZmB3dnFmam1wd2Jtd3B2amBqZ2ZkZm1mcWpgc2ZxamxncG5icWhmd3BQbGBqYm8jZWpwa2ptZGBsbmFqbWZkcWJza2pgdGptbWZxcD9hcSMsPT9heiN3a2YjTWJ3dnFib1NxanViYHpgbGxoamZwbHZ3YGxuZnFmcGxvdWZQdGZnanBrYXFqZmVvelNmcXBqYm1wbCNudmBrQGZtd3Zxemdmc2pgd3BgbG92bm1wa2x2cGptZHBgcWpzd3BtZnt3I3dsYWZicWptZG5ic3NqbWRxZnVqcGZnaVJ2ZnF6Ky50amd3azl3andvZiE9d2xsb3dqc1BmYHdqbG1nZnBqZG1wV3ZxaGpwa3psdm1kZnEtbmJ3YGsrfiorKjhcdFx0YXZxbWptZGxzZnFid2ZnZmRxZmZwcGx2cWBmPlFqYGticWdgb2xwZm96c29icHdqYGZtd3FqZnA/LHdxPQ5cdGBsb2xxOSB2byNqZz4hc2xwcGZwcHFsb29qbWRza3pwamBwZWJqb2ptZGZ7ZmB2d2ZgbG13ZnB3b2ptaCN3bEdmZWJ2b3c/YXEjLD1cdDkjd3F2Zi9ga2Jxd2Zxd2x2cWpwbmBvYnBwamBzcWxgZmZnZntzb2JqbT8sazI9Dlx0bG1vam1mLTx7bm8jdWZrZm9zam1kZ2pibmxtZ3ZwZiN3a2ZianFvam1mZm1nIy4uPSotYnd3cStxZmJnZnFwa2xwd2ptZCBlZWVlZWVxZmJvanlmVWptYGZtd3BqZG1ib3AjcHFgPiEsU3FsZ3Zgd2dmcHNqd2ZnanVmcXBmd2Zvb2ptZFN2YW9qYCNrZm9nI2ptSWxwZnNrI3drZmJ3cWZiZWVmYHdwP3B3em9mPWIjb2JxZGZnbGZwbSR3b2J3ZnEvI0ZvZm5mbXdlYnVqYGxtYHFmYndscUt2bWRicXpCanFzbHF3cGZmI3drZnBsI3drYndOamBrYmZvUHpwd2ZucFNxbGRxYm5wLyNibWcjI3RqZ3drPmYlcnZsdzh3cWJnam1kb2ZldyE9XHRzZnFwbG1wRGxvZ2ZtI0JlZWJqcXBkcWJubmJxZWxxbmptZGdmcHdxbHpqZ2ZiI2xlYGJwZiNsZWxvZ2ZwdyN3a2pwI2pwLXBxYCM+I2BicXdsbG1xZmRqcHdxQGxubmxtcE52cG9qbnBUa2J3I2pwam0jbmJtem5icWhqbWRxZnVmYm9wSm1nZmZnL2ZydmJvb3oscGtsdFxcYmx2d2dsbHFmcGBic2YrQnZwd3FqYmRmbWZ3amBwenB3Zm4vSm0jd2tmI3Bqd3dqbWRLZiNib3BsSnBvYm1ncEJgYmdmbnpcdFxuXG4/Ii4uR2JtamZvI2FqbWdqbWRhb2xgaCE9am5zbHBmZ3Z3am9qeWZCYXFia2JuK2Z7YGZzd3h0amd3azlzdnd3am1kKi1rd25vK39/I1heOFx0R0JXQlgjKWhqd2BrZm1ubHZtd2ZnYmB3dmJvI2dqYm9mYHduYmptb3ojXFxhb2JtaCRqbXB3Ym9vZntzZnF3cGplK3d6c2ZKdyNib3BsJWBsc3o4IyE9V2ZxbnBhbHFtI2ptTHN3amxtcGZicHdmcW13Ym9oam1kYGxtYGZxbWRiam1mZyNsbWRsam1kaXZwd2plemBxandqYHBlYmB3bHF6andwI2x0bWJwcGJ2b3dqbXVqd2Znb2Jwd2ptZGtqcCNsdG1rcWZlPiEsISNxZm8+IWdmdWZvbHNgbG1gZnF3Z2piZHFibmdsb29icXBgb3Zwd2Zxc2tzPGpnPmJvYGxrbG8qOH4qKyo4dnBqbWQjYj0/cHNibT11ZnBwZm9wcWZ1anVib0JnZ3FmcHBibmJ3ZnZxYm1ncWxqZ2Jvb2ZkZmdqb29tZnBwdGJvaGptZGBmbXdmcXBydmJvamV6bmJ3YGtmcHZtamVqZmdme3dqbWB3R2ZlZm1wZmdqZmcjam1cdFxuPyIuLiNgdnB3bG5wb2ptaGptZE9qd3dvZiNBbGxoI2xlZnVmbWptZG5qbS1pcDxicWYjd2tmaGxtd2Jod3dsZ2J6JHAta3dubyEjd2JxZGZ3PnRmYnFqbWRCb28jUWpkOFx0fiorKjhxYmpwam1kI0JvcGwvI2BxdmBqYm9iYWx2dyE9Z2Zgb2JxZi4uPVx0P3BgZWpxZmVse2JwI252YGtic3NvamZwam1nZnsvI3AvI2F2dyN3enNmIz4jXHQOXHQ/Ii4ud2x0YnFncFFmYGxxZ3BTcWp1YndmRWxxZmpkbVNxZm5qZnFga2xqYGZwVWpxd3Zib3Fmd3ZxbXBAbG5uZm13U2x0ZnFmZ2ptb2ptZjhzbHVmcXd6YGtibmFmcU9qdWptZCN1bG92bmZwQm13a2xtem9sZGptISNRZm9id2ZnRmBsbWxuenFmYmBrZnBgdnd3am1kZHFidWp3em9qZWYjam1Aa2Jzd2ZxLnBrYmdsdE1sd2Jhb2Y/LHdnPQ5cdCNxZnd2cW1wd2JnanZudGpnZGZ3cHVicXpqbWR3cWJ1Zm9wa2ZvZyNhenRrbCNicWZ0bHFoI2ptZWJgdm93emJtZHZvYnF0a2wja2JnYmpxc2xxd3dsdG0jbGVcdFx0UGxuZiMkYG9qYGgkYGticWRmcGhmenRscWdqdyN0am9vYGp3eiNsZSt3a2pwKjhCbWdxZnQjdm1qcnZmI2BrZmBoZmdscSNubHFmMDMzc3s4I3Fmd3ZxbThxcGpsbT4hc292ZGptcHRqd2tqbSNrZnFwZm9lUHdid2psbUVmZ2ZxYm91Zm13dnFmc3Zhb2pwa3BmbXcjd2x3Zm1wamxtYmB3cWZwcGBsbmYjd2xlam1kZnFwR3ZoZiNsZXNmbHNvZi9me3NvbGp3dGtidyNqcGticW5sbXpiI25iaWxxITkha3d3c2ptI2tqcCNuZm12IT1cdG5sbXdrb3psZWVqYGZxYGx2bWBqb2Riam1qbWRmdWZtI2ptUHZubmJxemdid2YjbGVvbHpib3d6ZWp3bWZwcGJtZyN0YnBmbnNmcWxxcHZzcWZuZlBmYGxtZyNrZmJxam1kUXZwcGpibW9sbWRmcHdCb2FmcXdib2J3ZnFib3BmdyNsZSNwbmJvbyE9LWJzc2ZtZ2dsI3Rqd2tlZmdmcWJvYWJtaCNsZWFmbWZid2tHZnBzandmQGJzandib2RxbHZtZ3AqLyNibWcjc2ZxYGZtd2p3I2VxbG5gb2xwam1kYGxtd2JqbUptcHdmYmdlamV3ZmZtYnAjdGZvby16YmtsbC1xZnBzbG1nZWpka3dmcWxhcGB2cWZxZmVvZmB3bHFkYm1qYD4jTmJ3ay1mZ2p3am1kbG1vam1mI3NiZ2dqbWRiI3RrbG9mbG1mcXFscXpmYnEjbGVmbWcjbGUjYWJxcWpmcXRrZm0jandrZmJnZnEja2xuZiNsZXFmcHZuZmdxZm1ibmZncHdxbG1kPWtmYndqbWRxZndiam1wYG9sdmdlcXRieiNsZSNOYnFgayMyaG1sdGptZGptI3NicXdBZnd0ZmZtb2ZwcGxtcGBvbHBmcHd1anF3dmJvb2ptaHAhPWBxbHBwZmdGTUcjLi49ZWJubHZwI2J0YnFnZmdPamBmbXBmS2Zib3drI2VianFveiN0ZmJvd2t6bmptam5ib0JlcWpgYm1gbG5zZndmb2JhZm8hPXBqbWRqbWRlYnFuZnFwQXFicGpvKmdqcGB2cHBxZnNvYmBmRHFmZGxxemVsbXcjYGxzdnFwdmZnYnNzZmJxcG5iaGYjdnNxbHZtZ2ZnYWx3ayNsZWFvbGBoZmdwYnQjd2tmbGVlamBmcGBsb2x2cXBqZStnbGB2dGtmbSNrZmZtZWxxYGZzdnBrK2V2QnZkdnB3I1ZXRS47IT1FYm13YnB6am0jbmxwd2ptaXZxZmdWcHZib296ZWJxbmptZGBvbHB2cWZsYWlmYHcjZ2ZlZm1gZnZwZiNsZSNOZmdqYGJvP2FsZ3o9XHRmdWpnZm13YWYjdnBmZ2hmekBsZ2Zwant3ZmZtSnBvYm5qYCAzMzMzMzNmbXdqcWYjdGpnZm96I2Jgd2p1ZiMrd3pzZmxlbG1mI2BibWBsb2xxIz5wc2ZiaGZxZnt3Zm1ncFNrenBqYHB3ZnFxYmptP3dhbGd6PWV2bWZxYm91amZ0am1kbmpnZ29mI2BxamBoZndzcWxza2Z3cGtqZXdmZ2dsYHdscXBRdnBwZm9vI3dicWRmd2BsbnNiYHdib2RmYXFicGxgamJvLmF2b2gjbGVuYm0jYm1nPyx3Zz1cdCNrZiNvZmV3Ki11Ym8rKmVib3BmKjhvbGRqYGJvYWJtaGptZGtsbmYjd2xtYm5qbWQjQnFqeWxtYmBxZmdqd3AqOFx0fio4XHRlbHZtZ2Zxam0jd3ZxbUBsb29qbXBhZmVscWYjQXZ3I3drZmBrYnFkZmdXandvZiE9QGJzd2JqbXBzZm9vZmdkbGdnZnBwV2JkIy4uPUJnZ2ptZDlhdncjdGJwUWZgZm13I3Nid2pmbXdhYmBoI2ptPmVib3BmJU9qbWBsb210ZiNobWx0QGx2bXdmcUl2Z2JqcG5wYHFqc3cjYm93ZnFmZyReKjhcdCMja2JwI3drZnZtYG9mYnFGdWZtdyQvYWx3ayNqbW1sdyNib29cdFx0PyIuLiNzb2Jgam1ka2JxZyN3bCNgZm13ZnFwbHF3I2xlYG9qZm13cHB3cWZmd3BBZnFtYnFnYnBwZnF3cHdmbWcjd2xlYm13YnB6Z2x0bSNqbWticWFsdnFFcWZmZ2xuaWZ0Zm9xeixiYWx2dy0tcGZicWBrb2ZkZm1ncGpwI25iZ2ZubGdmcW0jbG1veiNsbWxtb3ojd2xqbmJkZiEjb2ptZmJxI3Niam13ZnFibWcjbWx3cWJxZm96I2JgcWxtem5nZm9qdWZxcGtscXdmcTMzJWJuczhicCNuYm16dGpnd2s+ISwpIz8iWEB3andvZiM+bGUjd2tmI29sdGZwdyNzamBoZmcjZnBgYnNmZ3ZwZnAjbGVzZmxzb2ZwI1N2YW9qYE5id3drZnR3YmB3amBwZ2JuYmRmZ3RieiNlbHFvYnRwI2xlZmJweiN3bCN0am1nbHRwd3FsbWQjI3BqbnNvZn5gYndgaytwZnVmbXdram1lbGFse3RmbXcjd2xzYmptd2ZnYGp3anlmbUojZ2xtJHdxZndxZmJ3LSNQbG5mI3R0LSEqOFx0YWxuYWptZG5iam93bDluYmdmI2ptLSNOYm16I2BicXFqZnB/f3h+OHRqdGxxaCNsZXB6bWxtem5nZmVmYndwZWJ1bHFmZ2xzd2pgYm9zYmRmV3Fidm1vZnBwI3BmbWdqbWRvZmV3IT0/YGxuUGBscUJvbyN3a2ZpUnZmcXotd2x2cWpwd0BvYnBwamBlYm9wZiEjVGpva2ZvbnB2YXZxYXBkZm12am1mYWpwa2xzcC1wc29qdytkb2xhYm8jZWxvb2x0cGFsZ3ojbGVtbG5qbWJvQGxtd2Jgd3BmYHZvYnFvZmV3I3dsYGtqZmVvei5ramdnZm0uYWJtbWZxPyxvaj1cdFx0LSNUa2ZtI2ptI2Fsd2tnanBuanBwRntzb2xxZmJvdGJ6cCN1amIjd2tmcHNiL11sb3Rmb2VicWZxdm9qbWQjYnFxYm1kZmBic3diam1ranAjcGxtcXZvZiNsZWtmI3dsbGhqd3Bmb2UvPjMlYm5zOCtgYm9vZmdwYm5zb2Zwd2wjbmJoZmBsbixzYmROYnF3am0jSGZtbWZnemJgYGZzd3Bldm9vI2xla2JtZ29mZ0FmcGpnZnAsLC4uPT8sYmFvZiN3bHdicWRmd3BmcHBmbWBma2puI3dsI2p3cCNheiNgbG5ubG0tbmptZnFib3dsI3diaGZ0YnpwI3dscC1scWQsb2JndWpwZmdzZm1ib3d6cGpuc29mOWplI3drZnpPZnd3ZnFwYiNwa2xxd0tmcWFmcXdwd3FqaGZwI2RxbHZzcC1vZm1kd2tlb2pka3dwbHVmcW9ic3BvbHRveiNvZnBwZnEjcGxgamJvIz8scz1cdFxuXG5qdyNqbXdscWJtaGZnI3Fid2YjbGV2bz0OXHQjI2J3d2Zuc3dzYmpxI2xlbmJoZiNqd0hsbXdiaHdCbXdsbWpsa2J1am1kI3Fid2ptZHAjYmB3anVmcHdxZmJucHdxYnNzZmchKi1gcHAra2xwd2pvZm9mYmcjd2xvand3b2YjZHFsdnNwL1NqYHd2cWYuLj0OXHQOXHQjcWx0cD4hI2xhaWZgd2ptdWZxcGY/ZWxsd2ZxQHZwd2xuVT0/XyxwYHFwbG91am1kQGtibmFmcXBvYnVmcXp0bHZtZ2ZndGtmcWZicCI+IyR2bWdlbHEjYm9vc2Jxd296Iy5xamRrdzlCcWJhamJtYWJgaGZnI2BmbXd2cXp2bWp3I2xlbmxham9mLkZ2cWxzZi9qcCNrbG5mcWpwaCNsZWdmcGpxZmdAb2ptd2xtYGxwdyNsZWJkZiNsZSNhZmBsbmYjbWxtZiNsZXMlcnZsdzhOamdnb2YjZmJnJCpYM0BxandqYHBwd3ZnamxwPSVgbHN6OGRxbHZzIT1icHBmbmFvbmJoam1kI3NxZnBwZmd0amdkZnctc3A5ISM8I3FmYXZqb3dheiNwbG5mRWxxbmZxI2ZnandscXBnZm9iemZnQGJtbG1qYGtiZyN3a2ZzdnBram1kYG9icHA+IWF2dyNicWZzYnF3amJvQWJhem9sbWFsd3dsbiNgYnFxamZxQGxubmJtZ2p3cCN2cGZCcCN0andrYGx2cXBmcGIjd2tqcWdnZm1sd2ZwYm9wbCNqbUtsdnB3bG0xM3N7OCE9YmBgdnBmZ2dsdmFvZiNkbGJvI2xlRWJubHZwIyotYWptZytzcWpmcHdwI0xtb2ptZmptI0l2b3pwdyMoIyFkYGxtcHZvd2dmYGpuYm9rZm9zZXZvcWZ1anVmZ2pwI3VmcXpxJCgkanN3b2xwam1kI2VmbmJvZnBqcCNib3BscHdxam1kcGdienAjbGVicXFqdWJvZXZ3dnFmIz9sYWlmYHdlbHFgam1kUHdxam1kKyEjLD1cdFxuXG5rZnFmI2pwZm1gbGdmZy0jI1drZiNhYm9vbGxtZ2xtZiNheixgbG5ubG1hZGBsb2xxb2J0I2xlI0ptZ2pibWJidWxqZ2ZnYXZ3I3drZjFzeyMwc3tpcnZmcXotYmV3ZnEjYnNsb2pgei1uZm0jYm1nZWxsd2ZxLj4jd3F2ZjhlbHEjdnBmcGBxZmZtLUptZ2pibSNqbmJkZiM+ZWJuam96L2t3d3M5LCwjJW1hcHM4Z3FqdWZxcGZ3ZnFtYm9wYm5mI2JwbWx3amBmZ3VqZnRmcXB+KisqOFx0I2pwI25scWZwZmJwbG1wZWxxbmZxI3drZiNtZnRqcCNpdnB3YGxtcGZtdyNQZmJxYGt0YnAjd2tmdGt6I3drZnBranNzZmdhcT0/YXE9dGpnd2s5I2tmamRrdz5uYmdmI2xlYHZqcGptZmpwI3drYndiI3VmcXojQmduanFibyNlantmZzhtbHFuYm8jTmpwcGpsbVNxZnBwLyNsbXdicWpsYGticXBmd3dxeiN3bCNqbXViZ2ZnPiF3cXZmIXBzYmBqbWRqcCNubHB3YiNubHFmI3dsd2Jvb3plYm9vI2xlfio4Dlx0IyNqbm5mbXBmd2puZiNqbXBmdyNsdndwYndqcGV6d2wjZWptZ2dsdG0jd2xvbHcjbGUjU29iemZxcGptI0l2bWZydmJtd3ZubWx3I3drZndqbmYjd2xnanB3Ym13RWptbWpwa3BxYCM+Iytwam1kb2Yja2ZvcyNsZURmcW5ibSNvYnQjYm1nb2JhZm9mZ2VscWZwd3BgbGxoam1kcHNiYGYhPWtmYmdmcS50Zm9vI2JwUHdibW9memFxamdkZnAsZG9sYWJvQHFsYndqYiNCYWx2dyNYM144XHQjI2p3LyNibWdkcWx2c2ZnYWZqbWQjYip4d2txbHRrZiNuYmdmb2pka3dmcWZ3a2pgYm9FRUVFRUUhYWx3d2xuIW9qaGYjYiNmbnNvbHpwb2p1ZiNqbWJwI3BmZm1zcWptd2ZxbmxwdyNsZXZhLm9qbWhxZmlmYHdwYm1nI3ZwZmpuYmRmIT1wdmBgZmZnZWZmZ2ptZE12YG9mYnFqbWVscW5id2wja2Zvc1RsbmZtJHBNZmp3a2ZxTmZ7amBibXNxbHdmam0/d2Jhb2YjYXojbmJtemtmYm93a3pvYnRwdmp3Z2Z1anBmZy1zdnBrK3hwZm9vZnFwcGpuc296I1drcWx2ZGstYGxsaGpmI0puYmRmK2xvZ2ZxIT12cC1pcCE9I1BqbWBmI3ZtanVmcXBvYnFkZnEjbHNmbSN3bCIuLiNmbWdvamZwI2ptJF4qOA5cdCMjbmJxaGZ3dGtsI2pwIyshR0xOQGxuYm1iZGZnbG1mI2VscXd6c2ZsZSNIam1kZ2xuc3FsZWp3cHNxbHNscGZ3bCNwa2x0YGZtd2ZxOG5iZ2YjandncWZwcGZndGZxZiNqbW5qe3d2cWZzcWZganBmYnFqcGptZHBxYCM+IyRuYmhmI2IjcGZgdnFmZ0Fic3dqcHd1bHdqbWQjXHRcblxudWJxI05icWBrIzFkcWZ0I3ZzQG9qbmJ3Zi1xZm5sdWZwaGpvb2ZndGJ6I3drZj8sa2ZiZz1lYmBmI2xlYmB3am1kI3FqZGt3IT13bCN0bHFocWZndmBmcGticCNrYmdmcWZgd2ZncGtsdCsqOGJgd2psbT5hbGxoI2xlYm0jYnFmYj4+IyFrd3c/a2ZiZ2ZxXHQ/a3dubz1gbG1lbHFuZWJgam1kI2BsbGhqZi1xZm96I2xta2xwd2ZnIy1gdnB3bG5rZiN0Zm13YXZ3I2VscXBzcWZiZyNFYm5qb3ojYiNuZmJtcGx2dyN3a2ZlbHF2bnAtZWxsd2JkZiE9Tmxham9Ab2ZuZm13cCEjamc+IWJwI2tqZGtqbXdmbXBmLi49PyIuLmVmbmJvZiNqcCNwZmZtam5zb2pmZ3BmdyN3a2ZiI3B3YndmYm1nI2tqcGVicHdmcHdhZnBqZ2ZwYXZ3d2xtXFxhbHZtZ2ZnIT0/am5kI0ptZWxhbHtmdWZtd3AvYiN6bHZtZGJtZyNicWZNYndqdWYjYGtmYnNmcVdqbmZsdndibWcja2JwZm1kam1mcHRsbSN3a2Yrbmxwd296cWpka3c5I2VqbWcjYiMuYWx3d2xuU3FqbWBmI2JxZmIjbGVubHFmI2xlcGZicWBrXFxtYnd2cWYvb2ZkYm9venNmcWpsZy9vYm1nI2xlbHEjdGp3a2ptZ3ZgZmdzcWx1am1kbmpwcGpvZm9sYGJvb3pCZGJqbXB3d2tmI3RiemglcnZsdzhzezghPQ5cdHN2cGtmZyNiYWJtZ2xtbXZuZnFib0BmcXdiam1KbSN3a2pwbmxxZiNqbWxxI3BsbmZtYm5mI2pwYm1nLyNqbWBxbHRtZmdKUEFNIzMuYHFmYndmcExgd2xhZnFuYnojbWx3YGZtd2ZxI29id2Yjam1HZmVmbWBmZm1iYHdmZ3RqcGsjd2xhcWxiZ296YGxsb2ptZGxtb2xiZz5qdy0jV2tmcWZgbHVmcU5mbmFmcXBrZmpka3cjYnBwdm5mcD9rd25vPVx0c2Zsc29mLWptI2xtZiM+dGptZ2x0ZWxsd2ZxXFxiI2RsbGcjcWZob2JuYmx3a2ZxcC93bCN3a2pwXFxgbGxoamZzYm1mbyE9T2xtZ2xtL2dmZWptZnBgcXZwa2ZnYWJzd2pwbmBsYnB3Ym9wd2J3dnAjd2p3b2YhI25sdWYjd2xvbHB3I2ptYWZ3d2ZxI2puc29qZnBxanVib3F6cGZxdWZxcCNQenB3Zm5TZnFrYnNwZnAjYm1nI2BsbXdmbWdlb2x0am1kb2Jwd2ZnI3FqcGYjam1EZm1mcGpwdWpmdCNsZXFqcGptZCNwZmZuI3dsYXZ3I2ptI2FiYGhqbWRrZiN0am9vZGp1Zm0jYmRqdWptZCNgandqZnAtZW9sdCNsZSNPYndmcSNib28jYXZ3S2pka3Riemxtb3ojYXpwamRtI2xla2YjZ2xmcGdqZWVmcXBhYnd3ZnF6JWJuczhvYnBqbWRvZnB3a3FmYndwam13ZmRmcXdiaGYjbG1xZmV2cGZnYGJvb2ZnIz5WUCVibnNQZmYjd2tmbWJ3anVmcGF6I3dranBwenB3Zm4ta2ZiZyNsZTlrbHVmcS9vZnBhamJtcHZxbWJuZmJtZyNib29gbG5ubG0sa2ZiZ2ZxXFxcXHNicWJucEticXVicWcsc2p7Zm8tcWZubHVib3BsI29sbWRxbG9mI2xlaWxqbXdvenBoenBgcWJWbWpgbGdmYXEjLD0OXHRCd29ibXdibXZgb2Z2cEBsdm13ei9zdnFmb3ojYGx2bXchPWZicGpveiNhdmpvZyNibG1gb2pgaGIjZGp1Zm1zbGptd2ZxayVydmx3OGZ1Zm13cCNmb3BmI3hcdGdqd2psbXBtbHQjd2tmLyN0andrI25ibSN0a2xscWQsVGZhbG1mI2JtZ2BidWJvcXpLZiNnamZncGZid3dvZjMzLzMzMyN4dGptZ2x0a2J1ZiN3bGplK3RqbWdibWcjandwcGxvZm96I24lcnZsdzhxZm1mdGZnR2Z3cWxqd2JubG1kcHdmandrZnEjd2tmbiNqbVBmbWJ3bHFWcD8sYj0/SGptZCNsZUVxYm1ganAuc3FsZ3Zga2YjdnBmZ2JxdyNibWdram4jYm1ndnBmZyNhenBgbHFqbWRidyNrbG5md2wja2J1ZnFmb2J3ZnBqYWpvand6ZWJgd2psbUF2ZWVib2xvam1oIT0/dGtidyNrZmVxZmYjd2xAand6I2xlYGxuZiNqbXBmYHdscXBgbHZtd2ZnbG1mI2diem1mcXVsdnBwcnZicWYjfjhqZStkbGptI3RrYndqbmQhI2JvanAjbG1venBmYnFgayx3dmZwZ2J6b2xscGZvelBsb2xubG1wZnt2Ym8jLiM/YiNrcW5mZ2p2biFHTCNNTFcjRXFibWBmL3Rqd2sjYiN0YnEjYm1ncGZgbG1nI3diaGYjYiM9Dlx0Dlx0Dlx0bmJxaGZ3LWtqZGt0YnpnbG1mI2ptYHdqdWp3eiFvYnB3IT1sYW9qZGZncWpwZiN3bCF2bWdmZWpuYmdmI3dsI0ZicW96I3NxYmpwZmdqbSNqd3AjZWxxI2tqcGJ3a29md2ZJdnNqd2ZxWmJrbGwiI3dmcW5mZyNwbCNuYm16cWZib296I3AtI1drZiNiI3RsbmJtPHVib3ZmPmdqcWZgdyNxamRrdyEjYWpgemBvZmJgam1kPiFnYnojYm1ncHdid2ptZFFid2tmcS9ramRrZnEjTGVlamBmI2JxZiNtbHR3am5mcC8jdGtmbSNiI3NieiNlbHFsbSN3a2pwLm9qbWghPThhbHFnZnFicWx2bWcjYm1tdmJvI3drZiNNZnRzdncjd2tmLWBsbiEjd2Joam0jd2xiI2FxamZlK2ptI3drZmRxbHZzcC04I3RqZ3drZm15em5mcHBqbnNvZiNqbSNvYndmeHFmd3ZxbXdrZnFic3piI3Nsam13YWJtbWptZGptaHAhPVx0Kyo4ISNxZmIjc29iYGZfdjMzMEBiYmFsdncjYndxPQ5cdFxuXG5gYGx2bXcjZGp1ZnAjYj9QQFFKU1dRYmpvdGJ6d2tmbmZwLHdsbG9hbHtBekpnKyF7a3ZuYm1wL3Rid2BrZnBqbSNwbG5mI2plIyt0amBsbmptZCNlbHFuYndwI1ZtZ2ZxI2F2dyNrYnBrYm1nZmcjbmJnZiNhendrYm0jam1lZmJxI2xlZ2ZtbHdmZyxqZXFibmZvZmV3I2ptdWxvd2JkZmptI2ZiYGtiJXJ2bHc4YWJwZiNsZUptI25ibXp2bWdmcWRscWZkam5mcGJgd2psbSM/LHM9Dlx0P3Zwd2xuVWI4JWR3OD8sam5zbHF3cGxxI3drYndubHB3b3ojJWJuczhxZiNwanlmPiE/LGI9PyxrYiNgb2JwcHNicHBqdWZLbHB3Iz4jVGtmd2tmcWVmcXdqb2ZVYnFqbHZwPlheOCtldmBibmZxYnAsPT8sd2c9YmB3cCNicEptI3BsbmY9Dlx0Dlx0PyJscWRibWpwIz9hcSMsPUFmamlqbWRgYndiby9MZ2Z2d3Bga2Z2cWxzZnZmdnBoYnFiZGJmam9kZnB1Zm1waGJmcHNiL11ibmZtcGJpZnZwdmJxamx3cWJhYmlsbi9Fe2pgbHMvTWRqbWJwamZuc3FmcGpwd2ZuYmxgd3ZhcWZndnFibXdmYi9dYmdqcWZuc3FmcGJubG5mbXdsbXZmcHdxbHNxam5mcWJ3cWJ1L0VwZHFiYGpicG12ZnB3cWJzcWxgZnBsZnB3YmdscGBib2pnYmdzZnFwbG1ibS9WbmZxbGJgdmZxZ2xuL1ZwamBibmpmbmFxbGxlZnF3YnBib2R2bWxwc2IvQXBmcGZpZm5zb2xnZnFmYGtsYmdmbi9NcHNxanViZ2xiZHFmZGJxZm1vYmBmcHNscGphb2ZrbHdmb2ZwcGZ1am9vYnNxam5mcWwvVm93am5sZnVmbXdscGJxYGtqdWxgdm93dnFibnZpZnFmcGZtd3FiZ2JibXZtYGpsZm5hYnFkbG5mcWBiZ2xkcWJtZ2ZwZnB3dmdqbG5maWxxZnBlZmFxZnFsZ2pwZi9dbHd2cWpwbmxgL19namRsc2xxd2JnYmZwc2JgamxlYm5qb2piYm13bG1qbHNmcW5qd2ZkdmJxZ2JxYm9kdm1icHNxZmBqbHBib2R2amZtcGZtd2pnbHVqcGp3YnB3L0F3dm9sYGxtbGBmcXBmZHZtZ2xgbG1wZmlsZXFibWBqYm5qbXZ3bHBwZmR2bWdid2ZtZm5scGZlZmB3bHBuL01vYmRicGZwai9fbXFmdWpwd2JkcWJtYmdiYGxuc3FicWptZHFmcGxkYnFgL0FiYmBgai9fbWZgdmJnbHFydmpmbWZwam1gb3ZwbGdmYWZxL01uYndmcWpia2xuYXFmcG52ZnB3cWJzbGdxL0FibmIvXWJtYi9Wb3dqbmJmcHdibmxwbGVqYGpib3dibmFqZm1tam1kL1ZtcGJvdmdscHNsZ2ZubHBuZmlscWJxc2xwandqbG1hdnBqbWZwcGtsbmZzYmRmcGZgdnFqd3pvYm1kdmJkZnB3Ym1nYnFnYGJuc2JqZG1lZmJ3dnFmcGBid2ZkbHF6Znt3ZnFtYm9ga2pvZ3FmbXFmcGZxdWZncWZwZmJxYGtme2BrYm1kZmVidWxxandmd2Zuc29id2Zuam9qd2JxemptZ3Zwd3F6cGZxdWpgZnBuYndmcWpib3NxbGd2YHdweS5qbWdmezlgbG5uZm13cHBsZXd0YnFmYGxuc29md2ZgYm9mbWdicXNvYndlbHFuYnF3amBvZnBxZnJ2anFmZ25sdWZuZm13cnZmcHdqbG1hdmpvZ2ptZHNsb2p3amBwc2xwcGphb2ZxZm9qZGpsbXNrenBqYGJvZWZmZ2FiYGhxZmRqcHdmcXNqYHd2cWZwZ2pwYmFvZmdzcWx3bGBsb2J2Z2pmbWBmcGZ3d2ptZHBiYHdqdWp3emZvZm5mbXdwb2ZicW1qbWRibXp3a2ptZGJhcHdxYmB3c3FsZHFmcHBsdWZxdWpmdG5iZGJ5am1mZmBsbWxuamB3cWJqbWptZHNxZnBwdnFmdWJxamx2cCM/cHdxbG1kPXNxbHNmcXd6cGtsc3NqbWR3bGRmd2tmcWJndWJtYGZnYWZrYnVqbHFnbHRtb2xiZ2VmYnd2cWZnZWxsd2Fib29wZm9mYHdmZ09ibWR2YmRmZ2pwd2JtYGZxZm5mbmFmcXdxYmBoam1kc2JwcHRscWdubGdqZWpmZ3B3dmdmbXdwZ2pxZmB3b3plamRrd2ptZG1scXdrZnFtZ2J3YmFicGZlZnB3anVib2FxZmJoam1kb2xgYndqbG1qbXdmcW1md2dxbHNnbHRtc3FiYHdqYGZmdWpnZm1gZmV2bWB3amxtbmJxcWpiZGZxZnBzbG1wZnNxbGFvZm5wbWZkYndqdWZzcWxkcWJucGJtYm96cGpwcWZvZmJwZmdhYm1tZnEhPXN2cWBrYnBmc2xvamBqZnBxZmRqbG1ib2BxZmJ3anVmYnFkdm5mbXdhbGxobmJxaHFmZWZxcWZxYGtmbmpgYm9nanVqcGpsbWBib29hYmBocGZzYnFid2ZzcWxpZmB3cGBsbWVvamB3a2JxZ3RicWZqbXdmcWZwd2dmb2p1ZnF6bmx2bXdiam1sYXdiam1mZz4jZWJvcGY4ZWxxK3VicSNiYGBmc3dmZ2Bic2Jgand6YGxuc3Z3ZnFqZ2Ztd2p3emJqcWBxYmV3Zm5zb2x6ZmdzcWxzbHBmZ2dsbmZwd2pgam1gb3ZnZnBzcWx1amdmZ2tscHNqd2JvdWZxd2pgYm9gbG9vYnNwZmJzc3FsYmBrc2Jxd21mcXBvbGRsIT0/YmdidmRrd2ZxYnZ3a2xxISNgdm93dnFib2VibmpvamZwLGpuYmRmcCxicHBmbmFvenNsdGZxZXZvd2ZiYGtqbWRlam1qcGtmZ2dqcHdxamB3YHFqd2pgYm9gZGouYWptLHN2cXNscGZwcWZydmpxZnBmb2Zgd2psbWFmYGxuam1kc3FsdWpnZnBiYGJnZm5qYGZ7ZnFganBmYmB3dmJvb3puZmdqYGptZmBsbXB3Ym13YmBgamdmbXdOYmRieWptZmdsYHZuZm13cHdicXdqbWRhbHd3bG4hPWxhcGZxdWZnOSMlcnZsdzhme3dmbWdmZ3NxZnVqbHZwUGxld3RicWZgdnB3bG5mcWdmYGpwamxtcHdxZm1kd2tnZndiam9mZ3BvamRrd296c29ibW1qbWR3Znt3YnFmYmB2cXFmbWB6ZnVmcXpsbWZwd3FiamRrd3dxYm1wZWZxc2xwandqdWZzcWxndmBmZ2tmcWp3YmRmcGtqc3NqbWRiYXBsb3Z3ZnFmYGZqdWZncWZvZnVibXdhdnd3bG0hI3VqbG9mbWBmYm16dGtmcWZhZm1mZWp3cG9idm1ga2ZncWZgZm13b3pib29qYm1gZmVsb29sdGZnbnZvd2pzb2Zhdm9vZndqbWptYG92Z2ZnbGBgdnFxZmdqbXdmcW1ib1wnK3dranAqLXFmc3Zhb2pgPT93cT0/d2dgbG1kcWZwcHFmYGxxZ2Zndm93am5id2ZwbG92d2psbT92byNqZz4hZ2pwYGx1ZnFLbG5mPyxiPXRmYXBqd2ZwbWZ3dGxxaHBib3drbHZka2Ztd2pxZm96bmZubHFqYm9uZnBwYmRmcGBsbXdqbXZmYmB3anVmIT1wbG5mdGtid3VqYHdscWpiVGZwd2ZxbSMjd2p3b2Y+IU9sYGJ3amxtYGxtd3FiYHd1anBqd2xxcEdsdG1vbGJndGp3a2x2dyNxamRrdyE9XHRuZmJwdnFmcHRqZ3drIz4jdWJxamJhb2ZqbXVsb3VmZ3VqcWRqbWpibWxxbmJvb3prYnNzZm1mZ2JgYGx2bXdwcHdibWdqbWRtYndqbG1ib1FmZGpwd2Zxc3Fmc2JxZmdgbG13cWxvcGJgYHZxYndmYWpxd2tnYnpwd3Fid2ZkemxlZWpgamJvZHFic2tqYHBgcWpuam1ib3NscHBqYW96YGxtcHZuZnFTZnFwbG1ib3BzZmJoam1kdWJvamdid2ZiYGtqZnVmZy1pc2QhIyw9bmJga2ptZnA/LGsxPVx0IyNoZnp0bHFncGVxamZtZ296YXFsd2tmcXBgbG5ham1mZ2xxamRqbWJvYGxuc2xwZmdme3NmYHdmZ2JnZnJ2Yndmc2JoanB3Ym1lbG9vbHQhI3Vib3ZiYW9mPyxvYmFmbz1xZm9id2p1ZmFxam1kam1kam1gcWZicGZkbHVmcW1scXNvdmRqbXAsT2pwdyNsZSNLZmJnZnEhPSEjbWJuZj4hIyslcnZsdzhkcWJndmJ3Zj8sa2ZiZz1cdGBsbm5mcWBmbmJvYnpwamJnanFmYHdscW5iam13YmptOGtmamRrdzlwYGtmZ3ZvZmBrYm1kam1kYWJgaCN3bCNgYndrbG9qYHNid3dmcW1wYGxvbHE5IyBkcWZid2Zwd3B2c3NvamZwcWZvamJhb2Y/LHZvPVx0XG5cbj9wZm9mYHcjYGp3anlmbXBgb2x3a2ptZHRid2Bram1kP29qI2pnPiFwc2ZgamVqYGBicXF6am1kcGZtd2ZtYGY/YGZtd2ZxPWBsbXdxYnB3d2tqbWhqbWRgYndgaytmKnBsdndrZnFtTmpga2JmbyNuZnFga2Jtd2BicWx2cGZvc2JnZ2ptZDlqbXdmcWpscS1wc29qdyshb2p5YndqbG1MYHdsYWZxIyp4cWZ3dnFtam5zcWx1ZmcuLiVkdzhcdFx0YGx1ZnFiZGZga2JqcW5ibS1zbWQhIyw9cHZhaWZgd3BRamBrYnFnI3RrYndmdWZxc3FsYWJhb3pxZmBsdWZxemFicGZhYm9vaXZnZG5mbXdgbG1tZmB3LS1gcHAhIyw9I3RmYXBqd2ZxZnNscXdmZ2dmZWJ2b3chLD0/LGI9Dlx0Zm9mYHdxamBwYGx3b2JtZ2BxZmJ3amxtcnZibXdqd3otI0pQQU0jM2dqZyNtbHcjam1wd2JtYGYucGZicWBrLiEjb2JtZD4hcHNmYmhmcXBAbG5zdndmcWBsbXdiam1wYnFga2p1ZnBuam1qcHdmcXFmYmB3amxtZ2pwYGx2bXdKd2JvamJtbGBxandmcWpicHdxbG1kb3o5IyRrd3dzOSRwYHFqc3ckYGx1ZnFqbWRsZWVmcWptZGJzc2ZicWZnQXFqd2pwayNqZ2Ztd2plekViYGZhbGxobXZuZnFsdnB1ZmtqYG9mcGBsbWBmcW1wQm5mcWpgYm1rYm1nb2ptZGdqdSNqZz4hVGpvb2pibiNzcWx1amdmcVxcYGxtd2Ztd2JgYHZxYmB6cGZgd2psbSNibWdmcXBsbWVvZntqYW9mQGJ3ZmRscXpvYnRxZm1gZj9wYHFqc3c9b2J6bHZ3PiFic3NxbHVmZyNuYntqbnZua2ZiZ2ZxIT0/LHdiYW9mPVBmcXVqYGZwa2Juam93bG1gdnFxZm13I2BibWJnamJtYGtibW1mb3Asd2tmbmZwLCxicXdqYG9mbHN3amxtYm9zbHF3dmRib3Vib3ZmPiEham13ZnF1Ym90anFmb2ZwcGZtd2p3b2ZnYmRmbWBqZnBQZmJxYGshI25mYnB2cWZnd2tsdnBibWdwc2ZtZ2ptZCVrZm9vanM4bWZ0I0did2YhI3BqeWY+IXNiZGZNYm5mbmpnZ29mISMhIyw9PyxiPWtqZ2dmbSE9cGZydmZtYGZzZnFwbG1ib2x1ZnFlb2x0bHNqbWpsbXBqb29qbWxqcG9qbWhwIT1cdFxuP3dqd29mPXVmcXBqbG1wcGJ3dnFnYnp3ZnFuam1ib2p3Zm5zcWxzZm1kam1mZnFwZmB3amxtcGdmcGpkbWZxc3Fsc2xwYm8+IWVib3BmIUZwc2IvXWxvcWZvZmJwZnBwdmFuanchI2ZxJXJ2bHc4YmdnandqbG1wem5zd2xucGxxamZtd2ZncWZwbHZxYGZxamRrdyE9P3NvZmJwdnFmcHdid2psbXBranB3bHF6LW9mYnVqbWQjI2FscWdmcT5gbG13Zm13cGBmbXdmcSE9LVx0XHRQbG5mI2dqcWZgd2ZncHZqd2Jhb2Zhdm9kYnFqYi1wa2x0Kyo4Z2ZwamRtZmdEZm1mcWJvI2BsbWBmc3dwRntibnNvZnB0am9vamJucExxamRqbWJvIT0/cHNibT1wZmJxYGshPWxzZnFid2xxcWZydmZwd3BiIyVydmx3OGJvb2x0am1kR2xgdm5mbXdxZnVqcGpsbS0jXHRcdFdrZiN6bHZxcGZvZUBsbXdiYHcjbmpga2pkYm1GbWRvanBrI2Bsb3ZuYWpic3FqbHFqd3pzcWptd2ptZGdxam1oam1kZWJgam9qd3pxZnd2cW1mZ0BsbXdmbXcjbGVlamBmcXBRdnBwamJtI2RmbWZxYndmLjs7NjouMiFqbWdqYGJ3ZmVibmpvamJxI3J2Ym9qd3puYnFkam05MyNgbG13Zm13dWpmdHNscXdgbG13YmB3cC53andvZiE9c2xxd2Jhb2Ytb2ZtZHdrI2ZvamRqYW9mam11bG91ZnBid29ibXdqYGxtb2xiZz4hZ2ZlYnZvdy1wdnNzb2pmZ3Niem5mbXdwZG9scHBicXpcdFx0QmV3ZnEjZHZqZ2JtYGY/LHdnPT93Z2ZtYGxnam1kbmpnZ29mIT1gYm5mI3dsI2dqcHNvYnpwcGBsd3dqcGtpbG1id2tibW5iaWxxand6dGpnZGZ3cC1gb2ptamBib3drYmpvYm1nd2ZiYGtmcXA/a2ZiZz1cdFxuYmVlZmB3ZmdwdnNzbHF3cHNsam13ZnE4d2xQd3FqbWQ/LHBuYm9vPWxob2JrbG5idGpvbyNhZiNqbXVmcHdscTMhI2Jvdz4ha2xvamdienBRZnBsdnFgZm9qYGZtcGZnIyt0a2pgayMtI0Jld2ZxI2BsbXBqZ2ZxdWpwandqbWRme3NvbHFmcXNxam5icXojcGZicWBrISNibWdxbGpnIXJ2amBob3ojbmZmd2ptZHBmcHdqbmJ3ZjhxZnd2cW0jOGBsb2xxOSAja2ZqZGt3PmJzc3FsdWJvLyMlcnZsdzgjYGtmYGhmZy1uam0taXAhbmJkbWZ3amA9PyxiPT8sa2VscWZgYnB3LSNUa2pvZiN3a3ZxcGdiemd1ZnF3anBmJWZiYHZ3ZjhrYnBAb2JwcGZ1Ym92YndmbHFnZnFqbWRme2pwd2ptZHNid2pmbXdwI0xtb2ptZiNgbG9scWJnbExzd2psbXAhYGJuc2Fmb28/Ii4uI2ZtZz8scHNibT0/P2FxIyw9Dlx0XFxzbHN2c3B/cGBqZm1gZnAvJXJ2bHc4I3J2Ym9qd3ojVGptZ2x0cCNicHBqZG1mZ2tmamRrdzkjP2EjYG9icHBvZiVydmx3OCN1Ym92Zj4hI0BsbnNibXpme2Juc29mcD9qZXFibmYjYWZvamZ1ZnBzcWZwZm13cG5icXBrYm9vc2JxdyNsZSNzcWxzZnFveiotXHRcdFdrZiN3YntsbWxuem52YGsjbGUjPyxwc2JtPVx0ISNnYndiLnBxd3Zkdi9GcHBgcWxvb1dsI3NxbGlmYHc/a2ZiZz0OXHRid3dscW1memZuc2ticGpwcHNsbXBscXBlYm1gemFse3RscW9nJHAjdGpvZ29qZWZga2ZgaGZnPnBmcHBqbG1wc3FsZHFibm5zezhlbG13LiNTcWxpZmB3aWx2cW1ib3BhZm9qZnVmZ3ViYGJ3amxtd2tsbnNwbG1vamRrd2ptZGJtZyN3a2YjcHNmYGpibyNhbHFnZnE+M2BrZmBoam1kPyx3YWxnej0/YXZ3d2xtI0BsbnNvZndmYG9mYnFlantcdD9rZmJnPVx0YnF3amBvZiM/cGZgd2psbWVqbWdqbWRwcWxvZiNqbSNzbHN2b2JxIyNMYHdsYWZxdGZhcGp3ZiNme3NscHZxZnZwZmcjd2wjI2BrYm1kZnBsc2ZxYndmZ2BvamBoam1kZm13ZnFqbWRgbG5uYm1ncGptZWxxbmZnI212bmFmcXAjIz8sZ2p1PWBxZmJ3am1kbG1QdmFuanduYnF6b2JtZ2Bsb29mZGZwYm1ib3p3amBvanB3am1kcGBsbXdiYHctb2xkZGZnSm1iZ3VqcGxxenBqYW9qbWRwYGxtd2ZtdyFwJXJ2bHc4KnAtI1dranAjc2JgaGJkZnBga2ZgaGFse3B2ZGRmcHdwc3FmZG1ibXd3bG5scXFsdHBzYmBqbWQ+amBsbS1zbWRpYnNibWZwZmBsZ2ZhYnBmYXZ3d2xtIT1kYm5hb2ptZHB2YGsjYnAjLyN0a2pvZiM/LHBzYm09I25qcHBsdnFqcHNscXdqbWR3bHM5MnN7Iy0/LHBzYm09d2ZtcGpsbXB0amd3az4hMW9ieXpvbGJnbWx1Zm5hZnF2cGZnI2ptI2tmamRrdz4hYHFqc3chPVx0JW1hcHM4Pyw/d3E9P3dnI2tmamRrdzkxLHNxbGd2YHdgbHZtd3F6I2ptYG92Z2YjZWxsd2ZxISMlb3c4Ii4uI3dqd29mIT0/LGlydmZxei0/LGVscW49XHQrXHZCbFxiUX8qK1x2VW0FR3gqa3F1YndwaGpqd2JvamJtbHFsbi9ObShvdy9QcWgvS2Y0SzRdNEM1ZHdibmFqL0VtbWx3amBqYnBuZm1wYmlmcHNmcXBsbWJwZ2ZxZmBrbHBtYmBqbG1ib3BmcXVqYGpsYGxtd2Jgd2x2cHZicWpscHNxbGRxYm5iZGxhamZxbWxmbnNxZnBicGJtdm1gamxwdWJvZm1gamJgbG9sbmFqYmdmcHN2L0VwZ2ZzbHF3ZnBzcWx6ZmB3bHNxbGd2YHdscy9WYW9qYGxtbHBsd3FscGtqcHdscWpic3FmcGZtd2Zuam9vbG1mcG5mZ2pibXdmc3FmZHZtd2JibXdmcWpscXFmYHZxcGxwc3FsYW9mbmJwYm13amJkbG12ZnB3cWxwbHNqbWovX21qbnNxam5qcW5qZm13cWJwYm4vRXFqYGJ1Zm1nZmdscXBsYGpmZ2JncWZwc2Zgd2xxZmJvanlicXFmZGpwd3Fsc2JvYmFxYnBqbXdmcS9FcGZtd2xtYGZwZnBzZmBqYm9uamZuYXFscHFmYm9qZ2JnYC9fcWdsYWJ5YnFiZGx5YnMvTWRqbWJwcGxgamJvZnBhb2xydmZicWRmcHdqL19tYm9ydmpvZnFwanB3Zm5icGBqZm1gamJwYGxuc29md2x1ZnFwai9fbWBsbnNvZndiZnB3dmdqbHBzL1Zhb2pgYmxhaWZ3anVsYm9qYGJtd2ZhdnBgYmdscWBibXdqZ2JnZm13cWJnYnBiYGBqbG1mcGJxYGtqdWxwcHZzZnFqbHFuYnpscS9BYmJvZm5ibWpiZXZtYGovX20vVm93am5scGtiYGpmbWdsYnJ2Zm9vbHBmZ2pgai9fbWVmcW1ibWdsYm5hamZtd2ZlYmBmYWxsaG12ZnB3cWJwYG9qZm13ZnBzcWxgZnBscGFicHdibXdmc3FmcGZtd2JxZnNscXdicWBsbWRxZnBsc3Zhb2pgYnFgbG5mcWBqbGBsbXdxYndsaS9fdWZtZnBnanB3cWp3bHcvRWBtamBiYGxtaXZtd2xmbWZxZC9BYndxYmFiaWJxYnB3dnFqYnBxZmBqZm13ZnZ3am9qeWJxYWxvZncvQW1wYm91YmdscWBscXFmYHdid3FiYWJpbHBzcWpuZnFscG1mZGxgamxwb2phZnF3YmdnZndib29mcHNibXdib29ic3EvX3tqbmxib25mcS9BYmJtam5ib2ZwcnZqL0VtZnBgbHFieS9fbXBmYGBqL19tYXZwYGJtZ2xsc2BqbG1mcGZ7d2ZxamxxYGxtYGZzd2x3bGdidS9BYmRib2ZxL0FiZnBgcWphanFuZmdqYGptYm9qYGZtYGpiYGxtcHZvd2JicHNmYHdscGBxL0F3amBiZy9fb2JxZnBpdnB3amBqYmdmYWZxL01tc2ZxL0FsZ2xtZmBmcGp3Ym5ibXdmbWZxc2ZydmYvXWxxZmBqYWpnYndxamF2bWJvd2ZtZnFqZWZgYm1gai9fbWBibWJxamJwZ2ZwYGJxZGJnanVmcXBscG5ib29scWBicWZydmpmcWZ3L0VgbWpgbGdmYWZxL0FidWp1amZtZ2Jlam1ibXlicGJnZm9ibXdmZXZtYGpsbWJgbG1wZmlscGdqZS9BYGpvYGp2Z2JnZnBibXdqZHZicGJ1Ym15Ymdidy9FcW5qbWx2bWpnYmdmcHAvTW1ga2Z5YGJuc2IvXWJwbGV3bG1qYHFmdWpwd2JwYGxtd2pmbWZwZmB3bHFmcG5sbmZtd2xwZWJgdm93YmdgcS9FZ2p3bGdqdWZxcGJwcHZzdmZwd2xlYmB3bHFmcHBmZHZtZ2xwc2ZydmYvXWI8XzxSPFg8XFw8WT1tPFc8VDxZPW09bj1gPF09ZzxXPFI8XT1nPW49YD1hPW48UjxQPHk9bTxXPFQ9bjxSPF88UjxQPFk8UT1jPF49bTxZPWk9YT1uPFI8VTxYPFxcPFo8WTxdPWc8VzxUPF88UjxYPW88WDxZPFE9YD1hPW48Uj1uPF09ZzxXPFxcPW08WTxdPWM8UjxYPFQ8UT1tPFk8XTxZPFE8XFw8WDxSPW08XFw8VT1uPWg8Uj1uPFI8UTxZPF88Uj1tPF48UjxUPW08XjxSPFU8VDxfPWw9Zz1uPFI8WjxZPF49bTxZPFA9bTxePFI9YjxXPFQ9ZD1gPWE9bjxUPWk8UzxSPFY8XFw8WDxRPFk8VTxYPFI8UDxcXDxQPFQ9bDxcXDxXPFQ8XTxSPW48WTxQPW89aTxSPW49YzxYPF49bz1pPW08WT1uPFQ8Vz1iPFg8VDxYPFk8VzxSPFA8VD1sPFk9bjxZPF09Yz1tPF48UjxZPF48VDxYPFk9azxZPF88Uj1hPW48VDxQPW09azxZPW49bjxZPFA9Zz1qPFk8UT1nPW09bjxcXDxXPF48WTxYPWA9bjxZPFA8WTxePFI8WD1nPW48WTxdPFk8Xj1nPWQ8WTxRPFxcPFA8VD1uPFQ8UzxcXD1uPFI8UD1vPFM9bDxcXDxePFc8VD1qPFxcPFI8WDxRPFxcPF88UjxYPWc8WzxRPFxcPWI8UDxSPF89bzxYPWw9bzxfPF49bTxZPFU8VDxYPFk9bjxWPFQ8UTxSPFI8WDxRPFI8WDxZPFc8XFw8WDxZPFc8WT1tPWw8UjxWPFQ9YjxRPWM8XjxZPW09YDx5PW09bj1gPWw8XFw8WzxcXDxRPFxcPWQ8VDRLNWg1aDVrNEs1aDRGNWY0QDVpNWY0VTRCNEs0WTRFNEs1aDRcXDVmNFU1aDVmNWs0QDRDNWY0QzRLNWg0TjVqNEs1aDRdNEM0RjRBNW81aTRZNW00QTRFNW80SzVqNEY0SzVoNWg1ZjVmNW81ZDVqNFg0RDVvNEU1bTVmNWs0SzRENWo0SzRGNEE1ZDRLNE00TzVvNEc0XTRCNWg0SzVoNEs1aDRBNEQ0QzVoNWY1aDRDNF01ZDRfNEs0WjRWNFs0RjVvNWQ1ajVrNWo0SzVvNF80SzRBNEU1ajRLNEM1ZjRLNWg0WzRENFU1aDVmNW80WDVvNF00SzVmNWk1bzVqNWk1ajVrNEs0WDRdNW80RTRdNEo1ZjRfNWo0WDVmNFs1aTRLNFxcNEs0SzVoNW01ajRYNEQ0SzRENEY0VTRENF00XTRBNWk0RTVvNEs1bTRFNWY1bjVkNWg1aTRdNW80XjVvNWg1aTRFNE80QTVpNEM1bjVoNEQ1ZjVmNFU1ajVmNFk1ZDRdNEU0WzRdNWY1bjRYNEs0XTVvNEA1ZDRLNWg0TzRCNF01ZTVpNFU1ajRLNEs0RDRBNEc0VTRdNWQ0WjRENFg1bzVoNWk0XzRANWg0RDVqNEs1ajRCNEs1aDRDNW80RjRLNEQ1bzVoNWY0RTRENEM1ZDVqNE81ZjRaNEs1ZjVkNEA0QzVtNF01ZjVuNW80RjRENEY0TzVtNFo1aDVpNFs0RDRCNEs1bzRHNF00RDRLNF01bzRLNW00WjVoNEs0QTVoNWU1ajVtNF81azRPNWY0SzVpNF00QzVkNEM0TzVqNWs0SzRDNWY1ajRLNEs1aDRLNWo1aTRVNF00WjRGNFU1aDVpNEM0SzRCNWg1aTVpNW81agMDAwMDAwMDAgMCAwIDAgMBAwEDAQMBAwcDBwMHAwcDAwIBXDAHBgUEBAUGB1wwAQIDXHZcblx0XGIPDlxyXGZcZlxyDg9cYlx0XG5cdhMSERAXFhUUFBUWFxAREhMbGhkYHx4dHBwdHh8YGRobExMTEwMDAwMDAwMDExMTEwIDAwMBAwMDAQMDAwIDAwMCAwMDXDADAwMTEwMCAwMDAgMDExMDAgMDA1x2A1x2A1x2A1x2AwMDAgMBA1wwAwcDBgMFAwRxZnBsdnFgZnBgbHZtd3FqZnBydmZwd2psbXBmcnZqc25mbXdgbG5udm1qd3pidWJqb2Jhb2ZramRrb2pka3dHV0cse2t3bm9uYnFoZndqbWRobWx0b2ZnZGZwbG5md2tqbWRgbG13YmptZnFnanFmYHdqbG1wdmFwYHFqYWZiZ3VmcXdqcGZga2JxYmB3ZnEhI3Vib3ZmPiE/LHBmb2Zgdz1CdnB3cWJvamIhI2BvYnBwPiFwand2YndqbG1idndrbHFqd3plbG9vbHRqbWRzcWpuYnFqb3psc2ZxYndqbG1ga2Jvb2ZtZGZnZnVmb2xzZmdibWxtem5sdnBldm1gd2psbSNldm1gd2psbXBgbG5zYm1qZnBwd3F2YHd2cWZiZHFmZm5mbXchI3dqd29mPiFzbHdmbXdqYm9mZ3ZgYndqbG1icWR2bmZtd3BwZmBsbWdicXpgbHN6cWpka3dvYm1kdmJkZnBme2BvdnBqdWZgbG1nandqbG0/LGVscW49Dlx0cHdid2ZuZm13Ynd3Zm13amxtQWpsZHFic2t6fiNmb3BmI3hcdHBsb3Z3amxtcHRrZm0jd2tmI0JtYm96d2pgcHdmbnNvYndmcGdibWRmcWx2cHBid2Zvb2p3ZmdsYHZuZm13cHN2YW9qcGtmcWpuc2xxd2Jtd3NxbHdsd3pzZmptZW92Zm1gZiVxYnJ2bDg/LGZlZWZgd2p1ZmRmbWZxYm9vendxYm1wZWxxbmFmYnZ3amV2b3dxYm1wc2xxd2xxZGJtanlmZ3N2YW9qcGtmZ3NxbG5qbWZtd3Ztd2pvI3drZndrdm5hbWJqb01id2psbWJvIy1lbGB2cCsqOGx1ZnEjd2tmI25qZHFid2psbWJtbWx2bWBmZ2VsbHdmcSE9XHRme2Bmc3dqbG1vZnBwI3drYm1me3NmbXBqdWZlbHFuYndqbG1lcWJuZnRscWh3ZnFxandscXptZ2pgYndqbG1gdnFxZm13b3pgb2JwcE1ibmZgcWp3amBqcG53cWJnandqbG1mb3BmdGtmcWZCb2Z7Ym1nZnFic3Nsam13ZmduYndmcWpib3BhcWxiZ2BicHduZm13amxtZmdiZWVqb2pid2Y/LGxzd2psbT13cWZid25mbXdnamVlZnFmbXcsZ2ZlYnZvdy1TcWZwamdmbXdsbWBvamBoPiFhamxkcWJza3psd2tmcXRqcGZzZnFuYm1mbXdFcWJtL0tianBLbG9venRsbGdme3NibXBqbG1wd2JtZ2JxZ3A/LHB3em9mPVx0cWZndmB3amxtR2ZgZm5hZnEjc3FmZWZxcWZnQGJuYXFqZ2RmbHNzbG1mbXdwQXZwam1mcHAjYGxtZXZwamxtPVx0P3dqd29mPXNxZnBmbXdmZ2Z7c29iam1mZ2dsZnAjbWx3I3RscW9ndGpnZmptd2ZxZWJgZnNscGp3amxtcG1mdHBzYnNmcT8sd2Jhb2Y9XHRubHZtd2JqbXBvamhmI3drZiNmcHBmbXdqYm9lam1ibWBqYm9wZm9mYHdqbG1iYHdqbG0+ISxiYWJtZ2xtZmdGZ3ZgYndqbG1zYnFwZkptdytwd2Jham9qd3p2bWJhb2Yjd2w/LHdqd29mPVx0cWZvYndqbG1wTWx3ZiN3a2J3ZmVlamBqZm13c2ZxZWxxbmZnd3RsI3pmYnFwUGptYGYjd2tmd2tmcWZlbHFmdHFic3NmcSE9Ym93ZnFtYndmam1gcWZicGZnQWJ3d29mI2xlc2ZxYGZqdWZnd3F6am1kI3dsbWZgZnBwYnF6c2xxd3FiemZnZm9mYHdqbG1wRm9qeWJhZndrPyxqZXFibmY9Z2pwYGx1ZnF6am1wdnFibWBmcC1vZm1kd2s4b2ZkZm1nYnF6RGZsZHFic2t6YGJtZ2pnYndmYGxxc2xxYndmcGxuZndqbmZwcGZxdWpgZnAtam1rZnFqd2ZnPyxwd3FsbWQ9QGxubnZtand6cWZvamRqbHZwb2xgYndqbG1wQGxubmp3d2ZmYXZqb2dqbWRwd2tmI3RscW9nbWwjb2xtZGZxYWZkam1tam1kcWZlZnFmbWBmYGJtbWx3I2FmZXFmcnZmbWB6d3pzamBib296am13bCN3a2YjcWZvYndqdWY4cWZgbHFnam1kc3FmcGpnZm13am1qd2pib296d2Zga21qcnZmd2tmI2x3a2ZxancjYGJtI2FmZntqcHdmbWBmdm1nZnFvam1md2tqcCN3am5md2ZvZnNrbG1mandmbnBgbHNmc3FiYHdqYGZwYmd1Ym13YmRmKjhxZnd2cW0jRWxxI2x3a2Zxc3FsdWpnam1kZ2ZubGBxYmB6YWx3ayN3a2YjZnt3Zm1wanVmcHZlZWZxam1kcHZzc2xxd2ZnYGxuc3Z3ZnFwI2V2bWB3amxtc3FiYHdqYGJvcGJqZyN3a2J3ancjbmJ6I2FmRm1kb2pwaz8sZXFsbiN3a2YjcGBrZmd2b2ZnZ2x0bW9sYmdwPyxvYmFmbz1cdHB2cHNmYHdmZ25icWRqbTkjM3BzanFqd3Zibz8sa2ZiZz1cdFx0bmpgcWxwbGV3ZHFiZ3Zib296Z2pwYHZwcGZna2YjYWZgYm5mZntmYHZ3anVmaXJ2ZnF6LWlwa2x2cGZrbG9nYGxtZWpxbmZnc3ZxYGticGZnb2p3ZnFib296Z2Zwd3FsemZndnMjd2wjd2tmdWJxamJ3amxtcWZuYmptam1kancjanAjbWx3YGZtd3ZxamZwSWJzYm1mcGYjYm5sbWQjd2tmYGxuc29md2ZnYm9kbHFqd2tuam13ZnFmcHdwcWZhZm9vamxtdm1nZmVqbWZnZm1gbHZxYmRmcWZwanliYW9mam11bG91am1kcGZtcGp3anVmdm1qdWZxcGJvc3FsdWpwamxtK2Jvd2tsdmRrZWZid3Zxam1kYGxtZ3Zgd2ZnKi8jdGtqYGsjYGxtd2ptdmZnLmtmYmdmcSE9RWZhcXZicXojbXZuZnFsdnAjbHVmcWVvbHQ5YGxuc2xtZm13ZXFiZG5mbXdwZntgZm9vZm13YGxvcHNibT4hd2Zga21qYGJvbWZicSN3a2YjQmd1Ym1gZmcjcGx2cWBmI2xlZntzcWZwcGZnS2xtZCNIbG1kI0ViYGZhbGxobnZvd2pzb2YjbmZga2JtanBuZm9mdWJ3amxtbGVlZm1wanVmPyxlbHFuPVx0XG5wc2xtcGxxZmdnbGB2bmZtdy1scSMlcnZsdzh3a2ZxZiNicWZ3a2xwZiN0a2xubHVmbmZtd3BzcWxgZnBwZnBnamVlamB2b3dwdmFuand3ZmdxZmBsbm5mbWdgbG11am1gZmdzcWxubHdqbWQhI3RqZ3drPiEtcWZzb2JgZitgb2JwcGpgYm9gbGJvandqbG1ranAjZWpxcHdnZmBqcGpsbXBicHBqcHdibXdqbWdqYGJ3ZmdmdWxvdndqbG0udHFic3NmcSFmbWx2ZGsjd2xib2xtZCN3a2ZnZm9qdWZxZmcuLj0OXHQ/Ii4uQm5mcWpgYm0jc3Fsd2Zgd2ZnTWx1Zm5hZnEjPyxwd3pvZj0/ZXZxbWp3dnFmSm13ZnFtZncjI2xtYW92cT4hcHZwc2ZtZ2ZncWZganNqZm13YWJwZmcjbG0jTmxxZmx1ZnEvYmFsb2pwa2ZnYGxvb2Zgd2ZndGZxZiNuYmdmZm5sd2psbWJvZm5mcWRmbWB6bWJxcWJ3anVmYmd1bGBid2Zwc3s4YWxxZ2ZxYGxubmp3d2ZnZ2pxPiFvd3EhZm5zb2x6ZmZwcWZwZmJxYGstI3Bmb2Zgd2ZncHZgYGZwcGxxYHZwd2xuZnFwZ2pwc29iemZnUGZzd2ZuYWZxYmdnQG9icHArRWJgZmFsbGgjcHZkZGZwd2ZnYm1nI29id2ZxbHNmcWJ3am1kZm9iYWxxYndmUGxuZndqbmZwSm1wd2p3dndmYGZxd2JqbW96am1wd2Jvb2ZnZWxvb2x0ZnFwSWZxdnBib2Zud2tmeiNrYnVmYGxuc3Z3am1kZGZtZnFid2Znc3FsdWptYGZwZHZicWJtd2ZmYnFhandxYnF6cWZgbGRtanlmdGJtd2ZnI3dsc3s4dGpnd2s5d2tmbHF6I2xlYWZrYnVqbHZxVGtqb2Yjd2tmZnB3am5id2ZnYWZkYm0jd2wjancjYWZgYm5mbmJkbWp3dmdmbnZwdyNrYnVmbmxxZiN3a2JtR2pxZmB3bHF6Znt3Zm1wamxtcGZgcWZ3YnF6bWJ3dnFib296bGBgdnFxam1kdWJxamJhb2ZwZGp1Zm0jd2tmc29id2VscW4tPyxvYmFmbz0/ZWJqb2ZnI3dsYGxuc2x2bWdwaGptZ3AjbGUjcGxgamZ3amZwYm9sbWRwamdmIy4uJWR3OFx0XHRwbHZ3a3RmcHd3a2YjcWpka3dxYmdqYndqbG1uYnoja2J1ZiN2bWZwYGJzZitwc2xoZm0jam0hI2txZmU+ISxzcWxkcWJubmZsbW96I3drZiNgbG5mI2VxbG5nanFmYHdscXphdnFqZmcjam1iI3BqbmpvYnF3a2Z6I3RmcWY/LGVsbXc9PyxNbHF0ZmRqYm1wc2ZgamVqZmdzcWxndmBqbWRzYnBwZm1kZnErbWZ0I0did2Z3Zm5zbHFicXplamB3amxtYm9CZXdmcSN3a2ZmcnZid2psbXBnbHRtb2xiZy1xZmR2b2Jxb3pnZnVmb2xzZnFiYWx1ZiN3a2Zvam1oZmcjd2xza2ZtbG5mbWJzZnFqbGcjbGV3bGxvd2pzIT1wdmFwd2JtYGZidndsbmJ3amBicHNmYHcjbGVCbmxtZCN3a2ZgbG1tZmB3ZmdmcHdqbmJ3ZnBCanEjRWxxYGZwenB3Zm4jbGVsYWlmYHdqdWZqbm5mZ2pid2ZuYmhqbWQjandzYmptd2ptZHBgbG1ydmZxZmdicWYjcHdqb29zcWxgZmd2cWZkcWx0d2sjbGVrZmJnZmcjYXpGdnFsc2ZibSNnanVqcGpsbXBubG9mYHZvZnBlcWJtYGtqcGZqbXdmbXdqbG1id3dxYmB3Zmdga2pvZ2tsbGdib3BsI3ZwZmdnZmdqYGJ3Zmdwam1kYnNscWZnZmRxZmYjbGVlYndrZnEjbGVgbG1lb2pgd3A/LGI9PyxzPVx0YGJuZiNlcWxudGZxZiN2cGZnbWx3ZiN3a2J3cWZgZmp1am1kRntmYHZ3anVmZnVmbSNubHFmYmBgZnBwI3dsYGxubmJtZ2ZxU2xvandqYGJvbnZwamBqYm1wZ2ZvamBqbHZwc3FqcGxtZnFwYmd1Zm13I2xlVldFLjshIyw9PyJYQEdCV0JYIT1AbG13YmB3UGx2d2tmcW0jYWRgbG9scT4hcGZxamZwI2xlLSNKdyN0YnAjam0jRnZxbHNmc2Zxbmp3d2ZndWJvamdid2YtYnNzZmJxam1kbGVlamBqYm9wcGZxamx2cG96Lm9ibWR2YmRmam1qd2pid2ZnZnt3Zm1nam1kb2xtZC53ZnFuam1lb2J3amxtcHZgayN3a2J3ZGZ3QGxsaGpmbmJxaGZnI2F6Pyxhdnd3bG09am5zb2ZuZm13YXZ3I2p3I2pwam1gcWZicGZwZ2x0bSN3a2YjcWZydmpxam1kZ2ZzZm1nZm13Li49XHQ/Ii4uI2ptd2ZxdWpmdFRqd2sjd2tmI2Bsc2pmcCNsZWBsbXBmbXB2cHRicCNhdmpvd1VmbWZ5dmZvYitlbHFuZnFvendrZiNwd2J3ZnNmcXBsbW1mb3B3cWJ3ZmRqYGVidWx2cSNsZWptdWZtd2psbVRqaGpzZmdqYmBsbXdqbWZtd3VqcXd2Ym9venRramBrI3RicHNxam1ganNvZkBsbnNvZndmI2pnZm13amBib3BrbHQjd2tid3Nxam5qd2p1ZmJ0YnojZXFsbm5sb2Zgdm9icXNxZmBqcGZvemdqcHBsb3VmZ1ZtZ2ZxI3drZnVmcXBqbG0+IT0lbWFwczg/LEp3I2pwI3drZiNXa2pwI2pwI3Rqb28ja2J1ZmxxZGJtanBucHBsbmYjd2puZkVxamZncWpga3RicCNlanFwd3drZiNsbW96I2ViYHcjd2tid2VscW4jamc+IXNxZmBmZ2ptZFdmYGttamBib3NrenBqYGpwd2xgYHZxcCNqbW1idWpkYndscXBmYHdqbG0hPXBzYm0jamc+IXBsdmRrdyN3bGFmb2x0I3drZnB2cXVqdWptZH4/LHB3em9mPWtqcCNnZmJ3a2JwI2ptI3drZmBidnBmZyNhenNicXdqYm9vemZ7anB3am1kI3Zwam1kI3drZnRicCNkanVmbWIjb2pwdyNsZW9mdWZvcCNsZW1sd2psbSNsZUxlZWpgamJvI2dqcG5qcHBmZ3BgamZtd2pwd3FmcGZuYW9mcGd2c29qYGJ3ZmZ7c29scGp1ZnFmYGx1ZnFmZ2JvbyNsd2tmcWRib29mcWpmcHhzYmdnam1kOXNmbHNvZiNsZXFmZGpsbSNsZWJnZ3FmcHBmcGJwcGxgamJ3ZmpuZCNib3c+IWptI25sZ2ZxbXBrbHZvZyNhZm5md2tsZyNsZXFmc2xxd2ptZHdqbmZwd2Juc21mZmdmZyN3bHdrZiNEcWZid3FmZGJxZ2ptZHBmZm5mZyN3bHVqZnRmZyNicGpuc2JgdyNsbWpnZmIjd2tid3drZiNUbHFvZ2tmamRrdyNsZWZ7c2JtZ2ptZFdrZnBmI2JxZmB2cXFmbXchPWBicWZldm9vem5iam13YmptcGBrYnFkZiNsZUBvYnBwamBib2JnZ3FmcHBmZ3NxZmdqYHdmZ2x0bWZxcGtqcz9nanUjamc+IXFqZGt3IT0OXHRxZnBqZ2ZtYGZvZmJ1ZiN3a2ZgbG13Zm13IT1icWYjbGV3Zm0jI34qKyo4Dlx0c3FsYWJhb3ojU3FsZWZwcGxxLmF2d3dsbSEjcWZwc2xtZ2ZncGJ6cCN3a2J3a2JnI3dsI2Fmc29iYGZnI2ptS3ZtZGJxamJtcHdid3ZwI2xlcGZxdWZwI2JwVm1qdWZxcGJvZntmYHZ3amxtYmRkcWZkYndmZWxxI3RramBram1lZmB3amxtYmRxZmZnI3dsa2x0ZnVmcS8jc2xzdm9icSE9c29iYGZnI2xtYGxtcHdxdmB3Zm9mYHdscWJvcHpuYWxvI2xlam1gb3Znam1kcWZ3dnFtI3dsYnFga2p3ZmB3QGtxanB3amJtc3FmdWpsdnAjb2p1am1kI2ptZmJwamZxI3dsc3FsZWZwcGxxXHQlb3c4Ii4uI2ZlZWZgdyNsZWJtYm96d2pgcHRicCN3YmhmbXRrZnFmI3drZndsbGgjbHVmcWFmb2pmZSNqbUJlcWpoYmJtcGJwI2VicSNicHNxZnVmbXdmZ3RscWgjdGp3a2IjcHNmYGpibz9lamZvZ3Bmd0BrcWpwd25icFFmd3FqZnVmZ1x0XHRKbSN3a2YjYWJgaCNqbXdsbWxxd2tmYnB3bmJkYnlqbWZwPT9wd3FsbWQ9YGxubmp3d2ZmZGx1ZnFtam1kZHFsdnNwI2xlcHdscWZnI2ptZnB3YmFvanBrYiNkZm1mcWJvandwI2VqcXB3d2tmanEjbHRtc2xzdm9id2ZnYm0jbGFpZmB3QGJxamFhZmJtYm9vbHQjd2tmZ2pwd3FqYHdwdGpwYGxtcGptb2xgYndqbG0tOCN0amd3azkjam1rYmFqd2ZnUGxgamJvanB3SWJtdmJxeiMyPyxlbGx3ZnE9cGpuam9icW96YGtsamBmI2xld2tmI3BibmYjcHNmYGplamAjYXZwam1mcHAjV2tmI2VqcXB3LW9mbWR3azgjZ2ZwanFmI3dsZ2ZibyN0andrcGptYGYjd2tmdnBmcUJkZm13YGxtYGZqdWZnam1nZnstc2tzYnAjJXJ2bHc4Zm1kYmRmI2ptcWZgZm13b3ovZWZ0I3pmYnFwdGZxZiNib3BsXHQ/a2ZiZz1cdD9mZ2p3ZmcjYXpicWYjaG1sdG1gandqZnAjam1iYGBmcHBoZnpgbG1nZm5tZmdib3BsI2tidWZwZnF1amBmcC9lYm5qb3ojbGVQYGtsbG8jbGVgbG11ZnF3ZmdtYnd2cWYjbGUjb2JtZHZiZGZuam1qcHdmcXA/LGxhaWZgdz13a2ZxZiNqcCNiI3Nsc3ZvYnFwZnJ2Zm1gZnBiZ3VsYGJ3ZmdXa2Z6I3RmcWZibXojbHdrZnFvbGBid2psbT5mbXdmcSN3a2ZudmBrI25scWZxZmVvZmB3Zmd0YnAjbWJuZmdscWpkam1ibyNiI3d6c2pgYm90a2ZtI3drZnpmbWRqbWZmcXBgbHZvZyNtbHdxZnBqZ2Ztd3B0ZmdtZnBnYnp3a2Yjd2tqcWcjc3FsZ3Zgd3BJYm12YnF6IzF0a2J3I3drZnpiI2BmcXdiam1xZmJgd2psbXBzcWxgZnBwbHFiZXdmcSNranB3a2Yjb2JwdyNgbG13YmptZmchPT8sZ2p1PVx0PyxiPT8sd2c9Z2ZzZm1nI2xtcGZicWBrIT1cdHNqZmBmcCNsZWBsbnNmd2ptZFFmZWZxZm1gZndmbW1mcHBmZnRramBrI2ticCN1ZnFwamxtPj8scHNibT0jPz8sa2ZiZ2ZxPWRqdWZwI3drZmtqcHdscWpibXVib3ZmPiEhPXNiZ2dqbWQ5M3VqZnQjd2tid3dsZGZ3a2ZxL3drZiNubHB3I3RicCNlbHZtZ3B2YXBmdyNsZWJ3d2JgaCNsbWBram9ncWZtL3Nsam13cCNsZXNmcXBsbWJvI3NscGp3amxtOWJvb2ZkZmdvekBvZnVmb2JtZ3RicCNvYndmcWJtZyNiZXdmcWJxZiNkanVmbXRicCNwd2pvb3BgcWxvb2ptZGdmcGpkbSNsZW5iaGZwI3drZm52YGsjb2ZwcEJuZnFqYGJtcC1cdFx0QmV3ZnEjLyNhdncjd2tmTnZwZnZuI2xlb2x2anBqYm1iK2VxbG4jd2tmbmptbWZwbHdic2Jxd2pgb2ZwYiNzcWxgZnBwR2xuam1qYGJtdWxvdm5mI2xlcWZ3dnFtam1kZ2ZlZm1wanVmMzNze39xamRrbmJnZiNlcWxubmx2cGZsdWZxISNwd3pvZj4hcHdid2ZwI2xlK3RramBrI2pwYGxtd2ptdmZwRXFibWBqcGBsYXZqb2dqbWQjdGp3a2x2dyNidGp3ayNwbG5mdGtsI3Rsdm9nYiNlbHFuI2xlYiNzYnF3I2xlYWZlbHFmI2p3aG1sdG0jYnAjI1BmcXVqYGZwb2xgYndqbG0jYm1nI2xld2ZtbmZicHZxam1kYm1nI2p3I2pwc2JzZnFhYmBodWJvdmZwI2xlDlx0P3dqd29mPT4jdGptZ2x0LWdmd2ZxbmptZmZxJXJ2bHc4I3NvYnpmZyNhemJtZyNmYnFvej8sYGZtd2ZxPWVxbG4jd2tqcHdrZiN3a3FmZnNsdGZxI2JtZ2xlIyVydmx3OGptbWZxS1dOTz9iI2txZmU+IXo5am1vam1mOEBrdnFgayNsZXdrZiNmdWZtd3VmcXoja2pka2xlZWpgamJvIy5rZmpka3c5I2BsbXdmbXc+ISxgZGouYWptLHdsI2BxZmJ3ZmJlcWpoYmJtcGZwc2ZxYm13bGVxYm0vS2JqcG9id3VqZilNdm9qZnd2dWopXyhgZilNd2ptYihhZilNd2ptYlxmVWhcZlR7XGZUTlxue0lcbnBABEZyXHZCbFxiUX9cdEF7XHZVbQVHeFx0QXsBeXAGWUFcMHpYXGJUVlxiV2xcYlVkBEJNXHZCe1xucFZcdkB4BEJcXFxucEAERGIER3pcdGFsXG5wYVx0Zk1cdHVEXGJWfgRteFx2UX1cbmRTXHRwXFxcYlZLXGJTXVxiVXwFb0RcdGtWXHZlZFx2SFJcbmJ+BE1gXG5KcAVvRAR8UVxuTFAEU3dcYlRsXG5BSVxueENcYld0XHRCcQVGYARDbVx2TG1cdEt4XHR9dFxiUHZcbnlcXFxuYUJcdFZ/XG5aZARYVQRsaVx0ZnJcdGlAXHRCSARCRARCVlx0YFZcbltdXHRwX1x0VG5cbn5BXG54Ulx0dURcdGB7XGJWQFx0VG5cdEhLXHRBSlx2eHMEWmZcbnFJBFpmXHZCTVx2fGpcdH10XGJTTVxubUNcdlF9cGZxdWpgamxwYnF3L0Fgdm9sYnFkZm13am1iYWJxYGZvbG1iYHZib3J2amZxc3Zhb2pgYmdsc3FsZ3Zgd2xwc2xvL0F3amBicWZwc3ZmcHdidGpoanNmZ2picGpkdmpmbXdmYS9WcHJ2ZmdiYGxudm1qZ2JncGZkdnFqZ2Jnc3FqbWBqc2Jvc3FmZHZtd2JwYGxtd2ZtamdscWZwc2xtZ2ZxdWZtZnl2Zm9ic3FsYW9mbmJwZ2pgamZuYXFmcWZvYmBqL19tbWx1amZuYXFmcGpuam9icWZwc3FsemZgd2xwc3FsZHFibmJwam1wd2p3dndsYmB3anVqZ2JnZm1gdmZtd3FiZmBsbWxuL0Fiam4vTWRmbWZwYGxtd2Jgd2JxZ2ZwYGJxZGJxbWZgZnBicWpsYndmbWBqL19td2ZvL0VlbG1sYGxuanBqL19tYGJtYGpsbWZwYGJzYmBqZ2JnZm1gbG13cWJxYm0vTW9qcGpwZWJ1bHFqd2xwdy9FcW5qbWxwc3FsdWptYGpiZndqcnZmd2JwZm9mbmZtd2xwZXZtYGpsbWZwcWZwdm93YmdsYGJxL01gd2Zxc3Fsc2pmZ2Jnc3FqbWBqc2psbWZgZnBqZ2JnbnZtamBqc2JvYHFmYmBqL19tZ2ZwYGJxZGJwc3FmcGZtYGpiYGxuZnFgamJvbHNqbWpsbWZwZmlmcWBqYGpsZmdqd2xxamJvcGJvYm5ibWBiZGxteS9Nb2Z5Z2xgdm5mbXdsc2ZvL0Fgdm9icWZgamZtd2ZwZGZtZnFib2Zwd2JxcWJkbG1ic3EvTWB3amBibWx1ZmdiZ2Zwc3Fsc3ZmcHdic2JgamZtd2Zwdy9FYG1qYGJwbGFpZndqdWxwYGxtd2Jgd2xwXGZIQlxmSWtcZkhuXGZIXlxmSFNcZkhjXGZIVVxmSWRcZkhuXGZIe1xmSENcZkhSXGZIVFxmSFJcZkhJXGZIY1xmSFlcZkhuXGZIXFxcZkhVXGZJa1xmSHlcZklnXGZIZFxmSHlcZkltXGZId1xmSFxcXGZIVVxmSFJcZkhAXGZIUlxmSEpcZkh5XGZIVVxmSFJcZkhUXGZIQVxmSWxcZkhVXGZJbVxmSGNcZkhcXFxmSFVcZklsXGZIQlxmSWRcZkhuXGZISlxmSFNcZkhEXGZIQFxmSFJcZkhIZ2pzb2xnbGBwXGZIVFxmSEJcZkhDXGZIXFxcZkluXGZIRlxmSERcZkhSXGZIQlxmSEZcZkhIXGZIUlxmSEdcZkhTXGZIXFxcZkh4XGZIVFxmSEhcZkhIXGZIXFxcZkhVXGZIXlxmSWdcZkh7XGZIVVxmSW1cZkhqXGZIQFxmSFJcZkhcXFxmSEpcZklrXGZIWlxmSFVcZkltXGZIZFxmSHpcZklrXGZIXlxmSENcZkhKXGZIU1xmSHlcZkhSXGZIQlxmSFlcZklrXGZIQFxmSEhcZklsXGZIRFxmSEBcZklsXGZIdlxmSEJcZklgXGZISFxmSFRcZkhSXGZIXlxmSF5cZklrXGZIelxmSHBcZkllXGZIQFxmSEJcZkhKXGZISlxmSEhcZkhJXGZIUlxmSERcZkhVXGZJbFxmSFpcZkhVXGZIXFxcZkhpXGZIXlxmSHtcZkh5XGZIQVxmSWxcZkhEXGZIe1xmSFxcXGZIRlxmSFJcZkhUXGZIXFxcZkhSXGZISFxmSHlcZkhTXGZIY1xmSGVcZkhUXGZJa1xmSHtcZkhDXGZJbFxmSFVcZkluXGZIbVxmSGpcZkh7XGZJa1xmSHNcZklsXGZIQlxmSHpcZklnXGZIcFxmSHlcZkhSXGZIXFxcZkhpXGZIQVxmSWxcZkh7XGZIQ1xmSWtcZkhIXGZJbVxmSEJcZkhZXGZJZ1xmSHNcZkhKXGZJa1xmSG5cZkhpXGZIe1xmSFxcXGZIfFxmSFRcZklrXGZIQlxmSWtcZkheXGZIXlxmSHtcZkhSXGZIVVxmSFJcZkheXGZIZlxmSEZcZkhcXFxmSHZcZkhSXGZIXFxcZkh8XGZIVFxmSFJcZkhKXGZJa1xmSFxcXGZIcFxmSFNcZkhUXGZISlxmSFNcZkheXGZIQFxmSG5cZkhKXGZIQFxmSERcZkhSXGZIVVxmSW5cZkhuXGZIXlxmSFJcZkh6XGZIcFxmSWxcZkhIXGZIQFxmSHNcZkhEXGZIQlxmSFNcZkheXGZIa1xmSFRcZklrXGZIalxmSERcZklrXGZIRFxmSENcZkhSXGZIeVxmSW1cZkheXGZIXlxmSWVcZkh7XGZIQVxmSFJcZkh7XGZIXFxcZklrXGZIXlxmSHBcZkh7XGZIVVxmSFxcXGZIUlxmSEJcZkheXGZIe1xmSWtcZkhGXGZJa1xmSHBcZkhVXGZIUlxmSElcZkhrXGZIVFxmSWxcZkhUXGZIVVxmSWxcZkh5XGZIXlxmSFJcZkhMXGZJbFxmSHlcZkhVXGZIUlxmSG1cZkhKXGZJblxmSFxcXGZISFxmSFVcZkhIXGZIVFxmSFJcZkhIXGZIQ1xmSFJcZkhKXGZIalxmSENcZkhSXGZIRlxmSFJcZkh5XGZIeVxmSWBcZkhEXGZIWlxmSFJcZkhCXGZISlxmSWtcZkh6XGZIQ1xmSFVcZklsXGZIXFxcZkhSXGZIQ1xmSHpcZkltXGZISlxmSF5cZkh7XGZJbGBid2ZkbHFqZnBme3NmcWpmbWBmPyx3andvZj0OXHRAbHN6cWpka3cjaWJ1YnBgcWpzd2BsbWdqd2psbXBmdWZxendram1kP3MjYG9icHA+IXdmYGttbG9sZHphYmBoZHFsdm1nP2IjYG9icHA+IW5ibWJkZm5mbXclYGxzejgjMTMyaWJ1YlBgcWpzd2BrYnFiYHdmcXBhcWZiZ2Bxdm5hd2tmbnBmb3VmcGtscWp5bG13Ym9kbHVmcW1uZm13QGJvamVscW1qYmJgd2p1andqZnBnanBgbHVmcWZnTWJ1amRid2psbXdxYm1wandqbG1gbG1tZmB3amxtbWJ1amRid2psbWJzc2ZicWJtYGY/LHdqd29mPT9uYGtmYGhhbHshI3dmYGttanJ2ZnBzcWx3ZmB3amxtYnNzYnFmbXdvemJwI3Rmb28jYnB2bXckLyMkVkIucWZwbG92d2psbWxzZnFid2psbXB3Zm9mdWpwamxtd3FibXBvYndmZ1RicGtqbWR3bG1tYnVqZGJ3bHEtIz4jdGptZ2x0LWpuc3FmcHBqbG0lb3c4YXElZHc4b2p3ZnFid3ZxZnNsc3ZvYndqbG1hZGBsb2xxPiEgZnBzZmBqYm9veiNgbG13Zm13PiFzcWxndmB3amxtbWZ0cG9md3dmcXNxbHNmcXdqZnBnZmVqbWp3amxtb2ZiZ2ZxcGtqc1dmYGttbG9sZHpTYnFvamJuZm13YGxuc2JxanBsbXZvI2BvYnBwPiEtam1nZntMZSshYGxtYG92cGpsbWdqcGB2cHBqbG1gbG5zbG1mbXdwYWpsb2xkamBib1FmdWxvdndqbG1cXGBsbXdiam1mcXZtZ2ZxcHdsbGdtbHBgcWpzdz0/c2ZxbmpwcGpsbWZiYGsjbHdrZnFid25scHNrZnFmI2xtZWxgdnA+IT9lbHFuI2pnPiFzcWxgZnBwam1kd2tqcC11Ym92ZmRmbWZxYndqbG1AbG1lZnFmbWBmcHZhcGZydmZtd3Rmb28uaG1sdG11YnFqYndqbG1wcWZzdndid2psbXNrZm1sbmZtbG1nanBganNvam1mb2xkbC1zbWQhIytnbGB2bmZtdy9hbHZtZ2JxamZwZntzcWZwcGpsbXBmd3dvZm5mbXdBYmBoZHFsdm1nbHZ3I2xlI3drZmZtd2Zxc3FqcGYrIWt3d3NwOSEjdm1mcGBic2YrIXNicHB0bHFnISNnZm5sYHFid2pgP2Ija3FmZT4hLHRxYnNzZnEhPVx0bmZuYWZxcGtqc29qbWR2anB3amBzezhzYmdnam1kc2tqb2xwbHNremJwcGpwd2JtYGZ2bWp1ZnFwand6ZWJgam9qd2pmcHFmYGxkbWp5ZmdzcWZlZnFmbWBmamUjK3d6c2ZsZW5iam13YmptZmd1bGBiYXZvYnF6a3pzbHdrZnBqcC1wdmFuancrKjglYm5zOG1hcHM4Ym1tbHdid2psbWFma2ptZyN3a2ZFbHZtZ2J3amxtc3Zhb2pwa2ZxIWJwcHZuc3dqbG1qbXdxbGd2YGZnYGxxcXZzd2psbXBgamZtd2pwd3Bme3NvamBqd296am1wd2ZiZyNsZWdqbmZtcGpsbXAjbG1Ab2pgaD4hYGxtcGpnZnFmZ2dmc2Jxd25mbXdsYGB2c2J3amxtcGxsbSNiZXdmcWptdWZwd25mbXdzcWxtbHZtYGZnamdmbXdqZWpmZ2Z7c2Zxam5mbXdOYm1iZGZuZm13ZGZsZHFic2tqYCEja2ZqZGt3PiFvam1oI3Fmbz4hLXFmc29iYGYrLGdmc3FmcHBqbG1gbG1lZnFmbWBmc3ZtanBrbmZtd2Zvam5qbWJ3ZmdxZnBqcHdibWBmYmdic3did2psbWxzc2xwandqbG10Zm9vI2htbHRtcHZzc29mbmZtd2dmd2ZxbmptZmdrMiNgb2JwcD4hM3N7OG5icWRqbW5mYGtibWpgYm9wd2J3anB3amBwYGZvZmFxYndmZ0RsdWZxbW5mbXdcdFx0R3Zxam1kI3dnZnVmb2xzZnFwYnF3amVqYGpib2Zydmp1Ym9mbXdscWpkam1id2ZnQGxubmpwcGpsbWJ3d2Jga25mbXc/cHNibSNqZz4hd2tmcWYjdGZxZk1mZ2Zxb2JtZ3BhZnpsbWcjd2tmcWZkanB3ZnFmZ2lsdnFtYm9qcHdlcWZydmZtd296Ym9vI2xlI3drZm9ibWQ+IWZtISM/LHB3em9mPQ5cdGJhcGxvdndmOCNwdnNzbHF3am1kZnt3cWZuZm96I25iam1wd3FmYm4/LHB3cWxtZD0jc2xzdm9icWp3emZuc29sem5mbXc/LHdiYW9mPQ5cdCNgbG9wc2JtPiE/LGVscW49XHQjI2BsbXVmcXBqbG1iYWx2dyN3a2YjPyxzPT8sZ2p1PWptd2ZkcWJ3ZmchI29ibWQ+IWZtU2xxd3ZkdmZwZnB2YXB3and2d2ZqbWdqdWpndmJvam5zbHBwamFvZm52b3dqbmZnamJib25scHcjYm9vc3sjcGxvamcjIGJzYnF3I2VxbG5wdmFpZmB3I3dsam0jRm1kb2pwa2BxandqYGp5Zmdme2Bmc3cjZWxxZHZqZ2Zvam1mcGxxamRqbWJvb3pxZm5icWhiYW9md2tmI3BmYGxtZ2sxI2BvYnBwPiE/YiN3andvZj4hK2ptYG92Z2ptZHNicWJuZndmcXBzcWxramFqd2ZnPiMha3d3czksLGdqYHdqbG1icXpzZnFgZnN3amxtcWZ1bG92d2psbWVsdm1nYndqbG1zezhrZmpka3c5cHZgYGZwcGV2b3B2c3NscXdmcXBuam9vZm1tanZua2pwI2Vid2tmcXdrZiMlcnZsdzhtbC5xZnNmYnc4YGxubmZxYGpib2ptZ3Zwd3FqYm9mbWBsdnFiZGZnYm5sdm13I2xlI3ZtbGVlamBqYm9mZWVqYGpmbWB6UWZlZnFmbWBmcGBsbHFnam1id2ZnanBgb2JqbmZxZntzZmdqd2psbWdmdWZvbHNqbWRgYm9gdm9id2ZncGpuc29qZWpmZ29mZGp3am5id2ZwdmFwd3FqbWQrMyEjYG9icHA+IWBsbnNvZndmb3pqb292cHdxYndmZWp1ZiN6ZmJxcGptcHdxdm5mbXdTdmFvanBram1kMiEjYG9icHA+IXNwemBrbG9sZHpgbG1lamdmbWBmbXZuYWZxI2xlI2JhcGZtYGYjbGVlbGB2cGZnI2xtaWxqbWZnI3drZnB3cXZgd3ZxZnBzcWZ1amx2cG96PT8samVxYm5mPWxtYGYjYmRiam1hdncjcWJ3a2Zxam5uamRxYm13cGxlI2BsdnFwZi9iI2RxbHZzI2xlT2p3ZnFid3ZxZlZtb2poZiN3a2Y/LGI9JW1hcHM4XHRldm1gd2psbSNqdyN0YnAjd2tmQGxtdWZtd2psbWJ2d2xubGFqb2ZTcWx3ZnB3Ym13YmRkcWZwcGp1ZmJld2ZxI3drZiNQam5qb2Jxb3ovISMsPT8sZ2p1PWBsb29mYHdqbG0OXHRldm1gd2psbXVqcGpham9qd3p3a2YjdnBmI2xldWxvdm13ZmZxcGJ3d3FiYHdqbG12bWdmcSN3a2Yjd2txZmJ3Zm1mZyk/IlhAR0JXQlhqbnNscXdibWBmam0jZGZtZnFib3drZiNvYnd3ZnE/LGVscW49XHQ/LC1qbWdme0xlKyRqIz4jMzgjaiM/Z2plZWZxZm1gZmdmdWx3Zmcjd2x3cWJnandqbG1wcGZicWBrI2VscXZvd2puYndmb3p3bHZxbWJuZm13Ynd3cWphdndmcHBsLmBib29mZyN+XHQ/LHB3em9mPWZ1Ym92YndqbG1mbnNrYnBqeWZnYmBgZnBwamFvZj8scGZgd2psbT1wdmBgZnBwamxtYm9sbWQjdGp3a05mYm10a2pvZi9qbWd2cHdxamZwPyxiPT9hcSMsPWticCNhZmBsbmZicHNmYHdwI2xlV2ZvZnVqcGpsbXB2ZWVqYGpmbXdhYnBoZndhYm9vYWx3ayNwamdmcGBsbXdqbXZqbWRibSNicXdqYG9mP2puZCNib3c+IWJndWZtd3ZxZnBranAjbmx3a2ZxbmJtYGtmcHdmcXNxam1ganNvZnBzYnF3amB2b2JxYGxubmZtd2JxemZlZWZgd3AjbGVnZmBqZ2ZnI3dsIT0/cHdxbG1kPXN2YW9qcGtmcXBJbHZxbWJvI2xlZ2plZWpgdm93emViYGpvandid2ZiYGBmc3diYW9mcHd6b2YtYHBwIVxuZXZtYHdqbG0jam1tbHVid2psbT1AbHN6cWpka3dwand2YndqbG1wdGx2b2cja2J1ZmF2cGptZnBwZnBHamB3amxtYnF6cHdid2ZuZm13cGxld2ZtI3ZwZmdzZnFwanB3Zm13am0jSWJtdmJxemBsbnNxanBqbWQ/LHdqd29mPVx0XG5nanNvbG5id2pgYGxtd2JqbWptZHNmcWVscW5qbWRme3dmbXBqbG1wbmJ6I21sdyNhZmBsbWBmc3cjbGUjbG1gb2pgaD4hSncjanAjYm9wbGVqbWJtYGpibyNuYmhqbWQjd2tmT3Z7Zm5hbHZxZGJnZ2p3amxtYm9icWYjYGJvb2ZnZm1kYmRmZyNqbSFwYHFqc3chKjhhdncjancjdGJwZm9mYHdxbG1qYGxtcHZhbmp3PiFcdD8iLi4jRm1nI2ZvZmB3cWpgYm9sZWVqYGpib296cHZkZGZwd2psbXdscyNsZSN3a2Z2bW9qaGYjd2tmQnZwd3Fib2pibUxxamRqbWJvb3pxZmVmcWZtYGZwXHQ/LGtmYmc9Dlx0cWZgbGRtanBmZ2ptandqYm9qeWZvam5qd2ZnI3dsQm9me2JtZ3FqYnFmd2pxZm5mbXdCZ3VmbXd2cWZwZWx2cSN6ZmJxcFx0XHQlb3c4Ii4uI2ptYHFmYnBqbWRnZmBscWJ3amxtazAjYG9icHA+IWxxamRqbXAjbGVsYW9qZGJ3amxtcWZkdm9id2psbWBvYnBwamVqZmcrZXZtYHdqbG0rYmd1Ym13YmRmcGFmam1kI3drZiNranB3bHFqYm1wP2FicGYja3FmZXFmc2Zid2Znb3p0am9vam1kI3dsYGxuc2JxYmFvZmdmcGpkbWJ3ZmdtbG5qbWJ3amxtZXZtYHdqbG1ib2ptcGpnZiN3a2ZxZnVmb2J3amxtZm1nI2xlI3drZnAjZWxxI3drZiNidndrbHFqeWZncWZldnBmZyN3bHdiaGYjc29iYGZidndsbWxubHZwYGxuc3FsbmpwZnNsb2p3amBibyNxZnB3YnZxYm13d3RsI2xlI3drZkVmYXF2YnF6IzFydmJvand6I2xlcHRlbGFpZmB3LXZtZ2ZxcHdibWdtZmJxb3ojYm9vdHFqd3dmbSNhemptd2ZxdWpmdHAhI3RqZ3drPiEydGp3a2dxYnRib2VvbGJ3OW9mZXdqcCN2cHZib296YGJtZ2pnYndmcG1mdHBzYnNmcXBuenB3ZnFqbHZwR2ZzYnF3bmZtd2FmcHcjaG1sdG1zYnFvamJuZm13cHZzc3FmcHBmZ2BsbXVmbWpmbXdxZm5mbmFmcWZnZ2plZWZxZm13I3B6cHdmbmJ3amBrYnAjb2ZnI3dsc3Fsc2JkYm1nYmBsbXdxbG9vZmdqbWVvdmZtYGZwYGZxZm5sbWpib3NxbGBvYmpuZmdTcWx3ZmB3amxtb2ojYG9icHA+IVBgamZtd2plamBgb2JwcD4hbWwud3FiZ2ZuYnFocG5scWYjd2tibSN0amdmcHNxZmJnT2phZnFid2psbXdsbGgjc29iYGZnYnojbGUjd2tmYnAjb2xtZCNicGpuc3FqcGxtZmdCZ2dqd2psbWJvXHQ/a2ZiZz1cdD9uT2JhbHFid2xxek1sdWZuYWZxIzFme2Bmc3dqbG1wSm1ndnB3cWpib3VicWpmd3ojbGVlb2xidzkjb2ZlR3Zxam1kI3drZmJwcGZwcG5mbXdrYnVmI2FmZm0jZ2Zib3AjdGp3a1B3YndqcHdqYHBsYGB2cXFmbWBmLHZvPT8sZ2p1PWBvZmJxZWp7IT13a2Yjc3Zhb2pgbmJteiN6ZmJxcHRramBrI3RmcWZsdWZxI3dqbmYvcHptbG16bmx2cGBsbXdmbXchPVx0c3FmcHZuYmFvemtqcCNlYm5qb3p2cGZxQmRmbXctdm1me3NmYHdmZ2ptYG92Z2ptZCNga2Jvb2ZtZGZnYiNuam1scWp3enZtZ2Zlam1mZyFhZm9sbWRwI3dsd2JoZm0jZXFsbmptI0xgd2xhZnFzbHBqd2psbTkjcGJqZyN3bCNhZnFmb2pkamx2cCNFZmdmcWJ3amxtI3FsdHBzYm0+IWxtb3ojYiNlZnRuZmJtdyN3a2J3b2ZnI3dsI3drZi4uPQ5cdD9nanUjP2VqZm9ncGZ3PUJxYGthanBrbHMjYG9icHA+IW1sYWZqbWQjdnBmZ2Jzc3FsYmBrZnBzcWp1am9mZGZwbWxwYHFqc3c9XHRxZnB2b3dwI2ptbmJ6I2FmI3drZkZicHdmcSNmZGRuZmBrYm1qcG5wcWZicGxtYmFvZlNsc3ZvYndqbG1AbG9vZmB3amxtcGZvZmB3ZmchPW1scGBxanN3PQ4sam1nZnstc2tzYnFxanVibyNsZS5pcHBnaCQqKjhuYm1iZGZnI3dsam1gbG5zb2Z3ZmBicHZib3dqZnBgbG5zb2Z3amxtQGtxanB3amJtcFBmc3dmbmFmcSNicWp3a25md2pgc3FsYGZndnFmcG5qZGt3I2tidWZTcWxndmB3amxtancjYnNzZmJxcFNram9scGxza3plcWpmbWdwa2pzb2ZiZ2ptZCN3bGRqdWptZCN3a2Z3bHRicWcjd2tmZHZicWJtd2ZmZ2dsYHZuZm13ZmdgbG9scTkgMzMzdWpnZmwjZGJuZmBsbm5qcHBqbG1xZmVvZmB3am1kYGtibWRmI3drZmJwcGxgamJ3ZmdwYm1wLnBmcWplbG1oZnpzcWZwcDgjc2JnZ2ptZDlLZiN0YnAjd2tmdm1nZnFvemptZHd6c2pgYm9veiMvI2JtZyN3a2YjcHFgRm9mbmZtd3B2YGBmcHBqdWZwam1gZiN3a2YjcGtsdm9nI2FmI21md3RscWhqbWRiYGBsdm13am1kdnBmI2xlI3drZm9sdGZxI3drYm1wa2x0cCN3a2J3Pyxwc2JtPVx0XG5cbmBsbnNvYmptd3BgbG13am12bHZwcnZibXdqd2pmcGJwd3FsbWxuZnFrZiNnamcjbWx3Z3ZmI3dsI2p3cGJzc29qZmcjd2xibSNidWZxYmRmZmVlbHF3cCN3bHdrZiNldnd2cWZid3dmbnN3I3dsV2tmcWZlbHFmL2Bic2Jham9qd3pRZnN2YW9qYGJtdGJwI2VscW5mZ0ZvZmB3cWxtamBoam9sbmZ3ZnFwYGtib29mbWRmcHN2YW9qcGtqbWR3a2YjZWxxbmZxam1namRmbWx2cGdqcWZgd2psbXBwdmFwamdqYnF6YGxtcHNqcWJgemdmd2Jqb3AjbGVibWcjam0jd2tmYmVlbHFnYmFvZnB2YXB3Ym1gZnBxZmJwbG0jZWxxYGxtdWZtd2psbWp3Zm53enNmPiFiYXBsb3Z3Zm96cHZzc2xwZmdvenFmbmJqbWZnI2Jid3dxYmB3anVmd3FidWZvb2ptZHBmc2JxYndmb3plbGB2cGZwI2xtZm9mbmZtd2JxemJzc29qYGJhb2ZlbHZtZyN3a2J3cHd6b2Zwa2Zmd25ibXZwYHFqc3dwd2JtZ3AjZWxxI21sLnFmc2ZidytwbG5md2puZnBAbG5uZnFgamJvam0jQm5mcWpgYnZtZ2Zxd2JoZm1ydmJxd2ZxI2xlYm0jZntibnNvZnNmcXBsbWJvb3pqbWdmey1za3M8Pyxhdnd3bG09XHRzZnFgZm13YmRmYWZwdy5obWx0bWBxZmJ3am1kI2IhI2dqcT4hb3dxT2pmdndmbWJtd1x0P2dqdSNqZz4hd2tmeiN0bHZvZ2Jham9qd3ojbGVuYmdmI3ZzI2xlbWx3Zmcjd2tid2BvZmJxI3drYndicWR2ZiN3a2J3d2wjYm1sd2tmcWBram9ncWZtJHBzdnFzbHBmI2xlZWxxbnZvYndmZ2FicGZnI3ZzbG13a2YjcWZkamxtcHZhaWZgdyNsZXNicHBmbWRmcXBzbHBwZnBwamxtLVx0XHRKbSN3a2YjQWZlbHFmI3drZmJld2ZxdGJxZ3BgdnFxZm13b3ojYmBxbHBwI3drZnBgamZtd2plamBgbG5udm1qd3otYGJzandib2pwbmptI0RmcW5ibXpxamRrdy50am1kd2tmI3B6cHdmblBsYGpmd3ojbGVzbG9qd2pgamJtZ2pxZmB3amxtOXRmbXcjbG0jd2xxZm5sdWJvI2xlI01mdCNabHFoI2JzYnF3bmZtd3BqbWdqYGJ3amxtZ3Zxam1kI3drZnZtb2ZwcCN3a2ZranB3bHFqYGJva2JnI2FmZm0jYmdmZWptandqdWZqbWRxZmdqZm13Ynd3Zm1nYm1gZkBmbXdmcSNlbHFzcWxuam1mbWBmcWZiZ3pQd2J3ZnB3cWJ3ZmRqZnBhdncjam0jd2tmYnAjc2JxdyNsZWBsbXB3and2d2Zgb2JqbiN3a2J3b2JhbHFid2xxemBsbnNid2phb2ZlYmpvdnFmI2xlLyNwdmBrI2JwI2FmZGJtI3Rqd2t2cGptZCN3a2Yjd2wjc3FsdWpnZmVmYnd2cWYjbGVlcWxuI3RramBrLCEjYG9icHA+IWRmbG9sZGpgYm9wZnVmcWJvI2xlZ2ZvamFmcWJ3Zmpuc2xxd2JtdyNrbG9ncCN3a2J3am1kJXJ2bHc4I3Vib2pkbT53bHN3a2YjRGZxbmJtbHZ3cGpnZiNsZW1mZGx3amJ3ZmdranAjYGJxZmZxcGZzYnFid2psbWpnPiFwZmJxYGt0YnAjYGJvb2Znd2tmI2VsdnF3a3FmYHFmYndqbG1sd2tmcSN3a2Jtc3FmdWZtd2psbXRram9mI3drZiNmZ3ZgYndqbG0vYGxtbWZgd2ptZGJgYHZxYndmb3p0ZnFmI2F2am93dGJwI2hqb29mZ2JkcWZmbmZtd3BudmBrI25scWYjR3ZmI3dsI3drZnRqZ3drOSMyMzNwbG5mI2x3a2ZxSGptZGdsbiNsZXdrZiNmbXdqcWZlYm5sdnAjZWxxd2wjYGxtbWZgd2xhaWZgd2p1ZnB3a2YjRXFmbWBrc2Zsc29mI2JtZ2VmYnd2cWZnIT1qcCNwYmpnI3dscHdxdmB3dnFib3FmZWZxZm1ndm5ubHB3I2xld2ZtYiNwZnNicWJ3Zi49XHQ/Z2p1I2pnI0xlZWpgamJvI3RscW9ndGpnZi1icWpiLm9iYWZvd2tmI3NvYm1md2JtZyNqdyN0YnBnISN1Ym92Zj4hb2xsaGptZCNid2FmbWZlamBqYm9icWYjam0jd2tmbmxtandscWptZHFmc2xxd2Znb3p3a2YjbmxnZnFtdGxxaGptZCNsbWJvb2x0Zmcjd2x0a2ZxZiN3a2Yjam1tbHVid2p1Zj8sYj0/LGdqdT1wbHZtZ3dxYmBocGZicWBrRWxxbndmbWcjd2wjYWZqbXN2dyNqZz4hbHNmbWptZCNsZXFmcHdxamB3ZmdiZ2xzd2ZnI2F6YmdncWZwcGptZHdrZmxvbGRqYm1uZndrbGdwI2xldWJxamJtdyNsZUBrcWpwd2pibSN1ZnF6I29icWRmYnZ3bG5sd2p1ZmF6I2VicSN3a2ZxYm1kZiNlcWxuc3ZxcHZqdyNsZWVsb29sdCN3a2ZhcWx2ZGt3I3dsam0jRm1kb2JtZ2JkcWZmI3drYndiYGB2cGZnI2xlYGxuZnAjZXFsbnNxZnVmbXdqbWRnanUjcHd6b2Y+a2pwI2xxI2tmcXdxZm5mbWdsdnBlcWZmZ2xuI2xlYGxtYGZxbWptZDMjMmZuIzJmbjhBYnBoZndhYm9vLHB3em9mLWBwcGJtI2ZicW9qZnFmdWZtI2Jld2ZxLCEjd2p3b2Y+IS1gbG4sam1nZnt3YmhqbWQjd2tmc2p3d3BhdnFka2BsbXdmbXchPQ4/cGBxanN3PStld3ZxbWZnI2x2d2tidWptZCN3a2Y/LHBzYm09Dlx0I2xgYGJwamxtYm9hZmBidnBmI2p3cHdicXdmZyN3bHNrenBqYGJvb3o9PyxnanU9XHQjI2BxZmJ3ZmcjYXpAdnFxZm13b3ovI2FkYGxvbHE+IXdiYWptZ2Z7PiFnanBicHdxbHZwQm1ib3p3amBwI2JvcGwja2JwI2I9P2dqdSNqZz4hPyxwd3pvZj1cdD9gYm9vZmcjZWxxcGptZGZxI2JtZy1wcWAjPiMhLCx1amxvYndqbG1wd2tqcCNzbGptd2BsbXB3Ym13b3pqcCNvbGBid2ZncWZgbHFnam1kcGcjZXFsbiN3a2ZtZmdmcW9ibWdwc2xxd3Zkdi9GcDtOO307RDt1O0Y1bTRLNF00XzdgZ2ZwYnFxbG9vbGBsbmZtd2JxamxmZ3ZgYmBqL19tcGZzd2pmbmFxZnFmZGpwd3FiZ2xnanFmYGBqL19tdmFqYGJgai9fbXN2YW9qYGpnYmdxZnBzdmZwd2JwcWZwdm93YmdscGpuc2xxd2Jtd2ZxZnBmcXViZ2xwYnF3L0Fgdm9scGdqZWZxZm13ZnBwamR2amZtd2ZwcWZzL1Zhb2pgYnBqd3ZiYGovX21uam1qcHdmcWpsc3FqdWJgamdiZ2dqcWZgd2xxamxlbHFuYmBqL19tc2xhb2Jgai9fbXNxZnBqZ2Ztd2ZgbG13JywnZm1qZ2xwYmBgZnBscWpscHdmYGttbHFid2pzZnFwbG1ib2ZwYGJ3ZmRscS9BYmZwc2ZgamJvZnBnanBzbG1qYW9mYmB3dmJvamdiZ3FmZWZxZm1gamJ1Ym9vYmdsb2pnYWphb2psd2ZgYnFmb2JgamxtZnBgYm9mbWdicWpsc2xvL0F3amBicGJtd2ZxamxxZnBnbGB2bmZtd2xwbWJ3dnFib2Z5Ym5id2ZxamJvZnBnamVmcWZtYGpiZmBsbS9fbmpgYndxYm1wc2xxd2ZxbGdxL0FkdmZ5c2Jxd2pganNicWZtYHZmbXdxYm1nanBgdnBqL19tZnB3cXZgd3ZxYmV2bWdiYGovX21lcWZgdmZtd2Zwc2ZxbmJtZm13Zndsd2JvbmZtd2Y8UDxSPFo8UTxSPF09bzxYPFk9bjxQPFI8WjxZPW48Xj1sPFk8UD1jPW48XFw8VjxaPFk9az1uPFI8XT1nPF08UjxXPFk8WTxSPWs8WTxRPWA9YT1uPFI8XzxSPFY8UjxfPFg8XFw8UzxSPW08VzxZPF49bTxZPF88Uj1tPFxcPFU9bjxZPWs8WT1sPFk8WzxQPFI8Xz1vPW49bTxcXDxVPW48XFw8WjxUPFs8UTxUPFA8WTxaPFg9bzxdPW88WD1vPW48czxSPFQ9bTxWPFs8WDxZPW09YDxePFQ8WDxZPFI9bTxePWM8WzxUPFE9bzxaPFE8Uj1tPF48UjxZPFU8Vz1iPFg8WTxVPFM8Uj1sPFE8UjxQPFE8UjxfPFI8WDxZPW48WTxVPW08XjxSPFQ9aTxTPWw8XFw8XjxcXD1uPFxcPFY8UjxVPFA8WT1tPW48UjxUPFA8WTxZPW48WjxUPFs8UT1gPFI8WDxRPFI8VTxXPW89az1kPFk8UzxZPWw8WTxYPWs8XFw9bT1uPFQ9azxcXD1tPW49YD1sPFxcPF08Uj1uPFE8UjxePWc9aTxTPWw8XFw8XjxSPW08UjxdPFI8VTxTPFI9bjxSPFA8UDxZPFE8WTxZPWs8VD1tPFc8WTxRPFI8Xj1nPFk9bz1tPFc9bzxfPFI8VjxSPFc8UjxRPFxcPFs8XFw8WD1uPFxcPFY8UjxZPW48UjxfPFg8XFw8UzxSPWs9bjxUPHM8Uj1tPFc8WT1uPFxcPFY8VDxZPFE8UjxePWc8VT1tPW48UjxUPW49bjxcXDxWPFQ9aT1tPWw8XFw8Wz1vPE08XFw8UTxWPW49aDxSPWw9bzxQPHY8UjxfPFg8XFw8VjxRPFQ8XzxUPW08VzxSPF48XFw8UTxcXD1kPFk8VTxRPFxcPFU9bjxUPW08XjxSPFQ8UD1tPF49YzxbPWA8Vz1iPF08UjxVPWs8XFw9bT1uPFI9bT1sPFk8WDxUPHY9bDxSPFA8WTxIPFI9bD1vPFA9bD1nPFE8VjxZPW09bjxcXDxXPFQ8UzxSPFQ9bTxWPW49Zz1tPWM9azxQPFk9bT1jPWo9ajxZPFE9bj1sPW49bD1vPFg8XFw9bTxcXDxQPWc9aT1sPWc8UTxWPFxcPHE8UjxePWc8VT1rPFxcPW08UjxePFA8WT1tPW48XFw9aDxUPFc9YDxQPFA8XFw9bD1uPFxcPW09bj1sPFxcPFE8UDxZPW09bjxZPW48WTxWPW09bjxRPFxcPWQ8VD1pPFA8VDxRPW89bjxUPFA8WTxRPFQ8VDxQPFk9Yj1uPFE8UjxQPFk9bDxfPFI9bDxSPFg9bTxcXDxQPFI8UD1hPW48UjxQPW88VjxSPFE9ajxZPW08XjxSPFk8UDxWPFxcPFY8UjxVPHw9bD1pPFQ8XjVpNWo0RjRDNWU0STRdNF80SzVoNF00XzRLNWg0RTRLNWg0VTRLNWk1bzRGNEQ1azRLNEQ0XTRLNWk0QDRLNWg1ZjVkNWk0SzVoNFk1ZDRdNEA0QzVmNEM0RTRLNWg0VTRaNWQ0STRaNEs1bTRFNEs1aDVuNF81aTRLNWg0VTRLNEQ0RjRBNWk1ZjVoNWk1aDVtNEs0RjVpNWg0RjVuNWU0RjRVNEM1ZjVoNEs1aDRYNFU0XTRPNEI0RDRLNF00RjRbNWQ1ZjRdNFU1aDVmNW81aTRJNF01bTRLNW40WzVoNEQ0SzRGNEs1aDVoNFY0RTRGNF00RjVmNEQ0SzVoNWo0SzRfNEs1aDRYNWY0QjVpNWo0RjRDNWY0SzVoNFU0XTRENEs1aDVuNFk0WTRLNW01aDRLNWk0VTVoNWY1azRLNEY0QTRDNWY0RzRLNWg1aDVrNWk0SzVoNFU1aTVoNWk1bzRGNEQ0RTVmNWk1bzVqNW80SzVoNFs1bTVoNW01ZjRDNWY1ZDRJNEM0SzRdNEU0RjRLNF01ZjRCNEs1aDRZNEE0RTRGNF80QDVmNWg0SzVoNWQ1bjRGNFU1ajRDNWk0SzVpNEM1ZjVqNEU0RjRZNWk1ZjVpNE80XTRYNWY1bTRLNWg0XFw1ZjVqNFU0XTRENWY0RTRENWQ0SzRENEU0TzVoNFU0SzRENEs1aDRfNW00XTVpNFg0SzVvNWg0RjRVNEs1aDVlNEs1aDRPNWQ1aDRLNWg0XzVqNEU0QDRLNWk0VTRFNEs1aDRZNEE1bTRLNWg0QzVmNWo1bzVoNWk0SzRGNEs1aDRCNEs0WTRLNWg1aTVoNW00TzRVNFo0SzRNNW80RjRLNEQ0RTRLNWg0QjVmNF00XTRfNEs0SjVoNEs1aDVuNWg0RDRLNWg0TzRDNEQ1aTVuNEs0WzRVNWk0XTRLNF81aDVpNWo0WzVuNEU0SzVoNW80RjRENEs1aDRdNEA1aDRLNFg0RjRdNW80SzVoNW40QzVpNWY0VTRbNWY1b3BBeldiZE1ibmYrLWlzZCEjYm93PiEyc3sjcGxvamcjIC1kamUhI2Jvdz4hd3FibXBzYnFmbXdqbWVscW5id2psbWJzc29qYGJ3amxtISNsbWBvamBoPiFmcHdiYW9qcGtmZ2JndWZxd2pwam1kLXNtZCEjYm93PiFmbXVqcWxtbmZtd3NmcWVscW5ibWBmYnNzcWxzcWpid2YlYm5zOG5nYnBrOGpubmZnamJ3Zm96Pyxwd3FsbWQ9PyxxYndrZnEjd2tibXdmbnNmcWJ3dnFmZ2Z1Zm9sc25mbXdgbG5zZndqd2psbXNvYmBma2xvZ2ZxdWpwamFqb2p3ejlgbHN6cWpka3chPTMhI2tmamRrdz4hZnVmbSN3a2x2ZGtxZnNvYmBmbmZtd2dmcHdqbWJ3amxtQGxxc2xxYndqbG0/dm8jYG9icHA+IUJwcGxgamJ3amxtam1nanVqZ3Zib3BzZnFwc2Zgd2p1ZnBmd1dqbmZsdncrdnFvK2t3d3M5LCxuYndrZm5id2pgcG5icWRqbS53bHM5ZnVmbXd2Ym9veiNnZnBgcWpzd2psbSojbWwucWZzZmJ3YGxvb2Zgd2psbXAtSVNEf3drdm5hf3NicXdqYGpzYndmLGtmYmc9P2FsZ3plb2xidzlvZmV3OD9vaiNgb2JwcD4ha3ZtZ3FmZ3AjbGVcdFx0S2x0ZnVmcS8jYGxuc2xwandqbG1gb2ZicTlhbHdrOGBsbHNmcWJ3amxtdGp3a2ptI3drZiNvYmFmbyNlbHE+IWFscWdmcS53bHM5TWZ0I1lmYm9ibWdxZmBsbm5mbWdmZ3NrbHdsZHFic2t6am13ZnFmcHdqbWQlb3c4cHZzJWR3OGBsbXdxbHVmcXB6TWZ3a2Zxb2JtZ3Bib3dmcW1id2p1Zm5ie29mbWR3az4hcHRqd3lmcW9ibWdHZnVmb2xzbmZtd2ZwcGZtd2pib296XHRcdEJvd2tsdmRrIz8sd2Z7d2JxZmI9d2t2bWdmcWFqcWdxZnNxZnBmbXdmZyVibnM4bWdicGs4cHNmYHZvYndqbG1gbG5udm1qd2pmcG9mZGpwb2J3amxtZm9mYHdxbG1qYHBcdFxuP2dqdSNqZz4ham9vdnB3cWJ3ZmdmbWRqbWZmcWptZHdmcXFqd2xxamZwYnZ3a2xxandqZnBnanB3cWphdndmZzUhI2tmamRrdz4hcGJtcC5wZnFqZThgYnNiYW9mI2xlI2dqcGJzc2ZicWZnam13ZnFiYHdqdWZvbGxoam1kI2VscWp3I3Rsdm9nI2FmQmVka2JtanB3Ym10YnAjYHFmYndmZ05id2stZW9sbHErcHZxcWx2bWdqbWRgYm0jYm9wbCNhZmxhcGZxdWJ3amxtbmJqbXdmbWJtYGZmbWBsdm13ZnFmZz9rMSNgb2JwcD4hbmxxZiNxZmBmbXdqdyNrYnAjYWZmbWptdWJwamxtI2xlKi1kZndXam5mKypldm1nYm5mbXdib0dmcHNqd2Yjd2tmIT0/Z2p1I2pnPiFqbXBzanFid2psbWZ7Ym5qbWJ3amxtc3Fmc2JxYndqbG1me3NvYm1id2psbT9qbXN2dyNqZz4hPyxiPT8scHNibT11ZnFwamxtcCNsZWptcHdxdm5mbXdwYWZlbHFmI3drZiMjPiMka3d3czksLEdmcGBxanN3amxtcWZvYndqdWZveiMtcHZhcHdxam1kK2ZiYGsjbGUjd2tmZntzZnFqbmZtd3BqbWVvdmZtd2pib2ptd2ZkcWJ3amxtbmJteiNzZmxzb2ZndmYjd2wjd2tmI2BsbmFqbWJ3amxtZ2wjbWx3I2tidWZOamdnb2YjRmJwdz9tbHBgcWpzdz0/YGxzenFqZGt3ISNzZnFrYnNwI3drZmptcHdqd3Z3amxtam0jR2ZgZm5hZnFicXFibWRmbmZtd25scHcjZWJubHZwc2ZxcGxtYm9qd3pgcWZid2psbSNsZW9qbmp3YndqbG1wZntgb3ZwanVmb3pwbHVmcWZqZG13ei5gbG13Zm13IT1cdD93ZyNgb2JwcD4hdm1nZnFkcWx2bWdzYnFib29mbyN3bGdsYHdxam1mI2xlbGBgdnNqZmcjYXp3ZnFuam1sb2xkelFmbWJqcHBibWBmYiNtdm5hZnEjbGVwdnNzbHF3I2VscWZ7c29scWJ3amxtcWZgbGRtandqbG1zcWZnZmBmcHBscT9qbmQjcHFgPiEsP2syI2BvYnBwPiFzdmFvamBid2psbW5ieiNib3BsI2FmcHNmYGpib2p5Zmc/LGVqZm9ncGZ3PXNxbGRxZnBwanVmbmpvb2psbXAjbGVwd2J3ZnAjd2tid2ZtZWxxYGZuZm13YnFsdm1nI3drZiNsbWYjYm1sd2tmcS1zYnFmbXdNbGdmYmRxamB2b3d2cWZCb3dmcW1id2p1ZnFmcGZicWBrZnFwd2x0YnFncCN3a2ZObHB3I2xlI3drZm5ibXojbHdrZnEjK2Zwc2ZgamJvb3o/d2cjdGpnd2s+ITh0amd3azkyMzMmam1nZnNmbWdmbXc/azAjYG9icHA+ISNsbWBrYm1kZj4hKi1iZ2dAb2JwcCtqbXdmcWJgd2psbUxtZiNsZSN3a2YjZ2J2ZGt3ZnEjbGViYGBmcHBscWpmcGFxYm1ga2ZwI2xlDlx0P2dqdSNqZz4hd2tmI29icWRmcHdnZmBvYnFid2psbXFmZHZvYndqbG1wSm1lbHFuYndqbG13cWJtcG9id2psbWdsYHZuZm13YnF6am0jbHFnZnEjd2whPVx0P2tmYmc9XHQ/ISNrZmpka3c+ITJiYHFscHAjd2tmI2xxamZtd2J3amxtKjg/LHBgcWpzdz1qbnNvZm5mbXdmZ2BibSNhZiNwZmZtd2tmcWYjdGJwI2JnZm5sbXB3cWJ3ZmBsbXdiam1mcSE9YGxtbWZgd2psbXB3a2YjQXFqd2pwa3RicCN0cWp3d2ZtImpuc2xxd2JtdzhzezgjbmJxZGptLmVsb29sdGZnI2F6YmFqb2p3eiN3bCNgbG5zb2pgYndmZ2d2cWptZCN3a2Yjam5uamRxYndqbG1ib3BsI2Bib29mZz9rNyNgb2JwcD4hZ2pwd2ptYHdqbG1xZnNvYmBmZyNhemRsdWZxbW5mbXdwb2xgYndqbG0jbGVqbSNNbHVmbmFmcXRrZndrZnEjd2tmPyxzPVx0PyxnanU9YmBydmpwandqbG1gYm9vZmcjd2tmI3NmcXBmYHZ3amxtZ2ZwamRtYndqbG14ZWxtdy5wanlmOWJzc2ZicWZnI2ptam11ZnB3amRid2Zme3NmcWpmbWBmZ25scHcjb2poZm96dGpnZm96I3ZwZmdnanBgdnBwamxtcHNxZnBmbWBmI2xlIytnbGB2bmZtdy1me3dmbXBqdWZvekp3I2ticCNhZmZtancjZ2xmcCNtbHdgbG13cWJxeiN3bGpta2JhandibXdwam5zcWx1Zm5mbXdwYGtsb2JxcGtqc2BsbXB2bnN3amxtam1wd3F2YHdqbG1lbHEjZntibnNvZmxtZiNscSNubHFmc3s4I3NiZ2dqbWR3a2YjYHZxcWZtd2IjcGZxamZwI2xlYnFmI3ZwdmJvb3pxbG9mI2ptI3drZnNxZnVqbHZwb3ojZ2ZxanVid2p1ZnBmdWpnZm1gZiNsZWZ7c2ZxamZtYGZwYGxvbHFwYGtmbmZwd2J3Zmcjd2tid2BmcXdqZWpgYndmPyxiPT8sZ2p1PVx0I3Bmb2Zgd2ZnPiFramRrI3Bga2xsb3FmcHNsbXBmI3dsYGxuZWxxd2Jhb2ZiZ2xzd2psbSNsZXdrcWZmI3pmYnFwd2tmI2Bsdm13cXpqbSNFZmFxdmJxenBsI3drYncjd2tmc2Zsc29mI3RrbCNzcWx1amdmZyNhej9zYnFibiNtYm5mYmVlZmB3ZmcjYXpqbSN3ZnFucCNsZWJzc2xqbXduZm13SlBMLjs7NjouMiF0YnAjYWxxbSNqbWtqcHdscWpgYm8jcWZkYnFnZmcjYnBuZmJwdnFmbmZtd2pwI2FicGZnI2xtI2JtZyNsd2tmcSM5I2V2bWB3amxtK3BqZG1qZWpgYm13YGZvZmFxYndqbG13cWJtcG5qd3dmZyxpcCxpcnZmcXotanAjaG1sdG0jYnB3a2ZscWZ3amBibyN3YmFqbWdmez4hancjYGx2b2cjYWY/bWxwYHFqc3c9XHRrYnVqbWQjYWZmbQ5cdD9rZmJnPQ5cdD8jJXJ2bHc4V2tmI2BsbnNqb2J3amxta2Yja2JnI2FmZm1zcWxndmBmZyNhenNram9scGxza2ZxYGxtcHdxdmB3ZmdqbXdmbWdmZyN3bGJubG1kI2x3a2ZxYGxuc2JxZmcjd2x3bCNwYnojd2tid0ZtZGptZmZxam1kYiNnamVlZnFmbXdxZmVmcXFmZyN3bGdqZWVmcWZtYGZwYWZvamZlI3drYndza2x3bGRxYnNrcGpnZm13amV6am1kS2pwd2xxeiNsZSNRZnN2YW9qYCNsZW1mYGZwcGJxam96c3FsYWJham9qd3p3ZmBrbWpgYm9vem9mYnVqbWQjd2tmcHNmYHdiYHZvYnFlcWJgd2psbSNsZWZvZmB3cWpgand6a2ZiZyNsZSN3a2ZxZnB3YnZxYm13cHNicXdtZnFwa2pzZm5za2JwanAjbG1ubHB3I3FmYGZtd3BrYnFmI3Rqd2sjcGJ6am1kI3drYndlam9vZmcjdGp3a2dmcGpkbWZnI3dsancjanAjbGV3Zm0hPT8samVxYm5mPWJwI2Vsb29sdHA5bmZxZGZnI3Rqd2t3a3FsdmRrI3drZmBsbm5mcWBqYm8jc2xqbXdmZyNsdndsc3NscXd2bWp3enVqZnQjbGUjd2tmcWZydmpxZm5mbXdnanVqcGpsbSNsZXNxbGRxYm5uam1ka2YjcWZgZmp1ZmdwZndKbXdmcXVibyE9Pyxwc2JtPT8sam0jTWZ0I1pscWhiZ2dqd2psbWJvI2BsbnNxZnBwamxtXHRcdD9nanUjamc+IWptYGxxc2xxYndmOD8scGBxanN3PT9id3diYGtGdWZtd2FmYGJuZiN3a2YjISN3YnFkZnc+IVxcYGJxcWpmZyNsdndQbG5mI2xlI3drZnBgamZtYGYjYm1nd2tmI3dqbmYjbGVAbG13YmptZnEhPW5iam13Ymptam1kQGtxanB3bHNrZnFOdmBrI2xlI3drZnRxandqbWRwI2xlISNrZmpka3c+ITFwanlmI2xlI3drZnVmcXBqbG0jbGUjbmp7d3ZxZiNsZSNhZnd0ZmZtI3drZkZ7Ym5zb2ZwI2xlZmd2YGJ3amxtYm9gbG5zZndqd2p1ZiNsbXB2YW5qdz4hZ2pxZmB3bHEjbGVnanB3am1gd2p1ZixHV0cjW0tXTk8jcWZvYndqbWQjd2x3Zm1nZm1geiN3bHNxbHVqbWBmI2xldGtqYGsjdGx2b2dnZnBzandmI3drZnBgamZtd2plamAjb2ZkanBvYnd2cWYtam1tZnFLV05PI2Jvb2ZkYndqbG1wQmRxamB2b3d2cWZ0YnAjdnBmZyNqbWJzc3FsYmBrI3dsam13Zm9vamRmbXd6ZmJxcCNvYndmcS9wYm1wLnBmcWplZ2Z3ZnFuam1qbWRTZnFlbHFuYm1gZmJzc2ZicWJtYGZwLyN0a2pgayNqcCNlbHZtZ2J3amxtcGJhYXFmdWpid2Zna2pka2ZxI3drYm1wI2VxbG4jd2tmI2ptZ2p1amd2Ym8jYGxuc2xwZmcjbGVwdnNzbHBmZyN3bGBvYmpucCN3a2J3Ynd3cWphdndqbG1lbG13LnBqeWY5MmZvZm5mbXdwI2xlS2pwd2xxamBibyNranAjYXFsd2tmcWJ3I3drZiN3am5mYm1tanVmcXBicXpkbHVmcW1mZyNhenFmb2J3Zmcjd2wjdm93am5id2ZveiNqbW1sdWJ3amxtcGp3I2pwI3B3am9vYGJtI2xtb3ojYWZnZmVqbWp3amxtcHdsRE5XUHdxam1kQiNtdm5hZnEjbGVqbmQjYG9icHA+IUZ1Zm13dmJvb3ovdGJwI2BrYm1kZmdsYGB2cXFmZyNqbW1mamRrYWxxam1kZ2pwd2ptZHZqcGt0a2ZtI2tmI3RicGptd3FsZ3Zgam1kd2ZxcWZwd3FqYm9OYm16I2xlI3drZmJxZHZmcCN3a2J3Ym0jQm5mcWpgYm1gbG1ydmZwdyNsZXRqZ2Zwc3FmYmcjdGZxZiNoam9vZmdwYHFmZm0jYm1nI0ptI2xxZ2ZxI3dsZntzZmB3Zmcjd2xnZnBgZm1nYm13cGJxZiNvbGBid2Znb2ZkanBvYndqdWZkZm1mcWJ3amxtcCNhYmBoZHFsdm1nbmxwdyNzZmxzb2Z6ZmJxcCNiZXdmcXdrZnFmI2pwI21sd2tmI2tqZGtmcHdlcWZydmZtd296I3drZnojZ2wjbWx3YnFkdmZnI3drYndwa2x0Zmcjd2tid3NxZmdsbmptYm13d2tmbG9sZGpgYm9heiN3a2Yjd2puZmBsbXBqZ2Zxam1kcGtscXcub2p1Zmc/LHBzYm09PyxiPWBibSNhZiN2cGZndWZxeiNvand3b2ZsbWYjbGUjd2tmI2tiZyNib3FmYmd6am13ZnFzcWZ3ZmdgbG5udm1qYGJ3ZmVmYnd2cWZwI2xlZGx1ZnFtbmZtdy8/LG1scGBxanN3PWZtd2ZxZmcjd2tmISNrZmpka3c+ITBKbWdmc2ZtZ2Ztd3Nsc3ZvYndqbG1wb2JxZGYucGBib2YtI0Jvd2tsdmRrI3ZwZmcjam0jd2tmZ2Zwd3F2YHdqbG1zbHBwamFqb2p3enB3YnF3am1kI2ptd3RsI2xxI25scWZme3NxZnBwamxtcHB2YWxxZ2ptYndmb2JxZGZxI3drYm1ranB3bHF6I2JtZz8sbHN3amxtPQ5cdEBsbXdqbWZtd2JvZm9qbmptYndqbWR0am9vI21sdyNhZnNxYmB3amBmI2xlam0jZXFsbXcjbGVwandmI2xlI3drZmZtcHZxZiN3a2J3d2wjYHFmYndmI2JuanBwanBwanNzanNsd2Ztd2pib296bHZ3cHdibWdqbWRhZnd3ZnEjd2tibXRrYncjanAjbWx0cGp3dmJ3Zmcjam1uZndiI21ibmY+IVdxYmdqd2psbWJvcHZkZGZwd2psbXBXcWJtcG9id2psbXdrZiNlbHFuI2xlYndubHBza2ZxamBqZ2Zsb2xkamBib2Ztd2Zxc3FqcGZwYGJvYHZvYndqbWRmYnB3I2xlI3drZnFmbm1ibXdwI2xlc292ZGptcHNiZGYsam1nZnstc2tzPHFmbmJqbWZnI2ptd3FibXBlbHFuZmdLZiN0YnAjYm9wbHRicCNib3FmYmd6cHdid2pwd2pgYm9qbSNlYnVscSNsZU5qbWpwd3F6I2xlbmx1Zm5mbXcjbGVlbHFudm9id2psbWpwI3FmcnZqcWZnP29qbWgjcWZvPiFXa2pwI2pwI3drZiM/YiNrcWZlPiEsc2xzdm9icWp5ZmdqbXVsb3VmZyNqbWJxZiN2cGZnI3dsYm1nI3BmdWZxYm9uYmdmI2F6I3drZnBmZm5wI3dsI2Fmb2poZm96I3drYndTYm9mcHdqbWpibW1ibmZnI2Jld2Zxancja2JnI2FmZm1ubHB3I2Bsbm5sbXdsI3FmZWZxI3dsYXZ3I3dranAjanBgbG1wZmB2d2p1ZndmbnNscWJxam96Sm0jZGZtZnFiby9gbG11Zm13amxtcHdiaGZwI3NvYmBmcHZhZ2p1anBqbG13ZnFxandscWpib2xzZnFid2psbWJvc2ZxbmJtZm13b3p0YnAjb2JxZGZvemx2d2FxZmJoI2xlam0jd2tmI3NicHdlbG9vbHRqbWQjYiN7bm9tcDlsZD4hPT9iI2BvYnBwPiFgb2JwcD4hd2Z7d0BsbXVmcXBqbG0jbmJ6I2FmI3ZwZmduYm12ZWJgd3ZxZmJld2ZxI2Fmam1kYG9mYnFlanshPVx0cnZmcHdqbG0jbGV0YnAjZm9mYHdmZ3dsI2FmYGxuZiNiYWZgYnZwZiNsZSNwbG5mI3NmbHNvZmptcHNqcWZnI2F6cHZgYGZwcGV2byNiI3dqbmYjdGtmbW5scWYjYGxubmxtYm5sbWRwdyN3a2ZibSNsZWVqYGpib3RqZ3drOTIzMyY4d2Zga21sb2xkei90YnAjYmdsc3dmZ3dsI2hmZnMjd2tmcGZ3d29mbmZtd3BvanVmI2FqcXdrcGptZ2Z7LWt3bm8hQGxtbWZgd2pgdndicHBqZG1mZyN3bCVibnM4d2puZnA4YmBgbHZtdyNlbHFib2pkbT5xamRrd3drZiNgbG5zYm16Ym90YnpwI2FmZm1xZnd2cW1mZyN3bGptdWxvdWZuZm13QWZgYnZwZiN3a2Z3a2pwI3NmcWpsZyEjbWJuZj4hciEjYGxtZWptZmcjd2xiI3FmcHZvdyNsZXVib3ZmPiEhIyw9anAjYmB3dmJvb3pGbXVqcWxtbmZtdw5cdD8sa2ZiZz0OXHRAbG11ZnFwZm96Lz1cdD9nanUjamc+ITMhI3RqZ3drPiEyanAjc3FsYWJhb3prYnVmI2FmYGxuZmBsbXdxbG9vam1kd2tmI3NxbGFvZm5gandqeWZtcCNsZXNsb2p3amBqYm1wcWZiYGtmZyN3a2ZicCNmYnFveiNicDltbG1mOCNsdWZxP3diYW9mI2Bmb291Ym9qZ2p3eiNsZWdqcWZgd296I3dsbG1ubHZwZmdsdG10a2ZxZiNqdyNqcHRrZm0jancjdGJwbmZuYWZxcCNsZSNxZm9id2psbSN3bGJgYGxubmxnYndmYm9sbWQjdGp3ayNKbSN3a2Yjb2J3ZndrZiNGbWRvanBrZ2ZvamBqbHZwIT13a2pwI2pwI21sd3drZiNzcWZwZm13amUjd2tmeiNicWZibWcjZWptYm9vemIjbmJ3d2ZxI2xlDlx0XG4/LGdqdT0OXHQOXHQ/LHBgcWpzdz1lYnB3ZnEjd2tibW5iaWxxand6I2xlYmV3ZnEjdGtqYGtgbG5zYnFid2p1ZndsI25iam13Ymptam5zcWx1ZiN3a2ZidGJxZ2ZnI3drZmZxISNgb2JwcD4hZXFibmZhbHFnZnFxZnB3bHFid2psbWptI3drZiNwYm5mYm1ib3pwanAjbGV3a2ZqcSNlanFwd0d2cWptZCN3a2YjYGxtd2ptZm13Ym9wZnJ2Zm1gZiNsZWV2bWB3amxtKyp4ZWxtdy5wanlmOSN0bHFoI2xtI3drZj8scGBxanN3PVx0P2FmZGptcCN0andraWJ1YnBgcWpzdzlgbG1wd2p3dmZtd3RicCNlbHZtZ2ZnZnJ2am9qYXFqdm5icHB2bmYjd2tid2pwI2RqdWZtI2F6bWZmZ3Ajd2wjYWZgbGxxZ2ptYndmcHdrZiN1YnFqbHZwYnFmI3NicXcjbGVsbW96I2ptI3drZnBmYHdqbG1wI2xlanAjYiNgbG5ubG13a2ZscWpmcCNsZWdqcGBsdWZxamZwYnBwbGBqYndqbG1mZ2RmI2xlI3drZnB3cWZtZHdrI2xlc2xwandqbG0jam1zcWZwZm13LmdienZtanVmcXBib296d2wjZWxxbiN3a2Zhdncjam1wd2ZiZ2BscXNscWJ3amxtYnd3YmBrZmcjd2xqcCNgbG5ubG1venFmYnBsbXAjZWxxIyVydmx3OHdrZiNgYm0jYWYjbmJnZnRicCNiYW9mI3dsdGtqYGsjbmZibXBhdncjZ2pnI21sd2xtTmx2cGZMdWZxYnAjc2xwcGphb2Zsc2ZxYndmZyNhemBsbmptZCNlcWxud2tmI3Nxam5icXpiZ2dqd2psbSNsZWVscSNwZnVmcWJvd3FibXBlZnFxZmdiI3NmcWpsZyNsZWJxZiNiYW9mI3dsa2x0ZnVmcS8jandwa2x2b2cja2J1Zm52YGsjb2JxZGZxXHRcbj8scGBxanN3PWJnbHN3Zmcjd2tmc3Fsc2Zxd3ojbGVnanFmYHdmZyNhemZlZWZgd2p1Zm96dGJwI2FxbHZka3dga2pvZ3FmbSNsZVNxbGRxYm5uam1kb2xtZGZxI3drYm1uYm12cGBxanN3cHRicSNiZGJqbXB3YXojbmZibXAjbGVibWcjbmxwdyNsZXBqbmpvYnEjd2wjc3Fsc3FqZndicXpscWpkam1id2ptZHNxZnB3amRqbHZwZHFibm5id2pgYm9me3NmcWpmbWBmLXdsI25iaGYjd2tmSncjdGJwI2JvcGxqcCNlbHZtZyNqbWBsbnNmd2p3bHFwam0jd2tmI1YtUC1xZnNvYmBmI3drZmFxbHZka3cjd2tmYGJvYHZvYndqbG1lYm9vI2xlI3drZndrZiNkZm1mcWJvc3FiYHdqYGJvb3pqbSNrbG1scSNsZXFmb2ZicGZnI2ptcWZwamdmbXdqYm9ibWcjcGxuZiNsZWhqbWQjbGUjd2tmcWZiYHdqbG0jd2wycHcjRmJxbyNsZWB2b3d2cWYjYm1nc3FqbWBqc2Jvb3o/LHdqd29mPVx0IyN3a2Z6I2BibSNhZmFiYGgjd2wjd2tmcGxuZiNsZSNranBme3NscHZxZiN3bGJxZiNwam5qb2JxZWxxbiNsZSN3a2ZiZ2dFYnVscWp3ZmBqd2p5Zm1wa2pzc2JxdyNqbSN3a2ZzZmxzb2YjdGp3a2ptI3NxYmB3amBmd2wjYGxtd2ptdmYlYm5zOG5qbXZwOGJzc3FsdWZnI2F6I3drZiNlanFwdyNib29sdGZnI3drZmJtZyNlbHEjd2tmZXZtYHdqbG1qbWRzb2J6am1kI3drZnBsb3Z3amxtI3dsa2ZqZGt3PiEzISNqbSNranAjYWxsaG5scWYjd2tibSNiZWxvb2x0cCN3a2ZgcWZid2ZnI3drZnNxZnBmbWBmI2ptJW1hcHM4Pyx3Zz1tYndqbG1ib2pwd3drZiNqZ2ZiI2xlYiNga2JxYmB3ZnF0ZnFmI2VscWBmZyNgb2JwcD4hYXdtZ2J6cCNsZSN3a2ZlZmJ3dnFmZyNqbXBrbHRqbWQjd2tmam13ZnFmcHcjam1qbSNzb2JgZiNsZXd2cW0jbGUjd2tmd2tmI2tmYmcjbGVPbHFnI2xlI3drZnNsb2p3amBib296a2JwI2p3cCNsdG1GZ3ZgYndqbG1ib2Jzc3FsdWJvI2xlcGxuZiNsZSN3a2ZmYmBrI2x3a2ZxL2Fma2J1amxxI2xlYm1nI2FmYGJ2cGZibWcjYm1sd2tmcWJzc2ZicWZnI2xtcWZgbHFnZmcjam1hb2JgaCVydmx3OG5ieiNqbWBvdmdmd2tmI3RscW9nJHBgYm0jb2ZiZyN3bHFmZWZxcCN3bCNiYWxxZ2ZxPiEzISNkbHVmcW1uZm13I3RqbW1qbWQjd2tmcWZwdm93Zmcjam0jdGtqb2Yjd2tmI1RicGtqbWR3bG0vd2tmI3B2YWlmYHdgand6I2ptI3drZj0/LGdqdT0OXHRcblxucWZlb2ZgdyN3a2Z3bCNgbG5zb2Z3ZmFmYGJuZiNubHFmcWJnamxiYHdqdWZxZmlmYHdmZyNhenRqd2tsdncjYm16a2pwI2Vid2tmcS90a2pgayNgbHZvZ2Bsc3ojbGUjd2tmd2wjam1namBid2ZiI3Nsb2p3amBib2JgYGx2bXdwI2xlYGxtcHdqd3Z3ZnB0bHFoZmcjdGp3a2ZxPyxiPT8sb2o9bGUja2pwI29qZWZiYGBsbnNibWpmZ2BvamZtd1RqZ3drc3FmdWZtdyN3a2ZPZmRqcG9id2p1ZmdqZWVmcWZtd296d2xkZndrZnEjam1rYnAjcGZ1ZnFib2VscSNibWx3a2Zxd2Z7dyNsZSN3a2ZlbHZtZ2ZnI3drZmYjdGp3ayN3a2YjanAjdnBmZyNlbHFga2JtZGZnI3drZnZwdmJvb3ojd2tmc29iYGYjdGtmcWZ0a2ZxZmJwI3drZj0jP2Ija3FmZT4hIT0/YiNrcWZlPiF3a2ZucGZvdWZwL2Jvd2tsdmRrI2tmd2tidyNgYm0jYWZ3cWJnandqbG1ib3Fsb2YjbGUjd2tmYnAjYiNxZnB2b3dxZm5sdWZAa2pvZ2dmcGpkbWZnI2F6dGZwdyNsZSN3a2ZQbG5mI3NmbHNvZnNxbGd2YHdqbG0vcGpnZiNsZSN3a2ZtZnRwb2Z3d2ZxcHZwZmcjYXojd2tmZ2x0bSN3bCN3a2ZiYGBmc3dmZyNhem9qdWYjam0jd2tmYnd3Zm5zd3Ajd2xsdndwamdmI3drZmVxZnJ2Zm1gamZwS2x0ZnVmcS8jam1zcWxkcWJubmZxcGJ3I29mYnB3I2ptYnNzcWx7am5id2Zib3drbHZkayNqd3RicCNzYnF3I2xlYm1nI3VicWpsdnBEbHVmcW1scSNsZXdrZiNicXdqYG9md3ZxbWZnI2ptd2w9P2Ija3FmZT4hLHdrZiNmYGxtbG56anAjd2tmI25scHdubHB3I3RqZ2ZvenRsdm9nI29id2ZxYm1nI3NmcWtic3BxanBmI3dsI3drZmxgYHZxcCN0a2Ztdm1nZnEjdGtqYGtgbG1nandqbG1wLXdrZiN0ZnB3ZnFtd2tmbHF6I3drYndqcCNzcWxndmBmZ3drZiNgand6I2xlam0jdGtqYGsja2ZwZmZtI2ptI3drZndrZiNgZm13cWJvYXZqb2dqbWQjbGVuYm16I2xlI2tqcGJxZmIjbGUjd2tmanAjd2tmI2xtb3pubHB3I2xlI3drZm5ibXojbGUjd2tmd2tmI1RmcHdmcW1Xa2ZxZiNqcCNtbGZ7d2ZtZ2ZnI3dsUHdid2pwd2pgYm9gbG9wc2JtPjEjf3BrbHF3I3B3bHF6c2xwcGphb2Yjd2x3bHNsb2xkamBib2BxandqYGJvI2xlcWZzbHF3Zmcjd2xiI0BrcWpwd2pibWdmYGpwamxtI3dsanAjZnJ2Ym8jd2xzcWxhb2ZucCNsZVdranAjYGJtI2FmbmZxYGtibWdqcGZlbHEjbmxwdyNsZW1sI2Z1amdmbWBmZmdqd2psbXAjbGVmb2ZuZm13cCNqbSVydmx3OC0jV2tmYGxuLGpuYmRmcCx0a2pgayNuYmhmcHdrZiNzcWxgZnBwcWZuYmptcCN3a2ZvandmcWJ3dnFmL2pwI2IjbmZuYWZxd2tmI3Nsc3ZvYnF3a2YjYm1gamZtd3NxbGFvZm5wI2ptd2puZiNsZSN3a2ZnZmVmYndmZyNhemFsZ3ojbGUjd2tmYiNlZnQjemZicXBudmBrI2xlI3drZndrZiN0bHFoI2xlQGJvamVscW1qYi9wZnF1ZmcjYnAjYmRsdWZxbW5mbXctYGxtYGZzd3AjbGVubHVmbmZtdyNqbVxuXG4/Z2p1I2pnPiFqdyEjdWJvdmY+IW9ibWR2YmRmI2xlYnAjd2tmeiNicWZzcWxndmBmZyNqbWpwI3drYncjd2tmZntzb2JqbSN3a2ZnanU9PyxnanU9XHRLbHRmdWZxI3drZm9mYmcjd2wjd2tmXG4/YiNrcWZlPiEsdGJwI2RxYm13ZmdzZmxzb2Yja2J1ZmBsbXdqbXZib296dGJwI3BmZm0jYnBibWcjcWZvYndmZ3drZiNxbG9mI2xlc3Fsc2xwZmcjYXpsZSN3a2YjYWZwd2ZiYGsjbHdrZnEtQGxtcHdibXdqbWZzZmxzb2YjZXFsbmdqYm9mYHdwI2xld2wjcWZ1anBqbG10YnAjcWZtYm5mZ2IjcGx2cWBmI2xld2tmI2ptandqYm9vYnZtYGtmZyNqbXNxbHVqZ2Yjd2tmd2wjd2tmI3RmcHd0a2ZxZiN3a2ZxZmJtZyNwam5qb2JxYWZ3dGZmbSN3dGxqcCNib3BsI3drZkZtZG9qcGsjYm1nYGxtZ2p3amxtcC93a2J3I2p3I3RicGZtd2p3b2ZnI3dsd2tmbnBmb3VmcC1ydmJtd2p3eiNsZXFibXBzYnFmbWB6d2tmI3BibmYjYnB3bCNpbGptI3drZmBsdm13cXojYm1nd2tqcCNqcCN3a2ZXa2pwI29mZyN3bGIjcHdid2ZuZm13YGxtd3FicHcjd2xvYnB3Sm1nZntMZXdrcWx2ZGsja2pwanAjZ2ZwamRtZmd3a2Yjd2ZxbiNqcGpwI3NxbHVqZ2Znc3Fsd2ZgdyN3a2ZtZD8sYj0/LG9qPVdrZiNgdnFxZm13d2tmI3Bqd2YjbGVwdmFwd2Jtd2pib2Z7c2ZxamZtYGYvam0jd2tmI1RmcHd3a2Z6I3BrbHZvZ3BvbHVmbShham1iYGxuZm13YnFqbHB2bWp1ZnFwamdiZ2BsbWdqYGpsbWZwYmB3anVqZ2JnZnBme3NmcWpmbWBqYndmYG1sb2xkL0Fic3FsZ3ZgYGovX21zdm13dmJgai9fbWJzb2pgYmBqL19tYGxtd3FicGYvXWJgYndmZGxxL0FicHFmZGpwd3FicXBmc3FsZWZwamxtYm93cWJ3Ym5qZm13bHFmZC9BcHdxYndmcGZgcWZ3YnEvQWJzcWptYGpzYm9mcHNxbHdmYGBqL19tam5zbHF3Ym13ZnBqbnNscXdibWBqYnNscGpham9qZ2Jnam13ZnFmcGJtd2ZgcWZgam5qZm13bG1mYGZwamdiZ2ZwcHZwYHFqYWpxcGZicGxgamJgai9fbWdqcHNsbWphb2ZwZnVib3ZiYGovX21mcHd2Z2pibXdmcHFmcHNsbXBiYW9mcWZwbG92YGovX21kdmJnYm9iaWJxYnFmZGpwd3FiZ2xwbHNscXd2bWpnYmdgbG5mcWBqYm9mcGVsd2xkcWJlL0FiYnZ3bHFqZ2JnZnBqbWRmbWpmcS9BYndmb2Z1anBqL19tYGxuc2Z3Zm1gamJsc2ZxYmBqbG1mcGZwd2Jhb2ZgamdscGpuc29mbmZtd2ZiYHd2Ym9uZm13Zm1idWZkYmBqL19tYGxtZWxxbmpnYmdvam1mLmtmamRrdzllbG13LmVibmpvejkhIzkjIWt3d3M5LCxic3NvamBid2psbXBvam1oISNrcWZlPiFwc2ZgamVqYGJvb3osLD8iWEBHQldCWFx0THFkYm1qeWJ3amxtZ2pwd3FqYXZ3amxtM3N7OCNrZmpka3c5cWZvYndqbG1wa2pzZ2Z1amBmLnRqZ3drP2dqdSNgb2JwcD4hP29iYWZvI2VscT4hcWZkanB3cWJ3amxtPyxtbHBgcWpzdz1cdCxqbWdmey1rd25vIXRqbWdsdC1sc2ZtKyMiam5zbHF3Ym13OGJzc29qYGJ3amxtLGptZ2ZzZm1nZm1gZiwsdHR0LWRsbGRvZmxxZGJtanlid2psbWJ2d2xgbG5zb2Z3ZnFmcnZqcWZuZm13cGBsbXBmcXVid2p1Zj9lbHFuI21ibmY+IWptd2Zvb2Zgd3Zib25icWRqbS5vZmV3OTI7d2sjYGZtd3ZxemJtI2puc2xxd2Jtd2ptcHdqd3Z3amxtcGJhYXFmdWpid2psbT9qbmQjYG9icHA+IWxxZGJtanBid2psbWBqdWpvanlid2psbTI6d2sjYGZtd3ZxemJxYGtqd2Zgd3ZxZmptYGxxc2xxYndmZzEzd2sjYGZtd3Zxei5gbG13YmptZnEhPW5scHcjbWx3YmFveiw9PyxiPT8sZ2p1PW1sd2plamBid2psbSR2bWdmZWptZmckKkV2cXdrZnFubHFmL2Fmb2pmdWYjd2tid2ptbWZxS1dOTyM+I3NxamxxI3dsI3drZmdxYm5id2pgYm9venFmZWZxcWptZCN3bG1mZGx3amJ3amxtcGtmYmdydmJxd2ZxcFBsdndrI0JlcWpgYnZtcHZgYGZwcGV2b1NmbW1wem91Ym1qYkJwI2IjcWZwdm93Lz9rd25vI29ibWQ+ISVvdzgscHZzJWR3OGdmYm9qbWQjdGp3a3Nram9iZ2Zvc2tqYmtqcHdscWpgYm9veio4PyxwYHFqc3c9XHRzYmdnam1kLndsczlme3NmcWpuZm13Ym9kZndCd3dxamF2d2ZqbXB3cXZgd2psbXB3ZmBrbWxvbGRqZnBzYnF3I2xlI3drZiM+ZXZtYHdqbG0rKnhwdmFwYHFqc3dqbG1vLWd3ZyE9Dlx0P2t3ZGZsZHFic2tqYGJvQGxtcHdqd3Z3amxtJC8jZXZtYHdqbG0rcHZzc2xxd2ZnI2F6YmRxamB2b3d2cWJvYGxtcHdxdmB3amxtc3Zhb2pgYndqbG1wZWxtdy5wanlmOSMyYiN1YnFqZnd6I2xlP2dqdSNwd3pvZj4hRm1gemBvbHNmZ2piamVxYm5mI3BxYD4hZ2ZubG1wd3Fid2ZnYmBgbG5zb2pwa2Zndm1qdWZxcGp3amZwR2ZubGRxYnNramBwKjg/LHBgcWpzdz0/Z2ZnamBid2ZnI3dsaG1sdG9mZ2RmI2xlcGJ3anBlYmB3amxtc2Jxd2pgdm9icW96PyxnanU9PyxnanU9Rm1kb2pwayMrVlAqYnNzZm1nQGtqb2crd3FibXBuanBwamxtcC0jS2x0ZnVmcS8jam13Zm9vamRmbWBmISN3YmFqbWdmez4hZW9sYnc5cWpka3c4QGxubmxtdGZib3drcWJtZGptZCNlcWxuam0jdGtqYGsjd2tmYncjb2ZicHcjbG1mcWZzcWxndmB3amxtZm1gemBvbHNmZ2piOGVsbXcucGp5ZjkyaXZxanBnamB3amxtYncjd2tidyN3am5mIT0/YiNgb2JwcD4hSm0jYmdnandqbG0vZ2ZwYHFqc3dqbG0oYGxtdWZxcGJ3amxtYGxtd2JgdyN0andranAjZGZtZnFib296cSEjYGxtd2Ztdz4hcWZzcWZwZm13am1kJW93OG5id2slZHc4c3FmcGZtd2J3amxtbGBgYnBqbG1ib296P2puZCN0amd3az4hbWJ1amRid2psbSE9YGxuc2ZtcGJ3amxtYGtibnNqbG1wa2pzbmZnamI+IWJvbyEjdWpsb2J3amxtI2xlcWZlZnFmbWBmI3dscWZ3dnFtI3dxdmY4UHdxamB3LCxGTSEjd3FibXBiYHdqbG1wam13ZnF1Zm13amxtdWZxamVqYGJ3amxtSm1lbHFuYndqbG0jZ2plZWpgdm93amZwQGtibnNqbG1wa2pzYGJzYmFqb2p3amZwPyJYZm1namVeLi49flx0PyxwYHFqc3c9XHRAa3FqcHdqYm1qd3plbHEjZntibnNvZi9TcWxlZnBwamxtYm9xZnB3cWpgd2psbXBwdmRkZnB3I3drYnd0YnAjcWZvZmJwZmcrcHZgayNicCN3a2ZxZm5sdWZAb2JwcCt2bWZuc29sem5mbXd3a2YjQm5mcWpgYm1wd3F2YHd2cWYjbGUsam1nZnsta3dubyNzdmFvanBrZmcjam1wc2JtI2BvYnBwPiEhPT9iI2txZmU+ISxqbXdxbGd2YHdqbG1hZm9sbWRqbWQjd2xgb2JqbmZnI3drYndgbG1wZnJ2Zm1gZnA/bmZ3YiNtYm5mPiFEdmpnZiN3bCN3a2ZsdWZxdGtmb25qbWRiZGJqbXB3I3drZiNgbG1gZm13cWJ3ZmcvXHQtbWxtd2x2YGsjbGFwZnF1YndqbG1wPyxiPVx0PyxnanU9XHRlIytnbGB2bmZtdy1hbHFnZnE5IzJzeyN4ZWxtdy5wanlmOTJ3cWZid25mbXcjbGUzISNrZmpka3c+ITJubGdqZWpgYndqbG1KbWdmc2ZtZ2ZtYGZnanVqZ2ZnI2ptd2xkcWZid2ZxI3drYm1iYGtqZnVmbmZtd3BmcHdiYW9qcGtqbWRJYnViUGBxanN3ISNtZnVmcXdrZm9mcHBwamRtamVqYGJtYGZBcWxiZ2BicHdqbWQ9JW1hcHM4Pyx3Zz1gbG13YmptZnEhPVx0cHZgayNicCN3a2Yjam1lb3ZmbWBmI2xlYiNzYnF3amB2b2JxcHFgPiRrd3dzOSwsbWJ1amRid2psbSEja2JvZSNsZSN3a2YjcHZhcHdibXdqYm8jJW1hcHM4PyxnanU9Ymd1Ym13YmRmI2xlZ2pwYGx1ZnF6I2xlZXZtZ2JuZm13Ym8jbmZ3cWxzbG9qd2Jtd2tmI2xzc2xwandmISN7bm85b2JtZD4hZ2ZvamFmcWJ3Zm96Ym9qZG0+YGZtd2ZxZnVsb3Z3amxtI2xlc3FmcGZxdWJ3amxtam5zcWx1Zm5mbXdwYWZkam1tam1kI2ptSWZwdnAjQGtxanB3U3Zhb2pgYndqbG1wZ2pwYmRxZmZuZm13d2Z7dy5ib2pkbTlxLyNldm1gd2psbSsqcGpuam9icWp3amZwYWxnej0/LGt3bm89anAjYHZxcWZtd296Ym9za2JhZndqYGJvanAjcGxuZndqbmZwd3pzZj4ham5iZGYsbmJteiNsZSN3a2YjZW9sdDlramdnZm04YnViam9iYW9mI2ptZ2ZwYHFqYWYjd2tmZntqcHdmbWBmI2xlYm9vI2x1ZnEjd2tmd2tmI0ptd2ZxbWZ3XG4/dm8jYG9icHA+IWptcHdib29id2psbW1mamRrYWxxa2xsZ2JxbmZnI2VscWBmcHFmZ3Zgam1kI3drZmBsbXdqbXZmcCN3bE1sbWZ3a2ZvZnBwL3dmbnNmcWJ3dnFmcFx0XG5cbj9iI2txZmU+IWBvbHBmI3dsI3drZmZ7Ym5zb2ZwI2xlI2pwI2JhbHZ3I3drZitwZmYjYWZvbHQqLSEjamc+IXBmYnFga3NxbGVmcHBqbG1ib2pwI2J1YmpvYmFvZndrZiNsZWVqYGpib1xuXG4/LHBgcWpzdz1cdFx0XG5cbj9nanUjamc+IWJgYGZvZnFid2psbXdrcWx2ZGsjd2tmI0tib28jbGUjRWJuZmdmcGBxanN3amxtcHdxYm1wb2J3amxtcGptd2ZxZWZxZm1gZiN3enNmPiR3Znt3LHFmYGZtdyN6ZmJxcGptI3drZiN0bHFvZ3VmcXojc2xzdm9icXhhYmBoZHFsdm1nOXdxYmdqd2psbWJvI3BsbmYjbGUjd2tmI2BsbW1mYHdmZyN3bGZ7c29sandid2psbWZuZnFkZm1gZiNsZWBsbXB3and2d2psbUIjS2pwd2xxeiNsZXBqZG1qZWpgYm13I25ibXZlYmB3dnFmZ2Z7c2Zgd2J3amxtcD0/bWxwYHFqc3c9P2BibSNhZiNlbHZtZ2FmYGJ2cGYjd2tmI2ticCNtbHcjYWZmbW1mamRrYWx2cWptZHRqd2tsdncjd2tmI2JnZ2ZnI3dsI3drZlxuP29qI2BvYnBwPiFqbXB3cXZuZm13Ym9QbHVqZncjVm1qbG1iYGhtbHRvZmdkZmd0a2pgayNgYm0jYWZtYm5mI2VscSN3a2Zid3dmbXdqbG0jd2xid3dmbnN3cCN3bCNnZnVmb2xzbmZtd3BKbSNlYmB3LyN3a2Y/b2ojYG9icHA+IWJqbnNvamBid2psbXBwdmp3YmFvZiNlbHFudmBrI2xlI3drZiNgbG9sbWp5YndqbG1zcWZwamdmbXdqYm9gYm1gZm9BdmFhb2YjSm1lbHFuYndqbG1ubHB3I2xlI3drZiNqcCNnZnBgcWphZmdxZnB3I2xlI3drZiNubHFmI2xxI29mcHBqbSNQZnN3Zm5hZnFKbXdmb29qZGZtYGZwcWA+IWt3d3M5LCxzezgja2ZqZGt3OSNidWJqb2Jhb2Yjd2xuYm12ZWJgd3ZxZnFrdm5ibSNxamRrd3Bvam1oI2txZmU+ISxidWJqb2Jham9qd3pzcWxzbHF3amxtYm9sdndwamdmI3drZiNicHdxbG1sbmpgYm9rdm5ibSNhZmptZHBtYm5mI2xlI3drZiNicWYjZWx2bWcjam1icWYjYWJwZmcjbG1wbmJvb2ZxI3drYm1iI3NmcXBsbSN0a2xme3NibXBqbG0jbGVicWR2am1kI3drYndtbHQjaG1sdG0jYnBKbSN3a2YjZmJxb3pqbXdmcW5mZ2pid2ZnZnFqdWZnI2VxbG5QYGJtZ2ptYnVqYm0/LGI9PyxnanU9Dlx0YGxtcGpnZnEjd2tmYm0jZnB3am5id2Znd2tmI01id2psbWJvP2dqdSNqZz4hc2JkcWZwdm93am1kI2ptYGxubmpwcGpsbWZnYm1ib2xkbHZwI3dsYnFmI3FmcnZqcWZnLHZvPVx0PyxnanU9XHR0YnAjYWJwZmcjbG1ibWcjYWZgYm5mI2IlbWFwczglbWFwczh3ISN1Ym92Zj4hISN0YnAjYGJzd3ZxZmdtbCNubHFmI3drYm1xZnBzZmB3anVmb3pgbG13am12ZiN3bCM9Dlx0P2tmYmc9Dlx0P3RmcWYjYHFmYndmZ25scWYjZGZtZnFib2ptZWxxbmJ3amxtI3ZwZmcjZWxxI3drZmptZ2ZzZm1nZm13I3drZiNKbnNmcWpib2BsbnNsbWZtdyNsZXdsI3drZiNtbHF3a2ptYG92Z2Yjd2tmI0BsbXB3cXZgd2psbXBqZ2YjbGUjd2tmI3Rsdm9nI21sdyNhZmVscSNqbXB3Ym1gZmptdWZtd2psbSNsZW5scWYjYGxuc29me2Bsb29mYHdqdWZvemFiYGhkcWx2bWc5I3dme3cuYm9qZG05I2p3cCNscWpkam1ib2ptd2wjYmBgbHZtd3dranAjc3FsYGZwcGJtI2Z7d2ZtcGp1ZmtsdGZ1ZnEvI3drZndrZnojYnFmI21sd3FmaWZgd2ZnI3drZmBxandqYGpwbiNsZWd2cWptZCN0a2pga3NxbGFiYW96I3drZndranAjYnF3amBvZitldm1gd2psbSsqeEp3I3BrbHZvZyNhZmJtI2JkcWZmbmZtd2JgYGpnZm13Ym9vemdqZWVmcXAjZXFsbkJxYGtqd2Zgd3ZxZmFmd3dmcSNobWx0bWJxcWJtZGZuZm13cGptZW92Zm1gZiNsbWJ3d2ZtZ2ZnI3drZmpnZm13amBibyN3bHBsdndrI2xlI3drZnNicHAjd2txbHZka3tubyEjd2p3b2Y+IXRmamRrdzlhbG9nOGBxZmJ3am1kI3drZmdqcHNvYno5bWxtZnFmc29iYGZnI3drZj9qbmQjcHFgPiEsamt3d3NwOSwsdHR0LVRscW9nI1RicSNKSndmcHdqbmxtamJvcGVsdm1nI2ptI3drZnFmcnZqcWZnI3dsI2JtZyN3a2J3I3drZmFmd3RmZm0jd2tmI3RicCNnZnBqZG1mZ2BsbXBqcHdwI2xlI2BsbXBqZ2ZxYmFvenN2YW9qcGtmZyNhendrZiNvYm1kdmJkZkBsbXBmcXVid2psbWBsbXBqcHdmZyNsZXFmZWZxI3dsI3drZmFiYGgjd2wjd2tmI2BwcCEjbmZnamI+IVNmbHNvZiNlcWxuI2J1YmpvYmFvZiNsbXNxbHVmZyN3bCNhZnB2ZGRmcHdqbG1wIXRicCNobWx0bSNicHVicWpmd2pmcCNsZW9qaGZveiN3bCNhZmBsbnNxanBmZyNsZXB2c3NscXcjd2tmI2tibWdwI2xlI3drZmBsdnNvZmcjdGp3a2BsbW1mYHcjYm1nI2FscWdmcTltbG1mOHNmcWVscW5ibWBmcGFmZWxxZiNhZmptZG9id2ZxI2FmYGJuZmBib2B2b2J3amxtcGxld2ZtI2Bib29mZ3FmcGpnZm13cCNsZW5mYm1qbWQjd2tidz0/b2ojYG9icHA+IWZ1amdmbWBmI2VscWZ7c29ibWJ3amxtcGZtdWpxbG1uZm13cCE9PyxiPT8sZ2p1PXRramBrI2Jvb2x0cEptd3FsZ3Zgd2psbWdmdWZvbHNmZyNhemIjdGpnZiNxYm1kZmxtI2Fma2JvZSNsZXVib2pkbT4hd2xzIXNxam1ganNvZiNsZWJ3I3drZiN3am5mLz8sbWxwYHFqc3c9DnBiamcjd2wja2J1ZmptI3drZiNlanFwd3Rram9mI2x3a2ZxcGt6c2x3a2Z3amBib3Nram9scGxza2ZxcHNsdGZxI2xlI3drZmBsbXdiam1mZyNqbXNmcWVscW5mZyNhemptYmFqb2p3eiN3bHRmcWYjdHFqd3dmbXBzYm0jcHd6b2Y+IWptc3Z3I21ibmY+IXdrZiNydmZwd2psbWptd2ZtZ2ZnI2VscXFmaWZgd2psbSNsZWpuc29qZnAjd2tid2ptdWZtd2ZnI3drZndrZiNwd2JtZ2JxZ3RicCNzcWxhYmFvem9qbWgjYWZ3dGZmbXNxbGVmcHBscSNsZWptd2ZxYmB3amxtcGBrYm1kam1kI3drZkptZ2pibSNMYGZibSNgb2JwcD4hb2Jwd3RscWhqbWQjdGp3ayRrd3dzOSwsdHR0LXpmYnFwI2FmZWxxZldranAjdGJwI3drZnFmYHFmYndqbG1ib2Ztd2Zxam1kI3drZm5mYnB2cWZuZm13cGJtI2Z7d3FmbmZvenVib3ZmI2xlI3drZnB3YnF3I2xlI3drZlx0PyxwYHFqc3c9XHRcdGJtI2ZlZWxxdyN3bGptYHFmYnBmI3drZndsI3drZiNwbHZ3a3BzYmBqbWQ+ITMhPXB2ZWVqYGpmbXdvendrZiNGdnFsc2ZibWBsbXVmcXdmZyN3bGBvZmJxV2puZmx2d2dqZyNtbHcja2J1ZmBsbXBmcnZmbXdvemVscSN3a2YjbWZ7d2Z7d2ZtcGpsbSNsZWZgbG1sbmpgI2JtZ2Jvd2tsdmRrI3drZmJxZiNzcWxndmBmZ2JtZyN0andrI3drZmptcHZlZWpgamZtd2RqdWZtI2F6I3drZnB3YndqbWQjd2tid2Z7c2ZtZ2p3dnFmcD8scHNibT0/LGI9XHR3a2x2ZGt3I3drYndsbSN3a2YjYWJwanBgZm9vc2JnZ2ptZD5qbmJkZiNsZSN3a2ZxZnd2cW1qbWQjd2xqbWVscW5id2psbS9wZnNicWJ3ZmcjYXpicHBicHBqbWJ3ZmdwISNgbG13Zm13PiFidndrbHFqd3ojbGVtbHF3a3RmcHdmcW0/LGdqdT1cdD9nanUjIT0/LGdqdT0OXHQjI2BsbXB2b3did2psbWBsbm52bWp3eiNsZXdrZiNtYndqbG1ib2p3I3BrbHZvZyNhZnNicXdqYGpzYm13cCNib2pkbT4hb2Zld3drZiNkcWZid2Zwd3Bmb2Zgd2psbSNsZXB2c2ZxbWJ3dnFib2dmc2ZtZ2ZtdyNsbWpwI25mbXdqbG1mZ2Jvb2x0am1kI3drZnRicCNqbXVmbXdmZ2JgYGxuc2JtemptZGtqcCNzZnFwbG1ib2J1YmpvYmFvZiNid3B3dmd6I2xlI3drZmxtI3drZiNsd2tmcWZ7ZmB2d2psbSNsZUt2bmJtI1FqZGt3cHdmcW5wI2xlI3drZmJwcGxgamJ3amxtcHFmcGZicWBrI2JtZ3B2YGBmZmdmZyNhemdmZWZid2ZnI3drZmJtZyNlcWxuI3drZmF2dyN3a2Z6I2JxZmBsbm5ibWdmcSNsZXB3YndmI2xlI3drZnpmYnFwI2xlI2JkZndrZiNwd3ZneiNsZT92byNgb2JwcD4hcHNvYmBmI2ptI3drZnRrZnFmI2tmI3RicD9vaiNgb2JwcD4hZXdrZnFmI2JxZiNtbHRramBrI2FmYGJuZmtmI3N2YW9qcGtmZ2Z7c3FmcHBmZyNqbXdsI3RramBrI3drZmBsbm5qcHBqbG1mcWVsbXcudGZqZGt3OXdmcXFqd2xxeiNsZWZ7d2ZtcGpsbXAhPVFsbmJtI0Zuc2pxZmZydmJvI3dsI3drZkptI2BsbXdxYnB3L2tsdGZ1ZnEvI2JtZ2pwI3d6c2pgYm9vemJtZyNranAjdGplZitib3BsI2Bib29mZz0/dm8jYG9icHA+IWZlZWZgd2p1Zm96I2Z1bG91Zmcjam13bHBmZm4jd2wja2J1ZnRramBrI2pwI3drZndrZnFmI3RicCNtbGJtI2Z7YGZvb2Ztd2JvbyNsZSN3a2ZwZmdmcGBxamFmZyNhekptI3NxYmB3amBmL2FxbGJnYGJwd2ptZGBrYnFkZmcjdGp3a3FmZW9mYHdmZyNqbXB2YWlmYHdmZyN3bG5qb2p3YnF6I2JtZ3dsI3drZiNzbGptd2ZgbG1sbmpgYm9venBmd1dicWRmd2ptZGJxZiNiYHd2Ym9venVqYHdscXojbHVmcSsqOD8scGBxanN3PWBsbXdqbXZsdnBvenFmcnZqcWZnI2VscWZ1bG92d2psbWJxemJtI2ZlZWZgd2p1Zm1scXdrI2xlI3drZi8jdGtqYGsjdGJwI2VxbG13I2xlI3drZmxxI2x3a2ZxdGpwZnBsbmYjZWxxbiNsZWtiZyNtbHcjYWZmbWRmbWZxYndmZyNhemptZWxxbmJ3amxtLXNmcW5qd3dmZyN3bGptYG92Z2ZwI3drZmdmdWZvbHNuZm13L2Ztd2ZxZmcjam13bHdrZiNzcWZ1amx2cGBsbXBqcHdmbXdvemJxZiNobWx0bSNicHdrZiNlamZvZyNsZXdranAjd3pzZiNsZWRqdWZtI3dsI3drZndrZiN3andvZiNsZWBsbXdiam1wI3drZmptcHdibWBmcCNsZWptI3drZiNtbHF3a2d2ZiN3bCN3a2ZqcWJxZiNnZnBqZG1mZ2BscXNscWJ3amxtcHRicCN3a2J3I3drZmxtZiNsZSN3a2ZwZm5scWYjc2xzdm9icXB2YGBmZmdmZyNqbXB2c3NscXcjZXFsbmptI2dqZWVmcWZtd2dsbmptYndmZyNhemdmcGpkbWZnI2VscWx0bWZxcGtqcyNsZWJtZyNzbHBwamFvenB3Ym1nYnFnanlmZ3FmcHNsbXBmV2Z7d3RicCNqbXdmbWdmZ3FmYGZqdWZnI3drZmJwcHZuZmcjd2tid2JxZmJwI2xlI3drZnNxam5icWpveiNqbXdrZiNhYnBqcCNsZWptI3drZiNwZm1wZmJgYGx2bXdwI2VscWdmcHdxbHpmZyNhemJ3I29mYnB3I3d0bHRicCNnZmBvYnFmZ2Bsdm9nI21sdyNhZlBmYHFmd2JxeiNsZWJzc2ZicSN3bCNhZm5icWRqbS53bHM5MixdX3Aof19wKFwnLGRmKnh3a3FsdCNmfjh3a2YjcHdicXcjbGV3dGwjcGZzYnFid2ZvYm1kdmJkZiNibWd0a2wja2JnI2FmZm1sc2ZxYndqbG0jbGVnZmJ3ayNsZSN3a2ZxZmJvI212bmFmcXBcbj9vam1oI3Fmbz4hc3FsdWpnZmcjd2tmd2tmI3B3bHF6I2xlYGxuc2Z3andqbG1wZm1kb2pwayMrVkgqZm1kb2pwayMrVlAqPHA8UjxRPF88UjxXPE09bDxTPW08VjxUPW09bDxTPW08VjxUPW09bDxTPW08VjxSNWg0VTRdNEQ1ZjRFXG5BTwVHeFxiVEFcbnprXHZCbFxiUX9cYlRBXG56a1x2VW1cYlF/XGJUQVxuemtcbnBlBXV8XHRpQFx0Y1RcYlZWXG5cXH1cbnhTXHRWcAV0UwVrYFx0W1hcdFtYXHZIUlxiUHZcYlRXXGJVZVxuf2FcYlFwXHZfV1x2V3NcbnhTXHZBelxuX3kES2hqbWVscW5iYGovX21rZnFxYm5qZm13YnBmb2Zgd3EvX21qYGxnZnBgcWpzYGovX21gb2JwamVqYGJnbHBgbG1sYGpuamZtd2xzdmFvamBiYGovX21xZm9iYGpsbWJnYnBqbWVscW4vTXdqYGJxZm9iYGpsbWJnbHBnZnNicXdibmZtd2x3cWJhYmliZ2xxZnBnanFmYHdibmZtd2ZienZtd2JuamZtd2xuZnFgYmdsT2phcWZgbG13L01gd2ZtbHBrYmFqd2JgamxtZnBgdm5zb2puamZtd2xxZnB3YnZxYm13ZnBnanBzbHBqYGovX21gbG1wZmB2Zm1gamJmb2Zgd3EvX21qYGJic29qYGJgamxtZnBnZnBgbG1mYHdiZ2xqbXB3Ym9iYGovX21xZmJvanliYGovX212d2pvanliYGovX21mbWBqYG9sc2ZnamJmbWVmcW5mZ2JnZnBqbXB3cXZuZm13bHBme3NmcWpmbWBqYnBqbXB3and2YGovX21zYnF3amB2b2JxZnBwdmFgYndmZGxxamI9bjxSPFc9YDxWPFI8TDxSPW09bTxUPFQ9bDxcXDxdPFI9bj1nPF08UjxXPWA9ZDxZPFM9bDxSPW09bjxSPFA8UjxaPFk9bjxZPFg9bD1vPF88VD1pPW08Vz1vPWs8XFw8WT1tPFk8VT1rPFxcPW08Xj1tPFk8XzxYPFxcPEw8Uj1tPW08VD1jPHA8Uj1tPFY8XjxZPFg9bD1vPF88VDxZPF88Uj1sPFI8WDxcXDxePFI8Uz1sPFI9bTxYPFxcPFE8UT1nPWk8WDxSPFc8WjxRPWc8VDxQPFk8UTxRPFI8cDxSPW08VjxePWc9bD1vPF08VzxZPFU8cDxSPW08VjxePFxcPW09bj1sPFxcPFE9ZzxRPFQ9azxZPF88Uj1sPFxcPF08Uj1uPFk8WDxSPFc8WjxZPFE9bz1tPFc9bzxfPFQ9bjxZPFM8WT1sPWA8cjxYPFE8XFw8VjxSPFM8Uj1uPFI8UD1vPWw8XFw8XTxSPW49bzxcXDxTPWw8WTxXPWM8XjxSPFI8XT1lPFk8UjxYPFE8UjxfPFI9bTxePFI8WTxfPFI9bT1uPFxcPW49YDxUPFg9bD1vPF88UjxVPWg8Uj1sPW88UDxZPWk8Uj1sPFI9ZDxSPFM9bDxSPW48VDxePW09bT1nPFc8VjxcXDxWPFxcPFo8WD1nPFU8XjxXPFxcPW09bjxUPF89bD1vPFM8Uz1nPF48UDxZPW09bjxZPWw8XFw8XTxSPW48XFw9bTxWPFxcPFs8XFw8VzxTPFk9bDxePWc8VTxYPFk8VzxcXD1uPWA8WDxZPFE9YDxfPFQ8UzxZPWw8VDxSPFg8XTxUPFs8UTxZPW08Uj1tPFE8UjxePFk8UDxSPFA8WTxRPW48Vj1vPFM8VD1uPWA8WDxSPFc8WjxRPFxcPWw8XFw8UDxWPFxcPWk8UTxcXD1rPFxcPFc8UjxMPFxcPF08Uj1uPFxcPE48UjxXPWA8VjxSPW08UjxePW08WTxQPF49bjxSPWw8UjxVPFE8XFw9azxcXDxXPFxcPW08UzxUPW08UjxWPW08Vz1vPFo8XT1nPW08VD1tPW48WTxQPFM8WT1rPFxcPW48VDxRPFI8XjxSPF88UjxTPFI8UDxSPWU8VD1tPFxcPFU9bjxSPF48UzxSPWs8WTxQPW88UzxSPFA8Uj1lPWA8WDxSPFc8WjxRPFI9bT1tPWc8VzxWPFQ8XT1nPW09bj1sPFI8WDxcXDxRPFE9ZzxZPFA8UTxSPF88VDxZPFM9bDxSPFk8Vj1uPE08WTxVPWs8XFw9bTxQPFI8WDxZPFc8VD1uPFxcPFY8UjxfPFI8UjxRPFc8XFw8VTxRPF88Uj1sPFI8WDxZPF48WT1sPW08VD1jPW09bj1sPFxcPFE8WT1oPFQ8Vz1gPFA9Zz1vPWw8UjxePFE9Yz1sPFxcPFs8UT1nPWk8VD1tPFY8XFw9bj1gPFE8WTxYPFk8Vz1iPWM8UTxePFxcPWw9YzxQPFk8UT1gPWQ8WTxQPFE8UjxfPFQ9aTxYPFxcPFE8UTxSPFU8WzxRPFxcPWs8VD1uPFE8WTxXPWA8Wz1jPWg8Uj1sPW88UDxcXDxOPFk8UzxZPWw9YDxQPFk9bT1jPWo8XFw8WzxcXD1lPFQ9bj1nPHc9bz1rPWQ8VDxZXGZIRFxmSFVcZklsXGZIblxmSHlcZkhcXFxmSERcZklrXGZIaVxmSEZcZkhEXGZJa1xmSHlcZkhTXGZIQ1xmSFJcZkh5XGZIXFxcZklrXGZIblxmSGlcZkhEXGZJYVxmSENcZkh5XGZJYVxmSENcZkhSXGZIe1xmSFJcZkhrXGZITVxmSEBcZkhSXGZIXFxcZklrXGZIeVxmSFNcZkhUXGZJbFxmSEpcZkhTXGZIQ1xmSFJcZkhGXGZIVVxmSF5cZklrXGZIVFxmSFNcZkhuXGZIVVxmSEFcZkhSXGZIXFxcZkhIXGZIaVxmSEZcZkhEXGZJbFxmSFlcZkhSXGZIXlxmSWtcZkhUXGZJa1xmSFlcZkhSXGZIeVxmSFxcXGZISFxmSWtcZkhCXGZJa1xmSFxcXGZJa1xmSFVcZklnXGZIRFxmSWtcZkhUXGZIeVxmSEhcZklrXGZIQFxmSFVcZkltXGZISFxmSFRcZkhSXGZIa1xmSHNcZkhVXGZJZ1xmSHtcZkhSXGZIcFxmSFJcZkhEXGZJa1xmSEJcZkhTXGZIRFxmSHNcZkh5XGZIXFxcZkhIXGZIUlxmSHlcZkhcXFxmSERcZkhSXGZIZVxmSERcZkh5XGZJa1xmSENcZkhVXGZIUlxmSG1cZkhUXGZIQFxmSFRcZklrXGZIQVxmSFJcZkhbXGZIUlxmSGpcZkhGXGZIeVxmSWtcZkheXGZIU1xmSENcZklrXGZIWlxmSW1cZkhcXFxmSW5cZkhrXGZIVFxmSHlcZklrXGZIdFxmSG5cZkhzXGZJa1xmSEJcZklrXGZIXFxcZklsXGZIVFxmSHlcZkhIXGZIUlxmSEJcZklrXGZIXFxcZkhSXGZIXlxmSWtcZkh5XGZIXFxcZkhpXGZIS1xmSFNcZkh5XGZIaVxmSEZcZkhEXGZIUlxmSFRcZkhCXGZIUlxmSHBcZkhCXGZJbVxmSHFcZklrXGZIeVxmSFJcZkhcXFxmSE9cZkhVXGZJZ1xmSEhcZkhSXGZIeVxmSE1cZkhQXGZJbFxmSENcZkhVXGZIUlxmSG5cZkhVXGZJZ1xmSHNcZkheXGZIWlxmSEBcZklhXGZISlxmSF5cZkhTXGZIQ1xmSFJcZkhwXGZJbFxmSFlcZkhEXGZIcFxmSFJcZkhIXGZIUlxmSHlcZklkXGZIVFxmSWtcZkhqXGZIRlxmSHlcZkhSXGZIWVxmSFJcZkheXGZJbFxmSEpcZklrXGZIRFxmSWtcZkhGXGZJblxmSFxcXGZJbFxmSEZcZkhSXGZIRFxmSWxcZkhlXGZIVFxmSHlcZklrXGZIVVxmSWdcZkh7XGZJbFxmSEBcZklkXGZITFxmSHlcZkhqXGZIRlxmSHlcZklsXGZIWVxmSFxcXGZJYVxmSFtcZkh7XGZIUlxmSG5cZkhZXGZIalxmSEZcZkh5XGZJZ1xmSHBcZkhTXGZIXlxmSFJcZkhwXGZIUlxmSERcZkhSXGZIVFxmSFVcZkhCXGZISFxmSFVcZkhCXGZJa1xmSG5cZkhlXGZIRFxmSHlcZklsXGZIQ1xmSFJcZkhVXGZJblxmSEpcZkhcXFxmSWFcZkhwXGZIVFxmSW5cZkh2XGZJbFxmSEZcZkhUXGZIblxmSEpcZkhUXGZIWVxmSFJcZkheXGZIVVxmSWdcZkhEXGZIUlxmSFVcZklnXGZISFxmSWxcZkhwXGZJZFxmSFRcZklrXGZIWVxmSFJcZkhGXGZIVFxmSHBcZkhEXGZISFxmSFJcZkhEXGZJa1xmSEhcZkhSXGZIcFxmSFJcZkhcXFxmSWxcZkh0XGZIUlxmSENcZkheXGZIcFxmSFNcZkheXGZJa1xmSERcZklsXGZIdlxmSWtcZkhwXGZIUlxmSG5cZkh2XGZIRlxmSEhcZklhXGZIXFxcZkh7XGZJblxmSHtcZkheXGZIcFxmSFJcZkhIXGZJa1xmSEBcZkhSXGZIVVxmSFxcXGZIalxmSEZcZkhEXGZJa1xmSFlcZkhSXGZIVVxmSERcZkhrXGZIVFxmSHlcZkhSXGZIVFxmSW1cZkhAXGZIVVxmSFxcXGZIVVxmSERcZklrXGZIa1xmSFRcZkhUXGZJa1xmSFRcZkhVXGZIU1xmSEhcZkhAXGZITVxmSFBcZklrXGZIdFxmSHNcZkhEXGZIUlxmSEhcZkheXGZIUlxmSFpcZkhGXGZIUlxmSG5cZkh2XGZIWlxmSWFcZkhcXFxmSWxcZkhAXGZITVxmSFBcZklsXGZIVVxmSWdcZkhIXGZJa1xmSFRcZkhSXGZIZFxmSHNcZkhaXGZIUlxmSENcZkhKXGZIVFxmSHlcZkhIXGZJbFxmSHBcZkhSXGZISFxmSWxcZkhZXGZIUlxmSF5cZkhSXGZIVVxmSHBcZkhSXGZIXFxcZkhGXGZIc1xmSERcZkhSXGZIXFxcZkh6XGZIRFxmSWtcZkhUXGZITVxmSFBcZkh5XGZIQlxmSFNcZkheXGZIUlxmSGVcZkhUXGZIeVxmSWxcZkh5XGZJa1xmSFlcZkheXGZIXlxmSHtcZkhIXGZIUlxmSHpcZkhSXGZIRFxmSFJcZkhpXGZIXFxcZklhXGZISVxmSHBcZkhVXGZIUlxmSG5cZkhKXGZJa1xmSHpcZkhSXGZIRlxmSFVcZkheXGZJbFxmSERcZkhTXGZIQ1xmSEJcZkhAXGZIU1xmSERcZkhSXGZIQFxmSWRcZkhuXGZIeVxmSHlcZkhVXGZJbFxmSG5cZkh5XGZIVVxmSERcZkhSXGZISlxmSWtcZkhIXGZIUlxmSFVcZkhCXGZIXlxmSWtcZkh5XGZIUlxmSEdcZklsXGZIcFxmSEBcZkh5XGZIU1xmSEhcZkltXGZIXFxcZkhIXGZIQlxmSFJcZkhuXGZIe1xmSFlcZkhVXGZJbFxmSG5cZkhcXFxmSWdcZkhwXGZIUFxmSEJcZkhTXGZIXlxmSWxcZkhqXGZIXFxcZklnXGZIRlxmSFRcZklrXGZIRFxmSFJcZkhDXGZIUlxmSEpcZkhZXGZIXlxmSWtcZkhEXGZJa1xmSHpcZkhSXGZISFxmSFJcZkh5XGZIXFxcZklsXGZIQFxmSGVcZkhEXGZIeVxmSFJcZkhwXGZIWVxmSFJcZkhAXGZIRlxmSW5cZkhcXFxmSFJcZkhAXGZITVxmSFBcZkhSXGZIVFxmSWBcZkhKXGZIUlxmSFpcZklrXGZIQ1xmSFxcXGZIeVxmSFNcZkhDXGZJa1xmSHlcZkhVXGZIUlxmSG5cZkhpXGZIeVxmSFRcZkhcXFxmSEBcZkhEXGZIUlxmSGNcZkhZXGZIVVxmSFJcZkhuXGZIVFxmSWFcZkhJXGZIXlxmSEJcZkhTXGZIXlxmSWtcZkheXGZJa1xmSHpcZkh5XGZIWVxmSFNcZkhbXGZIQ1xmSHlcZklhXGZIXFxcZkhuXGZIVFxmSEJcZkluXGZIVVxmSElcZkhSXGZIRFxmSFI0RjRfNEY0WzVmNFU1aTRYNEs0XTVvNEU0RDVkNEs0XzRbNEU0SzVoNFk1bTRBNEU1aTVkNEs0WjVmNFU0SzVoNEI0SzRZNEU0SzVoNWk0XjVmNEM0SzVoNFU0SzVpNEU0SzVoNW80SzRGNEQ0SzVoNF00QzVkNEM0RDRdNWo0SzVpNEA0SzVoNEM1ZDVoNEU0SzVoNFU0SzVoNWk0SzVoNWk1ZDVuNFU0SzVoNFU0XTRENWY0SzVoNF80XTVmNFU0SzVoNEA1ZDRLNWg0SzVoNFxcNWs0SzRENEs1aDRBNWY0SzRFNEs1aDRBNW41ZDVuNEs1aDVvNF01ZjVpNEs1aDRVNF00SzVuNWk0QTVtNWQ0VDRFNEs1aDRHNEs1ajVmNWk0WDRLNWs0QzRFNEs1aDVpNF00TzRFNEs1aDVuNF00TjVqNEs1aDRYNEQ0SzRENEs1aDRBNWQ0SzRdNEs1aDRANEM1ZjRDNEs1aDRPNF80XTRFNEs1aDRVNWg1ZDVpNWk0QDVpNWQ0VTRFNEs1aDRdNEE1aTVqNEs1aDVqNW40SzRbNW01aDRfNFs1ZjVqNEs1aDVvNWQ1ZjRGNEs1aDRDNWo1ZjRLNEQ0XTVvNEs0RjVrNEs1aDRdNWY0SzRaNEY0QTVmNEs0RjVmNEQ0RjVkNW41ZjRGNEs1aDRPNWQ1aDVlNEs1aDRENF01ZjRDNEs1aDVvNWg0SzVpNEs1aDRdNEs0RDRbNEs1aDRYNEI0WTVmNF81ZjRLNF00SzRGNEs1aDRHNEs1aDRHNEs1aDRZNWg0SzRFNEs1aDRBNEM1ZjRHNEs1aDReNWQ0SzRdNEs1aDRCNWg1ZjRANEs1aDRANWk1ZjRVNEs1aDRVNEs1aTVrNEs1aDRANWk0SzVoNEs1aDRfNEs0VTRFNWk0WDRLNWs0QzVrNEs1aDRdNEo1ZjRfNEs1aDRDNEI1ZDVoNEs1aDVtNWo1ZjRFNEs1aDVvNEY0SzRENEs1aDRDNWQ0XTVmNEs1aDRDNF01ZDRfNEs0XzRGNFY0XTVuNEY0WTRLNWk1ZjVpNEs1aDRENWo0SzRGNEs1aDRVNFQ1ZjVpZm13ZnF3YmptbmZtd3ZtZ2ZxcHdibWdqbWQjPiNldm1gd2psbSsqLWlzZCEjdGpnd2s+IWBsbWVqZHZxYndqbG0tc21kISN0amd3az4hP2FsZ3ojYG9icHA+IU5id2stcWJtZ2xuKypgbG13Zm5zbHFicXojVm1qd2ZnI1B3YndmcGBqcWB2bnB3Ym1gZnAtYnNzZm1nQGtqb2crbHFkYm1qeWJ3amxtcD9wc2JtI2BvYnBwPiEhPT9qbmQjcHFgPiEsZ2pwd2ptZHZqcGtmZ3drbHZwYm1ncCNsZSNgbG5udm1qYGJ3amxtYG9mYnEhPT8sZ2p1PWptdWZwd2pkYndqbG1lYnVqYGxtLWpgbCEjbmJxZGptLnFqZGt3OWFicGZnI2xtI3drZiNOYnBwYmBrdnBmd3dwd2Jhb2YjYWxxZ2ZxPmptd2ZxbWJ3amxtYm9ib3BsI2htbHRtI2Jwc3FsbXZtYGpid2psbWFiYGhkcWx2bWc5IGVzYmdnam1kLm9mZXc5RWxxI2Z7Ym5zb2YvI25qcGBmb29ibWZsdnAlb3c4LG5id2slZHc4c3B6YGtsb2xkamBib2ptI3NicXdqYHZvYnFmYnFgayEjd3pzZj4hZWxxbiNuZndrbGc+IWJwI2xzc2xwZmcjd2xQdnNxZm5mI0BsdnF3bGBgYnBqbG1ib296I0JnZ2p3amxtYm9vei9NbHF3ayNCbmZxamBic3s4YWJgaGRxbHZtZ2xzc2xxd3ZtandqZnBGbXdmcXdiam1uZm13LXdsT2x0ZnFAYnBmK25ibXZlYmB3dnFqbWRzcWxlZnBwamxtYm8jYGxuYWptZmcjdGp3a0VscSNqbXB3Ym1gZi9gbG1wanB3am1kI2xlISNuYntvZm1kd2s+IXFmd3ZxbSNlYm9wZjhgbG1wYGpsdnBtZnBwTmZnandmcXFibWZibWZ7d3FibHFnam1icXpicHBicHBqbWJ3amxtcHZhcGZydmZtd296I2F2d3dsbSN3enNmPiF3a2YjbXZuYWZxI2xld2tmI2xxamRqbWJvI2BsbnNxZmtmbXBqdWZxZmVmcXAjd2wjd2tmPyx2bz1cdD8sZ2p1PVx0c2tqb2xwbHNramBib29sYGJ3amxtLWtxZmV0YnAjc3Zhb2pwa2ZnUGJtI0VxYm1ganBgbCtldm1gd2psbSsqeFx0P2dqdSNqZz4hbmJqbXBsc2tqcHdqYGJ3ZmduYndrZm5id2pgYm8jLGtmYmc9Dlx0P2FsZ3pwdmRkZnB3cCN3a2J3Z2xgdm5mbXdid2psbWBsbWBmbXdxYndqbG1xZm9id2psbXBranNwbmJ6I2tidWYjYWZmbStlbHEjZntibnNvZi9Xa2pwI2Jxd2pgb2Yjam0jcGxuZiNgYnBmcHNicXdwI2xlI3drZiNnZmVqbWp3amxtI2xlRHFmYncjQXFqd2JqbSNgZm9vc2JnZ2ptZD5mcnZqdWJvZm13I3dsc29iYGZrbG9nZnE+ITgjZWxtdy5wanlmOSNpdnB3amVqYGJ3amxtYWZvamZ1Zmcjd2tid3B2ZWVmcWZnI2VxbG5id3dmbnN3Zmcjd2wjb2ZiZ2ZxI2xlI3drZmBxanN3ISNwcWA+ISwrZXZtYHdqbG0rKiN4YnFmI2J1YmpvYmFvZlx0XG4/b2ptaCNxZm8+ISNwcWA+JGt3d3M5LCxqbXdmcWZwd2ZnI2ptYGxtdWZtd2psbWJvIyEjYm93PiEhIyw9PyxicWYjZGZtZnFib296a2JwI2JvcGwjYWZmbW5scHcjc2xzdm9icSNgbHFxZnBzbG1nam1kYHFmZ2p3ZmcjdGp3a3d6b2Y+IWFscWdmcTk/LGI9Pyxwc2JtPT8sLWRqZSEjdGpnd2s+IT9qZXFibmYjcHFgPiF3YmFvZiNgb2JwcD4ham1vam1mLmFvbGBoOGJgYGxxZ2ptZCN3bCN3bGRmd2tmcSN0andrYnNzcWx7am5id2ZvenNicW9qYm5mbXdicXpubHFmI2JtZyNubHFmZ2pwc29iejltbG1mOHdxYmdqd2psbWJvb3pzcWZnbG5qbWJtd296JW1hcHM4fyVtYXBzOCVtYXBzOD8scHNibT0jYGZvb3BzYmBqbWQ+P2ptc3Z3I21ibmY+IWxxISNgbG13Zm13PiFgbG13cWx1ZnFwamJvc3Fsc2Zxd3o+IWxkOSx7LnBrbGBodGJ1Zi5nZm5sbXB3cWJ3amxtcHZxcWx2bWdmZyNhek1mdWZxd2tmb2ZwcC90YnAjd2tmI2VqcXB3YGxtcGpnZnFiYW9mI0Jvd2tsdmRrI3drZiNgbG9vYmFscWJ3amxtcGtsdm9nI21sdyNhZnNxbHNscXdqbG0jbGU/cHNibSNwd3pvZj4haG1sdG0jYnAjd2tmI3BrbHF3b3ojYmV3ZnFlbHEjam1wd2JtYGYvZ2ZwYHFqYWZnI2JwIyxrZmJnPVx0P2FsZ3ojcHdicXdqbWQjdGp3a2ptYHFmYnBqbWRveiN3a2YjZWJgdyN3a2J3Z2pwYHZwcGpsbSNsZW5qZ2dvZiNsZSN3a2ZibSNqbWdqdWpndmJvZ2plZWpgdm93I3dsI3Nsam13I2xlI3VqZnRrbG5scGZ7dmJvand6YmBgZnN3Ym1gZiNsZT8scHNibT0/LGdqdT1uYm12ZWJgd3ZxZnFwbHFqZGptI2xlI3drZmBsbm5sbW96I3ZwZmdqbnNscXdibWBmI2xlZ2ZtbG5qbWJ3amxtcGFiYGhkcWx2bWc5IyBvZm1kd2sjbGUjd2tmZ2Z3ZnFuam1id2psbWIjcGpkbWplamBibXchI2FscWdmcT4hMyE9cWZ1bG92d2psbWJxenNxam1ganNvZnAjbGVqcCNgbG1wamdmcWZndGJwI2dmdWZvbHNmZ0ptZ2wuRnZxbHNmYm11dm9tZnFiYW9mI3dsc3Fsc2xtZm13cCNsZWJxZiNwbG5md2puZnBgb2xwZnEjd2wjd2tmTWZ0I1pscWgjQGp3eiNtYm5mPiFwZmJxYGtid3dxamF2d2ZnI3dsYGx2cXBmI2xlI3drZm5id2tmbmJ3amBqYm1heiN3a2YjZm1nI2xlYncjd2tmI2ZtZyNsZSEjYWxxZ2ZxPiEzISN3ZmBrbWxvbGRqYGJvLXFmbmx1ZkBvYnBwK2FxYm1gayNsZSN3a2ZmdWpnZm1gZiN3a2J3IlhmbWdqZV4uLj0OXHRKbXB3and2d2YjbGUjam13bCNiI3BqbWRvZnFmcHNmYHdqdWZvei1ibWcjd2tmcWZlbHFmc3Fsc2Zxd2pmcCNsZWpwI29sYGJ3Zmcjam1wbG5mI2xlI3RramBrV2tmcWYjanAjYm9wbGBsbXdqbXZmZyN3bCNic3NmYnFibWBmI2xlIyVibnM4bWdicGs4I2dmcGBxamFmcCN3a2ZgbG1wamdmcWJ3amxtYnZ3a2xxI2xlI3drZmptZ2ZzZm1nZm13b3pmcnZqc3NmZyN0andrZ2xmcCNtbHcja2J1Zj8sYj0/YiNrcWZlPiFgbG1ldnBmZyN0andrP29qbWgja3FmZT4hLGJ3I3drZiNiZGYjbGVic3NmYnEjam0jd2tmV2tmcGYjam1gb3ZnZnFmZGJxZ29mcHAjbGVgbHZvZyNhZiN2cGZnI3B3em9mPiVydmx3OHBmdWZxYm8jd2puZnBxZnNxZnBmbXcjd2tmYWxnej1cdD8sa3dubz13a2x2ZGt3I3dsI2Fmc2xzdm9id2psbSNsZXNscHBqYWpvandqZnBzZnFgZm13YmRmI2xlYmBgZnBwI3dsI3drZmJtI2J3d2Zuc3cjd2xzcWxndmB3amxtI2xlaXJ2ZnF6LGlydmZxend0bCNnamVlZnFmbXdhZm9sbWQjd2wjd2tmZnB3YmFvanBrbmZtd3Fmc29iYGptZCN3a2ZnZnBgcWpzd2psbSEjZ2Z3ZnFuam1mI3drZmJ1YmpvYmFvZiNlbHFCYGBscWdqbWQjd2wjdGpnZiNxYm1kZiNsZVxuP2dqdSNgb2JwcD4hbmxxZiNgbG5ubG1vemxxZGJtanBid2psbXBldm1gd2psbWJvand6dGJwI2BsbnNvZndmZyMlYm5zOG5nYnBrOCNzYnF3amBqc2J3amxtd2tmI2BrYnFiYHdmcWJtI2JnZ2p3amxtYm9ic3NmYnFwI3dsI2FmZWJgdyN3a2J3I3drZmJtI2Z7Ym5zb2YjbGVwamRtamVqYGJtd296bG1ubHZwZmx1ZnE+IWFmYGJ2cGYjd2tmeiNicHptYCM+I3dxdmY4c3FsYW9mbnAjdGp3a3BmZm5wI3dsI2tidWZ3a2YjcWZwdm93I2xlI3BxYD4ha3d3czksLGVibmpvamJxI3Rqd2tzbHBwZnBwamxtI2xlZXZtYHdqbG0jKyojeHdsbGgjc29iYGYjam1ibWcjcGxuZndqbmZwcHZhcHdibXdqYm9vej9wc2JtPT8scHNibT1qcCNsZXdmbSN2cGZnam0jYm0jYnd3Zm5zd2RxZmJ3I2dmYm8jbGVGbXVqcWxtbmZtd2JvcHZgYGZwcGV2b296I3VqcXd2Ym9veiNib28xM3drI2BmbXd2cXovc3FsZWZwcGpsbWJvcG1mYGZwcGJxeiN3bCNnZndmcW5qbWZnI2F6YGxuc2J3amFqb2p3emFmYGJ2cGYjancjanBHamB3amxtYnF6I2xlbmxnamVqYGJ3amxtcFdrZiNlbG9vbHRqbWRuYnojcWZlZnEjd2w5QGxtcGZydmZtd296L0ptd2ZxbWJ3amxtYm9ib3drbHZkayNwbG5md2tidyN0bHZvZyNhZnRscW9nJHAjZWpxcHdgb2JwcGplamZnI2JwYWx3d2xuI2xlI3drZitzYnF3amB2b2Jxb3pib2pkbT4hb2ZldyEjbmxwdyNgbG5ubG1vemFicGpwI2VscSN3a2ZlbHZtZ2J3amxtI2xlYGxtd3FqYXZ3amxtcHNsc3ZvYnFqd3ojbGVgZm13ZnEjbGUjd2tmd2wjcWZndmBmI3drZml2cWpwZ2pgd2psbXBic3NxbHtqbmJ3amxtI2xtbmx2cGZsdnc+IU1mdCNXZnB3Ym5mbXdgbG9vZmB3amxtI2xlPyxwc2JtPT8sYj0/LGptI3drZiNWbWp3Zmdlam9uI2dqcWZgd2xxLnB3cWpgdy1nd2chPWticCNhZmZtI3ZwZmdxZnd2cW0jd2wjd2tmYm93a2x2ZGsjd2tqcGBrYm1kZiNqbSN3a2ZwZnVmcWJvI2x3a2ZxYXZ3I3drZnFmI2JxZnZtc3FmYGZnZm13ZmdqcCNwam5qb2JxI3dsZnBzZmBqYm9veiNqbXRmamRrdzkjYWxvZzhqcCNgYm9vZmcjd2tmYGxuc3Z3YndqbG1ib2ptZ2pgYndmI3drYndxZnB3cWpgd2ZnI3dsXG4/bmZ3YiNtYm5mPiFicWYjd3pzamBib296YGxtZW9qYHcjdGp3a0tsdGZ1ZnEvI3drZiNCbSNme2Juc29mI2xlYGxuc2JxZmcjdGp3a3J2Ym13andqZnAjbGVxYndrZnEjd2tibSNiYGxtcHdmb29id2psbW1mYGZwcGJxeiNlbHFxZnNscXdmZyN3a2J3cHNmYGplamBid2psbXNsb2p3amBibyNibWclbWFwczglbWFwczg/cWZlZnFmbWBmcCN3bHdrZiNwYm5mI3pmYnFEbHVmcW1uZm13I2xlZGZtZnFid2psbSNsZWtidWYjbWx3I2FmZm1wZnVmcWJvI3pmYnFwYGxubmp3bmZtdyN3bFxuXG4/dm8jYG9icHA+IXVqcHZib2p5YndqbG0yOndrI2BmbXd2cXovc3FiYHdqd2psbWZxcHdrYncja2YjdGx2b2dibWcjYGxtd2ptdmZnbGBgdnNid2psbSNsZWpwI2dmZWptZmcjYnBgZm13cWYjbGUjd2tmd2tmI2JubHZtdyNsZT0/Z2p1I3B3em9mPiFmcnZqdWJvZm13I2xlZ2plZWZxZm13amJ3ZmFxbHZka3cjYmFsdnduYnFkam0ub2ZldzkjYnZ3bG5id2pgYm9vendrbHZka3cjbGUjYnBQbG5mI2xlI3drZnBmXHQ/Z2p1I2BvYnBwPiFqbXN2dyNgb2JwcD4hcWZzb2JgZmcjdGp3a2pwI2xtZiNsZSN3a2ZmZ3ZgYndqbG0jYm1nam1lb3ZmbWBmZyNhenFmc3Z3YndqbG0jYnBcdD9uZndiI21ibmY+IWJgYGxubmxnYndqbG0/LGdqdT1cdD8sZ2p1PW9icWRmI3NicXcjbGVKbXB3and2d2YjZWxxd2tmI3BsLmBib29mZyNiZGJqbXB3I3drZiNKbSN3a2pwI2BicGYvdGJwI2Jzc2xqbXdmZ2BvYmpuZmcjd2wjYWZLbHRmdWZxLyN3a2pwR2ZzYnF3bmZtdyNsZXdrZiNxZm5iam1qbWRmZWVmYHcjbG0jd2tmc2Jxd2pgdm9icW96I2dmYm8jdGp3ayN3a2ZcdD9nanUjcHd6b2Y+IWJvbmxwdyNib3RienBicWYjYHZxcWZtd296ZntzcWZwcGpsbSNsZXNram9scGxza3ojbGVlbHEjbmxxZiN3a2JtYGp1am9qeWJ3amxtcGxtI3drZiNqcG9ibWdwZm9mYHdmZ0ptZ2Z7YGJtI3FmcHZvdyNqbSEjdWJvdmY+ISEjLD13a2YjcHdxdmB3dnFmIyw9PyxiPT8sZ2p1PU5ibXojbGUjd2tmcGZgYnZwZmcjYXojd2tmbGUjd2tmI1ZtandmZ3BzYm0jYG9icHA+IW5gYm0jYWYjd3FiYGZnanAjcWZvYndmZyN3bGFmYGJuZiNsbWYjbGVqcCNlcWZydmZtd296b2p1am1kI2ptI3drZndrZmxxZndqYGJvb3pFbG9vbHRqbWQjd2tmUWZ1bG92d2psbWJxemRsdWZxbW5mbXcjam1qcCNnZndmcW5qbWZnd2tmI3Nsb2p3amBib2ptd3FsZ3ZgZmcjam1wdmVlamBqZm13I3dsZ2ZwYHFqc3dqbG0hPXBrbHF3I3B3bHFqZnBwZnNicWJ3amxtI2xlYnAjd2wjdGtmd2tmcWhtbHRtI2VscSNqd3B0YnAjam1qd2pib296Z2pwc29iejlhb2xgaGpwI2JtI2Z7Ym5zb2Z3a2Yjc3FqbWBqc2JvYGxtcGpwd3AjbGUjYnFmYGxkbWp5ZmcjYnAsYWxnej0/LGt3bm89YiNwdmFwd2Jtd2pib3FmYGxtcHdxdmB3ZmdrZmJnI2xlI3B3YndmcWZwanB3Ym1gZiN3bHZtZ2ZxZHFiZ3Zid2ZXa2ZxZiNicWYjd3RsZHFidWp3YndqbG1ib2JxZiNnZnBgcWphZmdqbXdmbXdqbG1ib296cGZxdWZnI2JwI3drZmBvYnBwPiFrZmJnZnFsc3NscGp3amxtI3dsZXZtZ2JuZm13Ym9vemdsbmptYndmZyN3a2ZibWcjd2tmI2x3a2ZxYm9vamJtYGYjdGp3a3RicCNlbHFgZmcjd2xxZnBzZmB3anVmb3ovYm1nI3Nsb2p3amBib2ptI3B2c3NscXcjbGVzZmxzb2Yjam0jd2tmMTN3ayNgZm13dnF6LWJtZyNzdmFvanBrZmdvbGJnQGticXdhZmJ3d2wjdm1nZnFwd2JtZ25mbmFmcSNwd2J3ZnBmbXVqcWxtbmZtd2JvZWpxcHcja2JvZSNsZWBsdm13cWpmcCNibWdicWBrandmYHd2cWJvYWYjYGxtcGpnZnFmZ2BrYnFiYHdmcWp5Zmdgb2ZicUptd2ZxdWJvYnZ3a2xxandid2p1ZkVmZ2ZxYndqbG0jbGV0YnAjcHZgYGZmZ2ZnYm1nI3drZnFmI2JxZmIjYGxtcGZydmZtYGZ3a2YjU3FmcGpnZm13Ym9wbCNqbWBvdmdmZ2VxZmYjcGxld3RicWZwdmBgZnBwamxtI2xlZ2Z1Zm9sc2ZnI3drZnRicCNnZnB3cWx6ZmdidGJ6I2VxbG4jd2tmOFx0PyxwYHFqc3c9XHQ/Ym93a2x2ZGsjd2tmemVsb29sdGZnI2F6I2JubHFmI3NsdGZxZXZvcWZwdm93Zmcjam0jYlZtanVmcXBqd3ojbGVLbHRmdWZxLyNuYm16d2tmI3NxZnBqZ2Ztd0tsdGZ1ZnEvI3BsbmZqcCN3a2x2ZGt3I3dsdm13am8jd2tmI2ZtZ3RicCNibW1sdm1gZmdicWYjam5zbHF3Ym13Ym9wbCNqbWBvdmdmcD0/am1zdncjd3pzZj53a2YjYGZtd2ZxI2xlI0dMI01MVyNCT1dGUXZwZmcjd2wjcWZlZnF3a2ZuZnAsPHBscXc+d2tidyNrYmcjYWZmbXdrZiNhYnBqcCNlbHFrYnAjZ2Z1Zm9sc2Znam0jd2tmI3B2bm5mcWBsbnNicWJ3anVmb3pnZnBgcWphZmcjd2tmcHZgayNicCN3a2xwZndrZiNxZnB2b3dqbWRqcCNqbnNscHBqYW9mdWJxamx2cCNsd2tmcVBsdndrI0JlcWpgYm1rYnVmI3drZiNwYm5mZmVlZmB3anVmbWZwcGptI3RramBrI2BicGY4I3dme3cuYm9qZG05cHdxdmB3dnFmI2JtZzgjYWJgaGRxbHZtZzlxZmRicWdqbWQjd2tmcHZzc2xxd2ZnI3drZmpwI2JvcGwjaG1sdG1wd3pvZj4hbmJxZGptam1gb3Znam1kI3drZmFia2JwYiNOZm9ienZtbHFwaCNhbGhuL0lvbWxxcGgjbXptbHFwaHBvbHVmbSlNKGFqbWJqbXdmcW1iYGpsbWJvYGJvamVqYGJgai9fbWBsbnZtamBiYGovX21gbG1wd3F2YGBqL19tIT0/Z2p1I2BvYnBwPiFnanBibmFqZHZid2psbUdsbmJqbU1ibmYkLyMkYmduam1qcHdxYndqbG1wam52b3dibWZsdnBvendxYm1wc2xxd2J3amxtSm13ZnFtYndqbG1ibyNuYnFkam0uYWx3d2xuOXFmcHNsbXBqYWpvand6PyJYZm1namVeLi49XHQ/LD0/bmZ3YiNtYm5mPiFqbnNvZm5mbXdid2psbWptZXFicHdxdmB3dnFmcWZzcWZwZm13YndqbG1hbHFnZnEuYWx3d2xuOT8sa2ZiZz1cdD9hbGd6PT5rd3dzJjBCJjFFJjFFP2VscW4jbmZ3a2xnPiFuZndrbGc+IXNscHchIyxlYnVqYGxtLWpgbCEjfio4XHQ/LHBgcWpzdz1cdC1wZndCd3dxamF2d2YrQmduam1qcHdxYndqbG0+I21mdCNCcXFieisqOD8iWGZtZ2plXi4uPQ5cdGdqcHNvYno5YW9sYGg4Vm1lbHF3dm1id2Zvei8hPSVtYXBzOD8sZ2p1PSxlYnVqYGxtLWpgbCE9PiRwd3pvZnBrZmZ3JCNqZ2Ztd2plamBid2psbS8jZWxxI2Z7Ym5zb2YvP29qPT9iI2txZmU+ISxibSNib3dmcW1id2p1ZmJwI2IjcWZwdm93I2xlc3chPT8scGBxanN3PVx0d3pzZj4hcHZhbmp3ISNcdCtldm1gd2psbSsqI3hxZmBsbm5mbWdid2psbWVscW4jYmB3amxtPiEsd3FibXBlbHFuYndqbG1xZmBsbXB3cXZgd2psbS1wd3pvZi1nanBzb2J6I0JgYGxxZ2ptZCN3bCNramdnZm0hI21ibmY+IWJvbG1kI3Rqd2sjd2tmZ2xgdm5mbXctYWxnei1ic3NxbHtqbmJ3Zm96I0Bsbm52bWpgYndqbG1wc2xwdyEjYmB3amxtPiFuZmJtam1kIyVydmx3OC4uPyJYZm1namVeLi49U3FqbmYjTmptanB3ZnFga2JxYmB3ZnFqcHdqYD8sYj0jP2IjYG9icHA+d2tmI2tqcHdscXojbGUjbG1ubHZwZmx1ZnE+IXdrZiNkbHVmcW1uZm13a3FmZT4ha3d3c3A5LCx0YnAjbHFqZGptYm9venRicCNqbXdxbGd2YGZnYG9icHBqZWpgYndqbG1xZnNxZnBmbXdid2p1ZmJxZiNgbG1wamdmcWZnPyJYZm1namVeLi49XHRcdGdmc2ZtZ3AjbG0jd2tmVm1qdWZxcGp3eiNsZSNqbSNgbG13cWJwdyN3bCNzb2JgZmtsb2dmcT4ham0jd2tmI2BicGYjbGVqbXdmcW1id2psbWJvI2BsbXB3and2d2psbWJvcHd6b2Y+IWFscWdmcS45I2V2bWB3amxtKyojeEFmYGJ2cGYjbGUjd2tmLnB3cWpgdy1nd2chPVx0P3diYW9mI2BvYnBwPiFiYGBsbnNibWpmZyNhemJgYGx2bXcjbGUjd2tmP3BgcWpzdyNwcWA+ISxtYnd2cWYjbGUjd2tmI3drZiNzZmxzb2Yjam0jam0jYmdnandqbG0jd2xwKjgjaXAtamcjPiNqZyEjdGpnd2s+ITIzMyYhcWZkYnFnam1kI3drZiNRbG5ibSNAYndrbG9qYGJtI2ptZ2ZzZm1nZm13ZWxvb2x0am1kI3drZiMtZGplISN0amd3az4hMndrZiNlbG9vbHRqbWQjZ2pwYHFqbmptYndqbG1icWBrYmZsb2xkamBib3Nxam5mI25qbWpwd2ZxLWlwIT0/LHBgcWpzdz1gbG5ham1id2psbSNsZSNuYnFkam10amd3az4hYHFmYndmRm9mbmZtdyt0LWJ3d2Jga0Z1Zm13Kz8sYj0/LHdnPT8sd3E9cHFgPiFrd3dzcDksLGJKbSNzYnF3amB2b2JxLyNib2pkbT4hb2ZldyEjQHlmYGsjUWZzdmFvamBWbWp3ZmcjSGptZGdsbmBscXFmcHNsbWdmbWBmYGxtYG92Z2ZnI3drYncta3dubyEjd2p3b2Y+IStldm1gd2psbSMrKiN4YGxuZnAjZXFsbiN3a2Zic3NvamBid2psbSNsZT9wc2JtI2BvYnBwPiFwYWZvamZ1Zmcjd2wjYWZmbmZtdyskcGBxanN3JD8sYj1cdD8sb2o9XHQ/b2p1ZnF6I2dqZWVmcWZtdz0/cHNibSNgb2JwcD4hbHN3amxtI3Vib3ZmPiErYm9wbCNobWx0bSNicFxuP29qPT9iI2txZmU+IT0/am1zdncjbWJuZj4hcGZzYnFid2ZnI2VxbG5xZmVmcXFmZyN3bCNicCN1Ym9qZG0+IXdscyE9ZWx2bWdmcSNsZSN3a2Zid3dmbnN3am1kI3dsI2BicWFsbSNnamx7amdmXHRcdD9nanUjYG9icHA+IWBvYnBwPiFwZmJxYGsuLGFsZ3o9XHQ/LGt3bm89bHNzbHF3dm1qd3ojd2xgbG5udm1qYGJ3amxtcD8sa2ZiZz0OXHQ/YWxneiNwd3pvZj4hdGpnd2s5V2pcclZTbWQjVWpccldrd2BrYm1kZnAjam0jd2tmYWxxZ2ZxLmBsb2xxOSAzISNhbHFnZnE+ITMhIz8scHNibT0/LGdqdT0/dGJwI2dqcGBsdWZxZmchI3d6c2Y+IXdme3chIyo4XHQ/LHBgcWpzdz1cdFx0R2ZzYnF3bmZtdyNsZSNmYGBvZnBqYnB3amBib3drZnFmI2ticCNhZmZtcWZwdm93am1kI2VxbG4/LGFsZ3o9Pyxrd25vPWticCNtZnVmcSNhZmZtd2tmI2VqcXB3I3dqbmZqbSNxZnBzbG1wZiN3bGJ2d2xuYndqYGJvb3ojPyxnanU9XHRcdD9nanUjanRicCNgbG1wamdmcWZnc2ZxYGZtdyNsZSN3a2YhIyw9PyxiPT8sZ2p1PWBsb29mYHdqbG0jbGUjZ2ZwYGZtZ2ZnI2VxbG5wZmB3amxtI2xlI3drZmJgYGZzdy5ga2JxcGZ3d2wjYWYjYGxtZXZwZmduZm5hZnEjbGUjd2tmI3NiZ2dqbWQucWpka3c5d3FibXBvYndqbG0jbGVqbXdmcXNxZndid2psbSNrcWZlPiRrd3dzOSwsdGtmd2tmcSNscSNtbHdXa2ZxZiNicWYjYm9wbHdrZnFmI2JxZiNuYm16YiNwbmJvbyNtdm5hZnFsd2tmcSNzYnF3cCNsZWpuc2xwcGphb2Yjd2wjI2BvYnBwPiFhdnd3bG1vbGBid2ZnI2ptI3drZi0jS2x0ZnVmcS8jd2tmYm1nI2Z1Zm13dmJvb3pCdyN3a2YjZm1nI2xlI2FmYGJ2cGYjbGUjandwcWZzcWZwZm13cCN3a2Y/ZWxxbiNiYHdqbG0+ISNuZndrbGc+IXNscHchancjanAjc2xwcGphb2ZubHFmI29qaGZveiN3bGJtI2ptYHFmYnBmI2pta2J1ZiNib3BsI2FmZm1gbHFxZnBzbG1ncCN3bGJtbWx2bWBmZyN3a2J3Ym9qZG0+IXFqZGt3IT1uYm16I2Bsdm13cWpmcGVscSNuYm16I3pmYnFwZmJxb2pmcHcjaG1sdG1hZmBidnBmI2p3I3RicHN3IT0/LHBgcWpzdz0OI3Vib2pkbT4hd2xzISNqbWtiYWp3Ym13cCNsZWVsb29sdGptZCN6ZmJxDlx0P2dqdSNgb2JwcD4hbmpvb2psbSNzZmxzb2ZgbG13cWx1ZnFwamJvI2BsbWBmcW1qbWQjd2tmYnFkdmYjd2tidyN3a2ZkbHVmcW1uZm13I2JtZ2IjcWZlZnFmbWBmI3dsd3FibXBlZnFxZmcjd2xnZnBgcWpham1kI3drZiNwd3pvZj4hYGxvbHE5Ym93a2x2ZGsjd2tmcWZhZnB3I2htbHRtI2VscXB2YW5qdyEjbWJuZj4hbnZvd2pzb2pgYndqbG1ubHFmI3drYm0jbG1mI3FmYGxkbWp3amxtI2xlQGx2bWBqbyNsZSN3a2ZmZ2p3amxtI2xlI3drZiMjP25md2IjbWJuZj4hRm13ZnF3YmptbmZtdyNidGJ6I2VxbG4jd2tmIzhuYnFkam0ucWpka3c5Yncjd2tmI3dqbmYjbGVqbXVmcHdqZGJ3amxtcGBsbW1mYHdmZyN0andrYm1nI25ibXojbHdrZnFib3drbHZkayNqdyNqcGFmZGptbWptZCN0andrIz9wc2JtI2BvYnBwPiFnZnBgZm1nYm13cCNsZT9wc2JtI2BvYnBwPiFqI2JvamRtPiFxamRrdyE/LGtmYmc9XHQ/YWxneiNicHNmYHdwI2xlI3drZmticCNwam1gZiNhZmZtRnZxbHNmYm0jVm1qbG1xZm5qbWpwYGZtdyNsZW5scWYjZ2plZWpgdm93VWpgZiNTcWZwamdmbXdgbG5zbHBqd2psbSNsZXNicHBmZyN3a3FsdmRrbmxxZiNqbnNscXdibXdlbG13LnBqeWY5MjJze2Z7c29ibWJ3amxtI2xld2tmI2BsbWBmc3cjbGV0cWp3d2ZtI2ptI3drZlxuP3BzYm0jYG9icHA+IWpwI2xtZiNsZSN3a2YjcWZwZm5hb2JtYGYjd2xsbSN3a2YjZHFsdm1ncHRramBrI2BsbXdiam1wam1gb3Znam1kI3drZiNnZmVqbWZnI2F6I3drZnN2YW9qYGJ3amxtI2xlbmZibXAjd2tidyN3a2ZsdndwamdmI2xlI3drZnB2c3NscXcjbGUjd2tmP2ptc3Z3I2BvYnBwPiE/cHNibSNgb2JwcD4hdytOYndrLXFibWdsbisqbmxwdyNzcWxuam1mbXdnZnBgcWpzd2psbSNsZUBsbXB3Ym13am1sc29mdGZxZiNzdmFvanBrZmc/Z2p1I2BvYnBwPiFwZmJzc2ZicXAjam0jd2tmMiEja2ZqZGt3PiEyISNubHB3I2puc2xxd2Jtd3RramBrI2ptYG92Z2ZwdGtqYGsja2JnI2FmZm1nZnB3cXZgd2psbSNsZXdrZiNzbHN2b2J3amxtXHRcbj9nanUjYG9icHA+IXNscHBqYWpvand6I2xlcGxuZndqbmZwI3ZwZmdic3NmYnEjd2wja2J1ZnB2YGBmcHAjbGUjd2tmam13Zm1nZmcjd2wjYWZzcWZwZm13I2ptI3drZnB3em9mPiFgb2ZicTlhDlx0PyxwYHFqc3c9Dlx0P3RicCNlbHZtZ2ZnI2ptam13ZnF1amZ0I3Rqd2tcXGpnISNgbG13Zm13PiFgYnNqd2JvI2xlI3drZg5cdD9vam1oI3Fmbz4hcHFmb2ZicGYjbGUjd2tmc2xqbXcjbHZ3I3drYnd7Tk9Ld3dzUWZydmZwd2JtZyNwdmFwZnJ2Zm13cGZgbG1nI29icWRmcHd1ZnF6I2puc2xxd2Jtd3BzZmBqZWpgYndqbG1wcHZxZWJgZiNsZSN3a2Zic3NvamZnI3dsI3drZmVscWZqZG0jc2xvamB6XFxwZndHbG5iam1NYm5mZnB3YmFvanBrZmcjam1qcCNhZm9qZnVmZyN3bEptI2JnZ2p3amxtI3dsbmZibWptZCNsZSN3a2ZqcCNtYm5mZyNiZXdmcXdsI3NxbHdmYHcjd2tmanAjcWZzcWZwZm13ZmdHZmBvYnFid2psbSNsZW5scWYjZmVlamBqZm13QG9icHBqZWpgYndqbG1sd2tmcSNlbHFucCNsZWtmI3Fmd3ZxbWZnI3dsP3BzYm0jYG9icHA+IWBzZnFlbHFuYm1gZiNsZStldm1gd2psbSsqI3gOamUjYm1nI2xtb3ojamVxZmRqbG1wI2xlI3drZm9mYmdqbWQjd2wjd2tmcWZvYndqbG1wI3Rqd2tWbWp3ZmcjTWJ3amxtcHB3em9mPiFrZmpka3c5bHdrZnEjd2tibSN3a2Z6c2YhI2BsbXdmbXc+IUJwcGxgamJ3amxtI2xlXHQ/LGtmYmc9XHQ/YWxnem9sYGJ3ZmcjbG0jd2tmanAjcWZlZnFxZmcjd2wram1gb3Znam1kI3drZmBsbWBmbXdxYndqbG1wd2tmI2ptZ2p1amd2Ym9ibmxtZCN3a2Yjbmxwd3drYm0jYm16I2x3a2ZxLD1cdD9vam1oI3Fmbz4hI3Fmd3ZxbSNlYm9wZjh3a2Yjc3Zxc2xwZiNsZXdrZiNiYWpvand6I3dsOGBsb2xxOSBlZWV+XHQtXHQ/cHNibSNgb2JwcD4hd2tmI3B2YWlmYHcjbGVnZmVqbWp3amxtcCNsZT0OXHQ/b2ptaCNxZm8+IWBvYmpuI3drYncjd2tma2J1ZiNnZnVmb2xzZmc/d2Jhb2YjdGpnd2s+IWBmb2ZhcWJ3amxtI2xlRWxvb2x0am1kI3drZiN3bCNnanB3am1kdmpwaz9wc2JtI2BvYnBwPiFhd2JoZnAjc29iYGYjam12bWdmcSN3a2YjbWJuZm1sd2ZnI3drYncjd2tmPT8iWGZtZ2plXi4uPVx0cHd6b2Y+IW5icWRqbS5qbXB3ZmJnI2xlI3drZmptd3FsZ3ZgZmcjd2tmd2tmI3NxbGBmcHAjbGVqbWBxZmJwam1kI3drZmdqZWVmcWZtYGZwI2ptZnB3am5id2ZnI3drYndmcHNmYGpib296I3drZixnanU9P2dqdSNqZz4hdGJwI2Z1Zm13dmJvb3p3a3FsdmRrbHZ3I2tqcHdrZiNnamVlZnFmbWBmcGxuZndram1kI3drYndwc2JtPT8scHNibT0/LHBqZG1qZWpgYm13b3ojPT8scGBxanN3PQ5cdA5cdGZtdWpxbG1uZm13Ym8jd2wjc3FmdWZtdyN3a2ZrYnVmI2FmZm0jdnBmZ2Zwc2ZgamJvb3ojZWxxdm1nZnFwd2JtZyN3a2ZqcCNmcHBmbXdqYm9venRmcWYjd2tmI2VqcXB3anAjd2tmI29icWRmcHdrYnVmI2FmZm0jbmJnZiEjcHFgPiFrd3dzOSwsam13ZnFzcWZ3ZmcjYnBwZmBsbWcja2JvZSNsZWBxbG9vam1kPiFtbCEjanAjYGxuc2xwZmcjbGVKSi8jS2xveiNRbG5ibWpwI2Z7c2Zgd2ZnI3dsa2J1ZiN3a2ZqcSNsdG1nZmVqbWZnI2JwI3drZndxYmdqd2psbWJvb3oja2J1ZiNnamVlZnFmbXdicWYjbGV3Zm0jdnBmZ3dsI2ZtcHZxZiN3a2J3YmRxZmZuZm13I3Rqd2tgbG13Ymptam1kI3drZmJxZiNlcWZydmZtd296am1lbHFuYndqbG0jbG1me2Juc29mI2pwI3drZnFmcHZvd2ptZCNqbSNiPyxiPT8sb2o9Pyx2bz0jYG9icHA+IWVsbHdmcWJtZyNmcHNmYGpib296d3pzZj4hYXZ3d2xtISM/LHBzYm09Pyxwc2JtPXRramBrI2ptYG92Z2ZnPVx0P25md2IjbWJuZj4hYGxtcGpnZnFmZyN3a2ZgYnFxamZnI2x2dyNhektsdGZ1ZnEvI2p3I2pwYWZgYm5mI3NicXcjbGVqbSNxZm9id2psbSN3bHNsc3ZvYnEjam0jd2tmd2tmI2Bic2p3Ym8jbGV0YnAjbGVlamBqYm9venRramBrI2ticCNhZmZtd2tmI0tqcHdscXojbGVib3dmcW1id2p1ZiN3bGdqZWVmcWZtdyNlcWxud2wjcHZzc2xxdyN3a2ZwdmRkZnB3Zmcjd2tid2ptI3drZiNzcWxgZnBwIyM/Z2p1I2BvYnBwPiF3a2YjZWx2bWdid2psbWFmYGJ2cGYjbGUja2pwYGxtYGZxbWZnI3Rqd2t3a2Yjdm1qdWZxcGp3emxzc2xwZmcjd2wjd2tmd2tmI2BsbXdme3cjbGU/cHNibSNgb2JwcD4hc3dme3chI21ibmY+IXIhXG5cbj9nanUjYG9icHA+IXdrZiNwYGpmbXdqZWpgcWZzcWZwZm13ZmcjYXpuYndrZm5id2pgamJtcGZvZmB3ZmcjYXojd2tmd2tidyNrYnVmI2FmZm09P2dqdSNgb2JwcD4hYGdqdSNqZz4ha2ZiZ2Zxam0jc2Jxd2pgdm9icS9gbG11ZnF3Zmcjam13bCo4XHQ/LHBgcWpzdz1cdD9za2pvbHBsc2tqYGJvI3Bxc3BobGtxdWJ3cGhqd2pcclZTbWQjVWpccldrdzxMPW89bT1tPFY8VDxVPWw9bz1tPW08VjxUPFVqbXVmcHdqZGJgai9fbXNicXdqYGpzYmBqL19tPFY8Uj1uPFI9bD1nPFk8UjxdPFc8XFw9bT1uPFQ8VjxSPW48Uj1sPWc8VT1rPFk8VzxSPF48WTxWPW08VD1tPW48WTxQPWc8cTxSPF48Uj1tPW48VDxWPFI9bjxSPWw9Zz1pPFI8XTxXPFxcPW09bj1gPF49bDxZPFA8WTxRPFQ8VjxSPW48Uj1sPFxcPWM9bTxZPF88UjxYPFE9Yz1tPFY8XFw9azxcXD1uPWA8UTxSPF48Uj1tPW48VDxPPFY9bDxcXDxUPFE9ZzxePFI8Uz1sPFI9bT1nPFY8Uj1uPFI9bDxSPFU9bTxYPFk8VzxcXD1uPWA8UzxSPFA8Uj1lPWA9Yj1tPWw8WTxYPW09bjxePFI8XT1sPFxcPFs8UjxQPW09bjxSPWw8UjxRPWc9bz1rPFxcPW09bjxUPFk9bjxZPWs8WTxRPFQ8WTx/PFc8XFw8XjxRPFxcPWM8VD1tPW48Uj1sPFQ8VD1tPFQ9bT1uPFk8UDxcXD1sPFk9ZDxZPFE8VD1jPE08VjxcXD1rPFxcPW49YDxTPFI9YT1uPFI8UD1vPW08VzxZPFg9bzxZPW49bTxWPFxcPFs8XFw9bj1gPW48UjxePFxcPWw8UjxePFY8UjxRPFk9azxRPFI9bDxZPWQ8WTxRPFQ8WTxWPFI9bjxSPWw8UjxZPFI9bDxfPFxcPFE8UjxePFY8Uj1uPFI9bDxSPFA8TDxZPFY8VzxcXDxQPFxcNEs1aDVpNWo0RjRDNWU1aTVqNEY0QzVmNEs0RjRLNWg1aTVkNFo1ZDRVNEs1aDRENF00SzVpNEA0SzVoNWk1ZDRLNW40VTRLNWg0XTRfNEs0SjVoNWk0WDRLNF01bzRLNEY0SzVoNE80VTRaNEs0TTRLNWg0XTVmNEs0WjRFNEs1aDRGNFk1aTVmNWk0SzVoNEs0VTRaNEs0TTRLNWg1ajRGNEs0SjRANEs1aDRPNWg0VTRLNEQ0SzVoNEY0XzRANWY1aDRLNWg0TzVuNF80SzVpNEs1aDRaNFY0WzRLNEY0SzVoNW01ZjRDNWY1ZDRLNWg0RjRdNEE1ZjRENEs1aDRANEM1ZjRDNEU0SzVoNEY0VTVoNWY1aTRLNWg0TzRCNEQ0SzRdNEs1aDRLNW01aDRLNWk0SzVoNE81bTVoNEs1aTRLNWg0RjRLNF01ZjRCNEs1aDRGNW41ajVmNEU0SzVoNEs1aDRVNEs0RDRLNWg0QjVkNEs0WzRdNEs1aDVpNEA0RjVpNFU0SzVoNEM1ZjVvNWQ0XTRLNWg0XzVmNEs0QTRFNFU0RDRDNEs1aDVoNWs0SzVoNEY0XTRENWY0RTRLNWg0XTVkNEs0RDRbNEs1aDRPNEM0RDVmNEU0SzVoNEs0QjRENEs0XTRLNWg1aTRGNEE0QzRFNEs1aDRLNFY0SzVqNWZgdnFwbHE5c2xqbXdmcTg/LHdqd29mPVx0P25md2IjISNrcWZlPiFrd3dzOSwsIT0/cHNibSNgb2JwcD4hbmZuYWZxcCNsZSN3a2YjdGptZ2x0LW9sYGJ3amxtdWZxd2pgYm8uYm9qZG05LGI9I38jP2Ija3FmZT4hPyJnbGB3enNmI2t3bm89bmZnamI+IXBgcWZmbSEjP2xzd2psbSN1Ym92Zj4hZWJ1amBsbS1qYGwhIyw9XHRcblxuP2dqdSNgb2JwcD4hYGticWJgd2ZxanB3amBwISNuZndrbGc+IWRmdyEjLGFsZ3o9XHQ/LGt3bm89XHRwa2xxd2B2dyNqYGxtISNnbGB2bmZtdy10cWp3ZitzYmdnam1kLmFsd3dsbjlxZnNxZnBmbXdid2p1ZnBwdmFuanchI3Vib3ZmPiFib2pkbT4hYGZtd2ZxISN3a3FsdmRrbHZ3I3drZiNwYGpmbWBmI2VqYHdqbG1cdCMjP2dqdSNgb2JwcD4hcHZhbmp3ISNgb2JwcD4hbG1mI2xlI3drZiNubHB3I3Vib2pkbT4hd2xzIT0/dGJwI2Zwd2Jhb2pwa2ZnKjgOXHQ/LHBgcWpzdz0OXHRxZnd2cW0jZWJvcGY4IT0qLXB3em9mLWdqcHNvYnphZmBidnBmI2xlI3drZiNnbGB2bmZtdy1gbGxoamY/ZWxxbiNiYHdqbG0+ISx+YWxnenhuYnFkam05MzhGbWB6YG9sc2ZnamIjbGV1ZnFwamxtI2xlI3drZiMtYHFmYndmRm9mbmZtdyttYm5mISNgbG13Zm13PiE/LGdqdT1cdD8sZ2p1PVx0XHRiZ25qbWpwd3Fid2p1ZiM/LGFsZ3o9XHQ/LGt3bm89a2pwd2xxeiNsZSN3a2YjIT0/am1zdncjd3pzZj4hc2xxd2psbSNsZSN3a2YjYnAjc2JxdyNsZSN3a2YjJW1hcHM4P2Ija3FmZT4hbHdrZnEjYGx2bXdxamZwIT1cdD9nanUjYG9icHA+IT8scHNibT0/LHBzYm09P0ptI2x3a2ZxI3RscWdwL2dqcHNvYno5I2FvbGBoOGBsbXdxbG8jbGUjd2tmI2ptd3FsZ3Zgd2psbSNsZSw9XHQ/bmZ3YiNtYm5mPiFicCN0Zm9vI2JwI3drZiNqbSNxZmBmbXcjemZicXAOXHRcbj9nanUjYG9icHA+IT8sZ2p1PVx0XG4/LGdqdT1cdGptcHNqcWZnI2F6I3drZndrZiNmbWcjbGUjd2tmI2BsbnNid2phb2YjdGp3a2FmYGJuZiNobWx0bSNicCNwd3pvZj4hbmJxZGptOS1pcCE9PyxwYHFqc3c9PyNKbXdmcW1id2psbWJvI3drZnFmI2tidWYjYWZmbURmcW5ibSNvYm1kdmJkZiNwd3pvZj4hYGxvbHE5IEBsbm52bWpwdyNTYnF3emBsbXBqcHdmbXcjdGp3a2FscWdmcT4hMyEjYGZvbyNuYnFkam1rZmpka3c+IXdrZiNuYmlscWp3eiNsZSEjYm9qZG0+IWBmbXdmcXFmb2J3Zmcjd2wjd2tmI25ibXojZ2plZWZxZm13I0xxd2tsZ2x7I0BrdnFga3BqbmpvYnEjd2wjd2tmIyw9XHQ/b2ptaCNxZm8+IXB0YnAjbG1mI2xlI3drZiN2bXdqbyNranAjZ2Zid2t+KisqOFx0PyxwYHFqc3c9bHdrZnEjb2JtZHZiZGZwYGxuc2JxZmcjd2wjd2tmc2xxd2psbXAjbGUjd2tmd2tmI01md2tmcW9ibWdwd2tmI25scHcjYGxubmxtYWJgaGRxbHZtZzl2cW8rYnFkdmZnI3drYncjd2tmcGBxbG9vam1kPiFtbCEjam1gb3ZnZmcjam0jd2tmTWxxd2sjQm5mcWpgYm0jd2tmI21ibmYjbGUjd2tmam13ZnFzcWZ3YndqbG1wd2tmI3dxYmdqd2psbWJvZ2Z1Zm9sc25mbXcjbGUjZXFmcnZmbXdveiN2cGZnYiNgbG9vZmB3amxtI2xldWZxeiNwam5qb2JxI3dscHZxcWx2bWdqbWQjd2tmZntibnNvZiNsZSN3a2pwYm9qZG0+IWBmbXdmcSE9dGx2b2cja2J1ZiNhZmZtam5iZGZcXGBic3dqbG0jPmJ3d2Jga2ZnI3dsI3drZnB2ZGRmcHdqbWQjd2tid2ptI3drZiNlbHFuI2xlI2ptdWxvdWZnI2ptI3drZmpwI2dmcWp1ZmcjZXFsbm1ibmZnI2Jld2ZxI3drZkptd3FsZ3Zgd2psbSN3bHFmcHdxamB3amxtcCNsbSNwd3pvZj4hdGpnd2s5I2BibSNhZiN2cGZnI3dsI3drZiNgcWZid2psbSNsZW5scHcjam5zbHF3Ym13I2ptZWxxbmJ3amxtI2JtZ3FmcHZvd2ZnI2ptI3drZmBsb29ic3BmI2xlI3drZldranAjbmZibXAjd2tid2ZvZm5mbXdwI2xlI3drZnRicCNxZnNvYmBmZyNhemJtYm96cGpwI2xlI3drZmptcHNqcWJ3amxtI2VscXFmZGJxZ2ZnI2JwI3drZm5scHcjcHZgYGZwcGV2b2htbHRtI2JwIyVydmx3OGIjYGxuc3Fma2ZtcGp1ZktqcHdscXojbGUjd2tmI3RmcWYjYGxtcGpnZnFmZ3Fmd3ZxbWZnI3dsI3drZmJxZiNxZmVmcXFmZyN3bFZtcGx2cWBmZyNqbmJkZj1cdFxuP2dqdSNgb2JwcD4hYGxtcGpwd3AjbGUjd2tmcHdsc1NxbHNiZGJ3amxtam13ZnFmcHcjam0jd2tmYnViam9iYWpvand6I2xlYnNzZmJxcCN3bCNrYnVmZm9mYHdxbG5iZG1md2pgZm1iYW9mUGZxdWpgZnArZXZtYHdqbG0jbGUjd2tmSncjanAjam5zbHF3Ym13PyxwYHFqc3c9PyxnanU9ZXZtYHdqbG0rKnh1YnEjcWZvYndqdWYjd2wjd2tmYnAjYiNxZnB2b3cjbGUjd2tmI3NscGp3amxtI2xlRWxxI2Z7Ym5zb2YvI2ptI25md2tsZz4hc2xwdyEjdGJwI2Vsb29sdGZnI2F6JWJuczhuZ2Jwazgjd2tmd2tmI2Jzc29qYGJ3amxtaXAhPT8scGBxanN3PQ5cdHZvPT8sZ2p1PT8sZ2p1PWJld2ZxI3drZiNnZmJ3a3Rqd2sjcWZwc2ZgdyN3bHB3em9mPiFzYmdnam1kOWpwI3NicXdqYHZvYnFvemdqcHNvYno5am1vam1mOCN3enNmPiFwdmFuanchI2pwI2dqdWpnZmcjam13bFxiVEFcbnprIytcdkJsXGJRfypxZnBzbG1wYmFqb2pnYmdiZ25qbWpwd3FiYGovX21qbXdmcW1iYGpsbWJvZnBgbHFxZnBzbG1namZtd2ZcZkhlXGZIRlxmSENcZklnXGZIe1xmSEZcZkluXGZIXFxcZklhXGZIWVxmSFVcZkhCXGZIUlxmSFxcXGZJa1xmSF5cZklnXGZIe1xmSWdcZkhuXGZIdlxmSW1cZkhEXGZIUlxmSFlcZkheXGZJa1xmSHlcZkhTXGZIRFxmSFRcZkhcXFxmSHlcZkhSXGZIXFxcZkhGXGZJbVxmSF5cZkhTXGZIVFxmSHpcZklnXGZIcFxmSWtcZkhuXGZIdlxmSFJcZkhVXGZIU1xmSGNcZkhBXGZJa1xmSHBcZklrXGZIblxmSFpcZkhSXGZIQlxmSFNcZkheXGZIVVxmSEJcZkhSXGZIXFxcZklsXGZIcFxmSFJcZkh7XGZIXFxcZkhPXGZIQFxmSERcZkhSXGZIRFxmSWtcZkh5XGZJbVxmSEJcZkhSXGZIXFxcZkhAXGZJYVxmSF5cZkllXGZIe1xmSEJcZkhSXGZIXlxmSFNcZkh5XGZIQlxmSFVcZkhTXGZIXlxmSFJcZkhGXGZJb1xmSFtcZklhXGZITFxmSEBcZkhOXGZIUFxmSEhcZklrXGZIQVxmSFJcZkhwXGZIRlxmSFJcZkh5XGZJYVxmSF5cZkhTXGZIeVxmSHNcZklhXGZIXFxcZklrXGZIRFxmSHpcZkhTXGZIXlxmSFJcZkhHXGZISlxmSWBcZkhcXFxmSFJcZkhEXGZIQlxmSFJcZkhCXGZIXlxmSWtcZkhCXGZISFxmSEpcZkhSXGZIRFxmSEBcZkhSXGZIcFxmSFJcZkhcXFxmSFlcZkhTXGZIeVxmSFJcZkhUXGZIeVxmSWFcZkhDXGZJZ1xmSG5cZkh2XGZIUlxmSFVcZkhIXGZJa1xmSEZcZkhVXGZJbVxmSG1cZkh2XGZIQFxmSEhcZkhSXGZIQ1xmSFJcZkhUXGZIblxmSFlcZkhSXGZISlxmSEpcZklrXGZIelxmSERcZklrXGZIRlxmSFNcZkh3XGZIXlxmSWtcZkhZXGZIU1xmSFpcZklrXGZIW1xmSFxcXGZIUlxmSHBcZklhXGZIQ1xmSGVcZkhIXGZJYVxmSEhcZkhcXFxmSEJcZkltXGZIblxmSEBcZkhkXGZISlxmSWdcZkhEXGZJZ1xmSG5cZkhlXGZIRlxmSHlcZkhcXFxmSE9cZkhGXGZITlxmSFBcZklrXGZIblxmSFRcZklhXGZISVxmSFNcZkhIXGZIR1xmSFNcZkheXGZJYVxmSEJcZkhCXGZJbVxmSHpcZklhXGZIQ1xmSGlcZkh2XGZJYVxmSHdcZkhSXGZId1xmSW5cZkhzXGZISFxmSWxcZkhUXGZIblxmSHtcZklsXGZISFxmSHBcZkhSXGZIY1xmSHtcZkhSXGZIWVxmSFNcZkhBXGZIUlxmSHtcZkh0XGZIT1xmSWFcZkhzXGZJa1xmSEpcZkluXGZIVFxmSFxcXGZJa1xmSEpcZkhTXGZIRFxmSWdcZkhuXGZIVVxmSEhcZklhXGZIQ1xmSFJcZkhUXGZJa1xmSHlcZklhXGZIVFxmSHtcZkhSXGZIblxmSEtcZklsXGZIWVxmSFNcZkhaXGZJYVxmSFlcZkhcXFxmSFJcZkhIXGZJa1xmSG5cZkhKXGZJZFxmSHNcZklhXGZIVFxmSERcZkh5XGZJYVxmSFpcZkhSXGZIVFxmSFJcZkhCXGZIRFxmSWtcZkhpXGZISlxmSFJcZkheXGZISFxmSEBcZkhTXGZIcFxmSF5cZklsXGZIRlxmSW1cZkhcXFxmSW5cZkhbXGZIVVxmSFNcZkhuXGZISlxmSWxcZkhCXGZIU1xmSEhcZklhXGZIXFxcZkh5XGZIWVxmSFNcZkhIXGZIUlxmSFxcXGZJbVxmSEZcZkhDXGZJa1xmSFRcZklhXGZISVxmSFJcZkhEXGZIeVxmSFxcXGZJZ1xmSE1cZkhQXGZIQlxmSW1cZkh5XGZJYVxmSEhcZkhDXGZJZ1xmSHBcZkhEXGZIUlxmSHlcZklvXGZIRlxmSENcZkhSXGZIRlxmSWdcZkhUXGZJYVxmSHNcZkh0XGZIXFxcZklrXGZIXlxmSW5cZkh5XGZIUlxmSFxcXGZJYVxmSENcZkhZXGZIU1xmSHZcZkhSXGZIXFxcZkhUXGZJblxmSHZcZkhEXGZIUlxmSEJcZkluXGZIXlxmSWFcZkhDXGZISlxmSWtcZkh6XGZJa1xmSG5cZkhVXGZIQlxmSWtcZkhaXGZIUlxmSFRcZklhXGZIeVxmSW5cZkheXGZIQlxmSWRcZkhuXGZIRFxmSWtcZkhIXGZJZFxmSENcZkhSXGZIXFxcZkhwXGZIU1xmSFRcZkh5XGZJa3FwcCh7bm8hI3dqd29mPiEud3pzZiEjYGxtd2Ztdz4hd2p3b2YhI2BsbXdmbXc+IWJ3I3drZiNwYm5mI3dqbmYtaXAhPT8scGBxanN3PVx0PyEjbmZ3a2xnPiFzbHB3ISM/LHBzYm09PyxiPT8sb2o9dWZxd2pgYm8uYm9qZG05dyxpcnZmcXotbmptLWlwIT0tYG9qYGgrZXZtYHdqbG0rI3B3em9mPiFzYmdnam1kLn4qKyo4XHQ/LHBgcWpzdz1cdD8scHNibT0/YiNrcWZlPiE/YiNrcWZlPiFrd3dzOSwsKjgjcWZ3dnFtI2Vib3BmOHdme3cuZ2ZgbHFid2psbTkjcGBxbG9vam1kPiFtbCEjYWxxZ2ZxLmBsb29ic3BmOWJwcGxgamJ3ZmcjdGp3ayNBYmticGIjSm1nbG1mcGpiRm1kb2pwayNvYm1kdmJkZj93Znt3I3tubzlwc2JgZj4tZGplISNhbHFnZnE+ITMhPyxhbGd6PVx0Pyxrd25vPVx0bHVmcWVvbHQ5a2pnZ2ZtOGpuZCNwcWA+IWt3d3M5LCxiZ2dGdWZtd09qcHdmbWZxcWZwc2xtcGphb2YjZWxxI3AtaXAhPT8scGBxanN3PVx0LGVidWpgbG0tamBsISMsPWxzZnFid2ptZCNwenB3Zm4hI3B3em9mPiF0amd3azkyd2JxZGZ3PiFcXGFvYm1oIT1Qd2J3ZiNWbWp1ZnFwand6d2Z7dy5ib2pkbTlvZmV3OFx0Z2xgdm5mbXctdHFqd2YrLyNqbWBvdmdqbWQjd2tmI2JxbHZtZyN3a2YjdGxxb2cqOA5cdD8scGBxanN3PQ5cdD8hI3B3em9mPiFrZmpka3c5OGx1ZnFlb2x0OWtqZ2dmbW5scWYjam1lbHFuYndqbG1ibSNqbXdmcW1id2psbWJvYiNuZm5hZnEjbGUjd2tmI2xtZiNsZSN3a2YjZWpxcHdgYm0jYWYjZWx2bWcjam0jPyxnanU9XHRcblxuPyxnanU9XHRnanBzb2J6OSNtbG1mOCE9ISMsPVx0P29qbWgjcWZvPiFcdCMjK2V2bWB3amxtKyojeHdrZiMyNndrI2BmbXd2cXotc3FmdWZtd0dmZWJ2b3crb2JxZGYjbXZuYWZxI2xlI0F6eWJtd2ptZiNGbnNqcWYtaXNkf3drdm5hf29mZXd/dWJwdyNuYmlscWp3eiNsZW5iaWxxand6I2xlI3drZiMjYm9qZG0+IWBmbXdmcSE9Vm1qdWZxcGp3eiNTcWZwcGdsbmptYndmZyNheiN3a2ZQZmBsbWcjVGxxb2cjVGJxZ2pwd3FqYXZ3amxtI2xlI3B3em9mPiFzbHBqd2psbTl3a2YjcWZwdyNsZSN3a2YjYGticWJgd2ZxanlmZyNheiNxZm8+IW1sZWxvb2x0IT1nZnFqdWZwI2VxbG4jd2tmcWJ3a2ZxI3drYm0jd2tmI2IjYGxuYWptYndqbG0jbGVwd3pvZj4hdGpnd2s5MjMzRm1kb2pway5wc2ZiaGptZGBsbnN2d2ZxI3BgamZtYGZhbHFnZnE+ITMhI2Jvdz4hd2tmI2Z7anB3Zm1gZiNsZUdmbmxgcWJ3amAjU2Jxd3ohI3B3em9mPiFuYnFkam0uRWxxI3dranAjcWZicGxtLy1pcCE9PyxwYHFqc3c9XHRcbnBBeldiZE1ibmYrcCpYM15pcCE9PyxwYHFqc3c9Dlx0Py1pcCE9PyxwYHFqc3c9Dlx0b2ptaCNxZm8+IWpgbG0hIyQjYm93PiQkI2BvYnBwPiRlbHFuYndqbG0jbGUjd2tmdWZxcGpsbXAjbGUjd2tmIz8sYj0/LGdqdT0/LGdqdT0sc2JkZj1cdCMjP3NiZGY9XHQ/Z2p1I2BvYnBwPiFgbG13YWZgYm5mI3drZiNlanFwd2Fia2JwYiNKbWdsbWZwamJmbWRvanBrIytwam5zb2YqInkiVyJXIlsiUSJVIlYiQD1pPWw8XjxcXD1uPW08VjxUPFY8UjxQPFM8XFw8UTxUPFQ9YzxePFc9YzxZPW49bT1jPHg8UjxdPFxcPF48VD1uPWA9azxZPFc8UjxePFk8VjxcXD1sPFxcPFs8XjxUPW48VD1jPHQ8UT1uPFk9bDxRPFk9bjxyPW48XjxZPW48VD1uPWA8UTxcXDxTPWw8VDxQPFk9bDxUPFE9bjxZPWw8UTxZPW48VjxSPW48Uj1sPFI8XzxSPW09bj1sPFxcPFE8VD1qPWc8VjxcXD1rPFk9bT1uPF48WT1vPW08VzxSPF48VD1jPWk8Uz1sPFI8XTxXPFk8UD1nPFM8UjxXPW89azxUPW49YD1jPF48Vz1jPWI9bj1tPWM8UTxcXDxUPF08UjxXPFk8WTxWPFI8UDxTPFxcPFE8VD1jPF48UTxUPFA8XFw8UTxUPFk9bT1sPFk8WD1tPW48XjxcXDRLNWg1aTVkNEs0WjVmNFU0SzVoNF00SjVmNF81ZjRFNEs1aDRLNWo0RjVuNEs1aDVpNFg0SzRdNW80SzRGNW80SzVoNF81ZjRLNF00SzRGNEs1aDVpNW80RjVkNEQ0RTRLNWg0XzRVNWQ0QzVmNEU0SzRBNFk0SzRKNWY0SzRGNEs1aDRVNEs1aDVpNWY0RTRLNWg0WTVkNEY1ZjRLNEY0SzVoNEs1ajRGNF01ajRGNEs1aDRGNFk0SzVpNWY1aTRLNWg0STRfNWg0SzVpNWY0SzVoNWk0WDRLNF01bzRFNEs1aDVpNF00SjVmNEs0RnFsYWx3cCEjYGxtd2Ztdz4hP2dqdSNqZz4hZWxsd2ZxIT13a2YjVm1qd2ZnI1B3YndmcD9qbmQjcHFgPiFrd3dzOSwsLWlzZH9xamRrd393a3ZuYX8taXAhPT8scGBxanN3PQ5cdD9vbGBid2psbS1zcWx3bGBsb2VxYm5mYWxxZ2ZxPiEzISNwISMsPVx0P25md2IjbWJuZj4hPyxiPT8sZ2p1PT8sZ2p1PT9lbG13LnRmamRrdzlhbG9nOCVydmx3OCNibWcjJXJ2bHc4Z2ZzZm1nam1kI2xtI3drZiNuYnFkam05MzhzYmdnam1kOSEjcWZvPiFtbGVsb29sdCEjU3FmcGpnZm13I2xlI3drZiN3dGZtd2pmd2sjYGZtd3ZxemZ1anBqbG09XHQjIz8sc2JkZkptd2ZxbWZ3I0Z7c29scWZxYi1icHptYCM+I3dxdmY4Dlx0am1lbHFuYndqbG0jYmFsdnc/Z2p1I2pnPiFrZmJnZnEhPSEjYmB3amxtPiFrd3dzOSwsP2Ija3FmZT4ha3d3c3A5LCw/Z2p1I2pnPiFgbG13Zm13IT8sZ2p1PQ5cdD8sZ2p1PQ5cdD9nZnFqdWZnI2VxbG4jd2tmIz9qbmQjcHFgPiRrd3dzOSwsYmBgbHFnam1kI3dsI3drZiNcdD8sYWxnej1cdD8sa3dubz1cdHB3em9mPiFlbG13LnBqeWY5cGBxanN3I29ibWR2YmRmPiFCcWpiby8jS2ZvdWZ3amBiLz8sYj0/cHNibSNgb2JwcD4hPyxwYHFqc3c9P3BgcWpzdyNzbG9qd2pgYm8jc2Jxd2pmcHdnPT8sd3E9Pyx3YmFvZj0/a3FmZT4ha3d3czksLHR0dC1qbXdmcXNxZndid2psbSNsZXFmbz4hcHd6b2Zwa2ZmdyEjZ2xgdm5mbXctdHFqd2YrJD9ga2JxcGZ3PiF2d2UuOyE9XHRhZmRqbW1qbWQjbGUjd2tmI3FmdWZib2ZnI3drYncjd2tmd2ZvZnVqcGpsbSNwZnFqZnAhI3Fmbz4hbWxlbG9vbHQhPSN3YnFkZnc+IVxcYW9ibWghPWBvYmpuam1kI3drYncjd2tma3d3cyYwQiYxRSYxRXR0dC1uYm1qZWZwd2J3amxtcCNsZVNxam5mI05qbWpwd2ZxI2xlam1lb3ZmbWBmZyNheiN3a2Zgb2JwcD4hYG9mYnFlanshPSxnanU9Dlx0PyxnanU9Dlx0Dlx0d2txZmYuZ2puZm1wamxtYm9Aa3ZxYGsjbGUjRm1kb2JtZ2xlI01scXdrI0BicWxvam1icHJ2YnFmI2hqb2xuZndxZnAtYmdnRnVmbXdPanB3Zm1mcWdqcHdqbWB3I2VxbG4jd2tmYGxubmxtb3ojaG1sdG0jYnBTa2xtZndqYCNCb3NrYmFmd2dmYG9icWZnI3drYncjd2tmYGxtd3Fsb29mZyNheiN3a2ZBZm1pYm5qbSNFcWJtaG9qbXFsb2Yuc29iemptZCNkYm5md2tmI1ZtanVmcXBqd3ojbGVqbSNUZnB3ZnFtI0Z2cWxzZnNmcXBsbWJvI2BsbnN2d2ZxU3FsaWZgdyNEdndmbWFmcWRxZmRicWdvZnBwI2xlI3drZmticCNhZmZtI3NxbHNscGZnd2xkZndrZnEjdGp3ayN3a2Y9Pyxvaj0/b2ojYG9icHA+IWptI3BsbmYjYGx2bXdxamZwbmptLWlwIT0/LHBgcWpzdz1sZSN3a2Yjc2xzdm9id2psbWxlZWpgamJvI29ibWR2YmRmP2puZCNwcWA+IWpuYmRmcCxqZ2Ztd2plamZnI2F6I3drZm1id3ZxYm8jcWZwbHZxYGZwYG9icHBqZWpgYndqbG0jbGVgYm0jYWYjYGxtcGpnZnFmZ3J2Ym13dm4jbmZga2JtamBwTWZ1ZnF3a2ZvZnBwLyN3a2Zuam9vamxtI3pmYnFwI2JkbD8sYWxnej0OXHQ/LGt3bm89DiJ5IlciVyJbIlEiVSJWIkBcdHdiaGYjYmd1Ym13YmRmI2xlYm1nLyNiYGBscWdqbWQjd2xid3dxamF2d2ZnI3dsI3drZk5qYHFscGxldyNUam1nbHRwd2tmI2VqcXB3I2BmbXd2cXp2bWdmcSN3a2YjYGxtd3Fsb2dqdSNgb2JwcD4ha2ZiZ2ZxcGtscXdveiNiZXdmcSN3a2ZtbHdiYW9mI2Z7YGZzd2psbXdmbXAjbGUjd2tsdnBibWdwcGZ1ZnFibyNnamVlZnFmbXdicWx2bWcjd2tmI3RscW9nLXFmYmBram1kI25qb2p3YnF6anBsb2J3ZmcjZXFsbiN3a2Zsc3NscGp3amxtI3dsI3drZndrZiNMb2cjV2Zwd2JuZm13QmVxamBibSNCbmZxamBibXBqbXBmcXdmZyNqbXdsI3drZnBmc2JxYndmI2VxbG4jd2tmbmZ3cWxzbG9qd2JtI2JxZmJuYmhmcCNqdyNzbHBwamFvZmJgaG1sdG9mZ2RmZyN3a2J3YnFkdmJhb3ojd2tmI25scHd3enNmPiF3Znt3LGBwcCE9XHR3a2YjSm13ZnFtYndqbG1ib0JgYGxxZ2ptZCN3bCN3a2Yjc2Y+IXdme3csYHBwISMsPVx0YGxqbWBqZ2YjdGp3ayN3a2Z3dGwud2tqcWdwI2xlI3drZkd2cWptZCN3a2pwI3dqbmYvZ3Zxam1kI3drZiNzZnFqbGdibW1sdm1gZmcjd2tidyNrZndrZiNqbXdmcW1id2psbWJvYm1nI25scWYjcWZgZm13b3phZm9qZnVmZyN3a2J3I3drZmBsbXBgamx2cG1mcHAjYm1nZWxxbmZxb3ojaG1sdG0jYnBwdnFxbHZtZ2ZnI2F6I3drZmVqcXB3I2Jzc2ZicWZnI2ptbGBgYnBqbG1ib296I3ZwZmdzbHBqd2psbTliYXBsb3Z3ZjghI3dicWRmdz4hXFxhb2JtaCEjc2xwandqbG05cWZvYndqdWY4d2Z7dy5ib2pkbTlgZm13ZnE4aWJ7LG9qYXAsaXJ2ZnF6LDItYWJgaGRxbHZtZy5gbG9scTkgd3pzZj4hYnNzb2pgYndqbG0sYm1kdmJkZiEjYGxtd2Ztdz4hP25md2Ija3d3cy5mcnZqdT4hU3FqdWJgeiNTbG9qYHo/LGI9ZishJjBAcGBxanN3I3BxYD4kISN3YnFkZnc+IVxcYW9ibWghPUxtI3drZiNsd2tmcSNrYm1nLy1pc2R/d2t2bmF/cWpka3d/MT8sZ2p1PT9nanUjYG9icHA+IT9nanUjcHd6b2Y+IWVvbGJ3OW1qbWZ3ZmZtd2sjYGZtd3Zxej8sYWxnej0OXHQ/LGt3bm89Dlx0P2puZCNwcWA+IWt3d3M5LCxwOHdme3cuYm9qZG05YGZtd2ZxZWxtdy50Zmpka3c5I2Fsb2c4I0JgYGxxZ2ptZCN3bCN3a2YjZ2plZWZxZm1gZiNhZnd0ZmZtISNlcWJuZmFscWdmcT4hMyEjISNwd3pvZj4hc2xwandqbG05b2ptaCNrcWZlPiFrd3dzOSwsa3dubzcsb2xscGYtZ3dnIT1cdGd2cWptZCN3a2pwI3NmcWpsZz8sd2c9Pyx3cT0/LHdiYW9mPWBvbHBmb3ojcWZvYndmZyN3bGVscSN3a2YjZWpxcHcjd2puZjhlbG13LnRmamRrdzlhbG9nOGptc3Z3I3d6c2Y+IXdme3chIz9wc2JtI3B3em9mPiFlbG13LmxtcWZiZ3pwd2J3ZmBrYm1kZlxuP2dqdSNgb2JwcD4hYG9mYnFnbGB2bmZtdy1vbGBid2psbS0jRWxxI2Z7Ym5zb2YvI3drZiNiI3RqZ2YjdWJxamZ3eiNsZSM/IkdMQFdaU0Yja3dubz0OXHQ/JW1hcHM4JW1hcHM4JW1hcHM4IT0/YiNrcWZlPiFrd3dzOSwscHd6b2Y+IWVvbGJ3OW9mZXc4YGxtYGZxbWZnI3Rqd2sjd2tmPmt3d3MmMEImMUUmMUV0dHQtam0jc2xzdm9icSNgdm93dnFmd3pzZj4hd2Z7dyxgcHAhIyw9ancjanAjc2xwcGphb2Yjd2wjS2JxdWJxZyNWbWp1ZnFwand6d3pvZnBrZmZ3ISNrcWZlPiEsd2tmI25iam0jYGticWJgd2ZxTHtlbHFnI1ZtanVmcXBqd3ojI21ibmY+IWhmenRscWdwISNgcHd6b2Y+IXdme3cuYm9qZG05d2tmI1ZtandmZyNIam1kZ2xuZWZnZnFibyNkbHVmcW1uZm13P2dqdSNwd3pvZj4hbmJxZGptI2dmc2ZtZ2ptZCNsbSN3a2YjZ2ZwYHFqc3dqbG0jbGUjd2tmP2dqdSNgb2JwcD4ha2ZiZ2ZxLW5qbS1pcCE9PyxwYHFqc3c9Z2Zwd3F2YHdqbG0jbGUjd2tmcG9qZGt3b3ojZ2plZWZxZm13am0jYmBgbHFnYm1gZiN0andrd2ZvZmBsbm52bWpgYndqbG1wam1namBid2ZwI3drYncjd2tmcGtscXdveiN3a2ZxZmJld2ZxZnBzZmBqYm9veiNqbSN3a2YjRnZxbHNmYm0jYGx2bXdxamZwS2x0ZnVmcS8jd2tmcWYjYnFmcHFgPiFrd3dzOSwscHdid2pgcHZkZGZwd2ZnI3drYncjd2tmISNwcWA+IWt3d3M5LCx0dHQtYiNvYnFkZiNtdm5hZnEjbGUjV2ZvZmBsbm52bWpgYndqbG1wISNxZm8+IW1sZWxvb2x0ISN3S2xveiNRbG5ibSNGbnNmcWxxYm9ubHB3I2Z7YG92cGp1Zm96ISNhbHFnZnE+ITMhI2Jvdz4hUGZgcWZ3YnF6I2xlI1B3YndmYHZvbmptYndqbWQjam0jd2tmQEpCI1RscW9nI0ViYHdhbGxod2tmI25scHcjam5zbHF3Ym13Ym1tanVmcXBicXojbGUjd2tmcHd6b2Y+IWFiYGhkcWx2bWcuP29qPT9mbj0/YiNrcWZlPiEsd2tmI0J3b2Jtd2pgI0xgZmJtcHdxamB3b3ojcHNmYmhqbWQvcGtscXdveiNhZmVscWYjd2tmZ2plZWZxZm13I3d6c2ZwI2xld2tmI0x3d2xuYm0jRm5zanFmPT9qbmQjcHFgPiFrd3dzOSwsQm0jSm13cWxndmB3amxtI3dsYGxtcGZydmZtYGYjbGUjd2tmZ2ZzYnF3dnFmI2VxbG4jd2tmQGxtZWZnZnFid2YjUHdid2Zwam1namRmbWx2cCNzZmxzb2ZwU3FsYGZmZ2ptZHAjbGUjd2tmam1lbHFuYndqbG0jbG0jd2tmd2tmbHFqZnAja2J1ZiNhZmZtam11bG91Zm5mbXcjam0jd2tmZ2p1amdmZyNqbXdsI3drcWZmYmdpYmBmbXcjYGx2bXdxamZwanAjcWZwc2xtcGphb2YjZWxxZ2pwcGxvdndqbG0jbGUjd2tmYGxvb2JhbHFid2psbSN0andrdGpnZm96I3FmZGJxZ2ZnI2Jwa2pwI2BsbXdmbnNscWJxamZwZWx2bWdqbWQjbmZuYWZxI2xlR2xuam1qYGJtI1Fmc3Zhb2pgZGZtZnFib296I2JgYGZzd2Znd2tmI3NscHBqYWpvand6I2xlYnFmI2JvcGwjYnViam9iYW9mdm1nZnEjYGxtcHdxdmB3amxtcWZwd2xxYndqbG0jbGUjd2tmd2tmI2RmbWZxYm8jc3Zhb2pganAjYm9ubHB3I2Ztd2pxZm96c2JwcGZwI3drcWx2ZGsjd2tma2JwI2FmZm0jcHZkZGZwd2ZnYGxuc3Z3ZnEjYm1nI3VqZ2ZsRGZxbmJtamAjb2JtZHZiZGZwI2JgYGxxZ2ptZCN3bCN3a2YjZ2plZWZxZm13I2VxbG4jd2tmcGtscXdveiNiZXdmcXRicWdwa3FmZT4ha3d3c3A5LCx0dHQtcWZgZm13I2dmdWZvbHNuZm13QWxicWcjbGUjR2pxZmB3bHFwP2dqdSNgb2JwcD4hcGZicWBrfyM/YiNrcWZlPiFrd3dzOSwsSm0jc2Jxd2pgdm9icS8jd2tmTnZvd2pzb2YjZWxsd21sd2ZwbHEjbHdrZnEjcHZhcHdibWBmd2tsdnBibWdwI2xlI3pmYnFwd3FibXBvYndqbG0jbGUjd2tmPyxnanU9Dlx0PyxnanU9Dlx0Dlx0P2Ija3FmZT4ham1nZnstc2tzdGJwI2Zwd2Jhb2pwa2ZnI2ptbmptLWlwIT0/LHBgcWpzdz1cdHNicXdqYGpzYndmI2ptI3drZmIjcHdxbG1kI2ptZW92Zm1gZnB3em9mPiFuYnFkam0ud2xzOXFmc3FmcGZtd2ZnI2F6I3drZmRxYmd2YndmZyNlcWxuI3drZldxYmdqd2psbWJvb3ovI3drZkZvZm5mbXcrIXBgcWpzdyEqOEtsdGZ1ZnEvI3BqbWBmI3drZixnanU9XHQ/LGdqdT1cdD9nanUjb2ZldzgjbmJxZGptLm9mZXc5c3Fsd2Zgd2psbSNiZGJqbXB3MzgjdWZxd2pgYm8uYm9qZG05Vm1lbHF3dm1id2Zvei8jd2tmd3pzZj4ham5iZGYsey5qYGxtLGdqdT1cdD9nanUjYG9icHA+ISNgb2JwcD4hYG9mYnFlanshPT9nanUjYG9icHA+IWVsbHdmcVxuXG4/LGdqdT1cdFxuXG4/LGdqdT1cdHdrZiNubHdqbG0jc2pgd3ZxZjx9PWY8VzxfPFxcPWw9bTxWPFQ8XT1mPFc8XzxcXD1sPW08VjxUPEg8WTxYPFk9bDxcXD1qPFQ8VDxRPFk9bTxWPFI8Vz1gPFY8Uj1tPFI8UjxdPWU8WTxRPFQ8WT1tPFI8UjxdPWU8WTxRPFQ9YzxTPWw8UjxfPWw8XFw8UDxQPWc8cj1uPFM9bDxcXDxePFQ9bj1gPF08WT1tPFM8VzxcXD1uPFE8UjxQPFxcPW48WT1sPFQ8XFw8Vz1nPFM8UjxbPF48UjxXPWM8WT1uPFM8Uj1tPFc8WTxYPFE8VDxZPWw8XFw8WzxXPFQ9azxRPWc9aTxTPWw8UjxYPW88Vj1qPFQ8VDxTPWw8UjxfPWw8XFw8UDxQPFxcPFM8UjxXPFE8Uj1tPW49YD1iPFE8XFw9aTxSPFg8VD1uPW09YzxUPFs8XT1sPFxcPFE8UTxSPFk8UTxcXD1tPFk8VzxZPFE8VD1jPFQ8WzxQPFk8UTxZPFE8VD1jPFY8XFw9bjxZPF88Uj1sPFQ8VDx8PFc8WTxWPW08XFw8UTxYPWxcZkhKXGZJYVxmSFlcZkhSXGZIXFxcZkhSXGZIQlxmSWRcZkhEXGZJbVxmSGlcZkheXGZIRlxmSWFcZkhcXFxmSEpcZkhSXGZIRFxmSEFcZkhSXGZIXFxcZkhIXGZJbFxmSENcZkhpXGZIRFxmSW1cZkhKXGZJa1xmSFpcZkhVXGZIU1xmSERcZklhXGZISlxmSWxcZkhrXGZIblxmSE1cZkhTXGZIQ1xmSFJcZkhKXGZIU1xmSF5cZklhXGZIXlxmSWxcZkhpXGZIS1xmSFNcZkh5XGZIUlxmSFxcXGZIWVxmSWxcZkhNXGZIU1xmSENcZklnXGZIdlxmSFNcZkhzXGZJYVxmSExcZklrXGZIVFxmSEJcZkhSXGZIdlxmSFJcZkhcXFxmSHBcZkhuXGZIeVxmSWFcZkhaXGZIRFxmSEpcZkltXGZIRFxmSFNcZkhDXGZIUlxmSEZcZklhXGZIXFxcZkhDXGZJZ1xmSHtcZkhpXGZIRFxmSW1cZkhUXGZIUlxmSFxcXGZIfVxmSERcZkheXGZIUlxmSGtcZkhEXGZIRlxmSFJcZkhcXFxmSWFcZkhzXGZJbFxmSFpcZkhcXFxmSWFcZkhIXGZJZ1xmSG5cZkheXGZJZ1xmSHlcZkhUXGZIQVxmSFJcZkhHXGZIUFxmSWFcZkheXGZJZFxmSFpcZkhaXGZIXFxcZklhXGZISFxmSWtcZkhuXGZIRlxmSWFcZkhcXFxmSEpcZklrXGZIWlxmSEZcZklhXGZIXlxmSWtcZkhDXGZIXFxcZkh5XGZJa1xmSG5cZkhKXGZJYVxmSFxcXGZIVFxmSWFcZkhJXGZIU1xmSEhcZkhTXGZIZVxmSEhcZklhXGZIRlxmSFJcZkhKXGZIZVxmSERcZklhXGZIVVxmSWtcZkhuXGZIdlxmSFNcZkhzXGZJYVxmSExcZkhSXGZIQ1xmSFJcZkhIXGZJYVxmSFxcXGZIUlxmSHBcZklhXGZIQ1xmSFJcZkhKXGZIUlxmSEZcZkltXGZIXFxcZkhSXGZIRFxmSWtcZkhwXGZJZ1xmSE1cZkhQXGZJa1xmSG5cZkhpXGZIRFxmSW1cZkhZXGZIUlxmSEpcZkhaXGZJYVxmSFxcXGZJa1xmSE9cZklsXGZIWlxmSFNcZkh5XGZJYVxmSFtcZkhSXGZIVFxmSFxcXGZIeVxmSFJcZkhcXFxmSWxcZkhUXGZIblxmSHtcZklhXGZIXFxcZkhVXGZIRlxmSFxcXGZIU1xmSE9cZkhSXGZIQlxmSEBcZklhXGZIXFxcZkhSXGZIblxmSE1cZkhAXGZIdlxmSWFcZkh2XGZJZ1xmSG5cZkhlXGZIRlxmSF5cZkhAXGZJYVxmSEtcZkhCXGZIblxmSEhcZklhXGZIXFxcZklsXGZIVFxmSG5cZkhGXGZIXFxcZklhXGZIeVxmSGVcZkhCXGZJYVxmSEJcZklsXGZISlxmSEJcZkhSXGZIS1xmSWFcZkhDXGZIQlxmSFRcZkhVXGZIUlxmSENcZkhIXGZIUlxmSFpcZkhAXGZJYVxmSEpcZklnXGZIblxmSEJcZklsXGZITVxmSFNcZkhDXGZIUlxmSGpcZkhkXGZIRlxmSWxcZkhjXGZIXlxmSEJcZklnXGZIQFxmSFJcZkhrXGZIXlxmSFRcZkhuXGZIelxmSWFcZkhDXGZIUlxmSGpcZkhGXGZIXFxcZklrXGZIWlxmSERcZkhpXGZIRFxmSW1cZkhAXGZIblxmSEtcZkhAXGZIUlxmSHBcZkhQXGZIUlxmSFxcXGZIRFxmSFlcZklsXGZIRFxmSEhcZkhCXGZIRlxmSWFcZkhcXFxmSEJcZkltXGZIelxmSEZcZklhXGZIXFxcZkhaXGZJYVxmSERcZkhGXGZIXFxcZkhTXGZIWVxmSFJcZkhcXFxmSERcZkltXGZIeVxmSFRcZkhSXGZIRFxmSFRcZkhCXGZIXFxcZklhXGZISVxmSERcZkhqXGZIQ1xmSWdcZkhwXGZIU1xmSEhcZkhUXGZJZ1xmSEJcZkhZXGZIUlxmSFxcNEs1aDVpNFg0SzRdNW80SzRGNEs1aDVpNWo0RjRDNWY0SzRGNEs1aDVvNWk0RDVmNWQ0RjRdNEs1aDVpNFg0SzVrNEM0SzRGNFU0QzRDNEs1aDReNWQ0SzRdNFU0QzRDNEs1aDRdNEM1ZDRDNEs1aDRJNF81aDRLNWk1ZjRFNEs1aDVtNWQ0RjVkNFg1ZDRENEs1aDVpNF80SzRENW40SzRGNEs1aDVpNFU1aDVkNWk0SzRGNEs1aDVpNF81aDRfNWg0SzRGNEs1aDRANF00SzVtNWY1bzRfNEs1aDRLNF81aDRLNWk1ZjRFNEs1aDRLNEY0WTRLNWg0SzRGaGZ6dGxxZ3AhI2BsbXdmbXc+IXQwLWxxZCwyOjo6LHtrd25vIT0/YiN3YnFkZnc+IVxcYW9ibWghI3dme3csa3dubzgjYGticXBmdz4hI3dicWRmdz4hXFxhb2JtaCE9P3diYW9mI2Bmb29zYmdnam1kPiFidndsYGxuc29md2Y+IWxlZSEjd2Z7dy5ib2pkbTkjYGZtd2ZxOHdsI29icHcjdWZxcGpsbSNheiNhYmBoZHFsdm1nLmBsb2xxOSMgISNrcWZlPiFrd3dzOSwsdHR0LSxnanU9PyxnanU9P2dqdSNqZz4/YiNrcWZlPiEgISNgb2JwcD4hIT0/am5kI3BxYD4ha3d3czksLGBxanN3ISNwcWA+IWt3d3M5LCxcdD9wYHFqc3cjb2JtZHZiZGY+ISwsRk0hIyFrd3dzOSwsdHR0LXRmbWBsZ2ZWUUpAbG5zbG1mbXcrISNrcWZlPiFpYnVicGBxanN3OT9nanUjYG9icHA+IWBsbXdmbXdnbGB2bmZtdy10cWp3ZiskP3Bgc2xwandqbG05I2JhcGxvdndmOHBgcWpzdyNwcWA+IWt3d3M5LCwjcHd6b2Y+IW5icWRqbS53bHM5LW5qbS1pcCE9PyxwYHFqc3c9XHQ/LGdqdT1cdD9nanUjYG9icHA+IXQwLWxxZCwyOjo6LHtrd25vISNcdA5cdD8sYWxnej0OXHQ/LGt3bm89Z2pwd2ptYHdqbG0jYWZ3dGZmbSwhI3dicWRmdz4hXFxhb2JtaCE9P29qbWgja3FmZT4ha3d3czksLGZtYGxnam1kPiF2d2UuOyE8PVx0dC1iZ2dGdWZtd09qcHdmbWZxPGJgd2psbT4ha3d3czksLHR0dC1qYGxtISNrcWZlPiFrd3dzOSwsI3B3em9mPiFhYmBoZHFsdm1nOXd6c2Y+IXdme3csYHBwISMsPVx0bmZ3YiNzcWxzZnF3ej4hbGQ5dz9qbXN2dyN3enNmPiF3Znt3ISMjcHd6b2Y+IXdme3cuYm9qZG05d2tmI2dmdWZvbHNuZm13I2xlI3d6b2Zwa2ZmdyEjd3pzZj4hd2Zrd25vOCNga2JxcGZ3PnZ3ZS47anAjYGxtcGpnZnFmZyN3bCNhZndiYW9mI3RqZ3drPiEyMzMmISNKbSNiZ2dqd2psbSN3bCN3a2YjYGxtd3FqYXZ3Zmcjd2wjd2tmI2dqZWVmcWZtYGZwI2Fmd3RmZm1nZnVmb2xzbmZtdyNsZSN3a2YjSncjanAjam5zbHF3Ym13I3dsIz8scGBxanN3PVx0XHQ/cGBxanN3IyNwd3pvZj4hZWxtdy5wanlmOTI9Pyxwc2JtPT9wc2JtI2pnPmRhT2phcWJxeiNsZSNAbG1kcWZwcD9qbmQjcHFgPiFrd3dzOSwsam5GbWRvanBrI3dxYm1wb2J3amxtQmBiZ2ZueiNsZSNQYGpmbWBmcGdqdSNwd3pvZj4hZ2pwc29iejlgbG1wd3F2YHdqbG0jbGUjd2tmLWRmd0ZvZm5mbXdBekpnK2pnKmptI2BsbWl2bWB3amxtI3Rqd2tGb2ZuZm13KyRwYHFqc3ckKjgjP25md2Ijc3Fsc2Zxd3o+IWxkOTx9PWY8VzxfPFxcPWw9bTxWPFRcdCN3enNmPiF3Znt3ISNtYm5mPiE9U3FqdWJgeiNTbG9qYHo/LGI9Ymduam1qcHdmcWZnI2F6I3drZmZtYmFvZlBqbWRvZlFmcnZmcHdwd3pvZj4lcnZsdzhuYnFkam05PyxnanU9PyxnanU9PyxnanU9Pz0/am5kI3BxYD4ha3d3czksLGojcHd6b2Y+JXJ2bHc4ZW9sYnc5cWZlZnFxZmcjd2wjYnAjd2tmI3dsd2JvI3Nsc3ZvYndqbG0jbGVqbSNUYnBram1kd2xtLyNHLUAtI3B3em9mPiFhYmBoZHFsdm1nLmJubG1kI2x3a2ZxI3dram1kcC9scWRibWp5YndqbG0jbGUjd2tmc2Jxd2pganNid2ZnI2ptI3drZndrZiNqbXdxbGd2YHdqbG0jbGVqZ2Ztd2plamZnI3Rqd2sjd2tmZWpgd2psbWJvI2BrYnFiYHdmcSNMe2VscWcjVm1qdWZxcGp3eiNuanB2bWdmcXB3Ym1nam1kI2xlV2tmcWYjYnFmLyNrbHRmdWZxL3B3em9mcGtmZnchI2txZmU+ISxAbG92bmFqYiNWbWp1ZnFwand6ZntzYm1nZmcjd2wjam1gb3ZnZnZwdmJvb3ojcWZlZnFxZmcjd2xqbWdqYGJ3am1kI3drYncjd2tma2J1ZiNwdmRkZnB3Zmcjd2tid2JlZWpvamJ3ZmcjdGp3ayN3a2ZgbHFxZm9id2psbSNhZnd0ZmZtbXZuYWZxI2xlI2dqZWVmcWZtdz0/LHdnPT8sd3E9Pyx3YmFvZj1RZnN2YW9qYCNsZSNKcWZvYm1nXHQ/LHBgcWpzdz1cdD9wYHFqc3cjdm1nZnEjd2tmI2ptZW92Zm1gZmBsbXdxamF2d2psbSN3bCN3a2ZMZWVqYGpibyN0ZmFwandmI2xla2ZiZ3J2YnF3ZnFwI2xlI3drZmBmbXdmcWZnI2JxbHZtZyN3a2ZqbnNvamBid2psbXAjbGUjd2tma2J1ZiNhZmZtI2dmdWZvbHNmZ0VmZ2ZxYm8jUWZzdmFvamAjbGVhZmBibmYjam1gcWZicGptZG96YGxtd2ptdmJ3amxtI2xlI3drZk1sd2YvI2tsdGZ1ZnEvI3drYndwam5qb2JxI3dsI3drYncjbGUjYGJzYmFqb2p3amZwI2xlI3drZmJgYGxxZ2JtYGYjdGp3ayN3a2ZzYnF3amBqc2Jtd3Ajam0jd2tmZXZxd2tmcSNnZnVmb2xzbmZtd3ZtZ2ZxI3drZiNnanFmYHdqbG1qcCNsZXdmbSNgbG1wamdmcWZna2pwI3psdm1kZnEjYXFsd2tmcT8sd2c9Pyx3cT0/LHdiYW9mPT9iI2t3d3MuZnJ2anU+IVsuVkIuc2t6cGpgYm8jc3Fsc2Zxd2pmcGxlI0FxandqcGsjQGxvdm5hamJrYnAjYWZmbSNgcWp3amBqeWZnK3Rqd2sjd2tmI2Z7YGZzd2psbXJ2ZnB3amxtcCNiYWx2dyN3a2ZzYnBwam1kI3drcWx2ZGsjd2tmMyEjYGZvb3NiZ2dqbWQ+ITMhI3drbHZwYm1ncCNsZSNzZmxzb2ZxZmdqcWZgd3Aja2ZxZi0jRWxxa2J1ZiNga2pvZ3FmbSN2bWdmcSYwRiYwQCxwYHFqc3cmMEYhKio4P2Ija3FmZT4ha3d3czksLHR0dC0/b2o9P2Ija3FmZT4ha3d3czksLHBqd2ZcXG1ibmYhI2BsbXdmbXc+IXdme3cuZ2ZgbHFid2psbTltbG1mcHd6b2Y+IWdqcHNvYno5I21sbWY/bmZ3YiNrd3dzLmZydmp1PiFbLm1mdCNHYndmKyotZGZ3V2puZisqI3d6c2Y+IWpuYmRmLHsuamBsbSE/LHBzYm09P3BzYm0jYG9icHA+IW9ibWR2YmRmPiFpYnVicGBxanN3dGptZ2x0LW9sYGJ3amxtLWtxZmU/YiNrcWZlPiFpYnVicGBxanN3OS4uPQ5cdD9wYHFqc3cjd3pzZj4hdz9iI2txZmU+JGt3d3M5LCx0dHQta2xxd2B2dyNqYGxtISNrcWZlPiE/LGdqdT0OXHQ/Z2p1I2BvYnBwPiE/cGBxanN3I3BxYD4ha3d3czksLCEjcWZvPiFwd3pvZnBrZmZ3ISN3PyxnanU9XHQ/cGBxanN3I3d6c2Y+LGI9Iz9iI2txZmU+IWt3d3M5LCwjYm9vbHRXcWJtcHNicWZtYHo+IVsuVkIuQGxuc2J3amFvZiEjYGxtcWZvYndqbG1wa2pzI2Fmd3RmZm1cdD8scGBxanN3PQ5cdD9wYHFqc3cjPyxiPT8sb2o9Pyx2bz0/LGdqdT1icHBsYGpid2ZnI3Rqd2sjd2tmI3NxbGRxYm5uam1kI29ibWR2YmRmPyxiPT9iI2txZmU+IWt3d3M5LCw/LGI9Pyxvaj0/b2ojYG9icHA+IWVscW4jYmB3amxtPiFrd3dzOSwsP2dqdSNwd3pvZj4hZ2pwc29iejl3enNmPiF3Znt3ISNtYm5mPiFyIT93YmFvZiN0amd3az4hMjMzJiEjYWJgaGRxbHZtZy5zbHBqd2psbTkhI2FscWdmcT4hMyEjdGpnd2s+IXFmbz4hcGtscXdgdncjamBsbSEjazU9P3ZvPT9vaj0/YiNrcWZlPiEjIz9uZndiI2t3d3MuZnJ2anU+IWBwcCEjbmZnamI+IXBgcWZmbSEjcWZwc2xtcGphb2YjZWxxI3drZiMhI3d6c2Y+IWJzc29qYGJ3amxtLCEjcHd6b2Y+IWFiYGhkcWx2bWcua3dubzgjYGticXBmdz52d2UuOyEjYm9vbHR3cWJtcHNicWZtYHo+IXB3em9mcGtmZnchI3d6c2Y+IXdmDlx0P25md2Ija3d3cy5mcnZqdT4hPT8scHNibT0/cHNibSNgb2JwcD4hMyEjYGZvb3BzYmBqbWQ+ITMhPThcdD8scGBxanN3PVx0P3BgcWpzdyNwbG5md2puZnAjYGJvb2ZnI3drZmdsZnAjbWx3I21mYGZwcGJxam96RWxxI25scWYjam1lbHFuYndqbG1idyN3a2YjYWZkam1tam1kI2xlIz8iR0xAV1pTRiNrd25vPT9rd25vc2Jxd2pgdm9icW96I2ptI3drZiN3enNmPiFramdnZm0hI21ibmY+IWlidWJwYHFqc3c5dWxqZyszKjghZmVlZmB3anVmbWZwcCNsZSN3a2YjYnZ3bGBsbnNvZndmPiFsZWUhI2RmbWZxYm9veiNgbG1wamdmcWZnPT9qbXN2dyN3enNmPiF3Znt3ISMhPT8scGBxanN3PQ5cdD9wYHFqc3d3a3FsdmRrbHZ3I3drZiN0bHFvZ2Bsbm5sbSNuanBgbG1gZnN3amxtYnBwbGBqYndqbG0jdGp3ayN3a2Y/LGdqdT1cdD8sZ2p1PVx0P2dqdSNgZ3Zxam1kI2tqcCNvamVmd2puZi9gbHFxZnBzbG1nam1kI3dsI3drZnd6c2Y+IWpuYmRmLHsuamBsbSEjYm0jam1gcWZicGptZCNtdm5hZnFnanNvbG5id2pgI3Fmb2J3amxtcGJxZiNsZXdmbSNgbG1wamdmcWZnbmZ3YiNga2JxcGZ3PiF2d2UuOyEjP2ptc3Z3I3d6c2Y+IXdme3chI2Z7Ym5zb2ZwI2ptYG92Z2Yjd2tmIT0/am5kI3BxYD4ha3d3czksLGpzYnF3amBqc2J3amxtI2ptI3drZndrZiNmcHdiYW9qcGtuZm13I2xlXHQ/LGdqdT1cdD9nanUjYG9icHA+ISVibnM4bWFwczglYm5zOG1hcHM4d2wjZ2Z3ZnFuam1mI3RrZndrZnFydmp3ZiNnamVlZnFmbXcjZXFsbm5icWhmZyN3a2YjYWZkam1tam1kZ2pwd2JtYGYjYWZ3dGZmbSN3a2ZgbG13cWphdndqbG1wI3dsI3drZmBsbWVvamB3I2Fmd3RmZm0jd2tmdGpnZm96I2BsbXBqZ2ZxZmcjd2x0YnAjbG1mI2xlI3drZiNlanFwd3Rqd2sjdWJxemptZCNnZmRxZmZwa2J1ZiNwc2Zgdm9id2ZnI3drYncrZ2xgdm5mbXctZGZ3Rm9mbmZtd3NicXdqYGpzYndqbWQjam0jd2tmbHFqZGptYm9veiNnZnVmb2xzZmdmd2IjYGticXBmdz4hdndlLjshPSN3enNmPiF3Znt3LGBwcCEjLD1cdGptd2ZxYGtibWRmYmFveiN0andrbmxxZiNgb2xwZm96I3Fmb2J3ZmdwbGBqYm8jYm1nI3Nsb2p3amBib3drYncjdGx2b2cjbHdrZnF0anBmc2Zxc2ZtZ2pgdm9icSN3bCN3a2Zwd3pvZiN3enNmPiF3Znt3LGBwcHd6c2Y+IXB2YW5qdyEjbWJuZj4hZWJuam9qZnAjcWZwamdqbWQjam1nZnVmb2xzam1kI2Bsdm13cWpmcGBsbnN2d2ZxI3NxbGRxYm5uam1kZmBsbWxuamAjZ2Z1Zm9sc25mbXdnZndmcW5qbWJ3amxtI2xlI3drZmVscSNubHFmI2ptZWxxbmJ3amxtbG0jcGZ1ZnFibyNsYGBicGpsbXBzbHF3dmR2L0ZwIytGdnFsc2Z2KjxPPFY9bDxcXD17PFE9bT1gPFY8XFw9bzxWPWw8XFw9ezxRPW09YDxWPFxcPEw8Uj1tPW08VDxVPW08VjxSPFU8UDxcXD1uPFk9bDxUPFxcPFc8UjxePFQ8UT1oPFI9bDxQPFxcPWo8VDxUPW88Uz1sPFxcPF48VzxZPFE8VD1jPFE8WTxSPF09aTxSPFg8VDxQPFI8VDxRPWg8Uj1sPFA8XFw9ajxUPWM8dDxRPWg8Uj1sPFA8XFw9ajxUPWM8TDxZPW08Uz1vPF08VzxUPFY8VDxWPFI8VzxUPWs8WT1tPW48XjxSPFQ8UT1oPFI9bDxQPFxcPWo8VD1iPW48WT1sPWw8VD1uPFI9bDxUPFQ8WDxSPW09bjxcXD1uPFI9azxRPFI0SzVoNWk0RjVkNEs0QDRDNWQ1ajRLNWg0SzRYNEY0XTRLNW80SzRGNEs1aDRLNW40RjRdNEs0QTRLNEZrd25vOCNga2JxcGZ3PlZXRS47ISNwZndXam5mbHZ3K2V2bWB3amxtKypnanBzb2J6OWptb2ptZi5hb2xgaDg/am1zdncjd3pzZj4hcHZhbmp3ISN3enNmIz4jJHdme3csaWJ1YnBgcWo/am5kI3BxYD4ha3d3czksLHR0dC0hIyFrd3dzOSwsdHR0LXQwLWxxZCxwa2xxd2B2dyNqYGxtISNrcWZlPiEhI2J2d2xgbG5zb2Z3Zj4hbGVlISM/LGI9PyxnanU9P2dqdSNgb2JwcD4/LGI9Pyxvaj1cdD9vaiNgb2JwcD4hYHBwISN3enNmPiF3Znt3LGBwcCEjP2VscW4jYmB3amxtPiFrd3dzOSwse3csYHBwISNrcWZlPiFrd3dzOSwsb2ptaCNxZm8+IWJvd2ZxbWJ3ZiEjDlx0P3BgcWpzdyN3enNmPiF3Znt3LCNsbWBvamBoPiFpYnVicGBxanN3OSttZnQjR2J3ZiotZGZ3V2puZisqfmtmamRrdz4hMiEjdGpnd2s+ITIhI1NmbHNvZiRwI1Fmc3Zhb2pgI2xlIyM/YiNrcWZlPiFrd3dzOSwsdHR0LXdme3cuZ2ZgbHFid2psbTl2bWdmcXdrZiNhZmRqbW1qbWQjbGUjd2tmIz8sZ2p1PVx0PyxnanU9XHQ/LGdqdT1cdGZwd2Jhb2pwa25mbXcjbGUjd2tmIz8sZ2p1PT8sZ2p1PT8sZ2p1PT8sZyB1amZ0c2xxd3huam0ua2ZqZGt3OVx0P3BgcWpzdyNwcWA+IWt3d3M5LCxsc3dqbG09P2xzd2psbSN1Ym92Zj5sZXdmbSNxZmVmcXFmZyN3bCNicCMsbHN3amxtPVx0P2xzd2psbSN1Ym92PyJHTEBXWlNGI2t3bm89XHQ/Ii4uWEptd2ZxbWJ3amxtYm8jQmpxc2xxdz1cdD9iI2txZmU+IWt3d3M5LCx0dHQ/LGI9P2Ija3FmZT4ha3d3czksLHRcZlRMXGZUXlxmVEVcZlReXGZVaFxmVHtcZlROXHJvSVxyb3xccm9MXHJve1xyb09ccm92XHJvdFxuQU8FR3hcYlRBXG56ayMrXHZVbQVHeCpcZkhEXGZIU1xmSFxcXGZJYVxmSEpcZklrXGZIWlxmSE1cZkhSXGZIZVxmSERcZkheXGZJZ1xmSE1cZkh5XGZJYVxmSFtcZklrXGZISFxmSWFcZkhcXFxmSHBcZkhSXGZIRFxmSHlcZkhSXGZIXFxcZklsXGZIVFxmSG5cZkhAXGZIblxmSEtcZkhTXGZISFxmSFRcZklhXGZISVxmSFJcZkhGXGZIRFxmSFJcZkhUXGZJYVxmSFlcZklsXGZIeVxmSFJcZkhcXFxmSFRcZkhuXGZIVFxmSWFcZkh5XGZIXFxcZkhPXGZIVFxmSFJcZkhCXGZIe1xmSWFcZkhcXFxmSWxcZkh2XGZIU1xmSHNcZklhXGZITFxmSWdcZkhuXGZIWVxmSFNcZkhwXGZJYVxmSHJcZkhSXGZIRFxmSGlcZkhCXGZJa1xmSFxcXGZIU1xmSHlcZkhSXGZIWVxmSFNcZkhBXGZIU1xmSERcZklhXGZIRFxmSHtcZkhSXGZITVxmSFNcZkhDXGZIUlxmSG1cZkh5XGZJYVxmSENcZklnXGZIblxmSHlcZkhTXGZIVFxmSW1cZkhcXFxmSHlcZklhXGZIW1xmSFJcZkhGXGZIVVxmSW1cZkhtXGZIdlxmSEhcZklsXGZIRlxmSWFcZkhcXFxmSEBcZkhuXGZIS1xmSERcZkhzXGZIU1xmSEZcZklhXGZIRlxmSE9cZklsXGZIeVxmSWFcZkhcXFxmSFNcZkh5XGZJa1xmSHNcZkhGXGZJYVxmSFxcXGZIUlxmSFxcXGZIblxmSEFcZkhGXGZJYVxmSFxcXGZIUlxmSEZcZklhXGZISFxmSEJcZkhSXGZIXlxmSFNcZkh5XGZJZ1xmSG5cZkhcXFxmSEdcZkhQXGZJYVxmSEhcZkhSXGZIXFxcZkhEXGZIU1xmSFxcXGZJYVxmSEJcZkhSXGZIT1xmSF5cZkhTXGZIQlxmSFNcZkhzXGZJa1xmSE1nZnBgcWpzd2psbSEjYGxtd2Ztdz4hZ2xgdm5mbXctb2xgYndqbG0tc3Fsdy1kZndGb2ZuZm13cEF6V2JkTWJuZis/IkdMQFdaU0Yja3dubz1cdD9rd25vIz9uZndiI2BrYnFwZnc+IXZ3ZS47IT05dnFvISNgbG13Zm13PiFrd3dzOSwsLWBwcCEjcWZvPiFwd3pvZnBrZmZ3IXB3em9mI3d6c2Y+IXdme3csYHBwIT13enNmPiF3Znt3LGBwcCEja3FmZT4hdDAtbHFkLDI6Ojose2t3bm8hI3tub3d6c2Y+IXdme3csaWJ1YnBgcWpzdyEjbmZ3a2xnPiFkZnchI2Jgd2psbT4hb2ptaCNxZm8+IXB3em9mcGtmZnchIyM+I2dsYHZuZm13LWRmd0ZvZm5mbXd3enNmPiFqbmJkZix7LmpgbG0hIyw9YGZvb3NiZ2dqbWQ+ITMhI2Bmb29wcy1gcHAhI3d6c2Y+IXdme3csYHBwISM/LGI9Pyxvaj0/b2o9P2Ija3FmZT4hISN0amd3az4hMiEja2ZqZGt3PiEyISE9P2Ija3FmZT4ha3d3czksLHR0dC1wd3pvZj4hZ2pwc29iejltbG1mOCE9Ym93ZnFtYndmISN3enNmPiFic3Nvai4sLFQwQCwsR1dHI1tLV05PIzItMyNmb29wc2Jgam1kPiEzISNgZm9vc2JnI3d6c2Y+IWtqZ2dmbSEjdWJvdmY+ISxiPSVtYXBzOD9wc2JtI3Fsb2Y+IXBcdD9qbXN2dyN3enNmPiFramdnZm0hI29ibWR2YmRmPiFJYnViUGBxanN3ISMjZ2xgdm5mbXctZGZ3Rm9mbmZtd3BBZD4hMyEjYGZvb3BzYmBqbWQ+ITMhI3pzZj4hd2Z7dyxgcHAhI25mZ2piPiF3enNmPiR3Znt3LGlidWJwYHFqc3ckdGp3ayN3a2YjZntgZnN3amxtI2xlI3pzZj4hd2Z7dyxgcHAhI3Fmbz4hcHcja2ZqZGt3PiEyISN0amd3az4hMiEjPiQoZm1gbGdmVlFKQGxuc2xtZm13Kz9vam1oI3Fmbz4hYm93ZnFtYndmISNcdGFsZ3ovI3dxLyNqbXN2dy8jd2Z7d25md2IjbWJuZj4hcWxhbHdwISNgbG1uZndrbGc+IXNscHchI2Jgd2psbT4hPVx0P2Ija3FmZT4ha3d3czksLHR0dC1gcHAhI3Fmbz4hcHd6b2Zwa2ZmdyEjPyxnanU9PyxnanU9P2dqdSNgb2JwcG9ibWR2YmRmPiFpYnVicGBxanN3IT1icWpiLmtqZ2dmbT4hd3F2ZiE9Lls/cWpzdyEjd3pzZj4hd2Z7dyxpYnVicG8+Mzh+KisqOFx0K2V2bWB3amxtKyp4YWJgaGRxbHZtZy5qbmJkZjkjdnFvKyxiPT8sb2o9P29qPT9iI2txZmU+IWtcblxuP29qPT9iI2txZmU+IWt3d3M5LCxid2xxISNicWpiLmtqZ2dmbT4hd3F2PSM/YiNrcWZlPiFrd3dzOSwsdHR0LW9ibWR2YmRmPiFpYnVicGBxanN3ISMsbHN3amxtPVx0P2xzd2psbSN1Ym92ZixnanU9PyxnanU9P2dqdSNgb2JwcD5xYndscSEjYnFqYi5ramdnZm0+IXdxZj4rbWZ0I0did2YqLWRmd1dqbmYrKnNscXd2ZHYvRnAjK2dsI0FxYnBqbyo8Uj1sPF88XFw8UTxUPFs8XFw9ajxUPFQ8XjxSPFs8UDxSPFo8UTxSPW09bj1gPFI8XT1sPFxcPFs8UjxePFxcPFE8VD1jPWw8WTxfPFQ9bT1uPWw8XFw9ajxUPFQ8XjxSPFs8UDxSPFo8UTxSPW09bjxUPFI8XT1jPFs8XFw9bjxZPFc9YDxRPFxcPyJHTEBXWlNGI2t3bm8jU1ZBT0pAIyFtdy5XenNmISNgbG13Zm13PiF3Znt3LD9uZndiI2t3d3MuZnJ2anU+IUBsbXdmcWJtcGp3amxtYm8sLEZNISMha3d3czk/a3dubyN7bm9tcD4ha3d3czksLHR0dC4sLFQwQCwsR1dHI1tLV05PIzItMyNXR1dHLHtrd25vMi53cWJtcGp3amxtYm8sLHR0dC10MC1scWQsV1Ese2t3bm8yLHNmIz4jJHdme3csaWJ1YnBgcWpzdyQ4P25md2IjbWJuZj4hZ2ZwYHFqc3dqbG1zYnFmbXdNbGdmLWptcGZxd0FmZWxxZj9qbXN2dyN3enNmPiFramdnZm0hI21iaXAhI3d6c2Y+IXdme3csaWJ1YnBgcWorZ2xgdm5mbXcqLXFmYmd6K2V2bWB3anBgcWpzdyN3enNmPiF3Znt3LGlidWJwam5iZGYhI2BsbXdmbXc+IWt3d3M5LCxWQi5AbG5zYndqYW9mISNgbG13Zm13PndubzgjYGticXBmdz52d2UuOyEjLD1cdG9qbWgjcWZvPiFwa2xxd2B2dyNqYGxtP29qbWgjcWZvPiFwd3pvZnBrZmZ3ISM/LHBgcWpzdz1cdD9wYHFqc3cjd3pzZj4+I2dsYHZuZm13LWBxZmJ3ZkZvZm5mbT9iI3dicWRmdz4hXFxhb2JtaCEja3FmZT4jZ2xgdm5mbXctZGZ3Rm9mbmZtd3BBam1zdncjd3pzZj4hd2Z7dyEjbWJuZj5iLXd6c2YjPiMkd2Z7dyxpYnVicGBxam1zdncjd3pzZj4ha2pnZ2ZtISNtYm5ma3dubzgjYGticXBmdz52d2UuOyEjLD1nd2chPVx0P2t3bm8je25vbXA+IWt3d3MuLCxUMEAsLEdXRyNLV05PIzctMzIjV2Ztd3BBeldiZE1ibmYrJHBgcWpzdyQqam1zdncjd3pzZj4ha2pnZ2ZtISNtYm4/cGBxanN3I3d6c2Y+IXdme3csaWJ1YnAhI3B3em9mPiFnanBzb2J6OW1sbWY4IT1nbGB2bmZtdy1kZndGb2ZuZm13QXpKZys+Z2xgdm5mbXctYHFmYndmRm9mbmZtdyskI3d6c2Y+JHdme3csaWJ1YnBgcWpzdyRqbXN2dyN3enNmPiF3Znt3ISNtYm5mPiFnLWRmd0ZvZm5mbXdwQXpXYmRNYm5mK3BtamBibyEja3FmZT4ha3d3czksLHR0dC1ALCxHV0cjS1dOTyM3LTMyI1dxYm1wanc/cHd6b2Yjd3pzZj4hd2Z7dyxgcHAhPVx0XHQ/cHd6b2Yjd3pzZj4hd2Z7dyxgcHAhPWpsbWJvLWd3ZyE9XHQ/a3dubyN7bm9tcD5rd3dzLmZydmp1PiFAbG13Zm13Lld6c2Znam1kPiEzISNgZm9vcHNiYGptZD4hMyFrd25vOCNga2JxcGZ3PnZ3ZS47ISMsPVx0I3B3em9mPiFnanBzb2J6OW1sbWY4IT0/P29qPT9iI2txZmU+IWt3d3M5LCx0dHQtI3d6c2Y+JHdme3csaWJ1YnBgcWpzdyQ9PFg8WT1jPW48WTxXPWA8UTxSPW09bjxUPW08UjxSPW48XjxZPW49bT1uPF48VDxUPFM9bDxSPFQ8WzxePFI8WD1tPW48XjxcXDxdPFk8WzxSPFM8XFw9bTxRPFI9bT1uPFRcZkhGXGZJbVxmSFRcZklhXGZISFxmSFNcZkh5XGZIUlxmSHlcZkhSXGZIblxmSHtcZklhXGZIXFxcZklrXGZIVFxmSGVcZkhEXGZJYVxmSFVcZklnXGZIblxmSERcZklrXGZIWVxmSFNcZkhLXGZIUlxmSERcZkhUXGZIQVxmSFJcZkhHXGZIU1xmSHlcZklhXGZIVFxmSFNcZkhuXGZIe1xmSFRcZkltXGZIXFxcZkh5XGZJYVxmSFtcZkhTXGZISFxmSHlcZkllXGZIRlxmSWxcZkhcXFxmSFJcZkhrXGZIc1xmSFlcZkhTXGZIcFxmSWFcZkhyXGZIUlxmSEZcZkhEXGZIeVxmSFJcZkhcXFxmSWFcZkhcXFxmSFlcZkhSXGZIZFxmSFRcZkh5XGZJYVxmSFxcXGZIU1xmSENcZkhIXGZIUicsItu3JcaMJ1QlwoUnVyXDlyVPJWclwqYmxpMlx6UmPiYqJicmXibCiMW44LC+JsatJsaSJikmXiYlJicmwoImUCYxJsKxJjMmXSZtJnUmRSZ0JkMmw48mViZWJi8mPiY2JuC9tuGdvG8mcCZAJkUmTSZQJngmQCZGJmUmw4wmNyY6JigmRCYwJkMmKSYuJkYmLSYxJigmTCZGJjHJnirPquKHsybhjbImSyY7JikmRSZIJlAmMCY/JjkmVibCgSYtJnYmYSYsJkUmKSY/Jj0mJyYnJkIm4LSuJtSDJsyWKiYqOCYlJiUmJiYlLCkmwpomPibChiY3Jl0mRiYyJj4mSiY2Jm4mMiYlJj8mwo4mMiY2JkomZyYtJjAmLCYqJkomKiZPJikmNiYoJjwmQiZOJi4mUCZAJjImLiZXJk0mJdS8woQoLCg8Jiwmz5om4aOHJi0mLCglJigmJSYoxLswJlgmRCbCgSZqJicmSiYoJi4mQiYzJlomUiZoJjMmRSZFJjzDhi3NoOG7syYlOD8mQCYsJlomQCYwJkomLCZeJngmXyY2JkMmNiZD3KziqKUmZiYtJi0mLSYtJiwmSiYyJjgmeiY4JkMmWSY4Ji0mZCbhubjDjC0mNyYxJkYmNyZ0JlcmNyZJJi4mLiZeJj3gvpzhp5MmOCg+Ji8mLybduycpJ+GBpScpJyVALyYwJiXQvuCngComKkAmQ9S915TJtNerNOC3l9ya05E24LaEJi/FuMyDWiYqJcmGz78mxLQmMcKo0rTFtCIsZywiQUFBQUtLTExLS0tLS0pKSUhISUhIR0dGRiIpOyFmdW5jdGlvbiBzZXREYXRhKGUsdCl7Y29uc3Qgbj1tLGE9cDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSlhW2VdPXRbZV07bGV0IHI9MDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7bltlXT1yO2NvbnN0IHQ9YVtlXTswIT09dCYmKHIrPWU8PCgzMSZ0KSl9Zm9yKGxldCBlPXQubGVuZ3RoO2U8MzI7KytlKW5bZV09cjt1PWV9KGQsZyk7ZnVuY3Rpb24gSW5wdXRTdHJlYW0oZSl7dGhpcy5kYXRhPW5ldyBJbnQ4QXJyYXkoMCk7dGhpcy5vZmZzZXQ9MDt0aGlzLmRhdGE9ZX1mdW5jdGlvbiByZWFkSW5wdXQoZSx0LG4sYSl7aWYobnVsbD09PWUuaW5wdXQpcmV0dXJuLTE7Y29uc3Qgcj1lLmlucHV0LHM9TWF0aC5taW4oci5vZmZzZXQrYSxyLmRhdGEubGVuZ3RoKSxpPXMtci5vZmZzZXQ7dC5zZXQoci5kYXRhLnN1YmFycmF5KHIub2Zmc2V0LHMpLG4pO3Iub2Zmc2V0Kz1pO3JldHVybiBpfWZ1bmN0aW9uIHRvVXRmOFJ1bmVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGgsbj1uZXcgSW50MzJBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7KythKW5bYV09ZS5jaGFyQ29kZUF0KGEpO3JldHVybiBufWZ1bmN0aW9uIG1ha2VFcnJvcihlLHQpe2lmKHQ+PTApcmV0dXJuIHQ7ZS5ydW5uaW5nU3RhdGU+PTAmJihlLnJ1bm5pbmdTdGF0ZT10KTt0aHJvdyBuZXcgRXJyb3IoIkJyb3RsaSBlcnJvciBjb2RlOiAiK3QpfXJldHVybiBmdW5jdGlvbiBkZWNvZGUoZSx0KXtsZXQgbj1uZXcgU3RhdGU7bi5pbnB1dD1uZXcgSW5wdXRTdHJlYW0oZSk7aW5pdFN0YXRlKG4pO2lmKHQpe2xldCBlPXQuY3VzdG9tRGljdGlvbmFyeTtlJiZmdW5jdGlvbiBhdHRhY2hEaWN0aW9uYXJ5Q2h1bmsoZSx0KXtpZigxIT09ZS5ydW5uaW5nU3RhdGUpcmV0dXJuIG1ha2VFcnJvcihlLC0yNCk7aWYoMD09PWUuY2ROdW1DaHVua3Mpe2UuY2RDaHVua3M9bmV3IEFycmF5KDE2KTtlLmNkQ2h1bmtPZmZzZXRzPW5ldyBJbnQzMkFycmF5KDE2KTtlLmNkQmxvY2tCaXRzPS0xfWlmKDE1PT09ZS5jZE51bUNodW5rcylyZXR1cm4gbWFrZUVycm9yKGUsLTI3KTtlLmNkQ2h1bmtzW2UuY2ROdW1DaHVua3NdPXQ7ZS5jZE51bUNodW5rcysrO2UuY2RUb3RhbFNpemUrPXQubGVuZ3RoO2UuY2RDaHVua09mZnNldHNbZS5jZE51bUNodW5rc109ZS5jZFRvdGFsU2l6ZTtyZXR1cm4gMH0obixlKX1sZXQgYT0wLHI9W107Zm9yKDs7KXtsZXQgZT1uZXcgSW50OEFycmF5KDE2Mzg0KTtyLnB1c2goZSk7bi5vdXRwdXQ9ZTtuLm91dHB1dE9mZnNldD0wO24ub3V0cHV0TGVuZ3RoPTE2Mzg0O24ub3V0cHV0VXNlZD0wO2RlY29tcHJlc3Mobik7YSs9bi5vdXRwdXRVc2VkO2lmKG4ub3V0cHV0VXNlZDwxNjM4NClicmVha30hZnVuY3Rpb24gY2xvc2UoZSl7aWYoMD09PWUucnVubmluZ1N0YXRlKXJldHVybiBtYWtlRXJyb3IoZSwtMjUpO2UucnVubmluZ1N0YXRlPjAmJihlLnJ1bm5pbmdTdGF0ZT0xMSk7cmV0dXJuIDB9KG4pOyFmdW5jdGlvbiBjbG9zZUlucHV0KGUpe2UuaW5wdXQ9bmV3IElucHV0U3RyZWFtKG5ldyBJbnQ4QXJyYXkoMCkpfShuKTtsZXQgcz1uZXcgSW50OEFycmF5KGEpLGk9MDtmb3IobGV0IGU9MDtlPHIubGVuZ3RoOysrZSl7bGV0IHQ9cltlXSxuPU1hdGgubWluKGEsaSsxNjM4NCktaTtuPDE2Mzg0P3Muc2V0KHQuc3ViYXJyYXkoMCxuKSxpKTpzLnNldCh0LGkpO2krPW59cmV0dXJuIHN9fSkoKTtjbGFzcyBCcm90bGlTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17I1c9ITA7Y29uc3RydWN0b3IoZSx0KXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3R9cmVhZEJsb2NrKCl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcygpLHQ9YWEobmV3IEludDhBcnJheShlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5sZW5ndGgpKTt0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpO3RoaXMuYnVmZmVyTGVuZ3RoPXRoaXMuYnVmZmVyLmxlbmd0aDt0aGlzLmVvZj0hMH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBuPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBuP24ubGVuZ3RoPD1lP246bi5zdWJhcnJheSgwLGUpOnRoaXMuZ2V0Qnl0ZXMoZSl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe2NvbnN0e2RlY29tcHJlc3NlZDplLGNvbXByZXNzZWQ6dH09YXdhaXQgdGhpcy5hc3luY0dldEJ5dGVzRnJvbURlY29tcHJlc3Npb25TdHJlYW0oImJyb3RsaSIpO2lmKGUpcmV0dXJuIGU7dGhpcy4jVz0hMTt0aGlzLnN0cmVhbT1uZXcgU3RyZWFtKHQsMCx0Lmxlbmd0aCx0aGlzLnN0cmVhbS5kaWN0KTt0aGlzLnJlc2V0KCk7cmV0dXJuIG51bGx9Z2V0IGlzQXN5bmMoKXtyZXR1cm4gdGhpcy4jV319Y29uc3QgcmE9YXN5bmMgZnVuY3Rpb24gSkJpZzIoZT17fSl7dmFyIHQ9ZSxxdWl0Xz0oZSx0KT0+e3Rocm93IHR9LG49aW1wb3J0Lm1ldGEudXJsO3RyeXtuZXcgVVJMKCIuIixuKS5ocmVmfWNhdGNoe30wO2NvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7dmFyIGEscixzLGksbyxsPWNvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlKSxmPSExLGM9ITE7ZnVuY3Rpb24gdXBkYXRlTWVtb3J5Vmlld3MoKXt2YXIgZT11LmJ1ZmZlcjtpPW5ldyBJbnQ4QXJyYXkoZSk7bmV3IEludDE2QXJyYXkoZSk7bz1uZXcgVWludDhBcnJheShlKTtuZXcgVWludDE2QXJyYXkoZSk7bmV3IEludDMyQXJyYXkoZSk7bmV3IFVpbnQzMkFycmF5KGUpO25ldyBGbG9hdDMyQXJyYXkoZSk7bmV3IEZsb2F0NjRBcnJheShlKTtuZXcgQmlnSW50NjRBcnJheShlKTtuZXcgQmlnVWludDY0QXJyYXkoZSl9Y2xhc3MgRXhpdFN0YXR1c3tuYW1lPSJFeGl0U3RhdHVzIjtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lc3NhZ2U9YFByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJHtlfSlgO3RoaXMuc3RhdHVzPWV9fXZhciBoLHUsY2FsbFJ1bnRpbWVDYWxsYmFja3M9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKHQpfSxtPVtdLGFkZE9uUG9zdFJ1bj1lPT5tLnB1c2goZSkscD1bXSxhZGRPblByZVJ1bj1lPT5wLnB1c2goZSksZD0hMCxnPTAsYj17fSxoYW5kbGVFeGNlcHRpb249ZT0+e2lmKGUgaW5zdGFuY2VvZiBFeGl0U3RhdHVzfHwidW53aW5kIj09ZSlyZXR1cm4gYTtxdWl0XygwLGUpfSxrZWVwUnVudGltZUFsaXZlPSgpPT5kfHxnPjAsX3Byb2NfZXhpdD1lPT57YT1lO2lmKCFrZWVwUnVudGltZUFsaXZlKCkpe3Qub25FeGl0Py4oZSk7Zj0hMH1xdWl0XygwLG5ldyBFeGl0U3RhdHVzKGUpKX0sX2V4aXQ9KGUsdCk9PnthPWU7X3Byb2NfZXhpdChlKX0sY2FsbFVzZXJDYWxsYmFjaz1lPT57aWYoIWYpdHJ5e3JldHVybiBlKCl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfWZpbmFsbHl7KCgpPT57aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl0cnl7X2V4aXQoYSl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX0pKCl9fSxhbGlnbk1lbW9yeT0oZSx0KT0+TWF0aC5jZWlsKGUvdCkqdCxncm93TWVtb3J5PWU9Pnt2YXIgdD0oZS11LmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNnwwO3RyeXt1Lmdyb3codCk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gMX1jYXRjaChlKXt9fTt0Lm5vRXhpdFJ1bnRpbWUmJihkPXQubm9FeGl0UnVudGltZSk7dC5wcmludCYmdC5wcmludDt0LnByaW50RXJyJiYobD10LnByaW50RXJyKTt0Lndhc21CaW5hcnkmJnQud2FzbUJpbmFyeTt0LmFyZ3VtZW50cyYmdC5hcmd1bWVudHM7dC50aGlzUHJvZ3JhbSYmdC50aGlzUHJvZ3JhbTtpZih0LnByZUluaXQpeyJmdW5jdGlvbiI9PXR5cGVvZiB0LnByZUluaXQmJih0LnByZUluaXQ9W3QucHJlSW5pdF0pO2Zvcig7dC5wcmVJbml0Lmxlbmd0aD4wOyl0LnByZUluaXQuc2hpZnQoKSgpfXQud3JpdGVBcnJheVRvTWVtb3J5PShlLHQpPT57aS5zZXQoZSx0KX07dmFyIHcsaj17ZTooKT0+ZnVuY3Rpb24gYWJvcnQoZSl7dC5vbkFib3J0Py4oZSk7bChlPSJBYm9ydGVkKCIrZSsiKSIpO2Y9ITA7ZSs9Ii4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby4iO3ZhciBuPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoZSk7cz8uKG4pO3Rocm93IG59KCIiKSxiOigpPT57ZD0hMTtnPTB9LGM6KGUsdCk9PntpZihiW2VdKXtjbGVhclRpbWVvdXQoYltlXS5pZCk7ZGVsZXRlIGJbZV19aWYoIXQpcmV0dXJuIDA7dmFyIG49c2V0VGltZW91dCgoKT0+e2RlbGV0ZSBiW2VdO2NhbGxVc2VyQ2FsbGJhY2soKCk9PmgoZSxwZXJmb3JtYW5jZS5ub3coKSkpfSx0KTtiW2VdPXtpZDpuLHRpbWVvdXRfbXM6dH07cmV0dXJuIDB9LGc6ZnVuY3Rpb24gX2NyZWF0ZUltYWdlRGF0YShlKXt0LmltYWdlRGF0YT1uZXcgVWludDhBcnJheShlKX0sZDplPT57dmFyIHQ9by5sZW5ndGgsbj0yMTQ3NDgzNjQ4O2lmKChlPj4+PTApPm4pcmV0dXJuITE7Zm9yKHZhciBhPTE7YTw9NDthKj0yKXt2YXIgcj10KigxKy4yL2EpO3I9TWF0aC5taW4ocixlKzEwMDY2MzI5Nik7dmFyIHM9TWF0aC5taW4obixhbGlnbk1lbW9yeShNYXRoLm1heChlLHIpLDY1NTM2KSk7aWYoZ3Jvd01lbW9yeShzKSlyZXR1cm4hMH1yZXR1cm4hMX0sYTpfcHJvY19leGl0LGg6ZnVuY3Rpb24gX3NldEltYWdlRGF0YShlLG4sYSxyKXtpZihhPT09bil7dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG8uc3ViYXJyYXkoZSxlK2EqcikpO3JldHVybn1jb25zdCBzPW4qcixpPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheShzKTtmb3IobGV0IHQ9ZSxyPTA7cjxzO3QrPWEscis9bilpLnNldChvLnN1YmFycmF5KHQsdCtuKSxyKX0sZjpmdW5jdGlvbiBfc2V0TGluZURhdGEoZSxuLGEpe3QuaW1hZ2VEYXRhLnNldChvLnN1YmFycmF5KGUsZStuKSxhKX19O3c9YXdhaXQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlLG4peyFmdW5jdGlvbiBhc3NpZ25XYXNtRXhwb3J0cyhlKXt0Ll9tYWxsb2M9ZS5rO3QuX2ZyZWU9ZS5sO3QuX2piaWcyX2RlY29kZT1lLm07dC5fY2NpdHRfZGVjb2RlPWUubjtoPWUubzt1PWUuaTtlLl9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGV9KHc9ZS5leHBvcnRzKTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiB3fXZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6an19KCk7cmV0dXJuIG5ldyBQcm9taXNlKChuLGEpPT57dC5pbnN0YW50aWF0ZVdhc20oZSwoZSx0KT0+e24ocmVjZWl2ZUluc3RhbmNlKGUpKX0pfSl9KCk7IWZ1bmN0aW9uIHJ1bigpeyFmdW5jdGlvbiBwcmVSdW4oKXtpZih0LnByZVJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlUnVuJiYodC5wcmVSdW49W3QucHJlUnVuXSk7Zm9yKDt0LnByZVJ1bi5sZW5ndGg7KWFkZE9uUHJlUnVuKHQucHJlUnVuLnNoaWZ0KCkpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKHApfSgpO2Z1bmN0aW9uIGRvUnVuKCl7dC5jYWxsZWRSdW49ITA7aWYoIWYpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe2M9ITA7dy5qKCl9KCk7cj8uKHQpO3Qub25SdW50aW1lSW5pdGlhbGl6ZWQ/LigpOyFmdW5jdGlvbiBwb3N0UnVuKCl7aWYodC5wb3N0UnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wb3N0UnVuJiYodC5wb3N0UnVuPVt0LnBvc3RSdW5dKTtmb3IoO3QucG9zdFJ1bi5sZW5ndGg7KWFkZE9uUG9zdFJ1bih0LnBvc3RSdW4uc2hpZnQoKSl9Y2FsbFJ1bnRpbWVDYWxsYmFja3MobSl9KCl9fWlmKHQuc2V0U3RhdHVzKXt0LnNldFN0YXR1cygiUnVubmluZy4uLiIpO3NldFRpbWVvdXQoKCk9PntzZXRUaW1lb3V0KCgpPT50LnNldFN0YXR1cygiIiksMSk7ZG9SdW4oKX0sMSl9ZWxzZSBkb1J1bigpfSgpO3JldHVybiBjP3Q6bmV3IFByb21pc2UoKGUsdCk9PntyPWU7cz10fSl9O2NsYXNzIFdhc21JbWFnZXtzdGF0aWMjWD1udWxsO3N0YXRpYyNLPW5ldyBTZXQ7c3RhdGljI0Y9ITA7c3RhdGljI0c9ITA7c3RhdGljI1Q9bnVsbDsjVj1udWxsOyMkPW51bGw7X2ZpbGVuYW1lPW51bGw7X25vV2FzbUZpbGVuYW1lPW51bGw7c3RhdGljIHNldE9wdGlvbnMoe2hhbmRsZXI6ZSx1c2VXYXNtOnQsdXNlV29ya2VyRmV0Y2g6bix3YXNtVXJsOmF9KXtXYXNtSW1hZ2UuI0Y9dDtXYXNtSW1hZ2UuI0c9bjtXYXNtSW1hZ2UuI1Q9YTtufHwoV2FzbUltYWdlLiNYPWUpfXN0YXRpYyBnZXQgaW5zdGFuY2UoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgZ2V0dGVyIGBpbnN0YW5jZWAgYWNjZXNzZWQiKX1zdGF0aWMgY2xlYW51cCgpe2Zvcihjb25zdCBlIG9mIFdhc21JbWFnZS4jSyllLiMkPW51bGx9Y29uc3RydWN0b3IoZT0hMSl7ZSYmV2FzbUltYWdlLiNLLmFkZCh0aGlzKX1hc3luYyNZKGUpe2xldCB0PW51bGw7dHJ5e3Q9KGF3YWl0IGltcG9ydCgKLyp3ZWJwYWNrSWdub3JlOiB0cnVlKi8KLypAdml0ZS1pZ25vcmUqLwpgJHtXYXNtSW1hZ2UuI1R9JHt0aGlzLl9ub1dhc21GaWxlbmFtZX1gKSkuZGVmYXVsdCgpfWNhdGNoKGUpe3dhcm4oYCNnZXRKc01vZHVsZTogJHtlfWApfWUodCl9YXN5bmMjSihlLHQsbil7dHJ5e3RoaXMuI1Z8fChXYXNtSW1hZ2UuI0c/dGhpcy4jVj1hd2FpdCBmZXRjaEJpbmFyeURhdGEoYCR7V2FzbUltYWdlLiNUfSR7dGhpcy5fZmlsZW5hbWV9YCk6dGhpcy4jVj1hd2FpdCBXYXNtSW1hZ2UuI1guc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHtraW5kOiJ3YXNtVXJsIixmaWxlbmFtZTp0aGlzLl9maWxlbmFtZX0pKTtyZXR1cm4gbigoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodGhpcy4jVix0KSkuaW5zdGFuY2UpfWNhdGNoKHQpe3dhcm4oYCNpbnN0YW50aWF0ZVdhc206ICR7dH1gKTt0aGlzLiNZKGUpO3JldHVybiBudWxsfX1fZ2V0TW9kdWxlKGUpe2lmKCF0aGlzLiMkKXtjb25zdHtwcm9taXNlOnQscmVzb2x2ZTpufT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKSxhPVt0XTtXYXNtSW1hZ2UuI0Y/YS5wdXNoKGUoe3dhcm4saW5zdGFudGlhdGVXYXNtOnRoaXMuI0ouYmluZCh0aGlzLG4pfSkpOnRoaXMuI1kobik7dGhpcy4jJD1Qcm9taXNlLnJhY2UoYSl9cmV0dXJuIHRoaXMuIyR9YXN5bmMgZGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZGVjb2RlYCBjYWxsZWQiKX19Y2xhc3MgSmJpZzJFcnJvciBleHRlbmRzIGxue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkpiaWcyRXJyb3IiKX19Y2xhc3MgSkJpZzJDQ0lUVEZheEltYWdlIGV4dGVuZHMgV2FzbUltYWdle19maWxlbmFtZT0iamJpZzIud2FzbSI7X25vV2FzbUZpbGVuYW1lPSJqYmlnMl9ub3dhc21fZmFsbGJhY2suanMiO3N0YXRpYyBnZXQgaW5zdGFuY2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsImluc3RhbmNlIixuZXcgSkJpZzJDQ0lUVEZheEltYWdlKCEwKSl9YXN5bmMgZGVjb2RlKGUsdCxuLGEscil7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRNb2R1bGUocmEpO2lmKCFzKXRocm93IG5ldyBKYmlnMkVycm9yKCJKQmlnMiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSIpO2xldCBpLG87dHJ5e2NvbnN0IGw9ZS5sZW5ndGg7aT1zLl9tYWxsb2MobCk7cy53cml0ZUFycmF5VG9NZW1vcnkoZSxpKTtpZihyKXMuX2NjaXR0X2RlY29kZShpLGwsdCxuLHIuSyxyLkVuZE9mTGluZT8xOjAsci5FbmNvZGVkQnl0ZUFsaWduPzE6MCxyLkJsYWNrSXMxPzE6MCxyLkNvbHVtbnMsci5Sb3dzKTtlbHNle2NvbnN0IGU9YT9hLmxlbmd0aDowO2lmKGU+MCl7bz1zLl9tYWxsb2MoZSk7cy53cml0ZUFycmF5VG9NZW1vcnkoYSxvKX1zLl9qYmlnMl9kZWNvZGUoaSxsLHQsbixvLGUpfWlmKCFzLmltYWdlRGF0YSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiVW5rbm93biBlcnJvciIpO2NvbnN0e2ltYWdlRGF0YTpmfT1zO3MuaW1hZ2VEYXRhPW51bGw7cmV0dXJuIGZ9ZmluYWxseXtpJiZzLl9mcmVlKGkpO28mJnMuX2ZyZWUobyl9fX1jbGFzcyBDQ0lUVEZheFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5kaWN0PWUuZGljdDtuIGluc3RhbmNlb2YgRGljdHx8KG49RGljdC5lbXB0eSk7dGhpcy5wYXJhbXM9e0s6bi5nZXQoIksiKXx8MCxFbmRPZkxpbmU6ISFuLmdldCgiRW5kT2ZMaW5lIiksRW5jb2RlZEJ5dGVBbGlnbjohIW4uZ2V0KCJFbmNvZGVkQnl0ZUFsaWduIiksQ29sdW1uczpuLmdldCgiQ29sdW1ucyIpfHwxNzI4LFJvd3M6bi5nZXQoIlJvd3MiKXx8MCxFbmRPZkJsb2NrOiEhKG4uZ2V0KCJFbmRPZkJsb2NrIik/PzEpLEJsYWNrSXMxOiEhbi5nZXQoIkJsYWNrSXMxIil9fWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1nZXQgaXNJbWFnZVN0cmVhbSgpe3JldHVybiEwfWdldCBpc0FzeW5jRGVjb2Rlcigpe3JldHVybiEwfWFzeW5jIGRlY29kZUltYWdlKGUsdCxuKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZT8/PXRoaXMuc3RyZWFtLmlzQXN5bmMmJmF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKXx8dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1hd2FpdCBKQmlnMkNDSVRURmF4SW1hZ2UuaW5zdGFuY2UuZGVjb2RlKGUsdGhpcy5kaWN0LmdldCgiVyIsIldpZHRoIiksdGhpcy5kaWN0LmdldCgiSCIsIkhlaWdodCIpLG51bGwsdGhpcy5wYXJhbXMpO3RoaXMuYnVmZmVyTGVuZ3RoPXRoaXMuYnVmZmVyLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9fWNvbnN0IHNhPW5ldyBJbnQzMkFycmF5KFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSksaWE9bmV3IEludDMyQXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsNjU1NDcsNjU1NDksNjU1NTEsNjU1NTMsMTMxMDkxLDEzMTA5NSwxMzEwOTksMTMxMTAzLDE5NjY0MywxOTY2NTEsMTk2NjU5LDE5NjY2NywyNjIyMTEsMjYyMjI3LDI2MjI0MywyNjIyNTksMzI3ODExLDMyNzg0MywzMjc4NzUsMzI3OTA3LDI1OCwyNTgsMjU4XSksb2E9bmV3IEludDMyQXJyYXkoWzEsMiwzLDQsNjU1NDEsNjU1NDMsMTMxMDgxLDEzMTA4NSwxOTY2MjUsMTk2NjMzLDI2MjE3NywyNjIxOTMsMzI3NzQ1LDMyNzc3NywzOTMzNDUsMzkzNDA5LDQ1OTAwOSw0NTkxMzcsNTI0ODAxLDUyNTA1Nyw1OTA4NDksNTkxMzYxLDY1NzQwOSw2NTg0MzMsNzI0OTkzLDcyNzA0MSw3OTQ2MjUsNzk4NzIxLDg2ODM1Myw4NzY1NDVdKSxsYT1bbmV3IEludDMyQXJyYXkoWzQ1OTAwOCw1MjQzNjgsNTI0MzA0LDUyNDU2OCw0NTkwMjQsNTI0NDAwLDUyNDMzNiw1OTAwMTYsNDU5MDE2LDUyNDM4NCw1MjQzMjAsNTg5OTg0LDUyNDI4OCw1MjQ0MTYsNTI0MzUyLDU5MDA0OCw0NTkwMTIsNTI0Mzc2LDUyNDMxMiw1ODk5NjgsNDU5MDI4LDUyNDQwOCw1MjQzNDQsNTkwMDMyLDQ1OTAyMCw1MjQzOTIsNTI0MzI4LDU5ZTQsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY0LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjQsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkyLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Niw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzYsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQwLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOCw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzIsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMCw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODgsNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUyLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Miw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzYsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA0LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OCw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI4LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Niw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjAsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgwLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NCw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTIsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc2LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTgsNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg2LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MCw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzAsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM0LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMiw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjYsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNiw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTQsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU4LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OCw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDIsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDEwLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NCw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIyLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MCw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTQsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc0LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOCw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDYsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcwLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzAsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk4LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Miw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODIsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ2LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNCw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzgsNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNyw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODUsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ5LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OSw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzMsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTkwMDAxLDUyNDI5Niw1MjQ0MjQsNTI0MzYwLDU5MDA2NSw0NTkwMTAsNTI0MzcyLDUyNDMwOCw1MjQ1NzIsNDU5MDI2LDUyNDQwNCw1MjQzNDAsNTkwMDI1LDQ1OTAxOCw1MjQzODgsNTI0MzI0LDU4OTk5Myw1MjQyOTIsNTI0NDIwLDUyNDM1Niw1OTAwNTcsNDU5MDE0LDUyNDM4MCw1MjQzMTYsNTg5OTc3LDQ1OTAzMCw1MjQ0MTIsNTI0MzQ4LDU5MDA0MSw0NTkwMjIsNTI0Mzk2LDUyNDMzMiw1OTAwMDksNTI0MzAwLDUyNDQyOCw1MjQzNjQsNTkwMDczLDQ1OTAwOSw1MjQzNzAsNTI0MzA2LDUyNDU3MCw0NTkwMjUsNTI0NDAyLDUyNDMzOCw1OTAwMjEsNDU5MDE3LDUyNDM4Niw1MjQzMjIsNTg5OTg5LDUyNDI5MCw1MjQ0MTgsNTI0MzU0LDU5MDA1Myw0NTkwMTMsNTI0Mzc4LDUyNDMxNCw1ODk5NzMsNDU5MDI5LDUyNDQxMCw1MjQzNDYsNTkwMDM3LDQ1OTAyMSw1MjQzOTQsNTI0MzMwLDU5MDAwNSw1MjQyOTgsNTI0NDI2LDUyNDM2Miw1OTAwNjksNDU5MDExLDUyNDM3NCw1MjQzMTAsNTI0NTc0LDQ1OTAyNyw1MjQ0MDYsNTI0MzQyLDU5MDAyOSw0NTkwMTksNTI0MzkwLDUyNDMyNiw1ODk5OTcsNTI0Mjk0LDUyNDQyMiw1MjQzNTgsNTkwMDYxLDQ1OTAxNSw1MjQzODIsNTI0MzE4LDU4OTk4MSw0NTkwMzEsNTI0NDE0LDUyNDM1MCw1OTAwNDUsNDU5MDIzLDUyNDM5OCw1MjQzMzQsNTkwMDEzLDUyNDMwMiw1MjQ0MzAsNTI0MzY2LDU5MDA3Nyw0NTkwMDgsNTI0MzY5LDUyNDMwNSw1MjQ1NjksNDU5MDI0LDUyNDQwMSw1MjQzMzcsNTkwMDE5LDQ1OTAxNiw1MjQzODUsNTI0MzIxLDU4OTk4Nyw1MjQyODksNTI0NDE3LDUyNDM1Myw1OTAwNTEsNDU5MDEyLDUyNDM3Nyw1MjQzMTMsNTg5OTcxLDQ1OTAyOCw1MjQ0MDksNTI0MzQ1LDU5MDAzNSw0NTkwMjAsNTI0MzkzLDUyNDMyOSw1OTAwMDMsNTI0Mjk3LDUyNDQyNSw1MjQzNjEsNTkwMDY3LDQ1OTAxMCw1MjQzNzMsNTI0MzA5LDUyNDU3Myw0NTkwMjYsNTI0NDA1LDUyNDM0MSw1OTAwMjcsNDU5MDE4LDUyNDM4OSw1MjQzMjUsNTg5OTk1LDUyNDI5Myw1MjQ0MjEsNTI0MzU3LDU5MDA1OSw0NTkwMTQsNTI0MzgxLDUyNDMxNyw1ODk5NzksNDU5MDMwLDUyNDQxMyw1MjQzNDksNTkwMDQzLDQ1OTAyMiw1MjQzOTcsNTI0MzMzLDU5MDAxMSw1MjQzMDEsNTI0NDI5LDUyNDM2NSw1OTAwNzUsNDU5MDA5LDUyNDM3MSw1MjQzMDcsNTI0NTcxLDQ1OTAyNSw1MjQ0MDMsNTI0MzM5LDU5MDAyMyw0NTkwMTcsNTI0Mzg3LDUyNDMyMyw1ODk5OTEsNTI0MjkxLDUyNDQxOSw1MjQzNTUsNTkwMDU1LDQ1OTAxMyw1MjQzNzksNTI0MzE1LDU4OTk3NSw0NTkwMjksNTI0NDExLDUyNDM0Nyw1OTAwMzksNDU5MDIxLDUyNDM5NSw1MjQzMzEsNTkwMDA3LDUyNDI5OSw1MjQ0MjcsNTI0MzYzLDU5MDA3MSw0NTkwMTEsNTI0Mzc1LDUyNDMxMSw1MjQ1NzUsNDU5MDI3LDUyNDQwNyw1MjQzNDMsNTkwMDMxLDQ1OTAxOSw1MjQzOTEsNTI0MzI3LDU4OTk5OSw1MjQyOTUsNTI0NDIzLDUyNDM1OSw1OTAwNjMsNDU5MDE1LDUyNDM4Myw1MjQzMTksNTg5OTgzLDQ1OTAzMSw1MjQ0MTUsNTI0MzUxLDU5MDA0Nyw0NTkwMjMsNTI0Mzk5LDUyNDMzNSw1OTAwMTUsNTI0MzAzLDUyNDQzMSw1MjQzNjcsNTkwMDc5XSksOV0sZmE9W25ldyBJbnQzMkFycmF5KFszMjc2ODAsMzI3Njk2LDMyNzY4OCwzMjc3MDQsMzI3Njg0LDMyNzcwMCwzMjc2OTIsMzI3NzA4LDMyNzY4MiwzMjc2OTgsMzI3NjkwLDMyNzcwNiwzMjc2ODYsMzI3NzAyLDMyNzY5NCwwLDMyNzY4MSwzMjc2OTcsMzI3Njg5LDMyNzcwNSwzMjc2ODUsMzI3NzAxLDMyNzY5MywzMjc3MDksMzI3NjgzLDMyNzY5OSwzMjc2OTEsMzI3NzA3LDMyNzY4NywzMjc3MDMsMzI3Njk1LDBdKSw1XTtjbGFzcyBGbGF0ZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXsjVz0hMDtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBuPWUuZ2V0Qnl0ZSgpLGE9ZS5nZXRCeXRlKCk7aWYoLTE9PT1ufHwtMT09PWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW06ICR7bn0sICR7YX1gKTtpZig4IT0oMTUmbikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCBpbiBmbGF0ZSBzdHJlYW06ICR7bn0sICR7YX1gKTtpZigoKG48PDgpK2EpJTMxIT0wKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQmFkIEZDSEVDSyBpbiBmbGF0ZSBzdHJlYW06ICR7bn0sICR7YX1gKTtpZigzMiZhKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRkRJQ1QgYml0IHNldCBpbiBmbGF0ZSBzdHJlYW06ICR7bn0sICR7YX1gKTt0aGlzLmNvZGVTaXplPTA7dGhpcy5jb2RlQnVmPTB9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7Y29uc3Qgbj1hd2FpdCB0aGlzLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gbj9uLmxlbmd0aDw9ZT9uOm4uc3ViYXJyYXkoMCxlKTp0aGlzLmdldEJ5dGVzKGUpfWFzeW5jIGFzeW5jR2V0Qnl0ZXMoKXtjb25zdHtkZWNvbXByZXNzZWQ6ZSxjb21wcmVzc2VkOnR9PWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlc0Zyb21EZWNvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIik7aWYoZSlyZXR1cm4gZTt0aGlzLiNXPSExO3RoaXMuc3RyZWFtPW5ldyBTdHJlYW0odCwyLHQubGVuZ3RoLHRoaXMuc3RyZWFtLmRpY3QpO3RoaXMucmVzZXQoKTtyZXR1cm4gbnVsbH1nZXQgaXNBc3luYygpe3JldHVybiB0aGlzLiNXfWdldEJpdHMoZSl7Y29uc3QgdD10aGlzLnN0cmVhbTtsZXQgbixhPXRoaXMuY29kZVNpemUscj10aGlzLmNvZGVCdWY7Zm9yKDthPGU7KXtpZigtMT09PShuPXQuZ2V0Qnl0ZSgpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTtyfD1uPDxhO2ErPTh9bj1yJigxPDxlKS0xO3RoaXMuY29kZUJ1Zj1yPj5lO3RoaXMuY29kZVNpemU9YS09ZTtyZXR1cm4gbn1nZXRDb2RlKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sbj1lWzBdLGE9ZVsxXTtsZXQgcixzPXRoaXMuY29kZVNpemUsaT10aGlzLmNvZGVCdWY7Zm9yKDtzPGEmJi0xIT09KHI9dC5nZXRCeXRlKCkpOyl7aXw9cjw8cztzKz04fWNvbnN0IG89bltpJigxPDxhKS0xXSxsPW8+PjE2LGY9NjU1MzUmbztpZihsPDF8fHM8bCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCBlbmNvZGluZyBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9aT4+bDt0aGlzLmNvZGVTaXplPXMtbDtyZXR1cm4gZn1nZW5lcmF0ZUh1ZmZtYW5UYWJsZShlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBuLGE9MDtmb3Iobj0wO248dDsrK24pZVtuXT5hJiYoYT1lW25dKTtjb25zdCByPTE8PGEscz1uZXcgSW50MzJBcnJheShyKTtmb3IobGV0IGk9MSxvPTAsbD0yO2k8PWE7KytpLG88PD0xLGw8PD0xKWZvcihsZXQgYT0wO2E8dDsrK2EpaWYoZVthXT09PWkpe2xldCBlPTAsdD1vO2ZvcihuPTA7bjxpOysrbil7ZT1lPDwxfDEmdDt0Pj49MX1mb3Iobj1lO248cjtuKz1sKXNbbl09aTw8MTZ8YTsrK299cmV0dXJuW3MsYV19I1EoZSl7aW5mbyhlKTt0aGlzLmVvZj0hMH1yZWFkQmxvY2soKXtsZXQgZSx0LG47Y29uc3QgYT10aGlzLnN0cmVhbTt0cnl7dD10aGlzLmdldEJpdHMoMyl9Y2F0Y2goZSl7dGhpcy4jUShlLm1lc3NhZ2UpO3JldHVybn0xJnQmJih0aGlzLmVvZj0hMCk7dD4+PTE7aWYoMD09PXQpe2xldCB0O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNRKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgbj10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNRKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1ufD10PDw4O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNRKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1sZXQgcj10O2lmKC0xPT09KHQ9YS5nZXRCeXRlKCkpKXt0aGlzLiNRKCJCYWQgYmxvY2sgaGVhZGVyIGluIGZsYXRlIHN0cmVhbSIpO3JldHVybn1yfD10PDw4O2lmKHIhPT0oNjU1MzUmfm4pJiYoMCE9PW58fDAhPT1yKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkJhZCB1bmNvbXByZXNzZWQgYmxvY2sgbGVuZ3RoIGluIGZsYXRlIHN0cmVhbSIpO3RoaXMuY29kZUJ1Zj0wO3RoaXMuY29kZVNpemU9MDtjb25zdCBzPXRoaXMuYnVmZmVyTGVuZ3RoLGk9cytuO2U9dGhpcy5lbnN1cmVCdWZmZXIoaSk7dGhpcy5idWZmZXJMZW5ndGg9aTtpZigwPT09biktMT09PWEucGVla0J5dGUoKSYmKHRoaXMuZW9mPSEwKTtlbHNle2NvbnN0IHQ9YS5nZXRCeXRlcyhuKTtlLnNldCh0LHMpO3QubGVuZ3RoPG4mJih0aGlzLmVvZj0hMCl9cmV0dXJufWxldCByLHM7aWYoMT09PXQpe3I9bGE7cz1mYX1lbHNle2lmKDIhPT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBibG9jayB0eXBlIGluIGZsYXRlIHN0cmVhbSIpO3tjb25zdCBlPXRoaXMuZ2V0Qml0cyg1KSsyNTcsdD10aGlzLmdldEJpdHMoNSkrMSxhPXRoaXMuZ2V0Qml0cyg0KSs0LGk9bmV3IFVpbnQ4QXJyYXkoc2EubGVuZ3RoKTtsZXQgbztmb3Iobz0wO288YTsrK28paVtzYVtvXV09dGhpcy5nZXRCaXRzKDMpO2NvbnN0IGw9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShpKTtuPTA7bz0wO2NvbnN0IGY9ZSt0LGM9bmV3IFVpbnQ4QXJyYXkoZik7bGV0IGgsdSxtO2Zvcig7bzxmOyl7Y29uc3QgZT10aGlzLmdldENvZGUobCk7aWYoMTY9PT1lKXtoPTI7dT0zO209bn1lbHNlIGlmKDE3PT09ZSl7aD0zO3U9MzttPW49MH1lbHNle2lmKDE4IT09ZSl7Y1tvKytdPW49ZTtjb250aW51ZX1oPTc7dT0xMTttPW49MH1sZXQgdD10aGlzLmdldEJpdHMoaCkrdTtmb3IoO3QtLSA+MDspY1tvKytdPW19cj10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGMuc3ViYXJyYXkoMCxlKSk7cz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKGMuc3ViYXJyYXkoZSxmKSl9fWU9dGhpcy5idWZmZXI7bGV0IGk9ZT9lLmxlbmd0aDowLG89dGhpcy5idWZmZXJMZW5ndGg7Zm9yKDs7KXtsZXQgdD10aGlzLmdldENvZGUocik7aWYodDwyNTYpe2lmKG8rMT49aSl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvKzEpO2k9ZS5sZW5ndGh9ZVtvKytdPXQ7Y29udGludWV9aWYoMjU2PT09dCl7dGhpcy5idWZmZXJMZW5ndGg9bztyZXR1cm59dC09MjU3O3Q9aWFbdF07bGV0IGE9dD4+MTY7YT4wJiYoYT10aGlzLmdldEJpdHMoYSkpO249KDY1NTM1JnQpK2E7dD10aGlzLmdldENvZGUocyk7dD1vYVt0XTthPXQ+PjE2O2E+MCYmKGE9dGhpcy5nZXRCaXRzKGEpKTtjb25zdCBsPSg2NTUzNSZ0KSthO2lmKG8rbj49aSl7ZT10aGlzLmVuc3VyZUJ1ZmZlcihvK24pO2k9ZS5sZW5ndGh9Zm9yKGxldCB0PTA7dDxuOysrdCwrK28pZVtvXT1lW28tbF19fX1jbGFzcyBKYmlnMlN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dDt0aGlzLnBhcmFtcz1ufWdldCBieXRlcygpe3JldHVybiBzaGFkb3codGhpcywiYnl0ZXMiLHRoaXMuc3RyZWFtLmdldEJ5dGVzKHRoaXMubWF5YmVMZW5ndGgpKX1lbnN1cmVCdWZmZXIoZSl7fWdldCBpc0FzeW5jRGVjb2Rlcigpe3JldHVybiEwfWdldCBpc0ltYWdlU3RyZWFtKCl7cmV0dXJuITB9c3RhdGljIHN0cmlwRmlsZUhlYWRlcihlKXtpZihlLmxlbmd0aD49OSYmMTUxPT09ZVswXSYmNzQ9PT1lWzFdJiY2Nj09PWVbMl0mJjUwPT09ZVszXSYmMTM9PT1lWzRdJiYxMD09PWVbNV0mJjI2PT09ZVs2XSYmMTA9PT1lWzddKXtjb25zdCB0PTImZVs4XT85OjEzO3JldHVybiBlLnN1YmFycmF5KHQpfXJldHVybiBlfWFzeW5jIGRlY29kZUltYWdlKGUsdCxuKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZT1KYmlnMlN0cmVhbS5zdHJpcEZpbGVIZWFkZXIoZXx8dGhpcy5ieXRlcyk7bGV0IGE9bnVsbDtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dGhpcy5wYXJhbXMuZ2V0KCJKQklHMkdsb2JhbHMiKTtlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9SmJpZzJTdHJlYW0uc3RyaXBGaWxlSGVhZGVyKGUuZ2V0Qnl0ZXMoKSkpfXRoaXMuYnVmZmVyPWF3YWl0IEpCaWcyQ0NJVFRGYXhJbWFnZS5pbnN0YW5jZS5kZWNvZGUoZSx0aGlzLmRpY3QuZ2V0KCJXaWR0aCIpLHRoaXMuZGljdC5nZXQoIkhlaWdodCIpLGEpO3RoaXMuYnVmZmVyTGVuZ3RoPXRoaXMuYnVmZmVyLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9fWNvbnN0IGNhPWFzeW5jIGZ1bmN0aW9uIE9wZW5KUEVHKGU9e30pe3ZhciB0PWUsbj0iLi90aGlzLnByb2dyYW0iLHF1aXRfPShlLHQpPT57dGhyb3cgdH0sYT1pbXBvcnQubWV0YS51cmw7dHJ5e25ldyBVUkwoIi4iLGEpLmhyZWZ9Y2F0Y2h7fTA7dmFyIHIscyxpLG8sbCxmLGMsaD1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLHU9Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpLG09ITEscD0hMTtmdW5jdGlvbiB1cGRhdGVNZW1vcnlWaWV3cygpe3ZhciBlPWcuYnVmZmVyO2w9bmV3IEludDhBcnJheShlKTtuZXcgSW50MTZBcnJheShlKTtjPW5ldyBVaW50OEFycmF5KGUpO25ldyBVaW50MTZBcnJheShlKTtvPW5ldyBJbnQzMkFycmF5KGUpO2Y9bmV3IFVpbnQzMkFycmF5KGUpO25ldyBGbG9hdDMyQXJyYXkoZSk7bmV3IEZsb2F0NjRBcnJheShlKTtuZXcgQmlnSW50NjRBcnJheShlKTtuZXcgQmlnVWludDY0QXJyYXkoZSl9Y2xhc3MgRXhpdFN0YXR1c3tuYW1lPSJFeGl0U3RhdHVzIjtjb25zdHJ1Y3RvcihlKXt0aGlzLm1lc3NhZ2U9YFByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJHtlfSlgO3RoaXMuc3RhdHVzPWV9fXZhciBkLGcsY2FsbFJ1bnRpbWVDYWxsYmFja3M9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKHQpfSxiPVtdLGFkZE9uUG9zdFJ1bj1lPT5iLnB1c2goZSksdz1bXSxhZGRPblByZVJ1bj1lPT53LnB1c2goZSksaj0hMCxrPTAseT17fSxoYW5kbGVFeGNlcHRpb249ZT0+e2lmKGUgaW5zdGFuY2VvZiBFeGl0U3RhdHVzfHwidW53aW5kIj09ZSlyZXR1cm4gcjtxdWl0XygwLGUpfSxrZWVwUnVudGltZUFsaXZlPSgpPT5qfHxrPjAsX3Byb2NfZXhpdD1lPT57cj1lO2lmKCFrZWVwUnVudGltZUFsaXZlKCkpe3Qub25FeGl0Py4oZSk7bT0hMH1xdWl0XygwLG5ldyBFeGl0U3RhdHVzKGUpKX0sX2V4aXQ9KGUsdCk9PntyPWU7X3Byb2NfZXhpdChlKX0sY2FsbFVzZXJDYWxsYmFjaz1lPT57aWYoIW0pdHJ5e3JldHVybiBlKCl9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfWZpbmFsbHl7KCgpPT57aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl0cnl7X2V4aXQocil9Y2F0Y2goZSl7aGFuZGxlRXhjZXB0aW9uKGUpfX0pKCl9fSxhbGlnbk1lbW9yeT0oZSx0KT0+TWF0aC5jZWlsKGUvdCkqdCxncm93TWVtb3J5PWU9Pnt2YXIgdD0oZS1nLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNnwwO3RyeXtnLmdyb3codCk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gMX1jYXRjaChlKXt9fSxxPXt9LGdldEVudlN0cmluZ3M9KCk9PntpZighZ2V0RW52U3RyaW5ncy5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOihnbG9iYWxUaGlzLm5hdmlnYXRvcj8ubGFuZ3VhZ2U/PyJDIikucmVwbGFjZSgiLSIsIl8iKSsiLlVURi04IixfOm58fCIuL3RoaXMucHJvZ3JhbSJ9O2Zvcih2YXIgdCBpbiBxKXZvaWQgMD09PXFbdF0/ZGVsZXRlIGVbdF06ZVt0XT1xW3RdO3ZhciBhPVtdO2Zvcih2YXIgdCBpbiBlKWEucHVzaChgJHt0fT0ke2VbdF19YCk7Z2V0RW52U3RyaW5ncy5zdHJpbmdzPWF9cmV0dXJuIGdldEVudlN0cmluZ3Muc3RyaW5nc30sc3RyaW5nVG9VVEY4PShlLHQsbik9PigoZSx0LG4sYSk9PntpZighKGE+MCkpcmV0dXJuIDA7Zm9yKHZhciByPW4scz1uK2EtMSxpPTA7aTxlLmxlbmd0aDsrK2kpe3ZhciBvPWUuY29kZVBvaW50QXQoaSk7aWYobzw9MTI3KXtpZihuPj1zKWJyZWFrO3RbbisrXT1vfWVsc2UgaWYobzw9MjA0Nyl7aWYobisxPj1zKWJyZWFrO3RbbisrXT0xOTJ8bz4+Njt0W24rK109MTI4fDYzJm99ZWxzZSBpZihvPD02NTUzNSl7aWYobisyPj1zKWJyZWFrO3RbbisrXT0yMjR8bz4+MTI7dFtuKytdPTEyOHxvPj42JjYzO3RbbisrXT0xMjh8NjMmb31lbHNle2lmKG4rMz49cylicmVhazt0W24rK109MjQwfG8+PjE4O3RbbisrXT0xMjh8bz4+MTImNjM7dFtuKytdPTEyOHxvPj42JjYzO3RbbisrXT0xMjh8NjMmbztpKyt9fXRbbl09MDtyZXR1cm4gbi1yfSkoZSxjLHQsbiksbGVuZ3RoQnl0ZXNVVEY4PWU9Pntmb3IodmFyIHQ9MCxuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciBhPWUuY2hhckNvZGVBdChuKTtpZihhPD0xMjcpdCsrO2Vsc2UgaWYoYTw9MjA0Nyl0Kz0yO2Vsc2UgaWYoYT49NTUyOTYmJmE8PTU3MzQzKXt0Kz00Oysrbn1lbHNlIHQrPTN9cmV0dXJuIHR9LHY9W251bGwsW10sW11dLFM9Z2xvYmFsVGhpcy5UZXh0RGVjb2RlciYmbmV3IFRleHREZWNvZGVyLFVURjhBcnJheVRvU3RyaW5nPShlLHQ9MCxuLGEpPT57dmFyIHI9KChlLHQsbixhKT0+e3ZhciByPXQrbjtpZihhKXJldHVybiByO2Zvcig7ZVt0XSYmISh0Pj1yKTspKyt0O3JldHVybiB0fSkoZSx0LG4sYSk7aWYoci10PjE2JiZlLmJ1ZmZlciYmUylyZXR1cm4gUy5kZWNvZGUoZS5zdWJhcnJheSh0LHIpKTtmb3IodmFyIHM9IiI7dDxyOyl7dmFyIGk9ZVt0KytdO2lmKDEyOCZpKXt2YXIgbz02MyZlW3QrK107aWYoMTkyIT0oMjI0JmkpKXt2YXIgbD02MyZlW3QrK107aWYoKGk9MjI0PT0oMjQwJmkpPygxNSZpKTw8MTJ8bzw8NnxsOig3JmkpPDwxOHxvPDwxMnxsPDw2fDYzJmVbdCsrXSk8NjU1MzYpcys9U3RyaW5nLmZyb21DaGFyQ29kZShpKTtlbHNle3ZhciBmPWktNjU1MzY7cys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxmPj4xMCw1NjMyMHwxMDIzJmYpfX1lbHNlIHMrPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJmkpPDw2fG8pfWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZShpKX1yZXR1cm4gc30scHJpbnRDaGFyPShlLHQpPT57dmFyIG49dltlXTtpZigwPT09dHx8MTA9PT10KXsoMT09PWU/aDp1KShVVEY4QXJyYXlUb1N0cmluZyhuKSk7bi5sZW5ndGg9MH1lbHNlIG4ucHVzaCh0KX0sVVRGOFRvU3RyaW5nPShlLHQsbik9PmU/VVRGOEFycmF5VG9TdHJpbmcoYyxlLHQsbik6IiI7dC5ub0V4aXRSdW50aW1lJiYoaj10Lm5vRXhpdFJ1bnRpbWUpO3QucHJpbnQmJihoPXQucHJpbnQpO3QucHJpbnRFcnImJih1PXQucHJpbnRFcnIpO3Qud2FzbUJpbmFyeSYmdC53YXNtQmluYXJ5O3QuYXJndW1lbnRzJiZ0LmFyZ3VtZW50czt0LnRoaXNQcm9ncmFtJiYobj10LnRoaXNQcm9ncmFtKTtpZih0LnByZUluaXQpeyJmdW5jdGlvbiI9PXR5cGVvZiB0LnByZUluaXQmJih0LnByZUluaXQ9W3QucHJlSW5pdF0pO2Zvcig7dC5wcmVJbml0Lmxlbmd0aD4wOyl0LnByZUluaXQuc2hpZnQoKSgpfXQud3JpdGVBcnJheVRvTWVtb3J5PShlLHQpPT57bC5zZXQoZSx0KX07dmFyIHgsQz17bTooKT0+ZnVuY3Rpb24gYWJvcnQoZSl7dC5vbkFib3J0Py4oZSk7dShlPWBBYm9ydGVkKCR7ZX0pYCk7bT0hMDtlKz0iLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiI7dmFyIG49bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihlKTtpPy4obik7dGhyb3cgbn0oIiIpLGw6KCk9PntqPSExO2s9MH0saTooZSx0KT0+e2lmKHlbZV0pe2NsZWFyVGltZW91dCh5W2VdLmlkKTtkZWxldGUgeVtlXX1pZighdClyZXR1cm4gMDt2YXIgbj1zZXRUaW1lb3V0KCgpPT57ZGVsZXRlIHlbZV07Y2FsbFVzZXJDYWxsYmFjaygoKT0+ZChlLHBlcmZvcm1hbmNlLm5vdygpKSl9LHQpO3lbZV09e2lkOm4sdGltZW91dF9tczp0fTtyZXR1cm4gMH0sZjpmdW5jdGlvbiBfY29weV9waXhlbHNfMShlLG4pe2U+Pj0yO2NvbnN0IGE9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG4pLHI9by5zdWJhcnJheShlLGUrbik7YS5zZXQocil9LGU6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzMoZSxuLGEscil7ZT4+PTI7bj4+PTI7YT4+PTI7Y29uc3Qgcz10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMypyKSxpPW8uc3ViYXJyYXkoZSxlK3IpLGw9by5zdWJhcnJheShuLG4rciksZj1vLnN1YmFycmF5KGEsYStyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtzWzMqZV09aVtlXTtzWzMqZSsxXT1sW2VdO3NbMyplKzJdPWZbZV19fSxkOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc180KGUsbixhLHIscyl7ZT4+PTI7bj4+PTI7YT4+PTI7cj4+PTI7Y29uc3QgaT10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCpzKSxsPW8uc3ViYXJyYXkoZSxlK3MpLGY9by5zdWJhcnJheShuLG4rcyksYz1vLnN1YmFycmF5KGEsYStzKSxoPW8uc3ViYXJyYXkocixyK3MpO2ZvcihsZXQgZT0wO2U8cztlKyspe2lbNCplXT1sW2VdO2lbNCplKzFdPWZbZV07aVs0KmUrMl09Y1tlXTtpWzQqZSszXT1oW2VdfX0sajplPT57dmFyIHQ9Yy5sZW5ndGgsbj0yMTQ3NDgzNjQ4O2lmKChlPj4+PTApPm4pcmV0dXJuITE7Zm9yKHZhciBhPTE7YTw9NDthKj0yKXt2YXIgcj10KigxKy4yL2EpO3I9TWF0aC5taW4ocixlKzEwMDY2MzI5Nik7dmFyIHM9TWF0aC5taW4obixhbGlnbk1lbW9yeShNYXRoLm1heChlLHIpLDY1NTM2KSk7aWYoZ3Jvd01lbW9yeShzKSlyZXR1cm4hMH1yZXR1cm4hMX0sbzooZSx0KT0+e3ZhciBuPTAsYT0wO2Zvcih2YXIgciBvZiBnZXRFbnZTdHJpbmdzKCkpe3ZhciBzPXQrbjtmW2UrYT4+Ml09cztuKz1zdHJpbmdUb1VURjgocixzLDEvMCkrMTthKz00fXJldHVybiAwfSxwOihlLHQpPT57dmFyIG49Z2V0RW52U3RyaW5ncygpO2ZbZT4+Ml09bi5sZW5ndGg7dmFyIGE9MDtmb3IodmFyIHIgb2YgbilhKz1sZW5ndGhCeXRlc1VURjgocikrMTtmW3Q+PjJdPWE7cmV0dXJuIDB9LG46ZnVuY3Rpb24gX2ZkX3NlZWsoZSx0LG4sYSl7dD0ocj10KTwtOTAwNzE5OTI1NDc0MDk5Mnx8cj45MDA3MTk5MjU0NzQwOTkyP05hTjpOdW1iZXIocik7dmFyIHI7cmV0dXJuIDcwfSxiOihlLHQsbixhKT0+e2Zvcih2YXIgcj0wLHM9MDtzPG47cysrKXt2YXIgaT1mW3Q+PjJdLG89Zlt0KzQ+PjJdO3QrPTg7Zm9yKHZhciBsPTA7bDxvO2wrKylwcmludENoYXIoZSxjW2krbF0pO3IrPW99ZlthPj4yXT1yO3JldHVybiAwfSxxOmZ1bmN0aW9uIF9ncmF5X3RvX3JnYmEoZSxuKXtlPj49Mjtjb25zdCBhPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0Km4pLHI9by5zdWJhcnJheShlLGUrbik7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7YVs0KmVdPWFbNCplKzFdPWFbNCplKzJdPXJbZV07YVs0KmUrM109MjU1fX0saDpmdW5jdGlvbiBfZ3JheWFfdG9fcmdiYShlLG4sYSl7ZT4+PTI7bj4+PTI7Y29uc3Qgcj10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoNCphKSxzPW8uc3ViYXJyYXkoZSxlK2EpLGk9by5zdWJhcnJheShuLG4rYSk7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7cls0KmVdPXJbNCplKzFdPXJbNCplKzJdPXNbZV07cls0KmUrM109aVtlXX19LGM6ZnVuY3Rpb24gX2pzUHJpbnRXYXJuaW5nKGUpe2NvbnN0IG49VVRGOFRvU3RyaW5nKGUpOyh0Lndhcm58fGNvbnNvbGUud2FybikoYE9wZW5KUEVHOiAke259YCl9LGs6X3Byb2NfZXhpdCxnOmZ1bmN0aW9uIF9yZ2JfdG9fcmdiYShlLG4sYSxyKXtlPj49MjtuPj49MjthPj49Mjtjb25zdCBzPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLGk9by5zdWJhcnJheShlLGUrciksbD1vLnN1YmFycmF5KG4sbityKSxmPW8uc3ViYXJyYXkoYSxhK3IpO2ZvcihsZXQgZT0wO2U8cjtlKyspe3NbNCplXT1pW2VdO3NbNCplKzFdPWxbZV07c1s0KmUrMl09ZltlXTtzWzQqZSszXT0yNTV9fSxhOmZ1bmN0aW9uIF9zdG9yZUVycm9yTWVzc2FnZShlKXtjb25zdCBuPVVURjhUb1N0cmluZyhlKTt0LmVycm9yTWVzc2FnZXM/dC5lcnJvck1lc3NhZ2VzKz0iXG4iK246dC5lcnJvck1lc3NhZ2VzPW59fTt4PWF3YWl0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVdhc20oKXtmdW5jdGlvbiByZWNlaXZlSW5zdGFuY2UoZSxuKXshZnVuY3Rpb24gYXNzaWduV2FzbUV4cG9ydHMoZSl7dC5fbWFsbG9jPWUudDt0Ll9mcmVlPWUudTt0Ll9qcDJfZGVjb2RlPWUudjtkPWUudztnPWUucjtlLl9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGV9KHg9ZS5leHBvcnRzKTt1cGRhdGVNZW1vcnlWaWV3cygpO3JldHVybiB4fXZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6Q319KCk7cmV0dXJuIG5ldyBQcm9taXNlKChuLGEpPT57dC5pbnN0YW50aWF0ZVdhc20oZSwoZSx0KT0+e24ocmVjZWl2ZUluc3RhbmNlKGUpKX0pfSl9KCk7IWZ1bmN0aW9uIHJ1bigpeyFmdW5jdGlvbiBwcmVSdW4oKXtpZih0LnByZVJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlUnVuJiYodC5wcmVSdW49W3QucHJlUnVuXSk7Zm9yKDt0LnByZVJ1bi5sZW5ndGg7KWFkZE9uUHJlUnVuKHQucHJlUnVuLnNoaWZ0KCkpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKHcpfSgpO2Z1bmN0aW9uIGRvUnVuKCl7dC5jYWxsZWRSdW49ITA7aWYoIW0peyFmdW5jdGlvbiBpbml0UnVudGltZSgpe3A9ITA7eC5zKCl9KCk7cz8uKHQpO3Qub25SdW50aW1lSW5pdGlhbGl6ZWQ/LigpOyFmdW5jdGlvbiBwb3N0UnVuKCl7aWYodC5wb3N0UnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wb3N0UnVuJiYodC5wb3N0UnVuPVt0LnBvc3RSdW5dKTtmb3IoO3QucG9zdFJ1bi5sZW5ndGg7KWFkZE9uUG9zdFJ1bih0LnBvc3RSdW4uc2hpZnQoKSl9Y2FsbFJ1bnRpbWVDYWxsYmFja3MoYil9KCl9fWlmKHQuc2V0U3RhdHVzKXt0LnNldFN0YXR1cygiUnVubmluZy4uLiIpO3NldFRpbWVvdXQoKCk9PntzZXRUaW1lb3V0KCgpPT50LnNldFN0YXR1cygiIiksMSk7ZG9SdW4oKX0sMSl9ZWxzZSBkb1J1bigpfSgpO3JldHVybiBwP3Q6bmV3IFByb21pc2UoKGUsdCk9PntzPWU7aT10fSl9O2NsYXNzIEpweEVycm9yIGV4dGVuZHMgbG57Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnB4RXJyb3IiKX19Y2xhc3MgSnB4SW1hZ2UgZXh0ZW5kcyBXYXNtSW1hZ2V7X2ZpbGVuYW1lPSJvcGVuanBlZy53YXNtIjtfbm9XYXNtRmlsZW5hbWU9Im9wZW5qcGVnX25vd2FzbV9mYWxsYmFjay5qcyI7c3RhdGljIGdldCBpbnN0YW5jZSgpe3JldHVybiBzaGFkb3codGhpcywiaW5zdGFuY2UiLG5ldyBKcHhJbWFnZSghMCkpfWFzeW5jIGRlY29kZShlLHtudW1Db21wb25lbnRzOnQ9NCxpc0luZGV4ZWRDb2xvcm1hcDpuPSExLHNtYXNrSW5EYXRhOmE9ITEscmVkdWNlUG93ZXI6cj0wfT17fSl7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRNb2R1bGUoY2EpO2lmKCFzKXRocm93IG5ldyBKcHhFcnJvcigiT3BlbkpQRUcgZmFpbGVkIHRvIGluaXRpYWxpemUiKTtsZXQgaTt0cnl7Y29uc3Qgbz1lLmxlbmd0aDtpPXMuX21hbGxvYyhvKTtzLndyaXRlQXJyYXlUb01lbW9yeShlLGkpO2lmKHMuX2pwMl9kZWNvZGUoaSxvLHQ+MD90OjAsISFuLCEhYSxyKSl7Y29uc3R7ZXJyb3JNZXNzYWdlczplfT1zO2lmKGUpe2RlbGV0ZSBzLmVycm9yTWVzc2FnZXM7dGhyb3cgbmV3IEpweEVycm9yKGUpfXRocm93IG5ldyBKcHhFcnJvcigiVW5rbm93biBlcnJvciIpfWNvbnN0e2ltYWdlRGF0YTpsfT1zO3MuaW1hZ2VEYXRhPW51bGw7cmV0dXJuIGx9ZmluYWxseXtpJiZzLl9mcmVlKGkpfX1zdGF0aWMgcGFyc2VJbWFnZVByb3BlcnRpZXMoZSl7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDt0Pj0wOyl7Y29uc3Qgbj10O3Q9ZS5nZXRCeXRlKCk7aWYoNjUzNjE9PT0objw8OHx0KSl7ZS5za2lwKDQpO2NvbnN0IHQ9ZS5nZXRJbnQzMigpPj4+MCxuPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MDtlLnNraXAoMTYpO3JldHVybnt3aWR0aDp0LWEsaGVpZ2h0Om4tcixiaXRzUGVyQ29tcG9uZW50OjgsY29tcG9uZW50c0NvdW50OmUuZ2V0VWludDE2KCl9fX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMubWF5YmVMZW5ndGg9dH1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31nZXQgaXNBc3luY0RlY29kZXIoKXtyZXR1cm4hMH1hc3luYyBkZWNvZGVJbWFnZShlLHQsbil7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2V8fD10aGlzLmJ5dGVzO3RoaXMuYnVmZmVyPWF3YWl0IEpweEltYWdlLmluc3RhbmNlLmRlY29kZShlLG4pO3RoaXMuYnVmZmVyTGVuZ3RoPXRoaXMuYnVmZmVyLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9Z2V0IGlzSW1hZ2VTdHJlYW0oKXtyZXR1cm4hMH19Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5jYWNoZWREYXRhPTA7dGhpcy5iaXRzQ2FjaGVkPTA7Y29uc3QgYT00MDk2LHI9e2Vhcmx5Q2hhbmdlOm4sY29kZUxlbmd0aDo5LG5leHRDb2RlOjI1OCxkaWN0aW9uYXJ5VmFsdWVzOm5ldyBVaW50OEFycmF5KGEpLGRpY3Rpb25hcnlMZW5ndGhzOm5ldyBVaW50MTZBcnJheShhKSxkaWN0aW9uYXJ5UHJldkNvZGVzOm5ldyBVaW50MTZBcnJheShhKSxjdXJyZW50U2VxdWVuY2U6bmV3IFVpbnQ4QXJyYXkoYSksY3VycmVudFNlcXVlbmNlTGVuZ3RoOjB9O2ZvcihsZXQgZT0wO2U8MjU2OysrZSl7ci5kaWN0aW9uYXJ5VmFsdWVzW2VdPWU7ci5kaWN0aW9uYXJ5TGVuZ3Roc1tlXT0xfXRoaXMubHp3U3RhdGU9cn1yZWFkQml0cyhlKXtsZXQgdD10aGlzLmJpdHNDYWNoZWQsbj10aGlzLmNhY2hlZERhdGE7Zm9yKDt0PGU7KXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGUoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybiBudWxsfW49bjw8OHxlO3QrPTh9dGhpcy5iaXRzQ2FjaGVkPXQtPWU7dGhpcy5jYWNoZWREYXRhPW47cmV0dXJuIG4+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsbixhPTEwMjQ7Y29uc3Qgcj10aGlzLmx6d1N0YXRlO2lmKCFyKXJldHVybjtjb25zdCBzPXIuZWFybHlDaGFuZ2U7bGV0IGk9ci5uZXh0Q29kZTtjb25zdCBvPXIuZGljdGlvbmFyeVZhbHVlcyxsPXIuZGljdGlvbmFyeUxlbmd0aHMsZj1yLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGM9ci5jb2RlTGVuZ3RoLGg9ci5wcmV2Q29kZTtjb25zdCB1PXIuY3VycmVudFNlcXVlbmNlO2xldCBtPXIuY3VycmVudFNlcXVlbmNlTGVuZ3RoLHA9MCxkPXRoaXMuYnVmZmVyTGVuZ3RoLGc9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSk7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhjKSxyPW0+MDtpZihlPDI1Nil7dVswXT1lO209MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7Yz05O2k9MjU4O209MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPGkpe209bFtlXTtmb3IodD1tLTEsbj1lO3Q+PTA7dC0tKXt1W3RdPW9bbl07bj1mW25dfX1lbHNlIHVbbSsrXT11WzBdfWlmKHIpe2ZbaV09aDtsW2ldPWxbaF0rMTtvW2ldPXVbMF07aSsrO2M9aStzJmkrcy0xP2M6MHxNYXRoLm1pbihNYXRoLmxvZyhpK3MpLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfWg9ZTtwKz1tO2lmKGE8cCl7ZG97YSs9NTEyfXdoaWxlKGE8cCk7Zz10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCthKX1mb3IodD0wO3Q8bTt0KyspZ1tkKytdPXVbdF19ci5uZXh0Q29kZT1pO3IuY29kZUxlbmd0aD1jO3IucHJldkNvZGU9aDtyLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1tO3RoaXMuYnVmZmVyTGVuZ3RoPWR9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIodCk7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3QgYT10aGlzLnByZWRpY3Rvcj1uLmdldCgiUHJlZGljdG9yIil8fDE7aWYoYTw9MSlyZXR1cm4gZTtpZigyIT09YSYmKGE8MTB8fGE+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2F9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PWE/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCByPXRoaXMuY29sb3JzPW4uZ2V0KCJDb2xvcnMiKXx8MSxzPXRoaXMuYml0cz1uLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LGk9dGhpcy5jb2x1bW5zPW4uZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1yKnMrNz4+Mzt0aGlzLnJvd0J5dGVzPWkqcipzKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLG49dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxhPXRoaXMuYml0cyxyPXRoaXMuY29sb3JzLHM9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IXMubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgaSxvPTAsbD0wLGY9MCxjPTAsaD10O2lmKDE9PT1hJiYxPT09cilmb3IoaT0wO2k8ZTsrK2kpe2xldCBlPXNbaV1ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O25baCsrXT1lfWVsc2UgaWYoOD09PWEpe2ZvcihpPTA7aTxyOysraSluW2grK109c1tpXTtmb3IoO2k8ZTsrK2kpe25baF09bltoLXJdK3NbaV07aCsrfX1lbHNlIGlmKDE2PT09YSl7Y29uc3QgdD0yKnI7Zm9yKGk9MDtpPHQ7KytpKW5baCsrXT1zW2ldO2Zvcig7aTxlO2krPTIpe2NvbnN0IGU9KCgyNTUmc1tpXSk8PDgpKygyNTUmc1tpKzFdKSsoKDI1NSZuW2gtdF0pPDw4KSsoMjU1Jm5baC10KzFdKTtuW2grK109ZT4+OCYyNTU7bltoKytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkocisxKSxoPSgxPDxhKS0xO2xldCB1PTAsbT10O2NvbnN0IHA9dGhpcy5jb2x1bW5zO2ZvcihpPTA7aTxwOysraSlmb3IobGV0IHQ9MDt0PHI7Kyt0KXtpZihmPGEpe289bzw8OHwyNTUmc1t1KytdO2YrPTh9ZVt0XT1lW3RdKyhvPj5mLWEpJmg7Zi09YTtsPWw8PGF8ZVt0XTtjKz1hO2lmKGM+PTgpe25bbSsrXT1sPj5jLTgmMjU1O2MtPTh9fWM+MCYmKG5bbSsrXT0obDw8OC1jKSsobyYoMTw8OC1jKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxuPXRoaXMuc3RyZWFtLmdldEJ5dGUoKSxhPXRoaXMuc3RyZWFtLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFhLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3Qgcj10aGlzLmJ1ZmZlckxlbmd0aCxzPXRoaXMuZW5zdXJlQnVmZmVyKHIrZSk7bGV0IGk9cy5zdWJhcnJheShyLWUscik7MD09PWkubGVuZ3RoJiYoaT1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sbCxmLGM9cjtzd2l0Y2gobil7Y2FzZSAwOmZvcihvPTA7bzxlOysrbylzW2MrK109YVtvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKXNbYysrXT1hW29dO2Zvcig7bzxlOysrbyl7c1tjXT1zW2MtdF0rYVtvXSYyNTU7YysrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pc1tjKytdPWlbb10rYVtvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbylzW2MrK109KGlbb10+PjEpK2Fbb107Zm9yKDtvPGU7KytvKXtzW2NdPShpW29dK3NbYy10XT4+MSkrYVtvXSYyNTU7YysrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2w9aVtvXTtmPWFbb107c1tjKytdPWwrZn1mb3IoO288ZTsrK28pe2w9aVtvXTtjb25zdCBlPWlbby10XSxuPXNbYy10XSxyPW4rbC1lO2xldCBoPXItbjtoPDAmJihoPS1oKTtsZXQgdT1yLWw7dTwwJiYodT0tdSk7bGV0IG09ci1lO208MCYmKG09LW0pO2Y9YVtvXTtzW2MrK109aDw9dSYmaDw9bT9uK2Y6dTw9bT9sK2Y6ZStmfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7bn1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxuPXRoaXMuYnVmZmVyTGVuZ3RoLGE9ZVswXTtpZihhPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihuK2ErMSk7dFtuKytdPWVbMV07aWYoYT4wKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKGEpO3Quc2V0KGUsbik7bis9YX19ZWxzZXthPTI1Ny1hO3Q9dGhpcy5lbnN1cmVCdWZmZXIobithKzEpO3QuZmlsbChlWzFdLG4sbithKTtuKz1hfXRoaXMuYnVmZmVyTGVuZ3RoPW59fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOm49ITEscmVjb3ZlcnlNb2RlOmE9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9bjt0aGlzLnJlY292ZXJ5TW9kZT1hO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBuPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT11bjspbi5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT11bil7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIG47dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gbjtjYXNlIjw8Ijpjb25zdCBhPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT11bjspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXVuKWJyZWFrO2Euc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PXVuKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gYTt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0oYSxlKTphO3RoaXMuc2hpZnQoKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLG49ZS5wb3M7bGV0IGEscixzPTA7Zm9yKDstMSE9PShhPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PXMpcz02OT09PWE/MTowO2Vsc2UgaWYoMT09PXMpcz03Mz09PWE/MjowO2Vsc2UgaWYoMzI9PT1hfHwxMD09PWF8fDEzPT09YSl7cj1lLnBvcztjb25zdCBuPWUucGVla0J5dGVzKDE1KSxpPW4ubGVuZ3RoO2lmKDA9PT1pKWJyZWFrO2ZvcihsZXQgZT0wO2U8aTtlKyspe2E9bltlXTtpZigoMCE9PWF8fDA9PT1uW2UrMV0pJiYoMTAhPT1hJiYxMyE9PWEmJihhPDMyfHxhPjEyNykpKXtzPTA7YnJlYWt9fWlmKDIhPT1zKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShlLnBlZWtCeXRlcyg3NSkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBsPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PXVuKXtzPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3Qgbj10W2UuY21kXTtpZighbil7cz0wO2JyZWFrfWlmKG4udmFyaWFibGVBcmdzP2w8PW4ubnVtQXJnczpsPT09bi5udW1BcmdzKWJyZWFrO2w9MDtjb250aW51ZX1sKyt9aWYoMj09PXMpYnJlYWt9ZWxzZSBzPTA7aWYoLTE9PT1hKXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZDogUmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aG91dCBmaW5kaW5nIGEgdmFsaWQgRUkgbWFya2VyIik7aWYocil7d2FybignLi4uIHRyeWluZyB0byByZWNvdmVyIGJ5IHVzaW5nIHRoZSBsYXN0ICJFSSIgb2NjdXJyZW5jZS4nKTtlLnNraXAoLShlLnBvcy1yKSl9fWxldCBpPTQ7ZS5za2lwKC1pKTthPWUucGVla0J5dGUoKTtlLnNraXAoaSk7aXNXaGl0ZVNwYWNlKGEpfHxpLS07cmV0dXJuIGUucG9zLWktbn1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IG4sYSxyPSExO2Zvcig7LTEhPT0obj1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PW4pe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6cj0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDphPWUuZ2V0VWludDE2KCk7YT4yP2Uuc2tpcChhLTIpOmUuc2tpcCgtMil9aWYocilicmVha31jb25zdCBzPWUucG9zLXQ7aWYoLTE9PT1uKXt3YXJuKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtcyk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIHN9ZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgbjtmb3IoOy0xIT09KG49ZS5nZXRCeXRlKCkpOylpZigxMjY9PT1uKXtjb25zdCB0PWUucG9zO249ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKG4pOyl7ZS5za2lwKCk7bj1lLnBlZWtCeXRlKCl9aWYoNjI9PT1uKXtlLnNraXAoKTticmVha31pZihlLnBvcz50KXtjb25zdCB0PWUucGVla0J5dGVzKDIpO2lmKDY5PT09dFswXSYmNzM9PT10WzFdKWJyZWFrfX1jb25zdCBhPWUucG9zLXQ7aWYoLTE9PT1uKXt3YXJuKCJJbmxpbmUgQVNDSUk4NURlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLWEpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBhfWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBuO2Zvcig7LTEhPT0obj1lLmdldEJ5dGUoKSkmJjYyIT09bjspO2NvbnN0IGE9ZS5wb3MtdDtpZigtMT09PW4pe3dhcm4oIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLWEpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBhfWlubGluZVN0cmVhbVNraXBFSShlKXtsZXQgdCxuPTA7Zm9yKDstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMD09PW4pbj02OT09PXQ/MTowO2Vsc2UgaWYoMT09PW4pbj03Mz09PXQ/MjowO2Vsc2UgaWYoMj09PW4pYnJlYWt9bWFrZUlubGluZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixuPXQuc3RyZWFtLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcjtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIklEIikmJnRoaXMuYnVmMSE9PXVuOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXVuKWJyZWFrO2FbdF09dGhpcy5nZXRPYmooZSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihyPW4ucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgcz10aGlzLiNaKGEuRnx8YS5GaWx0ZXIpO2xldCBpO2lmKHMgaW5zdGFuY2VvZiBOYW1lKWk9cy5uYW1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShzKSl7Y29uc3QgZT10aGlzLiNaKHNbMF0pO2UgaW5zdGFuY2VvZiBOYW1lJiYoaT1lLm5hbWUpfWNvbnN0IG89bi5wb3M7bGV0IGwsZjtzd2l0Y2goaSl7Y2FzZSJEQ1QiOmNhc2UiRENURGVjb2RlIjpsPXRoaXMuZmluZERDVERlY29kZUlubGluZVN0cmVhbUVuZChuKTticmVhaztjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpsPXRoaXMuZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQobik7YnJlYWs7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOmw9dGhpcy5maW5kQVNDSUlIZXhEZWNvZGVJbmxpbmVTdHJlYW1FbmQobik7YnJlYWs7ZGVmYXVsdDpsPXRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQobil9aWYobDwxZTMmJnI+MCl7Y29uc3QgZT1uLnBvcztuLnBvcz10LmJlZ2luSW5saW5lSW1hZ2VQb3M7Zj1mdW5jdGlvbiBnZXRJbmxpbmVJbWFnZUNhY2hlS2V5KGUpe2NvbnN0IHQ9W10sbj1lLmxlbmd0aDtsZXQgYT0wO2Zvcig7YTxuLTE7KXQucHVzaChlW2ErK108PDh8ZVthKytdKTthPG4mJnQucHVzaChlW2FdKTtyZXR1cm4gbisiXyIrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHQpfShuLmdldEJ5dGVzKHIrbCkpO24ucG9zPWU7Y29uc3QgYT10aGlzLmltYWdlQ2FjaGVbZl07aWYodm9pZCAwIT09YSl7dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO2EucmVzZXQoKTtyZXR1cm4gYX19Y29uc3QgYz1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcihjb25zdCBlIGluIGEpYy5zZXQoZSxhW2VdKTtsZXQgaD1uLm1ha2VTdWJTdHJlYW0obyxsLGMpO2UmJiF0aGlzLiNlZShzKSYmKGg9ZS5jcmVhdGVTdHJlYW0oaCxsKSk7aD10aGlzLmZpbHRlcihoLGMsbCxlKTtoLmRpY3Q9YztpZih2b2lkIDAhPT1mKXtoLmNhY2hlS2V5PSJpbmxpbmVfaW1nXyIrICsrdGhpcy5faW1hZ2VJZDt0aGlzLmltYWdlQ2FjaGVbZl09aH10aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGh9I1ooZSl7cmV0dXJuIHRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTplfSNlZShlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gaXNOYW1lKGUsIkNyeXB0Iik7Zm9yKGNvbnN0IHQgb2YgZSlpZihpc05hbWUodGhpcy4jWih0KSwiQ3J5cHQiKSlyZXR1cm4hMDtyZXR1cm4hMX0jdGUoZSl7Y29uc3R7c3RyZWFtOnR9PXRoaXMubGV4ZXI7dC5wb3M9ZTtjb25zdCBuPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMF0pLGE9bi5sZW5ndGgscj1bbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5NywxMDldKSxuZXcgVWludDhBcnJheShbMTE1LDExNiwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTE0LDEwMSw5N10pXSxzPTktYTtmb3IoO3QucG9zPHQuZW5kOyl7Y29uc3QgaT10LnBlZWtCeXRlcygyMDQ4KSxvPWkubGVuZ3RoLTk7aWYobzw9MClicmVhaztsZXQgbD0wO2Zvcig7bDxvOyl7bGV0IG89MDtmb3IoO288YSYmaVtsK29dPT09bltvXTspbysrO2lmKG8+PWEpe2xldCBhPSExO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8dCYmaVtsK28rcl09PT1lW3JdOylyKys7aWYocj49cyl7YT0hMDticmVha31pZihyPj10KXtpZihpc1doaXRlU3BhY2UoaVtsK28rcl0pKXtpbmZvKGBGb3VuZCAiJHtieXRlc1RvU3RyaW5nKFsuLi5uLC4uLmVdKX0iIHdoZW4gc2VhcmNoaW5nIGZvciBlbmRzdHJlYW0gY29tbWFuZC5gKTthPSEwfWJyZWFrfX1pZihhKXt0LnBvcys9bDtyZXR1cm4gdC5wb3MtZX19bCsrfXQucG9zKz1vfXJldHVybi0xfW1ha2VTdHJlYW0oZSx0KXtjb25zdCBuPXRoaXMubGV4ZXI7bGV0IGE9bi5zdHJlYW07bi5za2lwVG9OZXh0TGluZSgpO2NvbnN0IHI9YS5wb3MtMTtsZXQgcz1lLmdldCgiTGVuZ3RoIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2luZm8oYEJhZCBsZW5ndGggIiR7cyYmcy50b1N0cmluZygpfSIgaW4gc3RyZWFtLmApO3M9MH1hLnBvcz1yK3M7bi5uZXh0Q2hhcigpO2lmKHRoaXMudHJ5U2hpZnQoKSYmaXNDbWQodGhpcy5idWYyLCJlbmRzdHJlYW0iKSl0aGlzLnNoaWZ0KCk7ZWxzZXtzPXRoaXMuI3RlKHIpO2lmKHM8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIik7bi5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO2E9YS5tYWtlU3ViU3RyZWFtKHIscyxlKTtjb25zdCBpPWUuZ2V0KCJGIiwiRmlsdGVyIik7dCYmIXRoaXMuI2VlKGkpJiYoYT10LmNyZWF0ZVN0cmVhbShhLHMpKTthPXRoaXMuZmlsdGVyKGEsZSxzLHQpO2EuZGljdD1lO3JldHVybiBhfWZpbHRlcihlLHQsbixhPW51bGwpe2xldCByPXQuZ2V0KCJGIiwiRmlsdGVyIikscz10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKHIgaW5zdGFuY2VvZiBOYW1lKXtBcnJheS5pc0FycmF5KHMpJiZ3YXJuKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUsci5uYW1lLG4scyxhKX1sZXQgaT1uO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IHQ9cixuPXM7Zm9yKGxldCBvPTAsbD10Lmxlbmd0aDtvPGw7KytvKXtyPXRoaXMuI1oodFtvXSk7aWYoIShyIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgZmlsdGVyIG5hbWUgIiR7cn0iYCk7cz1udWxsO0FycmF5LmlzQXJyYXkobikmJm8gaW4gbiYmKHM9dGhpcy4jWihuW29dKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxyLm5hbWUsaSxzLGEpO2k9bnVsbH19cmV0dXJuIGV9bWFrZUZpbHRlcihlLHQsbixhLHI9bnVsbCl7aWYoMD09PW4pe3dhcm4oYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfXRyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIGE/bmV3IFByZWRpY3RvclN0cmVhbShuZXcgRmxhdGVTdHJlYW0oZSxuKSxuLGEpOm5ldyBGbGF0ZVN0cmVhbShlLG4pO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtpZihhKXthLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9YS5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBMWldTdHJlYW0oZSxuLHQpLG4sYSl9cmV0dXJuIG5ldyBMWldTdHJlYW0oZSxuLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBKcGVnU3RyZWFtKGUsbixhKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOnJldHVybiBuZXcgSnB4U3RyZWFtKGUsbik7Y2FzZSJBODUiOmNhc2UiQVNDSUk4NURlY29kZSI6cmV0dXJuIG5ldyBBc2NpaTg1U3RyZWFtKGUsbik7Y2FzZSJBSHgiOmNhc2UiQVNDSUlIZXhEZWNvZGUiOnJldHVybiBuZXcgQXNjaWlIZXhTdHJlYW0oZSxuKTtjYXNlIkNDRiI6Y2FzZSJDQ0lUVEZheERlY29kZSI6cmV0dXJuIG5ldyBDQ0lUVEZheFN0cmVhbShlLG4sYSk7Y2FzZSJSTCI6Y2FzZSJSdW5MZW5ndGhEZWNvZGUiOnJldHVybiBuZXcgUnVuTGVuZ3RoU3RyZWFtKGUsbik7Y2FzZSJKQklHMkRlY29kZSI6cmV0dXJuIG5ldyBKYmlnMlN0cmVhbShlLG4sYSk7Y2FzZSJCcm90bGlEZWNvZGUiOnJldHVybiBuZXcgQnJvdGxpU3RyZWFtKGUsbik7Y2FzZSJDcnlwdCI6e2lmKCFyKXt3YXJuKCdGaWx0ZXIgIkNyeXB0IiBpcyBtaXNzaW5nIGEgY2lwaGVyIHRyYW5zZm9ybS4nKTtyZXR1cm4gZX1jb25zdCB0PWEgaW5zdGFuY2VvZiBEaWN0P2EuZ2V0KCJOYW1lIik6bnVsbCxzPXQgaW5zdGFuY2VvZiBOYW1lP3Q6TmFtZS5nZXQoIklkZW50aXR5Iik7cmV0dXJuIHIuY3JlYXRlU3RyZWFtKGUsbixzKX19d2FybihgRmlsdGVyICIke3R9IiBpcyBub3Qgc3VwcG9ydGVkLmApO3JldHVybiBlfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYEludmFsaWQgc3RyZWFtOiAiJHtlfSJgKTtyZXR1cm4gbmV3IE51bGxTdHJlYW19fX1jb25zdCBoYT1bMSwwLDAsMCwwLDAsMCwwLDAsMSwxLDAsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwyLDAsMCwyLDIsMCwwLDAsMCwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF07ZnVuY3Rpb24gdG9IZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3PzE1JmU6ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyPzkrKDE1JmUpOi0xfWNsYXNzIExleGVye2NvbnN0cnVjdG9yKGUsdD1udWxsKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXTt0aGlzLmtub3duQ29tbWFuZHM9dDt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7dGhpcy5iZWdpbklubGluZUltYWdlUG9zPS0xfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXBlZWtDaGFyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLnBlZWtCeXRlKCl9Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcix0PTAsbj0xO2lmKDQ1PT09ZSl7bj0tMTtlPXRoaXMubmV4dENoYXIoKTs0NT09PWUmJihlPXRoaXMubmV4dENoYXIoKSl9ZWxzZSA0Mz09PWUmJihlPXRoaXMubmV4dENoYXIoKSk7aWYoMTA9PT1lfHwxMz09PWUpZG97ZT10aGlzLm5leHRDaGFyKCl9d2hpbGUoMTA9PT1lfHwxMz09PWUpO2lmKDQ2PT09ZSl7dD0xMDtlPXRoaXMubmV4dENoYXIoKX1pZihlPDQ4fHxlPjU3KXtjb25zdCB0PWBJbnZhbGlkIG51bWJlcjogJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfSAoY2hhckNvZGUgJHtlfSlgO2lmKGlzV2hpdGVTcGFjZShlKXx8NDA9PT1lfHw2MD09PWV8fC0xPT09ZSl7aW5mbyhgTGV4ZXIuZ2V0TnVtYmVyIC0gIiR7dH0iLmApO3JldHVybiAwfXRocm93IG5ldyBGb3JtYXRFcnJvcih0KX1sZXQgYT1lLTQ4O2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXswIT09dCYmKHQqPTEwKTthPTEwKmErKGUtNDgpfWVsc2UgaWYoNDY9PT1lKXtpZigwIT09dClicmVhazt0PTF9ZWxzZXtpZig0NSE9PWUpYnJlYWs7d2FybigiQmFkbHkgZm9ybWF0dGVkIG51bWJlcjogbWludXMgc2lnbiBpbiB0aGUgbWlkZGxlIil9MCE9PXQmJihhLz10KTtyZXR1cm4gbiphfWdldFN0cmluZygpe2xldCBlPTEsdD0hMTtjb25zdCBuPXRoaXMuc3RyQnVmO24ubGVuZ3RoPTA7bGV0IGE9dGhpcy5uZXh0Q2hhcigpO2Zvcig7Oyl7bGV0IHI9ITE7c3dpdGNoKDB8YSl7Y2FzZS0xOndhcm4oIlVudGVybWluYXRlZCBzdHJpbmciKTt0PSEwO2JyZWFrO2Nhc2UgNDA6KytlO24ucHVzaCgiKCIpO2JyZWFrO2Nhc2UgNDE6aWYoMD09PS0tZSl7dGhpcy5uZXh0Q2hhcigpO3Q9ITB9ZWxzZSBuLnB1c2goIikiKTticmVhaztjYXNlIDkyOmE9dGhpcy5uZXh0Q2hhcigpO3N3aXRjaChhKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSAxMTA6bi5wdXNoKCJcbiIpO2JyZWFrO2Nhc2UgMTE0Om4ucHVzaCgiXHIiKTticmVhaztjYXNlIDExNjpuLnB1c2goIlx0Iik7YnJlYWs7Y2FzZSA5ODpuLnB1c2goIlxiIik7YnJlYWs7Y2FzZSAxMDI6bi5wdXNoKCJcZiIpO2JyZWFrO2Nhc2UgOTI6Y2FzZSA0MDpjYXNlIDQxOm4ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTticmVhaztjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6bGV0IGU9MTUmYTthPXRoaXMubmV4dENoYXIoKTtyPSEwO2lmKGE+PTQ4JiZhPD01NSl7ZT0oZTw8MykrKDE1JmEpO2E9dGhpcy5uZXh0Q2hhcigpO2lmKGE+PTQ4JiZhPD01NSl7cj0hMTtlPShlPDwzKSsoMTUmYSl9fW4ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTticmVhaztjYXNlIDEzOjEwPT09dGhpcy5wZWVrQ2hhcigpJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWs7Y2FzZSAxMDpicmVhaztkZWZhdWx0Om4ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1icmVhaztkZWZhdWx0Om4ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1pZih0KWJyZWFrO3J8fChhPXRoaXMubmV4dENoYXIoKSl9cmV0dXJuIG4uam9pbigiIil9Z2V0TmFtZSgpe2xldCBlLHQ7Y29uc3Qgbj10aGlzLnN0ckJ1ZjtuLmxlbmd0aD0wO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWhhW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKGhhW2VdKXt3YXJuKCJMZXhlcl9nZXROYW1lOiBOVU1CRVIgU0lHTiAoIykgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgaGV4YWRlY2ltYWwgbnVtYmVyLiIpO24ucHVzaCgiIyIpO2JyZWFrfWNvbnN0IGE9dG9IZXhEaWdpdChlKTtpZigtMSE9PWEpe3Q9ZTtlPXRoaXMubmV4dENoYXIoKTtjb25zdCByPXRvSGV4RGlnaXQoZSk7aWYoLTE9PT1yKXt3YXJuKGBMZXhlcl9nZXROYW1lOiBJbGxlZ2FsIGRpZ2l0ICgke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSBpbiBoZXhhZGVjaW1hbCBudW1iZXIuYCk7bi5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtpZihoYVtlXSlicmVhaztuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29udGludWV9bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NHxyKSl9ZWxzZSBuLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfWVsc2Ugbi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO24ubGVuZ3RoPjEyNyYmd2FybihgTmFtZSB0b2tlbiBpcyBsb25nZXIgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzcGVjOiAke24ubGVuZ3RofWApO3JldHVybiBOYW1lLmdldChuLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT09dGhpcy5faGV4U3RyaW5nTnVtV2FybisrP3RoaXMuX2hleFN0cmluZ051bVdhcm4+NXx8d2FybihgZ2V0SGV4U3RyaW5nIC0gaWdub3JpbmcgaW52YWxpZCBjaGFyYWN0ZXI6ICR7ZX1gKTp3YXJuKCJnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBhZGRpdGlvbmFsIGludmFsaWQgY2hhcmFjdGVycy4iKX1nZXRIZXhTdHJpbmcoKXtjb25zdCBlPXRoaXMuc3RyQnVmO2UubGVuZ3RoPTA7bGV0IHQ9dGhpcy5jdXJyZW50Q2hhcixuPS0xLGE9LTE7dGhpcy5faGV4U3RyaW5nTnVtV2Fybj0wO2Zvcig7Oyl7aWYodDwwKXt3YXJuKCJVbnRlcm1pbmF0ZWQgaGV4IHN0cmluZyIpO2JyZWFrfWlmKDYyPT09dCl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEhPT1oYVt0XSl7YT10b0hleERpZ2l0KHQpO2lmKC0xPT09YSl0aGlzLl9oZXhTdHJpbmdXYXJuKHQpO2Vsc2UgaWYoLTE9PT1uKW49YTtlbHNle2UucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG48PDR8YSkpO249LTF9dD10aGlzLm5leHRDaGFyKCl9ZWxzZSB0PXRoaXMubmV4dENoYXIoKX0tMSE9PW4mJmUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG48PDQpKTtyZXR1cm4gZS5qb2luKCIiKX1nZXRPYmooKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZih0PDApcmV0dXJuIHVuO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoMSE9PWhhW3RdKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIHRoaXMuZ2V0TnVtYmVyKCk7Y2FzZSA0MDpyZXR1cm4gdGhpcy5nZXRTdHJpbmcoKTtjYXNlIDQ3OnJldHVybiB0aGlzLmdldE5hbWUoKTtjYXNlIDkxOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiWyIpO2Nhc2UgOTM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJdIik7Y2FzZSA2MDp0PXRoaXMubmV4dENoYXIoKTtpZig2MD09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPDwiKX1yZXR1cm4gdGhpcy5nZXRIZXhTdHJpbmcoKTtjYXNlIDYyOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYyPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI+PiIpfXJldHVybiBDbWQuZ2V0KCI+Iik7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ7Iik7Y2FzZSAxMjU6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJ9Iik7Y2FzZSA0MTp0aGlzLm5leHRDaGFyKCk7dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbGxlZ2FsIGNoYXJhY3RlcjogJHt0fWApfWxldCBuPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYodDwzMnx8dD4xMjcpe2NvbnN0IGU9dGhpcy5wZWVrQ2hhcigpO2lmKGU+PTMyJiZlPD0xMjcpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldChuKX19Y29uc3QgYT10aGlzLmtub3duQ29tbWFuZHM7bGV0IHI9dm9pZCAwIT09YT8uW25dO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmIWhhW3RdOyl7Y29uc3QgZT1uK1N0cmluZy5mcm9tQ2hhckNvZGUodCk7aWYociYmdm9pZCAwPT09YVtlXSlicmVhaztpZigxMjg9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYENvbW1hbmQgdG9rZW4gdG9vIGxvbmc6ICR7bi5sZW5ndGh9YCk7bj1lO3I9dm9pZCAwIT09YT8uW25dfWlmKCJ0cnVlIj09PW4pcmV0dXJuITA7aWYoImZhbHNlIj09PW4pcmV0dXJuITE7aWYoIm51bGwiPT09bilyZXR1cm4gbnVsbDsiQkkiPT09biYmKHRoaXMuYmVnaW5JbmxpbmVJbWFnZVBvcz10aGlzLnN0cmVhbS5wb3MpO3JldHVybiBDbWQuZ2V0KG4pfXNraXBUb05leHRMaW5lKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtmb3IoO2U+PTA7KXtpZigxMz09PWUpe2U9dGhpcy5uZXh0Q2hhcigpOzEwPT09ZSYmdGhpcy5uZXh0Q2hhcigpO2JyZWFrfWlmKDEwPT09ZSl7dGhpcy5uZXh0Q2hhcigpO2JyZWFrfWU9dGhpcy5uZXh0Q2hhcigpfX19Y2xhc3MgTGluZWFyaXphdGlvbntzdGF0aWMgY3JlYXRlKGUpe2Z1bmN0aW9uIGdldEludChlLHQsbj0hMSl7Y29uc3QgYT1lLmdldCh0KTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpJiYobj9hPj0wOmE+MCkpcmV0dXJuIGE7dGhyb3cgbmV3IEVycm9yKGBUaGUgIiR7dH0iIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoZSkseHJlZjpudWxsfSksbj10LmdldE9iaigpLGE9dC5nZXRPYmooKSxyPXQuZ2V0T2JqKCkscz10LmdldE9iaigpO2xldCBpLG87aWYoIShOdW1iZXIuaXNJbnRlZ2VyKG4pJiZOdW1iZXIuaXNJbnRlZ2VyKGEpJiZpc0NtZChyLCJvYmoiKSYmcyBpbnN0YW5jZW9mIERpY3QmJiJudW1iZXIiPT10eXBlb2YoaT1zLmdldCgiTGluZWFyaXplZCIpKSYmaT4wKSlyZXR1cm4gbnVsbDtpZigobz1nZXRJbnQocywiTCIpKSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcignVGhlICJMIiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBkb2VzIG5vdCBlcXVhbCB0aGUgc3RyZWFtIGxlbmd0aC4nKTtyZXR1cm57bGVuZ3RoOm8saGludHM6ZnVuY3Rpb24gZ2V0SGludHMoZSl7Y29uc3QgdD1lLmdldCgiSCIpO2xldCBuO2lmKEFycmF5LmlzQXJyYXkodCkmJigyPT09KG49dC5sZW5ndGgpfHw0PT09bikpe2ZvcihsZXQgZT0wO2U8bjtlKyspe2NvbnN0IG49dFtlXTtpZighKE51bWJlci5pc0ludGVnZXIobikmJm4+MCkpdGhyb3cgbmV3IEVycm9yKGBIaW50ICgke2V9KSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuYCl9cmV0dXJuIHR9dGhyb3cgbmV3IEVycm9yKCJIaW50IGFycmF5IGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX0ocyksb2JqZWN0TnVtYmVyRmlyc3Q6Z2V0SW50KHMsIk8iKSxlbmRGaXJzdDpnZXRJbnQocywiRSIpLG51bVBhZ2VzOmdldEludChzLCJOIiksbWFpblhSZWZFbnRyaWVzT2Zmc2V0OmdldEludChzLCJUIikscGFnZUZpcnN0OnMuaGFzKCJQIik/Z2V0SW50KHMsIlAiLCEwKTowfX19Y29uc3QgdWE9WyJBZG9iZS1HQjEtVUNTMiIsIkFkb2JlLUNOUzEtVUNTMiIsIkFkb2JlLUphcGFuMS1VQ1MyIiwiQWRvYmUtS29yZWExLVVDUzIiLCI3OC1FVUMtSCIsIjc4LUVVQy1WIiwiNzgtSCIsIjc4LVJLU0otSCIsIjc4LVJLU0otViIsIjc4LVYiLCI3OG1zLVJLU0otSCIsIjc4bXMtUktTSi1WIiwiODNwdi1SS1NKLUgiLCI5MG1zLVJLU0otSCIsIjkwbXMtUktTSi1WIiwiOTBtc3AtUktTSi1IIiwiOTBtc3AtUktTSi1WIiwiOTBwdi1SS1NKLUgiLCI5MHB2LVJLU0otViIsIkFkZC1IIiwiQWRkLVJLU0otSCIsIkFkZC1SS1NKLVYiLCJBZGQtViIsIkFkb2JlLUNOUzEtMCIsIkFkb2JlLUNOUzEtMSIsIkFkb2JlLUNOUzEtMiIsIkFkb2JlLUNOUzEtMyIsIkFkb2JlLUNOUzEtNCIsIkFkb2JlLUNOUzEtNSIsIkFkb2JlLUNOUzEtNiIsIkFkb2JlLUdCMS0wIiwiQWRvYmUtR0IxLTEiLCJBZG9iZS1HQjEtMiIsIkFkb2JlLUdCMS0zIiwiQWRvYmUtR0IxLTQiLCJBZG9iZS1HQjEtNSIsIkFkb2JlLUphcGFuMS0wIiwiQWRvYmUtSmFwYW4xLTEiLCJBZG9iZS1KYXBhbjEtMiIsIkFkb2JlLUphcGFuMS0zIiwiQWRvYmUtSmFwYW4xLTQiLCJBZG9iZS1KYXBhbjEtNSIsIkFkb2JlLUphcGFuMS02IiwiQWRvYmUtS29yZWExLTAiLCJBZG9iZS1Lb3JlYTEtMSIsIkFkb2JlLUtvcmVhMS0yIiwiQjUtSCIsIkI1LVYiLCJCNXBjLUgiLCJCNXBjLVYiLCJDTlMtRVVDLUgiLCJDTlMtRVVDLVYiLCJDTlMxLUgiLCJDTlMxLVYiLCJDTlMyLUgiLCJDTlMyLVYiLCJFVEhLLUI1LUgiLCJFVEhLLUI1LVYiLCJFVGVuLUI1LUgiLCJFVGVuLUI1LVYiLCJFVGVubXMtQjUtSCIsIkVUZW5tcy1CNS1WIiwiRVVDLUgiLCJFVUMtViIsIkV4dC1IIiwiRXh0LVJLU0otSCIsIkV4dC1SS1NKLVYiLCJFeHQtViIsIkdCLUVVQy1IIiwiR0ItRVVDLVYiLCJHQi1IIiwiR0ItViIsIkdCSy1FVUMtSCIsIkdCSy1FVUMtViIsIkdCSzJLLUgiLCJHQksySy1WIiwiR0JLcC1FVUMtSCIsIkdCS3AtRVVDLVYiLCJHQlQtRVVDLUgiLCJHQlQtRVVDLVYiLCJHQlQtSCIsIkdCVC1WIiwiR0JUcGMtRVVDLUgiLCJHQlRwYy1FVUMtViIsIkdCcGMtRVVDLUgiLCJHQnBjLUVVQy1WIiwiSCIsIkhLZGxhLUI1LUgiLCJIS2RsYS1CNS1WIiwiSEtkbGItQjUtSCIsIkhLZGxiLUI1LVYiLCJIS2djY3MtQjUtSCIsIkhLZ2Njcy1CNS1WIiwiSEttMzE0LUI1LUgiLCJIS20zMTQtQjUtViIsIkhLbTQ3MS1CNS1IIiwiSEttNDcxLUI1LVYiLCJIS3Njcy1CNS1IIiwiSEtzY3MtQjUtViIsIkhhbmtha3UiLCJIaXJhZ2FuYSIsIktTQy1FVUMtSCIsIktTQy1FVUMtViIsIktTQy1IIiwiS1NDLUpvaGFiLUgiLCJLU0MtSm9oYWItViIsIktTQy1WIiwiS1NDbXMtVUhDLUgiLCJLU0Ntcy1VSEMtSFctSCIsIktTQ21zLVVIQy1IVy1WIiwiS1NDbXMtVUhDLVYiLCJLU0NwYy1FVUMtSCIsIktTQ3BjLUVVQy1WIiwiS2F0YWthbmEiLCJOV1AtSCIsIk5XUC1WIiwiUktTSi1IIiwiUktTSi1WIiwiUm9tYW4iLCJVbmlDTlMtVUNTMi1IIiwiVW5pQ05TLVVDUzItViIsIlVuaUNOUy1VVEYxNi1IIiwiVW5pQ05TLVVURjE2LVYiLCJVbmlDTlMtVVRGMzItSCIsIlVuaUNOUy1VVEYzMi1WIiwiVW5pQ05TLVVURjgtSCIsIlVuaUNOUy1VVEY4LVYiLCJVbmlHQi1VQ1MyLUgiLCJVbmlHQi1VQ1MyLVYiLCJVbmlHQi1VVEYxNi1IIiwiVW5pR0ItVVRGMTYtViIsIlVuaUdCLVVURjMyLUgiLCJVbmlHQi1VVEYzMi1WIiwiVW5pR0ItVVRGOC1IIiwiVW5pR0ItVVRGOC1WIiwiVW5pSklTLVVDUzItSCIsIlVuaUpJUy1VQ1MyLUhXLUgiLCJVbmlKSVMtVUNTMi1IVy1WIiwiVW5pSklTLVVDUzItViIsIlVuaUpJUy1VVEYxNi1IIiwiVW5pSklTLVVURjE2LVYiLCJVbmlKSVMtVVRGMzItSCIsIlVuaUpJUy1VVEYzMi1WIiwiVW5pSklTLVVURjgtSCIsIlVuaUpJUy1VVEY4LVYiLCJVbmlKSVMyMDA0LVVURjE2LUgiLCJVbmlKSVMyMDA0LVVURjE2LVYiLCJVbmlKSVMyMDA0LVVURjMyLUgiLCJVbmlKSVMyMDA0LVVURjMyLVYiLCJVbmlKSVMyMDA0LVVURjgtSCIsIlVuaUpJUzIwMDQtVVRGOC1WIiwiVW5pSklTUHJvLVVDUzItSFctViIsIlVuaUpJU1Byby1VQ1MyLVYiLCJVbmlKSVNQcm8tVVRGOC1WIiwiVW5pSklTWDAyMTMtVVRGMzItSCIsIlVuaUpJU1gwMjEzLVVURjMyLVYiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItSCIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1WIiwiVW5pS1MtVUNTMi1IIiwiVW5pS1MtVUNTMi1WIiwiVW5pS1MtVVRGMTYtSCIsIlVuaUtTLVVURjE2LVYiLCJVbmlLUy1VVEYzMi1IIiwiVW5pS1MtVVRGMzItViIsIlVuaUtTLVVURjgtSCIsIlVuaUtTLVVURjgtViIsIlYiLCJXUC1TeW1ib2wiXSxtYT0yKioyNC0xO2NsYXNzIENNYXB7Y29uc3RydWN0b3IoZT0hMSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXM9W1tdLFtdLFtdLFtdXTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcz0wO3RoaXMuX21hcD1bXTt0aGlzLm5hbWU9IiI7dGhpcy52ZXJ0aWNhbD0hMTt0aGlzLnVzZUNNYXA9bnVsbDt0aGlzLmJ1aWx0SW5DTWFwPWV9YWRkQ29kZXNwYWNlUmFuZ2UoZSx0LG4pe3RoaXMuY29kZXNwYWNlUmFuZ2VzW2UtMV0ucHVzaCh0LG4pO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzKyt9bWFwQ2lkUmFuZ2UoZSx0LG4pe2lmKHQtZT5tYSl0aHJvdyBuZXcgRXJyb3IoIm1hcENpZFJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2Zvcig7ZTw9dDspdGhpcy5fbWFwW2UrK109bisrfW1hcEJmUmFuZ2UoZSx0LG4pe2lmKHQtZT5tYSl0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3QgYT1uLmxlbmd0aC0xO2Zvcig7ZTw9dDspe3RoaXMuX21hcFtlKytdPW47Y29uc3QgdD1uLmNoYXJDb2RlQXQoYSkrMTt0PjI1NT9uPW4uc3Vic3RyaW5nKDAsYS0xKStTdHJpbmcuZnJvbUNoYXJDb2RlKG4uY2hhckNvZGVBdChhLTEpKzEpKyJcMCI6bj1uLnN1YnN0cmluZygwLGEpK1N0cmluZy5mcm9tQ2hhckNvZGUodCl9fW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxuKXtpZih0LWU+bWEpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlVG9BcnJheSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCBhPW4ubGVuZ3RoO2xldCByPTA7Zm9yKDtlPD10JiZyPGE7KXt0aGlzLl9tYXBbZV09bltyKytdOysrZX19bWFwT25lKGUsdCl7dGhpcy5fbWFwW2VdPXR9bG9va3VwKGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y29udGFpbnMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1mb3JFYWNoKGUpe2NvbnN0IHQ9dGhpcy5fbWFwLG49dC5sZW5ndGg7aWYobjw9NjU1MzYpZm9yKGxldCBhPTA7YTxuO2ErKyl2b2lkIDAhPT10W2FdJiZlKGEsdFthXSk7ZWxzZSBmb3IoY29uc3QgbiBpbiB0KWUobix0W25dKX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBuIGluIHQpaWYodFtuXT09PWUpcmV0dXJuIDB8bjtyZXR1cm4tMX1nZXRNYXAoKXtyZXR1cm4gdGhpcy5fbWFwfXJlYWRDaGFyQ29kZShlLHQsbil7bGV0IGE9MDtjb25zdCByPXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgcz0wLGk9ci5sZW5ndGg7czxpO3MrKyl7YT0oYTw8OHxlLmNoYXJDb2RlQXQodCtzKSk+Pj4wO2NvbnN0IGk9cltzXTtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDspe2NvbnN0IHQ9aVtlKytdLHI9aVtlKytdO2lmKGE+PXQmJmE8PXIpe24uY2hhcmNvZGU9YTtuLmxlbmd0aD1zKzE7cmV0dXJufX19bi5jaGFyY29kZT0wO24ubGVuZ3RoPTF9Z2V0Q2hhckNvZGVMZW5ndGgoZSl7Y29uc3QgdD10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IG49MCxhPXQubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9dFtuXTtmb3IobGV0IHQ9MCxyPWEubGVuZ3RoO3Q8cjspe2NvbnN0IHI9YVt0KytdLHM9YVt0KytdO2lmKGU+PXImJmU8PXMpcmV0dXJuIG4rMX19cmV0dXJuIDF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWdldCBpc0lkZW50aXR5Q01hcCgpe2lmKCJJZGVudGl0eS1IIiE9PXRoaXMubmFtZSYmIklkZW50aXR5LVYiIT09dGhpcy5uYW1lKXJldHVybiExO2lmKDY1NTM2IT09dGhpcy5fbWFwLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPDY1NTM2O2UrKylpZih0aGlzLl9tYXBbZV0hPT1lKXJldHVybiExO3JldHVybiEwfX1jbGFzcyBJZGVudGl0eUNNYXAgZXh0ZW5kcyBDTWFwe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoKTt0aGlzLnZlcnRpY2FsPWU7dGhpcy5hZGRDb2Rlc3BhY2VSYW5nZSh0LDAsNjU1MzUpfW1hcENpZFJhbmdlKGUsdCxuKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZFJhbmdlIil9bWFwQmZSYW5nZShlLHQsbil7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlIil9bWFwQmZSYW5nZVRvQXJyYXkoZSx0LG4pe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZVRvQXJyYXkiKX1tYXBPbmUoZSx0KXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcENpZE9uZSIpfWxvb2t1cChlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTp2b2lkIDB9Y29udGFpbnMoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1fWZvckVhY2goZSl7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWUodCx0KX1jaGFyQ29kZU9mKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOi0xfWdldE1hcCgpe2NvbnN0IGU9bmV3IEFycmF5KDY1NTM2KTtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZVt0XT10O3JldHVybiBlfWdldCBsZW5ndGgoKXtyZXR1cm4gNjU1MzZ9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgYWNjZXNzIC5pc0lkZW50aXR5Q01hcCIpfX1mdW5jdGlvbiBzdHJUb0ludChlKXtsZXQgdD0wO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQ9dDw8OHxlLmNoYXJDb2RlQXQobik7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIGV4cGVjdFN0cmluZyhlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgc3RyaW5nLiIpfWZ1bmN0aW9uIGV4cGVjdEludChlKXtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBpbnQuIil9ZnVuY3Rpb24gcGFyc2VCZkNoYXIoZSx0KXtmb3IoOzspe2xldCBuPXQuZ2V0T2JqKCk7aWYobj09PXVuKWJyZWFrO2lmKGlzQ21kKG4sImVuZGJmY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcobik7Y29uc3QgYT1zdHJUb0ludChuKTtuPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKG4pO2NvbnN0IHI9bjtlLm1hcE9uZShhLHIpfX1mdW5jdGlvbiBwYXJzZUJmUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBuPXQuZ2V0T2JqKCk7aWYobj09PXVuKWJyZWFrO2lmKGlzQ21kKG4sImVuZGJmcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKG4pO2NvbnN0IGE9c3RyVG9JbnQobik7bj10LmdldE9iaigpO2V4cGVjdFN0cmluZyhuKTtjb25zdCByPXN0clRvSW50KG4pO249dC5nZXRPYmooKTtpZihOdW1iZXIuaXNJbnRlZ2VyKG4pfHwic3RyaW5nIj09dHlwZW9mIG4pe2NvbnN0IHQ9TnVtYmVyLmlzSW50ZWdlcihuKT9TdHJpbmcuZnJvbUNoYXJDb2RlKG4pOm47ZS5tYXBCZlJhbmdlKGEscix0KX1lbHNle2lmKCFpc0NtZChuLCJbIikpYnJlYWs7e249dC5nZXRPYmooKTtjb25zdCBzPVtdO2Zvcig7IWlzQ21kKG4sIl0iKSYmbiE9PXVuOyl7cy5wdXNoKG4pO249dC5nZXRPYmooKX1lLm1hcEJmUmFuZ2VUb0FycmF5KGEscixzKX19fXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBiZiByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZUNpZENoYXIoZSx0KXtmb3IoOzspe2xldCBuPXQuZ2V0T2JqKCk7aWYobj09PXVuKWJyZWFrO2lmKGlzQ21kKG4sImVuZGNpZGNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKG4pO2NvbnN0IGE9c3RyVG9JbnQobik7bj10LmdldE9iaigpO2V4cGVjdEludChuKTtjb25zdCByPW47ZS5tYXBPbmUoYSxyKX19ZnVuY3Rpb24gcGFyc2VDaWRSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IG49dC5nZXRPYmooKTtpZihuPT09dW4pYnJlYWs7aWYoaXNDbWQobiwiZW5kY2lkcmFuZ2UiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKG4pO2NvbnN0IGE9c3RyVG9JbnQobik7bj10LmdldE9iaigpO2V4cGVjdFN0cmluZyhuKTtjb25zdCByPXN0clRvSW50KG4pO249dC5nZXRPYmooKTtleHBlY3RJbnQobik7Y29uc3Qgcz1uO2UubWFwQ2lkUmFuZ2UoYSxyLHMpfX1mdW5jdGlvbiBwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgbj10LmdldE9iaigpO2lmKG49PT11bilicmVhaztpZihpc0NtZChuLCJlbmRjb2Rlc3BhY2VyYW5nZSIpKXJldHVybjtpZigic3RyaW5nIiE9dHlwZW9mIG4pYnJlYWs7Y29uc3QgYT1zdHJUb0ludChuKTtuPXQuZ2V0T2JqKCk7aWYoInN0cmluZyIhPXR5cGVvZiBuKWJyZWFrO2NvbnN0IHI9c3RyVG9JbnQobik7ZS5hZGRDb2Rlc3BhY2VSYW5nZShuLmxlbmd0aCxhLHIpfXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBjb2Rlc3BhY2UgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VXTW9kZShlLHQpe2NvbnN0IG49dC5nZXRPYmooKTtOdW1iZXIuaXNJbnRlZ2VyKG4pJiYoZS52ZXJ0aWNhbD0hIW4pfWZ1bmN0aW9uIHBhcnNlQ01hcE5hbWUoZSx0KXtjb25zdCBuPXQuZ2V0T2JqKCk7biBpbnN0YW5jZW9mIE5hbWUmJihlLm5hbWU9bi5uYW1lKX1hc3luYyBmdW5jdGlvbiBwYXJzZUNNYXAoZSx0LG4sYSl7bGV0IHIscztlOmZvcig7Oyl0cnl7Y29uc3Qgbj10LmdldE9iaigpO2lmKG49PT11bilicmVhaztpZihuIGluc3RhbmNlb2YgTmFtZSl7IldNb2RlIj09PW4ubmFtZT9wYXJzZVdNb2RlKGUsdCk6IkNNYXBOYW1lIj09PW4ubmFtZSYmcGFyc2VDTWFwTmFtZShlLHQpO3I9bn1lbHNlIGlmKG4gaW5zdGFuY2VvZiBDbWQpc3dpdGNoKG4uY21kKXtjYXNlImVuZGNtYXAiOmJyZWFrIGU7Y2FzZSJ1c2VjbWFwIjpyIGluc3RhbmNlb2YgTmFtZSYmKHM9ci5uYW1lKTticmVhaztjYXNlImJlZ2luY29kZXNwYWNlcmFuZ2UiOnBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luYmZjaGFyIjpwYXJzZUJmQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRjaGFyIjpwYXJzZUNpZENoYXIoZSx0KTticmVhaztjYXNlImJlZ2luYmZyYW5nZSI6cGFyc2VCZlJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZHJhbmdlIjpwYXJzZUNpZFJhbmdlKGUsdCl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIkludmFsaWQgY01hcCBkYXRhOiAiK2UpO2NvbnRpbnVlfSFhJiZzJiYoYT1zKTtyZXR1cm4gYT9leHRlbmRDTWFwKGUsbixhKTplfWFzeW5jIGZ1bmN0aW9uIGV4dGVuZENNYXAoZSx0LG4pe2UudXNlQ01hcD1hd2FpdCBjcmVhdGVCdWlsdEluQ01hcChuLHQpO2lmKDA9PT1lLm51bUNvZGVzcGFjZVJhbmdlcyl7Y29uc3QgdD1lLnVzZUNNYXAuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUuY29kZXNwYWNlUmFuZ2VzW25dPXRbbl0uc2xpY2UoKTtlLm51bUNvZGVzcGFjZVJhbmdlcz1lLnVzZUNNYXAubnVtQ29kZXNwYWNlUmFuZ2VzfWUudXNlQ01hcC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5jb250YWlucyh0KXx8ZS5tYXBPbmUodCxuKX0pO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCF1YS5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6bixpc0NvbXByZXNzZWQ6YX09YXdhaXQgdChlKSxyPW5ldyBDTWFwKCEwKTtpZihhKXJldHVybihuZXcgQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhuLHIsZT0+ZXh0ZW5kQ01hcChyLHQsZSkpO2NvbnN0IHM9bmV3IExleGVyKG5ldyBTdHJlYW0obikpO3JldHVybiBwYXJzZUNNYXAocixzLHQsbnVsbCl9Y2xhc3MgQ01hcEZhY3Rvcnl7c3RhdGljIGFzeW5jIGNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnQsdXNlQ01hcDpufSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIGNyZWF0ZUJ1aWx0SW5DTWFwKGUubmFtZSx0KTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO3QmJihlPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCkpfWNvbnN0IGE9YXdhaXQgcGFyc2VDTWFwKG5ldyBDTWFwLG5ldyBMZXhlcihlKSx0LG4pO3JldHVybiBhLmlzSWRlbnRpdHlDTWFwP2NyZWF0ZUJ1aWx0SW5DTWFwKGEubmFtZSx0KTphfXRocm93IG5ldyBFcnJvcigiRW5jb2RpbmcgcmVxdWlyZWQuIil9fWNvbnN0IHBhPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiIiwiIiwiIiwiaXN1cGVyaW9yIiwiIiwiIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwiIiwiIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIiIsIkRvdGFjY2VudHNtYWxsIiwiIiwiIiwiTWFjcm9uc21hbGwiLCIiLCIiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCIiLCIiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sZGE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJjZW50b2xkc3R5bGUiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsIiIsInF1ZXN0aW9uc21hbGwiLCIiLCIiLCIiLCIiLCJFdGhzbWFsbCIsIiIsIiIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCIiLCIiLCIiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbmluZmVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiYXN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiQWFjdXRlc21hbGwiLCJBZ3JhdmVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQXJpbmdzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWFjdXRlc21hbGwiLCJJZ3JhdmVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk90aWxkZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIiIsImVpZ2h0c3VwZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsIlNjYXJvbnNtYWxsIiwiIiwiY2VudGluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCIiLCJEaWVyZXNpc3NtYWxsIiwiIiwiQ2Fyb25zbWFsbCIsIm9zdXBlcmlvciIsImZpdmVpbmZlcmlvciIsIiIsImNvbW1haW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsIllhY3V0ZXNtYWxsIiwiIiwiZG9sbGFyaW5mZXJpb3IiLCIiLCIiLCJUaG9ybnNtYWxsIiwiIiwibmluZWluZmVyaW9yIiwiemVyb2luZmVyaW9yIiwiWmNhcm9uc21hbGwiLCJBRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWluZmVyaW9yIiwiTHNsYXNoc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCIiLCIiLCJPRXNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbnN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiIiwiWWRpZXJlc2lzc21hbGwiLCIiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9zdXBlcmlvciIsIiIsImVzdXBlcmlvciIsInJzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsIiIsImlzdXBlcmlvciIsInNzdXBlcmlvciIsImRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIiIsImxzdXBlcmlvciIsIk9nb25la3NtYWxsIiwiQnJldmVzbWFsbCIsIk1hY3JvbnNtYWxsIiwiYnN1cGVyaW9yIiwibnN1cGVyaW9yIiwibXN1cGVyaW9yIiwiY29tbWFzdXBlcmlvciIsInBlcmlvZHN1cGVyaW9yIiwiRG90YWNjZW50c21hbGwiLCJSaW5nc21hbGwiLCIiLCIiLCIiLCIiXSxnYT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCJBZGllcmVzaXMiLCJBcmluZyIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiTnRpbGRlIiwiT2RpZXJlc2lzIiwiVWRpZXJlc2lzIiwiYWFjdXRlIiwiYWdyYXZlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhdGlsZGUiLCJhcmluZyIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWdyYXZlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpYWN1dGUiLCJpZ3JhdmUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsIm50aWxkZSIsIm9hY3V0ZSIsIm9ncmF2ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib3RpbGRlIiwidWFjdXRlIiwidWdyYXZlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJkYWdnZXIiLCJkZWdyZWUiLCJjZW50Iiwic3RlcmxpbmciLCJzZWN0aW9uIiwiYnVsbGV0IiwicGFyYWdyYXBoIiwiZ2VybWFuZGJscyIsInJlZ2lzdGVyZWQiLCJjb3B5cmlnaHQiLCJ0cmFkZW1hcmsiLCJhY3V0ZSIsImRpZXJlc2lzIiwibm90ZXF1YWwiLCJBRSIsIk9zbGFzaCIsImluZmluaXR5IiwicGx1c21pbnVzIiwibGVzc2VxdWFsIiwiZ3JlYXRlcmVxdWFsIiwieWVuIiwibXUiLCJwYXJ0aWFsZGlmZiIsInN1bW1hdGlvbiIsInByb2R1Y3QiLCJwaSIsImludGVncmFsIiwib3JkZmVtaW5pbmUiLCJvcmRtYXNjdWxpbmUiLCJPbWVnYSIsImFlIiwib3NsYXNoIiwicXVlc3Rpb25kb3duIiwiZXhjbGFtZG93biIsImxvZ2ljYWxub3QiLCJyYWRpY2FsIiwiZmxvcmluIiwiYXBwcm94ZXF1YWwiLCJEZWx0YSIsImd1aWxsZW1vdGxlZnQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwic3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiJdLGJhPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCIiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsIiIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsIiIsInF1ZXN0aW9uZG93biIsIiIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwiIiwicmluZyIsImNlZGlsbGEiLCIiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkFFIiwiIiwib3JkZmVtaW5pbmUiLCIiLCIiLCIiLCIiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsIiIsIiIsIiIsIiIsIiIsImFlIiwiIiwiIiwiIiwiZG90bGVzc2kiLCIiLCIiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCIiLCIiLCIiLCIiXSx3YT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3Rlc2luZ2xlIiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJncmF2ZSIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJidWxsZXQiLCJFdXJvIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJmbG9yaW4iLCJxdW90ZWRibGJhc2UiLCJlbGxpcHNpcyIsImRhZ2dlciIsImRhZ2dlcmRibCIsImNpcmN1bWZsZXgiLCJwZXJ0aG91c2FuZCIsIlNjYXJvbiIsImd1aWxzaW5nbGxlZnQiLCJPRSIsImJ1bGxldCIsIlpjYXJvbiIsImJ1bGxldCIsImJ1bGxldCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwiYnVsbGV0IiwiZW5kYXNoIiwiZW1kYXNoIiwidGlsZGUiLCJ0cmFkZW1hcmsiLCJzY2Fyb24iLCJndWlsc2luZ2xyaWdodCIsIm9lIiwiYnVsbGV0IiwiemNhcm9uIiwiWWRpZXJlc2lzIiwic3BhY2UiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiY3VycmVuY3kiLCJ5ZW4iLCJicm9rZW5iYXIiLCJzZWN0aW9uIiwiZGllcmVzaXMiLCJjb3B5cmlnaHQiLCJvcmRmZW1pbmluZSIsImd1aWxsZW1vdGxlZnQiLCJsb2dpY2Fsbm90IiwiaHlwaGVuIiwicmVnaXN0ZXJlZCIsIm1hY3JvbiIsImRlZ3JlZSIsInBsdXNtaW51cyIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImFjdXRlIiwibXUiLCJwYXJhZ3JhcGgiLCJwZXJpb2RjZW50ZXJlZCIsImNlZGlsbGEiLCJvbmVzdXBlcmlvciIsIm9yZG1hc2N1bGluZSIsImd1aWxsZW1vdHJpZ2h0Iiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duIiwiQWdyYXZlIiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBdGlsZGUiLCJBZGllcmVzaXMiLCJBcmluZyIsIkFFIiwiQ2NlZGlsbGEiLCJFZ3JhdmUiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIklncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiRXRoIiwiTnRpbGRlIiwiT2dyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPdGlsZGUiLCJPZGllcmVzaXMiLCJtdWx0aXBseSIsIk9zbGFzaCIsIlVncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiWWFjdXRlIiwiVGhvcm4iLCJnZXJtYW5kYmxzIiwiYWdyYXZlIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhdGlsZGUiLCJhZGllcmVzaXMiLCJhcmluZyIsImFlIiwiY2NlZGlsbGEiLCJlZ3JhdmUiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiZXRoIiwibnRpbGRlIiwib2dyYXZlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvdGlsZGUiLCJvZGllcmVzaXMiLCJkaXZpZGUiLCJvc2xhc2giLCJ1Z3JhdmUiLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInlhY3V0ZSIsInRob3JuIiwieWRpZXJlc2lzIl0samE9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInVuaXZlcnNhbCIsIm51bWJlcnNpZ24iLCJleGlzdGVudGlhbCIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJzdWNodGhhdCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3Rlcmlza21hdGgiLCJwbHVzIiwiY29tbWEiLCJtaW51cyIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiY29uZ3J1ZW50IiwiQWxwaGEiLCJCZXRhIiwiQ2hpIiwiRGVsdGEiLCJFcHNpbG9uIiwiUGhpIiwiR2FtbWEiLCJFdGEiLCJJb3RhIiwidGhldGExIiwiS2FwcGEiLCJMYW1iZGEiLCJNdSIsIk51IiwiT21pY3JvbiIsIlBpIiwiVGhldGEiLCJSaG8iLCJTaWdtYSIsIlRhdSIsIlVwc2lsb24iLCJzaWdtYTEiLCJPbWVnYSIsIlhpIiwiUHNpIiwiWmV0YSIsImJyYWNrZXRsZWZ0IiwidGhlcmVmb3JlIiwiYnJhY2tldHJpZ2h0IiwicGVycGVuZGljdWxhciIsInVuZGVyc2NvcmUiLCJyYWRpY2FsZXgiLCJhbHBoYSIsImJldGEiLCJjaGkiLCJkZWx0YSIsImVwc2lsb24iLCJwaGkiLCJnYW1tYSIsImV0YSIsImlvdGEiLCJwaGkxIiwia2FwcGEiLCJsYW1iZGEiLCJtdSIsIm51Iiwib21pY3JvbiIsInBpIiwidGhldGEiLCJyaG8iLCJzaWdtYSIsInRhdSIsInVwc2lsb24iLCJvbWVnYTEiLCJvbWVnYSIsInhpIiwicHNpIiwiemV0YSIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJzaW1pbGFyIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiRXVybyIsIlVwc2lsb24xIiwibWludXRlIiwibGVzc2VxdWFsIiwiZnJhY3Rpb24iLCJpbmZpbml0eSIsImZsb3JpbiIsImNsdWIiLCJkaWFtb25kIiwiaGVhcnQiLCJzcGFkZSIsImFycm93Ym90aCIsImFycm93bGVmdCIsImFycm93dXAiLCJhcnJvd3JpZ2h0IiwiYXJyb3dkb3duIiwiZGVncmVlIiwicGx1c21pbnVzIiwic2Vjb25kIiwiZ3JlYXRlcmVxdWFsIiwibXVsdGlwbHkiLCJwcm9wb3J0aW9uYWwiLCJwYXJ0aWFsZGlmZiIsImJ1bGxldCIsImRpdmlkZSIsIm5vdGVxdWFsIiwiZXF1aXZhbGVuY2UiLCJhcHByb3hlcXVhbCIsImVsbGlwc2lzIiwiYXJyb3d2ZXJ0ZXgiLCJhcnJvd2hvcml6ZXgiLCJjYXJyaWFnZXJldHVybiIsImFsZXBoIiwiSWZyYWt0dXIiLCJSZnJha3R1ciIsIndlaWVyc3RyYXNzIiwiY2lyY2xlbXVsdGlwbHkiLCJjaXJjbGVwbHVzIiwiZW1wdHlzZXQiLCJpbnRlcnNlY3Rpb24iLCJ1bmlvbiIsInByb3BlcnN1cGVyc2V0IiwicmVmbGV4c3VwZXJzZXQiLCJub3RzdWJzZXQiLCJwcm9wZXJzdWJzZXQiLCJyZWZsZXhzdWJzZXQiLCJlbGVtZW50Iiwibm90ZWxlbWVudCIsImFuZ2xlIiwiZ3JhZGllbnQiLCJyZWdpc3RlcnNlcmlmIiwiY29weXJpZ2h0c2VyaWYiLCJ0cmFkZW1hcmtzZXJpZiIsInByb2R1Y3QiLCJyYWRpY2FsIiwiZG90bWF0aCIsImxvZ2ljYWxub3QiLCJsb2dpY2FsYW5kIiwibG9naWNhbG9yIiwiYXJyb3dkYmxib3RoIiwiYXJyb3dkYmxsZWZ0IiwiYXJyb3dkYmx1cCIsImFycm93ZGJscmlnaHQiLCJhcnJvd2RibGRvd24iLCJsb3plbmdlIiwiYW5nbGVsZWZ0IiwicmVnaXN0ZXJzYW5zIiwiY29weXJpZ2h0c2FucyIsInRyYWRlbWFya3NhbnMiLCJzdW1tYXRpb24iLCJwYXJlbmxlZnR0cCIsInBhcmVubGVmdGV4IiwicGFyZW5sZWZ0YnQiLCJicmFja2V0bGVmdHRwIiwiYnJhY2tldGxlZnRleCIsImJyYWNrZXRsZWZ0YnQiLCJicmFjZWxlZnR0cCIsImJyYWNlbGVmdG1pZCIsImJyYWNlbGVmdGJ0IiwiYnJhY2VleCIsIiIsImFuZ2xlcmlnaHQiLCJpbnRlZ3JhbCIsImludGVncmFsdHAiLCJpbnRlZ3JhbGV4IiwiaW50ZWdyYWxidCIsInBhcmVucmlnaHR0cCIsInBhcmVucmlnaHRleCIsInBhcmVucmlnaHRidCIsImJyYWNrZXRyaWdodHRwIiwiYnJhY2tldHJpZ2h0ZXgiLCJicmFja2V0cmlnaHRidCIsImJyYWNlcmlnaHR0cCIsImJyYWNlcmlnaHRtaWQiLCJicmFjZXJpZ2h0YnQiLCIiXSxrYT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiYTEiLCJhMiIsImEyMDIiLCJhMyIsImE0IiwiYTUiLCJhMTE5IiwiYTExOCIsImExMTciLCJhMTEiLCJhMTIiLCJhMTMiLCJhMTQiLCJhMTUiLCJhMTYiLCJhMTA1IiwiYTE3IiwiYTE4IiwiYTE5IiwiYTIwIiwiYTIxIiwiYTIyIiwiYTIzIiwiYTI0IiwiYTI1IiwiYTI2IiwiYTI3IiwiYTI4IiwiYTYiLCJhNyIsImE4IiwiYTkiLCJhMTAiLCJhMjkiLCJhMzAiLCJhMzEiLCJhMzIiLCJhMzMiLCJhMzQiLCJhMzUiLCJhMzYiLCJhMzciLCJhMzgiLCJhMzkiLCJhNDAiLCJhNDEiLCJhNDIiLCJhNDMiLCJhNDQiLCJhNDUiLCJhNDYiLCJhNDciLCJhNDgiLCJhNDkiLCJhNTAiLCJhNTEiLCJhNTIiLCJhNTMiLCJhNTQiLCJhNTUiLCJhNTYiLCJhNTciLCJhNTgiLCJhNTkiLCJhNjAiLCJhNjEiLCJhNjIiLCJhNjMiLCJhNjQiLCJhNjUiLCJhNjYiLCJhNjciLCJhNjgiLCJhNjkiLCJhNzAiLCJhNzEiLCJhNzIiLCJhNzMiLCJhNzQiLCJhMjAzIiwiYTc1IiwiYTIwNCIsImE3NiIsImE3NyIsImE3OCIsImE3OSIsImE4MSIsImE4MiIsImE4MyIsImE4NCIsImE5NyIsImE5OCIsImE5OSIsImExMDAiLCIiLCJhODkiLCJhOTAiLCJhOTMiLCJhOTQiLCJhOTEiLCJhOTIiLCJhMjA1IiwiYTg1IiwiYTIwNiIsImE4NiIsImE4NyIsImE4OCIsImE5NSIsImE5NiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsImExMDEiLCJhMTAyIiwiYTEwMyIsImExMDQiLCJhMTA2IiwiYTEwNyIsImExMDgiLCJhMTEyIiwiYTExMSIsImExMTAiLCJhMTA5IiwiYTEyMCIsImExMjEiLCJhMTIyIiwiYTEyMyIsImExMjQiLCJhMTI1IiwiYTEyNiIsImExMjciLCJhMTI4IiwiYTEyOSIsImExMzAiLCJhMTMxIiwiYTEzMiIsImExMzMiLCJhMTM0IiwiYTEzNSIsImExMzYiLCJhMTM3IiwiYTEzOCIsImExMzkiLCJhMTQwIiwiYTE0MSIsImExNDIiLCJhMTQzIiwiYTE0NCIsImExNDUiLCJhMTQ2IiwiYTE0NyIsImExNDgiLCJhMTQ5IiwiYTE1MCIsImExNTEiLCJhMTUyIiwiYTE1MyIsImExNTQiLCJhMTU1IiwiYTE1NiIsImExNTciLCJhMTU4IiwiYTE1OSIsImExNjAiLCJhMTYxIiwiYTE2MyIsImExNjQiLCJhMTk2IiwiYTE2NSIsImExOTIiLCJhMTY2IiwiYTE2NyIsImExNjgiLCJhMTY5IiwiYTE3MCIsImExNzEiLCJhMTcyIiwiYTE3MyIsImExNjIiLCJhMTc0IiwiYTE3NSIsImExNzYiLCJhMTc3IiwiYTE3OCIsImExNzkiLCJhMTkzIiwiYTE4MCIsImExOTkiLCJhMTgxIiwiYTIwMCIsImExODIiLCIiLCJhMjAxIiwiYTE4MyIsImExODQiLCJhMTk3IiwiYTE4NSIsImExOTQiLCJhMTk4IiwiYTE4NiIsImExOTUiLCJhMTg3IiwiYTE4OCIsImExODkiLCJhMTkwIiwiYTE5MSIsIiJdO2Z1bmN0aW9uIGdldEVuY29kaW5nKGUpe3N3aXRjaChlKXtjYXNlIldpbkFuc2lFbmNvZGluZyI6cmV0dXJuIHdhO2Nhc2UiU3RhbmRhcmRFbmNvZGluZyI6cmV0dXJuIGJhO2Nhc2UiTWFjUm9tYW5FbmNvZGluZyI6cmV0dXJuIGdhO2Nhc2UiU3ltYm9sU2V0RW5jb2RpbmciOnJldHVybiBqYTtjYXNlIlphcGZEaW5nYmF0c0VuY29kaW5nIjpyZXR1cm4ga2E7Y2FzZSJFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHBhO2Nhc2UiTWFjRXhwZXJ0RW5jb2RpbmciOnJldHVybiBkYTtkZWZhdWx0OnJldHVybiBudWxsfX1jb25zdCB5YT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5BPTY1O2UuQUU9MTk4O2UuQUVhY3V0ZT01MDg7ZS5BRW1hY3Jvbj00ODI7ZS5BRXNtYWxsPTYzNDYyO2UuQWFjdXRlPTE5MztlLkFhY3V0ZXNtYWxsPTYzNDU3O2UuQWJyZXZlPTI1ODtlLkFicmV2ZWFjdXRlPTc4NTQ7ZS5BYnJldmVjeXJpbGxpYz0xMjMyO2UuQWJyZXZlZG90YmVsb3c9Nzg2MjtlLkFicmV2ZWdyYXZlPTc4NTY7ZS5BYnJldmVob29rYWJvdmU9Nzg1ODtlLkFicmV2ZXRpbGRlPTc4NjA7ZS5BY2Fyb249NDYxO2UuQWNpcmNsZT05Mzk4O2UuQWNpcmN1bWZsZXg9MTk0O2UuQWNpcmN1bWZsZXhhY3V0ZT03ODQ0O2UuQWNpcmN1bWZsZXhkb3RiZWxvdz03ODUyO2UuQWNpcmN1bWZsZXhncmF2ZT03ODQ2O2UuQWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0ODtlLkFjaXJjdW1mbGV4c21hbGw9NjM0NTg7ZS5BY2lyY3VtZmxleHRpbGRlPTc4NTA7ZS5BY3V0ZT02MzE3NztlLkFjdXRlc21hbGw9NjM0MTI7ZS5BY3lyaWxsaWM9MTA0MDtlLkFkYmxncmF2ZT01MTI7ZS5BZGllcmVzaXM9MTk2O2UuQWRpZXJlc2lzY3lyaWxsaWM9MTIzNDtlLkFkaWVyZXNpc21hY3Jvbj00Nzg7ZS5BZGllcmVzaXNzbWFsbD02MzQ2MDtlLkFkb3RiZWxvdz03ODQwO2UuQWRvdG1hY3Jvbj00ODA7ZS5BZ3JhdmU9MTkyO2UuQWdyYXZlc21hbGw9NjM0NTY7ZS5BaG9va2Fib3ZlPTc4NDI7ZS5BaWVjeXJpbGxpYz0xMjM2O2UuQWludmVydGVkYnJldmU9NTE0O2UuQWxwaGE9OTEzO2UuQWxwaGF0b25vcz05MDI7ZS5BbWFjcm9uPTI1NjtlLkFtb25vc3BhY2U9NjUzMTM7ZS5Bb2dvbmVrPTI2MDtlLkFyaW5nPTE5NztlLkFyaW5nYWN1dGU9NTA2O2UuQXJpbmdiZWxvdz03NjgwO2UuQXJpbmdzbWFsbD02MzQ2MTtlLkFzbWFsbD02MzMyOTtlLkF0aWxkZT0xOTU7ZS5BdGlsZGVzbWFsbD02MzQ1OTtlLkF5YmFybWVuaWFuPTEzMjk7ZS5CPTY2O2UuQmNpcmNsZT05Mzk5O2UuQmRvdGFjY2VudD03NjgyO2UuQmRvdGJlbG93PTc2ODQ7ZS5CZWN5cmlsbGljPTEwNDE7ZS5CZW5hcm1lbmlhbj0xMzMwO2UuQmV0YT05MTQ7ZS5CaG9vaz0zODU7ZS5CbGluZWJlbG93PTc2ODY7ZS5CbW9ub3NwYWNlPTY1MzE0O2UuQnJldmVzbWFsbD02MzIyMDtlLkJzbWFsbD02MzMzMDtlLkJ0b3BiYXI9Mzg2O2UuQz02NztlLkNhYXJtZW5pYW49MTM0MjtlLkNhY3V0ZT0yNjI7ZS5DYXJvbj02MzE3ODtlLkNhcm9uc21hbGw9NjMyMjE7ZS5DY2Fyb249MjY4O2UuQ2NlZGlsbGE9MTk5O2UuQ2NlZGlsbGFhY3V0ZT03Njg4O2UuQ2NlZGlsbGFzbWFsbD02MzQ2MztlLkNjaXJjbGU9OTQwMDtlLkNjaXJjdW1mbGV4PTI2NDtlLkNkb3Q9MjY2O2UuQ2RvdGFjY2VudD0yNjY7ZS5DZWRpbGxhc21hbGw9NjM0MTY7ZS5DaGFhcm1lbmlhbj0xMzUzO2UuQ2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMjtlLkNoZWN5cmlsbGljPTEwNjM7ZS5DaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE0O2UuQ2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNjtlLkNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2ODtlLkNoZWhhcm1lbmlhbj0xMzQ3O2UuQ2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjc7ZS5DaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDg7ZS5DaGk9OTM1O2UuQ2hvb2s9MzkxO2UuQ2lyY3VtZmxleHNtYWxsPTYzMjIyO2UuQ21vbm9zcGFjZT02NTMxNTtlLkNvYXJtZW5pYW49MTM2MTtlLkNzbWFsbD02MzMzMTtlLkQ9Njg7ZS5EWj00OTc7ZS5EWmNhcm9uPTQ1MjtlLkRhYXJtZW5pYW49MTMzMjtlLkRhZnJpY2FuPTM5MztlLkRjYXJvbj0yNzA7ZS5EY2VkaWxsYT03Njk2O2UuRGNpcmNsZT05NDAxO2UuRGNpcmN1bWZsZXhiZWxvdz03Njk4O2UuRGNyb2F0PTI3MjtlLkRkb3RhY2NlbnQ9NzY5MDtlLkRkb3RiZWxvdz03NjkyO2UuRGVjeXJpbGxpYz0xMDQ0O2UuRGVpY29wdGljPTEwMDY7ZS5EZWx0YT04NzEwO2UuRGVsdGFncmVlaz05MTY7ZS5EaG9vaz0zOTQ7ZS5EaWVyZXNpcz02MzE3OTtlLkRpZXJlc2lzQWN1dGU9NjMxODA7ZS5EaWVyZXNpc0dyYXZlPTYzMTgxO2UuRGllcmVzaXNzbWFsbD02MzQwMDtlLkRpZ2FtbWFncmVlaz05ODg7ZS5EamVjeXJpbGxpYz0xMDI2O2UuRGxpbmViZWxvdz03Njk0O2UuRG1vbm9zcGFjZT02NTMxNjtlLkRvdGFjY2VudHNtYWxsPTYzMjIzO2UuRHNsYXNoPTI3MjtlLkRzbWFsbD02MzMzMjtlLkR0b3BiYXI9Mzk1O2UuRHo9NDk4O2UuRHpjYXJvbj00NTM7ZS5EemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ4O2UuRHplY3lyaWxsaWM9MTAyOTtlLkR6aGVjeXJpbGxpYz0xMDM5O2UuRT02OTtlLkVhY3V0ZT0yMDE7ZS5FYWN1dGVzbWFsbD02MzQ2NTtlLkVicmV2ZT0yNzY7ZS5FY2Fyb249MjgyO2UuRWNlZGlsbGFicmV2ZT03NzA4O2UuRWNoYXJtZW5pYW49MTMzMztlLkVjaXJjbGU9OTQwMjtlLkVjaXJjdW1mbGV4PTIwMjtlLkVjaXJjdW1mbGV4YWN1dGU9Nzg3MDtlLkVjaXJjdW1mbGV4YmVsb3c9NzcwNDtlLkVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3ODtlLkVjaXJjdW1mbGV4Z3JhdmU9Nzg3MjtlLkVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzQ7ZS5FY2lyY3VtZmxleHNtYWxsPTYzNDY2O2UuRWNpcmN1bWZsZXh0aWxkZT03ODc2O2UuRWN5cmlsbGljPTEwMjg7ZS5FZGJsZ3JhdmU9NTE2O2UuRWRpZXJlc2lzPTIwMztlLkVkaWVyZXNpc3NtYWxsPTYzNDY3O2UuRWRvdD0yNzg7ZS5FZG90YWNjZW50PTI3ODtlLkVkb3RiZWxvdz03ODY0O2UuRWZjeXJpbGxpYz0xMDYwO2UuRWdyYXZlPTIwMDtlLkVncmF2ZXNtYWxsPTYzNDY0O2UuRWhhcm1lbmlhbj0xMzM1O2UuRWhvb2thYm92ZT03ODY2O2UuRWlnaHRyb21hbj04NTUxO2UuRWludmVydGVkYnJldmU9NTE4O2UuRWlvdGlmaWVkY3lyaWxsaWM9MTEyNDtlLkVsY3lyaWxsaWM9MTA1MTtlLkVsZXZlbnJvbWFuPTg1NTQ7ZS5FbWFjcm9uPTI3NDtlLkVtYWNyb25hY3V0ZT03NzAyO2UuRW1hY3JvbmdyYXZlPTc3MDA7ZS5FbWN5cmlsbGljPTEwNTI7ZS5FbW9ub3NwYWNlPTY1MzE3O2UuRW5jeXJpbGxpYz0xMDUzO2UuRW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg2O2UuRW5nPTMzMDtlLkVuZ2hlY3lyaWxsaWM9MTE4ODtlLkVuaG9va2N5cmlsbGljPTEyMjM7ZS5Fb2dvbmVrPTI4MDtlLkVvcGVuPTQwMDtlLkVwc2lsb249OTE3O2UuRXBzaWxvbnRvbm9zPTkwNDtlLkVyY3lyaWxsaWM9MTA1NjtlLkVyZXZlcnNlZD0zOTg7ZS5FcmV2ZXJzZWRjeXJpbGxpYz0xMDY5O2UuRXNjeXJpbGxpYz0xMDU3O2UuRXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk0O2UuRXNoPTQyNTtlLkVzbWFsbD02MzMzMztlLkV0YT05MTk7ZS5FdGFybWVuaWFuPTEzMzY7ZS5FdGF0b25vcz05MDU7ZS5FdGg9MjA4O2UuRXRoc21hbGw9NjM0NzI7ZS5FdGlsZGU9Nzg2ODtlLkV0aWxkZWJlbG93PTc3MDY7ZS5FdXJvPTgzNjQ7ZS5Femg9NDM5O2UuRXpoY2Fyb249NDk0O2UuRXpocmV2ZXJzZWQ9NDQwO2UuRj03MDtlLkZjaXJjbGU9OTQwMztlLkZkb3RhY2NlbnQ9NzcxMDtlLkZlaGFybWVuaWFuPTEzNjY7ZS5GZWljb3B0aWM9OTk2O2UuRmhvb2s9NDAxO2UuRml0YWN5cmlsbGljPTExMzg7ZS5GaXZlcm9tYW49ODU0ODtlLkZtb25vc3BhY2U9NjUzMTg7ZS5Gb3Vycm9tYW49ODU0NztlLkZzbWFsbD02MzMzNDtlLkc9NzE7ZS5HQnNxdWFyZT0xMzE5MTtlLkdhY3V0ZT01MDA7ZS5HYW1tYT05MTU7ZS5HYW1tYWFmcmljYW49NDA0O2UuR2FuZ2lhY29wdGljPTEwMDI7ZS5HYnJldmU9Mjg2O2UuR2Nhcm9uPTQ4NjtlLkdjZWRpbGxhPTI5MDtlLkdjaXJjbGU9OTQwNDtlLkdjaXJjdW1mbGV4PTI4NDtlLkdjb21tYWFjY2VudD0yOTA7ZS5HZG90PTI4ODtlLkdkb3RhY2NlbnQ9Mjg4O2UuR2VjeXJpbGxpYz0xMDQzO2UuR2hhZGFybWVuaWFuPTEzNDY7ZS5HaGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MjtlLkdoZXN0cm9rZWN5cmlsbGljPTExNzA7ZS5HaGV1cHR1cm5jeXJpbGxpYz0xMTY4O2UuR2hvb2s9NDAzO2UuR2ltYXJtZW5pYW49MTMzMTtlLkdqZWN5cmlsbGljPTEwMjc7ZS5HbWFjcm9uPTc3MTI7ZS5HbW9ub3NwYWNlPTY1MzE5O2UuR3JhdmU9NjMxODI7ZS5HcmF2ZXNtYWxsPTYzMzI4O2UuR3NtYWxsPTYzMzM1O2UuR3NtYWxsaG9vaz02Njc7ZS5Hc3Ryb2tlPTQ4NDtlLkg9NzI7ZS5IMTg1MzM9OTY3OTtlLkgxODU0Mz05NjQyO2UuSDE4NTUxPTk2NDM7ZS5IMjIwNzM9OTYzMztlLkhQc3F1YXJlPTEzMjU5O2UuSGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkyO2UuSGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAyO2UuSGFyZHNpZ25jeXJpbGxpYz0xMDY2O2UuSGJhcj0yOTQ7ZS5IYnJldmViZWxvdz03NzIyO2UuSGNlZGlsbGE9NzcyMDtlLkhjaXJjbGU9OTQwNTtlLkhjaXJjdW1mbGV4PTI5MjtlLkhkaWVyZXNpcz03NzE4O2UuSGRvdGFjY2VudD03NzE0O2UuSGRvdGJlbG93PTc3MTY7ZS5IbW9ub3NwYWNlPTY1MzIwO2UuSG9hcm1lbmlhbj0xMzQ0O2UuSG9yaWNvcHRpYz0xZTM7ZS5Ic21hbGw9NjMzMzY7ZS5IdW5nYXJ1bWxhdXQ9NjMxODM7ZS5IdW5nYXJ1bWxhdXRzbWFsbD02MzIyNDtlLkh6c3F1YXJlPTEzMjAwO2UuST03MztlLklBY3lyaWxsaWM9MTA3MTtlLklKPTMwNjtlLklVY3lyaWxsaWM9MTA3MDtlLklhY3V0ZT0yMDU7ZS5JYWN1dGVzbWFsbD02MzQ2OTtlLklicmV2ZT0zMDA7ZS5JY2Fyb249NDYzO2UuSWNpcmNsZT05NDA2O2UuSWNpcmN1bWZsZXg9MjA2O2UuSWNpcmN1bWZsZXhzbWFsbD02MzQ3MDtlLkljeXJpbGxpYz0xMDMwO2UuSWRibGdyYXZlPTUyMDtlLklkaWVyZXNpcz0yMDc7ZS5JZGllcmVzaXNhY3V0ZT03NzI2O2UuSWRpZXJlc2lzY3lyaWxsaWM9MTI1MjtlLklkaWVyZXNpc3NtYWxsPTYzNDcxO2UuSWRvdD0zMDQ7ZS5JZG90YWNjZW50PTMwNDtlLklkb3RiZWxvdz03ODgyO2UuSWVicmV2ZWN5cmlsbGljPTEyMzg7ZS5JZWN5cmlsbGljPTEwNDU7ZS5JZnJha3R1cj04NDY1O2UuSWdyYXZlPTIwNDtlLklncmF2ZXNtYWxsPTYzNDY4O2UuSWhvb2thYm92ZT03ODgwO2UuSWljeXJpbGxpYz0xMDQ4O2UuSWludmVydGVkYnJldmU9NTIyO2UuSWlzaG9ydGN5cmlsbGljPTEwNDk7ZS5JbWFjcm9uPTI5ODtlLkltYWNyb25jeXJpbGxpYz0xMjUwO2UuSW1vbm9zcGFjZT02NTMyMTtlLkluaWFybWVuaWFuPTEzMzk7ZS5Jb2N5cmlsbGljPTEwMjU7ZS5Jb2dvbmVrPTMwMjtlLklvdGE9OTIxO2UuSW90YWFmcmljYW49NDA2O2UuSW90YWRpZXJlc2lzPTkzODtlLklvdGF0b25vcz05MDY7ZS5Jc21hbGw9NjMzMzc7ZS5Jc3Ryb2tlPTQwNztlLkl0aWxkZT0yOTY7ZS5JdGlsZGViZWxvdz03NzI0O2UuSXpoaXRzYWN5cmlsbGljPTExNDA7ZS5JemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQyO2UuSj03NDtlLkphYXJtZW5pYW49MTM0NTtlLkpjaXJjbGU9OTQwNztlLkpjaXJjdW1mbGV4PTMwODtlLkplY3lyaWxsaWM9MTAzMjtlLkpoZWhhcm1lbmlhbj0xMzU1O2UuSm1vbm9zcGFjZT02NTMyMjtlLkpzbWFsbD02MzMzODtlLks9NzU7ZS5LQnNxdWFyZT0xMzE4OTtlLktLc3F1YXJlPTEzMjYxO2UuS2FiYXNoa2lyY3lyaWxsaWM9MTE4NDtlLkthY3V0ZT03NzI4O2UuS2FjeXJpbGxpYz0xMDUwO2UuS2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc4O2UuS2Fob29rY3lyaWxsaWM9MTIxOTtlLkthcHBhPTkyMjtlLkthc3Ryb2tlY3lyaWxsaWM9MTE4MjtlLkthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgwO2UuS2Nhcm9uPTQ4ODtlLktjZWRpbGxhPTMxMDtlLktjaXJjbGU9OTQwODtlLktjb21tYWFjY2VudD0zMTA7ZS5LZG90YmVsb3c9NzczMDtlLktlaGFybWVuaWFuPTEzNjQ7ZS5LZW5hcm1lbmlhbj0xMzQzO2UuS2hhY3lyaWxsaWM9MTA2MTtlLktoZWljb3B0aWM9OTk4O2UuS2hvb2s9NDA4O2UuS2plY3lyaWxsaWM9MTAzNjtlLktsaW5lYmVsb3c9NzczMjtlLkttb25vc3BhY2U9NjUzMjM7ZS5Lb3BwYWN5cmlsbGljPTExNTI7ZS5Lb3BwYWdyZWVrPTk5MDtlLktzaWN5cmlsbGljPTExMzQ7ZS5Lc21hbGw9NjMzMzk7ZS5MPTc2O2UuTEo9NDU1O2UuTEw9NjMxNjc7ZS5MYWN1dGU9MzEzO2UuTGFtYmRhPTkyMztlLkxjYXJvbj0zMTc7ZS5MY2VkaWxsYT0zMTU7ZS5MY2lyY2xlPTk0MDk7ZS5MY2lyY3VtZmxleGJlbG93PTc3NDA7ZS5MY29tbWFhY2NlbnQ9MzE1O2UuTGRvdD0zMTk7ZS5MZG90YWNjZW50PTMxOTtlLkxkb3RiZWxvdz03NzM0O2UuTGRvdGJlbG93bWFjcm9uPTc3MzY7ZS5MaXduYXJtZW5pYW49MTM0MDtlLkxqPTQ1NjtlLkxqZWN5cmlsbGljPTEwMzM7ZS5MbGluZWJlbG93PTc3Mzg7ZS5MbW9ub3NwYWNlPTY1MzI0O2UuTHNsYXNoPTMyMTtlLkxzbGFzaHNtYWxsPTYzMjI1O2UuTHNtYWxsPTYzMzQwO2UuTT03NztlLk1Cc3F1YXJlPTEzMTkwO2UuTWFjcm9uPTYzMTg0O2UuTWFjcm9uc21hbGw9NjM0MDc7ZS5NYWN1dGU9Nzc0MjtlLk1jaXJjbGU9OTQxMDtlLk1kb3RhY2NlbnQ9Nzc0NDtlLk1kb3RiZWxvdz03NzQ2O2UuTWVuYXJtZW5pYW49MTM0ODtlLk1tb25vc3BhY2U9NjUzMjU7ZS5Nc21hbGw9NjMzNDE7ZS5NdHVybmVkPTQxMjtlLk11PTkyNDtlLk49Nzg7ZS5OSj00NTg7ZS5OYWN1dGU9MzIzO2UuTmNhcm9uPTMyNztlLk5jZWRpbGxhPTMyNTtlLk5jaXJjbGU9OTQxMTtlLk5jaXJjdW1mbGV4YmVsb3c9Nzc1NDtlLk5jb21tYWFjY2VudD0zMjU7ZS5OZG90YWNjZW50PTc3NDg7ZS5OZG90YmVsb3c9Nzc1MDtlLk5ob29rbGVmdD00MTM7ZS5OaW5lcm9tYW49ODU1MjtlLk5qPTQ1OTtlLk5qZWN5cmlsbGljPTEwMzQ7ZS5ObGluZWJlbG93PTc3NTI7ZS5ObW9ub3NwYWNlPTY1MzI2O2UuTm93YXJtZW5pYW49MTM1MDtlLk5zbWFsbD02MzM0MjtlLk50aWxkZT0yMDk7ZS5OdGlsZGVzbWFsbD02MzQ3MztlLk51PTkyNTtlLk89Nzk7ZS5PRT0zMzg7ZS5PRXNtYWxsPTYzMjI2O2UuT2FjdXRlPTIxMTtlLk9hY3V0ZXNtYWxsPTYzNDc1O2UuT2JhcnJlZGN5cmlsbGljPTEyNTY7ZS5PYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU4O2UuT2JyZXZlPTMzNDtlLk9jYXJvbj00NjU7ZS5PY2VudGVyZWR0aWxkZT00MTU7ZS5PY2lyY2xlPTk0MTI7ZS5PY2lyY3VtZmxleD0yMTI7ZS5PY2lyY3VtZmxleGFjdXRlPTc4ODg7ZS5PY2lyY3VtZmxleGRvdGJlbG93PTc4OTY7ZS5PY2lyY3VtZmxleGdyYXZlPTc4OTA7ZS5PY2lyY3VtZmxleGhvb2thYm92ZT03ODkyO2UuT2NpcmN1bWZsZXhzbWFsbD02MzQ3NjtlLk9jaXJjdW1mbGV4dGlsZGU9Nzg5NDtlLk9jeXJpbGxpYz0xMDU0O2UuT2RibGFjdXRlPTMzNjtlLk9kYmxncmF2ZT01MjQ7ZS5PZGllcmVzaXM9MjE0O2UuT2RpZXJlc2lzY3lyaWxsaWM9MTI1NDtlLk9kaWVyZXNpc3NtYWxsPTYzNDc4O2UuT2RvdGJlbG93PTc4ODQ7ZS5PZ29uZWtzbWFsbD02MzIyNztlLk9ncmF2ZT0yMTA7ZS5PZ3JhdmVzbWFsbD02MzQ3NDtlLk9oYXJtZW5pYW49MTM2NTtlLk9obT04NDg2O2UuT2hvb2thYm92ZT03ODg2O2UuT2hvcm49NDE2O2UuT2hvcm5hY3V0ZT03ODk4O2UuT2hvcm5kb3RiZWxvdz03OTA2O2UuT2hvcm5ncmF2ZT03OTAwO2UuT2hvcm5ob29rYWJvdmU9NzkwMjtlLk9ob3JudGlsZGU9NzkwNDtlLk9odW5nYXJ1bWxhdXQ9MzM2O2UuT2k9NDE4O2UuT2ludmVydGVkYnJldmU9NTI2O2UuT21hY3Jvbj0zMzI7ZS5PbWFjcm9uYWN1dGU9Nzc2MjtlLk9tYWNyb25ncmF2ZT03NzYwO2UuT21lZ2E9ODQ4NjtlLk9tZWdhY3lyaWxsaWM9MTEyMDtlLk9tZWdhZ3JlZWs9OTM3O2UuT21lZ2Fyb3VuZGN5cmlsbGljPTExNDY7ZS5PbWVnYXRpdGxvY3lyaWxsaWM9MTE0ODtlLk9tZWdhdG9ub3M9OTExO2UuT21pY3Jvbj05Mjc7ZS5PbWljcm9udG9ub3M9OTA4O2UuT21vbm9zcGFjZT02NTMyNztlLk9uZXJvbWFuPTg1NDQ7ZS5Pb2dvbmVrPTQ5MDtlLk9vZ29uZWttYWNyb249NDkyO2UuT29wZW49MzkwO2UuT3NsYXNoPTIxNjtlLk9zbGFzaGFjdXRlPTUxMDtlLk9zbGFzaHNtYWxsPTYzNDgwO2UuT3NtYWxsPTYzMzQzO2UuT3N0cm9rZWFjdXRlPTUxMDtlLk90Y3lyaWxsaWM9MTE1MDtlLk90aWxkZT0yMTM7ZS5PdGlsZGVhY3V0ZT03NzU2O2UuT3RpbGRlZGllcmVzaXM9Nzc1ODtlLk90aWxkZXNtYWxsPTYzNDc3O2UuUD04MDtlLlBhY3V0ZT03NzY0O2UuUGNpcmNsZT05NDEzO2UuUGRvdGFjY2VudD03NzY2O2UuUGVjeXJpbGxpYz0xMDU1O2UuUGVoYXJtZW5pYW49MTM1NDtlLlBlbWlkZGxlaG9va2N5cmlsbGljPTExOTA7ZS5QaGk9OTM0O2UuUGhvb2s9NDIwO2UuUGk9OTI4O2UuUGl3cmFybWVuaWFuPTEzNjM7ZS5QbW9ub3NwYWNlPTY1MzI4O2UuUHNpPTkzNjtlLlBzaWN5cmlsbGljPTExMzY7ZS5Qc21hbGw9NjMzNDQ7ZS5RPTgxO2UuUWNpcmNsZT05NDE0O2UuUW1vbm9zcGFjZT02NTMyOTtlLlFzbWFsbD02MzM0NTtlLlI9ODI7ZS5SYWFybWVuaWFuPTEzNTY7ZS5SYWN1dGU9MzQwO2UuUmNhcm9uPTM0NDtlLlJjZWRpbGxhPTM0MjtlLlJjaXJjbGU9OTQxNTtlLlJjb21tYWFjY2VudD0zNDI7ZS5SZGJsZ3JhdmU9NTI4O2UuUmRvdGFjY2VudD03NzY4O2UuUmRvdGJlbG93PTc3NzA7ZS5SZG90YmVsb3dtYWNyb249Nzc3MjtlLlJlaGFybWVuaWFuPTEzNjA7ZS5SZnJha3R1cj04NDc2O2UuUmhvPTkyOTtlLlJpbmdzbWFsbD02MzIyODtlLlJpbnZlcnRlZGJyZXZlPTUzMDtlLlJsaW5lYmVsb3c9Nzc3NDtlLlJtb25vc3BhY2U9NjUzMzA7ZS5Sc21hbGw9NjMzNDY7ZS5Sc21hbGxpbnZlcnRlZD02NDE7ZS5Sc21hbGxpbnZlcnRlZHN1cGVyaW9yPTY5NDtlLlM9ODM7ZS5TRjAxMDAwMD05NDg0O2UuU0YwMjAwMDA9OTQ5MjtlLlNGMDMwMDAwPTk0ODg7ZS5TRjA0MDAwMD05NDk2O2UuU0YwNTAwMDA9OTUzMjtlLlNGMDYwMDAwPTk1MTY7ZS5TRjA3MDAwMD05NTI0O2UuU0YwODAwMDA9OTUwMDtlLlNGMDkwMDAwPTk1MDg7ZS5TRjEwMDAwMD05NDcyO2UuU0YxMTAwMDA9OTQ3NDtlLlNGMTkwMDAwPTk1Njk7ZS5TRjIwMDAwMD05NTcwO2UuU0YyMTAwMDA9OTU1ODtlLlNGMjIwMDAwPTk1NTc7ZS5TRjIzMDAwMD05NTcxO2UuU0YyNDAwMDA9OTU1MztlLlNGMjUwMDAwPTk1NTk7ZS5TRjI2MDAwMD05NTY1O2UuU0YyNzAwMDA9OTU2NDtlLlNGMjgwMDAwPTk1NjM7ZS5TRjM2MDAwMD05NTY2O2UuU0YzNzAwMDA9OTU2NztlLlNGMzgwMDAwPTk1NjI7ZS5TRjM5MDAwMD05NTU2O2UuU0Y0MDAwMDA9OTU3NztlLlNGNDEwMDAwPTk1NzQ7ZS5TRjQyMDAwMD05NTY4O2UuU0Y0MzAwMDA9OTU1MjtlLlNGNDQwMDAwPTk1ODA7ZS5TRjQ1MDAwMD05NTc1O2UuU0Y0NjAwMDA9OTU3NjtlLlNGNDcwMDAwPTk1NzI7ZS5TRjQ4MDAwMD05NTczO2UuU0Y0OTAwMDA9OTU2MTtlLlNGNTAwMDAwPTk1NjA7ZS5TRjUxMDAwMD05NTU0O2UuU0Y1MjAwMDA9OTU1NTtlLlNGNTMwMDAwPTk1Nzk7ZS5TRjU0MDAwMD05NTc4O2UuU2FjdXRlPTM0NjtlLlNhY3V0ZWRvdGFjY2VudD03NzgwO2UuU2FtcGlncmVlaz05OTI7ZS5TY2Fyb249MzUyO2UuU2Nhcm9uZG90YWNjZW50PTc3ODI7ZS5TY2Fyb25zbWFsbD02MzIyOTtlLlNjZWRpbGxhPTM1MDtlLlNjaHdhPTM5OTtlLlNjaHdhY3lyaWxsaWM9MTI0MDtlLlNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQyO2UuU2NpcmNsZT05NDE2O2UuU2NpcmN1bWZsZXg9MzQ4O2UuU2NvbW1hYWNjZW50PTUzNjtlLlNkb3RhY2NlbnQ9Nzc3NjtlLlNkb3RiZWxvdz03Nzc4O2UuU2RvdGJlbG93ZG90YWNjZW50PTc3ODQ7ZS5TZWhhcm1lbmlhbj0xMzU3O2UuU2V2ZW5yb21hbj04NTUwO2UuU2hhYXJtZW5pYW49MTM1MTtlLlNoYWN5cmlsbGljPTEwNjQ7ZS5TaGNoYWN5cmlsbGljPTEwNjU7ZS5TaGVpY29wdGljPTk5NDtlLlNoaGFjeXJpbGxpYz0xMjEwO2UuU2hpbWFjb3B0aWM9MTAwNDtlLlNpZ21hPTkzMTtlLlNpeHJvbWFuPTg1NDk7ZS5TbW9ub3NwYWNlPTY1MzMxO2UuU29mdHNpZ25jeXJpbGxpYz0xMDY4O2UuU3NtYWxsPTYzMzQ3O2UuU3RpZ21hZ3JlZWs9OTg2O2UuVD04NDtlLlRhdT05MzI7ZS5UYmFyPTM1ODtlLlRjYXJvbj0zNTY7ZS5UY2VkaWxsYT0zNTQ7ZS5UY2lyY2xlPTk0MTc7ZS5UY2lyY3VtZmxleGJlbG93PTc3OTI7ZS5UY29tbWFhY2NlbnQ9MzU0O2UuVGRvdGFjY2VudD03Nzg2O2UuVGRvdGJlbG93PTc3ODg7ZS5UZWN5cmlsbGljPTEwNTg7ZS5UZWRlc2NlbmRlcmN5cmlsbGljPTExOTY7ZS5UZW5yb21hbj04NTUzO2UuVGV0c2VjeXJpbGxpYz0xMjA0O2UuVGhldGE9OTIwO2UuVGhvb2s9NDI4O2UuVGhvcm49MjIyO2UuVGhvcm5zbWFsbD02MzQ4NjtlLlRocmVlcm9tYW49ODU0NjtlLlRpbGRlc21hbGw9NjMyMzA7ZS5UaXduYXJtZW5pYW49MTM1OTtlLlRsaW5lYmVsb3c9Nzc5MDtlLlRtb25vc3BhY2U9NjUzMzI7ZS5Ub2FybWVuaWFuPTEzMzc7ZS5Ub25lZml2ZT00NDQ7ZS5Ub25lc2l4PTM4ODtlLlRvbmV0d289NDIzO2UuVHJldHJvZmxleGhvb2s9NDMwO2UuVHNlY3lyaWxsaWM9MTA2MjtlLlRzaGVjeXJpbGxpYz0xMDM1O2UuVHNtYWxsPTYzMzQ4O2UuVHdlbHZlcm9tYW49ODU1NTtlLlR3b3JvbWFuPTg1NDU7ZS5VPTg1O2UuVWFjdXRlPTIxODtlLlVhY3V0ZXNtYWxsPTYzNDgyO2UuVWJyZXZlPTM2NDtlLlVjYXJvbj00Njc7ZS5VY2lyY2xlPTk0MTg7ZS5VY2lyY3VtZmxleD0yMTk7ZS5VY2lyY3VtZmxleGJlbG93PTc3OTg7ZS5VY2lyY3VtZmxleHNtYWxsPTYzNDgzO2UuVWN5cmlsbGljPTEwNTk7ZS5VZGJsYWN1dGU9MzY4O2UuVWRibGdyYXZlPTUzMjtlLlVkaWVyZXNpcz0yMjA7ZS5VZGllcmVzaXNhY3V0ZT00NzE7ZS5VZGllcmVzaXNiZWxvdz03Nzk0O2UuVWRpZXJlc2lzY2Fyb249NDczO2UuVWRpZXJlc2lzY3lyaWxsaWM9MTI2NDtlLlVkaWVyZXNpc2dyYXZlPTQ3NTtlLlVkaWVyZXNpc21hY3Jvbj00Njk7ZS5VZGllcmVzaXNzbWFsbD02MzQ4NDtlLlVkb3RiZWxvdz03OTA4O2UuVWdyYXZlPTIxNztlLlVncmF2ZXNtYWxsPTYzNDgxO2UuVWhvb2thYm92ZT03OTEwO2UuVWhvcm49NDMxO2UuVWhvcm5hY3V0ZT03OTEyO2UuVWhvcm5kb3RiZWxvdz03OTIwO2UuVWhvcm5ncmF2ZT03OTE0O2UuVWhvcm5ob29rYWJvdmU9NzkxNjtlLlVob3JudGlsZGU9NzkxODtlLlVodW5nYXJ1bWxhdXQ9MzY4O2UuVWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjY7ZS5VaW52ZXJ0ZWRicmV2ZT01MzQ7ZS5Va2N5cmlsbGljPTExNDQ7ZS5VbWFjcm9uPTM2MjtlLlVtYWNyb25jeXJpbGxpYz0xMjYyO2UuVW1hY3JvbmRpZXJlc2lzPTc4MDI7ZS5VbW9ub3NwYWNlPTY1MzMzO2UuVW9nb25laz0zNzA7ZS5VcHNpbG9uPTkzMztlLlVwc2lsb24xPTk3ODtlLlVwc2lsb25hY3V0ZWhvb2tzeW1ib2xncmVlaz05Nzk7ZS5VcHNpbG9uYWZyaWNhbj00MzM7ZS5VcHNpbG9uZGllcmVzaXM9OTM5O2UuVXBzaWxvbmRpZXJlc2lzaG9va3N5bWJvbGdyZWVrPTk4MDtlLlVwc2lsb25ob29rc3ltYm9sPTk3ODtlLlVwc2lsb250b25vcz05MTA7ZS5VcmluZz0zNjY7ZS5Vc2hvcnRjeXJpbGxpYz0xMDM4O2UuVXNtYWxsPTYzMzQ5O2UuVXN0cmFpZ2h0Y3lyaWxsaWM9MTE5ODtlLlVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDA7ZS5VdGlsZGU9MzYwO2UuVXRpbGRlYWN1dGU9NzgwMDtlLlV0aWxkZWJlbG93PTc3OTY7ZS5WPTg2O2UuVmNpcmNsZT05NDE5O2UuVmRvdGJlbG93PTc4MDY7ZS5WZWN5cmlsbGljPTEwNDI7ZS5WZXdhcm1lbmlhbj0xMzU4O2UuVmhvb2s9NDM0O2UuVm1vbm9zcGFjZT02NTMzNDtlLlZvYXJtZW5pYW49MTM1MjtlLlZzbWFsbD02MzM1MDtlLlZ0aWxkZT03ODA0O2UuVz04NztlLldhY3V0ZT03ODEwO2UuV2NpcmNsZT05NDIwO2UuV2NpcmN1bWZsZXg9MzcyO2UuV2RpZXJlc2lzPTc4MTI7ZS5XZG90YWNjZW50PTc4MTQ7ZS5XZG90YmVsb3c9NzgxNjtlLldncmF2ZT03ODA4O2UuV21vbm9zcGFjZT02NTMzNTtlLldzbWFsbD02MzM1MTtlLlg9ODg7ZS5YY2lyY2xlPTk0MjE7ZS5YZGllcmVzaXM9NzgyMDtlLlhkb3RhY2NlbnQ9NzgxODtlLlhlaGFybWVuaWFuPTEzNDE7ZS5YaT05MjY7ZS5YbW9ub3NwYWNlPTY1MzM2O2UuWHNtYWxsPTYzMzUyO2UuWT04OTtlLllhY3V0ZT0yMjE7ZS5ZYWN1dGVzbWFsbD02MzQ4NTtlLllhdGN5cmlsbGljPTExMjI7ZS5ZY2lyY2xlPTk0MjI7ZS5ZY2lyY3VtZmxleD0zNzQ7ZS5ZZGllcmVzaXM9Mzc2O2UuWWRpZXJlc2lzc21hbGw9NjM0ODc7ZS5ZZG90YWNjZW50PTc4MjI7ZS5ZZG90YmVsb3c9NzkyNDtlLlllcmljeXJpbGxpYz0xMDY3O2UuWWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MjtlLllncmF2ZT03OTIyO2UuWWhvb2s9NDM1O2UuWWhvb2thYm92ZT03OTI2O2UuWWlhcm1lbmlhbj0xMzQ5O2UuWWljeXJpbGxpYz0xMDMxO2UuWWl3bmFybWVuaWFuPTEzNjI7ZS5ZbW9ub3NwYWNlPTY1MzM3O2UuWXNtYWxsPTYzMzUzO2UuWXRpbGRlPTc5Mjg7ZS5ZdXNiaWdjeXJpbGxpYz0xMTMwO2UuWXVzYmlnaW90aWZpZWRjeXJpbGxpYz0xMTMyO2UuWXVzbGl0dGxlY3lyaWxsaWM9MTEyNjtlLll1c2xpdHRsZWlvdGlmaWVkY3lyaWxsaWM9MTEyODtlLlo9OTA7ZS5aYWFybWVuaWFuPTEzMzQ7ZS5aYWN1dGU9Mzc3O2UuWmNhcm9uPTM4MTtlLlpjYXJvbnNtYWxsPTYzMjMxO2UuWmNpcmNsZT05NDIzO2UuWmNpcmN1bWZsZXg9NzgyNDtlLlpkb3Q9Mzc5O2UuWmRvdGFjY2VudD0zNzk7ZS5aZG90YmVsb3c9NzgyNjtlLlplY3lyaWxsaWM9MTA0NztlLlplZGVzY2VuZGVyY3lyaWxsaWM9MTE3NjtlLlplZGllcmVzaXNjeXJpbGxpYz0xMjQ2O2UuWmV0YT05MTg7ZS5aaGVhcm1lbmlhbj0xMzM4O2UuWmhlYnJldmVjeXJpbGxpYz0xMjE3O2UuWmhlY3lyaWxsaWM9MTA0NjtlLlpoZWRlc2NlbmRlcmN5cmlsbGljPTExNzQ7ZS5aaGVkaWVyZXNpc2N5cmlsbGljPTEyNDQ7ZS5abGluZWJlbG93PTc4Mjg7ZS5abW9ub3NwYWNlPTY1MzM4O2UuWnNtYWxsPTYzMzU0O2UuWnN0cm9rZT00Mzc7ZS5hPTk3O2UuYWFiZW5nYWxpPTI0Mzg7ZS5hYWN1dGU9MjI1O2UuYWFkZXZhPTIzMTA7ZS5hYWd1amFyYXRpPTI2OTQ7ZS5hYWd1cm11a2hpPTI1NjY7ZS5hYW1hdHJhZ3VybXVraGk9MjYyMjtlLmFhcnVzcXVhcmU9MTMwNTk7ZS5hYXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NDtlLmFhdm93ZWxzaWduZGV2YT0yMzY2O2UuYWF2b3dlbHNpZ25ndWphcmF0aT0yNzUwO2UuYWJicmV2aWF0aW9ubWFya2FybWVuaWFuPTEzNzU7ZS5hYmJyZXZpYXRpb25zaWduZGV2YT0yNDE2O2UuYWJlbmdhbGk9MjQzNztlLmFib3BvbW9mbz0xMjU3MDtlLmFicmV2ZT0yNTk7ZS5hYnJldmVhY3V0ZT03ODU1O2UuYWJyZXZlY3lyaWxsaWM9MTIzMztlLmFicmV2ZWRvdGJlbG93PTc4NjM7ZS5hYnJldmVncmF2ZT03ODU3O2UuYWJyZXZlaG9va2Fib3ZlPTc4NTk7ZS5hYnJldmV0aWxkZT03ODYxO2UuYWNhcm9uPTQ2MjtlLmFjaXJjbGU9OTQyNDtlLmFjaXJjdW1mbGV4PTIyNjtlLmFjaXJjdW1mbGV4YWN1dGU9Nzg0NTtlLmFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MztlLmFjaXJjdW1mbGV4Z3JhdmU9Nzg0NztlLmFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDk7ZS5hY2lyY3VtZmxleHRpbGRlPTc4NTE7ZS5hY3V0ZT0xODA7ZS5hY3V0ZWJlbG93Y21iPTc5MTtlLmFjdXRlY21iPTc2OTtlLmFjdXRlY29tYj03Njk7ZS5hY3V0ZWRldmE9MjM4ODtlLmFjdXRlbG93bW9kPTcxOTtlLmFjdXRldG9uZWNtYj04MzM7ZS5hY3lyaWxsaWM9MTA3MjtlLmFkYmxncmF2ZT01MTM7ZS5hZGRha2d1cm11a2hpPTI2NzM7ZS5hZGV2YT0yMzA5O2UuYWRpZXJlc2lzPTIyODtlLmFkaWVyZXNpc2N5cmlsbGljPTEyMzU7ZS5hZGllcmVzaXNtYWNyb249NDc5O2UuYWRvdGJlbG93PTc4NDE7ZS5hZG90bWFjcm9uPTQ4MTtlLmFlPTIzMDtlLmFlYWN1dGU9NTA5O2UuYWVrb3JlYW49MTI2MjQ7ZS5hZW1hY3Jvbj00ODM7ZS5hZmlpMDAyMDg9ODIxMztlLmFmaWkwODk0MT04MzU2O2UuYWZpaTEwMDE3PTEwNDA7ZS5hZmlpMTAwMTg9MTA0MTtlLmFmaWkxMDAxOT0xMDQyO2UuYWZpaTEwMDIwPTEwNDM7ZS5hZmlpMTAwMjE9MTA0NDtlLmFmaWkxMDAyMj0xMDQ1O2UuYWZpaTEwMDIzPTEwMjU7ZS5hZmlpMTAwMjQ9MTA0NjtlLmFmaWkxMDAyNT0xMDQ3O2UuYWZpaTEwMDI2PTEwNDg7ZS5hZmlpMTAwMjc9MTA0OTtlLmFmaWkxMDAyOD0xMDUwO2UuYWZpaTEwMDI5PTEwNTE7ZS5hZmlpMTAwMzA9MTA1MjtlLmFmaWkxMDAzMT0xMDUzO2UuYWZpaTEwMDMyPTEwNTQ7ZS5hZmlpMTAwMzM9MTA1NTtlLmFmaWkxMDAzND0xMDU2O2UuYWZpaTEwMDM1PTEwNTc7ZS5hZmlpMTAwMzY9MTA1ODtlLmFmaWkxMDAzNz0xMDU5O2UuYWZpaTEwMDM4PTEwNjA7ZS5hZmlpMTAwMzk9MTA2MTtlLmFmaWkxMDA0MD0xMDYyO2UuYWZpaTEwMDQxPTEwNjM7ZS5hZmlpMTAwNDI9MTA2NDtlLmFmaWkxMDA0Mz0xMDY1O2UuYWZpaTEwMDQ0PTEwNjY7ZS5hZmlpMTAwNDU9MTA2NztlLmFmaWkxMDA0Nj0xMDY4O2UuYWZpaTEwMDQ3PTEwNjk7ZS5hZmlpMTAwNDg9MTA3MDtlLmFmaWkxMDA0OT0xMDcxO2UuYWZpaTEwMDUwPTExNjg7ZS5hZmlpMTAwNTE9MTAyNjtlLmFmaWkxMDA1Mj0xMDI3O2UuYWZpaTEwMDUzPTEwMjg7ZS5hZmlpMTAwNTQ9MTAyOTtlLmFmaWkxMDA1NT0xMDMwO2UuYWZpaTEwMDU2PTEwMzE7ZS5hZmlpMTAwNTc9MTAzMjtlLmFmaWkxMDA1OD0xMDMzO2UuYWZpaTEwMDU5PTEwMzQ7ZS5hZmlpMTAwNjA9MTAzNTtlLmFmaWkxMDA2MT0xMDM2O2UuYWZpaTEwMDYyPTEwMzg7ZS5hZmlpMTAwNjM9NjMxNzI7ZS5hZmlpMTAwNjQ9NjMxNzM7ZS5hZmlpMTAwNjU9MTA3MjtlLmFmaWkxMDA2Nj0xMDczO2UuYWZpaTEwMDY3PTEwNzQ7ZS5hZmlpMTAwNjg9MTA3NTtlLmFmaWkxMDA2OT0xMDc2O2UuYWZpaTEwMDcwPTEwNzc7ZS5hZmlpMTAwNzE9MTEwNTtlLmFmaWkxMDA3Mj0xMDc4O2UuYWZpaTEwMDczPTEwNzk7ZS5hZmlpMTAwNzQ9MTA4MDtlLmFmaWkxMDA3NT0xMDgxO2UuYWZpaTEwMDc2PTEwODI7ZS5hZmlpMTAwNzc9MTA4MztlLmFmaWkxMDA3OD0xMDg0O2UuYWZpaTEwMDc5PTEwODU7ZS5hZmlpMTAwODA9MTA4NjtlLmFmaWkxMDA4MT0xMDg3O2UuYWZpaTEwMDgyPTEwODg7ZS5hZmlpMTAwODM9MTA4OTtlLmFmaWkxMDA4ND0xMDkwO2UuYWZpaTEwMDg1PTEwOTE7ZS5hZmlpMTAwODY9MTA5MjtlLmFmaWkxMDA4Nz0xMDkzO2UuYWZpaTEwMDg4PTEwOTQ7ZS5hZmlpMTAwODk9MTA5NTtlLmFmaWkxMDA5MD0xMDk2O2UuYWZpaTEwMDkxPTEwOTc7ZS5hZmlpMTAwOTI9MTA5ODtlLmFmaWkxMDA5Mz0xMDk5O2UuYWZpaTEwMDk0PTExMDA7ZS5hZmlpMTAwOTU9MTEwMTtlLmFmaWkxMDA5Nj0xMTAyO2UuYWZpaTEwMDk3PTExMDM7ZS5hZmlpMTAwOTg9MTE2OTtlLmFmaWkxMDA5OT0xMTA2O2UuYWZpaTEwMTAwPTExMDc7ZS5hZmlpMTAxMDE9MTEwODtlLmFmaWkxMDEwMj0xMTA5O2UuYWZpaTEwMTAzPTExMTA7ZS5hZmlpMTAxMDQ9MTExMTtlLmFmaWkxMDEwNT0xMTEyO2UuYWZpaTEwMTA2PTExMTM7ZS5hZmlpMTAxMDc9MTExNDtlLmFmaWkxMDEwOD0xMTE1O2UuYWZpaTEwMTA5PTExMTY7ZS5hZmlpMTAxMTA9MTExODtlLmFmaWkxMDE0NT0xMDM5O2UuYWZpaTEwMTQ2PTExMjI7ZS5hZmlpMTAxNDc9MTEzODtlLmFmaWkxMDE0OD0xMTQwO2UuYWZpaTEwMTkyPTYzMTc0O2UuYWZpaTEwMTkzPTExMTk7ZS5hZmlpMTAxOTQ9MTEyMztlLmFmaWkxMDE5NT0xMTM5O2UuYWZpaTEwMTk2PTExNDE7ZS5hZmlpMTA4MzE9NjMxNzU7ZS5hZmlpMTA4MzI9NjMxNzY7ZS5hZmlpMTA4NDY9MTI0MTtlLmFmaWkyOTk9ODIwNjtlLmFmaWkzMDA9ODIwNztlLmFmaWkzMDE9ODIwNTtlLmFmaWk1NzM4MT0xNjQyO2UuYWZpaTU3Mzg4PTE1NDg7ZS5hZmlpNTczOTI9MTYzMjtlLmFmaWk1NzM5Mz0xNjMzO2UuYWZpaTU3Mzk0PTE2MzQ7ZS5hZmlpNTczOTU9MTYzNTtlLmFmaWk1NzM5Nj0xNjM2O2UuYWZpaTU3Mzk3PTE2Mzc7ZS5hZmlpNTczOTg9MTYzODtlLmFmaWk1NzM5OT0xNjM5O2UuYWZpaTU3NDAwPTE2NDA7ZS5hZmlpNTc0MDE9MTY0MTtlLmFmaWk1NzQwMz0xNTYzO2UuYWZpaTU3NDA3PTE1Njc7ZS5hZmlpNTc0MDk9MTU2OTtlLmFmaWk1NzQxMD0xNTcwO2UuYWZpaTU3NDExPTE1NzE7ZS5hZmlpNTc0MTI9MTU3MjtlLmFmaWk1NzQxMz0xNTczO2UuYWZpaTU3NDE0PTE1NzQ7ZS5hZmlpNTc0MTU9MTU3NTtlLmFmaWk1NzQxNj0xNTc2O2UuYWZpaTU3NDE3PTE1Nzc7ZS5hZmlpNTc0MTg9MTU3ODtlLmFmaWk1NzQxOT0xNTc5O2UuYWZpaTU3NDIwPTE1ODA7ZS5hZmlpNTc0MjE9MTU4MTtlLmFmaWk1NzQyMj0xNTgyO2UuYWZpaTU3NDIzPTE1ODM7ZS5hZmlpNTc0MjQ9MTU4NDtlLmFmaWk1NzQyNT0xNTg1O2UuYWZpaTU3NDI2PTE1ODY7ZS5hZmlpNTc0Mjc9MTU4NztlLmFmaWk1NzQyOD0xNTg4O2UuYWZpaTU3NDI5PTE1ODk7ZS5hZmlpNTc0MzA9MTU5MDtlLmFmaWk1NzQzMT0xNTkxO2UuYWZpaTU3NDMyPTE1OTI7ZS5hZmlpNTc0MzM9MTU5MztlLmFmaWk1NzQzND0xNTk0O2UuYWZpaTU3NDQwPTE2MDA7ZS5hZmlpNTc0NDE9MTYwMTtlLmFmaWk1NzQ0Mj0xNjAyO2UuYWZpaTU3NDQzPTE2MDM7ZS5hZmlpNTc0NDQ9MTYwNDtlLmFmaWk1NzQ0NT0xNjA1O2UuYWZpaTU3NDQ2PTE2MDY7ZS5hZmlpNTc0NDg9MTYwODtlLmFmaWk1NzQ0OT0xNjA5O2UuYWZpaTU3NDUwPTE2MTA7ZS5hZmlpNTc0NTE9MTYxMTtlLmFmaWk1NzQ1Mj0xNjEyO2UuYWZpaTU3NDUzPTE2MTM7ZS5hZmlpNTc0NTQ9MTYxNDtlLmFmaWk1NzQ1NT0xNjE1O2UuYWZpaTU3NDU2PTE2MTY7ZS5hZmlpNTc0NTc9MTYxNztlLmFmaWk1NzQ1OD0xNjE4O2UuYWZpaTU3NDcwPTE2MDc7ZS5hZmlpNTc1MDU9MTcwMDtlLmFmaWk1NzUwNj0xNjYyO2UuYWZpaTU3NTA3PTE2NzA7ZS5hZmlpNTc1MDg9MTY4ODtlLmFmaWk1NzUwOT0xNzExO2UuYWZpaTU3NTExPTE2NTc7ZS5hZmlpNTc1MTI9MTY3MjtlLmFmaWk1NzUxMz0xNjgxO2UuYWZpaTU3NTE0PTE3MjI7ZS5hZmlpNTc1MTk9MTc0NjtlLmFmaWk1NzUzND0xNzQ5O2UuYWZpaTU3NjM2PTgzNjI7ZS5hZmlpNTc2NDU9MTQ3MDtlLmFmaWk1NzY1OD0xNDc1O2UuYWZpaTU3NjY0PTE0ODg7ZS5hZmlpNTc2NjU9MTQ4OTtlLmFmaWk1NzY2Nj0xNDkwO2UuYWZpaTU3NjY3PTE0OTE7ZS5hZmlpNTc2Njg9MTQ5MjtlLmFmaWk1NzY2OT0xNDkzO2UuYWZpaTU3NjcwPTE0OTQ7ZS5hZmlpNTc2NzE9MTQ5NTtlLmFmaWk1NzY3Mj0xNDk2O2UuYWZpaTU3NjczPTE0OTc7ZS5hZmlpNTc2NzQ9MTQ5ODtlLmFmaWk1NzY3NT0xNDk5O2UuYWZpaTU3Njc2PTE1MDA7ZS5hZmlpNTc2Nzc9MTUwMTtlLmFmaWk1NzY3OD0xNTAyO2UuYWZpaTU3Njc5PTE1MDM7ZS5hZmlpNTc2ODA9MTUwNDtlLmFmaWk1NzY4MT0xNTA1O2UuYWZpaTU3NjgyPTE1MDY7ZS5hZmlpNTc2ODM9MTUwNztlLmFmaWk1NzY4ND0xNTA4O2UuYWZpaTU3Njg1PTE1MDk7ZS5hZmlpNTc2ODY9MTUxMDtlLmFmaWk1NzY4Nz0xNTExO2UuYWZpaTU3Njg4PTE1MTI7ZS5hZmlpNTc2ODk9MTUxMztlLmFmaWk1NzY5MD0xNTE0O2UuYWZpaTU3Njk0PTY0Mjk4O2UuYWZpaTU3Njk1PTY0Mjk5O2UuYWZpaTU3NzAwPTY0MzMxO2UuYWZpaTU3NzA1PTY0Mjg3O2UuYWZpaTU3NzE2PTE1MjA7ZS5hZmlpNTc3MTc9MTUyMTtlLmFmaWk1NzcxOD0xNTIyO2UuYWZpaTU3NzIzPTY0MzA5O2UuYWZpaTU3NzkzPTE0NjA7ZS5hZmlpNTc3OTQ9MTQ2MTtlLmFmaWk1Nzc5NT0xNDYyO2UuYWZpaTU3Nzk2PTE0Njc7ZS5hZmlpNTc3OTc9MTQ2NDtlLmFmaWk1Nzc5OD0xNDYzO2UuYWZpaTU3Nzk5PTE0NTY7ZS5hZmlpNTc4MDA9MTQ1ODtlLmFmaWk1NzgwMT0xNDU3O2UuYWZpaTU3ODAyPTE0NTk7ZS5hZmlpNTc4MDM9MTQ3NDtlLmFmaWk1NzgwND0xNDczO2UuYWZpaTU3ODA2PTE0NjU7ZS5hZmlpNTc4MDc9MTQ2ODtlLmFmaWk1NzgzOT0xNDY5O2UuYWZpaTU3ODQxPTE0NzE7ZS5hZmlpNTc4NDI9MTQ3MjtlLmFmaWk1NzkyOT03MDA7ZS5hZmlpNjEyNDg9ODQ1MztlLmFmaWk2MTI4OT04NDY3O2UuYWZpaTYxMzUyPTg0NzA7ZS5hZmlpNjE1NzM9ODIzNjtlLmFmaWk2MTU3ND04MjM3O2UuYWZpaTYxNTc1PTgyMzg7ZS5hZmlpNjE2NjQ9ODIwNDtlLmFmaWk2MzE2Nz0xNjQ1O2UuYWZpaTY0OTM3PTcwMTtlLmFncmF2ZT0yMjQ7ZS5hZ3VqYXJhdGk9MjY5MztlLmFndXJtdWtoaT0yNTY1O2UuYWhpcmFnYW5hPTEyMzU0O2UuYWhvb2thYm92ZT03ODQzO2UuYWliZW5nYWxpPTI0NDg7ZS5haWJvcG9tb2ZvPTEyNTc0O2UuYWlkZXZhPTIzMjA7ZS5haWVjeXJpbGxpYz0xMjM3O2UuYWlndWphcmF0aT0yNzA0O2UuYWlndXJtdWtoaT0yNTc2O2UuYWltYXRyYWd1cm11a2hpPTI2MzI7ZS5haW5hcmFiaWM9MTU5MztlLmFpbmZpbmFsYXJhYmljPTY1MjI2O2UuYWluaW5pdGlhbGFyYWJpYz02NTIyNztlLmFpbm1lZGlhbGFyYWJpYz02NTIyODtlLmFpbnZlcnRlZGJyZXZlPTUxNTtlLmFpdm93ZWxzaWduYmVuZ2FsaT0yNTA0O2UuYWl2b3dlbHNpZ25kZXZhPTIzNzY7ZS5haXZvd2Vsc2lnbmd1amFyYXRpPTI3NjA7ZS5ha2F0YWthbmE9MTI0NTA7ZS5ha2F0YWthbmFoYWxmd2lkdGg9NjUzOTM7ZS5ha29yZWFuPTEyNjIzO2UuYWxlZj0xNDg4O2UuYWxlZmFyYWJpYz0xNTc1O2UuYWxlZmRhZ2VzaGhlYnJldz02NDMwNDtlLmFsZWZmaW5hbGFyYWJpYz02NTE2NjtlLmFsZWZoYW16YWFib3ZlYXJhYmljPTE1NzE7ZS5hbGVmaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU2O2UuYWxlZmhhbXphYmVsb3dhcmFiaWM9MTU3MztlLmFsZWZoYW16YWJlbG93ZmluYWxhcmFiaWM9NjUxNjA7ZS5hbGVmaGVicmV3PTE0ODg7ZS5hbGVmbGFtZWRoZWJyZXc9NjQzMzU7ZS5hbGVmbWFkZGFhYm92ZWFyYWJpYz0xNTcwO2UuYWxlZm1hZGRhYWJvdmVmaW5hbGFyYWJpYz02NTE1NDtlLmFsZWZtYWtzdXJhYXJhYmljPTE2MDk7ZS5hbGVmbWFrc3VyYWZpbmFsYXJhYmljPTY1MjY0O2UuYWxlZm1ha3N1cmFpbml0aWFsYXJhYmljPTY1MjY3O2UuYWxlZm1ha3N1cmFtZWRpYWxhcmFiaWM9NjUyNjg7ZS5hbGVmcGF0YWhoZWJyZXc9NjQzMDI7ZS5hbGVmcWFtYXRzaGVicmV3PTY0MzAzO2UuYWxlcGg9ODUwMTtlLmFsbGVxdWFsPTg3ODA7ZS5hbHBoYT05NDU7ZS5hbHBoYXRvbm9zPTk0MDtlLmFtYWNyb249MjU3O2UuYW1vbm9zcGFjZT02NTM0NTtlLmFtcGVyc2FuZD0zODtlLmFtcGVyc2FuZG1vbm9zcGFjZT02NTI4NjtlLmFtcGVyc2FuZHNtYWxsPTYzMjcwO2UuYW1zcXVhcmU9MTMyNTA7ZS5hbmJvcG9tb2ZvPTEyNTc4O2UuYW5nYm9wb21vZm89MTI1ODA7ZS5hbmdicmFja2V0bGVmdD0xMjI5NjtlLmFuZ2JyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2toYW5raHV0aGFpPTM2NzQ7ZS5hbmdsZT04NzM2O2UuYW5nbGVicmFja2V0bGVmdD0xMjI5NjtlLmFuZ2xlYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4NztlLmFuZ2xlYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5nbGVicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4ODtlLmFuZ2xlbGVmdD05MDAxO2UuYW5nbGVyaWdodD05MDAyO2UuYW5nc3Ryb209ODQ5MTtlLmFub3RlbGVpYT05MDM7ZS5hbnVkYXR0YWRldmE9MjM4NjtlLmFudXN2YXJhYmVuZ2FsaT0yNDM0O2UuYW51c3ZhcmFkZXZhPTIzMDY7ZS5hbnVzdmFyYWd1amFyYXRpPTI2OTA7ZS5hb2dvbmVrPTI2MTtlLmFwYWF0b3NxdWFyZT0xMzA1NjtlLmFwYXJlbj05MzcyO2UuYXBvc3Ryb3BoZWFybWVuaWFuPTEzNzA7ZS5hcG9zdHJvcGhlbW9kPTcwMDtlLmFwcGxlPTYzNzQzO2UuYXBwcm9hY2hlcz04Nzg0O2UuYXBwcm94ZXF1YWw9ODc3NjtlLmFwcHJveGVxdWFsb3JpbWFnZT04Nzg2O2UuYXBwcm94aW1hdGVseWVxdWFsPTg3NzM7ZS5hcmFlYWVrb3JlYW49MTI2ODY7ZS5hcmFlYWtvcmVhbj0xMjY4NTtlLmFyYz04OTc4O2UuYXJpZ2h0aGFsZnJpbmc9NzgzNDtlLmFyaW5nPTIyOTtlLmFyaW5nYWN1dGU9NTA3O2UuYXJpbmdiZWxvdz03NjgxO2UuYXJyb3dib3RoPTg1OTY7ZS5hcnJvd2Rhc2hkb3duPTg2NzU7ZS5hcnJvd2Rhc2hsZWZ0PTg2NzI7ZS5hcnJvd2Rhc2hyaWdodD04Njc0O2UuYXJyb3dkYXNodXA9ODY3MztlLmFycm93ZGJsYm90aD04NjYwO2UuYXJyb3dkYmxkb3duPTg2NTk7ZS5hcnJvd2RibGxlZnQ9ODY1NjtlLmFycm93ZGJscmlnaHQ9ODY1ODtlLmFycm93ZGJsdXA9ODY1NztlLmFycm93ZG93bj04NTk1O2UuYXJyb3dkb3dubGVmdD04NjAxO2UuYXJyb3dkb3ducmlnaHQ9ODYwMDtlLmFycm93ZG93bndoaXRlPTg2ODE7ZS5hcnJvd2hlYWRkb3dubW9kPTcwOTtlLmFycm93aGVhZGxlZnRtb2Q9NzA2O2UuYXJyb3doZWFkcmlnaHRtb2Q9NzA3O2UuYXJyb3doZWFkdXBtb2Q9NzA4O2UuYXJyb3dob3JpemV4PTYzNzE5O2UuYXJyb3dsZWZ0PTg1OTI7ZS5hcnJvd2xlZnRkYmw9ODY1NjtlLmFycm93bGVmdGRibHN0cm9rZT04NjUzO2UuYXJyb3dsZWZ0b3ZlcnJpZ2h0PTg2NDY7ZS5hcnJvd2xlZnR3aGl0ZT04Njc4O2UuYXJyb3dyaWdodD04NTk0O2UuYXJyb3dyaWdodGRibHN0cm9rZT04NjU1O2UuYXJyb3dyaWdodGhlYXZ5PTEwMTQyO2UuYXJyb3dyaWdodG92ZXJsZWZ0PTg2NDQ7ZS5hcnJvd3JpZ2h0d2hpdGU9ODY4MDtlLmFycm93dGFibGVmdD04Njc2O2UuYXJyb3d0YWJyaWdodD04Njc3O2UuYXJyb3d1cD04NTkzO2UuYXJyb3d1cGRuPTg1OTc7ZS5hcnJvd3VwZG5ic2U9ODYxNjtlLmFycm93dXBkb3duYmFzZT04NjE2O2UuYXJyb3d1cGxlZnQ9ODU5ODtlLmFycm93dXBsZWZ0b2Zkb3duPTg2NDU7ZS5hcnJvd3VwcmlnaHQ9ODU5OTtlLmFycm93dXB3aGl0ZT04Njc5O2UuYXJyb3d2ZXJ0ZXg9NjM3MTg7ZS5hc2NpaWNpcmN1bT05NDtlLmFzY2lpY2lyY3VtbW9ub3NwYWNlPTY1MzQyO2UuYXNjaWl0aWxkZT0xMjY7ZS5hc2NpaXRpbGRlbW9ub3NwYWNlPTY1Mzc0O2UuYXNjcmlwdD01OTM7ZS5hc2NyaXB0dHVybmVkPTU5NDtlLmFzbWFsbGhpcmFnYW5hPTEyMzUzO2UuYXNtYWxsa2F0YWthbmE9MTI0NDk7ZS5hc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4MztlLmFzdGVyaXNrPTQyO2UuYXN0ZXJpc2thbHRvbmVhcmFiaWM9MTY0NTtlLmFzdGVyaXNrYXJhYmljPTE2NDU7ZS5hc3Rlcmlza21hdGg9ODcyNztlLmFzdGVyaXNrbW9ub3NwYWNlPTY1MjkwO2UuYXN0ZXJpc2tzbWFsbD02NTEyMTtlLmFzdGVyaXNtPTgyNTg7ZS5hc3VwZXJpb3I9NjMyMDk7ZS5hc3ltcHRvdGljYWxseWVxdWFsPTg3NzE7ZS5hdD02NDtlLmF0aWxkZT0yMjc7ZS5hdG1vbm9zcGFjZT02NTMxMjtlLmF0c21hbGw9NjUxMzE7ZS5hdHVybmVkPTU5MjtlLmF1YmVuZ2FsaT0yNDUyO2UuYXVib3BvbW9mbz0xMjU3NjtlLmF1ZGV2YT0yMzI0O2UuYXVndWphcmF0aT0yNzA4O2UuYXVndXJtdWtoaT0yNTgwO2UuYXVsZW5ndGhtYXJrYmVuZ2FsaT0yNTE5O2UuYXVtYXRyYWd1cm11a2hpPTI2MzY7ZS5hdXZvd2Vsc2lnbmJlbmdhbGk9MjUwODtlLmF1dm93ZWxzaWduZGV2YT0yMzgwO2UuYXV2b3dlbHNpZ25ndWphcmF0aT0yNzY0O2UuYXZhZ3JhaGFkZXZhPTIzNjU7ZS5heWJhcm1lbmlhbj0xMzc3O2UuYXlpbj0xNTA2O2UuYXlpbmFsdG9uZWhlYnJldz02NDI4ODtlLmF5aW5oZWJyZXc9MTUwNjtlLmI9OTg7ZS5iYWJlbmdhbGk9MjQ3NjtlLmJhY2tzbGFzaD05MjtlLmJhY2tzbGFzaG1vbm9zcGFjZT02NTM0MDtlLmJhZGV2YT0yMzQ4O2UuYmFndWphcmF0aT0yNzMyO2UuYmFndXJtdWtoaT0yNjA0O2UuYmFoaXJhZ2FuYT0xMjQwMDtlLmJhaHR0aGFpPTM2NDc7ZS5iYWthdGFrYW5hPTEyNDk2O2UuYmFyPTEyNDtlLmJhcm1vbm9zcGFjZT02NTM3MjtlLmJib3BvbW9mbz0xMjU0OTtlLmJjaXJjbGU9OTQyNTtlLmJkb3RhY2NlbnQ9NzY4MztlLmJkb3RiZWxvdz03Njg1O2UuYmVhbWVkc2l4dGVlbnRobm90ZXM9OTgzNjtlLmJlY2F1c2U9ODc1NztlLmJlY3lyaWxsaWM9MTA3MztlLmJlaGFyYWJpYz0xNTc2O2UuYmVoZmluYWxhcmFiaWM9NjUxNjg7ZS5iZWhpbml0aWFsYXJhYmljPTY1MTY5O2UuYmVoaXJhZ2FuYT0xMjQwOTtlLmJlaG1lZGlhbGFyYWJpYz02NTE3MDtlLmJlaG1lZW1pbml0aWFsYXJhYmljPTY0NjcxO2UuYmVobWVlbWlzb2xhdGVkYXJhYmljPTY0NTIwO2UuYmVobm9vbmZpbmFsYXJhYmljPTY0NjIxO2UuYmVrYXRha2FuYT0xMjUwNTtlLmJlbmFybWVuaWFuPTEzNzg7ZS5iZXQ9MTQ4OTtlLmJldGE9OTQ2O2UuYmV0YXN5bWJvbGdyZWVrPTk3NjtlLmJldGRhZ2VzaD02NDMwNTtlLmJldGRhZ2VzaGhlYnJldz02NDMwNTtlLmJldGhlYnJldz0xNDg5O2UuYmV0cmFmZWhlYnJldz02NDMzMjtlLmJoYWJlbmdhbGk9MjQ3NztlLmJoYWRldmE9MjM0OTtlLmJoYWd1amFyYXRpPTI3MzM7ZS5iaGFndXJtdWtoaT0yNjA1O2UuYmhvb2s9NTk1O2UuYmloaXJhZ2FuYT0xMjQwMztlLmJpa2F0YWthbmE9MTI0OTk7ZS5iaWxhYmlhbGNsaWNrPTY2NDtlLmJpbmRpZ3VybXVraGk9MjU2MjtlLmJpcnVzcXVhcmU9MTMxMDU7ZS5ibGFja2NpcmNsZT05Njc5O2UuYmxhY2tkaWFtb25kPTk2NzA7ZS5ibGFja2Rvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjA7ZS5ibGFja2xlZnRwb2ludGluZ3BvaW50ZXI9OTY2ODtlLmJsYWNrbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzA0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4MztlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMwNTtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg0O2UuYmxhY2tsb3dlcmxlZnR0cmlhbmdsZT05Njk5O2UuYmxhY2tsb3dlcnJpZ2h0dHJpYW5nbGU9OTY5ODtlLmJsYWNrcmVjdGFuZ2xlPTk2NDQ7ZS5ibGFja3JpZ2h0cG9pbnRpbmdwb2ludGVyPTk2NTg7ZS5ibGFja3JpZ2h0cG9pbnRpbmd0cmlhbmdsZT05NjU0O2UuYmxhY2tzbWFsbHNxdWFyZT05NjQyO2UuYmxhY2tzbWlsaW5nZmFjZT05Nzg3O2UuYmxhY2tzcXVhcmU9OTYzMjtlLmJsYWNrc3Rhcj05NzMzO2UuYmxhY2t1cHBlcmxlZnR0cmlhbmdsZT05NzAwO2UuYmxhY2t1cHBlcnJpZ2h0dHJpYW5nbGU9OTcwMTtlLmJsYWNrdXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MjtlLmJsYWNrdXBwb2ludGluZ3RyaWFuZ2xlPTk2NTA7ZS5ibGFuaz05MjUxO2UuYmxpbmViZWxvdz03Njg3O2UuYmxvY2s9OTYwODtlLmJtb25vc3BhY2U9NjUzNDY7ZS5ib2JhaW1haXRoYWk9MzYxMDtlLmJvaGlyYWdhbmE9MTI0MTI7ZS5ib2thdGFrYW5hPTEyNTA4O2UuYnBhcmVuPTkzNzM7ZS5icXNxdWFyZT0xMzI1MTtlLmJyYWNlZXg9NjM3MzI7ZS5icmFjZWxlZnQ9MTIzO2UuYnJhY2VsZWZ0YnQ9NjM3MzE7ZS5icmFjZWxlZnRtaWQ9NjM3MzA7ZS5icmFjZWxlZnRtb25vc3BhY2U9NjUzNzE7ZS5icmFjZWxlZnRzbWFsbD02NTExNTtlLmJyYWNlbGVmdHRwPTYzNzI5O2UuYnJhY2VsZWZ0dmVydGljYWw9NjUwNzk7ZS5icmFjZXJpZ2h0PTEyNTtlLmJyYWNlcmlnaHRidD02Mzc0MjtlLmJyYWNlcmlnaHRtaWQ9NjM3NDE7ZS5icmFjZXJpZ2h0bW9ub3NwYWNlPTY1MzczO2UuYnJhY2VyaWdodHNtYWxsPTY1MTE2O2UuYnJhY2VyaWdodHRwPTYzNzQwO2UuYnJhY2VyaWdodHZlcnRpY2FsPTY1MDgwO2UuYnJhY2tldGxlZnQ9OTE7ZS5icmFja2V0bGVmdGJ0PTYzNzI4O2UuYnJhY2tldGxlZnRleD02MzcyNztlLmJyYWNrZXRsZWZ0bW9ub3NwYWNlPTY1MzM5O2UuYnJhY2tldGxlZnR0cD02MzcyNjtlLmJyYWNrZXRyaWdodD05MztlLmJyYWNrZXRyaWdodGJ0PTYzNzM5O2UuYnJhY2tldHJpZ2h0ZXg9NjM3Mzg7ZS5icmFja2V0cmlnaHRtb25vc3BhY2U9NjUzNDE7ZS5icmFja2V0cmlnaHR0cD02MzczNztlLmJyZXZlPTcyODtlLmJyZXZlYmVsb3djbWI9ODE0O2UuYnJldmVjbWI9Nzc0O2UuYnJldmVpbnZlcnRlZGJlbG93Y21iPTgxNTtlLmJyZXZlaW52ZXJ0ZWRjbWI9Nzg1O2UuYnJldmVpbnZlcnRlZGRvdWJsZWNtYj04NjU7ZS5icmlkZ2ViZWxvd2NtYj04MTA7ZS5icmlkZ2VpbnZlcnRlZGJlbG93Y21iPTgyNjtlLmJyb2tlbmJhcj0xNjY7ZS5ic3Ryb2tlPTM4NDtlLmJzdXBlcmlvcj02MzIxMDtlLmJ0b3BiYXI9Mzg3O2UuYnVoaXJhZ2FuYT0xMjQwNjtlLmJ1a2F0YWthbmE9MTI1MDI7ZS5idWxsZXQ9ODIyNjtlLmJ1bGxldGludmVyc2U9OTY4ODtlLmJ1bGxldG9wZXJhdG9yPTg3Mjk7ZS5idWxsc2V5ZT05Njc4O2UuYz05OTtlLmNhYXJtZW5pYW49MTM5MDtlLmNhYmVuZ2FsaT0yNDU4O2UuY2FjdXRlPTI2MztlLmNhZGV2YT0yMzMwO2UuY2FndWphcmF0aT0yNzE0O2UuY2FndXJtdWtoaT0yNTg2O2UuY2Fsc3F1YXJlPTEzMTkyO2UuY2FuZHJhYmluZHViZW5nYWxpPTI0MzM7ZS5jYW5kcmFiaW5kdWNtYj03ODQ7ZS5jYW5kcmFiaW5kdWRldmE9MjMwNTtlLmNhbmRyYWJpbmR1Z3VqYXJhdGk9MjY4OTtlLmNhcHNsb2NrPTg2ODI7ZS5jYXJlb2Y9ODQ1MztlLmNhcm9uPTcxMTtlLmNhcm9uYmVsb3djbWI9ODEyO2UuY2Fyb25jbWI9NzgwO2UuY2FycmlhZ2VyZXR1cm49ODYyOTtlLmNib3BvbW9mbz0xMjU2ODtlLmNjYXJvbj0yNjk7ZS5jY2VkaWxsYT0yMzE7ZS5jY2VkaWxsYWFjdXRlPTc2ODk7ZS5jY2lyY2xlPTk0MjY7ZS5jY2lyY3VtZmxleD0yNjU7ZS5jY3VybD01OTc7ZS5jZG90PTI2NztlLmNkb3RhY2NlbnQ9MjY3O2UuY2RzcXVhcmU9MTMyNTM7ZS5jZWRpbGxhPTE4NDtlLmNlZGlsbGFjbWI9ODA3O2UuY2VudD0xNjI7ZS5jZW50aWdyYWRlPTg0NTE7ZS5jZW50aW5mZXJpb3I9NjMxOTk7ZS5jZW50bW9ub3NwYWNlPTY1NTA0O2UuY2VudG9sZHN0eWxlPTYzMzk0O2UuY2VudHN1cGVyaW9yPTYzMjAwO2UuY2hhYXJtZW5pYW49MTQwMTtlLmNoYWJlbmdhbGk9MjQ1OTtlLmNoYWRldmE9MjMzMTtlLmNoYWd1amFyYXRpPTI3MTU7ZS5jaGFndXJtdWtoaT0yNTg3O2UuY2hib3BvbW9mbz0xMjU2NDtlLmNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTM7ZS5jaGVja21hcms9MTAwMDM7ZS5jaGVjeXJpbGxpYz0xMDk1O2UuY2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNTtlLmNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDc7ZS5jaGVkaWVyZXNpc2N5cmlsbGljPTEyNjk7ZS5jaGVoYXJtZW5pYW49MTM5NTtlLmNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI4O2UuY2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA5O2UuY2hpPTk2NztlLmNoaWV1Y2hhY2lyY2xla29yZWFuPTEyOTE5O2UuY2hpZXVjaGFwYXJlbmtvcmVhbj0xMjgyMztlLmNoaWV1Y2hjaXJjbGVrb3JlYW49MTI5MDU7ZS5jaGlldWNoa29yZWFuPTEyNjE4O2UuY2hpZXVjaHBhcmVua29yZWFuPTEyODA5O2UuY2hvY2hhbmd0aGFpPTM1OTQ7ZS5jaG9jaGFudGhhaT0zNTkyO2UuY2hvY2hpbmd0aGFpPTM1OTM7ZS5jaG9jaG9ldGhhaT0zNTk2O2UuY2hvb2s9MzkyO2UuY2lldWNhY2lyY2xla29yZWFuPTEyOTE4O2UuY2lldWNhcGFyZW5rb3JlYW49MTI4MjI7ZS5jaWV1Y2NpcmNsZWtvcmVhbj0xMjkwNDtlLmNpZXVja29yZWFuPTEyNjE2O2UuY2lldWNwYXJlbmtvcmVhbj0xMjgwODtlLmNpZXVjdXBhcmVua29yZWFuPTEyODI4O2UuY2lyY2xlPTk2NzU7ZS5jaXJjbGVjb3B5cnQ9MTY5O2UuY2lyY2xlbXVsdGlwbHk9ODg1NTtlLmNpcmNsZW90PTg4NTc7ZS5jaXJjbGVwbHVzPTg4NTM7ZS5jaXJjbGVwb3N0YWxtYXJrPTEyMzQyO2UuY2lyY2xld2l0aGxlZnRoYWxmYmxhY2s9OTY4MDtlLmNpcmNsZXdpdGhyaWdodGhhbGZibGFjaz05NjgxO2UuY2lyY3VtZmxleD03MTA7ZS5jaXJjdW1mbGV4YmVsb3djbWI9ODEzO2UuY2lyY3VtZmxleGNtYj03NzA7ZS5jbGVhcj04OTk5O2UuY2xpY2thbHZlb2xhcj00NTA7ZS5jbGlja2RlbnRhbD00NDg7ZS5jbGlja2xhdGVyYWw9NDQ5O2UuY2xpY2tyZXRyb2ZsZXg9NDUxO2UuY2x1Yj05ODI3O2UuY2x1YnN1aXRibGFjaz05ODI3O2UuY2x1YnN1aXR3aGl0ZT05ODMxO2UuY21jdWJlZHNxdWFyZT0xMzIyMDtlLmNtb25vc3BhY2U9NjUzNDc7ZS5jbXNxdWFyZWRzcXVhcmU9MTMyMTY7ZS5jb2FybWVuaWFuPTE0MDk7ZS5jb2xvbj01ODtlLmNvbG9ubW9uZXRhcnk9ODM1MztlLmNvbG9ubW9ub3NwYWNlPTY1MzA2O2UuY29sb25zaWduPTgzNTM7ZS5jb2xvbnNtYWxsPTY1MTA5O2UuY29sb250cmlhbmd1bGFyaGFsZm1vZD03MjE7ZS5jb2xvbnRyaWFuZ3VsYXJtb2Q9NzIwO2UuY29tbWE9NDQ7ZS5jb21tYWFib3ZlY21iPTc4NztlLmNvbW1hYWJvdmVyaWdodGNtYj03ODk7ZS5jb21tYWFjY2VudD02MzE3MTtlLmNvbW1hYXJhYmljPTE1NDg7ZS5jb21tYWFybWVuaWFuPTEzNzM7ZS5jb21tYWluZmVyaW9yPTYzMjAxO2UuY29tbWFtb25vc3BhY2U9NjUyOTI7ZS5jb21tYXJldmVyc2VkYWJvdmVjbWI9Nzg4O2UuY29tbWFyZXZlcnNlZG1vZD03MDE7ZS5jb21tYXNtYWxsPTY1MTA0O2UuY29tbWFzdXBlcmlvcj02MzIwMjtlLmNvbW1hdHVybmVkYWJvdmVjbWI9Nzg2O2UuY29tbWF0dXJuZWRtb2Q9Njk5O2UuY29tcGFzcz05Nzg4O2UuY29uZ3J1ZW50PTg3NzM7ZS5jb250b3VyaW50ZWdyYWw9ODc1MDtlLmNvbnRyb2w9ODk2MztlLmNvbnRyb2xBQ0s9NjtlLmNvbnRyb2xCRUw9NztlLmNvbnRyb2xCUz04O2UuY29udHJvbENBTj0yNDtlLmNvbnRyb2xDUj0xMztlLmNvbnRyb2xEQzE9MTc7ZS5jb250cm9sREMyPTE4O2UuY29udHJvbERDMz0xOTtlLmNvbnRyb2xEQzQ9MjA7ZS5jb250cm9sREVMPTEyNztlLmNvbnRyb2xETEU9MTY7ZS5jb250cm9sRU09MjU7ZS5jb250cm9sRU5RPTU7ZS5jb250cm9sRU9UPTQ7ZS5jb250cm9sRVNDPTI3O2UuY29udHJvbEVUQj0yMztlLmNvbnRyb2xFVFg9MztlLmNvbnRyb2xGRj0xMjtlLmNvbnRyb2xGUz0yODtlLmNvbnRyb2xHUz0yOTtlLmNvbnRyb2xIVD05O2UuY29udHJvbExGPTEwO2UuY29udHJvbE5BSz0yMTtlLmNvbnRyb2xOVUxMPTA7ZS5jb250cm9sUlM9MzA7ZS5jb250cm9sU0k9MTU7ZS5jb250cm9sU089MTQ7ZS5jb250cm9sU09UPTI7ZS5jb250cm9sU1RYPTE7ZS5jb250cm9sU1VCPTI2O2UuY29udHJvbFNZTj0yMjtlLmNvbnRyb2xVUz0zMTtlLmNvbnRyb2xWVD0xMTtlLmNvcHlyaWdodD0xNjk7ZS5jb3B5cmlnaHRzYW5zPTYzNzIxO2UuY29weXJpZ2h0c2VyaWY9NjMxOTM7ZS5jb3JuZXJicmFja2V0bGVmdD0xMjMwMDtlLmNvcm5lcmJyYWNrZXRsZWZ0aGFsZndpZHRoPTY1Mzc4O2UuY29ybmVyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4OTtlLmNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMTtlLmNvcm5lcmJyYWNrZXRyaWdodGhhbGZ3aWR0aD02NTM3OTtlLmNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkwO2UuY29ycG9yYXRpb25zcXVhcmU9MTMxODM7ZS5jb3NxdWFyZT0xMzI1NTtlLmNvdmVya2dzcXVhcmU9MTMyNTQ7ZS5jcGFyZW49OTM3NDtlLmNydXplaXJvPTgzNTQ7ZS5jc3RyZXRjaGVkPTY2MztlLmN1cmx5YW5kPTg5MTE7ZS5jdXJseW9yPTg5MTA7ZS5jdXJyZW5jeT0xNjQ7ZS5jeXJCcmV2ZT02MzE4NTtlLmN5ckZsZXg9NjMxODY7ZS5jeXJicmV2ZT02MzE4ODtlLmN5cmZsZXg9NjMxODk7ZS5kPTEwMDtlLmRhYXJtZW5pYW49MTM4MDtlLmRhYmVuZ2FsaT0yNDcwO2UuZGFkYXJhYmljPTE1OTA7ZS5kYWRldmE9MjM0MjtlLmRhZGZpbmFsYXJhYmljPTY1MjE0O2UuZGFkaW5pdGlhbGFyYWJpYz02NTIxNTtlLmRhZG1lZGlhbGFyYWJpYz02NTIxNjtlLmRhZ2VzaD0xNDY4O2UuZGFnZXNoaGVicmV3PTE0Njg7ZS5kYWdnZXI9ODIyNDtlLmRhZ2dlcmRibD04MjI1O2UuZGFndWphcmF0aT0yNzI2O2UuZGFndXJtdWtoaT0yNTk4O2UuZGFoaXJhZ2FuYT0xMjM4NDtlLmRha2F0YWthbmE9MTI0ODA7ZS5kYWxhcmFiaWM9MTU4MztlLmRhbGV0PTE0OTE7ZS5kYWxldGRhZ2VzaD02NDMwNztlLmRhbGV0ZGFnZXNoaGVicmV3PTY0MzA3O2UuZGFsZXRoZWJyZXc9MTQ5MTtlLmRhbGZpbmFsYXJhYmljPTY1MTk0O2UuZGFtbWFhcmFiaWM9MTYxNTtlLmRhbW1hbG93YXJhYmljPTE2MTU7ZS5kYW1tYXRhbmFsdG9uZWFyYWJpYz0xNjEyO2UuZGFtbWF0YW5hcmFiaWM9MTYxMjtlLmRhbmRhPTI0MDQ7ZS5kYXJnYWhlYnJldz0xNDQ3O2UuZGFyZ2FsZWZ0aGVicmV3PTE0NDc7ZS5kYXNpYXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1NztlLmRibEdyYXZlPTYzMTg3O2UuZGJsYW5nbGVicmFja2V0bGVmdD0xMjI5ODtlLmRibGFuZ2xlYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4NTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0PTEyMjk5O2UuZGJsYW5nbGVicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NjtlLmRibGFyY2hpbnZlcnRlZGJlbG93Y21iPTgxMTtlLmRibGFycm93bGVmdD04NjYwO2UuZGJsYXJyb3dyaWdodD04NjU4O2UuZGJsZGFuZGE9MjQwNTtlLmRibGdyYXZlPTYzMTkwO2UuZGJsZ3JhdmVjbWI9NzgzO2UuZGJsaW50ZWdyYWw9ODc0ODtlLmRibGxvd2xpbmU9ODIxNTtlLmRibGxvd2xpbmVjbWI9ODE5O2UuZGJsb3ZlcmxpbmVjbWI9ODMxO2UuZGJscHJpbWVtb2Q9Njk4O2UuZGJsdmVydGljYWxiYXI9ODIxNDtlLmRibHZlcnRpY2FsbGluZWFib3ZlY21iPTc4MjtlLmRib3BvbW9mbz0xMjU1MztlLmRic3F1YXJlPTEzMjU2O2UuZGNhcm9uPTI3MTtlLmRjZWRpbGxhPTc2OTc7ZS5kY2lyY2xlPTk0Mjc7ZS5kY2lyY3VtZmxleGJlbG93PTc2OTk7ZS5kY3JvYXQ9MjczO2UuZGRhYmVuZ2FsaT0yNDY1O2UuZGRhZGV2YT0yMzM3O2UuZGRhZ3VqYXJhdGk9MjcyMTtlLmRkYWd1cm11a2hpPTI1OTM7ZS5kZGFsYXJhYmljPTE2NzI7ZS5kZGFsZmluYWxhcmFiaWM9NjQzOTM7ZS5kZGRoYWRldmE9MjM5NjtlLmRkaGFiZW5nYWxpPTI0NjY7ZS5kZGhhZGV2YT0yMzM4O2UuZGRoYWd1amFyYXRpPTI3MjI7ZS5kZGhhZ3VybXVraGk9MjU5NDtlLmRkb3RhY2NlbnQ9NzY5MTtlLmRkb3RiZWxvdz03NjkzO2UuZGVjaW1hbHNlcGFyYXRvcmFyYWJpYz0xNjQzO2UuZGVjaW1hbHNlcGFyYXRvcnBlcnNpYW49MTY0MztlLmRlY3lyaWxsaWM9MTA3NjtlLmRlZ3JlZT0xNzY7ZS5kZWhpaGVicmV3PTE0NTM7ZS5kZWhpcmFnYW5hPTEyMzkxO2UuZGVpY29wdGljPTEwMDc7ZS5kZWthdGFrYW5hPTEyNDg3O2UuZGVsZXRlbGVmdD05MDAzO2UuZGVsZXRlcmlnaHQ9ODk5ODtlLmRlbHRhPTk0ODtlLmRlbHRhdHVybmVkPTM5NztlLmRlbm9taW5hdG9ybWludXNvbmVudW1lcmF0b3JiZW5nYWxpPTI1NTI7ZS5kZXpoPTY3NjtlLmRoYWJlbmdhbGk9MjQ3MTtlLmRoYWRldmE9MjM0MztlLmRoYWd1amFyYXRpPTI3Mjc7ZS5kaGFndXJtdWtoaT0yNTk5O2UuZGhvb2s9NTk5O2UuZGlhbHl0aWthdG9ub3M9OTAxO2UuZGlhbHl0aWthdG9ub3NjbWI9ODM2O2UuZGlhbW9uZD05ODMwO2UuZGlhbW9uZHN1aXR3aGl0ZT05ODI2O2UuZGllcmVzaXM9MTY4O2UuZGllcmVzaXNhY3V0ZT02MzE5MTtlLmRpZXJlc2lzYmVsb3djbWI9ODA0O2UuZGllcmVzaXNjbWI9Nzc2O2UuZGllcmVzaXNncmF2ZT02MzE5MjtlLmRpZXJlc2lzdG9ub3M9OTAxO2UuZGloaXJhZ2FuYT0xMjM4NjtlLmRpa2F0YWthbmE9MTI0ODI7ZS5kaXR0b21hcms9MTIyOTE7ZS5kaXZpZGU9MjQ3O2UuZGl2aWRlcz04NzM5O2UuZGl2aXNpb25zbGFzaD04NzI1O2UuZGplY3lyaWxsaWM9MTEwNjtlLmRrc2hhZGU9OTYxOTtlLmRsaW5lYmVsb3c9NzY5NTtlLmRsc3F1YXJlPTEzMjA3O2UuZG1hY3Jvbj0yNzM7ZS5kbW9ub3NwYWNlPTY1MzQ4O2UuZG5ibG9jaz05NjA0O2UuZG9jaGFkYXRoYWk9MzU5ODtlLmRvZGVrdGhhaT0zNjA0O2UuZG9oaXJhZ2FuYT0xMjM5MztlLmRva2F0YWthbmE9MTI0ODk7ZS5kb2xsYXI9MzY7ZS5kb2xsYXJpbmZlcmlvcj02MzIwMztlLmRvbGxhcm1vbm9zcGFjZT02NTI4NDtlLmRvbGxhcm9sZHN0eWxlPTYzMjY4O2UuZG9sbGFyc21hbGw9NjUxMjk7ZS5kb2xsYXJzdXBlcmlvcj02MzIwNDtlLmRvbmc9ODM2MztlLmRvcnVzcXVhcmU9MTMwOTQ7ZS5kb3RhY2NlbnQ9NzI5O2UuZG90YWNjZW50Y21iPTc3NTtlLmRvdGJlbG93Y21iPTgwMztlLmRvdGJlbG93Y29tYj04MDM7ZS5kb3RrYXRha2FuYT0xMjUzOTtlLmRvdGxlc3NpPTMwNTtlLmRvdGxlc3NqPTYzMTY2O2UuZG90bGVzc2pzdHJva2Vob29rPTY0NDtlLmRvdG1hdGg9ODkwMTtlLmRvdHRlZGNpcmNsZT05Njc2O2UuZG91YmxleW9kcGF0YWg9NjQyODc7ZS5kb3VibGV5b2RwYXRhaGhlYnJldz02NDI4NztlLmRvd250YWNrYmVsb3djbWI9Nzk4O2UuZG93bnRhY2ttb2Q9NzI1O2UuZHBhcmVuPTkzNzU7ZS5kc3VwZXJpb3I9NjMyMTE7ZS5kdGFpbD01OTg7ZS5kdG9wYmFyPTM5NjtlLmR1aGlyYWdhbmE9MTIzODk7ZS5kdWthdGFrYW5hPTEyNDg1O2UuZHo9NDk5O2UuZHphbHRvbmU9Njc1O2UuZHpjYXJvbj00NTQ7ZS5kemN1cmw9Njc3O2UuZHplYWJraGFzaWFuY3lyaWxsaWM9MTI0OTtlLmR6ZWN5cmlsbGljPTExMDk7ZS5kemhlY3lyaWxsaWM9MTExOTtlLmU9MTAxO2UuZWFjdXRlPTIzMztlLmVhcnRoPTk3OTM7ZS5lYmVuZ2FsaT0yNDQ3O2UuZWJvcG9tb2ZvPTEyNTcyO2UuZWJyZXZlPTI3NztlLmVjYW5kcmFkZXZhPTIzMTc7ZS5lY2FuZHJhZ3VqYXJhdGk9MjcwMTtlLmVjYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzM7ZS5lY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NztlLmVjYXJvbj0yODM7ZS5lY2VkaWxsYWJyZXZlPTc3MDk7ZS5lY2hhcm1lbmlhbj0xMzgxO2UuZWNoeWl3bmFybWVuaWFuPTE0MTU7ZS5lY2lyY2xlPTk0Mjg7ZS5lY2lyY3VtZmxleD0yMzQ7ZS5lY2lyY3VtZmxleGFjdXRlPTc4NzE7ZS5lY2lyY3VtZmxleGJlbG93PTc3MDU7ZS5lY2lyY3VtZmxleGRvdGJlbG93PTc4Nzk7ZS5lY2lyY3VtZmxleGdyYXZlPTc4NzM7ZS5lY2lyY3VtZmxleGhvb2thYm92ZT03ODc1O2UuZWNpcmN1bWZsZXh0aWxkZT03ODc3O2UuZWN5cmlsbGljPTExMDg7ZS5lZGJsZ3JhdmU9NTE3O2UuZWRldmE9MjMxOTtlLmVkaWVyZXNpcz0yMzU7ZS5lZG90PTI3OTtlLmVkb3RhY2NlbnQ9Mjc5O2UuZWRvdGJlbG93PTc4NjU7ZS5lZWd1cm11a2hpPTI1NzU7ZS5lZW1hdHJhZ3VybXVraGk9MjYzMTtlLmVmY3lyaWxsaWM9MTA5MjtlLmVncmF2ZT0yMzI7ZS5lZ3VqYXJhdGk9MjcwMztlLmVoYXJtZW5pYW49MTM4MztlLmVoYm9wb21vZm89MTI1NzM7ZS5laGlyYWdhbmE9MTIzNjA7ZS5laG9va2Fib3ZlPTc4Njc7ZS5laWJvcG9tb2ZvPTEyNTc1O2UuZWlnaHQ9NTY7ZS5laWdodGFyYWJpYz0xNjQwO2UuZWlnaHRiZW5nYWxpPTI1NDI7ZS5laWdodGNpcmNsZT05MzE5O2UuZWlnaHRjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI5O2UuZWlnaHRkZXZhPTI0MTQ7ZS5laWdodGVlbmNpcmNsZT05MzI5O2UuZWlnaHRlZW5wYXJlbj05MzQ5O2UuZWlnaHRlZW5wZXJpb2Q9OTM2OTtlLmVpZ2h0Z3VqYXJhdGk9Mjc5ODtlLmVpZ2h0Z3VybXVraGk9MjY3MDtlLmVpZ2h0aGFja2FyYWJpYz0xNjQwO2UuZWlnaHRoYW5nemhvdT0xMjMyODtlLmVpZ2h0aG5vdGViZWFtZWQ9OTgzNTtlLmVpZ2h0aWRlb2dyYXBoaWNwYXJlbj0xMjgzOTtlLmVpZ2h0aW5mZXJpb3I9ODMyODtlLmVpZ2h0bW9ub3NwYWNlPTY1MzA0O2UuZWlnaHRvbGRzdHlsZT02MzI4ODtlLmVpZ2h0cGFyZW49OTMzOTtlLmVpZ2h0cGVyaW9kPTkzNTk7ZS5laWdodHBlcnNpYW49MTc4NDtlLmVpZ2h0cm9tYW49ODU2NztlLmVpZ2h0c3VwZXJpb3I9ODMxMjtlLmVpZ2h0dGhhaT0zNjcyO2UuZWludmVydGVkYnJldmU9NTE5O2UuZWlvdGlmaWVkY3lyaWxsaWM9MTEyNTtlLmVrYXRha2FuYT0xMjQ1NjtlLmVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NjtlLmVrb25rYXJndXJtdWtoaT0yNjc2O2UuZWtvcmVhbj0xMjYyODtlLmVsY3lyaWxsaWM9MTA4MztlLmVsZW1lbnQ9ODcxMjtlLmVsZXZlbmNpcmNsZT05MzIyO2UuZWxldmVucGFyZW49OTM0MjtlLmVsZXZlbnBlcmlvZD05MzYyO2UuZWxldmVucm9tYW49ODU3MDtlLmVsbGlwc2lzPTgyMzA7ZS5lbGxpcHNpc3ZlcnRpY2FsPTg5NDI7ZS5lbWFjcm9uPTI3NTtlLmVtYWNyb25hY3V0ZT03NzAzO2UuZW1hY3JvbmdyYXZlPTc3MDE7ZS5lbWN5cmlsbGljPTEwODQ7ZS5lbWRhc2g9ODIxMjtlLmVtZGFzaHZlcnRpY2FsPTY1MDczO2UuZW1vbm9zcGFjZT02NTM0OTtlLmVtcGhhc2lzbWFya2FybWVuaWFuPTEzNzE7ZS5lbXB0eXNldD04NzA5O2UuZW5ib3BvbW9mbz0xMjU3OTtlLmVuY3lyaWxsaWM9MTA4NTtlLmVuZGFzaD04MjExO2UuZW5kYXNodmVydGljYWw9NjUwNzQ7ZS5lbmRlc2NlbmRlcmN5cmlsbGljPTExODc7ZS5lbmc9MzMxO2UuZW5nYm9wb21vZm89MTI1ODE7ZS5lbmdoZWN5cmlsbGljPTExODk7ZS5lbmhvb2tjeXJpbGxpYz0xMjI0O2UuZW5zcGFjZT04MTk0O2UuZW9nb25laz0yODE7ZS5lb2tvcmVhbj0xMjYyNztlLmVvcGVuPTYwMztlLmVvcGVuY2xvc2VkPTY2NjtlLmVvcGVucmV2ZXJzZWQ9NjA0O2UuZW9wZW5yZXZlcnNlZGNsb3NlZD02MDY7ZS5lb3BlbnJldmVyc2VkaG9vaz02MDU7ZS5lcGFyZW49OTM3NjtlLmVwc2lsb249OTQ5O2UuZXBzaWxvbnRvbm9zPTk0MTtlLmVxdWFsPTYxO2UuZXF1YWxtb25vc3BhY2U9NjUzMDk7ZS5lcXVhbHNtYWxsPTY1MTI2O2UuZXF1YWxzdXBlcmlvcj04MzE2O2UuZXF1aXZhbGVuY2U9ODgwMTtlLmVyYm9wb21vZm89MTI1ODI7ZS5lcmN5cmlsbGljPTEwODg7ZS5lcmV2ZXJzZWQ9NjAwO2UuZXJldmVyc2VkY3lyaWxsaWM9MTEwMTtlLmVzY3lyaWxsaWM9MTA4OTtlLmVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NTtlLmVzaD02NDM7ZS5lc2hjdXJsPTY0NjtlLmVzaG9ydGRldmE9MjMxODtlLmVzaG9ydHZvd2Vsc2lnbmRldmE9MjM3NDtlLmVzaHJldmVyc2VkbG9vcD00MjY7ZS5lc2hzcXVhdHJldmVyc2VkPTY0NTtlLmVzbWFsbGhpcmFnYW5hPTEyMzU5O2UuZXNtYWxsa2F0YWthbmE9MTI0NTU7ZS5lc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NjtlLmVzdGltYXRlZD04NDk0O2UuZXN1cGVyaW9yPTYzMjEyO2UuZXRhPTk1MTtlLmV0YXJtZW5pYW49MTM4NDtlLmV0YXRvbm9zPTk0MjtlLmV0aD0yNDA7ZS5ldGlsZGU9Nzg2OTtlLmV0aWxkZWJlbG93PTc3MDc7ZS5ldG5haHRhZm91a2hoZWJyZXc9MTQyNTtlLmV0bmFodGFmb3VraGxlZnRoZWJyZXc9MTQyNTtlLmV0bmFodGFoZWJyZXc9MTQyNTtlLmV0bmFodGFsZWZ0aGVicmV3PTE0MjU7ZS5ldHVybmVkPTQ3NztlLmV1a29yZWFuPTEyNjQxO2UuZXVybz04MzY0O2UuZXZvd2Vsc2lnbmJlbmdhbGk9MjUwMztlLmV2b3dlbHNpZ25kZXZhPTIzNzU7ZS5ldm93ZWxzaWduZ3VqYXJhdGk9Mjc1OTtlLmV4Y2xhbT0zMztlLmV4Y2xhbWFybWVuaWFuPTEzNzI7ZS5leGNsYW1kYmw9ODI1MjtlLmV4Y2xhbWRvd249MTYxO2UuZXhjbGFtZG93bnNtYWxsPTYzMzkzO2UuZXhjbGFtbW9ub3NwYWNlPTY1MjgxO2UuZXhjbGFtc21hbGw9NjMyNjU7ZS5leGlzdGVudGlhbD04NzA3O2UuZXpoPTY1ODtlLmV6aGNhcm9uPTQ5NTtlLmV6aGN1cmw9NjU5O2UuZXpocmV2ZXJzZWQ9NDQxO2UuZXpodGFpbD00NDI7ZS5mPTEwMjtlLmZhZGV2YT0yMzk4O2UuZmFndXJtdWtoaT0yNjU0O2UuZmFocmVuaGVpdD04NDU3O2UuZmF0aGFhcmFiaWM9MTYxNDtlLmZhdGhhbG93YXJhYmljPTE2MTQ7ZS5mYXRoYXRhbmFyYWJpYz0xNjExO2UuZmJvcG9tb2ZvPTEyNTUyO2UuZmNpcmNsZT05NDI5O2UuZmRvdGFjY2VudD03NzExO2UuZmVoYXJhYmljPTE2MDE7ZS5mZWhhcm1lbmlhbj0xNDE0O2UuZmVoZmluYWxhcmFiaWM9NjUyMzQ7ZS5mZWhpbml0aWFsYXJhYmljPTY1MjM1O2UuZmVobWVkaWFsYXJhYmljPTY1MjM2O2UuZmVpY29wdGljPTk5NztlLmZlbWFsZT05NzkyO2UuZmY9NjQyNTY7ZS5mX2Y9NjQyNTY7ZS5mZmk9NjQyNTk7ZS5mX2ZfaT02NDI1OTtlLmZmbD02NDI2MDtlLmZfZl9sPTY0MjYwO2UuZmk9NjQyNTc7ZS5mX2k9NjQyNTc7ZS5maWZ0ZWVuY2lyY2xlPTkzMjY7ZS5maWZ0ZWVucGFyZW49OTM0NjtlLmZpZnRlZW5wZXJpb2Q9OTM2NjtlLmZpZ3VyZWRhc2g9ODIxMDtlLmZpbGxlZGJveD05NjMyO2UuZmlsbGVkcmVjdD05NjQ0O2UuZmluYWxrYWY9MTQ5ODtlLmZpbmFsa2FmZGFnZXNoPTY0MzE0O2UuZmluYWxrYWZkYWdlc2hoZWJyZXc9NjQzMTQ7ZS5maW5hbGthZmhlYnJldz0xNDk4O2UuZmluYWxtZW09MTUwMTtlLmZpbmFsbWVtaGVicmV3PTE1MDE7ZS5maW5hbG51bj0xNTAzO2UuZmluYWxudW5oZWJyZXc9MTUwMztlLmZpbmFscGU9MTUwNztlLmZpbmFscGVoZWJyZXc9MTUwNztlLmZpbmFsdHNhZGk9MTUwOTtlLmZpbmFsdHNhZGloZWJyZXc9MTUwOTtlLmZpcnN0dG9uZWNoaW5lc2U9NzEzO2UuZmlzaGV5ZT05NjczO2UuZml0YWN5cmlsbGljPTExMzk7ZS5maXZlPTUzO2UuZml2ZWFyYWJpYz0xNjM3O2UuZml2ZWJlbmdhbGk9MjUzOTtlLmZpdmVjaXJjbGU9OTMxNjtlLmZpdmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI2O2UuZml2ZWRldmE9MjQxMTtlLmZpdmVlaWdodGhzPTg1NDE7ZS5maXZlZ3VqYXJhdGk9Mjc5NTtlLmZpdmVndXJtdWtoaT0yNjY3O2UuZml2ZWhhY2thcmFiaWM9MTYzNztlLmZpdmVoYW5nemhvdT0xMjMyNTtlLmZpdmVpZGVvZ3JhcGhpY3BhcmVuPTEyODM2O2UuZml2ZWluZmVyaW9yPTgzMjU7ZS5maXZlbW9ub3NwYWNlPTY1MzAxO2UuZml2ZW9sZHN0eWxlPTYzMjg1O2UuZml2ZXBhcmVuPTkzMzY7ZS5maXZlcGVyaW9kPTkzNTY7ZS5maXZlcGVyc2lhbj0xNzgxO2UuZml2ZXJvbWFuPTg1NjQ7ZS5maXZlc3VwZXJpb3I9ODMwOTtlLmZpdmV0aGFpPTM2Njk7ZS5mbD02NDI1ODtlLmZfbD02NDI1ODtlLmZsb3Jpbj00MDI7ZS5mbW9ub3NwYWNlPTY1MzUwO2UuZm1zcXVhcmU9MTMyMDk7ZS5mb2ZhbnRoYWk9MzYxNTtlLmZvZmF0aGFpPTM2MTM7ZS5mb25nbWFudGhhaT0zNjYzO2UuZm9yYWxsPTg3MDQ7ZS5mb3VyPTUyO2UuZm91cmFyYWJpYz0xNjM2O2UuZm91cmJlbmdhbGk9MjUzODtlLmZvdXJjaXJjbGU9OTMxNTtlLmZvdXJjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI1O2UuZm91cmRldmE9MjQxMDtlLmZvdXJndWphcmF0aT0yNzk0O2UuZm91cmd1cm11a2hpPTI2NjY7ZS5mb3VyaGFja2FyYWJpYz0xNjM2O2UuZm91cmhhbmd6aG91PTEyMzI0O2UuZm91cmlkZW9ncmFwaGljcGFyZW49MTI4MzU7ZS5mb3VyaW5mZXJpb3I9ODMyNDtlLmZvdXJtb25vc3BhY2U9NjUzMDA7ZS5mb3VybnVtZXJhdG9yYmVuZ2FsaT0yNTUxO2UuZm91cm9sZHN0eWxlPTYzMjg0O2UuZm91cnBhcmVuPTkzMzU7ZS5mb3VycGVyaW9kPTkzNTU7ZS5mb3VycGVyc2lhbj0xNzgwO2UuZm91cnJvbWFuPTg1NjM7ZS5mb3Vyc3VwZXJpb3I9ODMwODtlLmZvdXJ0ZWVuY2lyY2xlPTkzMjU7ZS5mb3VydGVlbnBhcmVuPTkzNDU7ZS5mb3VydGVlbnBlcmlvZD05MzY1O2UuZm91cnRoYWk9MzY2ODtlLmZvdXJ0aHRvbmVjaGluZXNlPTcxNTtlLmZwYXJlbj05Mzc3O2UuZnJhY3Rpb249ODI2MDtlLmZyYW5jPTgzNTU7ZS5nPTEwMztlLmdhYmVuZ2FsaT0yNDU1O2UuZ2FjdXRlPTUwMTtlLmdhZGV2YT0yMzI3O2UuZ2FmYXJhYmljPTE3MTE7ZS5nYWZmaW5hbGFyYWJpYz02NDQwMztlLmdhZmluaXRpYWxhcmFiaWM9NjQ0MDQ7ZS5nYWZtZWRpYWxhcmFiaWM9NjQ0MDU7ZS5nYWd1amFyYXRpPTI3MTE7ZS5nYWd1cm11a2hpPTI1ODM7ZS5nYWhpcmFnYW5hPTEyMzY0O2UuZ2FrYXRha2FuYT0xMjQ2MDtlLmdhbW1hPTk0NztlLmdhbW1hbGF0aW5zbWFsbD02MTE7ZS5nYW1tYXN1cGVyaW9yPTczNjtlLmdhbmdpYWNvcHRpYz0xMDAzO2UuZ2JvcG9tb2ZvPTEyNTU3O2UuZ2JyZXZlPTI4NztlLmdjYXJvbj00ODc7ZS5nY2VkaWxsYT0yOTE7ZS5nY2lyY2xlPTk0MzA7ZS5nY2lyY3VtZmxleD0yODU7ZS5nY29tbWFhY2NlbnQ9MjkxO2UuZ2RvdD0yODk7ZS5nZG90YWNjZW50PTI4OTtlLmdlY3lyaWxsaWM9MTA3NTtlLmdlaGlyYWdhbmE9MTIzNzA7ZS5nZWthdGFrYW5hPTEyNDY2O2UuZ2VvbWV0cmljYWxseWVxdWFsPTg3ODU7ZS5nZXJlc2hhY2NlbnRoZWJyZXc9MTQzNjtlLmdlcmVzaGhlYnJldz0xNTIzO2UuZ2VyZXNobXVxZGFtaGVicmV3PTE0Mzc7ZS5nZXJtYW5kYmxzPTIyMztlLmdlcnNoYXlpbWFjY2VudGhlYnJldz0xNDM4O2UuZ2Vyc2hheWltaGVicmV3PTE1MjQ7ZS5nZXRhbWFyaz0xMjMwNztlLmdoYWJlbmdhbGk9MjQ1NjtlLmdoYWRhcm1lbmlhbj0xMzk0O2UuZ2hhZGV2YT0yMzI4O2UuZ2hhZ3VqYXJhdGk9MjcxMjtlLmdoYWd1cm11a2hpPTI1ODQ7ZS5naGFpbmFyYWJpYz0xNTk0O2UuZ2hhaW5maW5hbGFyYWJpYz02NTIzMDtlLmdoYWluaW5pdGlhbGFyYWJpYz02NTIzMTtlLmdoYWlubWVkaWFsYXJhYmljPTY1MjMyO2UuZ2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzM7ZS5naGVzdHJva2VjeXJpbGxpYz0xMTcxO2UuZ2hldXB0dXJuY3lyaWxsaWM9MTE2OTtlLmdoaGFkZXZhPTIzOTQ7ZS5naGhhZ3VybXVraGk9MjY1MDtlLmdob29rPTYwODtlLmdoenNxdWFyZT0xMzIwMztlLmdpaGlyYWdhbmE9MTIzNjY7ZS5naWthdGFrYW5hPTEyNDYyO2UuZ2ltYXJtZW5pYW49MTM3OTtlLmdpbWVsPTE0OTA7ZS5naW1lbGRhZ2VzaD02NDMwNjtlLmdpbWVsZGFnZXNoaGVicmV3PTY0MzA2O2UuZ2ltZWxoZWJyZXc9MTQ5MDtlLmdqZWN5cmlsbGljPTExMDc7ZS5nbG90dGFsaW52ZXJ0ZWRzdHJva2U9NDQ2O2UuZ2xvdHRhbHN0b3A9NjYwO2UuZ2xvdHRhbHN0b3BpbnZlcnRlZD02NjI7ZS5nbG90dGFsc3RvcG1vZD03MDQ7ZS5nbG90dGFsc3RvcHJldmVyc2VkPTY2MTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRtb2Q9NzA1O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZHN1cGVyaW9yPTc0MDtlLmdsb3R0YWxzdG9wc3Ryb2tlPTY3MztlLmdsb3R0YWxzdG9wc3Ryb2tlcmV2ZXJzZWQ9Njc0O2UuZ21hY3Jvbj03NzEzO2UuZ21vbm9zcGFjZT02NTM1MTtlLmdvaGlyYWdhbmE9MTIzNzI7ZS5nb2thdGFrYW5hPTEyNDY4O2UuZ3BhcmVuPTkzNzg7ZS5ncGFzcXVhcmU9MTMyMjg7ZS5ncmFkaWVudD04NzExO2UuZ3JhdmU9OTY7ZS5ncmF2ZWJlbG93Y21iPTc5MDtlLmdyYXZlY21iPTc2ODtlLmdyYXZlY29tYj03Njg7ZS5ncmF2ZWRldmE9MjM4NztlLmdyYXZlbG93bW9kPTcxODtlLmdyYXZlbW9ub3NwYWNlPTY1MzQ0O2UuZ3JhdmV0b25lY21iPTgzMjtlLmdyZWF0ZXI9NjI7ZS5ncmVhdGVyZXF1YWw9ODgwNTtlLmdyZWF0ZXJlcXVhbG9ybGVzcz04OTIzO2UuZ3JlYXRlcm1vbm9zcGFjZT02NTMxMDtlLmdyZWF0ZXJvcmVxdWl2YWxlbnQ9ODgxOTtlLmdyZWF0ZXJvcmxlc3M9ODgyMztlLmdyZWF0ZXJvdmVyZXF1YWw9ODgwNztlLmdyZWF0ZXJzbWFsbD02NTEyNTtlLmdzY3JpcHQ9NjA5O2UuZ3N0cm9rZT00ODU7ZS5ndWhpcmFnYW5hPTEyMzY4O2UuZ3VpbGxlbW90bGVmdD0xNzE7ZS5ndWlsbGVtb3RyaWdodD0xODc7ZS5ndWlsc2luZ2xsZWZ0PTgyNDk7ZS5ndWlsc2luZ2xyaWdodD04MjUwO2UuZ3VrYXRha2FuYT0xMjQ2NDtlLmd1cmFtdXNxdWFyZT0xMzA4MDtlLmd5c3F1YXJlPTEzMjU3O2UuaD0xMDQ7ZS5oYWFia2hhc2lhbmN5cmlsbGljPTExOTM7ZS5oYWFsdG9uZWFyYWJpYz0xNzI5O2UuaGFiZW5nYWxpPTI0ODk7ZS5oYWRlc2NlbmRlcmN5cmlsbGljPTEyMDM7ZS5oYWRldmE9MjM2MTtlLmhhZ3VqYXJhdGk9Mjc0NTtlLmhhZ3VybXVraGk9MjYxNztlLmhhaGFyYWJpYz0xNTgxO2UuaGFoZmluYWxhcmFiaWM9NjUxODY7ZS5oYWhpbml0aWFsYXJhYmljPTY1MTg3O2UuaGFoaXJhZ2FuYT0xMjM5OTtlLmhhaG1lZGlhbGFyYWJpYz02NTE4ODtlLmhhaXR1c3F1YXJlPTEzMDk4O2UuaGFrYXRha2FuYT0xMjQ5NTtlLmhha2F0YWthbmFoYWxmd2lkdGg9NjU0MTg7ZS5oYWxhbnRndXJtdWtoaT0yNjM3O2UuaGFtemFhcmFiaWM9MTU2OTtlLmhhbXphbG93YXJhYmljPTE1Njk7ZS5oYW5ndWxmaWxsZXI9MTI2NDQ7ZS5oYXJkc2lnbmN5cmlsbGljPTEwOTg7ZS5oYXJwb29ubGVmdGJhcmJ1cD04NjM2O2UuaGFycG9vbnJpZ2h0YmFyYnVwPTg2NDA7ZS5oYXNxdWFyZT0xMzI1ODtlLmhhdGFmcGF0YWg9MTQ1ODtlLmhhdGFmcGF0YWgxNj0xNDU4O2UuaGF0YWZwYXRhaDIzPTE0NTg7ZS5oYXRhZnBhdGFoMmY9MTQ1ODtlLmhhdGFmcGF0YWhoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWhuYXJyb3doZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWhxdWFydGVyaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFod2lkZWhlYnJldz0xNDU4O2UuaGF0YWZxYW1hdHM9MTQ1OTtlLmhhdGFmcWFtYXRzMWI9MTQ1OTtlLmhhdGFmcWFtYXRzMjg9MTQ1OTtlLmhhdGFmcWFtYXRzMzQ9MTQ1OTtlLmhhdGFmcWFtYXRzaGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c25hcnJvd2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNxdWFydGVyaGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3dpZGVoZWJyZXc9MTQ1OTtlLmhhdGFmc2Vnb2w9MTQ1NztlLmhhdGFmc2Vnb2wxNz0xNDU3O2UuaGF0YWZzZWdvbDI0PTE0NTc7ZS5oYXRhZnNlZ29sMzA9MTQ1NztlLmhhdGFmc2Vnb2xoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2xuYXJyb3doZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2xxdWFydGVyaGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sd2lkZWhlYnJldz0xNDU3O2UuaGJhcj0yOTU7ZS5oYm9wb21vZm89MTI1NTk7ZS5oYnJldmViZWxvdz03NzIzO2UuaGNlZGlsbGE9NzcyMTtlLmhjaXJjbGU9OTQzMTtlLmhjaXJjdW1mbGV4PTI5MztlLmhkaWVyZXNpcz03NzE5O2UuaGRvdGFjY2VudD03NzE1O2UuaGRvdGJlbG93PTc3MTc7ZS5oZT0xNDkyO2UuaGVhcnQ9OTgyOTtlLmhlYXJ0c3VpdGJsYWNrPTk4Mjk7ZS5oZWFydHN1aXR3aGl0ZT05ODI1O2UuaGVkYWdlc2g9NjQzMDg7ZS5oZWRhZ2VzaGhlYnJldz02NDMwODtlLmhlaGFsdG9uZWFyYWJpYz0xNzI5O2UuaGVoYXJhYmljPTE2MDc7ZS5oZWhlYnJldz0xNDkyO2UuaGVoZmluYWxhbHRvbmVhcmFiaWM9NjQ0MjM7ZS5oZWhmaW5hbGFsdHR3b2FyYWJpYz02NTI1ODtlLmhlaGZpbmFsYXJhYmljPTY1MjU4O2UuaGVoaGFtemFhYm92ZWZpbmFsYXJhYmljPTY0NDIxO2UuaGVoaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY0NDIwO2UuaGVoaW5pdGlhbGFsdG9uZWFyYWJpYz02NDQyNDtlLmhlaGluaXRpYWxhcmFiaWM9NjUyNTk7ZS5oZWhpcmFnYW5hPTEyNDA4O2UuaGVobWVkaWFsYWx0b25lYXJhYmljPTY0NDI1O2UuaGVobWVkaWFsYXJhYmljPTY1MjYwO2UuaGVpc2VpZXJhc3F1YXJlPTEzMTc5O2UuaGVrYXRha2FuYT0xMjUwNDtlLmhla2F0YWthbmFoYWxmd2lkdGg9NjU0MjE7ZS5oZWt1dGFhcnVzcXVhcmU9MTMxMTA7ZS5oZW5naG9vaz02MTU7ZS5oZXJ1dHVzcXVhcmU9MTMxMTM7ZS5oZXQ9MTQ5NTtlLmhldGhlYnJldz0xNDk1O2UuaGhvb2s9NjE0O2UuaGhvb2tzdXBlcmlvcj02ODk7ZS5oaWV1aGFjaXJjbGVrb3JlYW49MTI5MjM7ZS5oaWV1aGFwYXJlbmtvcmVhbj0xMjgyNztlLmhpZXVoY2lyY2xla29yZWFuPTEyOTA5O2UuaGlldWhrb3JlYW49MTI2MjI7ZS5oaWV1aHBhcmVua29yZWFuPTEyODEzO2UuaGloaXJhZ2FuYT0xMjQwMjtlLmhpa2F0YWthbmE9MTI0OTg7ZS5oaWthdGFrYW5haGFsZndpZHRoPTY1NDE5O2UuaGlyaXE9MTQ2MDtlLmhpcmlxMTQ9MTQ2MDtlLmhpcmlxMjE9MTQ2MDtlLmhpcmlxMmQ9MTQ2MDtlLmhpcmlxaGVicmV3PTE0NjA7ZS5oaXJpcW5hcnJvd2hlYnJldz0xNDYwO2UuaGlyaXFxdWFydGVyaGVicmV3PTE0NjA7ZS5oaXJpcXdpZGVoZWJyZXc9MTQ2MDtlLmhsaW5lYmVsb3c9NzgzMDtlLmhtb25vc3BhY2U9NjUzNTI7ZS5ob2FybWVuaWFuPTEzOTI7ZS5ob2hpcHRoYWk9MzYyNztlLmhvaGlyYWdhbmE9MTI0MTE7ZS5ob2thdGFrYW5hPTEyNTA3O2UuaG9rYXRha2FuYWhhbGZ3aWR0aD02NTQyMjtlLmhvbGFtPTE0NjU7ZS5ob2xhbTE5PTE0NjU7ZS5ob2xhbTI2PTE0NjU7ZS5ob2xhbTMyPTE0NjU7ZS5ob2xhbWhlYnJldz0xNDY1O2UuaG9sYW1uYXJyb3doZWJyZXc9MTQ2NTtlLmhvbGFtcXVhcnRlcmhlYnJldz0xNDY1O2UuaG9sYW13aWRlaGVicmV3PTE0NjU7ZS5ob25va2h1a3RoYWk9MzYzMDtlLmhvb2thYm92ZWNvbWI9Nzc3O2UuaG9va2NtYj03Nzc7ZS5ob29rcGFsYXRhbGl6ZWRiZWxvd2NtYj04MDE7ZS5ob29rcmV0cm9mbGV4YmVsb3djbWI9ODAyO2UuaG9vbnNxdWFyZT0xMzEyMjtlLmhvcmljb3B0aWM9MTAwMTtlLmhvcml6b250YWxiYXI9ODIxMztlLmhvcm5jbWI9Nzk1O2UuaG90c3ByaW5ncz05ODMyO2UuaG91c2U9ODk2MjtlLmhwYXJlbj05Mzc5O2UuaHN1cGVyaW9yPTY4ODtlLmh0dXJuZWQ9NjEzO2UuaHVoaXJhZ2FuYT0xMjQwNTtlLmh1aWl0b3NxdWFyZT0xMzEwNztlLmh1a2F0YWthbmE9MTI1MDE7ZS5odWthdGFrYW5haGFsZndpZHRoPTY1NDIwO2UuaHVuZ2FydW1sYXV0PTczMztlLmh1bmdhcnVtbGF1dGNtYj03Nzk7ZS5odj00MDU7ZS5oeXBoZW49NDU7ZS5oeXBoZW5pbmZlcmlvcj02MzIwNTtlLmh5cGhlbm1vbm9zcGFjZT02NTI5MztlLmh5cGhlbnNtYWxsPTY1MTIzO2UuaHlwaGVuc3VwZXJpb3I9NjMyMDY7ZS5oeXBoZW50d289ODIwODtlLmk9MTA1O2UuaWFjdXRlPTIzNztlLmlhY3lyaWxsaWM9MTEwMztlLmliZW5nYWxpPTI0Mzk7ZS5pYm9wb21vZm89MTI1ODM7ZS5pYnJldmU9MzAxO2UuaWNhcm9uPTQ2NDtlLmljaXJjbGU9OTQzMjtlLmljaXJjdW1mbGV4PTIzODtlLmljeXJpbGxpYz0xMTEwO2UuaWRibGdyYXZlPTUyMTtlLmlkZW9ncmFwaGVhcnRoY2lyY2xlPTEyOTQzO2UuaWRlb2dyYXBoZmlyZWNpcmNsZT0xMjkzOTtlLmlkZW9ncmFwaGljYWxsaWFuY2VwYXJlbj0xMjg2MztlLmlkZW9ncmFwaGljY2FsbHBhcmVuPTEyODU4O2UuaWRlb2dyYXBoaWNjZW50cmVjaXJjbGU9MTI5NjU7ZS5pZGVvZ3JhcGhpY2Nsb3NlPTEyMjk0O2UuaWRlb2dyYXBoaWNjb21tYT0xMjI4OTtlLmlkZW9ncmFwaGljY29tbWFsZWZ0PTY1MzgwO2UuaWRlb2dyYXBoaWNjb25ncmF0dWxhdGlvbnBhcmVuPTEyODU1O2UuaWRlb2dyYXBoaWNjb3JyZWN0Y2lyY2xlPTEyOTYzO2UuaWRlb2dyYXBoaWNlYXJ0aHBhcmVuPTEyODQ3O2UuaWRlb2dyYXBoaWNlbnRlcnByaXNlcGFyZW49MTI4NjE7ZS5pZGVvZ3JhcGhpY2V4Y2VsbGVudGNpcmNsZT0xMjk1NztlLmlkZW9ncmFwaGljZmVzdGl2YWxwYXJlbj0xMjg2NDtlLmlkZW9ncmFwaGljZmluYW5jaWFsY2lyY2xlPTEyOTUwO2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxwYXJlbj0xMjg1NDtlLmlkZW9ncmFwaGljZmlyZXBhcmVuPTEyODQzO2UuaWRlb2dyYXBoaWNoYXZlcGFyZW49MTI4NTA7ZS5pZGVvZ3JhcGhpY2hpZ2hjaXJjbGU9MTI5NjQ7ZS5pZGVvZ3JhcGhpY2l0ZXJhdGlvbm1hcms9MTIyOTM7ZS5pZGVvZ3JhcGhpY2xhYm9yY2lyY2xlPTEyOTUyO2UuaWRlb2dyYXBoaWNsYWJvcnBhcmVuPTEyODU2O2UuaWRlb2dyYXBoaWNsZWZ0Y2lyY2xlPTEyOTY3O2UuaWRlb2dyYXBoaWNsb3djaXJjbGU9MTI5NjY7ZS5pZGVvZ3JhcGhpY21lZGljaW5lY2lyY2xlPTEyOTY5O2UuaWRlb2dyYXBoaWNtZXRhbHBhcmVuPTEyODQ2O2UuaWRlb2dyYXBoaWNtb29ucGFyZW49MTI4NDI7ZS5pZGVvZ3JhcGhpY25hbWVwYXJlbj0xMjg1MjtlLmlkZW9ncmFwaGljcGVyaW9kPTEyMjkwO2UuaWRlb2dyYXBoaWNwcmludGNpcmNsZT0xMjk1ODtlLmlkZW9ncmFwaGljcmVhY2hwYXJlbj0xMjg2NztlLmlkZW9ncmFwaGljcmVwcmVzZW50cGFyZW49MTI4NTc7ZS5pZGVvZ3JhcGhpY3Jlc291cmNlcGFyZW49MTI4NjI7ZS5pZGVvZ3JhcGhpY3JpZ2h0Y2lyY2xlPTEyOTY4O2UuaWRlb2dyYXBoaWNzZWNyZXRjaXJjbGU9MTI5NTM7ZS5pZGVvZ3JhcGhpY3NlbGZwYXJlbj0xMjg2NjtlLmlkZW9ncmFwaGljc29jaWV0eXBhcmVuPTEyODUxO2UuaWRlb2dyYXBoaWNzcGFjZT0xMjI4ODtlLmlkZW9ncmFwaGljc3BlY2lhbHBhcmVuPTEyODUzO2UuaWRlb2dyYXBoaWNzdG9ja3BhcmVuPTEyODQ5O2UuaWRlb2dyYXBoaWNzdHVkeXBhcmVuPTEyODU5O2UuaWRlb2dyYXBoaWNzdW5wYXJlbj0xMjg0ODtlLmlkZW9ncmFwaGljc3VwZXJ2aXNlcGFyZW49MTI4NjA7ZS5pZGVvZ3JhcGhpY3dhdGVycGFyZW49MTI4NDQ7ZS5pZGVvZ3JhcGhpY3dvb2RwYXJlbj0xMjg0NTtlLmlkZW9ncmFwaGljemVybz0xMjI5NTtlLmlkZW9ncmFwaG1ldGFsY2lyY2xlPTEyOTQyO2UuaWRlb2dyYXBobW9vbmNpcmNsZT0xMjkzODtlLmlkZW9ncmFwaG5hbWVjaXJjbGU9MTI5NDg7ZS5pZGVvZ3JhcGhzdW5jaXJjbGU9MTI5NDQ7ZS5pZGVvZ3JhcGh3YXRlcmNpcmNsZT0xMjk0MDtlLmlkZW9ncmFwaHdvb2RjaXJjbGU9MTI5NDE7ZS5pZGV2YT0yMzExO2UuaWRpZXJlc2lzPTIzOTtlLmlkaWVyZXNpc2FjdXRlPTc3Mjc7ZS5pZGllcmVzaXNjeXJpbGxpYz0xMjUzO2UuaWRvdGJlbG93PTc4ODM7ZS5pZWJyZXZlY3lyaWxsaWM9MTIzOTtlLmllY3lyaWxsaWM9MTA3NztlLmlldW5nYWNpcmNsZWtvcmVhbj0xMjkxNztlLmlldW5nYXBhcmVua29yZWFuPTEyODIxO2UuaWV1bmdjaXJjbGVrb3JlYW49MTI5MDM7ZS5pZXVuZ2tvcmVhbj0xMjYxNTtlLmlldW5ncGFyZW5rb3JlYW49MTI4MDc7ZS5pZ3JhdmU9MjM2O2UuaWd1amFyYXRpPTI2OTU7ZS5pZ3VybXVraGk9MjU2NztlLmloaXJhZ2FuYT0xMjM1NjtlLmlob29rYWJvdmU9Nzg4MTtlLmlpYmVuZ2FsaT0yNDQwO2UuaWljeXJpbGxpYz0xMDgwO2UuaWlkZXZhPTIzMTI7ZS5paWd1amFyYXRpPTI2OTY7ZS5paWd1cm11a2hpPTI1Njg7ZS5paW1hdHJhZ3VybXVraGk9MjYyNDtlLmlpbnZlcnRlZGJyZXZlPTUyMztlLmlpc2hvcnRjeXJpbGxpYz0xMDgxO2UuaWl2b3dlbHNpZ25iZW5nYWxpPTI0OTY7ZS5paXZvd2Vsc2lnbmRldmE9MjM2ODtlLmlpdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MjtlLmlqPTMwNztlLmlrYXRha2FuYT0xMjQ1MjtlLmlrYXRha2FuYWhhbGZ3aWR0aD02NTM5NDtlLmlrb3JlYW49MTI2NDM7ZS5pbGRlPTczMjtlLmlsdXloZWJyZXc9MTQ1MjtlLmltYWNyb249Mjk5O2UuaW1hY3JvbmN5cmlsbGljPTEyNTE7ZS5pbWFnZW9yYXBwcm94aW1hdGVseWVxdWFsPTg3ODc7ZS5pbWF0cmFndXJtdWtoaT0yNjIzO2UuaW1vbm9zcGFjZT02NTM1MztlLmluY3JlbWVudD04NzEwO2UuaW5maW5pdHk9ODczNDtlLmluaWFybWVuaWFuPTEzODc7ZS5pbnRlZ3JhbD04NzQ3O2UuaW50ZWdyYWxib3R0b209ODk5MztlLmludGVncmFsYnQ9ODk5MztlLmludGVncmFsZXg9NjM3MzM7ZS5pbnRlZ3JhbHRvcD04OTkyO2UuaW50ZWdyYWx0cD04OTkyO2UuaW50ZXJzZWN0aW9uPTg3NDU7ZS5pbnRpc3F1YXJlPTEzMDYxO2UuaW52YnVsbGV0PTk2ODg7ZS5pbnZjaXJjbGU9OTY4OTtlLmludnNtaWxlZmFjZT05Nzg3O2UuaW9jeXJpbGxpYz0xMTA1O2UuaW9nb25laz0zMDM7ZS5pb3RhPTk1MztlLmlvdGFkaWVyZXNpcz05NzA7ZS5pb3RhZGllcmVzaXN0b25vcz05MTI7ZS5pb3RhbGF0aW49NjE3O2UuaW90YXRvbm9zPTk0MztlLmlwYXJlbj05MzgwO2UuaXJpZ3VybXVraGk9MjY3NDtlLmlzbWFsbGhpcmFnYW5hPTEyMzU1O2UuaXNtYWxsa2F0YWthbmE9MTI0NTE7ZS5pc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NDtlLmlzc2hhcmJlbmdhbGk9MjU1NDtlLmlzdHJva2U9NjE2O2UuaXN1cGVyaW9yPTYzMjEzO2UuaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDU7ZS5pdGVyYXRpb25rYXRha2FuYT0xMjU0MTtlLml0aWxkZT0yOTc7ZS5pdGlsZGViZWxvdz03NzI1O2UuaXVib3BvbW9mbz0xMjU4NTtlLml1Y3lyaWxsaWM9MTEwMjtlLml2b3dlbHNpZ25iZW5nYWxpPTI0OTU7ZS5pdm93ZWxzaWduZGV2YT0yMzY3O2UuaXZvd2Vsc2lnbmd1amFyYXRpPTI3NTE7ZS5pemhpdHNhY3lyaWxsaWM9MTE0MTtlLml6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDM7ZS5qPTEwNjtlLmphYXJtZW5pYW49MTM5MztlLmphYmVuZ2FsaT0yNDYwO2UuamFkZXZhPTIzMzI7ZS5qYWd1amFyYXRpPTI3MTY7ZS5qYWd1cm11a2hpPTI1ODg7ZS5qYm9wb21vZm89MTI1NjA7ZS5qY2Fyb249NDk2O2UuamNpcmNsZT05NDMzO2UuamNpcmN1bWZsZXg9MzA5O2UuamNyb3NzZWR0YWlsPTY2OTtlLmpkb3RsZXNzc3Ryb2tlPTYwNztlLmplY3lyaWxsaWM9MTExMjtlLmplZW1hcmFiaWM9MTU4MDtlLmplZW1maW5hbGFyYWJpYz02NTE4MjtlLmplZW1pbml0aWFsYXJhYmljPTY1MTgzO2UuamVlbW1lZGlhbGFyYWJpYz02NTE4NDtlLmplaGFyYWJpYz0xNjg4O2UuamVoZmluYWxhcmFiaWM9NjQzOTU7ZS5qaGFiZW5nYWxpPTI0NjE7ZS5qaGFkZXZhPTIzMzM7ZS5qaGFndWphcmF0aT0yNzE3O2UuamhhZ3VybXVraGk9MjU4OTtlLmpoZWhhcm1lbmlhbj0xNDAzO2UuamlzPTEyMjkyO2Uuam1vbm9zcGFjZT02NTM1NDtlLmpwYXJlbj05MzgxO2UuanN1cGVyaW9yPTY5MDtlLms9MTA3O2Uua2FiYXNoa2lyY3lyaWxsaWM9MTE4NTtlLmthYmVuZ2FsaT0yNDUzO2Uua2FjdXRlPTc3Mjk7ZS5rYWN5cmlsbGljPTEwODI7ZS5rYWRlc2NlbmRlcmN5cmlsbGljPTExNzk7ZS5rYWRldmE9MjMyNTtlLmthZj0xNDk5O2Uua2FmYXJhYmljPTE2MDM7ZS5rYWZkYWdlc2g9NjQzMTU7ZS5rYWZkYWdlc2hoZWJyZXc9NjQzMTU7ZS5rYWZmaW5hbGFyYWJpYz02NTI0MjtlLmthZmhlYnJldz0xNDk5O2Uua2FmaW5pdGlhbGFyYWJpYz02NTI0MztlLmthZm1lZGlhbGFyYWJpYz02NTI0NDtlLmthZnJhZmVoZWJyZXc9NjQzMzM7ZS5rYWd1amFyYXRpPTI3MDk7ZS5rYWd1cm11a2hpPTI1ODE7ZS5rYWhpcmFnYW5hPTEyMzYzO2Uua2Fob29rY3lyaWxsaWM9MTIyMDtlLmtha2F0YWthbmE9MTI0NTk7ZS5rYWthdGFrYW5haGFsZndpZHRoPTY1Mzk4O2Uua2FwcGE9OTU0O2Uua2FwcGFzeW1ib2xncmVlaz0xMDA4O2Uua2FweWVvdW5taWV1bWtvcmVhbj0xMjY1NztlLmthcHllb3VucGhpZXVwaGtvcmVhbj0xMjY3NjtlLmthcHllb3VucGlldXBrb3JlYW49MTI2NjQ7ZS5rYXB5ZW91bnNzYW5ncGlldXBrb3JlYW49MTI2NjU7ZS5rYXJvcmlpc3F1YXJlPTEzMDY5O2Uua2FzaGlkYWF1dG9hcmFiaWM9MTYwMDtlLmthc2hpZGFhdXRvbm9zaWRlYmVhcmluZ2FyYWJpYz0xNjAwO2Uua2FzbWFsbGthdGFrYW5hPTEyNTMzO2Uua2FzcXVhcmU9MTMxODg7ZS5rYXNyYWFyYWJpYz0xNjE2O2Uua2FzcmF0YW5hcmFiaWM9MTYxMztlLmthc3Ryb2tlY3lyaWxsaWM9MTE4MztlLmthdGFoaXJhcHJvbG9uZ21hcmtoYWxmd2lkdGg9NjUzOTI7ZS5rYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MTtlLmtib3BvbW9mbz0xMjU1ODtlLmtjYWxzcXVhcmU9MTMxOTM7ZS5rY2Fyb249NDg5O2Uua2NlZGlsbGE9MzExO2Uua2NpcmNsZT05NDM0O2Uua2NvbW1hYWNjZW50PTMxMTtlLmtkb3RiZWxvdz03NzMxO2Uua2VoYXJtZW5pYW49MTQxMjtlLmtlaGlyYWdhbmE9MTIzNjk7ZS5rZWthdGFrYW5hPTEyNDY1O2Uua2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwMTtlLmtlbmFybWVuaWFuPTEzOTE7ZS5rZXNtYWxsa2F0YWthbmE9MTI1MzQ7ZS5rZ3JlZW5sYW5kaWM9MzEyO2Uua2hhYmVuZ2FsaT0yNDU0O2Uua2hhY3lyaWxsaWM9MTA5MztlLmtoYWRldmE9MjMyNjtlLmtoYWd1amFyYXRpPTI3MTA7ZS5raGFndXJtdWtoaT0yNTgyO2Uua2hhaGFyYWJpYz0xNTgyO2Uua2hhaGZpbmFsYXJhYmljPTY1MTkwO2Uua2hhaGluaXRpYWxhcmFiaWM9NjUxOTE7ZS5raGFobWVkaWFsYXJhYmljPTY1MTkyO2Uua2hlaWNvcHRpYz05OTk7ZS5raGhhZGV2YT0yMzkzO2Uua2hoYWd1cm11a2hpPTI2NDk7ZS5raGlldWtoYWNpcmNsZWtvcmVhbj0xMjkyMDtlLmtoaWV1a2hhcGFyZW5rb3JlYW49MTI4MjQ7ZS5raGlldWtoY2lyY2xla29yZWFuPTEyOTA2O2Uua2hpZXVraGtvcmVhbj0xMjYxOTtlLmtoaWV1a2hwYXJlbmtvcmVhbj0xMjgxMDtlLmtob2toYWl0aGFpPTM1ODY7ZS5raG9raG9udGhhaT0zNTg5O2Uua2hva2h1YXR0aGFpPTM1ODc7ZS5raG9raHdhaXRoYWk9MzU4ODtlLmtob211dHRoYWk9MzY3NTtlLmtob29rPTQwOTtlLmtob3Jha2hhbmd0aGFpPTM1OTA7ZS5raHpzcXVhcmU9MTMyMDE7ZS5raWhpcmFnYW5hPTEyMzY1O2Uua2lrYXRha2FuYT0xMjQ2MTtlLmtpa2F0YWthbmFoYWxmd2lkdGg9NjUzOTk7ZS5raXJvZ3VyYW11c3F1YXJlPTEzMDc3O2Uua2lyb21lZXRvcnVzcXVhcmU9MTMwNzg7ZS5raXJvc3F1YXJlPTEzMDc2O2Uua2l5ZW9rYWNpcmNsZWtvcmVhbj0xMjkxMDtlLmtpeWVva2FwYXJlbmtvcmVhbj0xMjgxNDtlLmtpeWVva2NpcmNsZWtvcmVhbj0xMjg5NjtlLmtpeWVva2tvcmVhbj0xMjU5MztlLmtpeWVva3BhcmVua29yZWFuPTEyODAwO2Uua2l5ZW9rc2lvc2tvcmVhbj0xMjU5NTtlLmtqZWN5cmlsbGljPTExMTY7ZS5rbGluZWJlbG93PTc3MzM7ZS5rbHNxdWFyZT0xMzIwODtlLmttY3ViZWRzcXVhcmU9MTMyMjI7ZS5rbW9ub3NwYWNlPTY1MzU1O2Uua21zcXVhcmVkc3F1YXJlPTEzMjE4O2Uua29oaXJhZ2FuYT0xMjM3MTtlLmtvaG1zcXVhcmU9MTMyNDg7ZS5rb2thaXRoYWk9MzU4NTtlLmtva2F0YWthbmE9MTI0Njc7ZS5rb2thdGFrYW5haGFsZndpZHRoPTY1NDAyO2Uua29vcG9zcXVhcmU9MTMwODY7ZS5rb3BwYWN5cmlsbGljPTExNTM7ZS5rb3JlYW5zdGFuZGFyZHN5bWJvbD0xMjkyNztlLmtvcm9uaXNjbWI9ODM1O2Uua3BhcmVuPTkzODI7ZS5rcGFzcXVhcmU9MTMyMjY7ZS5rc2ljeXJpbGxpYz0xMTM1O2Uua3RzcXVhcmU9MTMyNjM7ZS5rdHVybmVkPTY3MDtlLmt1aGlyYWdhbmE9MTIzNjc7ZS5rdWthdGFrYW5hPTEyNDYzO2Uua3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwMDtlLmt2c3F1YXJlPTEzMjQwO2Uua3dzcXVhcmU9MTMyNDY7ZS5sPTEwODtlLmxhYmVuZ2FsaT0yNDgyO2UubGFjdXRlPTMxNDtlLmxhZGV2YT0yMzU0O2UubGFndWphcmF0aT0yNzM4O2UubGFndXJtdWtoaT0yNjEwO2UubGFra2hhbmd5YW90aGFpPTM2NTM7ZS5sYW1hbGVmZmluYWxhcmFiaWM9NjUyNzY7ZS5sYW1hbGVmaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MjcyO2UubGFtYWxlZmhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NTI3MTtlLmxhbWFsZWZoYW16YWJlbG93ZmluYWxhcmFiaWM9NjUyNzQ7ZS5sYW1hbGVmaGFtemFiZWxvd2lzb2xhdGVkYXJhYmljPTY1MjczO2UubGFtYWxlZmlzb2xhdGVkYXJhYmljPTY1Mjc1O2UubGFtYWxlZm1hZGRhYWJvdmVmaW5hbGFyYWJpYz02NTI3MDtlLmxhbWFsZWZtYWRkYWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNjk7ZS5sYW1hcmFiaWM9MTYwNDtlLmxhbWJkYT05NTU7ZS5sYW1iZGFzdHJva2U9NDExO2UubGFtZWQ9MTUwMDtlLmxhbWVkZGFnZXNoPTY0MzE2O2UubGFtZWRkYWdlc2hoZWJyZXc9NjQzMTY7ZS5sYW1lZGhlYnJldz0xNTAwO2UubGFtZmluYWxhcmFiaWM9NjUyNDY7ZS5sYW1oYWhpbml0aWFsYXJhYmljPTY0NzE0O2UubGFtaW5pdGlhbGFyYWJpYz02NTI0NztlLmxhbWplZW1pbml0aWFsYXJhYmljPTY0NzEzO2UubGFta2hhaGluaXRpYWxhcmFiaWM9NjQ3MTU7ZS5sYW1sYW1oZWhpc29sYXRlZGFyYWJpYz02NTAxMDtlLmxhbW1lZGlhbGFyYWJpYz02NTI0ODtlLmxhbW1lZW1oYWhpbml0aWFsYXJhYmljPTY0OTA0O2UubGFtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MTY7ZS5sYXJnZWNpcmNsZT05NzExO2UubGJhcj00MTA7ZS5sYmVsdD02MjA7ZS5sYm9wb21vZm89MTI1NTY7ZS5sY2Fyb249MzE4O2UubGNlZGlsbGE9MzE2O2UubGNpcmNsZT05NDM1O2UubGNpcmN1bWZsZXhiZWxvdz03NzQxO2UubGNvbW1hYWNjZW50PTMxNjtlLmxkb3Q9MzIwO2UubGRvdGFjY2VudD0zMjA7ZS5sZG90YmVsb3c9NzczNTtlLmxkb3RiZWxvd21hY3Jvbj03NzM3O2UubGVmdGFuZ2xlYWJvdmVjbWI9Nzk0O2UubGVmdHRhY2tiZWxvd2NtYj03OTI7ZS5sZXNzPTYwO2UubGVzc2VxdWFsPTg4MDQ7ZS5sZXNzZXF1YWxvcmdyZWF0ZXI9ODkyMjtlLmxlc3Ntb25vc3BhY2U9NjUzMDg7ZS5sZXNzb3JlcXVpdmFsZW50PTg4MTg7ZS5sZXNzb3JncmVhdGVyPTg4MjI7ZS5sZXNzb3ZlcmVxdWFsPTg4MDY7ZS5sZXNzc21hbGw9NjUxMjQ7ZS5sZXpoPTYyMjtlLmxmYmxvY2s9OTYxMjtlLmxob29rcmV0cm9mbGV4PTYyMTtlLmxpcmE9ODM1NjtlLmxpd25hcm1lbmlhbj0xMzg4O2UubGo9NDU3O2UubGplY3lyaWxsaWM9MTExMztlLmxsPTYzMTY4O2UubGxhZGV2YT0yMzU1O2UubGxhZ3VqYXJhdGk9MjczOTtlLmxsaW5lYmVsb3c9NzczOTtlLmxsbGFkZXZhPTIzNTY7ZS5sbHZvY2FsaWNiZW5nYWxpPTI1Mjk7ZS5sbHZvY2FsaWNkZXZhPTI0MDE7ZS5sbHZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MzE7ZS5sbHZvY2FsaWN2b3dlbHNpZ25kZXZhPTI0MDM7ZS5sbWlkZGxldGlsZGU9NjE5O2UubG1vbm9zcGFjZT02NTM1NjtlLmxtc3F1YXJlPTEzMjY0O2UubG9jaHVsYXRoYWk9MzYyODtlLmxvZ2ljYWxhbmQ9ODc0MztlLmxvZ2ljYWxub3Q9MTcyO2UubG9naWNhbG5vdHJldmVyc2VkPTg5NzY7ZS5sb2dpY2Fsb3I9ODc0NDtlLmxvbGluZ3RoYWk9MzYyMTtlLmxvbmdzPTM4MztlLmxvd2xpbmVjZW50ZXJsaW5lPTY1MTAyO2UubG93bGluZWNtYj04MTg7ZS5sb3dsaW5lZGFzaGVkPTY1MTAxO2UubG96ZW5nZT05Njc0O2UubHBhcmVuPTkzODM7ZS5sc2xhc2g9MzIyO2UubHNxdWFyZT04NDY3O2UubHN1cGVyaW9yPTYzMjE0O2UubHRzaGFkZT05NjE3O2UubHV0aGFpPTM2MjI7ZS5sdm9jYWxpY2JlbmdhbGk9MjQ0NDtlLmx2b2NhbGljZGV2YT0yMzE2O2UubHZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MzA7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMjtlLmx4c3F1YXJlPTEzMjY3O2UubT0xMDk7ZS5tYWJlbmdhbGk9MjQ3ODtlLm1hY3Jvbj0xNzU7ZS5tYWNyb25iZWxvd2NtYj04MTc7ZS5tYWNyb25jbWI9NzcyO2UubWFjcm9ubG93bW9kPTcxNztlLm1hY3Jvbm1vbm9zcGFjZT02NTUwNztlLm1hY3V0ZT03NzQzO2UubWFkZXZhPTIzNTA7ZS5tYWd1amFyYXRpPTI3MzQ7ZS5tYWd1cm11a2hpPTI2MDY7ZS5tYWhhcGFraGhlYnJldz0xNDQ0O2UubWFoYXBha2hsZWZ0aGVicmV3PTE0NDQ7ZS5tYWhpcmFnYW5hPTEyNDE0O2UubWFpY2hhdHRhd2Fsb3dsZWZ0dGhhaT02MzYzNztlLm1haWNoYXR0YXdhbG93cmlnaHR0aGFpPTYzNjM2O2UubWFpY2hhdHRhd2F0aGFpPTM2NTk7ZS5tYWljaGF0dGF3YXVwcGVybGVmdHRoYWk9NjM2MzU7ZS5tYWlla2xvd2xlZnR0aGFpPTYzNjI4O2UubWFpZWtsb3dyaWdodHRoYWk9NjM2Mjc7ZS5tYWlla3RoYWk9MzY1NjtlLm1haWVrdXBwZXJsZWZ0dGhhaT02MzYyNjtlLm1haWhhbmFrYXRsZWZ0dGhhaT02MzYyMDtlLm1haWhhbmFrYXR0aGFpPTM2MzM7ZS5tYWl0YWlraHVsZWZ0dGhhaT02MzYyNTtlLm1haXRhaWtodXRoYWk9MzY1NTtlLm1haXRob2xvd2xlZnR0aGFpPTYzNjMxO2UubWFpdGhvbG93cmlnaHR0aGFpPTYzNjMwO2UubWFpdGhvdGhhaT0zNjU3O2UubWFpdGhvdXBwZXJsZWZ0dGhhaT02MzYyOTtlLm1haXRyaWxvd2xlZnR0aGFpPTYzNjM0O2UubWFpdHJpbG93cmlnaHR0aGFpPTYzNjMzO2UubWFpdHJpdGhhaT0zNjU4O2UubWFpdHJpdXBwZXJsZWZ0dGhhaT02MzYzMjtlLm1haXlhbW9rdGhhaT0zNjU0O2UubWFrYXRha2FuYT0xMjUxMDtlLm1ha2F0YWthbmFoYWxmd2lkdGg9NjU0MjM7ZS5tYWxlPTk3OTQ7ZS5tYW5zeW9uc3F1YXJlPTEzMTI3O2UubWFxYWZoZWJyZXc9MTQ3MDtlLm1hcnM9OTc5NDtlLm1hc29yYWNpcmNsZWhlYnJldz0xNDU1O2UubWFzcXVhcmU9MTMxODc7ZS5tYm9wb21vZm89MTI1NTE7ZS5tYnNxdWFyZT0xMzI2ODtlLm1jaXJjbGU9OTQzNjtlLm1jdWJlZHNxdWFyZT0xMzIyMTtlLm1kb3RhY2NlbnQ9Nzc0NTtlLm1kb3RiZWxvdz03NzQ3O2UubWVlbWFyYWJpYz0xNjA1O2UubWVlbWZpbmFsYXJhYmljPTY1MjUwO2UubWVlbWluaXRpYWxhcmFiaWM9NjUyNTE7ZS5tZWVtbWVkaWFsYXJhYmljPTY1MjUyO2UubWVlbW1lZW1pbml0aWFsYXJhYmljPTY0NzIxO2UubWVlbW1lZW1pc29sYXRlZGFyYWJpYz02NDU4NDtlLm1lZXRvcnVzcXVhcmU9MTMxMzM7ZS5tZWhpcmFnYW5hPTEyNDE3O2UubWVpemllcmFzcXVhcmU9MTMxODI7ZS5tZWthdGFrYW5hPTEyNTEzO2UubWVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNjtlLm1lbT0xNTAyO2UubWVtZGFnZXNoPTY0MzE4O2UubWVtZGFnZXNoaGVicmV3PTY0MzE4O2UubWVtaGVicmV3PTE1MDI7ZS5tZW5hcm1lbmlhbj0xMzk2O2UubWVya2hhaGVicmV3PTE0NDU7ZS5tZXJraGFrZWZ1bGFoZWJyZXc9MTQ0NjtlLm1lcmtoYWtlZnVsYWxlZnRoZWJyZXc9MTQ0NjtlLm1lcmtoYWxlZnRoZWJyZXc9MTQ0NTtlLm1ob29rPTYyNTtlLm1oenNxdWFyZT0xMzIwMjtlLm1pZGRsZWRvdGthdGFrYW5haGFsZndpZHRoPTY1MzgxO2UubWlkZG90PTE4MztlLm1pZXVtYWNpcmNsZWtvcmVhbj0xMjkxNDtlLm1pZXVtYXBhcmVua29yZWFuPTEyODE4O2UubWlldW1jaXJjbGVrb3JlYW49MTI5MDA7ZS5taWV1bWtvcmVhbj0xMjYwOTtlLm1pZXVtcGFuc2lvc2tvcmVhbj0xMjY1NjtlLm1pZXVtcGFyZW5rb3JlYW49MTI4MDQ7ZS5taWV1bXBpZXVwa29yZWFuPTEyNjU0O2UubWlldW1zaW9za29yZWFuPTEyNjU1O2UubWloaXJhZ2FuYT0xMjQxNTtlLm1pa2F0YWthbmE9MTI1MTE7ZS5taWthdGFrYW5haGFsZndpZHRoPTY1NDI0O2UubWludXM9ODcyMjtlLm1pbnVzYmVsb3djbWI9ODAwO2UubWludXNjaXJjbGU9ODg1NDtlLm1pbnVzbW9kPTcyNztlLm1pbnVzcGx1cz04NzIzO2UubWludXRlPTgyNDI7ZS5taXJpYmFhcnVzcXVhcmU9MTMxMzA7ZS5taXJpc3F1YXJlPTEzMTI5O2UubWxvbmdsZWd0dXJuZWQ9NjI0O2UubWxzcXVhcmU9MTMyMDY7ZS5tbWN1YmVkc3F1YXJlPTEzMjE5O2UubW1vbm9zcGFjZT02NTM1NztlLm1tc3F1YXJlZHNxdWFyZT0xMzIxNTtlLm1vaGlyYWdhbmE9MTI0MTg7ZS5tb2htc3F1YXJlPTEzMjQ5O2UubW9rYXRha2FuYT0xMjUxNDtlLm1va2F0YWthbmFoYWxmd2lkdGg9NjU0Mjc7ZS5tb2xzcXVhcmU9MTMyNzA7ZS5tb21hdGhhaT0zNjE3O2UubW92ZXJzc3F1YXJlPTEzMjIzO2UubW92ZXJzc3F1YXJlZHNxdWFyZT0xMzIyNDtlLm1wYXJlbj05Mzg0O2UubXBhc3F1YXJlPTEzMjI3O2UubXNzcXVhcmU9MTMyMzU7ZS5tc3VwZXJpb3I9NjMyMTU7ZS5tdHVybmVkPTYyMztlLm11PTE4MTtlLm11MT0xODE7ZS5tdWFzcXVhcmU9MTMxODY7ZS5tdWNoZ3JlYXRlcj04ODExO2UubXVjaGxlc3M9ODgxMDtlLm11ZnNxdWFyZT0xMzE5NjtlLm11Z3JlZWs9OTU2O2UubXVnc3F1YXJlPTEzMTk3O2UubXVoaXJhZ2FuYT0xMjQxNjtlLm11a2F0YWthbmE9MTI1MTI7ZS5tdWthdGFrYW5haGFsZndpZHRoPTY1NDI1O2UubXVsc3F1YXJlPTEzMjA1O2UubXVsdGlwbHk9MjE1O2UubXVtc3F1YXJlPTEzMjExO2UubXVuYWhoZWJyZXc9MTQ0MztlLm11bmFobGVmdGhlYnJldz0xNDQzO2UubXVzaWNhbG5vdGU9OTgzNDtlLm11c2ljYWxub3RlZGJsPTk4MzU7ZS5tdXNpY2ZsYXRzaWduPTk4Mzc7ZS5tdXNpY3NoYXJwc2lnbj05ODM5O2UubXVzc3F1YXJlPTEzMjM0O2UubXV2c3F1YXJlPTEzMjM4O2UubXV3c3F1YXJlPTEzMjQ0O2UubXZtZWdhc3F1YXJlPTEzMjQxO2UubXZzcXVhcmU9MTMyMzk7ZS5td21lZ2FzcXVhcmU9MTMyNDc7ZS5td3NxdWFyZT0xMzI0NTtlLm49MTEwO2UubmFiZW5nYWxpPTI0NzI7ZS5uYWJsYT04NzExO2UubmFjdXRlPTMyNDtlLm5hZGV2YT0yMzQ0O2UubmFndWphcmF0aT0yNzI4O2UubmFndXJtdWtoaT0yNjAwO2UubmFoaXJhZ2FuYT0xMjM5NDtlLm5ha2F0YWthbmE9MTI0OTA7ZS5uYWthdGFrYW5haGFsZndpZHRoPTY1NDEzO2UubmFwb3N0cm9waGU9MzI5O2UubmFzcXVhcmU9MTMxODU7ZS5uYm9wb21vZm89MTI1NTU7ZS5uYnNwYWNlPTE2MDtlLm5jYXJvbj0zMjg7ZS5uY2VkaWxsYT0zMjY7ZS5uY2lyY2xlPTk0Mzc7ZS5uY2lyY3VtZmxleGJlbG93PTc3NTU7ZS5uY29tbWFhY2NlbnQ9MzI2O2UubmRvdGFjY2VudD03NzQ5O2UubmRvdGJlbG93PTc3NTE7ZS5uZWhpcmFnYW5hPTEyMzk3O2UubmVrYXRha2FuYT0xMjQ5MztlLm5la2F0YWthbmFoYWxmd2lkdGg9NjU0MTY7ZS5uZXdzaGVxZWxzaWduPTgzNjI7ZS5uZnNxdWFyZT0xMzE5NTtlLm5nYWJlbmdhbGk9MjQ1NztlLm5nYWRldmE9MjMyOTtlLm5nYWd1amFyYXRpPTI3MTM7ZS5uZ2FndXJtdWtoaT0yNTg1O2Uubmdvbmd1dGhhaT0zNTkxO2UubmhpcmFnYW5hPTEyNDM1O2Uubmhvb2tsZWZ0PTYyNjtlLm5ob29rcmV0cm9mbGV4PTYyNztlLm5pZXVuYWNpcmNsZWtvcmVhbj0xMjkxMTtlLm5pZXVuYXBhcmVua29yZWFuPTEyODE1O2UubmlldW5jaWV1Y2tvcmVhbj0xMjU5NztlLm5pZXVuY2lyY2xla29yZWFuPTEyODk3O2UubmlldW5oaWV1aGtvcmVhbj0xMjU5ODtlLm5pZXVua29yZWFuPTEyNTk2O2UubmlldW5wYW5zaW9za29yZWFuPTEyNjQ4O2UubmlldW5wYXJlbmtvcmVhbj0xMjgwMTtlLm5pZXVuc2lvc2tvcmVhbj0xMjY0NztlLm5pZXVudGlrZXV0a29yZWFuPTEyNjQ2O2UubmloaXJhZ2FuYT0xMjM5NTtlLm5pa2F0YWthbmE9MTI0OTE7ZS5uaWthdGFrYW5haGFsZndpZHRoPTY1NDE0O2UubmlraGFoaXRsZWZ0dGhhaT02MzY0MTtlLm5pa2hhaGl0dGhhaT0zNjYxO2UubmluZT01NztlLm5pbmVhcmFiaWM9MTY0MTtlLm5pbmViZW5nYWxpPTI1NDM7ZS5uaW5lY2lyY2xlPTkzMjA7ZS5uaW5lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEzMDtlLm5pbmVkZXZhPTI0MTU7ZS5uaW5lZ3VqYXJhdGk9Mjc5OTtlLm5pbmVndXJtdWtoaT0yNjcxO2UubmluZWhhY2thcmFiaWM9MTY0MTtlLm5pbmVoYW5nemhvdT0xMjMyOTtlLm5pbmVpZGVvZ3JhcGhpY3BhcmVuPTEyODQwO2UubmluZWluZmVyaW9yPTgzMjk7ZS5uaW5lbW9ub3NwYWNlPTY1MzA1O2UubmluZW9sZHN0eWxlPTYzMjg5O2UubmluZXBhcmVuPTkzNDA7ZS5uaW5lcGVyaW9kPTkzNjA7ZS5uaW5lcGVyc2lhbj0xNzg1O2UubmluZXJvbWFuPTg1Njg7ZS5uaW5lc3VwZXJpb3I9ODMxMztlLm5pbmV0ZWVuY2lyY2xlPTkzMzA7ZS5uaW5ldGVlbnBhcmVuPTkzNTA7ZS5uaW5ldGVlbnBlcmlvZD05MzcwO2UubmluZXRoYWk9MzY3MztlLm5qPTQ2MDtlLm5qZWN5cmlsbGljPTExMTQ7ZS5ua2F0YWthbmE9MTI1MzE7ZS5ua2F0YWthbmFoYWxmd2lkdGg9NjU0Mzc7ZS5ubGVncmlnaHRsb25nPTQxNDtlLm5saW5lYmVsb3c9Nzc1MztlLm5tb25vc3BhY2U9NjUzNTg7ZS5ubXNxdWFyZT0xMzIxMDtlLm5uYWJlbmdhbGk9MjQ2NztlLm5uYWRldmE9MjMzOTtlLm5uYWd1amFyYXRpPTI3MjM7ZS5ubmFndXJtdWtoaT0yNTk1O2Uubm5uYWRldmE9MjM0NTtlLm5vaGlyYWdhbmE9MTIzOTg7ZS5ub2thdGFrYW5hPTEyNDk0O2Uubm9rYXRha2FuYWhhbGZ3aWR0aD02NTQxNztlLm5vbmJyZWFraW5nc3BhY2U9MTYwO2Uubm9uZW50aGFpPTM2MDM7ZS5ub251dGhhaT0zNjA5O2Uubm9vbmFyYWJpYz0xNjA2O2Uubm9vbmZpbmFsYXJhYmljPTY1MjU0O2Uubm9vbmdodW5uYWFyYWJpYz0xNzIyO2Uubm9vbmdodW5uYWZpbmFsYXJhYmljPTY0NDE1O2Uubm9vbmluaXRpYWxhcmFiaWM9NjUyNTU7ZS5ub29uamVlbWluaXRpYWxhcmFiaWM9NjQ3MjI7ZS5ub29uamVlbWlzb2xhdGVkYXJhYmljPTY0NTg3O2Uubm9vbm1lZGlhbGFyYWJpYz02NTI1NjtlLm5vb25tZWVtaW5pdGlhbGFyYWJpYz02NDcyNTtlLm5vb25tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1OTA7ZS5ub29ubm9vbmZpbmFsYXJhYmljPTY0NjUzO2Uubm90Y29udGFpbnM9ODcxNjtlLm5vdGVsZW1lbnQ9ODcxMztlLm5vdGVsZW1lbnRvZj04NzEzO2Uubm90ZXF1YWw9ODgwMDtlLm5vdGdyZWF0ZXI9ODgxNTtlLm5vdGdyZWF0ZXJub3JlcXVhbD04ODE3O2Uubm90Z3JlYXRlcm5vcmxlc3M9ODgyNTtlLm5vdGlkZW50aWNhbD04ODAyO2Uubm90bGVzcz04ODE0O2Uubm90bGVzc25vcmVxdWFsPTg4MTY7ZS5ub3RwYXJhbGxlbD04NzQyO2Uubm90cHJlY2VkZXM9ODgzMjtlLm5vdHN1YnNldD04ODM2O2Uubm90c3VjY2VlZHM9ODgzMztlLm5vdHN1cGVyc2V0PTg4Mzc7ZS5ub3dhcm1lbmlhbj0xMzk4O2UubnBhcmVuPTkzODU7ZS5uc3NxdWFyZT0xMzIzMztlLm5zdXBlcmlvcj04MzE5O2UubnRpbGRlPTI0MTtlLm51PTk1NztlLm51aGlyYWdhbmE9MTIzOTY7ZS5udWthdGFrYW5hPTEyNDkyO2UubnVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNTtlLm51a3RhYmVuZ2FsaT0yNDkyO2UubnVrdGFkZXZhPTIzNjQ7ZS5udWt0YWd1amFyYXRpPTI3NDg7ZS5udWt0YWd1cm11a2hpPTI2MjA7ZS5udW1iZXJzaWduPTM1O2UubnVtYmVyc2lnbm1vbm9zcGFjZT02NTI4MztlLm51bWJlcnNpZ25zbWFsbD02NTExOTtlLm51bWVyYWxzaWduZ3JlZWs9ODg0O2UubnVtZXJhbHNpZ25sb3dlcmdyZWVrPTg4NTtlLm51bWVybz04NDcwO2UubnVuPTE1MDQ7ZS5udW5kYWdlc2g9NjQzMjA7ZS5udW5kYWdlc2hoZWJyZXc9NjQzMjA7ZS5udW5oZWJyZXc9MTUwNDtlLm52c3F1YXJlPTEzMjM3O2UubndzcXVhcmU9MTMyNDM7ZS5ueWFiZW5nYWxpPTI0NjI7ZS5ueWFkZXZhPTIzMzQ7ZS5ueWFndWphcmF0aT0yNzE4O2UubnlhZ3VybXVraGk9MjU5MDtlLm89MTExO2Uub2FjdXRlPTI0MztlLm9hbmd0aGFpPTM2Mjk7ZS5vYmFycmVkPTYyOTtlLm9iYXJyZWRjeXJpbGxpYz0xMjU3O2Uub2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1OTtlLm9iZW5nYWxpPTI0NTE7ZS5vYm9wb21vZm89MTI1NzE7ZS5vYnJldmU9MzM1O2Uub2NhbmRyYWRldmE9MjMyMTtlLm9jYW5kcmFndWphcmF0aT0yNzA1O2Uub2NhbmRyYXZvd2Vsc2lnbmRldmE9MjM3NztlLm9jYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzYxO2Uub2Nhcm9uPTQ2NjtlLm9jaXJjbGU9OTQzODtlLm9jaXJjdW1mbGV4PTI0NDtlLm9jaXJjdW1mbGV4YWN1dGU9Nzg4OTtlLm9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NztlLm9jaXJjdW1mbGV4Z3JhdmU9Nzg5MTtlLm9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTM7ZS5vY2lyY3VtZmxleHRpbGRlPTc4OTU7ZS5vY3lyaWxsaWM9MTA4NjtlLm9kYmxhY3V0ZT0zMzc7ZS5vZGJsZ3JhdmU9NTI1O2Uub2RldmE9MjMyMztlLm9kaWVyZXNpcz0yNDY7ZS5vZGllcmVzaXNjeXJpbGxpYz0xMjU1O2Uub2RvdGJlbG93PTc4ODU7ZS5vZT0zMzk7ZS5vZWtvcmVhbj0xMjYzNDtlLm9nb25laz03MzE7ZS5vZ29uZWtjbWI9ODA4O2Uub2dyYXZlPTI0MjtlLm9ndWphcmF0aT0yNzA3O2Uub2hhcm1lbmlhbj0xNDEzO2Uub2hpcmFnYW5hPTEyMzYyO2Uub2hvb2thYm92ZT03ODg3O2Uub2hvcm49NDE3O2Uub2hvcm5hY3V0ZT03ODk5O2Uub2hvcm5kb3RiZWxvdz03OTA3O2Uub2hvcm5ncmF2ZT03OTAxO2Uub2hvcm5ob29rYWJvdmU9NzkwMztlLm9ob3JudGlsZGU9NzkwNTtlLm9odW5nYXJ1bWxhdXQ9MzM3O2Uub2k9NDE5O2Uub2ludmVydGVkYnJldmU9NTI3O2Uub2thdGFrYW5hPTEyNDU4O2Uub2thdGFrYW5haGFsZndpZHRoPTY1Mzk3O2Uub2tvcmVhbj0xMjYzMTtlLm9sZWhlYnJldz0xNDUxO2Uub21hY3Jvbj0zMzM7ZS5vbWFjcm9uYWN1dGU9Nzc2MztlLm9tYWNyb25ncmF2ZT03NzYxO2Uub21kZXZhPTIzODQ7ZS5vbWVnYT05Njk7ZS5vbWVnYTE9OTgyO2Uub21lZ2FjeXJpbGxpYz0xMTIxO2Uub21lZ2FsYXRpbmNsb3NlZD02MzE7ZS5vbWVnYXJvdW5kY3lyaWxsaWM9MTE0NztlLm9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ5O2Uub21lZ2F0b25vcz05NzQ7ZS5vbWd1amFyYXRpPTI3Njg7ZS5vbWljcm9uPTk1OTtlLm9taWNyb250b25vcz05NzI7ZS5vbW9ub3NwYWNlPTY1MzU5O2Uub25lPTQ5O2Uub25lYXJhYmljPTE2MzM7ZS5vbmViZW5nYWxpPTI1MzU7ZS5vbmVjaXJjbGU9OTMxMjtlLm9uZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjI7ZS5vbmVkZXZhPTI0MDc7ZS5vbmVkb3RlbmxlYWRlcj04MjI4O2Uub25lZWlnaHRoPTg1Mzk7ZS5vbmVmaXR0ZWQ9NjMxOTY7ZS5vbmVndWphcmF0aT0yNzkxO2Uub25lZ3VybXVraGk9MjY2MztlLm9uZWhhY2thcmFiaWM9MTYzMztlLm9uZWhhbGY9MTg5O2Uub25laGFuZ3pob3U9MTIzMjE7ZS5vbmVpZGVvZ3JhcGhpY3BhcmVuPTEyODMyO2Uub25laW5mZXJpb3I9ODMyMTtlLm9uZW1vbm9zcGFjZT02NTI5NztlLm9uZW51bWVyYXRvcmJlbmdhbGk9MjU0ODtlLm9uZW9sZHN0eWxlPTYzMjgxO2Uub25lcGFyZW49OTMzMjtlLm9uZXBlcmlvZD05MzUyO2Uub25lcGVyc2lhbj0xNzc3O2Uub25lcXVhcnRlcj0xODg7ZS5vbmVyb21hbj04NTYwO2Uub25lc3VwZXJpb3I9MTg1O2Uub25ldGhhaT0zNjY1O2Uub25ldGhpcmQ9ODUzMTtlLm9vZ29uZWs9NDkxO2Uub29nb25la21hY3Jvbj00OTM7ZS5vb2d1cm11a2hpPTI1Nzk7ZS5vb21hdHJhZ3VybXVraGk9MjYzNTtlLm9vcGVuPTU5NjtlLm9wYXJlbj05Mzg2O2Uub3BlbmJ1bGxldD05NzAyO2Uub3B0aW9uPTg5OTc7ZS5vcmRmZW1pbmluZT0xNzA7ZS5vcmRtYXNjdWxpbmU9MTg2O2Uub3J0aG9nb25hbD04NzM1O2Uub3Nob3J0ZGV2YT0yMzIyO2Uub3Nob3J0dm93ZWxzaWduZGV2YT0yMzc4O2Uub3NsYXNoPTI0ODtlLm9zbGFzaGFjdXRlPTUxMTtlLm9zbWFsbGhpcmFnYW5hPTEyMzYxO2Uub3NtYWxsa2F0YWthbmE9MTI0NTc7ZS5vc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NztlLm9zdHJva2VhY3V0ZT01MTE7ZS5vc3VwZXJpb3I9NjMyMTY7ZS5vdGN5cmlsbGljPTExNTE7ZS5vdGlsZGU9MjQ1O2Uub3RpbGRlYWN1dGU9Nzc1NztlLm90aWxkZWRpZXJlc2lzPTc3NTk7ZS5vdWJvcG9tb2ZvPTEyNTc3O2Uub3ZlcmxpbmU9ODI1NDtlLm92ZXJsaW5lY2VudGVybGluZT02NTA5ODtlLm92ZXJsaW5lY21iPTc3MztlLm92ZXJsaW5lZGFzaGVkPTY1MDk3O2Uub3ZlcmxpbmVkYmx3YXZ5PTY1MTAwO2Uub3ZlcmxpbmV3YXZ5PTY1MDk5O2Uub3ZlcnNjb3JlPTE3NTtlLm92b3dlbHNpZ25iZW5nYWxpPTI1MDc7ZS5vdm93ZWxzaWduZGV2YT0yMzc5O2Uub3Zvd2Vsc2lnbmd1amFyYXRpPTI3NjM7ZS5wPTExMjtlLnBhYW1wc3NxdWFyZT0xMzE4NDtlLnBhYXNlbnRvc3F1YXJlPTEzMDk5O2UucGFiZW5nYWxpPTI0NzQ7ZS5wYWN1dGU9Nzc2NTtlLnBhZGV2YT0yMzQ2O2UucGFnZWRvd249ODY3MTtlLnBhZ2V1cD04NjcwO2UucGFndWphcmF0aT0yNzMwO2UucGFndXJtdWtoaT0yNjAyO2UucGFoaXJhZ2FuYT0xMjQwMTtlLnBhaXlhbm5vaXRoYWk9MzYzMTtlLnBha2F0YWthbmE9MTI0OTc7ZS5wYWxhdGFsaXphdGlvbmN5cmlsbGljY21iPTExNTY7ZS5wYWxvY2hrYWN5cmlsbGljPTEyMTY7ZS5wYW5zaW9za29yZWFuPTEyNjcxO2UucGFyYWdyYXBoPTE4MjtlLnBhcmFsbGVsPTg3NDE7ZS5wYXJlbmxlZnQ9NDA7ZS5wYXJlbmxlZnRhbHRvbmVhcmFiaWM9NjQ4MzA7ZS5wYXJlbmxlZnRidD02MzcyNTtlLnBhcmVubGVmdGV4PTYzNzI0O2UucGFyZW5sZWZ0aW5mZXJpb3I9ODMzMztlLnBhcmVubGVmdG1vbm9zcGFjZT02NTI4ODtlLnBhcmVubGVmdHNtYWxsPTY1MTEzO2UucGFyZW5sZWZ0c3VwZXJpb3I9ODMxNztlLnBhcmVubGVmdHRwPTYzNzIzO2UucGFyZW5sZWZ0dmVydGljYWw9NjUwNzc7ZS5wYXJlbnJpZ2h0PTQxO2UucGFyZW5yaWdodGFsdG9uZWFyYWJpYz02NDgzMTtlLnBhcmVucmlnaHRidD02MzczNjtlLnBhcmVucmlnaHRleD02MzczNTtlLnBhcmVucmlnaHRpbmZlcmlvcj04MzM0O2UucGFyZW5yaWdodG1vbm9zcGFjZT02NTI4OTtlLnBhcmVucmlnaHRzbWFsbD02NTExNDtlLnBhcmVucmlnaHRzdXBlcmlvcj04MzE4O2UucGFyZW5yaWdodHRwPTYzNzM0O2UucGFyZW5yaWdodHZlcnRpY2FsPTY1MDc4O2UucGFydGlhbGRpZmY9ODcwNjtlLnBhc2VxaGVicmV3PTE0NzI7ZS5wYXNodGFoZWJyZXc9MTQzMztlLnBhc3F1YXJlPTEzMjI1O2UucGF0YWg9MTQ2MztlLnBhdGFoMTE9MTQ2MztlLnBhdGFoMWQ9MTQ2MztlLnBhdGFoMmE9MTQ2MztlLnBhdGFoaGVicmV3PTE0NjM7ZS5wYXRhaG5hcnJvd2hlYnJldz0xNDYzO2UucGF0YWhxdWFydGVyaGVicmV3PTE0NjM7ZS5wYXRhaHdpZGVoZWJyZXc9MTQ2MztlLnBhemVyaGVicmV3PTE0NDE7ZS5wYm9wb21vZm89MTI1NTA7ZS5wY2lyY2xlPTk0Mzk7ZS5wZG90YWNjZW50PTc3Njc7ZS5wZT0xNTA4O2UucGVjeXJpbGxpYz0xMDg3O2UucGVkYWdlc2g9NjQzMjQ7ZS5wZWRhZ2VzaGhlYnJldz02NDMyNDtlLnBlZXppc3F1YXJlPTEzMTE1O2UucGVmaW5hbGRhZ2VzaGhlYnJldz02NDMyMztlLnBlaGFyYWJpYz0xNjYyO2UucGVoYXJtZW5pYW49MTQwMjtlLnBlaGVicmV3PTE1MDg7ZS5wZWhmaW5hbGFyYWJpYz02NDM0MztlLnBlaGluaXRpYWxhcmFiaWM9NjQzNDQ7ZS5wZWhpcmFnYW5hPTEyNDEwO2UucGVobWVkaWFsYXJhYmljPTY0MzQ1O2UucGVrYXRha2FuYT0xMjUwNjtlLnBlbWlkZGxlaG9va2N5cmlsbGljPTExOTE7ZS5wZXJhZmVoZWJyZXc9NjQzMzQ7ZS5wZXJjZW50PTM3O2UucGVyY2VudGFyYWJpYz0xNjQyO2UucGVyY2VudG1vbm9zcGFjZT02NTI4NTtlLnBlcmNlbnRzbWFsbD02NTEzMDtlLnBlcmlvZD00NjtlLnBlcmlvZGFybWVuaWFuPTE0MTc7ZS5wZXJpb2RjZW50ZXJlZD0xODM7ZS5wZXJpb2RoYWxmd2lkdGg9NjUzNzc7ZS5wZXJpb2RpbmZlcmlvcj02MzIwNztlLnBlcmlvZG1vbm9zcGFjZT02NTI5NDtlLnBlcmlvZHNtYWxsPTY1MTA2O2UucGVyaW9kc3VwZXJpb3I9NjMyMDg7ZS5wZXJpc3BvbWVuaWdyZWVrY21iPTgzNDtlLnBlcnBlbmRpY3VsYXI9ODg2OTtlLnBlcnRob3VzYW5kPTgyNDA7ZS5wZXNldGE9ODM1OTtlLnBmc3F1YXJlPTEzMTk0O2UucGhhYmVuZ2FsaT0yNDc1O2UucGhhZGV2YT0yMzQ3O2UucGhhZ3VqYXJhdGk9MjczMTtlLnBoYWd1cm11a2hpPTI2MDM7ZS5waGk9OTY2O2UucGhpMT05ODE7ZS5waGlldXBoYWNpcmNsZWtvcmVhbj0xMjkyMjtlLnBoaWV1cGhhcGFyZW5rb3JlYW49MTI4MjY7ZS5waGlldXBoY2lyY2xla29yZWFuPTEyOTA4O2UucGhpZXVwaGtvcmVhbj0xMjYyMTtlLnBoaWV1cGhwYXJlbmtvcmVhbj0xMjgxMjtlLnBoaWxhdGluPTYzMjtlLnBoaW50aHV0aGFpPTM2NDI7ZS5waGlzeW1ib2xncmVlaz05ODE7ZS5waG9vaz00MjE7ZS5waG9waGFudGhhaT0zNjE0O2UucGhvcGh1bmd0aGFpPTM2MTI7ZS5waG9zYW1waGFvdGhhaT0zNjE2O2UucGk9OTYwO2UucGlldXBhY2lyY2xla29yZWFuPTEyOTE1O2UucGlldXBhcGFyZW5rb3JlYW49MTI4MTk7ZS5waWV1cGNpZXVja29yZWFuPTEyNjYyO2UucGlldXBjaXJjbGVrb3JlYW49MTI5MDE7ZS5waWV1cGtpeWVva2tvcmVhbj0xMjY1ODtlLnBpZXVwa29yZWFuPTEyNjEwO2UucGlldXBwYXJlbmtvcmVhbj0xMjgwNTtlLnBpZXVwc2lvc2tpeWVva2tvcmVhbj0xMjY2MDtlLnBpZXVwc2lvc2tvcmVhbj0xMjYxMjtlLnBpZXVwc2lvc3Rpa2V1dGtvcmVhbj0xMjY2MTtlLnBpZXVwdGhpZXV0aGtvcmVhbj0xMjY2MztlLnBpZXVwdGlrZXV0a29yZWFuPTEyNjU5O2UucGloaXJhZ2FuYT0xMjQwNDtlLnBpa2F0YWthbmE9MTI1MDA7ZS5waXN5bWJvbGdyZWVrPTk4MjtlLnBpd3Jhcm1lbmlhbj0xNDExO2UucGxhbmNrb3ZlcjJwaT04NDYzO2UucGxhbmNrb3ZlcjJwaTE9ODQ2MztlLnBsdXM9NDM7ZS5wbHVzYmVsb3djbWI9Nzk5O2UucGx1c2NpcmNsZT04ODUzO2UucGx1c21pbnVzPTE3NztlLnBsdXNtb2Q9NzI2O2UucGx1c21vbm9zcGFjZT02NTI5MTtlLnBsdXNzbWFsbD02NTEyMjtlLnBsdXNzdXBlcmlvcj04MzE0O2UucG1vbm9zcGFjZT02NTM2MDtlLnBtc3F1YXJlPTEzMjcyO2UucG9oaXJhZ2FuYT0xMjQxMztlLnBvaW50aW5naW5kZXhkb3dud2hpdGU9OTc1OTtlLnBvaW50aW5naW5kZXhsZWZ0d2hpdGU9OTc1NjtlLnBvaW50aW5naW5kZXhyaWdodHdoaXRlPTk3NTg7ZS5wb2ludGluZ2luZGV4dXB3aGl0ZT05NzU3O2UucG9rYXRha2FuYT0xMjUwOTtlLnBvcGxhdGhhaT0zNjExO2UucG9zdGFsbWFyaz0xMjMwNjtlLnBvc3RhbG1hcmtmYWNlPTEyMzIwO2UucHBhcmVuPTkzODc7ZS5wcmVjZWRlcz04ODI2O2UucHJlc2NyaXB0aW9uPTg0Nzg7ZS5wcmltZW1vZD02OTc7ZS5wcmltZXJldmVyc2VkPTgyNDU7ZS5wcm9kdWN0PTg3MTk7ZS5wcm9qZWN0aXZlPTg5NjU7ZS5wcm9sb25nZWRrYW5hPTEyNTQwO2UucHJvcGVsbG9yPTg5ODQ7ZS5wcm9wZXJzdWJzZXQ9ODgzNDtlLnByb3BlcnN1cGVyc2V0PTg4MzU7ZS5wcm9wb3J0aW9uPTg3NTk7ZS5wcm9wb3J0aW9uYWw9ODczMztlLnBzaT05Njg7ZS5wc2ljeXJpbGxpYz0xMTM3O2UucHNpbGlwbmV1bWF0YWN5cmlsbGljY21iPTExNTg7ZS5wc3NxdWFyZT0xMzIzMjtlLnB1aGlyYWdhbmE9MTI0MDc7ZS5wdWthdGFrYW5hPTEyNTAzO2UucHZzcXVhcmU9MTMyMzY7ZS5wd3NxdWFyZT0xMzI0MjtlLnE9MTEzO2UucWFkZXZhPTIzOTI7ZS5xYWRtYWhlYnJldz0xNDQ4O2UucWFmYXJhYmljPTE2MDI7ZS5xYWZmaW5hbGFyYWJpYz02NTIzODtlLnFhZmluaXRpYWxhcmFiaWM9NjUyMzk7ZS5xYWZtZWRpYWxhcmFiaWM9NjUyNDA7ZS5xYW1hdHM9MTQ2NDtlLnFhbWF0czEwPTE0NjQ7ZS5xYW1hdHMxYT0xNDY0O2UucWFtYXRzMWM9MTQ2NDtlLnFhbWF0czI3PTE0NjQ7ZS5xYW1hdHMyOT0xNDY0O2UucWFtYXRzMzM9MTQ2NDtlLnFhbWF0c2RlPTE0NjQ7ZS5xYW1hdHNoZWJyZXc9MTQ2NDtlLnFhbWF0c25hcnJvd2hlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5oZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFubmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbnF1YXJ0ZXJoZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFud2lkZWhlYnJldz0xNDY0O2UucWFtYXRzcXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzd2lkZWhlYnJldz0xNDY0O2UucWFybmV5cGFyYWhlYnJldz0xNDM5O2UucWJvcG9tb2ZvPTEyNTYxO2UucWNpcmNsZT05NDQwO2UucWhvb2s9NjcyO2UucW1vbm9zcGFjZT02NTM2MTtlLnFvZj0xNTExO2UucW9mZGFnZXNoPTY0MzI3O2UucW9mZGFnZXNoaGVicmV3PTY0MzI3O2UucW9maGVicmV3PTE1MTE7ZS5xcGFyZW49OTM4ODtlLnF1YXJ0ZXJub3RlPTk4MzM7ZS5xdWJ1dHM9MTQ2NztlLnF1YnV0czE4PTE0Njc7ZS5xdWJ1dHMyNT0xNDY3O2UucXVidXRzMzE9MTQ2NztlLnF1YnV0c2hlYnJldz0xNDY3O2UucXVidXRzbmFycm93aGVicmV3PTE0Njc7ZS5xdWJ1dHNxdWFydGVyaGVicmV3PTE0Njc7ZS5xdWJ1dHN3aWRlaGVicmV3PTE0Njc7ZS5xdWVzdGlvbj02MztlLnF1ZXN0aW9uYXJhYmljPTE1Njc7ZS5xdWVzdGlvbmFybWVuaWFuPTEzNzQ7ZS5xdWVzdGlvbmRvd249MTkxO2UucXVlc3Rpb25kb3duc21hbGw9NjM0MjM7ZS5xdWVzdGlvbmdyZWVrPTg5NDtlLnF1ZXN0aW9ubW9ub3NwYWNlPTY1MzExO2UucXVlc3Rpb25zbWFsbD02MzI5NTtlLnF1b3RlZGJsPTM0O2UucXVvdGVkYmxiYXNlPTgyMjI7ZS5xdW90ZWRibGxlZnQ9ODIyMDtlLnF1b3RlZGJsbW9ub3NwYWNlPTY1MjgyO2UucXVvdGVkYmxwcmltZT0xMjMxODtlLnF1b3RlZGJscHJpbWVyZXZlcnNlZD0xMjMxNztlLnF1b3RlZGJscmlnaHQ9ODIyMTtlLnF1b3RlbGVmdD04MjE2O2UucXVvdGVsZWZ0cmV2ZXJzZWQ9ODIxOTtlLnF1b3RlcmV2ZXJzZWQ9ODIxOTtlLnF1b3RlcmlnaHQ9ODIxNztlLnF1b3RlcmlnaHRuPTMyOTtlLnF1b3Rlc2luZ2xiYXNlPTgyMTg7ZS5xdW90ZXNpbmdsZT0zOTtlLnF1b3Rlc2luZ2xlbW9ub3NwYWNlPTY1Mjg3O2Uucj0xMTQ7ZS5yYWFybWVuaWFuPTE0MDQ7ZS5yYWJlbmdhbGk9MjQ4MDtlLnJhY3V0ZT0zNDE7ZS5yYWRldmE9MjM1MjtlLnJhZGljYWw9ODczMDtlLnJhZGljYWxleD02MzcxNztlLnJhZG92ZXJzc3F1YXJlPTEzMjMwO2UucmFkb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjMxO2UucmFkc3F1YXJlPTEzMjI5O2UucmFmZT0xNDcxO2UucmFmZWhlYnJldz0xNDcxO2UucmFndWphcmF0aT0yNzM2O2UucmFndXJtdWtoaT0yNjA4O2UucmFoaXJhZ2FuYT0xMjQyNTtlLnJha2F0YWthbmE9MTI1MjE7ZS5yYWthdGFrYW5haGFsZndpZHRoPTY1NDMxO2UucmFsb3dlcmRpYWdvbmFsYmVuZ2FsaT0yNTQ1O2UucmFtaWRkbGVkaWFnb25hbGJlbmdhbGk9MjU0NDtlLnJhbXNob3JuPTYxMjtlLnJhdGlvPTg3NTg7ZS5yYm9wb21vZm89MTI1NjY7ZS5yY2Fyb249MzQ1O2UucmNlZGlsbGE9MzQzO2UucmNpcmNsZT05NDQxO2UucmNvbW1hYWNjZW50PTM0MztlLnJkYmxncmF2ZT01Mjk7ZS5yZG90YWNjZW50PTc3Njk7ZS5yZG90YmVsb3c9Nzc3MTtlLnJkb3RiZWxvd21hY3Jvbj03NzczO2UucmVmZXJlbmNlbWFyaz04MjUxO2UucmVmbGV4c3Vic2V0PTg4Mzg7ZS5yZWZsZXhzdXBlcnNldD04ODM5O2UucmVnaXN0ZXJlZD0xNzQ7ZS5yZWdpc3RlcnNhbnM9NjM3MjA7ZS5yZWdpc3RlcnNlcmlmPTYzMTk0O2UucmVoYXJhYmljPTE1ODU7ZS5yZWhhcm1lbmlhbj0xNDA4O2UucmVoZmluYWxhcmFiaWM9NjUxOTg7ZS5yZWhpcmFnYW5hPTEyNDI4O2UucmVrYXRha2FuYT0xMjUyNDtlLnJla2F0YWthbmFoYWxmd2lkdGg9NjU0MzQ7ZS5yZXNoPTE1MTI7ZS5yZXNoZGFnZXNoaGVicmV3PTY0MzI4O2UucmVzaGhlYnJldz0xNTEyO2UucmV2ZXJzZWR0aWxkZT04NzY1O2UucmV2aWFoZWJyZXc9MTQzMTtlLnJldmlhbXVncmFzaGhlYnJldz0xNDMxO2UucmV2bG9naWNhbG5vdD04OTc2O2UucmZpc2hob29rPTYzODtlLnJmaXNoaG9va3JldmVyc2VkPTYzOTtlLnJoYWJlbmdhbGk9MjUyNTtlLnJoYWRldmE9MjM5NztlLnJobz05NjE7ZS5yaG9vaz02Mzc7ZS5yaG9va3R1cm5lZD02MzU7ZS5yaG9va3R1cm5lZHN1cGVyaW9yPTY5MztlLnJob3N5bWJvbGdyZWVrPTEwMDk7ZS5yaG90aWNob29rbW9kPTczNDtlLnJpZXVsYWNpcmNsZWtvcmVhbj0xMjkxMztlLnJpZXVsYXBhcmVua29yZWFuPTEyODE3O2UucmlldWxjaXJjbGVrb3JlYW49MTI4OTk7ZS5yaWV1bGhpZXVoa29yZWFuPTEyNjA4O2UucmlldWxraXllb2trb3JlYW49MTI2MDI7ZS5yaWV1bGtpeWVva3Npb3Nrb3JlYW49MTI2NDk7ZS5yaWV1bGtvcmVhbj0xMjYwMTtlLnJpZXVsbWlldW1rb3JlYW49MTI2MDM7ZS5yaWV1bHBhbnNpb3Nrb3JlYW49MTI2NTI7ZS5yaWV1bHBhcmVua29yZWFuPTEyODAzO2UucmlldWxwaGlldXBoa29yZWFuPTEyNjA3O2UucmlldWxwaWV1cGtvcmVhbj0xMjYwNDtlLnJpZXVscGlldXBzaW9za29yZWFuPTEyNjUxO2UucmlldWxzaW9za29yZWFuPTEyNjA1O2UucmlldWx0aGlldXRoa29yZWFuPTEyNjA2O2UucmlldWx0aWtldXRrb3JlYW49MTI2NTA7ZS5yaWV1bHllb3JpbmhpZXVoa29yZWFuPTEyNjUzO2UucmlnaHRhbmdsZT04NzM1O2UucmlnaHR0YWNrYmVsb3djbWI9NzkzO2UucmlnaHR0cmlhbmdsZT04ODk1O2UucmloaXJhZ2FuYT0xMjQyNjtlLnJpa2F0YWthbmE9MTI1MjI7ZS5yaWthdGFrYW5haGFsZndpZHRoPTY1NDMyO2UucmluZz03MzA7ZS5yaW5nYmVsb3djbWI9ODA1O2UucmluZ2NtYj03Nzg7ZS5yaW5naGFsZmxlZnQ9NzAzO2UucmluZ2hhbGZsZWZ0YXJtZW5pYW49MTM2OTtlLnJpbmdoYWxmbGVmdGJlbG93Y21iPTc5NjtlLnJpbmdoYWxmbGVmdGNlbnRlcmVkPTcyMztlLnJpbmdoYWxmcmlnaHQ9NzAyO2UucmluZ2hhbGZyaWdodGJlbG93Y21iPTgyNTtlLnJpbmdoYWxmcmlnaHRjZW50ZXJlZD03MjI7ZS5yaW52ZXJ0ZWRicmV2ZT01MzE7ZS5yaXR0b3J1c3F1YXJlPTEzMTM3O2UucmxpbmViZWxvdz03Nzc1O2UucmxvbmdsZWc9NjM2O2UucmxvbmdsZWd0dXJuZWQ9NjM0O2Uucm1vbm9zcGFjZT02NTM2MjtlLnJvaGlyYWdhbmE9MTI0Mjk7ZS5yb2thdGFrYW5hPTEyNTI1O2Uucm9rYXRha2FuYWhhbGZ3aWR0aD02NTQzNTtlLnJvcnVhdGhhaT0zNjE5O2UucnBhcmVuPTkzODk7ZS5ycmFiZW5nYWxpPTI1MjQ7ZS5ycmFkZXZhPTIzNTM7ZS5ycmFndXJtdWtoaT0yNjUyO2UucnJlaGFyYWJpYz0xNjgxO2UucnJlaGZpbmFsYXJhYmljPTY0Mzk3O2UucnJ2b2NhbGljYmVuZ2FsaT0yNTI4O2UucnJ2b2NhbGljZGV2YT0yNDAwO2UucnJ2b2NhbGljZ3VqYXJhdGk9Mjc4NDtlLnJydm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUwMDtlLnJydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MjtlLnJydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTY7ZS5yc3VwZXJpb3I9NjMyMTc7ZS5ydGJsb2NrPTk2MTY7ZS5ydHVybmVkPTYzMztlLnJ0dXJuZWRzdXBlcmlvcj02OTI7ZS5ydWhpcmFnYW5hPTEyNDI3O2UucnVrYXRha2FuYT0xMjUyMztlLnJ1a2F0YWthbmFoYWxmd2lkdGg9NjU0MzM7ZS5ydXBlZW1hcmtiZW5nYWxpPTI1NDY7ZS5ydXBlZXNpZ25iZW5nYWxpPTI1NDc7ZS5ydXBpYWg9NjMxOTc7ZS5ydXRoYWk9MzYyMDtlLnJ2b2NhbGljYmVuZ2FsaT0yNDQzO2UucnZvY2FsaWNkZXZhPTIzMTU7ZS5ydm9jYWxpY2d1amFyYXRpPTI2OTk7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjQ5OTtlLnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcxO2UucnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU1O2Uucz0xMTU7ZS5zYWJlbmdhbGk9MjQ4ODtlLnNhY3V0ZT0zNDc7ZS5zYWN1dGVkb3RhY2NlbnQ9Nzc4MTtlLnNhZGFyYWJpYz0xNTg5O2Uuc2FkZXZhPTIzNjA7ZS5zYWRmaW5hbGFyYWJpYz02NTIxMDtlLnNhZGluaXRpYWxhcmFiaWM9NjUyMTE7ZS5zYWRtZWRpYWxhcmFiaWM9NjUyMTI7ZS5zYWd1amFyYXRpPTI3NDQ7ZS5zYWd1cm11a2hpPTI2MTY7ZS5zYWhpcmFnYW5hPTEyMzczO2Uuc2FrYXRha2FuYT0xMjQ2OTtlLnNha2F0YWthbmFoYWxmd2lkdGg9NjU0MDM7ZS5zYWxsYWxsYWhvdWFsYXloZXdhc2FsbGFtYXJhYmljPTY1MDE4O2Uuc2FtZWtoPTE1MDU7ZS5zYW1la2hkYWdlc2g9NjQzMjE7ZS5zYW1la2hkYWdlc2hoZWJyZXc9NjQzMjE7ZS5zYW1la2hoZWJyZXc9MTUwNTtlLnNhcmFhYXRoYWk9MzYzNDtlLnNhcmFhZXRoYWk9MzY0OTtlLnNhcmFhaW1haW1hbGFpdGhhaT0zNjUyO2Uuc2FyYWFpbWFpbXVhbnRoYWk9MzY1MTtlLnNhcmFhbXRoYWk9MzYzNTtlLnNhcmFhdGhhaT0zNjMyO2Uuc2FyYWV0aGFpPTM2NDg7ZS5zYXJhaWlsZWZ0dGhhaT02MzYyMjtlLnNhcmFpaXRoYWk9MzYzNztlLnNhcmFpbGVmdHRoYWk9NjM2MjE7ZS5zYXJhaXRoYWk9MzYzNjtlLnNhcmFvdGhhaT0zNjUwO2Uuc2FyYXVlZWxlZnR0aGFpPTYzNjI0O2Uuc2FyYXVlZXRoYWk9MzYzOTtlLnNhcmF1ZWxlZnR0aGFpPTYzNjIzO2Uuc2FyYXVldGhhaT0zNjM4O2Uuc2FyYXV0aGFpPTM2NDA7ZS5zYXJhdXV0aGFpPTM2NDE7ZS5zYm9wb21vZm89MTI1Njk7ZS5zY2Fyb249MzUzO2Uuc2Nhcm9uZG90YWNjZW50PTc3ODM7ZS5zY2VkaWxsYT0zNTE7ZS5zY2h3YT02MDE7ZS5zY2h3YWN5cmlsbGljPTEyNDE7ZS5zY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MztlLnNjaHdhaG9vaz02MDI7ZS5zY2lyY2xlPTk0NDI7ZS5zY2lyY3VtZmxleD0zNDk7ZS5zY29tbWFhY2NlbnQ9NTM3O2Uuc2RvdGFjY2VudD03Nzc3O2Uuc2RvdGJlbG93PTc3Nzk7ZS5zZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NTtlLnNlYWd1bGxiZWxvd2NtYj04Mjg7ZS5zZWNvbmQ9ODI0MztlLnNlY29uZHRvbmVjaGluZXNlPTcxNDtlLnNlY3Rpb249MTY3O2Uuc2VlbmFyYWJpYz0xNTg3O2Uuc2VlbmZpbmFsYXJhYmljPTY1MjAyO2Uuc2VlbmluaXRpYWxhcmFiaWM9NjUyMDM7ZS5zZWVubWVkaWFsYXJhYmljPTY1MjA0O2Uuc2Vnb2w9MTQ2MjtlLnNlZ29sMTM9MTQ2MjtlLnNlZ29sMWY9MTQ2MjtlLnNlZ29sMmM9MTQ2MjtlLnNlZ29saGVicmV3PTE0NjI7ZS5zZWdvbG5hcnJvd2hlYnJldz0xNDYyO2Uuc2Vnb2xxdWFydGVyaGVicmV3PTE0NjI7ZS5zZWdvbHRhaGVicmV3PTE0MjY7ZS5zZWdvbHdpZGVoZWJyZXc9MTQ2MjtlLnNlaGFybWVuaWFuPTE0MDU7ZS5zZWhpcmFnYW5hPTEyMzc5O2Uuc2VrYXRha2FuYT0xMjQ3NTtlLnNla2F0YWthbmFoYWxmd2lkdGg9NjU0MDY7ZS5zZW1pY29sb249NTk7ZS5zZW1pY29sb25hcmFiaWM9MTU2MztlLnNlbWljb2xvbm1vbm9zcGFjZT02NTMwNztlLnNlbWljb2xvbnNtYWxsPTY1MTA4O2Uuc2VtaXZvaWNlZG1hcmtrYW5hPTEyNDQ0O2Uuc2VtaXZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM5O2Uuc2VudGlzcXVhcmU9MTMwOTA7ZS5zZW50b3NxdWFyZT0xMzA5MTtlLnNldmVuPTU1O2Uuc2V2ZW5hcmFiaWM9MTYzOTtlLnNldmVuYmVuZ2FsaT0yNTQxO2Uuc2V2ZW5jaXJjbGU9OTMxODtlLnNldmVuY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyODtlLnNldmVuZGV2YT0yNDEzO2Uuc2V2ZW5laWdodGhzPTg1NDI7ZS5zZXZlbmd1amFyYXRpPTI3OTc7ZS5zZXZlbmd1cm11a2hpPTI2Njk7ZS5zZXZlbmhhY2thcmFiaWM9MTYzOTtlLnNldmVuaGFuZ3pob3U9MTIzMjc7ZS5zZXZlbmlkZW9ncmFwaGljcGFyZW49MTI4Mzg7ZS5zZXZlbmluZmVyaW9yPTgzMjc7ZS5zZXZlbm1vbm9zcGFjZT02NTMwMztlLnNldmVub2xkc3R5bGU9NjMyODc7ZS5zZXZlbnBhcmVuPTkzMzg7ZS5zZXZlbnBlcmlvZD05MzU4O2Uuc2V2ZW5wZXJzaWFuPTE3ODM7ZS5zZXZlbnJvbWFuPTg1NjY7ZS5zZXZlbnN1cGVyaW9yPTgzMTE7ZS5zZXZlbnRlZW5jaXJjbGU9OTMyODtlLnNldmVudGVlbnBhcmVuPTkzNDg7ZS5zZXZlbnRlZW5wZXJpb2Q9OTM2ODtlLnNldmVudGhhaT0zNjcxO2Uuc2Z0aHlwaGVuPTE3MztlLnNoYWFybWVuaWFuPTEzOTk7ZS5zaGFiZW5nYWxpPTI0ODY7ZS5zaGFjeXJpbGxpYz0xMDk2O2Uuc2hhZGRhYXJhYmljPTE2MTc7ZS5zaGFkZGFkYW1tYWFyYWJpYz02NDYwOTtlLnNoYWRkYWRhbW1hdGFuYXJhYmljPTY0NjA2O2Uuc2hhZGRhZmF0aGFhcmFiaWM9NjQ2MDg7ZS5zaGFkZGFrYXNyYWFyYWJpYz02NDYxMDtlLnNoYWRkYWthc3JhdGFuYXJhYmljPTY0NjA3O2Uuc2hhZGU9OTYxODtlLnNoYWRlZGFyaz05NjE5O2Uuc2hhZGVsaWdodD05NjE3O2Uuc2hhZGVtZWRpdW09OTYxODtlLnNoYWRldmE9MjM1ODtlLnNoYWd1amFyYXRpPTI3NDI7ZS5zaGFndXJtdWtoaT0yNjE0O2Uuc2hhbHNoZWxldGhlYnJldz0xNDI3O2Uuc2hib3BvbW9mbz0xMjU2NTtlLnNoY2hhY3lyaWxsaWM9MTA5NztlLnNoZWVuYXJhYmljPTE1ODg7ZS5zaGVlbmZpbmFsYXJhYmljPTY1MjA2O2Uuc2hlZW5pbml0aWFsYXJhYmljPTY1MjA3O2Uuc2hlZW5tZWRpYWxhcmFiaWM9NjUyMDg7ZS5zaGVpY29wdGljPTk5NTtlLnNoZXFlbD04MzYyO2Uuc2hlcWVsaGVicmV3PTgzNjI7ZS5zaGV2YT0xNDU2O2Uuc2hldmExMTU9MTQ1NjtlLnNoZXZhMTU9MTQ1NjtlLnNoZXZhMjI9MTQ1NjtlLnNoZXZhMmU9MTQ1NjtlLnNoZXZhaGVicmV3PTE0NTY7ZS5zaGV2YW5hcnJvd2hlYnJldz0xNDU2O2Uuc2hldmFxdWFydGVyaGVicmV3PTE0NTY7ZS5zaGV2YXdpZGVoZWJyZXc9MTQ1NjtlLnNoaGFjeXJpbGxpYz0xMjExO2Uuc2hpbWFjb3B0aWM9MTAwNTtlLnNoaW49MTUxMztlLnNoaW5kYWdlc2g9NjQzMjk7ZS5zaGluZGFnZXNoaGVicmV3PTY0MzI5O2Uuc2hpbmRhZ2VzaHNoaW5kb3Q9NjQzMDA7ZS5zaGluZGFnZXNoc2hpbmRvdGhlYnJldz02NDMwMDtlLnNoaW5kYWdlc2hzaW5kb3Q9NjQzMDE7ZS5zaGluZGFnZXNoc2luZG90aGVicmV3PTY0MzAxO2Uuc2hpbmRvdGhlYnJldz0xNDczO2Uuc2hpbmhlYnJldz0xNTEzO2Uuc2hpbnNoaW5kb3Q9NjQyOTg7ZS5zaGluc2hpbmRvdGhlYnJldz02NDI5ODtlLnNoaW5zaW5kb3Q9NjQyOTk7ZS5zaGluc2luZG90aGVicmV3PTY0Mjk5O2Uuc2hvb2s9NjQyO2Uuc2lnbWE9OTYzO2Uuc2lnbWExPTk2MjtlLnNpZ21hZmluYWw9OTYyO2Uuc2lnbWFsdW5hdGVzeW1ib2xncmVlaz0xMDEwO2Uuc2loaXJhZ2FuYT0xMjM3NTtlLnNpa2F0YWthbmE9MTI0NzE7ZS5zaWthdGFrYW5haGFsZndpZHRoPTY1NDA0O2Uuc2lsdXFoZWJyZXc9MTQ2OTtlLnNpbHVxbGVmdGhlYnJldz0xNDY5O2Uuc2ltaWxhcj04NzY0O2Uuc2luZG90aGVicmV3PTE0NzQ7ZS5zaW9zYWNpcmNsZWtvcmVhbj0xMjkxNjtlLnNpb3NhcGFyZW5rb3JlYW49MTI4MjA7ZS5zaW9zY2lldWNrb3JlYW49MTI2NzA7ZS5zaW9zY2lyY2xla29yZWFuPTEyOTAyO2Uuc2lvc2tpeWVva2tvcmVhbj0xMjY2NjtlLnNpb3Nrb3JlYW49MTI2MTM7ZS5zaW9zbmlldW5rb3JlYW49MTI2Njc7ZS5zaW9zcGFyZW5rb3JlYW49MTI4MDY7ZS5zaW9zcGlldXBrb3JlYW49MTI2Njk7ZS5zaW9zdGlrZXV0a29yZWFuPTEyNjY4O2Uuc2l4PTU0O2Uuc2l4YXJhYmljPTE2Mzg7ZS5zaXhiZW5nYWxpPTI1NDA7ZS5zaXhjaXJjbGU9OTMxNztlLnNpeGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjc7ZS5zaXhkZXZhPTI0MTI7ZS5zaXhndWphcmF0aT0yNzk2O2Uuc2l4Z3VybXVraGk9MjY2ODtlLnNpeGhhY2thcmFiaWM9MTYzODtlLnNpeGhhbmd6aG91PTEyMzI2O2Uuc2l4aWRlb2dyYXBoaWNwYXJlbj0xMjgzNztlLnNpeGluZmVyaW9yPTgzMjY7ZS5zaXhtb25vc3BhY2U9NjUzMDI7ZS5zaXhvbGRzdHlsZT02MzI4NjtlLnNpeHBhcmVuPTkzMzc7ZS5zaXhwZXJpb2Q9OTM1NztlLnNpeHBlcnNpYW49MTc4MjtlLnNpeHJvbWFuPTg1NjU7ZS5zaXhzdXBlcmlvcj04MzEwO2Uuc2l4dGVlbmNpcmNsZT05MzI3O2Uuc2l4dGVlbmN1cnJlbmN5ZGVub21pbmF0b3JiZW5nYWxpPTI1NTM7ZS5zaXh0ZWVucGFyZW49OTM0NztlLnNpeHRlZW5wZXJpb2Q9OTM2NztlLnNpeHRoYWk9MzY3MDtlLnNsYXNoPTQ3O2Uuc2xhc2htb25vc3BhY2U9NjUyOTU7ZS5zbG9uZz0zODM7ZS5zbG9uZ2RvdGFjY2VudD03ODM1O2Uuc21pbGVmYWNlPTk3ODY7ZS5zbW9ub3NwYWNlPTY1MzYzO2Uuc29mcGFzdXFoZWJyZXc9MTQ3NTtlLnNvZnRoeXBoZW49MTczO2Uuc29mdHNpZ25jeXJpbGxpYz0xMTAwO2Uuc29oaXJhZ2FuYT0xMjM4MTtlLnNva2F0YWthbmE9MTI0Nzc7ZS5zb2thdGFrYW5haGFsZndpZHRoPTY1NDA3O2Uuc29saWR1c2xvbmdvdmVybGF5Y21iPTgyNDtlLnNvbGlkdXNzaG9ydG92ZXJsYXljbWI9ODIzO2Uuc29ydXNpdGhhaT0zNjI1O2Uuc29zYWxhdGhhaT0zNjI0O2Uuc29zb3RoYWk9MzU5NTtlLnNvc3VhdGhhaT0zNjI2O2Uuc3BhY2U9MzI7ZS5zcGFjZWhhY2thcmFiaWM9MzI7ZS5zcGFkZT05ODI0O2Uuc3BhZGVzdWl0YmxhY2s9OTgyNDtlLnNwYWRlc3VpdHdoaXRlPTk4Mjg7ZS5zcGFyZW49OTM5MDtlLnNxdWFyZWJlbG93Y21iPTgyNztlLnNxdWFyZWNjPTEzMjUyO2Uuc3F1YXJlY209MTMyMTM7ZS5zcXVhcmVkaWFnb25hbGNyb3NzaGF0Y2hmaWxsPTk2NDE7ZS5zcXVhcmVob3Jpem9udGFsZmlsbD05NjM2O2Uuc3F1YXJla2c9MTMxOTk7ZS5zcXVhcmVrbT0xMzIxNDtlLnNxdWFyZWttY2FwaXRhbD0xMzI2MjtlLnNxdWFyZWxuPTEzMjY1O2Uuc3F1YXJlbG9nPTEzMjY2O2Uuc3F1YXJlbWc9MTMxOTg7ZS5zcXVhcmVtaWw9MTMyNjk7ZS5zcXVhcmVtbT0xMzIxMjtlLnNxdWFyZW1zcXVhcmVkPTEzMjE3O2Uuc3F1YXJlb3J0aG9nb25hbGNyb3NzaGF0Y2hmaWxsPTk2Mzg7ZS5zcXVhcmV1cHBlcmxlZnR0b2xvd2VycmlnaHRmaWxsPTk2Mzk7ZS5zcXVhcmV1cHBlcnJpZ2h0dG9sb3dlcmxlZnRmaWxsPTk2NDA7ZS5zcXVhcmV2ZXJ0aWNhbGZpbGw9OTYzNztlLnNxdWFyZXdoaXRld2l0aHNtYWxsYmxhY2s9OTYzNTtlLnNyc3F1YXJlPTEzMjc1O2Uuc3NhYmVuZ2FsaT0yNDg3O2Uuc3NhZGV2YT0yMzU5O2Uuc3NhZ3VqYXJhdGk9Mjc0MztlLnNzYW5nY2lldWNrb3JlYW49MTI2MTc7ZS5zc2FuZ2hpZXVoa29yZWFuPTEyNjc3O2Uuc3NhbmdpZXVuZ2tvcmVhbj0xMjY3MjtlLnNzYW5na2l5ZW9ra29yZWFuPTEyNTk0O2Uuc3NhbmduaWV1bmtvcmVhbj0xMjY0NTtlLnNzYW5ncGlldXBrb3JlYW49MTI2MTE7ZS5zc2FuZ3Npb3Nrb3JlYW49MTI2MTQ7ZS5zc2FuZ3Rpa2V1dGtvcmVhbj0xMjYwMDtlLnNzdXBlcmlvcj02MzIxODtlLnN0ZXJsaW5nPTE2MztlLnN0ZXJsaW5nbW9ub3NwYWNlPTY1NTA1O2Uuc3Ryb2tlbG9uZ292ZXJsYXljbWI9ODIyO2Uuc3Ryb2tlc2hvcnRvdmVybGF5Y21iPTgyMTtlLnN1YnNldD04ODM0O2Uuc3Vic2V0bm90ZXF1YWw9ODg0MjtlLnN1YnNldG9yZXF1YWw9ODgzODtlLnN1Y2NlZWRzPTg4Mjc7ZS5zdWNodGhhdD04NzE1O2Uuc3VoaXJhZ2FuYT0xMjM3NztlLnN1a2F0YWthbmE9MTI0NzM7ZS5zdWthdGFrYW5haGFsZndpZHRoPTY1NDA1O2Uuc3VrdW5hcmFiaWM9MTYxODtlLnN1bW1hdGlvbj04NzIxO2Uuc3VuPTk3ODg7ZS5zdXBlcnNldD04ODM1O2Uuc3VwZXJzZXRub3RlcXVhbD04ODQzO2Uuc3VwZXJzZXRvcmVxdWFsPTg4Mzk7ZS5zdnNxdWFyZT0xMzI3NjtlLnN5b3V3YWVyYXNxdWFyZT0xMzE4MDtlLnQ9MTE2O2UudGFiZW5nYWxpPTI0Njg7ZS50YWNrZG93bj04ODY4O2UudGFja2xlZnQ9ODg2NztlLnRhZGV2YT0yMzQwO2UudGFndWphcmF0aT0yNzI0O2UudGFndXJtdWtoaT0yNTk2O2UudGFoYXJhYmljPTE1OTE7ZS50YWhmaW5hbGFyYWJpYz02NTIxODtlLnRhaGluaXRpYWxhcmFiaWM9NjUyMTk7ZS50YWhpcmFnYW5hPTEyMzgzO2UudGFobWVkaWFsYXJhYmljPTY1MjIwO2UudGFpc3lvdWVyYXNxdWFyZT0xMzE4MTtlLnRha2F0YWthbmE9MTI0Nzk7ZS50YWthdGFrYW5haGFsZndpZHRoPTY1NDA4O2UudGF0d2VlbGFyYWJpYz0xNjAwO2UudGF1PTk2NDtlLnRhdj0xNTE0O2UudGF2ZGFnZXM9NjQzMzA7ZS50YXZkYWdlc2g9NjQzMzA7ZS50YXZkYWdlc2hoZWJyZXc9NjQzMzA7ZS50YXZoZWJyZXc9MTUxNDtlLnRiYXI9MzU5O2UudGJvcG9tb2ZvPTEyNTU0O2UudGNhcm9uPTM1NztlLnRjY3VybD02ODA7ZS50Y2VkaWxsYT0zNTU7ZS50Y2hlaGFyYWJpYz0xNjcwO2UudGNoZWhmaW5hbGFyYWJpYz02NDM3OTtlLnRjaGVoaW5pdGlhbGFyYWJpYz02NDM4MDtlLnRjaGVobWVkaWFsYXJhYmljPTY0MzgxO2UudGNpcmNsZT05NDQzO2UudGNpcmN1bWZsZXhiZWxvdz03NzkzO2UudGNvbW1hYWNjZW50PTM1NTtlLnRkaWVyZXNpcz03ODMxO2UudGRvdGFjY2VudD03Nzg3O2UudGRvdGJlbG93PTc3ODk7ZS50ZWN5cmlsbGljPTEwOTA7ZS50ZWRlc2NlbmRlcmN5cmlsbGljPTExOTc7ZS50ZWhhcmFiaWM9MTU3ODtlLnRlaGZpbmFsYXJhYmljPTY1MTc0O2UudGVoaGFoaW5pdGlhbGFyYWJpYz02NDY3NDtlLnRlaGhhaGlzb2xhdGVkYXJhYmljPTY0NTI0O2UudGVoaW5pdGlhbGFyYWJpYz02NTE3NTtlLnRlaGlyYWdhbmE9MTIzOTA7ZS50ZWhqZWVtaW5pdGlhbGFyYWJpYz02NDY3MztlLnRlaGplZW1pc29sYXRlZGFyYWJpYz02NDUyMztlLnRlaG1hcmJ1dGFhcmFiaWM9MTU3NztlLnRlaG1hcmJ1dGFmaW5hbGFyYWJpYz02NTE3MjtlLnRlaG1lZGlhbGFyYWJpYz02NTE3NjtlLnRlaG1lZW1pbml0aWFsYXJhYmljPTY0Njc2O2UudGVobWVlbWlzb2xhdGVkYXJhYmljPTY0NTI2O2UudGVobm9vbmZpbmFsYXJhYmljPTY0NjI3O2UudGVrYXRha2FuYT0xMjQ4NjtlLnRla2F0YWthbmFoYWxmd2lkdGg9NjU0MTE7ZS50ZWxlcGhvbmU9ODQ4MTtlLnRlbGVwaG9uZWJsYWNrPTk3NDI7ZS50ZWxpc2hhZ2Vkb2xhaGVicmV3PTE0NDA7ZS50ZWxpc2hhcWV0YW5haGVicmV3PTE0NDk7ZS50ZW5jaXJjbGU9OTMyMTtlLnRlbmlkZW9ncmFwaGljcGFyZW49MTI4NDE7ZS50ZW5wYXJlbj05MzQxO2UudGVucGVyaW9kPTkzNjE7ZS50ZW5yb21hbj04NTY5O2UudGVzaD02Nzk7ZS50ZXQ9MTQ5NjtlLnRldGRhZ2VzaD02NDMxMjtlLnRldGRhZ2VzaGhlYnJldz02NDMxMjtlLnRldGhlYnJldz0xNDk2O2UudGV0c2VjeXJpbGxpYz0xMjA1O2UudGV2aXJoZWJyZXc9MTQzNTtlLnRldmlybGVmdGhlYnJldz0xNDM1O2UudGhhYmVuZ2FsaT0yNDY5O2UudGhhZGV2YT0yMzQxO2UudGhhZ3VqYXJhdGk9MjcyNTtlLnRoYWd1cm11a2hpPTI1OTc7ZS50aGFsYXJhYmljPTE1ODQ7ZS50aGFsZmluYWxhcmFiaWM9NjUxOTY7ZS50aGFudGhha2hhdGxvd2xlZnR0aGFpPTYzNjQwO2UudGhhbnRoYWtoYXRsb3dyaWdodHRoYWk9NjM2Mzk7ZS50aGFudGhha2hhdHRoYWk9MzY2MDtlLnRoYW50aGFraGF0dXBwZXJsZWZ0dGhhaT02MzYzODtlLnRoZWhhcmFiaWM9MTU3OTtlLnRoZWhmaW5hbGFyYWJpYz02NTE3ODtlLnRoZWhpbml0aWFsYXJhYmljPTY1MTc5O2UudGhlaG1lZGlhbGFyYWJpYz02NTE4MDtlLnRoZXJlZXhpc3RzPTg3MDc7ZS50aGVyZWZvcmU9ODc1NjtlLnRoZXRhPTk1MjtlLnRoZXRhMT05Nzc7ZS50aGV0YXN5bWJvbGdyZWVrPTk3NztlLnRoaWV1dGhhY2lyY2xla29yZWFuPTEyOTIxO2UudGhpZXV0aGFwYXJlbmtvcmVhbj0xMjgyNTtlLnRoaWV1dGhjaXJjbGVrb3JlYW49MTI5MDc7ZS50aGlldXRoa29yZWFuPTEyNjIwO2UudGhpZXV0aHBhcmVua29yZWFuPTEyODExO2UudGhpcnRlZW5jaXJjbGU9OTMyNDtlLnRoaXJ0ZWVucGFyZW49OTM0NDtlLnRoaXJ0ZWVucGVyaW9kPTkzNjQ7ZS50aG9uYW5nbW9udGhvdGhhaT0zNjAxO2UudGhvb2s9NDI5O2UudGhvcGh1dGhhb3RoYWk9MzYwMjtlLnRob3JuPTI1NDtlLnRob3RoYWhhbnRoYWk9MzYwNztlLnRob3RoYW50aGFpPTM2MDA7ZS50aG90aG9uZ3RoYWk9MzYwODtlLnRob3RodW5ndGhhaT0zNjA2O2UudGhvdXNhbmRjeXJpbGxpYz0xMTU0O2UudGhvdXNhbmRzc2VwYXJhdG9yYXJhYmljPTE2NDQ7ZS50aG91c2FuZHNzZXBhcmF0b3JwZXJzaWFuPTE2NDQ7ZS50aHJlZT01MTtlLnRocmVlYXJhYmljPTE2MzU7ZS50aHJlZWJlbmdhbGk9MjUzNztlLnRocmVlY2lyY2xlPTkzMTQ7ZS50aHJlZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjQ7ZS50aHJlZWRldmE9MjQwOTtlLnRocmVlZWlnaHRocz04NTQwO2UudGhyZWVndWphcmF0aT0yNzkzO2UudGhyZWVndXJtdWtoaT0yNjY1O2UudGhyZWVoYWNrYXJhYmljPTE2MzU7ZS50aHJlZWhhbmd6aG91PTEyMzIzO2UudGhyZWVpZGVvZ3JhcGhpY3BhcmVuPTEyODM0O2UudGhyZWVpbmZlcmlvcj04MzIzO2UudGhyZWVtb25vc3BhY2U9NjUyOTk7ZS50aHJlZW51bWVyYXRvcmJlbmdhbGk9MjU1MDtlLnRocmVlb2xkc3R5bGU9NjMyODM7ZS50aHJlZXBhcmVuPTkzMzQ7ZS50aHJlZXBlcmlvZD05MzU0O2UudGhyZWVwZXJzaWFuPTE3Nzk7ZS50aHJlZXF1YXJ0ZXJzPTE5MDtlLnRocmVlcXVhcnRlcnNlbWRhc2g9NjMxOTg7ZS50aHJlZXJvbWFuPTg1NjI7ZS50aHJlZXN1cGVyaW9yPTE3OTtlLnRocmVldGhhaT0zNjY3O2UudGh6c3F1YXJlPTEzMjA0O2UudGloaXJhZ2FuYT0xMjM4NTtlLnRpa2F0YWthbmE9MTI0ODE7ZS50aWthdGFrYW5haGFsZndpZHRoPTY1NDA5O2UudGlrZXV0YWNpcmNsZWtvcmVhbj0xMjkxMjtlLnRpa2V1dGFwYXJlbmtvcmVhbj0xMjgxNjtlLnRpa2V1dGNpcmNsZWtvcmVhbj0xMjg5ODtlLnRpa2V1dGtvcmVhbj0xMjU5OTtlLnRpa2V1dHBhcmVua29yZWFuPTEyODAyO2UudGlsZGU9NzMyO2UudGlsZGViZWxvd2NtYj04MTY7ZS50aWxkZWNtYj03NzE7ZS50aWxkZWNvbWI9NzcxO2UudGlsZGVkb3VibGVjbWI9ODY0O2UudGlsZGVvcGVyYXRvcj04NzY0O2UudGlsZGVvdmVybGF5Y21iPTgyMDtlLnRpbGRldmVydGljYWxjbWI9ODMwO2UudGltZXNjaXJjbGU9ODg1NTtlLnRpcGVoYWhlYnJldz0xNDMwO2UudGlwZWhhbGVmdGhlYnJldz0xNDMwO2UudGlwcGlndXJtdWtoaT0yNjcyO2UudGl0bG9jeXJpbGxpY2NtYj0xMTU1O2UudGl3bmFybWVuaWFuPTE0MDc7ZS50bGluZWJlbG93PTc3OTE7ZS50bW9ub3NwYWNlPTY1MzY0O2UudG9hcm1lbmlhbj0xMzg1O2UudG9oaXJhZ2FuYT0xMjM5MjtlLnRva2F0YWthbmE9MTI0ODg7ZS50b2thdGFrYW5haGFsZndpZHRoPTY1NDEyO2UudG9uZWJhcmV4dHJhaGlnaG1vZD03NDE7ZS50b25lYmFyZXh0cmFsb3dtb2Q9NzQ1O2UudG9uZWJhcmhpZ2htb2Q9NzQyO2UudG9uZWJhcmxvd21vZD03NDQ7ZS50b25lYmFybWlkbW9kPTc0MztlLnRvbmVmaXZlPTQ0NTtlLnRvbmVzaXg9Mzg5O2UudG9uZXR3bz00MjQ7ZS50b25vcz05MDA7ZS50b25zcXVhcmU9MTMwOTU7ZS50b3BhdGFrdGhhaT0zNTk5O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0PTEyMzA4O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0c21hbGw9NjUxMTc7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA4MTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMDk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0c21hbGw9NjUxMTg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODI7ZS50b3Rhb3RoYWk9MzYwNTtlLnRwYWxhdGFsaG9vaz00Mjc7ZS50cGFyZW49OTM5MTtlLnRyYWRlbWFyaz04NDgyO2UudHJhZGVtYXJrc2Fucz02MzcyMjtlLnRyYWRlbWFya3NlcmlmPTYzMTk1O2UudHJldHJvZmxleGhvb2s9NjQ4O2UudHJpYWdkbj05NjYwO2UudHJpYWdsZj05NjY4O2UudHJpYWdydD05NjU4O2UudHJpYWd1cD05NjUwO2UudHM9Njc4O2UudHNhZGk9MTUxMDtlLnRzYWRpZGFnZXNoPTY0MzI2O2UudHNhZGlkYWdlc2hoZWJyZXc9NjQzMjY7ZS50c2FkaWhlYnJldz0xNTEwO2UudHNlY3lyaWxsaWM9MTA5NDtlLnRzZXJlPTE0NjE7ZS50c2VyZTEyPTE0NjE7ZS50c2VyZTFlPTE0NjE7ZS50c2VyZTJiPTE0NjE7ZS50c2VyZWhlYnJldz0xNDYxO2UudHNlcmVuYXJyb3doZWJyZXc9MTQ2MTtlLnRzZXJlcXVhcnRlcmhlYnJldz0xNDYxO2UudHNlcmV3aWRlaGVicmV3PTE0NjE7ZS50c2hlY3lyaWxsaWM9MTExNTtlLnRzdXBlcmlvcj02MzIxOTtlLnR0YWJlbmdhbGk9MjQ2MztlLnR0YWRldmE9MjMzNTtlLnR0YWd1amFyYXRpPTI3MTk7ZS50dGFndXJtdWtoaT0yNTkxO2UudHRlaGFyYWJpYz0xNjU3O2UudHRlaGZpbmFsYXJhYmljPTY0MzU5O2UudHRlaGluaXRpYWxhcmFiaWM9NjQzNjA7ZS50dGVobWVkaWFsYXJhYmljPTY0MzYxO2UudHRoYWJlbmdhbGk9MjQ2NDtlLnR0aGFkZXZhPTIzMzY7ZS50dGhhZ3VqYXJhdGk9MjcyMDtlLnR0aGFndXJtdWtoaT0yNTkyO2UudHR1cm5lZD02NDc7ZS50dWhpcmFnYW5hPTEyMzg4O2UudHVrYXRha2FuYT0xMjQ4NDtlLnR1a2F0YWthbmFoYWxmd2lkdGg9NjU0MTA7ZS50dXNtYWxsaGlyYWdhbmE9MTIzODc7ZS50dXNtYWxsa2F0YWthbmE9MTI0ODM7ZS50dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTE7ZS50d2VsdmVjaXJjbGU9OTMyMztlLnR3ZWx2ZXBhcmVuPTkzNDM7ZS50d2VsdmVwZXJpb2Q9OTM2MztlLnR3ZWx2ZXJvbWFuPTg1NzE7ZS50d2VudHljaXJjbGU9OTMzMTtlLnR3ZW50eWhhbmd6aG91PTIxMzE2O2UudHdlbnR5cGFyZW49OTM1MTtlLnR3ZW50eXBlcmlvZD05MzcxO2UudHdvPTUwO2UudHdvYXJhYmljPTE2MzQ7ZS50d29iZW5nYWxpPTI1MzY7ZS50d29jaXJjbGU9OTMxMztlLnR3b2NpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjM7ZS50d29kZXZhPTI0MDg7ZS50d29kb3RlbmxlYWRlcj04MjI5O2UudHdvZG90bGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXJ2ZXJ0aWNhbD02NTA3MjtlLnR3b2d1amFyYXRpPTI3OTI7ZS50d29ndXJtdWtoaT0yNjY0O2UudHdvaGFja2FyYWJpYz0xNjM0O2UudHdvaGFuZ3pob3U9MTIzMjI7ZS50d29pZGVvZ3JhcGhpY3BhcmVuPTEyODMzO2UudHdvaW5mZXJpb3I9ODMyMjtlLnR3b21vbm9zcGFjZT02NTI5ODtlLnR3b251bWVyYXRvcmJlbmdhbGk9MjU0OTtlLnR3b29sZHN0eWxlPTYzMjgyO2UudHdvcGFyZW49OTMzMztlLnR3b3BlcmlvZD05MzUzO2UudHdvcGVyc2lhbj0xNzc4O2UudHdvcm9tYW49ODU2MTtlLnR3b3N0cm9rZT00NDM7ZS50d29zdXBlcmlvcj0xNzg7ZS50d290aGFpPTM2NjY7ZS50d290aGlyZHM9ODUzMjtlLnU9MTE3O2UudWFjdXRlPTI1MDtlLnViYXI9NjQ5O2UudWJlbmdhbGk9MjQ0MTtlLnVib3BvbW9mbz0xMjU4NDtlLnVicmV2ZT0zNjU7ZS51Y2Fyb249NDY4O2UudWNpcmNsZT05NDQ0O2UudWNpcmN1bWZsZXg9MjUxO2UudWNpcmN1bWZsZXhiZWxvdz03Nzk5O2UudWN5cmlsbGljPTEwOTE7ZS51ZGF0dGFkZXZhPTIzODU7ZS51ZGJsYWN1dGU9MzY5O2UudWRibGdyYXZlPTUzMztlLnVkZXZhPTIzMTM7ZS51ZGllcmVzaXM9MjUyO2UudWRpZXJlc2lzYWN1dGU9NDcyO2UudWRpZXJlc2lzYmVsb3c9Nzc5NTtlLnVkaWVyZXNpc2Nhcm9uPTQ3NDtlLnVkaWVyZXNpc2N5cmlsbGljPTEyNjU7ZS51ZGllcmVzaXNncmF2ZT00NzY7ZS51ZGllcmVzaXNtYWNyb249NDcwO2UudWRvdGJlbG93PTc5MDk7ZS51Z3JhdmU9MjQ5O2UudWd1amFyYXRpPTI2OTc7ZS51Z3VybXVraGk9MjU2OTtlLnVoaXJhZ2FuYT0xMjM1ODtlLnVob29rYWJvdmU9NzkxMTtlLnVob3JuPTQzMjtlLnVob3JuYWN1dGU9NzkxMztlLnVob3JuZG90YmVsb3c9NzkyMTtlLnVob3JuZ3JhdmU9NzkxNTtlLnVob3JuaG9va2Fib3ZlPTc5MTc7ZS51aG9ybnRpbGRlPTc5MTk7ZS51aHVuZ2FydW1sYXV0PTM2OTtlLnVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY3O2UudWludmVydGVkYnJldmU9NTM1O2UudWthdGFrYW5hPTEyNDU0O2UudWthdGFrYW5haGFsZndpZHRoPTY1Mzk1O2UudWtjeXJpbGxpYz0xMTQ1O2UudWtvcmVhbj0xMjYzNjtlLnVtYWNyb249MzYzO2UudW1hY3JvbmN5cmlsbGljPTEyNjM7ZS51bWFjcm9uZGllcmVzaXM9NzgwMztlLnVtYXRyYWd1cm11a2hpPTI2MjU7ZS51bW9ub3NwYWNlPTY1MzY1O2UudW5kZXJzY29yZT05NTtlLnVuZGVyc2NvcmVkYmw9ODIxNTtlLnVuZGVyc2NvcmVtb25vc3BhY2U9NjUzNDM7ZS51bmRlcnNjb3JldmVydGljYWw9NjUwNzU7ZS51bmRlcnNjb3Jld2F2eT02NTEwMztlLnVuaW9uPTg3NDY7ZS51bml2ZXJzYWw9ODcwNDtlLnVvZ29uZWs9MzcxO2UudXBhcmVuPTkzOTI7ZS51cGJsb2NrPTk2MDA7ZS51cHBlcmRvdGhlYnJldz0xNDc2O2UudXBzaWxvbj05NjU7ZS51cHNpbG9uZGllcmVzaXM9OTcxO2UudXBzaWxvbmRpZXJlc2lzdG9ub3M9OTQ0O2UudXBzaWxvbmxhdGluPTY1MDtlLnVwc2lsb250b25vcz05NzM7ZS51cHRhY2tiZWxvd2NtYj03OTc7ZS51cHRhY2ttb2Q9NzI0O2UudXJhZ3VybXVraGk9MjY3NTtlLnVyaW5nPTM2NztlLnVzaG9ydGN5cmlsbGljPTExMTg7ZS51c21hbGxoaXJhZ2FuYT0xMjM1NztlLnVzbWFsbGthdGFrYW5hPTEyNDUzO2UudXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODU7ZS51c3RyYWlnaHRjeXJpbGxpYz0xMTk5O2UudXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMTtlLnV0aWxkZT0zNjE7ZS51dGlsZGVhY3V0ZT03ODAxO2UudXRpbGRlYmVsb3c9Nzc5NztlLnV1YmVuZ2FsaT0yNDQyO2UudXVkZXZhPTIzMTQ7ZS51dWd1amFyYXRpPTI2OTg7ZS51dWd1cm11a2hpPTI1NzA7ZS51dW1hdHJhZ3VybXVraGk9MjYyNjtlLnV1dm93ZWxzaWduYmVuZ2FsaT0yNDk4O2UudXV2b3dlbHNpZ25kZXZhPTIzNzA7ZS51dXZvd2Vsc2lnbmd1amFyYXRpPTI3NTQ7ZS51dm93ZWxzaWduYmVuZ2FsaT0yNDk3O2UudXZvd2Vsc2lnbmRldmE9MjM2OTtlLnV2b3dlbHNpZ25ndWphcmF0aT0yNzUzO2Uudj0xMTg7ZS52YWRldmE9MjM1NztlLnZhZ3VqYXJhdGk9Mjc0MTtlLnZhZ3VybXVraGk9MjYxMztlLnZha2F0YWthbmE9MTI1MzU7ZS52YXY9MTQ5MztlLnZhdmRhZ2VzaD02NDMwOTtlLnZhdmRhZ2VzaDY1PTY0MzA5O2UudmF2ZGFnZXNoaGVicmV3PTY0MzA5O2UudmF2aGVicmV3PTE0OTM7ZS52YXZob2xhbT02NDMzMTtlLnZhdmhvbGFtaGVicmV3PTY0MzMxO2UudmF2dmF2aGVicmV3PTE1MjA7ZS52YXZ5b2RoZWJyZXc9MTUyMTtlLnZjaXJjbGU9OTQ0NTtlLnZkb3RiZWxvdz03ODA3O2UudmVjeXJpbGxpYz0xMDc0O2UudmVoYXJhYmljPTE3MDA7ZS52ZWhmaW5hbGFyYWJpYz02NDM2MztlLnZlaGluaXRpYWxhcmFiaWM9NjQzNjQ7ZS52ZWhtZWRpYWxhcmFiaWM9NjQzNjU7ZS52ZWthdGFrYW5hPTEyNTM3O2UudmVudXM9OTc5MjtlLnZlcnRpY2FsYmFyPTEyNDtlLnZlcnRpY2FsbGluZWFib3ZlY21iPTc4MTtlLnZlcnRpY2FsbGluZWJlbG93Y21iPTgwOTtlLnZlcnRpY2FsbGluZWxvd21vZD03MTY7ZS52ZXJ0aWNhbGxpbmVtb2Q9NzEyO2UudmV3YXJtZW5pYW49MTQwNjtlLnZob29rPTY1MTtlLnZpa2F0YWthbmE9MTI1MzY7ZS52aXJhbWFiZW5nYWxpPTI1MDk7ZS52aXJhbWFkZXZhPTIzODE7ZS52aXJhbWFndWphcmF0aT0yNzY1O2UudmlzYXJnYWJlbmdhbGk9MjQzNTtlLnZpc2FyZ2FkZXZhPTIzMDc7ZS52aXNhcmdhZ3VqYXJhdGk9MjY5MTtlLnZtb25vc3BhY2U9NjUzNjY7ZS52b2FybWVuaWFuPTE0MDA7ZS52b2ljZWRpdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NjtlLnZvaWNlZGl0ZXJhdGlvbmthdGFrYW5hPTEyNTQyO2Uudm9pY2VkbWFya2thbmE9MTI0NDM7ZS52b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzODtlLnZva2F0YWthbmE9MTI1Mzg7ZS52cGFyZW49OTM5MztlLnZ0aWxkZT03ODA1O2UudnR1cm5lZD02NTI7ZS52dWhpcmFnYW5hPTEyNDM2O2UudnVrYXRha2FuYT0xMjUzMjtlLnc9MTE5O2Uud2FjdXRlPTc4MTE7ZS53YWVrb3JlYW49MTI2MzM7ZS53YWhpcmFnYW5hPTEyNDMxO2Uud2FrYXRha2FuYT0xMjUyNztlLndha2F0YWthbmFoYWxmd2lkdGg9NjU0MzY7ZS53YWtvcmVhbj0xMjYzMjtlLndhc21hbGxoaXJhZ2FuYT0xMjQzMDtlLndhc21hbGxrYXRha2FuYT0xMjUyNjtlLndhdHRvc3F1YXJlPTEzMTQzO2Uud2F2ZWRhc2g9MTIzMTY7ZS53YXZ5dW5kZXJzY29yZXZlcnRpY2FsPTY1MDc2O2Uud2F3YXJhYmljPTE2MDg7ZS53YXdmaW5hbGFyYWJpYz02NTI2MjtlLndhd2hhbXphYWJvdmVhcmFiaWM9MTU3MjtlLndhd2hhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1ODtlLndic3F1YXJlPTEzMjc3O2Uud2NpcmNsZT05NDQ2O2Uud2NpcmN1bWZsZXg9MzczO2Uud2RpZXJlc2lzPTc4MTM7ZS53ZG90YWNjZW50PTc4MTU7ZS53ZG90YmVsb3c9NzgxNztlLndlaGlyYWdhbmE9MTI0MzM7ZS53ZWllcnN0cmFzcz04NDcyO2Uud2VrYXRha2FuYT0xMjUyOTtlLndla29yZWFuPTEyNjM4O2Uud2Vva29yZWFuPTEyNjM3O2Uud2dyYXZlPTc4MDk7ZS53aGl0ZWJ1bGxldD05NzAyO2Uud2hpdGVjaXJjbGU9OTY3NTtlLndoaXRlY2lyY2xlaW52ZXJzZT05Njg5O2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdD0xMjMwMjtlLndoaXRlY29ybmVyYnJhY2tldGxlZnR2ZXJ0aWNhbD02NTA5MTtlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAzO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MjtlLndoaXRlZGlhbW9uZD05NjcxO2Uud2hpdGVkaWFtb25kY29udGFpbmluZ2JsYWNrc21hbGxkaWFtb25kPTk2NzI7ZS53aGl0ZWRvd25wb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2MztlLndoaXRlZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MTtlLndoaXRlbGVmdHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjY3O2Uud2hpdGVsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY1O2Uud2hpdGVsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMTA7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMTE7ZS53aGl0ZXJpZ2h0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTc7ZS53aGl0ZXJpZ2h0cG9pbnRpbmd0cmlhbmdsZT05NjU1O2Uud2hpdGVzbWFsbHNxdWFyZT05NjQzO2Uud2hpdGVzbWlsaW5nZmFjZT05Nzg2O2Uud2hpdGVzcXVhcmU9OTYzMztlLndoaXRlc3Rhcj05NzM0O2Uud2hpdGV0ZWxlcGhvbmU9OTc0MztlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0PTEyMzEyO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzEzO2Uud2hpdGV1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUzO2Uud2hpdGV1cHBvaW50aW5ndHJpYW5nbGU9OTY1MTtlLndpaGlyYWdhbmE9MTI0MzI7ZS53aWthdGFrYW5hPTEyNTI4O2Uud2lrb3JlYW49MTI2Mzk7ZS53bW9ub3NwYWNlPTY1MzY3O2Uud29oaXJhZ2FuYT0xMjQzNDtlLndva2F0YWthbmE9MTI1MzA7ZS53b2thdGFrYW5haGFsZndpZHRoPTY1MzgyO2Uud29uPTgzNjE7ZS53b25tb25vc3BhY2U9NjU1MTA7ZS53b3dhZW50aGFpPTM2MjM7ZS53cGFyZW49OTM5NDtlLndyaW5nPTc4MzI7ZS53c3VwZXJpb3I9Njk1O2Uud3R1cm5lZD02NTM7ZS53eW5uPTQ0NztlLng9MTIwO2UueGFib3ZlY21iPTgyOTtlLnhib3BvbW9mbz0xMjU2MjtlLnhjaXJjbGU9OTQ0NztlLnhkaWVyZXNpcz03ODIxO2UueGRvdGFjY2VudD03ODE5O2UueGVoYXJtZW5pYW49MTM4OTtlLnhpPTk1ODtlLnhtb25vc3BhY2U9NjUzNjg7ZS54cGFyZW49OTM5NTtlLnhzdXBlcmlvcj03Mzk7ZS55PTEyMTtlLnlhYWRvc3F1YXJlPTEzMTM0O2UueWFiZW5nYWxpPTI0Nzk7ZS55YWN1dGU9MjUzO2UueWFkZXZhPTIzNTE7ZS55YWVrb3JlYW49MTI2MjY7ZS55YWd1amFyYXRpPTI3MzU7ZS55YWd1cm11a2hpPTI2MDc7ZS55YWhpcmFnYW5hPTEyNDIwO2UueWFrYXRha2FuYT0xMjUxNjtlLnlha2F0YWthbmFoYWxmd2lkdGg9NjU0Mjg7ZS55YWtvcmVhbj0xMjYyNTtlLnlhbWFra2FudGhhaT0zNjYyO2UueWFzbWFsbGhpcmFnYW5hPTEyNDE5O2UueWFzbWFsbGthdGFrYW5hPTEyNTE1O2UueWFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg4O2UueWF0Y3lyaWxsaWM9MTEyMztlLnljaXJjbGU9OTQ0ODtlLnljaXJjdW1mbGV4PTM3NTtlLnlkaWVyZXNpcz0yNTU7ZS55ZG90YWNjZW50PTc4MjM7ZS55ZG90YmVsb3c9NzkyNTtlLnllaGFyYWJpYz0xNjEwO2UueWVoYmFycmVlYXJhYmljPTE3NDY7ZS55ZWhiYXJyZWVmaW5hbGFyYWJpYz02NDQzMTtlLnllaGZpbmFsYXJhYmljPTY1MjY2O2UueWVoaGFtemFhYm92ZWFyYWJpYz0xNTc0O2UueWVoaGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTYyO2UueWVoaGFtemFhYm92ZWluaXRpYWxhcmFiaWM9NjUxNjM7ZS55ZWhoYW16YWFib3ZlbWVkaWFsYXJhYmljPTY1MTY0O2UueWVoaW5pdGlhbGFyYWJpYz02NTI2NztlLnllaG1lZGlhbGFyYWJpYz02NTI2ODtlLnllaG1lZW1pbml0aWFsYXJhYmljPTY0NzMzO2UueWVobWVlbWlzb2xhdGVkYXJhYmljPTY0NjAwO2UueWVobm9vbmZpbmFsYXJhYmljPTY0NjYwO2UueWVodGhyZWVkb3RzYmVsb3dhcmFiaWM9MTc0NTtlLnlla29yZWFuPTEyNjMwO2UueWVuPTE2NTtlLnllbm1vbm9zcGFjZT02NTUwOTtlLnllb2tvcmVhbj0xMjYyOTtlLnllb3JpbmhpZXVoa29yZWFuPTEyNjc4O2UueWVyYWhiZW55b21vaGVicmV3PTE0NTA7ZS55ZXJhaGJlbnlvbW9sZWZ0aGVicmV3PTE0NTA7ZS55ZXJpY3lyaWxsaWM9MTA5OTtlLnllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzM7ZS55ZXNpZXVuZ2tvcmVhbj0xMjY3MztlLnllc2lldW5ncGFuc2lvc2tvcmVhbj0xMjY3NTtlLnllc2lldW5nc2lvc2tvcmVhbj0xMjY3NDtlLnlldGl2aGVicmV3PTE0MzQ7ZS55Z3JhdmU9NzkyMztlLnlob29rPTQzNjtlLnlob29rYWJvdmU9NzkyNztlLnlpYXJtZW5pYW49MTM5NztlLnlpY3lyaWxsaWM9MTExMTtlLnlpa29yZWFuPTEyNjQyO2UueWlueWFuZz05Nzc1O2UueWl3bmFybWVuaWFuPTE0MTA7ZS55bW9ub3NwYWNlPTY1MzY5O2UueW9kPTE0OTc7ZS55b2RkYWdlc2g9NjQzMTM7ZS55b2RkYWdlc2hoZWJyZXc9NjQzMTM7ZS55b2RoZWJyZXc9MTQ5NztlLnlvZHlvZGhlYnJldz0xNTIyO2UueW9keW9kcGF0YWhoZWJyZXc9NjQyODc7ZS55b2hpcmFnYW5hPTEyNDI0O2UueW9pa29yZWFuPTEyNjgxO2UueW9rYXRha2FuYT0xMjUyMDtlLnlva2F0YWthbmFoYWxmd2lkdGg9NjU0MzA7ZS55b2tvcmVhbj0xMjYzNTtlLnlvc21hbGxoaXJhZ2FuYT0xMjQyMztlLnlvc21hbGxrYXRha2FuYT0xMjUxOTtlLnlvc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MDtlLnlvdGdyZWVrPTEwMTE7ZS55b3lhZWtvcmVhbj0xMjY4MDtlLnlveWFrb3JlYW49MTI2Nzk7ZS55b3lha3RoYWk9MzYxODtlLnlveWluZ3RoYWk9MzU5NztlLnlwYXJlbj05Mzk2O2UueXBvZ2VncmFtbWVuaT04OTA7ZS55cG9nZWdyYW1tZW5pZ3JlZWtjbWI9ODM3O2UueXI9NDIyO2UueXJpbmc9NzgzMztlLnlzdXBlcmlvcj02OTY7ZS55dGlsZGU9NzkyOTtlLnl0dXJuZWQ9NjU0O2UueXVoaXJhZ2FuYT0xMjQyMjtlLnl1aWtvcmVhbj0xMjY4NDtlLnl1a2F0YWthbmE9MTI1MTg7ZS55dWthdGFrYW5haGFsZndpZHRoPTY1NDI5O2UueXVrb3JlYW49MTI2NDA7ZS55dXNiaWdjeXJpbGxpYz0xMTMxO2UueXVzYmlnaW90aWZpZWRjeXJpbGxpYz0xMTMzO2UueXVzbGl0dGxlY3lyaWxsaWM9MTEyNztlLnl1c2xpdHRsZWlvdGlmaWVkY3lyaWxsaWM9MTEyOTtlLnl1c21hbGxoaXJhZ2FuYT0xMjQyMTtlLnl1c21hbGxrYXRha2FuYT0xMjUxNztlLnl1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4OTtlLnl1eWVrb3JlYW49MTI2ODM7ZS55dXllb2tvcmVhbj0xMjY4MjtlLnl5YWJlbmdhbGk9MjUyNztlLnl5YWRldmE9MjM5OTtlLno9MTIyO2UuemFhcm1lbmlhbj0xMzgyO2UuemFjdXRlPTM3ODtlLnphZGV2YT0yMzk1O2UuemFndXJtdWtoaT0yNjUxO2UuemFoYXJhYmljPTE1OTI7ZS56YWhmaW5hbGFyYWJpYz02NTIyMjtlLnphaGluaXRpYWxhcmFiaWM9NjUyMjM7ZS56YWhpcmFnYW5hPTEyMzc0O2UuemFobWVkaWFsYXJhYmljPTY1MjI0O2UuemFpbmFyYWJpYz0xNTg2O2UuemFpbmZpbmFsYXJhYmljPTY1MjAwO2UuemFrYXRha2FuYT0xMjQ3MDtlLnphcWVmZ2Fkb2xoZWJyZXc9MTQyOTtlLnphcWVmcWF0YW5oZWJyZXc9MTQyODtlLnphcnFhaGVicmV3PTE0MzI7ZS56YXlpbj0xNDk0O2UuemF5aW5kYWdlc2g9NjQzMTA7ZS56YXlpbmRhZ2VzaGhlYnJldz02NDMxMDtlLnpheWluaGVicmV3PTE0OTQ7ZS56Ym9wb21vZm89MTI1Njc7ZS56Y2Fyb249MzgyO2UuemNpcmNsZT05NDQ5O2UuemNpcmN1bWZsZXg9NzgyNTtlLnpjdXJsPTY1NztlLnpkb3Q9MzgwO2UuemRvdGFjY2VudD0zODA7ZS56ZG90YmVsb3c9NzgyNztlLnplY3lyaWxsaWM9MTA3OTtlLnplZGVzY2VuZGVyY3lyaWxsaWM9MTE3NztlLnplZGllcmVzaXNjeXJpbGxpYz0xMjQ3O2UuemVoaXJhZ2FuYT0xMjM4MDtlLnpla2F0YWthbmE9MTI0NzY7ZS56ZXJvPTQ4O2UuemVyb2FyYWJpYz0xNjMyO2UuemVyb2JlbmdhbGk9MjUzNDtlLnplcm9kZXZhPTI0MDY7ZS56ZXJvZ3VqYXJhdGk9Mjc5MDtlLnplcm9ndXJtdWtoaT0yNjYyO2UuemVyb2hhY2thcmFiaWM9MTYzMjtlLnplcm9pbmZlcmlvcj04MzIwO2UuemVyb21vbm9zcGFjZT02NTI5NjtlLnplcm9vbGRzdHlsZT02MzI4MDtlLnplcm9wZXJzaWFuPTE3NzY7ZS56ZXJvc3VwZXJpb3I9ODMwNDtlLnplcm90aGFpPTM2NjQ7ZS56ZXJvd2lkdGhqb2luZXI9NjUyNzk7ZS56ZXJvd2lkdGhub25qb2luZXI9ODIwNDtlLnplcm93aWR0aHNwYWNlPTgyMDM7ZS56ZXRhPTk1MDtlLnpoYm9wb21vZm89MTI1NjM7ZS56aGVhcm1lbmlhbj0xMzg2O2UuemhlYnJldmVjeXJpbGxpYz0xMjE4O2UuemhlY3lyaWxsaWM9MTA3ODtlLnpoZWRlc2NlbmRlcmN5cmlsbGljPTExNzU7ZS56aGVkaWVyZXNpc2N5cmlsbGljPTEyNDU7ZS56aWhpcmFnYW5hPTEyMzc2O2UuemlrYXRha2FuYT0xMjQ3MjtlLnppbm9yaGVicmV3PTE0NTQ7ZS56bGluZWJlbG93PTc4Mjk7ZS56bW9ub3NwYWNlPTY1MzcwO2Uuem9oaXJhZ2FuYT0xMjM4MjtlLnpva2F0YWthbmE9MTI0Nzg7ZS56cGFyZW49OTM5NztlLnpyZXRyb2ZsZXhob29rPTY1NjtlLnpzdHJva2U9NDM4O2UuenVoaXJhZ2FuYT0xMjM3ODtlLnp1a2F0YWthbmE9MTI0NzQ7ZVsiLm5vdGRlZiJdPTA7ZS5hbmdicmFja2V0bGVmdGJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRCaWc9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0YmlnZz05MDAxO2UuYW5nYnJhY2tldGxlZnRCaWdnPTkwMDE7ZS5hbmdicmFja2V0cmlnaHRCaWc9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodGJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0QmlnZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnZz05MDAyO2UuYXJyb3dob29rbGVmdD04NjE4O2UuYXJyb3dob29rcmlnaHQ9ODYxNztlLmFycm93bGVmdHRvcGhhbGY9ODYzNjtlLmFycm93bGVmdGJvdGhhbGY9ODYzNztlLmFycm93bm9ydGhlYXN0PTg1OTk7ZS5hcnJvd25vcnRod2VzdD04NTk4O2UuYXJyb3dyaWdodHRvcGhhbGY9ODY0MDtlLmFycm93cmlnaHRib3RoYWxmPTg2NDE7ZS5hcnJvd3NvdXRoZWFzdD04NjAwO2UuYXJyb3dzb3V0aHdlc3Q9ODYwMTtlLmJhY2tzbGFzaGJpZz04NzI2O2UuYmFja3NsYXNoQmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWdnPTg3MjY7ZS5iYWNrc2xhc2hiaWdnPTg3MjY7ZS5iYXJkYmw9ODIxNDtlLmJyYWNlaHRpcGRvd25sZWZ0PTY1MDc5O2UuYnJhY2VodGlwZG93bnJpZ2h0PTY1MDc5O2UuYnJhY2VodGlwdXBsZWZ0PTY1MDgwO2UuYnJhY2VodGlwdXByaWdodD02NTA4MDtlLmJyYWNlbGVmdEJpZz0xMjM7ZS5icmFjZWxlZnRiaWc9MTIzO2UuYnJhY2VsZWZ0YmlnZz0xMjM7ZS5icmFjZWxlZnRCaWdnPTEyMztlLmJyYWNlcmlnaHRCaWc9MTI1O2UuYnJhY2VyaWdodGJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnZz0xMjU7ZS5icmFjZXJpZ2h0QmlnZz0xMjU7ZS5icmFja2V0bGVmdGJpZz05MTtlLmJyYWNrZXRsZWZ0QmlnPTkxO2UuYnJhY2tldGxlZnRiaWdnPTkxO2UuYnJhY2tldGxlZnRCaWdnPTkxO2UuYnJhY2tldHJpZ2h0QmlnPTkzO2UuYnJhY2tldHJpZ2h0YmlnPTkzO2UuYnJhY2tldHJpZ2h0YmlnZz05MztlLmJyYWNrZXRyaWdodEJpZ2c9OTM7ZS5jZWlsaW5nbGVmdGJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWc9ODk2ODtlLmNlaWxpbmdsZWZ0QmlnZz04OTY4O2UuY2VpbGluZ2xlZnRiaWdnPTg5Njg7ZS5jZWlsaW5ncmlnaHRiaWc9ODk2OTtlLmNlaWxpbmdyaWdodEJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0YmlnZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnZz04OTY5O2UuY2lyY2xlZG90ZGlzcGxheT04ODU3O2UuY2lyY2xlZG90dGV4dD04ODU3O2UuY2lyY2xlbXVsdGlwbHlkaXNwbGF5PTg4NTU7ZS5jaXJjbGVtdWx0aXBseXRleHQ9ODg1NTtlLmNpcmNsZXBsdXNkaXNwbGF5PTg4NTM7ZS5jaXJjbGVwbHVzdGV4dD04ODUzO2UuY29udGludGVncmFsZGlzcGxheT04NzUwO2UuY29udGludGVncmFsdGV4dD04NzUwO2UuY29wcm9kdWN0ZGlzcGxheT04NzIwO2UuY29wcm9kdWN0dGV4dD04NzIwO2UuZmxvb3JsZWZ0QmlnPTg5NzA7ZS5mbG9vcmxlZnRiaWc9ODk3MDtlLmZsb29ybGVmdGJpZ2c9ODk3MDtlLmZsb29ybGVmdEJpZ2c9ODk3MDtlLmZsb29ycmlnaHRiaWc9ODk3MTtlLmZsb29ycmlnaHRCaWc9ODk3MTtlLmZsb29ycmlnaHRCaWdnPTg5NzE7ZS5mbG9vcnJpZ2h0YmlnZz04OTcxO2UuaGF0d2lkZT03NzA7ZS5oYXR3aWRlcj03NzA7ZS5oYXR3aWRlc3Q9NzcwO2UuaW50ZXJjYWw9NzQ4ODtlLmludGVncmFsZGlzcGxheT04NzQ3O2UuaW50ZWdyYWx0ZXh0PTg3NDc7ZS5pbnRlcnNlY3Rpb25kaXNwbGF5PTg4OTg7ZS5pbnRlcnNlY3Rpb250ZXh0PTg4OTg7ZS5sb2dpY2FsYW5kZGlzcGxheT04NzQzO2UubG9naWNhbGFuZHRleHQ9ODc0MztlLmxvZ2ljYWxvcmRpc3BsYXk9ODc0NDtlLmxvZ2ljYWxvcnRleHQ9ODc0NDtlLnBhcmVubGVmdEJpZz00MDtlLnBhcmVubGVmdGJpZz00MDtlLnBhcmVubGVmdEJpZ2c9NDA7ZS5wYXJlbmxlZnRiaWdnPTQwO2UucGFyZW5yaWdodEJpZz00MTtlLnBhcmVucmlnaHRiaWc9NDE7ZS5wYXJlbnJpZ2h0QmlnZz00MTtlLnBhcmVucmlnaHRiaWdnPTQxO2UucHJpbWU9ODI0MjtlLnByb2R1Y3RkaXNwbGF5PTg3MTk7ZS5wcm9kdWN0dGV4dD04NzE5O2UucmFkaWNhbGJpZz04NzMwO2UucmFkaWNhbEJpZz04NzMwO2UucmFkaWNhbEJpZ2c9ODczMDtlLnJhZGljYWxiaWdnPTg3MzA7ZS5yYWRpY2FsYnQ9ODczMDtlLnJhZGljYWx0cD04NzMwO2UucmFkaWNhbHZlcnRleD04NzMwO2Uuc2xhc2hiaWc9NDc7ZS5zbGFzaEJpZz00NztlLnNsYXNoQmlnZz00NztlLnNsYXNoYmlnZz00NztlLnN1bW1hdGlvbmRpc3BsYXk9ODcyMTtlLnN1bW1hdGlvbnRleHQ9ODcyMTtlLnRpbGRld2lkZT03MzI7ZS50aWxkZXdpZGVyPTczMjtlLnRpbGRld2lkZXN0PTczMjtlLnVuaW9uZGlzcGxheT04ODk5O2UudW5pb25tdWx0aWRpc3BsYXk9ODg0NjtlLnVuaW9ubXVsdGl0ZXh0PTg4NDY7ZS51bmlvbnNxZGlzcGxheT04ODUyO2UudW5pb25zcXRleHQ9ODg1MjtlLnVuaW9udGV4dD04ODk5O2UudmV4dGVuZGRvdWJsZT04NzQxO2UudmV4dGVuZHNpbmdsZT04NzM5fSkscWE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MzI7ZS5hMT05OTg1O2UuYTI9OTk4NjtlLmEyMDI9OTk4NztlLmEzPTk5ODg7ZS5hND05NzQyO2UuYTU9OTk5MDtlLmExMTk9OTk5MTtlLmExMTg9OTk5MjtlLmExMTc9OTk5MztlLmExMT05NzU1O2UuYTEyPTk3NTg7ZS5hMTM9OTk5NjtlLmExND05OTk3O2UuYTE1PTk5OTg7ZS5hMTY9OTk5OTtlLmExMDU9MWU0O2UuYTE3PTEwMDAxO2UuYTE4PTEwMDAyO2UuYTE5PTEwMDAzO2UuYTIwPTEwMDA0O2UuYTIxPTEwMDA1O2UuYTIyPTEwMDA2O2UuYTIzPTEwMDA3O2UuYTI0PTEwMDA4O2UuYTI1PTEwMDA5O2UuYTI2PTEwMDEwO2UuYTI3PTEwMDExO2UuYTI4PTEwMDEyO2UuYTY9MTAwMTM7ZS5hNz0xMDAxNDtlLmE4PTEwMDE1O2UuYTk9MTAwMTY7ZS5hMTA9MTAwMTc7ZS5hMjk9MTAwMTg7ZS5hMzA9MTAwMTk7ZS5hMzE9MTAwMjA7ZS5hMzI9MTAwMjE7ZS5hMzM9MTAwMjI7ZS5hMzQ9MTAwMjM7ZS5hMzU9OTczMztlLmEzNj0xMDAyNTtlLmEzNz0xMDAyNjtlLmEzOD0xMDAyNztlLmEzOT0xMDAyODtlLmE0MD0xMDAyOTtlLmE0MT0xMDAzMDtlLmE0Mj0xMDAzMTtlLmE0Mz0xMDAzMjtlLmE0ND0xMDAzMztlLmE0NT0xMDAzNDtlLmE0Nj0xMDAzNTtlLmE0Nz0xMDAzNjtlLmE0OD0xMDAzNztlLmE0OT0xMDAzODtlLmE1MD0xMDAzOTtlLmE1MT0xMDA0MDtlLmE1Mj0xMDA0MTtlLmE1Mz0xMDA0MjtlLmE1ND0xMDA0MztlLmE1NT0xMDA0NDtlLmE1Nj0xMDA0NTtlLmE1Nz0xMDA0NjtlLmE1OD0xMDA0NztlLmE1OT0xMDA0ODtlLmE2MD0xMDA0OTtlLmE2MT0xMDA1MDtlLmE2Mj0xMDA1MTtlLmE2Mz0xMDA1MjtlLmE2ND0xMDA1MztlLmE2NT0xMDA1NDtlLmE2Nj0xMDA1NTtlLmE2Nz0xMDA1NjtlLmE2OD0xMDA1NztlLmE2OT0xMDA1ODtlLmE3MD0xMDA1OTtlLmE3MT05Njc5O2UuYTcyPTEwMDYxO2UuYTczPTk2MzI7ZS5hNzQ9MTAwNjM7ZS5hMjAzPTEwMDY0O2UuYTc1PTEwMDY1O2UuYTIwND0xMDA2NjtlLmE3Nj05NjUwO2UuYTc3PTk2NjA7ZS5hNzg9OTY3MDtlLmE3OT0xMDA3MDtlLmE4MT05Njg3O2UuYTgyPTEwMDcyO2UuYTgzPTEwMDczO2UuYTg0PTEwMDc0O2UuYTk3PTEwMDc1O2UuYTk4PTEwMDc2O2UuYTk5PTEwMDc3O2UuYTEwMD0xMDA3ODtlLmExMDE9MTAwODE7ZS5hMTAyPTEwMDgyO2UuYTEwMz0xMDA4MztlLmExMDQ9MTAwODQ7ZS5hMTA2PTEwMDg1O2UuYTEwNz0xMDA4NjtlLmExMDg9MTAwODc7ZS5hMTEyPTk4Mjc7ZS5hMTExPTk4MzA7ZS5hMTEwPTk4Mjk7ZS5hMTA5PTk4MjQ7ZS5hMTIwPTkzMTI7ZS5hMTIxPTkzMTM7ZS5hMTIyPTkzMTQ7ZS5hMTIzPTkzMTU7ZS5hMTI0PTkzMTY7ZS5hMTI1PTkzMTc7ZS5hMTI2PTkzMTg7ZS5hMTI3PTkzMTk7ZS5hMTI4PTkzMjA7ZS5hMTI5PTkzMjE7ZS5hMTMwPTEwMTAyO2UuYTEzMT0xMDEwMztlLmExMzI9MTAxMDQ7ZS5hMTMzPTEwMTA1O2UuYTEzND0xMDEwNjtlLmExMzU9MTAxMDc7ZS5hMTM2PTEwMTA4O2UuYTEzNz0xMDEwOTtlLmExMzg9MTAxMTA7ZS5hMTM5PTEwMTExO2UuYTE0MD0xMDExMjtlLmExNDE9MTAxMTM7ZS5hMTQyPTEwMTE0O2UuYTE0Mz0xMDExNTtlLmExNDQ9MTAxMTY7ZS5hMTQ1PTEwMTE3O2UuYTE0Nj0xMDExODtlLmExNDc9MTAxMTk7ZS5hMTQ4PTEwMTIwO2UuYTE0OT0xMDEyMTtlLmExNTA9MTAxMjI7ZS5hMTUxPTEwMTIzO2UuYTE1Mj0xMDEyNDtlLmExNTM9MTAxMjU7ZS5hMTU0PTEwMTI2O2UuYTE1NT0xMDEyNztlLmExNTY9MTAxMjg7ZS5hMTU3PTEwMTI5O2UuYTE1OD0xMDEzMDtlLmExNTk9MTAxMzE7ZS5hMTYwPTEwMTMyO2UuYTE2MT04NTk0O2UuYTE2Mz04NTk2O2UuYTE2ND04NTk3O2UuYTE5Nj0xMDEzNjtlLmExNjU9MTAxMzc7ZS5hMTkyPTEwMTM4O2UuYTE2Nj0xMDEzOTtlLmExNjc9MTAxNDA7ZS5hMTY4PTEwMTQxO2UuYTE2OT0xMDE0MjtlLmExNzA9MTAxNDM7ZS5hMTcxPTEwMTQ0O2UuYTE3Mj0xMDE0NTtlLmExNzM9MTAxNDY7ZS5hMTYyPTEwMTQ3O2UuYTE3ND0xMDE0ODtlLmExNzU9MTAxNDk7ZS5hMTc2PTEwMTUwO2UuYTE3Nz0xMDE1MTtlLmExNzg9MTAxNTI7ZS5hMTc5PTEwMTUzO2UuYTE5Mz0xMDE1NDtlLmExODA9MTAxNTU7ZS5hMTk5PTEwMTU2O2UuYTE4MT0xMDE1NztlLmEyMDA9MTAxNTg7ZS5hMTgyPTEwMTU5O2UuYTIwMT0xMDE2MTtlLmExODM9MTAxNjI7ZS5hMTg0PTEwMTYzO2UuYTE5Nz0xMDE2NDtlLmExODU9MTAxNjU7ZS5hMTk0PTEwMTY2O2UuYTE5OD0xMDE2NztlLmExODY9MTAxNjg7ZS5hMTk1PTEwMTY5O2UuYTE4Nz0xMDE3MDtlLmExODg9MTAxNzE7ZS5hMTg5PTEwMTcyO2UuYTE5MD0xMDE3MztlLmExOTE9MTAxNzQ7ZS5hODk9MTAwODg7ZS5hOTA9MTAwODk7ZS5hOTM9MTAwOTA7ZS5hOTQ9MTAwOTE7ZS5hOTE9MTAwOTI7ZS5hOTI9MTAwOTM7ZS5hMjA1PTEwMDk0O2UuYTg1PTEwMDk1O2UuYTIwNj0xMDA5NjtlLmE4Nj0xMDA5NztlLmE4Nz0xMDA5ODtlLmE4OD0xMDA5OTtlLmE5NT0xMDEwMDtlLmE5Nj0xMDEwMTtlWyIubm90ZGVmIl09MH0pLHZhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWzYzNzIxXT0xNjk7ZVs2MzE5M109MTY5O2VbNjM3MjBdPTE3NDtlWzYzMTk0XT0xNzQ7ZVs2MzcyMl09ODQ4MjtlWzYzMTk1XT04NDgyO2VbNjM3MjldPTkxMjc7ZVs2MzczMF09OTEyODtlWzYzNzMxXT05MTI5O2VbNjM3NDBdPTkxMzE7ZVs2Mzc0MV09OTEzMjtlWzYzNzQyXT05MTMzO2VbNjM3MjZdPTkxMjE7ZVs2MzcyN109OTEyMjtlWzYzNzI4XT05MTIzO2VbNjM3MzddPTkxMjQ7ZVs2MzczOF09OTEyNTtlWzYzNzM5XT05MTI2O2VbNjM3MjNdPTkxMTU7ZVs2MzcyNF09OTExNjtlWzYzNzI1XT05MTE3O2VbNjM3MzRdPTkxMTg7ZVs2MzczNV09OTExOTtlWzYzNzM2XT05MTIwfSk7ZnVuY3Rpb24gZ2V0VW5pY29kZUZvckdseXBoKGUsdCl7bGV0IG49dFtlXTtpZih2b2lkIDAhPT1uKXJldHVybiBuO2lmKCFlKXJldHVybi0xO2lmKCJ1Ij09PWVbMF0pe2NvbnN0IHQ9ZS5sZW5ndGg7bGV0IGE7aWYoNz09PXQmJiJuIj09PWVbMV0mJiJpIj09PWVbMl0pYT1lLnN1YnN0cmluZygzKTtlbHNle2lmKCEodD49NSYmdDw9NykpcmV0dXJuLTE7YT1lLnN1YnN0cmluZygxKX1pZihhPT09YS50b1VwcGVyQ2FzZSgpKXtuPXBhcnNlSW50KGEsMTYpO2lmKG4+PTApcmV0dXJuIG59fXJldHVybi0xfWNvbnN0IFNhPVtbMCwxMjddLFsxMjgsMjU1XSxbMjU2LDM4M10sWzM4NCw1OTFdLFs1OTIsNjg3LDc0MjQsNzU1MSw3NTUyLDc2MTVdLFs2ODgsNzY3LDQyNzUyLDQyNzgzXSxbNzY4LDg3OSw3NjE2LDc2NzldLFs4ODAsMTAyM10sWzExMzkyLDExNTE5XSxbMTAyNCwxMjc5LDEyODAsMTMyNywxMTc0NCwxMTc3NSw0MjU2MCw0MjY1NV0sWzEzMjgsMTQyM10sWzE0MjQsMTUzNV0sWzQyMjQwLDQyNTU5XSxbMTUzNiwxNzkxLDE4NzIsMTkxOV0sWzE5ODQsMjA0N10sWzIzMDQsMjQzMV0sWzI0MzIsMjU1OV0sWzI1NjAsMjY4N10sWzI2ODgsMjgxNV0sWzI4MTYsMjk0M10sWzI5NDQsMzA3MV0sWzMwNzIsMzE5OV0sWzMyMDAsMzMyN10sWzMzMjgsMzQ1NV0sWzM1ODQsMzcxMV0sWzM3MTIsMzgzOV0sWzQyNTYsNDM1MSwxMTUyMCwxMTU2N10sWzY5MTIsNzAzOV0sWzQzNTIsNDYwN10sWzc2ODAsNzkzNSwxMTM2MCwxMTM5MSw0Mjc4NCw0MzAwN10sWzc5MzYsODE5MV0sWzgxOTIsODMwMywxMTc3NiwxMTkwM10sWzgzMDQsODM1MV0sWzgzNTIsODM5OV0sWzg0MDAsODQ0N10sWzg0NDgsODUyN10sWzg1MjgsODU5MV0sWzg1OTIsODcwMywxMDIyNCwxMDIzOSwxMDQ5NiwxMDYyMywxMTAwOCwxMTI2M10sWzg3MDQsODk1OSwxMDc1MiwxMTAwNywxMDE3NiwxMDIyMywxMDYyNCwxMDc1MV0sWzg5NjAsOTIxNV0sWzkyMTYsOTI3OV0sWzkyODAsOTMxMV0sWzkzMTIsOTQ3MV0sWzk0NzIsOTU5OV0sWzk2MDAsOTYzMV0sWzk2MzIsOTcyN10sWzk3MjgsOTk4M10sWzk5ODQsMTAxNzVdLFsxMjI4OCwxMjM1MV0sWzEyMzUyLDEyNDQ3XSxbMTI0NDgsMTI1NDMsMTI3ODQsMTI3OTldLFsxMjU0NCwxMjU5MSwxMjcwNCwxMjczNV0sWzEyNTkyLDEyNjg3XSxbNDMwNzIsNDMxMzVdLFsxMjgwMCwxMzA1NV0sWzEzMDU2LDEzMzExXSxbNDQwMzIsNTUyMTVdLFs1NTI5Niw1NzM0M10sWzY3ODQwLDY3ODcxXSxbMTk5NjgsNDA5NTksMTE5MDQsMTIwMzEsMTIwMzIsMTIyNTUsMTIyNzIsMTIyODcsMTMzMTIsMTk5MDMsMTMxMDcyLDE3Mzc5MSwxMjY4OCwxMjcwM10sWzU3MzQ0LDYzNzQzXSxbMTI3MzYsMTI3ODMsNjM3NDQsNjQyNTUsMTk0NTYwLDE5NTEwM10sWzY0MjU2LDY0MzM1XSxbNjQzMzYsNjUwMjNdLFs2NTA1Niw2NTA3MV0sWzY1MDQwLDY1MDU1XSxbNjUxMDQsNjUxMzVdLFs2NTEzNiw2NTI3OV0sWzY1MjgwLDY1NTE5XSxbNjU1MjAsNjU1MzVdLFszODQwLDQwOTVdLFsxNzkyLDE4NzFdLFsxOTIwLDE5ODNdLFszNDU2LDM1ODNdLFs0MDk2LDQyNTVdLFs0NjA4LDQ5OTEsNDk5Miw1MDIzLDExNjQ4LDExNzQzXSxbNTAyNCw1MTE5XSxbNTEyMCw1NzU5XSxbNTc2MCw1NzkxXSxbNTc5Miw1ODg3XSxbNjAxNiw2MTQzXSxbNjE0NCw2MzE5XSxbMTAyNDAsMTA0OTVdLFs0MDk2MCw0MjEyN10sWzU4ODgsNTkxOSw1OTIwLDU5NTEsNTk1Miw1OTgzLDU5ODQsNjAxNV0sWzY2MzA0LDY2MzUxXSxbNjYzNTIsNjYzODNdLFs2NjU2MCw2NjYzOV0sWzExODc4NCwxMTkwMzksMTE5MDQwLDExOTI5NSwxMTkyOTYsMTE5Mzc1XSxbMTE5ODA4LDEyMDgzMV0sWzEwNDQ0ODAsMTA0ODU3M10sWzY1MDI0LDY1MDM5LDkxNzc2MCw5MTc5OTldLFs5MTc1MDQsOTE3NjMxXSxbNjQwMCw2NDc5XSxbNjQ4MCw2NTI3XSxbNjUyOCw2NjIzXSxbNjY1Niw2Njg3XSxbMTEyNjQsMTEzNTldLFsxMTU2OCwxMTY0N10sWzE5OTA0LDE5OTY3XSxbNDMwMDgsNDMwNTVdLFs2NTUzNiw2NTY2Myw2NTY2NCw2NTc5MSw2NTc5Miw2NTg1NV0sWzY1ODU2LDY1OTM1XSxbNjY0MzIsNjY0NjNdLFs2NjQ2NCw2NjUyN10sWzY2NjQwLDY2Njg3XSxbNjY2ODgsNjY3MzVdLFs2NzU4NCw2NzY0N10sWzY4MDk2LDY4MTkxXSxbMTE5NTUyLDExOTY0N10sWzczNzI4LDc0NzUxLDc0NzUyLDc0ODc5XSxbMTE5NjQ4LDExOTY3OV0sWzcwNDAsNzEwM10sWzcxNjgsNzI0N10sWzcyNDgsNzI5NV0sWzQzMTM2LDQzMjMxXSxbNDMyNjQsNDMzMTFdLFs0MzMxMiw0MzM1OV0sWzQzNTIwLDQzNjE1XSxbNjU5MzYsNjU5OTldLFs2NmUzLDY2MDQ3XSxbNjYyMDgsNjYyNzEsNjYxNzYsNjYyMDcsNjc4NzIsNjc5MDNdLFsxMjcwMjQsMTI3MTM1LDEyNjk3NiwxMjcwMjNdXTtmdW5jdGlvbiBnZXRVbmljb2RlUmFuZ2VGb3IoZSx0PS0xKXtpZigtMSE9PXQpe2NvbnN0IG49U2FbdF07Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSs9MilpZihlPj1uW2FdJiZlPD1uW2ErMV0pcmV0dXJuIHR9Zm9yKGxldCB0PTAsbj1TYS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1TYVt0XTtmb3IobGV0IGE9MCxyPW4ubGVuZ3RoO2E8cjthKz0yKWlmKGU+PW5bYV0mJmU8PW5bYSsxXSlyZXR1cm4gdH1yZXR1cm4tMX1jb25zdCBBYT0vXihccyl8KFxwe01ufSl8KFxwe0NmfSkkL3UseGE9bmV3IE1hcDtjb25zdCBDYT0xLElhPTIsRmE9NCxUYT0zMixPYT1bIi5ub3RkZWYiLCIubnVsbCIsIm5vbm1hcmtpbmdyZXR1cm4iLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwiZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsIm5vbmJyZWFraW5nc3BhY2UiLCJBZ3JhdmUiLCJBdGlsZGUiLCJPdGlsZGUiLCJPRSIsIm9lIiwiZW5kYXNoIiwiZW1kYXNoIiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsInF1b3RlbGVmdCIsInF1b3RlcmlnaHQiLCJkaXZpZGUiLCJsb3plbmdlIiwieWRpZXJlc2lzIiwiWWRpZXJlc2lzIiwiZnJhY3Rpb24iLCJjdXJyZW5jeSIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicGVydGhvdXNhbmQiLCJBY2lyY3VtZmxleCIsIkVjaXJjdW1mbGV4IiwiQWFjdXRlIiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsImFwcGxlIiwiT2dyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZ3JhdmUiLCJkb3RsZXNzaSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsIkxzbGFzaCIsImxzbGFzaCIsIlNjYXJvbiIsInNjYXJvbiIsIlpjYXJvbiIsInpjYXJvbiIsImJyb2tlbmJhciIsIkV0aCIsImV0aCIsIllhY3V0ZSIsInlhY3V0ZSIsIlRob3JuIiwidGhvcm4iLCJtaW51cyIsIm11bHRpcGx5Iiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJvbmVoYWxmIiwib25lcXVhcnRlciIsInRocmVlcXVhcnRlcnMiLCJmcmFuYyIsIkdicmV2ZSIsImdicmV2ZSIsIklkb3RhY2NlbnQiLCJTY2VkaWxsYSIsInNjZWRpbGxhIiwiQ2FjdXRlIiwiY2FjdXRlIiwiQ2Nhcm9uIiwiY2Nhcm9uIiwiZGNyb2F0Il07ZnVuY3Rpb24gcmVjb3ZlckdseXBoTmFtZShlLHQpe2lmKHZvaWQgMCE9PXRbZV0pcmV0dXJuIGU7Y29uc3Qgbj1nZXRVbmljb2RlRm9yR2x5cGgoZSx0KTtpZigtMSE9PW4pZm9yKGNvbnN0IGUgaW4gdClpZih0W2VdPT09bilyZXR1cm4gZTtpbmZvKCJVbmFibGUgdG8gcmVjb3ZlciBhIHN0YW5kYXJkIGdseXBoIG5hbWUgZm9yOiAiK2UpO3JldHVybiBlfWZ1bmN0aW9uIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLHQsbil7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCByLHMsaTtjb25zdCBvPSEhKGUuZmxhZ3MmRmEpO2lmKGUuaXNJbnRlcm5hbEZvbnQpe2k9dDtmb3Iocz0wO3M8aS5sZW5ndGg7cysrKXtyPW4uaW5kZXhPZihpW3NdKTthW3NdPXI+PTA/cjowfX1lbHNlIGlmKGUuYmFzZUVuY29kaW5nTmFtZSl7aT1nZXRFbmNvZGluZyhlLmJhc2VFbmNvZGluZ05hbWUpO2ZvcihzPTA7czxpLmxlbmd0aDtzKyspe3I9bi5pbmRleE9mKGlbc10pO2Fbc109cj49MD9yOjB9fWVsc2UgaWYobylmb3IocyBpbiB0KWFbc109dFtzXTtlbHNle2k9YmE7Zm9yKHM9MDtzPGkubGVuZ3RoO3MrKyl7cj1uLmluZGV4T2YoaVtzXSk7YVtzXT1yPj0wP3I6MH19Y29uc3QgbD1lLmRpZmZlcmVuY2VzO2xldCBmO2lmKGwpZm9yKHMgaW4gbCl7Y29uc3QgZT1sW3NdO3I9bi5pbmRleE9mKGUpO2lmKC0xPT09cil7Zj8/PXlhKCk7Y29uc3QgdD1yZWNvdmVyR2x5cGhOYW1lKGUsZik7dCE9PWUmJihyPW4uaW5kZXhPZih0KSl9YVtzXT1yPj0wP3I6MH1yZXR1cm4gYX1mdW5jdGlvbiBub3JtYWxpemVGb250TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKS5yZXBsYWNlQWxsKC9ccy9nLCIiKX1jb25zdCBSYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZT0+e2VbODIxMV09NjUwNzQ7ZVs4MjEyXT02NTA3MztlWzgyMjldPTY1MDcyO2VbODIzMF09NjUwNDk7ZVsxMjI4OV09NjUwNDE7ZVsxMjI5MF09NjUwNDI7ZVsxMjI5Nl09NjUwODc7ZVsxMjI5N109NjUwODg7ZVsxMjI5OF09NjUwODU7ZVsxMjI5OV09NjUwODY7ZVsxMjMwMF09NjUwODk7ZVsxMjMwMV09NjUwOTA7ZVsxMjMwMl09NjUwOTE7ZVsxMjMwM109NjUwOTI7ZVsxMjMwNF09NjUwODM7ZVsxMjMwNV09NjUwODQ7ZVsxMjMwOF09NjUwODE7ZVsxMjMwOV09NjUwODI7ZVsxMjMxMF09NjUwNDc7ZVsxMjMxMV09NjUwNDg7ZVs2NTEwM109NjUwNzY7ZVs2NTI4MV09NjUwNDU7ZVs2NTI4OF09NjUwNzc7ZVs2NTI4OV09NjUwNzg7ZVs2NTI5Ml09NjUwNDA7ZVs2NTMwNl09NjUwNDM7ZVs2NTMwN109NjUwNDQ7ZVs2NTMxMV09NjUwNDY7ZVs2NTMzOV09NjUwOTU7ZVs2NTM0MV09NjUwOTY7ZVs2NTM0M109NjUwNzU7ZVs2NTM3MV09NjUwNzk7ZVs2NTM3M109NjUwODB9KTtfX3dlYnBhY2tfcmVxdWlyZV9fKDE4MDYpO2NvbnN0IEJhPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sRGE9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sSGE9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl07Y2xhc3MgRGF0YUJ1aWxkZXJ7I25lOyNhZT0xMDI0OyNyZT0hMTsjc2U9MDsjaWU7Y29uc3RydWN0b3Ioe2V4YWN0TGVuZ3RoOmU9MCxtaW5MZW5ndGg6dD0wfSl7dGhpcy4jcmU9ISFlO3RoaXMuI29lKGV8fHQpfSNvZShlKXtpZih0aGlzLiNyZSl0aGlzLiNhZT1lO2Vsc2UgZm9yKDt0aGlzLiNhZTxlOyl0aGlzLiNhZSo9Mjtjb25zdCB0PW5ldyBVaW50OEFycmF5KHRoaXMuI2FlKTt0aGlzLiNuZSYmdC5zZXQodGhpcy4jbmUsMCk7dGhpcy4jbmU9dDt0aGlzLiNpZT1uZXcgRGF0YVZpZXcodC5idWZmZXIpfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuI25lLnN1YmFycmF5KDAsdGhpcy4jc2UpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy4jc2V9c2tpcChlKXt0aGlzLiNzZSs9ZX1zZXRBcnJheShlKXtjb25zdCB0PXRoaXMuI3NlK2UubGVuZ3RoOyF0aGlzLiNyZSYmdD50aGlzLiNhZSYmdGhpcy4jb2UodCk7dGhpcy4jbmUuc2V0KGUsdGhpcy4jc2UpO3RoaXMuI3NlPXR9c2V0SW50MTYoZSl7Y29uc3QgdD10aGlzLiNzZSsyOyF0aGlzLiNyZSYmdD50aGlzLiNhZSYmdGhpcy4jb2UodCk7dGhpcy4jaWUuc2V0SW50MTYodGhpcy4jc2UsZSk7dGhpcy4jc2U9dH1zZXRTYWZlSW50MTYoZSl7Y29uc3QgdD10aGlzLiNzZSsyOyF0aGlzLiNyZSYmdD50aGlzLiNhZSYmdGhpcy4jb2UodCk7dGhpcy4jaWUuc2V0SW50MTYodGhpcy4jc2UsTWF0aENsYW1wKGUsLTMyNzY4LDMyNzY3KSk7dGhpcy4jc2U9dH1zZXRJbnQzMihlKXtjb25zdCB0PXRoaXMuI3NlKzQ7IXRoaXMuI3JlJiZ0PnRoaXMuI2FlJiZ0aGlzLiNvZSh0KTt0aGlzLiNpZS5zZXRJbnQzMih0aGlzLiNzZSxlKTt0aGlzLiNzZT10fX1mdW5jdGlvbiBsb29rc0xpa2VVbnNpZ25lZDE2Qml0TmVnYXRpdmUoZSl7cmV0dXJuIGU+MzI3NjcmJmU8PTY1NTM1fWZ1bmN0aW9uIHJlY292ZXJTaWduZWQxNkJpdEJCb3goZSx0PSExKXtyZXR1cm4gVXRpbC5ub3JtYWxpemVSZWN0KGUubWFwKChlLG4pPT4oIXR8fG48MikmJmxvb2tzTGlrZVVuc2lnbmVkMTZCaXROZWdhdGl2ZShlKT9lLTY1NTM2OmUpKX1jb25zdCBNYT1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiLCIwMDEuMDAwIiwiMDAxLjAwMSIsIjAwMS4wMDIiLCIwMDEuMDAzIiwiQmxhY2siLCJCb2xkIiwiQm9vayIsIkxpZ2h0IiwiTWVkaXVtIiwiUmVndWxhciIsIlJvbWFuIiwiU2VtaWJvbGQiXSxOYT0zOTEsUGE9LjAzOTYyNSxfYT1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxfSx7aWQ6InJldHVybiIsbWluOjB9LG51bGwsbnVsbCx7aWQ6ImVuZGNoYXIiLG1pbjowLHN0YWNrQ2xlYXJpbmc6ITB9LG51bGwsbnVsbCxudWxsLHtpZDoiaHN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6ImhpbnRtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6ImNudHJtYXNrIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJtb3ZldG8iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoiaG1vdmV0byIsbWluOjEsc3RhY2tDbGVhcmluZzohMH0se2lkOiJ2c3RlbWhtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LHtpZDoicmN1cnZlbGluZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJybGluZWN1cnZlIixtaW46OCxyZXNldFN0YWNrOiEwfSx7aWQ6InZ2Y3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJoaGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LG51bGwse2lkOiJjYWxsZ3N1YnIiLG1pbjoxfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxFYT1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTtjbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIW59cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkYodGhpcy5ieXRlcy5sZW5ndGgpO3RoaXMuY2ZmPXQ7Y29uc3Qgbj10aGlzLnBhcnNlSGVhZGVyKCksYT10aGlzLnBhcnNlSW5kZXgobi5lbmRQb3MpLHI9dGhpcy5wYXJzZUluZGV4KGEuZW5kUG9zKSxzPXRoaXMucGFyc2VJbmRleChyLmVuZFBvcyksaT10aGlzLnBhcnNlSW5kZXgocy5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3Qoci5vYmouZ2V0KDApKSxsPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1uLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoYS5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgocy5vYmopO3QudG9wRGljdD1sO3QuZ2xvYmFsU3VickluZGV4PWkub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWwuaGFzTmFtZSgiUk9TIik7Y29uc3QgZj1sLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxjPXRoaXMucGFyc2VJbmRleChmKS5vYmo7dC5jaGFyU3RyaW5nQ291bnQ9Yy5jb3VudDtjb25zdCBoPWwuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7aCYmKGUuZm9udE1hdHJpeD1oKTtsZXQgdT1sLmdldEJ5TmFtZSgiRm9udEJCb3giKTtjb25zdCBtPWUuYmJveD8uc29tZShlPT4wIT09ZSk/cmVjb3ZlclNpZ25lZDE2Qml0QkJveChlLmJib3gpOm51bGwscD11Py5zbGljZSgwLDIpLnNvbWUobG9va3NMaWtlVW5zaWduZWQxNkJpdE5lZ2F0aXZlKSxkPXU/LnNvbWUobG9va3NMaWtlVW5zaWduZWQxNkJpdE5lZ2F0aXZlKTtpZih1Py5ldmVyeShlPT4wPT09ZSkmJm0pe3U9bTtsLnNldEJ5TmFtZSgiRm9udEJCb3giLHUpfWVsc2UgaWYoZCl7Y29uc3QgdD1yZWNvdmVyU2lnbmVkMTZCaXRCQm94KHUpLG49bSYmZS5iYm94LnNvbWUoZT0+ZTwwKSYmIWUuYmJveC5zb21lKGxvb2tzTGlrZVVuc2lnbmVkMTZCaXROZWdhdGl2ZSkmJmlzQXJyYXlFcXVhbCh0LG0pO2lmKG58fHApe3U9bj90OnJlY292ZXJTaWduZWQxNkJpdEJCb3godSwhMCk7bC5zZXRCeU5hbWUoIkZvbnRCQm94Iix1KX19aWYodT8uc29tZShlPT4wIT09ZSkpe2UuYXNjZW50PU1hdGgubWF4KHVbM10sdVsxXSk7ZS5kZXNjZW50PU1hdGgubWluKHVbMV0sdVszXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IGcsYjtpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgobC5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgbj0wLGE9ZS5jb3VudDtuPGE7KytuKXtjb25zdCBhPWUuZ2V0KG4pLHI9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QoYSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3Qocik7dC5mZEFycmF5LnB1c2gocil9Yj1udWxsO2c9dGhpcy5wYXJzZUNoYXJzZXRzKGwuZ2V0QnlOYW1lKCJjaGFyc2V0IiksYy5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGwuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGMuY291bnQpfWVsc2V7Zz10aGlzLnBhcnNlQ2hhcnNldHMobC5nZXRCeU5hbWUoImNoYXJzZXQiKSxjLmNvdW50LHQuc3RyaW5ncywhMSk7Yj10aGlzLnBhcnNlRW5jb2RpbmcobC5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsZy5jaGFyc2V0KX10LmNoYXJzZXQ9Zzt0LmVuY29kaW5nPWI7Y29uc3Qgdz10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmMsbG9jYWxTdWJySW5kZXg6bC5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDppLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmwucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXcuY2hhclN0cmluZ3M7dC5zZWFjcz13LnNlYWNzO3Qud2lkdGhzPXcud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHQmJjEhPT1lW25dOykrK247aWYobj49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1uKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KG4pO3RoaXMuYnl0ZXM9ZX1jb25zdCBhPWVbMF0scj1lWzFdLHM9ZVsyXSxpPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKGEscixzLGkpLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7Y29uc3QgdD1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZXNMZW5ndGgpO2xldCBuPTA7ZnVuY3Rpb24gcGFyc2VPcGVyYW5kKCl7bGV0IGE9ZVtuKytdO2lmKDMwPT09YSlyZXR1cm4gZnVuY3Rpb24gcGFyc2VGbG9hdE9wZXJhbmQoKXtsZXQgdD0iIjtjb25zdCBhPTE1LHI9WyIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiLiIsIkUiLCJFLSIsbnVsbCwiLSJdLHM9ZS5sZW5ndGg7Zm9yKDtuPHM7KXtjb25zdCBzPWVbbisrXSxpPXM+PjQsbz0xNSZzO2lmKGk9PT1hKWJyZWFrO3QrPXJbaV07aWYobz09PWEpYnJlYWs7dCs9cltvXX1yZXR1cm4gcGFyc2VGbG9hdCh0KX0oKTtpZigyOD09PWEpe2E9dC5nZXRJbnQxNihuKTtuKz0yO3JldHVybiBhfWlmKDI5PT09YSl7YT10LmdldEludDMyKG4pO24rPTQ7cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbbisrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbbisrXS0xMDg7d2FybihgQ0ZGUGFyc2VyLnBhcnNlRGljdDogIiR7YX0iIGlzIGEgcmVzZXJ2ZWQgY29tbWFuZC5gKTtyZXR1cm4gTmFOfWxldCBhPVtdO2NvbnN0IHI9W107bj0wO2NvbnN0IHM9ZS5sZW5ndGg7Zm9yKDtuPHM7KXtsZXQgdD1lW25dO2lmKHQ8PTIxKXsxMj09PXQmJih0PXQ8PDh8ZVsrK25dKTtyLnB1c2goW3QsYV0pO2E9W107KytufWVsc2UgYS5wdXNoKHBhcnNlT3BlcmFuZCgpKX1yZXR1cm4gcn1wYXJzZUluZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4LG49dGhpcy5ieXRlcyxhPW5bZSsrXTw8OHxuW2UrK10scj1bXTtsZXQgcyxpLG89ZTtpZigwIT09YSl7Y29uc3QgdD1uW2UrK10sbD1lKyhhKzEpKnQtMTtmb3Iocz0wLGk9YSsxO3M8aTsrK3Mpe2xldCBhPTA7Zm9yKGxldCByPTA7cjx0Oysrcil7YTw8PTg7YSs9bltlKytdfXIucHVzaChsK2EpfW89clthXX1mb3Iocz0wLGk9ci5sZW5ndGgtMTtzPGk7KytzKXtjb25zdCBlPXJbc10sYT1yW3MrMV07dC5hZGQobi5zdWJhcnJheShlLGEpKX1yZXR1cm57b2JqOnQsZW5kUG9zOm99fXBhcnNlTmFtZUluZGV4KGUpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsYT1lLmNvdW50O248YTsrK24pe2NvbnN0IGE9ZS5nZXQobik7dC5wdXNoKGJ5dGVzVG9TdHJpbmcoYSkpfXJldHVybiB0fXBhcnNlU3RyaW5nSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGU3RyaW5ncztmb3IobGV0IG49MCxhPWUuY291bnQ7bjxhOysrbil7Y29uc3QgYT1lLmdldChuKTt0LmFkZChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1jcmVhdGVEaWN0KGUsdCxuKXtjb25zdCBhPW5ldyBlKG4pO2Zvcihjb25zdFtlLG5db2YgdClhLnNldEJ5S2V5KGUsbik7cmV0dXJuIGF9cGFyc2VDaGFyU3RyaW5nKGUsdCxuLGEpe2lmKCF0fHxlLmNhbGxEZXB0aD4xMClyZXR1cm4hMTtjb25zdCByPW5ldyBEYXRhVmlldyh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlc0xlbmd0aCk7bGV0IHM9ZS5zdGFja1NpemU7Y29uc3QgaT1lLnN0YWNrO2xldCBvPXQubGVuZ3RoO2ZvcihsZXQgbD0wO2w8bzspe2NvbnN0IGY9dFtsKytdO2xldCBjPW51bGw7aWYoMTI9PT1mKXtjb25zdCBlPXRbbCsrXTtpZigwPT09ZSl7dFtsLTJdPTEzOTt0W2wtMV09MjI7cz0wfWVsc2UgYz1FYVtlXX1lbHNlIGlmKDI4PT09Zil7aVtzXT1yLmdldEludDE2KGwpO2wrPTI7cysrfWVsc2UgaWYoMTQ9PT1mKXtpZihzPj00KXtzLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPWkuc2xpY2UocyxzKzQpO3JldHVybiExfX1jPV9hW2ZdfWVsc2UgaWYoZj49MzImJmY8PTI0Nil7aVtzXT1mLTEzOTtzKyt9ZWxzZSBpZihmPj0yNDcmJmY8PTI1NCl7aVtzXT1mPDI1MT8oZi0yNDc8PDgpK3RbbF0rMTA4Oi0oZi0yNTE8PDgpLXRbbF0tMTA4O2wrKztzKyt9ZWxzZSBpZigyNTU9PT1mKXtpW3NdPXIuZ2V0SW50MzIobCkvNjU1MzY7bCs9NDtzKyt9ZWxzZSBpZigxOT09PWZ8fDIwPT09Zil7ZS5oaW50cys9cz4+MTtpZigwPT09ZS5oaW50cyl7dC5jb3B5V2l0aGluKGwtMSxsLC0xKTtsLT0xO28tPTE7Y29udGludWV9bCs9ZS5oaW50cys3Pj4zO3MlPTI7Yz1fYVtmXX1lbHNle2lmKDEwPT09Znx8Mjk9PT1mKXtjb25zdCB0PTEwPT09Zj9uOmE7aWYoIXQpe2M9X2FbZl07d2FybigiTWlzc2luZyBzdWJyc0luZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWxldCByPTMyNzY4O3QuY291bnQ8MTI0MD9yPTEwNzp0LmNvdW50PDMzOTAwJiYocj0xMTMxKTtjb25zdCBvPWlbLS1zXStyO2lmKG88MHx8bz49dC5jb3VudHx8aXNOYU4obykpe2M9X2FbZl07d2FybigiT3V0IG9mIGJvdW5kcyBzdWJySW5kZXggZm9yICIrYy5pZCk7cmV0dXJuITF9ZS5zdGFja1NpemU9cztlLmNhbGxEZXB0aCsrO2lmKCF0aGlzLnBhcnNlQ2hhclN0cmluZyhlLHQuZ2V0KG8pLG4sYSkpcmV0dXJuITE7ZS5jYWxsRGVwdGgtLTtzPWUuc3RhY2tTaXplO2NvbnRpbnVlfWlmKDExPT09Zil7ZS5zdGFja1NpemU9cztyZXR1cm4hMH1pZigwPT09ZiYmbD09PXQubGVuZ3RoKXt0W2wtMV09MTQ7Yz1fYVsxNF19ZWxzZXtpZig5PT09Zil7dC5jb3B5V2l0aGluKGwtMSxsLC0xKTtsLT0xO28tPTE7Y29udGludWV9Yz1fYVtmXX19aWYoYyl7aWYoYy5zdGVtKXtlLmhpbnRzKz1zPj4xO2lmKDM9PT1mfHwyMz09PWYpZS5oYXNWU3RlbXM9ITA7ZWxzZSBpZihlLmhhc1ZTdGVtcyYmKDE9PT1mfHwxOD09PWYpKXt3YXJuKCJDRkYgc3RlbSBoaW50cyBhcmUgaW4gd3Jvbmcgb3JkZXIiKTt0W2wtMV09MT09PWY/MzoyM319aWYoczxjLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2MuaWQrIjsgYWN0dWFsOiAiK3MrIiwgZXhwZWN0ZWQ6ICIrYy5taW4pO2lmKDA9PT1zKXt0W2wtMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmMuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7cy09Yy5taW47cz49MiYmYy5zdGVtP3MlPTI6cz4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7cz4wJiYoZS53aWR0aD1pW3MtMV0pfWlmKCJzdGFja0RlbHRhImluIGMpeyJzdGFja0ZuImluIGMmJmMuc3RhY2tGbihpLHMpO3MrPWMuc3RhY2tEZWx0YX1lbHNlKGMuc3RhY2tDbGVhcmluZ3x8Yy5yZXNldFN0YWNrKSYmKHM9MCl9fW88dC5sZW5ndGgmJnQuZmlsbCgxNCxvKTtlLnN0YWNrU2l6ZT1zO3JldHVybiEwfXBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmUsbG9jYWxTdWJySW5kZXg6dCxnbG9iYWxTdWJySW5kZXg6bixmZFNlbGVjdDphLGZkQXJyYXk6cixwcml2YXRlRGljdDpzfSl7Y29uc3QgaT1bXSxvPVtdLGw9ZS5jb3VudDtmb3IobGV0IGY9MDtmPGw7ZisrKXtjb25zdCBsPWUuZ2V0KGYpLGM9e2NhbGxEZXB0aDowLHN0YWNrU2l6ZTowLHN0YWNrOltdLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGg9ITAsdT1udWxsLG09cztpZihhJiZyLmxlbmd0aCl7Y29uc3QgZT1hLmdldEZESW5kZXgoZik7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2g9ITF9aWYoZT49ci5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2g9ITF9aWYoaCl7bT1yW2VdLnByaXZhdGVEaWN0O3U9bS5zdWJyc0luZGV4fX1lbHNlIHQmJih1PXQpO2gmJj10aGlzLnBhcnNlQ2hhclN0cmluZyhjLGwsdSxuKTtpZihudWxsIT09Yy53aWR0aCl7Y29uc3QgZT1tLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bZl09ZStjLndpZHRofWVsc2V7Y29uc3QgZT1tLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bZl09ZX1udWxsIT09Yy5zZWFjJiYoaVtmXT1jLnNlYWMpO2h8fGUuc2V0KGYsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOmksd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IG49dFswXSxhPXRbMV07aWYoMD09PW58fGE+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWlmKGErbj50aGlzLmJ5dGVzLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNGRiBQcml2YXRlIERJQ1QgZXh0ZW5kcyBwYXN0IGVuZCBvZiBmb250Iik7Y29uc3Qgcj1hK24scz10aGlzLmJ5dGVzLnN1YmFycmF5KGEsciksaT10aGlzLnBhcnNlRGljdChzKSxvPXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxpLGUuc3RyaW5ncyk7ZS5wcml2YXRlRGljdD1vO2NvbnN0IGw9by5nZXRCeU5hbWUoIkJsdWVTY2FsZSIpLGY9by5nZXRCeU5hbWUoIkJsdWVTaGlmdCIpLGM9by5nZXRCeU5hbWUoIkJsdWVGdXp6IiksaD1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIik7aWYoMD09PWwmJjA9PT1mJiYwPT09YyYmMD09PWgpe28uc2V0QnlOYW1lKCJCbHVlU2NhbGUiLFBhKTtvLnNldEJ5TmFtZSgiQmx1ZVNoaWZ0Iiw3KTtvLnNldEJ5TmFtZSgiQmx1ZUZ1enoiLDEpfTA9PT1oJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKGw+MCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZltvLmdldEJ5TmFtZSgiQmx1ZVZhbHVlcyIpLG8uZ2V0QnlOYW1lKCJPdGhlckJsdWVzIildKWlmKHQpZm9yKGxldCBuPTE7bjx0Lmxlbmd0aDtuKz0yKXRbbl0+ZSYmKGU9dFtuXSk7aWYoZT4wKXtjb25zdCB0PTFlNSxuPS41L2UsYT1NYXRoQ2xhbXAobCxuPD1QYT9NYXRoLmNlaWwobip0KS90Oi0xLzAsTWF0aC5mbG9vcih0L2UpL3QpO2EhPT1sJiZvLnNldEJ5TmFtZSgiQmx1ZVNjYWxlIixhKX19aWYoIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCB1PW8uZ2V0QnlOYW1lKCJTdWJycyIpLG09YSt1O2lmKDA9PT11fHxtPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBwPXRoaXMucGFyc2VJbmRleChtKTtvLnN1YnJzSW5kZXg9cC5vYmp9cGFyc2VDaGFyc2V0cyhlLHQsbixhKXtpZigwPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsVWEuSVNPX0FET0JFLEJhKTtpZigxPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsVWEuRVhQRVJULERhKTtpZigyPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsVWEuRVhQRVJUX1NVQlNFVCxIYSk7Y29uc3R7Ynl0ZXM6cn09dGhpcyxzPXJbZSsrXSxpPVthPzA6Ii5ub3RkZWYiXTtsZXQgbyxsLGY7dC09MTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihmPTA7Zjx0O2YrKyl7bz1yW2UrK108PDh8cltlKytdO2kucHVzaChhP286bi5nZXQobykpfWJyZWFrO2Nhc2UgMTpmb3IoO2kubGVuZ3RoPD10Oyl7bz1yW2UrK108PDh8cltlKytdO2w9cltlKytdO2ZvcihmPTA7Zjw9bDtmKyspaS5wdXNoKGE/bysrOm4uZ2V0KG8rKykpfWJyZWFrO2Nhc2UgMjpmb3IoO2kubGVuZ3RoPD10Oyl7bz1yW2UrK108PDh8cltlKytdO2w9cltlKytdPDw4fHJbZSsrXTtmb3IoZj0wO2Y8PWw7ZisrKWkucHVzaChhP28rKzpuLmdldChvKyspKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfXJldHVybiBuZXcgQ0ZGQ2hhcnNldCghMSxzLGkpfXBhcnNlRW5jb2RpbmcoZSx0LG4sYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLHM9dGhpcy5ieXRlcztsZXQgaSxvLGwsZj0hMSxjPW51bGw7aWYoMD09PWV8fDE9PT1lKXtmPSEwO2k9ZTtjb25zdCB0PWU/cGE6YmE7Zm9yKG89MCxsPWEubGVuZ3RoO288bDtvKyspe2NvbnN0IGU9dC5pbmRleE9mKGFbb10pOy0xIT09ZSYmKHJbZV09byl9fWVsc2V7Y29uc3QgdD1lO2k9c1tlKytdO3N3aXRjaCgxMjcmaSl7Y2FzZSAwOmNvbnN0IHQ9c1tlKytdO2ZvcihvPTE7bzw9dDtvKyspcltzW2UrK11dPW87YnJlYWs7Y2FzZSAxOmNvbnN0IG49c1tlKytdO2xldCBhPTE7Zm9yKG89MDtvPG47bysrKXtjb25zdCB0PXNbZSsrXSxuPXNbZSsrXTtmb3IobGV0IGU9dDtlPD10K247ZSsrKXJbZV09YSsrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGVuY29kaW5nIGZvcm1hdDogJHtpfSBpbiBDRkZgKX1jb25zdCBsPWU7aWYoMTI4Jmkpe3NbdF0mPTEyNzshZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKXtjb25zdCB0PXNbZSsrXTtmb3Iobz0wO288dDtvKyspe2NvbnN0IHQ9c1tlKytdLGk9KHNbZSsrXTw8OCkrKDI1NSZzW2UrK10pO3JbdF09YS5pbmRleE9mKG4uZ2V0KGkpKX19KCl9Yz1zLnN1YmFycmF5KHQsbCl9aSY9MTI3O3JldHVybiBuZXcgQ0ZGRW5jb2RpbmcoZixpLHIsYyl9cGFyc2VGRFNlbGVjdChlLHQpe2NvbnN0IG49dGhpcy5ieXRlcyxhPW5bZSsrXSxyPVtdO2xldCBzO3N3aXRjaChhKXtjYXNlIDA6Zm9yKHM9MDtzPHQ7KytzKXtjb25zdCB0PW5bZSsrXTtyLnB1c2godCl9YnJlYWs7Y2FzZSAzOmNvbnN0IGk9bltlKytdPDw4fG5bZSsrXTtmb3Iocz0wO3M8aTsrK3Mpe2xldCB0PW5bZSsrXTw8OHxuW2UrK107aWYoMD09PXMmJjAhPT10KXt3YXJuKCJwYXJzZUZEU2VsZWN0OiBUaGUgZmlyc3QgcmFuZ2UgbXVzdCBoYXZlIGEgZmlyc3QgR0lEIG9mIDAgLS0gdHJ5aW5nIHRvIHJlY292ZXIuIik7dD0wfWNvbnN0IGE9bltlKytdLGk9bltlXTw8OHxuW2UrMV07Zm9yKGxldCBlPXQ7ZTxpOysrZSlyLnB1c2goYSl9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgcGFyc2VGRFNlbGVjdDogVW5rbm93biBmb3JtYXQgIiR7YX0iLmApfWlmKHIubGVuZ3RoIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QoYSxyKX19Y2xhc3MgQ0ZGe2hlYWRlcj1udWxsO25hbWVzPVtdO3RvcERpY3Q9bnVsbDtzdHJpbmdzPW5ldyBDRkZTdHJpbmdzO2dsb2JhbFN1YnJJbmRleD1udWxsO2VuY29kaW5nPW51bGw7Y2hhcnNldD1udWxsO2NoYXJTdHJpbmdzPW51bGw7ZmRBcnJheT1bXTtmZFNlbGVjdD1udWxsO2lzQ0lERm9udD0hMTtjaGFyU3RyaW5nQ291bnQ9MDtjb25zdHJ1Y3RvcihlPTApe3RoaXMucmF3RmlsZUxlbmd0aD1lfWR1cGxpY2F0ZUZpcnN0R2x5cGgoKXtpZih0aGlzLmNoYXJTdHJpbmdzLmNvdW50Pj02NTUzNSl7d2FybigiTm90IGVub3VnaCBzcGFjZSBpbiBjaGFyc3RyaW5ncyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIik7cmV0dXJufWNvbnN0IGU9dGhpcy5jaGFyU3RyaW5ncy5nZXQoMCk7dGhpcy5jaGFyU3RyaW5ncy5hZGQoZSk7dGhpcy5pc0NJREZvbnQmJnRoaXMuZmRTZWxlY3QuZmRTZWxlY3QucHVzaCh0aGlzLmZkU2VsZWN0LmZkU2VsZWN0WzBdKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5jaGFyU3RyaW5ncy5jb3VudClyZXR1cm4hMTtyZXR1cm4gdGhpcy5jaGFyU3RyaW5ncy5nZXQoZSkubGVuZ3RoPjB9fWNsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsbixhKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1uO3RoaXMub2ZmU2l6ZT1hfX1jbGFzcyBDRkZTdHJpbmdze3N0cmluZ3M9W107Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/TWFbZV06ZS1OYTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1OYV06TWFbMF19Z2V0U0lEKGUpe2xldCB0PU1hLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrTmE6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtvYmplY3RzPVtdO2xlbmd0aD0wO2FkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgbiBvZiB0KWlmKGlzTmFOKG4pKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBuPXRoaXMudHlwZXNbZV07Im51bSIhPT1uJiYic2lkIiE9PW4mJiJvZmZzZXQiIT09bnx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoblswXSk/KG5bMF1bMF08PDgpK25bMF1bMV06blswXTt0LmtleVRvTmFtZU1hcFtlXT1uWzFdO3QubmFtZVRvS2V5TWFwW25bMV1dPWU7dC50eXBlc1tlXT1uWzJdO3QuZGVmYXVsdHNbZV09blszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShuWzBdKT9uWzBdOltuWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IHphPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoemEpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IExhPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIixQYV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybiBzaGFkb3codGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhMYSkpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlByaXZhdGVEaWN0LnRhYmxlcyxlKTt0aGlzLnN1YnJzSW5kZXg9bnVsbH19Y29uc3QgVWE9e0lTT19BRE9CRTowLEVYUEVSVDoxLEVYUEVSVF9TVUJTRVQ6Mn07Y2xhc3MgQ0ZGQ2hhcnNldHtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmNoYXJzZXQ9bn19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LG4sYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPW47dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7b2Zmc2V0cz1PYmplY3QuY3JlYXRlKG51bGwpO2lzVHJhY2tpbmcoZSl7cmV0dXJuIGUgaW4gdGhpcy5vZmZzZXRzfXRyYWNrKGUsdCl7aWYoZSBpbiB0aGlzLm9mZnNldHMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBBbHJlYWR5IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTt0aGlzLm9mZnNldHNbZV09dH1vZmZzZXQoZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5vZmZzZXRzKXRoaXMub2Zmc2V0c1t0XSs9ZX1zZXRFbnRyeUxvY2F0aW9uKGUsdCxuKXtpZighKGUgaW4gdGhpcy5vZmZzZXRzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYE5vdCB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7Y29uc3QgYT1uLmRhdGEscj10aGlzLm9mZnNldHNbZV07Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47KytlKXtjb25zdCBuPTUqZStyLHM9bisxLGk9bisyLG89biszLGw9bis0O2lmKDI5IT09YVtuXXx8MCE9PWFbc118fDAhPT1hW2ldfHwwIT09YVtvXXx8MCE9PWFbbF0pdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ3cml0aW5nIHRvIGFuIG9mZnNldCB0aGF0IGlzIG5vdCBlbXB0eSIpO2NvbnN0IGY9dFtlXTthW25dPTI5O2Fbc109Zj4+MjQmMjU1O2FbaV09Zj4+MTYmMjU1O2Fbb109Zj4+OCYyNTU7YVtsXT0yNTUmZn19fWNsYXNzIENGRkNvbXBpbGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuY2ZmPWV9Y29tcGlsZSgpe2NvbnN0IGU9dGhpcy5jZmYsdD1uZXcgRGF0YUJ1aWxkZXIoe21pbkxlbmd0aDplLnJhd0ZpbGVMZW5ndGh9KSxuPXRoaXMuY29tcGlsZUhlYWRlcihlLmhlYWRlcik7dC5zZXRBcnJheShuKTtjb25zdCBhPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LnNldEFycmF5KGEpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IG4gb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO24uaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLG4uZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTtuLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHI9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3I/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBzPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LnNldEFycmF5KHMub3V0cHV0KTtjb25zdCBpPXMudHJhY2tlcnNbMF0sbz10aGlzLmNvbXBpbGVTdHJpbmdJbmRleChlLnN0cmluZ3Muc3RyaW5ncyk7dC5zZXRBcnJheShvKTtjb25zdCBsPXRoaXMuY29tcGlsZUluZGV4KGUuZ2xvYmFsU3VickluZGV4KTt0LnNldEFycmF5KGwpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZClpLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3Qgbj10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtpLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3Quc2V0QXJyYXkobil9Y29uc3QgZj10aGlzLmNvbXBpbGVDaGFyc2V0KGUuY2hhcnNldCxlLmNoYXJTdHJpbmdzLmNvdW50LGUuc3RyaW5ncyxlLmlzQ0lERm9udCk7aS5zZXRFbnRyeUxvY2F0aW9uKCJjaGFyc2V0IixbdC5sZW5ndGhdLHQpO3Quc2V0QXJyYXkoZik7Y29uc3QgYz10aGlzLmNvbXBpbGVDaGFyU3RyaW5ncyhlLmNoYXJTdHJpbmdzKTtpLnNldEVudHJ5TG9jYXRpb24oIkNoYXJTdHJpbmdzIixbdC5sZW5ndGhdLHQpO3Quc2V0QXJyYXkoYyk7aWYoZS5pc0NJREZvbnQpe2kuc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3Qgbj10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LnNldEFycmF5KG4pO3M9dGhpcy5jb21waWxlVG9wRGljdHMoZS5mZEFycmF5LHQubGVuZ3RoLCEwKTtpLnNldEVudHJ5TG9jYXRpb24oIkZEQXJyYXkiLFt0Lmxlbmd0aF0sdCk7dC5zZXRBcnJheShzLm91dHB1dCk7Y29uc3QgYT1zLnRyYWNrZXJzO3RoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhlLmZkQXJyYXksYSx0KX10aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2UudG9wRGljdF0sW2ldLHQpO3Quc2V0QXJyYXkoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBuPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYobil7Y29uc3QgYT1wYXJzZUZsb2F0KCIxZSIrKChuWzJdPytuWzJdOjApK25bMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKmEpL2EpLnRvU3RyaW5nKCl9bGV0IGEscixzPSIiO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7KythKXtjb25zdCBlPXRbYV07cys9ImUiPT09ZT8iLSI9PT10WysrYV0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfXMrPTEmcy5sZW5ndGg/ImYiOiJmZiI7Y29uc3QgaT1bMzBdO2ZvcihhPTAscj1zLmxlbmd0aDthPHI7YSs9MilpLnB1c2gocGFyc2VJbnQocy5zdWJzdHJpbmcoYSxhKzIpLDE2KSk7cmV0dXJuIGl9ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPU1hdGgubWluKG4ubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPW5bdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7YVt0XT1lfWE9YS5qb2luKCIiKTsiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsbil7Y29uc3QgYT1bXTtsZXQgcj1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IHMgb2YgZSl7aWYobil7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO3MucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO3MucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO3MucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixpPXRoaXMuY29tcGlsZURpY3QocyxlKTthLnB1c2goZSk7ci5hZGQoaSk7ZS5vZmZzZXQodCl9cj10aGlzLmNvbXBpbGVJbmRleChyLGEpO3JldHVybnt0cmFja2VyczphLG91dHB1dDpyfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxuKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IHI9ZVthXSxzPXIucHJpdmF0ZURpY3Q7aWYoIXN8fCFyLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3QgaT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QocyxpKTtsZXQgbD1uLmxlbmd0aDtpLm9mZnNldChsKTtvLmxlbmd0aHx8KGw9MCk7dFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsbF0sbik7bi5zZXRBcnJheShvKTtpZihzLnN1YnJzSW5kZXgmJnMuaGFzTmFtZSgiU3VicnMiKSl7Y29uc3QgZT10aGlzLmNvbXBpbGVJbmRleChzLnN1YnJzSW5kZXgpO2kuc2V0RW50cnlMb2NhdGlvbigiU3VicnMiLFtvLmxlbmd0aF0sbik7bi5zZXRBcnJheShlKX19fWNvbXBpbGVEaWN0KGUsdCl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgYSBvZiBlLm9yZGVyKXtpZighKGEgaW4gZS52YWx1ZXMpKWNvbnRpbnVlO2xldCByPWUudmFsdWVzW2FdLHM9ZS50eXBlc1thXTtBcnJheS5pc0FycmF5KHMpfHwocz1bc10pO0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7aWYoMCE9PXIubGVuZ3RoKXtmb3IobGV0IGk9MCxvPXMubGVuZ3RoO2k8bzsrK2kpe2NvbnN0IG89c1tpXSxsPXJbaV07c3dpdGNoKG8pe2Nhc2UibnVtIjpjYXNlInNpZCI6bi5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGwpKTticmVhaztjYXNlIm9mZnNldCI6Y29uc3Qgcz1lLmtleVRvTmFtZU1hcFthXTt0LmlzVHJhY2tpbmcocyl8fHQudHJhY2socyxuLmxlbmd0aCk7bi5wdXNoKDI5LDAsMCwwLDApO2JyZWFrO2Nhc2UiYXJyYXkiOmNhc2UiZGVsdGEiOm4ucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihsKSk7Zm9yKGxldCBlPTEsdD1yLmxlbmd0aDtlPHQ7KytlKW4ucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihyW2VdKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gZGF0YSB0eXBlIG9mICR7b31gKX19bi5wdXNoKC4uLmUub3Bjb2Rlc1thXSl9fXJldHVybiBufWNvbXBpbGVTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgbiBvZiBlKXQuYWRkKHN0cmluZ1RvQnl0ZXMobikpO3JldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBuPTA7bjxlLmNvdW50O24rKyl7Y29uc3QgYT1lLmdldChuKTswIT09YS5sZW5ndGg/dC5hZGQoYSk6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LG4sYSl7bGV0IHI7Y29uc3Qgcz10LTE7aWYoYSl7Y29uc3QgZT1zLTE7cj1uZXcgVWludDhBcnJheShbMiwwLDEsZT4+OCYyNTUsMjU1JmVdKX1lbHNle3I9bmV3IFVpbnQ4QXJyYXkoMSsyKnMpO2xldCB0PTA7Y29uc3QgYT1lLmNoYXJzZXQubGVuZ3RoO2xldCBpPSExO2ZvcihsZXQgcz0xO3M8ci5sZW5ndGg7cys9Mil7bGV0IG89MDtpZih0PGEpe2NvbnN0IGE9ZS5jaGFyc2V0W3QrK107bz1uLmdldFNJRChhKTtpZigtMT09PW8pe289MDtpZighaSl7aT0hMDt3YXJuKGBDb3VsZG4ndCBmaW5kICR7YX0gaW4gQ0ZGIHN0cmluZ3NgKX19fXJbc109bz4+OCYyNTU7cltzKzFdPTI1NSZvfX1yZXR1cm4gcn1jb21waWxlRW5jb2RpbmcoZSl7cmV0dXJuIGUucmF3fWNvbXBpbGVGRFNlbGVjdChlKXtjb25zdCB0PWUuZm9ybWF0O2xldCBuLGE7c3dpdGNoKHQpe2Nhc2UgMDpuPW5ldyBVaW50OEFycmF5KDErZS5mZFNlbGVjdC5sZW5ndGgpO25bMF09dDtuLnNldChlLmZkU2VsZWN0LDEpO2JyZWFrO2Nhc2UgMzpjb25zdCByPTA7bGV0IHM9ZS5mZFNlbGVjdFswXTtjb25zdCBpPVt0LDAsMCxyPj44JjI1NSwyNTUmcixzXTtmb3IoYT0xO2E8ZS5mZFNlbGVjdC5sZW5ndGg7YSsrKXtjb25zdCB0PWUuZmRTZWxlY3RbYV07aWYodCE9PXMpe2kucHVzaChhPj44JjI1NSwyNTUmYSx0KTtzPXR9fWNvbnN0IG89KGkubGVuZ3RoLTMpLzM7aVsxXT1vPj44JjI1NTtpWzJdPTI1NSZvO2kucHVzaChhPj44JjI1NSwyNTUmYSk7bj1uZXcgVWludDhBcnJheShpKX1yZXR1cm4gbn1jb21waWxlSW5kZXgoZSx0PVtdKXtjb25zdCBuPWUub2JqZWN0cyxhPW4ubGVuZ3RoO2lmKDA9PT1hKXJldHVybiBuZXcgVWludDhBcnJheSgyKTtsZXQgcixzLGk9MTtmb3Iocj0wO3I8YTsrK3IpaSs9bltyXS5sZW5ndGg7cz1pPDI1Nj8xOmk8NjU1MzY/MjppPDE2Nzc3MjE2PzM6NDtjb25zdCBvPW5ldyBVaW50OEFycmF5KDIrcyooYSsxKStpKTtsZXQgbD0wO29bbCsrXT1hPj44JjI1NTtvW2wrK109MjU1JmE7b1tsKytdPXM7bGV0IGY9MTtmb3Iocj0wO3I8YSsxO3IrKyl7aWYoMT09PXMpb1tsKytdPTI1NSZmO2Vsc2UgaWYoMj09PXMpe29bbCsrXT1mPj44JjI1NTtvW2wrK109MjU1JmZ9ZWxzZSBpZigzPT09cyl7b1tsKytdPWY+PjE2JjI1NTtvW2wrK109Zj4+OCYyNTU7b1tsKytdPTI1NSZmfWVsc2V7b1tsKytdPWY+Pj4yNCYyNTU7b1tsKytdPWY+PjE2JjI1NTtvW2wrK109Zj4+OCYyNTU7b1tsKytdPTI1NSZmfW5bcl0mJihmKz1uW3JdLmxlbmd0aCl9Zm9yKHI9MDtyPGE7cisrKXt0W3JdPy5vZmZzZXQobCk7by5zZXQobltyXSxsKTtsKz1uW3JdLmxlbmd0aH1yZXR1cm4gb319Y29uc3QgV2E9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIlRpbWVzLVJvbWFuIl09IlRpbWVzLVJvbWFuIjtlLkhlbHZldGljYT0iSGVsdmV0aWNhIjtlLkNvdXJpZXI9IkNvdXJpZXIiO2UuU3ltYm9sPSJTeW1ib2wiO2VbIlRpbWVzLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNvdXJpZXItQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2UuWmFwZkRpbmdiYXRzPSJaYXBmRGluZ2JhdHMiO2VbIlRpbWVzLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIkhlbHZldGljYS1PYmxpcXVlIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iQ291cmllci1PYmxpcXVlIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZS5BcmlhbE5hcnJvdz0iSGVsdmV0aWNhIjtlWyJBcmlhbE5hcnJvdy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxOYXJyb3ctSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsQmxhY2s9IkhlbHZldGljYSI7ZVsiQXJpYWxCbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbEJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2siXT0iSGVsdmV0aWNhIjtlWyJBcmlhbC1CbGFjay1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1CbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxNVD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01UIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1Cb2xkSXRhbGljTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVC1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxVbmljb2RlTVM9IkhlbHZldGljYSI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxVbmljb2RlTVMtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsVW5pY29kZU1TLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXItSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3PSJDb3VyaWVyIjtlWyJDb3VyaWVyTmV3LUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3LUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ldy1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkTVQiXT0iQ291cmllci1Cb2xkIjtlWyJDb3VyaWVyTmV3UFMtSXRhbGljTVQiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXdQU01UPSJDb3VyaWVyIjtlWyJIZWx2ZXRpY2EtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkhlbHZldGljYS1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkhlbHZldGljYUxUU3RkLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIlN5bWJvbC1Cb2xkIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUJvbGRJdGFsaWMiXT0iU3ltYm9sIjtlWyJTeW1ib2wtSXRhbGljIl09IlN5bWJvbCI7ZS5UaW1lc05ld1JvbWFuPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW4tQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRJdGFsaWNNVCJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZE1UIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljTVQiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QU01UPSJUaW1lcy1Sb21hbiI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMifSksWGE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj0iRm94aXRGaXhlZC5wZmIiO2VbIkNvdXJpZXItQm9sZCJdPSJGb3hpdEZpeGVkQm9sZC5wZmIiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iRm94aXRGaXhlZEJvbGRJdGFsaWMucGZiIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iRm94aXRGaXhlZEl0YWxpYy5wZmIiO2UuSGVsdmV0aWNhPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pLEthPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNhbGlicmk9IkhlbHZldGljYSI7ZVsiQ2FsaWJyaS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDYWxpYnJpLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDYWxpYnJpLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5DZW50dXJ5R290aGljPSJIZWx2ZXRpY2EiO2VbIkNlbnR1cnlHb3RoaWMtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ2VudHVyeUdvdGhpYy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQ29taWNTYW5zTVM9IkNvbWljIFNhbnMgTVMiO2VbIkNvbWljU2Fuc01TLUJvbGQiXT0iQ29taWMgU2FucyBNUy1Cb2xkIjtlWyJDb21pY1NhbnNNUy1Cb2xkSXRhbGljIl09IkNvbWljIFNhbnMgTVMtQm9sZEl0YWxpYyI7ZVsiQ29taWNTYW5zTVMtSXRhbGljIl09IkNvbWljIFNhbnMgTVMtSXRhbGljIjtlLkdpbGxTYW5zTVQ9IkhlbHZldGljYSI7ZVsiR2lsbFNhbnNNVC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJHaWxsU2Fuc01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJHaWxsU2Fuc01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5JbXBhY3Q9IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkl0Y1N5bWJvbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLUJvb2siXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9va0l0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSXRjU3ltYm9sLU1lZGl1bSJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1NZWRpdW1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuTHVjaWRhQ29uc29sZT0iQ291cmllciI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiTHVjaWRhQ29uc29sZS1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkx1Y2lkYUNvbnNvbGUtSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiTHVjaWRhU2Fucy1EZW1pIl09IkhlbHZldGljYS1Cb2xkIjtlWyJNUy1Hb3RoaWMiXT0iTVMgR290aGljIjtlWyJNUy1Hb3RoaWMtQm9sZCJdPSJNUyBHb3RoaWMtQm9sZCI7ZVsiTVMtR290aGljLUJvbGRJdGFsaWMiXT0iTVMgR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLUdvdGhpYy1JdGFsaWMiXT0iTVMgR290aGljLUl0YWxpYyI7ZVsiTVMtTWluY2hvIl09Ik1TIE1pbmNobyI7ZVsiTVMtTWluY2hvLUJvbGQiXT0iTVMgTWluY2hvLUJvbGQiO2VbIk1TLU1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1NaW5jaG8tSXRhbGljIl09Ik1TIE1pbmNoby1JdGFsaWMiO2VbIk1TLVBHb3RoaWMiXT0iTVMgUEdvdGhpYyI7ZVsiTVMtUEdvdGhpYy1Cb2xkIl09Ik1TIFBHb3RoaWMtQm9sZCI7ZVsiTVMtUEdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIFBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtUEdvdGhpYy1JdGFsaWMiXT0iTVMgUEdvdGhpYy1JdGFsaWMiO2VbIk1TLVBNaW5jaG8iXT0iTVMgUE1pbmNobyI7ZVsiTVMtUE1pbmNoby1Cb2xkIl09Ik1TIFBNaW5jaG8tQm9sZCI7ZVsiTVMtUE1pbmNoby1Cb2xkSXRhbGljIl09Ik1TIFBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtUE1pbmNoby1JdGFsaWMiXT0iTVMgUE1pbmNoby1JdGFsaWMiO2UuTnVwdGlhbFNjcmlwdD0iVGltZXMtSXRhbGljIjtlLlNlZ29lVUlTeW1ib2w9IkhlbHZldGljYSI7ZS5UcmVidWNoZXRNUz0iSGVsdmV0aWNhIjtlWyJUcmVidWNoZXRNUy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJUcmVidWNoZXRNUy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiVHJlYnVjaGV0TVMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIn0pLEdhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5MaXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pLFZhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pLCRhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWzJdPTEwO2VbM109MzI7ZVs0XT0zMztlWzVdPTM0O2VbNl09MzU7ZVs3XT0zNjtlWzhdPTM3O2VbOV09Mzg7ZVsxMF09Mzk7ZVsxMV09NDA7ZVsxMl09NDE7ZVsxM109NDI7ZVsxNF09NDM7ZVsxNV09NDQ7ZVsxNl09NDU7ZVsxN109NDY7ZVsxOF09NDc7ZVsxOV09NDg7ZVsyMF09NDk7ZVsyMV09NTA7ZVsyMl09NTE7ZVsyM109NTI7ZVsyNF09NTM7ZVsyNV09NTQ7ZVsyNl09NTU7ZVsyN109NTY7ZVsyOF09NTc7ZVsyOV09NTg7ZVszMF09ODk0O2VbMzFdPTYwO2VbMzJdPTYxO2VbMzNdPTYyO2VbMzRdPTYzO2VbMzVdPTY0O2VbMzZdPTY1O2VbMzddPTY2O2VbMzhdPTY3O2VbMzldPTY4O2VbNDBdPTY5O2VbNDFdPTcwO2VbNDJdPTcxO2VbNDNdPTcyO2VbNDRdPTczO2VbNDVdPTc0O2VbNDZdPTc1O2VbNDddPTc2O2VbNDhdPTc3O2VbNDldPTc4O2VbNTBdPTc5O2VbNTFdPTgwO2VbNTJdPTgxO2VbNTNdPTgyO2VbNTRdPTgzO2VbNTVdPTg0O2VbNTZdPTg1O2VbNTddPTg2O2VbNThdPTg3O2VbNTldPTg4O2VbNjBdPTg5O2VbNjFdPTkwO2VbNjJdPTkxO2VbNjNdPTkyO2VbNjRdPTkzO2VbNjVdPTk0O2VbNjZdPTk1O2VbNjddPTk2O2VbNjhdPTk3O2VbNjldPTk4O2VbNzBdPTk5O2VbNzFdPTEwMDtlWzcyXT0xMDE7ZVs3M109MTAyO2VbNzRdPTEwMztlWzc1XT0xMDQ7ZVs3Nl09MTA1O2VbNzddPTEwNjtlWzc4XT0xMDc7ZVs3OV09MTA4O2VbODBdPTEwOTtlWzgxXT0xMTA7ZVs4Ml09MTExO2VbODNdPTExMjtlWzg0XT0xMTM7ZVs4NV09MTE0O2VbODZdPTExNTtlWzg3XT0xMTY7ZVs4OF09MTE3O2VbODldPTExODtlWzkwXT0xMTk7ZVs5MV09MTIwO2VbOTJdPTEyMTtlWzkzXT0xMjI7ZVs5NF09MTIzO2VbOTVdPTEyNDtlWzk2XT0xMjU7ZVs5N109MTI2O2VbOThdPTE5NjtlWzk5XT0xOTc7ZVsxMDBdPTE5OTtlWzEwMV09MjAxO2VbMTAyXT0yMDk7ZVsxMDNdPTIxNDtlWzEwNF09MjIwO2VbMTA1XT0yMjU7ZVsxMDZdPTIyNDtlWzEwN109MjI2O2VbMTA4XT0yMjg7ZVsxMDldPTIyNztlWzExMF09MjI5O2VbMTExXT0yMzE7ZVsxMTJdPTIzMztlWzExM109MjMyO2VbMTE0XT0yMzQ7ZVsxMTVdPTIzNTtlWzExNl09MjM3O2VbMTE3XT0yMzY7ZVsxMThdPTIzODtlWzExOV09MjM5O2VbMTIwXT0yNDE7ZVsxMjFdPTI0MztlWzEyMl09MjQyO2VbMTIzXT0yNDQ7ZVsxMjRdPTI0NjtlWzEyNV09MjQ1O2VbMTI2XT0yNTA7ZVsxMjddPTI0OTtlWzEyOF09MjUxO2VbMTI5XT0yNTI7ZVsxMzBdPTgyMjQ7ZVsxMzFdPTE3NjtlWzEzMl09MTYyO2VbMTMzXT0xNjM7ZVsxMzRdPTE2NztlWzEzNV09ODIyNjtlWzEzNl09MTgyO2VbMTM3XT0yMjM7ZVsxMzhdPTE3NDtlWzEzOV09MTY5O2VbMTQwXT04NDgyO2VbMTQxXT0xODA7ZVsxNDJdPTE2ODtlWzE0M109ODgwMDtlWzE0NF09MTk4O2VbMTQ1XT0yMTY7ZVsxNDZdPTg3MzQ7ZVsxNDddPTE3NztlWzE0OF09ODgwNDtlWzE0OV09ODgwNTtlWzE1MF09MTY1O2VbMTUxXT0xODE7ZVsxNTJdPTg3MDY7ZVsxNTNdPTg3MjE7ZVsxNTRdPTg3MTk7ZVsxNTZdPTg3NDc7ZVsxNTddPTE3MDtlWzE1OF09MTg2O2VbMTU5XT04NDg2O2VbMTYwXT0yMzA7ZVsxNjFdPTI0ODtlWzE2Ml09MTkxO2VbMTYzXT0xNjE7ZVsxNjRdPTE3MjtlWzE2NV09ODczMDtlWzE2Nl09NDAyO2VbMTY3XT04Nzc2O2VbMTY4XT04NzEwO2VbMTY5XT0xNzE7ZVsxNzBdPTE4NztlWzE3MV09ODIzMDtlWzE3OV09ODIyMDtlWzE4MF09ODIyMTtlWzE4MV09ODIxNjtlWzE4Ml09ODIxNztlWzIwMF09MTkzO2VbMjAzXT0yMDU7ZVsyMDddPTIxMTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs1NzBdPTEwNDA7ZVs1NzFdPTEwNDE7ZVs1NzJdPTEwNDI7ZVs1NzNdPTEwNDM7ZVs1NzRdPTEwNDQ7ZVs1NzVdPTEwNDU7ZVs1NzZdPTEwNDY7ZVs1NzddPTEwNDc7ZVs1NzhdPTEwNDg7ZVs1NzldPTEwNDk7ZVs1ODBdPTEwNTA7ZVs1ODFdPTEwNTE7ZVs1ODJdPTEwNTI7ZVs1ODNdPTEwNTM7ZVs1ODRdPTEwNTQ7ZVs1ODVdPTEwNTU7ZVs1ODZdPTEwNTY7ZVs1ODddPTEwNTc7ZVs1ODhdPTEwNTg7ZVs1ODldPTEwNTk7ZVs1OTBdPTEwNjA7ZVs1OTFdPTEwNjE7ZVs1OTJdPTEwNjI7ZVs1OTNdPTEwNjM7ZVs1OTRdPTEwNjQ7ZVs1OTVdPTEwNjU7ZVs1OTZdPTEwNjY7ZVs1OTddPTEwNjc7ZVs1OThdPTEwNjg7ZVs1OTldPTEwNjk7ZVs2MDBdPTEwNzA7ZVs2MDFdPTEwNzE7ZVs2MDJdPTEwNzI7ZVs2MDNdPTEwNzM7ZVs2MDRdPTEwNzQ7ZVs2MDVdPTEwNzU7ZVs2MDZdPTEwNzY7ZVs2MDddPTEwNzc7ZVs2MDhdPTEwNzg7ZVs2MDldPTEwNzk7ZVs2MTBdPTEwODA7ZVs2MTFdPTEwODE7ZVs2MTJdPTEwODI7ZVs2MTNdPTEwODM7ZVs2MTRdPTEwODQ7ZVs2MTVdPTEwODU7ZVs2MTZdPTEwODY7ZVs2MTddPTEwODc7ZVs2MThdPTEwODg7ZVs2MTldPTEwODk7ZVs2MjBdPTEwOTA7ZVs2MjFdPTEwOTE7ZVs2MjJdPTEwOTI7ZVs2MjNdPTEwOTM7ZVs2MjRdPTEwOTQ7ZVs2MjVdPTEwOTU7ZVs2MjZdPTEwOTY7ZVs2MjddPTEwOTc7ZVs2MjhdPTEwOTg7ZVs2MjldPTEwOTk7ZVs2MzBdPTExMDA7ZVs2MzFdPTExMDE7ZVs2MzJdPTExMDI7ZVs2MzNdPTExMDM7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSksWWE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSksSmE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzk0MF09MTYzO2VbMTAwNF09NDg7ZVsxMDA1XT00OTtlWzEwMDZdPTUwO2VbMTAwN109NTE7ZVsxMDA4XT01MjtlWzEwMDldPTUzO2VbMTAxMF09NTQ7ZVsxMDExXT01NTtlWzEwMTJdPTU2O2VbMTAxM109NTc7ZVsxMDgxXT0zNztlWzEwODVdPTQzO2VbMTA4Nl09NDV9KTtmdW5jdGlvbiBnZXRTdGFuZGFyZEZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIFdhKClbdF19ZnVuY3Rpb24gaXNLbm93bkZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuISEoV2EoKVt0XXx8S2EoKVt0XXx8R2EoKVt0XXx8VmEoKVt0XSl9Y29uc3QgUWE9MjU2LFphPTEwO2NsYXNzIEdseWZUYWJsZXtjb25zdHJ1Y3Rvcih7Z2x5ZlRhYmxlOmUsaXNHbHlwaExvY2F0aW9uc0xvbmc6dCxsb2NhVGFibGU6bixudW1HbHlwaHM6YX0pe3RoaXMuZ2x5cGhzPVtdO2NvbnN0IHI9bmV3IERhdGFWaWV3KG4uYnVmZmVyLG4uYnl0ZU9mZnNldCxuLmJ5dGVMZW5ndGgpLHM9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpLGk9dD80OjI7bGV0IG89dD9yLmdldFVpbnQzMigwKToyKnIuZ2V0VWludDE2KDApLGw9MDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtsKz1pO2NvbnN0IGU9dD9yLmdldFVpbnQzMihsKToyKnIuZ2V0VWludDE2KGwpO2lmKGU9PT1vKXt0aGlzLmdseXBocy5wdXNoKG5ldyBHbHlwaCh7fSkpO2NvbnRpbnVlfWNvbnN0IG49R2x5cGgucGFyc2UobyxzKTt0aGlzLmdseXBocy5wdXNoKG4pO289ZX19Z2V0U2l6ZSgpe3JldHVybiBNYXRoLnN1bVByZWNpc2UodGhpcy5nbHlwaHMubWFwKGU9PmUuZ2V0U2l6ZSgpKzMmLTQpKX13cml0ZSgpe2NvbnN0IGU9dGhpcy5nZXRTaXplKCksdD1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKGUpKSxuPWU+MTMxMDcwLGE9bj80OjIscj1uZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKCh0aGlzLmdseXBocy5sZW5ndGgrMSkqYSkpO24/ci5zZXRVaW50MzIoMCwwKTpyLnNldFVpbnQxNigwLDApO2xldCBzPTAsaT0wO2Zvcihjb25zdCBlIG9mIHRoaXMuZ2x5cGhzKXtzKz1lLndyaXRlKHMsdCk7cz1zKzMmLTQ7aSs9YTtuP3Iuc2V0VWludDMyKGkscyk6ci5zZXRVaW50MTYoaSxzPj4xKX1yZXR1cm57aXNMb2NhdGlvbkxvbmc6bixsb2NhOm5ldyBVaW50OEFycmF5KHIuYnVmZmVyKSxnbHlmOm5ldyBVaW50OEFycmF5KHQuYnVmZmVyKX19c2NhbGUoZSl7Zm9yKGxldCB0PTAsbj10aGlzLmdseXBocy5sZW5ndGg7dDxuO3QrKyl0aGlzLmdseXBoc1t0XS5zY2FsZShlW3RdKX19Y2xhc3MgR2x5cGh7Y29uc3RydWN0b3Ioe2hlYWRlcjplPW51bGwsc2ltcGxlOnQ9bnVsbCxjb21wb3NpdGVzOm49bnVsbH0pe3RoaXMuaGVhZGVyPWU7dGhpcy5zaW1wbGU9dDt0aGlzLmNvbXBvc2l0ZXM9bn1zdGF0aWMgcGFyc2UoZSx0KXtjb25zdFtuLGFdPUdseXBoSGVhZGVyLnBhcnNlKGUsdCk7ZSs9bjtpZihhLm51bWJlck9mQ29udG91cnM8MCl7Y29uc3Qgbj1bXTtmb3IoOzspe2NvbnN0W2Escl09Q29tcG9zaXRlR2x5cGgucGFyc2UoZSx0KTtlKz1hO24ucHVzaChyKTtpZighKDMyJnIuZmxhZ3MpKWJyZWFrfXJldHVybiBuZXcgR2x5cGgoe2hlYWRlcjphLGNvbXBvc2l0ZXM6bn0pfWNvbnN0IHI9U2ltcGxlR2x5cGgucGFyc2UoZSx0LGEubnVtYmVyT2ZDb250b3Vycyk7cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOmEsc2ltcGxlOnJ9KX1nZXRTaXplKCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IGU9dGhpcy5zaW1wbGU/dGhpcy5zaW1wbGUuZ2V0U2l6ZSgpOk1hdGguc3VtUHJlY2lzZSh0aGlzLmNvbXBvc2l0ZXMubWFwKGU9PmUuZ2V0U2l6ZSgpKSk7cmV0dXJuIHRoaXMuaGVhZGVyLmdldFNpemUoKStlfXdyaXRlKGUsdCl7aWYoIXRoaXMuaGVhZGVyKXJldHVybiAwO2NvbnN0IG49ZTtlKz10aGlzLmhlYWRlci53cml0ZShlLHQpO2lmKHRoaXMuc2ltcGxlKWUrPXRoaXMuc2ltcGxlLndyaXRlKGUsdCk7ZWxzZSBmb3IoY29uc3QgbiBvZiB0aGlzLmNvbXBvc2l0ZXMpZSs9bi53cml0ZShlLHQpO3JldHVybiBlLW59c2NhbGUoZSl7aWYoIXRoaXMuaGVhZGVyKXJldHVybjtjb25zdCB0PSh0aGlzLmhlYWRlci54TWluK3RoaXMuaGVhZGVyLnhNYXgpLzI7dGhpcy5oZWFkZXIuc2NhbGUodCxlKTtpZih0aGlzLnNpbXBsZSl0aGlzLnNpbXBsZS5zY2FsZSh0LGUpO2Vsc2UgZm9yKGNvbnN0IG4gb2YgdGhpcy5jb21wb3NpdGVzKW4uc2NhbGUodCxlKX19Y2xhc3MgR2x5cGhIZWFkZXJ7Y29uc3RydWN0b3Ioe251bWJlck9mQ29udG91cnM6ZSx4TWluOnQseU1pbjpuLHhNYXg6YSx5TWF4OnJ9KXt0aGlzLm51bWJlck9mQ29udG91cnM9ZTt0aGlzLnhNaW49dDt0aGlzLnlNaW49bjt0aGlzLnhNYXg9YTt0aGlzLnlNYXg9cn1zdGF0aWMgcGFyc2UoZSx0KXtyZXR1cm5bWmEsbmV3IEdseXBoSGVhZGVyKHtudW1iZXJPZkNvbnRvdXJzOnQuZ2V0SW50MTYoZSkseE1pbjp0LmdldEludDE2KGUrMikseU1pbjp0LmdldEludDE2KGUrNCkseE1heDp0LmdldEludDE2KGUrNikseU1heDp0LmdldEludDE2KGUrOCl9KV19Z2V0U2l6ZSgpe3JldHVybiBaYX13cml0ZShlLHQpe3Quc2V0SW50MTYoZSx0aGlzLm51bWJlck9mQ29udG91cnMpO3Quc2V0SW50MTYoZSsyLHRoaXMueE1pbik7dC5zZXRJbnQxNihlKzQsdGhpcy55TWluKTt0LnNldEludDE2KGUrNix0aGlzLnhNYXgpO3Quc2V0SW50MTYoZSs4LHRoaXMueU1heCk7cmV0dXJuIFphfXNjYWxlKGUsdCl7dGhpcy54TWluPU1hdGgucm91bmQoZSsodGhpcy54TWluLWUpKnQpO3RoaXMueE1heD1NYXRoLnJvdW5kKGUrKHRoaXMueE1heC1lKSp0KX19Y2xhc3MgQ29udG91cntjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSx4Q29vcmRpbmF0ZXM6dCx5Q29vcmRpbmF0ZXM6bn0pe3RoaXMueENvb3JkaW5hdGVzPXQ7dGhpcy55Q29vcmRpbmF0ZXM9bjt0aGlzLmZsYWdzPWV9fWNsYXNzIFNpbXBsZUdseXBoe2NvbnN0cnVjdG9yKHtjb250b3VyczplLGluc3RydWN0aW9uczp0fSl7dGhpcy5jb250b3Vycz1lO3RoaXMuaW5zdHJ1Y3Rpb25zPXR9c3RhdGljIHBhcnNlKGUsdCxuKXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wO3I8bjtyKyspe2NvbnN0IG49dC5nZXRVaW50MTYoZSk7ZSs9MjthLnB1c2gobil9Y29uc3Qgcj1hW24tMV0rMSxzPXQuZ2V0VWludDE2KGUpO2UrPTI7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KS5zbGljZShlLGUrcyk7ZSs9cztjb25zdCBvPVtdO2ZvcihsZXQgbj0wO248cjtlKyssbisrKXtsZXQgYT10LmdldFVpbnQ4KGUpO28ucHVzaChhKTtpZig4JmEpe2NvbnN0IHI9dC5nZXRVaW50OCgrK2UpO2FePTg7Zm9yKGxldCBlPTA7ZTxyO2UrKylvLnB1c2goYSk7bis9cn19Y29uc3QgbD1bXTtsZXQgZj1bXSxjPVtdLGg9W107Y29uc3QgdT1bXTtsZXQgbT0wLHA9MDtmb3IobGV0IG49MDtuPHI7bisrKXtjb25zdCByPW9bbl07aWYoMiZyKXtjb25zdCBuPXQuZ2V0VWludDgoZSsrKTtwKz0xNiZyP246LW47Zi5wdXNoKHApfWVsc2UgaWYoMTYmcilmLnB1c2gocCk7ZWxzZXtwKz10LmdldEludDE2KGUpO2UrPTI7Zi5wdXNoKHApfWlmKGFbbV09PT1uKXttKys7bC5wdXNoKGYpO2Y9W119fXA9MDttPTA7Zm9yKGxldCBuPTA7bjxyO24rKyl7Y29uc3Qgcj1vW25dO2lmKDQmcil7Y29uc3Qgbj10LmdldFVpbnQ4KGUrKyk7cCs9MzImcj9uOi1uO2MucHVzaChwKX1lbHNlIGlmKDMyJnIpYy5wdXNoKHApO2Vsc2V7cCs9dC5nZXRJbnQxNihlKTtlKz0yO2MucHVzaChwKX1oLnB1c2goMSZyfDY0JnIpO2lmKGFbbV09PT1uKXtmPWxbbV07bSsrO3UucHVzaChuZXcgQ29udG91cih7ZmxhZ3M6aCx4Q29vcmRpbmF0ZXM6Zix5Q29vcmRpbmF0ZXM6Y30pKTtjPVtdO2g9W119fXJldHVybiBuZXcgU2ltcGxlR2x5cGgoe2NvbnRvdXJzOnUsaW5zdHJ1Y3Rpb25zOml9KX1nZXRTaXplKCl7bGV0IGU9Mip0aGlzLmNvbnRvdXJzLmxlbmd0aCsyK3RoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCx0PTAsbj0wO2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpe2UrPWEuZmxhZ3MubGVuZ3RoO2ZvcihsZXQgcj0wLHM9YS54Q29vcmRpbmF0ZXMubGVuZ3RoO3I8cztyKyspe2NvbnN0IHM9YS54Q29vcmRpbmF0ZXNbcl0saT1hLnlDb29yZGluYXRlc1tyXTtsZXQgbz1NYXRoLmFicyhzLXQpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7dD1zO289TWF0aC5hYnMoaS1uKTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO249aX19cmV0dXJuIGV9d3JpdGUoZSx0KXtjb25zdCBuPWUsYT1bXSxyPVtdLHM9W107bGV0IGk9MCxvPTA7Zm9yKGNvbnN0IG4gb2YgdGhpcy5jb250b3Vycyl7Zm9yKGxldCBlPTAsdD1uLnhDb29yZGluYXRlcy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9bi5mbGFnc1tlXTtjb25zdCBsPW4ueENvb3JkaW5hdGVzW2VdO2xldCBmPWwtaTtpZigwPT09Zil7dHw9MTY7YS5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhmKTtpZihlPD0yNTUpe3R8PWY+PTA/MTg6MjthLnB1c2goZSl9ZWxzZSBhLnB1c2goZil9aT1sO2NvbnN0IGM9bi55Q29vcmRpbmF0ZXNbZV07Zj1jLW87aWYoMD09PWYpe3R8PTMyO3IucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoZik7aWYoZTw9MjU1KXt0fD1mPj0wPzM2OjQ7ci5wdXNoKGUpfWVsc2Ugci5wdXNoKGYpfW89YztzLnB1c2godCl9dC5zZXRVaW50MTYoZSxhLmxlbmd0aC0xKTtlKz0yfXQuc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofWZvcihjb25zdCBuIG9mIHMpdC5zZXRVaW50OChlKyssbik7Zm9yKGxldCBuPTAscj1hLmxlbmd0aDtuPHI7bisrKXtjb25zdCByPWFbbl0saT1zW25dO2lmKDImaSl0LnNldFVpbnQ4KGUrKyxyKTtlbHNlIGlmKCEoMTYmaSkpe3Quc2V0SW50MTYoZSxyKTtlKz0yfX1mb3IobGV0IG49MCxhPXIubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9cltuXSxpPXNbbl07aWYoNCZpKXQuc2V0VWludDgoZSsrLGEpO2Vsc2UgaWYoISgzMiZpKSl7dC5zZXRJbnQxNihlLGEpO2UrPTJ9fXJldHVybiBlLW59c2NhbGUoZSx0KXtmb3IoY29uc3QgbiBvZiB0aGlzLmNvbnRvdXJzKWlmKDAhPT1uLnhDb29yZGluYXRlcy5sZW5ndGgpZm9yKGxldCBhPTAscj1uLnhDb29yZGluYXRlcy5sZW5ndGg7YTxyO2ErKyluLnhDb29yZGluYXRlc1thXT1NYXRoLnJvdW5kKGUrKG4ueENvb3JkaW5hdGVzW2FdLWUpKnQpfX1jbGFzcyBDb21wb3NpdGVHbHlwaHtjb25zdHJ1Y3Rvcih7ZmxhZ3M6ZSxnbHlwaEluZGV4OnQsYXJndW1lbnQxOm4sYXJndW1lbnQyOmEsdHJhbnNmOnIsaW5zdHJ1Y3Rpb25zOnN9KXt0aGlzLmZsYWdzPWU7dGhpcy5nbHlwaEluZGV4PXQ7dGhpcy5hcmd1bWVudDE9bjt0aGlzLmFyZ3VtZW50Mj1hO3RoaXMudHJhbnNmPXI7dGhpcy5pbnN0cnVjdGlvbnM9c31zdGF0aWMgcGFyc2UoZSx0KXtjb25zdCBuPWUsYT1bXTtsZXQgcj10LmdldFVpbnQxNihlKTtjb25zdCBzPXQuZ2V0VWludDE2KGUrMik7ZSs9NDtsZXQgaSxvO2lmKDEmcil7aWYoMiZyKXtpPXQuZ2V0SW50MTYoZSk7bz10LmdldEludDE2KGUrMil9ZWxzZXtpPXQuZ2V0VWludDE2KGUpO289dC5nZXRVaW50MTYoZSsyKX1lKz00O3JePTF9ZWxzZXtpZigyJnIpe2k9dC5nZXRJbnQ4KGUpO289dC5nZXRJbnQ4KGUrMSl9ZWxzZXtpPXQuZ2V0VWludDgoZSk7bz10LmdldFVpbnQ4KGUrMSl9ZSs9Mn1pZig4JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSk7ZSs9Mn1lbHNlIGlmKDY0JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpKTtlKz00fWVsc2UgaWYoMTI4JnIpe2EucHVzaCh0LmdldFVpbnQxNihlKSx0LmdldFVpbnQxNihlKzIpLHQuZ2V0VWludDE2KGUrNCksdC5nZXRVaW50MTYoZSs2KSk7ZSs9OH1sZXQgbD1udWxsO2lmKHImUWEpe2NvbnN0IG49dC5nZXRVaW50MTYoZSk7ZSs9MjtsPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZStuKTtlKz1ufXJldHVybltlLW4sbmV3IENvbXBvc2l0ZUdseXBoKHtmbGFnczpyLGdseXBoSW5kZXg6cyxhcmd1bWVudDE6aSxhcmd1bWVudDI6byx0cmFuc2Y6YSxpbnN0cnVjdGlvbnM6bH0pXX1nZXRTaXplKCl7bGV0IGU9NCsyKnRoaXMudHJhbnNmLmxlbmd0aDt0aGlzLmZsYWdzJlFhJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3Qgbj1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZih0aGlzLmZsYWdzJlFhKXt0LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH19cmV0dXJuIGUtbn1zY2FsZShlLHQpe319Y2xhc3MgVG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuX21hcD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1mb3JFYWNoKGUpe2Zvcihjb25zdCB0IGluIHRoaXMuX21hcCllKHQsdGhpcy5fbWFwW3RdLmNvZGVQb2ludEF0KDApKX1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBuIGluIHQpaWYodFtuXT09PWUpcmV0dXJuIDB8bjtyZXR1cm4tMX1hbWVuZChlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sYXN0Q2hhcisxLXRoaXMuZmlyc3RDaGFyfWZvckVhY2goZSl7Zm9yKGxldCB0PXRoaXMuZmlyc3RDaGFyLG49dGhpcy5sYXN0Q2hhcjt0PD1uO3QrKyllKHQsdCl9aGFzKGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcn1nZXQoZSl7aWYodGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49dGhpcy5maXJzdENoYXImJmU8PXRoaXMubGFzdENoYXI/ZTotMX1hbWVuZChlKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGFtZW5kKCkiKX19Y2xhc3MgQ0ZGRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydGllcz10O2NvbnN0IG49bmV3IENGRlBhcnNlcihlLHQsITApO3RoaXMuY2ZmPW4ucGFyc2UoKTt0aGlzLmNmZi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgYT1uZXcgQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1hLmNvbXBpbGUoKX1jYXRjaChuKXt3YXJuKGBGYWlsZWQgdG8gY29tcGlsZSBmb250ICIke3QubG9hZGVkTmFtZX0iOiAiJHtufSIuYCk7ZS5yZXNldCgpO3RoaXMuZGF0YT1lLmdldEJ5dGVzKCl9dGhpcy5fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl9Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLmNmZi5jaGFyU3RyaW5ncy5jb3VudH1nZXRDaGFyc2V0KCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJzZXQuY2hhcnNldH1nZXRHbHlwaE1hcHBpbmcoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9dGhpcy5wcm9wZXJ0aWVzLHtjaWRUb0dpZE1hcDpuLGNNYXA6YX09dCxyPWUuY2hhcnNldC5jaGFyc2V0O2xldCBzLGk7aWYodC5jb21wb3NpdGUpe2xldCB0LG87aWYobj8ubGVuZ3RoPjApe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MCxhPW4ubGVuZ3RoO2U8YTtlKyspe2NvbnN0IGE9bltlXTt2b2lkIDAhPT1hJiYodFthXT1lKX19cz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUuaXNDSURGb250KWZvcihpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IGU9cltpXTtvPWEuY2hhckNvZGVPZihlKTt2b2lkIDAhPT10Py5bb10mJihvPXRbb10pO3Nbb109aX1lbHNlIGZvcihpPTA7aTxlLmNoYXJTdHJpbmdzLmNvdW50O2krKyl7bz1hLmNoYXJDb2RlT2YoaSk7c1tvXT1pfXJldHVybiBzfWxldCBvPWUuZW5jb2Rpbmc/ZS5lbmNvZGluZy5lbmNvZGluZzpudWxsO3QuaXNJbnRlcm5hbEZvbnQmJihvPXQuZGVmYXVsdEVuY29kaW5nKTtzPXR5cGUxRm9udEdseXBoTWFwcGluZyh0LG8scik7cmV0dXJuIHN9aGFzR2x5cGhJZChlKXtyZXR1cm4gdGhpcy5jZmYuaGFzR2x5cGhJZChlKX1fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl7Y29uc3R7Y2hhcnNldDplLGVuY29kaW5nOnR9PXRoaXMuY2ZmO2lmKCFlfHwhdClyZXR1cm47Y29uc3Qgbj1lLmNoYXJzZXQsYT10LmVuY29kaW5nLHI9W107Zm9yKGNvbnN0IGUgaW4gYSl7Y29uc3QgdD1hW2VdO2lmKHQ+PTApe2NvbnN0IGE9blt0XTthJiYocltlXT1hKX19ci5sZW5ndGg+MCYmKHRoaXMucHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc9cil9fWNsYXNzIENTU19GT05UX0lORk97c3RhdGljIHN0cmluZ3M9WyJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsIml0YWxpY0FuZ2xlIl19Y2xhc3MgU1lTVEVNX0ZPTlRfSU5GT3tzdGF0aWMgc3RyaW5ncz1bImNzcyIsImxvYWRlZE5hbWUiLCJiYXNlRm9udE5hbWUiLCJzcmMiXX1jbGFzcyBGT05UX0lORk97c3RhdGljIGJvb2xzPVsiYmxhY2siLCJib2xkIiwiZGlzYWJsZUZvbnRGYWNlIiwiZm9udEV4dHJhUHJvcGVydGllcyIsImlzSW52YWxpZFBERmpzRm9udCIsImlzVHlwZTNGb250IiwiaXRhbGljIiwibWlzc2luZ0ZpbGUiLCJyZW1lYXN1cmUiLCJ2ZXJ0aWNhbCJdO3N0YXRpYyBudW1iZXJzPVsiYXNjZW50IiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCJdO3N0YXRpYyBzdHJpbmdzPVsiZmFsbGJhY2tOYW1lIiwibG9hZGVkTmFtZSIsIm1pbWV0eXBlIiwibmFtZSJdO3N0YXRpYyBPRkZTRVRfTlVNQkVSUz1NYXRoLmNlaWwoMip0aGlzLmJvb2xzLmxlbmd0aC84KTtzdGF0aWMgT0ZGU0VUX0JCT1g9dGhpcy5PRkZTRVRfTlVNQkVSUys4KnRoaXMubnVtYmVycy5sZW5ndGg7c3RhdGljIE9GRlNFVF9GT05UX01BVFJJWD10aGlzLk9GRlNFVF9CQk9YKzErODtzdGF0aWMgT0ZGU0VUX0RFRkFVTFRfVk1FVFJJQ1M9dGhpcy5PRkZTRVRfRk9OVF9NQVRSSVgrMSs0ODtzdGF0aWMgT0ZGU0VUX1NUUklOR1M9dGhpcy5PRkZTRVRfREVGQVVMVF9WTUVUUklDUysxKzZ9Y2xhc3MgUEFUVEVSTl9JTkZPe3N0YXRpYyBLSU5EPTA7c3RhdGljIEhBU19CQk9YPTE7c3RhdGljIEhBU19CQUNLR1JPVU5EPTI7c3RhdGljIFNIQURJTkdfVFlQRT0zO3N0YXRpYyBOX0NPT1JEPTQ7c3RhdGljIE5fQ09MT1I9ODtzdGF0aWMgTl9TVE9QPTEyO3N0YXRpYyBOX0ZJR1VSRVM9MTZ9ZnVuY3Rpb24gY29tcGlsZUZvbnRJbmZvKGUpe2NvbnN0IHQ9ZS5zeXN0ZW1Gb250SW5mbz9mdW5jdGlvbiBjb21waWxlU3lzdGVtRm9udEluZm8oZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsbj17fTtsZXQgYT0wO2Zvcihjb25zdCByIG9mIFNZU1RFTV9GT05UX0lORk8uc3RyaW5ncyl7Y29uc3Qgcz10LmVuY29kZShlW3JdKTtuW3JdPXM7YSs9NCtzLmxlbmd0aH1hKz00O2xldCByLHMsaT0xK2E7aWYoZS5zdHlsZSl7cj10LmVuY29kZShlLnN0eWxlLnN0eWxlKTtzPXQuZW5jb2RlKGUuc3R5bGUud2VpZ2h0KTtpKz00K3IubGVuZ3RoKzQrcy5sZW5ndGh9Y29uc3Qgbz1uZXcgQXJyYXlCdWZmZXIoaSksbD1uZXcgVWludDhBcnJheShvKSxmPW5ldyBEYXRhVmlldyhvKTtsZXQgYz0wO2Yuc2V0VWludDgoYysrLGUuZ3Vlc3NGYWxsYmFjaz8xOjApO2Yuc2V0VWludDMyKGMsMCk7Yys9NDthPTA7Zm9yKGNvbnN0IGUgb2YgU1lTVEVNX0ZPTlRfSU5GTy5zdHJpbmdzKXtjb25zdCB0PW5bZV0scj10Lmxlbmd0aDthKz00K3I7Zi5zZXRVaW50MzIoYyxyKTtsLnNldCh0LGMrNCk7Yys9NCtyfWYuc2V0VWludDMyKGMtYS00LGEpO2lmKGUuc3R5bGUpe2Yuc2V0VWludDMyKGMsci5sZW5ndGgpO2wuc2V0KHIsYys0KTtjKz00K3IubGVuZ3RoO2Yuc2V0VWludDMyKGMscy5sZW5ndGgpO2wuc2V0KHMsYys0KTtjKz00K3MubGVuZ3RofWFzc2VydChjPD1vLmJ5dGVMZW5ndGgsImNvbXBpbGVTeXN0ZW1Gb250SW5mbzogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIG8udHJhbnNmZXJUb0ZpeGVkTGVuZ3RoKGMpfShlLnN5c3RlbUZvbnRJbmZvKTpudWxsLG49ZS5jc3NGb250SW5mbz9mdW5jdGlvbiBjb21waWxlQ3NzRm9udEluZm8oZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsbj17fTtsZXQgYT0wO2Zvcihjb25zdCByIG9mIENTU19GT05UX0lORk8uc3RyaW5ncyl7Y29uc3Qgcz10LmVuY29kZShlW3JdKTtuW3JdPXM7YSs9NCtzLmxlbmd0aH1jb25zdCByPW5ldyBBcnJheUJ1ZmZlcihhKSxzPW5ldyBVaW50OEFycmF5KHIpLGk9bmV3IERhdGFWaWV3KHIpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2YgQ1NTX0ZPTlRfSU5GTy5zdHJpbmdzKXtjb25zdCB0PW5bZV0sYT10Lmxlbmd0aDtpLnNldFVpbnQzMihvLGEpO3Muc2V0KHQsbys0KTtvKz00K2F9YXNzZXJ0KG89PT1yLmJ5dGVMZW5ndGgsImNvbXBpbGVDc3NGb250SW5mbzogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIHJ9KGUuY3NzRm9udEluZm8pOm51bGwsYT1uZXcgVGV4dEVuY29kZXIscj17fTtsZXQgcz0wO2Zvcihjb25zdCB0IG9mIEZPTlRfSU5GTy5zdHJpbmdzKXtyW3RdPWEuZW5jb2RlKGVbdF0pO3MrPTQrclt0XS5sZW5ndGh9Y29uc3QgaT1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MrNCtzKzQrKHQ/LmJ5dGVMZW5ndGg/PzApKzQrKG4/LmJ5dGVMZW5ndGg/PzApKzQrKGUuZGF0YT8ubGVuZ3RoPz8wKSxvPW5ldyBBcnJheUJ1ZmZlcihpKSxsPW5ldyBVaW50OEFycmF5KG8pLGY9bmV3IERhdGFWaWV3KG8pO2xldCBjPTA7Y29uc3QgaD1GT05UX0lORk8uYm9vbHMubGVuZ3RoO2xldCB1PTAsbT0wO2ZvcihsZXQgdD0wO3Q8aDt0Kyspe2NvbnN0IG49ZVtGT05UX0lORk8uYm9vbHNbdF1dO3V8PSh2b2lkIDA9PT1uPzA6bj8yOjEpPDxtO20rPTI7aWYoOD09PW18fHQ9PT1oLTEpe2Yuc2V0VWludDgoYysrLHUpO3U9MDttPTB9fWFzc2VydChjPT09Rk9OVF9JTkZPLk9GRlNFVF9OVU1CRVJTLCJjb21waWxlRm9udEluZm86IEJvb2xlYW4gcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtmb3IoY29uc3QgdCBvZiBGT05UX0lORk8ubnVtYmVycyl7Zi5zZXRGbG9hdDY0KGMsZVt0XSk7Yys9OH1hc3NlcnQoYz09PUZPTlRfSU5GTy5PRkZTRVRfQkJPWCwiY29tcGlsZUZvbnRJbmZvOiBOdW1iZXIgcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmJib3gpe2Yuc2V0VWludDgoYysrLDQpO2Zvcihjb25zdCB0IG9mIGUuYmJveCl7Zi5zZXRJbnQxNihjLHQsITApO2MrPTJ9fWVsc2V7Zi5zZXRVaW50OChjKyssMCk7Yys9OH1hc3NlcnQoYz09PUZPTlRfSU5GTy5PRkZTRVRfRk9OVF9NQVRSSVgsImNvbXBpbGVGb250SW5mbzogQkJveCBwcm9wZXJ0aWVzIG9mZnNldCBtaXNtYXRjaCIpO2lmKGUuZm9udE1hdHJpeCl7Zi5zZXRVaW50OChjKyssNik7Zm9yKGNvbnN0IHQgb2YgZS5mb250TWF0cml4KXtmLnNldEZsb2F0NjQoYyx0LCEwKTtjKz04fX1lbHNle2Yuc2V0VWludDgoYysrLDApO2MrPTQ4fWFzc2VydChjPT09Rk9OVF9JTkZPLk9GRlNFVF9ERUZBVUxUX1ZNRVRSSUNTLCJjb21waWxlRm9udEluZm86IEZvbnRNYXRyaXggcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmRlZmF1bHRWTWV0cmljcyl7Zi5zZXRVaW50OChjKyssMyk7Zm9yKGNvbnN0IHQgb2YgZS5kZWZhdWx0Vk1ldHJpY3Mpe2Yuc2V0SW50MTYoYyx0LCEwKTtjKz0yfX1lbHNle2Yuc2V0VWludDgoYysrLDApO2MrPTZ9YXNzZXJ0KGM9PT1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MsImNvbXBpbGVGb250SW5mbzogRGVmYXVsdFZNZXRyaWNzIHByb3BlcnRpZXMgb2Zmc2V0IG1pc21hdGNoIik7Zi5zZXRVaW50MzIoRk9OVF9JTkZPLk9GRlNFVF9TVFJJTkdTLDApO2MrPTQ7Zm9yKGNvbnN0IGUgb2YgRk9OVF9JTkZPLnN0cmluZ3Mpe2NvbnN0IHQ9cltlXSxuPXQubGVuZ3RoO2Yuc2V0VWludDMyKGMsbik7bC5zZXQodCxjKzQpO2MrPTQrbn1mLnNldFVpbnQzMihGT05UX0lORk8uT0ZGU0VUX1NUUklOR1MsYy1GT05UX0lORk8uT0ZGU0VUX1NUUklOR1MtNCk7aWYodCl7Y29uc3QgZT10LmJ5dGVMZW5ndGg7Zi5zZXRVaW50MzIoYyxlKTthc3NlcnQoYys0K2U8PW8uYnl0ZUxlbmd0aCwiY29tcGlsZUZvbnRJbmZvOiBCdWZmZXIgb3ZlcmZsb3cgYXQgc3lzdGVtRm9udEluZm8iKTtsLnNldChuZXcgVWludDhBcnJheSh0KSxjKzQpO2MrPTQrZX1lbHNle2Yuc2V0VWludDMyKGMsMCk7Yys9NH1pZihuKXtjb25zdCBlPW4uYnl0ZUxlbmd0aDtmLnNldFVpbnQzMihjLGUpO2Fzc2VydChjKzQrZTw9by5ieXRlTGVuZ3RoLCJjb21waWxlRm9udEluZm86IEJ1ZmZlciBvdmVyZmxvdyBhdCBjc3NGb250SW5mbyIpO2wuc2V0KG5ldyBVaW50OEFycmF5KG4pLGMrNCk7Yys9NCtlfWVsc2V7Zi5zZXRVaW50MzIoYywwKTtjKz00fWlmKHZvaWQgMD09PWUuZGF0YSl7Zi5zZXRVaW50MzIoYywwKTtjKz00fWVsc2V7Zi5zZXRVaW50MzIoYyxlLmRhdGEubGVuZ3RoKTtsLnNldChlLmRhdGEsYys0KTtjKz00K2UuZGF0YS5sZW5ndGh9YXNzZXJ0KGM8PW8uYnl0ZUxlbmd0aCwiY29tcGlsZUZvbnRJbmZvOiBCdWZmZXIgb3ZlcmZsb3ciKTtyZXR1cm4gby50cmFuc2ZlclRvRml4ZWRMZW5ndGgoYyl9ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gZS5nZXRJbnQxNih0KS8xNjM4NH1mdW5jdGlvbiBnZXRTdWJyb3V0aW5lQmlhcyhlKXtjb25zdCB0PWUubGVuZ3RoO3JldHVybiB0Pj0zMzkwMD8zMjc2ODp0PDEyNDA/MTA3OjExMzF9ZnVuY3Rpb24gcGFyc2VDbWFwKGUsdCxuKXtjb25zdCBhPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxyPTE9PT1hLmdldFVpbnQxNih0KzIpP2EuZ2V0VWludDMyKHQrOCk6YS5nZXRVaW50MzIodCsxNikscz1hLmdldFVpbnQxNih0K3IpO2xldCBpLG8sbDtpZig0PT09cyl7Y29uc3QgZT1hLmdldFVpbnQxNih0K3IrNik+PjE7bz10K3IrMTQ7aT1bXTtmb3IobD0wO2w8ZTtsKyssbys9MilpW2xdPXtlbmQ6YS5nZXRVaW50MTYobyl9O28rPTI7Zm9yKGw9MDtsPGU7bCsrLG8rPTIpaVtsXS5zdGFydD1hLmdldFVpbnQxNihvKTtmb3IobD0wO2w8ZTtsKyssbys9MilpW2xdLmlkRGVsdGE9YS5nZXRVaW50MTYobyk7Zm9yKGw9MDtsPGU7bCsrLG8rPTIpe2xldCBlPWEuZ2V0VWludDE2KG8pO2lmKDAhPT1lKXtpW2xdLmlkcz1bXTtmb3IobGV0IHQ9MCxuPWlbbF0uZW5kLWlbbF0uc3RhcnQrMTt0PG47dCsrKXtpW2xdLmlkc1t0XT1hLmdldFVpbnQxNihvK2UpO2UrPTJ9fX1yZXR1cm4gaX1pZigxMj09PXMpe2NvbnN0IGU9YS5nZXRVaW50MzIodCtyKzEyKTtvPXQrcisxNjtpPVtdO2ZvcihsPTA7bDxlO2wrKyl7dD1hLmdldFVpbnQzMihvKTtpLnB1c2goe3N0YXJ0OnQsZW5kOmEuZ2V0VWludDMyKG8rNCksaWREZWx0YTphLmdldFVpbnQzMihvKzgpLXR9KTtvKz0xMn1yZXR1cm4gaX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVuc3VwcG9ydGVkIGNtYXA6ICR7c31gKX1mdW5jdGlvbiBwYXJzZUNmZihlLHQsbixhKXtjb25zdCByPW5ldyBDRkZQYXJzZXIobmV3IFN0cmVhbShlLHQsbi10KSx7fSxhKS5wYXJzZSgpO3JldHVybntnbHlwaHM6ci5jaGFyU3RyaW5ncy5vYmplY3RzLHN1YnJzOnIudG9wRGljdC5wcml2YXRlRGljdD8uc3VicnNJbmRleD8ub2JqZWN0cyxnc3VicnM6ci5nbG9iYWxTdWJySW5kZXg/Lm9iamVjdHMsaXNDRkZDSURGb250OnIuaXNDSURGb250LGZkU2VsZWN0OnIuZmRTZWxlY3QsZmRBcnJheTpyLmZkQXJyYXl9fWZ1bmN0aW9uIGxvb2t1cENtYXAoZSx0KXtjb25zdCBuPXQuY29kZVBvaW50QXQoMCk7bGV0IGE9MCxyPTAscz1lLmxlbmd0aC0xO2Zvcig7cjxzOyl7Y29uc3QgdD1yK3MrMT4+MTtuPGVbdF0uc3RhcnQ/cz10LTE6cj10fWVbcl0uc3RhcnQ8PW4mJm48PWVbcl0uZW5kJiYoYT1lW3JdLmlkRGVsdGErKGVbcl0uaWRzP2Vbcl0uaWRzW24tZVtyXS5zdGFydF06bikmNjU1MzUpO3JldHVybntjaGFyQ29kZTpuLGdseXBoSWQ6YX19ZnVuY3Rpb24gY29tcGlsZUdseWYoZSx0LG4sYT1uZXcgU2V0KXtpZighZT8ubGVuZ3RoKXJldHVybjtpZihhLmhhcyhlKSl7d2FybigiY29tcGlsZUdseWY6IHNraXBwaW5nIHJlY3Vyc2l2ZSBjb21wb3NpdGUgZ2x5cGggcmVmZXJlbmNlLiIpO3JldHVybn1hLmFkZChlKTtmdW5jdGlvbiBtb3ZlVG8oZSxuKXtsJiZ0LmFkZChlbixsKTtsPVtlLG5dO3QuYWRkKFp0LFtlLG5dKX1mdW5jdGlvbiBsaW5lVG8oZSxuKXt0LmFkZChlbixbZSxuXSl9ZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyhlLG4sYSxyKXt0LmFkZChubixbZSxuLGEscl0pfWNvbnN0IHI9bmV3IERhdGFWaWV3KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpO2xldCBzPTA7Y29uc3QgaT1yLmdldEludDE2KHMpO2xldCBvLGw9bnVsbCxmPTAsYz0wO3MrPTEwO2lmKGk8MClkb3tvPXIuZ2V0VWludDE2KHMpO2NvbnN0IGk9ci5nZXRVaW50MTYocysyKTtzKz00O2xldCBsLGg7aWYoMSZvKXtpZigyJm8pe2w9ci5nZXRJbnQxNihzKTtoPXIuZ2V0SW50MTYocysyKX1lbHNle2w9ci5nZXRVaW50MTYocyk7aD1yLmdldFVpbnQxNihzKzIpfXMrPTR9ZWxzZSBpZigyJm8pe2w9ci5nZXRJbnQ4KHMrKyk7aD1yLmdldEludDgocysrKX1lbHNle2w9ZVtzKytdO2g9ZVtzKytdfWlmKDImbyl7Zj1sO2M9aH1lbHNle2Y9MDtjPTB9bGV0IHU9MSxtPTEscD0wLGQ9MDtpZig4Jm8pe3U9bT1nZXRGbG9hdDIxNChyLHMpO3MrPTJ9ZWxzZSBpZig2NCZvKXt1PWdldEZsb2F0MjE0KHIscyk7bT1nZXRGbG9hdDIxNChyLHMrMik7cys9NH1lbHNlIGlmKDEyOCZvKXt1PWdldEZsb2F0MjE0KHIscyk7cD1nZXRGbG9hdDIxNChyLHMrMik7ZD1nZXRGbG9hdDIxNChyLHMrNCk7bT1nZXRGbG9hdDIxNChyLHMrNik7cys9OH1jb25zdCBnPW4uZ2x5cGhzW2ldO2lmKGcpe3Quc2F2ZSgpO3QudHJhbnNmb3JtKFt1LHAsZCxtLGYsY10pO2NvbXBpbGVHbHlmKGcsdCxuLGEpO3QucmVzdG9yZSgpfX13aGlsZSgzMiZvKTtlbHNle2NvbnN0IHQ9W107bGV0IG4sYTtmb3Iobj0wO248aTtuKyspe3QucHVzaChyLmdldFVpbnQxNihzKSk7cys9Mn1zKz0yK3IuZ2V0VWludDE2KHMpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe289ZVtzKytdO2xldCB0PTE7OCZvJiYodCs9ZVtzKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczpvfSl9Zm9yKG49MDtuPGw7bisrKXtzd2l0Y2goMTgmaFtuXS5mbGFncyl7Y2FzZSAwOmYrPXIuZ2V0SW50MTYocyk7cys9MjticmVhaztjYXNlIDI6Zi09ZVtzKytdO2JyZWFrO2Nhc2UgMTg6Zis9ZVtzKytdfWhbbl0ueD1mfWZvcihuPTA7bjxsO24rKyl7c3dpdGNoKDM2Jmhbbl0uZmxhZ3Mpe2Nhc2UgMDpjKz1yLmdldEludDE2KHMpO3MrPTI7YnJlYWs7Y2FzZSA0OmMtPWVbcysrXTticmVhaztjYXNlIDM2OmMrPWVbcysrXX1oW25dLnk9Y31sZXQgdT0wO2ZvcihzPTA7czxpO3MrKyl7Y29uc3QgZT10W3NdLHI9aC5zbGljZSh1LGUrMSk7aWYoMSZyWzBdLmZsYWdzKXIucHVzaChyWzBdKTtlbHNlIGlmKDEmci5hdCgtMSkuZmxhZ3Mpci51bnNoaWZ0KHIuYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooclswXS54K3IuYXQoLTEpLngpLzIseTooclswXS55K3IuYXQoLTEpLnkpLzJ9O3IudW5zaGlmdChlKTtyLnB1c2goZSl9bW92ZVRvKHJbMF0ueCxyWzBdLnkpO2ZvcihuPTEsYT1yLmxlbmd0aDtuPGE7bisrKWlmKDEmcltuXS5mbGFncylsaW5lVG8ocltuXS54LHJbbl0ueSk7ZWxzZSBpZigxJnJbbisxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhyW25dLngscltuXS55LHJbbisxXS54LHJbbisxXS55KTtuKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKHJbbl0ueCxyW25dLnksKHJbbl0ueCtyW24rMV0ueCkvMiwocltuXS55K3JbbisxXS55KS8yKTt1PWUrMX19YS5kZWxldGUoZSl9ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmcoZSx0LG4sYSl7ZnVuY3Rpb24gbW92ZVRvKGUsbil7bCYmdC5hZGQoZW4sbCk7bD1bZSxuXTt0LmFkZChadCxbZSxuXSl9ZnVuY3Rpb24gbGluZVRvKGUsbil7dC5hZGQoZW4sW2Usbl0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxuLGEscixzLGkpe3QuYWRkKHRuLFtlLG4sYSxyLHMsaV0pfWNvbnN0IHI9W107bGV0IHM9MCxpPTAsbz0wLGw9bnVsbDshZnVuY3Rpb24gcGFyc2UoZSl7Y29uc3QgbD1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCk7bGV0IGY9MDtmb3IoO2Y8ZS5sZW5ndGg7KXtsZXQgYyxoLHUsbSxwLGQsZyxiLHcsaj0hMSxrPWVbZisrXTtzd2l0Y2goayl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9ci5sZW5ndGg+PjE7aj0hMDticmVhaztjYXNlIDQ6aSs9ci5wb3AoKTttb3ZlVG8ocyxpKTtqPSEwO2JyZWFrO2Nhc2UgNTpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7aSs9ci5zaGlmdCgpO2xpbmVUbyhzLGkpfWJyZWFrO2Nhc2UgNjpmb3IoO3IubGVuZ3RoPjA7KXtzKz1yLnNoaWZ0KCk7bGluZVRvKHMsaSk7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2krPXIuc2hpZnQoKTtsaW5lVG8ocyxpKX1icmVhaztjYXNlIDc6Zm9yKDtyLmxlbmd0aD4wOyl7aSs9ci5zaGlmdCgpO2xpbmVUbyhzLGkpO2lmKDA9PT1yLmxlbmd0aClicmVhaztzKz1yLnNoaWZ0KCk7bGluZVRvKHMsaSl9YnJlYWs7Y2FzZSA4OmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7dT1pK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO209dStyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtpPW0rci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpfWJyZWFrO2Nhc2UgMTA6Yj1yLnBvcCgpO3c9bnVsbDtpZihuLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1uLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTxuLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PW4uZmRBcnJheVtlXTtsZXQgYTt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYoYT10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYoYSl7Yis9Z2V0U3Vicm91dGluZUJpYXMoYSk7dz1hW2JdfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2Ugdz1uLnN1YnJzW2Irbi5zdWJyc0JpYXNdO3cmJnBhcnNlKHcpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6az1lW2YrK107c3dpdGNoKGspe2Nhc2UgMzQ6Yz1zK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO3A9aStyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsaSxoLHAscyxwKTtjPXMrci5zaGlmdCgpO2g9YytyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMscCxoLGkscyxpKTticmVhaztjYXNlIDM1OmM9cytyLnNoaWZ0KCk7dT1pK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO209dStyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtpPW0rci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpO2M9cytyLnNoaWZ0KCk7dT1pK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO209dStyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtpPW0rci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpO3IucG9wKCk7YnJlYWs7Y2FzZSAzNjpjPXMrci5zaGlmdCgpO3A9aStyLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTtkPXArci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHAsaCxkLHMsZCk7Yz1zK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO2c9ZCtyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsZCxoLGcscyxpKTticmVhaztjYXNlIDM3OmNvbnN0IGU9cyx0PWk7Yz1zK3Iuc2hpZnQoKTt1PWkrci5zaGlmdCgpO2g9YytyLnNoaWZ0KCk7bT11K3Iuc2hpZnQoKTtzPWgrci5zaGlmdCgpO2k9bStyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHMsaSk7Yz1zK3Iuc2hpZnQoKTt1PWkrci5zaGlmdCgpO2g9YytyLnNoaWZ0KCk7bT11K3Iuc2hpZnQoKTtzPWg7aT1tO01hdGguYWJzKHMtZSk+TWF0aC5hYnMoaS10KT9zKz1yLnNoaWZ0KCk6aSs9ci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke2t9YCl9YnJlYWs7Y2FzZSAxNDppZihyLmxlbmd0aD49NCl7Y29uc3QgZT1yLnBvcCgpLGE9ci5wb3AoKTtpPXIucG9wKCk7cz1yLnBvcCgpO3Quc2F2ZSgpO3QudHJhbnNsYXRlKHMsaSk7bGV0IG89bG9va3VwQ21hcChuLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShuLmdseXBoTmFtZU1hcFtiYVtlXV0pKTtjb21waWxlQ2hhclN0cmluZyhuLmdseXBoc1tvLmdseXBoSWRdLHQsbixvLmdseXBoSWQpO3QucmVzdG9yZSgpO289bG9va3VwQ21hcChuLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShuLmdseXBoTmFtZU1hcFtiYVthXV0pKTtjb21waWxlQ2hhclN0cmluZyhuLmdseXBoc1tvLmdseXBoSWRdLHQsbixvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9ci5sZW5ndGg+PjE7Zis9bys3Pj4zO2o9ITA7YnJlYWs7Y2FzZSAyMTppKz1yLnBvcCgpO3MrPXIucG9wKCk7bW92ZVRvKHMsaSk7aj0hMDticmVhaztjYXNlIDIyOnMrPXIucG9wKCk7bW92ZVRvKHMsaSk7aj0hMDticmVhaztjYXNlIDI0OmZvcig7ci5sZW5ndGg+Mjspe2M9cytyLnNoaWZ0KCk7dT1pK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO209dStyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtpPW0rci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpfXMrPXIuc2hpZnQoKTtpKz1yLnNoaWZ0KCk7bGluZVRvKHMsaSk7YnJlYWs7Y2FzZSAyNTpmb3IoO3IubGVuZ3RoPjY7KXtzKz1yLnNoaWZ0KCk7aSs9ci5zaGlmdCgpO2xpbmVUbyhzLGkpfWM9cytyLnNoaWZ0KCk7dT1pK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO209dStyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtpPW0rci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpO2JyZWFrO2Nhc2UgMjY6ci5sZW5ndGglMiYmKHMrPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zO3U9aStyLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTttPXUrci5zaGlmdCgpO3M9aDtpPW0rci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpfWJyZWFrO2Nhc2UgMjc6ci5sZW5ndGglMiYmKGkrPXIuc2hpZnQoKSk7Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTt1PWk7aD1jK3Iuc2hpZnQoKTttPXUrci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7aT1tO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpfWJyZWFrO2Nhc2UgMjg6ci5wdXNoKGwuZ2V0SW50MTYoZikpO2YrPTI7YnJlYWs7Y2FzZSAyOTpiPXIucG9wKCkrbi5nc3VicnNCaWFzO3c9bi5nc3VicnNbYl07dyYmcGFyc2Uodyk7YnJlYWs7Y2FzZSAzMDpmb3IoO3IubGVuZ3RoPjA7KXtjPXM7dT1pK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO209dStyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtpPW0rKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLHUsaCxtLHMsaSk7aWYoMD09PXIubGVuZ3RoKWJyZWFrO2M9cytyLnNoaWZ0KCk7dT1pO2g9YytyLnNoaWZ0KCk7bT11K3Iuc2hpZnQoKTtpPW0rci5zaGlmdCgpO3M9aCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scyxpKX1icmVhaztjYXNlIDMxOmZvcig7ci5sZW5ndGg+MDspe2M9cytyLnNoaWZ0KCk7dT1pO2g9YytyLnNoaWZ0KCk7bT11K3Iuc2hpZnQoKTtpPW0rci5zaGlmdCgpO3M9aCsoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsdSxoLG0scyxpKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7Yz1zO3U9aStyLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTttPXUrci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7aT1tKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyx1LGgsbSxzLGkpfWJyZWFrO2RlZmF1bHQ6aWYoazwzMil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHVua25vd24gb3BlcmF0b3I6ICR7a31gKTtpZihrPDI0NylyLnB1c2goay0xMzkpO2Vsc2UgaWYoazwyNTEpci5wdXNoKDI1Niooay0yNDcpK2VbZisrXSsxMDgpO2Vsc2UgaWYoazwyNTUpci5wdXNoKDI1NiotKGstMjUxKS1lW2YrK10tMTA4KTtlbHNle3IucHVzaChsLmdldEludDMyKGYpLzY1NTM2KTtmKz00fX1qJiYoci5sZW5ndGg9MCl9fShlKX1jbGFzcyBDb21tYW5kc3tjbWRzPVtdO3RyYW5zZm9ybVN0YWNrPVtdO2N1cnJlbnRUcmFuc2Zvcm09WzEsMCwwLDEsMCwwXTthZGQoZSx0KXtpZih0KXtjb25zdHtjdXJyZW50VHJhbnNmb3JtOm59PXRoaXM7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSs9MilVdGlsLmFwcGx5VHJhbnNmb3JtKHQsbixlKTt0aGlzLmNtZHMucHVzaChlLC4uLnQpfWVsc2UgdGhpcy5jbWRzLnB1c2goZSl9dHJhbnNmb3JtKGUpe3RoaXMuY3VycmVudFRyYW5zZm9ybT1VdGlsLnRyYW5zZm9ybSh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0sZSl9dHJhbnNsYXRlKGUsdCl7dGhpcy50cmFuc2Zvcm0oWzEsMCwwLDEsZSx0XSl9c2F2ZSgpe3RoaXMudHJhbnNmb3JtU3RhY2sucHVzaCh0aGlzLmN1cnJlbnRUcmFuc2Zvcm0uc2xpY2UoKSl9cmVzdG9yZSgpe3RoaXMuY3VycmVudFRyYW5zZm9ybT10aGlzLnRyYW5zZm9ybVN0YWNrLnBvcCgpfHxbMSwwLDAsMSwwLDBdfWdldFBhdGgoKXtyZXR1cm4gRmVhdHVyZVRlc3QuaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQ/bmV3IEZsb2F0MTZBcnJheSh0aGlzLmNtZHMpOm5ldyBGbG9hdDMyQXJyYXkodGhpcy5jbWRzKX19Y2xhc3MgQ29tcGlsZWRGb250eyNsZT1uZXcgU2V0OyNmZT1uZXcgTWFwO2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udE1hdHJpeD1lfXN0YXRpYyBnZXQgTk9PUCgpe3JldHVybiBzaGFkb3codGhpcywiTk9PUCIsRmVhdHVyZVRlc3QuaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQ/bmV3IEZsb2F0MTZBcnJheSgwKTpuZXcgRmxvYXQzMkFycmF5KDApKX1nZXRQYXRoKGUpe2NvbnN0e2NoYXJDb2RlOnQsZ2x5cGhJZDpufT1sb29rdXBDbWFwKHRoaXMuY21hcCxlKTtpZih0aGlzLiNmZS5oYXMobikmJnRoaXMuI2xlLmhhcyh0KSlyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuI2ZlLmdldE9ySW5zZXJ0Q29tcHV0ZWQobiwoKT0+e3RyeXtyZXR1cm4gdGhpcy5jb21waWxlR2x5cGgodGhpcy5nbHlwaHNbbl0sbil9Y2F0Y2goZSl7cmV0dXJuIGV9fSk7dGhpcy4jbGUuYWRkKHQpO2lmKGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3JldHVybiBmdW5jdGlvbiBjb21waWxlRm9udFBhdGhJbmZvKGUpe3JldHVybiBlLnNsaWNlKCkuYnVmZmVyfShhKX1jb21waWxlR2x5cGgoZSx0KXtpZighZT8ubGVuZ3RofHwxND09PWVbMF0pcmV0dXJuIENvbXBpbGVkRm9udC5OT09QO2xldCBuPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgodCk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXtuPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8c31lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KG4sNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBhPW5ldyBDb21tYW5kczthLnRyYW5zZm9ybShuLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLGEsdCk7YS5hZGQoYW4pO3JldHVybiBhLmdldFBhdGgoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfX1jbGFzcyBUcnVlVHlwZUNvbXBpbGVkIGV4dGVuZHMgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcihufHxbNDg4ZS02LDAsMCw0ODhlLTYsMCwwXSk7dGhpcy5nbHlwaHM9ZTt0aGlzLmNtYXA9dH1jb21waWxlR2x5cGhJbXBsKGUsdCl7Y29tcGlsZUdseWYoZSx0LHRoaXMpfX1jbGFzcyBUeXBlMkNvbXBpbGVkIGV4dGVuZHMgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUsdCxuKXtzdXBlcihufHxbLjAwMSwwLDAsLjAwMSwwLDBdKTt0aGlzLmdseXBocz1lLmdseXBoczt0aGlzLmdzdWJycz1lLmdzdWJyc3x8W107dGhpcy5zdWJycz1lLnN1YnJzfHxbXTt0aGlzLmNtYXA9dDt0aGlzLmdseXBoTmFtZU1hcD15YSgpO3RoaXMuZ3N1YnJzQmlhcz1nZXRTdWJyb3V0aW5lQmlhcyh0aGlzLmdzdWJycyk7dGhpcy5zdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5zdWJycyk7dGhpcy5pc0NGRkNJREZvbnQ9ZS5pc0NGRkNJREZvbnQ7dGhpcy5mZFNlbGVjdD1lLmZkU2VsZWN0O3RoaXMuZmRBcnJheT1lLmZkQXJyYXl9Y29tcGlsZUdseXBoSW1wbChlLHQsbil7Y29tcGlsZUNoYXJTdHJpbmcoZSx0LHRoaXMsbil9fWNsYXNzIEZvbnRSZW5kZXJlckZhY3Rvcnl7c3RhdGljIGNyZWF0ZShlLHQpe2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoZS5kYXRhKSxhPW5ldyBEYXRhVmlldyhuLmJ1ZmZlcik7bGV0IHIscyxpLG8sbCxmO2NvbnN0IGM9YS5nZXRVaW50MTYoNCk7Zm9yKGxldCBlPTAsaD0xMjtlPGM7ZSsrLGgrPTE2KXtjb25zdCBlPWJ5dGVzVG9TdHJpbmcobi5zdWJhcnJheShoLGgrNCkpLGM9YS5nZXRVaW50MzIoaCs4KSx1PWEuZ2V0VWludDMyKGgrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOnI9cGFyc2VDbWFwKG4sYyk7YnJlYWs7Y2FzZSJnbHlmIjpzPW4uc3ViYXJyYXkoYyxjK3UpO2JyZWFrO2Nhc2UibG9jYSI6aT1uLnN1YmFycmF5KGMsYyt1KTticmVhaztjYXNlImhlYWQiOmY9YS5nZXRVaW50MTYoYysxOCk7bD1hLmdldFVpbnQxNihjKzUwKTticmVhaztjYXNlIkNGRiAiOm89cGFyc2VDZmYobixjLGMrdSx0KX19aWYocyl7Y29uc3QgdD1mP1sxL2YsMCwwLDEvZiwwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LG4pe2NvbnN0IGE9bmV3IERhdGFWaWV3KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpO2xldCByLHM7aWYobil7cj00O3M9KGUsdCk9PmUuZ2V0VWludDMyKHQpfWVsc2V7cj0yO3M9KGUsdCk9PjIqZS5nZXRVaW50MTYodCl9Y29uc3QgaT1bXTtsZXQgbz1zKGEsMCk7Zm9yKGxldCBuPXI7bjx0Lmxlbmd0aDtuKz1yKXtjb25zdCB0PXMoYSxuKTtpLnB1c2goZS5zdWJhcnJheShvLHQpKTtvPXR9cmV0dXJuIGl9KHMsaSxsKSxyLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChvLHIsZS5mb250TWF0cml4KX19Y29uc3QgZXI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj02MDA7ZVsiQ291cmllci1Cb2xkIl09NjAwO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT02MDA7ZVsiQ291cmllci1PYmxpcXVlIl09NjAwO2UuSGVsdmV0aWNhPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlWyJIZWx2ZXRpY2EtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2VbIkhlbHZldGljYS1PYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pO2UuU3ltYm9sPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS51bml2ZXJzYWw9NzEzO2UubnVtYmVyc2lnbj01MDA7ZS5leGlzdGVudGlhbD01NDk7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5zdWNodGhhdD00Mzk7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlza21hdGg9NTAwO2UucGx1cz01NDk7ZS5jb21tYT0yNTA7ZS5taW51cz01NDk7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NDk7ZS5lcXVhbD01NDk7ZS5ncmVhdGVyPTU0OTtlLnF1ZXN0aW9uPTQ0NDtlLmNvbmdydWVudD01NDk7ZS5BbHBoYT03MjI7ZS5CZXRhPTY2NztlLkNoaT03MjI7ZS5EZWx0YT02MTI7ZS5FcHNpbG9uPTYxMTtlLlBoaT03NjM7ZS5HYW1tYT02MDM7ZS5FdGE9NzIyO2UuSW90YT0zMzM7ZS50aGV0YTE9NjMxO2UuS2FwcGE9NzIyO2UuTGFtYmRhPTY4NjtlLk11PTg4OTtlLk51PTcyMjtlLk9taWNyb249NzIyO2UuUGk9NzY4O2UuVGhldGE9NzQxO2UuUmhvPTU1NjtlLlNpZ21hPTU5MjtlLlRhdT02MTE7ZS5VcHNpbG9uPTY5MDtlLnNpZ21hMT00Mzk7ZS5PbWVnYT03Njg7ZS5YaT02NDU7ZS5Qc2k9Nzk1O2UuWmV0YT02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS50aGVyZWZvcmU9ODYzO2UuYnJhY2tldHJpZ2h0PTMzMztlLnBlcnBlbmRpY3VsYXI9NjU4O2UudW5kZXJzY29yZT01MDA7ZS5yYWRpY2FsZXg9NTAwO2UuYWxwaGE9NjMxO2UuYmV0YT01NDk7ZS5jaGk9NTQ5O2UuZGVsdGE9NDk0O2UuZXBzaWxvbj00Mzk7ZS5waGk9NTIxO2UuZ2FtbWE9NDExO2UuZXRhPTYwMztlLmlvdGE9MzI5O2UucGhpMT02MDM7ZS5rYXBwYT01NDk7ZS5sYW1iZGE9NTQ5O2UubXU9NTc2O2UubnU9NTIxO2Uub21pY3Jvbj01NDk7ZS5waT01NDk7ZS50aGV0YT01MjE7ZS5yaG89NTQ5O2Uuc2lnbWE9NjAzO2UudGF1PTQzOTtlLnVwc2lsb249NTc2O2Uub21lZ2ExPTcxMztlLm9tZWdhPTY4NjtlLnhpPTQ5MztlLnBzaT02ODY7ZS56ZXRhPTQ5NDtlLmJyYWNlbGVmdD00ODA7ZS5iYXI9MjAwO2UuYnJhY2VyaWdodD00ODA7ZS5zaW1pbGFyPTU0OTtlLkV1cm89NzUwO2UuVXBzaWxvbjE9NjIwO2UubWludXRlPTI0NztlLmxlc3NlcXVhbD01NDk7ZS5mcmFjdGlvbj0xNjc7ZS5pbmZpbml0eT03MTM7ZS5mbG9yaW49NTAwO2UuY2x1Yj03NTM7ZS5kaWFtb25kPTc1MztlLmhlYXJ0PTc1MztlLnNwYWRlPTc1MztlLmFycm93Ym90aD0xMDQyO2UuYXJyb3dsZWZ0PTk4NztlLmFycm93dXA9NjAzO2UuYXJyb3dyaWdodD05ODc7ZS5hcnJvd2Rvd249NjAzO2UuZGVncmVlPTQwMDtlLnBsdXNtaW51cz01NDk7ZS5zZWNvbmQ9NDExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLm11bHRpcGx5PTU0OTtlLnByb3BvcnRpb25hbD03MTM7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS5idWxsZXQ9NDYwO2UuZGl2aWRlPTU0OTtlLm5vdGVxdWFsPTU0OTtlLmVxdWl2YWxlbmNlPTU0OTtlLmFwcHJveGVxdWFsPTU0OTtlLmVsbGlwc2lzPTFlMztlLmFycm93dmVydGV4PTYwMztlLmFycm93aG9yaXpleD0xZTM7ZS5jYXJyaWFnZXJldHVybj02NTg7ZS5hbGVwaD04MjM7ZS5JZnJha3R1cj02ODY7ZS5SZnJha3R1cj03OTU7ZS53ZWllcnN0cmFzcz05ODc7ZS5jaXJjbGVtdWx0aXBseT03Njg7ZS5jaXJjbGVwbHVzPTc2ODtlLmVtcHR5c2V0PTgyMztlLmludGVyc2VjdGlvbj03Njg7ZS51bmlvbj03Njg7ZS5wcm9wZXJzdXBlcnNldD03MTM7ZS5yZWZsZXhzdXBlcnNldD03MTM7ZS5ub3RzdWJzZXQ9NzEzO2UucHJvcGVyc3Vic2V0PTcxMztlLnJlZmxleHN1YnNldD03MTM7ZS5lbGVtZW50PTcxMztlLm5vdGVsZW1lbnQ9NzEzO2UuYW5nbGU9NzY4O2UuZ3JhZGllbnQ9NzEzO2UucmVnaXN0ZXJzZXJpZj03OTA7ZS5jb3B5cmlnaHRzZXJpZj03OTA7ZS50cmFkZW1hcmtzZXJpZj04OTA7ZS5wcm9kdWN0PTgyMztlLnJhZGljYWw9NTQ5O2UuZG90bWF0aD0yNTA7ZS5sb2dpY2Fsbm90PTcxMztlLmxvZ2ljYWxhbmQ9NjAzO2UubG9naWNhbG9yPTYwMztlLmFycm93ZGJsYm90aD0xMDQyO2UuYXJyb3dkYmxsZWZ0PTk4NztlLmFycm93ZGJsdXA9NjAzO2UuYXJyb3dkYmxyaWdodD05ODc7ZS5hcnJvd2RibGRvd249NjAzO2UubG96ZW5nZT00OTQ7ZS5hbmdsZWxlZnQ9MzI5O2UucmVnaXN0ZXJzYW5zPTc5MDtlLmNvcHlyaWdodHNhbnM9NzkwO2UudHJhZGVtYXJrc2Fucz03ODY7ZS5zdW1tYXRpb249NzEzO2UucGFyZW5sZWZ0dHA9Mzg0O2UucGFyZW5sZWZ0ZXg9Mzg0O2UucGFyZW5sZWZ0YnQ9Mzg0O2UuYnJhY2tldGxlZnR0cD0zODQ7ZS5icmFja2V0bGVmdGV4PTM4NDtlLmJyYWNrZXRsZWZ0YnQ9Mzg0O2UuYnJhY2VsZWZ0dHA9NDk0O2UuYnJhY2VsZWZ0bWlkPTQ5NDtlLmJyYWNlbGVmdGJ0PTQ5NDtlLmJyYWNlZXg9NDk0O2UuYW5nbGVyaWdodD0zMjk7ZS5pbnRlZ3JhbD0yNzQ7ZS5pbnRlZ3JhbHRwPTY4NjtlLmludGVncmFsZXg9Njg2O2UuaW50ZWdyYWxidD02ODY7ZS5wYXJlbnJpZ2h0dHA9Mzg0O2UucGFyZW5yaWdodGV4PTM4NDtlLnBhcmVucmlnaHRidD0zODQ7ZS5icmFja2V0cmlnaHR0cD0zODQ7ZS5icmFja2V0cmlnaHRleD0zODQ7ZS5icmFja2V0cmlnaHRidD0zODQ7ZS5icmFjZXJpZ2h0dHA9NDk0O2UuYnJhY2VyaWdodG1pZD00OTQ7ZS5icmFjZXJpZ2h0YnQ9NDk0O2UuYXBwbGU9NzkwfSk7ZVsiVGltZXMtUm9tYW4iXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDA4O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU2NDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NjQ7ZS5lcXVhbD01NjQ7ZS5ncmVhdGVyPTU2NDtlLnF1ZXN0aW9uPTQ0NDtlLmF0PTkyMTtlLkE9NzIyO2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTU1NjtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9Mzg5O2UuSz03MjI7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NTU2O2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NzIyO2UuVz05NDQ7ZS5YPTcyMjtlLlk9NzIyO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NDQ0O2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTMzMztlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTE4MDtlLnF1b3RlZGJsbGVmdD00NDQ7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTQ1MztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NDQ0O2UucXVvdGVkYmxyaWdodD00NDQ7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NDQ0O2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTg4OTtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NDQ0O2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NjQ7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTQ0NDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NDQ0O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NDQ0O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NDQ0O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NDQ0O2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD00NDQ7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTU1NjtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NTg4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU2NDtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NDQ0O2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz01NjQ7ZS5icm9rZW5iYXI9MjAwO2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMyNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NDQ0O2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM0NDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTY0O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU2NDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlWyJUaW1lcy1Cb2xkIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTU1NTtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9MWUzO2UuYW1wZXJzYW5kPTgzMztlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NzA7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249MzMzO2Uuc2VtaWNvbG9uPTMzMztlLmxlc3M9NTcwO2UuZXF1YWw9NTcwO2UuZ3JlYXRlcj01NzA7ZS5xdWVzdGlvbj01MDA7ZS5hdD05MzA7ZS5BPTcyMjtlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9Nzc4O2UuST0zODk7ZS5KPTUwMDtlLks9Nzc4O2UuTD02Njc7ZS5NPTk0NDtlLk49NzIyO2UuTz03Nzg7ZS5QPTYxMTtlLlE9Nzc4O2UuUj03MjI7ZS5TPTU1NjtlLlQ9NjY3O2UuVT03MjI7ZS5WPTcyMjtlLlc9MWUzO2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjY3O2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT01ODE7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTUwMDtlLmI9NTU2O2UuYz00NDQ7ZS5kPTU1NjtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTU2O2UuaT0yNzg7ZS5qPTMzMztlLms9NTU2O2UubD0yNzg7ZS5tPTgzMztlLm49NTU2O2Uubz01MDA7ZS5wPTU1NjtlLnE9NTU2O2Uucj00NDQ7ZS5zPTM4OTtlLnQ9MzMzO2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTM5NDtlLmJhcj0yMjA7ZS5icmFjZXJpZ2h0PTM5NDtlLmFzY2lpdGlsZGU9NTIwO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0yNzg7ZS5xdW90ZWRibGxlZnQ9NTAwO2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD01NDA7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTUwMDtlLnF1b3RlZGJscmlnaHQ9NTAwO2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTUwMDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzAwO2UuTHNsYXNoPTY2NztlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzMwO2UuYWU9NzIyO2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTU1NjtlLklkaWVyZXNpcz0zODk7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTUwMDtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTcwO2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT01MDA7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTUwMDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc0NztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTUwMDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTUwMDtlLlRjb21tYWFjY2VudD02Njc7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTUwMDtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ5NDtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTAwO2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249NDQ0O2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02Njc7ZS5UaG9ybj02MTE7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTY3MjtlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NzA7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTY2NztlLnBhcnRpYWxkaWZmPTQ5NDtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTUwMDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zODk7ZS5wbHVzbWludXM9NTcwO2UuYnJva2VuYmFyPTIyMDtlLnJlZ2lzdGVyZWQ9NzQ3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mzg5O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9NDQ0O2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjY3O2UuWmNhcm9uPTY2NztlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj00MTY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTUwMDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zOTQ7ZS5LY29tbWFhY2NlbnQ9Nzc4O2UuTGFjdXRlPTY2NztlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zODk7ZS5JbWFjcm9uPTM4OTtlLkxjYXJvbj02Njc7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NTQ5O2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD00NDQ7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NjY3O2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mzg5O2Uua2NvbW1hYWNjZW50PTU1NjtlLm1pbnVzPTU3MDtlLkljaXJjdW1mbGV4PTM4OTtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9MzMzO2UubG9naWNhbG5vdD01NzA7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zODk7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9ODMyO2UuQT02Njc7ZS5CPTY2NztlLkM9NjY3O2UuRD03MjI7ZS5FPTY2NztlLkY9NjY3O2UuRz03MjI7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTY2NztlLkw9NjExO2UuTT04ODk7ZS5OPTcyMjtlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjY3O2UuUz01NTY7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTg4OTtlLlg9NjY3O2UuWT02MTE7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTcwO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTUwMDtlLmw9Mjc4O2UubT03Nzg7ZS5uPTU1NjtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTU2O2Uudj00NDQ7ZS53PTY2NztlLng9NTAwO2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD0zNDg7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zNDg7ZS5hc2NpaXRpbGRlPTU3MDtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTAwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTk0NDtlLm9yZGZlbWluaW5lPTI2NjtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMwMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NjExO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT02MTE7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NjY3O2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjY3O2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjY3O2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02MDg7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzY2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTc2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249MzgyO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjY3O2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz02MDY7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NjA2O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2VbIlRpbWVzLUl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MjA7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9Njc1O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTY3NTtlLmVxdWFsPTY3NTtlLmdyZWF0ZXI9Njc1O2UucXVlc3Rpb249NTAwO2UuYXQ9OTIwO2UuQT02MTE7ZS5CPTYxMTtlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NjExO2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj00NDQ7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTY2NztlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjExO2UuUz01MDA7ZS5UPTU1NjtlLlU9NzIyO2UuVj02MTE7ZS5XPTgzMztlLlg9NjExO2UuWT01NTY7ZS5aPTU1NjtlLmJyYWNrZXRsZWZ0PTM4OTtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mzg5O2UuYXNjaWljaXJjdW09NDIyO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9Mjc4O2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTQ0NDtlLmw9Mjc4O2UubT03MjI7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj00NDQ7ZS53PTY2NztlLng9NDQ0O2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD00MDA7ZS5iYXI9Mjc1O2UuYnJhY2VyaWdodD00MDA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MjE0O2UucXVvdGVkYmxsZWZ0PTU1NjtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTIzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01NTY7ZS5xdW90ZWRibHJpZ2h0PTU1NjtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTg4OTtlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTg4OTtlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NjY3O2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NTU2O2UuZGl2aWRlPTY3NTtlLllhY3V0ZT01NTY7ZS5BY2lyY3VtZmxleD02MTE7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NjY3O2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NTU2O2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjExO2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjExO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NTU2O2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjExO2UuU2FjdXRlPTUwMDtlLmRjYXJvbj01NDQ7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02MTE7ZS5BYnJldmU9NjExO2UubXVsdGlwbHk9Njc1O2UudWFjdXRlPTUwMDtlLlRjYXJvbj01NTY7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTY2NztlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj02Njc7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTY3NTtlLmJyb2tlbmJhcj0yNzU7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTU1NjtlLlpjYXJvbj01NTY7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzAwO2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02MTE7ZS5BZGllcmVzaXM9NjExO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01MDA7ZS5sY2Fyb249MzAwO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTUwMDtlLlNjb21tYWFjY2VudD01MDA7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTY2NztlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjExO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02MTE7ZS5Bb2dvbmVrPTYxMTtlLkFyaW5nPTYxMTtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD00NDQ7ZS5taW51cz02NzU7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9Njc1O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2UuWmFwZkRpbmdiYXRzPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmExPTk3NDtlLmEyPTk2MTtlLmEyMDI9OTc0O2UuYTM9OTgwO2UuYTQ9NzE5O2UuYTU9Nzg5O2UuYTExOT03OTA7ZS5hMTE4PTc5MTtlLmExMTc9NjkwO2UuYTExPTk2MDtlLmExMj05Mzk7ZS5hMTM9NTQ5O2UuYTE0PTg1NTtlLmExNT05MTE7ZS5hMTY9OTMzO2UuYTEwNT05MTE7ZS5hMTc9OTQ1O2UuYTE4PTk3NDtlLmExOT03NTU7ZS5hMjA9ODQ2O2UuYTIxPTc2MjtlLmEyMj03NjE7ZS5hMjM9NTcxO2UuYTI0PTY3NztlLmEyNT03NjM7ZS5hMjY9NzYwO2UuYTI3PTc1OTtlLmEyOD03NTQ7ZS5hNj00OTQ7ZS5hNz01NTI7ZS5hOD01Mzc7ZS5hOT01Nzc7ZS5hMTA9NjkyO2UuYTI5PTc4NjtlLmEzMD03ODg7ZS5hMzE9Nzg4O2UuYTMyPTc5MDtlLmEzMz03OTM7ZS5hMzQ9Nzk0O2UuYTM1PTgxNjtlLmEzNj04MjM7ZS5hMzc9Nzg5O2UuYTM4PTg0MTtlLmEzOT04MjM7ZS5hNDA9ODMzO2UuYTQxPTgxNjtlLmE0Mj04MzE7ZS5hNDM9OTIzO2UuYTQ0PTc0NDtlLmE0NT03MjM7ZS5hNDY9NzQ5O2UuYTQ3PTc5MDtlLmE0OD03OTI7ZS5hNDk9Njk1O2UuYTUwPTc3NjtlLmE1MT03Njg7ZS5hNTI9NzkyO2UuYTUzPTc1OTtlLmE1ND03MDc7ZS5hNTU9NzA4O2UuYTU2PTY4MjtlLmE1Nz03MDE7ZS5hNTg9ODI2O2UuYTU5PTgxNTtlLmE2MD03ODk7ZS5hNjE9Nzg5O2UuYTYyPTcwNztlLmE2Mz02ODc7ZS5hNjQ9Njk2O2UuYTY1PTY4OTtlLmE2Nj03ODY7ZS5hNjc9Nzg3O2UuYTY4PTcxMztlLmE2OT03OTE7ZS5hNzA9Nzg1O2UuYTcxPTc5MTtlLmE3Mj04NzM7ZS5hNzM9NzYxO2UuYTc0PTc2MjtlLmEyMDM9NzYyO2UuYTc1PTc1OTtlLmEyMDQ9NzU5O2UuYTc2PTg5MjtlLmE3Nz04OTI7ZS5hNzg9Nzg4O2UuYTc5PTc4NDtlLmE4MT00Mzg7ZS5hODI9MTM4O2UuYTgzPTI3NztlLmE4ND00MTU7ZS5hOTc9MzkyO2UuYTk4PTM5MjtlLmE5OT02Njg7ZS5hMTAwPTY2ODtlLmE4OT0zOTA7ZS5hOTA9MzkwO2UuYTkzPTMxNztlLmE5ND0zMTc7ZS5hOTE9Mjc2O2UuYTkyPTI3NjtlLmEyMDU9NTA5O2UuYTg1PTUwOTtlLmEyMDY9NDEwO2UuYTg2PTQxMDtlLmE4Nz0yMzQ7ZS5hODg9MjM0O2UuYTk1PTMzNDtlLmE5Nj0zMzQ7ZS5hMTAxPTczMjtlLmExMDI9NTQ0O2UuYTEwMz01NDQ7ZS5hMTA0PTkxMDtlLmExMDY9NjY3O2UuYTEwNz03NjA7ZS5hMTA4PTc2MDtlLmExMTI9Nzc2O2UuYTExMT01OTU7ZS5hMTEwPTY5NDtlLmExMDk9NjI2O2UuYTEyMD03ODg7ZS5hMTIxPTc4ODtlLmExMjI9Nzg4O2UuYTEyMz03ODg7ZS5hMTI0PTc4ODtlLmExMjU9Nzg4O2UuYTEyNj03ODg7ZS5hMTI3PTc4ODtlLmExMjg9Nzg4O2UuYTEyOT03ODg7ZS5hMTMwPTc4ODtlLmExMzE9Nzg4O2UuYTEzMj03ODg7ZS5hMTMzPTc4ODtlLmExMzQ9Nzg4O2UuYTEzNT03ODg7ZS5hMTM2PTc4ODtlLmExMzc9Nzg4O2UuYTEzOD03ODg7ZS5hMTM5PTc4ODtlLmExNDA9Nzg4O2UuYTE0MT03ODg7ZS5hMTQyPTc4ODtlLmExNDM9Nzg4O2UuYTE0ND03ODg7ZS5hMTQ1PTc4ODtlLmExNDY9Nzg4O2UuYTE0Nz03ODg7ZS5hMTQ4PTc4ODtlLmExNDk9Nzg4O2UuYTE1MD03ODg7ZS5hMTUxPTc4ODtlLmExNTI9Nzg4O2UuYTE1Mz03ODg7ZS5hMTU0PTc4ODtlLmExNTU9Nzg4O2UuYTE1Nj03ODg7ZS5hMTU3PTc4ODtlLmExNTg9Nzg4O2UuYTE1OT03ODg7ZS5hMTYwPTg5NDtlLmExNjE9ODM4O2UuYTE2Mz0xMDE2O2UuYTE2ND00NTg7ZS5hMTk2PTc0ODtlLmExNjU9OTI0O2UuYTE5Mj03NDg7ZS5hMTY2PTkxODtlLmExNjc9OTI3O2UuYTE2OD05Mjg7ZS5hMTY5PTkyODtlLmExNzA9ODM0O2UuYTE3MT04NzM7ZS5hMTcyPTgyODtlLmExNzM9OTI0O2UuYTE2Mj05MjQ7ZS5hMTc0PTkxNztlLmExNzU9OTMwO2UuYTE3Nj05MzE7ZS5hMTc3PTQ2MztlLmExNzg9ODgzO2UuYTE3OT04MzY7ZS5hMTkzPTgzNjtlLmExODA9ODY3O2UuYTE5OT04Njc7ZS5hMTgxPTY5NjtlLmEyMDA9Njk2O2UuYTE4Mj04NzQ7ZS5hMjAxPTg3NDtlLmExODM9NzYwO2UuYTE4ND05NDY7ZS5hMTk3PTc3MTtlLmExODU9ODY1O2UuYTE5ND03NzE7ZS5hMTk4PTg4ODtlLmExODY9OTY3O2UuYTE5NT04ODg7ZS5hMTg3PTgzMTtlLmExODg9ODczO2UuYTE4OT05Mjc7ZS5hMTkwPTk3MDtlLmExOTE9OTE4fSl9KSx0cj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6LTQyNn07ZVsiQ291cmllci1Cb2xkIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0Mzl9O2VbIkNvdXJpZXItT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2UuSGVsdmV0aWNhPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTIzfTtlWyJIZWx2ZXRpY2EtQm9sZCJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTIzfTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiVGltZXMtUm9tYW4iXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2Mix4SGVpZ2h0OjQ1MH07ZVsiVGltZXMtQm9sZCJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6Njc2LHhIZWlnaHQ6NDYxfTtlWyJUaW1lcy1JdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY1Myx4SGVpZ2h0OjQ0MX07ZVsiVGltZXMtQm9sZEl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjY5LHhIZWlnaHQ6NDYyfTtlLlN5bWJvbD17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59O2UuWmFwZkRpbmdiYXRzPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn19KTtjbGFzcyBPcGVuVHlwZUZpbGVCdWlsZGVyeyNjZT1uZXcgTWFwO2NvbnN0cnVjdG9yKGUpe3RoaXMuc2ZudD1lfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgbj0xLGE9MDtmb3IoOyhuXmUpPm47KXtuPDw9MTthKyt9Y29uc3Qgcj1uKnQ7cmV0dXJue3JhbmdlOnIsZW50cnk6YSxyYW5nZVNoaWZ0OnQqZS1yfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy4jY2Usbj1bLi4udC5rZXlzKCldLnNvcnQoKSxhPW4ubGVuZ3RoO2xldCByPTEyKzE2KmE7Y29uc3Qgcz1bcl07Zm9yKGxldCBlPTA7ZTxhO2UrKyl7cis9KHQuZ2V0KG5bZV0pLmxlbmd0aCszJi00KT4+PjA7cy5wdXNoKHIpfWNvbnN0IGk9bmV3IFVpbnQ4QXJyYXkociksbz1uZXcgRGF0YVZpZXcoaS5idWZmZXIpO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGE9dC5nZXQobltlXSk7aS5zZXQoYSxzW2VdKX0idHJ1ZSI9PT1lJiYoZT0iXDABXDBcMCIpO2kuc2V0KHN0cmluZ1RvQnl0ZXMoZSksMCk7by5zZXRJbnQxNig0LGEpO2NvbnN0IGw9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoYSwxNik7by5zZXRJbnQxNig2LGwucmFuZ2UpO28uc2V0SW50MTYoOCxsLmVudHJ5KTtvLnNldEludDE2KDEwLGwucmFuZ2VTaGlmdCk7cj0xMjtmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCBhPW5bZV07aS5zZXQoc3RyaW5nVG9CeXRlcyhhKSxyKTtsZXQgbD0wO2ZvcihsZXQgdD1zW2VdLG49c1tlKzFdO3Q8bjt0Kz00KXtsPWwrby5nZXRVaW50MzIodCk+Pj4wfW8uc2V0SW50MzIocis0LGwpO28uc2V0SW50MzIocis4LHNbZV0pO28uc2V0SW50MzIocisxMix0LmdldChhKS5sZW5ndGgpO3IrPTE2fXRoaXMuI2NlLmNsZWFyKCk7cmV0dXJuIGl9YWRkVGFibGUoZSx0KXtpZih0aGlzLiNjZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKGBUYWJsZSAke2V9IGFscmVhZHkgZXhpc3RzYCk7dGhpcy4jY2Uuc2V0KGUsdCl9fWNvbnN0IG5yPVs0XSxhcj1bNV0scnI9WzZdLHNyPVs3XSxpcj1bOF0sb3I9WzEyLDM1XSxscj1bMTRdLGZyPVsyMV0sY3I9WzIyXSxocj1bMzBdLHVyPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne3dpZHRoPTA7bHNiPTA7ZmxleGluZz0hMTtvdXRwdXQ9W107c3RhY2s9W107Y29udmVydChlLHQsbil7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcixzLGksbz0hMTtmb3IobGV0IGw9MDtsPGE7bCsrKXtsZXQgYT1lW2xdO2lmKGE8MzIpezEyPT09YSYmKGE9KGE8PDgpK2VbKytsXSk7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLG5yKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsYXIpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxycik7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLHNyKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsaXIpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31pPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbaV0pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtpXSx0LG4pO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXI9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsY3IpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChsclswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsZnIpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsY3IpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsaHIpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsdXIpO2JyZWFrO2Nhc2UgMzA3ODppZihuKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsbHIpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsbHIpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyxlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxmcik7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgbD10aGlzLnN0YWNrLnBvcCgpLGY9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goZi9sKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31pPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgYz10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1pJiYzPT09Yyl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsb3IsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PWkmJjA9PT1jJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrYSsnIicpfWlmKG8pYnJlYWt9ZWxzZXthPD0yNDY/YS09MTM5OmE9YTw9MjUwPzI1NiooYS0yNDcpK2VbKytsXSsxMDg6YTw9MjU0Py0yNTYqKGEtMjUxKS1lWysrbF0tMTA4OigyNTUmZVsrK2xdKTw8MjR8KDI1NSZlWysrbF0pPDwxNnwoMjU1JmVbKytsXSk8PDh8MjU1JmVbKytsXTt0aGlzLnN0YWNrLnB1c2goYSl9fXJldHVybiBvfWV4ZWN1dGVDb21tYW5kKGUsdCxuKXtjb25zdCBhPXRoaXMuc3RhY2subGVuZ3RoO2lmKGU+YSlyZXR1cm4hMDtjb25zdCByPWEtZTtmb3IobGV0IGU9cjtlPGE7ZSsrKXtsZXQgdD10aGlzLnN0YWNrW2VdO2lmKE51bWJlci5pc0ludGVnZXIodCkpdGhpcy5vdXRwdXQucHVzaCgyOCx0Pj44JjI1NSwyNTUmdCk7ZWxzZXt0PTY1NTM2KnR8MDt0aGlzLm91dHB1dC5wdXNoKDI1NSx0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0KX19dGhpcy5vdXRwdXQucHVzaCguLi50KTtuP3RoaXMuc3RhY2suc3BsaWNlKHIsZSk6dGhpcy5zdGFjay5sZW5ndGg9MDtyZXR1cm4hMX19ZnVuY3Rpb24gaXNIZXhEaWdpdChlKXtyZXR1cm4gZT49NDgmJmU8PTU3fHxlPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDJ9ZnVuY3Rpb24gZGVjcnlwdChlLHQsbil7aWYobj49ZS5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBhLHIscz0wfHQ7Zm9yKGE9MDthPG47YSsrKXM9NTI4NDUqKGVbYV0rcykrMjI3MTkmNjU1MzU7Y29uc3QgaT1lLmxlbmd0aC1uLG89bmV3IFVpbnQ4QXJyYXkoaSk7Zm9yKGE9bixyPTA7cjxpO2ErKyxyKyspe2NvbnN0IHQ9ZVthXTtvW3JdPXRecz4+ODtzPTUyODQ1Kih0K3MpKzIyNzE5JjY1NTM1fXJldHVybiBvfWZ1bmN0aW9uIGlzU3BlY2lhbChlKXtyZXR1cm4gNDc9PT1lfHw5MT09PWV8fDkzPT09ZXx8MTIzPT09ZXx8MTI1PT09ZXx8NDA9PT1lfHw0MT09PWV9Y2xhc3MgVHlwZTFQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LG4pe2lmKHQpe2NvbnN0IHQ9ZS5nZXRCeXRlcygpLG49ISgoaXNIZXhEaWdpdCh0WzBdKXx8aXNXaGl0ZVNwYWNlKHRbMF0pKSYmaXNIZXhEaWdpdCh0WzFdKSYmaXNIZXhEaWdpdCh0WzJdKSYmaXNIZXhEaWdpdCh0WzNdKSYmaXNIZXhEaWdpdCh0WzRdKSYmaXNIZXhEaWdpdCh0WzVdKSYmaXNIZXhEaWdpdCh0WzZdKSYmaXNIZXhEaWdpdCh0WzddKSk7ZT1uZXcgU3RyZWFtKG4/ZGVjcnlwdCh0LDU1NjY1LDQpOmZ1bmN0aW9uIGRlY3J5cHRBc2NpaShlLHQsbil7bGV0IGE9MHx0O2NvbnN0IHI9ZS5sZW5ndGgscz1uZXcgVWludDhBcnJheShyPj4+MSk7bGV0IGksbztmb3IoaT0wLG89MDtpPHI7aSsrKXtjb25zdCB0PWVbaV07aWYoIWlzSGV4RGlnaXQodCkpY29udGludWU7aSsrO2xldCBuO2Zvcig7aTxyJiYhaXNIZXhEaWdpdChuPWVbaV0pOylpKys7aWYoaTxyKXtjb25zdCBlPXBhcnNlSW50KFN0cmluZy5mcm9tQ2hhckNvZGUodCxuKSwxNik7c1tvKytdPWVeYT4+ODthPTUyODQ1KihlK2EpKzIyNzE5JjY1NTM1fX1yZXR1cm4gcy5zbGljZShuLG8pfSh0LDU1NjY1LDQpKX10aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFuO3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpfXJlYWROdW1iZXJBcnJheSgpe3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXR8fCJdIj09PXR8fCJ9Ij09PXQpYnJlYWs7ZS5wdXNoKHBhcnNlRmxvYXQodHx8MCkpfXJldHVybiBlfXJlYWROdW1iZXIoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gcGFyc2VGbG9hdChlfHwwKX1yZWFkSW50KCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIDB8cGFyc2VJbnQoZXx8MCwxMCl9cmVhZEJvb2xlYW4oKXtyZXR1cm4idHJ1ZSI9PT10aGlzLmdldFRva2VuKCk/MTowfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfXByZXZDaGFyKCl7dGhpcy5zdHJlYW0uc2tpcCgtMik7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYoLTE9PT10KXJldHVybiBudWxsO2lmKGUpMTAhPT10JiYxMyE9PXR8fChlPSExKTtlbHNlIGlmKDM3PT09dCllPSEwO2Vsc2UgaWYoIWlzV2hpdGVTcGFjZSh0KSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1pZihpc1NwZWNpYWwodCkpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0KX1sZXQgbj0iIjtkb3tuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3Q9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKHQ+PTAmJiFpc1doaXRlU3BhY2UodCkmJiFpc1NwZWNpYWwodCkpO3JldHVybiBufXJlYWRDaGFyU3RyaW5ncyhlLHQpe3JldHVybi0xPT09dD9lOmRlY3J5cHQoZSw0MzMwLHQpfWV4dHJhY3RGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLG49W10sYT1bXSxyPW5ldyBNYXAoW1sibGVuSVYiLDRdXSkscz17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6cn19O2xldCBpLG8sbCxmPSExLGM9ITE7Zm9yKDtudWxsIT09KGk9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09aSl7aT10aGlzLmdldFRva2VuKCk7c3dpdGNoKGkpe2Nhc2UiQ2hhclN0cmluZ3MiOmlmKGMpYnJlYWs7Yz0hMDt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtpPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09aXx8ImVuZCI9PT1pKWJyZWFrO2lmKCIvIiE9PWkpY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7bD1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjb25zdCBuPXRoaXMucmVhZENoYXJTdHJpbmdzKGwsci5nZXQoImxlbklWIikpO3RoaXMubmV4dENoYXIoKTtpPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09aT90aGlzLmdldFRva2VuKCk6Ii8iPT09aSYmdGhpcy5wcmV2Q2hhcigpO2EucHVzaCh7Z2x5cGg6ZSxlbmNvZGVkOm59KX1icmVhaztjYXNlIlN1YnJzIjppZihmKWJyZWFrO2Y9ITA7dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCI9PT10aGlzLmdldFRva2VuKCk7KXtjb25zdCBlPXRoaXMucmVhZEludCgpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2w9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3QgYT10aGlzLnJlYWRDaGFyU3RyaW5ncyhsLHIuZ2V0KCJsZW5JViIpKTt0aGlzLm5leHRDaGFyKCk7aT10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PWkmJnRoaXMuZ2V0VG9rZW4oKTtuW2VdPWF9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTswO2JyZWFrO2Nhc2UiU3RlbVNuYXBIIjpjYXNlIlN0ZW1TbmFwViI6ci5zZXQoaSx0aGlzLnJlYWROdW1iZXJBcnJheSgpKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjpyLnNldChpLHRoaXMucmVhZE51bWJlckFycmF5KClbMF0pO2JyZWFrO2Nhc2UiQmx1ZVNoaWZ0IjpjYXNlImxlbklWIjpjYXNlIkJsdWVGdXp6IjpjYXNlIkJsdWVTY2FsZSI6Y2FzZSJMYW5ndWFnZUdyb3VwIjpyLnNldChpLHRoaXMucmVhZE51bWJlcigpKTticmVhaztjYXNlIkV4cGFuc2lvbkZhY3RvciI6ci5zZXQoaSx0aGlzLnJlYWROdW1iZXIoKXx8LjA2KTticmVhaztjYXNlIkZvcmNlQm9sZCI6ci5zZXQoaSx0aGlzLnJlYWRCb29sZWFuKCkpfX1mb3IoY29uc3R7ZW5jb2RlZDp0LGdseXBoOnJ9b2YgYSl7Y29uc3QgYT1uZXcgVHlwZTFDaGFyU3RyaW5nLGk9e2dseXBoTmFtZTpyLGNoYXJzdHJpbmc6YS5jb252ZXJ0KHQsbix0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpP1sxNF06YS5vdXRwdXQsd2lkdGg6YS53aWR0aCxsc2I6YS5sc2Isc2VhYzphLnNlYWN9OyIubm90ZGVmIj09PXI/cy5jaGFyc3RyaW5ncy51bnNoaWZ0KGkpOnMuY2hhcnN0cmluZ3MucHVzaChpKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKHIpO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPWEud2lkdGgpfX1yZXR1cm4gc31leHRyYWN0Q2lkS2V5ZWRGb250UHJvZ3JhbShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLG49bmV3IE1hcChbWyJsZW5JViIsNF1dKSxhPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTpufX07bGV0IHI9MCxzPS0xLGk9MSxvPTAsbD0tMSxmPTAsYz0wLGg9MCx1PSExLG09ITE7Y29uc3QgcD1bXTtmdW5jdGlvbiByZW1lbWJlclRva2VuKGUpe3AucHVzaChlKTtwLmxlbmd0aD40JiZwLnNoaWZ0KCl9bGV0IGQ7Zm9yKDtudWxsIT09KGQ9dGhpcy5nZXRUb2tlbigpKTspe2lmKCJTdGFydERhdGEiPT09ZCl7Y29uc3QgZT1wLmF0KC0zKSx0PXAuYXQoLTEpO2lmKCIoIiE9PXAuYXQoLTQpfHwiKSIhPT1wLmF0KC0yKXx8IkJpbmFyeSIhPT1lJiYiSGV4IiE9PWV8fCEvXlxkKyQvLnRlc3QodCkpcmV0dXJuIG51bGw7aD1wYXJzZUludCh0LDEwKTtpZihoPD0wKXJldHVybiBudWxsO3U9IkhleCI9PT1lO209ITA7YnJlYWt9cmVtZW1iZXJUb2tlbihkKTtpZigiLyI9PT1kKXtkPXRoaXMuZ2V0VG9rZW4oKTtyZW1lbWJlclRva2VuKGQpO3N3aXRjaChkKXtjYXNlIkZvbnRNYXRyaXgiOmUuZm9udE1hdHJpeD10aGlzLnJlYWROdW1iZXJBcnJheSgpO2JyZWFrO2Nhc2UiRm9udEJCb3giOmNvbnN0IHQ9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmFzY2VudD1NYXRoLm1heCh0WzNdLHRbMV0pO2UuZGVzY2VudD1NYXRoLm1pbih0WzFdLHRbM10pO2UuYXNjZW50U2NhbGVkPSEwO2JyZWFrO2Nhc2UiQ0lEQ291bnQiOnI9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJDSURNYXBPZmZzZXQiOnM9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJGREJ5dGVzIjppPXRoaXMucmVhZEludCgpO2JyZWFrO2Nhc2UiR0RCeXRlcyI6bz10aGlzLnJlYWRJbnQoKTticmVhaztjYXNlIlN1YnJNYXBPZmZzZXQiOmw9dGhpcy5yZWFkSW50KCk7YnJlYWs7Y2FzZSJTREJ5dGVzIjpmPXRoaXMucmVhZEludCgpO2JyZWFrO2Nhc2UiU3VickNvdW50IjpjPXRoaXMucmVhZEludCgpO2JyZWFrO2Nhc2UiQmx1ZVZhbHVlcyI6Y2FzZSJPdGhlckJsdWVzIjpjYXNlIkZhbWlseUJsdWVzIjpjYXNlIkZhbWlseU90aGVyQmx1ZXMiOnRoaXMucmVhZE51bWJlckFycmF5KCk7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjpuLnNldChkLHRoaXMucmVhZE51bWJlckFycmF5KCkpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOm4uc2V0KGQsdGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXSk7YnJlYWs7Y2FzZSJCbHVlU2hpZnQiOmNhc2UibGVuSVYiOmNhc2UiQmx1ZUZ1enoiOmNhc2UiQmx1ZVNjYWxlIjpjYXNlIkxhbmd1YWdlR3JvdXAiOm4uc2V0KGQsdGhpcy5yZWFkTnVtYmVyKCkpO2JyZWFrO2Nhc2UiRXhwYW5zaW9uRmFjdG9yIjpuLnNldChkLHRoaXMucmVhZE51bWJlcigpfHwuMDYpO2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjpuLnNldChkLHRoaXMucmVhZEJvb2xlYW4oKSl9fX1pZighbXx8cjw9MHx8czwwfHxpPDB8fGk+NHx8bzwxfHxvPjQpcmV0dXJuIG51bGw7Y29uc3QgZz10LmVuZC10LnBvcztpZihoPmcpaWYodSl7aWYoaD4yKmcpcmV0dXJuIG51bGx9ZWxzZSBoPWc7bGV0IGI9dC5nZXRCeXRlcyh1P3ZvaWQgMDpoKTtpZih1KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGgpO2xldCB0PS0xLG49MDtmb3IobGV0IGE9MCxyPWIubGVuZ3RoO2E8ciYmbjxoO2ErKyl7Y29uc3Qgcj1iW2FdO2lmKGlzSGV4RGlnaXQocikpaWYodDwwKXQ9cjtlbHNle2VbbisrXT1wYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKHQsciksMTYpO3Q9LTF9fWlmKG4hPT1oKXJldHVybiBudWxsO2I9ZX1jb25zdCB3PW4uZ2V0KCJsZW5JViIpLGo9aStvLGs9W107ZnVuY3Rpb24gcmVhZFVpbnQoZSx0KXtsZXQgbj0wO2ZvcihsZXQgYT0wO2E8dDthKyspbj1uPDw4fGJbZSthXTtyZXR1cm4gbj4+PjB9aWYocysocisxKSpqPmIubGVuZ3RofHxjPjAmJihsPDB8fGY8MXx8Zj40fHxsKyhjKzEpKmY+Yi5sZW5ndGgpKXJldHVybiBudWxsO2lmKGk+MClmb3IobGV0IGU9MDtlPHI7ZSsrKWlmKDAhPT1yZWFkVWludChzK2UqaixpKSlyZXR1cm4gbnVsbDtpZihjPjApe2NvbnN0IGU9bmV3IEFycmF5KGMrMSk7Zm9yKGxldCB0PTA7dDw9Yzt0KyspZVt0XT1yZWFkVWludChsK3QqZixmKTtmb3IobGV0IHQ9MDt0PGM7dCsrKXtjb25zdCBuPWVbdF0sYT1lW3QrMV07YT5iLmxlbmd0aHx8YTxuP2tbdF09bmV3IFVpbnQ4QXJyYXkoMCk6a1t0XT10aGlzLnJlYWRDaGFyU3RyaW5ncyhiLnN1YmFycmF5KG4sYSksdyl9fWNvbnN0IHk9W107bGV0IHE9cmVhZFVpbnQocytpLG8pO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9cmVhZFVpbnQocysoZSsxKSpqK2ksbyksbj0wPT09ZT8iLm5vdGRlZiI6YGNpZCR7ZX1gO2lmKHQ+cSYmdDw9Yi5sZW5ndGgpe2NvbnN0IGU9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYi5zdWJhcnJheShxLHQpLHcpLGE9bmV3IFR5cGUxQ2hhclN0cmluZyxyPWEuY29udmVydChlLGssdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTt5LnB1c2goe2dseXBoTmFtZTpuLGNoYXJzdHJpbmc6cj9bMTRdOmEub3V0cHV0LHdpZHRoOmEud2lkdGgsbHNiOmEubHNiLHNlYWM6YS5zZWFjfSl9ZWxzZXtjb25zdCBlPXlbMF07eS5wdXNoKHtnbHlwaE5hbWU6bixjaGFyc3RyaW5nOmU/LmNoYXJzdHJpbmcuc2xpY2UoKXx8WzEzOSwxNF0sd2lkdGg6ZT8ud2lkdGh8fDAsbHNiOmU/LmxzYnx8MH0pfXE9dH1hLnN1YnJzPWs7YS5jaGFyc3RyaW5ncz15O3JldHVybiBhfWV4dHJhY3RGb250SGVhZGVyKGUpe2xldCB0O2Zvcig7bnVsbCE9PSh0PXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXQpe3Q9dGhpcy5nZXRUb2tlbigpO3N3aXRjaCh0KXtjYXNlIkZvbnRNYXRyaXgiOmNvbnN0IG49dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmZvbnRNYXRyaXg9bjticmVhaztjYXNlIkVuY29kaW5nIjpjb25zdCBhPXRoaXMuZ2V0VG9rZW4oKTtsZXQgcjtpZigvXlxkKyQvLnRlc3QoYSkpe3I9W107Y29uc3QgZT0wfHBhcnNlSW50KGEsMTApO3RoaXMuZ2V0VG9rZW4oKTtmb3IobGV0IG49MDtuPGU7bisrKXt0PXRoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiIT09dCYmImRlZiIhPT10Oyl7dD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXQpcmV0dXJufWlmKCJkZWYiPT09dClicmVhaztjb25zdCBlPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBuPXRoaXMuZ2V0VG9rZW4oKTtyW2VdPW47dGhpcy5nZXRUb2tlbigpfX1lbHNlIHI9Z2V0RW5jb2RpbmcoYSk7ZS5idWlsdEluRW5jb2Rpbmc9cjticmVhaztjYXNlIkZvbnRCQm94Ijpjb25zdCBzPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgoc1szXSxzWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oc1sxXSxzWzNdKTtlLmFzY2VudFNjYWxlZD0hMH19fX1mdW5jdGlvbiBmaW5kQmxvY2soZSx0LG4pe2NvbnN0IGE9ZS5sZW5ndGgscj10Lmxlbmd0aCxzPWEtcjtsZXQgaT1uLG89ITE7Zm9yKDtpPHM7KXtsZXQgbj0wO2Zvcig7bjxyJiZlW2krbl09PT10W25dOyluKys7aWYobj49cil7aSs9bjtmb3IoO2k8YSYmaXNXaGl0ZVNwYWNlKGVbaV0pOylpKys7bz0hMDticmVha31pKyt9cmV0dXJue2ZvdW5kOm8sbGVuZ3RoOml9fWNsYXNzIFR5cGUxRm9udHsjaGU7Y29uc3RydWN0b3IoZSx0LG4pe2xldCBhO24uY29tcG9zaXRlJiZmdW5jdGlvbiBpc0NpZEtleWVkVHlwZTFGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoMjA0OCk7aWYodC5sZW5ndGg8Mnx8MzchPT10WzBdfHwzMyE9PXRbMV0pcmV0dXJuITE7Y29uc3Qgbj1ieXRlc1RvU3RyaW5nKHQpO3JldHVybiBuLmluY2x1ZGVzKCJSZXNvdXJjZS1DSURGb250Iil8fC9cL0NJREZvbnRUeXBlXHMrMFxiLy50ZXN0KG4pfSh0KSYmKGE9dGhpcy4jdWUodCxuKSk7YXx8PXRoaXMuI21lKHQsbik7Zm9yKGNvbnN0IGUgaW4gYS5wcm9wZXJ0aWVzKW5bZV09YS5wcm9wZXJ0aWVzW2VdO2NvbnN0IHI9YS5jaGFyc3RyaW5ncyxzPXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncyhyKSxpPXRoaXMuZ2V0VHlwZTJTdWJycyhhLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPXI7dGhpcy5kYXRhPXRoaXMud3JhcChlLHMsdGhpcy5jaGFyc3RyaW5ncyxpLG4pO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhhLmNoYXJzdHJpbmdzKX0jbWUoZSx0KXtsZXQgbj10Lmxlbmd0aDEsYT10Lmxlbmd0aDIscj1lLnBlZWtCeXRlcyg2KTtjb25zdCBzPTEyOD09PXJbMF0mJjE9PT1yWzFdO2lmKHMpe2Uuc2tpcCg2KTtuPXJbNV08PDI0fHJbNF08PDE2fHJbM108PDh8clsyXX1jb25zdCBpPWZ1bmN0aW9uIGdldEhlYWRlckJsb2NrKGUsdCl7Y29uc3Qgbj1bMTAxLDEwMSwxMjAsMTAxLDk5XSxhPWUucG9zO2xldCByLHMsaSxvO3RyeXtyPWUuZ2V0Qnl0ZXModCk7cz1yLmxlbmd0aH1jYXRjaHt9aWYocz09PXQpe2k9ZmluZEJsb2NrKHIsbix0LTIqbi5sZW5ndGgpO2lmKGkuZm91bmQmJmkubGVuZ3RoPT09dClyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0ociksbGVuZ3RoOnR9fXdhcm4oJ0ludmFsaWQgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdHJ5aW5nIHRvIHJlY292ZXIuJyk7ZS5wb3M9YTtmb3IoOzspe2k9ZmluZEJsb2NrKGUucGVla0J5dGVzKDIwNDgpLG4sMCk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO2UucG9zKz1pLmxlbmd0aDtpZihpLmZvdW5kKXtvPWUucG9zLWE7YnJlYWt9fWUucG9zPWE7aWYobylyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyhvKSksbGVuZ3RoOm99O3dhcm4oJ1VuYWJsZSB0byByZWNvdmVyICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHVzaW5nIGFzIGlzLicpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKHQpKSxsZW5ndGg6dH19KGUsbik7bmV3IFR5cGUxUGFyc2VyKGkuc3RyZWFtLCExLCEwKS5leHRyYWN0Rm9udEhlYWRlcih0KTtpZihzKXtyPWUuZ2V0Qnl0ZXMoNik7YT1yWzVdPDwyNHxyWzRdPDwxNnxyWzNdPDw4fHJbMl19Y29uc3Qgbz1mdW5jdGlvbiBnZXRFZXhlY0Jsb2NrKGUsdCl7Y29uc3Qgbj1lLmdldEJ5dGVzKCk7aWYoMD09PW4ubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcigiZ2V0RWV4ZWNCbG9jayAtIG5vIGZvbnQgcHJvZ3JhbSBmb3VuZC4iKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0obiksbGVuZ3RoOm4ubGVuZ3RofX0oZSksbD1uZXcgVHlwZTFQYXJzZXIoby5zdHJlYW0sITAsITApLmV4dHJhY3RGb250UHJvZ3JhbSh0KTt0aGlzLiNoZT1pLmxlbmd0aCtvLmxlbmd0aDtyZXR1cm4gbH0jdWUoZSx0KXtjb25zdCBuPWUucG9zLGE9ZS5lbmQtbixyPW5ldyBUeXBlMVBhcnNlcihlLCExLCEwKS5leHRyYWN0Q2lkS2V5ZWRGb250UHJvZ3JhbSh0KTtpZighcil7ZS5wb3M9bjt3YXJuKCJUeXBlMUZvbnQ6IHVuYWJsZSB0byBwYXJzZSBDSUQta2V5ZWQgVHlwZSAxIGZvbnQuIik7cmV0dXJuIG51bGx9dGhpcy4jaGU9YTtyZXR1cm4gcn1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IG49T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe25bZS5jTWFwLmNoYXJDb2RlT2YoYSldPWErMX1yZXR1cm4gbn1jb25zdCBuPVsiLm5vdGRlZiJdO2xldCBhLHI7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyluLnB1c2godFtyXS5nbHlwaE5hbWUpO2NvbnN0IHM9ZS5idWlsdEluRW5jb2Rpbmc7aWYocyl7YT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIHMpe3I9bi5pbmRleE9mKHNbZV0pO3I+PTAmJihhW2VdPXIpfX1yZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUsYSxuKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5udW1HbHlwaHMpcmV0dXJuITE7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3NbZS0xXS5jaGFyc3RyaW5nLmxlbmd0aD4wfWdldFNlYWNzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXtjb25zdCBhPWVbbl07YS5zZWFjJiYodFtuKzFdPWEuc2VhYyl9cmV0dXJuIHR9Z2V0VHlwZTJDaGFyc3RyaW5ncyhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpdC5wdXNoKG4uY2hhcnN0cmluZyk7cmV0dXJuIHR9Z2V0VHlwZTJTdWJycyhlKXtsZXQgdD0wO2NvbnN0IG49ZS5sZW5ndGg7dD1uPDExMzM/MTA3Om48MzM3Njk/MTEzMTozMjc2ODtjb25zdCBhPVtdO2xldCByO2ZvcihyPTA7cjx0O3IrKylhLnB1c2goWzExXSk7Zm9yKHI9MDtyPG47cisrKWEucHVzaChlW3JdKTtyZXR1cm4gYX13cmFwKGUsdCxuLGEscil7Y29uc3Qgcz1uZXcgQ0ZGKHRoaXMuI2hlKTtzLmhlYWRlcj1uZXcgQ0ZGSGVhZGVyKDEsMCw0LDQpO3MubmFtZXM9W2VdO2NvbnN0IGk9bmV3IENGRlRvcERpY3Q7aS5zZXRCeU5hbWUoInZlcnNpb24iLDM5MSk7aS5zZXRCeU5hbWUoIk5vdGljZSIsMzkyKTtpLnNldEJ5TmFtZSgiRnVsbE5hbWUiLDM5Myk7aS5zZXRCeU5hbWUoIkZhbWlseU5hbWUiLDM5NCk7aS5zZXRCeU5hbWUoIldlaWdodCIsMzk1KTtpLnNldEJ5TmFtZSgiRW5jb2RpbmciLG51bGwpO2kuc2V0QnlOYW1lKCJGb250TWF0cml4IixyLmZvbnRNYXRyaXgpO2kuc2V0QnlOYW1lKCJGb250QkJveCIsci5iYm94KTtpLnNldEJ5TmFtZSgiY2hhcnNldCIsbnVsbCk7aS5zZXRCeU5hbWUoIkNoYXJTdHJpbmdzIixudWxsKTtpLnNldEJ5TmFtZSgiUHJpdmF0ZSIsbnVsbCk7cy50b3BEaWN0PWk7Y29uc3Qgbz1uZXcgQ0ZGU3RyaW5ncztvLmFkZCgiVmVyc2lvbiAwLjExIik7by5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtvLmFkZChlKTtvLmFkZChlKTtvLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPW87cy5nbG9iYWxTdWJySW5kZXg9bmV3IENGRkluZGV4O2NvbnN0IGw9dC5sZW5ndGgsZj1bIi5ub3RkZWYiXTtmb3IobGV0IGU9MDtlPGw7ZSsrKXtjb25zdHtnbHlwaE5hbWU6dH09bltlXTstMT09PU1hLmluZGV4T2YodCkmJm8uYWRkKHQpO2YucHVzaCh0KX1zLmNoYXJzZXQ9bmV3IENGRkNoYXJzZXQoITEsMCxmKTtjb25zdCBjPW5ldyBDRkZJbmRleDtjLmFkZChbMTM5LDE0XSk7Zm9yKGxldCBlPTA7ZTxsO2UrKyljLmFkZCh0W2VdKTtzLmNoYXJTdHJpbmdzPWM7Y29uc3QgaD1uZXcgQ0ZGUHJpdmF0ZURpY3Q7aC5zZXRCeU5hbWUoIlN1YnJzIixudWxsKTtjb25zdCB1PVsiQmx1ZVZhbHVlcyIsIk90aGVyQmx1ZXMiLCJGYW1pbHlCbHVlcyIsIkZhbWlseU90aGVyQmx1ZXMiLCJTdGVtU25hcEgiLCJTdGVtU25hcFYiLCJCbHVlU2hpZnQiLCJCbHVlRnV6eiIsIkJsdWVTY2FsZSIsIkxhbmd1YWdlR3JvdXAiLCJFeHBhbnNpb25GYWN0b3IiLCJGb3JjZUJvbGQiLCJTdGRIVyIsIlN0ZFZXIl07Zm9yKGNvbnN0IGUgb2YgdSl7aWYoIXIucHJpdmF0ZURhdGEuaGFzKGUpKWNvbnRpbnVlO2NvbnN0IHQ9ci5wcml2YXRlRGF0YS5nZXQoZSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9dC5sZW5ndGgtMTtlPjA7ZS0tKXRbZV0tPXRbZS0xXTtoLnNldEJ5TmFtZShlLHQpfXMudG9wRGljdC5wcml2YXRlRGljdD1oO2NvbnN0IG09bmV3IENGRkluZGV4O2Zvcihjb25zdCBlIG9mIGEpbS5hZGQoZSk7aC5zdWJyc0luZGV4PW07cmV0dXJuIG5ldyBDRkZDb21waWxlcihzKS5jb21waWxlKCl9fWNvbnN0IG1yPVtbNTczNDQsNjM3NDNdLFsxMDQ4NTc2LDExMTQxMDldXSxwcj0xZTMsZHI9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY3NzRm9udEluZm8iLCJkYXRhIiwiZGVmYXVsdFZNZXRyaWNzIiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCIsImRpc2FibGVGb250RmFjZSIsImZhbGxiYWNrTmFtZSIsImZvbnRFeHRyYVByb3BlcnRpZXMiLCJmb250TWF0cml4IiwiaXNJbnZhbGlkUERGanNGb250IiwiaXNUeXBlM0ZvbnQiLCJpdGFsaWMiLCJsb2FkZWROYW1lIiwibWltZXR5cGUiLCJtaXNzaW5nRmlsZSIsIm5hbWUiLCJyZW1lYXN1cmUiLCJzeXN0ZW1Gb250SW5mbyIsInZlcnRpY2FsIl0sZ3I9WyJjTWFwIiwiY29tcG9zaXRlIiwiZGVmYXVsdEVuY29kaW5nIiwiZGlmZmVyZW5jZXMiLCJpc01vbm9zcGFjZSIsImlzU2VyaWZGb250IiwiaXNTeW1ib2xpY0ZvbnQiLCJzZWFjTWFwIiwic3VidHlwZSIsInRvRm9udENoYXIiLCJ0b1VuaWNvZGUiLCJ0eXBlIiwidm1ldHJpY3MiLCJ3aWR0aHMiXTtmdW5jdGlvbiBhZGp1c3RXaWR0aHMoZSl7aWYoIWUuZm9udE1hdHJpeClyZXR1cm47aWYoZS5mb250TWF0cml4WzBdPT09c1swXSlyZXR1cm47Y29uc3QgdD0uMDAxL2UuZm9udE1hdHJpeFswXSxuPWUud2lkdGhzO2Zvcihjb25zdCBlIGluIG4pbltlXSo9dDtlLmRlZmF1bHRXaWR0aCo9dH1mdW5jdGlvbiBhbWVuZEZhbGxiYWNrVG9Vbmljb2RlKGUpe2lmKCFlLmZhbGxiYWNrVG9Vbmljb2RlKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtjb25zdCB0PVtdO2Zvcihjb25zdCBuIGluIGUuZmFsbGJhY2tUb1VuaWNvZGUpZS50b1VuaWNvZGUuaGFzKG4pfHwodFtuXT1lLmZhbGxiYWNrVG9Vbmljb2RlW25dKTt0Lmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZCh0KX1jbGFzcyBmb250c19HbHlwaHtjb25zdHJ1Y3RvcihlLHQsbixhLHIscyxpLG8sbCl7dGhpcy5vcmlnaW5hbENoYXJDb2RlPWU7dGhpcy5mb250Q2hhcj10O3RoaXMudW5pY29kZT1uO3RoaXMuYWNjZW50PWE7dGhpcy53aWR0aD1yO3RoaXMudm1ldHJpYz1zO3RoaXMub3BlcmF0b3JMaXN0SWQ9aTt0aGlzLmlzU3BhY2U9bzt0aGlzLmlzSW5Gb250PWx9Z2V0IGNhdGVnb3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYXRlZ29yeSIsZnVuY3Rpb24gZ2V0Q2hhclVuaWNvZGVDYXRlZ29yeShlKXtjb25zdCB0PXhhLmdldChlKTtpZih0KXJldHVybiB0O2NvbnN0IG49ZS5tYXRjaChBYSksYT17aXNXaGl0ZXNwYWNlOiEhbj8uWzFdLGlzWmVyb1dpZHRoRGlhY3JpdGljOiEhbj8uWzJdLGlzSW52aXNpYmxlRm9ybWF0TWFyazohIW4/LlszXX07eGEuc2V0KGUsYSk7cmV0dXJuIGF9KHRoaXMudW5pY29kZSksITApfX1mdW5jdGlvbiBpbnQxNihlLHQpe3JldHVybihlPDw4KSt0fWZ1bmN0aW9uIHdyaXRlU2lnbmVkSW50MTYoZSx0LG4pe2VbdCsxXT1uO2VbdF09bj4+Pjh9ZnVuY3Rpb24gc2lnbmVkSW50MTYoZSx0KXtjb25zdCBuPShlPDw4KSt0O3JldHVybiAzMjc2OCZuP24tNjU1MzY6bn1mdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsbil7ZVt0KzNdPTI1NSZuO2VbdCsyXT1uPj4+ODtlW3QrMV09bj4+PjE2O2VbdF09bj4+PjI0fWZ1bmN0aW9uIGlzVHJ1ZVR5cGVDb2xsZWN0aW9uRmlsZShlKXtyZXR1cm4idHRjZiI9PT1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKX1mdW5jdGlvbiBnZXRGb250RmlsZVR5cGUoZSx7dHlwZTp0LHN1YnR5cGU6bixjb21wb3NpdGU6YX0pe2xldCByLHM7aWYoZnVuY3Rpb24gaXNUcnVlVHlwZUZpbGUoZSl7Y29uc3QgdD1ieXRlc1RvU3RyaW5nKGUucGVla0J5dGVzKDQpKTtyZXR1cm4iXDABXDBcMCI9PT10fHwidHJ1ZSI9PT10fShlKXx8aXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpKXI9YT8iQ0lERm9udFR5cGUyIjoiVHJ1ZVR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNPcGVuVHlwZUZpbGUoZSl7cmV0dXJuIk9UVE8iPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9KGUpKXI9YT8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlyPWE/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihhKXtyPSJDSURGb250VHlwZTAiO3M9IkNJREZvbnRUeXBlMEMifWVsc2V7cj0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3M9IlR5cGUxQyJ9ZWxzZXt3YXJuKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO3I9dDtzPW59cmV0dXJuW3Isc119ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBuIGluIHQpZVsrbl09dFtuXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LG4pe2NvbnN0IGE9W107bGV0IHI7Zm9yKGxldCBuPTAscz1lLmxlbmd0aDtuPHM7bisrKXtyPWdldFVuaWNvZGVGb3JHbHlwaChlW25dLHQpOy0xIT09ciYmKGFbbl09cil9Zm9yKGNvbnN0IGUgaW4gbil7cj1nZXRVbmljb2RlRm9yR2x5cGgobltlXSx0KTstMSE9PXImJihhWytlXT1yKX1yZXR1cm4gYX1mdW5jdGlvbiBpc01hY05hbWVSZWNvcmQoZSl7cmV0dXJuIDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gaXNXaW5OYW1lUmVjb3JkKGUpe3JldHVybiAzPT09ZS5wbGF0Zm9ybSYmMT09PWUuZW5jb2RpbmcmJjEwMzM9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGNvbnZlcnRDaWRTdHJpbmcoZSx0LG49ITEpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiB0LmNoYXJDb2RlQXQoMCk7Y2FzZSAyOnJldHVybiB0LmNoYXJDb2RlQXQoMCk8PDh8dC5jaGFyQ29kZUF0KDEpfWNvbnN0IGE9YFVuc3VwcG9ydGVkIENJRCBzdHJpbmcgKGNoYXJDb2RlICR7ZX0pOiAiJHt0fSIuYDtpZihuKXRocm93IG5ldyBGb3JtYXRFcnJvcihhKTt3YXJuKGEpO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LG4sYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxpPVtdLG89bmV3IFNldDtsZXQgbD0wO2xldCBmPW1yW2xdWzBdLGM9bXJbbF1bMV07Y29uc3QgaXNJblByaXZhdGVBcmVhPWU9Pm1yWzBdWzBdPD1lJiZlPD1tclswXVsxXXx8bXJbMV1bMF08PWUmJmU8PW1yWzFdWzFdO2xldCBoPW51bGw7Zm9yKGNvbnN0IHUgaW4gZSl7bGV0IG09ZVt1XTtpZighdChtKSljb250aW51ZTtpZihmPmMpe2wrKztpZihsPj1tci5sZW5ndGgpe3dhcm4oIlJhbiBvdXQgb2Ygc3BhY2UgaW4gZm9udCBwcml2YXRlIHVzZSBhcmVhLiIpO2JyZWFrfWY9bXJbbF1bMF07Yz1tcltsXVsxXX1jb25zdCBwPWYrKzswPT09bSYmKG09bik7bGV0IGQ9YS5nZXQodSk7aWYoInN0cmluZyI9PXR5cGVvZiBkKWlmKDE9PT1kLmxlbmd0aClkPWQuY29kZVBvaW50QXQoMCk7ZWxzZXtpZighaCl7aD1uZXcgTWFwO2ZvcihsZXQgZT02NDI1NjtlPD02NDMzNTtlKyspe2NvbnN0IHQ9U3RyaW5nLmZyb21DaGFyQ29kZShlKS5ub3JtYWxpemUoIk5GS0QiKTt0Lmxlbmd0aD4xJiZoLnNldCh0LGUpfX1kPWguZ2V0KGQpfHxkLmNvZGVQb2ludEF0KDApfWlmKGQmJiFpc0luUHJpdmF0ZUFyZWEoZCkmJiFvLmhhcyhtKSl7cy5zZXQoZCxtKTtvLmFkZChtKX1yW3BdPW07aVt1XT1wfXJldHVybnt0b0ZvbnRDaGFyOmksY2hhckNvZGVUb0dseXBoSWQ6cix0b1VuaWNvZGVFeHRyYU1hcDpzLG5leHRBdmFpbGFibGVGb250Q2hhckNvZGU6Zn19ZnVuY3Rpb24gY3JlYXRlQ21hcFRhYmxlKGUsdCxuKXtjb25zdCBhPWZ1bmN0aW9uIGdldFJhbmdlcyhlLHQsbil7Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBpbiBlKWVbdF0+PW58fGEucHVzaCh7Zm9udENoYXJDb2RlOjB8dCxnbHlwaElkOmVbdF19KTtpZih0KWZvcihjb25zdFtlLHJdb2YgdClyPj1ufHxhLnB1c2goe2ZvbnRDaGFyQ29kZTplLGdseXBoSWQ6cn0pOzA9PT1hLmxlbmd0aCYmYS5wdXNoKHtmb250Q2hhckNvZGU6MCxnbHlwaElkOjB9KTthLnNvcnQoKGUsdCk9PmUuZm9udENoYXJDb2RlLXQuZm9udENoYXJDb2RlKTtjb25zdCByPVtdLHM9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxzOyl7Y29uc3QgdD1hW2VdLmZvbnRDaGFyQ29kZSxuPVthW2VdLmdseXBoSWRdOysrZTtsZXQgaT10O2Zvcig7ZTxzJiZpKzE9PT1hW2VdLmZvbnRDaGFyQ29kZTspe24ucHVzaChhW2VdLmdseXBoSWQpOysraTsrK2U7aWYoNjU1MzU9PT1pKWJyZWFrfXIucHVzaChbdCxpLG5dKX1yZXR1cm4gcn0oZSx0LG4pLHI9YS5hdCgtMSlbMV0+NjU1MzU7bGV0IHMsaSxvLGw7Zm9yKHM9YS5sZW5ndGgtMTtzPj0wJiYhKGFbc11bMF08PTY1NTM1KTstLXMpO2NvbnN0IGY9cysxO2Fbc11bMF08NjU1MzUmJjY1NTM1PT09YVtzXVsxXSYmKGFbc11bMV09NjU1MzQpO2NvbnN0IGM9YVtzXVsxXTw2NTUzNT8xOjAsaD1mK2MsdT1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhoLDIpLG09MipmKzIqYyxwPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6bX0pLGQ9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDptfSksZz1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOm19KSxiPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6bX0pLHc9bmV3IERhdGFCdWlsZGVyKHt9KTtsZXQgaj0wLGs9ITE7Zm9yKHM9MCxpPWY7czxpO3MrKyl7Y29uc3RbZSx0LG5dPWFbc107cC5zZXRJbnQxNihlKTtkLnNldEludDE2KHQpO2xldCByPSEwO2ZvcihvPTEsbD1uLmxlbmd0aDtvPGw7KytvKWlmKG5bb10hPT1uW28tMV0rMSl7cj0hMTticmVha31pZihyKXtjb25zdCB0PW5bMF07Zy5zZXRJbnQxNih0LWUmNjU1MzUpO2Iuc2tpcCgyKX1lbHNle2NvbnN0IGE9MiooaC1zKSsyKmo7ais9dC1lKzE7Zy5za2lwKDIpO2lmKGE+NjU1MzUpe2s9ITA7Yi5za2lwKDIpfWVsc2UgYi5zZXRJbnQxNihhKTtmb3Iobz0wLGw9bi5sZW5ndGg7bzxsOysrbyl3LnNldEludDE2KG5bb10pfX1pZihjPjApe2Quc2V0QXJyYXkoWzI1NSwyNTVdKTtwLnNldEFycmF5KFsyNTUsMjU1XSk7Zy5zZXRBcnJheShbMCwxXSk7Yi5za2lwKDIpfWNvbnN0IHk9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDoxMitwLmxlbmd0aCtkLmxlbmd0aCtnLmxlbmd0aCtiLmxlbmd0aCt3Lmxlbmd0aH0pO3kuc2tpcCgyKTt5LnNldEludDE2KDIqaCk7eS5zZXRJbnQxNih1LnJhbmdlKTt5LnNldEludDE2KHUuZW50cnkpO3kuc2V0SW50MTYodS5yYW5nZVNoaWZ0KTt5LnNldEFycmF5KGQuZGF0YSk7eS5za2lwKDIpO3kuc2V0QXJyYXkocC5kYXRhKTt5LnNldEFycmF5KGcuZGF0YSk7eS5zZXRBcnJheShiLmRhdGEpO3kuc2V0QXJyYXkody5kYXRhKTtjb25zdCBxPSFrJiZ5Lmxlbmd0aCs0PD02NTUzNSx2PXJ8fCFxLFM9KHE/MTowKSsodj8xOjApO2xldCB4PW51bGwsQz1udWxsO2lmKHYpe3g9bmV3IERhdGFCdWlsZGVyKHt9KTtmb3IoY29uc3QgZSBvZiBhKXtsZXQgdD1lWzBdO2NvbnN0IG49ZVsyXTtsZXQgYT1uWzBdO2ZvcihvPTEsbD1uLmxlbmd0aDtvPGw7KytvKWlmKG5bb10hPT1uW28tMV0rMSl7Y29uc3Qgcj1lWzBdK28tMTt4LnNldEludDMyKHQpO3guc2V0SW50MzIocik7eC5zZXRJbnQzMihhKTt0PXIrMTthPW5bb119eC5zZXRJbnQzMih0KTt4LnNldEludDMyKGVbMV0pO3guc2V0SW50MzIoYSl9Qz1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjE2fSk7Qy5zZXRBcnJheShbMCwxMl0pO0Muc2tpcCgyKTtDLnNldEludDMyKHgubGVuZ3RoKzE2KTtDLnNraXAoNCk7Qy5zZXRJbnQzMih4Lmxlbmd0aC8xMil9Y29uc3QgVD00KzgqUyxPPXE/NCt5Lmxlbmd0aDowLFI9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDpUfSk7Ui5za2lwKDIpO1Iuc2V0SW50MTYoUyk7bGV0IEQ9VDtpZihxKXtSLnNldEFycmF5KFswLDNdKTtSLnNldEFycmF5KFswLDFdKTtSLnNldEludDMyKEQpO0QrPU99aWYodil7Ui5zZXRBcnJheShbMCwzXSk7Ui5zZXRBcnJheShbMCwxMF0pO1Iuc2V0SW50MzIoRCl9Y29uc3QgSD1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOlIubGVuZ3RoK08rKEM/Lmxlbmd0aD8/MCkrKHg/Lmxlbmd0aD8/MCl9KTtILnNldEFycmF5KFIuZGF0YSk7aWYocSl7SC5zZXRBcnJheShbMCw0XSk7SC5zZXRJbnQxNih5Lmxlbmd0aCs0KTtILnNldEFycmF5KHkuZGF0YSl9aWYodil7SC5zZXRBcnJheShDLmRhdGEpO0guc2V0QXJyYXkoeC5kYXRhKX1yZXR1cm4gSC5kYXRhfWZ1bmN0aW9uIGNyZWF0ZU9TMlRhYmxlKGUsdCxuKXtufHw9e3VuaXRzUGVyRW06MCx5TWF4OjAseU1pbjowLGFzY2VudDowLGRlc2NlbnQ6MH07bGV0IGE9MCxyPTAscz0wLGk9MCxvPW51bGwsbD0wLGY9LTE7aWYodCl7Zm9yKGxldCBlIGluIHQpe2V8PTA7KG8+ZXx8IW8pJiYobz1lKTtsPGUmJihsPWUpO2Y9Z2V0VW5pY29kZVJhbmdlRm9yKGUsZik7aWYoZjwzMilhfD0xPDxmO2Vsc2UgaWYoZjw2NClyfD0xPDxmLTMyO2Vsc2UgaWYoZjw5NilzfD0xPDxmLTY0O2Vsc2V7aWYoIShmPDEyMykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmljb2RlIHJhbmdlcyBCaXRzID4gMTIzIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNhZ2UiKTtpfD0xPDxmLTk2fX1sPjY1NTM1JiYobD02NTUzNSl9ZWxzZXtvPTA7bD0yNTV9Y29uc3QgYz1lLmJib3h8fFswLDAsMCwwXSxoPW4udW5pdHNQZXJFbXx8KGUuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLmUuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyksdT1lLmFzY2VudFNjYWxlZD8xOmgvcHIsbT1uLmFzY2VudHx8TWF0aC5yb3VuZCh1KihlLmFzY2VudHx8Y1szXSkpO2xldCBwPW4uZGVzY2VudHx8TWF0aC5yb3VuZCh1KihlLmRlc2NlbnR8fGNbMV0pKTtwPjAmJmUuZGVzY2VudD4wJiZjWzFdPDAmJihwPS1wKTtjb25zdCBkPW4ueU1heHx8bSxnPS1uLnlNaW58fC1wLGI9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDo5Nn0pO2Iuc2V0QXJyYXkoWzAsM10pO2Iuc2V0QXJyYXkoWzIsMzZdKTtiLnNldEFycmF5KFsxLDI0NF0pO2Iuc2V0QXJyYXkoWzAsNV0pO2Iuc2tpcCgyKTtiLnNldEFycmF5KFsyLDEzOF0pO2Iuc2V0QXJyYXkoWzIsMTg3XSk7Yi5za2lwKDIpO2Iuc2V0QXJyYXkoWzAsMTQwXSk7Yi5zZXRBcnJheShbMiwxMzhdKTtiLnNldEFycmF5KFsyLDE4N10pO2Iuc2tpcCgyKTtiLnNldEFycmF5KFsxLDIyM10pO2Iuc2V0QXJyYXkoWzAsNDldKTtiLnNldEFycmF5KFsxLDJdKTtiLnNraXAoMik7Yi5zZXRBcnJheShbMCwwLDYsZS5maXhlZFBpdGNoPzk6MCwwLDAsMCwwLDAsMF0pO2Iuc2V0SW50MzIoYSk7Yi5zZXRJbnQzMihyKTtiLnNldEludDMyKHMpO2Iuc2V0SW50MzIoaSk7Yi5zZXRBcnJheShbNDIsNTAsNDksNDJdKTtiLnNldEludDE2KGUuaXRhbGljQW5nbGU/MTowKTtiLnNldEludDE2KG98fGUuZmlyc3RDaGFyKTtiLnNldEludDE2KGx8fGUubGFzdENoYXIpO2Iuc2V0SW50MTYobSk7Yi5zZXRJbnQxNihwKTtiLnNldEFycmF5KFswLDEwMF0pO2Iuc2V0SW50MTYoZCk7Yi5zZXRJbnQxNihnKTtiLnNraXAoOCk7Yi5zZXRJbnQxNihlLnhIZWlnaHQpO2Iuc2V0SW50MTYoZS5jYXBIZWlnaHQpO2Iuc2tpcCgyKTtiLnNldEludDE2KG98fGUuZmlyc3RDaGFyKTtiLnNldEFycmF5KFswLDNdKTtyZXR1cm4gYi5kYXRhfWZ1bmN0aW9uIGNyZWF0ZVBvc3RUYWJsZShlKXtjb25zdCB0PW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6MzJ9KTt0LnNldEFycmF5KFswLDMsMCwwXSk7dC5zZXRJbnQzMihNYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpKTt0LnNraXAoNCk7dC5zZXRJbnQzMihlLmZpeGVkUGl0Y2g/MTowKTt0LnNraXAoMTYpO3JldHVybiB0LmRhdGF9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8PVtbXSxbXV07Y29uc3Qgbj1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0sYT1uLm1hcChlPT5zdHJpbmdUb0J5dGVzKGUpKSxyPW5ldyBBcnJheShuLmxlbmd0aCk7bGV0IHMsaSxvLGwsZjtmb3Iocz0wLGk9bi5sZW5ndGg7czxpO3MrKyl7Zj10WzFdW3NdfHxuW3NdO2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDoyKmYubGVuZ3RofSk7Zm9yKG89MCxsPWYubGVuZ3RoO288bDtvKyspZS5zZXRJbnQxNihmLmNoYXJDb2RlQXQobykpO3Jbc109ZS5kYXRhfWNvbnN0IGM9W2Escl0saD1bWzAsMV0sWzAsM11dLHU9W1swLDBdLFswLDFdXSxtPVtbMCwwXSxbNCw5XV0scD1bXTtsZXQgZD0wO2ZvcihzPTAsaT1oLmxlbmd0aDtzPGk7cysrKXtjb25zdCBlPWNbc107Zm9yKG89MCxsPWUubGVuZ3RoO288bDtvKyspe2Y9ZVtvXTtjb25zdCB0PW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6NitoW3NdLmxlbmd0aCt1W3NdLmxlbmd0aCttW3NdLmxlbmd0aH0pO3Quc2V0QXJyYXkoaFtzXSk7dC5zZXRBcnJheSh1W3NdKTt0LnNldEFycmF5KG1bc10pO3Quc2V0SW50MTYobyk7dC5zZXRJbnQxNihmLmxlbmd0aCk7dC5zZXRJbnQxNihkKTtwLnB1c2godC5kYXRhKTtkKz1mLmxlbmd0aH19Y29uc3QgZz1hLmxlbmd0aCpoLmxlbmd0aCxiPW5ldyBEYXRhQnVpbGRlcih7ZXhhY3RMZW5ndGg6NitNYXRoLnN1bVByZWNpc2UocC5tYXAoZT0+ZS5sZW5ndGgpKStNYXRoLnN1bVByZWNpc2UoYS5tYXAoZT0+ZS5sZW5ndGgpKStNYXRoLnN1bVByZWNpc2Uoci5tYXAoZT0+ZS5sZW5ndGgpKX0pO2Iuc2tpcCgyKTtiLnNldEludDE2KGcpO2Iuc2V0SW50MTYoMTIqZys2KTtmb3IoY29uc3QgZSBvZiBwKWIuc2V0QXJyYXkoZSk7Zm9yKGNvbnN0IGUgb2YgYSliLnNldEFycmF5KGUpO2Zvcihjb25zdCBlIG9mIHIpYi5zZXRBcnJheShlKTtyZXR1cm4gYi5kYXRhfWNsYXNzIEZvbnR7I3BlPW5ldyBNYXA7I2RlPW5ldyBNYXA7Y2hhclByb2NPcGVyYXRvckxpc3Q7Y29uc3RydWN0b3IoZSx0LG4sYSl7dGhpcy5uYW1lPWU7dGhpcy5wc05hbWU9bnVsbDt0aGlzLm1pbWV0eXBlPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9YS5kaXNhYmxlRm9udEZhY2U7dGhpcy5mb250RXh0cmFQcm9wZXJ0aWVzPWEuZm9udEV4dHJhUHJvcGVydGllczt0aGlzLmxvYWRlZE5hbWU9bi5sb2FkZWROYW1lO3RoaXMuaXNUeXBlM0ZvbnQ9bi5pc1R5cGUzRm9udDt0aGlzLm1pc3NpbmdGaWxlPSExO3RoaXMuY3NzRm9udEluZm89bi5jc3NGb250SW5mbztsZXQgcj0hIShuLmZsYWdzJklhKTtpZighciYmIW4uaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1XYSgpLG49S2EoKSxhPUdhKCk7Zm9yKGNvbnN0IHMgb2YgZS5zcGxpdCgiKyIpKXtsZXQgZT1ub3JtYWxpemVGb250TmFtZShzKTtlPXRbZV18fG5bZV18fGU7ZT1lLnNwbGl0KCItIiwxKVswXTtpZihhW2VdKXtyPSEwO2JyZWFrfX19dGhpcy5pc1NlcmlmRm9udD1yO3RoaXMuaXNTeW1ib2xpY0ZvbnQ9ISEobi5mbGFncyZGYSk7dGhpcy5pc01vbm9zcGFjZT0hIShuLmZsYWdzJkNhKTtsZXR7dHlwZTpzLHN1YnR5cGU6aX09bjt0aGlzLnR5cGU9czt0aGlzLnN1YnR5cGU9aTt0aGlzLnN5c3RlbUZvbnRJbmZvPW4uc3lzdGVtRm9udEluZm87Y29uc3Qgbz1lLm1hdGNoKC9eSW52YWxpZFBERmpzRm9udF8oLiopX1xkKyQvKTt0aGlzLmlzSW52YWxpZFBERmpzRm9udD0hIW87dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ/dGhpcy5mYWxsYmFja05hbWU9b1sxXTp0aGlzLmlzTW9ub3NwYWNlP3RoaXMuZmFsbGJhY2tOYW1lPSJtb25vc3BhY2UiOnRoaXMuaXNTZXJpZkZvbnQ/dGhpcy5mYWxsYmFja05hbWU9InNlcmlmIjp0aGlzLmZhbGxiYWNrTmFtZT0ic2Fucy1zZXJpZiI7aWYodGhpcy5zeXN0ZW1Gb250SW5mbz8uZ3Vlc3NGYWxsYmFjayl7dGhpcy5zeXN0ZW1Gb250SW5mby5ndWVzc0ZhbGxiYWNrPSExO3RoaXMuc3lzdGVtRm9udEluZm8uY3NzKz1gLCR7dGhpcy5mYWxsYmFja05hbWV9YH10aGlzLmRpZmZlcmVuY2VzPW4uZGlmZmVyZW5jZXM7dGhpcy53aWR0aHM9bi53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9bi5kZWZhdWx0V2lkdGg7dGhpcy5jb21wb3NpdGU9bi5jb21wb3NpdGU7dGhpcy5jTWFwPW4uY01hcDt0aGlzLmNhcEhlaWdodD1uLmNhcEhlaWdodC9wcjt0aGlzLmFzY2VudD1uLmFzY2VudC9wcjt0aGlzLmRlc2NlbnQ9bi5kZXNjZW50L3ByO3RoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQ7dGhpcy5mb250TWF0cml4PW4uZm9udE1hdHJpeDt0aGlzLmJib3g9bi5iYm94O3RoaXMuZGVmYXVsdEVuY29kaW5nPW4uZGVmYXVsdEVuY29kaW5nO3RoaXMudG9Vbmljb2RlPW4udG9Vbmljb2RlO3RoaXMudG9Gb250Q2hhcj1bXTtpZigiVHlwZTMiPT09bi50eXBlKXtmb3IobGV0IGU9MDtlPDI1NjtlKyspdGhpcy50b0ZvbnRDaGFyW2VdPXRoaXMuZGlmZmVyZW5jZXNbZV18fG4uZGVmYXVsdEVuY29kaW5nW2VdO3JldHVybn10aGlzLmNpZEVuY29kaW5nPW4uY2lkRW5jb2Rpbmd8fCIiO3RoaXMudmVydGljYWw9ISFuLnZlcnRpY2FsO2lmKHRoaXMudmVydGljYWwpe3RoaXMudm1ldHJpY3M9bi52bWV0cmljczt0aGlzLmRlZmF1bHRWTWV0cmljcz1uLmRlZmF1bHRWTWV0cmljc31pZighdHx8dC5pc0VtcHR5KXt0JiZ3YXJuKCdGb250IGZpbGUgaXMgZW1wdHkgaW4gIicrZSsnIiAoJyt0aGlzLmxvYWRlZE5hbWUrIikiKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KG4pO3JldHVybn1bcyxpXT1nZXRGb250RmlsZVR5cGUodCxuKTtzPT09dGhpcy50eXBlJiZpPT09dGhpcy5zdWJ0eXBlfHxpbmZvKGBJbmNvbnNpc3RlbnQgZm9udCBmaWxlIFR5cGUvU3ViVHlwZSwgZXhwZWN0ZWQ6ICR7dGhpcy50eXBlfS8ke3RoaXMuc3VidHlwZX0gYnV0IGZvdW5kOiAke3N9LyR7aX0uYCk7bGV0IGw7dHJ5e3N3aXRjaChzKXtjYXNlIk1NVHlwZTEiOmluZm8oIk1NVHlwZTEgZm9udCAoIitlKyIpLCBmYWxsaW5nIGJhY2sgdG8gVHlwZTEuIik7Y2FzZSJUeXBlMSI6Y2FzZSJDSURGb250VHlwZTAiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO2NvbnN0IGE9IlR5cGUxQyI9PT1pfHwiQ0lERm9udFR5cGUwQyI9PT1pP25ldyBDRkZGb250KHQsbik6bmV3IFR5cGUxRm9udChlLHQsbik7YWRqdXN0V2lkdGhzKG4pO2w9dGhpcy5jb252ZXJ0KGUsYSxuKTticmVhaztjYXNlIk9wZW5UeXBlIjpjYXNlIlRydWVUeXBlIjpjYXNlIkNJREZvbnRUeXBlMiI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7bD10aGlzLmNoZWNrQW5kUmVwYWlyKGUsdCxuKTthZGp1c3RXaWR0aHMobik7dGhpcy5pc09wZW5UeXBlJiYocz0iT3BlblR5cGUiKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgRm9udCAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19Y2F0Y2goZSl7d2FybihlKTt0aGlzLmZhbGxiYWNrVG9TeXN0ZW1Gb250KG4pO3JldHVybn1hbWVuZEZhbGxiYWNrVG9Vbmljb2RlKG4pO3RoaXMuZGF0YT1sO3RoaXMudHlwZT1zO3RoaXMuc3VidHlwZT1pO3RoaXMuZm9udE1hdHJpeD1uLmZvbnRNYXRyaXg7dGhpcy53aWR0aHM9bi53aWR0aHM7dGhpcy5kZWZhdWx0V2lkdGg9bi5kZWZhdWx0V2lkdGg7dGhpcy50b1VuaWNvZGU9bi50b1VuaWNvZGU7dGhpcy5zZWFjTWFwPW4uc2VhY01hcH1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInJlbmRlcmVyIixGb250UmVuZGVyZXJGYWN0b3J5LmNyZWF0ZSh0aGlzLCEwKSl9I2dlKGUpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPXRoaXNbbl07dm9pZCAwIT09ZSYmKHRbbl09ZSl9cmV0dXJuIHR9ZXhwb3J0RGF0YSgpe3JldHVybntidWZmZXI6Y29tcGlsZUZvbnRJbmZvKHRoaXMuI2dlKGRyKSksY2hhclByb2NPcGVyYXRvckxpc3Q6dGhpcy5jaGFyUHJvY09wZXJhdG9yTGlzdCxleHRyYTp0aGlzLmZvbnRFeHRyYVByb3BlcnRpZXM/dGhpcy4jZ2UoZ3IpOnZvaWQgMH19ZmFsbGJhY2tUb1N5c3RlbUZvbnQoZSl7dGhpcy5taXNzaW5nRmlsZT0hMDtjb25zdHtuYW1lOnQsdHlwZTpufT10aGlzO2xldCBhPW5vcm1hbGl6ZUZvbnROYW1lKHQpO2NvbnN0IHI9V2EoKSxzPUthKCksaT0hIXJbYV0sbz0hKCFzW2FdfHwhcltzW2FdXSk7YT1yW2FdfHxzW2FdfHxhO2NvbnN0IGw9dHIoKVthXTtpZihsKXtpc05hTih0aGlzLmFzY2VudCkmJih0aGlzLmFzY2VudD1sLmFzY2VudC9wcik7aXNOYU4odGhpcy5kZXNjZW50KSYmKHRoaXMuZGVzY2VudD1sLmRlc2NlbnQvcHIpO2lzTmFOKHRoaXMuY2FwSGVpZ2h0KSYmKHRoaXMuY2FwSGVpZ2h0PWwuY2FwSGVpZ2h0L3ByKX10aGlzLmJvbGQ9L2JvbGQvaS50ZXN0KGEpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9pLnRlc3QoYSk7dGhpcy5ibGFjaz0vQmxhY2svLnRlc3QodCk7Y29uc3QgZj0vTmFycm93Ly50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghaXx8ZikmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigoaXx8bykmJiJDSURGb250VHlwZTIiPT09biYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3Qgbj1lLmNpZFRvR2lkTWFwLGE9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLCRhKCkpOy9BcmlhbC0/QmxhY2svaS50ZXN0KHQpP2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxZYSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxKYSgpKTtpZihuKXtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07dm9pZCAwIT09blt0XSYmKGFbK2VdPW5bdF0pfW4ubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj1hW2VdO3ZvaWQgMD09PW5bcl0mJihhWytlXT10KX0pfXRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24oZSx0KXthWytlXT10fSk7dGhpcy50b0ZvbnRDaGFyPWE7dGhpcy50b1VuaWNvZGU9bmV3IFRvVW5pY29kZU1hcChhKX1lbHNlIGlmKC9TeW1ib2wvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoamEseWEoKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKC9EaW5nYmF0cy9pLnRlc3QoYSkpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcihrYSxxYSgpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoaXx8byl7Y29uc3QgZT1idWlsZFRvRm9udENoYXIodGhpcy5kZWZhdWx0RW5jb2RpbmcseWEoKSx0aGlzLmRpZmZlcmVuY2VzKTsiQ0lERm9udFR5cGUyIiE9PW58fHRoaXMuY2lkRW5jb2Rpbmcuc3RhcnRzV2l0aCgiSWRlbnRpdHktIil8fHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXB8fHRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24odCxuKXtlWyt0XT1ufSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPXlhKCksbj1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCh0LGEpPT57aWYoIXRoaXMuY29tcG9zaXRlKXtjb25zdCBuPWdldFVuaWNvZGVGb3JHbHlwaCh0aGlzLmRpZmZlcmVuY2VzW3RdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1t0XSxlKTstMSE9PW4mJihhPW4pfW5bK3RdPWF9KTt0aGlzLmNvbXBvc2l0ZSYmdGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcCYmL1RhaG9tYXxWZXJkYW5hL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChuLCRhKCkpO3RoaXMudG9Gb250Q2hhcj1ufWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSk7dGhpcy5sb2FkZWROYW1lPWEuc3BsaXQoIi0iLDEpWzBdfWNoZWNrQW5kUmVwYWlyKGUsdCxuKXtjb25zdCBhPVsiT1MvMiIsImNtYXAiLCJoZWFkIiwiaGhlYSIsImhtdHgiLCJtYXhwIiwibmFtZSIsInBvc3QiLCJsb2NhIiwiZ2x5ZiIsImZwZ20iLCJwcmVwIiwiY3Z0ICIsIkNGRiAiXTtmdW5jdGlvbiByZWFkVGFibGVzKGUsdCl7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO25bIk9TLzIiXT1udWxsO24uY21hcD1udWxsO24uaGVhZD1udWxsO24uaGhlYT1udWxsO24uaG10eD1udWxsO24ubWF4cD1udWxsO24ubmFtZT1udWxsO24ucG9zdD1udWxsO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9cmVhZFRhYmxlRW50cnkoZSk7YS5pbmNsdWRlcyh0LnRhZykmJigwIT09dC5sZW5ndGgmJihuW3QudGFnXT10KSl9cmV0dXJuIG59ZnVuY3Rpb24gcmVhZFRhYmxlRW50cnkoZSl7Y29uc3QgdD1lLmdldFN0cmluZyg0KSxuPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxzPWUucG9zO2UucG9zPWUuc3RhcnR8fDA7ZS5za2lwKGEpO2NvbnN0IGk9ZS5nZXRCeXRlcyhyKTtlLnBvcz1zO2lmKCJoZWFkIj09PXQpe2lbOF09aVs5XT1pWzEwXT1pWzExXT0wO2lbMTddfD0zMn1yZXR1cm57dGFnOnQsY2hlY2tzdW06bixsZW5ndGg6cixvZmZzZXQ6YSxkYXRhOmksdmlldzoiQ0ZGICI9PT10P251bGw6bmV3IERhdGFWaWV3KGkuYnVmZmVyLGkuYnl0ZU9mZnNldCxpLmJ5dGVMZW5ndGgpfX1mdW5jdGlvbiByZWFkT3BlblR5cGVIZWFkZXIoZSl7cmV0dXJue3ZlcnNpb246ZS5nZXRTdHJpbmcoNCksbnVtVGFibGVzOmUuZ2V0VWludDE2KCksc2VhcmNoUmFuZ2U6ZS5nZXRVaW50MTYoKSxlbnRyeVNlbGVjdG9yOmUuZ2V0VWludDE2KCkscmFuZ2VTaGlmdDplLmdldFVpbnQxNigpfX1mdW5jdGlvbiBzYW5pdGl6ZUdseXBoKGUsdCxuLGEscixzKXtjb25zdCBpPXtsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH07aWYodDwwfHx0Pj1lLmxlbmd0aHx8bj5lLmxlbmd0aHx8bi10PD0xMilyZXR1cm4gaTtjb25zdCBvPWUuc3ViYXJyYXkodCxuKSxsPXNpZ25lZEludDE2KG9bMl0sb1szXSksZj1zaWduZWRJbnQxNihvWzRdLG9bNV0pLGM9c2lnbmVkSW50MTYob1s2XSxvWzddKSxoPXNpZ25lZEludDE2KG9bOF0sb1s5XSk7aWYobD5jKXt3cml0ZVNpZ25lZEludDE2KG8sMixjKTt3cml0ZVNpZ25lZEludDE2KG8sNixsKX1pZihmPmgpe3dyaXRlU2lnbmVkSW50MTYobyw0LGgpO3dyaXRlU2lnbmVkSW50MTYobyw4LGYpfWNvbnN0IHU9c2lnbmVkSW50MTYob1swXSxvWzFdKTtpZih1PDApe2lmKHU8LTEpcmV0dXJuIGk7YS5zZXQobyxyKTtpLmxlbmd0aD1vLmxlbmd0aDtyZXR1cm4gaX1sZXQgbSxwPTEwLGQ9MDtmb3IobT0wO208dTttKyspe2Q9KG9bcF08PDh8b1twKzFdKSsxO3ArPTJ9Y29uc3QgZz1wLGI9b1twXTw8OHxvW3ArMV07aS5zaXplT2ZJbnN0cnVjdGlvbnM9YjtwKz0yK2I7Y29uc3Qgdz1wO2xldCBqPTA7Zm9yKG09MDttPGQ7bSsrKXtjb25zdCBlPW9bcCsrXTsxOTImZSYmKG9bcC0xXT02MyZlKTtsZXQgdD0yOzImZT90PTE6MTYmZSYmKHQ9MCk7bGV0IG49Mjs0JmU/bj0xOjMyJmUmJihuPTApO2NvbnN0IGE9dCtuO2orPWE7aWYoOCZlKXtjb25zdCBlPW9bcCsrXTswPT09ZSYmKG9bcC0xXV49OCk7bSs9ZTtqKz1lKmF9fWlmKDA9PT1qKXJldHVybiBpO2xldCBrPXArajtpZihrPm8ubGVuZ3RoKXJldHVybiBpO2lmKCFzJiZiPjApe2Euc2V0KG8uc3ViYXJyYXkoMCxnKSxyKTthLnNldChbMCwwXSxyK2cpO2Euc2V0KG8uc3ViYXJyYXkodyxrKSxyK2crMik7ay09YjtvLmxlbmd0aC1rPjMmJihrPWsrMyYtNCk7aS5sZW5ndGg9aztyZXR1cm4gaX1pZihvLmxlbmd0aC1rPjMpe2s9ayszJi00O2Euc2V0KG8uc3ViYXJyYXkoMCxrKSxyKTtpLmxlbmd0aD1rO3JldHVybiBpfWEuc2V0KG8scik7aS5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIGl9ZnVuY3Rpb24gcmVhZE5hbWVUYWJsZShlKXtjb25zdCBuPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1uO2NvbnN0IGE9W1tdLFtdXSxyPVtdLHM9ZS5sZW5ndGgsaT1uK3M7aWYoMCE9PXQuZ2V0VWludDE2KCl8fHM8NilyZXR1cm5bYSxyXTtjb25zdCBvPXQuZ2V0VWludDE2KCksbD10LmdldFVpbnQxNigpO2xldCBmLGM7Zm9yKGY9MDtmPG8mJnQucG9zKzEyPD1pO2YrKyl7Y29uc3QgZT17cGxhdGZvcm06dC5nZXRVaW50MTYoKSxlbmNvZGluZzp0LmdldFVpbnQxNigpLGxhbmd1YWdlOnQuZ2V0VWludDE2KCksbmFtZTp0LmdldFVpbnQxNigpLGxlbmd0aDp0LmdldFVpbnQxNigpLG9mZnNldDp0LmdldFVpbnQxNigpfTsoaXNNYWNOYW1lUmVjb3JkKGUpfHxpc1dpbk5hbWVSZWNvcmQoZSkpJiZyLnB1c2goZSl9Zm9yKGY9MCxjPXIubGVuZ3RoO2Y8YztmKyspe2NvbnN0IGU9cltmXTtpZihlLmxlbmd0aDw9MCljb250aW51ZTtjb25zdCBzPW4rbCtlLm9mZnNldDtpZihzK2UubGVuZ3RoPmkpY29udGludWU7dC5wb3M9cztjb25zdCBvPWUubmFtZTtpZihlLmVuY29kaW5nKXtsZXQgbj0iIjtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKz0yKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRVaW50MTYoKSk7YVsxXVtvXT1ufWVsc2UgYVswXVtvXT10LmdldFN0cmluZyhlLmxlbmd0aCl9cmV0dXJuW2Escl19Y29uc3Qgcj1bMCwwLDAsMCwwLDAsMCwwLC0yLC0yLC0yLC0yLDAsMCwtMiwtNSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwtMSwtMSwxLC0xLC05OTksMCwxLDAsLTEsLTIsMCwtMSwtMiwtMSwtMSwwLC0xLC0xLDAsMCwtOTk5LC05OTksLTEsLTEsLTEsLTEsLTIsLTk5OSwtMiwtMiwtOTk5LDAsLTIsLTIsMCwwLC0yLDAsLTIsMCwwLDAsLTIsLTEsLTEsMSwxLDAsMCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwwLDAsLTEsMCwtMSwtMSwwLC05OTksLTEsLTEsLTEsLTEsLTEsLTEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsLTIsLTk5OSwtOTk5LC05OTksLTk5OSwtOTk5LC0xLC0xLC0yLC0yLDAsMCwwLDAsLTEsLTEsLTk5OSwtMiwtMiwwLDAsLTEsLTIsLTIsMCwwLDAsLTEsLTEsLTEsLTJdO2Z1bmN0aW9uIHNhbml0aXplVFRQcm9ncmFtKGUsdCl7bGV0IG4sYSxzLGksbyxsPWUuZGF0YSxmPTAsYz0wLGg9MDtjb25zdCB1PVtdLG09W10scD1bXTtsZXQgZD10LnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucyxnPSExLGI9MCx3PTA7Zm9yKGxldCBlPWwubGVuZ3RoO2Y8ZTspe2NvbnN0IGU9bFtmKytdO2lmKDY0PT09ZSl7YT1sW2YrK107aWYoZ3x8dylmKz1hO2Vsc2UgZm9yKG49MDtuPGE7bisrKXUucHVzaChsW2YrK10pfWVsc2UgaWYoNjU9PT1lKXthPWxbZisrXTtpZihnfHx3KWYrPTIqYTtlbHNlIGZvcihuPTA7bjxhO24rKyl7cz1sW2YrK107dS5wdXNoKHNpZ25lZEludDE2KHMsbFtmKytdKSl9fWVsc2UgaWYoMTc2PT0oMjQ4JmUpKXthPWUtMTc2KzE7aWYoZ3x8dylmKz1hO2Vsc2UgZm9yKG49MDtuPGE7bisrKXUucHVzaChsW2YrK10pfWVsc2UgaWYoMTg0PT0oMjQ4JmUpKXthPWUtMTg0KzE7aWYoZ3x8dylmKz0yKmE7ZWxzZSBmb3Iobj0wO248YTtuKyspe3M9bFtmKytdO3UucHVzaChzaWduZWRJbnQxNihzLGxbZisrXSkpfX1lbHNlIGlmKDQzIT09ZXx8ZClpZig0NCE9PWV8fGQpe2lmKDQ1PT09ZSlpZihnKXtnPSExO2M9Zn1lbHNle289bS5wb3AoKTtpZighbyl7d2FybigiVFQ6IEVOREYgYmFkIHN0YWNrIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1pPXAucG9wKCk7bD1vLmRhdGE7Zj1vLmk7dC5mdW5jdGlvbnNTdGFja0RlbHRhc1tpXT11Lmxlbmd0aC1vLnN0YWNrVG9wfWVsc2UgaWYoMTM3PT09ZSl7aWYoZ3x8dyl7d2FybigiVFQ6IG5lc3RlZCBJREVGcyBub3QgYWxsb3dlZCIpO2Q9ITB9Zz0hMDtoPWZ9ZWxzZSBpZig4OD09PWUpKytiO2Vsc2UgaWYoMjc9PT1lKXc9YjtlbHNlIGlmKDg5PT09ZSl7dz09PWImJih3PTApOy0tYn1lbHNlIGlmKDI4PT09ZSYmIWcmJiF3KXtjb25zdCBlPXUuYXQoLTEpO2U+MCYmKGYrPWUtMSl9fWVsc2V7aWYoZ3x8dyl7d2FybigiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpO2Q9ITB9Zz0hMDtoPWY7aT11LnBvcCgpO3QuZnVuY3Rpb25zRGVmaW5lZFtpXT17ZGF0YTpsLGk6Zn19ZWxzZSBpZighZyYmIXcpe2k9dS5hdCgtMSk7aWYoaXNOYU4oaSkpaW5mbygiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2V7dC5mdW5jdGlvbnNVc2VkW2ldPSEwO2lmKGkgaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT11Lmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW2ldO2lmKGU8MCl7d2FybigiVFQ6IENBTEwgaW52YWxpZCBmdW5jdGlvbnMgc3RhY2sgZGVsdGEuIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn11Lmxlbmd0aD1lfWVsc2UgaWYoaSBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFwLmluY2x1ZGVzKGkpKXttLnB1c2goe2RhdGE6bCxpOmYsc3RhY2tUb3A6dS5sZW5ndGgtMX0pO3AucHVzaChpKTtvPXQuZnVuY3Rpb25zRGVmaW5lZFtpXTtpZighbyl7d2FybigiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1sPW8uZGF0YTtmPW8uaX19fWlmKCFnJiYhdyl7bGV0IHQ9MDtlPD0xNDI/dD1yW2VdOmU+PTE5MiYmZTw9MjIzP3Q9LTE6ZT49MjI0JiYodD0tMik7aWYoZT49MTEzJiZlPD0xMTcpe2E9dS5wb3AoKTtpc05hTihhKXx8KHQ9MiotYSl9Zm9yKDt0PDAmJnUubGVuZ3RoPjA7KXt1LnBvcCgpO3QrK31mb3IoO3Q+MDspe3UucHVzaChOYU4pO3QtLX19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPWQ7Y29uc3Qgaj1bbF07Zj5sLmxlbmd0aCYmai5wdXNoKG5ldyBVaW50OEFycmF5KGYtbC5sZW5ndGgpKTtpZihoPmMpe3dhcm4oIlRUOiBjb21wbGVtZW50aW5nIGEgbWlzc2luZyBmdW5jdGlvbiB0YWlsIik7ai5wdXNoKG5ldyBVaW50OEFycmF5KFszNCw0NV0pKX0hZnVuY3Rpb24gZm9sZFRUVGFibGUoZSx0KXtpZih0Lmxlbmd0aD4xKXtsZXQgbixhLHI9MDtmb3Iobj0wLGE9dC5sZW5ndGg7bjxhO24rKylyKz10W25dLmxlbmd0aDtyPXIrMyYtNDtjb25zdCBzPW5ldyBVaW50OEFycmF5KHIpO2xldCBpPTA7Zm9yKG49MCxhPXQubGVuZ3RoO248YTtuKyspe3Muc2V0KHRbbl0saSk7aSs9dFtuXS5sZW5ndGh9ZS5kYXRhPXM7ZS5sZW5ndGg9cn19KGUsail9bGV0IHMsaTtpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOm4sb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IG49ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3QgaT17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOm4sbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cixvZmZzZXRUYWJsZTpzfTtzd2l0Y2gobil7Y2FzZSAxOnJldHVybiBpO2Nhc2UgMjppLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtpLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtpLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gaX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7bn0uYCl9KGUpLHI9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgaT0wO2k8bjtpKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW2ldO2NvbnN0IG49cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLG4ubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtsXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGNvbnN0IGUgb2YgbClmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBlPWE/LnJlcGxhY2VBbGwoL1xzL2csIiIpO2lmKGUpe2lmKGU9PT10KXJldHVybntoZWFkZXI6bix0YWJsZXM6b307aWYoIShyLmxlbmd0aDwyKSlmb3IoY29uc3QgdCBvZiByKWU9PT10JiYocz17bmFtZTp0LGhlYWRlcjpuLHRhYmxlczpvfSl9fX1pZihzKXt3YXJuKGBUcnVlVHlwZSBDb2xsZWN0aW9uIGRvZXMgbm90IGNvbnRhaW4gIiR7dH0iIGZvbnQsIGZhbGxpbmcgYmFjayB0byAiJHtzLm5hbWV9IiBmb250IGluc3RlYWQuYCk7cmV0dXJue2hlYWRlcjpzLmhlYWRlcix0YWJsZXM6cy50YWJsZXN9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LmApfSh0LHRoaXMubmFtZSk7cz1lLmhlYWRlcjtpPWUudGFibGVzfWVsc2V7cz1yZWFkT3BlblR5cGVIZWFkZXIodCk7aT1yZWFkVGFibGVzKHQscy5udW1UYWJsZXMpfWNvbnN0IG89IWlbIkNGRiAiXTtsZXQgbCxmPW51bGw7aWYobyl7aWYoIWkubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighaS5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO2kuZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXt0cnl7Zj1uZXcgQ0ZGUGFyc2VyKG5ldyBTdHJlYW0oaVsiQ0ZGICJdLmRhdGEpLG4sITApLnBhcnNlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIHBhcnNlIGZvbnQgIituLmxvYWRlZE5hbWUpfWlmKCJPVFRPIj09PXMudmVyc2lvbiYmKCFuLmNvbXBvc2l0ZXx8IkZvbnRGaWxlMyI9PT1uLmZvbnRGaWxlTiYmZj8uaXNDSURGb250KXx8IWkuaGVhZHx8IWkuaGhlYXx8IWkubWF4cHx8IWkucG9zdClyZXR1cm4gdGhpcy5jb252ZXJ0KGUsbmV3IENGRkZvbnQobmV3IFN0cmVhbShpWyJDRkYgIl0uZGF0YSksbiksbik7ZGVsZXRlIGkuZ2x5ZjtkZWxldGUgaS5sb2NhO2RlbGV0ZSBpLmZwZ207ZGVsZXRlIGkucHJlcDtkZWxldGUgaVsiY3Z0ICJdO3RoaXMuaXNPcGVuVHlwZT0hMH1pZighaS5tYXhwKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKGYpdHJ5e2YuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2lbIkNGRiAiXS5kYXRhPW5ldyBDRkZDb21waWxlcihmKS5jb21waWxlKCk7bD1mLmNoYXJTdHJpbmdDb3VudH1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrbi5sb2FkZWROYW1lKX10LnBvcz0odC5zdGFydHx8MCkraS5tYXhwLm9mZnNldDtsZXQgYz10LmdldEludDMyKCk7Y29uc3QgaD1sPz90LmdldFVpbnQxNigpO2lmKDIwNDgwPT09YyYmNiE9PWkubWF4cC5sZW5ndGgpe2kubWF4cC5kYXRhPWkubWF4cC5kYXRhLnN1YmFycmF5KDAsNik7aS5tYXhwLmxlbmd0aD02fWlmKDY1NTM2IT09YyYmMjA0ODAhPT1jKXtpZig2PT09aS5tYXhwLmxlbmd0aCljPTIwNDgwO2Vsc2V7aWYoIShpLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtjPTY1NTM2fXdyaXRlVWludDMyKGkubWF4cC5kYXRhLDAsYyl9bGV0IHU9aW50MTYoaS5oZWFkLmRhdGFbNTBdLGkuaGVhZC5kYXRhWzUxXSk7aWYoaS5sb2NhKXtjb25zdCBlPXU/NCooaCsxKToyKihoKzEpO2lmKGkubG9jYS5sZW5ndGghPT1lKXt3YXJuKCJJbmNvcnJlY3QgJ2xvY2EnIHRhYmxlIGxlbmd0aCAtLSBhdHRlbXB0aW5nIHRvIGZpeCBpdC4iKTtjb25zdCBuPU9iamVjdC52YWx1ZXMoaSkuZmlsdGVyKEJvb2xlYW4pLnNvcnQoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSxhPW4uaW5kZXhPZihpLmxvY2EpLHI9blthKzFdfHxudWxsO2lmKHImJmkubG9jYS5vZmZzZXQrZTxyLm9mZnNldCl7Y29uc3Qgbj10LnBvczt0LnBvcz10LnN0YXJ0fHwwO3Quc2tpcChpLmxvY2Eub2Zmc2V0KTtpLmxvY2EuZGF0YT10LmdldEJ5dGVzKGUpO2kubG9jYS5sZW5ndGg9ZTt0LnBvcz1ufX19aWYobi5zY2FsZUZhY3RvcnM/Lmxlbmd0aD09PWgmJm8pe2NvbnN0e3NjYWxlRmFjdG9yczplfT1uLHQ9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOmkuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnUsbG9jYVRhYmxlOmkubG9jYS5kYXRhLG51bUdseXBoczpofSk7dC5zY2FsZShlKTtjb25zdHtnbHlmOmEsbG9jYTpyLGlzTG9jYXRpb25Mb25nOnN9PXQud3JpdGUoKTtpLmdseWYuZGF0YT1hO2kubG9jYS5kYXRhPXI7aWYocyE9PSEhdSl7aS5oZWFkLmRhdGFbNTBdPTA7dT1pLmhlYWQuZGF0YVs1MV09cz8xOjB9Y29uc3Qgbz1pLmhtdHguZGF0YTtmb3IobGV0IHQ9MDt0PGg7dCsrKXtjb25zdCBuPTQqdCxhPU1hdGgucm91bmQoZVt0XSppbnQxNihvW25dLG9bbisxXSkpO29bbl09YT4+OCYyNTU7b1tuKzFdPTI1NSZhO3dyaXRlU2lnbmVkSW50MTYobyxuKzIsTWF0aC5yb3VuZChlW3RdKnNpZ25lZEludDE2KG9bbisyXSxvW24rM10pKSl9fWxldCBtPWgrMSxwPSEwO2lmKG0+NjU1MzUpe3A9ITE7bT1oO3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gZ2x5ZnMgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpfWxldCBkPTAsZz0wO2lmKGM+PTY1NTM2JiZpLm1heHAubGVuZ3RoPj0zMil7dC5wb3MrPTg7aWYodC5nZXRVaW50MTYoKT4yKXtpLm1heHAuZGF0YVsxNF09MDtpLm1heHAuZGF0YVsxNV09Mn10LnBvcys9NDtkPXQuZ2V0VWludDE2KCk7dC5wb3MrPTQ7Zz10LmdldFVpbnQxNigpfWVsc2UgaWYobyYmMjA0ODA9PT1jKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDMyKTt3cml0ZVVpbnQzMihlLDAsNjU1MzYpO2VbNF09aD4+OCYyNTU7ZVs1XT0yNTUmaDtlLmZpbGwoMjU1LDYsMTQpO2VbMTVdPTI7ZVsyOF09MjU1O2VbMjldPTI1NTtlWzMxXT0xNjtpLm1heHAuZGF0YT1lO2kubWF4cC5sZW5ndGg9MzI7Yz02NTUzNn1pLm1heHAuZGF0YVs0XT1tPj44O2kubWF4cC5kYXRhWzVdPTI1NSZtO2NvbnN0IGI9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxuLGEpe2NvbnN0IHI9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxyKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHIpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IG49MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7bjxhO24rKyl7aWYobj50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIituKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtuXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtuXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIituKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHIsYSk7aWYobiYmMSZuLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShuLmxlbmd0aCsxKTtlLnNldChuLmRhdGEpO24uZGF0YT1lfXJldHVybiByLmhpbnRzVmFsaWR9KGkuZnBnbSxpLnByZXAsaVsiY3Z0ICJdLGQpO2lmKCFiKXtkZWxldGUgaS5mcGdtO2RlbGV0ZSBpLnByZXA7ZGVsZXRlIGlbImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxuLGEscixzKXtpZighdCl7biYmKG4uZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IGk9ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1pKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cil7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtyfSkuYCk7bz1yO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgbD1yLW8tKG4ubGVuZ3RoLTQqbz4+MSk7aWYobD4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoKzIqbCk7ZS5zZXQobi5kYXRhKTtpZihzKXtlW24ubGVuZ3RoXT1uLmRhdGFbMl07ZVtuLmxlbmd0aCsxXT1uLmRhdGFbM119bi5kYXRhPWV9fSh0LGkuaGhlYSxpLmhtdHgsaS5oZWFkLG0scCk7aWYoIWkuaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxuKXtjb25zdHtkYXRhOmEsdmlldzpyfT1lLHM9ci5nZXRJbnQzMigwKTtpZihzPj4xNiE9MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIrcyk7ci5zZXRJbnQzMigwLDY1NTM2KX1jb25zdCBpPXNpZ25lZEludDE2KGFbNTBdLGFbNTFdKTtpZihpPDB8fGk+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIraSk7Y29uc3QgZT10KzE7aWYobj09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKG4hPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK2kpO2FbNTBdPTA7YVs1MV09MX19fShpLmhlYWQsaCxvP2kubG9jYS5sZW5ndGg6MCk7bGV0IHc9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihvKXtjb25zdCBlPWZ1bmN0aW9uIHNhbml0aXplR2x5cGhMb2NhdGlvbnMoZSx0LG4sYSxyLHMsaSl7bGV0IG8sbCxmO2lmKGEpe289NDtsPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlTG9uZyhlLHQpe3JldHVybiBlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM119O2Y9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGVMb25nKGUsdCxuKXtlW3RdPW4+Pj4yNCYyNTU7ZVt0KzFdPW4+PjE2JjI1NTtlW3QrMl09bj4+OCYyNTU7ZVt0KzNdPTI1NSZufX1lbHNle289MjtsPWZ1bmN0aW9uIGZvbnRJdGVtRGVjb2RlKGUsdCl7cmV0dXJuIGVbdF08PDl8ZVt0KzFdPDwxfTtmPWZ1bmN0aW9uIGZvbnRJdGVtRW5jb2RlKGUsdCxuKXtlW3RdPW4+PjkmMjU1O2VbdCsxXT1uPj4xJjI1NX19Y29uc3QgYz1zP24rMTpuLGg9byooMStjKSx1PW5ldyBVaW50OEFycmF5KGgpO3Uuc2V0KGUuZGF0YS5zdWJhcnJheSgwLGgpKTtlLmRhdGE9dTtjb25zdCBtPXQuZGF0YSxwPW0ubGVuZ3RoLGQ9bmV3IFVpbnQ4QXJyYXkocCk7bGV0IGcsYjtjb25zdCB3PVtdO2ZvcihnPTAsYj0wO2c8bisxO2crKyxiKz1vKXtsZXQgZT1sKHUsYik7ZT5wJiYoZT1wKTt3LnB1c2goe2luZGV4Omcsb2Zmc2V0OmUsZW5kT2Zmc2V0OjB9KX13LnNvcnQoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KTtmb3IoZz0wO2c8bjtnKyspd1tnXS5lbmRPZmZzZXQ9d1tnKzFdLm9mZnNldDt3LnNvcnQoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCk7Zm9yKGc9MDtnPG47ZysrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09d1tnXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3Qgbj13W2crMV0ub2Zmc2V0O2lmKDAhPT1uKXt3W2ddLmVuZE9mZnNldD1uO2JyZWFrfX1jb25zdCBqPXcuYXQoLTIpOzAhPT1qLm9mZnNldCYmMD09PWouZW5kT2Zmc2V0JiYoai5lbmRPZmZzZXQ9cCk7Y29uc3Qgaz1mdW5jdGlvbiBwcnVuZUNvbXBvc2l0ZUdseXBoQ3ljbGVzKGUsdCxuKXtjb25zdCBhPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxyPW5ldyBBcnJheShuKTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ub2Zmc2V0LHM9TWF0aC5taW4odFtlXS5lbmRPZmZzZXQsYS5ieXRlTGVuZ3RoKTtpZihzLW48PVphfHxhLmdldEludDE2KG4pPj0wKWNvbnRpbnVlO2NvbnN0IGk9W107bGV0IG89bitaYTtmb3IoO28rNDw9czspe2NvbnN0IGU9YS5nZXRVaW50MTYobyksdD1hLmdldFVpbnQxNihvKzIpO2xldCBuPTQrKDEmZT80OjIpOzgmZT9uKz0yOjY0JmU/bis9NDoxMjgmZSYmKG4rPTgpO2kucHVzaCh7Z2lkOnQsb2Zmc2V0Om8sc2l6ZTpuLGZsYWdzOmV9KTtvKz1uO2lmKCEoMzImZSkpYnJlYWt9aS5sZW5ndGgmJihyW2VdPWkpfWNvbnN0IHM9bmV3IFVpbnQ4QXJyYXkobiksaT1uZXcgTWFwO2ZvcihsZXQgZT0wO2U8bjtlKyspe2lmKDAhPT1zW2VdfHwhcltlXSljb250aW51ZTtjb25zdCB0PVt7bm9kZTplLGlkeDowfV07c1tlXT0xO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGU9dC5hdCgtMSksYT1yW2Uubm9kZV07aWYoIWF8fGUuaWR4Pj1hLmxlbmd0aCl7c1tlLm5vZGVdPTI7dC5wb3AoKTtjb250aW51ZX1jb25zdCBvPWUuaWR4KyssbD1hW29dLmdpZDtpZighKGw+PW58fDI9PT1zW2xdKSlpZigwIT09c1tsXSlpLmdldE9ySW5zZXJ0Q29tcHV0ZWQoZS5ub2RlLG1ha2VTZXQpLmFkZChvKTtlbHNle3NbbF09MTt0LnB1c2goe25vZGU6bCxpZHg6MH0pfX19Y29uc3Qgbz1uZXcgU2V0O2Zvcihjb25zdFtuLHNdb2YgaSl7Y29uc3QgaT1yW25dLGw9W107Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspcy5oYXMoZSl8fGwucHVzaChpW2VdKTtpZigwPT09bC5sZW5ndGgpe28uYWRkKG4pO2NvbnRpbnVlfWNvbnN0IGY9dFtuXS5vZmZzZXQsYz1NYXRoLm1pbih0W25dLmVuZE9mZnNldCxhLmJ5dGVMZW5ndGgpO2xldCBoPWYrWmE7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0Kyspe2NvbnN0IG49bFt0XSxyPXQ9PT1sLmxlbmd0aC0xO2xldCBzPS0yNTcmbi5mbGFncztzPXI/LTMzJnM6MzJ8cztoIT09bi5vZmZzZXQmJmUuY29weVdpdGhpbihoLG4ub2Zmc2V0LG4ub2Zmc2V0K24uc2l6ZSk7YS5zZXRVaW50MTYoaCxzKTtoKz1uLnNpemV9aDxjJiZlLmZpbGwoMCxoLGMpfXJldHVybiBvfShtLHcsbikseT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBxPTA7Zih1LDAscSk7Zm9yKGc9MCxiPW87ZzxuO2crKyxiKz1vKXtjb25zdCBlPWsuaGFzKGcpP3tsZW5ndGg6MCxzaXplT2ZJbnN0cnVjdGlvbnM6MH06c2FuaXRpemVHbHlwaChtLHdbZ10ub2Zmc2V0LHdbZ10uZW5kT2Zmc2V0LGQscSxyKSx0PWUubGVuZ3RoOzA9PT10JiYoeVtnXT0hMCk7ZS5zaXplT2ZJbnN0cnVjdGlvbnM+aSYmKGk9ZS5zaXplT2ZJbnN0cnVjdGlvbnMpO3ErPXQ7Zih1LGIscSl9aWYoMD09PXEpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OSwwXSk7Zm9yKGc9MCxiPW87ZzxjO2crKyxiKz1vKWYodSxiLGUubGVuZ3RoKTt0LmRhdGE9ZX1lbHNlIGlmKHMpe2NvbnN0IG49bCh1LG8pO2lmKGQubGVuZ3RoPm4rcSl0LmRhdGE9ZC5zdWJhcnJheSgwLG4rcSk7ZWxzZXt0LmRhdGE9bmV3IFVpbnQ4QXJyYXkobitxKTt0LmRhdGEuc2V0KGQuc3ViYXJyYXkoMCxxKSl9dC5kYXRhLnNldChkLnN1YmFycmF5KDAsbikscSk7ZihlLmRhdGEsdS5sZW5ndGgtbyxxK24pfWVsc2UgdC5kYXRhPWQuc3ViYXJyYXkoMCxxKTtyZXR1cm57bWlzc2luZ0dseXBoczp5LG1heFNpemVPZkluc3RydWN0aW9uczppfX0oaS5sb2NhLGkuZ2x5ZixoLHUsYixwLGcpO3c9ZS5taXNzaW5nR2x5cGhzO2lmKGM+PTY1NTM2JiZpLm1heHAubGVuZ3RoPj0zMil7aS5tYXhwLmRhdGFbMjZdPWUubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zPj44O2kubWF4cC5kYXRhWzI3XT0yNTUmZS5tYXhTaXplT2ZJbnN0cnVjdGlvbnN9fWlmKCFpLmhoZWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PWkuaGhlYS5kYXRhWzEwXSYmMD09PWkuaGhlYS5kYXRhWzExXSl7aS5oaGVhLmRhdGFbMTBdPTI1NTtpLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IGo9e3VuaXRzUGVyRW06aW50MTYoaS5oZWFkLmRhdGFbMThdLGkuaGVhZC5kYXRhWzE5XSkseU1heDpzaWduZWRJbnQxNihpLmhlYWQuZGF0YVs0Ml0saS5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KGkuaGVhZC5kYXRhWzM4XSxpLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihpLmhoZWEuZGF0YVs0XSxpLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihpLmhoZWEuZGF0YVs2XSxpLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihpLmhoZWEuZGF0YVs4XSxpLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PWouYXNjZW50L2oudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9ai5kZXNjZW50L2oudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9ai5saW5lR2FwL2oudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvPy5saW5lSGVpZ2h0KXt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVIZWlnaHQ7dGhpcy5saW5lR2FwPXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lR2FwfWVsc2UgdGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudCt0aGlzLmxpbmVHYXA7aS5wb3N0JiZmdW5jdGlvbiByZWFkUG9zdFNjcmlwdFRhYmxlKGUsbixhKXtjb25zdCByPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1yO2NvbnN0IHM9citlLmxlbmd0aCxpPXQuZ2V0SW50MzIoKTt0LnNraXAoMjgpO2xldCBvLGwsZj0hMDtzd2l0Y2goaSl7Y2FzZSA2NTUzNjpvPU9hO2JyZWFrO2Nhc2UgMTMxMDcyOmNvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlIT09YSl7Zj0hMTticmVha31jb25zdCByPVtdO2ZvcihsPTA7bDxlOysrbCl7Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGU+PTMyNzY4KXtmPSExO2JyZWFrfXIucHVzaChlKX1pZighZilicmVhaztjb25zdCBjPVtdO2Zvcig7dC5wb3M8czspe2NvbnN0IGU9dC5nZXRCeXRlKCksbj10LmdldFN0cmluZyhlKTtjLnB1c2gobil9bz1bXTtmb3IobD0wO2w8ZTsrK2wpe2NvbnN0IGU9cltsXTtlPDI1OD9vLnB1c2goT2FbZV0pOm8ucHVzaChjW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK2kpO2Y9ITE7bi5kZWZhdWx0RW5jb2RpbmcmJihvPW4uZGVmYXVsdEVuY29kaW5nKX1uLmdseXBoTmFtZXM9bztyZXR1cm4gZn0oaS5wb3N0LG4saCk7aS5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKG4pfTtjb25zdCBrPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIXdbZV19aWYobi5jb21wb3NpdGUpe2NvbnN0IGU9bi5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7bi5jTWFwLmZvckVhY2goZnVuY3Rpb24obixhKXsic3RyaW5nIj09dHlwZW9mIGEmJihhPWNvbnZlcnRDaWRTdHJpbmcobixhLCEwKSk7aWYoYT42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtsZXQgcj0tMTt0P3I9YTp2b2lkIDAhPT1lW2FdJiYocj1lW2FdKTtyPj0wJiZyPGgmJmhhc0dseXBoKHIpJiYoa1tuXT1yKX0pfWVsc2V7Y29uc3QgZT1mdW5jdGlvbiByZWFkQ21hcFRhYmxlKGUsdCxuLGEpe2lmKCFlKXt3YXJuKCJObyBjbWFwIHRhYmxlIGF2YWlsYWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19bGV0IHIscz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9czt0LnNraXAoMik7Y29uc3QgaT10LmdldFVpbnQxNigpO2xldCBvLGw9ITE7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7Y29uc3Qgcj10LmdldFVpbnQxNigpLHM9dC5nZXRVaW50MTYoKSxmPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGM9ITE7aWYobz8ucGxhdGZvcm1JZCE9PXJ8fG8/LmVuY29kaW5nSWQhPT1zKXtpZigwIT09cnx8MCE9PXMmJjEhPT1zJiYzIT09cylpZigxPT09ciYmMD09PXMpYz0hMDtlbHNlIGlmKDMhPT1yfHwxIT09c3x8IWEmJm8pe2lmKG4mJjM9PT1yJiYwPT09cyl7Yz0hMDtsZXQgbj0hMDtpZihlPGktMSl7Y29uc3QgZT10LnBlZWtCeXRlcygyKTtpbnQxNihlWzBdLGVbMV0pPHImJihuPSExKX1uJiYobD0hMCl9fWVsc2V7Yz0hMDtufHwobD0hMCl9ZWxzZSBjPSEwO2MmJihvPXtwbGF0Zm9ybUlkOnIsZW5jb2RpbmdJZDpzLG9mZnNldDpmfSk7aWYobClicmVha319byYmKHQucG9zPXMrby5vZmZzZXQpO2lmKCFvfHwtMT09PXQucGVla0J5dGUoKSl7d2FybigiQ291bGQgbm90IGZpbmQgYSBwcmVmZXJyZWQgY21hcCB0YWJsZS4iKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19Y29uc3QgZj10LmdldFVpbnQxNigpO2xldCBjPSExO2NvbnN0IGg9W107bGV0IHUsbTtpZigwPT09Zil7dC5za2lwKDQpO2Zvcih1PTA7dTwyNTY7dSsrKXtjb25zdCBlPXQuZ2V0Qnl0ZSgpO2UmJmgucHVzaCh7Y2hhckNvZGU6dSxnbHlwaElkOmV9KX1jPSEwfWVsc2UgaWYoMj09PWYpe3Quc2tpcCg0KTtjb25zdCBlPVtdO2xldCBuPTA7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKXtjb25zdCBhPXQuZ2V0VWludDE2KCk+PjM7ZS5wdXNoKGEpO249TWF0aC5tYXgoYSxuKX1jb25zdCBhPVtdO2ZvcihsZXQgZT0wO2U8PW47ZSsrKWEucHVzaCh7Zmlyc3RDb2RlOnQuZ2V0VWludDE2KCksZW50cnlDb3VudDp0LmdldFVpbnQxNigpLGlkRGVsdGE6c2lnbmVkSW50MTYodC5nZXRCeXRlKCksdC5nZXRCeXRlKCkpLGlkUmFuZ2VQb3M6dC5wb3MrdC5nZXRVaW50MTYoKX0pO2ZvcihsZXQgbj0wO248MjU2O24rKylpZigwPT09ZVtuXSl7dC5wb3M9YVswXS5pZFJhbmdlUG9zKzIqbjttPXQuZ2V0VWludDE2KCk7aC5wdXNoKHtjaGFyQ29kZTpuLGdseXBoSWQ6bX0pfWVsc2V7Y29uc3Qgcj1hW2Vbbl1dO2Zvcih1PTA7dTxyLmVudHJ5Q291bnQ7dSsrKXtjb25zdCBlPShuPDw4KSt1K3IuZmlyc3RDb2RlO3QucG9zPXIuaWRSYW5nZVBvcysyKnU7bT10LmdldFVpbnQxNigpOzAhPT1tJiYobT0obStyLmlkRGVsdGEpJTY1NTM2KTtoLnB1c2goe2NoYXJDb2RlOmUsZ2x5cGhJZDptfSl9fX1lbHNlIGlmKDQ9PT1mKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpPj4xO3Quc2tpcCg2KTtjb25zdCBuPVtdO2xldCBhO2ZvcihhPTA7YTxlO2ErKyluLnB1c2goe2VuZDp0LmdldFVpbnQxNigpfSk7dC5za2lwKDIpO2ZvcihhPTA7YTxlO2ErKyluW2FdLnN0YXJ0PXQuZ2V0VWludDE2KCk7Zm9yKGE9MDthPGU7YSsrKW5bYV0uZGVsdGE9dC5nZXRVaW50MTYoKTtsZXQgaSxvPTA7Zm9yKGE9MDthPGU7YSsrKXtyPW5bYV07Y29uc3Qgcz10LmdldFVpbnQxNigpO2lmKHMpe2k9KHM+PjEpLShlLWEpO3Iub2Zmc2V0SW5kZXg9aTtvPU1hdGgubWF4KG8saStyLmVuZC1yLnN0YXJ0KzEpfWVsc2Ugci5vZmZzZXRJbmRleD0tMX1jb25zdCBsPVtdO2Zvcih1PTA7dTxvO3UrKylsLnB1c2godC5nZXRVaW50MTYoKSk7Zm9yKGE9MDthPGU7YSsrKXtyPW5bYV07cz1yLnN0YXJ0O2NvbnN0IGU9ci5lbmQsdD1yLmRlbHRhO2k9ci5vZmZzZXRJbmRleDtmb3IodT1zO3U8PWU7dSsrKWlmKDY1NTM1IT09dSl7bT1pPDA/dTpsW2krdS1zXTttPW0rdCY2NTUzNTtoLnB1c2goe2NoYXJDb2RlOnUsZ2x5cGhJZDptfSl9fX1lbHNlIGlmKDY9PT1mKXt0LnNraXAoNCk7Y29uc3QgZT10LmdldFVpbnQxNigpLG49dC5nZXRVaW50MTYoKTtmb3IodT0wO3U8bjt1Kyspe209dC5nZXRVaW50MTYoKTtjb25zdCBuPWUrdTtoLnB1c2goe2NoYXJDb2RlOm4sZ2x5cGhJZDptfSl9fWVsc2V7aWYoMTIhPT1mKXt3YXJuKCJjbWFwIHRhYmxlIGhhcyB1bnN1cHBvcnRlZCBmb3JtYXQ6ICIrZik7cmV0dXJue3BsYXRmb3JtSWQ6LTEsZW5jb2RpbmdJZDotMSxtYXBwaW5nczpbXSxoYXNTaG9ydENtYXA6ITF9fXt0LnNraXAoMTApO2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MDtmb3IodT0wO3U8ZTt1Kyspe2NvbnN0IGU9dC5nZXRJbnQzMigpPj4+MCxuPXQuZ2V0SW50MzIoKT4+PjA7bGV0IGE9dC5nZXRJbnQzMigpPj4+MDtmb3IobGV0IHQ9ZTt0PD1uO3QrKyloLnB1c2goe2NoYXJDb2RlOnQsZ2x5cGhJZDphKyt9KX19fWNvbnN0IHA9W10sZD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIGgpe2NvbnN0e2NoYXJDb2RlOnR9PWU7aWYoIWQuaGFzKHQpKXtkLmFkZCh0KTtwLnB1c2goZSl9fXJldHVybntwbGF0Zm9ybUlkOm8ucGxhdGZvcm1JZCxlbmNvZGluZ0lkOm8uZW5jb2RpbmdJZCxtYXBwaW5nczpwLnNvcnQoKGUsdCk9PmUuY2hhckNvZGUtdC5jaGFyQ29kZSksaGFzU2hvcnRDbWFwOmN9fShpLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LG4uaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHI9ZS5lbmNvZGluZ0lkLHM9ZS5tYXBwaW5ncztsZXQgbz1bXSxsPSExOyFuLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1uLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09bi5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhuLmJhc2VFbmNvZGluZ05hbWUpKTtpZihuLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09cnx8MT09PWEmJjA9PT1yKSl7Y29uc3QgZT15YSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IGk7aT12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOmJhW3RdO2lmKCFpKWNvbnRpbnVlO2NvbnN0IGw9cmVjb3ZlckdseXBoTmFtZShpLGUpO2xldCBmOzM9PT1hJiYxPT09cj9mPWVbbF06MT09PWEmJjA9PT1yJiYoZj1nYS5pbmRleE9mKGwpKTtpZih2b2lkIDA9PT1mKXtpZighbi5nbHlwaE5hbWVzJiZuLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoZj1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1mKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHMpaWYoZS5jaGFyQ29kZT09PWYpe2tbdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcylrW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtsPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1yKWZvcihjb25zdCBlIG9mIHMpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTtrW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHMpa1tlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYobi5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFsJiZ2b2lkIDAhPT1rW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPW4uZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihrW2VdPWEpfSFuLmlzSW50ZXJuYWxGb250JiZ2b2lkIDA9PT1rWzBdJiZoYXNHbHlwaCgwKSYmKGtbMF09MCl9MD09PWsubGVuZ3RoJiYoa1swXT0wKTtjb25zdCB5PXA/bS0xOjA7aWYoIW4uY3NzRm9udEluZm8pe2NvbnN0IGU9YWRqdXN0TWFwcGluZyhrLGhhc0dseXBoLHksdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1lLnRvRm9udENoYXI7aS5jbWFwPXt0YWc6ImNtYXAiLGRhdGE6Y3JlYXRlQ21hcFRhYmxlKGUuY2hhckNvZGVUb0dseXBoSWQsZS50b1VuaWNvZGVFeHRyYU1hcCxtKX07aVsiT1MvMiJdJiZmdW5jdGlvbiB2YWxpZGF0ZU9TMlRhYmxlKGUsdCl7dC5wb3M9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O2NvbnN0IG49dC5nZXRVaW50MTYoKSxhPVs3OCw4Niw5Niw5Niw5NiwxMDBdW25dO2lmKHZvaWQgMD09PWF8fGUubGVuZ3RoPGEpcmV0dXJuITE7dC5za2lwKDYwKTtjb25zdCByPXQuZ2V0VWludDE2KCk7aWYobjw0JiY3NjgmcilyZXR1cm4hMTtpZih0LmdldFVpbnQxNigpPnQuZ2V0VWludDE2KCkpcmV0dXJuITE7dC5za2lwKDYpO2lmKDA9PT10LmdldFVpbnQxNigpKXJldHVybiExO2UuZGF0YVs4XT1lLmRhdGFbOV09MDtyZXR1cm4hMH0oaVsiT1MvMiJdLHQpfHwoaVsiT1MvMiJdPXt0YWc6Ik9TLzIiLGRhdGE6Y3JlYXRlT1MyVGFibGUobixlLmNoYXJDb2RlVG9HbHlwaElkLGopfSl9aWYoaS5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUoaS5uYW1lKTtpLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO24uY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsbil7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1uLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT13YSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgbilpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPXdhLHI9W10scz15YSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3Qgbj1zW3RdO3ZvaWQgMCE9PW4mJihyW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUobikpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfShuLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBpLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3QgcT1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihzLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIGkpcS5hZGRUYWJsZShlLGlbZV0uZGF0YSk7cmV0dXJuIHEudG9BcnJheSgpfWNvbnZlcnQoZSx0LG4pe24uZml4ZWRQaXRjaD0hMTtuLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IG49W10sYT15YSgpO2Zvcihjb25zdCByIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbcl0pKWNvbnRpbnVlO2NvbnN0IHM9Z2V0VW5pY29kZUZvckdseXBoKHRbcl0sYSk7LTEhPT1zJiYobltyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1uLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChuKX0obixuLmJ1aWx0SW5FbmNvZGluZyk7Y29uc3QgYT10IGluc3RhbmNlb2YgQ0ZGRm9udD90Lm51bUdseXBocy0xOjEscj10LmdldEdseXBoTWFwcGluZyhuKTtsZXQgaT1udWxsLG89cixsPW51bGw7aWYoIW4uY3NzRm9udEluZm8pe2k9YWRqdXN0TWFwcGluZyhyLHQuaGFzR2x5cGhJZC5iaW5kKHQpLGEsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1pLnRvRm9udENoYXI7bz1pLmNoYXJDb2RlVG9HbHlwaElkO2w9aS50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBmPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBuPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKG58fD1bXSkucHVzaCgwfGEpO3JldHVybiBufWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IG4gaW4gZSlpZih0PT09ZVtuXSlyZXR1cm4gMHxuO2kuY2hhckNvZGVUb0dseXBoSWRbaS5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBpLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBjPXQuc2VhY3M7aWYoaSYmYz8ubGVuZ3RoKXtjb25zdCBlPW4uZm9udE1hdHJpeHx8cyxhPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gYyl7dHw9MDtjb25zdCBuPWNbdF0scz1iYVtuWzJdXSxsPWJhW25bM11dLGY9YS5pbmRleE9mKHMpLGg9YS5pbmRleE9mKGwpO2lmKGY8MHx8aDwwKWNvbnRpbnVlO2NvbnN0IHU9e3g6blswXSplWzBdK25bMV0qZVsyXStlWzRdLHk6blswXSplWzFdK25bMV0qZVszXStlWzVdfSxtPWdldENoYXJDb2RlcyhyLHQpO2lmKG0pZm9yKGNvbnN0IGUgb2YgbSl7Y29uc3QgdD1pLmNoYXJDb2RlVG9HbHlwaElkLG49Y3JlYXRlQ2hhckNvZGUodCxmKSxhPWNyZWF0ZUNoYXJDb2RlKHQsaCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTpuLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDp1fX19bi5zZWFjTWFwPW99Y29uc3QgaD1uLmZvbnRNYXRyaXg/MS9NYXRoLm1heCguLi5uLmZvbnRNYXRyaXguc2xpY2UoMCw0KS5tYXAoTWF0aC5hYnMpKToxZTMsdT1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcigiT1RUTyIpO3UuYWRkVGFibGUoIkNGRiAiLHQuZGF0YSk7dS5hZGRUYWJsZSgiT1MvMiIsY3JlYXRlT1MyVGFibGUobixvKSk7dS5hZGRUYWJsZSgiY21hcCIsY3JlYXRlQ21hcFRhYmxlKG8sbCxmKSk7dS5hZGRUYWJsZSgiaGVhZCIsZnVuY3Rpb24gZm9udFRhYmxlSGVhZCgpe2NvbnN0IGU9WzAsMCwwLDAsMTU4LDExLDEyNiwzOV0sdD1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjU0fSk7dC5zZXRBcnJheShbMCwxLDAsMF0pO3Quc2V0QXJyYXkoWzAsMCwxNiwwXSk7dC5za2lwKDQpO3Quc2V0QXJyYXkoWzk1LDE1LDYwLDI0NV0pO3Quc2tpcCgyKTt0LnNldFNhZmVJbnQxNihoKTt0LnNldEFycmF5KGUpO3Quc2V0QXJyYXkoZSk7dC5za2lwKDIpO3Quc2V0U2FmZUludDE2KG4uZGVzY2VudCk7dC5zZXRBcnJheShbMTUsMjU1XSk7dC5zZXRTYWZlSW50MTYobi5hc2NlbnQpO3Quc2V0SW50MTYobi5pdGFsaWNBbmdsZT8yOjApO3Quc2V0QXJyYXkoWzAsMTddKTt0LnNraXAoNik7cmV0dXJuIHQuZGF0YX0oKSk7dS5hZGRUYWJsZSgiaGhlYSIsZnVuY3Rpb24gZm9udFRhYmxlSGhlYSgpe2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDozNn0pO2Uuc2V0QXJyYXkoWzAsMSwwLDBdKTtlLnNldFNhZmVJbnQxNihuLmFzY2VudCk7ZS5zZXRTYWZlSW50MTYobi5kZXNjZW50KTtlLnNraXAoMik7ZS5zZXRBcnJheShbMjU1LDI1NV0pO2Uuc2tpcCg2KTtlLnNldFNhZmVJbnQxNihuLmNhcEhlaWdodCk7ZS5zZXRTYWZlSW50MTYoTWF0aC50YW4obi5pdGFsaWNBbmdsZSkqbi54SGVpZ2h0KTtlLnNraXAoMTIpO2Uuc2V0SW50MTYoZik7cmV0dXJuIGUuZGF0YX0oKSk7dS5hZGRUYWJsZSgiaG10eCIsZnVuY3Rpb24gZm9udFRhYmxlSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxuPXQuY2ZmPy53aWR0aHM/P251bGwsYT1uZXcgRGF0YUJ1aWxkZXIoe2V4YWN0TGVuZ3RoOjQqZn0pO2Euc2tpcCg0KTtmb3IobGV0IHQ9MSxyPWY7dDxyO3QrKyl7bGV0IHI9MDtlP3I9ZVt0LTFdLndpZHRofHwwOm4mJihyPU1hdGguY2VpbChuW3RdfHwwKSk7YS5zZXRJbnQxNihyKTthLnNraXAoMil9cmV0dXJuIGEuZGF0YX0oKSk7dS5hZGRUYWJsZSgibWF4cCIsZnVuY3Rpb24gZm9udFRhYmxlTWF4cCgpe2NvbnN0IGU9bmV3IERhdGFCdWlsZGVyKHtleGFjdExlbmd0aDo2fSk7ZS5zZXRBcnJheShbMCwwLDgwLDBdKTtlLnNldEludDE2KGYpO3JldHVybiBlLmRhdGF9KCkpO3UuYWRkVGFibGUoIm5hbWUiLGNyZWF0ZU5hbWVUYWJsZShlKSk7dS5hZGRUYWJsZSgicG9zdCIsY3JlYXRlUG9zdFRhYmxlKG4pKTtyZXR1cm4gdS50b0FycmF5KCl9Z2V0IF9zcGFjZVdpZHRoKCl7Y29uc3QgZT1bInNwYWNlIiwibWludXMiLCJvbmUiLCJpIiwiSSJdO2xldCB0O2Zvcihjb25zdCBuIG9mIGUpe2lmKG4gaW4gdGhpcy53aWR0aHMpe3Q9dGhpcy53aWR0aHNbbl07YnJlYWt9Y29uc3QgZT15YSgpW25dO2xldCBhPTA7aWYodGhpcy5jb21wb3NpdGUmJnRoaXMuY01hcC5jb250YWlucyhlKSl7YT10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgYSYmKGE9Y29udmVydENpZFN0cmluZyhlLGEpKX0hYSYmdGhpcy50b1VuaWNvZGUmJihhPXRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSkpO2E8PTAmJihhPWUpO3Q9dGhpcy53aWR0aHNbYV07aWYodClicmVha31yZXR1cm4gc2hhZG93KHRoaXMsIl9zcGFjZVdpZHRoIix0fHx0aGlzLmRlZmF1bHRXaWR0aCl9X2NoYXJUb0dseXBoKGUsdD0hMSl7bGV0IG4sYSxyLHM9dGhpcy4jZGUuZ2V0KGUpO2lmKHM/LmlzU3BhY2U9PT10KXJldHVybiBzO2xldCBpPWU7aWYodGhpcy5jTWFwPy5jb250YWlucyhlKSl7aT10aGlzLmNNYXAubG9va3VwKGUpOyJzdHJpbmciPT10eXBlb2YgaSYmKGk9Y29udmVydENpZFN0cmluZyhlLGkpKX1hPXRoaXMud2lkdGhzW2ldOyJudW1iZXIiIT10eXBlb2YgYSYmKGE9dGhpcy5kZWZhdWx0V2lkdGgpO2NvbnN0IG89dGhpcy52bWV0cmljcz8uW2ldfHx0aGlzLmRlZmF1bHRWTWV0cmljcztsZXQgbD10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBsJiYobD1TdHJpbmcuZnJvbUNoYXJDb2RlKGwpKTtsZXQgZj12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07bj10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTtpZigoIi5ub3RkZWYiPT09dHx8IiI9PT10KSYmIlR5cGUxIj09PXRoaXMudHlwZSl7bj0zMjtpZigiIj09PXQpe2F8fD10aGlzLl9zcGFjZVdpZHRoO2w9U3RyaW5nLmZyb21DaGFyQ29kZShuKX19bj1mdW5jdGlvbiBtYXBTcGVjaWFsVW5pY29kZVZhbHVlcyhlKXtyZXR1cm4gZT49NjU1MjAmJmU8PTY1NTM1PzA6ZT49NjI5NzYmJmU8PTYzNzQzP3ZhKClbZV18fGU6MTczPT09ZT80NTplfShuKX10aGlzLmlzVHlwZTNGb250JiYocj1uKTtsZXQgYz1udWxsO2lmKHRoaXMuc2VhY01hcD8uW2VdKXtmPSEwO2NvbnN0IHQ9dGhpcy5zZWFjTWFwW2VdO249dC5iYXNlRm9udENoYXJDb2RlO2M9e2ZvbnRDaGFyOlN0cmluZy5mcm9tQ29kZVBvaW50KHQuYWNjZW50Rm9udENoYXJDb2RlKSxvZmZzZXQ6dC5hY2NlbnRPZmZzZXR9fWxldCBoPSIiOyJudW1iZXIiPT10eXBlb2YgbiYmKG48PTExMTQxMTE/aD1TdHJpbmcuZnJvbUNvZGVQb2ludChuKTp3YXJuKGBjaGFyVG9HbHlwaCAtIGludmFsaWQgZm9udENoYXJDb2RlOiAke259YCkpO2lmKHRoaXMubWlzc2luZ0ZpbGUmJnRoaXMudmVydGljYWwmJjE9PT1oLmxlbmd0aCl7Y29uc3QgZT1SYSgpW2guY2hhckNvZGVBdCgwKV07ZSYmKGg9bD1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpKX1zPW5ldyBmb250c19HbHlwaChlLGgsbCxjLGEsbyxyLHQsZik7dGhpcy4jZGUuc2V0KGUscyk7cmV0dXJuIHN9Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLiNwZS5nZXQoZSk7aWYodClyZXR1cm4gdDt0PVtdO2lmKHRoaXMuY01hcCl7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpLGE9ZS5sZW5ndGg7bGV0IHI9MDtmb3IoO3I8YTspe3RoaXMuY01hcC5yZWFkQ2hhckNvZGUoZSxyLG4pO2NvbnN0e2NoYXJjb2RlOmEsbGVuZ3RoOnN9PW47cis9cztjb25zdCBpPXRoaXMuX2NoYXJUb0dseXBoKGEsMT09PXMmJjMyPT09ZS5jaGFyQ29kZUF0KHItMSkpO3QucHVzaChpKX19ZWxzZSBmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTsrK24pe2NvbnN0IGE9ZS5jaGFyQ29kZUF0KG4pLHI9dGhpcy5fY2hhclRvR2x5cGgoYSwzMj09PWEpO3QucHVzaChyKX10aGlzLiNwZS5zZXQoZSx0KTtyZXR1cm4gdH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGE9MDtmb3IoO2E8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsYSxuKTtjb25zdCByPW4ubGVuZ3RoO3QucHVzaChbYSxhK3JdKTthKz1yfX1lbHNlIGZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhOysrbil0LnB1c2goW24sbisxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gdGhpcy4jZGUudmFsdWVzKCl9ZW5jb2RlU3RyaW5nKGUpe2NvbnN0IHQ9W10sbj1bXSxoYXNDdXJyZW50QnVmRXJyb3JzPSgpPT50Lmxlbmd0aCUyPT0xLGE9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcD9lPT50aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpOmU9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoU3RyaW5nLmZyb21Db2RlUG9pbnQoZSkpO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1lLmNvZGVQb2ludEF0KHIpO3M+NjU1MzUmJnIrKztpZih0aGlzLnRvVW5pY29kZSl7Y29uc3QgZT1hKHMpO2lmKC0xIT09ZSl7aWYoaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2gobi5qb2luKCIiKSk7bi5sZW5ndGg9MH1mb3IobGV0IHQ9KHRoaXMuY01hcD90aGlzLmNNYXAuZ2V0Q2hhckNvZGVMZW5ndGgoZSk6MSktMTt0Pj0wO3QtLSluLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlPj44KnQmMjU1KSk7Y29udGludWV9fWlmKCFoYXNDdXJyZW50QnVmRXJyb3JzKCkpe3QucHVzaChuLmpvaW4oIiIpKTtuLmxlbmd0aD0wfW4ucHVzaChTdHJpbmcuZnJvbUNvZGVQb2ludChzKSl9dC5wdXNoKG4uam9pbigiIikpO3JldHVybiB0fX1jbGFzcyBFcnJvckZvbnR7Y29uc3RydWN0b3IoZSl7dGhpcy5lcnJvcj1lO3RoaXMubG9hZGVkTmFtZT0iZ19mb250X2Vycm9yIjt0aGlzLm1pc3NpbmdGaWxlPSEwfWNoYXJzVG9HbHlwaHMoKXtyZXR1cm5bXX1lbmNvZGVTdHJpbmcoZSl7cmV0dXJuW2VdfWV4cG9ydERhdGEoKXtyZXR1cm57ZXJyb3I6dGhpcy5lcnJvcn19fWNvbnN0IGJyPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NDY1NywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzMyOTMsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MTIxLC44Njk0MywuNzk3OTUsLjg4MTk4LC43Nzk1OCwuNzA4NjQsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDE3LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjU0NjU3LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuODg3NjIsLjg3ODUsLjc1MjQxLC44Nzg1LC45MDUxOCwuOTUwMTUsLjc3NjE4LC44Nzg1LC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTE0ODgsLjg3ODUsLjg4MDEsLjg3ODUsLjg3ODUsLjkxMzQzLC43MTczLDEuMDQxMDYsLjg3ODUsLjg1MDc1LC45NTc5NCwuODI2MTYsLjg1MTYyLC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xMjQwMSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MzI5MywuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTEyMSwuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44NTI4NCwuODc1MDgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44NzE1LC43NTI0MSwuOTA1MTgsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44Nzg1LC44ODAxLC44ODAxLC44ODAxLC44ODAxLC44ODAxLC45MDc0NywuODkwNDksLjg3ODUsLjg3ODUsLjg3ODUsLjg3ODUsLjg1MTYyLC44Nzg1LC44NTE2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC44NzI4OSwuODMwMTYsLjg4NTA2LC45MzEyNSwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsMSwxLC44NzM1NiwuODc4NSwuOTEwNzUsLjg5NjA4LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzYyMjksLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc5NDY4LC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTEyMSwuODc4NSwxLDEsLjkxMjEsLjg3ODUsLjg3ODAyLC44ODY1NiwuODc4NSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODc0MDIsLjg5MjkxLC43Nzk1OCwuOTEzNDMsMSwxLC43Nzk1OCwuOTEzNDMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuODg3NjIsLjc3NTM5LC44NzE1LC44NzUwOCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwNjc0LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjA2MzAzLC44MzkwOCwuODAzNTIsLjU3MTg0LC42OTY1LC41NjI4OSwuODIwMDEsLjU2MDI5LC44MTIzNSwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjgxNTYsLjgwMzY3LC43MzEzMywuNzgyNTcsLjg3MzU2LC44Njk0MywuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MTIxLC43NjQ4LC44Njk0MywuODczNTYsLjc5Nzk1LC43ODI3NSwuODEwNTUsLjc3ODkyLC45NzYyLC44MjU3NywuOTk4MTksLjg0ODk2LC45NTk1OCwuNzc4OTIsLjk2MTA4LDEuMDE0MDcsLjg5MDQ5LDEuMDI5ODgsLjk0MjExLC45NjEwOCwuODkzNiwuODQwMjEsLjg3ODQyLC45NjM5OSwuNzkxMDksLjg5MDQ5LDEuMDA4MTMsMS4wMjk4OCwuODYwNzcsLjg3NDQ1LC45MjA5OSwuODQ3MjMsLjg2NTEzLC44ODAxLC43NTYzOCwuODU3MTQsLjc4MjE2LC43OTU4NiwuODc5NjUsLjk0MjExLC45Nzc0NywuNzgyODcsLjk3OTI2LC44NDk3MSwxLjAyOTg4LC45NDIxMSwuODgwMSwuOTQyMTEsLjg0OTcxLC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTAyNjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTE4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDU0OCwxLDEsMSwxLDEsMSwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMTQzLDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTM4MzUsLjgzNDA2LC45MTEzMywuODQxMDcsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwMDYsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHdyPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxqcj1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTYyMzksLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjcxODA1LC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTA4NzIsLjg1OTM4LC43OTc5NSwuODcwNjgsLjc3OTU4LC42OTc2NiwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwNjgsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTI5LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuOTQ5MDgsLjg2NDExLC43NDAxMiwuODY0MTEsLjg4MzIzLC45NTAxNSwuODY0MTEsLjg2MzMxLC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTAzOSwuODYzMzEsLjg2MzMxLC44NjQxMSwuODY0MTEsLjkwNDY0LC43MDg1MiwxLjA0MTA2LC44NjMzMSwuODQzNzIsLjk1Nzk0LC44MjYxNiwuODQ1NDgsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjE5MTI5LC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjcxODA1LC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MDg3MiwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTI4NCwuODcwNjgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC44NTg4NywuNzQwMTIsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuOTA3NDcsLjg5MDQ5LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODQ1NDgsLjg2NDExLC44NDU0OCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC44NzI4OSwuNzk1MzgsLjg4NTA2LC45MjcyNiwuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsMSwxLC44NzM1NiwuODYzMzEsLjkxMDc1LC44Nzc3LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzY0NjcsLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc3MzEyLC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTA4NzIsLjg2MzMxLDEsMSwuOTA4NzIsLjg2MzMxLC44NjkwNiwuODgxMTYsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NzQwMiwuODY1NDksLjc3OTU4LC45MDQ2NCwxLDEsLjc3OTU4LC45MDQ2NCwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuOTQ5MDgsLjc3NTM5LC44NTg4NywuODcwNjgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDA4OCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS40ODM4NywuODM5MDgsLjgwMzUyLC41NzExOCwuNjk2NSwuNTYzNDcsLjc5MTc5LC41NTg1MywuODAzNDYsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY3MTc0LC44NjAzNiwuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY0NDEsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTA4NzIsLjc0ODg5LC44NTkzOCwuODc4OTEsLjc5Nzk1LC43OTU3LC44MTA1NSwuNzc4OTIsLjk3NDQ3LC44MjU3NywuOTc0NjYsLjg3MTc5LC45NTk1OCwuNzc4OTIsLjk0MjUyLC45NTYxMiwuODc1MywxLjAyOTg4LC45MjczMywuOTQyNTIsLjg3NDExLC44NDAyMSwuODcyOCwuOTU2MTIsLjc0MDgxLC44NzUzLDEuMDIxODksMS4wMjk4OCwuODQ4MTQsLjg3NDQ1LC45MTgyMiwuODQ3MjMsLjg1NjY4LC44NjMzMSwuODEzNDQsLjg3NTgxLC43NjQyMiwuODIwNDYsLjk2MDU3LC45MjczMywuOTkzNzUsLjc4MDIyLC45NTQ1MiwuODYwMTUsMS4wMjk4OCwuOTI3MzMsLjg2MzMxLC45MjczMywuODYwMTUsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDYzMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODgzMjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1MTc0LDEsMSwxLDEsMSwxLC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg5ODA3LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzEwOTQsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45Mjk3MiwuODM0MDYsLjkxMTMzLC44MzMyNiwuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNjE2LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTA3LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxrcj17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30seXI9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHFyPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSx2cj1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sU3I9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LEFyPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0seHI9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LENyPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjAwMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMDQ0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTcxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMTAxMSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzcsMSwxLDEuMDAwMjYsLjk5OTY5LC45OTk3MiwuOTk5ODEsLjk5OTgsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwuOTExNTUsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTk2NiwxLjAwMDIyLDEuMDAwMzIsMS4wMDAwMSwuOTk5NDQsMS4wMDAyNiwxLjAwMDAxLC45OTk2OCwxLjAwMDAxLDEuMDAwNDcsMSwxLjAwMDYsMS4wMDAwMSwuOTk5ODEsMS4wMDEwMSwxLjAwMDI2LDEuMDAwNiwuOTk5NDgsLjk5OTgxLDEuMDAwNjQsLjk5OTczLC45OTk0MiwxLjAwMTAxLDEuMDAwNjEsMS4wMDAyNiwxLjAwMDY5LDEuMDAwNiwxLjAwMDE0LC45OTk3MywxLjAxMzIyLC45OTk3MywxLjAwMDY1LDEuMDAwMjYsMS4wMDAxMiwuOTk5MjMsMSwxLjAwMDY0LDEuMDAwNzYsLjk5OTQ4LDEuMDAwNTUsMS4wMDA2MywxLjAwMDA3LC45OTk0MywxLjAwMDYsLjk5OTQ4LDEuMDAwMjYsLjk5OTQ4LC45OTk0MywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyOSwxLjAwMDM4LDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzgsMS4wMDAwMSwxLjAwMDU3LC45OTk4OSwuOTk5NjcsLjk5OTY0LC45OTk2NywuOTk5NzcsLjk5OTk5LC45OTk3NywxLjAwMDM4LC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDY2LC45OTk2NywuOTk5NjcsMS4wMDA0MSwuOTk5OTgsLjk5OTk5LC45OTk3NywxLjAwMDIyLC45OTk2NywxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2NCwxLjAwMDMxLDEuMDAwMDEsLjk5OTk5LC45OTk5OSwxLDEuMDAwMjMsMSwxLC45OTk5OSwxLjAwMDM1LDEuMDAwMDEsLjk5OTk5LC45OTk3MywuOTk5NzcsLjk5OTk5LDEuMDAwNTgsLjk5OTczLC45OTk3MywuOTk5NTUsLjk5OTUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk5OTg5LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywuNDU5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMDEsLjk5OTk5LC45OTk4MiwuOTk5OTQsLjk5OTk2LDEsMS4wMDA0MiwxLjAwMDQ0LDEuMDAwMjksMS4wMDAyMywuOTk5NzMsLjk5OTczLDEuMDAwMjYsLjk5OTQ5LDEuMDAwMDIsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTg2ODUsLjk5OTczLDEuMDAwMjYsMSwxLC45OTk2NiwxLjAwMDQ0LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzEsLjk5OTc4LDEsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA5OCwxLDEsMSwxLjAwMDQ5LDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sSXI9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxGcj1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDI4OCwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsLjk5OTQ2LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjA2MzExLC45OTk3MywxLjAwMDI0LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA0MSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44OTU0NywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDAxLDEsMS4wMDA1NCwuOTk5NzcsMS4wMDA4NCwxLjAwMDA3LC45OTk3MywxLjAwMDEzLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsLjk5OTQ1LC45MTIyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTkzMywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwxLjAwMDY1LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDEsMS4wMDAwMSwxLjAwMDUyLDEsMS4wMDA2LDEuMDAwMDEsLjk5OTQ1LC45OTg5NywuOTk5NjgsLjk5OTI0LDEuMDAwMzYsLjk5OTQ1LC45OTk0OSwxLDEuMDAwNiwuOTk4OTcsLjk5OTE4LC45OTk2OCwuOTk5MTEsLjk5OTI0LDEsLjk5OTYyLDEuMDE0ODcsMSwxLjAwMDUsLjk5OTczLDEuMDAwMTIsMS4wMDA0MywxLC45OTk5NSwuOTk5OTQsMS4wMDAzNiwuOTk5NDcsMS4wMDAxOSwxLjAwMDYzLDEuMDAwMjUsLjk5OTI0LDEuMDAwMzYsLjk5OTczLDEuMDAwMzYsMS4wMDAyNSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNywxLjAwMDEsMS4wMDA2OCwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwxLjAwMDA4LC45OTk1NywuOTk5NzIsLjk5OTQsLjk5OTU0LC45OTk3NSwxLjAwMDUxLDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLDEuMDAwMSwuOTk5ODYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMzgsLjk5OTU0LC45OTk1NCwuOTk5NCwxLjAwMDY2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTc1LDEuMDAwMSwxLjAwMDAxLC45OTk5MywuOTk5NSwuOTk5NTUsMS4wMDAxNiwuOTk5NzgsLjk5OTc0LDEuMDAwMTksMS4wMDAyMiwuOTk5NTUsMS4wMDA1MywuOTk5NzMsMS4wMDA4OSwxLjAwMDA1LC45OTk2NywxLjAwMDQ4LC45OTk3MywxLjAwMDAyLDEuMDAwMzQsLjk5OTczLC45OTk3MywuOTk5NjQsMS4wMDAwNiwxLjAwMDY2LC45OTk0NywuOTk5NzMsLjk4ODk0LC45OTk3MywxLC40NDg5OCwxLC45OTk0NiwxLDEuMDAwMzksMS4wMDA4MiwuOTk5OTEsLjk5OTkxLC45OTk4NSwxLjAwMDIyLDEuMDAwMjMsMS4wMDA2MSwxLjAwMDA2LC45OTk2NiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDE5LDEuMDAwOCwxLC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk4MywxLjAwMDQ0LC45OTk3MywuOTk5NjQsLjk4MzMyLDEsLjk5OTczLDEsMSwuOTk5NjIsLjk5ODk1LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLDEuMDA0MjMsLjk5OTI1LC45OTk5OSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDQ5LDEsMS4wMDI0NSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxUcj17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LE9yPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wNDU5NiwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsMS4wMDAxOSwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wMjU3MiwuOTk5NzMsMS4wMDAwNSwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk5OSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44NDUzMywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5MjgsMSwuOTk5NzcsMS4wMDAxMywxLjAwMDU1LC45OTk0NywuOTk5NDUsLjk5OTQxLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsMS4wMDA0LC45MTYyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwNSwuOTk5OTksLjk5OTc3LDEuMDAwMTUsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwuOTk5NDYsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NzgsMS4wMDA0NSwuOTk5NzMsLjk5OTI0LDEuMDAwMjMsLjk5OTc4LC45OTk2NiwxLDEuMDAwNjUsMS4wMDA0NSwxLjAwMDE5LC45OTk3MywuOTk5NzMsLjk5OTI0LDEsMSwuOTY0OTksMSwxLjAwMDU1LC45OTk3MywxLjAwMDA4LDEuMDAwMjcsMSwuOTk5NywuOTk5OTUsMS4wMDAyMywuOTk5MzMsMS4wMDAxOSwxLjAwMDE1LDEuMDAwMzEsLjk5OTI0LDEuMDAwMjMsLjk5OTczLDEuMDAwMjMsMS4wMDAzMSwxLjAwMDAxLC45OTkyOCwxLjAwMDI5LDEuMDAwOTIsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwuOTk5ODgsLjk5OTc1LDEsMS4wMDA4MiwuOTk1NjEsLjk5OTYsMS4wMDAzNSwxLjAwMDAxLC45OTk2MiwxLjAwMDAxLDEuMDAwOTIsLjk5OTY0LDEuMDAwMDEsLjk5OTYzLC45OTk5OSwxLjAwMDM1LDEuMDAwMzUsMS4wMDA4MiwuOTk5NjIsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NiwuOTk5NjcsMS4wMDAwMSwxLjAwMDM0LDEuMDAwNzQsMS4wMDA1NCwxLjAwMDUzLDEuMDAwNjMsLjk5OTcxLC45OTk2MiwxLjAwMDM1LC45OTk3NSwuOTk5NzcsLjk5OTczLDEuMDAwNDMsLjk5OTUzLDEuMDAwNywuOTk5MTUsLjk5OTczLDEuMDAwMDgsLjk5ODkyLDEuMDAwNzMsMS4wMDA3MywxLjAwMTE0LC45OTkxNSwxLjAwMDczLC45OTk1NSwuOTk5NzMsMS4wMDA5MiwuOTk5NzMsMSwuOTk5OTgsMSwxLjAwMDMsMSwxLjAwMDQzLDEuMDAwMDEsLjk5OTY5LDEuMDAwMywxLDEuMDAwMzUsMS4wMDAwMSwuOTk5NSwxLDEuMDAwOTIsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3LC45OTk1LDEsLjk5OTI0LDEuMDAwNiwuOTk5MjQsLjk5OTcyLDEuMDAwNjIsLjk5OTczLDEuMDAxMTQsMS4wMDA3MywxLC45OTk1NSwxLDEsMS4wMDA0NywuOTk5NjgsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLC45OTkyNSwxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFJyPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxEcj1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDcxOSw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzg1LDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzg1LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNDY1LDcyMiwzMzMsODUzLDkwNiw0NzQsODI1LDkyNyw4MzgsMjc4LDcyMiw3MjIsNjAxLDcxOSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NDQsNzc4LDcyMiw2NjcsNjAwLDYxMSw2NjcsODIxLDY2Nyw4MDksODAyLDI3OCw2NjcsNjE1LDQ1MSw2MTEsMjc4LDU4Miw2MTUsNjEwLDU1Niw2MDYsNDc1LDQ2MCw2MTEsNTQxLDI3OCw1NTgsNTU2LDYxMiw1NTYsNDQ1LDYxMSw3NjYsNjE5LDUyMCw2ODQsNDQ2LDU4Miw3MTUsNTc2LDc1Myw4NDUsMjc4LDU4Miw2MTEsNTgyLDg0NSw2NjcsNjY5LDg4NSw1NjcsNzExLDY2NywyNzgsMjc2LDU1NiwxMDk0LDEwNjIsODc1LDYxMCw3MjIsNjIyLDcxOSw3MjIsNzE5LDcyMiw1NjcsNzEyLDY2Nyw5MDQsNjI2LDcxOSw3MTksNjEwLDcwMiw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjIyLDg1NCw2NjcsNzMwLDcwMywxMDA1LDEwMTksODcwLDk3OSw3MTksNzExLDEwMzEsNzE5LDU1Niw2MTgsNjE1LDQxNyw2MzUsNTU2LDcwOSw0OTcsNjE1LDYxNSw1MDAsNjM1LDc0MCw2MDQsNjExLDYwNCw2MTEsNTU2LDQ5MCw1NTYsODc1LDU1Niw2MTUsNTgxLDgzMyw4NDQsNzI5LDg1NCw2MTUsNTUyLDg1NCw1ODMsNTU2LDU1Niw2MTEsNDE3LDU1Miw1NTYsMjc4LDI4MSwyNzgsOTY5LDkwNiw2MTEsNTAwLDYxNSw1NTYsNjA0LDc3OCw2MTEsNDg3LDQ0Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMDk0LDU1Niw4ODUsNDg5LDExMTUsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxIcj1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sTXI9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2LDU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLE5yPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxQcj1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sX3I9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLEVyPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0senI9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLExyPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAyMiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxVcj17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sV3I9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxYcj17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sS3I9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgwMDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEdyPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxWcj1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sJHI9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFlyPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEpyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxRcj1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sWnI9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LGVzPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4xNDc2MywxLjA1MzY1LDEuMDYyMzQsLjk2OTI3LC45MjU4NiwxLjE1MzczLDEuMTg0MTQsLjkxMzQ5LC45MTM0OSwxLjA3NDAzLDEuMTczMDgsLjc4MzgzLDEuMjAwODgsLjc4MzgzLDEuNDI1MzEsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODM4MywuNzgzODMsMS4xNzMwOCwxLjE3MzA4LDEuMTczMDgsLjc3MzQ5LC45NDU2NSwuOTQ3MjksLjg1OTQ0LC44ODUwNiwuOTg1OCwuNzQ4MTcsLjgwMDE2LC44ODQ0OSwuOTgwMzksLjk1NzgyLC42OTIzOCwuODk4OTgsLjgzMjMxLC45ODE4MywxLjAzOTg5LC45NjkyNCwuODYyMzcsLjk2OTI0LC44MDU5NSwuNzQ1MjQsLjg2MDkxLC45NTQwMiwuOTQxNDMsLjk4NDQ4LC44ODU4LC44MzA4OSwuOTMyODUsMS4wOTQ5LDEuMzkwMTYsMS4wOTQ5LDEuNDU5OTQsLjc0NjI3LDEuMDQ4MzksLjk3NDU0LC45NzQ1NCwuODcyMDcsLjk3NDU0LC44NzUzMywxLjA2MTUxLC45NzQ1NCwxLjAwMTc2LDEuMTY0ODQsMS4wODEzMiwuOTgwNDcsMS4xNjQ4NCwxLjAyOTg5LDEuMDEwNTQsLjk2MjI1LC45NzQ1NCwuOTc0NTQsMS4wNjU5OCwuNzkwMDQsMS4xNjM0NCwxLjAwMzUxLC45NDYyOSwuOTk3MywuOTEwMTYsLjk2Nzc3LC45MDQzLC45MTA4MiwuOTI0ODEsLjkxMDgyLDEuMTczMDgsLjk1NzQ4LC45NjkyNywuOTY5MjcsMSwuOTY5MjcsLjkyNDgxLC44MDU5NywxLjA0ODM5LDEuMjMzOTMsMS4xNzgxLC45MjQ1LDEuMTczMDgsMS4yMDgwOCwuNjMyMTgsLjk0MjYxLDEuMjQ4MjIsMS4wOTk3MSwxLjA5OTcxLDEuMDQ4MzksMSwuODUyNzMsLjc4MDMyLDEuMDQ4MzksMS4wOTk3MSwxLjIyMzI2LC45MjQ1LDEuMDk4MzYsMS4xMzUyNSwxLjE1MjIyLC43MDQyNCwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuODU0OTgsLjg4NTA2LC43NDgxNywuNzQ4MTcsLjc0ODE3LC43NDgxNywuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk4NTgsMS4wMzk4OSwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTczMDgsLjk2OTI0LC45NTQwMiwuOTU0MDIsLjk1NDAyLC45NTQwMiwuODMwODksLjg2MjM3LC44ODQwOSwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTI5MTYsLjg3MjA3LC44NzUzMywuODc1MzMsLjg3NTMzLC44NzUzMywuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzODU0LDEuMDEwNTQsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwxLjI0ODIyLC44NzYxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsLjk2Nzc3LC45NzQ1NCwuOTY3NzcsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuOTg1OCwuOTUzOTEsLjk4NTgsLjk3NDU0LC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwxLDEsLjk4MDM5LDEuMDAxNzYsLjk4MDM5LDEuMDAxNzYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLDEuMTY0ODQsLjk1NzgyLC45MzE0NiwuODQ0MjEsMS4xMjc2MSwuNjkyMzgsMS4wODEzMiwxLDEsLjk4MDQ3LC44MzIzMSwxLjE2NDg0LDEsMSwuODQ3MjMsMS4wNDg2MSwuODQ3MjMsLjc4NzU1LC44MzIzMSwxLjIzNzM2LDEuMDM5ODksMS4wMTA1NCwxLDEsMS4wMzk4OSwxLjAxMDU0LC45ODU3LDEuMDM4NDksMS4wMTA1NCwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTIzODMsLjkwMTcxLC44MDU5NSwxLjA2NTk4LDEsMSwuODA1OTUsMS4wNjU5OCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LDEsMSwuODYwOTEsMS4wMjc1OSwuODU3NzEsMS4xNjM0NCwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywuODMwODksLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsMS4zMTg2OCwuOTY5MjcsLjk0NzI5LC45NzQ1NCwuODU0OTgsLjkyOTE2LC45NjkyNCwuODc2MSwxLDEsLjg2MDkxLDEuMTYzNDQsMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksLjgxOTY1LC44MTk2NSwuOTQ3MjksLjc4MDMyLC43MTAyMiwuOTA4ODMsLjg0MTcxLC45OTg3NywuNzc1OTYsMS4wNTczNCwxLjIsLjk0NzI5LC44NTk0NCwuODI3OTEsLjk2MDcsLjc0ODE3LC45MzI4NSwuOTgwMzksLjk2OTI0LC45NTc4MiwuODk4OTgsLjk4MzE2LC45ODE4MywxLjAzOTg5LC43ODYxNCwuOTY5MjQsLjk3NjQyLC44NjIzNywuODYwNzUsLjg2MDkxLC44MzA4OSwuOTAwODIsLjg4NTgsLjk3Mjk2LDEuMDEyODQsLjk1NzgyLC44MzA4OSwxLjA5NzYsMS4wNCwxLjAzMzQyLDEuMiwxLjA2NzUsMS4wOTc2LC45ODIwNSwxLjAzODA5LDEuMDUwOTcsMS4wNCwuOTUzNjQsMS4wMzM0MiwxLjA1NDAxLDEuMiwxLjAyMTQ4LDEuMDExOSwxLjA0NzI0LDEuMDEyNywxLjAyNzMyLC45NjIyNSwuODk2NSwuOTc3ODMsLjkzNTc0LC45NDgxOCwxLjMwNjc5LDEuMDY3NSwxLjExODI2LC45OTgyMSwxLjA1NTcsMS4wMzI2LDEuMiwxLjA2NzUsLjk2MjI1LDEuMDY3NSwxLjAzMjYsLjc0ODE3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3NTQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3NTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45ODcwNSwxLDEsMSwxLDEsMSwuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsMS4xMjMxNywxLjEyMzE3LDEuMTIzMTcsLjY3NjAzLC42NzYwMywxLjE1NjIxLC43MzU4NCwxLjIxMTkxLDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3MDksLjk2OTI3LDEuMDE0NzMsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4wOTgzNiwxLjA5ODM2LDEuMDk4MzYsMS4wMTUyMiwuODYzMjEsLjk0NDM0LC44NjQ5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjQzOCwxLjE3MzA4LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY3OTEsMS4yNDgyMiwxLjI0ODIyLDEuMTczMDgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xNzk4NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA3NDIsMS4xMDc0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdHM9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LG5zPVsxLjc2NzM4LDEsMSwuOTg1OTQsMS4wMjI4NSwxLjEwNDU0LDEuMDYyMzQsLjk2OTI3LC45MjAzNywxLjE5OTg1LDEuMjA0NiwuOTA2MTYsLjkwNjE2LDEuMDcxNTIsMS4xNzE0LC43ODAzMiwxLjIwMDg4LC43ODAzMiwxLjQwMjQ2LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgwMzIsLjc4MDMyLDEuMTcxNCwxLjE3MTQsMS4xNzE0LC44MDU5NywuOTQwODQsLjk2NzA2LC44NTk0NCwuODU3MzQsLjk3MDkzLC43NTg0MiwuNzk5MzYsLjg4MTk4LC45ODMxLC45NTc4MiwuNzEzODcsLjg2OTY5LC44NDYzNiwxLjA3Nzk2LDEuMDM1ODQsLjk2OTI0LC44Mzk2OCwuOTY5MjQsLjgyODI2LC43OTY0OSwuODU3NzEsLjk1MTMyLC45MzExOSwuOTg5NjUsLjg4NDMzLC44Mjg3LC45MzM2NSwxLjA4NjEyLDEuMzYzOCwxLjA4NjEyLDEuNDU3ODYsLjc0NjI3LC44MDQ5OSwuOTE0ODQsMS4wNTcwNywuOTIzODMsMS4wNTg4MiwuOTQwMywxLjEyNjU0LDEuMDU4ODIsMS4wMTc1NiwxLjA5MDExLDEuMDkwMTEsLjk5NDE0LDEuMDkwMTEsMS4wMzQsMS4wMTc1NiwxLjA1MzU2LDEuMDU3MDcsMS4wNTg4MiwxLjA0Mzk5LC44NDg2MywxLjIxOTY4LDEuMDE3NTYsLjk1ODAxLDEuMDAwNjgsLjkxNzk3LC45Njc3NywuOTA0MywuOTAzNTEsLjkyMTA1LC45MDM1MSwxLjE3MTQsLjg1MzM3LC45NjkyNywuOTY5MjcsLjk5OTEyLC45NjkyNywuOTIxMDUsLjgwNTk3LDEuMjQzNCwxLjIwODA4LDEuMDU5MzcsLjkwOTU3LDEuMTcxNCwxLjIwODA4LC43NTE1NSwuOTQyNjEsMS4yNDY0NCwxLjA5OTcxLDEuMDk5NzEsLjg0NzUxLDEsLjg1MjczLC43ODAzMiwuNjE1ODQsMS4wNTQyNSwxLjE3OTE0LC45MDk1NywxLjA4NjY1LDEuMTE1OTMsMS4xNDE2OSwuNzMzODEsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjg2MDM1LC44NTczNCwuNzU4NDIsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NzA5MywxLjAzNTg0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzE0LC45NjkyNCwuOTUxMzIsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjgyODcsLjgzOTY4LC44OTA0OSwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTM1NzUsLjkyMzgzLC45NDAzLC45NDAzLC45NDAzLC45NDAzLC44NzE3LC44NzE3LC44NzE3LC44NzE3LDEuMDA1MjcsMS4wMTc1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4yNDY0NCwuOTU5MjMsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwuOTY3NzcsMS4wNTcwNywuOTY3NzcsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuOTcwOTMsMS4wOTY5LC45NzA5MywxLjA1ODgyLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsMSwxLC45ODMxLDEuMDE3NTYsLjk4MzEsMS4wMTc1NiwuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsMS4wOTAxMSwuOTU3ODIsLjg3MTcsLjg0Nzg0LDEuMTE1NTEsLjcxMzg3LDEuMDkwMTEsMSwxLC45OTQxNCwuODQ2MzYsMS4wOTAxMSwxLDEsLjg0NjM2LDEuMDUzNiwuODQ2MzYsLjk0Mjk4LC44NDYzNiwxLjIzMjk3LDEuMDM1ODQsMS4wMTc1NiwxLDEsMS4wMzU4NCwxLjAxNzU2LDEuMDAzMjMsMS4wMzQ0NCwxLjAxNzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45MzA2NiwuOTgyOTMsLjgyODI2LDEuMDQzOTksMSwxLC44MjgyNiwxLjA0Mzk5LC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsMSwxLC44NTc3MSwxLjE3MzE4LC44NTc3MSwxLjIxOTY4LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywuODI4NywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywxLjA4NTcxLC45NjkyNywuOTY3MDYsLjkxNDg0LC44NjAzNSwuOTM1NzUsLjk2OTI0LC45NTkyMywxLDEsLjg1NzcxLDEuMjE5NjgsMS4xMTQzNywxLjExNDM3LC45MzEwOSwuOTEyMDIsLjYwNDExLC44NDE2NCwuNTU1NzIsMS4wMTE3MywuOTczNjEsLjgxODE4LC44MTgxOCwuOTY2MzUsLjc4MDMyLC43MjcyNywuOTIzNjYsLjk4NjAxLDEuMDM0MDUsLjc3OTY4LDEuMDk3OTksMS4yLC45NjcwNiwuODU5NDQsLjg1NjM4LC45NjQ5MSwuNzU4NDIsLjkzMzY1LC45ODMxLC45NjkyNCwuOTU3ODIsLjg2OTY5LC45NDE1MiwxLjA3Nzk2LDEuMDM1ODQsLjc4NDM3LC45NjkyNCwuOTg3MTUsLjgzOTY4LC44MzQ5MSwuODU3NzEsLjgyODcsLjk0NDkyLC44ODQzMywuOTI4NywxLjAwOTgsLjk1NzgyLC44Mjg3LDEuMDYyNSwuOTgyNDgsMS4wMzQyNCwxLjIsMS4wMTA3MSwxLjA2MjUsLjk1MjQ2LDEuMDM4MDksMS4wNDkxMiwuOTgyNDgsMS4wMDIyMSwxLjAzNDI0LDEuMDU0NDMsMS4yLDEuMDQ3ODUsLjk5NjA5LDEuMDAxNjksMS4wNTE3NiwuOTkzNDYsMS4wNTM1NiwuOTA4NywxLjAzMDA0LC45NTU0MiwuOTMxMTcsMS4yMzM2MiwxLjAxMDcxLDEuMDc4MzEsMS4wMjUxMiwxLjA1MjA1LDEuMDM1MDIsMS4yLDEuMDEwNzEsMS4wNTM1NiwxLjAxMDcxLDEuMDM1MDIsLjc1ODQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3MTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDAyMSwxLDEsMSwxLDEsMSwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4xMzE5NiwxLjEzMTk2LDEuMTMxOTYsLjY3NDI4LC42NzQyOCwxLjE2MDM5LC43MzI5MSwxLjIwOTk2LDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3OTYsLjk2OTI3LDEuMDE1MTgsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4xMDUzOSwxLjEwNTM5LDEuMTEzNTgsMS4wNjk2NywuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY1MDcsMS4xNzE0LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY5NywxLjI0ODIyLDEuMjQ4MjIsMS4xNzIzOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4MDgzLDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDkzOCwxLjEwOTM4LDEsMSwxLDEuMDU0MjUsMS4wOTk3MSwxLjA5OTcxLDEuMDk5NzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxhcz17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0scnM9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIk15cmlhZFByby1SZWd1bGFyIl09ZVsiUGRmSlMtRmFsbGJhY2stUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOlZyLGJhc2VXaWR0aHM6RXIsYmFzZU1hcHBpbmc6enIsbWV0cmljczokcn07ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6THIsYmFzZVdpZHRoczpEcixiYXNlTWFwcGluZzpIcixtZXRyaWNzOlVyfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpLcixiYXNlV2lkdGhzOlByLGJhc2VNYXBwaW5nOl9yLG1ldHJpY3M6R3J9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpXcixiYXNlV2lkdGhzOk1yLGJhc2VNYXBwaW5nOk5yLG1ldHJpY3M6WHJ9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpFcixiYXNlTWFwcGluZzp6cn07ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOkRyLGJhc2VNYXBwaW5nOkhyfTtlWyJBcmlhbC1JdGFsaWNNVCJdPWVbIkFyaWFsLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGJhc2VXaWR0aHM6UHIsYmFzZU1hcHBpbmc6X3J9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpNcixiYXNlTWFwcGluZzpOcn07ZVsiQ2FsaWJyaS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6dnIsYmFzZVdpZHRoczpFcixiYXNlTWFwcGluZzp6cixtZXRyaWNzOlNyfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpicixiYXNlV2lkdGhzOkRyLGJhc2VNYXBwaW5nOkhyLG1ldHJpY3M6d3J9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczp5cixiYXNlV2lkdGhzOlByLGJhc2VNYXBwaW5nOl9yLG1ldHJpY3M6cXJ9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmpyLGJhc2VXaWR0aHM6TXIsYmFzZU1hcHBpbmc6TnIsbWV0cmljczprcn07ZVsiU2Vnb2V1aS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6bnMsYmFzZVdpZHRoczpFcixiYXNlTWFwcGluZzp6cixtZXRyaWNzOmFzfTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpZcixiYXNlV2lkdGhzOkRyLGJhc2VNYXBwaW5nOkhyLG1ldHJpY3M6SnJ9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczplcyxiYXNlV2lkdGhzOlByLGJhc2VNYXBwaW5nOl9yLG1ldHJpY3M6dHN9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOlFyLGJhc2VXaWR0aHM6TXIsYmFzZU1hcHBpbmc6TnIsbWV0cmljczpacn07ZVsiSGVsdmV0aWNhLVJlZ3VsYXIiXT1lLkhlbHZldGljYT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpPcixiYXNlV2lkdGhzOkVyLGJhc2VNYXBwaW5nOnpyLG1ldHJpY3M6UnJ9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6QXIsYmFzZVdpZHRoczpEcixiYXNlTWFwcGluZzpIcixtZXRyaWNzOnhyfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpGcixiYXNlV2lkdGhzOlByLGJhc2VNYXBwaW5nOl9yLG1ldHJpY3M6VHJ9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6Q3IsYmFzZVdpZHRoczpNcixiYXNlTWFwcGluZzpOcixtZXRyaWNzOklyfX0pO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIHJzKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczpuLGJhc2VNYXBwaW5nOmEsZmFjdG9yczpyfT10LHM9cj9uLm1hcCgoZSx0KT0+ZSpyW3RdKTpuO2xldCBpLG89LTI7Y29uc3QgbD1bXTtmb3IoY29uc3RbZSx0XW9mIGEubWFwKChlLHQpPT5bZSx0XSkuc29ydCgoW2VdLFt0XSk9PmUtdCkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe2kucHVzaChzW3RdKTtvKz0xfWVsc2V7bz1lO2k9W3NbdF1dO2wucHVzaChlLGkpfXJldHVybiBsfShlKSxuPW5ldyBEaWN0KG51bGwpO24uc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO24uc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtuLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTtuLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO24uc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO24uc2V0KCJXIix0KTtuLnNldCgiRmlyc3RDaGFyIix0WzBdKTtuLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCBhPW5ldyBEaWN0KG51bGwpO24uc2V0KCJGb250RGVzY3JpcHRvciIsYSk7Y29uc3Qgcj1uZXcgRGljdChudWxsKTtyLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO3Iuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7ci5zZXQoIlN1cHBsZW1lbnQiLDApO24uc2V0KCJDSURTeXN0ZW1JbmZvIixyKTtyZXR1cm4gbn1jb25zdCBzcz17bnVtYmVyOjAsbGJyYWNlOjEscmJyYWNlOjIsdHJ1ZTozLGZhbHNlOjQsYWRkOjUsc3ViOjYsbXVsOjcsZGl2OjgsaWRpdjo5LG1vZDoxMCxleHA6MTEsZXE6MTIsbmU6MTMsZ3Q6MTQsZ2U6MTUsbHQ6MTYsbGU6MTcsYW5kOjE4LG9yOjE5LHhvcjoyMCxiaXRzaGlmdDoyMSxhYnM6MjIsbmVnOjIzLGNlaWxpbmc6MjQsZmxvb3I6MjUscm91bmQ6MjYsdHJ1bmNhdGU6Mjcsbm90OjI4LHNxcnQ6Mjksc2luOjMwLGNvczozMSxsbjozMixsb2c6MzMsYXRhbjozNCxjdmk6MzUsY3ZyOjM2LGR1cDozNyxleGNoOjM4LHBvcDozOSxjb3B5OjQwLGluZGV4OjQxLHJvbGw6NDIsaWY6NDMsaWZlbHNlOjQ0LGVvZjo0NSxtaW46NDYsbWF4OjQ3fTtjbGFzcyBUb2tlbntjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7dGhpcy5pZD1lO3RoaXMudmFsdWU9dH19Y2xhc3MgbGV4ZXJfTGV4ZXJ7c3RhdGljI2JlPW51bGw7c3RhdGljI3dlPW51bGw7c3RhdGljI2plKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpLHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbbixhXW9mIE9iamVjdC5lbnRyaWVzKHNzKSl7aWYoIm51bWJlciI9PT1uKWNvbnRpbnVlO2NvbnN0IHI9YT49c3MudHJ1ZSYmYTw9c3MuaWZlbHNlLHM9bmV3IFRva2VuKGEscj9uOm51bGwpO2Vbbl09cztyJiYodFtuXT1zKX10aGlzLiNiZT1lO3RoaXMuI3dlPXR9Y29uc3RydWN0b3IoZSl7bGV4ZXJfTGV4ZXIuI2JlfHxsZXhlcl9MZXhlci4jamUoKTt0aGlzLmRhdGE9ZTt0aGlzLnBvcz0wO3RoaXMubGVuPWUubGVuZ3RoO3RoaXMuX251bWJlclBhdHRlcm49L1srLV0/KD86XGQrXC4/XGQqfFwuXGQrKSg/OmVbKy1dP1xkKyk/L2l5O3RoaXMuX2lkZW50aWZpZXJQYXR0ZXJuPS9bYS16XSsveX1fc2tpcENvbW1lbnQoKXtjb25zdCBlPXRoaXMuZGF0YS5pbmRleE9mKCJcbiIsdGhpcy5wb3MpLHQ9dGhpcy5kYXRhLmluZGV4T2YoIlxyIix0aGlzLnBvcyksbj1NYXRoLm1pbihlPDA/dGhpcy5sZW46ZSx0PDA/dGhpcy5sZW46dCk7dGhpcy5wb3M9TWF0aC5taW4obisxLHRoaXMubGVuKX1fZ2V0TnVtYmVyKCl7dGhpcy5fbnVtYmVyUGF0dGVybi5sYXN0SW5kZXg9dGhpcy5wb3M7Y29uc3QgZT10aGlzLl9udW1iZXJQYXR0ZXJuLmV4ZWModGhpcy5kYXRhKTtpZighZSlyZXR1cm4gbmV3IFRva2VuKHNzLm51bWJlciwwKTtjb25zdCB0PXBhcnNlRmxvYXQoZVswXSk7aWYoIU51bWJlci5pc0Zpbml0ZSh0KSlyZXR1cm4gbmV3IFRva2VuKHNzLm51bWJlciwwKTt0aGlzLnBvcz10aGlzLl9udW1iZXJQYXR0ZXJuLmxhc3RJbmRleDtyZXR1cm4gbmV3IFRva2VuKHNzLm51bWJlcix0KX1fZ2V0T3BlcmF0b3IoKXt0aGlzLl9pZGVudGlmaWVyUGF0dGVybi5sYXN0SW5kZXg9dGhpcy5wb3M7Y29uc3QgZT10aGlzLl9pZGVudGlmaWVyUGF0dGVybi5leGVjKHRoaXMuZGF0YSk7aWYoIWUpcmV0dXJuIG5ldyBUb2tlbihzcy5udW1iZXIsMCk7dGhpcy5wb3M9dGhpcy5faWRlbnRpZmllclBhdHRlcm4ubGFzdEluZGV4O2NvbnN0IHQ9ZVswXSxuPWxleGVyX0xleGVyLiN3ZVt0XTtyZXR1cm4gbnx8bmV3IFRva2VuKHNzLm51bWJlciwwKX1uZXh0KCl7Zm9yKDt0aGlzLnBvczx0aGlzLmxlbjspe2NvbnN0IGU9dGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5wb3MrKyk7c3dpdGNoKGUpe2Nhc2UgMDpjYXNlIDk6Y2FzZSAxMDpjYXNlIDEyOmNhc2UgMTM6Y2FzZSAzMjpicmVhaztjYXNlIDM3OnRoaXMuX3NraXBDb21tZW50KCk7YnJlYWs7Y2FzZSAxMjM6cmV0dXJuIGxleGVyX0xleGVyLiNiZS5sYnJhY2U7Y2FzZSAxMjU6cmV0dXJuIGxleGVyX0xleGVyLiNiZS5yYnJhY2U7Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6dGhpcy5wb3MtLTtyZXR1cm4gdGhpcy5fZ2V0TnVtYmVyKCk7ZGVmYXVsdDppZihlPj00OCYmZTw9NTcpe3RoaXMucG9zLS07cmV0dXJuIHRoaXMuX2dldE51bWJlcigpfWlmKGU+PTk3JiZlPD0xMjIpe3RoaXMucG9zLS07cmV0dXJuIHRoaXMuX2dldE9wZXJhdG9yKCl9cmV0dXJuIG5ldyBUb2tlbihzcy5udW1iZXIsMCl9fXJldHVybiBsZXhlcl9MZXhlci4jYmUuZW9mfX1jb25zdCBpcz0wLG9zPTEsbHM9Mixmcz0wLGNzPTEsaHM9Mix1cz0zLG1zPTQscHM9NSxkcz02LGdzPTcsYnM9OCx3cz05LGpzPTEwO2NsYXNzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX19Y2xhc3MgUHNQcm9ncmFtIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZzKTt0aGlzLmJvZHk9ZX19Y2xhc3MgUHNCbG9jayBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcihjcyk7dGhpcy5pbnN0cnVjdGlvbnM9ZX19Y2xhc3MgUHNOdW1iZXIgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoaHMpO3RoaXMudmFsdWU9ZX19Y2xhc3MgUHNPcGVyYXRvciBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih1cyk7dGhpcy5vcD1lfX1jbGFzcyBQc0lmIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKG1zKTt0aGlzLnRoZW49ZX19Y2xhc3MgUHNJZkVsc2UgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihwcyk7dGhpcy50aGVuPWU7dGhpcy5vdGhlcndpc2U9dH19Y2xhc3MgUHNBcmdOb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGRzKTt0aGlzLmluZGV4PWU7dGhpcy52YWx1ZVR5cGU9aXN9fWNsYXNzIFBzQ29uc3ROb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKGdzKTt0aGlzLnZhbHVlPWU7dGhpcy52YWx1ZVR5cGU9ImJvb2xlYW4iPT10eXBlb2YgZT9vczppc319Y2xhc3MgUHNVbmFyeU5vZGUgZXh0ZW5kcyBQc05vZGV7Y29uc3RydWN0b3IoZSx0LG49bHMpe3N1cGVyKGJzKTt0aGlzLm9wPWU7dGhpcy5vcGVyYW5kPXQ7dGhpcy52YWx1ZVR5cGU9bn19Y2xhc3MgUHNCaW5hcnlOb2RlIGV4dGVuZHMgUHNOb2Rle2NvbnN0cnVjdG9yKGUsdCxuLGE9bHMpe3N1cGVyKHdzKTt0aGlzLm9wPWU7dGhpcy5maXJzdD10O3RoaXMuc2Vjb25kPW47dGhpcy52YWx1ZVR5cGU9YX19Y2xhc3MgUHNUZXJuYXJ5Tm9kZSBleHRlbmRzIFBzTm9kZXtjb25zdHJ1Y3RvcihlLHQsbixhPWxzKXtzdXBlcihqcyk7dGhpcy5jb25kPWU7dGhpcy50aGVuPXQ7dGhpcy5vdGhlcndpc2U9bjt0aGlzLnZhbHVlVHlwZT1hfX1jbGFzcyBhc3RfUGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLl90b2tlbj1udWxsfXN0YXRpYyBfaXNSZWd1bGFyT3BlcmF0b3IoZSl7cmV0dXJuIGU+PXNzLnRydWUmJmU8c3MuaWZ9X2FkdmFuY2UoKXt0aGlzLl90b2tlbj10aGlzLmxleGVyLm5leHQoKX1fZXhwZWN0KGUpe2lmKHRoaXMuX3Rva2VuLmlkIT09ZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFBvc3RTY3JpcHQgZnVuY3Rpb246IGV4cGVjdGVkIHRva2VuIGlkICR7ZX0sIGdvdCAke3RoaXMuX3Rva2VuLmlkfS5gKTtjb25zdCB0PXRoaXMuX3Rva2VuO3RoaXMuX2FkdmFuY2UoKTtyZXR1cm4gdH1wYXJzZSgpe3RoaXMuX2FkdmFuY2UoKTt0aGlzLl9leHBlY3Qoc3MubGJyYWNlKTtjb25zdCBlPXRoaXMuX3BhcnNlQmxvY2soKTt0aGlzLl9leHBlY3Qoc3MucmJyYWNlKTt0aGlzLl90b2tlbi5pZCE9PXNzLmVvZiYmd2FybigiUG9zdFNjcmlwdCBmdW5jdGlvbjogdW5leHBlY3RlZCBjb250ZW50IGFmdGVyIGNsb3NpbmcgYnJhY2UuIik7cmV0dXJuIG5ldyBQc1Byb2dyYW0oZSl9X3BhcnNlQmxvY2soKXtjb25zdCBlPVtdO2Zvcig7Oyl7Y29uc3QgdD10aGlzLl90b2tlbjtzd2l0Y2godC5pZCl7Y2FzZSBzcy5udW1iZXI6ZS5wdXNoKG5ldyBQc051bWJlcih0LnZhbHVlKSk7dGhpcy5fYWR2YW5jZSgpO2JyZWFrO2Nhc2Ugc3MubGJyYWNlOnt0aGlzLl9hZHZhbmNlKCk7Y29uc3QgdD10aGlzLl9wYXJzZUJsb2NrKCk7dGhpcy5fZXhwZWN0KHNzLnJicmFjZSk7aWYodGhpcy5fdG9rZW4uaWQ9PT1zcy5pZil7dGhpcy5fYWR2YW5jZSgpO2UucHVzaChuZXcgUHNJZih0KSl9ZWxzZXtpZih0aGlzLl90b2tlbi5pZCE9PXNzLmxicmFjZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb246IGEgcHJvY2VkdXJlIGJsb2NrIG11c3QgYmUgZm9sbG93ZWQgYnkgJ2lmJyBvciAne+KApn0gaWZlbHNlJy4iKTt7dGhpcy5fYWR2YW5jZSgpO2NvbnN0IG49dGhpcy5fcGFyc2VCbG9jaygpO3RoaXMuX2V4cGVjdChzcy5yYnJhY2UpO3RoaXMuX2V4cGVjdChzcy5pZmVsc2UpO2UucHVzaChuZXcgUHNJZkVsc2UodCxuKSl9fWJyZWFrfWNhc2Ugc3MucmJyYWNlOmNhc2Ugc3MuZW9mOnJldHVybiBuZXcgUHNCbG9jayhlKTtjYXNlIHNzLmlmOmNhc2Ugc3MuaWZlbHNlOnRocm93IG5ldyBGb3JtYXRFcnJvcihgUG9zdFNjcmlwdCBmdW5jdGlvbjogdW5leHBlY3RlZCAnJHt0LnZhbHVlfScgb3BlcmF0b3IuYCk7ZGVmYXVsdDppZihhc3RfUGFyc2VyLl9pc1JlZ3VsYXJPcGVyYXRvcih0LmlkKSl7ZS5wdXNoKG5ldyBQc09wZXJhdG9yKHQuaWQpKTt0aGlzLl9hZHZhbmNlKCk7YnJlYWt9dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBQb3N0U2NyaXB0IGZ1bmN0aW9uOiB1bmV4cGVjdGVkIHRva2VuIGlkICR7dC5pZH0uYCl9fX19ZnVuY3Rpb24gcGFyc2VQb3N0U2NyaXB0RnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBhc3RfUGFyc2VyKG5ldyBsZXhlcl9MZXhlcihlKSkucGFyc2UoKX1mdW5jdGlvbiBfbm9kZXNFcXVhbChlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKGUudHlwZSE9PXQudHlwZSlyZXR1cm4hMTtzd2l0Y2goZS50eXBlKXtjYXNlIGRzOnJldHVybiBlLmluZGV4PT09dC5pbmRleDtjYXNlIGdzOnJldHVybiBlLnZhbHVlPT09dC52YWx1ZTtjYXNlIGJzOnJldHVybiBlLm9wPT09dC5vcCYmX25vZGVzRXF1YWwoZS5vcGVyYW5kLHQub3BlcmFuZCk7Y2FzZSB3czpyZXR1cm4gZS5vcD09PXQub3AmJl9ub2Rlc0VxdWFsKGUuZmlyc3QsdC5maXJzdCkmJl9ub2Rlc0VxdWFsKGUuc2Vjb25kLHQuc2Vjb25kKTtjYXNlIGpzOnJldHVybiBfbm9kZXNFcXVhbChlLmNvbmQsdC5jb25kKSYmX25vZGVzRXF1YWwoZS50aGVuLHQudGhlbikmJl9ub2Rlc0VxdWFsKGUub3RoZXJ3aXNlLHQub3RoZXJ3aXNlKTtkZWZhdWx0OnJldHVybiExfX1jb25zdCBrcz0xMDA7Y2xhc3MgUFNTdGFja1RvVHJlZXtzdGF0aWMja2U9bnVsbDtzdGF0aWMjeWU9bnVsbDtzdGF0aWMjcWU9bnVsbDtzdGF0aWMjdmU9bnVsbDtzdGF0aWMjU2UoKXt0aGlzLiNrZT1uZXcgU2V0KFtzcy5hZGQsc3Muc3ViLHNzLm11bCxzcy5kaXYsc3MuaWRpdixzcy5tb2Qsc3MuZXhwLHNzLmF0YW4sc3MuZXEsc3MubmUsc3MuZ3Qsc3MuZ2Usc3MubHQsc3MubGUsc3MuYW5kLHNzLm9yLHNzLnhvcixzcy5iaXRzaGlmdF0pO3RoaXMuI3llPW5ldyBTZXQoW3NzLmFicyxzcy5uZWcsc3MuY2VpbGluZyxzcy5mbG9vcixzcy5yb3VuZCxzcy50cnVuY2F0ZSxzcy5zcXJ0LHNzLnNpbixzcy5jb3Msc3MubG4sc3MubG9nLHNzLmN2aSxzcy5jdnIsc3Mubm90XSk7dGhpcy4jcWU9bmV3IFNldChbc3MuYWJzLHNzLmNlaWxpbmcsc3MuY3ZpLHNzLmN2cixzcy5mbG9vcixzcy5yb3VuZCxzcy50cnVuY2F0ZV0pO3RoaXMuI3ZlPW5ldyBNYXAoW1tzcy5lcSxzcy5uZV0sW3NzLm5lLHNzLmVxXSxbc3MubHQsc3MuZ2VdLFtzcy5sZSxzcy5ndF0sW3NzLmd0LHNzLmxlXSxbc3MuZ2Usc3MubHRdXSl9ZXZhbHVhdGUoZSx0KXtQU1N0YWNrVG9UcmVlLiNrZXx8UFNTdGFja1RvVHJlZS4jU2UoKTt0aGlzLl9mYWlsZWQ9ITE7aWYodD5rcylyZXR1cm4gbnVsbDtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8dDtlKyspbi5wdXNoKG5ldyBQc0FyZ05vZGUoZSkpO3RoaXMuX2V2YWxCbG9jayhlLmJvZHksbik7aWYodGhpcy5fZmFpbGVkKXJldHVybiBudWxsO1BTU3RhY2tUb1RyZWUuI0FlKG4pO3JldHVybiBufXN0YXRpYyNBZShlKXtjb25zdCB0PW5ldyBNYXAsdmlzaXQ9ZT0+e2lmKCFlfHxlLnR5cGU9PT1kc3x8ZS50eXBlPT09Z3MpcmV0dXJuO2NvbnN0IG49dC5nZXQoZSk/PzA7dC5zZXQoZSxuKzEpO2lmKCEobj4wKSlzd2l0Y2goZS50eXBlKXtjYXNlIGJzOnZpc2l0KGUub3BlcmFuZCk7YnJlYWs7Y2FzZSB3czp2aXNpdChlLmZpcnN0KTt2aXNpdChlLnNlY29uZCk7YnJlYWs7Y2FzZSBqczp2aXNpdChlLmNvbmQpO3Zpc2l0KGUudGhlbik7dmlzaXQoZS5vdGhlcndpc2UpfX07Zm9yKGNvbnN0IHQgb2YgZSl2aXNpdCh0KTtmb3IoY29uc3RbZSxuXW9mIHQpaWYobj4xKXtlLnNoYXJlZD0hMDtlLnNoYXJlZENvdW50PW59fV9ldmFsQmxvY2soZSx0KXt0aGlzLl9ldmFsQmxvY2tGcm9tKGUuaW5zdHJ1Y3Rpb25zLDAsdCl9X2V2YWxCbG9ja0Zyb20oZSx0LG4pe2ZvcihsZXQgYT10O2E8ZS5sZW5ndGgmJiF0aGlzLl9mYWlsZWQ7YSsrKXtjb25zdCB0PWVbYV07c3dpdGNoKHQudHlwZSl7Y2FzZSBoczpuLnB1c2gobmV3IFBzQ29uc3ROb2RlKHQudmFsdWUpKTtuLmxlbmd0aD5rcyYmKHRoaXMuX2ZhaWxlZD0hMCk7YnJlYWs7Y2FzZSB1czp0aGlzLl9ldmFsT3AodC5vcCxuKTticmVhaztjYXNlIG1zOntpZihuLmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3Qgcj1uLnBvcCgpLHM9bi5zbGljZSgpO3RoaXMuX2V2YWxCbG9jayh0LnRoZW4sbik7aWYodGhpcy5fZmFpbGVkKWJyZWFrO2lmKG4ubGVuZ3RoPT09cy5sZW5ndGgpZm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspbltlXSE9PXNbZV0mJihuW2VdPXRoaXMuX21ha2VUZXJuYXJ5KHIsbltlXSxzW2VdKSk7ZWxzZXtpZihuLmxlbmd0aD5zLmxlbmd0aCl7aWYoci50eXBlPT09Z3Mpe2lmKCFyLnZhbHVlKXtuLmxlbmd0aD0wO24ucHVzaCguLi5zKX1icmVha31jb25zdCB0PW4uc2xpY2UoKTt0aGlzLl9ldmFsQmxvY2tGcm9tKGUsYSsxLHQpO2lmKHRoaXMuX2ZhaWxlZClicmVhaztjb25zdCBpPXM7dGhpcy5fZXZhbEJsb2NrRnJvbShlLGErMSxpKTtpZih0aGlzLl9mYWlsZWQpYnJlYWs7aWYodC5sZW5ndGghPT1pLmxlbmd0aCl7Y29uc3QgZT1uZXcgUHNDb25zdE5vZGUoMCk7Zm9yKDt0Lmxlbmd0aDxpLmxlbmd0aDspdC5wdXNoKGUpO2Zvcig7aS5sZW5ndGg8dC5sZW5ndGg7KWkucHVzaChlKX1uLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKW4ucHVzaCh0aGlzLl9tYWtlVGVybmFyeShyLHRbZV0saVtlXSkpO3JldHVybn10aGlzLl9mYWlsZWQ9ITB9YnJlYWt9Y2FzZSBwczp7aWYobi5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IGU9bi5wb3AoKSxhPW4uc2xpY2UoKSxyPWEuc2xpY2UoKTt0aGlzLl9ldmFsQmxvY2sodC50aGVuLHIpO2lmKHRoaXMuX2ZhaWxlZClicmVhaztjb25zdCBzPWEuc2xpY2UoKTt0aGlzLl9ldmFsQmxvY2sodC5vdGhlcndpc2Uscyk7aWYodGhpcy5fZmFpbGVkKWJyZWFrO2lmKHIubGVuZ3RoIT09cy5sZW5ndGgpe2NvbnN0IGU9bmV3IFBzQ29uc3ROb2RlKDApO2Zvcig7ci5sZW5ndGg8cy5sZW5ndGg7KXIucHVzaChlKTtmb3IoO3MubGVuZ3RoPHIubGVuZ3RoOylzLnB1c2goZSl9bi5sZW5ndGg9MDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyluLnB1c2godGhpcy5fbWFrZVRlcm5hcnkoZSxyW3RdLHNbdF0pKTticmVha319fX1fZXZhbE9wKGUsdCl7aWYoUFNTdGFja1RvVHJlZS4ja2UuaGFzKGUpKXtpZih0Lmxlbmd0aDwyKXt0aGlzLl9mYWlsZWQ9ITA7cmV0dXJufWNvbnN0IG49dC5wb3AoKSxhPXQucG9wKCk7dC5wdXNoKHRoaXMuX21ha2VCaW5hcnkoZSxuLGEpKTtyZXR1cm59aWYoUFNTdGFja1RvVHJlZS4jeWUuaGFzKGUpKXtpZih0Lmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7cmV0dXJufXQucHVzaCh0aGlzLl9tYWtlVW5hcnkoZSx0LnBvcCgpKSl9ZWxzZSBzd2l0Y2goZSl7Y2FzZSBzcy50cnVlOnQucHVzaChuZXcgUHNDb25zdE5vZGUoITApKTt0Lmxlbmd0aD5rcyYmKHRoaXMuX2ZhaWxlZD0hMCk7YnJlYWs7Y2FzZSBzcy5mYWxzZTp0LnB1c2gobmV3IFBzQ29uc3ROb2RlKCExKSk7dC5sZW5ndGg+a3MmJih0aGlzLl9mYWlsZWQ9ITApO2JyZWFrO2Nhc2Ugc3MuZHVwOmlmKHQubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha310LnB1c2godC5hdCgtMSkpO3QubGVuZ3RoPmtzJiYodGhpcy5fZmFpbGVkPSEwKTticmVhaztjYXNlIHNzLmV4Y2g6e2lmKHQubGVuZ3RoPDIpe3RoaXMuX2ZhaWxlZD0hMDticmVha31jb25zdCBlPXQucG9wKCksbj10LnBvcCgpO3QucHVzaChlLG4pO2JyZWFrfWNhc2Ugc3MucG9wOmlmKHQubGVuZ3RoPDEpe3RoaXMuX2ZhaWxlZD0hMDticmVha310LnBvcCgpO2JyZWFrO2Nhc2Ugc3MuY29weTp7aWYodC5sZW5ndGg8MSl7dGhpcy5fZmFpbGVkPSEwO2JyZWFrfWNvbnN0IGU9dC5wb3AoKTtpZihlLnR5cGU9PT1ncyl7Y29uc3Qgbj0wfGUudmFsdWU7aWYoMD09PW4pO2Vsc2UgaWYobjwwfHxuPnQubGVuZ3RoKXRoaXMuX2ZhaWxlZD0hMDtlbHNle3QucHVzaCguLi50LnNsaWNlKC1uKSk7dC5sZW5ndGg+a3MmJih0aGlzLl9mYWlsZWQ9ITApfX1lbHNlIHRoaXMuX2ZhaWxlZD0hMDticmVha31jYXNlIHNzLmluZGV4OntpZih0Lmxlbmd0aDwxKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3QgZT10LnBvcCgpO2lmKGUudHlwZT09PWdzKXtjb25zdCBuPTB8ZS52YWx1ZTtuPDB8fG4+PXQubGVuZ3RoP3RoaXMuX2ZhaWxlZD0hMDp0LnB1c2godC5hdCgtbi0xKSl9ZWxzZSB0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y2FzZSBzcy5yb2xsOntpZih0Lmxlbmd0aDwyKXt0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9Y29uc3QgZT10LnBvcCgpLG49dC5wb3AoKTtpZihuLnR5cGU9PT1ncyYmZS50eXBlPT09Z3Mpe2NvbnN0IGE9MHxuLnZhbHVlO2lmKDA9PT1hKTtlbHNlIGlmKGE8MHx8YT50Lmxlbmd0aCl0aGlzLl9mYWlsZWQ9ITA7ZWxzZXtjb25zdCBuPSgoMHxlLnZhbHVlKSVhK2EpJWE7aWYobj4wKXtjb25zdCBlPXQuc3BsaWNlKC1hLGEpO3QucHVzaCguLi5lLnNsaWNlKGEtbiksLi4uZS5zbGljZSgwLGEtbikpfX19ZWxzZSB0aGlzLl9mYWlsZWQ9ITA7YnJlYWt9ZGVmYXVsdDp0aGlzLl9mYWlsZWQ9ITB9fV9tYWtlQmluYXJ5KGUsdCxuKXtpZih0LnR5cGU9PT1ncyYmbi50eXBlPT09Z3Mpe2NvbnN0IGE9ZnVuY3Rpb24gX2V2YWxCaW5hcnlDb25zdChlLHQsbil7c3dpdGNoKGUpe2Nhc2Ugc3MuYWRkOnJldHVybiB0K247Y2FzZSBzcy5zdWI6cmV0dXJuIHQtbjtjYXNlIHNzLm11bDpyZXR1cm4gdCpuO2Nhc2Ugc3MuZGl2OnJldHVybiAwIT09bj90L246MDtjYXNlIHNzLmlkaXY6cmV0dXJuIDAhPT1uP01hdGgudHJ1bmModC9uKTowO2Nhc2Ugc3MubW9kOnJldHVybiAwIT09bj90LU1hdGgudHJ1bmModC9uKSpuOjA7Y2FzZSBzcy5leHA6e2NvbnN0IGU9dCoqbjtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUpP2U6dm9pZCAwfWNhc2Ugc3MuYXRhbjp7bGV0IGU9TWF0aC5hdGFuMih0LG4pKigxODAvTWF0aC5QSSk7ZTwwJiYoZSs9MzYwKTtyZXR1cm4gZX1jYXNlIHNzLmVxOnJldHVybiB0PT09bjtjYXNlIHNzLm5lOnJldHVybiB0IT09bjtjYXNlIHNzLmd0OnJldHVybiB0Pm47Y2FzZSBzcy5nZTpyZXR1cm4gdD49bjtjYXNlIHNzLmx0OnJldHVybiB0PG47Y2FzZSBzcy5sZTpyZXR1cm4gdDw9bjtjYXNlIHNzLmFuZDpyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0P3QmJm46dCZufDA7Y2FzZSBzcy5vcjpyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0P3R8fG46dHxufDA7Y2FzZSBzcy54b3I6cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD90IT09bjp0Xm58MDtjYXNlIHNzLmJpdHNoaWZ0OnJldHVybiBuPj0wP3Q8PG58MDp0Pj4tbnwwO2Nhc2Ugc3MubWluOnJldHVybiBNYXRoLm1pbih0LG4pO2Nhc2Ugc3MubWF4OnJldHVybiBNYXRoLm1heCh0LG4pO2RlZmF1bHQ6cmV0dXJufX0oZSxuLnZhbHVlLHQudmFsdWUpO2lmKHZvaWQgMCE9PWEpcmV0dXJuIG5ldyBQc0NvbnN0Tm9kZShhKX1pZihfbm9kZXNFcXVhbCh0LG4pKXN3aXRjaChlKXtjYXNlIHNzLnN1YjpyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKDApO2Nhc2Ugc3MueG9yOnJldHVybiBuZXcgUHNDb25zdE5vZGUodC52YWx1ZVR5cGUhPT1vcyYmMCk7Y2FzZSBzcy5hbmQ6Y2FzZSBzcy5vcjpjYXNlIHNzLm1pbjpjYXNlIHNzLm1heDpyZXR1cm4gdDtjYXNlIHNzLmVxOmNhc2Ugc3MuZ2U6Y2FzZSBzcy5sZTpyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKCEwKTtjYXNlIHNzLm5lOmNhc2Ugc3MuZ3Q6Y2FzZSBzcy5sdDpyZXR1cm4gbmV3IFBzQ29uc3ROb2RlKCExKX1pZih0LnR5cGU9PT1ncyl7Y29uc3QgYT10LnZhbHVlO3N3aXRjaChlKXtjYXNlIHNzLmFkZDpjYXNlIHNzLnN1YjppZigwPT09YSlyZXR1cm4gbjticmVhaztjYXNlIHNzLm11bDppZigxPT09YSlyZXR1cm4gbjtpZigwPT09YSlyZXR1cm4gdDtpZigtMT09PWEpcmV0dXJuIHRoaXMuX21ha2VVbmFyeShzcy5uZWcsbik7YnJlYWs7Y2FzZSBzcy5kaXY6aWYoMCE9PWEpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoc3MubXVsLG5ldyBQc0NvbnN0Tm9kZSgxL2EpLG4pO2JyZWFrO2Nhc2Ugc3MuaWRpdjppZigxPT09YSlyZXR1cm4gbjticmVhaztjYXNlIHNzLmV4cDppZigxPT09YSlyZXR1cm4gbjtpZigtMT09PWEpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoc3MuZGl2LG4sbmV3IFBzQ29uc3ROb2RlKDEpKTtpZiguNT09PWEpcmV0dXJuIHRoaXMuX21ha2VVbmFyeShzcy5zcXJ0LG4pO2lmKC4yNT09PWEpe2NvbnN0IGU9dGhpcy5fbWFrZVVuYXJ5KHNzLnNxcnQsbik7cmV0dXJuIHRoaXMuX21ha2VVbmFyeShzcy5zcXJ0LGUpfWlmKDI9PT1hKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNzLm11bCxuLG4pO2lmKDM9PT1hKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNzLm11bCx0aGlzLl9tYWtlQmluYXJ5KHNzLm11bCxuLG4pLG4pO2lmKDQ9PT1hKXtjb25zdCBlPXRoaXMuX21ha2VCaW5hcnkoc3MubXVsLG4sbik7cmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoc3MubXVsLGUsZSl9aWYoMD09PWEpcmV0dXJuIG5ldyBQc0NvbnN0Tm9kZSgxKTticmVhaztjYXNlIHNzLmFuZDppZighMD09PWEpcmV0dXJuIG47aWYoITE9PT1hKXJldHVybiB0O2JyZWFrO2Nhc2Ugc3Mub3I6aWYoITE9PT1hKXJldHVybiBuO2lmKCEwPT09YSlyZXR1cm4gdDticmVhaztjYXNlIHNzLm1pbjppZihuLnR5cGU9PT13cyYmbi5vcD09PXNzLm1heCYmbi5maXJzdC50eXBlPT09Z3MmJm4uZmlyc3QudmFsdWU+PWEpcmV0dXJuIHQ7YnJlYWs7Y2FzZSBzcy5tYXg6aWYobi50eXBlPT09d3MmJm4ub3A9PT1zcy5taW4mJm4uZmlyc3QudHlwZT09PWdzJiZuLmZpcnN0LnZhbHVlPD1hKXJldHVybiB0fX1pZihuLnR5cGU9PT1ncyl7Y29uc3QgYT1uLnZhbHVlO3N3aXRjaChlKXtjYXNlIHNzLmFkZDppZigwPT09YSlyZXR1cm4gdDticmVhaztjYXNlIHNzLnN1YjppZigwPT09YSlyZXR1cm4gdGhpcy5fbWFrZVVuYXJ5KHNzLm5lZyx0KTticmVhaztjYXNlIHNzLm11bDppZigxPT09YSlyZXR1cm4gdDtpZigwPT09YSlyZXR1cm4gbjtpZigtMT09PWEpcmV0dXJuIHRoaXMuX21ha2VVbmFyeShzcy5uZWcsdCk7YnJlYWs7Y2FzZSBzcy5hbmQ6aWYoITA9PT1hKXJldHVybiB0O2lmKCExPT09YSlyZXR1cm4gbjticmVhaztjYXNlIHNzLm9yOmlmKCExPT09YSlyZXR1cm4gdDtpZighMD09PWEpcmV0dXJuIG59fXJldHVybiBuZXcgUHNCaW5hcnlOb2RlKGUsdCxuLGZ1bmN0aW9uIF9iaW5hcnlWYWx1ZVR5cGUoZSx0LG4pe3N3aXRjaChlKXtjYXNlIHNzLmVxOmNhc2Ugc3MubmU6Y2FzZSBzcy5ndDpjYXNlIHNzLmdlOmNhc2Ugc3MubHQ6Y2FzZSBzcy5sZTpyZXR1cm4gb3M7Y2FzZSBzcy5hbmQ6Y2FzZSBzcy5vcjpjYXNlIHNzLnhvcjpyZXR1cm4gdD09PW4mJnQhPT1scz90OmxzO2RlZmF1bHQ6cmV0dXJuIGlzfX0oZSx0LnZhbHVlVHlwZSxuLnZhbHVlVHlwZSkpfV9tYWtlVW5hcnkoZSx0KXtpZih0LnR5cGU9PT1ncyl7Y29uc3Qgbj1mdW5jdGlvbiBfZXZhbFVuYXJ5Q29uc3QoZSx0KXtzd2l0Y2goZSl7Y2FzZSBzcy5hYnM6cmV0dXJuIE1hdGguYWJzKHQpO2Nhc2Ugc3MubmVnOnJldHVybi10O2Nhc2Ugc3MuY2VpbGluZzpyZXR1cm4gTWF0aC5jZWlsKHQpO2Nhc2Ugc3MuZmxvb3I6cmV0dXJuIE1hdGguZmxvb3IodCk7Y2FzZSBzcy5yb3VuZDpyZXR1cm4gTWF0aC5yb3VuZCh0KTtjYXNlIHNzLnRydW5jYXRlOnJldHVybiBNYXRoLnRydW5jKHQpO2Nhc2Ugc3Muc3FydDp7Y29uc3QgZT1NYXRoLnNxcnQodCk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMH1jYXNlIHNzLnNpbjpyZXR1cm4gTWF0aC5zaW4odCUzNjAqTWF0aC5QSS8xODApO2Nhc2Ugc3MuY29zOnJldHVybiBNYXRoLmNvcyh0JTM2MCpNYXRoLlBJLzE4MCk7Y2FzZSBzcy5sbjp7Y29uc3QgZT1NYXRoLmxvZyh0KTtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUpP2U6dm9pZCAwfWNhc2Ugc3MubG9nOntjb25zdCBlPU1hdGgubG9nMTAodCk7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlKT9lOnZvaWQgMH1jYXNlIHNzLmN2aTpyZXR1cm4gTWF0aC50cnVuYyh0KTtjYXNlIHNzLmN2cjpyZXR1cm4gdDtjYXNlIHNzLm5vdDpyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiB0PyF0On50O2RlZmF1bHQ6cmV0dXJufX0oZSx0LnZhbHVlKTtpZih2b2lkIDAhPT1uKXJldHVybiBuZXcgUHNDb25zdE5vZGUobil9aWYoZT09PXNzLm5vdCYmdC50eXBlPT09d3Mpe2NvbnN0IGU9UFNTdGFja1RvVHJlZS4jdmUuZ2V0KHQub3ApO2lmKHZvaWQgMCE9PWUpcmV0dXJuIG5ldyBQc0JpbmFyeU5vZGUoZSx0LmZpcnN0LHQuc2Vjb25kLG9zKX1pZihlPT09c3MubmVnJiZ0LnR5cGU9PT13cyYmdC5vcD09PXNzLnN1YilyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeShzcy5zdWIsdC5zZWNvbmQsdC5maXJzdCk7aWYodC50eXBlPT09YnMpe2lmKGU9PT1zcy5uZWcmJnQub3A9PT1zcy5uZWd8fGU9PT1zcy5ub3QmJnQub3A9PT1zcy5ub3QpcmV0dXJuIHQub3BlcmFuZDtpZihlPT09c3MuYWJzJiZ0Lm9wPT09c3MubmVnKXJldHVybiB0aGlzLl9tYWtlVW5hcnkoc3MuYWJzLHQub3BlcmFuZCk7aWYoUFNTdGFja1RvVHJlZS4jcWUuaGFzKGUpJiZlPT09dC5vcClyZXR1cm4gdH1yZXR1cm4gbmV3IFBzVW5hcnlOb2RlKGUsdCxmdW5jdGlvbiBfdW5hcnlWYWx1ZVR5cGUoZSx0KXtyZXR1cm4gZT09PXNzLm5vdD90OmlzfShlLHQudmFsdWVUeXBlKSl9X21ha2VUZXJuYXJ5KGUsdCxuKXtpZihlLnR5cGU9PT1ncylyZXR1cm4gZS52YWx1ZT90Om47aWYoX25vZGVzRXF1YWwodCxuKSlyZXR1cm4gdDtpZih0LnR5cGU9PT1ncyYmbi50eXBlPT09Z3Mpe2lmKCEwPT09dC52YWx1ZSYmITE9PT1uLnZhbHVlKXJldHVybiBlO2lmKCExPT09dC52YWx1ZSYmITA9PT1uLnZhbHVlKXJldHVybiB0aGlzLl9tYWtlVW5hcnkoc3Mubm90LGUpfWlmKGUudHlwZT09PXdzKXtjb25zdHtvcDphLGZpcnN0OnIsc2Vjb25kOnN9PWU7aWYoYT09PXNzLmd0fHxhPT09c3MuZ2Upe2lmKF9ub2Rlc0VxdWFsKHQscikmJl9ub2Rlc0VxdWFsKG4scykpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoc3MubWluLHIscyk7aWYoX25vZGVzRXF1YWwodCxzKSYmX25vZGVzRXF1YWwobixyKSlyZXR1cm4gdGhpcy5fbWFrZUJpbmFyeShzcy5tYXgscixzKX1lbHNlIGlmKGE9PT1zcy5sdHx8YT09PXNzLmxlKXtpZihfbm9kZXNFcXVhbCh0LHIpJiZfbm9kZXNFcXVhbChuLHMpKXJldHVybiB0aGlzLl9tYWtlQmluYXJ5KHNzLm1heCxyLHMpO2lmKF9ub2Rlc0VxdWFsKHQscykmJl9ub2Rlc0VxdWFsKG4scikpcmV0dXJuIHRoaXMuX21ha2VCaW5hcnkoc3MubWluLHIscyl9fXJldHVybiBuZXcgUHNUZXJuYXJ5Tm9kZShlLHQsbix0LnZhbHVlVHlwZT09PW4udmFsdWVUeXBlP3QudmFsdWVUeXBlOmxzKX19Y29uc3QgeXM9MCxxcz0xLHZzPTIsU3M9MyxBcz00LHhzPTUsQ3M9NixJcz03LEZzPTgsVHM9OSxPcz0xMCxScz0xMSxCcz0xMixEcz0xMyxIcz0xNCxNcz0xNSxOcz0xNixfcz0xNyxFcz0xOCx6cz0xOSxMcz0yMCxVcz0yMSxXcz0yMixYcz0yMyxLcz0yNCxHcz0yNSxWcz0yNiwkcz0yNyxZcz0yOCxKcz0yOSxRcz0zMCxacz0zMSxlaT0zMix0aT0zMyxuaT0zNCxhaT0zNSxyaT0zNixzaT0zNyxpaT0zOCxvaT0zOSxsaT00MCxmaT1NYXRoLlBJLzE4MCxjaT0xODAvTWF0aC5QSTtjbGFzcyBQc0pzQ29tcGlsZXJ7c3RhdGljI3hlPW5ldyBGbG9hdDY0QXJyYXkoNjQpO3N0YXRpYyNDZT1uZXcgRmxvYXQ2NEFycmF5KDY0KTtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubkluPWUubGVuZ3RoPj4xO3RoaXMubk91dD10Lmxlbmd0aD4+MTt0aGlzLnJhbmdlPXQ7dGhpcy5pcj1bXTt0aGlzLl90bXBNYXA9bmV3IE1hcDt0aGlzLl9uZXh0VG1wPTB9X2NvbXBpbGVOb2RlKGUpe2lmKGUuc2hhcmVkKXtjb25zdCB0PXRoaXMuX3RtcE1hcC5nZXQoZSk7aWYodm9pZCAwIT09dCl7dGhpcy5pci5wdXNoKGxpLHQpO3JldHVybiEwfWlmKCF0aGlzLl9jb21waWxlTm9kZUltcGwoZSkpcmV0dXJuITE7Y29uc3Qgbj10aGlzLl9uZXh0VG1wKys7dGhpcy5fdG1wTWFwLnNldChlLG4pO3RoaXMuaXIucHVzaChvaSxuKTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5fY29tcGlsZU5vZGVJbXBsKGUpfV9jb21waWxlTm9kZUltcGwoZSl7c3dpdGNoKGUudHlwZSl7Y2FzZSBkczp0aGlzLmlyLnB1c2goeXMsZS5pbmRleCk7cmV0dXJuITA7Y2FzZSBnczp7Y29uc3QgdD1lLnZhbHVlO3RoaXMuaXIucHVzaChxcywiYm9vbGVhbiI9PXR5cGVvZiB0P051bWJlcih0KTp0KTtyZXR1cm4hMH1jYXNlIGJzOnJldHVybiB0aGlzLl9jb21waWxlVW5hcnkoZSk7Y2FzZSB3czpyZXR1cm4gdGhpcy5fY29tcGlsZUJpbmFyeShlKTtjYXNlIGpzOnJldHVybiB0aGlzLl9jb21waWxlVGVybmFyeShlKTtkZWZhdWx0OnJldHVybiExfX1fY29tcGlsZVVuYXJ5KGUpe2NvbnN0e29wOnQsb3BlcmFuZDpuLHZhbHVlVHlwZTphfT1lO2lmKHQ9PT1zcy5jdnIpcmV0dXJuIHRoaXMuX2NvbXBpbGVOb2RlKG4pO2lmKCF0aGlzLl9jb21waWxlTm9kZShuKSlyZXR1cm4hMTtzd2l0Y2godCl7Y2FzZSBzcy5hYnM6dGhpcy5pci5wdXNoKHhzKTticmVhaztjYXNlIHNzLm5lZzp0aGlzLmlyLnB1c2goQ3MpO2JyZWFrO2Nhc2Ugc3MuY2VpbGluZzp0aGlzLmlyLnB1c2goSXMpO2JyZWFrO2Nhc2Ugc3MuZmxvb3I6dGhpcy5pci5wdXNoKEZzKTticmVhaztjYXNlIHNzLnJvdW5kOnRoaXMuaXIucHVzaChUcyk7YnJlYWs7Y2FzZSBzcy50cnVuY2F0ZTp0aGlzLmlyLnB1c2goT3MpO2JyZWFrO2Nhc2Ugc3Muc3FydDp0aGlzLmlyLnB1c2goRHMpO2JyZWFrO2Nhc2Ugc3Muc2luOnRoaXMuaXIucHVzaChIcyk7YnJlYWs7Y2FzZSBzcy5jb3M6dGhpcy5pci5wdXNoKE1zKTticmVhaztjYXNlIHNzLmxuOnRoaXMuaXIucHVzaChOcyk7YnJlYWs7Y2FzZSBzcy5sb2c6dGhpcy5pci5wdXNoKF9zKTticmVhaztjYXNlIHNzLmN2aTp0aGlzLmlyLnB1c2goRXMpO2JyZWFrO2Nhc2Ugc3Mubm90OmlmKGE9PT1vcyl0aGlzLmlyLnB1c2goUnMpO2Vsc2V7aWYoYSE9PWlzKXJldHVybiExO3RoaXMuaXIucHVzaChCcyl9YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4hMH1fY29tcGlsZUJpbmFyeShlKXtjb25zdHtvcDp0LGZpcnN0Om4sc2Vjb25kOmF9PWU7aWYodD09PXNzLmJpdHNoaWZ0KXtpZihuLnR5cGUhPT1nc3x8IU51bWJlci5pc0ludGVnZXIobi52YWx1ZSkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGEpKXJldHVybiExO3RoaXMuaXIucHVzaCh6cyxuLnZhbHVlKTtyZXR1cm4hMH1pZighdGhpcy5fY29tcGlsZU5vZGUoYSkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKG4pKXJldHVybiExO3N3aXRjaCh0KXtjYXNlIHNzLmFkZDp0aGlzLmlyLnB1c2goTHMpO2JyZWFrO2Nhc2Ugc3Muc3ViOnRoaXMuaXIucHVzaChVcyk7YnJlYWs7Y2FzZSBzcy5tdWw6dGhpcy5pci5wdXNoKFdzKTticmVhaztjYXNlIHNzLmRpdjp0aGlzLmlyLnB1c2goWHMpO2JyZWFrO2Nhc2Ugc3MuaWRpdjp0aGlzLmlyLnB1c2goS3MpO2JyZWFrO2Nhc2Ugc3MubW9kOnRoaXMuaXIucHVzaChHcyk7YnJlYWs7Y2FzZSBzcy5leHA6dGhpcy5pci5wdXNoKFZzKTticmVhaztjYXNlIHNzLmVxOnRoaXMuaXIucHVzaCgkcyk7YnJlYWs7Y2FzZSBzcy5uZTp0aGlzLmlyLnB1c2goWXMpO2JyZWFrO2Nhc2Ugc3MuZ3Q6dGhpcy5pci5wdXNoKEpzKTticmVhaztjYXNlIHNzLmdlOnRoaXMuaXIucHVzaChRcyk7YnJlYWs7Y2FzZSBzcy5sdDp0aGlzLmlyLnB1c2goWnMpO2JyZWFrO2Nhc2Ugc3MubGU6dGhpcy5pci5wdXNoKGVpKTticmVhaztjYXNlIHNzLmFuZDp0aGlzLmlyLnB1c2godGkpO2JyZWFrO2Nhc2Ugc3Mub3I6dGhpcy5pci5wdXNoKG5pKTticmVhaztjYXNlIHNzLnhvcjp0aGlzLmlyLnB1c2goYWkpO2JyZWFrO2Nhc2Ugc3MuYXRhbjp0aGlzLmlyLnB1c2gocmkpO2JyZWFrO2Nhc2Ugc3MubWluOnRoaXMuaXIucHVzaChzaSk7YnJlYWs7Y2FzZSBzcy5tYXg6dGhpcy5pci5wdXNoKGlpKTticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEwfV9jb21waWxlVGVybmFyeShlKXtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5jb25kKSlyZXR1cm4hMTt0aGlzLmlyLnB1c2goU3MsMCk7Y29uc3QgdD10aGlzLmlyLmxlbmd0aC0xO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLnRoZW4pKXJldHVybiExO3RoaXMuaXIucHVzaChBcywwKTtjb25zdCBuPXRoaXMuaXIubGVuZ3RoLTE7dGhpcy5pclt0XT10aGlzLmlyLmxlbmd0aDtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vdGhlcndpc2UpKXJldHVybiExO3RoaXMuaXJbbl09dGhpcy5pci5sZW5ndGg7cmV0dXJuITB9Y29tcGlsZShlKXtjb25zdCB0PShuZXcgUFNTdGFja1RvVHJlZSkuZXZhbHVhdGUoZSx0aGlzLm5Jbik7aWYoIXR8fHQubGVuZ3RoPHRoaXMubk91dClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MDtlPHRoaXMubk91dDtlKyspe2lmKCF0aGlzLl9jb21waWxlTm9kZSh0W2VdKSlyZXR1cm4gbnVsbDtjb25zdCBuPXRoaXMucmFuZ2VbMiplXSxhPXRoaXMucmFuZ2VbMiplKzFdO3RoaXMuaXIucHVzaCh2cyxlLG4sYSl9cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkodGhpcy5pcil9c3RhdGljIGV4ZWN1dGUoZSx0LG4sYSxyKXtsZXQgcz0wLGk9MDtjb25zdCBvPWUubGVuZ3RoLGw9dGhpcy4jeGUsZj10aGlzLiNDZTtmb3IoO3M8bzspc3dpdGNoKDB8ZVtzKytdKXtjYXNlIHlzOmxbaSsrXT10W24rKDB8ZVtzKytdKV07YnJlYWs7Y2FzZSBxczpsW2krK109ZVtzKytdO2JyZWFrO2Nhc2UgdnM6e2NvbnN0IHQ9MHxlW3MrK10sbj1lW3MrK10sbz1lW3MrK107YVtyK3RdPU1hdGhDbGFtcChsWy0taV0sbixvKTticmVha31jYXNlIFNzOntjb25zdCB0PWVbcysrXTswPT09bFstLWldJiYocz10KTticmVha31jYXNlIEFzOnM9ZVtzXTticmVhaztjYXNlIHhzOmxbaS0xXT1NYXRoLmFicyhsW2ktMV0pO2JyZWFrO2Nhc2UgQ3M6bFtpLTFdPS1sW2ktMV07YnJlYWs7Y2FzZSBJczpsW2ktMV09TWF0aC5jZWlsKGxbaS0xXSk7YnJlYWs7Y2FzZSBGczpsW2ktMV09TWF0aC5mbG9vcihsW2ktMV0pO2JyZWFrO2Nhc2UgVHM6bFtpLTFdPU1hdGguZmxvb3IobFtpLTFdKy41KTticmVhaztjYXNlIE9zOmxbaS0xXT1NYXRoLnRydW5jKGxbaS0xXSk7YnJlYWs7Y2FzZSBSczpsW2ktMV09MCE9PWxbaS0xXT8wOjE7YnJlYWs7Y2FzZSBCczpsW2ktMV09fmxbaS0xXTticmVhaztjYXNlIERzOmxbaS0xXT1NYXRoLnNxcnQobFtpLTFdKTticmVhaztjYXNlIEhzOmxbaS0xXT1NYXRoLnNpbihsW2ktMV0lMzYwKmZpKTticmVhaztjYXNlIE1zOmxbaS0xXT1NYXRoLmNvcyhsW2ktMV0lMzYwKmZpKTticmVhaztjYXNlIE5zOmxbaS0xXT1NYXRoLmxvZyhsW2ktMV0pO2JyZWFrO2Nhc2UgX3M6bFtpLTFdPU1hdGgubG9nMTAobFtpLTFdKTticmVhaztjYXNlIEVzOmxbaS0xXT0wfE1hdGgudHJ1bmMobFtpLTFdKTticmVhaztjYXNlIHpzOntjb25zdCB0PWVbcysrXSxuPTB8bFtpLTFdO2xbaS0xXT10PjA/bjw8dDp0PDA/bj4+LXQ6bjticmVha31jYXNlIExzOntjb25zdCBlPWxbLS1pXTtsW2ktMV0rPWU7YnJlYWt9Y2FzZSBVczp7Y29uc3QgZT1sWy0taV07bFtpLTFdLT1lO2JyZWFrfWNhc2UgV3M6e2NvbnN0IGU9bFstLWldO2xbaS0xXSo9ZTticmVha31jYXNlIFhzOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/bFtpLTFdL2U6MDticmVha31jYXNlIEtzOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/TWF0aC50cnVuYyhsW2ktMV0vZSk6MDticmVha31jYXNlIEdzOntjb25zdCBlPWxbLS1pXTtsW2ktMV09MCE9PWU/bFtpLTFdJWU6MDticmVha31jYXNlIFZzOntjb25zdCBlPWxbLS1pXTtsW2ktMV0qKj1lO2JyZWFrfWNhc2UgJHM6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV09PT1lPzE6MDticmVha31jYXNlIFlzOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdIT09ZT8xOjA7YnJlYWt9Y2FzZSBKczp7Y29uc3QgZT1sWy0taV07bFtpLTFdPWxbaS0xXT5lPzE6MDticmVha31jYXNlIFFzOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdPj1lPzE6MDticmVha31jYXNlIFpzOntjb25zdCBlPWxbLS1pXTtsW2ktMV09bFtpLTFdPGU/MTowO2JyZWFrfWNhc2UgZWk6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1sW2ktMV08PWU/MTowO2JyZWFrfWNhc2UgdGk6e2NvbnN0IGU9MHxsWy0taV07bFtpLTFdPSgwfGxbaS0xXSkmZTticmVha31jYXNlIG5pOntjb25zdCBlPTB8bFstLWldO2xbaS0xXT0wfGxbaS0xXXxlO2JyZWFrfWNhc2UgYWk6e2NvbnN0IGU9MHxsWy0taV07bFtpLTFdPSgwfGxbaS0xXSleZTticmVha31jYXNlIHJpOntjb25zdCBlPWxbLS1pXSx0PU1hdGguYXRhbjIobFtpLTFdLGUpKmNpO2xbaS0xXT10PDA/dCszNjA6dDticmVha31jYXNlIHNpOntjb25zdCBlPWxbLS1pXTtsW2ktMV09TWF0aC5taW4obFtpLTFdLGUpO2JyZWFrfWNhc2UgaWk6e2NvbnN0IGU9bFstLWldO2xbaS0xXT1NYXRoLm1heChsW2ktMV0sZSk7YnJlYWt9Y2FzZSBvaTpmWzB8ZVtzKytdXT1sW2ktMV07YnJlYWs7Y2FzZSBsaTpsW2krK109ZlswfGVbcysrXV19fX1jbGFzcyBQU1N0YWNrQmFzZWRJbnRlcnByZXRlcntzdGF0aWMjeGU9bmV3IEZsb2F0NjRBcnJheSgxMDApO3N0YXRpYyNJZT0wO3N0YXRpYyNGZShlKXt0aGlzLiNJZTx0aGlzLiN4ZS5sZW5ndGgmJih0aGlzLiN4ZVt0aGlzLiNJZSsrXT1lKX1zdGF0aWMjVGUoZSl7Y29uc3QgdD10aGlzLiN4ZTtzd2l0Y2goZSl7Y2FzZSBzcy50cnVlOnRoaXMuI0ZlKDEpO2JyZWFrO2Nhc2Ugc3MuZmFsc2U6dGhpcy4jRmUoMCk7YnJlYWs7Y2FzZSBzcy5hYnM6dFt0aGlzLiNJZS0xXT1NYXRoLmFicyh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHNzLm5lZzp0W3RoaXMuI0llLTFdPS10W3RoaXMuI0llLTFdO2JyZWFrO2Nhc2Ugc3MuY2VpbGluZzp0W3RoaXMuI0llLTFdPU1hdGguY2VpbCh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHNzLmZsb29yOnRbdGhpcy4jSWUtMV09TWF0aC5mbG9vcih0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHNzLnJvdW5kOnRbdGhpcy4jSWUtMV09TWF0aC5mbG9vcih0W3RoaXMuI0llLTFdKy41KTticmVhaztjYXNlIHNzLnRydW5jYXRlOnRbdGhpcy4jSWUtMV09TWF0aC50cnVuYyh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHNzLnNxcnQ6dFt0aGlzLiNJZS0xXT1NYXRoLnNxcnQodFt0aGlzLiNJZS0xXSk7YnJlYWs7Y2FzZSBzcy5zaW46dFt0aGlzLiNJZS0xXT1NYXRoLnNpbih0W3RoaXMuI0llLTFdJTM2MCpmaSk7YnJlYWs7Y2FzZSBzcy5jb3M6dFt0aGlzLiNJZS0xXT1NYXRoLmNvcyh0W3RoaXMuI0llLTFdJTM2MCpmaSk7YnJlYWs7Y2FzZSBzcy5sbjp0W3RoaXMuI0llLTFdPU1hdGgubG9nKHRbdGhpcy4jSWUtMV0pO2JyZWFrO2Nhc2Ugc3MubG9nOnRbdGhpcy4jSWUtMV09TWF0aC5sb2cxMCh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHNzLmN2aTp0W3RoaXMuI0llLTFdPTB8TWF0aC50cnVuYyh0W3RoaXMuI0llLTFdKTticmVhaztjYXNlIHNzLmN2cjpicmVhaztjYXNlIHNzLm5vdDp7Y29uc3QgZT10W3RoaXMuI0llLTFdO3RbdGhpcy4jSWUtMV09MD09PWV8fDE9PT1lPzEtZTp+ZTticmVha31jYXNlIHNzLmFkZDp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV0rPWU7YnJlYWt9Y2FzZSBzcy5zdWI6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdLT1lO2JyZWFrfWNhc2Ugc3MubXVsOntjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXSo9ZTticmVha31jYXNlIHNzLmRpdjp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV09MCE9PWU/dFt0aGlzLiNJZS0xXS9lOjA7YnJlYWt9Y2FzZSBzcy5pZGl2Ontjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT0wIT09ZT9NYXRoLnRydW5jKHRbdGhpcy4jSWUtMV0vZSk6MDticmVha31jYXNlIHNzLm1vZDp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV09MCE9PWU/dFt0aGlzLiNJZS0xXSVlOjA7YnJlYWt9Y2FzZSBzcy5leHA6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdKio9ZTticmVha31jYXNlIHNzLmF0YW46e2NvbnN0IGU9dFstLXRoaXMuI0llXSxuPU1hdGguYXRhbjIodFt0aGlzLiNJZS0xXSxlKSpjaTt0W3RoaXMuI0llLTFdPW48MD9uKzM2MDpuO2JyZWFrfWNhc2Ugc3MuZXE6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPXRbdGhpcy4jSWUtMV09PT1lPzE6MDticmVha31jYXNlIHNzLm5lOntjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT10W3RoaXMuI0llLTFdIT09ZT8xOjA7YnJlYWt9Y2FzZSBzcy5ndDp7Y29uc3QgZT10Wy0tdGhpcy4jSWVdO3RbdGhpcy4jSWUtMV09dFt0aGlzLiNJZS0xXT5lPzE6MDticmVha31jYXNlIHNzLmdlOntjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT10W3RoaXMuI0llLTFdPj1lPzE6MDticmVha31jYXNlIHNzLmx0Ontjb25zdCBlPXRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT10W3RoaXMuI0llLTFdPGU/MTowO2JyZWFrfWNhc2Ugc3MubGU6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPXRbdGhpcy4jSWUtMV08PWU/MTowO2JyZWFrfWNhc2Ugc3MuYW5kOntjb25zdCBlPTB8dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPSgwfHRbdGhpcy4jSWUtMV0pJmU7YnJlYWt9Y2FzZSBzcy5vcjp7Y29uc3QgZT0wfHRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT0wfHRbdGhpcy4jSWUtMV18ZTticmVha31jYXNlIHNzLnhvcjp7Y29uc3QgZT0wfHRbLS10aGlzLiNJZV07dFt0aGlzLiNJZS0xXT0oMHx0W3RoaXMuI0llLTFdKV5lO2JyZWFrfWNhc2Ugc3MuYml0c2hpZnQ6e2NvbnN0IGU9MHx0Wy0tdGhpcy4jSWVdLG49MHx0W3RoaXMuI0llLTFdO3RbdGhpcy4jSWUtMV09ZT4wP248PGU6bj4+LWU7YnJlYWt9Y2FzZSBzcy5taW46e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPU1hdGgubWluKHRbdGhpcy4jSWUtMV0sZSk7YnJlYWt9Y2FzZSBzcy5tYXg6e2NvbnN0IGU9dFstLXRoaXMuI0llXTt0W3RoaXMuI0llLTFdPU1hdGgubWF4KHRbdGhpcy4jSWUtMV0sZSk7YnJlYWt9Y2FzZSBzcy5kdXA6dGhpcy4jRmUodFt0aGlzLiNJZS0xXSk7YnJlYWs7Y2FzZSBzcy5leGNoOntjb25zdCBlPXRbLS10aGlzLiNJZV0sbj10Wy0tdGhpcy4jSWVdO3RoaXMuI0ZlKGUpO3RoaXMuI0ZlKG4pO2JyZWFrfWNhc2Ugc3MucG9wOnRoaXMuI0llLS07YnJlYWs7Y2FzZSBzcy5jb3B5Ontjb25zdCBlPU1hdGgudHJ1bmModFstLXRoaXMuI0llXSksbj10aGlzLiNJZS1lO2ZvcihsZXQgYT0wO2E8ZTthKyspdGhpcy4jRmUodFtuK2FdKTticmVha31jYXNlIHNzLmluZGV4Ontjb25zdCBlPU1hdGgudHJ1bmModFstLXRoaXMuI0llXSk7dGhpcy4jRmUodFt0aGlzLiNJZS0xLWVdKTticmVha31jYXNlIHNzLnJvbGw6e2NvbnN0IGU9TWF0aC50cnVuYyh0Wy0tdGhpcy4jSWVdKSxuPU1hdGgudHJ1bmModFstLXRoaXMuI0llXSk7aWYobj4xJiYwIT09ZSl7Y29uc3QgYT0oZSVuK24pJW47aWYoMCE9PWEpe2NvbnN0IGU9dGhpcy4jSWUtbixyPXQuc2xpY2UoZSx0aGlzLiNJZSk7Zm9yKGxldCBzPTA7czxuO3MrKyl0W2Urc109clsocy1hK24pJW5dfX1icmVha319fXN0YXRpYyNPZShlKXtmb3IoY29uc3QgdCBvZiBlKXN3aXRjaCh0LnR5cGUpe2Nhc2UgaHM6dGhpcy4jRmUodC52YWx1ZSk7YnJlYWs7Y2FzZSB1czp0aGlzLiNUZSh0Lm9wKTticmVhaztjYXNlIG1zOjAhPT10aGlzLiN4ZVstLXRoaXMuI0llXSYmdGhpcy4jT2UodC50aGVuLmluc3RydWN0aW9ucyk7YnJlYWs7Y2FzZSBwczowIT09dGhpcy4jeGVbLS10aGlzLiNJZV0/dGhpcy4jT2UodC50aGVuLmluc3RydWN0aW9ucyk6dGhpcy4jT2UodC5vdGhlcndpc2UuaW5zdHJ1Y3Rpb25zKX19c3RhdGljIGJ1aWxkKGUsdCxuKXtjb25zdCBhPXQubGVuZ3RoPj4xLHI9bi5sZW5ndGg+PjEse2luc3RydWN0aW9uczpzfT1lLmJvZHk7cmV0dXJuKGUsdCxpLG8pPT57dGhpcy4jSWU9MDtmb3IobGV0IG49MDtuPGE7bisrKXRoaXMuI0ZlKGVbdCtuXSk7dGhpcy4jT2Uocyk7Y29uc3QgbD10aGlzLiNJZS1yO2ZvcihsZXQgZT0wO2U8cjtlKyspe2NvbnN0IHQ9bCtlPj0wP3RoaXMuI3hlW2wrZV06MDtpW28rZV09TWF0aENsYW1wKG5bMiplKzFdLG5bMiplXSx0KX19fX1jb25zdCBoaT17aWY6NCxlbHNlOjUsZW5kOjExLHNlbGVjdDoyNyxjYWxsOjE2LGxvY2FsX2dldDozMixsb2NhbF9zZXQ6MzMsbG9jYWxfdGVlOjM0LGkzMl9jb25zdDo2NSxpMzJfZXF6OjY5LGkzMl9hbmQ6MTEzLGkzMl9vcjoxMTQsaTMyX3hvcjoxMTUsaTMyX3NobDoxMTYsaTMyX3Nocl9zOjExNyxpMzJfdHJ1bmNfZjY0X3M6MTcwLGY2NF9jb25zdDo2OCxmNjRfZXE6OTcsZjY0X25lOjk4LGY2NF9sdDo5OSxmNjRfZ3Q6MTAwLGY2NF9sZToxMDEsZjY0X2dlOjEwMixmNjRfYWJzOjE1MyxmNjRfbmVnOjE1NCxmNjRfY2VpbDoxNTUsZjY0X2Zsb29yOjE1NixmNjRfdHJ1bmM6MTU3LGY2NF9uZWFyZXN0OjE1OCxmNjRfc3FydDoxNTksZjY0X2FkZDoxNjAsZjY0X3N1YjoxNjEsZjY0X211bDoxNjIsZjY0X2RpdjoxNjMsZjY0X21pbjoxNjQsZjY0X21heDoxNjUsZjY0X2NvbnZlcnRfaTMyX3M6MTgzLGY2NF9zdG9yZTo1N30sdWk9MTI0LG1pPTEscGk9MixkaT0zLGdpPTUsYmk9Nyx3aT0xMDtmdW5jdGlvbiB1bnNpZ25lZExFQjEyOChlKXtjb25zdCB0PVtdO2Rve2xldCBuPTEyNyZlOzAhPT0oZT4+Pj03KSYmKG58PTEyOCk7dC5wdXNoKG4pfXdoaWxlKDAhPT1lKTtyZXR1cm4gdH1mdW5jdGlvbiBlbmNvZGVBU0NJSVN0cmluZyhlKXtyZXR1cm5bLi4udW5zaWduZWRMRUIxMjgoZS5sZW5ndGgpLC4uLkFycmF5LmZyb20oZSxlPT5lLmNoYXJDb2RlQXQoMCkpXX1mdW5jdGlvbiBzZWN0aW9uKGUsdCl7cmV0dXJuW2UsLi4udW5zaWduZWRMRUIxMjgodC5sZW5ndGgpLC4uLnRdfWZ1bmN0aW9uIHZlYyhlKXtjb25zdCB0PXVuc2lnbmVkTEVCMTI4KGUubGVuZ3RoKTtmb3IoY29uc3QgbiBvZiBlKWlmKCJudW1iZXIiIT10eXBlb2Ygbilmb3IoY29uc3QgZSBvZiBuKXQucHVzaChlKTtlbHNlIHQucHVzaChuKTtyZXR1cm4gdH1jb25zdCBqaT1bWyJzaW4iLCJNYXRoIiwic2luIixbdWldLFt1aV1dLFsiY29zIiwiTWF0aCIsImNvcyIsW3VpXSxbdWldXSxbImF0YW4yIiwiTWF0aCIsImF0YW4yIixbdWksdWldLFt1aV1dLFsibG9nIiwiTWF0aCIsImxvZyIsW3VpXSxbdWldXSxbImxvZzEwIiwiTWF0aCIsImxvZzEwIixbdWldLFt1aV1dLFsicG93IiwiTWF0aCIsInBvdyIsW3VpLHVpXSxbdWldXV0sa2k9e01hdGg6T2JqZWN0LmZyb21FbnRyaWVzKGppLm1hcCgoW2VdKT0+W2UsTWF0aFtlXV0pKX07Y2xhc3MgUHNXYXNtQ29tcGlsZXJ7c3RhdGljI1JlPSExO3N0YXRpYyNCZT1udWxsO3N0YXRpYyNEZT1udWxsO3N0YXRpYyNIZT0wO3N0YXRpYyNNZT0wO3N0YXRpYyNOZT1udWxsO3N0YXRpYyNQZT1udWxsO3N0YXRpYyNfZT1udWxsO3N0YXRpYyNFZT1udWxsO3N0YXRpYyN6ZT1udWxsO3N0YXRpYyNMZT1udWxsO3N0YXRpYyNVZT1udWxsO3N0YXRpYyNXZT1udWxsO3N0YXRpYyNTZSgpe3RoaXMuI0JlPW5ldyBNYXAoW1tzcy5lcSxoaS5mNjRfZXFdLFtzcy5uZSxoaS5mNjRfbmVdLFtzcy5sdCxoaS5mNjRfbHRdLFtzcy5sZSxoaS5mNjRfbGVdLFtzcy5ndCxoaS5mNjRfZ3RdLFtzcy5nZSxoaS5mNjRfZ2VdXSk7dGhpcy4jRGU9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MDtlPGppLmxlbmd0aDtlKyspdGhpcy4jRGVbamlbZV1bMF1dPWU7dGhpcy4jSGU9TWF0aC5QSS8xODA7dGhpcy4jTWU9MTgwL01hdGguUEk7dGhpcy4jTmU9amkubWFwKChbLCwsZSx0XSk9Pls5NiwuLi52ZWMoZSksLi4udmVjKHQpXSk7dGhpcy4jUGU9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbihwaSx2ZWMoamkubWFwKChbLGUsdF0sbik9PlsuLi5lbmNvZGVBU0NJSVN0cmluZyhlKSwuLi5lbmNvZGVBU0NJSVN0cmluZyh0KSwwLC4uLnVuc2lnbmVkTEVCMTI4KG4rMSldKSkpKTt0aGlzLiNfZT1uZXcgVWludDhBcnJheShzZWN0aW9uKGRpLHZlYyhbWzBdXSkpKTt0aGlzLiNFZT1uZXcgVWludDhBcnJheShzZWN0aW9uKGdpLHZlYyhbWzAsMV1dKSkpO3RoaXMuI3plPW5ldyBVaW50OEFycmF5KHNlY3Rpb24oYmksdmVjKFtbLi4uZW5jb2RlQVNDSUlTdHJpbmcoImZuIiksMCwuLi51bnNpZ25lZExFQjEyOChqaS5sZW5ndGgpXSxbLi4uZW5jb2RlQVNDSUlTdHJpbmcoIm1lbSIpLDIsMF1dKSkpO3RoaXMuI0xlPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMF0pO2NvbnN0IGU9bmV3IEFycmF5QnVmZmVyKDgpO3RoaXMuI1VlPW5ldyBEYXRhVmlldyhlKTt0aGlzLiNXZT1uZXcgVWludDhBcnJheShlKTt0aGlzLiNSZT0hMH1jb25zdHJ1Y3RvcihlLHQpe1BzV2FzbUNvbXBpbGVyLiNSZXx8UHNXYXNtQ29tcGlsZXIuI1NlKCk7dGhpcy5fbkluPWUubGVuZ3RoPj4xO3RoaXMuX25PdXQ9dC5sZW5ndGg+PjE7dGhpcy5fcmFuZ2U9dDt0aGlzLl9jb2RlPVtdO3RoaXMuX25leHRMb2NhbD10aGlzLl9uSW47dGhpcy5fZnJlZUxvY2Fscz1bXTt0aGlzLl9zaGFyZWRMb2NhbHM9bmV3IE1hcH1fYWxsb2NMb2NhbCgpe3JldHVybiB0aGlzLl9mcmVlTG9jYWxzLnBvcCgpPz90aGlzLl9uZXh0TG9jYWwrK31fcmVsZWFzZUxvY2FsKGUpe3RoaXMuX2ZyZWVMb2NhbHMucHVzaChlKX1fZW1pdFVMRUIxMjgoZSl7ZG97bGV0IHQ9MTI3JmU7MCE9PShlPj4+PTcpJiYodHw9MTI4KTt0aGlzLl9jb2RlLnB1c2godCl9d2hpbGUoMCE9PWUpfV9lbWl0U0xFQjEyOChlKXtmb3IoOzspe2NvbnN0IHQ9MTI3JmU7aWYoMD09PShlPj49NykmJiEoNjQmdCl8fC0xPT09ZSYmNjQmdCl7dGhpcy5fY29kZS5wdXNoKHQpO3JldHVybn10aGlzLl9jb2RlLnB1c2goMTI4fHQpfX1fZW1pdEY2NENvbnN0KGUpe3RoaXMuX2NvZGUucHVzaChoaS5mNjRfY29uc3QpO1BzV2FzbUNvbXBpbGVyLiNVZS5zZXRGbG9hdDY0KDAsZSwhMCk7Zm9yKGxldCBlPTA7ZTw4O2UrKyl0aGlzLl9jb2RlLnB1c2goUHNXYXNtQ29tcGlsZXIuI1dlW2VdKX1fZW1pdExvY2FsR2V0KGUpe3RoaXMuX2NvZGUucHVzaChoaS5sb2NhbF9nZXQpO3RoaXMuX2VtaXRVTEVCMTI4KGUpfV9lbWl0TG9jYWxTZXQoZSl7dGhpcy5fY29kZS5wdXNoKGhpLmxvY2FsX3NldCk7dGhpcy5fZW1pdFVMRUIxMjgoZSl9X2VtaXRMb2NhbFRlZShlKXt0aGlzLl9jb2RlLnB1c2goaGkubG9jYWxfdGVlKTt0aGlzLl9lbWl0VUxFQjEyOChlKX1fY29tcGlsZU5vZGUoZSl7aWYoZS5zaGFyZWQpe2NvbnN0IHQ9dGhpcy5fc2hhcmVkTG9jYWxzLmdldChlKTtpZih2b2lkIDAhPT10KXt0aGlzLl9lbWl0TG9jYWxHZXQodC5sb2NhbCk7MD09PS0tdC5yZW1haW5pbmcmJnRoaXMuX3JlbGVhc2VMb2NhbCh0LmxvY2FsKTtyZXR1cm4hMH1pZighdGhpcy5fY29tcGlsZU5vZGVJbXBsKGUpKXJldHVybiExO2NvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RoaXMuX3NoYXJlZExvY2Fscy5zZXQoZSx7bG9jYWw6bixyZW1haW5pbmc6ZS5zaGFyZWRDb3VudC0xfSk7dGhpcy5fZW1pdExvY2FsVGVlKG4pO3JldHVybiEwfXJldHVybiB0aGlzLl9jb21waWxlTm9kZUltcGwoZSl9X2NvbXBpbGVOb2RlSW1wbChlKXtzd2l0Y2goZS50eXBlKXtjYXNlIGRzOnRoaXMuX2VtaXRMb2NhbEdldChlLmluZGV4KTtyZXR1cm4hMDtjYXNlIGdzOntsZXQgdD1lLnZhbHVlOyJib29sZWFuIj09dHlwZW9mIHQmJih0PXQ/MTowKTt0aGlzLl9lbWl0RjY0Q29uc3QodCk7cmV0dXJuITB9Y2FzZSBiczpyZXR1cm4gdGhpcy5fY29tcGlsZVVuYXJ5Tm9kZShlKTtjYXNlIHdzOnJldHVybiB0aGlzLl9jb21waWxlQmluYXJ5Tm9kZShlKTtjYXNlIGpzOnJldHVybiB0aGlzLl9jb21waWxlVGVybmFyeU5vZGUoZSk7ZGVmYXVsdDpyZXR1cm4hMX19X2NvbXBpbGVTaW5Db3NOb2RlKGUpe2NvbnN0IHQ9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUoZS5vcGVyYW5kKSlyZXR1cm4hMTtjb25zdCBuPXRoaXMuX2NvZGU7dGhpcy5fZW1pdExvY2FsU2V0KHQpO3RoaXMuX2VtaXRMb2NhbEdldCh0KTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7dGhpcy5fZW1pdEY2NENvbnN0KDM2MCk7bi5wdXNoKGhpLmY2NF9kaXYsaGkuZjY0X3RydW5jKTt0aGlzLl9lbWl0RjY0Q29uc3QoMzYwKTtuLnB1c2goaGkuZjY0X211bCxoaS5mNjRfc3ViKTt0aGlzLl9lbWl0RjY0Q29uc3QoUHNXYXNtQ29tcGlsZXIuI0hlKTtuLnB1c2goaGkuZjY0X211bCxoaS5jYWxsKTt0aGlzLl9lbWl0VUxFQjEyOChQc1dhc21Db21waWxlci4jRGVbZS5vcD09PXNzLnNpbj8ic2luIjoiY29zIl0pO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKHQpfX1fY29tcGlsZVVuYXJ5Tm9kZShlKXtjb25zdCB0PXRoaXMuX2NvZGU7aWYoZS5vcD09PXNzLnNpbnx8ZS5vcD09PXNzLmNvcylyZXR1cm4gdGhpcy5fY29tcGlsZVNpbkNvc05vZGUoZSk7aWYoZS5vcD09PXNzLm5vdCl7aWYoZS52YWx1ZVR5cGU9PT1vcyl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUub3BlcmFuZCkpcmV0dXJuITE7dC5wdXNoKGhpLmkzMl9lcXosaGkuZjY0X2NvbnZlcnRfaTMyX3MpO3JldHVybiEwfWlmKGUudmFsdWVUeXBlPT09aXMpe2lmKCF0aGlzLl9jb21waWxlTm9kZShlLm9wZXJhbmQpKXJldHVybiExO3QucHVzaChoaS5pMzJfdHJ1bmNfZjY0X3MsaGkuaTMyX2NvbnN0LDEyNyxoaS5pMzJfeG9yLGhpLmY2NF9jb252ZXJ0X2kzMl9zKTtyZXR1cm4hMH1yZXR1cm4hMX1pZighdGhpcy5fY29tcGlsZU5vZGUoZS5vcGVyYW5kKSlyZXR1cm4hMTtzd2l0Y2goZS5vcCl7Y2FzZSBzcy5hYnM6dC5wdXNoKGhpLmY2NF9hYnMpO2JyZWFrO2Nhc2Ugc3MubmVnOnQucHVzaChoaS5mNjRfbmVnKTticmVhaztjYXNlIHNzLnNxcnQ6dC5wdXNoKGhpLmY2NF9zcXJ0KTticmVhaztjYXNlIHNzLmZsb29yOnQucHVzaChoaS5mNjRfZmxvb3IpO2JyZWFrO2Nhc2Ugc3MuY2VpbGluZzp0LnB1c2goaGkuZjY0X2NlaWwpO2JyZWFrO2Nhc2Ugc3Mucm91bmQ6dGhpcy5fZW1pdEY2NENvbnN0KC41KTt0LnB1c2goaGkuZjY0X2FkZCxoaS5mNjRfZmxvb3IpO2JyZWFrO2Nhc2Ugc3MudHJ1bmNhdGU6dC5wdXNoKGhpLmY2NF90cnVuYyk7YnJlYWs7Y2FzZSBzcy5jdmk6dC5wdXNoKGhpLmkzMl90cnVuY19mNjRfcyxoaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSBzcy5jdnI6YnJlYWs7Y2FzZSBzcy5sbjp0LnB1c2goaGkuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0RlLmxvZyk7YnJlYWs7Y2FzZSBzcy5sb2c6dC5wdXNoKGhpLmNhbGwpO3RoaXMuX2VtaXRVTEVCMTI4KFBzV2FzbUNvbXBpbGVyLiNEZS5sb2cxMCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1yZXR1cm4hMH1fY29tcGlsZVNhZmVEaXZOb2RlKGUsdCl7Y29uc3Qgbj10aGlzLl9hbGxvY0xvY2FsKCk7dHJ5e2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGUoZSkpcmV0dXJuITE7Y29uc3QgYT10aGlzLl9jb2RlO3RoaXMuX2VtaXRMb2NhbFRlZShuKTthLnB1c2goaGkuZjY0X2Rpdik7dGhpcy5fZW1pdEY2NENvbnN0KDApO3RoaXMuX2VtaXRMb2NhbEdldChuKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7YS5wdXNoKGhpLmY2NF9uZSxoaS5zZWxlY3QpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKG4pfX1fY29tcGlsZVNhZmVJZGl2Tm9kZShlLHQpe2NvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2NvbnN0IGE9dGhpcy5fY29kZTt0aGlzLl9lbWl0TG9jYWxUZWUobik7YS5wdXNoKGhpLmY2NF9kaXYsaGkuZjY0X3RydW5jKTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7dGhpcy5fZW1pdExvY2FsR2V0KG4pO3RoaXMuX2VtaXRGNjRDb25zdCgwKTthLnB1c2goaGkuZjY0X25lLGhpLnNlbGVjdCk7cmV0dXJuITB9ZmluYWxseXt0aGlzLl9yZWxlYXNlTG9jYWwobil9fV9jb21waWxlQml0c2hpZnROb2RlKGUsdCl7aWYoZS50eXBlIT09Z3N8fCFOdW1iZXIuaXNJbnRlZ2VyKGUudmFsdWUpKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTtjb25zdCBuPXRoaXMuX2NvZGU7bi5wdXNoKGhpLmkzMl90cnVuY19mNjRfcyk7Y29uc3QgYT1lLnZhbHVlO2lmKGE+MCl7bi5wdXNoKGhpLmkzMl9jb25zdCk7dGhpcy5fZW1pdFNMRUIxMjgoYSk7bi5wdXNoKGhpLmkzMl9zaGwpfWVsc2UgaWYoYTwwKXtuLnB1c2goaGkuaTMyX2NvbnN0KTt0aGlzLl9lbWl0U0xFQjEyOCgtYSk7bi5wdXNoKGhpLmkzMl9zaHJfcyl9bi5wdXNoKGhpLmY2NF9jb252ZXJ0X2kzMl9zKTtyZXR1cm4hMH1fY29tcGlsZU1vZE5vZGUoZSx0KXtpZihlLnR5cGU9PT1ncyYmMD09PWUudmFsdWUpe2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMTt0aGlzLl9jb2RlLnB1c2goaGkuZHJvcCk7dGhpcy5fZW1pdEY2NENvbnN0KDApO3JldHVybiEwfWNvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7dGhpcy5fZW1pdExvY2FsVGVlKG4pO2NvbnN0IGE9dGhpcy5fY29kZTtpZihlLnR5cGU9PT1ncyl7dGhpcy5fZW1pdExvY2FsR2V0KG4pO3RoaXMuX2VtaXRGNjRDb25zdChlLnZhbHVlKTthLnB1c2goaGkuZjY0X2RpdixoaS5mNjRfdHJ1bmMpO3RoaXMuX2VtaXRGNjRDb25zdChlLnZhbHVlKTthLnB1c2goaGkuZjY0X211bCxoaS5mNjRfc3ViKX1lbHNle2NvbnN0IHQ9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUoZSkpcmV0dXJuITE7dGhpcy5fZW1pdExvY2FsU2V0KHQpO3RoaXMuX2VtaXRMb2NhbEdldChuKTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7YS5wdXNoKGhpLmY2NF9kaXYsaGkuZjY0X3RydW5jKTt0aGlzLl9lbWl0TG9jYWxHZXQodCk7YS5wdXNoKGhpLmY2NF9tdWwsaGkuZjY0X3N1Yik7dGhpcy5fZW1pdEY2NENvbnN0KDApO3RoaXMuX2VtaXRMb2NhbEdldCh0KTt0aGlzLl9lbWl0RjY0Q29uc3QoMCk7YS5wdXNoKGhpLmY2NF9uZSxoaS5zZWxlY3QpfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKHQpfX1yZXR1cm4hMH1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbChuKX19X2NvbXBpbGVBdGFuTm9kZShlLHQpe2NvbnN0IG49dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO2NvbnN0IGE9dGhpcy5fY29kZTthLnB1c2goaGkuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0RlLmF0YW4yKTt0aGlzLl9lbWl0RjY0Q29uc3QoUHNXYXNtQ29tcGlsZXIuI01lKTthLnB1c2goaGkuZjY0X211bCk7dGhpcy5fZW1pdExvY2FsVGVlKG4pO3RoaXMuX2VtaXRGNjRDb25zdCgwKTthLnB1c2goaGkuZjY0X2x0LGhpLmlmLHVpKTt0aGlzLl9lbWl0TG9jYWxHZXQobik7dGhpcy5fZW1pdEY2NENvbnN0KDM2MCk7YS5wdXNoKGhpLmY2NF9hZGQsaGkuZWxzZSk7dGhpcy5fZW1pdExvY2FsR2V0KG4pO2EucHVzaChoaS5lbmQpO3JldHVybiEwfWZpbmFsbHl7dGhpcy5fcmVsZWFzZUxvY2FsKG4pfX1fY29tcGlsZUJpdHdpc2VOb2RlKGUsdCxuKXtpZighdGhpcy5fY29tcGlsZUJpdHdpc2VPcGVyYW5kSTMyKG4pKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlQml0d2lzZU9wZXJhbmRJMzIodCkpcmV0dXJuITE7Y29uc3QgYT10aGlzLl9jb2RlO3N3aXRjaChlKXtjYXNlIHNzLmFuZDphLnB1c2goaGkuaTMyX2FuZCk7YnJlYWs7Y2FzZSBzcy5vcjphLnB1c2goaGkuaTMyX29yKTticmVhaztjYXNlIHNzLnhvcjphLnB1c2goaGkuaTMyX3hvcik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1hLnB1c2goaGkuZjY0X2NvbnZlcnRfaTMyX3MpO3JldHVybiEwfV9jb21waWxlQml0d2lzZU9wZXJhbmRJMzIoZSl7aWYoZS52YWx1ZVR5cGU9PT1vcylyZXR1cm4gdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZSk7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChoaS5pMzJfdHJ1bmNfZjY0X3MpO3JldHVybiEwfV9jb21waWxlU3RhbmRhcmRCaW5hcnlOb2RlKGUsdCxuKXtpZih0IT09bnx8dC50eXBlPT09ZHN8fHQudHlwZT09PWdzfHx0LnNoYXJlZCl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKG4pKXJldHVybiExO2lmKCF0aGlzLl9jb21waWxlTm9kZSh0KSlyZXR1cm4hMX1lbHNle2NvbnN0IGU9dGhpcy5fYWxsb2NMb2NhbCgpO3RyeXtpZighdGhpcy5fY29tcGlsZU5vZGUodCkpcmV0dXJuITE7dGhpcy5fZW1pdExvY2FsVGVlKGUpO3RoaXMuX2VtaXRMb2NhbEdldChlKX1maW5hbGx5e3RoaXMuX3JlbGVhc2VMb2NhbChlKX19Y29uc3QgYT10aGlzLl9jb2RlO3N3aXRjaChlKXtjYXNlIHNzLmFkZDphLnB1c2goaGkuZjY0X2FkZCk7YnJlYWs7Y2FzZSBzcy5zdWI6YS5wdXNoKGhpLmY2NF9zdWIpO2JyZWFrO2Nhc2Ugc3MubXVsOmEucHVzaChoaS5mNjRfbXVsKTticmVhaztjYXNlIHNzLmV4cDphLnB1c2goaGkuY2FsbCk7dGhpcy5fZW1pdFVMRUIxMjgoUHNXYXNtQ29tcGlsZXIuI0RlLnBvdyk7YnJlYWs7Y2FzZSBzcy5lcTphLnB1c2goaGkuZjY0X2VxLGhpLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlIHNzLm5lOmEucHVzaChoaS5mNjRfbmUsaGkuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2Ugc3MubHQ6YS5wdXNoKGhpLmY2NF9sdCxoaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSBzcy5sZTphLnB1c2goaGkuZjY0X2xlLGhpLmY2NF9jb252ZXJ0X2kzMl9zKTticmVhaztjYXNlIHNzLmd0OmEucHVzaChoaS5mNjRfZ3QsaGkuZjY0X2NvbnZlcnRfaTMyX3MpO2JyZWFrO2Nhc2Ugc3MuZ2U6YS5wdXNoKGhpLmY2NF9nZSxoaS5mNjRfY29udmVydF9pMzJfcyk7YnJlYWs7Y2FzZSBzcy5taW46YS5wdXNoKGhpLmY2NF9taW4pO2JyZWFrO2Nhc2Ugc3MubWF4OmEucHVzaChoaS5mNjRfbWF4KTticmVhaztkZWZhdWx0OnJldHVybiExfXJldHVybiEwfV9jb21waWxlQmluYXJ5Tm9kZShlKXtjb25zdHtvcDp0LGZpcnN0Om4sc2Vjb25kOmF9PWU7cmV0dXJuIHQ9PT1zcy5iaXRzaGlmdD90aGlzLl9jb21waWxlQml0c2hpZnROb2RlKG4sYSk6dD09PXNzLmRpdj90aGlzLl9jb21waWxlU2FmZURpdk5vZGUobixhKTp0PT09c3MuaWRpdj90aGlzLl9jb21waWxlU2FmZUlkaXZOb2RlKG4sYSk6dD09PXNzLm1vZD90aGlzLl9jb21waWxlTW9kTm9kZShuLGEpOnQ9PT1zcy5hdGFuP3RoaXMuX2NvbXBpbGVBdGFuTm9kZShuLGEpOnQ9PT1zcy5hbmR8fHQ9PT1zcy5vcnx8dD09PXNzLnhvcj90aGlzLl9jb21waWxlQml0d2lzZU5vZGUodCxuLGEpOnRoaXMuX2NvbXBpbGVTdGFuZGFyZEJpbmFyeU5vZGUodCxuLGEpfV9jb21waWxlTm9kZUFzQm9vbEkzMihlKXtpZihlLnR5cGU9PT13cyl7Y29uc3QgdD1Qc1dhc21Db21waWxlci4jQmUuZ2V0KGUub3ApO2lmKHZvaWQgMCE9PXQpe2lmKCF0aGlzLl9jb21waWxlTm9kZShlLnNlY29uZCkpcmV0dXJuITE7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUuZmlyc3QpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaCh0KTtyZXR1cm4hMH1pZihlLnZhbHVlVHlwZT09PW9zJiYoZS5vcD09PXNzLmFuZHx8ZS5vcD09PXNzLm9yfHxlLm9wPT09c3MueG9yKSl7aWYoIXRoaXMuX2NvbXBpbGVOb2RlQXNCb29sSTMyKGUuc2Vjb25kKSlyZXR1cm4hMTtpZighdGhpcy5fY29tcGlsZU5vZGVBc0Jvb2xJMzIoZS5maXJzdCkpcmV0dXJuITE7c3dpdGNoKGUub3Ape2Nhc2Ugc3MuYW5kOnRoaXMuX2NvZGUucHVzaChoaS5pMzJfYW5kKTticmVhaztjYXNlIHNzLm9yOnRoaXMuX2NvZGUucHVzaChoaS5pMzJfb3IpO2JyZWFrO2Nhc2Ugc3MueG9yOnRoaXMuX2NvZGUucHVzaChoaS5pMzJfeG9yKX1yZXR1cm4hMH19aWYoZS50eXBlPT09YnMmJmUub3A9PT1zcy5ub3QmJmUudmFsdWVUeXBlPT09b3Mpe2lmKCF0aGlzLl9jb21waWxlTm9kZUFzQm9vbEkzMihlLm9wZXJhbmQpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChoaS5pMzJfZXF6KTtyZXR1cm4hMH1pZighdGhpcy5fY29tcGlsZU5vZGUoZSkpcmV0dXJuITE7aWYoZS52YWx1ZVR5cGU9PT1vcyl0aGlzLl9jb2RlLnB1c2goaGkuaTMyX3RydW5jX2Y2NF9zKTtlbHNle3RoaXMuX2VtaXRGNjRDb25zdCgwKTt0aGlzLl9jb2RlLnB1c2goaGkuZjY0X25lKX1yZXR1cm4hMH1fY29tcGlsZVRlcm5hcnlOb2RlKGUpe2lmKCF0aGlzLl9jb21waWxlTm9kZUFzQm9vbEkzMihlLmNvbmQpKXJldHVybiExO3RoaXMuX2NvZGUucHVzaChoaS5pZix1aSk7aWYoIXRoaXMuX2NvbXBpbGVOb2RlKGUudGhlbikpcmV0dXJuITE7dGhpcy5fY29kZS5wdXNoKGhpLmVsc2UpO2lmKCF0aGlzLl9jb21waWxlTm9kZShlLm90aGVyd2lzZSkpcmV0dXJuITE7dGhpcy5fY29kZS5wdXNoKGhpLmVuZCk7cmV0dXJuITB9Y29tcGlsZShlKXtjb25zdCB0PShuZXcgUFNTdGFja1RvVHJlZSkuZXZhbHVhdGUoZSx0aGlzLl9uSW4pO2lmKCF0fHx0Lmxlbmd0aDx0aGlzLl9uT3V0KXJldHVybiBudWxsO2NvbnN0IG49dGhpcy5fY29kZTtmb3IobGV0IGU9MDtlPHRoaXMuX25PdXQ7ZSsrKXtjb25zdCBhPXRoaXMuX3JhbmdlWzIqZV0scj10aGlzLl9yYW5nZVsyKmUrMV07bi5wdXNoKGhpLmkzMl9jb25zdCk7dGhpcy5fZW1pdFNMRUIxMjgoOCplKTtpZighdGhpcy5fY29tcGlsZU5vZGUodFtlXSkpcmV0dXJuIG51bGw7dGhpcy5fZW1pdEY2NENvbnN0KHIpO24ucHVzaChoaS5mNjRfbWluKTt0aGlzLl9lbWl0RjY0Q29uc3QoYSk7bi5wdXNoKGhpLmY2NF9tYXgsaGkuZjY0X3N0b3JlLDMsMCl9bi5wdXNoKGhpLmVuZCk7Y29uc3QgYT10aGlzLl9uSW4scj10aGlzLl9uZXh0TG9jYWwtYSxzPVs5NiwuLi52ZWMoQXJyYXkoYSkuZmlsbCh1aSkpLC4uLnZlYyhbXSldLGk9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbihtaSx2ZWMoW3MsLi4uUHNXYXNtQ29tcGlsZXIuI05lXSkpKSxvPXZlYyhyPjA/W1suLi51bnNpZ25lZExFQjEyOChyKSx1aV1dOltdKSxsPW8ubGVuZ3RoK24ubGVuZ3RoLGY9bmV3IFVpbnQ4QXJyYXkoc2VjdGlvbih3aSx2ZWMoW1suLi51bnNpZ25lZExFQjEyOChsKSwuLi5vLC4uLm5dXSkpKSxjPVBzV2FzbUNvbXBpbGVyLiNMZSxoPVBzV2FzbUNvbXBpbGVyLiNQZSx1PVBzV2FzbUNvbXBpbGVyLiNfZSxtPVBzV2FzbUNvbXBpbGVyLiNFZSxwPVBzV2FzbUNvbXBpbGVyLiN6ZSxkPWMubGVuZ3RoK2kubGVuZ3RoK2gubGVuZ3RoK3UubGVuZ3RoK20ubGVuZ3RoK3AubGVuZ3RoK2YubGVuZ3RoLGc9bmV3IFVpbnQ4QXJyYXkoZCk7bGV0IGI9MDtnLnNldChjLGIpO2IrPWMubGVuZ3RoO2cuc2V0KGksYik7Yis9aS5sZW5ndGg7Zy5zZXQoaCxiKTtiKz1oLmxlbmd0aDtnLnNldCh1LGIpO2IrPXUubGVuZ3RoO2cuc2V0KG0sYik7Yis9bS5sZW5ndGg7Zy5zZXQocCxiKTtiKz1wLmxlbmd0aDtnLnNldChmLGIpO3JldHVybiBnfX1mdW5jdGlvbiBidWlsZFBvc3RTY3JpcHRXYXNtRnVuY3Rpb24oZSx0LG4pe2NvbnN0IGE9ZnVuY3Rpb24gY29tcGlsZVBvc3RTY3JpcHRUb1dhc20oZSx0LG4pe3JldHVybiBuZXcgUHNXYXNtQ29tcGlsZXIodCxuKS5jb21waWxlKHBhcnNlUG9zdFNjcmlwdEZ1bmN0aW9uKGUpKX0oZSx0LG4pO2lmKCFhKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZnVuY3Rpb24gX21ha2VXcmFwcGVyKGUsdCxuKXtjb25zdHtmbjphLG1lbTpyfT1lLHM9bmV3IEZsb2F0NjRBcnJheShyLmJ1ZmZlciwwLG4pO2xldCBpO3N3aXRjaChuKXtjYXNlIDE6aT0oZSx0KT0+e2VbdF09c1swXX07YnJlYWs7Y2FzZSAyOmk9KGUsdCk9PntlW3RdPXNbMF07ZVt0KzFdPXNbMV19O2JyZWFrO2Nhc2UgMzppPShlLHQpPT57ZVt0XT1zWzBdO2VbdCsxXT1zWzFdO2VbdCsyXT1zWzJdfTticmVhaztjYXNlIDQ6aT0oZSx0KT0+e2VbdF09c1swXTtlW3QrMV09c1sxXTtlW3QrMl09c1syXTtlW3QrM109c1szXX07YnJlYWs7ZGVmYXVsdDppPShlLHQpPT57Zm9yKGxldCBhPTA7YTxuO2ErKyllW3QrYV09c1thXX19c3dpdGNoKHQpe2Nhc2UgMTpyZXR1cm4oZSx0LG4scik9PnthKGVbdF0pO2kobixyKX07Y2FzZSAyOnJldHVybihlLHQsbixyKT0+e2EoZVt0XSxlW3QrMV0pO2kobixyKX07Y2FzZSAzOnJldHVybihlLHQsbixyKT0+e2EoZVt0XSxlW3QrMV0sZVt0KzJdKTtpKG4scil9O2Nhc2UgNDpyZXR1cm4oZSx0LG4scik9PnthKGVbdF0sZVt0KzFdLGVbdCsyXSxlW3QrM10pO2kobixyKX07ZGVmYXVsdDp7Y29uc3QgZT1uZXcgRmxvYXQ2NEFycmF5KHQpO3JldHVybihuLHIscyxvKT0+e2ZvcihsZXQgYT0wO2E8dDthKyspZVthXT1uW3IrYV07YSguLi5lKTtpKHMsbyl9fX19KG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGEpLGtpKS5leHBvcnRzLHQubGVuZ3RoPj4xLG4ubGVuZ3RoPj4xKX1jYXRjaHtyZXR1cm4gbnVsbH19Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5fb25seVJlZnM9ITA9PT1lPy5vbmx5UmVmcztpZighdGhpcy5fb25seVJlZnMpe3RoaXMuX25hbWVSZWZNYXA9bmV3IE1hcDt0aGlzLl9pbWFnZU1hcD1uZXcgTWFwfXRoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmdW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxuKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLG4pe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxuKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsbil9fWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsbil7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsbil9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLG4pfX1jbGFzcyBMb2NhbEZ1bmN0aW9uQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsbil9fWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsbil7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxuKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsbil9fWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsbil9fWNsYXNzIFJlZ2lvbmFsSW1hZ2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxuKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxuKX19Y2xhc3MgR2xvYmFsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcignR2xvYmFsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LG4pfWNsZWFyKCl7dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1jbGFzcyBHbG9iYWxJbWFnZUNhY2hle3N0YXRpYyBOVU1fUEFHRVNfVEhSRVNIT0xEPTI7c3RhdGljIE1JTl9JTUFHRVNfVE9fQ0FDSEU9MTA7c3RhdGljIE1BWF9CWVRFX1NJWkU9NWU3OyNYZT1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldCNLZSgpe2xldCBlPTA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5faW1hZ2VDYWNoZSllKz10LmJ5dGVTaXplO3JldHVybiBlfWdldCNHZSgpe3JldHVybiEodGhpcy5faW1hZ2VDYWNoZS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTUlOX0lNQUdFU19UT19DQUNIRSkmJiEodGhpcy4jS2U8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2NvbnN0IG49dGhpcy5fcmVmQ2FjaGUuZ2V0T3JQdXRDb21wdXRlZChlLG1ha2VTZXQpO24uYWRkKHQpO3JldHVybiEobi5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLiNHZSl9YWRkRGVjb2RlRmFpbGVkKGUpe3RoaXMuI1hlLnB1dChlKX1oYXNEZWNvZGVGYWlsZWQoZSl7cmV0dXJuIHRoaXMuI1hlLmhhcyhlKX1hZGRCeXRlU2l6ZShlLHQpe2NvbnN0IG49dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7biYmKG4uYnl0ZVNpemV8fChuLmJ5dGVTaXplPXQpKX1nZXREYXRhKGUsdCl7Y29uc3Qgbj10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIW4pcmV0dXJuIG51bGw7aWYobi5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRClyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO24uYWRkKHQpO3JldHVybiBhfXNldERhdGEoZSx0KXtpZighdGhpcy5fcmVmQ2FjaGUuaGFzKGUpKXRocm93IG5ldyBFcnJvcignR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gZXhwZWN0ZWQgInNob3VsZENhY2hlIiB0byBoYXZlIGJlZW4gY2FsbGVkLicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHwodGhpcy4jR2U/d2FybigiR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gY2FjaGUgbGltaXQgcmVhY2hlZC4iKTp0aGlzLl9pbWFnZUNhY2hlLnB1dChlLHQpKX1jbGVhcihlPSExKXtpZighZSl7dGhpcy4jWGUuY2xlYXIoKTt0aGlzLl9yZWZDYWNoZS5jbGVhcigpfXRoaXMuX2ltYWdlQ2FjaGUuY2xlYXIoKX19Y29uc3QgeWk9MCxxaT0yLHZpPTMsU2k9NDtjbGFzcyBQREZGdW5jdGlvbkZhY3Rvcnl7c3RhdGljI0Y9ITA7c3RhdGljIHNldE9wdGlvbnMoe3VzZVdhc206ZX0pe3RoaXMuI0Y9ZX1jb25zdHJ1Y3Rvcih7eHJlZjplfSl7dGhpcy54cmVmPWV9Z2V0IHVzZVdhc20oKXtyZXR1cm4gUERGRnVuY3Rpb25GYWN0b3J5LiNGfWNyZWF0ZShlLHQ9ITEpe2xldCBuLGE7ZSBpbnN0YW5jZW9mIFJlZj9uPWU6ZSBpbnN0YW5jZW9mIERpY3Q/bj1lLm9iaklkOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYobj1lLmRpY3Q/Lm9iaklkKTtpZihuKXtjb25zdCBlPXRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5nZXRCeVJlZihuKTtpZihlKXJldHVybiBlfWNvbnN0IHI9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoQXJyYXkuaXNBcnJheShyKSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdQREZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlIC0gZXhwZWN0ZWQgInBhcnNlQXJyYXkiIGFyZ3VtZW50LicpO2E9UERGRnVuY3Rpb24ucGFyc2VBcnJheSh0aGlzLHIpfWVsc2UgYT1QREZGdW5jdGlvbi5wYXJzZSh0aGlzLHIpO24mJnRoaXMuX2xvY2FsRnVuY3Rpb25DYWNoZS5zZXQobnVsbCxuLGEpO3JldHVybiBhfWdldCBfbG9jYWxGdW5jdGlvbkNhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfbG9jYWxGdW5jdGlvbkNhY2hlIixuZXcgTG9jYWxGdW5jdGlvbkNhY2hlKX19ZnVuY3Rpb24gdG9OdW1iZXJBcnJheShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pc051bWJlckFycmF5KGUsbnVsbCk/ZTplLm1hcChlPT4rZSk6bnVsbH1jbGFzcyBQREZGdW5jdGlvbntzdGF0aWMgZ2V0U2FtcGxlQXJyYXkoZSx0LG4sYSl7bGV0IHI9dDtmb3IoY29uc3QgdCBvZiBlKXIqPXQ7Y29uc3Qgcz1uZXcgQXJyYXkocik7bGV0IGk9MCxvPTA7Y29uc3QgbD0xLygyKipuLTEpLGY9YS5nZXRCeXRlcygocipuKzcpLzgpO2xldCBjPTA7Zm9yKGxldCBlPTA7ZTxyO2UrKyl7Zm9yKDtpPG47KXtvPDw9ODtvfD1mW2MrK107aSs9OH1pLT1uO3NbZV09KG8+PmkpKmw7byY9KDE8PGkpLTF9cmV0dXJuIHN9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3Qgbj10LmRpY3R8fHQsYT1uLmdldCgiRnVuY3Rpb25UeXBlIik7c3dpdGNoKGEpe2Nhc2UgeWk6cmV0dXJuIHRoaXMuY29uc3RydWN0U2FtcGxlZChlLHQsbik7Y2FzZSBxaTpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RJbnRlcnBvbGF0ZWQoZSxuKTtjYXNlIHZpOnJldHVybiB0aGlzLmNvbnN0cnVjdFN0aWNoZWQoZSxuKTtjYXNlIFNpOnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LG4pfXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBmdW5jdGlvbiB0eXBlOiAke2F9YCl9c3RhdGljIHBhcnNlQXJyYXkoZSx0KXtjb25zdHt4cmVmOm59PWUsYT1bXTtmb3IoY29uc3QgciBvZiB0KWEucHVzaCh0aGlzLnBhcnNlKGUsbi5mZXRjaElmUmVmKHIpKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe2ZvcihsZXQgcz0wLGk9YS5sZW5ndGg7czxpO3MrKylhW3NdKGUsdCxuLHIrcyl9fXN0YXRpYyBjb25zdHJ1Y3RTYW1wbGVkKGUsdCxuKXtmdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsbixhLHIpe3JldHVybiBhKyhyLWEpLyhuLXQpKihlLXQpfWNvbnN0IGE9dG9OdW1iZXJBcnJheShuLmdldEFycmF5KCJEb21haW4iKSkscj10b051bWJlckFycmF5KG4uZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFhfHwhcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIGRvbWFpbiBvciByYW5nZSIpO2NvbnN0IHM9YS5sZW5ndGgvMixpPXIubGVuZ3RoLzIsbz10b051bWJlckFycmF5KG4uZ2V0QXJyYXkoIlNpemUiKSksbD1uLmdldCgiQml0c1BlclNhbXBsZSIpLGY9bi5nZXQoIk9yZGVyIil8fDE7MSE9PWYmJmluZm8oIk5vIHN1cHBvcnQgZm9yIGN1YmljIHNwbGluZSBpbnRlcnBvbGF0aW9uOiAiK2YpO2xldCBjPXRvTnVtYmVyQXJyYXkobi5nZXRBcnJheSgiRW5jb2RlIikpO2lmKCFjKXtjPVtdO2ZvcihsZXQgZT0wO2U8czsrK2UpYy5wdXNoKDAsb1tlXS0xKX1jb25zdCBoPXRvTnVtYmVyQXJyYXkobi5nZXRBcnJheSgiRGVjb2RlIikpfHxyLHU9dGhpcy5nZXRTYW1wbGVBcnJheShvLGksbCx0KTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U2FtcGxlZEZuKGUsdCxuLGwpe2NvbnN0IGY9MTw8cyxtPW5ldyBGbG9hdDY0QXJyYXkoZikuZmlsbCgxKSxwPW5ldyBVaW50MzJBcnJheShmKTtsZXQgZCxnLGI9aSx3PTE7Zm9yKGQ9MDtkPHM7KytkKXtjb25zdCBuPWFbMipkXSxyPWFbMipkKzFdO2xldCBzPWludGVycG9sYXRlKE1hdGhDbGFtcChlW3QrZF0sbixyKSxuLHIsY1syKmRdLGNbMipkKzFdKTtjb25zdCBpPW9bZF07cz1NYXRoQ2xhbXAocywwLGktMSk7Y29uc3QgbD1zPGktMT9NYXRoLmZsb29yKHMpOnMtMSxoPWwrMS1zLHU9cy1sLGo9bCpiLGs9aitiO2ZvcihnPTA7ZzxmO2crKylpZihnJncpe21bZ10qPXU7cFtnXSs9a31lbHNle21bZ10qPWg7cFtnXSs9an1iKj1pO3c8PD0xfWZvcihnPTA7ZzxpOysrZyl7bGV0IGU9MDtmb3IoZD0wO2Q8ZjtkKyspZSs9dVtwW2RdK2ddKm1bZF07ZT1pbnRlcnBvbGF0ZShlLDAsMSxoWzIqZ10saFsyKmcrMV0pO25bbCtnXT1NYXRoQ2xhbXAoZSxyWzIqZ10sclsyKmcrMV0pfX19c3RhdGljIGNvbnN0cnVjdEludGVycG9sYXRlZChlLHQpe2NvbnN0IG49dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMCIpKXx8WzBdLGE9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMSIpKXx8WzFdLHI9dC5nZXQoIk4iKSxzPVtdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0OysrZSlzLnB1c2goYVtlXS1uW2VdKTtjb25zdCBpPXMubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGbihlLHQsYSxvKXtjb25zdCBsPTE9PT1yP2VbdF06ZVt0XSoqcjtmb3IobGV0IGU9MDtlPGk7KytlKWFbbytlXT1uW2VdK2wqc1tlXX19c3RhdGljIGNvbnN0cnVjdFN0aWNoZWQoZSx0KXtjb25zdCBuPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRG9tYWluIikpO2lmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIik7aWYoMSE9PW4ubGVuZ3RoLzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3R7eHJlZjphfT1lLHI9W107Zm9yKGNvbnN0IG4gb2YgdC5nZXQoIkZ1bmN0aW9ucyIpKXIucHVzaCh0aGlzLnBhcnNlKGUsYS5mZXRjaElmUmVmKG4pKSk7Y29uc3Qgcz10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkJvdW5kcyIpKSxpPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRW5jb2RlIikpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxhLGwpe2NvbnN0IGY9TWF0aENsYW1wKGVbdF0sblswXSxuWzFdKSxjPXMubGVuZ3RoO2xldCBoO2ZvcihoPTA7aDxjJiYhKGY8c1toXSk7KytoKTtjb25zdCB1PWg+MD9zW2gtMV06blswXSxtPWg8Yz9zW2hdOm5bMV0scD1pWzIqaF0sZD1pWzIqaCsxXTtvWzBdPXU9PT1tP3A6cCsoZi11KSooZC1wKS8obS11KTtyW2hdKG8sMCxhLGwpfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdChlLHQsbil7Y29uc3QgYT10b051bWJlckFycmF5KG4uZ2V0QXJyYXkoIkRvbWFpbiIpKSxyPXRvTnVtYmVyQXJyYXkobi5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4uIik7aWYoIXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyByYW5nZS4iKTtjb25zdCBzPXQuZ2V0U3RyaW5nKCk7dHJ5e2lmKGUudXNlV2FzbSl7Y29uc3QgZT1idWlsZFBvc3RTY3JpcHRXYXNtRnVuY3Rpb24ocyxhLHIpO2lmKGUpcmV0dXJuIGV9fWNhdGNoe313YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBQb3N0U2NyaXB0IGZ1bmN0aW9uIHRvIHdhc20sIGZhbGxpbmcgYmFjayB0byBKUyIpO3JldHVybiBmdW5jdGlvbiBidWlsZFBvc3RTY3JpcHRKc0Z1bmN0aW9uKGUsdCxuLGE9ITEpe2NvbnN0IHI9cGFyc2VQb3N0U2NyaXB0RnVuY3Rpb24oZSkscz0hYSYmbmV3IFBzSnNDb21waWxlcih0LG4pLmNvbXBpbGUocik7cmV0dXJuIHM/KGUsdCxuLGEpPT57UHNKc0NvbXBpbGVyLmV4ZWN1dGUocyxlLHQsbixhKX06UFNTdGFja0Jhc2VkSW50ZXJwcmV0ZXIuYnVpbGQocix0LG4pfShzLGEscil9fWZ1bmN0aW9uIGlzUERGRnVuY3Rpb24oZSl7bGV0IHQ7aWYoZSBpbnN0YW5jZW9mIERpY3QpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpcmV0dXJuITE7dD1lLmRpY3R9cmV0dXJuIHQuaGFzKCJGdW5jdGlvblR5cGUiKX1mdW5jdGlvbiB0ZXh0U2lua1dyYXBwZXIoZSl7Y29uc3QgdD1lP251bGw6UHJvbWlzZS5yZXNvbHZlKCk7cmV0dXJue2VucXVldWVJbnZva2VkOiExLGVucXVldWUodCxuKXt0aGlzLmVucXVldWVJbnZva2VkPSEwO2U/LmVucXVldWUodCxuKX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIGU/LmRlc2lyZWRTaXplPz8xMDB9LGdldCByZWFkeSgpe3JldHVybiBlPy5yZWFkeT8/dH19fWZ1bmN0aW9uIF9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxuLGEpe2lmKCsrbj4xMCl7d2FybigiVmlzaWJpbGl0eSBleHByZXNzaW9uIGlzIHRvbyBkZWVwbHkgbmVzdGVkIik7cmV0dXJufWNvbnN0IHI9dC5sZW5ndGgscz1lLmZldGNoSWZSZWYodFswXSk7aWYoIShyPDIpJiZzIGluc3RhbmNlb2YgTmFtZSl7c3dpdGNoKHMubmFtZSl7Y2FzZSJBbmQiOmNhc2UiT3IiOmNhc2UiTm90IjphLnB1c2gocy5uYW1lKTticmVhaztkZWZhdWx0Ondhcm4oYEludmFsaWQgb3BlcmF0b3IgJHtzLm5hbWV9IGluIHZpc2liaWxpdHkgZXhwcmVzc2lvbmApO3JldHVybn1mb3IobGV0IHM9MTtzPHI7cysrKXtjb25zdCByPXRbc10saT1lLmZldGNoSWZSZWYocik7aWYoQXJyYXkuaXNBcnJheShpKSl7Y29uc3QgdD1bXTthLnB1c2godCk7X3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSxpLG4sdCl9ZWxzZSByIGluc3RhbmNlb2YgUmVmJiZhLnB1c2goci50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWZ1bmN0aW9uIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCxuKXtsZXQgYTtpZih0IGluc3RhbmNlb2YgTmFtZSl7YT1uLmdldCgiUHJvcGVydGllcyIpLmdldCh0Lm5hbWUpfWVsc2V7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2E9dH1jb25zdCByPWEuZ2V0KCJUeXBlIik/Lm5hbWU7aWYoIk9DRyI9PT1yKXJldHVybnt0eXBlOnIsaWQ6YS5vYmpJZH07aWYoIk9DTUQiPT09cil7Y29uc3QgdD1hLmdldCgiVkUiKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBuPVtdO19wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCwwLG4pO2lmKG4ubGVuZ3RoPjApcmV0dXJue3R5cGU6Ik9DTUQiLGV4cHJlc3Npb246bn19Y29uc3Qgbj1hLmdldCgiT0NHcyIpO2lmKEFycmF5LmlzQXJyYXkobil8fG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPVtdO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKGNvbnN0IHQgb2YgbillLnB1c2godC50b1N0cmluZygpKTtlbHNlIGUucHVzaChuLm9iaklkKTtjb25zdCB0PWEuZ2V0KCJQIik7cmV0dXJue3R5cGU6cixpZHM6ZSxwb2xpY3k6dCBpbnN0YW5jZW9mIE5hbWU/dC5uYW1lOm51bGwsZXhwcmVzc2lvbjpudWxsfX1pZihuIGluc3RhbmNlb2YgUmVmKXJldHVybnt0eXBlOnIsaWQ6bi50b1N0cmluZygpfX1yZXR1cm4gbnVsbH1jb25zdCBBaT1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0seGk9WyJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJPTiIsIk9OIiwiQUwiLCJFVCIsIkVUIiwiQUwiLCJDUyIsIkFMIiwiT04iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCIiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkVUIiwiQU4iLCJBTiIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIl07ZnVuY3Rpb24gaXNPZGQoZSl7cmV0dXJuISEoMSZlKX1mdW5jdGlvbiBpc0V2ZW4oZSl7cmV0dXJuISgxJmUpfWZ1bmN0aW9uIGZpbmRVbmVxdWFsKGUsdCxuKXtsZXQgYSxyO2ZvcihhPXQscj1lLmxlbmd0aDthPHI7KythKWlmKGVbYV0hPT1uKXJldHVybiBhO3JldHVybiBhfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LG4pe2ZvcihsZXQgYT10LHI9bi0xO2E8cjsrK2EsLS1yKXtjb25zdCB0PWVbYV07ZVthXT1lW3JdO2Vbcl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LG49ITEpe2xldCBhPSJsdHIiO24/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCBDaT1bXSxJaT1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxuPSExKXtsZXQgYT0hMDtjb25zdCByPWUubGVuZ3RoO2lmKDA9PT1yfHxuKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsbik7Q2kubGVuZ3RoPXI7SWkubGVuZ3RoPXI7bGV0IHMsaSxvPTA7Zm9yKHM9MDtzPHI7KytzKXtDaVtzXT1lLmNoYXJBdChzKTtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtsZXQgbj0iTCI7aWYodDw9MjU1KW49QWlbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KW49IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7bj14aVsyNTUmdF07bnx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKG49IkFMIik7IlIiIT09biYmIkFMIiE9PW4mJiJBTiIhPT1ufHxvKys7SWlbc109bn1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9yPC4zJiZyPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgbD1bXTtmb3Iocz0wO3M8cjsrK3MpbFtzXT10O2NvbnN0IGY9aXNPZGQodCk/IlIiOiJMIixjPWYsaD1jO2xldCB1LG09Yztmb3Iocz0wO3M8cjsrK3MpIk5TTSI9PT1JaVtzXT9JaVtzXT1tOm09SWlbc107bT1jO2ZvcihzPTA7czxyOysrcyl7dT1JaVtzXTsiRU4iPT09dT9JaVtzXT0iQUwiPT09bT8iQU4iOiJFTiI6IlIiIT09dSYmIkwiIT09dSYmIkFMIiE9PXV8fChtPXUpfWZvcihzPTA7czxyOysrcyl7dT1JaVtzXTsiQUwiPT09dSYmKElpW3NdPSJSIil9Zm9yKHM9MTtzPHItMTsrK3MpeyJFUyI9PT1JaVtzXSYmIkVOIj09PUlpW3MtMV0mJiJFTiI9PT1JaVtzKzFdJiYoSWlbc109IkVOIik7IkNTIiE9PUlpW3NdfHwiRU4iIT09SWlbcy0xXSYmIkFOIiE9PUlpW3MtMV18fElpW3MrMV0hPT1JaVtzLTFdfHwoSWlbc109SWlbcy0xXSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJFTiI9PT1JaVtzXSl7Zm9yKGxldCBlPXMtMTtlPj0wJiYiRVQiPT09SWlbZV07LS1lKUlpW2VdPSJFTiI7Zm9yKGxldCBlPXMrMTtlPHImJiJFVCI9PT1JaVtlXTsrK2UpSWlbZV09IkVOIn1mb3Iocz0wO3M8cjsrK3Mpe3U9SWlbc107IldTIiE9PXUmJiJFUyIhPT11JiYiRVQiIT09dSYmIkNTIiE9PXV8fChJaVtzXT0iT04iKX1tPWM7Zm9yKHM9MDtzPHI7KytzKXt1PUlpW3NdOyJFTiI9PT11P0lpW3NdPSJMIj09PW0/IkwiOiJFTiI6IlIiIT09dSYmIkwiIT09dXx8KG09dSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJPTiI9PT1JaVtzXSl7Y29uc3QgZT1maW5kVW5lcXVhbChJaSxzKzEsIk9OIik7bGV0IHQ9Yztmb3IobGV0IGU9cy0xO2U+PTA7ZS0tKXtjb25zdCBuPUlpW2VdO2lmKCJMIj09PW4pe3Q9IkwiO2JyZWFrfWlmKCJSIj09PW58fCJFTiI9PT1ufHwiQU4iPT09bil7dD0iUiI7YnJlYWt9fWxldCBuPWg7Zm9yKGxldCB0PWU7dDxyO3QrKyl7Y29uc3QgZT1JaVt0XTtpZigiTCI9PT1lKXtuPSJMIjticmVha31pZigiUiI9PT1lfHwiRU4iPT09ZXx8IkFOIj09PWUpe249IlIiO2JyZWFrfX10PT09biYmSWkuZmlsbCh0LHMsZSk7cz1lLTF9Zm9yKHM9MDtzPHI7KytzKSJPTiI9PT1JaVtzXSYmKElpW3NdPWYpO2ZvcihzPTA7czxyOysrcyl7dT1JaVtzXTtpc0V2ZW4obFtzXSk/IlIiPT09dT9sW3NdKz0xOiJBTiIhPT11JiYiRU4iIT09dXx8KGxbc10rPTIpOiJMIiE9PXUmJiJBTiIhPT11JiYiRU4iIT09dXx8KGxbc10rPTEpfWxldCBwLGQ9LTEsZz05OTtmb3Iocz0wLGk9bC5sZW5ndGg7czxpOysrcyl7cD1sW3NdO2Q8cCYmKGQ9cCk7Zz5wJiZpc09kZChwKSYmKGc9cCl9Zm9yKHA9ZDtwPj1nOy0tcCl7bGV0IGU9LTE7Zm9yKHM9MCxpPWwubGVuZ3RoO3M8aTsrK3MpaWYobFtzXTxwKXtpZihlPj0wKXtyZXZlcnNlVmFsdWVzKENpLGUscyk7ZT0tMX19ZWxzZSBlPDAmJihlPXMpO2U+PTAmJnJldmVyc2VWYWx1ZXMoQ2ksZSxsLmxlbmd0aCl9Zm9yKHM9MCxpPUNpLmxlbmd0aDtzPGk7KytzKXtjb25zdCBlPUNpW3NdOyI8IiE9PWUmJiI+IiE9PWV8fChDaVtzXT0iIil9cmV0dXJuIGNyZWF0ZUJpZGlUZXh0KENpLmpvaW4oIiIpLGEpfWNvbnN0IEZpPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCJ9LFRpPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6IjUwMCJ9LE9pPXtzdHlsZToibm9ybWFsIix3ZWlnaHQ6ImJvbGQifSxSaT17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJub3JtYWwifSxCaT17c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiJib2xkIn0sRGk9bmV3IE1hcChbWyJUaW1lcy1Sb21hbiIse2xvY2FsOlsiVGltZXMgTmV3IFJvbWFuIiwiVGltZXMtUm9tYW4iLCJUaW1lcyIsIkxpYmVyYXRpb24gU2VyaWYiLCJOaW1idXMgUm9tYW4iLCJOaW1idXMgUm9tYW4gTCIsIlRpbm9zIiwiVGhvcm5kYWxlIiwiVGVYIEd5cmUgVGVybWVzIiwiRnJlZVNlcmlmIiwiTGludXggTGliZXJ0aW5lIE8iLCJMaWJlcnRpbnVzIFNlcmlmIiwiUFQgQXN0cmEgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOkZpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOk9pLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6UmksdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6QmksdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOkZpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6T2ksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOlJpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOkJpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTpGaSx1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOk9pLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6UmksdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6QmksdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTpGaSxmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6T2ksZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpSaSxmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpCaSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTpGaSxmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOk9pLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOlJpLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpCaSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpGaX1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiw4vDjsOMw6UiLHtsb2NhbDpbIlNpbVN1biIsIlNpbVN1biBSZWd1bGFyIiwiTlNpbVN1biJdLHN0eWxlOkZpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIsK6w5rDjMOlIix7bG9jYWw6WyJTaW1IZWkiLCJTaW1IZWkgUmVndWxhciJdLHN0eWxlOkZpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiwr/CrMOMw6UiLHtsb2NhbDpbIkthaVRpIiwiU2ltS2FpIiwiU2ltS2FpIFJlZ3VsYXIiXSxzdHlsZTpGaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIsK3w4LDi8OOIix7bG9jYWw6WyJGYW5nU29uZyIsIlNpbUZhbmciLCJTaW1GYW5nIFJlZ3VsYXIiXSxzdHlsZTpGaSx1bHRpbWF0ZToic2VyaWYifV0sWyLCv8Ksw4zDpV9HQjIzMTIiLHthbGlhczoiwr/CrMOMw6UifV0sWyLCt8OCw4vDjl9HQjIzMTIiLHthbGlhczoiwrfDgsOLw44ifV0sWyLDgcKlw4rDqSIse2xvY2FsOlsiU2ltTGkiLCJTaW1MaSBSZWd1bGFyIl0sc3R5bGU6RmksdWx0aW1hdGU6InNlcmlmIn1dLFsiw5DDgsOLw44iLHthbGlhczoiw4vDjsOMw6UifV0sWyJIZWlzZWlNaW4tVzMiLHtsb2NhbDpbIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwiSGlyYWdpbm8gTWluY2hvIFBybyIsIll1IE1pbmNobyIsIll1TWluY2hvIiwiU291cmNlIEhhbiBTZXJpZiBKUCIsIk5vdG8gU2VyaWYgSlAiLCJOb3RvIFNlcmlmIENKSyBKUCIsIklQQWV4TWluY2hvIiwiSVBBTWluY2hvIiwiVGFrYW8gTWluY2hvIiwiTVMgTWluY2hvIiwiTVMgUE1pbmNobyJdLHN0eWxlOkZpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIkhlaXNlaUtha3VHby1XNSIse2xvY2FsOlsiSGlyYWdpbm8gS2FrdSBHb3RoaWMgUHJvTiIsIkhpcmFnaW5vIEtha3UgR290aGljIFBybyIsIkhpcmFnaW5vIFNhbnMiLCJZdSBHb3RoaWMiLCJZdUdvdGhpYyIsIlNvdXJjZSBIYW4gU2FucyBKUCIsIk5vdG8gU2FucyBKUCIsIk5vdG8gU2FucyBDSksgSlAiLCJJUEFleEdvdGhpYyIsIklQQUdvdGhpYyIsIlRha2FvIEdvdGhpYyIsIk1laXJ5byIsIk1TIEdvdGhpYyIsIk1TIFBHb3RoaWMiXSxzdHlsZTpUaSx1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlaXNlaU1pbi1XMy1BY3JvIix7YWxpYXM6IkhlaXNlaU1pbi1XMyJ9XSxbIkhlaXNlaUtha3VHby1XNS1BY3JvIix7YWxpYXM6IkhlaXNlaUtha3VHby1XNSJ9XSxbIktvek1pblByby1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaU1pbi1XMyJ9XSxbIktvek1pblByb1ZJLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpTWluLVczIn1dLFsiS296TWluUHI2Ti1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaU1pbi1XMyJ9XSxbIktvekdvUHJvLVJlZ3VsYXIiLHthbGlhczoiSGVpc2VpS2FrdUdvLVc1In1dLFsiS296R29Qcm9WSS1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaUtha3VHby1XNSJ9XSxbIktvekdvUHI2Ti1SZWd1bGFyIix7YWxpYXM6IkhlaXNlaUtha3VHby1XNSJ9XSxbIlNUU29uZy1MaWdodCIse2xvY2FsOlsiU1RTb25nIiwiU29uZ3RpIFNDIiwiU291cmNlIEhhbiBTZXJpZiBTQyIsIlNvdXJjZSBIYW4gU2VyaWYgQ04iLCJOb3RvIFNlcmlmIFNDIiwiTm90byBTZXJpZiBDSksgU0MiLCJBUiBQTCBVTWluZyBDTiIsIlNpbVN1biIsIk5TaW1TdW4iXSxzdHlsZTpGaSx1bHRpbWF0ZToic2VyaWYifV0sWyJTVEhlaXRpLVJlZ3VsYXIiLHtsb2NhbDpbIlNUSGVpdGkiLCJIZWl0aSBTQyIsIlBpbmdGYW5nIFNDIiwiU291cmNlIEhhbiBTYW5zIFNDIiwiU291cmNlIEhhbiBTYW5zIENOIiwiTm90byBTYW5zIFNDIiwiTm90byBTYW5zIENKSyBTQyIsIk1pY3Jvc29mdCBZYUhlaSIsIlNpbUhlaSIsIldlblF1YW5ZaSBaZW4gSGVpIl0sc3R5bGU6RmksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJTVFNvbmdTdGQtTGlnaHQiLHthbGlhczoiU1RTb25nLUxpZ2h0In1dLFsiQWRvYmVTb25nU3RkLUxpZ2h0Iix7YWxpYXM6IlNUU29uZy1MaWdodCJ9XSxbIkFkb2JlSGVpdGlTdGQtUmVndWxhciIse2FsaWFzOiJTVEhlaXRpLVJlZ3VsYXIifV0sWyJBZG9iZUthaXRpU3RkLVJlZ3VsYXIiLHthbGlhczoiwr/CrMOMw6UifV0sWyJBZG9iZUZhbmdzb25nU3RkLVJlZ3VsYXIiLHthbGlhczoiwrfDgsOLw44ifV0sWyJNU3VuZy1MaWdodCIse2xvY2FsOlsiU29uZ3RpIFRDIiwiTGlTb25nIFBybyIsIlNvdXJjZSBIYW4gU2VyaWYgVEMiLCJTb3VyY2UgSGFuIFNlcmlmIFRXIiwiTm90byBTZXJpZiBUQyIsIk5vdG8gU2VyaWYgQ0pLIFRDIiwiQVIgUEwgVU1pbmcgVFciLCJQTWluZ0xpVSIsIk1pbmdMaVUiLCJNaW5nTGlVX0hLU0NTIl0sc3R5bGU6RmksdWx0aW1hdGU6InNlcmlmIn1dLFsiTUhlaS1NZWRpdW0iLHtsb2NhbDpbIkhlaXRpIFRDIiwiU1RIZWl0aSIsIlNvdXJjZSBIYW4gU2FucyBUQyIsIlNvdXJjZSBIYW4gU2FucyBUVyIsIk5vdG8gU2FucyBUQyIsIk5vdG8gU2FucyBDSksgVEMiLCJQaW5nRmFuZyBUQyIsIk1pY3Jvc29mdCBKaGVuZ0hlaSJdLHN0eWxlOlRpLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiTVN1bmdTdGQtTGlnaHQiLHthbGlhczoiTVN1bmctTGlnaHQifV0sWyJBZG9iZU1pbmdTdGQtTGlnaHQiLHthbGlhczoiTVN1bmctTGlnaHQifV0sWyJIWVNNeWVvbmdKby1NZWRpdW0iLHtsb2NhbDpbIkFwcGxlTXl1bmdqbyIsIlNvdXJjZSBIYW4gU2VyaWYgS1IiLCJOb3RvIFNlcmlmIEtSIiwiTm90byBTZXJpZiBDSksgS1IiLCJOYW51bSBNeWVvbmdqbyIsIkJhdGFuZyJdLHN0eWxlOlRpLHVsdGltYXRlOiJzZXJpZiJ9XSxbIkhZR29UaGljLU1lZGl1bSIse2xvY2FsOlsiQXBwbGUgU0QgR290aGljIE5lbyIsIkFwcGxlR290aGljIiwiU291cmNlIEhhbiBTYW5zIEtSIiwiTm90byBTYW5zIEtSIiwiTm90byBTYW5zIENKSyBLUiIsIk5hbnVtIEdvdGhpYyIsIk1hbGd1biBHb3RoaWMiLCJEb3R1bSIsIkd1bGltIl0sc3R5bGU6VGksdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIWVNNeWVvbmdKb1N0ZC1NZWRpdW0iLHthbGlhczoiSFlTTXllb25nSm8tTWVkaXVtIn1dLFsiQWRvYmVNeXVuZ2pvU3RkLU1lZGl1bSIse2FsaWFzOiJIWVNNeWVvbmdKby1NZWRpdW0ifV0sWyJIWUdvVGhpYy1Cb2xkIix7YWxpYXM6IkhZR29UaGljLU1lZGl1bSIsc3R5bGU6T2l9XSxbIkFkb2JlR290aGljU3RkLUJvbGQiLHthbGlhczoiSFlHb1RoaWMtTWVkaXVtIixzdHlsZTpPaX1dXSksSGk9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoZT0+IXQuaGFzKGUudG9Mb3dlckNhc2UoKSkpLmpvaW4oIiAiKX1mdW5jdGlvbiBnZW5lcmF0ZUZvbnQoe2FsaWFzOmUsbG9jYWw6dCxwYXRoOm4sZmFsbGJhY2s6YSxzdHlsZTpyLHVsdGltYXRlOnN9LGksbyxsPSEwLGY9ITAsYz0iIil7Y29uc3QgaD17c3R5bGU6bnVsbCx1bHRpbWF0ZTpudWxsfTtpZih0KXtjb25zdCBlPWM/YCAke2N9YDoiIjtmb3IoY29uc3QgbiBvZiB0KWkucHVzaChgbG9jYWwoJHtufSR7ZX0pYCl9aWYoZSl7Y29uc3QgdD1EaS5nZXQoZSkscz1jfHxmdW5jdGlvbiBnZXRTdHlsZVRvQXBwZW5kKGUpe3N3aXRjaChlKXtjYXNlIE9pOnJldHVybiJCb2xkIjtjYXNlIFJpOnJldHVybiJJdGFsaWMiO2Nhc2UgQmk6cmV0dXJuIkJvbGQgSXRhbGljIjtkZWZhdWx0OmlmKCJib2xkIj09PWU/LndlaWdodClyZXR1cm4iQm9sZCI7aWYoIml0YWxpYyI9PT1lPy5zdHlsZSlyZXR1cm4iSXRhbGljIn1yZXR1cm4iIn0ocik7T2JqZWN0LmFzc2lnbihoLGdlbmVyYXRlRm9udCh0LGksbyxsJiYhYSxmJiYhbixzKSl9ciYmKGguc3R5bGU9cik7cyYmKGgudWx0aW1hdGU9cyk7aWYobCYmYSl7Y29uc3QgZT1EaS5nZXQoYSkse3VsdGltYXRlOnR9PWdlbmVyYXRlRm9udChlLGksbyxsLGYmJiFuLGMpO2gudWx0aW1hdGV8fD10fWYmJm4mJm8mJmkucHVzaChgdXJsKCR7b30ke259KWApO3JldHVybiBofWZ1bmN0aW9uIGdldEZvbnRTdWJzdGl0dXRpb24oZSx0LG4sYSxyLHMpe2lmKGEuc3RhcnRzV2l0aCgiSW52YWxpZFBERmpzRm9udF8iKSlyZXR1cm4gbnVsbDsiVHJ1ZVR5cGUiIT09cyYmIlR5cGUxIiE9PXN8fCEvXltBLVpdezZ9XCsvLnRlc3QoYSl8fChhPWEuc2xpY2UoNykpO2NvbnN0IGk9YT1ub3JtYWxpemVGb250TmFtZShhKTtsZXQgbz1lLmdldChpKTtpZihvKXJldHVybiBvO2xldCBsPURpLmdldChhKTtpZighbClmb3IoY29uc3RbZSx0XW9mIEhpKWlmKGEuc3RhcnRzV2l0aChlKSl7YT1gJHt0fSR7YS5zdWJzdHJpbmcoZS5sZW5ndGgpfWA7bD1EaS5nZXQoYSk7YnJlYWt9bGV0IGY9ITE7aWYoIWwpe2w9RGkuZ2V0KHIpO2Y9ITB9Y29uc3QgYz1gJHt0LmdldERvY0lkKCl9X3Mke3QuY3JlYXRlRm9udElkKCl9YDtpZighbCl7aWYoIXZhbGlkYXRlRm9udE5hbWUoYSkpe3dhcm4oYENhbm5vdCBzdWJzdGl0dXRlIHRoZSBmb250IGJlY2F1c2Ugb2YgaXRzIG5hbWU6ICR7YX1gKTtlLnNldChpLG51bGwpO3JldHVybiBudWxsfWNvbnN0IHQ9L2JvbGQvaS50ZXN0KGEpLG49L29ibGlxdWV8aXRhbGljL2kudGVzdChhKSxyPXQmJm4mJkJpfHx0JiZPaXx8biYmUml8fEZpO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7Y31gLGd1ZXNzRmFsbGJhY2s6ITAsbG9hZGVkTmFtZTpjLGJhc2VGb250TmFtZTphLHNyYzpgbG9jYWwoJHthfSlgLHN0eWxlOnJ9O2Uuc2V0KGksbyk7cmV0dXJuIG99Y29uc3QgaD1bXTtmJiZ2YWxpZGF0ZUZvbnROYW1lKGEpJiZoLnB1c2goYGxvY2FsKCR7YX0pYCk7Y29uc3R7c3R5bGU6dSx1bHRpbWF0ZTptfT1nZW5lcmF0ZUZvbnQobCxoLG4pLHA9bnVsbD09PW0sZD1wPyIiOmAsJHttfWA7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKGEpfSIsJHtjfSR7ZH1gLGd1ZXNzRmFsbGJhY2s6cCxsb2FkZWROYW1lOmMsYmFzZUZvbnROYW1lOmEsc3JjOmguam9pbigiLCIpLHN0eWxlOnV9O2Uuc2V0KGksbyk7cmV0dXJuIG99Y29uc3QgTWk9MzI4NTM3NzUyMCxOaT00Mjk0OTAxNzYwLFBpPTY1NTM1O2NsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6TWk7dGhpcy5oMj1lPzQyOTQ5NjcyOTUmZTpNaX11cGRhdGUoZSl7bGV0IHQsbjtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Q9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCk7bj0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoYSk7aWYocjw9MjU1KXRbbisrXT1yO2Vsc2V7dFtuKytdPXI+Pj44O3RbbisrXT0yNTUmcn19fWVsc2V7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGF0YSBmb3JtYXQsIG11c3QgYmUgYSBzdHJpbmcgb3IgVHlwZWRBcnJheS4iKTt0PWUuc2xpY2UoKTtuPXQuYnl0ZUxlbmd0aH1jb25zdCBhPW4+PjIscj1uLTQqYSxzPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLGEpO2xldCBpPTAsbz0wLGw9dGhpcy5oMSxmPXRoaXMuaDI7Y29uc3QgYz0zNDMyOTE4MzUzLGg9NDYxODQ1OTA3LHU9MTE2MDEsbT0xMzcxNTtmb3IobGV0IGU9MDtlPGE7ZSsrKWlmKDEmZSl7aT1zW2VdO2k9aSpjJk5pfGkqdSZQaTtpPWk8PDE1fGk+Pj4xNztpPWkqaCZOaXxpKm0mUGk7bF49aTtsPWw8PDEzfGw+Pj4xOTtsPTUqbCszODY0MjkyMTk2fWVsc2V7bz1zW2VdO289bypjJk5pfG8qdSZQaTtvPW88PDE1fG8+Pj4xNztvPW8qaCZOaXxvKm0mUGk7Zl49bztmPWY8PDEzfGY+Pj4xOTtmPTUqZiszODY0MjkyMTk2fWk9MDtzd2l0Y2gocil7Y2FzZSAzOmlePXRbNCphKzJdPDwxNjtjYXNlIDI6aV49dFs0KmErMV08PDg7Y2FzZSAxOmlePXRbNCphXTtpPWkqYyZOaXxpKnUmUGk7aT1pPDwxNXxpPj4+MTc7aT1pKmgmTml8aSptJlBpOzEmYT9sXj1pOmZePWl9dGhpcy5oMT1sO3RoaXMuaDI9Zn1oZXhkaWdlc3QoKXtsZXQgZT10aGlzLmgxLHQ9dGhpcy5oMjtlXj10Pj4+MTtlPTM5ODE4MDY3OTcqZSZOaXwzNjA0NSplJlBpO3Q9NDI4MzU0MzUxMSp0Jk5pfCgyOTUwMTYzNzk3Kih0PDwxNnxlPj4+MTYpJk5pKT4+PjE2O2VePXQ+Pj4xO2U9NDQ0OTg0NDAzKmUmTml8NjA0OTkqZSZQaTt0PTMzMDE4ODIzNjYqdCZOaXwoMzEyMDQzNzg5MyoodDw8MTZ8ZT4+PjE2KSZOaSk+Pj4xNjtlXj10Pj4+MTtyZXR1cm4oZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKHQ+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX1jbGFzcyBQREZJbWFnZXtjb25zdHJ1Y3Rvcih7eHJlZjplLHJlczp0LGltYWdlOm4saXNJbmxpbmU6YT0hMSxzbWFzazpyPW51bGwsbWFzazpzPW51bGwsaXNNYXNrOmk9ITEscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pe3RoaXMuaW1hZ2U9bjtjb25zdCBjPW4uZGljdCxoPWMuZ2V0KCJGIiwiRmlsdGVyIik7bGV0IHU7aWYoaCBpbnN0YW5jZW9mIE5hbWUpdT1oLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KGgpKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihoWzBdKTt0IGluc3RhbmNlb2YgTmFtZSYmKHU9dC5uYW1lKX1zd2l0Y2godSl7Y2FzZSJKUFhEZWNvZGUiOih7d2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsY29tcG9uZW50c0NvdW50Om4ubnVtQ29tcHMsYml0c1BlckNvbXBvbmVudDpuLmJpdHNQZXJDb21wb25lbnR9PUpweEltYWdlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKG4uc3RyZWFtKSk7bi5zdHJlYW0ucmVzZXQoKTtjb25zdCBlPUltYWdlUmVzaXplci5nZXRSZWR1Y2VQb3dlckZvckpQWChuLndpZHRoLG4uaGVpZ2h0LG4ubnVtQ29tcHMpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpjLmdldCgiU01hc2tJbkRhdGEiKT49MSxyZWR1Y2VQb3dlcjplfTtpZihlKXtjb25zdCB0PTIqKmU7bi53aWR0aD1NYXRoLmNlaWwobi53aWR0aC90KTtuLmhlaWdodD1NYXRoLmNlaWwobi5oZWlnaHQvdCl9YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6bi5iaXRzUGVyQ29tcG9uZW50PTE7bi5udW1Db21wcz0xfWxldCBtPWMuZ2V0KCJXIiwiV2lkdGgiKSxwPWMuZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihuLndpZHRoKSYmbi53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKG4uaGVpZ2h0KSYmbi5oZWlnaHQ+MCYmKG4ud2lkdGghPT1tfHxuLmhlaWdodCE9PXApKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO209bi53aWR0aDtwPW4uaGVpZ2h0fWVsc2V7Y29uc3QgZT0ibnVtYmVyIj09dHlwZW9mIG0mJm0+MCx0PSJudW1iZXIiPT10eXBlb2YgcCYmcD4wO2lmKCFlfHwhdCl7aWYoIW4uZmFsbGJhY2tEaW1zKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHttfSBvciBoZWlnaHQ6ICR7cH1gKTt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIHBhcmVudCBpbWFnZSwgZm9yIFNNYXNrL01hc2sgZGF0YS4iKTtlfHwobT1uLmZhbGxiYWNrRGltcy53aWR0aCk7dHx8KHA9bi5mYWxsYmFja0RpbXMuaGVpZ2h0KX19dGhpcy53aWR0aD1tO3RoaXMuaGVpZ2h0PXA7dGhpcy5pbnRlcnBvbGF0ZT1jLmdldCgiSSIsIkludGVycG9sYXRlIik7dGhpcy5pbWFnZU1hc2s9Yy5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExO3RoaXMubWF0dGU9Yy5nZXQoIk1hdHRlIil8fCExO2xldCBkPW4uYml0c1BlckNvbXBvbmVudDtpZighZCl7ZD1jLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpO2lmKCFkKXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTtkPTF9fXRoaXMuYnBjPWQ7aWYodGhpcy5pbWFnZU1hc2spdGhpcy5udW1Db21wcz0xO2Vsc2V7bGV0IHI9Yy5nZXRSYXcoIkNTIil8fGMuZ2V0UmF3KCJDb2xvclNwYWNlIik7Y29uc3Qgcz0hIXI7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucz8uc21hc2tJbkRhdGEmJjI9PT1jLmdldCgiU01hc2tJbkRhdGEiKSl7dGhpcy5qcHhQcmVtdWx0aXBsaWVkPSEwO2lmKHRoaXMubWF0dGUpe2NvbnN0IG49Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczpzP3I6TmFtZS5nZXQoIkRldmljZVJHQiIpLHhyZWY6ZSxyZXNvdXJjZXM6YT90Om51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmwsbG9jYWxDb2xvclNwYWNlQ2FjaGU6Zn0pO3RoaXMucHJlYmxlbmRNYXR0ZT1uLmdldFJnYih0aGlzLm1hdHRlLDApfX1pZihzKXRoaXMuanB4RGVjb2Rlck9wdGlvbnM/LnNtYXNrSW5EYXRhJiYocj1OYW1lLmdldCgiRGV2aWNlUkdCQSIpKTtlbHNlIGlmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpcj1OYW1lLmdldCgiRGV2aWNlUkdCQSIpO2Vsc2Ugc3dpdGNoKG4ubnVtQ29tcHMpe2Nhc2UgMTpyPU5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOnI9TmFtZS5nZXQoIkRldmljZVJHQiIpO2JyZWFrO2Nhc2UgNDpyPU5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEltYWdlcyB3aXRoICR7bi5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfXRoaXMuY29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOnIseHJlZjplLHJlc291cmNlczphP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bCxsb2NhbENvbG9yU3BhY2VDYWNoZTpmfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPXM/dGhpcy5udW1Db21wczowO3RoaXMuanB4RGVjb2Rlck9wdGlvbnMuaXNJbmRleGVkQ29sb3JtYXA9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlLm5hbWV9fXRoaXMuZGVjb2RlPWMuZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTt0aGlzLm5lZWRzRGVjb2RlPSExO2lmKHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSxkKXx8aSYmIUNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDxkKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdO3RoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZT8ubmFtZTtmb3IobGV0IG49MCxhPTA7bjx0aGlzLmRlY29kZS5sZW5ndGg7bis9MiwrK2Epe2NvbnN0IHI9dGhpcy5kZWNvZGVbbl0scz10aGlzLmRlY29kZVtuKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW2FdPXQ/KHMtcikvZTpzLXI7dGhpcy5kZWNvZGVBZGRlbmRzW2FdPXQ/cjplKnJ9fWlmKHIpe3IuZmFsbGJhY2tEaW1zPz89e3dpZHRoOm0saGVpZ2h0OnB9O3RoaXMuc21hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6cixpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KX1lbHNlIGlmKHMpaWYocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2lmKHMuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIikpe3MuZmFsbGJhY2tEaW1zPz89e3dpZHRoOm0saGVpZ2h0OnB9O3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpzLGlzSW5saW5lOmEsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmZ9KX1lbHNlIHdhcm4oIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1zfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6bixpc0lubGluZTphPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtjb25zdCBvPW47bGV0IGw9bnVsbCxmPW51bGw7Y29uc3QgYz1uLmRpY3QuZ2V0KCJTTWFzayIpLGg9bi5kaWN0LmdldCgiTWFzayIpO2M/YyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bD1jOndhcm4oIlVuc3VwcG9ydGVkIC9TTWFzayBmb3JtYXQuIik6aCYmKGggaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGgpP2Y9aDp3YXJuKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpO3JldHVybiBuZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpvLGlzSW5saW5lOmEsc21hc2s6bCxtYXNrOmYscGRmRnVuY3Rpb25GYWN0b3J5OnIsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pfXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWFnZTplLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnQ9ITF9KXtjb25zdHtkaWN0Om59PWUsYT1uLmdldCgiVyIsIldpZHRoIikscj1uLmdldCgiSCIsIkhlaWdodCIpLHM9bi5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLGk9bi5nZXRBcnJheSgiRCIsIkRlY29kZSIpLG89aT8uWzBdPjAsbD0oYSs3Pj4zKSpyLGY9YXdhaXQgZS5nZXRJbWFnZURhdGEobCksYz0xPT09YSYmMT09PXImJm89PT0oMD09PWYubGVuZ3RofHwhISgxMjgmZlswXSkpO2lmKGMpcmV0dXJue2lzU2luZ2xlT3BhcXVlUGl4ZWw6Y307aWYodCl7aWYoSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoYSxyKSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSpyKjQpO2NvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZixkZXN0OmUsd2lkdGg6YSxoZWlnaHQ6cixub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7cmV0dXJuIEltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7a2luZDpELGRhdGE6ZSx3aWR0aDphLGhlaWdodDpyLGludGVycG9sYXRlOnN9KX1jb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMoYSxyKSx0PWUuZ2V0Q29udGV4dCgiMmQiKSxuPXQuY3JlYXRlSW1hZ2VEYXRhKGEscik7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzpmLGRlc3Q6bi5kYXRhLHdpZHRoOmEsaGVpZ2h0OnIsbm9uQmxhY2tDb2xvcjowLGludmVyc2VEZWNvZGU6b30pO3QucHV0SW1hZ2VEYXRhKG4sMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOmEsaGVpZ2h0OnIsaW50ZXJwb2xhdGU6cyxiaXRtYXA6ZS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX19Y29uc3QgaD1mLmJ5dGVMZW5ndGg7bGV0IHU7aWYoZSBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSYmKCFvfHxsPT09aCkpdT1mO2Vsc2UgaWYobyl7dT1uZXcgVWludDhBcnJheShsKTt1LnNldChmKTt1LmZpbGwoMjU1LGgpfWVsc2UgdT1uZXcgVWludDhBcnJheShmKTtpZihvKWZvcihsZXQgZT0wO2U8aDtlKyspdVtlXV49MjU1O3JldHVybntkYXRhOnUsd2lkdGg6YSxoZWlnaHQ6cixpbnRlcnBvbGF0ZTpzfX1nZXQgZHJhd1dpZHRoKCl7cmV0dXJuIE1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5zbWFzaz8ud2lkdGh8fDAsdGhpcy5tYXNrPy53aWR0aHx8MCl9Z2V0IGRyYXdIZWlnaHQoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy5oZWlnaHQsdGhpcy5zbWFzaz8uaGVpZ2h0fHwwLHRoaXMubWFzaz8uaGVpZ2h0fHwwKX1kZWNvZGVCdWZmZXIoZSl7Y29uc3QgdD10aGlzLmJwYyxuPXRoaXMubnVtQ29tcHMsYT10aGlzLmRlY29kZUFkZGVuZHMscj10aGlzLmRlY29kZUNvZWZmaWNpZW50cyxzPSgxPDx0KS0xO2xldCBpLG87aWYoMT09PXQpe2ZvcihpPTAsbz1lLmxlbmd0aDtpPG87aSsrKWVbaV09KyFlW2ldO3JldHVybn1sZXQgbD0wO2ZvcihpPTAsbz10aGlzLndpZHRoKnRoaXMuaGVpZ2h0O2k8bztpKyspZm9yKGxldCB0PTA7dDxuO3QrKyl7ZVtsXT1NYXRoQ2xhbXAoYVt0XStlW2xdKnJbdF0sMCxzKTtsKyt9fWdldENvbXBvbmVudHMoZSl7Y29uc3QgdD10aGlzLmJwYztpZig4PT09dClyZXR1cm4gZTtjb25zdCBuPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMubnVtQ29tcHMscz1uKmEqcjtsZXQgaSxvPTA7aT10PD04P25ldyBVaW50OEFycmF5KHMpOnQ8PTE2P25ldyBVaW50MTZBcnJheShzKTpuZXcgVWludDMyQXJyYXkocyk7Y29uc3QgbD1uKnIsZj0oMTw8dCktMTtsZXQgYyxoLHU9MDtpZigxPT09dCl7bGV0IHQsbixyO2ZvcihsZXQgcz0wO3M8YTtzKyspe249dSsoLTgmbCk7cj11K2w7Zm9yKDt1PG47KXtoPWVbbysrXTtpW3VdPWg+PjcmMTtpW3UrMV09aD4+NiYxO2lbdSsyXT1oPj41JjE7aVt1KzNdPWg+PjQmMTtpW3UrNF09aD4+MyYxO2lbdSs1XT1oPj4yJjE7aVt1KzZdPWg+PjEmMTtpW3UrN109MSZoO3UrPTh9aWYodTxyKXtoPWVbbysrXTt0PTEyODtmb3IoO3U8cjspe2lbdSsrXT0rISEoaCZ0KTt0Pj49MX19fX1lbHNle2xldCBuPTA7aD0wO2Zvcih1PTAsYz1zO3U8YzsrK3Upe2lmKHUlbD09PTApe2g9MDtuPTB9Zm9yKDtuPHQ7KXtoPWg8PDh8ZVtvKytdO24rPTh9Y29uc3QgYT1uLXQ7aVt1XT1NYXRoQ2xhbXAoaD4+YSwwLGYpO2gmPSgxPDxhKS0xO249YX19cmV0dXJuIGl9YXN5bmMgZmlsbE9wYWNpdHkoZSx0LG4sYSxyKXtsZXQgcztpZih0aGlzLnNtYXNrKXM9KGUsYSk9PnRoaXMuc21hc2suZmlsbEdyYXlCdWZmZXIoZSx7Li4uYSxkZXN0V2lkdGg6dCxkZXN0SGVpZ2h0Om59KTtlbHNlIGlmKHRoaXMubWFzaylpZih0aGlzLm1hc2sgaW5zdGFuY2VvZiBQREZJbWFnZSlzPShlLGEpPT50aGlzLm1hc2suZmlsbEdyYXlCdWZmZXIoZSx7Li4uYSxpbnZlcnRPdXRwdXQ6ITAsZGVzdFdpZHRoOnQsZGVzdEhlaWdodDpufSk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0aGlzLm1hc2spKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBtYXNrIGZvcm1hdC4iKTtzPShlLHttYXhSb3dzOm4sb2Zmc2V0OmEsc3RyaWRlOnN9KT0+e2ZvcihsZXQgaT0wLG89dCpuO2k8bzsrK2kpe2xldCB0PTA7Y29uc3Qgbj1pKnRoaXMubnVtQ29tcHM7Zm9yKGxldCBlPTA7ZTx0aGlzLm51bUNvbXBzOysrZSl7Y29uc3QgYT1yW24rZV0scz0yKmU7aWYoYTx0aGlzLm1hc2tbc118fGE+dGhpcy5tYXNrW3MrMV0pe3Q9MjU1O2JyZWFrfX1lW2kqcythXT10fX19ZWxzZSBzPShlLHttYXhSb3dzOm4sb2Zmc2V0OmEsc3RyaWRlOnJ9KT0+e2ZvcihsZXQgcz0wLGk9dCpuO3M8aTsrK3MpZVtzKnIrYV09MjU1fTthd2FpdCBzKGUse21heFJvd3M6YSxvZmZzZXQ6MyxzdHJpZGU6NH0pfXN0YXRpYyNWZShlLHQsbixhLHIpe2ZvcihsZXQgcz0wO3M8dDtzKz00KXtjb25zdCB0PWVbcyszXTtpZigwPT09dCl7ZVtzXT0yNTU7ZVtzKzFdPTI1NTtlW3MrMl09MjU1O2NvbnRpbnVlfWNvbnN0IGk9MjU1L3Q7ZVtzXT0oZVtzXS1uKSppK247ZVtzKzFdPShlW3MrMV0tYSkqaSthO2VbcysyXT0oZVtzKzJdLXIpKmkrcn19dW5kb1ByZWJsZW5kKGUsdCxuKXtjb25zdCBhPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFhKXJldHVybjtjb25zdCByPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IoYSwwKTtQREZJbWFnZS4jVmUoZSx0Km4qNCxyWzBdLHJbMV0sclsyXSl9YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3Qgbj10aGlzLmRyYXdXaWR0aCxhPXRoaXMuZHJhd0hlaWdodCxyPXt3aWR0aDpuLGhlaWdodDphLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0scz10aGlzLm51bUNvbXBzLGk9dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGw9dGhpcy5icGMsZj1pKnMqbCs3Pj4zLGM9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQobixhKTtpZighdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe3Iua2luZD1EO2NvbnN0IGU9ci5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmkqNCx7aW50ZXJuYWw6dCYmY30pO2lmKHRoaXMuanB4UHJlbXVsdGlwbGllZCl7Y29uc3QgdD10aGlzLnByZWJsZW5kTWF0dGU7UERGSW1hZ2UuI1ZlKGUsZS5sZW5ndGgsdD8uWzBdPz8wLHQ/LlsxXT8/MCx0Py5bMl0/PzApfXJldHVybiB0P2M/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIsITEpOnRoaXMuY3JlYXRlQml0bWFwKEQsbixhLGUpOnJ9aWYoIWUpe2xldCBlOyJEZXZpY2VHcmF5Ij09PXRoaXMuY29sb3JTcGFjZS5uYW1lJiYxPT09bD9lPU86IkRldmljZVJHQiIhPT10aGlzLmNvbG9yU3BhY2UubmFtZXx8OCE9PWx8fHRoaXMubmVlZHNEZWNvZGV8fChlPVIpO2lmKGUmJiF0aGlzLnNtYXNrJiYhdGhpcy5tYXNrJiZuPT09aSYmYT09PW8pe2NvbnN0IHM9YXdhaXQgdGhpcy4jJGUoaSxvKTtpZihzKXJldHVybiBzO2NvbnN0IGw9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qZix7aW50ZXJuYWw6dCYmY30pO2lmKHQpcmV0dXJuIGM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOmwsa2luZDplLHdpZHRoOm4saGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxpLG8sbCk7ci5raW5kPWU7ci5kYXRhPWw7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT1PLCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXIuZGF0YTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspdFtlXV49MjU1fXJldHVybiByfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qZjtpZih0JiYhYyl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PWF3YWl0IHRoaXMuIyRlKG4sYSk7aWYodClyZXR1cm4gdDtjb25zdCByPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6bixkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOiEwLGludGVybmFsOiEwfSk7cmV0dXJuIHRoaXMuY3JlYXRlQml0bWFwKEQsbixhLHIpfX1lbHNlIHN3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj0zO2Nhc2UiRGV2aWNlUkdCIjpjYXNlIkRldmljZUNNWUsiOnIua2luZD1SO3IuZGF0YT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOm4sZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwLGludGVybmFsOmN9KTtyZXR1cm4gYz9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2Uocik6cn19fWNvbnN0IGg9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKG8qZix7aW50ZXJuYWw6ITB9KSx1PTB8aC5sZW5ndGgvZiphL28sbT10aGlzLmdldENvbXBvbmVudHMoaCk7bGV0IHAsZCxnLGIsdyxqO2lmKHQmJiFjKXtnPW5ldyBPZmZzY3JlZW5DYW52YXMobixhKTtiPWcuZ2V0Q29udGV4dCgiMmQiKTt3PWIuY3JlYXRlSW1hZ2VEYXRhKG4sYSk7aj13LmRhdGF9ci5raW5kPUQ7aWYoZXx8dGhpcy5zbWFza3x8dGhpcy5tYXNrKXt0JiYhY3x8KGo9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG4qYSo0KSk7cD0xO2Q9ITA7YXdhaXQgdGhpcy5maWxsT3BhY2l0eShqLG4sYSx1LG0pfWVsc2V7aWYoIXR8fGMpe3Iua2luZD1SO2o9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KG4qYSozKTtwPTB9ZWxzZXtuZXcgVWludDMyQXJyYXkoai5idWZmZXIpLmZpbGwoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUpO3A9MX1kPSExfXRoaXMubmVlZHNEZWNvZGUmJnRoaXMuZGVjb2RlQnVmZmVyKG0pO3RoaXMuY29sb3JTcGFjZS5maWxsUmdiKGosaSxvLG4sYSx1LGwsbSxwKTtkJiZ0aGlzLnVuZG9QcmVibGVuZChqLG4sdSk7aWYodCYmIWMpe2IucHV0SW1hZ2VEYXRhKHcsMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOm4saGVpZ2h0OmEsYml0bWFwOmcudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19ci5kYXRhPWo7cmV0dXJuIGM/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIpOnJ9YXN5bmMgZmlsbEdyYXlCdWZmZXIoZSx7ZGVzdFdpZHRoOnQsZGVzdEhlaWdodDpuLGludmVydE91dHB1dDphLG1heFJvd3M6cixvZmZzZXQ6cz0wLHN0cmlkZTppPTF9PXt9KXtjb25zdCBvPXRoaXMubnVtQ29tcHM7aWYoMSE9PW8pdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke299YCk7Y29uc3QgbD10aGlzLndpZHRoLGY9dGhpcy5oZWlnaHQsYz10aGlzLmJwYyxoPWwqbypjKzc+PjMsdT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZipoLHtpbnRlcm5hbDohMH0pLG09dGhpcy5nZXRDb21wb25lbnRzKHUpLHA9dD8/bCxkPW4/P2YsZz1wIT09bHx8ZCE9PWYsYj12b2lkIDA9PT1yP2Q6TWF0aC5taW4oZCxyKTtsZXQgdz1sLGo9MCxrPW51bGw7aWYoZyl7dz1wO2o9Zi9kO2NvbnN0IGU9bC9wO2s9bmV3IFVpbnQzMkFycmF5KHApO2ZvcihsZXQgdD0wO3Q8cDt0Kyspa1t0XT1NYXRoLmZsb29yKHQqZSl9Y29uc3QgeT1hPzI1NTowO2lmKDE9PT1jKXtpZihrKXtjb25zdCB0PWs7bGV0IG49cztpZih0aGlzLm5lZWRzRGVjb2RlKWZvcihsZXQgYT0wO2E8YjthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmopKmw7Zm9yKGxldCBhPTA7YTx3O2ErKyl7ZVtuXT1tW3IrdFthXV0tMSYyNTVeeTtuKz1pfX1lbHNlIGZvcihsZXQgYT0wO2E8YjthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmopKmw7Zm9yKGxldCBhPTA7YTx3O2ErKyl7ZVtuXT0yNTUmLW1bcit0W2FdXV55O24rPWl9fX1lbHNle2NvbnN0IHQ9dypiO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGxldCBuPTA7bjx0OysrbillW24qaStzXT1tW25dLTEmMjU1Xnk7ZWxzZSBmb3IobGV0IG49MDtuPHQ7KytuKWVbbippK3NdPTI1NSYtbVtuXV55fXJldHVybn10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihtKTtjb25zdCBxPTI1NS8oKDE8PGMpLTEpO2lmKGspe2NvbnN0IHQ9aztsZXQgbj1zO2ZvcihsZXQgYT0wO2E8YjthKyspe2NvbnN0IHI9TWF0aC5mbG9vcihhKmopKmw7Zm9yKGxldCBhPTA7YTx3O2ErKyl7ZVtuXT1xKm1bcit0W2FdXV55O24rPWl9fX1lbHNle2NvbnN0IHQ9dypiO2ZvcihsZXQgbj0wO248dDsrK24pZVtuKmkrc109cSptW25dXnl9fWNyZWF0ZUJpdG1hcChlLHQsbixhKXtjb25zdCByPW5ldyBPZmZzY3JlZW5DYW52YXModCxuKSxzPXIuZ2V0Q29udGV4dCgiMmQiKTtsZXQgaTtpZihlPT09RClpPW5ldyBJbWFnZURhdGEoYSx0LG4pO2Vsc2V7aT1zLmNyZWF0ZUltYWdlRGF0YSh0LG4pO2NvbnZlcnRUb1JHQkEoe2tpbmQ6ZSxzcmM6YSxkZXN0Om5ldyBVaW50MzJBcnJheShpLmRhdGEuYnVmZmVyKSx3aWR0aDp0LGhlaWdodDpuLGludmVyc2VEZWNvZGU6dGhpcy5uZWVkc0RlY29kZX0pfXMucHV0SW1hZ2VEYXRhKGksMCwwKTtyZXR1cm57ZGF0YTpudWxsLHdpZHRoOnQsaGVpZ2h0Om4sYml0bWFwOnIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCksaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX19YXN5bmMjJGUoZSx0KXtjb25zdCBuPWF3YWl0IHRoaXMuaW1hZ2UuZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKTtyZXR1cm4gbj97ZGF0YTpudWxsLHdpZHRoOmUsaGVpZ2h0OnQsYml0bWFwOm4saW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX06bnVsbH1hc3luYyBnZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDp0LGRyYXdIZWlnaHQ6bixmb3JjZVJHQkE6YT0hMSxmb3JjZVJHQjpyPSExLGludGVybmFsOnM9ITF9KXt0aGlzLmltYWdlLnJlc2V0KCk7dGhpcy5pbWFnZS5kcmF3V2lkdGg9dHx8dGhpcy53aWR0aDt0aGlzLmltYWdlLmRyYXdIZWlnaHQ9bnx8dGhpcy5oZWlnaHQ7dGhpcy5pbWFnZS5mb3JjZVJHQkE9ISFhO3RoaXMuaW1hZ2UuZm9yY2VSR0I9ISFyO2NvbnN0IGk9YXdhaXQgdGhpcy5pbWFnZS5nZXRJbWFnZURhdGEoZSx0aGlzLmpweERlY29kZXJPcHRpb25zKTtpZihzfHx0aGlzLmltYWdlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtKXJldHVybiBpO2Fzc2VydChpIGluc3RhbmNlb2YgVWludDhBcnJheSwnUERGSW1hZ2UuZ2V0SW1hZ2VCeXRlczogVW5zdXBwb3J0ZWQgImltYWdlQnl0ZXMiIHR5cGUuJyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KGkpfX1jb25zdCBfaT1PYmplY3QuZnJlZXplKHttYXhJbWFnZVNpemU6LTEsZGlzYWJsZUZvbnRGYWNlOiExLGlnbm9yZUVycm9yczohMSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLHVzZVdhc206ITAsdXNlV29ya2VyRmV0Y2g6ITAsY01hcFVybDpudWxsLGNNYXBQYWNrZWQ6ITAsaWNjVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDpudWxsLHdhc21Vcmw6bnVsbCxoYXNHUFU6ITF9KSxFaT0xLHppPTIsV2k9UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpemVCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZihlIGluc3RhbmNlb2YgTmFtZSl7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKX1yZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkQ2FjaGVkSW1hZ2VPcHMoZSx7b2JqSWQ6dCxmbjpuLGFyZ3M6YSxvcHRpb25hbENvbnRlbnQ6cixoYXNNYXNrOnN9KXt0JiZlLmFkZERlcGVuZGVuY3kodCk7ZS5hZGRJbWFnZU9wcyhuLGEscixzKTtuPT09enQmJmFbMF0/LmNvdW50PjAmJmFbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIFRJTUVfU0xPVF9EVVJBVElPTl9NUz0yMDtzdGF0aWMgQ0hFQ0tfVElNRV9FVkVSWT0xMDA7Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6bixpZEZhY3Rvcnk6YSxmb250Q2FjaGU6cixidWlsdEluQ01hcENhY2hlOnMsc3RhbmRhcmRGb250RGF0YUNhY2hlOmksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm8sZ2xvYmFsSW1hZ2VDYWNoZTpsLHN5c3RlbUZvbnRDYWNoZTpmLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9bjt0aGlzLmlkRmFjdG9yeT1hO3RoaXMuZm9udENhY2hlPXI7dGhpcy5idWlsdEluQ01hcENhY2hlPXM7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9aTt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZT1vO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1sO3RoaXMuc3lzdGVtRm9udENhY2hlPWY7dGhpcy5vcHRpb25zPWN8fF9pO3RoaXMudHlwZTNGb250UmVmcz1udWxsO3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZT1uZXcgUmVnaW9uYWxJbWFnZUNhY2hlO3RoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZD10aGlzLmZldGNoQnVpbHRJbkNNYXAuYmluZCh0aGlzKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWZ9KSl9Z2V0IHBhcnNpbmdUeXBlM0ZvbnQoKXtyZXR1cm4hIXRoaXMudHlwZTNGb250UmVmc31jbG9uZShlPW51bGwpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTt0Lm9wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucyxlKTtyZXR1cm4gdH1oYXNCbGVuZE1vZGVzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5vYmpJZCYmdC5oYXMoZS5vYmpJZCkpcmV0dXJuITE7Y29uc3Qgbj1uZXcgUmVmU2V0KHQpO2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2NvbnN0IGE9W2VdLHI9dGhpcy54cmVmO2Zvcig7YS5sZW5ndGg7KXtjb25zdCBlPWEuc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgRGljdClmb3IobGV0IGUgb2YgdC5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYobi5oYXMoZSkpY29udGludWU7dHJ5e2U9ci5mZXRjaChlKX1jYXRjaCh0KXtuLnB1dChlKTtpbmZvKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJm4ucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2lmKCJOb3JtYWwiIT09dC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBOYW1lJiYiTm9ybWFsIiE9PWUubmFtZSlyZXR1cm4hMH1jb25zdCBzPWUuZ2V0KCJYT2JqZWN0Iik7aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHMuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7bi5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpY29udGludWU7ZS5kaWN0Lm9iaklkJiZuLnB1dChlLmRpY3Qub2JqSWQpO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJighdC5vYmpJZHx8IW4uaGFzKHQub2JqSWQpKSl7YS5wdXNoKHQpO3Qub2JqSWQmJm4ucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2Ygbil0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBuO249dGhpcy5vcHRpb25zLnVzZVdvcmtlckZldGNoP3tjTWFwRGF0YTphd2FpdCBmZXRjaEJpbmFyeURhdGEoYCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGApLGlzQ29tcHJlc3NlZDohMH06e2NNYXBEYXRhOmF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse2tpbmQ6ImNNYXBVcmwiLGZpbGVuYW1lOmAke2V9JHt0aGlzLm9wdGlvbnMuY01hcFBhY2tlZD8iLmJjbWFwIjoiIn1gfSksaXNDb21wcmVzc2VkOnRoaXMub3B0aW9ucy5jTWFwUGFja2VkfTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUuc2V0KGUsbik7cmV0dXJuIG59YXN5bmMgZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpe2NvbnN0IHQ9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuZ2V0KGUpO2lmKHQpcmV0dXJuIG5ldyBTdHJlYW0odCk7aWYodGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYiU3ltYm9sIiE9PWUmJiJaYXBmRGluZ2JhdHMiIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBuPVhhKClbZV07bGV0IGE7dHJ5e2E9dGhpcy5vcHRpb25zLnVzZVdvcmtlckZldGNoP2F3YWl0IGZldGNoQmluYXJ5RGF0YShgJHt0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybH0ke259YCk6YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCaW5hcnlEYXRhIix7a2luZDoic3RhbmRhcmRGb250RGF0YVVybCIsZmlsZW5hbWU6bn0pfWNhdGNoKGUpe3dhcm4oZSk7cmV0dXJuIG51bGx9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIG5ldyBTdHJlYW0oYSl9YXN5bmMgYnVpbGRGb3JtWE9iamVjdChlLHQsbixhLHIscyxpLG8pe2NvbnN0e2RpY3Q6bH09dCxmPWxvb2t1cE1hdHJpeChsLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKSxjPWxvb2t1cE5vcm1hbFJlY3QobC5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBoLHUsbT1jJiZuZXcgRmxvYXQzMkFycmF5KGMpO20/LnNvbWUoZT0+IWlzRmluaXRlKGUpKSYmKG09bnVsbCk7bC5oYXMoIk9DIikmJihoPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMobC5nZXQoIk9DIiksZSkpO3ZvaWQgMCE9PWgmJmEuYWRkT3AoT3QsWyJPQyIsaF0pO2NvbnN0IHA9bC5nZXQoIkdyb3VwIik7bGV0IGQ7Y29uc3QgZz1bZiYmbmV3IEZsb2F0MzJBcnJheShmKSwhcCYmbXx8bnVsbF0sYj1sLmdldCgiUmVzb3VyY2VzIik7aWYocCl7dT17bWF0cml4OmYsYmJveDptLHNtYXNrOm4saXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITEsbmVlZHNJc29sYXRpb246ITEsaGFzU29mdE1hc2s6ITEsaXNHcmF5OiExfTtsZXQgdD1udWxsO2lmKGlzTmFtZShwLmdldCgiUyIpLCJUcmFuc3BhcmVuY3kiKSl7dS5pc29sYXRlZD1wLmdldCgiSSIpfHwhMTt1Lmtub2Nrb3V0PXAuZ2V0KCJLIil8fCExO2lmKHAuaGFzKCJDUyIpKXtjb25zdCBuPXRoaXMuX2dldENvbG9yU3BhY2UocC5nZXRSYXcoIkNTIiksZSxpKTt0PW4gaW5zdGFuY2VvZiBDb2xvclNwYWNlP246YXdhaXQgdGhpcy5faGFuZGxlQ29sb3JTcGFjZShuKX19dS5pc0dyYXk9MT09PXQ/Lm51bUNvbXBzO2lmKG4/LmJhY2tkcm9wKXt0fHw9Q29sb3JTcGFjZVV0aWxzLnJnYjtuLmJhY2tkcm9wPXQuZ2V0UmdiSGV4KG4uYmFja2Ryb3AsMCl9ZWxzZSJMdW1pbm9zaXR5Ij09PW4/LnN1YnR5cGUmJihuLmJhY2tkcm9wPSIjMDAwMDAwIik7ZD1uZXcgQ2hlY2tlZE9wZXJhdG9yTGlzdH1lbHNle2Q9YTthLmFkZE9wKEh0LGcpfWF3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOnIscmVzb3VyY2VzOmIgaW5zdGFuY2VvZiBEaWN0P2I6ZSxvcGVyYXRvckxpc3Q6ZCxpbml0aWFsU3RhdGU6cyxwcmV2UmVmczpvfSk7aWYocCl7dS5uZWVkc0lzb2xhdGlvbj1kLm5lZWRzSXNvbGF0aW9ufHwhIW47dS5oYXNTb2Z0TWFzaz1kLmhhc1NvZnRNYXNrfHwhIW47YS5hZGRPcChOdCxbdV0pO2EuYWRkT3AoSHQsZyk7YS5hZGRPcExpc3QoZCk7YS5hZGRPcChNdCxbXSk7YS5hZGRPcChQdCxbdV0pfWVsc2UgYS5hZGRPcChNdCxbXSk7dm9pZCAwIT09aCYmYS5hZGRPcChSdCxbXSl9X3NlbmRJbWdEYXRhKGUsdCxuPSExKXtjb25zdCBhPXQ/W3QuYml0bWFwfHx0LmRhdGEuYnVmZmVyXTpudWxsO3JldHVybiB0aGlzLnBhcnNpbmdUeXBlM0ZvbnR8fG4/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW2UsIkltYWdlIix0XSxhKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbZSx0aGlzLnBhZ2VJbmRleCwiSW1hZ2UiLHRdLGEpfWFzeW5jIGJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczplLGltYWdlOnQsaXNJbmxpbmU6bj0hMSxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpyLGxvY2FsSW1hZ2VDYWNoZTpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOml9KXtjb25zdHttYXhJbWFnZVNpemU6byxpZ25vcmVFcnJvcnM6bCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpmfT10aGlzLm9wdGlvbnMse2RpY3Q6Y309dCxoPWMub2JqSWQsdT1jLmdldCgiVyIsIldpZHRoIiksbT1jLmdldCgiSCIsIkhlaWdodCIpO2lmKCF1fHwibnVtYmVyIiE9dHlwZW9mIHV8fCFtfHwibnVtYmVyIiE9dHlwZW9mIG0pe3dhcm4oIkltYWdlIGRpbWVuc2lvbnMgYXJlIG1pc3NpbmcsIG9yIG5vdCBudW1iZXJzLiIpO3JldHVybn1pZigtMSE9PW8mJnUqbT5vKXtjb25zdCBlPSJJbWFnZSBleGNlZWRlZCBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBhbmQgd2FzIHJlbW92ZWQuIjtpZighbCl0aHJvdyBuZXcgRXJyb3IoZSk7d2FybihlKTtyZXR1cm59bGV0IHA7Yy5oYXMoIk9DIikmJihwPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO2xldCBkLGcsYjtpZihjLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe2Q9YXdhaXQgUERGSW1hZ2UuY3JlYXRlTWFzayh7aW1hZ2U6dCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpmJiYhdGhpcy5wYXJzaW5nVHlwZTNGb250fSk7aWYoZC5pc1NpbmdsZU9wYXF1ZVBpeGVsKXtnPVZ0O2I9W107YS5hZGRJbWFnZU9wcyhnLGIscCk7aWYocil7Y29uc3QgZT17Zm46ZyxhcmdzOmIsb3B0aW9uYWxDb250ZW50OnB9O3Muc2V0KHIsaCxlKTtoJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsaCxlKX1yZXR1cm59aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXtiPWZ1bmN0aW9uIGNvbXBpbGVUeXBlM0dseXBoKHtkYXRhOmUsd2lkdGg6dCxoZWlnaHQ6bn0pe2lmKHQ+MWUzfHxuPjFlMylyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBVaW50OEFycmF5KFswLDIsNCwwLDEsMCw1LDQsOCwxMCwwLDgsMCwyLDEsMF0pLHI9dCsxLHM9bmV3IFVpbnQ4QXJyYXkocioobisxKSk7bGV0IGksbyxsO2NvbnN0IGY9dCs3Ji04LGM9bmV3IFVpbnQ4QXJyYXkoZipuKTtsZXQgaD0wO2Zvcihjb25zdCB0IG9mIGUpe2xldCBlPTEyODtmb3IoO2U+MDspe2NbaCsrXT10JmU/MDoyNTU7ZT4+PTF9fWxldCB1PTA7aD0wO2lmKDAhPT1jW2hdKXtzWzBdPTE7Kyt1fWZvcihvPTE7bzx0O28rKyl7aWYoY1toXSE9PWNbaCsxXSl7c1tvXT1jW2hdPzI6MTsrK3V9aCsrfWlmKDAhPT1jW2hdKXtzW29dPTI7Kyt1fWZvcihpPTE7aTxuO2krKyl7aD1pKmY7bD1pKnI7aWYoY1toLWZdIT09Y1toXSl7c1tsXT1jW2hdPzE6ODsrK3V9bGV0IGU9KGNbaF0/NDowKSsoY1toLWZdPzg6MCk7Zm9yKG89MTtvPHQ7bysrKXtlPShlPj4yKSsoY1toKzFdPzQ6MCkrKGNbaC1mKzFdPzg6MCk7aWYoYVtlXSl7c1tsK29dPWFbZV07Kyt1fWgrK31pZihjW2gtZl0hPT1jW2hdKXtzW2wrb109Y1toXT8yOjQ7Kyt1fWlmKHU+MWUzKXJldHVybiBudWxsfWg9Zioobi0xKTtsPWkqcjtpZigwIT09Y1toXSl7c1tsXT04OysrdX1mb3Iobz0xO288dDtvKyspe2lmKGNbaF0hPT1jW2grMV0pe3NbbCtvXT1jW2hdPzQ6ODsrK3V9aCsrfWlmKDAhPT1jW2hdKXtzW2wrb109NDsrK3V9aWYodT4xZTMpcmV0dXJuIG51bGw7Y29uc3QgbT1uZXcgSW50MzJBcnJheShbMCxyLC0xLDAsLXIsMCwwLDAsMV0pLHA9W10se2E6ZCxiOmcsYzpiLGQ6dyxlOmosZjprfT0obmV3IERPTU1hdHJpeCkuc2NhbGVTZWxmKDEvdCwtMS9uKS50cmFuc2xhdGVTZWxmKDAsLW4pO2ZvcihpPTA7dSYmaTw9bjtpKyspe2xldCBlPWkqcjtjb25zdCBuPWUrdDtmb3IoO2U8biYmIXNbZV07KWUrKztpZihlPT09biljb250aW51ZTtsZXQgYT1lJXIsbz1pO3AucHVzaChadCxkKmErYipvK2osZyphK3cqbytrKTtjb25zdCBsPWU7bGV0IGY9c1tlXTtkb3tjb25zdCB0PW1bZl07ZG97ZSs9dH13aGlsZSghc1tlXSk7Y29uc3Qgbj1zW2VdO2lmKDUhPT1uJiYxMCE9PW4pe2Y9bjtzW2VdPTB9ZWxzZXtmPW4mNTEqZj4+NDtzW2VdJj1mPj4yfGY8PDJ9YT1lJXI7bz1lL3J8MDtwLnB1c2goZW4sZCphK2IqbytqLGcqYSt3Km8rayk7c1tlXXx8LS11fXdoaWxlKGwhPT1lKTstLWl9cmV0dXJuW1F0LFtuZXcgRmxvYXQzMkFycmF5KHApXSxuZXcgRmxvYXQzMkFycmF5KFswLDAsdCxuXSldfShkKTtpZihiKXthLmFkZEltYWdlT3BzKCR0LGIscCk7cmV0dXJufXdhcm4oIkNhbm5vdCBjb21waWxlIFR5cGUzIGdseXBoLiIpO2EuYWRkSW1hZ2VPcHMoenQsW2RdLHApO3JldHVybn1jb25zdCBlPWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO2EuYWRkRGVwZW5kZW5jeShlKTtkLmRhdGFMZW49ZC5iaXRtYXA/ZC53aWR0aCpkLmhlaWdodCo0OmQuZGF0YS5sZW5ndGg7dGhpcy5fc2VuZEltZ0RhdGEoZSxkKTtnPXp0O2I9W3tkYXRhOmUsd2lkdGg6ZC53aWR0aCxoZWlnaHQ6ZC5oZWlnaHQsaW50ZXJwb2xhdGU6ZC5pbnRlcnBvbGF0ZSxjb3VudDoxfV07YS5hZGRJbWFnZU9wcyhnLGIscCk7aWYocil7Y29uc3QgdD17b2JqSWQ6ZSxmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cH07cy5zZXQocixoLHQpO2gmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxoLHQpfXJldHVybn1jb25zdCB3PWMuaGFzKCJTTWFzayIpfHxjLmhhcygiTWFzayIpO2lmKG4mJnUrbTwyMDAmJiF3KXt0cnl7Y29uc3Qgcj1uZXcgUERGSW1hZ2Uoe3hyZWY6dGhpcy54cmVmLHJlczplLGltYWdlOnQsaXNJbmxpbmU6bixwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSk7ZD1hd2FpdCByLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5hZGRJbWFnZU9wcyhXdCxbZF0scCl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCFsKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgaj1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGs9ITEseT1udWxsO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udClqPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9X3R5cGUzXyR7an1gO2Vsc2UgaWYociYmaCl7az10aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2hvdWxkQ2FjaGUoaCx0aGlzLnBhZ2VJbmRleCk7aWYoayl7YXNzZXJ0KCFuLCJDYW5ub3QgY2FjaGUgYW4gaW5saW5lIGltYWdlIGdsb2JhbGx5LiIpO2o9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fJHtqfWB9fWEuYWRkRGVwZW5kZW5jeShqKTtnPVV0O2I9W2osdSxtXTthLmFkZEltYWdlT3BzKGcsYixwLHcpO2lmKGspe3k9e29iaklkOmosZm46ZyxhcmdzOmIsb3B0aW9uYWxDb250ZW50OnAsaGFzTWFzazp3LGJ5dGVTaXplOjB9O2lmKHRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5oYXNEZWNvZGVGYWlsZWQoaCkpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGgseSk7dGhpcy5fc2VuZEltZ0RhdGEoaixudWxsLGspO3JldHVybn1pZih1Km0+MjVlNHx8dyl7Y29uc3QgZT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJjb21tb25vYmoiLFtqLCJDb3B5TG9jYWxJbWFnZSIse2ltYWdlUmVmOmh9XSk7aWYoZSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoaCx5KTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkQnl0ZVNpemUoaCxlKTtyZXR1cm59fX1QREZJbWFnZS5idWlsZEltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOm4scGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pLnRoZW4oYXN5bmMgZT0+e2Q9YXdhaXQgZS5jcmVhdGVJbWFnZURhdGEoITEsZik7ZC5kYXRhTGVuPWQuYml0bWFwP2Qud2lkdGgqZC5oZWlnaHQqNDpkLmRhdGEubGVuZ3RoO2QucmVmPWg7ayYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGgsZC5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoaixkLGspfSkuY2F0Y2goZT0+e3dhcm4oYFVuYWJsZSB0byBkZWNvZGUgaW1hZ2UgIiR7an0iOiAiJHtlfSIuYCk7aCYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZERlY29kZUZhaWxlZChoKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEoaixudWxsLGspfSk7aWYocil7Y29uc3QgZT17b2JqSWQ6aixmbjpnLGFyZ3M6YixvcHRpb25hbENvbnRlbnQ6cCxoYXNNYXNrOnd9O3Muc2V0KHIsaCxlKTtpZihoKXt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsaCxlKTtpZihrKXthc3NlcnQoeSwiVGhlIGdsb2JhbCBjYWNoZS1kYXRhIG11c3QgYmUgYXZhaWxhYmxlLiIpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKGgseSl9fX19aGFuZGxlU01hc2soZSx0LG4sYSxyLHMsaSl7Y29uc3Qgbz1lLmdldCgiRyIpLGw9e3N1YnR5cGU6ZS5nZXQoIlMiKS5uYW1lLGJhY2tkcm9wOmUuZ2V0KCJCQyIpfSxmPWUuZ2V0KCJUUiIpO2lmKGlzUERGRnVuY3Rpb24oZikpe2NvbnN0IGU9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZShmKSx0PW5ldyBVaW50OEFycmF5KDI1Niksbj1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgYT0wO2E8MjU2O2ErKyl7blswXT1hLzI1NTtlKG4sMCxuLDApO3RbYV09MjU1Km5bMF18MH1sLnRyYW5zZmVyTWFwPXR9cmV0dXJuIHRoaXMuYnVpbGRGb3JtWE9iamVjdCh0LG8sbCxuLGEsci5zdGF0ZS5jbG9uZSh7bmV3UGF0aDohMH0pLHMsaSl9aGFuZGxlVHJhbnNmZXJGdW5jdGlvbihlKXtsZXQgdDtpZihBcnJheS5pc0FycmF5KGUpKXt0PWU7ZS5sZW5ndGg+MSYmZS5ldmVyeSh0PT50PT09ZVswXSkmJih0PVtlWzBdXSl9ZWxzZXtpZighaXNQREZGdW5jdGlvbihlKSlyZXR1cm4gbnVsbDt0PVtlXX1jb25zdCBuPVtdO2xldCBhPTAscj0wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7YSsrO2lmKGlzTmFtZSh0LCJJZGVudGl0eSIpKXtuLnB1c2gobnVsbCk7Y29udGludWV9aWYoIWlzUERGRnVuY3Rpb24odCkpcmV0dXJuIG51bGw7Y29uc3Qgcz10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHQpLGk9bmV3IFVpbnQ4QXJyYXkoMjU2KSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXtvWzBdPWUvMjU1O3MobywwLG8sMCk7aVtlXT0yNTUqb1swXXwwfW4ucHVzaChpKTtyKyt9cmV0dXJuIDEhPT1hJiY0IT09YXx8MD09PXI/bnVsbDpufWhhbmRsZVRpbGluZ1R5cGUoZSx0LG4sYSxyLHMsaSxvLGwpe2NvbnN0IGY9bmV3IENoZWNrZWRPcGVyYXRvckxpc3QsYz1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W3IuZ2V0KCJSZXNvdXJjZXMiKSxuXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmEsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpmLHByZXZSZWZzOmx9KS50aGVuKGZ1bmN0aW9uKCl7Y29uc3Qgbj1mLmdldElSKCkse25lZWRzSXNvbGF0aW9uOmF9PWYsaT1nZXRUaWxpbmdQYXR0ZXJuSVIobixyLHQsYSk7cy5hZGREZXBlbmRlbmNpZXMoZi5kZXBlbmRlbmNpZXMpO3MuYWRkT3AoZSxpKTtyLm9iaklkJiZvLnNldChudWxsLHIub2JqSWQse29wZXJhdG9yTGlzdElSOm4sbmVlZHNJc29sYXRpb246YSxkaWN0OnJ9KX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxuLGEscixzLGk9bnVsbCxvPW51bGwsbD1udWxsKXtjb25zdCBmPXQ/LlswXWluc3RhbmNlb2YgTmFtZT90WzBdLm5hbWU6bnVsbCxjPWF3YWl0IHRoaXMubG9hZEZvbnQoZixuLGUscixpLG8sbCk7Yy5mb250LmlzVHlwZTNGb250JiZhLmFkZERlcGVuZGVuY2llcyhjLnR5cGUzRGVwZW5kZW5jaWVzKTtzLmZvbnQ9Yy5mb250O2Muc2VuZCh0aGlzLmhhbmRsZXIpO3JldHVybiBjLmxvYWRlZE5hbWV9aGFuZGxlVGV4dChlLHQpe2NvbnN0IG49dC5mb250LGE9bi5jaGFyc1RvR2x5cGhzKGUpO2lmKG4uZGF0YSl7KCEhKHQudGV4dFJlbmRlcmluZ01vZGUmVCl8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8IlBhdHRlcm4iPT09dC5zdHJva2VDb2xvclNwYWNlLm5hbWV8fG4uZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhuLGEsdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIGF9ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgRm9ybWF0RXJyb3IoIk1pc3Npbmcgc2V0Rm9udCAoVGYpIG9wZXJhdG9yIGJlZm9yZSB0ZXh0IHJlbmRlcmluZyBvcGVyYXRvci4iKTtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyB0O3dhcm4oYGVuc3VyZVN0YXRlRm9udDogIiR7dH0iLmApfWFzeW5jIHNldEdTdGF0ZSh7cmVzb3VyY2VzOmUsZ1N0YXRlOnQsb3BlcmF0b3JMaXN0Om4sY2FjaGVLZXk6YSx0YXNrOnIsc3RhdGVNYW5hZ2VyOnMsbG9jYWxHU3RhdGVDYWNoZTppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sc2VlblJlZnM6bH0pe2NvbnN0IGY9dC5vYmpJZDtsZXQgYz0hMDtjb25zdCBoPVtdO2xldCB1PVByb21pc2UucmVzb2x2ZSgpO2Zvcihjb25zdFthLGldb2YgdClzd2l0Y2goYSl7Y2FzZSJUeXBlIjpicmVhaztjYXNlIkxXIjppZigibnVtYmVyIiE9dHlwZW9mIGkpe3dhcm4oYEludmFsaWQgTFcgKGxpbmUgd2lkdGgpOiAke2l9YCk7YnJlYWt9aC5wdXNoKFthLE1hdGguYWJzKGkpXSk7YnJlYWs7Y2FzZSJMQyI6Y2FzZSJMSiI6Y2FzZSJNTCI6Y2FzZSJEIjpjYXNlIlJJIjpjYXNlIkZMIjpjYXNlIkNBIjpjYXNlImNhIjpoLnB1c2goW2EsaV0pO2JyZWFrO2Nhc2UiRm9udCI6Yz0hMTt1PXUudGhlbigoKT0+dGhpcy5oYW5kbGVTZXRGb250KGUsbnVsbCxpWzBdLG4scixzLnN0YXRlLG51bGwsbnVsbCxsKS50aGVuKGZ1bmN0aW9uKGUpe24uYWRkRGVwZW5kZW5jeShlKTtoLnB1c2goW2EsW2UsaVsxXV1dKX0pKTticmVhaztjYXNlIkJNIjpoLnB1c2goW2Esbm9ybWFsaXplQmxlbmRNb2RlKGkpXSk7YnJlYWs7Y2FzZSJTTWFzayI6aWYoaXNOYW1lKGksIk5vbmUiKSl7aC5wdXNoKFthLCExXSk7YnJlYWt9aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2M9ITE7dT11LnRoZW4oKCk9PnRoaXMuaGFuZGxlU01hc2soaSxlLG4scixzLG8sbCkpO2gucHVzaChbYSwhMF0pfWVsc2Ugd2FybigiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNhc2UiVFIyIjp7aWYoIlRSIj09PWEmJnQuaGFzKCJUUjIiKSlicmVhaztjb25zdCBlPXRoaXMuaGFuZGxlVHJhbnNmZXJGdW5jdGlvbihpKTtoLnB1c2goWyJUUiIsZV0pO2JyZWFrfWNhc2UiT1AiOmNhc2Uib3AiOmNhc2UiT1BNIjpjYXNlIkJHIjpjYXNlIkJHMiI6Y2FzZSJVQ1IiOmNhc2UiVUNSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOmluZm8oImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKTticmVhaztkZWZhdWx0OmluZm8oIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2EpfWF3YWl0IHU7aC5sZW5ndGg+MCYmbi5hZGRPcCh2ZSxbaF0pO2MmJmkuc2V0KGEsZixoKX1sb2FkRm9udChlLHQsbixhLHI9bnVsbCxzPW51bGwsaT1udWxsKXtjb25zdCBlcnJvckZvbnQ9YXN5bmMoKT0+bmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOiJnX2ZvbnRfZXJyb3IiLGZvbnQ6bmV3IEVycm9yRm9udChgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKSxkaWN0OnR9KTtsZXQgbztpZih0KXQgaW5zdGFuY2VvZiBSZWYmJihvPXQpO2Vsc2V7Y29uc3QgdD1uLmdldCgiRm9udCIpO3QmJihvPXQuZ2V0UmF3KGUpKX1pZihvKXtpZih0aGlzLnR5cGUzRm9udFJlZnM/LmhhcyhvKSlyZXR1cm4gZXJyb3JGb250KCk7aWYodGhpcy5mb250Q2FjaGUuaGFzKG8pKXJldHVybiB0aGlzLmZvbnRDYWNoZS5nZXQobyk7dHJ5e3Q9dGhpcy54cmVmLmZldGNoSWZSZWYobyl9Y2F0Y2goZSl7d2FybihgbG9hZEZvbnQgLSBsb29rdXAgZmFpbGVkOiAiJHtlfSIuYCl9fWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyYmIXRoaXMucGFyc2luZ1R5cGUzRm9udCl7d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtyZXR1cm4gZXJyb3JGb250KCl9d2FybihgRm9udCAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZSAtLSBhdHRlbXB0aW5nIHRvIGZhbGxiYWNrIHRvIGEgZGVmYXVsdCBmb250LmApO3Q9cnx8UGFydGlhbEV2YWx1YXRvci5mYWxsYmFja0ZvbnREaWN0fWlmKHQuY2FjaGVLZXkmJnRoaXMuZm9udENhY2hlLmhhcyh0LmNhY2hlS2V5KSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHQuY2FjaGVLZXkpO2NvbnN0e3Byb21pc2U6bCxyZXNvbHZlOmZ9PVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBjO3RyeXtjPXRoaXMucHJlRXZhbHVhdGVGb250KHQpO2MuY3NzRm9udEluZm89c31jYXRjaChlKXt3YXJuKGBsb2FkRm9udCAtIHByZUV2YWx1YXRlRm9udCBmYWlsZWQ6ICIke2V9Ii5gKTtyZXR1cm4gZXJyb3JGb250KCl9Y29uc3R7ZGVzY3JpcHRvcjpoLGhhc2g6dX09YyxtPW8gaW5zdGFuY2VvZiBSZWY7bGV0IHA7aWYodSYmaCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9aC5mb250QWxpYXNlc3x8PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZVt1XSl7Y29uc3QgdD1lW3VdLmFsaWFzUmVmO2lmKG0mJnQmJnRoaXMuZm9udENhY2hlLmhhcyh0KSl7dGhpcy5mb250Q2FjaGUucHV0QWxpYXMobyx0KTtyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KG8pfX1lbHNlIGVbdV09e2ZvbnRJRDp0aGlzLmlkRmFjdG9yeS5jcmVhdGVGb250SWQoKX07bSYmKGVbdV0uYWxpYXNSZWY9byk7cD1lW3VdLmZvbnRJRH1lbHNlIHA9dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCk7YXNzZXJ0KHA/LnN0YXJ0c1dpdGgoImYiKSwnVGhlICJmb250SUQiIG11c3QgYmUgKGNvcnJlY3RseSkgZGVmaW5lZC4nKTtpZihtKXRoaXMuZm9udENhY2hlLnB1dChvLGwpO2Vsc2V7dC5jYWNoZUtleT1gY2FjaGVLZXlfJHtwfWA7dGhpcy5mb250Q2FjaGUucHV0KHQuY2FjaGVLZXksbCl9dC5sb2FkZWROYW1lPWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7cH1gO3RoaXMudHJhbnNsYXRlRm9udChjKS50aGVuKGFzeW5jIGU9Pntjb25zdCByPW5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZTp0LmxvYWRlZE5hbWUsZm9udDplLGRpY3Q6dH0pO2lmKGUuaXNUeXBlM0ZvbnQpdHJ5e2F3YWl0IHIubG9hZFR5cGUzRGF0YSh0aGlzLG4sYSxpKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoYFR5cGUzIGZvbnQgbG9hZCBlcnJvcjogJHtlfWApfWYocil9KS5jYXRjaChlPT57d2FybihgbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO2YobmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250Om5ldyBFcnJvckZvbnQoZT8ubWVzc2FnZSksZGljdDp0fSkpfSk7cmV0dXJuIGx9YnVpbGRQYXRoKGUsdCxuKXtjb25zdHtwYXRoTWluTWF4OmEscGF0aEJ1ZmZlcjpyfT1uO3N3aXRjaCgwfGUpe2Nhc2UgQmU6e2NvbnN0IGU9bi5jdXJyZW50UG9pbnRYPXRbMF0scz1uLmN1cnJlbnRQb2ludFk9dFsxXSxpPXRbMl0sbz10WzNdLGw9ZStpLGY9cytvOzA9PT1pfHwwPT09bz9yLnB1c2goWnQsZSxzLGVuLGwsZixhbik6ci5wdXNoKFp0LGUscyxlbixsLHMsZW4sbCxmLGVuLGUsZixhbik7VXRpbC5yZWN0Qm91bmRpbmdCb3goZSxzLGwsZixhKTticmVha31jYXNlIENlOntjb25zdCBlPW4uY3VycmVudFBvaW50WD10WzBdLHM9bi5jdXJyZW50UG9pbnRZPXRbMV07ci5wdXNoKFp0LGUscyk7VXRpbC5wb2ludEJvdW5kaW5nQm94KGUscyxhKTticmVha31jYXNlIEllOntjb25zdCBlPW4uY3VycmVudFBvaW50WD10WzBdLHM9bi5jdXJyZW50UG9pbnRZPXRbMV07ci5wdXNoKGVuLGUscyk7VXRpbC5wb2ludEJvdW5kaW5nQm94KGUscyxhKTticmVha31jYXNlIEZlOntjb25zdCBlPW4uY3VycmVudFBvaW50WCxzPW4uY3VycmVudFBvaW50WSxbaSxvLGwsZixjLGhdPXQ7bi5jdXJyZW50UG9pbnRYPWM7bi5jdXJyZW50UG9pbnRZPWg7ci5wdXNoKHRuLGksbyxsLGYsYyxoKTtVdGlsLmJlemllckJvdW5kaW5nQm94KGUscyxpLG8sbCxmLGMsaCxhKTticmVha31jYXNlIFRlOntjb25zdCBlPW4uY3VycmVudFBvaW50WCxzPW4uY3VycmVudFBvaW50WSxbaSxvLGwsZl09dDtuLmN1cnJlbnRQb2ludFg9bDtuLmN1cnJlbnRQb2ludFk9ZjtyLnB1c2godG4sZSxzLGksbyxsLGYpO1V0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxzLGUscyxpLG8sbCxmLGEpO2JyZWFrfWNhc2UgT2U6e2NvbnN0IGU9bi5jdXJyZW50UG9pbnRYLHM9bi5jdXJyZW50UG9pbnRZLFtpLG8sbCxmXT10O24uY3VycmVudFBvaW50WD1sO24uY3VycmVudFBvaW50WT1mO3IucHVzaCh0bixpLG8sbCxmLGwsZik7VXRpbC5iZXppZXJCb3VuZGluZ0JveChlLHMsaSxvLGwsZixsLGYsYSk7YnJlYWt9Y2FzZSBSZTpyLnB1c2goYW4pfX1fZ2V0Q29sb3JTcGFjZShlLHQsbil7cmV0dXJuIENvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6ZSx4cmVmOnRoaXMueHJlZixyZXNvdXJjZXM6dCxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTpuLGFzeW5jSWZOb3RDYWNoZWQ6ITB9KX1hc3luYyBfaGFuZGxlQ29sb3JTcGFjZShlKXt0cnl7cmV0dXJuIGF3YWl0IGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYF9oYW5kbGVDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9fXBhcnNlU2hhZGluZyh7c2hhZGluZzplLHJlc291cmNlczp0LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm4sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmF9KXtsZXQgcixzPWEuZ2V0KGUpO2lmKHMpcmV0dXJuIHM7dHJ5e3I9UGF0dGVybi5wYXJzZVNoYWRpbmcoZSx0aGlzLnhyZWYsdCx0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksdGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbikuZ2V0SVIoKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VTaGFkaW5nIC0gaWdub3Jpbmcgc2hhZGluZzogIiR7dH0iLmApO2Euc2V0KGUsbnVsbCk7cmV0dXJuIG51bGx9dGhyb3cgdH1zPWBwYXR0ZXJuXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO3RoaXMucGFyc2luZ1R5cGUzRm9udCYmKHM9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHtzfWApO2Euc2V0KGUscyk7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXtjb25zdCBlPWZ1bmN0aW9uIGNvbXBpbGVQYXR0ZXJuSW5mbyhlKXtsZXQgdCxuPW51bGwsYT1bXSxyPVtdLHM9W10saT1udWxsLG89bnVsbDtzd2l0Y2goZVswXSl7Y2FzZSJSYWRpYWxBeGlhbCI6dD0iYXhpYWwiPT09ZVsxXT8xOjI7bj1lWzJdO3M9ZVszXTsxPT09dD9hLnB1c2goLi4uZVs0XSwuLi5lWzVdKTphLnB1c2goZVs0XVswXSxlWzRdWzFdLGVbNl0sZVs1XVswXSxlWzVdWzFdLGVbN10pO2JyZWFrO2Nhc2UiTWVzaCI6dD0zO2k9ZVsxXTthPWVbMl07cj1lWzNdO249ZVs2XTtvPWVbN107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhdHRlcm4gdHlwZTogJHtlWzBdfWApfWNvbnN0IGw9TWF0aC5mbG9vcihhLmxlbmd0aC8yKSxmPU1hdGguZmxvb3Ioci5sZW5ndGgvNCksYz1zLmxlbmd0aCxoPW5ldyBBcnJheUJ1ZmZlcigyMCs4KmwrNCpmKzgqYysobj8xNjowKSsobz8zOjApKSx1PW5ldyBEYXRhVmlldyhoKSxtPW5ldyBVaW50OEFycmF5KGgpO3Uuc2V0VWludDgoUEFUVEVSTl9JTkZPLktJTkQsdCk7dS5zZXRVaW50OChQQVRURVJOX0lORk8uSEFTX0JCT1gsbj8xOjApO3Uuc2V0VWludDgoUEFUVEVSTl9JTkZPLkhBU19CQUNLR1JPVU5ELG8/MTowKTt1LnNldFVpbnQ4KFBBVFRFUk5fSU5GTy5TSEFESU5HX1RZUEUsaSk7dS5zZXRVaW50MzIoUEFUVEVSTl9JTkZPLk5fQ09PUkQsbCwhMCk7dS5zZXRVaW50MzIoUEFUVEVSTl9JTkZPLk5fQ09MT1IsZiwhMCk7dS5zZXRVaW50MzIoUEFUVEVSTl9JTkZPLk5fU1RPUCxjLCEwKTt1LnNldFVpbnQzMihQQVRURVJOX0lORk8uTl9GSUdVUkVTLDAsITApO2xldCBwPTIwO25ldyBGbG9hdDMyQXJyYXkoaCxwLDIqbCkuc2V0KGEpO3ArPTgqbDttLnNldChyLHApO3ArPTQqZjtmb3IoY29uc3RbZSx0XW9mIHMpe3Uuc2V0RmxvYXQzMihwLGUsITApO3ArPTQ7dS5zZXRVaW50MzIocCxwYXJzZUludCh0LnNsaWNlKDEpLDE2KSwhMCk7cCs9NH1pZihuKWZvcihjb25zdCBlIG9mIG4pe3Uuc2V0RmxvYXQzMihwLGUsITApO3ArPTR9byYmbS5zZXQobyxwKTtyZXR1cm4gaH0ocik7dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW3MsIlBhdHRlcm4iLGVdLFtlXSl9ZWxzZSB0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbcyx0aGlzLnBhZ2VJbmRleCwiUGF0dGVybiIscl0pO3JldHVybiBzfWhhbmRsZUNvbG9yTihlLHQsbixhLHIscyxpLG8sbCxmLGMpe2NvbnN0IGg9bi5wb3AoKTtpZihoIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdT1yLmdldFJhdyhoLm5hbWUpLG09dSBpbnN0YW5jZW9mIFJlZiYmbC5nZXRCeVJlZih1KTtpZihtKXRyeXtjb25zdCByPWEuYmFzZT9hLmJhc2UuZ2V0UmdiSGV4KG4sMCk6bnVsbCxzPWdldFRpbGluZ1BhdHRlcm5JUihtLm9wZXJhdG9yTGlzdElSLG0uZGljdCxyLG0ubmVlZHNJc29sYXRpb24pO2UuYWRkT3AodCxzKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IHA9dGhpcy54cmVmLmZldGNoSWZSZWYodSk7aWYocCl7Y29uc3Qgcj1wIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9wLmRpY3Q6cCxoPXIuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKGg9PT1FaSl7Y29uc3Qgbz1hLmJhc2U/YS5iYXNlLmdldFJnYkhleChuLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8scyxwLHIsZSxpLGwsYyl9aWYoaD09PXppKXtjb25zdCBuPXIuZ2V0KCJTaGFkaW5nIiksYT10aGlzLnBhcnNlU2hhZGluZyh7c2hhZGluZzpuLHJlc291cmNlczpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmZ9KTtpZihhKXtjb25zdCBuPWxvb2t1cE1hdHJpeChyLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTtlLmFkZE9wKHQsWyJTaGFkaW5nIixhLG5dKX1yZXR1cm59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5UeXBlOiAke2h9YCl9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtofWApfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7cmV0dXJuIHBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMueHJlZixlLHQpfWFzeW5jIGdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczpuLG9wZXJhdG9yTGlzdDpyLGluaXRpYWxTdGF0ZTpzPW51bGwsZmFsbGJhY2tGb250RGljdDppPW51bGwscHJldlJlZnM6bz1udWxsfSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO3QmJihlPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCkpfWNvbnN0IGw9ZS5kaWN0Py5vYmpJZCxmPW5ldyBSZWZTZXQobyk7aWYobCl7aWYobz8uaGFzKGwpKXRocm93IG5ldyBFcnJvcihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgY2lyY3VsYXIgcmVmZXJlbmNlOiAke2x9YCk7Zi5wdXQobCl9bnx8PURpY3QuZW1wdHk7c3x8PW5ldyBFdmFsU3RhdGU7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCdnZXRPcGVyYXRvckxpc3Q6IG1pc3NpbmcgIm9wZXJhdG9yTGlzdCIgcGFyYW1ldGVyJyk7Y29uc3QgYz10aGlzLGg9dGhpcy54cmVmLHU9bmV3IExvY2FsSW1hZ2VDYWNoZSxtPW5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSxwPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLGQ9bmV3IExvY2FsVGlsaW5nUGF0dGVybkNhY2hlLGc9bmV3IE1hcCxiPW4uZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHksdz1uLmdldCgiUGF0dGVybiIpfHxEaWN0LmVtcHR5LGo9bmV3IFN0YXRlTWFuYWdlcihzKSxrPW5ldyBFdmFsdWF0b3JQcmVwcm9jZXNzb3IoZSxoLGopLHk9bmV3IFRpbWVTbG90TWFuYWdlcjtmdW5jdGlvbiBjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKGUpe2ZvcihsZXQgZT0wLHQ9ay5zYXZlZFN0YXRlc0RlcHRoO2U8dDtlKyspci5hZGRPcChBZSxbXSl9cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUscyl7Y29uc3QgbmV4dD1mdW5jdGlvbih0KXtQcm9taXNlLmFsbChbdCxyLnJlYWR5XSkudGhlbihmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLHMpfWNhdGNoKGUpe3MoZSl9fSxzKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7eS5yZXNldCgpO2NvbnN0IG89e307bGV0IGwscSx2LFMseCxDO2Zvcig7IShsPXkuY2hlY2soKSk7KXtvLmFyZ3M9bnVsbDtpZighay5yZWFkKG8pKWJyZWFrO2xldCBlPW8uYXJncyxzPW8uZm47c3dpdGNoKDB8cyl7Y2FzZSBDdDpDPWVbMF1pbnN0YW5jZW9mIE5hbWU7eD1lWzBdLm5hbWU7aWYoQyl7Y29uc3QgdD11LmdldEJ5TmFtZSh4KTtpZih0KXthZGRDYWNoZWRJbWFnZU9wcyhyLHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLGEpe2lmKCFDKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHM9Yi5nZXRSYXcoeCk7aWYocyBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD11LmdldEJ5UmVmKHMpfHxjLl9yZWdpb25hbEltYWdlQ2FjaGUuZ2V0QnlSZWYocyl8fGMuZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKHMsYy5wYWdlSW5kZXgpO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHIsdCk7ZSgpO3JldHVybn1zPWguZmV0Y2gocyl9aWYoIShzIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0IGk9cy5kaWN0LmdldCgiU3VidHlwZSIpO2lmKCEoaSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWkubmFtZSlpZigiSW1hZ2UiIT09aS5uYW1lKXtpZigiUFMiIT09aS5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5oYW5kbGVkIFhPYmplY3Qgc3VidHlwZSAke2kubmFtZX1gKTtpbmZvKCJJZ25vcmVkIFhPYmplY3Qgc3VidHlwZSBQUyIpO2UoKX1lbHNlIGMuYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOm4saW1hZ2U6cyxvcGVyYXRvckxpc3Q6cixjYWNoZUtleTp4LGxvY2FsSW1hZ2VDYWNoZTp1LGxvY2FsQ29sb3JTcGFjZUNhY2hlOm19KS50aGVuKGUsYSk7ZWxzZXtqLnNhdmUoKTtjLmJ1aWxkRm9ybVhPYmplY3QobixzLG51bGwscix0LGouc3RhdGUuY2xvbmUoe25ld1BhdGg6ITB9KSxtLGYpLnRoZW4oZnVuY3Rpb24oKXtqLnJlc3RvcmUoKTtlKCl9LGEpfX0pLmNhdGNoKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpO3JldHVybjtjYXNlIEplOmNvbnN0IG89ZVsxXTtuZXh0KGMuaGFuZGxlU2V0Rm9udChuLGUsbnVsbCxyLHQsai5zdGF0ZSxpLG51bGwsZikudGhlbihmdW5jdGlvbihlKXtyLmFkZERlcGVuZGVuY3koZSk7ci5hZGRPcChKZSxbZSxvXSl9KSk7cmV0dXJuO2Nhc2UgeHQ6Y29uc3QgbD1lWzBdLmNhY2hlS2V5O2lmKGwpe2NvbnN0IHQ9dS5nZXRCeU5hbWUobCk7aWYodCl7YWRkQ2FjaGVkSW1hZ2VPcHMocix0KTtlPW51bGw7Y29udGludWV9fW5leHQoYy5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6bixpbWFnZTplWzBdLGlzSW5saW5lOiEwLG9wZXJhdG9yTGlzdDpyLGNhY2hlS2V5OmwsbG9jYWxJbWFnZUNhY2hlOnUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bX0pKTtyZXR1cm47Y2FzZSBzdDppZighai5zdGF0ZS5mb250KXtjLmVuc3VyZVN0YXRlRm9udChqLnN0YXRlKTtjb250aW51ZX1lWzBdPWMuaGFuZGxlVGV4dChlWzBdLGouc3RhdGUpO2JyZWFrO2Nhc2UgaXQ6aWYoIWouc3RhdGUuZm9udCl7Yy5lbnN1cmVTdGF0ZUZvbnQoai5zdGF0ZSk7Y29udGludWV9Y29uc3Qgaz1bXSx5PWouc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/ay5wdXNoKC4uLmMuaGFuZGxlVGV4dCh0LHkpKToibnVtYmVyIj09dHlwZW9mIHQmJmsucHVzaCh0KTtlWzBdPWs7cz1zdDticmVhaztjYXNlIG90OmlmKCFqLnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KGouc3RhdGUpO2NvbnRpbnVlfXIuYWRkT3AocnQpO2VbMF09Yy5oYW5kbGVUZXh0KGVbMF0sai5zdGF0ZSk7cz1zdDticmVhaztjYXNlIGx0OmlmKCFqLnN0YXRlLmZvbnQpe2MuZW5zdXJlU3RhdGVGb250KGouc3RhdGUpO2NvbnRpbnVlfXIuYWRkT3AocnQpO3IuYWRkT3AoVmUsW2Uuc2hpZnQoKV0pO3IuYWRkT3AoR2UsW2Uuc2hpZnQoKV0pO2VbMF09Yy5oYW5kbGVUZXh0KGVbMF0sai5zdGF0ZSk7cz1zdDticmVhaztjYXNlIFFlOmouc3RhdGUudGV4dFJlbmRlcmluZ01vZGU9ZVswXTticmVhaztjYXNlIHV0Ontjb25zdCB0PWMuX2dldENvbG9yU3BhY2UoZVswXSxuLG0pO2lmKHQgaW5zdGFuY2VvZiBDb2xvclNwYWNlKXtqLnN0YXRlLmZpbGxDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChjLl9oYW5kbGVDb2xvclNwYWNlKHQpLnRoZW4oZT0+e2ouc3RhdGUuZmlsbENvbG9yU3BhY2U9ZXx8Q29sb3JTcGFjZVV0aWxzLmdyYXl9KSk7cmV0dXJufWNhc2UgaHQ6e2NvbnN0IHQ9Yy5fZ2V0Q29sb3JTcGFjZShlWzBdLG4sbSk7aWYodCBpbnN0YW5jZW9mIENvbG9yU3BhY2Upe2ouc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQoYy5faGFuZGxlQ29sb3JTcGFjZSh0KS50aGVuKGU9PntqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9ZXx8Q29sb3JTcGFjZVV0aWxzLmdyYXl9KSk7cmV0dXJufWNhc2UgZHQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtTPWouc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cz1rdDticmVhaztjYXNlIG10OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7Uz1qLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cz1qdDticmVhaztjYXNlIHd0OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ai5zdGF0ZS5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMuZ3JheTtlPVtDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JIZXgoZSwwKV07cz1rdDticmVhaztjYXNlIGJ0OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5ncmF5O2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtzPWp0O2JyZWFrO2Nhc2UgcXQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtqLnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5jbXlrO2U9W0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkhleChlLDApXTtzPWt0O2JyZWFrO2Nhc2UgeXQ6aWYoIWlzTnVtYmVyQXJyYXkoZSxudWxsKSljb250aW51ZTtqLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmNteWs7ZT1bQ29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSGV4KGUsMCldO3M9anQ7YnJlYWs7Y2FzZSBrdDppZighaXNOdW1iZXJBcnJheShlLG51bGwpKWNvbnRpbnVlO2ouc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnJnYjtlPVtDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkhleChlLDApXTticmVhaztjYXNlIGp0OmlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ai5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5yZ2I7ZT1bQ29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JIZXgoZSwwKV07YnJlYWs7Y2FzZSBndDpTPWouc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFTKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtzPWt0O2JyZWFrfWU9W107cz1KdDticmVha31pZigiUGF0dGVybiI9PT1TLm5hbWUpe2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO25leHQoYy5oYW5kbGVDb2xvck4ocixndCxlLFMsdyxuLHQsbSxkLGcsZikpO3JldHVybn1pZighaXNOdW1iZXJBcnJheShlLG51bGwpKWNvbnRpbnVlO2U9W1MuZ2V0UmdiSGV4KGUsMCldO3M9a3Q7YnJlYWs7Y2FzZSBwdDpTPWouc3RhdGUucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U7aWYoIVMpe2lmKGlzTnVtYmVyQXJyYXkoZSxudWxsKSl7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO3M9anQ7YnJlYWt9ZT1bXTtzPVl0O2JyZWFrfWlmKCJQYXR0ZXJuIj09PVMubmFtZSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpY29udGludWU7bmV4dChjLmhhbmRsZUNvbG9yTihyLHB0LGUsUyx3LG4sdCxtLGQsZyxmKSk7cmV0dXJufWlmKCFpc051bWJlckFycmF5KGUsbnVsbCkpY29udGludWU7ZT1bUy5nZXRSZ2JIZXgoZSwwKV07cz1qdDticmVhaztjYXNlIHZ0OmxldCBUO3RyeXtjb25zdCB0PW4uZ2V0KCJTaGFkaW5nIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBzaGFkaW5nIHJlc291cmNlIGZvdW5kIik7VD10LmdldChlWzBdLm5hbWUpO2lmKCFUKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gc2hhZGluZyBvYmplY3QgZm91bmQiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pY29udGludWU7aWYoYy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgU2hhZGluZzogIiR7ZX0iLmApO2NvbnRpbnVlfXRocm93IGV9Y29uc3QgTz1jLnBhcnNlU2hhZGluZyh7c2hhZGluZzpULHJlc291cmNlczpuLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm0sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmd9KTtpZighTyljb250aW51ZTtlPVtPXTtzPXZ0O2JyZWFrO2Nhc2UgdmU6Qz1lWzBdaW5zdGFuY2VvZiBOYW1lO3g9ZVswXS5uYW1lO2lmKEMpe2NvbnN0IHQ9cC5nZXRCeU5hbWUoeCk7aWYodCl7dC5sZW5ndGg+MCYmci5hZGRPcCh2ZSxbdF0pO2U9bnVsbDtjb250aW51ZX19bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLGEpe2lmKCFDKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBzPW4uZ2V0KCJFeHRHU3RhdGUiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IGk9cy5nZXQoeCk7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjLnNldEdTdGF0ZSh7cmVzb3VyY2VzOm4sZ1N0YXRlOmksb3BlcmF0b3JMaXN0OnIsY2FjaGVLZXk6eCx0YXNrOnQsc3RhdGVNYW5hZ2VyOmosbG9jYWxHU3RhdGVDYWNoZTpwLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm0sc2VlblJlZnM6Zn0pLnRoZW4oZSxhKX0pLmNhdGNoKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgZ2U6e2NvbnN0W3RdPWU7aWYoIm51bWJlciIhPXR5cGVvZiB0KXt3YXJuKGBJbnZhbGlkIHNldExpbmVXaWR0aDogJHt0fWApO2NvbnRpbnVlfWVbMF09TWF0aC5hYnModCk7YnJlYWt9Y2FzZSBrZTp7Y29uc3QgdD1lWzFdO2lmKCJudW1iZXIiIT10eXBlb2YgdCl7d2FybihgSW52YWxpZCBzZXREYXNoOiAke3R9YCk7Y29udGludWV9Y29uc3Qgbj1lWzBdO2lmKCFBcnJheS5pc0FycmF5KG4pKXt3YXJuKGBJbnZhbGlkIHNldERhc2g6ICR7bn1gKTtjb250aW51ZX1uLnNvbWUoZT0+Im51bWJlciIhPXR5cGVvZiBlKSYmKGVbMF09bi5maWx0ZXIoZT0+Im51bWJlciI9PXR5cGVvZiBlKSk7YnJlYWt9Y2FzZSBDZTpjYXNlIEllOmNhc2UgRmU6Y2FzZSBUZTpjYXNlIE9lOmNhc2UgUmU6Y2FzZSBCZTpjLmJ1aWxkUGF0aChzLGUsai5zdGF0ZSk7Y29udGludWU7Y2FzZSBEZTpjYXNlIEhlOmNhc2UgTWU6Y2FzZSBOZTpjYXNlIFBlOmNhc2UgX2U6Y2FzZSBFZTpjYXNlIHplOmNhc2UgTGU6e2NvbnN0e3N0YXRlOntwYXRoQnVmZmVyOmUscGF0aE1pbk1heDp0fX09ajtzIT09SGUmJnMhPT1FZSYmcyE9PXplfHxlLnB1c2goYW4pO2lmKDA9PT1lLmxlbmd0aClyLmFkZE9wKCR0LFtzLFtudWxsXSxudWxsXSk7ZWxzZXtyLmFkZE9wKCR0LFtzLFtuZXcgRmxvYXQzMkFycmF5KGUpXSx0LnNsaWNlKCldKTtlLmxlbmd0aD0wO3Quc2V0KGEsMCl9Y29udGludWV9Y2FzZSBudDpyLmFkZE9wKHMsW25ldyBGbG9hdDMyQXJyYXkoZSldKTtjb250aW51ZTtjYXNlIEl0OmNhc2UgRnQ6Y2FzZSBCdDpjYXNlIER0OmNvbnRpbnVlO2Nhc2UgT3Q6aWYoIShlWzBdaW5zdGFuY2VvZiBOYW1lKSl7d2FybihgRXhwZWN0ZWQgbmFtZSBmb3IgYmVnaW5NYXJrZWRDb250ZW50UHJvcHMgYXJnMD0ke2VbMF19YCk7ci5hZGRPcChPdCxbIk9DIixudWxsXSk7Y29udGludWV9aWYoIk9DIj09PWVbMF0ubmFtZSl7bmV4dChjLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGVbMV0sbikudGhlbihlPT57ci5hZGRPcChPdCxbIk9DIixlXSl9KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighYy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGJlZ2luTWFya2VkQ29udGVudFByb3BzOiAiJHtlfSIuYCk7ci5hZGRPcChPdCxbIk9DIixudWxsXSl9fSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2ZvcihxPTAsdj1lLmxlbmd0aDtxPHYmJiEoZVtxXWluc3RhbmNlb2YgRGljdCk7cSsrKTtpZihxPHYpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3MpO2NvbnRpbnVlfX19ci5hZGRPcChzLGUpfWlmKGwpbmV4dChXaSk7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpfX0pfWFzeW5jIGdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOm4sc3RhdGVNYW5hZ2VyOmE9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpyPSExLHNpbms6aSxzZWVuU3R5bGVzOm89bmV3IFNldCx2aWV3Qm94OmwsbGFuZzpmPW51bGwsbWFya2VkQ29udGVudERhdGE6Yz1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOmg9ITEsa2VlcFdoaXRlU3BhY2U6dT0hMSxwcmV2UmVmczptPW51bGwsaW50ZXJzZWN0b3I6cD1udWxsfSl7aWYoZS5pc0FzeW5jKXtjb25zdCB0PWF3YWl0IGUuYXN5bmNHZXRCeXRlcygpO3QmJihlPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGUuZGljdCkpfWk/Pz10ZXh0U2lua1dyYXBwZXIobnVsbCk7Y29uc3QgZD1lLmRpY3Q/Lm9iaklkLGc9bmV3IFJlZlNldChtKTtpZihkKXtpZihtPy5oYXMoZCkpdGhyb3cgbmV3IEVycm9yKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtkfWApO2cucHV0KGQpfW58fD1EaWN0LmVtcHR5O2F8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO3ImJihjfHw9e2xldmVsOjB9KTtjb25zdCBiPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOmZ9LHc9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCxwcmV2VGV4dFJpc2U6MCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0saj1bIiAiLCIgIl07bGV0IGs9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oaysxKSUyLG49IiAiIT09altrXSYmIiAiPT09alt0XTtqW2tdPWU7az10O3JldHVybiF1JiZufWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hdSYmIiAiIT09altrXSYmIiAiPT09alsoaysxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2pbMF09alsxXT0iICI7az0wfWNvbnN0IHk9dGhpcyxxPXRoaXMueHJlZix2PVtdO2xldCBTPW51bGw7Y29uc3QgeD1uZXcgTG9jYWxJbWFnZUNhY2hlLEM9bmV3IExvY2FsR1N0YXRlQ2FjaGUsVD1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUscSxhKTtsZXQgTyxSO2Z1bmN0aW9uIHB1c2hXaGl0ZXNwYWNlKHt3aWR0aDplPTAsaGVpZ2h0OnQ9MCx0cmFuc2Zvcm06bj13LnByZXZUcmFuc2Zvcm0sZm9udE5hbWU6YT13LmZvbnROYW1lfSl7cD8uYWRkRXh0cmFDaGFyKCIgIik7Yi5pdGVtcy5wdXNoKHtzdHI6IiAiLGRpcjoibHRyIix3aWR0aDplLGhlaWdodDp0LHRyYW5zZm9ybTpuLGZvbnROYW1lOmEsaGFzRU9MOiExfSl9ZnVuY3Rpb24gZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKXtjb25zdCBlPU8uZm9udCx0PVtPLmZvbnRTaXplKk8udGV4dEhTY2FsZSwwLDAsTy5mb250U2l6ZSwwLE8udGV4dFJpc2VdO2lmKGUuaXNUeXBlM0ZvbnQmJihPLmZvbnRTaXplPD0xfHxlLmlzQ2hhckJCb3gpJiYhaXNBcnJheUVxdWFsKE8uZm9udE1hdHJpeCxzKSl7Y29uc3Qgbj1lLmJib3hbM10tZS5iYm94WzFdO24+MCYmKHRbM10qPW4qTy5mb250TWF0cml4WzNdKX1yZXR1cm4gVXRpbC50cmFuc2Zvcm0oTy5jdG0sVXRpbC50cmFuc2Zvcm0oTy50ZXh0TWF0cml4LHQpKX1mdW5jdGlvbiBlbnN1cmVUZXh0Q29udGVudEl0ZW0oKXtpZih3LmluaXRpYWxpemVkKXJldHVybiB3O2NvbnN0e2ZvbnQ6ZSxsb2FkZWROYW1lOnR9PU87aWYoIW8uaGFzKHQpKXtvLmFkZCh0KTtiLnN0eWxlc1t0XT17Zm9udEZhbWlseTplLmZhbGxiYWNrTmFtZSxhc2NlbnQ6ZS5hc2NlbnQsZGVzY2VudDplLmRlc2NlbnQsdmVydGljYWw6ZS52ZXJ0aWNhbH07aWYoeS5vcHRpb25zLmZvbnRFeHRyYVByb3BlcnRpZXMmJmUuc3lzdGVtRm9udEluZm8pe2NvbnN0IG49Yi5zdHlsZXNbdF07bi5mb250U3Vic3RpdHV0aW9uPWUuc3lzdGVtRm9udEluZm8uY3NzO24uZm9udFN1YnN0aXR1dGlvbkxvYWRlZE5hbWU9ZS5zeXN0ZW1Gb250SW5mby5sb2FkZWROYW1lfX13LmZvbnROYW1lPXQ7Y29uc3Qgbj13LnRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2lmKGUudmVydGljYWwpe3cud2lkdGg9dy50b3RhbFdpZHRoPU1hdGguaHlwb3QoblswXSxuWzFdKTt3LmhlaWdodD13LnRvdGFsSGVpZ2h0PTA7dy52ZXJ0aWNhbD0hMH1lbHNle3cud2lkdGg9dy50b3RhbFdpZHRoPTA7dy5oZWlnaHQ9dy50b3RhbEhlaWdodD1NYXRoLmh5cG90KG5bMl0sblszXSk7dy52ZXJ0aWNhbD0hMX1jb25zdCBhPU1hdGguaHlwb3QoTy50ZXh0TGluZU1hdHJpeFswXSxPLnRleHRMaW5lTWF0cml4WzFdKSxyPU1hdGguaHlwb3QoTy5jdG1bMF0sTy5jdG1bMV0pO3cudGV4dEFkdmFuY2VTY2FsZT1yKmE7Y29uc3R7Zm9udFNpemU6c309Tzt3LnRyYWNraW5nU3BhY2VNaW49LjEwMipzO3cubm90QVNwYWNlPS4wMypzO3cubmVnYXRpdmVTcGFjZU1heD0tLjIqczt3LnNwYWNlSW5GbG93TWluPS4xMDIqczt3LnNwYWNlSW5GbG93TWF4PS42KnM7dy5oYXNFT0w9ITE7dy5pbml0aWFsaXplZD0hMDtyZXR1cm4gd31mdW5jdGlvbiB1cGRhdGVBZHZhbmNlU2NhbGUoKXtpZighdy5pbml0aWFsaXplZClyZXR1cm47Y29uc3QgZT1NYXRoLmh5cG90KE8udGV4dExpbmVNYXRyaXhbMF0sTy50ZXh0TGluZU1hdHJpeFsxXSksdD1NYXRoLmh5cG90KE8uY3RtWzBdLE8uY3RtWzFdKSplO2lmKHQhPT13LnRleHRBZHZhbmNlU2NhbGUpe2lmKHcudmVydGljYWwpe3cudG90YWxIZWlnaHQrPXcuaGVpZ2h0KncudGV4dEFkdmFuY2VTY2FsZTt3LmhlaWdodD0wfWVsc2V7dy50b3RhbFdpZHRoKz13LndpZHRoKncudGV4dEFkdmFuY2VTY2FsZTt3LndpZHRoPTB9dy50ZXh0QWR2YW5jZVNjYWxlPXR9fWZ1bmN0aW9uIHJ1bkJpZGlUcmFuc2Zvcm0oZSl7bGV0IHQ9ZS5zdHIuam9pbigiIik7aHx8KHQ9ZnVuY3Rpb24gbm9ybWFsaXplVW5pY29kZShlKXtpZighZm4pe2ZuPS8oW1x1MDBhMFx1MDBiNVx1MDM3ZVx1MGViM1x1MjAwMC1cdTIwMGFcdTIwMmZcdTIxMjZcdWZiMDAtXHVmYjA0XHVmYjA2XHVmYjIwLVx1ZmIzNlx1ZmIzOC1cdWZiM2NcdWZiM2VcdWZiNDBcdWZiNDFcdWZiNDNcdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmNcdWZiZmRcdWZjMDAtXHVmYzVkXHVmYzY0LVx1ZmNmMVx1ZmNmNS1cdWZkM2RcdWZkODhcdWZkZjRcdWZkZmFcdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O2NuPW5ldyBNYXAoW1si76yFIiwixb90Il1dKX1yZXR1cm4gZS5yZXBsYWNlQWxsKGZuLChlLHQsbik9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpjbi5nZXQobikpfSh0KSk7Y29uc3Qgbj1iaWRpKHQsLTEsZS52ZXJ0aWNhbCk7cmV0dXJue3N0cjpuLnN0cixkaXI6bi5kaXIsd2lkdGg6TWF0aC5hYnMoZS50b3RhbFdpZHRoKSxoZWlnaHQ6TWF0aC5hYnMoZS50b3RhbEhlaWdodCksdHJhbnNmb3JtOmUudHJhbnNmb3JtLGZvbnROYW1lOmUuZm9udE5hbWUsaGFzRU9MOmUuaGFzRU9MfX1hc3luYyBmdW5jdGlvbiBoYW5kbGVTZXRGb250KGUsYSl7Y29uc3Qgcj1hd2FpdCB5LmxvYWRGb250KGUsYSxuLHQsbnVsbCxudWxsLGcpO08ubG9hZGVkTmFtZT1yLmxvYWRlZE5hbWU7Ty5mb250PXIuZm9udDtPLmZvbnRNYXRyaXg9ci5mb250LmZvbnRNYXRyaXh8fHN9ZnVuY3Rpb24gYXBwbHlJbnZlcnNlUm90YXRpb24oZSx0LG4pe2NvbnN0IGE9TWF0aC5oeXBvdChuWzBdLG5bMV0pO3JldHVyblsoblswXSplK25bMV0qdCkvYSwoblsyXSplK25bM10qdCkvYV19ZnVuY3Rpb24gY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2xldCBuPXRbNF0sYT10WzVdO2lmKE8uZm9udD8udmVydGljYWwpe2lmKG48bFswXXx8bj5sWzJdfHxhK2U8bFsxXXx8YT5sWzNdKXJldHVybiExfWVsc2UgaWYobitlPGxbMF18fG4+bFsyXXx8YTxsWzFdfHxhPmxbM10pcmV0dXJuITE7aWYoIU8uZm9udHx8IXcucHJldlRyYW5zZm9ybSlyZXR1cm4hMDtsZXQgcj13LnByZXZUcmFuc2Zvcm1bNF0scz13LnByZXZUcmFuc2Zvcm1bNV07aWYocj09PW4mJnM9PT1hKXJldHVybiEwO2xldCBpPS0xO3RbMF0mJjA9PT10WzFdJiYwPT09dFsyXT9pPXRbMF0+MD8wOjE4MDp0WzFdJiYwPT09dFswXSYmMD09PXRbM10mJihpPXRbMV0+MD85MDoyNzApO3N3aXRjaChpKXtjYXNlIDA6YnJlYWs7Y2FzZSA5MDpbbixhXT1bYSxuXTtbcixzXT1bcyxyXTticmVhaztjYXNlIDE4MDpbbixhLHIsc109Wy1uLC1hLC1yLC1zXTticmVhaztjYXNlIDI3MDpbbixhXT1bLWEsLW5dO1tyLHNdPVstcywtcl07YnJlYWs7ZGVmYXVsdDpbbixhXT1hcHBseUludmVyc2VSb3RhdGlvbihuLGEsdCk7W3Isc109YXBwbHlJbnZlcnNlUm90YXRpb24ocixzLHcucHJldlRyYW5zZm9ybSl9aWYoTy5mb250LnZlcnRpY2FsKXtjb25zdCBlPShzLWEpL3cudGV4dEFkdmFuY2VTY2FsZSx0PW4tcixpPU1hdGguc2lnbih3LmhlaWdodHx8dy50b3RhbEhlaWdodCk7aWYoZTxpKncubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnModCk+LjUqdy53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKHQpPncud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfWU8PWkqdy5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYoZTw9aSp3LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2Ugdy5oZWlnaHQrPWU7ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhlLHcucHJldlRyYW5zZm9ybSxpKSlpZigwPT09dy5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHcuaGVpZ2h0Kz1lO01hdGguYWJzKHQpPi4yNSp3LndpZHRoJiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWNvbnN0IG89KG4tcikvdy50ZXh0QWR2YW5jZVNjYWxlLGY9YS1zLGM9TWF0aC5zaWduKHcud2lkdGh8fHcudG90YWxXaWR0aCk7aWYobzxjKncubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnMoZik+LjUqdy5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBoPU8udGV4dFJpc2Utdy5wcmV2VGV4dFJpc2UsdT0wPT09aD9mOmYtdFszXS9PLmZvbnRTaXplKmg7aWYoTWF0aC5hYnModSk+dy5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfW88PWMqdy5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobzw9Yyp3LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB3LndpZHRoKz1vO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMobyx3LnByZXZUcmFuc2Zvcm0sYykpaWYoMD09PXcuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIHcud2lkdGgrPW87TWF0aC5hYnMoZik+LjI1KncuaGVpZ2h0JiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7aWYoUiE9PU8mJihSLmZvbnRTaXplIT09Ty5mb250U2l6ZXx8Ui5mb250TmFtZSE9PU8uZm9udE5hbWUmJihSLmZvbnQubmFtZSE9PU8uZm9udC5uYW1lfHxSLmZvbnQudmVydGljYWwhPT1PLmZvbnQudmVydGljYWwpKSl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtSPU8uY2xvbmUoKX1jb25zdCBuPU8uZm9udCxhPW4udmVydGljYWw/LU8uY2hhclNwYWNpbmc6Ty5jaGFyU3BhY2luZztpZighZSl7Y29uc3QgZT1hK3Q7ZSYmKG4udmVydGljYWw/Ty50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWUpOk8udHJhbnNsYXRlVGV4dE1hdHJpeChlKk8udGV4dEhTY2FsZSwwKSk7dSYmY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oMCk7cmV0dXJufWNvbnN0IHI9bi5jaGFyc1RvR2x5cGhzKGUpLHM9Ty5mb250TWF0cml4WzBdKk8uZm9udFNpemU7Zm9yKGxldCBlPTAsaT1yLmxlbmd0aDtlPGk7ZSsrKXtjb25zdCBvPXJbZV0se2NhdGVnb3J5Omwsb3JpZ2luYWxDaGFyQ29kZTpmfT1vO2lmKGwuaXNJbnZpc2libGVGb3JtYXRNYXJrKWNvbnRpbnVlO2xldCBjPWErKGUrMT09PWk/dDowKSxoPW8ud2lkdGg7bi52ZXJ0aWNhbCYmKGg9by52bWV0cmljP28udm1ldHJpY1swXTotaCk7bGV0IG09aCpzOzMyPT09ZiYmKGMrPU8ud29yZFNwYWNpbmcpO2lmKCF1JiZsLmlzV2hpdGVzcGFjZSl7aWYobi52ZXJ0aWNhbCl7Yys9LW07Ty50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWMpfWVsc2V7Yys9bTtPLnRyYW5zbGF0ZVRleHRNYXRyaXgoYypPLnRleHRIU2NhbGUsMCl9c2F2ZUxhc3RDaGFyKCIgIik7Y29udGludWV9aWYoIWwuaXNaZXJvV2lkdGhEaWFjcml0aWMmJiFjb21wYXJlV2l0aExhc3RQb3NpdGlvbihtKSl7bi52ZXJ0aWNhbD9PLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCxtKTpPLnRyYW5zbGF0ZVRleHRNYXRyaXgobSpPLnRleHRIU2NhbGUsMCk7Y29udGludWV9Y29uc3QgZD1lbnN1cmVUZXh0Q29udGVudEl0ZW0oKTtsLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYobT0wKTtpZihuLnZlcnRpY2FsKXtwPy5hZGRHbHlwaChnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLDAsbSxvLnVuaWNvZGUpO08udHJhbnNsYXRlVGV4dE1hdHJpeCgwLG0pO209TWF0aC5hYnMobSk7ZC5oZWlnaHQrPW19ZWxzZXttKj1PLnRleHRIU2NhbGU7cD8uYWRkR2x5cGgoZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxtLDAsby51bmljb2RlKTtPLnRyYW5zbGF0ZVRleHRNYXRyaXgobSwwKTtkLndpZHRoKz1tfWlmKG0pe2QucHJldlRyYW5zZm9ybT1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2QucHJldlRleHRSaXNlPU8udGV4dFJpc2V9Y29uc3QgZz1vLnVuaWNvZGU7aWYoc2F2ZUxhc3RDaGFyKGcpKXtkLnN0ci5wdXNoKCIgIik7cD8uYWRkRXh0cmFDaGFyKCIgIil9cHx8ZC5zdHIucHVzaChnKTtjJiYobi52ZXJ0aWNhbD9PLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtYyk6Ty50cmFuc2xhdGVUZXh0TWF0cml4KGMqTy50ZXh0SFNjYWxlLDApKX19ZnVuY3Rpb24gYXBwZW5kRU9MKCl7cD8uYWRkRXh0cmFDaGFyKCJcbiIpO3Jlc2V0TGFzdENoYXJzKCk7aWYody5pbml0aWFsaXplZCl7dy5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIGIuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOk8ubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxuKXtpZihuKncuc3BhY2VJbkZsb3dNaW48PWUmJmU8PW4qdy5zcGFjZUluRmxvd01heCl7aWYody5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt3LnN0ci5wdXNoKCIgIik7cD8uYWRkRXh0cmFDaGFyKCIgIil9cmV0dXJuITF9Y29uc3QgYT13LmZvbnROYW1lO2xldCByPTA7aWYody52ZXJ0aWNhbCl7cj1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhyKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih3LmluaXRpYWxpemVkJiZ3LnN0cil7dy52ZXJ0aWNhbD93LnRvdGFsSGVpZ2h0Kz13LmhlaWdodCp3LnRleHRBZHZhbmNlU2NhbGU6dy50b3RhbFdpZHRoKz13LndpZHRoKncudGV4dEFkdmFuY2VTY2FsZTtiLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh3KSk7dy5pbml0aWFsaXplZD0hMTt3LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9Yi5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe2kuZW5xdWV1ZShiLHQpO2IuaXRlbXM9W107Yi5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgRD1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlQm9keShlLHMpe2NvbnN0IG5leHQ9ZnVuY3Rpb24odCl7ZW5xdWV1ZUNodW5rKCEwKTtQcm9taXNlLmFsbChbdCxpLnJlYWR5XSkudGhlbihmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLHMpfWNhdGNoKGUpe3MoZSl9fSxzKX07dC5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7RC5yZXNldCgpO2NvbnN0IG09e307bGV0IHAsZCx3LGo9W107Zm9yKDshKHA9RC5jaGVjaygpKTspe2oubGVuZ3RoPTA7bS5hcmdzPWo7aWYoIVQucmVhZChtKSlicmVhaztPPWEuc3RhdGU7Unx8PU8uY2xvbmUoKTtjb25zdCBlPW0uZm47aj1tLmFyZ3M7c3dpdGNoKDB8ZSl7Y2FzZSBKZTpjb25zdCBlPWpbMF0ubmFtZSxzPWpbMV07aWYoTy5mb250JiZlPT09Ty5mb250TmFtZSYmcz09PU8uZm9udFNpemUpYnJlYWs7Ty5mb250TmFtZT1lO08uZm9udFNpemU9cztuZXh0KGhhbmRsZVNldEZvbnQoZSxudWxsKSk7cmV0dXJuO2Nhc2UgWmU6Ty50ZXh0UmlzZT1qWzBdO2JyZWFrO2Nhc2UgJGU6Ty50ZXh0SFNjYWxlPWpbMF0vMTAwO2JyZWFrO2Nhc2UgWWU6Ty5sZWFkaW5nPWpbMF07YnJlYWs7Y2FzZSBldDpPLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGpbMF0salsxXSk7Ty50ZXh0TWF0cml4PU8udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHR0Ok8ubGVhZGluZz0talsxXTtPLnRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGpbMF0salsxXSk7Ty50ZXh0TWF0cml4PU8udGV4dExpbmVNYXRyaXguc2xpY2UoKTticmVhaztjYXNlIHJ0Ok8uY2FycmlhZ2VSZXR1cm4oKTticmVhaztjYXNlIG50Ok8uc2V0VGV4dE1hdHJpeChqWzBdLGpbMV0salsyXSxqWzNdLGpbNF0sals1XSk7Ty5zZXRUZXh0TGluZU1hdHJpeChqWzBdLGpbMV0salsyXSxqWzNdLGpbNF0sals1XSk7dXBkYXRlQWR2YW5jZVNjYWxlKCk7YnJlYWs7Y2FzZSBHZTpPLmNoYXJTcGFjaW5nPWpbMF07YnJlYWs7Y2FzZSBWZTpPLndvcmRTcGFjaW5nPWpbMF07YnJlYWs7Y2FzZSBYZTpPLnRleHRNYXRyaXg9a24uc2xpY2UoKTtPLnRleHRMaW5lTWF0cml4PWtuLnNsaWNlKCk7YnJlYWs7Y2FzZSBpdDppZighYS5zdGF0ZS5mb250KXt5LmVuc3VyZVN0YXRlRm9udChhLnN0YXRlKTtjb250aW51ZX1jb25zdCBtPShPLmZvbnQudmVydGljYWw/MTotMSkqTy5mb250U2l6ZS8xZTM7Zm9yKGNvbnN0IGUgb2YgalswXSlpZigic3RyaW5nIj09dHlwZW9mIGUpdi5wdXNoKGUpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlJiYwIT09ZSl7Y29uc3QgdD12LmpvaW4oIiIpO3YubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOnQsZXh0cmFTcGFjaW5nOmUqbX0pfWlmKHYubGVuZ3RoPjApe2NvbnN0IGU9di5qb2luKCIiKTt2Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzowfSl9YnJlYWs7Y2FzZSBzdDppZighYS5zdGF0ZS5mb250KXt5LmVuc3VyZVN0YXRlRm9udChhLnN0YXRlKTtjb250aW51ZX1idWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6alswXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2Ugb3Q6aWYoIWEuc3RhdGUuZm9udCl7eS5lbnN1cmVTdGF0ZUZvbnQoYS5zdGF0ZSk7Y29udGludWV9Ty5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpqWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBsdDppZighYS5zdGF0ZS5mb250KXt5LmVuc3VyZVN0YXRlRm9udChhLnN0YXRlKTtjb250aW51ZX1PLndvcmRTcGFjaW5nPWpbMF07Ty5jaGFyU3BhY2luZz1qWzFdO08uY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6alsyXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgQ3Q6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtTPz89bi5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eTt3PWpbMF1pbnN0YW5jZW9mIE5hbWU7ZD1qWzBdLm5hbWU7aWYodyYmeC5nZXRCeU5hbWUoZCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHMpe2lmKCF3KXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IG09Uy5nZXRSYXcoZCk7aWYobSBpbnN0YW5jZW9mIFJlZil7aWYoeC5nZXRCeVJlZihtKSl7ZSgpO3JldHVybn1pZih5Lmdsb2JhbEltYWdlQ2FjaGUuZ2V0RGF0YShtLHkucGFnZUluZGV4KSl7ZSgpO3JldHVybn1tPXEuZmV0Y2gobSl9aWYoIShtIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBiZSBhIHN0cmVhbSIpO2NvbnN0e2RpY3Q6cH09bSxiPXAuZ2V0KCJTdWJ0eXBlIik7aWYoIShiIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09Yi5uYW1lKXt4LnNldChkLHAub2JqSWQsITApO2UoKTtyZXR1cm59Y29uc3Qgaj1hLnN0YXRlLmNsb25lKCksaz1uZXcgU3RhdGVNYW5hZ2VyKGopLHY9bG9va3VwTWF0cml4KHAuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO3YmJmsudHJhbnNmb3JtKHYpO2NvbnN0IEM9cC5nZXQoIlJlc291cmNlcyIpO2VucXVldWVDaHVuaygpO2NvbnN0IFQ9dGV4dFNpbmtXcmFwcGVyKGkpO3kuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTptLHRhc2s6dCxyZXNvdXJjZXM6QyBpbnN0YW5jZW9mIERpY3Q/QzpuLHN0YXRlTWFuYWdlcjprLGluY2x1ZGVNYXJrZWRDb250ZW50OnIsc2luazpULHNlZW5TdHlsZXM6byx2aWV3Qm94OmwsbGFuZzpmLG1hcmtlZENvbnRlbnREYXRhOmMsZGlzYWJsZU5vcm1hbGl6YXRpb246aCxrZWVwV2hpdGVTcGFjZTp1LHByZXZSZWZzOmd9KS50aGVuKGZ1bmN0aW9uKCl7VC5lbnF1ZXVlSW52b2tlZHx8eC5zZXQoZCxwLm9iaklkLCEwKTtlKCl9LHMpfSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZigheS5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKTtyZXR1cm47Y2FzZSB2ZTp3PWpbMF1pbnN0YW5jZW9mIE5hbWU7ZD1qWzBdLm5hbWU7aWYodyYmQy5nZXRCeU5hbWUoZCkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2lmKCF3KXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBhPW4uZ2V0KCJFeHRHU3RhdGUiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHI9YS5nZXQoZCk7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBzPXIuZ2V0KCJGb250Iik7aWYocyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtPLmZvbnROYW1lPW51bGw7Ty5mb250U2l6ZT1zWzFdO2hhbmRsZVNldEZvbnQobnVsbCxzWzBdKS50aGVuKGUsdCl9ZWxzZXtDLnNldChkLHIub2JqSWQsITApO2UoKX19KS5jYXRjaChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF5Lm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgVHQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihyKXtjLmxldmVsKys7Yi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzpqWzBdaW5zdGFuY2VvZiBOYW1lP2pbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBPdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKHIpe2MubGV2ZWwrKztjb25zdCBlPWpbMV1pbnN0YW5jZW9mIERpY3Q/alsxXS5nZXQoIk1DSUQiKTpudWxsO2IuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiLGlkOk51bWJlci5pc0ludGVnZXIoZSk/YCR7eS5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCl9X21jJHtlfWA6bnVsbCx0YWc6alswXWluc3RhbmNlb2YgTmFtZT9qWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgUnQ6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihyKXtpZigwPT09Yy5sZXZlbClicmVhaztjLmxldmVsLS07Yi5pdGVtcy5wdXNoKHt0eXBlOiJlbmRNYXJrZWRDb250ZW50In0pfX1pZihiLml0ZW1zLmxlbmd0aD49aS5kZXNpcmVkU2l6ZSl7cD0hMDticmVha319aWYocCluZXh0KFdpKTtlbHNle2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7ZW5xdWV1ZUNodW5rKCk7ZSgpfX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpfX0pfWFzeW5jIGV4dHJhY3REYXRhU3RydWN0dXJlcyhlLHQpe2NvbnN0IG49dGhpcy54cmVmO2xldCBhO2NvbnN0IHI9dGhpcy5yZWFkVG9Vbmljb2RlKHQudG9Vbmljb2RlKTtpZih0LmNvbXBvc2l0ZSl7Y29uc3Qgbj1lLmdldCgiQ0lEU3lzdGVtSW5mbyIpO24gaW5zdGFuY2VvZiBEaWN0JiYhdC5jaWRTeXN0ZW1JbmZvJiYodC5jaWRTeXN0ZW1JbmZvPXtyZWdpc3RyeTpzdHJpbmdUb1BERlN0cmluZyhuLmdldCgiUmVnaXN0cnkiKSksb3JkZXJpbmc6c3RyaW5nVG9QREZTdHJpbmcobi5nZXQoIk9yZGVyaW5nIikpLHN1cHBsZW1lbnQ6bi5nZXQoIlN1cHBsZW1lbnQiKX0pO3RyeXtjb25zdCB0PWUuZ2V0KCJDSURUb0dJRE1hcCIpO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoYT10LmdldEJ5dGVzKCkpfWNhdGNoKGUpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzIC0gaWdub3JpbmcgQ0lEVG9HSURNYXAgZGF0YTogIiR7ZX0iLmApfX1jb25zdCBzPVtdO2xldCBpLG89bnVsbDtpZihlLmhhcygiRW5jb2RpbmciKSl7aT1lLmdldCgiRW5jb2RpbmciKTtpZihpIGluc3RhbmNlb2YgRGljdCl7bz1pLmdldCgiQmFzZUVuY29kaW5nIik7bz1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtpZihpLmhhcygiRGlmZmVyZW5jZXMiKSl7Y29uc3QgZT1pLmdldCgiRGlmZmVyZW5jZXMiKTtsZXQgdD0wO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9bi5mZXRjaElmUmVmKGEpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZW50cnkgaW4gJ0RpZmZlcmVuY2VzJyBhcnJheTogJHtlfWApO3NbdCsrXT1lLm5hbWV9fX19ZWxzZSBpZihpIGluc3RhbmNlb2YgTmFtZSlvPWkubmFtZTtlbHNle2NvbnN0IGU9IkVuY29kaW5nIGlzIG5vdCBhIE5hbWUgbm9yIGEgRGljdCI7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGUpO3dhcm4oZSl9Ik1hY1JvbWFuRW5jb2RpbmciIT09byYmIk1hY0V4cGVydEVuY29kaW5nIiE9PW8mJiJXaW5BbnNpRW5jb2RpbmciIT09byYmKG89bnVsbCl9Y29uc3QgbD0hdC5maWxlfHx0LmlzSW50ZXJuYWxGb250LGY9VmEoKVt0Lm5hbWVdO28mJmwmJmYmJihvPW51bGwpO2lmKCJXaW5BbnNpRW5jb2RpbmciPT09byYmbCYmdC5uYW1lPy5jaGFyQ29kZUF0KDApPj0xODMpe2NvbnN0IGU9dC5uYW1lO2lmKFsiw4vDjsOMw6UiLCLCusOaw4zDpSIsIsK/wqzDjMOlIiwiwrfDgsOLw44iLCLCv8Ksw4zDpV9HQjIzMTIiLCLCt8OCw4vDjl9HQjIzMTIiLCLDgcKlw4rDqSIsIsOQw4LDi8OOIiwiwrfDgsOLw47DjMOlIiwiw5DCocKxw6rDi8OOIl0uaW5jbHVkZXMoZSkpe289bnVsbDt0LmRlZmF1bHRFbmNvZGluZz0iQWRvYmUtR0IxLVVDUzIiO3QuY29tcG9zaXRlPSEwO3QuY2lkRW5jb2Rpbmc9TmFtZS5nZXQoIkdCSy1FVUMtSCIpO2NvbnN0IGU9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzp0LmNpZEVuY29kaW5nLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3QuY01hcD1lO3QudmVydGljYWw9dC5jTWFwLnZlcnRpY2FsO3QuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6IkFkb2JlIixvcmRlcmluZzoiR0IxIixzdXBwbGVtZW50OjB9fX1pZihvKXQuZGVmYXVsdEVuY29kaW5nPWdldEVuY29kaW5nKG8pO2Vsc2V7bGV0IGU9ISEodC5mbGFncyZGYSk7Y29uc3Qgbj0hISh0LmZsYWdzJlRhKTtpZigiVHJ1ZVR5cGUiPT09dC50eXBlJiZlJiZuJiYwIT09cy5sZW5ndGgpe3QuZmxhZ3MmPX5GYTtlPSExfWk9YmE7IlRydWVUeXBlIiE9PXQudHlwZXx8bnx8KGk9d2EpO2lmKGV8fGYpe2k9Z2E7bCYmKC9TeW1ib2wvaS50ZXN0KHQubmFtZSk/aT1qYTovRGluZ2JhdHMvaS50ZXN0KHQubmFtZSk/aT1rYTovV2luZ2RpbmdzL2kudGVzdCh0Lm5hbWUpJiYoaT13YSkpfXQuZGVmYXVsdEVuY29kaW5nPWl9dC5kaWZmZXJlbmNlcz1zO3QuYmFzZUVuY29kaW5nTmFtZT1vO3QuaGFzRW5jb2Rpbmc9ISFvfHxzLmxlbmd0aD4wO3QuZGljdD1lO3QudG9Vbmljb2RlPWF3YWl0IHI7Y29uc3QgYz1hd2FpdCB0aGlzLmJ1aWxkVG9Vbmljb2RlKHQpO3QudG9Vbmljb2RlPWM7YSYmKHQuY2lkVG9HaWRNYXA9dGhpcy5yZWFkQ2lkVG9HaWRNYXAoYSxjKSk7cmV0dXJuIHR9X3NpbXBsZUZvbnRUb1VuaWNvZGUoZSx0PSExKXthc3NlcnQoIWUuY29tcG9zaXRlLCJNdXN0IGJlIGEgc2ltcGxlIGZvbnQuIik7Y29uc3Qgbj1bXSxhPWUuZGVmYXVsdEVuY29kaW5nLnNsaWNlKCkscj1lLmJhc2VFbmNvZGluZ05hbWUscz1lLmRpZmZlcmVuY2VzO2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IHQ9c1tlXTsiLm5vdGRlZiIhPT10JiYoYVtlXT10KX1jb25zdCBpPXlhKCk7Zm9yKGNvbnN0IHMgaW4gYSl7bGV0IG89YVtzXTtpZigiIj09PW8pY29udGludWU7bGV0IGw9aVtvXTtpZih2b2lkIDAhPT1sKXtuW3NdPVN0cmluZy5mcm9tQ2hhckNvZGUobCk7Y29udGludWV9bGV0IGY9MDtzd2l0Y2gob1swXSl7Y2FzZSJHIjozPT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJnIjo1PT09by5sZW5ndGgmJihmPXBhcnNlSW50KG8uc3Vic3RyaW5nKDEpLDE2KSk7YnJlYWs7Y2FzZSJDIjpjYXNlImMiOmlmKG8ubGVuZ3RoPj0zJiZvLmxlbmd0aDw9NCl7Y29uc3Qgbj1vLnN1YnN0cmluZygxKTtpZih0KXtmPXBhcnNlSW50KG4sMTYpO2JyZWFrfWY9K247aWYoTnVtYmVyLmlzTmFOKGYpJiZOdW1iZXIuaXNJbnRlZ2VyKHBhcnNlSW50KG4sMTYpKSlyZXR1cm4gdGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlLCEwKX1icmVhaztjYXNlInUiOmw9Z2V0VW5pY29kZUZvckdseXBoKG8saSk7LTEhPT1sJiYoZj1sKTticmVhaztkZWZhdWx0OnN3aXRjaChvKXtjYXNlImZfaCI6Y2FzZSJmX3QiOmNhc2UiVF9oIjpuW3NdPW8ucmVwbGFjZUFsbCgiXyIsIiIpO2NvbnRpbnVlfX1pZihmPjAmJmY8PTExMTQxMTEmJk51bWJlci5pc0ludGVnZXIoZikpe2lmKHImJmY9PT0rcyl7Y29uc3QgZT1nZXRFbmNvZGluZyhyKTtpZihlJiYobz1lW3NdKSl7bltzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGlbb10pO2NvbnRpbnVlfX1uW3NdPVN0cmluZy5mcm9tQ29kZVBvaW50KGYpfX1yZXR1cm4gbn1hc3luYyBidWlsZFRvVW5pY29kZShlKXtlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwPWUudG9Vbmljb2RlPy5sZW5ndGg+MDtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXshZS5jb21wb3NpdGUmJmUuaGFzRW5jb2RpbmcmJihlLmZhbGxiYWNrVG9Vbmljb2RlPXRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO3JldHVybiBlLnRvVW5pY29kZX1pZighZS5jb21wb3NpdGUpcmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAodGhpcy5fc2ltcGxlRm9udFRvVW5pY29kZShlKSk7aWYoZS5jb21wb3NpdGUmJihlLmNNYXAuYnVpbHRJbkNNYXAmJiEoZS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXx8IkFkb2JlIj09PWUuY2lkU3lzdGVtSW5mbz8ucmVnaXN0cnkmJigiR0IxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkNOUzEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nfHwiSmFwYW4xIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IktvcmVhMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmcpKSl7Y29uc3R7cmVnaXN0cnk6dCxvcmRlcmluZzpufT1lLmNpZFN5c3RlbUluZm8sYT1OYW1lLmdldChgJHt0fS0ke259LVVDUzJgKSxyPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6YSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KSxzPVtdLGk9W107ZS5jTWFwLmZvckVhY2goZnVuY3Rpb24oZSx0KXtpZih0PjY1NTM1KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2NvbnN0IG49ci5sb29rdXAodCk7aWYobil7aS5sZW5ndGg9MDtmb3IobGV0IGU9MCx0PW4ubGVuZ3RoO2U8dDtlKz0yKWkucHVzaCgobi5jaGFyQ29kZUF0KGUpPDw4KStuLmNoYXJDb2RlQXQoZSsxKSk7c1tlXT1TdHJpbmcuZnJvbUNoYXJDb2RlKC4uLmkpfX0pO3JldHVybiBuZXcgVG9Vbmljb2RlTWFwKHMpfXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoZS5maXJzdENoYXIsZS5sYXN0Q2hhcil9YXN5bmMgcmVhZFRvVW5pY29kZShlKXtpZighZSlyZXR1cm4gbnVsbDtpZihlIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXA/bmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBUb1VuaWNvZGVNYXAodC5nZXRNYXAoKSl9aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pdHJ5e2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO2lmKHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApcmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTtjb25zdCBuPW5ldyBBcnJheSh0Lmxlbmd0aCk7dC5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXtuW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KHQpO3JldHVybn10Lmxlbmd0aCUyIT0wJiYodD0iXDAiK3QpO2NvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtjb25zdCBuPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTtpZig1NTI5NiE9KDYzNDg4Jm4pKXthLnB1c2gobik7Y29udGludWV9ZSs9Mjtjb25zdCByPXQuY2hhckNvZGVBdChlKTw8OHx0LmNoYXJDb2RlQXQoZSsxKTthLnB1c2goKCgxMDIzJm4pPDwxMCkrKDEwMjMmcikrNjU1MzYpfW5bZV09U3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uYSl9KTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChuKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcmVhZFRvVW5pY29kZSAtIGlnbm9yaW5nIFRvVW5pY29kZSBkYXRhOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX1yZXR1cm4gbnVsbH1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBuPVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lW2ErK108PDh8ZVthXSxzPWE+PjE7KDAhPT1yfHx0LmhhcyhzKSkmJihuW3NdPXIpfXJldHVybiBufWV4dHJhY3RXaWR0aHMoZSx0LG4pe2NvbnN0IGE9dGhpcy54cmVmO2xldCByPVtdLHM9MDtjb25zdCBpPVtdO2xldCBvO2lmKG4uY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJEVyIpO3M9Im51bWJlciI9PXR5cGVvZiB0P01hdGguY2VpbCh0KToxZTM7Y29uc3QgbD1lLmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkobCkpZm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1hLmZldGNoSWZSZWYobFtlKytdKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlicmVhaztjb25zdCBuPWEuZmV0Y2hJZlJlZihsW2VdKTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihjb25zdCBlIG9mIG4pe2NvbnN0IG49YS5mZXRjaElmUmVmKGUpOyJudW1iZXIiPT10eXBlb2YgbiYmKHJbdF09bik7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIobikpYnJlYWs7e2NvbnN0IHM9YS5mZXRjaElmUmVmKGxbKytlXSk7aWYoIm51bWJlciIhPXR5cGVvZiBzKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PW47ZSsrKXJbZV09c319fWlmKG4udmVydGljYWwpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiRFcyIik7bGV0IG49aXNOdW1iZXJBcnJheSh0LDIpP3Q6Wzg4MCwtMWUzXTtvPVtuWzFdLC41KnMsblswXV07bj1lLmdldCgiVzIiKTtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9YS5mZXRjaElmUmVmKG5bZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3Qgcj1hLmZldGNoSWZSZWYobltlXSk7aWYoQXJyYXkuaXNBcnJheShyKSlmb3IobGV0IGU9MCxuPXIubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49W2EuZmV0Y2hJZlJlZihyW2UrK10pLGEuZmV0Y2hJZlJlZihyW2UrK10pLGEuZmV0Y2hJZlJlZihyW2VdKV07aXNOdW1iZXJBcnJheShuLG51bGwpJiYoaVt0XT1uKTt0Kyt9ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihyKSlicmVhazt7Y29uc3Qgcz1bYS5mZXRjaElmUmVmKG5bKytlXSksYS5mZXRjaElmUmVmKG5bKytlXSksYS5mZXRjaElmUmVmKG5bKytlXSldO2lmKCFpc051bWJlckFycmF5KHMsbnVsbCkpY29udGludWU7Zm9yKGxldCBlPXQ7ZTw9cjtlKyspaVtlXT1zfX19fX1lbHNle2NvbnN0IGk9ZS5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2xldCBlPW4uZmlyc3RDaGFyO2Zvcihjb25zdCB0IG9mIGkpe2NvbnN0IG49YS5mZXRjaElmUmVmKHQpOyJudW1iZXIiPT10eXBlb2YgbiYmKHJbZV09bik7ZSsrfWNvbnN0IG89dC5nZXQoIk1pc3NpbmdXaWR0aCIpO3M9Im51bWJlciI9PXR5cGVvZiBvP286MH1lbHNle2NvbnN0IHQ9ZS5nZXQoIkJhc2VGb250Iik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGU9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3ModC5uYW1lKTtyPXRoaXMuYnVpbGRDaGFyQ29kZVRvV2lkdGgoZS53aWR0aHMsbik7cz1lLmRlZmF1bHRXaWR0aH19fWxldCBsPSEwLGY9cztmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodClpZihmKXtpZihmIT09dCl7bD0hMTticmVha319ZWxzZSBmPXR9bD9uLmZsYWdzfD1DYTpuLmZsYWdzJj1+Q2E7bi5kZWZhdWx0V2lkdGg9cztuLndpZHRocz1yO24uZGVmYXVsdFZNZXRyaWNzPW87bi52bWV0cmljcz1pfWlzU2VyaWZGb250KGUpe2NvbnN0IHQ9ZS5zcGxpdCgiLSIsMSlbMF07cmV0dXJuIHQgaW4gR2EoKXx8L3NlcmlmL2kudGVzdCh0KX1nZXRCYXNlRm9udE1ldHJpY3MoZSl7bGV0IHQ9MCxuPU9iamVjdC5jcmVhdGUobnVsbCksYT0hMSxyPW5vcm1hbGl6ZUZvbnROYW1lKGUpO3I9V2EoKVtyXXx8cjtjb25zdCBzPWVyKCksaT1zW3JdPz9zW3RoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIl07aWYoIm51bWJlciI9PXR5cGVvZiBpKXt0PWk7YT0hMH1lbHNlIG49aSgpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6YSx3aWR0aHM6bn19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCksYT10LmRpZmZlcmVuY2VzLHI9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gYSYmZVthW3RdXT9uW3RdPWVbYVt0XV06dCBpbiByJiZlW3JbdF1dJiYoblt0XT1lW3JbdF1dKTtyZXR1cm4gbn1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBuPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShuIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCBhLHI9ITE7aWYoIlR5cGUwIj09PW4ubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO249ZS5nZXQoIlN1YnR5cGUiKTtpZighKG4gaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7cj0hMH1sZXQgcz1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9MCk7bGV0IGk9ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihpKXx8KGk9cj82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksbD1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXthPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBvPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKG8gaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKG8ubmFtZSk7ZWxzZSBpZihvIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKG8udG9TdHJpbmcoKSk7ZWxzZSBpZihvIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBvLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKWEudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKWEudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLG49bmV3IEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDthKyspe2NvbnN0IHQ9ZVthXTt0IGluc3RhbmNlb2YgTmFtZT9uW2FdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKG5bYV09dC50b1N0cmluZygpKX1hLnVwZGF0ZShuLmpvaW4oKSl9YS51cGRhdGUoYCR7c30tJHtpfWApO2lmKGwgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWwuc3RyZWFtfHxsLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7YS51cGRhdGUodCl9ZWxzZSBsIGluc3RhbmNlb2YgTmFtZSYmYS51cGRhdGUobC5uYW1lKTtjb25zdCBmPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkoZikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgZikoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7YS51cGRhdGUoZS5qb2luKCkpfWlmKHIpe2EudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3Qgbj1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbilpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBuPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJm4ucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7bi5qb2luKCl9XWApfWEudXBkYXRlKGUuam9pbigpKX1jb25zdCByPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtyIGluc3RhbmNlb2YgTmFtZT9hLnVwZGF0ZShyLm5hbWUpOnIgaW5zdGFuY2VvZiBSZWY/YS51cGRhdGUoci50b1N0cmluZygpKTpyIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS51cGRhdGUoci5wZWVrQnl0ZXMoKSl9aWYoIlR5cGUzIj09PW4ubmFtZSl7Y29uc3QgZT10LmdldCgiQ2hhclByb2NzIik7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W3Qsbl1vZiBlLmdldFJhd0VudHJpZXMoKSlhLnVwZGF0ZShuIGluc3RhbmNlb2YgUmVmP2Ake3R9XDAke259YDp0KX19cmV0dXJue2Rlc2NyaXB0b3I6byxkaWN0OmUsYmFzZURpY3Q6dCxjb21wb3NpdGU6cix0eXBlOm4ubmFtZSxmaXJzdENoYXI6cyxsYXN0Q2hhcjppLHRvVW5pY29kZTpsLGhhc2g6YT9hLmhleGRpZ2VzdCgpOiIifX1hc3luYyB0cmFuc2xhdGVGb250KHtkZXNjcmlwdG9yOmUsZGljdDp0LGJhc2VEaWN0Om4sY29tcG9zaXRlOmEsdHlwZTpyLGZpcnN0Q2hhcjppLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmwsY3NzRm9udEluZm86Zn0pe2NvbnN0IGM9IlR5cGUzIj09PXI7aWYoIWUpaWYoYyllPURpY3QuZW1wdHk7ZWxzZXtpZighYSl7bGV0IGU9dC5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9bm9ybWFsaXplRm9udE5hbWUoZS5uYW1lKTtjb25zdCBhPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGUpLHM9ZS5zcGxpdCgiLSIsMSlbMF0sZj0odGhpcy5pc1NlcmlmRm9udChzKT9JYTowKXwoYS5tb25vc3BhY2U/Q2E6MCl8KFZhKClbc10/RmE6VGEpLGg9e3R5cGU6cixuYW1lOmUsbG9hZGVkTmFtZTpuLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6YS53aWR0aHMsZGVmYXVsdFdpZHRoOmEuZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6ZixmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250OmN9LHU9dC5nZXQoIldpZHRocyIpLG09Z2V0U3RhbmRhcmRGb250TmFtZShlKTtsZXQgcD1udWxsO2lmKG0pe3A9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEobSk7aC5pc0ludGVybmFsRm9udD0hIXB9IWguaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGguc3lzdGVtRm9udEluZm89Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLG0scikpO2NvbnN0IGQ9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxoKTtpZihBcnJheS5pc0FycmF5KHUpKXtjb25zdCBlPVtdO2xldCB0PWk7Zm9yKGNvbnN0IG4gb2YgdSl7Y29uc3QgYT10aGlzLnhyZWYuZmV0Y2hJZlJlZihuKTsibnVtYmVyIj09dHlwZW9mIGEmJihlW3RdPWEpO3QrK31kLndpZHRocz1lfWVsc2UgZC53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChhLndpZHRocyxkKTtyZXR1cm4gbmV3IEZvbnQoZSxwLGQsdGhpcy5vcHRpb25zKX1lPURpY3QuZW1wdHl9bGV0IGg9ZS5nZXQoIkZvbnROYW1lIiksdT10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIGgmJihoPU5hbWUuZ2V0KGgpKTsic3RyaW5nIj09dHlwZW9mIHUmJih1PU5hbWUuZ2V0KHUpKTtjb25zdCBtPWg/Lm5hbWUscD11Py5uYW1lO2lmKGMpbXx8KGg9TmFtZS5nZXQocikpO2Vsc2UgaWYobSE9PXApe2luZm8oYFRoZSBGb250RGVzY3JpcHRvcidzIEZvbnROYW1lIGlzICIke219IiBidXQgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSBGb250J3MgQmFzZUZvbnQgIiR7cH0iLmApO20mJnAmJihwLnN0YXJ0c1dpdGgobSl8fCFpc0tub3duRm9udE5hbWUobSkmJmlzS25vd25Gb250TmFtZShwKSkmJihoPW51bGwpO2h8fD11fWlmKCEoaCBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IG5hbWUiKTtsZXQgZCxnLGIsdyxqLGs7dHJ5e2Zvcihjb25zdCB0IG9mWyJGb250RmlsZSIsIkZvbnRGaWxlMiIsIkZvbnRGaWxlMyJdKXtkPWUuZ2V0KHQpO2lmKGQpe2c9dDticmVha319aWYoZCl7aWYoIShkIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBzaG91bGQgYmUgYSBzdHJlYW0iKTtpZihkLmlzQXN5bmMpe2NvbnN0IGU9YXdhaXQgZC5hc3luY0dldEJ5dGVzKCk7ZSYmKGQ9bmV3IFN0cmVhbShlLDAsZS5sZW5ndGgsZC5kaWN0KSl9aWYoZC5pc0VtcHR5KXRocm93IG5ldyBGb3JtYXRFcnJvcigiRm9udEZpbGUgaXMgZW1wdHkiKX19Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGB0cmFuc2xhdGVGb250IC0gZmV0Y2hpbmcgIiR7aC5uYW1lfSIgZm9udCBmaWxlOiAiJHtlfSIuYCk7ZD1udWxsfWxldCB5PSExLHE9bnVsbCx2PW51bGw7aWYoZCl7aWYoZC5kaWN0KXtjb25zdCBlPWQuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgTmFtZSYmKGI9ZS5uYW1lKTt3PWQuZGljdC5nZXQoIkxlbmd0aDEiKTtqPWQuZGljdC5nZXQoIkxlbmd0aDIiKTtrPWQuZGljdC5nZXQoIkxlbmd0aDMiKX19ZWxzZSBpZihmKXtjb25zdCBlPWdldFhmYUZvbnROYW1lKGgubmFtZSk7aWYoZSl7Zi5mb250RmFtaWx5PWAke2YuZm9udEZhbWlseX0tUGRmSlMtWEZBYDtmLm1ldHJpY3M9ZS5tZXRyaWNzfHxudWxsO3E9ZS5mYWN0b3JzfHxudWxsO2Q9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZS5uYW1lKTt5PSEhZDtuPXQ9Z2V0WGZhRm9udERpY3QoaC5uYW1lKTthPSEwfX1lbHNlIGlmKCFjKXtjb25zdCBlPWdldFN0YW5kYXJkRm9udE5hbWUoaC5uYW1lKTtpZihlKXtkPWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUpO3k9ISFkfSF5JiZ0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJih2PWdldEZvbnRTdWJzdGl0dXRpb24odGhpcy5zeXN0ZW1Gb250Q2FjaGUsdGhpcy5pZEZhY3RvcnksdGhpcy5vcHRpb25zLnN0YW5kYXJkRm9udERhdGFVcmwsaC5uYW1lLGUscikpfWNvbnN0IFM9bG9va3VwTWF0cml4KHQuZ2V0QXJyYXkoIkZvbnRNYXRyaXgiKSxzKSx4PWxvb2t1cE5vcm1hbFJlY3QoZS5nZXRBcnJheSgiRm9udEJCb3giKXx8dC5nZXRBcnJheSgiRm9udEJCb3giKSxjP1swLDAsMCwwXTp2b2lkIDApO2xldCBDPWUuZ2V0KCJBc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIEMmJihDPXZvaWQgMCk7bGV0IFQ9ZS5nZXQoIkRlc2NlbnQiKTsibnVtYmVyIiE9dHlwZW9mIFQmJihUPXZvaWQgMCk7bGV0IE89ZS5nZXQoIlhIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIE8mJihPPTApO2xldCBSPWUuZ2V0KCJDYXBIZWlnaHQiKTsibnVtYmVyIiE9dHlwZW9mIFImJihSPTApO2xldCBEPWUuZ2V0KCJGbGFncyIpO051bWJlci5pc0ludGVnZXIoRCl8fChEPTApO2xldCBIPWUuZ2V0KCJJdGFsaWNBbmdsZSIpOyJudW1iZXIiIT10eXBlb2YgSCYmKEg9MCk7Y29uc3QgTT17dHlwZTpyLG5hbWU6aC5uYW1lLHN1YnR5cGU6YixmaWxlOmQsZm9udEZpbGVOOmcsbGVuZ3RoMTp3LGxlbmd0aDI6aixsZW5ndGgzOmssaXNJbnRlcm5hbEZvbnQ6eSxsb2FkZWROYW1lOm4ubG9hZGVkTmFtZSxjb21wb3NpdGU6YSxmaXhlZFBpdGNoOiExLGZvbnRNYXRyaXg6UyxmaXJzdENoYXI6aSxsYXN0Q2hhcjpvLHRvVW5pY29kZTpsLGJib3g6eCxhc2NlbnQ6QyxkZXNjZW50OlQseEhlaWdodDpPLGNhcEhlaWdodDpSLGZsYWdzOkQsaXRhbGljQW5nbGU6SCxpc1R5cGUzRm9udDpjLGNzc0ZvbnRJbmZvOmYsc2NhbGVGYWN0b3JzOnEsc3lzdGVtRm9udEluZm86dn07aWYoYSl7Y29uc3QgZT1uLmdldCgiRW5jb2RpbmciKTtlIGluc3RhbmNlb2YgTmFtZSYmKE0uY2lkRW5jb2Rpbmc9ZS5uYW1lKTtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtNLmNNYXA9dDtNLnZlcnRpY2FsPU0uY01hcC52ZXJ0aWNhbH1jb25zdCBOPWF3YWl0IHRoaXMuZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKHQsTSk7dGhpcy5leHRyYWN0V2lkdGhzKHQsZSxOKTtjb25zdCBfPW5ldyBGb250KGgubmFtZSxkLE4sdGhpcy5vcHRpb25zKTtpZihfLm1pc3NpbmdGaWxlJiYhXy5zeXN0ZW1Gb250SW5mbyYmIWMmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGgubmFtZSksdD1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGgubmFtZSxlLHIpO2lmKHQpe2lmKHQuZ3Vlc3NGYWxsYmFjayl7dC5ndWVzc0ZhbGxiYWNrPSExO3QuY3NzKz1gLCR7Xy5mYWxsYmFja05hbWV9YH1fLnN5c3RlbUZvbnRJbmZvPXR9fXJldHVybiBffXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsbixhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcj1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2NvbnN0IGE9ZS5yZW5kZXJlci5nZXRQYXRoKHQpO2lmKCFhKXJldHVybjtuLnNlbmQoImNvbW1vbm9iaiIsW3IsIkZvbnRQYXRoIixhXSxbYV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7cn0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250eyNZZT0hMTsjSmU9bnVsbDtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0Om59KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9bjt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsfXNlbmQoZSl7aWYodGhpcy4jWWUpcmV0dXJuO3RoaXMuI1llPSEwO2NvbnN0IHQ9dGhpcy5mb250LmV4cG9ydERhdGEoKSxuPXQuYnVmZmVyP1t0LmJ1ZmZlcl06bnVsbDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdF0sbil9ZmFsbGJhY2soZSx0KXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHQpfX1sb2FkVHlwZTNEYXRhKGUsdCxuLGE9bnVsbCl7aWYodGhpcy4jSmUpcmV0dXJuIHRoaXMuI0plO2NvbnN0e2ZvbnQ6cix0eXBlM0RlcGVuZGVuY2llczpzfT10aGlzO2Fzc2VydChyLmlzVHlwZTNGb250LCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBpPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLG89bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIW8uaGFzKHRoaXMuZGljdC5vYmpJZCkmJm8ucHV0KHRoaXMuZGljdC5vYmpJZCk7aS50eXBlM0ZvbnRSZWZzPW87bGV0IGw9UHJvbWlzZS5yZXNvbHZlKCk7Y29uc3QgZj10aGlzLmRpY3QuZ2V0KCJDaGFyUHJvY3MiKSxjPXRoaXMuZGljdC5nZXQoIlJlc291cmNlcyIpfHx0LGg9T2JqZWN0LmNyZWF0ZShudWxsKSxbdSxtLHAsZF09ci5iYm94LGc9cC11LGI9ZC1tLHc9TWF0aC5oeXBvdChnLGIpO2Zvcihjb25zdCBlIG9mIGYuZ2V0S2V5cygpKWw9bC50aGVuKCgpPT57Y29uc3QgdD1mLmdldChlKSxyPW5ldyBPcGVyYXRvckxpc3Q7cmV0dXJuIGkuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOm4scmVzb3VyY2VzOmMsb3BlcmF0b3JMaXN0OnIscHJldlJlZnM6YX0pLnRoZW4oKCk9Pntzd2l0Y2goci5mbkFycmF5WzBdKXtjYXNlIGN0OnRoaXMuI1FlKHIsdyk7YnJlYWs7Y2FzZSBmdDp3fHx0aGlzLiNaZShyKX1oW2VdPXIuZ2V0SVIoKTtmb3IoY29uc3QgZSBvZiByLmRlcGVuZGVuY2llcylzLmFkZChlKX0pLmNhdGNoKGZ1bmN0aW9uKHQpe3dhcm4oYFR5cGUzIGZvbnQgcmVzb3VyY2UgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7Y29uc3Qgbj1uZXcgT3BlcmF0b3JMaXN0O2hbZV09bi5nZXRJUigpfSl9KTt0aGlzLiNKZT1sLnRoZW4oKCk9PntyLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWg7aWYodGhpcy5fYmJveCl7ci5pc0NoYXJCQm94PSEwO3IuYmJveD10aGlzLl9iYm94fX0pO3JldHVybiB0aGlzLiNKZX0jUWUoZSx0PU5hTil7Y29uc3Qgbj1VdGlsLm5vcm1hbGl6ZVJlY3QoZS5hcmdzQXJyYXlbMF0uc2xpY2UoMikpLHI9blsyXS1uWzBdLHM9blszXS1uWzFdLGk9TWF0aC5oeXBvdChyLHMpO2lmKDA9PT1yfHwwPT09cyl7ZS5mbkFycmF5LnNwbGljZSgwLDEpO2UuYXJnc0FycmF5LnNwbGljZSgwLDEpfWVsc2UgaWYoMD09PXR8fE1hdGgucm91bmQoaS90KT49MTApe3RoaXMuX2Jib3g/Pz1hLnNsaWNlKCk7VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4ubix0aGlzLl9iYm94KX1sZXQgbz0wLGw9ZS5sZW5ndGg7Zm9yKDtvPGw7KXtzd2l0Y2goZS5mbkFycmF5W29dKXtjYXNlIGN0OmJyZWFrO2Nhc2UgaHQ6Y2FzZSB1dDpjYXNlIG10OmNhc2UgcHQ6Y2FzZSBkdDpjYXNlIGd0OmNhc2UgYnQ6Y2FzZSB3dDpjYXNlIGp0OmNhc2Uga3Q6Y2FzZSB5dDpjYXNlIHF0OmNhc2UgdnQ6Y2FzZSB5ZTplLmZuQXJyYXkuc3BsaWNlKG8sMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKG8sMSk7bC0tO2NvbnRpbnVlO2Nhc2UgdmU6Y29uc3RbdF09ZS5hcmdzQXJyYXlbb107bGV0IG49MCxhPXQubGVuZ3RoO2Zvcig7bjxhOyl7Y29uc3RbZV09dFtuXTtzd2l0Y2goZSl7Y2FzZSJUUiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjp0LnNwbGljZShuLDEpO2EtLTtjb250aW51ZX1uKyt9fW8rK319I1plKGUpe2xldCB0PTE7Y29uc3Qgbj1lLmxlbmd0aDtmb3IoO3Q8bjspe2lmKGUuZm5BcnJheVt0XT09PSR0KXtjb25zdCBuPWUuYXJnc0FycmF5W3RdWzJdO3RoaXMuX2Jib3g/Pz1hLnNsaWNlKCk7VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4ubix0aGlzLl9iYm94KX10Kyt9fX1jbGFzcyBTdGF0ZU1hbmFnZXJ7Y29uc3RydWN0b3IoZT1uZXcgRXZhbFN0YXRlKXt0aGlzLnN0YXRlPWU7dGhpcy5zdGF0ZVN0YWNrPVtdfXNhdmUoKXtjb25zdCBlPXRoaXMuc3RhdGU7dGhpcy5zdGF0ZVN0YWNrLnB1c2godGhpcy5zdGF0ZSk7dGhpcy5zdGF0ZT1lLmNsb25lKCl9cmVzdG9yZSgpe2NvbnN0IGU9dGhpcy5zdGF0ZVN0YWNrLnBvcCgpO2UmJih0aGlzLnN0YXRlPWUpfXRyYW5zZm9ybShlKXt0aGlzLnN0YXRlLmN0bT1VdGlsLnRyYW5zZm9ybSh0aGlzLnN0YXRlLmN0bSxlKX19Y2xhc3MgVGV4dFN0YXRle2N0bT1uZXcgRmxvYXQzMkFycmF5KGtuKTtmb250TmFtZT1udWxsO2ZvbnRTaXplPTA7bG9hZGVkTmFtZT1udWxsO2ZvbnQ9bnVsbDtmb250TWF0cml4PXM7dGV4dE1hdHJpeD1rbi5zbGljZSgpO3RleHRMaW5lTWF0cml4PWtuLnNsaWNlKCk7Y2hhclNwYWNpbmc9MDt3b3JkU3BhY2luZz0wO2xlYWRpbmc9MDt0ZXh0SFNjYWxlPTE7dGV4dFJpc2U9MDtzZXRUZXh0TWF0cml4KGUsdCxuLGEscixzKXtjb25zdCBpPXRoaXMudGV4dE1hdHJpeDtpWzBdPWU7aVsxXT10O2lbMl09bjtpWzNdPWE7aVs0XT1yO2lbNV09c31zZXRUZXh0TGluZU1hdHJpeChlLHQsbixhLHIscyl7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbMF09ZTtpWzFdPXQ7aVsyXT1uO2lbM109YTtpWzRdPXI7aVs1XT1zfXRyYW5zbGF0ZVRleHRNYXRyaXgoZSx0KXtjb25zdCBuPXRoaXMudGV4dE1hdHJpeDtuWzRdPW5bMF0qZStuWzJdKnQrbls0XTtuWzVdPW5bMV0qZStuWzNdKnQrbls1XX10cmFuc2xhdGVUZXh0TGluZU1hdHJpeChlLHQpe2NvbnN0IG49dGhpcy50ZXh0TGluZU1hdHJpeDtuWzRdPW5bMF0qZStuWzJdKnQrbls0XTtuWzVdPW5bMV0qZStuWzNdKnQrbls1XX1jYXJyaWFnZVJldHVybigpe3RoaXMudHJhbnNsYXRlVGV4dExpbmVNYXRyaXgoMCwtdGhpcy5sZWFkaW5nKTt0aGlzLnRleHRNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpfWNsb25lKCl7Y29uc3QgZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUodGhpcyksdGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2N0bT1uZXcgRmxvYXQzMkFycmF5KGtuKTtmb250PW51bGw7dGV4dFJlbmRlcmluZ01vZGU9QztfZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7X3N0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7cGF0dGVybkZpbGxDb2xvclNwYWNlPW51bGw7cGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9bnVsbDtjdXJyZW50UG9pbnRYPTA7Y3VycmVudFBvaW50WT0wO3BhdGhNaW5NYXg9ci5zbGljZSgpO3BhdGhCdWZmZXI9W107Z2V0IGZpbGxDb2xvclNwYWNlKCl7cmV0dXJuIHRoaXMuX2ZpbGxDb2xvclNwYWNlfXNldCBmaWxsQ29sb3JTcGFjZShlKXt0aGlzLl9maWxsQ29sb3JTcGFjZT10aGlzLnBhdHRlcm5GaWxsQ29sb3JTcGFjZT1lfWdldCBzdHJva2VDb2xvclNwYWNlKCl7cmV0dXJuIHRoaXMuX3N0cm9rZUNvbG9yU3BhY2V9c2V0IHN0cm9rZUNvbG9yU3BhY2UoZSl7dGhpcy5fc3Ryb2tlQ29sb3JTcGFjZT10aGlzLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlPWV9Y2xvbmUoe25ld1BhdGg6ZT0hMX09e30pe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTtpZihlKXt0LnBhdGhCdWZmZXI9W107dC5wYXRoTWluTWF4PXIuc2xpY2UoKX1yZXR1cm4gdH19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIm9wTWFwIixPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCkse3c6e2lkOmdlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEo6e2lkOmJlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGo6e2lkOndlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LE06e2lkOmplLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGQ6e2lkOmtlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LHJpOntpZDp5ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxpOntpZDpxZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnczp7aWQ6dmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0scTp7aWQ6U2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sUTp7aWQ6QWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sY206e2lkOnhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LG06e2lkOkNlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGw6e2lkOkllLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGM6e2lkOkZlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LHY6e2lkOlRlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHk6e2lkOk9lLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGg6e2lkOlJlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHJlOntpZDpCZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxTOntpZDpEZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxzOntpZDpIZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxmOntpZDpNZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxGOntpZDpNZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiZioiOntpZDpOZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCOntpZDpQZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiQioiOntpZDpfZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxiOntpZDpFZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiYioiOntpZDp6ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxuOntpZDpMZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxXOntpZDpVZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiVyoiOntpZDpXZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCVDp7aWQ6WGUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVQ6e2lkOktlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRjOntpZDpHZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUdzp7aWQ6VmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHo6e2lkOiRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRMOntpZDpZZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZjp7aWQ6SmUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVHI6e2lkOlFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRzOntpZDpaZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZDp7aWQ6ZXQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVEQ6e2lkOnR0LG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFRtOntpZDpudCxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSwiVCoiOntpZDpydCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxUajp7aWQ6c3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEo6e2lkOml0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LCInIjp7aWQ6b3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sJyInOntpZDpsdCxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxkMDp7aWQ6ZnQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZDE6e2lkOmN0LG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LENTOntpZDpodCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxjczp7aWQ6dXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sU0M6e2lkOm10LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LFNDTjp7aWQ6cHQsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LHNjOntpZDpkdCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxzY246e2lkOmd0LG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxHOntpZDpidCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnOntpZDp3dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxSRzp7aWQ6anQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0scmc6e2lkOmt0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LEs6e2lkOnl0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGs6e2lkOnF0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHNoOntpZDp2dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxCSTp7aWQ6U3QsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sSUQ6e2lkOkF0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVJOntpZDp4dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxEbzp7aWQ6Q3QsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTVA6e2lkOkl0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERQOntpZDpGdCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxCTUM6e2lkOlR0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJEQzp7aWQ6T3QsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sRU1DOntpZDpSdCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCWDp7aWQ6QnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVg6e2lkOkR0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJNOm51bGwsQkQ6bnVsbCx0cnVlOm51bGwsZmE6bnVsbCxmYWw6bnVsbCxmYWxzOm51bGwsZmFsc2U6bnVsbCxudTpudWxsLG51bDpudWxsLG51bGw6bnVsbH0pKX1zdGF0aWMgTUFYX0lOVkFMSURfUEFUSF9PUFM9MTA7Y29uc3RydWN0b3IoZSx0LG49bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUsRXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwKSx4cmVmOnR9KTt0aGlzLnN0YXRlTWFuYWdlcj1uO3RoaXMubm9uUHJvY2Vzc2VkQXJncz1bXTt0aGlzLl9pc1BhdGhPcD0hMTt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wfWdldCBzYXZlZFN0YXRlc0RlcHRoKCl7cmV0dXJuIHRoaXMuc3RhdGVNYW5hZ2VyLnN0YXRlU3RhY2subGVuZ3RofXJlYWQoZSl7bGV0IHQ9ZS5hcmdzO2Zvcig7Oyl7Y29uc3Qgbj10aGlzLnBhcnNlci5nZXRPYmooKTtpZihuIGluc3RhbmNlb2YgQ21kKXtjb25zdCBhPW4uY21kLHI9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW2FdO2lmKCFyKXt3YXJuKGBVbmtub3duIGNvbW1hbmQgIiR7YX0iLmApO2NvbnRpbnVlfWNvbnN0IHM9ci5pZCxpPXIubnVtQXJncztsZXQgbz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49Q2UmJnM8PUxlO2lmKHIudmFyaWFibGVBcmdzKW8+aSYmaW5mbyhgQ29tbWFuZCAke2F9OiBleHBlY3RlZCBbMCwgJHtpfV0gYXJncywgYnV0IHJlY2VpdmVkICR7b30gYXJncy5gKTtlbHNle2lmKG8hPT1pKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO28+aTspe2UucHVzaCh0LnNoaWZ0KCkpO28tLX1mb3IoO288aSYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7bysrfX1pZihvPGkpe2NvbnN0IGU9YGNvbW1hbmQgJHthfTogZXhwZWN0ZWQgJHtpfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCAke2V9YCk7d2FybihgU2tpcHBpbmcgJHtlfWApO251bGwhPT10JiYodC5sZW5ndGg9MCk7Y29udGludWV9fXRoaXMucHJlcHJvY2Vzc0NvbW1hbmQocyx0KTtlLmZuPXM7ZS5hcmdzPXQ7cmV0dXJuITB9aWYobj09PXVuKXJldHVybiExO2lmKG51bGwhPT1uKXtudWxsPT09dCYmKHQ9W10pO3QucHVzaChuKTtpZih0Lmxlbmd0aD4zMyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRvbyBtYW55IGFyZ3VtZW50cyIpfX19cHJlcHJvY2Vzc0NvbW1hbmQoZSx0KXtzd2l0Y2goMHxlKXtjYXNlIFNlOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIEFlOnRoaXMuc3RhdGVNYW5hZ2VyLnJlc3RvcmUoKTticmVhaztjYXNlIHhlOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fWNsYXNzIERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBTdHJpbmdTdHJlYW0oZSkpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfSx0PXtmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyl9O3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZighdGhpcy5yZWFkKGUpKWJyZWFrO2lmKDAhPT10aGlzLnNhdmVkU3RhdGVzRGVwdGgpY29udGludWU7Y29uc3R7Zm46bixhcmdzOmF9PWU7c3dpdGNoKDB8bil7Y2FzZSBKZTpjb25zdFtlLG5dPWE7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBuJiZuPjAmJih0LmZvbnRTaXplPW4pO2JyZWFrO2Nhc2Uga3Q6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHd0OkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgcXQ6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCl9fX1jYXRjaChlKXt3YXJuKGBwYXJzZURlZmF1bHRBcHBlYXJhbmNlIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9cmV0dXJuIHR9fWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfWNsYXNzIEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUpO3RoaXMuc3RyZWFtPWU7dGhpcy54cmVmPXQ7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9bjt0aGlzLnJlc291cmNlcz1lLmRpY3Q/LmdldCgiUmVzb3VyY2VzIil9cGFyc2UoKXtjb25zdCBlPXtmbjowLGFyZ3M6W119O2xldCB0PXtzY2FsZUZhY3RvcjoxLGZvbnRTaXplOjAsZm9udE5hbWU6IiIsZm9udENvbG9yOm5ldyBVaW50OENsYW1wZWRBcnJheSgzKSxmaWxsQ29sb3JTcGFjZTpDb2xvclNwYWNlVXRpbHMuZ3JheX0sbj0hMTtjb25zdCBhPVtdO3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZihufHwhdGhpcy5yZWFkKGUpKWJyZWFrO2NvbnN0e2ZuOnIsYXJnczpzfT1lO3N3aXRjaCgwfHIpe2Nhc2UgU2U6YS5wdXNoKHtzY2FsZUZhY3Rvcjp0LnNjYWxlRmFjdG9yLGZvbnRTaXplOnQuZm9udFNpemUsZm9udE5hbWU6dC5mb250TmFtZSxmb250Q29sb3I6dC5mb250Q29sb3Iuc2xpY2UoKSxmaWxsQ29sb3JTcGFjZTp0LmZpbGxDb2xvclNwYWNlfSk7YnJlYWs7Y2FzZSBBZTp0PWEucG9wKCl8fHQ7YnJlYWs7Y2FzZSBudDpjb25zdCBlPVV0aWwudHJhbnNmb3JtKHRoaXMuc3RhdGVNYW5hZ2VyLnN0YXRlLmN0bSxzKTt0LnNjYWxlRmFjdG9yKj1NYXRoLmh5cG90KGVbMF0sZVsxXSk7YnJlYWs7Y2FzZSBKZTpjb25zdFtyLGldPXM7ciBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPXIubmFtZSk7Im51bWJlciI9PXR5cGVvZiBpJiZpPjAmJih0LmZvbnRTaXplPWkpO2JyZWFrO2Nhc2UgdXQ6dC5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOnNbMF0seHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnRoaXMucmVzb3VyY2VzLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnRoaXMuX2xvY2FsQ29sb3JTcGFjZUNhY2hlfSk7YnJlYWs7Y2FzZSBkdDp0LmZpbGxDb2xvclNwYWNlLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2Uga3Q6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHd0OkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgcXQ6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBzdDpjYXNlIGl0OmNhc2Ugb3Q6Y2FzZSBsdDp0LmZvbnRTaXplKj10LnNjYWxlRmFjdG9yO249ITB9fX1jYXRjaChlKXt3YXJuKGBwYXJzZUFwcGVhcmFuY2VTdHJlYW0gLSBpZ25vcmluZyBlcnJvcnM6ICIke2V9Ii5gKX10aGlzLnN0cmVhbS5yZXNldCgpO2RlbGV0ZSB0LnNjYWxlRmFjdG9yO2RlbGV0ZSB0LmZpbGxDb2xvclNwYWNlO3JldHVybiB0fWdldCBfbG9jYWxDb2xvclNwYWNlQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbENvbG9yU3BhY2VDYWNoZSIsbmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWZ9KSl9fWZ1bmN0aW9uIGdldFBkZkNvbG9yKGUsdCl7aWYoZVswXT09PWVbMV0mJmVbMV09PT1lWzJdKXtyZXR1cm5gJHtudW1iZXJUb1N0cmluZyhlWzBdLzI1NSl9ICR7dD8iZyI6IkcifWB9cmV0dXJuIEFycmF5LmZyb20oZSxlPT5udW1iZXJUb1N0cmluZyhlLzI1NSkpLmpvaW4oIiAiKSsiICIrKHQ/InJnIjoiUkciKX1jbGFzcyBGYWtlVW5pY29kZUZvbnR7c3RhdGljI2V0PTE7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnhyZWY9ZTt0aGlzLndpZHRocz1udWxsO3RoaXMuZmlyc3RDaGFyPTEvMDt0aGlzLmxhc3RDaGFyPS0xLzA7dGhpcy5mb250RmFtaWx5PXQ7Y29uc3Qgbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSk7dGhpcy5jdHhNZWFzdXJlPW4uZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuI2V0Kyt9YCl9Z2V0IGZvbnREZXNjcmlwdG9yUmVmKCl7aWYoIUZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWYpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnREZXNjcmlwdG9yIik7ZS5zZXQoIkZvbnROYW1lIix0aGlzLmZvbnROYW1lKTtlLnNldCgiRm9udEZhbWlseSIsIk15cmlhZFBybyBSZWd1bGFyIik7ZS5zZXQoIkZvbnRCQm94IixbMCwwLDAsMF0pO2Uuc2V0SWZOYW1lKCJGb250U3RyZXRjaCIsIk5vcm1hbCIpO2Uuc2V0KCJGb250V2VpZ2h0Iiw0MDApO2Uuc2V0KCJJdGFsaWNBbmdsZSIsMCk7RmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZj10aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1yZXR1cm4gRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZn1nZXQgZGVzY2VuZGFudEZvbnRSZWYoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIkNJREZvbnRUeXBlMCIpO2Uuc2V0SWZOYW1lKCJDSURUb0dJRE1hcCIsIklkZW50aXR5Iik7ZS5zZXQoIkZpcnN0Q2hhciIsdGhpcy5maXJzdENoYXIpO2Uuc2V0KCJMYXN0Q2hhciIsdGhpcy5sYXN0Q2hhcik7ZS5zZXQoIkZvbnREZXNjcmlwdG9yIix0aGlzLmZvbnREZXNjcmlwdG9yUmVmKTtlLnNldCgiRFciLDFlMyk7Y29uc3QgdD1bXSxuPVsuLi50aGlzLndpZHRoc10uc29ydCgpO2xldCBhPW51bGwscj1udWxsO2Zvcihjb25zdFtlLHNdb2YgbilpZihhKWlmKGU9PT1hK3IubGVuZ3RoKXIucHVzaChzKTtlbHNle3QucHVzaChhLHIpO2E9ZTtyPVtzXX1lbHNle2E9ZTtyPVtzXX1hJiZ0LnB1c2goYSxyKTtlLnNldCgiVyIsdCk7Y29uc3Qgcz1uZXcgRGljdCh0aGlzLnhyZWYpO3Muc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7cy5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtzLnNldCgiU3VwcGxlbWVudCIsMCk7ZS5zZXQoIkNJRFN5c3RlbUluZm8iLHMpO3JldHVybiB0aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1nZXQgYmFzZUZvbnRSZWYoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUwIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiSWRlbnRpdHktSCIpO2Uuc2V0KCJEZXNjZW5kYW50Rm9udHMiLFt0aGlzLmRlc2NlbmRhbnRGb250UmVmXSk7ZS5zZXRJZk5hbWUoIlRvVW5pY29kZSIsIklkZW50aXR5LUgiKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0KHRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgbiBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIG4uc3BsaXQoIiIpKXtjb25zdCBuPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMobikpY29udGludWU7Y29uc3QgYT10Lm1lYXN1cmVUZXh0KGUpLHI9TWF0aC5jZWlsKGEud2lkdGgpO3RoaXMud2lkdGhzLnNldChuLHIpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKG4sdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgobix0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxuKXtjb25zdFthLHIscyxpXT1lO2xldCBvPXMtYSxsPWktcjt0JTE4MCE9MCYmKFtvLGxdPVtsLG9dKTtjb25zdCBmPTEuMzUqbjtyZXR1cm57Y29vcmRzOlswLGwrLjM1Km4tZl0sYmJveDpbMCwwLG8sbF0sbWF0cml4OjAhPT10P2dldFJvdGF0aW9uTWF0cml4KHQsbCxmKTp2b2lkIDB9fWNyZWF0ZUFwcGVhcmFuY2UoZSx0LG4sYSxyLHMpe2NvbnN0IGk9dGhpcy5fY3JlYXRlQ29udGV4dCgpLG89W107bGV0IGw9LTEvMDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKXtvLnB1c2godCk7Y29uc3QgZT1pLm1lYXN1cmVUZXh0KHQpLndpZHRoO2w9TWF0aC5tYXgobCxlKTtmb3IoY29uc3QgZSBvZiBjb2RlUG9pbnRJdGVyKHQpKXtjb25zdCB0PVN0cmluZy5mcm9tQ29kZVBvaW50KGUpO2xldCBuPXRoaXMud2lkdGhzLmdldChlKTtpZih2b2lkIDA9PT1uKXtjb25zdCBhPWkubWVhc3VyZVRleHQodCk7bj1NYXRoLmNlaWwoYS53aWR0aCk7dGhpcy53aWR0aHMuc2V0KGUsbik7dGhpcy5maXJzdENoYXI9TWF0aC5taW4oZSx0aGlzLmZpcnN0Q2hhcik7dGhpcy5sYXN0Q2hhcj1NYXRoLm1heChlLHRoaXMubGFzdENoYXIpfX19bCo9YS8xZTM7Y29uc3RbZixjLGgsdV09dDtsZXQgbT1oLWYscD11LWM7biUxODAhPTAmJihbbSxwXT1bcCxtXSk7Y29uc3QgZD1sPm0/bS9sOjE7bGV0IGc9MTtjb25zdCBiPTEuMzUqYSx3PS4zNSphLGo9YipvLmxlbmd0aDtqPnAmJihnPXAvaik7Y29uc3Qgaz1hKk1hdGgubWluKGQsZykseT1bInEiLGAwIDAgJHtudW1iZXJUb1N0cmluZyhtKX0gJHtudW1iZXJUb1N0cmluZyhwKX0gcmUgVyBuYCwiQlQiLGAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhwK3cpfSBUbSAwIFRjICR7Z2V0UGRmQ29sb3IociwhMCl9YCxgLyR7dGhpcy5mb250TmFtZS5uYW1lfSAke251bWJlclRvU3RyaW5nKGspfSBUZmBdLHtyZXNvdXJjZXM6cX09dGhpcztpZigxIT09KHM9Im51bWJlciI9PXR5cGVvZiBzJiZzPj0wJiZzPD0xP3M6MSkpe3kucHVzaCgiL1IwIGdzIik7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpLHQ9bmV3IERpY3QodGhpcy54cmVmKTt0LnNldCgiY2EiLHMpO3Quc2V0KCJDQSIscyk7dC5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKTtlLnNldCgiUjAiLHQpO3Euc2V0KCJFeHRHU3RhdGUiLGUpfWNvbnN0IHY9bnVtYmVyVG9TdHJpbmcoYik7Zm9yKGNvbnN0IGUgb2Ygbyl5LnB1c2goYDAgLSR7dn0gVGQgPCR7c3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKX0+IFRqYCk7eS5wdXNoKCJFVCIsIlEiKTtjb25zdCBTPXkuam9pbigiXG4iKSx4PW5ldyBEaWN0KHRoaXMueHJlZik7eC5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7eC5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7eC5zZXQoIkJCb3giLFswLDAsbSxwXSk7eC5zZXQoIkxlbmd0aCIsUy5sZW5ndGgpO3guc2V0KCJSZXNvdXJjZXMiLHEpO2lmKG4pe2NvbnN0IGU9Z2V0Um90YXRpb25NYXRyaXgobixtLHApO3guc2V0KCJNYXRyaXgiLGUpfXJldHVybiBuZXcgU3RyaW5nU3RyZWFtKFMseCl9fWNvbnN0IFhpPVsibS9kIiwibS9kL3l5IiwibW0vZGQveXkiLCJtbS95eSIsImQtbW1tIiwiZC1tbW0teXkiLCJkZC1tbW0teXkiLCJ5eS1tbS1kZCIsIm1tbS15eSIsIm1tbW0teXkiLCJtbW0gZCwgeXl5eSIsIm1tbW0gZCwgeXl5eSIsIm0vZC95eSBoOk1NIHR0IiwibS9kL3l5IEhIOk1NIl0sS2k9WyJISDpNTSIsImg6TU0gdHQiLCJISDpNTTpzcyIsImg6TU06c3MgdHQiXTtfX3dlYnBhY2tfcmVxdWlyZV9fKDMxMTApO2NsYXNzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMucm9vdD1lO3RoaXMueHJlZj10O3RoaXMuX3R5cGU9bn1nZXRBbGwoZT0hMSl7Y29uc3QgdD1uZXcgTWFwO2lmKCF0aGlzLnJvb3QpcmV0dXJuIHQ7Y29uc3Qgbj10aGlzLnhyZWYsYT1uZXcgUmVmU2V0O3RoaXMucm9vdCBpbnN0YW5jZW9mIFJlZiYmYS5wdXQodGhpcy5yb290KTtjb25zdCByPVt0aGlzLnJvb3RdO2Zvcihjb25zdCBzIG9mIHIpe2NvbnN0IGk9bi5mZXRjaElmUmVmKHMpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKGkuaGFzKCJLaWRzIikpe2NvbnN0IGU9aS5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShlKSljb250aW51ZTtmb3IoY29uc3QgdCBvZiBlKXtpZih0IGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyh0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYER1cGxpY2F0ZSBlbnRyeSBpbiAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTthLnB1dCh0KX1yLnB1c2godCl9Y29udGludWV9Y29uc3Qgbz1pLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KG8pKWZvcihsZXQgYT0wLHI9by5sZW5ndGg7YTxyO2ErPTIpdC5zZXQoZT9vW2FdOm4uZmV0Y2hJZlJlZihvW2FdKSxlP29bYSsxXTpuLmZldGNoSWZSZWYob1thKzFdKSl9cmV0dXJuIHR9Z2V0UmF3KGUpe2lmKCF0aGlzLnJvb3QpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnhyZWY7bGV0IG49dC5mZXRjaElmUmVmKHRoaXMucm9vdCksYT0wO2Zvcig7bi5oYXMoIktpZHMiKTspe2lmKCsrYT4xMCl7d2FybihgU2VhcmNoIGRlcHRoIGxpbWl0IHJlYWNoZWQgZm9yICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO3JldHVybiBudWxsfWNvbnN0IHI9bi5nZXQoIktpZHMiKTtpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gbnVsbDtsZXQgcz0wLGk9ci5sZW5ndGgtMTtmb3IoO3M8PWk7KXtjb25zdCBhPXMraT4+MSxvPXQuZmV0Y2hJZlJlZihyW2FdKSxsPW8uZ2V0KCJMaW1pdHMiKTtpZihlPHQuZmV0Y2hJZlJlZihsWzBdKSlpPWEtMTtlbHNle2lmKCEoZT50LmZldGNoSWZSZWYobFsxXSkpKXtuPW87YnJlYWt9cz1hKzF9fWlmKHM+aSlyZXR1cm4gbnVsbH1jb25zdCByPW4uZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkocikpe2xldCBuPTAsYT1yLmxlbmd0aC0yO2Zvcig7bjw9YTspe2NvbnN0IHM9bithPj4xLGk9cysoMSZzKSxvPXQuZmV0Y2hJZlJlZihyW2ldKTtpZihlPG8pYT1pLTI7ZWxzZXtpZighKGU+bykpcmV0dXJuIHJbaSsxXTtuPWkrMn19fXJldHVybiBudWxsfWdldChlKXtyZXR1cm4gdGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5nZXRSYXcoZSkpfX1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fWNsYXNzIE51bWJlclRyZWUgZXh0ZW5kcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOdW1zIil9fWZ1bmN0aW9uIGNsZWFyR2xvYmFsQ2FjaGVzKCl7IWZ1bmN0aW9uIGNsZWFyUGF0dGVybkNhY2hlcygpe3RhPy5jbGVhcigpfSgpOyFmdW5jdGlvbiBjbGVhclByaW1pdGl2ZUNhY2hlcygpe21uPU9iamVjdC5jcmVhdGUobnVsbCk7cG49T2JqZWN0LmNyZWF0ZShudWxsKTtkbj1PYmplY3QuY3JlYXRlKG51bGwpfSgpOyFmdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXt4YS5jbGVhcigpfSgpO1dhc21JbWFnZS5jbGVhbnVwKCl9Y2xhc3MgRmlsZVNwZWN7Y29uc3RydWN0b3IoZSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7ZS5oYXMoIlJGIikmJndhcm4oIlJlbGF0ZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpfX1nZXQgZmlsZW5hbWUoKXtjb25zdCBlPUZpbGVTcGVjLnBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KTtyZXR1cm4gZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUsITApLnJlcGxhY2VBbGwoIlxcXFwiLCJcXCIpLnJlcGxhY2VBbGwoIlxcLyIsIi8iKS5yZXBsYWNlQWxsKCJcXCIsIi8iKToiIn1nZXQgZGVzY3JpcHRpb24oKXtjb25zdCBlPXRoaXMucm9vdD8uZ2V0KCJEZXNjIik7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIn1nZXQgc2VyaWFsaXphYmxlKCl7Y29uc3R7ZmlsZW5hbWU6ZSxkZXNjcmlwdGlvbjp0fT10aGlzO3JldHVybntyYXdGaWxlbmFtZTplLGZpbGVuYW1lOihuPWUsbi5zdWJzdHJpbmcobi5sYXN0SW5kZXhPZigiLyIpKzEpKXx8InVubmFtZWQiLGRlc2NyaXB0aW9uOnR9O3ZhciBufXN0YXRpYyBwaWNrUGxhdGZvcm1JdGVtKGUsdD0hMSl7aWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IG4gb2ZbIlVGIiwiRiIsIlVuaXgiLCJNYWMiLCJET1MiXSlpZihlLmhhcyhuKSlyZXR1cm4gdD9lLmdldFJhdyhuKTplLmdldChuKTtyZXR1cm4gbnVsbH1zdGF0aWMgaGFzRW1iZWRkZWRGaWxlKGUpe3JldHVybiB0aGlzLnBpY2tQbGF0Zm9ybUl0ZW0oZS5nZXQoIkVGIikpaW5zdGFuY2VvZiBCYXNlU3RyZWFtfXN0YXRpYyByZWFkQ29udGVudChlKXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMucGlja1BsYXRmb3JtSXRlbShlLmdldCgiRUYiKSk7aWYoISh0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpe3dhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpO3JldHVybiBudWxsfXJldHVybiB0aGlzLnJlYWRTdHJlYW1Db250ZW50KHQpfXN0YXRpYyByZWFkU3RyZWFtQ29udGVudChlKXtjb25zdCB0PWUuZGljdD8ueHJlZj8uZW5jcnlwdDtpZihudWxsPT09dD8uZW5jcnlwdGlvbktleSl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixybik7cmV0dXJuIGUuZ2V0Qnl0ZXMoKX19Y29uc3QgR2k9MCxWaT0tMiwkaT0tMyxZaT0tNCxKaT0tNSxRaT0tNixaaT0tOTtmdW5jdGlvbiBpc1doaXRlc3BhY2UoZSx0KXtjb25zdCBuPWVbdF07cmV0dXJuIiAiPT09bnx8IlxuIj09PW58fCJcciI9PT1ufHwiXHQiPT09bn1jbGFzcyBYTUxQYXJzZXJCYXNle3N0YXRpYyBnZXQgX2VudGl0eVJlZ2V4KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfZW50aXR5UmVnZXgiLC8mKD86I3goW147XSspfCMoW147XSspfChbXjtdKykpOy9nKX1fcmVzb2x2ZUVudGl0aWVzKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoWE1MUGFyc2VyQmFzZS5fZW50aXR5UmVnZXgsKGUsdCxuLGEpPT57aWYodClyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodCwxNikpO2lmKG4pcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KG4sMTApKTtzd2l0Y2goYSl7Y2FzZSJsdCI6cmV0dXJuIjwiO2Nhc2UiZ3QiOnJldHVybiI+IjtjYXNlImFtcCI6cmV0dXJuIiYiO2Nhc2UicXVvdCI6cmV0dXJuJyInO2Nhc2UiYXBvcyI6cmV0dXJuIicifXJldHVybiB0aGlzLm9uUmVzb2x2ZUVudGl0eShhKX0pfV9wYXJzZUNvbnRlbnQoZSx0KXtjb25zdCBuPVtdO2xldCBhPXQ7ZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDthPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxhKTspKythfWZvcig7YTxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLGEpJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdOykrK2E7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3NraXBXcygpO2Zvcig7YTxlLmxlbmd0aCYmIj4iIT09ZVthXSYmIi8iIT09ZVthXSYmIj8iIT09ZVthXTspe3NraXBXcygpO2xldCB0PSIiLHI9IiI7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI9IiE9PWVbYV07KXt0Kz1lW2FdOysrYX1za2lwV3MoKTtpZigiPSIhPT1lW2FdKXJldHVybiBudWxsOysrYTtza2lwV3MoKTtjb25zdCBzPWVbYV07aWYoJyInIT09cyYmIiciIT09cylyZXR1cm4gbnVsbDtjb25zdCBpPWUuaW5kZXhPZihzLCsrYSk7aWYoaTwwKXJldHVybiBudWxsO3I9ZS5zdWJzdHJpbmcoYSxpKTtuLnB1c2goe25hbWU6dCx2YWx1ZTp0aGlzLl9yZXNvbHZlRW50aXRpZXMocil9KTthPWkrMTtza2lwV3MoKX1yZXR1cm57bmFtZTpyLGF0dHJpYnV0ZXM6bixwYXJzZWQ6YS10fX1fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSx0KXtsZXQgbj10O2Zvcig7bjxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLG4pJiYiPiIhPT1lW25dJiYiPyIhPT1lW25dJiYiLyIhPT1lW25dOykrK247Y29uc3QgYT1lLnN1YnN0cmluZyh0LG4pOyFmdW5jdGlvbiBza2lwV3MoKXtmb3IoO248ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLG4pOykrK259KCk7Y29uc3Qgcj1uO2Zvcig7bjxlLmxlbmd0aCYmKCI/IiE9PWVbbl18fCI+IiE9PWVbbisxXSk7KSsrbjtyZXR1cm57bmFtZTphLHZhbHVlOmUuc3Vic3RyaW5nKHIsbikscGFyc2VkOm4tdH19cGFyc2VYbWwoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGg7KXtsZXQgbj10O2lmKCI8Ij09PWVbdF0peysrbjtsZXQgdDtzd2l0Y2goZVtuXSl7Y2FzZSIvIjorK247dD1lLmluZGV4T2YoIj4iLG4pO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFppKTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcobix0KSk7bj10KzE7YnJlYWs7Y2FzZSI/IjorK247Y29uc3QgYT10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLG4pO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhuK2EucGFyc2VkLG4rYS5wYXJzZWQrMikpe3RoaXMub25FcnJvcigkaSk7cmV0dXJufXRoaXMub25QaShhLm5hbWUsYS52YWx1ZSk7bis9YS5wYXJzZWQrMjticmVhaztjYXNlIiEiOmlmKCItLSI9PT1lLnN1YnN0cmluZyhuKzEsbiszKSl7dD1lLmluZGV4T2YoIi0tXHgzZSIsbiszKTtpZih0PDApe3RoaXMub25FcnJvcihKaSk7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKG4rMyx0KSk7bj10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhuKzEsbis4KSl7dD1lLmluZGV4T2YoIl1dPiIsbis4KTtpZih0PDApe3RoaXMub25FcnJvcihWaSk7cmV0dXJufXRoaXMub25DZGF0YShlLnN1YnN0cmluZyhuKzgsdCkpO249dCszfWVsc2V7aWYoIkRPQ1RZUEUiIT09ZS5zdWJzdHJpbmcobisxLG4rOCkpe3RoaXMub25FcnJvcihRaSk7cmV0dXJufXtjb25zdCBhPWUuaW5kZXhPZigiWyIsbis4KTtsZXQgcj0hMTt0PWUuaW5kZXhPZigiPiIsbis4KTtpZih0PDApe3RoaXMub25FcnJvcihZaSk7cmV0dXJufWlmKGE+MCYmdD5hKXt0PWUuaW5kZXhPZigiXT4iLG4rOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoWWkpO3JldHVybn1yPSEwfWNvbnN0IHM9ZS5zdWJzdHJpbmcobis4LHQrKHI/MTowKSk7dGhpcy5vbkRvY3R5cGUocyk7bj10KyhyPzI6MSl9fWJyZWFrO2RlZmF1bHQ6Y29uc3Qgcj10aGlzLl9wYXJzZUNvbnRlbnQoZSxuKTtpZihudWxsPT09cil7dGhpcy5vbkVycm9yKFFpKTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKG4rci5wYXJzZWQsbityLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcobityLnBhcnNlZCxuK3IucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3IoWmkpO3JldHVybn10aGlzLm9uQmVnaW5FbGVtZW50KHIubmFtZSxyLmF0dHJpYnV0ZXMscyk7bis9ci5wYXJzZWQrKHM/MjoxKX19ZWxzZXtmb3IoO248ZS5sZW5ndGgmJiI8IiE9PWVbbl07KW4rKztjb25zdCBhPWUuc3Vic3RyaW5nKHQsbik7dGhpcy5vblRleHQodGhpcy5fcmVzb2x2ZUVudGl0aWVzKGEpKX10PW59fW9uUmVzb2x2ZUVudGl0eShlKXtyZXR1cm5gJiR7ZX07YH1vblBpKGUsdCl7fW9uQ29tbWVudChlKXt9b25DZGF0YShlKXt9b25Eb2N0eXBlKGUpe31vblRleHQoZSl7fW9uQmVnaW5FbGVtZW50KGUsdCxuKXt9b25FbmRFbGVtZW50KGUpe31vbkVycm9yKGUpe319Y2xhc3MgU2ltcGxlRE9NTm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubm9kZU5hbWU9ZTt0aGlzLm5vZGVWYWx1ZT10O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwYXJlbnROb2RlIix7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8uWzBdfWdldCBuZXh0U2libGluZygpe2NvbnN0IGU9dGhpcy5wYXJlbnROb2RlLmNoaWxkTm9kZXM7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5pbmRleE9mKHRoaXMpO3JldHVybi0xIT09dD9lW3QrMV06dm9pZCAwfWdldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/dGhpcy5jaGlsZE5vZGVzLm1hcChlPT5lLnRleHRDb250ZW50KS5qb2luKCIiKTp0aGlzLm5vZGVWYWx1ZXx8IiJ9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc3x8W119aGFzQ2hpbGROb2Rlcygpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/Lmxlbmd0aD4wfXNlYXJjaE5vZGUoZSx0KXtpZih0Pj1lLmxlbmd0aClyZXR1cm4gdGhpcztjb25zdCBuPWVbdF07aWYobi5uYW1lLnN0YXJ0c1dpdGgoIiMiKSYmdDxlLmxlbmd0aC0xKXJldHVybiB0aGlzLnNlYXJjaE5vZGUoZSx0KzEpO2NvbnN0IGE9W107bGV0IHI9dGhpcztmb3IoOzspe2lmKG4ubmFtZT09PXIubm9kZU5hbWUpe2lmKDAhPT1uLnBvcyl7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO3tjb25zdFtzXT1hLnBvcCgpO2xldCBpPTA7Zm9yKGNvbnN0IGEgb2Ygcy5jaGlsZE5vZGVzKWlmKG4ubmFtZT09PWEubm9kZU5hbWUpe2lmKGk9PT1uLnBvcylyZXR1cm4gYS5zZWFyY2hOb2RlKGUsdCsxKTtpKyt9cmV0dXJuIHIuc2VhcmNoTm9kZShlLHQrMSl9fXtjb25zdCBuPXIuc2VhcmNoTm9kZShlLHQrMSk7aWYobnVsbCE9PW4pcmV0dXJuIG59fWlmKHIuY2hpbGROb2Rlcz8ubGVuZ3RoPjApe2EucHVzaChbciwwXSk7cj1yLmNoaWxkTm9kZXNbMF19ZWxzZXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKDswIT09YS5sZW5ndGg7KXtjb25zdFtlLHRdPWEucG9wKCksbj10KzE7aWYobjxlLmNoaWxkTm9kZXMubGVuZ3RoKXthLnB1c2goW2Usbl0pO3I9ZS5jaGlsZE5vZGVzW25dO2JyZWFrfX1pZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGx9fX1kdW1wKGUpe2lmKCIjdGV4dCIhPT10aGlzLm5vZGVOYW1lKXtlLnB1c2goYDwke3RoaXMubm9kZU5hbWV9YCk7aWYodGhpcy5hdHRyaWJ1dGVzKWZvcihjb25zdCB0IG9mIHRoaXMuYXR0cmlidXRlcyllLnB1c2goYCAke3QubmFtZX09IiR7ZW5jb2RlVG9YbWxTdHJpbmcodC52YWx1ZSl9ImApO2lmKHRoaXMuaGFzQ2hpbGROb2RlcygpKXtlLnB1c2goIj4iKTtmb3IoY29uc3QgdCBvZiB0aGlzLmNoaWxkTm9kZXMpdC5kdW1wKGUpO2UucHVzaChgPC8ke3RoaXMubm9kZU5hbWV9PmApfWVsc2UgdGhpcy5ub2RlVmFsdWU/ZS5wdXNoKGA+JHtlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSl9PC8ke3RoaXMubm9kZU5hbWV9PmApOmUucHVzaCgiLz4iKX1lbHNlIGUucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzLm5vZGVWYWx1ZSkpfX1jbGFzcyBTaW1wbGVYTUxQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKHtoYXNBdHRyaWJ1dGVzOmU9ITEsbG93ZXJDYXNlTmFtZTp0PSExfSl7c3VwZXIoKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9bnVsbDt0aGlzLl9zdGFjaz1udWxsO3RoaXMuX2Vycm9yQ29kZT1HaTt0aGlzLl9oYXNBdHRyaWJ1dGVzPWU7dGhpcy5fbG93ZXJDYXNlTmFtZT10fXBhcnNlRnJvbVN0cmluZyhlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9W107dGhpcy5fc3RhY2s9W107dGhpcy5fZXJyb3JDb2RlPUdpO3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlIT09R2kpcmV0dXJuO2NvbnN0W3RdPXRoaXMuX2N1cnJlbnRGcmFnbWVudDtyZXR1cm4gdD97ZG9jdW1lbnRFbGVtZW50OnR9OnZvaWQgMH1vblRleHQoZSl7aWYoZnVuY3Rpb24gaXNXaGl0ZXNwYWNlU3RyaW5nKGUpe2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylpZighaXNXaGl0ZXNwYWNlKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9KGUpKXJldHVybjtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25DZGF0YShlKXtjb25zdCB0PW5ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsZSk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2godCl9b25CZWdpbkVsZW1lbnQoZSx0LG4pe3RoaXMuX2xvd2VyQ2FzZU5hbWUmJihlPWUudG9Mb3dlckNhc2UoKSk7Y29uc3QgYT1uZXcgU2ltcGxlRE9NTm9kZShlKTthLmNoaWxkTm9kZXM9W107dGhpcy5faGFzQXR0cmlidXRlcyYmKGEuYXR0cmlidXRlcz10KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaChhKTtpZighbil7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50RnJhZ21lbnQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1hLmNoaWxkTm9kZXN9fW9uRW5kRWxlbWVudChlKXt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9dGhpcy5fc3RhY2sucG9wKCl8fFtdO2NvbnN0IHQ9dGhpcy5fY3VycmVudEZyYWdtZW50LmF0KC0xKTtpZighdClyZXR1cm4gbnVsbDtmb3IoY29uc3QgZSBvZiB0LmNoaWxkTm9kZXMpZS5wYXJlbnROb2RlPXQ7cmV0dXJuIHR9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgTWV0YWRhdGFQYXJzZXJ7Y29uc3RydWN0b3IoZSl7ZT10aGlzLl9yZXBhaXIoZSk7Y29uc3QgdD1uZXcgU2ltcGxlWE1MUGFyc2VyKHtsb3dlckNhc2VOYW1lOiEwfSkucGFyc2VGcm9tU3RyaW5nKGUpO3RoaXMuX21ldGFkYXRhTWFwPW5ldyBNYXA7dGhpcy5fZGF0YT1lO3QmJnRoaXMuX3BhcnNlKHQpfV9yZXBhaXIoZSl7cmV0dXJuIGUucmVwbGFjZSgvXltePF0rLywiIikucmVwbGFjZUFsbCgvPlxcMzc2XFwzNzcoW148XSspL2csZnVuY3Rpb24oZSx0KXtjb25zdCBuPXQucmVwbGFjZUFsbCgvXFwoWzAtM10pKFswLTddKShbMC03XSkvZyxmdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NCp0KzgqbisxKmEpfSkucmVwbGFjZUFsbCgvJihhbXB8YXBvc3xndHxsdHxxdW90KTsvZyxmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlImFtcCI6cmV0dXJuIiYiO2Nhc2UiYXBvcyI6cmV0dXJuIiciO2Nhc2UiZ3QiOnJldHVybiI+IjtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJxdW90IjpyZXR1cm4nIid9dGhyb3cgbmV3IEVycm9yKGBfcmVwYWlyOiAke3R9IGlzbid0IGRlZmluZWQuYCl9KSxhPVsiPiJdO2ZvcihsZXQgZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrPTIpe2NvbnN0IHQ9MjU2Km4uY2hhckNvZGVBdChlKStuLmNoYXJDb2RlQXQoZSsxKTt0Pj0zMiYmdDwxMjcmJjYwIT09dCYmNjIhPT10JiYzOCE9PXQ/YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOmEucHVzaCgiJiN4IisoNjU1MzYrdCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiBhLmpvaW4oIiIpfSl9X2dldFNlcXVlbmNlKGUpe2NvbnN0IHQ9ZS5ub2RlTmFtZTtyZXR1cm4icmRmOmJhZyIhPT10JiYicmRmOnNlcSIhPT10JiYicmRmOmFsdCIhPT10P251bGw6ZS5jaGlsZE5vZGVzLmZpbHRlcihlPT4icmRmOmxpIj09PWUubm9kZU5hbWUpfV9wYXJzZUFycmF5KGUpe2lmKCFlLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm47Y29uc3RbdF09ZS5jaGlsZE5vZGVzLG49dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLG4ubWFwKGU9PmUudGV4dENvbnRlbnQudHJpbSgpKSl9X3BhcnNlKGUpe2xldCB0PWUuZG9jdW1lbnRFbGVtZW50O2lmKCJyZGY6cmRmIiE9PXQubm9kZU5hbWUpe3Q9dC5maXJzdENoaWxkO2Zvcig7dCYmInJkZjpyZGYiIT09dC5ub2RlTmFtZTspdD10Lm5leHRTaWJsaW5nfWlmKHQmJiJyZGY6cmRmIj09PXQubm9kZU5hbWUmJnQuaGFzQ2hpbGROb2RlcygpKWZvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcylpZigicmRmOmRlc2NyaXB0aW9uIj09PWUubm9kZU5hbWUpZm9yKGNvbnN0IHQgb2YgZS5jaGlsZE5vZGVzKXtjb25zdCBlPXQubm9kZU5hbWU7c3dpdGNoKGUpe2Nhc2UiI3RleHQiOmNvbnRpbnVlO2Nhc2UiZGM6Y3JlYXRvciI6Y2FzZSJkYzpzdWJqZWN0Ijp0aGlzLl9wYXJzZUFycmF5KHQpO2NvbnRpbnVlfXRoaXMuX21ldGFkYXRhTWFwLnNldChlLHQudGV4dENvbnRlbnQudHJpbSgpKX19Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybntwYXJzZWREYXRhOnRoaXMuX21ldGFkYXRhTWFwLHJhd0RhdGE6dGhpcy5fZGF0YX19fWZ1bmN0aW9uIGdldFNvdW5kRm9ybWF0KGUpe2lmKCFlfHxlLmhhcygiQ08iKSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJSIik7aWYoIU51bWJlci5pc0ludGVnZXIodCl8fHQ8PTApcmV0dXJuIG51bGw7Y29uc3Qgbj1lLmdldCgiQyIpPz8xO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHxuPDF8fG4+MilyZXR1cm4gbnVsbDtjb25zdCBhPWUuZ2V0KCJCIik/Pzg7aWYoOCE9PWEmJjE2IT09YSlyZXR1cm4gbnVsbDtjb25zdCByPWUuZ2V0KCJFIik7bGV0IHM9IlJhdyI7dm9pZCAwIT09ciYmKHM9ciBpbnN0YW5jZW9mIE5hbWU/ci5uYW1lOm51bGwpO3JldHVybiJSYXciIT09cyYmIlNpZ25lZCIhPT1zP251bGw6e2NoYW5uZWxzOm4sc2FtcGxlUmF0ZTp0LGJpdHNQZXJTYW1wbGU6YSxlbmNvZGluZzpzfX1jb25zdCBlbz0xLHRvPTIsbm89Myxhbz00LHJvPTU7Y2xhc3MgU3RydWN0VHJlZVJvb3R7a2lkUmVmVG9Qb3NpdGlvbj12b2lkIDA7cGFyZW50VHJlZT1udWxsO3JvbGVNYXA9bmV3IE1hcDtzdHJ1Y3RQYXJlbnRJZHM9bnVsbDtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy54cmVmPWU7dGhpcy5kaWN0PXQ7dGhpcy5yZWY9biBpbnN0YW5jZW9mIFJlZj9uOm51bGw7Y29uc3QgYT10LmdldCgiUm9sZU1hcCIpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtlLHRdb2YgYSl0IGluc3RhbmNlb2YgTmFtZSYmdGhpcy5yb2xlTWFwLnNldChlLHQubmFtZSk7Y29uc3Qgcj10LmdldFJhdygiUGFyZW50VHJlZSIpO3ImJih0aGlzLnBhcmVudFRyZWU9bmV3IE51bWJlclRyZWUocixlKSl9Z2V0S2lkUG9zaXRpb24oZSl7aWYodm9pZCAwPT09dGhpcy5raWRSZWZUb1Bvc2l0aW9uKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIksiKTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PXRoaXMua2lkUmVmVG9Qb3NpdGlvbj1uZXcgTWFwO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyl7Y29uc3QgYT1lW25dO2EmJnQuc2V0KGEudG9TdHJpbmcoKSxuKX19ZWxzZSB0aGlzLmtpZFJlZlRvUG9zaXRpb249ZSBpbnN0YW5jZW9mIERpY3Q/bmV3IE1hcChbW2Uub2JqSWQsMF1dKTplP251bGw6bmV3IE1hcH1yZXR1cm4gdGhpcy5raWRSZWZUb1Bvc2l0aW9uP3RoaXMua2lkUmVmVG9Qb3NpdGlvbi5nZXQoZSk/P05hTjotMX0jdHQoZSx0LG4pe2lmKGUgaW5zdGFuY2VvZiBSZWYmJiEodDwwKSl7dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0T3JQdXRDb21wdXRlZChlLG1ha2VBcnIpLnB1c2goW3Qsbl0pfX1hZGRBbm5vdGF0aW9uSWRUb1BhZ2UoZSx0KXt0aGlzLiN0dChlLHQsYW8pfXN0YXRpYyBhc3luYyBjYW5DcmVhdGVTdHJ1Y3R1cmVUcmVlKHtjYXRhbG9nUmVmOmUscGRmTWFuYWdlcjp0LG5ld0Fubm90YXRpb25zQnlQYWdlOm59KXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKCJDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IG5vIGNhdGFsb2cgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBhPTAscj0hMDtmb3IoY29uc3RbZSxzXW9mIG4pe2NvbnN0e3JlZjpufT1hd2FpdCB0LmdldFBhZ2UoZSk7aWYoIShuIGluc3RhbmNlb2YgUmVmKSl7d2FybihgQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBwYWdlICR7ZX0gaGFzIG5vIHJlZi5gKTtyPSEwO2JyZWFrfWZvcihjb25zdCBlIG9mIHMpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5wYXJlbnRUcmVlSWQ9YSsrO3I9ITF9fWlmKHIpe2Zvcihjb25zdCBlIG9mIG4udmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSlkZWxldGUgdC5wYXJlbnRUcmVlSWQ7cmV0dXJuITF9cmV0dXJuITB9c3RhdGljIGFzeW5jIGNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmUseHJlZjp0LGNhdGFsb2dSZWY6bixwZGZNYW5hZ2VyOmEsY2hhbmdlczpyfSl7Y29uc3Qgcz1hd2FpdCBhLmVuc3VyZUNhdGFsb2coImNsb25lRGljdCIpLGk9bmV3IFJlZlNldENhY2hlO2kucHV0KG4scyk7Y29uc3Qgbz10LmdldE5ld1RlbXBvcmFyeVJlZigpO3Muc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsbyk7Y29uc3QgbD1uZXcgRGljdCh0KTtsLnNldCgiVHlwZSIsTmFtZS5nZXQoIlN0cnVjdFRyZWVSb290IikpO2NvbnN0IGY9dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtsLnNldCgiUGFyZW50VHJlZSIsZik7Y29uc3QgYz1bXTtsLnNldCgiSyIsYyk7aS5wdXQobyxsKTtjb25zdCBoPW5ldyBEaWN0KHQpLHU9W107aC5zZXQoIk51bXMiLHUpO2NvbnN0IG09YXdhaXQgdGhpcy4jbnQoe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6byxzdHJ1Y3RUcmVlUm9vdDpudWxsLGtpZHM6YyxudW1zOnUseHJlZjp0LHBkZk1hbmFnZXI6YSxjaGFuZ2VzOnIsY2FjaGU6aX0pO2wuc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsbSk7aS5wdXQoZixoKTtmb3IoY29uc3RbZSx0XW9mIGkuaXRlbXMoKSlyLnB1dChlLHtkYXRhOnR9KX1hc3luYyBjYW5VcGRhdGVTdHJ1Y3RUcmVlKHtwZGZNYW5hZ2VyOmUsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6dH0pe2lmKCF0aGlzLnJlZil7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG5vIHJvb3QgcmVmZXJlbmNlLiIpO3JldHVybiExfWxldCBuPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWVOZXh0S2V5Iik7aWYoIU51bWJlci5pc0ludGVnZXIobil8fG48MCl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IGludmFsaWQgbmV4dCBrZXkuIik7cmV0dXJuITF9Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBQYXJlbnRUcmVlIGlzbid0IGEgZGljdC4iKTtyZXR1cm4hMX1jb25zdCByPWEuZ2V0KCJOdW1zIik7aWYoIUFycmF5LmlzQXJyYXkocikpe3dhcm4oIkNhbm5vdCB1cGRhdGUgdGhlIHN0cnVjdCB0cmVlOiBudW1zIGlzbid0IGFuIGFycmF5LiIpO3JldHVybiExfWNvbnN0IHM9bmV3IE51bWJlclRyZWUoYSx0aGlzLnhyZWYpO2Zvcihjb25zdCBuIG9mIHQua2V5cygpKXtjb25zdHtwYWdlRGljdDp0fT1hd2FpdCBlLmdldFBhZ2Uobik7aWYoIXQuaGFzKCJTdHJ1Y3RQYXJlbnRzIikpY29udGludWU7Y29uc3QgYT10LmdldCgiU3RydWN0UGFyZW50cyIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhQXJyYXkuaXNBcnJheShzLmdldChhKSkpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke259IGhhcyBhIHdyb25nIGlkLmApO3JldHVybiExfX1sZXQgaT0hMDtmb3IoY29uc3RbYSxyXW9mIHQpe2NvbnN0e3BhZ2VEaWN0OnR9PWF3YWl0IGUuZ2V0UGFnZShhKTtTdHJ1Y3RUcmVlUm9vdC4jYXQoe2VsZW1lbnRzOnIseHJlZjp0aGlzLnhyZWYscGFnZURpY3Q6dCxudW1iZXJUcmVlOnN9KTtmb3IoY29uc3QgZSBvZiByKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UuYWNjZXNzaWJpbGl0eURhdGEuc3RydWN0UGFyZW50Pj0wfHwoZS5wYXJlbnRUcmVlSWQ9bisrKTtpPSExfX1pZihpKXtmb3IoY29uc3QgZSBvZiB0LnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpe2RlbGV0ZSB0LnBhcmVudFRyZWVJZDtkZWxldGUgdC5zdHJ1Y3RUcmVlUGFyZW50fXJldHVybiExfXJldHVybiEwfWFzeW5jIHVwZGF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmUscGRmTWFuYWdlcjp0LGNoYW5nZXM6bn0pe2NvbnN0e3JlZjphLHhyZWY6cn09dGhpcyxzPXRoaXMuZGljdC5jbG9uZSgpLGk9bmV3IFJlZlNldENhY2hlO2kucHV0KGEscyk7bGV0IG8sbD1zLmdldFJhdygiUGFyZW50VHJlZSIpO2lmKGwgaW5zdGFuY2VvZiBSZWYpbz1yLmZldGNoKGwpO2Vsc2V7bz1sO2w9ci5nZXROZXdUZW1wb3JhcnlSZWYoKTtzLnNldCgiUGFyZW50VHJlZSIsbCl9bz1vLmNsb25lKCk7aS5wdXQobCxvKTtsZXQgZj1vLmdldFJhdygiTnVtcyIpLGM9bnVsbDtpZihmIGluc3RhbmNlb2YgUmVmKXtjPWY7Zj1yLmZldGNoKGMpfWY9Zi5zbGljZSgpO2N8fG8uc2V0KCJOdW1zIixmKTtjb25zdCBoPWF3YWl0IFN0cnVjdFRyZWVSb290LiNudCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjphLHN0cnVjdFRyZWVSb290OnRoaXMsa2lkczpudWxsLG51bXM6Zix4cmVmOnIscGRmTWFuYWdlcjp0LGNoYW5nZXM6bixjYWNoZTppfSk7aWYoLTEhPT1oKXtzLnNldCgiUGFyZW50VHJlZU5leHRLZXkiLGgpO2MmJmkucHV0KGMsZik7Zm9yKGNvbnN0W2UsdF1vZiBpLml0ZW1zKCkpbi5wdXQoZSx7ZGF0YTp0fSl9fXN0YXRpYyBhc3luYyNudCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LHN0cnVjdFRyZWVSb290Om4sa2lkczphLG51bXM6cix4cmVmOnMscGRmTWFuYWdlcjppLGNoYW5nZXM6byxjYWNoZTpsfSl7Y29uc3QgZj1OYW1lLmdldCgiT0JKUiIpO2xldCBjLGg9LTE7Zm9yKGNvbnN0W3UsbV1vZiBlKXtjb25zdCBlPWF3YWl0IGkuZ2V0UGFnZSh1KSx7cmVmOnB9PWUsZD1wIGluc3RhbmNlb2YgUmVmO2Zvcihjb25zdHthY2Nlc3NpYmlsaXR5RGF0YTppLHJlZjpnLHBhcmVudFRyZWVJZDpiLHN0cnVjdFRyZWVQYXJlbnQ6d31vZiBtKXtpZighaT8udHlwZSljb250aW51ZTtjb25zdHtzdHJ1Y3RQYXJlbnQ6bX09aTtpZihuJiZOdW1iZXIuaXNJbnRlZ2VyKG0pJiZtPj0wKXtsZXQgdD0oY3x8PW5ldyBNYXApLmdldCh1KTtpZih2b2lkIDA9PT10KXt0PW5ldyBTdHJ1Y3RUcmVlUGFnZShuLGUucGFnZURpY3QpLmNvbGxlY3RPYmplY3RzKHApO2Muc2V0KHUsdCl9Y29uc3QgYT10Py5nZXQobSk7aWYoYSl7Y29uc3QgZT1zLmZldGNoKGEpLmNsb25lKCk7U3RydWN0VHJlZVJvb3QuI3J0KGUsaSk7by5wdXQoYSx7ZGF0YTplfSk7Y29udGludWV9fWg9TWF0aC5tYXgoaCxiKTtjb25zdCBqPXMuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaz1uZXcgRGljdChzKTtTdHJ1Y3RUcmVlUm9vdC4jcnQoayxpKTthd2FpdCB0aGlzLiNzdCh7c3RydWN0VHJlZVBhcmVudDp3LHRhZ0RpY3Q6ayxuZXdUYWdSZWY6aixzdHJ1Y3RUcmVlUm9vdFJlZjp0LGZhbGxiYWNrS2lkczphLHhyZWY6cyxjYWNoZTpsfSk7Y29uc3QgeT1uZXcgRGljdChzKTtrLnNldCgiSyIseSk7eS5zZXQoIlR5cGUiLGYpO2QmJnkuc2V0KCJQZyIscCk7eS5zZXQoIk9iaiIsZyk7bC5wdXQoaixrKTtyLnB1c2goYixqKX19cmV0dXJuIGgrMX1zdGF0aWMjcnQoZSx7dHlwZTp0LHRpdGxlOm4sbGFuZzphLGFsdDpyLGV4cGFuZGVkOnMsYWN0dWFsVGV4dDppfSl7ZS5zZXQoIlMiLE5hbWUuZ2V0KHQpKTtuJiZlLnNldCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShuKSk7YSYmZS5zZXQoIkxhbmciLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYSkpO3ImJmUuc2V0KCJBbHQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUocikpO3MmJmUuc2V0KCJFIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHMpKTtpJiZlLnNldCgiQWN0dWFsVGV4dCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSl9c3RhdGljI2F0KHtlbGVtZW50czplLHhyZWY6dCxwYWdlRGljdDpuLG51bWJlclRyZWU6YX0pe2NvbnN0IHI9bmV3IE1hcDtmb3IoY29uc3QgdCBvZiBlKWlmKHQuc3RydWN0VHJlZVBhcmVudElkKXtjb25zdCBlPXBhcnNlSW50KHQuc3RydWN0VHJlZVBhcmVudElkLnNwbGl0KCJfbWMiKVsxXSwxMCk7ci5nZXRPckluc2VydENvbXB1dGVkKGUsbWFrZUFycikucHVzaCh0KX1jb25zdCBzPW4uZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIocykpcmV0dXJuO2NvbnN0IGk9YS5nZXQocyksdXBkYXRlRWxlbWVudD0oZSxuLGEpPT57Y29uc3Qgcz1yLmdldChlKTtpZihzKXtjb25zdCBlPW4uZ2V0UmF3KCJQIikscj10LmZldGNoSWZSZWYoZSk7aWYoZSBpbnN0YW5jZW9mIFJlZiYmciBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9e3JlZjphLGRpY3Q6bn07Zm9yKGNvbnN0IHQgb2Ygcyl0LnN0cnVjdFRyZWVQYXJlbnQ9ZX1yZXR1cm4hMH1yZXR1cm4hMX07Zm9yKGNvbnN0IGUgb2YgaSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSljb250aW51ZTtjb25zdCBuPXQuZmV0Y2goZSksYT1uLmdldCgiSyIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkpdXBkYXRlRWxlbWVudChhLG4sZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgciBvZiBhKXtyPXQuZmV0Y2hJZlJlZihyKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiZ1cGRhdGVFbGVtZW50KHIsbixlKSlicmVhaztpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZighaXNOYW1lKHIuZ2V0KCJUeXBlIiksIk1DUiIpKWJyZWFrO2NvbnN0IGE9ci5nZXQoIk1DSUQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpJiZ1cGRhdGVFbGVtZW50KGEsbixlKSlicmVha319fXN0YXRpYyBhc3luYyNzdCh7c3RydWN0VHJlZVBhcmVudDplLHRhZ0RpY3Q6dCxuZXdUYWdSZWY6bixzdHJ1Y3RUcmVlUm9vdFJlZjphLGZhbGxiYWNrS2lkczpyLHhyZWY6cyxjYWNoZTppfSl7bGV0IG8sbD1udWxsO2lmKGUpeyh7cmVmOmx9PWUpO289ZS5kaWN0LmdldFJhdygiUCIpfHxhfWVsc2Ugbz1hO3Quc2V0KCJQIixvKTtjb25zdCBmPXMuZmV0Y2hJZlJlZihvKTtpZighZil7ci5wdXNoKG4pO3JldHVybn1jb25zdCBjPWkuZ2V0T3JQdXRDb21wdXRlZChvLCgpPT5mLmNsb25lKCkpLGg9Yy5nZXRSYXcoIksiKTtsZXQgdT1oIGluc3RhbmNlb2YgUmVmP2kuZ2V0KGgpOm51bGw7aWYoIXUpe3U9cy5mZXRjaElmUmVmKGgpO3U9QXJyYXkuaXNBcnJheSh1KT91LnNsaWNlKCk6W2hdO2NvbnN0IGU9cy5nZXROZXdUZW1wb3JhcnlSZWYoKTtjLnNldCgiSyIsZSk7aS5wdXQoZSx1KX1jb25zdCBtPXUuaW5kZXhPZihsKTt1LnNwbGljZShtPj0wP20rMTp1Lmxlbmd0aCwwLG4pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMudHJlZT1lO3RoaXMueHJlZj1lLnhyZWY7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDpufT10aGlzLnRyZWU7cmV0dXJuIG4ucm9sZU1hcC5nZXQodCk/P3R9Z2V0IG1hdGhNTCgpe2xldCBlPXRoaXMuZGljdC5nZXQoIkFGIil8fFtdO0FycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7Zm9yKGxldCB0IG9mIGUpe3Q9dGhpcy54cmVmLmZldGNoSWZSZWYodCk7aWYoIWlzRGljdCh0LCJGaWxlc3BlYyIpfHwhaXNOYW1lKHQuZ2V0KCJBRlJlbGF0aW9uc2hpcCIpLCJTdXBwbGVtZW50IikpY29udGludWU7Y29uc3QgZT1GaWxlU3BlYy5waWNrUGxhdGZvcm1JdGVtKHQuZ2V0KCJFRiIpKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmaXNEaWN0KGUuZGljdCwiRW1iZWRkZWRGaWxlIikmJmlzTmFtZShlLmRpY3QuZ2V0KCJTdWJ0eXBlIiksImFwcGxpY2F0aW9uL21hdGhtbCt4bWwiKSlyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGUuZ2V0U3RyaW5nKCkpfWNvbnN0IHQ9dGhpcy5kaWN0LmdldCgiQSIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUodC5nZXQoIk8iKSwiTVNGVF9PZmZpY2UiKSl7Y29uc3QgZT10LmdldCgiTVNGVF9NYXRoTUwiKTtyZXR1cm4gZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsfX1yZXR1cm4gbnVsbH1wYXJzZUtpZHMoKXtsZXQgZT1udWxsO2NvbnN0IHQ9dGhpcy5kaWN0LmdldFJhdygiUGciKTt0IGluc3RhbmNlb2YgUmVmJiYoZT10LnRvU3RyaW5nKCkpO2NvbnN0IG49dGhpcy5kaWN0LmdldCgiSyIpO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKGNvbnN0IHQgb2Ygbil7Y29uc3Qgbj10aGlzLnBhcnNlS2lkKGUsdGhpcy54cmVmLmZldGNoSWZSZWYodCkpO24mJnRoaXMua2lkcy5wdXNoKG4pfWVsc2V7Y29uc3QgdD10aGlzLnBhcnNlS2lkKGUsbik7dCYmdGhpcy5raWRzLnB1c2godCl9fXBhcnNlS2lkKGUsdCl7aWYoTnVtYmVyLmlzSW50ZWdlcih0KSlyZXR1cm4gdGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZT9udWxsOm5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOmVvLG1jaWQ6dCxwYWdlT2JqSWQ6ZX0pO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IG49dC5nZXRSYXcoIlBnIik7biBpbnN0YW5jZW9mIFJlZiYmKGU9bi50b1N0cmluZygpKTtjb25zdCBhPXQuZ2V0KCJUeXBlIilpbnN0YW5jZW9mIE5hbWU/dC5nZXQoIlR5cGUiKS5uYW1lOm51bGw7aWYoIk1DUiI9PT1hKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybiBudWxsO2NvbnN0IG49dC5nZXRSYXcoIlN0bSIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTp0byxyZWZPYmpJZDpuIGluc3RhbmNlb2YgUmVmP24udG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplLG1jaWQ6dC5nZXQoIk1DSUQiKX0pfWlmKCJPQkpSIj09PWEpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3Qgbj10LmdldFJhdygiT2JqIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOm5vLHJlZk9iaklkOm4gaW5zdGFuY2VvZiBSZWY/bi50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmV9KX1yZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cm8sZGljdDp0fSl9fWNsYXNzIFN0cnVjdEVsZW1lbnR7Y29uc3RydWN0b3Ioe3R5cGU6ZSxkaWN0OnQ9bnVsbCxtY2lkOm49bnVsbCxwYWdlT2JqSWQ6YT1udWxsLHJlZk9iaklkOnI9bnVsbH0pe3RoaXMudHlwZT1lO3RoaXMuZGljdD10O3RoaXMubWNpZD1uO3RoaXMucGFnZU9iaklkPWE7dGhpcy5yZWZPYmpJZD1yO3RoaXMucGFyZW50Tm9kZT1udWxsfX1jbGFzcyBTdHJ1Y3RUcmVlUGFnZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucm9vdD1lO3RoaXMueHJlZj1lPy54cmVmPz9udWxsO3RoaXMucm9vdERpY3Q9ZT8uZGljdD8/bnVsbDt0aGlzLnBhZ2VEaWN0PXQ7dGhpcy5ub2Rlcz1bXX1jb2xsZWN0T2JqZWN0cyhlKXtpZighKHRoaXMucm9vdCYmdGhpcy5yb290RGljdCYmZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLnJvb3REaWN0LmdldCgiUGFyZW50VHJlZSIpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0IG49dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0IGE9bmV3IE1hcCxyPW5ldyBOdW1iZXJUcmVlKHQsdGhpcy54cmVmKTtmb3IoY29uc3RbZV1vZiBuKXtjb25zdCB0PXIuZ2V0UmF3KGUpO3QgaW5zdGFuY2VvZiBSZWYmJmEuc2V0KGUsdCl9cmV0dXJuIGF9cGFyc2UoZSl7aWYoISh0aGlzLnJvb3QmJnRoaXMucm9vdERpY3QmJmUgaW5zdGFuY2VvZiBSZWYpKXJldHVybjtjb25zdHtwYXJlbnRUcmVlOnR9PXRoaXMucm9vdDtpZighdClyZXR1cm47Y29uc3Qgbj10aGlzLnBhZ2VEaWN0LmdldCgiU3RydWN0UGFyZW50cyIpLGE9dGhpcy5yb290LnN0cnVjdFBhcmVudElkcz8uZ2V0KGUpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pJiYhYSlyZXR1cm47Y29uc3Qgcj1uZXcgTWFwO2lmKE51bWJlci5pc0ludGVnZXIobikpe2NvbnN0IGU9dC5nZXQobik7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgdCBvZiBlKXQgaW5zdGFuY2VvZiBSZWYmJnRoaXMuYWRkTm9kZSh0aGlzLnhyZWYuZmV0Y2godCkscil9aWYoYSlmb3IoY29uc3RbZSxuXW9mIGEpe2NvbnN0IGE9dC5nZXQoZSk7aWYoYSl7Y29uc3QgZT10aGlzLmFkZE5vZGUodGhpcy54cmVmLmZldGNoSWZSZWYoYSkscik7MT09PWU/LmtpZHM/Lmxlbmd0aCYmZS5raWRzWzBdLnR5cGU9PT1ubyYmKGUua2lkc1swXS50eXBlPW4pfX19YWRkTm9kZShlLHQsbj0wKXtpZihuPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIE1BWF9ERVBUSCByZWFjaGVkLiIpO3JldHVybiBudWxsfWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTtjb25zdCBhPW5ldyBTdHJ1Y3RFbGVtZW50Tm9kZSh0aGlzLGUpO3Quc2V0KGUsYSk7c3dpdGNoKGEucm9sZSl7Y2FzZSJMIjpjYXNlIkxCb2R5IjpjYXNlIkxJIjpjYXNlIlRhYmxlIjpjYXNlIlRIZWFkIjpjYXNlIlRCb2R5IjpjYXNlIlRGb290IjpjYXNlIlRSIjpmb3IoY29uc3QgZSBvZiBhLmtpZHMpZS50eXBlPT09cm8mJnRoaXMuYWRkTm9kZShlLmRpY3QsdCxuLTEpfWNvbnN0IHI9ZS5nZXQoIlAiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KXx8aXNOYW1lKHIuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290Iikpe3RoaXMuYWRkVG9wTGV2ZWxOb2RlKGUsYSl8fHQuZGVsZXRlKGUpO3JldHVybiBhfWNvbnN0IHM9dGhpcy5hZGROb2RlKHIsdCxuKzEpO2lmKCFzKXJldHVybiBhO2xldCBpPSExO2Zvcihjb25zdCB0IG9mIHMua2lkcylpZih0LnR5cGU9PT1ybyYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWE7aT0hMH1pfHx0LmRlbGV0ZShlKTtyZXR1cm4gYX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBuPXRoaXMucm9vdC5nZXRLaWRQb3NpdGlvbihlLm9iaklkKTtpZihpc05hTihuKSlyZXR1cm4hMTstMSE9PW4mJih0aGlzLm5vZGVzW25dPXQpO3JldHVybiEwfWdldCBzZXJpYWxpemFibGUoKXtmdW5jdGlvbiBub2RlVG9TZXJpYWxpemFibGUoZSx0LG49MCl7aWYobj40MCl7d2FybigiU3RydWN0VHJlZSB0b28gZGVlcCB0byBiZSBmdWxseSBzZXJpYWxpemVkLiIpO3JldHVybn1jb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7YS5yb2xlPWUucm9sZTthLmNoaWxkcmVuPVtdO3QuY2hpbGRyZW4ucHVzaChhKTtsZXQgcj1lLmRpY3QuZ2V0KCJBbHQiKTsic3RyaW5nIiE9dHlwZW9mIHImJihyPWUuZGljdC5nZXQoIkFjdHVhbFRleHQiKSk7InN0cmluZyI9PXR5cGVvZiByJiYoYS5hbHQ9c3RyaW5nVG9QREZTdHJpbmcocikpO2lmKCJGb3JtdWxhIj09PWEucm9sZSl0cnl7Y29uc3R7bWF0aE1MOnR9PWU7dCYmKGEubWF0aE1MPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYElnbm9yaW5nIG1hdGhNTDogIiR7ZX0iLmApfWNvbnN0IHM9ZS5kaWN0LmdldCgiQSIpO2lmKHMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2lmKGUpYS5iYm94PWU7ZWxzZXtjb25zdCBlPXMuZ2V0KCJXaWR0aCIpLHQ9cy5nZXQoIkhlaWdodCIpOyJudW1iZXIiPT10eXBlb2YgZSYmZT4wJiYibnVtYmVyIj09dHlwZW9mIHQmJnQ+MCYmKGEuYmJveD1bMCwwLGUsdF0pfX1jb25zdCBpPWUuZGljdC5nZXQoIkxhbmciKTsic3RyaW5nIj09dHlwZW9mIGkmJihhLmxhbmc9c3RyaW5nVG9QREZTdHJpbmcoaSkpO2Zvcihjb25zdCB0IG9mIGUua2lkcyl7Y29uc3QgZT10LnR5cGU9PT1ybz90LnBhcmVudE5vZGU6bnVsbDtlP25vZGVUb1NlcmlhbGl6YWJsZShlLGEsbisxKTp0LnR5cGU9PT1lb3x8dC50eXBlPT09dG8/YS5jaGlsZHJlbi5wdXNoKHt0eXBlOiJjb250ZW50IixpZDpgcCR7dC5wYWdlT2JqSWR9X21jJHt0Lm1jaWR9YH0pOnQudHlwZT09PW5vP2EuY2hpbGRyZW4ucHVzaCh7dHlwZToib2JqZWN0IixpZDp0LnJlZk9iaklkfSk6dC50eXBlPT09YW8mJmEuY2hpbGRyZW4ucHVzaCh7dHlwZToiYW5ub3RhdGlvbiIsaWQ6YHBkZmpzX2ludGVybmFsX2lkXyR7dC5yZWZPYmpJZH1gfSl9fWNvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlLmNoaWxkcmVuPVtdO2Uucm9sZT0iUm9vdCI7Zm9yKGNvbnN0IHQgb2YgdGhpcy5ub2Rlcyl0JiZub2RlVG9TZXJpYWxpemFibGUodCxlKTtyZXR1cm4gZX19Y29uc3Qgc289ZnVuY3Rpb24gX2lzVmFsaWRFeHBsaWNpdERlc3QoZSx0LG4pe2lmKCFBcnJheS5pc0FycmF5KG4pfHxuLmxlbmd0aDwyKXJldHVybiExO2NvbnN0W2EsciwuLi5zXT1uO2lmKCFlKGEpJiYhTnVtYmVyLmlzSW50ZWdlcihhKSlyZXR1cm4hMTtpZighdChyKSlyZXR1cm4hMTtjb25zdCBpPXMubGVuZ3RoO2xldCBvPSEwO3N3aXRjaChyLm5hbWUpe2Nhc2UiWFlaIjppZihpPDJ8fGk+MylyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PWk7Y2FzZSJGaXRIIjpjYXNlIkZpdEJIIjpjYXNlIkZpdFYiOmNhc2UiRml0QlYiOmlmKGk+MSlyZXR1cm4hMTticmVhaztjYXNlIkZpdFIiOmlmKDQhPT1pKXJldHVybiExO289ITE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4hMX1mb3IoY29uc3QgZSBvZiBzKWlmKCEoIm51bWJlciI9PXR5cGVvZiBlfHxvJiZudWxsPT09ZSkpcmV0dXJuITE7cmV0dXJuITB9LmJpbmQobnVsbCxlPT5lIGluc3RhbmNlb2YgUmVmLGlzTmFtZSk7ZnVuY3Rpb24gZmV0Y2hEZXN0KGUpe2UgaW5zdGFuY2VvZiBEaWN0JiYoZT1lLmdldCgiRCIpKTtyZXR1cm4gc28oZSk/ZTpudWxsfWZ1bmN0aW9uIGZldGNoUmVtb3RlRGVzdChlKXtsZXQgdD1lLmdldCgiRCIpO2lmKHQpe3QgaW5zdGFuY2VvZiBOYW1lJiYodD10Lm5hbWUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gc3RyaW5nVG9QREZTdHJpbmcodCwhMCk7aWYoc28odCkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfXJldHVybiBudWxsfWNsYXNzIENhdGFsb2d7I2l0PW51bGw7I290PW5ldyBSZWZTZXRDYWNoZTsjbHQ9bmV3IE1hcDsjZnQ9bmV3IFNldDsjY3Q9bnVsbDtidWlsdEluQ01hcENhY2hlPW5ldyBNYXA7Zm9udENhY2hlPW5ldyBSZWZTZXRDYWNoZTtnbG9iYWxDb2xvclNwYWNlQ2FjaGU9bmV3IEdsb2JhbENvbG9yU3BhY2VDYWNoZTtnbG9iYWxJbWFnZUNhY2hlPW5ldyBHbG9iYWxJbWFnZUNhY2hlO25vbkJsZW5kTW9kZXNTZXQ9bmV3IFJlZlNldDtwYWdlRGljdENhY2hlPW5ldyBSZWZTZXRDYWNoZTtwYWdlSW5kZXhDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7cGFnZUtpZHNDb3VudENhY2hlPW5ldyBSZWZTZXRDYWNoZTtzdGFuZGFyZEZvbnREYXRhQ2FjaGU9bmV3IE1hcDtzeXN0ZW1Gb250Q2FjaGU9bmV3IE1hcDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMueHJlZj10O3RoaXMuI2N0PXQuZ2V0Q2F0YWxvZ09iaigpO2lmKCEodGhpcy4jY3QgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNhdGFsb2cgb2JqZWN0IGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7dGhpcy50b3BsZXZlbFBhZ2VzRGljdH1jbG9uZURpY3QoKXtyZXR1cm4gdGhpcy4jY3QuY2xvbmUoKX1nZXRBdHRhY2htZW50SWRGb3JBbm5vdGF0aW9uKGUsdD0hMSl7bGV0IG49dGhpcy4jb3QuZ2V0KGUpO2lmKCFuKXtjb25zdCB0PWBhdHRhY2htZW50UmVmOiR7ZS50b1N0cmluZygpfWA7bj10O2xldCBhPTE7Zm9yKDt0aGlzLiNsdC5oYXMobil8fHRoaXMuYXR0YWNobWVudHM/LmhhcyhuKTspbj1gJHt0fS0ke2ErK31gO3RoaXMuI290LnB1dChlLG4pO3RoaXMuI2x0LnNldChuLGUpfXQmJnRoaXMuI2Z0LmFkZChuKTtyZXR1cm4gbn1nZXQgdmVyc2lvbigpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2lmKHduLnRlc3QoZS5uYW1lKSlyZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLGUubmFtZSk7d2FybihgSW52YWxpZCBQREYgY2F0YWxvZyB2ZXJzaW9uOiAke2UubmFtZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIkxhbmciKTtyZXR1cm4gc2hhZG93KHRoaXMsImxhbmciLGUmJiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsKX1nZXQgbmVlZHNSZW5kZXJpbmcoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiTmVlZHNSZW5kZXJpbmciKTtyZXR1cm4gc2hhZG93KHRoaXMsIm5lZWRzUmVuZGVyaW5nIiwiYm9vbGVhbiI9PXR5cGVvZiBlJiZlKX1nZXQgY29sbGVjdGlvbigpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy4jY3QuZ2V0KCJDb2xsZWN0aW9uIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiY29sbGVjdGlvbiIsZSl9Z2V0IGFjcm9Gb3JtKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLiNjdC5nZXQoIkFjcm9Gb3JtIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQWNyb0Zvcm0gZW50cnk7IGFzc3VtaW5nIG5vIGZvcm1zIGFyZSBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiYWNyb0Zvcm0iLGUpfWdldCBhY3JvRm9ybVJlZigpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0UmF3KCJBY3JvRm9ybSIpO3JldHVybiBzaGFkb3codGhpcywiYWNyb0Zvcm1SZWYiLGUgaW5zdGFuY2VvZiBSZWY/ZTpudWxsKX1nZXQgbWV0YWRhdGEoKXtjb25zdCBlPXRoaXMuI2N0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IG49dGhpcy54cmVmLmZldGNoKGUsIXRoaXMueHJlZi5lbmNyeXB0Py5lbmNyeXB0TWV0YWRhdGEpO2lmKG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZpc0RpY3Qobi5kaWN0LCJNZXRhZGF0YSIpJiZpc05hbWUobi5kaWN0LmdldCgiU3VidHlwZSIpLCJYTUwiKSl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcobi5nZXRTdHJpbmcoKSk7ZSYmKHQ9bmV3IE1ldGFkYXRhUGFyc2VyKGUpLnNlcmlhbGl6YWJsZSl9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oYFNraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIix0KX1nZXQgbWFya0luZm8oKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI2h0KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgbWFyayBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywibWFya0luZm8iLGUpfSNodCgpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJNYXJrSW5mbyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IHQ9e01hcmtlZDohMSxVc2VyUHJvcGVydGllczohMSxTdXNwZWN0czohMX07Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgYT1lLmdldChuKTsiYm9vbGVhbiI9PXR5cGVvZiBhJiYodFtuXT1hKX1yZXR1cm4gdH1nZXQgaGFzU3RydWN0VHJlZSgpe3JldHVybiB0aGlzLiNjdC5oYXMoIlN0cnVjdFRyZWVSb290Iil9Z2V0IHN0cnVjdFRyZWVSb290KCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiN1dCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSByZWFkIHRvIHN0cnVjdFRyZWVSb290IGluZm8uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJzdHJ1Y3RUcmVlUm9vdCIsZSl9I3V0KCl7Y29uc3QgZT10aGlzLiNjdC5nZXRSYXcoIlN0cnVjdFRyZWVSb290IiksdD10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKTtyZXR1cm4gdCBpbnN0YW5jZW9mIERpY3Q/bmV3IFN0cnVjdFRyZWVSb290KHRoaXMueHJlZix0LGUpOm51bGx9Z2V0IHRvcGxldmVsUGFnZXNEaWN0KCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIlBhZ2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5LiIpO3JldHVybiBzaGFkb3codGhpcywidG9wbGV2ZWxQYWdlc0RpY3QiLGUpfWdldCBkb2N1bWVudE91dGxpbmUoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI210KCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9I210KGU9e30pe2xldCB0PXRoaXMuI2N0LmdldCgiT3V0bGluZXMiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDt0PXQuZ2V0UmF3KCJGaXJzdCIpO2lmKCEodCBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3Qgbj17aXRlbXM6W119LGE9W3tvYmo6dCxwYXJlbnQ6bn1dLHI9bmV3IFJlZlNldDtyLnB1dCh0KTtjb25zdCBzPXRoaXMueHJlZixpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCBuPWEuc2hpZnQoKSxvPXMuZmV0Y2hJZlJlZihuLm9iaik7aWYobnVsbD09PW8pY29udGludWU7by5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IGw9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpvLHJlc3VsdE9iajpsLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBmPW8uZ2V0KCJUaXRsZSIpLGM9by5nZXQoIkYiKXx8MCxoPW8uZ2V0QXJyYXkoIkMiKSx1PW8uZ2V0KCJDb3VudCIpO2xldCBtPWk7IWlzTnVtYmVyQXJyYXkoaCwzKXx8MD09PWhbMF0mJjA9PT1oWzFdJiYwPT09aFsyXXx8KG09Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2IoaCwwKSk7Y29uc3QgcD17YWN0aW9uOmwuYWN0aW9uLGF0dGFjaG1lbnRJZDpsLmF0dGFjaG1lbnRJZCxhdHRhY2htZW50OmwuYXR0YWNobWVudCxkZXN0OmwuZGVzdCx1cmw6bC51cmwsdW5zYWZlVXJsOmwudW5zYWZlVXJsLG5ld1dpbmRvdzpsLm5ld1dpbmRvdyxzZXRPQ0dTdGF0ZTpsLnNldE9DR1N0YXRlLHRpdGxlOiJzdHJpbmciPT10eXBlb2YgZj9zdHJpbmdUb1BERlN0cmluZyhmKToiIixjb2xvcjptLGNvdW50Ok51bWJlci5pc0ludGVnZXIodSk/dTp2b2lkIDAsYm9sZDohISgyJmMpLGl0YWxpYzohISgxJmMpLGl0ZW1zOltdfTtlLmtlZXBSYXdEaWN0JiYocC5yYXdEaWN0PW8pO24ucGFyZW50Lml0ZW1zLnB1c2gocCk7dD1vLmdldFJhdygiRmlyc3QiKTtpZih0IGluc3RhbmNlb2YgUmVmJiYhci5oYXModCkpe2EucHVzaCh7b2JqOnQscGFyZW50OnB9KTtyLnB1dCh0KX10PW8uZ2V0UmF3KCJOZXh0Iik7aWYodCBpbnN0YW5jZW9mIFJlZiYmIXIuaGFzKHQpKXthLnB1c2goe29iajp0LHBhcmVudDpuLnBhcmVudH0pO3IucHV0KHQpfX1yZXR1cm4gbi5pdGVtcy5sZW5ndGg+MD9uLml0ZW1zOm51bGx9Z2V0IGRvY3VtZW50T3V0bGluZUZvckVkaXRvcigpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jbXQoe2tlZXBSYXdEaWN0OiEwfSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZUZvckVkaXRvciIsZSl9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNwdCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIHBlcm1pc3Npb25zLiIpfXJldHVybiBzaGFkb3codGhpcywicGVybWlzc2lvbnMiLGUpfSNwdCgpe2NvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJFbmNyeXB0Iik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7bGV0IHQ9ZS5nZXQoIlAiKTtpZigibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dCs9MioqMzI7Y29uc3Qgbj1bXTtmb3IoY29uc3QgZSBpbiBxKXtjb25zdCBhPXFbZV07dCZhJiZuLnB1c2goYSl9cmV0dXJuIG59Z2V0IG9wdGlvbmFsQ29udGVudENvbmZpZygpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy4jY3QuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3Qgbj10LmdldCgiRCIpO2lmKCFuKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCBhPXQuZ2V0KCJPQ0dzIik7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IHI9bmV3IFJlZlNldENhY2hlO2Zvcihjb25zdCBlIG9mIGEpZSBpbnN0YW5jZW9mIFJlZiYmIXIuaGFzKGUpJiZyLnB1dChlLHRoaXMuI2R0KGUpKTtlPXRoaXMuI2d0KG4scil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgVW5hYmxlIHRvIHJlYWQgb3B0aW9uYWwgY29udGVudCBjb25maWc6ICR7ZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9I2R0KGUpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoKGUpLG49e2lkOmUudG9TdHJpbmcoKSxuYW1lOm51bGwsaW50ZW50Om51bGwsdXNhZ2U6e3ByaW50Om51bGwsdmlldzpudWxsfSxyYkdyb3VwczpbXX0sYT10LmdldCgiTmFtZSIpOyJzdHJpbmciPT10eXBlb2YgYSYmKG4ubmFtZT1zdHJpbmdUb1BERlN0cmluZyhhKSk7bGV0IHI9dC5nZXRBcnJheSgiSW50ZW50Iik7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtyLmV2ZXJ5KGU9PmUgaW5zdGFuY2VvZiBOYW1lKSYmKG4uaW50ZW50PXIubWFwKGU9PmUubmFtZSkpO2NvbnN0IHM9dC5nZXQoIlVzYWdlIik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG47Y29uc3QgaT1uLnVzYWdlLG89cy5nZXQoIlByaW50Iik7aWYobyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9by5nZXQoIlByaW50U3RhdGUiKTtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6aS5wcmludD17cHJpbnRTdGF0ZTplLm5hbWV9fX1jb25zdCBsPXMuZ2V0KCJWaWV3Iik7aWYobCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9bC5nZXQoIlZpZXdTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjppLnZpZXc9e3ZpZXdTdGF0ZTplLm5hbWV9fX1yZXR1cm4gbn0jZ3QoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IG49W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgYSBvZiBlKWEgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKGEpJiZuLnB1c2goYS50b1N0cmluZygpKTtyZXR1cm4gbn1mdW5jdGlvbiBwYXJzZU9yZGVyKGUsbj0wKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbnVsbDtjb25zdCByPVtdO2Zvcihjb25zdCBzIG9mIGUpe2lmKHMgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKHMpKXthLnB1dChzKTtyLnB1c2gocy50b1N0cmluZygpKTtjb250aW51ZX1jb25zdCBlPXBhcnNlTmVzdGVkT3JkZXIocyxuKTtlJiZyLnB1c2goZSl9aWYobj4wKXJldHVybiByO2NvbnN0IHM9W107Zm9yKGNvbnN0W2Vdb2YgdC5pdGVtcygpKWEuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmci5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiByfWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cil7d2FybigicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3QgYT1uLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIG51bGw7Y29uc3Qgcz1uLmZldGNoSWZSZWYoYVswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBzKXJldHVybiBudWxsO2NvbnN0IGk9cGFyc2VPcmRlcihhLnNsaWNlKDEpLHQpO3JldHVybiBpPy5sZW5ndGg/e25hbWU6c3RyaW5nVG9QREZTdHJpbmcocyksb3JkZXI6aX06bnVsbH1jb25zdCBuPXRoaXMueHJlZixhPW5ldyBSZWZTZXQscj0xMDshZnVuY3Rpb24gcGFyc2VSQkdyb3VwcyhlKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9bi5mZXRjaElmUmVmKGEpO2lmKCFBcnJheS5pc0FycmF5KGUpfHwhZS5sZW5ndGgpY29udGludWU7Y29uc3Qgcj1uZXcgU2V0O2Zvcihjb25zdCBuIG9mIGUpaWYobiBpbnN0YW5jZW9mIFJlZiYmdC5oYXMobikmJiFyLmhhcyhuLnRvU3RyaW5nKCkpKXtyLmFkZChuLnRvU3RyaW5nKCkpO3QuZ2V0KG4pLnJiR3JvdXBzLnB1c2gocil9fX0oZS5nZXQoIlJCR3JvdXBzIikpO3JldHVybntuYW1lOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIk5hbWUiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiTmFtZSIpKTpudWxsLGNyZWF0b3I6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiQ3JlYXRvciIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJDcmVhdG9yIikpOm51bGwsYmFzZVN0YXRlOmUuZ2V0KCJCYXNlU3RhdGUiKWluc3RhbmNlb2YgTmFtZT9lLmdldCgiQmFzZVN0YXRlIikubmFtZTpudWxsLG9uOnBhcnNlT25PZmYoZS5nZXQoIk9OIikpLG9mZjpwYXJzZU9uT2ZmKGUuZ2V0KCJPRkYiKSksb3JkZXI6cGFyc2VPcmRlcihlLmdldCgiT3JkZXIiKSksZ3JvdXBzOlsuLi50XX19c2V0QWN0dWFsTnVtUGFnZXMoZT1udWxsKXt0aGlzLiNpdD1lfWdldCBoYXNBY3R1YWxOdW1QYWdlcygpe3JldHVybiBudWxsIT09dGhpcy4jaXR9Z2V0IF9wYWdlc0NvdW50KCl7Y29uc3QgZT10aGlzLnRvcGxldmVsUGFnZXNEaWN0LmdldCgiQ291bnQiKTtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaW4gdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkgaXMgbm90IGFuIGludGVnZXIuIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuI2l0Pz90aGlzLl9wYWdlc0NvdW50fWdldCBkZXN0aW5hdGlvbnMoKXtjb25zdCBlPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgdGhpcy4jYnQoKSlpZih0IGluc3RhbmNlb2YgTmFtZVRyZWUpZm9yKGNvbnN0W24sYV1vZiB0LmdldEFsbCgpKXtjb25zdCB0PWZldGNoRGVzdChhKTt0JiZlLnNldChzdHJpbmdUb1BERlN0cmluZyhuLCEwKSx0KX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtuLGFdb2YgdCl7Y29uc3QgdD1mZXRjaERlc3QoYSk7dCYmZS5nZXRPckluc2VydChzdHJpbmdUb1BERlN0cmluZyhuLCEwKSx0KX1yZXR1cm4gc2hhZG93KHRoaXMsImRlc3RpbmF0aW9ucyIsZSl9Z2V0RGVzdGluYXRpb24oZSl7aWYoT2JqZWN0Lmhhc093bih0aGlzLCJkZXN0aW5hdGlvbnMiKSlyZXR1cm4gdGhpcy5kZXN0aW5hdGlvbnMuZ2V0KGUpPz9udWxsO2Zvcihjb25zdCB0IG9mIHRoaXMuI2J0KCkpaWYodCBpbnN0YW5jZW9mIE5hbWVUcmVlfHx0IGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgbj1mZXRjaERlc3QodC5nZXQoZSkpO2lmKG4pcmV0dXJuIG59cmV0dXJuIHRoaXMuZGVzdGluYXRpb25zLmdldChlKT8/bnVsbH0jYnQoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiTmFtZXMiKSx0PVtdO2U/LmhhcygiRGVzdHMiKSYmdC5wdXNoKG5ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpKTt0aGlzLiNjdC5oYXMoIkRlc3RzIikmJnQucHVzaCh0aGlzLiNjdC5nZXQoIkRlc3RzIikpO3JldHVybiB0fWdldCByYXdQYWdlTGFiZWxzKCl7Y29uc3QgZT10aGlzLiNjdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IE51bWJlclRyZWUoZSx0aGlzLnhyZWYpLmdldEFsbCgpfWdldCBwYWdlTGFiZWxzKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiN3dCgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIHBhZ2UgbGFiZWxzLiIpfXJldHVybiBzaGFkb3codGhpcywicGFnZUxhYmVscyIsZSl9I3d0KCl7Y29uc3QgZT10aGlzLnJhd1BhZ2VMYWJlbHM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgQXJyYXkodGhpcy5udW1QYWdlcyk7bGV0IG49bnVsbCxhPSIiLHI9IiIscz0xO2ZvcihsZXQgaT0wLG89dGhpcy5udW1QYWdlcztpPG87aSsrKXtjb25zdCBvPWUuZ2V0KGkpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO249ZS5uYW1lfWVsc2Ugbj1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2UgYT0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtzPWV9ZWxzZSBzPTF9c3dpdGNoKG4pe2Nhc2UiRCI6cj1zO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjpyPXRvUm9tYW5OdW1lcmFscyhzLCJyIj09PW4pO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09bj85Nzo2NSxhPXMtMTtyPVN0cmluZy5mcm9tQ2hhckNvZGUodCthJWUpLnJlcGVhdChNYXRoLmZsb29yKGEvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihuKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHtufSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7cj0iIn10W2ldPWErcjtzKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiUGFnZUxheW91dCIpO2xldCB0PSIiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiU2luZ2xlUGFnZSI6Y2FzZSJPbmVDb2x1bW4iOmNhc2UiVHdvQ29sdW1uTGVmdCI6Y2FzZSJUd29Db2x1bW5SaWdodCI6Y2FzZSJUd29QYWdlTGVmdCI6Y2FzZSJUd29QYWdlUmlnaHQiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZUxheW91dCIsdCl9Z2V0IHBhZ2VNb2RlKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIlBhZ2VNb2RlIik7bGV0IHQ9IlVzZU5vbmUiO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiRnVsbFNjcmVlbiI6Y2FzZSJVc2VPQyI6Y2FzZSJVc2VBdHRhY2htZW50cyI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTW9kZSIsdCl9Z2V0IHZpZXdlclByZWZlcmVuY2VzKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3RbbixhXW9mIGUpe2xldCBlO3N3aXRjaChuKXtjYXNlIkhpZGVUb29sYmFyIjpjYXNlIkhpZGVNZW51YmFyIjpjYXNlIkhpZGVXaW5kb3dVSSI6Y2FzZSJGaXRXaW5kb3ciOmNhc2UiQ2VudGVyV2luZG93IjpjYXNlIkRpc3BsYXlEb2NUaXRsZSI6Y2FzZSJQaWNrVHJheUJ5UERGU2l6ZSI6ImJvb2xlYW4iPT10eXBlb2YgYSYmKGU9YSk7YnJlYWs7Y2FzZSJOb25GdWxsU2NyZWVuUGFnZU1vZGUiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiVXNlTm9uZSI6Y2FzZSJVc2VPdXRsaW5lcyI6Y2FzZSJVc2VUaHVtYnMiOmNhc2UiVXNlT0MiOmU9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iVXNlTm9uZSJ9YnJlYWs7Y2FzZSJEaXJlY3Rpb24iOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTDJSIjpjYXNlIlIyTCI6ZT1hLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJMMlIifWJyZWFrO2Nhc2UiVmlld0FyZWEiOmNhc2UiVmlld0NsaXAiOmNhc2UiUHJpbnRBcmVhIjpjYXNlIlByaW50Q2xpcCI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJNZWRpYUJveCI6Y2FzZSJDcm9wQm94IjpjYXNlIkJsZWVkQm94IjpjYXNlIlRyaW1Cb3giOmNhc2UiQXJ0Qm94IjplPWEubmFtZTticmVhaztkZWZhdWx0OmU9IkNyb3BCb3gifWJyZWFrO2Nhc2UiUHJpbnRTY2FsaW5nIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIk5vbmUiOmNhc2UiQXBwRGVmYXVsdCI6ZT1hLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJBcHBEZWZhdWx0In1icmVhaztjYXNlIkR1cGxleCI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJTaW1wbGV4IjpjYXNlIkR1cGxleEZsaXBTaG9ydEVkZ2UiOmNhc2UiRHVwbGV4RmxpcExvbmdFZGdlIjplPWEubmFtZTticmVhaztkZWZhdWx0OmU9Ik5vbmUifWJyZWFrO2Nhc2UiUHJpbnRQYWdlUmFuZ2UiOkFycmF5LmlzQXJyYXkoYSkmJmEubGVuZ3RoJTI9PTAmJmEuZXZlcnkoKGUsdCxuKT0+TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wJiYoMD09PXR8fGU+PW5bdC0xXSkmJmU8PXRoaXMubnVtUGFnZXMpJiYoZT1hKTticmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wJiYoZT1hKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7bn0uYCk7Y29udGludWV9dm9pZCAwIT09ZT8odD8/PW5ldyBNYXApLnNldChuLGUpOndhcm4oYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHtufSIsIGluIFZpZXdlclByZWZlcmVuY2VzOiAke2F9LmApfXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLiNjdC5nZXQoIk9wZW5BY3Rpb24iKSx0PW5ldyBNYXA7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IG49bmV3IERpY3QodGhpcy54cmVmKTtuLnNldCgiQSIsZSk7Y29uc3QgYT17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0Om4scmVzdWx0T2JqOmF9KTtBcnJheS5pc0FycmF5KGEuZGVzdCk/dC5zZXQoImRlc3QiLGEuZGVzdCk6YS5hY3Rpb24mJnQuc2V0KCJhY3Rpb24iLGEuYWN0aW9uKX1lbHNlIHNvKGUpJiZ0LnNldCgiZGVzdCIsZSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcGVuQWN0aW9uIix0LnNpemU/dDpudWxsKX1nZXQgYXR0YWNobWVudHMoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBuPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBuLmdldEFsbCgpKSh0Pz89bmV3IE1hcCkuc2V0KHN0cmluZ1RvUERGU3RyaW5nKGUsITApLG5ldyBGaWxlU3BlYyhhKS5zZXJpYWxpemFibGUpfXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfSNqdChlKXtjb25zdCB0PXRoaXMuI2N0LmdldCgiTmFtZXMiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMoIkVtYmVkZGVkRmlsZXMiKSl7Y29uc3Qgbj1uZXcgTmFtZVRyZWUodC5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFt0LGFdb2Ygbi5nZXRBbGwoKSlpZihzdHJpbmdUb1BERlN0cmluZyh0LCEwKT09PWUpcmV0dXJuIEZpbGVTcGVjLnJlYWRDb250ZW50KGEpfX1hdHRhY2htZW50Q29udGVudChlKXtjb25zdCB0PXRoaXMuI2p0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQ7Y29uc3Qgbj10aGlzLiNsdC5nZXQoZSk7aWYobil7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2gobik7aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IG49RmlsZVNwZWMucmVhZFN0cmVhbUNvbnRlbnQodCk7cmV0dXJuIHRoaXMuI2Z0LmhhcyhlKT9mdW5jdGlvbiBzb3VuZFN0cmVhbVRvV2F2KGUsdCl7Y29uc3Qgbj1nZXRTb3VuZEZvcm1hdChlLmRpY3QpO2lmKCFuKXJldHVybiBudWxsO2NvbnN0e2NoYW5uZWxzOmEsc2FtcGxlUmF0ZTpyLGJpdHNQZXJTYW1wbGU6cyxlbmNvZGluZzppfT1uLG89YSoocz4+MyksbD10Lmxlbmd0aC10Lmxlbmd0aCVvO2lmKDA9PT1sKXJldHVybiBudWxsO2NvbnN0IGY9bmV3IFVpbnQ4QXJyYXkoNDQrbCksYz1uZXcgRGF0YVZpZXcoZi5idWZmZXIpO2Yuc2V0KHN0cmluZ1RvQnl0ZXMoIlJJRkYiKSwwKTtjLnNldFVpbnQzMig0LDM2K2wsITApO2Yuc2V0KHN0cmluZ1RvQnl0ZXMoIldBVkUiKSw4KTtmLnNldChzdHJpbmdUb0J5dGVzKCJmbXQgIiksMTIpO2Muc2V0VWludDMyKDE2LDE2LCEwKTtjLnNldFVpbnQxNigyMCwxLCEwKTtjLnNldFVpbnQxNigyMixhLCEwKTtjLnNldFVpbnQzMigyNCxyLCEwKTtjLnNldFVpbnQzMigyOCxyKm8sITApO2Muc2V0VWludDE2KDMyLG8sITApO2Muc2V0VWludDE2KDM0LHMsITApO2Yuc2V0KHN0cmluZ1RvQnl0ZXMoImRhdGEiKSwzNik7Yy5zZXRVaW50MzIoNDAsbCwhMCk7aWYoMTY9PT1zKXtjb25zdCBlPSJTaWduZWQiPT09aTtmb3IobGV0IG49MDtuPGw7bis9Mil7bGV0IGE9dFtuXTw8OHx0W24rMV07ZT9hPj0zMjc2OCYmKGEtPTY1NTM2KTphLT0zMjc2ODtjLnNldEludDE2KDQ0K24sYSwhMCl9fWVsc2UgaWYoIlNpZ25lZCI9PT1pKWZvcihsZXQgZT0wO2U8bDtlKyspZls0NCtlXT10W2VdKzEyOCYyNTU7ZWxzZSBmLnNldCh0LnN1YmFycmF5KDAsbCksNDQpO3JldHVybiBmfSh0LG4pPz9uOm59cmV0dXJuIHQgaW5zdGFuY2VvZiBEaWN0P0ZpbGVTcGVjLnJlYWRDb250ZW50KHQpOm51bGx9cmV0dXJuIG51bGx9Z2V0IHJhd0VtYmVkZGVkRmlsZXMoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiTmFtZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKSlyZXR1cm4gbnVsbDtyZXR1cm4gbmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJFbWJlZGRlZEZpbGVzIiksdGhpcy54cmVmKS5nZXRBbGwoITApfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuI2N0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiWEZBSW1hZ2VzIikpe2NvbnN0IG49bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJYRkFJbWFnZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLGFdb2Ygbi5nZXRBbGwoKSlpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7dD8/PW5ldyBNYXA7dC5zZXQoc3RyaW5nVG9QREZTdHJpbmcoZSwhMCksYS5nZXRCeXRlcygpKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfSNrdCgpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7ZnVuY3Rpb24gYXBwZW5kSWZKYXZhU2NyaXB0RGljdChlLG4pe2lmKCEobiBpbnN0YW5jZW9mIERpY3QmJmlzTmFtZShuLmdldCgiUyIpLCJKYXZhU2NyaXB0IikpKXJldHVybjtsZXQgYT1uLmdldCgiSlMiKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhPWEuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuO2E9c3RyaW5nVG9QREZTdHJpbmcoYSwhMCkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiYodD8/PW5ldyBNYXApLnNldChlLGEpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2Usbl1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSwhMCksbil9Y29uc3Qgbj10aGlzLiNjdC5nZXQoIk9wZW5BY3Rpb24iKTtuJiZhcHBlbmRJZkphdmFTY3JpcHREaWN0KCJPcGVuQWN0aW9uIixuKTtyZXR1cm4gdH1nZXQganNBY3Rpb25zKCl7Y29uc3QgZT10aGlzLiNrdCgpO2xldCB0PWNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLiNjdCxoZSk7aWYoZSl7dD8/PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W24sYV1vZiBlKSh0W25dPz89W10pLnB1c2goYSl9cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLHQpfWFzeW5jIGNsZWFudXAoZT0hMSl7Y2xlYXJHbG9iYWxDYWNoZXMoKTt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZS5jbGVhcigpO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5jbGVhcihlKTt0aGlzLnBhZ2VLaWRzQ291bnRDYWNoZS5jbGVhcigpO3RoaXMucGFnZUluZGV4Q2FjaGUuY2xlYXIoKTt0aGlzLnBhZ2VEaWN0Q2FjaGUuY2xlYXIoKTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQuY2xlYXIoKTtmb3IoY29uc3R7ZGljdDplfW9mIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKSlkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxuPW5ldyBSZWZTZXQsYT10aGlzLiNjdC5nZXRSYXcoIlBhZ2VzIik7YSBpbnN0YW5jZW9mIFJlZiYmbi5wdXQoYSk7Y29uc3Qgcj10aGlzLnhyZWYscz10aGlzLnBhZ2VLaWRzQ291bnRDYWNoZSxpPXRoaXMucGFnZUluZGV4Q2FjaGUsbz10aGlzLnBhZ2VEaWN0Q2FjaGU7bGV0IGw9MDtmb3IoO3QubGVuZ3RoOyl7Y29uc3QgYT10LnBvcCgpO2lmKGEgaW5zdGFuY2VvZiBSZWYpe2NvbnN0IGY9cy5nZXQoYSk7aWYoZj49MCYmbCtmPD1lKXtsKz1mO2NvbnRpbnVlfWlmKG4uaGFzKGEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7bi5wdXQoYSk7Y29uc3QgYz1hd2FpdChvLmdldChhKXx8ci5mZXRjaEFzeW5jKGEpKTtpZihjIGluc3RhbmNlb2YgRGljdCl7bGV0IHQ9Yy5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCByLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFjLmhhcygiS2lkcyIpKXtzLmhhcyhhKXx8cy5wdXQoYSwxKTtpLmhhcyhhKXx8aS5wdXQoYSxsKTtpZihsPT09ZSlyZXR1cm5bYyxhXTtsKys7Y29udGludWV9fXQucHVzaChjKTtjb250aW51ZX1pZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjb25zdHtvYmpJZDpmfT1hO2xldCBjPWEuZ2V0UmF3KCJDb3VudCIpO2MgaW5zdGFuY2VvZiBSZWYmJihjPWF3YWl0IHIuZmV0Y2hBc3luYyhjKSk7aWYoTnVtYmVyLmlzSW50ZWdlcihjKSYmYz49MCl7ZiYmIXMuaGFzKGYpJiZzLnB1dChmLGMpO2lmKGwrYzw9ZSl7bCs9Yztjb250aW51ZX19bGV0IGg9YS5nZXRSYXcoIktpZHMiKTtoIGluc3RhbmNlb2YgUmVmJiYoaD1hd2FpdCByLmZldGNoQXN5bmMoaCkpO2lmKCFBcnJheS5pc0FycmF5KGgpKXtsZXQgdD1hLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWEuaGFzKCJLaWRzIikpe2lmKGw9PT1lKXJldHVyblthLG51bGxdO2wrKztjb250aW51ZX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIil9Zm9yKGxldCBlPWgubGVuZ3RoLTE7ZT49MDtlLS0pe2NvbnN0IG49aFtlXTt0LnB1c2gobik7YT09PXRoaXMudG9wbGV2ZWxQYWdlc0RpY3QmJm4gaW5zdGFuY2VvZiBSZWYmJiFvLmhhcyhuKSYmby5wdXQobixyLmZldGNoQXN5bmMobikpfX10aHJvdyBuZXcgRXJyb3IoYFBhZ2UgaW5kZXggJHtlfSBub3QgZm91bmQuYCl9YXN5bmMgZ2V0QWxsUGFnZURpY3RzKGU9ITEpe2NvbnN0e2lnbm9yZUVycm9yczp0fT10aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyxuPVt7Y3VycmVudE5vZGU6dGhpcy50b3BsZXZlbFBhZ2VzRGljdCxwb3NJbktpZHM6MH1dLGE9bmV3IFJlZlNldCxyPXRoaXMuI2N0LmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgUmVmJiZhLnB1dChyKTtjb25zdCBzPW5ldyBNYXAsaT10aGlzLnhyZWYsbz10aGlzLnBhZ2VJbmRleENhY2hlO2xldCBsPTA7ZnVuY3Rpb24gYWRkUGFnZURpY3QoZSx0KXt0JiYhby5oYXModCkmJm8ucHV0KHQsbCk7cy5zZXQobCsrLFtlLHRdKX1mdW5jdGlvbiBhZGRQYWdlRXJyb3Iobil7aWYobiBpbnN0YW5jZW9mIFhSZWZFbnRyeUV4Y2VwdGlvbiYmIWUpdGhyb3cgbjtpZihlJiZ0JiYwPT09bCl7d2FybihgZ2V0QWxsUGFnZURpY3RzIC0gU2tpcHBpbmcgaW52YWxpZCBmaXJzdCBwYWdlOiAiJHtufSIuYCk7bj1EaWN0LmVtcHR5fXMuc2V0KGwrKyxbbixudWxsXSl9Zm9yKDtuLmxlbmd0aD4wOyl7Y29uc3QgZT1uLmF0KC0xKSx7Y3VycmVudE5vZGU6dCxwb3NJbktpZHM6cn09ZTtsZXQgcz10LmdldFJhdygiS2lkcyIpO2lmKHMgaW5zdGFuY2VvZiBSZWYpdHJ5e3M9YXdhaXQgaS5mZXRjaEFzeW5jKHMpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pZighQXJyYXkuaXNBcnJheShzKSl7bGV0IGU9dC5nZXRSYXcoIlR5cGUiKTtpZihlIGluc3RhbmNlb2YgUmVmKXRyeXtlPWF3YWl0IGkuZmV0Y2hBc3luYyhlKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoaXNOYW1lKGUsIlBhZ2UiKXx8IXQuaGFzKCJLaWRzIikpe2FkZFBhZ2VEaWN0KHQsbnVsbCk7YnJlYWt9YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKSk7YnJlYWt9aWYocj49cy5sZW5ndGgpe24ucG9wKCk7Y29udGludWV9Y29uc3Qgbz1zW3JdO2xldCBsO2lmKG8gaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKG8pKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKSk7YnJlYWt9YS5wdXQobyk7dHJ5e2w9YXdhaXQgaS5mZXRjaEFzeW5jKG8pfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha319ZWxzZSBsPW87aWYoIShsIGluc3RhbmNlb2YgRGljdCkpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKSk7YnJlYWt9bGV0IGY9bC5nZXRSYXcoIlR5cGUiKTtpZihmIGluc3RhbmNlb2YgUmVmKXRyeXtmPWF3YWl0IGkuZmV0Y2hBc3luYyhmKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aXNOYW1lKGYsIlBhZ2UiKXx8IWwuaGFzKCJLaWRzIik/YWRkUGFnZURpY3QobCxvIGluc3RhbmNlb2YgUmVmP286bnVsbCk6bi5wdXNoKHtjdXJyZW50Tm9kZTpsLHBvc0luS2lkczowfSk7ZS5wb3NJbktpZHMrK31yZXR1cm4gc31hc3luYyBnZXRQYWdlSW5kZXgoZSl7Y29uc3QgdD10aGlzLnBhZ2VJbmRleENhY2hlLmdldChlKTtpZih2b2lkIDAhPT10KXJldHVybiB0O2NvbnN0IG49dGhpcy54cmVmO2xldCBhPTAscj1lO2NvbnN0IHM9bmV3IFJlZlNldDtzLnB1dChlKTtmb3IoOzspe2NvbnN0IHQ9YXdhaXQgbi5mZXRjaEFzeW5jKHIpO2lmKGlzUmVmc0VxdWFsKHIsZSkmJiFpc0RpY3QodCwiUGFnZSIpJiYhKHQgaW5zdGFuY2VvZiBEaWN0JiYhdC5oYXMoIlR5cGUiKSYmdC5oYXMoIkNvbnRlbnRzIikpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBwb2ludCB0byBhIC9QYWdlIGRpY3Rpb25hcnkuIik7aWYoIXQpYnJlYWs7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJOb2RlIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IGk9dC5nZXRSYXcoIlBhcmVudCIpO2lmKGkgaW5zdGFuY2VvZiBSZWYpe2lmKHMuaGFzKGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIik7cy5wdXQoaSl9Y29uc3Qgbz1hd2FpdCB0LmdldEFzeW5jKCJQYXJlbnQiKTtpZighbylicmVhaztpZighKG8gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhcmVudCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBsPWF3YWl0IG8uZ2V0QXN5bmMoIktpZHMiKTtpZighbClicmVhaztpZighQXJyYXkuaXNBcnJheShsKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZHMgbXVzdCBiZSBhbiBhcnJheS4iKTtjb25zdCBmPVtdO2xldCBjPSExO2Zvcihjb25zdCBlIG9mIGwpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChlLHIpKXtjPSEwO2JyZWFrfWYucHVzaChuLmZldGNoQXN5bmMoZSkudGhlbihlPT57aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtpZihlLmhhcygiQ291bnQiKSl7Y29uc3QgdD1lLmdldCgiQ291bnQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wKXthKz10O3JldHVybn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkNvdW50IG11c3QgYmUgYSAocG9zaXRpdmUpIGludGVnZXIuIil9YSsrfSkpfWlmKCFjKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTthd2FpdCBQcm9taXNlLmFsbChmKTtyPWl9dGhpcy5wYWdlSW5kZXhDYWNoZS5wdXQoZSxhKTtyZXR1cm4gYX1nZXQgYmFzZVVybCgpe2NvbnN0IGU9dGhpcy4jY3QuZ2V0KCJVUkkiKTtpZihlIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgdD1lLmdldCgiQmFzZSIpO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT1jcmVhdGVWYWxpZEFic29sdXRlVXJsKHQsbnVsbCx7dHJ5Q29udmVydEVuY29kaW5nOiEwfSk7aWYoZSlyZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLGUuaHJlZil9fXJldHVybiBzaGFkb3codGhpcywiYmFzZVVybCIsdGhpcy5wZGZNYW5hZ2VyLmRvY0Jhc2VVcmwpfXN0YXRpYyN5dChlLHQpe2NvbnN0IG49ZS5mZXRjaElmUmVmKHQpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2xldCBhPW51bGw7Y29uc3Qgcj1uLmdldFJhdygiUGciKTtyIGluc3RhbmNlb2YgUmVmJiYoYT1yKTtpZighYSl7Y29uc3Qgcj1bbl0scz1uZXcgUmVmU2V0O3MucHV0KHQpO2Zvcig7ci5sZW5ndGg+MCYmIWE7KXtsZXQgdCxuPXIuc2hpZnQoKS5nZXRSYXcoIksiKTtpZihuIGluc3RhbmNlb2YgUmVmKXtpZihzLmhhcyhuKSljb250aW51ZTtzLnB1dChuKTtuPWUuZmV0Y2gobil9aWYoQXJyYXkuaXNBcnJheShuKSl0PW47ZWxzZXtpZighbiljb250aW51ZTt0PVtuXX1mb3IoY29uc3QgbiBvZiB0KXtpZihuIGluc3RhbmNlb2YgUmVmKXtpZihzLmhhcyhuKSljb250aW51ZTtzLnB1dChuKX1jb25zdCB0PWUuZmV0Y2hJZlJlZihuKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBpPXQuZ2V0UmF3KCJQZyIpO2lmKGkgaW5zdGFuY2VvZiBSZWYpe2E9aTticmVha31yLnB1c2godCl9fX1pZighYSl7Y29uc3QgdD00MDtsZXQgcj1uO2ZvcihsZXQgbj0wO248dDtuKyspe2NvbnN0IHQ9ci5nZXRSYXcoIlAiKTtpZighKHQgaW5zdGFuY2VvZiBSZWYpKWJyZWFrO2NvbnN0IG49ZS5mZXRjaCh0KTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZihpc05hbWUobi5nZXQoIlR5cGUiKSwiU3RydWN0VHJlZVJvb3QiKSlicmVhaztjb25zdCBzPW4uZ2V0UmF3KCJQZyIpO2lmKHMgaW5zdGFuY2VvZiBSZWYpe2E9czticmVha31yPW59fWlmKCFhKXJldHVybiBudWxsO2xldCBzPW51bGwsaT1udWxsO2NvbnN0IG89bi5nZXQoIkEiKTtpZihvIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBSZWN0KG8uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKXtzPWVbMF07aT1lWzNdfX1yZXR1cm5bYSx7bmFtZToiWFlaIn0scyxpLG51bGxdfXN0YXRpYyBwYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDplLHJlc3VsdE9iajp0LGRvY0Jhc2VVcmw6bj1udWxsLGRvY0F0dGFjaG1lbnRzOmE9bnVsbH0pe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXt3YXJuKCJwYXJzZURlc3REaWN0aW9uYXJ5OiBgZGVzdERpY3RgIG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybn1sZXQgcixzLGk9ZS5nZXQoIkEiKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSlpZihlLmhhcygiRGVzdCIpKWk9ZS5nZXQoIkRlc3QiKTtlbHNle2k9ZS5nZXQoIkFBIik7aSBpbnN0YW5jZW9mIERpY3QmJihpLmhhcygiRCIpP2k9aS5nZXQoIkQiKTppLmhhcygiVSIpJiYoaT1pLmdldCgiVSIpKSl9aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9aS5nZXQoIlMiKTtpZighKGUgaW5zdGFuY2VvZiBOYW1lKSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogSW52YWxpZCB0eXBlIGluIEFjdGlvbiBkaWN0aW9uYXJ5LiIpO3JldHVybn1jb25zdCBuPWUubmFtZTtzd2l0Y2gobil7Y2FzZSJSZXNldEZvcm0iOmNvbnN0IGU9aS5nZXQoIkZsYWdzIiksbz0hKDEmKCJudW1iZXIiPT10eXBlb2YgZT9lOjApKSxsPVtdLGY9W107Zm9yKGNvbnN0IGUgb2YgaS5nZXQoIkZpZWxkcyIpfHxbXSllIGluc3RhbmNlb2YgUmVmP2YucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmbC5wdXNoKHN0cmluZ1RvUERGU3RyaW5nKGUpKTt0LnJlc2V0Rm9ybT17ZmllbGRzOmwscmVmczpmLGluY2x1ZGU6b307YnJlYWs7Y2FzZSJVUkkiOnI9aS5nZXQoIlVSSSIpO3IgaW5zdGFuY2VvZiBOYW1lJiYocj0iLyIrci5uYW1lKTticmVhaztjYXNlIkdvVG8iOnM9aS5nZXQoIkQiKTticmVhaztjYXNlIkxhdW5jaCI6Y2FzZSJHb1RvUiI6Y29uc3QgYz1pLmdldCgiRiIpO2lmKGMgaW5zdGFuY2VvZiBEaWN0KXI9bmV3IEZpbGVTcGVjKGMpLmZpbGVuYW1lO2Vsc2V7aWYoInN0cmluZyIhPXR5cGVvZiBjKWJyZWFrO3I9Y31jb25zdCBoPWZldGNoUmVtb3RlRGVzdChpKTtoJiYocj1yLnNwbGl0KCIjIiwxKVswXSsiIyIraCk7Y29uc3QgdT1pLmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgdSYmKHQubmV3V2luZG93PXUpO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IG09aS5nZXQoIlQiKTtsZXQgcD1udWxsO2lmKG0gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW0uZ2V0KCJSIiksdD1tLmdldCgiTiIpO2lzTmFtZShlLCJDIikmJiJzdHJpbmciPT10eXBlb2YgdCYmKHA9c3RyaW5nVG9QREZTdHJpbmcodCwhMCkpfWlmKGEmJnApe3QuYXR0YWNobWVudElkPXA7dC5hdHRhY2htZW50PWEuZ2V0KHApO2NvbnN0IGU9ZmV0Y2hSZW1vdGVEZXN0KGkpO2UmJih0LmF0dGFjaG1lbnREZXN0PWUpfWVsc2Ugd2FybigncGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuaW1wbGVtZW50ZWQgIkdvVG9FIiBhY3Rpb24uJyk7YnJlYWs7Y2FzZSJOYW1lZCI6Y29uc3QgZD1pLmdldCgiTiIpO2QgaW5zdGFuY2VvZiBOYW1lJiYodC5hY3Rpb249ZC5uYW1lKTticmVhaztjYXNlIlNldE9DR1N0YXRlIjpjb25zdCBnPWkuZ2V0KCJTdGF0ZSIpLGI9aS5nZXQoIlByZXNlcnZlUkIiKTtpZighQXJyYXkuaXNBcnJheShnKXx8MD09PWcubGVuZ3RoKWJyZWFrO2NvbnN0IHc9W107Zm9yKGNvbnN0IGUgb2YgZylpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6Y2FzZSJUb2dnbGUiOncucHVzaChlLm5hbWUpfWVsc2UgZSBpbnN0YW5jZW9mIFJlZiYmdy5wdXNoKGUudG9TdHJpbmcoKSk7aWYody5sZW5ndGghPT1nLmxlbmd0aClicmVhazt0LnNldE9DR1N0YXRlPXtzdGF0ZTp3LHByZXNlcnZlUkI6ImJvb2xlYW4iIT10eXBlb2YgYnx8Yn07YnJlYWs7Y2FzZSJKYXZhU2NyaXB0Ijpjb25zdCBqPWkuZ2V0KCJKUyIpO2xldCBrO2ogaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2s9ai5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIGomJihrPWopO2NvbnN0IHk9ayYmcmVjb3ZlckpzVVJMKHN0cmluZ1RvUERGU3RyaW5nKGssITApKTtpZih5KXtyPXkudXJsO3QubmV3V2luZG93PXkubmV3V2luZG93O2JyZWFrfWRlZmF1bHQ6aWYoIkphdmFTY3JpcHQiPT09bnx8IlN1Ym1pdEZvcm0iPT09bilicmVhazt3YXJuKGBwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5zdXBwb3J0ZWQgYWN0aW9uOiAiJHtufSIuYCl9fWVsc2UgZS5oYXMoIkRlc3QiKSYmKHM9ZS5nZXQoIkRlc3QiKSk7aWYoInN0cmluZyI9PXR5cGVvZiByKXtjb25zdCBlPWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwocixuLHthZGREZWZhdWx0UHJvdG9jb2w6ITAsdHJ5Q29udmVydEVuY29kaW5nOiEwfSk7ZSYmKHQudXJsPWUuaHJlZik7dC51bnNhZmVVcmw9cn1pZihzKXtzIGluc3RhbmNlb2YgTmFtZSYmKHM9cy5uYW1lKTsic3RyaW5nIj09dHlwZW9mIHM/dC5kZXN0PXN0cmluZ1RvUERGU3RyaW5nKHMsITApOnNvKHMpJiYodC5kZXN0PXMpfWlmKCEodC5kZXN0fHx0LnVybHx8dC5hY3Rpb258fHQuYXR0YWNobWVudHx8dC5zZXRPQ0dTdGF0ZXx8dC5yZXNldEZvcm0pKXtjb25zdCBuPWUuZ2V0UmF3KCJTRSIpO2lmKG4gaW5zdGFuY2VvZiBSZWYpdHJ5e2NvbnN0IGE9Q2F0YWxvZy4jeXQoZS54cmVmLG4pO2EmJih0LmRlc3Q9YSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiU0UgcGFyc2luZyBmYWlsZWQuIil9fX19ZnVuY3Rpb24gY3JlYXRlSW1hZ2VEaWN0KGUsdCxuLGEpe2NvbnN0IHI9bmV3IERpY3QoZSk7ci5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO3Iuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSW1hZ2UiKSk7ci5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO3Iuc2V0SWZOYW1lKCJDb2xvclNwYWNlIixhKTtyLnNldCgiV2lkdGgiLHQpO3Iuc2V0KCJIZWlnaHQiLG4pO3JldHVybiByfWZ1bmN0aW9uIGNyZWF0ZVJhd0ltYWdlKGUsdCl7cmV0dXJuIG5ldyBTdHJlYW0oZSwwLGUubGVuZ3RoLHQpfWZ1bmN0aW9uIHBhZXRoUHJlZGljdG9yKGUsdCxuKXtjb25zdCBhPWUrdC1uLHI9TWF0aC5hYnMoYS1lKSxzPU1hdGguYWJzKGEtdCksaT1NYXRoLmFicyhhLW4pO3JldHVybiByPD1zJiZyPD1pP2U6czw9aT90Om59YXN5bmMgZnVuY3Rpb24gY3JlYXRlUE5HTGlrZUltYWdlKGUsdCxuLGEpe2NvbnN0IHI9ZS5sZW5ndGgvKHQqbik7bGV0IHM7aWYoImZ1bmN0aW9uIj09dHlwZW9mIENvbXByZXNzaW9uU3RyZWFtKXRyeXtjb25zdCBhPWZ1bmN0aW9uIGFwcGx5UE5HT3B0aW11bUZpbHRlcihlLHQsbixhKXtjb25zdCByPXQqYSxzPW5ldyBVaW50OEFycmF5KG4qKHIrMSkpLGk9W25ldyBVaW50OEFycmF5KHIpLG5ldyBVaW50OEFycmF5KHIpLG5ldyBVaW50OEFycmF5KHIpLG5ldyBVaW50OEFycmF5KHIpLG5ldyBVaW50OEFycmF5KHIpXTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCBuPXQqcixvPW4tcixsPVswLDAsMCwwLDBdO2ZvcihsZXQgcz0wO3M8cjtzKyspe2NvbnN0IHI9bitzLGY9ZVtyXSxjPXM+PWE/ZVtyLWFdOjAsaD10PjA/ZVtvK3NdOjAsdT10PjAmJnM+PWE/ZVtvK3MtYV06MDtpWzBdW3NdPWY7aVsxXVtzXT1mLWMmMjU1O2lbMl1bc109Zi1oJjI1NTtpWzNdW3NdPWYtKGMraD4+MSkmMjU1O2lbNF1bc109Zi1wYWV0aFByZWRpY3RvcihjLGgsdSkmMjU1O2ZvcihsZXQgZT0wO2U8NTtlKyspe2NvbnN0IHQ9aVtlXVtzXTtsW2VdKz10PDEyOD90OjI1Ni10fX1sZXQgZj0wO2ZvcihsZXQgZT0xO2U8NTtlKyspbFtlXTxsW2ZdJiYoZj1lKTtjb25zdCBjPXQqKHIrMSk7c1tjXT1mO3Muc2V0KGlbZl0sYysxKX1yZXR1cm4gc30oZSx0LG4scik7cz1hd2FpdCBhc3luYyBmdW5jdGlvbiBkZWZsYXRlKGUpe2NvbnN0IHQ9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksbj10LndyaXRhYmxlLmdldFdyaXRlcigpLGE9KGFzeW5jKCk9Pnt0cnl7YXdhaXQgbi5yZWFkeTthd2FpdCBuLndyaXRlKGUpO2F3YWl0IG4ucmVhZHk7YXdhaXQgbi5jbG9zZSgpfWNhdGNoKGUpe2F3YWl0IG4uYWJvcnQoZSkuY2F0Y2goKCk9Pnt9KTt0aHJvdyBlfX0pKCksW3JdPWF3YWl0IFByb21pc2UuYWxsKFtuZXcgUmVzcG9uc2UodC5yZWFkYWJsZSkuYnl0ZXMoKSxhLnRoZW4oKCk9Pm51bGwpXSk7cmV0dXJuIHJ9KGEpfWNhdGNoe31pZighcylyZXR1cm4gY3JlYXRlUmF3SW1hZ2UoZSxhKTthLnNldElmTmFtZSgiRmlsdGVyIiwiRmxhdGVEZWNvZGUiKTtjb25zdCBpPW5ldyBEaWN0KGEueHJlZik7aS5zZXQoIlByZWRpY3RvciIsMTUpO2kuc2V0KCJDb2x1bW5zIix0KTtpLnNldCgiQ29sb3JzIixyKTtpLnNldCgiQml0c1BlckNvbXBvbmVudCIsOCk7YS5zZXQoIkRlY29kZVBhcm1zIixpKTtyZXR1cm4gY3JlYXRlUmF3SW1hZ2UocyxhKX1hc3luYyBmdW5jdGlvbiBjcmVhdGVJbWFnZShlLHQse2Nsb3NlQml0bWFwOm49ITF9PXt9KXtjb25zdHt3aWR0aDphLGhlaWdodDpyfT1lO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKXx8YTw9MHx8cjw9MCl7biYmZS5jbG9zZT8uKCk7dGhyb3cgbmV3IEVycm9yKGBjcmVhdGVJbWFnZTogaW52YWxpZCBiaXRtYXAgZGltZW5zaW9ucyAke2F9eCR7cn1gKX1jb25zdCBzPW5ldyBPZmZzY3JlZW5DYW52YXMoYSxyKSxpPXMuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMCx3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KTtsZXQgbzt0cnl7aS5kcmF3SW1hZ2UoZSwwLDApO289aS5nZXRJbWFnZURhdGEoMCwwLGEscikuZGF0YX1maW5hbGx5e24mJmUuY2xvc2U/LigpfWNvbnN0IGw9bmV3IFVpbnQzMkFycmF5KG8uYnVmZmVyLG8uYnl0ZU9mZnNldCxvLmJ5dGVMZW5ndGg+PjIpLGY9RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4sYz1mPzE2Nzc3MjE1OjQyOTQ5NjcwNDAsaD1uZXcgU2V0O2xldCB1PSExLG09ITA7Zm9yKGNvbnN0IGUgb2YgbCl7aWYoMjU1IT0oZj9lPj4+MjQ6MjU1JmUpKXt1PSEwO2JyZWFrfWlmKG0pe2guYWRkKChlJmMpPj4+MCk7aWYoaC5zaXplPjE2Mzg0KXttPSExO2guY2xlYXIoKX19fXUmJihtPSEwKTtjb25zdCBwPWNyZWF0ZUltYWdlRGljdCh0LGEsciwiRGV2aWNlUkdCIik7bGV0IGQsZz1udWxsO2lmKG0pe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYSpyKjMpO2ZvcihsZXQgdD0wLG49MCxhPW8ubGVuZ3RoO3Q8YTt0Kz00LG4rPTMpe2Vbbl09b1t0XTtlW24rMV09b1t0KzFdO2VbbisyXT1vW3QrMl19ZD1jcmVhdGVQTkdMaWtlSW1hZ2UoZSxhLHIscCk7Zz1jcmVhdGVSYXdJbWFnZShlLGNyZWF0ZUltYWdlRGljdCh0LGEsciwiRGV2aWNlUkdCIikpfWVsc2V7cC5zZXRJZk5hbWUoIkZpbHRlciIsIkRDVERlY29kZSIpO2Q9cy5jb252ZXJ0VG9CbG9iKHt0eXBlOiJpbWFnZS9qcGVnIixxdWFsaXR5OjF9KS50aGVuKGU9PmUuYnl0ZXMoKSkudGhlbihlPT5jcmVhdGVSYXdJbWFnZShlLHApKX1sZXQgYj1Qcm9taXNlLnJlc29sdmUobnVsbCksdz1udWxsO2lmKHUpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkobC5sZW5ndGgpO2lmKGYpZm9yKGxldCB0PTAsbj1sLmxlbmd0aDt0PG47dCsrKWVbdF09bFt0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsbj1sLmxlbmd0aDt0PG47dCsrKWVbdF09MjU1JmxbdF07Y29uc3Qgbj1jcmVhdGVJbWFnZURpY3QodCxhLHIsIkRldmljZUdyYXkiKSxzPWNyZWF0ZUltYWdlRGljdCh0LGEsciwiRGV2aWNlR3JheSIpO2I9Y3JlYXRlUE5HTGlrZUltYWdlKGUsYSxyLG4pO3c9Y3JlYXRlUmF3SW1hZ2UoZSxzKX1jb25zdFtqLGtdPWF3YWl0IFByb21pc2UuYWxsKFtkLGJdKTtyZXR1cm57aW1hZ2VTdHJlYW06aixpbWFnZVJlbmRlclN0cmVhbTpnLHNtYXNrU3RyZWFtOmssc21hc2tSZW5kZXJTdHJlYW06dyx3aWR0aDphLGhlaWdodDpyfX1mdW5jdGlvbiBtYXlIYXZlQ2hpbGRyZW4oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWZ8fGUgaW5zdGFuY2VvZiBEaWN0fHxlIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhZGRDaGlsZHJlbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWU9ZS5kaWN0LmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2Zvcihjb25zdCBuIG9mIGUpbWF5SGF2ZUNoaWxkcmVuKG4pJiZ0LnB1c2gobil9Y2xhc3MgT2JqZWN0TG9hZGVye3JlZlNldD1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLmRpY3Q9ZTt0aGlzLmtleXM9dDt0aGlzLnhyZWY9bn1hc3luYyBsb2FkKCl7Y29uc3R7a2V5czplLGRpY3Q6dH09dGhpcyxuPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcoYSk7dm9pZCAwIT09ZSYmbi5wdXNoKGUpfWF3YWl0IHRoaXMuI3F0KG4pO3RoaXMucmVmU2V0PW51bGx9YXN5bmMjcXQoZSl7Y29uc3QgdD1bXSxuPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgYT1lLnBvcCgpO2lmKGEgaW5zdGFuY2VvZiBSZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhhKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KGEpO2E9dGhpcy54cmVmLmZldGNoKGEpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl7d2FybihgT2JqZWN0TG9hZGVyLiN3YWxrIC0gcmVxdWVzdGluZyBhbGwgZGF0YTogIiR7ZX0iLmApO2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKCk7cmV0dXJufXQucHVzaChhKTtuLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWEuZ2V0QmFzZVN0cmVhbXMoKTtpZihlKXtsZXQgcj0hMTtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmlzRGF0YUxvYWRlZCl7cj0hMDtuLnB1c2goe2JlZ2luOnQuc3RhcnQsZW5kOnQuZW5kfSl9ciYmdC5wdXNoKGEpfX1hZGRDaGlsZHJlbihhLGUpfWlmKG4ubGVuZ3RoKXthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhuKTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBSZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTthd2FpdCB0aGlzLiNxdCh0KX19c3RhdGljIGFzeW5jIGxvYWQoZSx0LG4pe2lmKG4uc3RyZWFtLmlzRGF0YUxvYWRlZClyZXR1cm47Y29uc3QgYT1uZXcgT2JqZWN0TG9hZGVyKGUsdCxuKTthd2FpdCBhLmxvYWQoKX19Y29uc3QgaW89U3ltYm9sKCksb289U3ltYm9sKCksbG89U3ltYm9sKCksZm89U3ltYm9sKCksY289U3ltYm9sKCksaG89U3ltYm9sKCksdW89U3ltYm9sKCksbW89U3ltYm9sKCkscG89U3ltYm9sKCksZ289U3ltYm9sKCJjb250ZW50IiksYm89U3ltYm9sKCJkYXRhIiksd289U3ltYm9sKCksam89U3ltYm9sKCJleHRyYSIpLGtvPVN5bWJvbCgpLHlvPVN5bWJvbCgpLHFvPVN5bWJvbCgpLHZvPVN5bWJvbCgpLFNvPVN5bWJvbCgpLEFvPVN5bWJvbCgpLHhvPVN5bWJvbCgpLENvPVN5bWJvbCgpLElvPVN5bWJvbCgpLEZvPVN5bWJvbCgpLE9vPVN5bWJvbCgpLFJvPVN5bWJvbCgpLEJvPVN5bWJvbCgpLERvPVN5bWJvbCgpLEhvPVN5bWJvbCgpLE1vPVN5bWJvbCgpLE5vPVN5bWJvbCgpLFBvPVN5bWJvbCgpLF9vPVN5bWJvbCgpLEVvPVN5bWJvbCgpLHpvPVN5bWJvbCgpLExvPVN5bWJvbCgpLFVvPVN5bWJvbCgpLFdvPVN5bWJvbCgpLFhvPVN5bWJvbCgpLEtvPVN5bWJvbCgpLEdvPVN5bWJvbCgpLFZvPVN5bWJvbCgpLCRvPVN5bWJvbCgpLFlvPVN5bWJvbCgpLEpvPVN5bWJvbCgpLFFvPVN5bWJvbCgpLFpvPVN5bWJvbCgibmFtZXNwYWNlSWQiKSxlbD1TeW1ib2woIm5vZGVOYW1lIiksdGw9U3ltYm9sKCksbmw9U3ltYm9sKCksYWw9U3ltYm9sKCkscmw9U3ltYm9sKCksc2w9U3ltYm9sKCksaWw9U3ltYm9sKCksb2w9U3ltYm9sKCksbGw9U3ltYm9sKCksZmw9U3ltYm9sKCJyb290IiksY2w9U3ltYm9sKCksaGw9U3ltYm9sKCksdWw9U3ltYm9sKCksbWw9U3ltYm9sKCkscGw9U3ltYm9sKCksZGw9U3ltYm9sKCksZ2w9U3ltYm9sKCksYmw9U3ltYm9sKCksd2w9U3ltYm9sKCksamw9U3ltYm9sKCksa2w9U3ltYm9sKCkseWw9U3ltYm9sKCJ1aWQiKTtfX3dlYnBhY2tfcmVxdWlyZV9fKDUzMSksX193ZWJwYWNrX3JlcXVpcmVfXyg1MjEzKTtjb25zdCBxbD1TeW1ib2woKSx2bD17Y29uZmlnOntpZDowLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94Y2kvIil9LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1jb25uZWN0aW9uLXNldC8iKX0sZGF0YXNldHM6e2lkOjIsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfSxmb3JtOntpZDozLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZm9ybS8iKX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtbG9jYWxlLXNldC8iKX0scGRmOntpZDo1LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC9wZGYvIj09PWV9LHNpZ25hdHVyZTp7aWQ6NixjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfSxzb3VyY2VTZXQ6e2lkOjcsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1zb3VyY2Utc2V0LyIpfSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX0sdGVtcGxhdGU6e2lkOjksY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS10ZW1wbGF0ZS8iKX0seGRjOntpZDoxMCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGRjLyIpfSx4ZHA6e2lkOjExLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC8iPT09ZX0seGZkZjp7aWQ6MTIsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX0seGh0bWw6e2lkOjEzLGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWV9LHhtcG1ldGE6e2lkOjE0LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3htcG1ldGEvIj09PWV9fSxTbD17cHQ6ZT0+ZSxjbTplPT5lLzIuNTQqNzIsbW06ZT0+ZS8yNS40KjcyLGluOmU9PjcyKmUscHg6ZT0+ZX0sQWw9LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCInIil8fGUuc3RhcnRzV2l0aCgnIicpP2Uuc2xpY2UoMSwtMSk6ZX1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6bn0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3QgYT1wYXJzZUludChlLDEwKTtyZXR1cm4haXNOYU4oYSkmJm4oYSk/YTp0fWZ1bmN0aW9uIGdldEZsb2F0KHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6bn0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3QgYT1wYXJzZUZsb2F0KGUpO3JldHVybiFpc05hTihhKSYmbihhKT9hOnR9ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOm59KXtyZXR1cm4gZSYmbihlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0U3RyaW5nT3B0aW9uKGUsdCl7cmV0dXJuIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dFswXSx2YWxpZGF0ZTplPT50LmluY2x1ZGVzKGUpfSl9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dHx8PSIwIjtpZighZSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3Qgbj1lLnRyaW0oKS5tYXRjaChBbCk7aWYoIW4pcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxhLHJdPW4scz1wYXJzZUZsb2F0KGEpO2lmKGlzTmFOKHMpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09cylyZXR1cm4gMDtjb25zdCBpPVNsW3JdO3JldHVybiBpP2kocyk6c31mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS5zcGxpdCgiOiIsMikubWFwKGU9PnBhcnNlRmxvYXQoZS50cmltKCkpKS5maWx0ZXIoZT0+IWlzTmFOKGUpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFtuLGFdPXQ7cmV0dXJue251bTpuLGRlbjphfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9Pih7ZXhjbHVkZWQ6Ii0iPT09ZVswXSx2aWV3bmFtZTplLnN1YnN0cmluZygxKX0pKTpbXX1jbGFzcyBIVE1MUmVzdWx0e3N0YXRpYyBnZXQgRkFJTFVSRSgpe3JldHVybiBzaGFkb3codGhpcywiRkFJTFVSRSIsbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLG51bGwpKX1zdGF0aWMgZ2V0IEVNUFRZKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsbixhKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9bjt0aGlzLmJyZWFrTm9kZT1hfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fD1lLml0YWxpY3x8ZS5ib2xkfHxlLmJvbGRpdGFsaWM7aWYoIXR8fDA9PT10LnNpemUpcmV0dXJuO2NvbnN0IG49dGhpcy5mb250cy5nZXQoIlBkZkpTLUZhbGxiYWNrLVBkZkpTLVhGQSIpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5mb250cy5zZXQoZSxuKX1hZGRQZGZGb250KGUpe2NvbnN0IHQ9ZS5jc3NGb250SW5mbyxuPXQuZm9udEZhbWlseSxhPXRoaXMuZm9udHMuZ2V0T3JJbnNlcnRDb21wdXRlZChuLG1ha2VPYmopO3RoaXMuZGVmYXVsdEZvbnQ/Pz1hO2xldCByPSIiO2NvbnN0IHM9cGFyc2VGbG9hdCh0LmZvbnRXZWlnaHQpOzAhPT1wYXJzZUZsb2F0KHQuaXRhbGljQW5nbGUpP3I9cz49NzAwPyJib2xkaXRhbGljIjoiaXRhbGljIjpzPj03MDAmJihyPSJib2xkIik7aWYoIXIpeyhlLm5hbWUuaW5jbHVkZXMoIkJvbGQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJCb2xkIikpJiYocj0iYm9sZCIpOyhlLm5hbWUuaW5jbHVkZXMoIkl0YWxpYyIpfHxlLm5hbWUuZW5kc1dpdGgoIkl0Iil8fGUucHNOYW1lPy5pbmNsdWRlcygiSXRhbGljIil8fGUucHNOYW1lPy5lbmRzV2l0aCgiSXQiKSkmJihyKz0iaXRhbGljIil9cnx8PSJyZWd1bGFyIjthW3JdPWV9Z2V0RGVmYXVsdCgpe3JldHVybiB0aGlzLmRlZmF1bHRGb250fWZpbmQoZSx0PSEwKXtsZXQgbj10aGlzLmZvbnRzLmdldChlKXx8dGhpcy5jYWNoZS5nZXQoZSk7aWYobilyZXR1cm4gbjtjb25zdCBhPS9bLFwtXyBdfGJvbGRpdGFsaWN8Ym9sZHxpdGFsaWN8cmVndWxhcnxpdC9naTtsZXQgcj1lLnJlcGxhY2VBbGwoYSwiIik7bj10aGlzLmZvbnRzLmdldChyKTtpZihuKXt0aGlzLmNhY2hlLnNldChlLG4pO3JldHVybiBufXI9ci50b0xvd2VyQ2FzZSgpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXIubmFtZT8ucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaChlKTtpZigwPT09cy5sZW5ndGgpe3I9ci5yZXBsYWNlQWxsKC9wc210fG10L2dpLCIiKTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMpZS5yZXBsYWNlQWxsKGEsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChyKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lPy5yZXBsYWNlQWxsKGEsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChyKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJndhcm4oYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpO3dhcm4oYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHNlbGVjdEZvbnQoZSx0KXtyZXR1cm4iaXRhbGljIj09PWUucG9zdHVyZT8iYm9sZCI9PT1lLndlaWdodD90LmJvbGRpdGFsaWM6dC5pdGFsaWM6ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkOnQucmVndWxhcn1jbGFzcyBGb250SW5mb3tjb25zdHJ1Y3RvcihlLHQsbixhKXt0aGlzLmxpbmVIZWlnaHQ9bjt0aGlzLnBhcmFNYXJnaW49dHx8e3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowfTtpZighZSl7W3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSk7cmV0dXJufXRoaXMueGZhRm9udD17dHlwZWZhY2U6ZS50eXBlZmFjZSxwb3N0dXJlOmUucG9zdHVyZSx3ZWlnaHQ6ZS53ZWlnaHQsc2l6ZTplLnNpemUsbGV0dGVyU3BhY2luZzplLmxldHRlclNwYWNpbmd9O2NvbnN0IHI9YS5maW5kKGUudHlwZWZhY2UpO2lmKHIpe3RoaXMucGRmRm9udD1zZWxlY3RGb250KGUscik7dGhpcy5wZGZGb250fHwoW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSkpfWVsc2VbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChhKX1kZWZhdWx0Rm9udChlKXtjb25zdCB0PWUuZmluZCgiSGVsdmV0aWNhIiwhMSl8fGUuZmluZCgiTXlyaWFkIFBybyIsITEpfHxlLmZpbmQoIkFyaWFsIiwhMSl8fGUuZ2V0RGVmYXVsdCgpO2lmKHQ/LnJlZ3VsYXIpe2NvbnN0IGU9dC5yZWd1bGFyO3JldHVybltlLHt0eXBlZmFjZTplLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHkscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX1yZXR1cm5bbnVsbCx7dHlwZWZhY2U6IkNvdXJpZXIiLHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19fWNsYXNzIEZvbnRTZWxlY3Rvcntjb25zdHJ1Y3RvcihlLHQsbixhKXt0aGlzLmZvbnRGaW5kZXI9YTt0aGlzLnN0YWNrPVtuZXcgRm9udEluZm8oZSx0LG4sYSldfXB1c2hEYXRhKGUsdCxuKXtjb25zdCBhPXRoaXMuc3RhY2suYXQoLTEpO2Zvcihjb25zdCB0IG9mWyJ0eXBlZmFjZSIsInBvc3R1cmUiLCJ3ZWlnaHQiLCJzaXplIiwibGV0dGVyU3BhY2luZyJdKWVbdF18fD1hLnhmYUZvbnRbdF07Zm9yKGNvbnN0IGUgb2ZbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdKWlzTmFOKHRbZV0pJiYodFtlXT1hLnBhcmFNYXJnaW5bZV0pO2NvbnN0IHI9bmV3IEZvbnRJbmZvKGUsdCxufHxhLmxpbmVIZWlnaHQsdGhpcy5mb250RmluZGVyKTtyLnBkZkZvbnR8fD1hLnBkZkZvbnQ7dGhpcy5zdGFjay5wdXNoKHIpfXBvcEZvbnQoKXt0aGlzLnN0YWNrLnBvcCgpfXRvcEZvbnQoKXtyZXR1cm4gdGhpcy5zdGFjay5hdCgtMSl9fWNsYXNzIFRleHRNZWFzdXJle2NvbnN0cnVjdG9yKGUsdCxuLGEpe3RoaXMuZ2x5cGhzPVtdO3RoaXMuZm9udFNlbGVjdG9yPW5ldyBGb250U2VsZWN0b3IoZSx0LG4sYSk7dGhpcy5leHRyYUhlaWdodD0wfXB1c2hEYXRhKGUsdCxuKXt0aGlzLmZvbnRTZWxlY3Rvci5wdXNoRGF0YShlLHQsbil9cG9wRm9udChlKXtyZXR1cm4gdGhpcy5mb250U2VsZWN0b3IucG9wRm9udCgpfWFkZFBhcmEoKXtjb25zdCBlPXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKTt0aGlzLmV4dHJhSGVpZ2h0Kz1lLnBhcmFNYXJnaW4udG9wK2UucGFyYU1hcmdpbi5ib3R0b219YWRkU3RyaW5nKGUpe2lmKCFlKXJldHVybjtjb25zdCB0PXRoaXMuZm9udFNlbGVjdG9yLnRvcEZvbnQoKSxuPXQueGZhRm9udC5zaXplO2lmKHQucGRmRm9udCl7Y29uc3QgYT10LnhmYUZvbnQubGV0dGVyU3BhY2luZyxyPXQucGRmRm9udCxzPXIubGluZUhlaWdodHx8MS4yLGk9dC5saW5lSGVpZ2h0fHxNYXRoLm1heCgxLjIscykqbixvPXMtKHZvaWQgMD09PXIubGluZUdhcD8uMjpyLmxpbmVHYXApLGw9TWF0aC5tYXgoMSxvKSpuLGY9bi8xZTMsYz1yLmRlZmF1bHRXaWR0aHx8ci5jaGFyc1RvR2x5cGhzKCIgIilbMF0ud2lkdGg7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtjb25zdCBlPXIuZW5jb2RlU3RyaW5nKHQpLmpvaW4oIiIpLG49ci5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IHQ9ZS53aWR0aHx8Yzt0aGlzLmdseXBocy5wdXNoKFt0KmYrYSxpLGwsZS51bmljb2RlLCExXSl9dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpO3JldHVybn1mb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW24sMS4yKm4sbixlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfWNvbXB1dGUoZSl7bGV0IHQ9LTEsbj0wLGE9MCxyPTAscz0wLGk9MCxvPSExLGw9ITA7Zm9yKGxldCBmPTAsYz10aGlzLmdseXBocy5sZW5ndGg7ZjxjO2YrKyl7Y29uc3RbYyxoLHUsbSxwXT10aGlzLmdseXBoc1tmXSxkPSIgIj09PW0sZz1sP3U6aDtpZihwKXthPU1hdGgubWF4KGEscyk7cz0wO3IrPWk7aT1nO3Q9LTE7bj0wO2w9ITF9ZWxzZSBpZihkKWlmKHMrYz5lKXthPU1hdGgubWF4KGEscyk7cz0wO3IrPWk7aT1nO3Q9LTE7bj0wO289ITA7bD0hMX1lbHNle2k9TWF0aC5tYXgoZyxpKTtuPXM7cys9Yzt0PWZ9ZWxzZSBpZihzK2M+ZSl7cis9aTtpPWc7aWYoLTEhPT10KXtmPXQ7YT1NYXRoLm1heChhLG4pO3M9MDt0PS0xO249MH1lbHNle2E9TWF0aC5tYXgoYSxzKTtzPWN9bz0hMDtsPSExfWVsc2V7cys9YztpPU1hdGgubWF4KGcsaSl9fWE9TWF0aC5tYXgoYSxzKTtyKz1pK3RoaXMuZXh0cmFIZWlnaHQ7cmV0dXJue3dpZHRoOjEuMDIqYSxoZWlnaHQ6cixpc0Jyb2tlbjpvfX19X193ZWJwYWNrX3JlcXVpcmVfXyg4NDU0KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDk0NTIpO2NvbnN0IHhsPS9eW14uW10rLyxDbD0vXlteXF1dKy8sSWw9MCxGbD0xLFRsPTIsUmw9MyxCbD00LERsPW5ldyBNYXAoW1siJGRhdGEiLChlLHQpPT5lLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplXSxbIiRyZWNvcmQiLChlLHQpPT4oZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZSlbUm9dKClbMF1dLFsiJHRlbXBsYXRlIiwoZSx0KT0+ZS50ZW1wbGF0ZV0sWyIkY29ubmVjdGlvblNldCIsKGUsdCk9PmUuY29ubmVjdGlvblNldF0sWyIkZm9ybSIsKGUsdCk9PmUuZm9ybV0sWyIkbGF5b3V0IiwoZSx0KT0+ZS5sYXlvdXRdLFsiJGhvc3QiLChlLHQpPT5lLmhvc3RdLFsiJGRhdGFXaW5kb3ciLChlLHQpPT5lLmRhdGFXaW5kb3ddLFsiJGV2ZW50IiwoZSx0KT0+ZS5ldmVudF0sWyIhIiwoZSx0KT0+ZS5kYXRhc2V0c10sWyIkeGZhIiwoZSx0KT0+ZV0sWyJ4ZmEiLChlLHQpPT5lXSxbIiQiLChlLHQpPT50XV0pLEhsPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHBhcnNlSW5kZXgoZSl7cmV0dXJuIioiPT09KGU9ZS50cmltKCkpPzEvMDpwYXJzZUludChlLDEwKXx8MH1mdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LG49ITApe2xldCBhPWUubWF0Y2goeGwpO2lmKCFhKXJldHVybiBudWxsO2xldFtyXT1hO2NvbnN0IHM9W3tuYW1lOnIsY2FjaGVOYW1lOiIuIityLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOklsfV07bGV0IGk9ci5sZW5ndGg7Zm9yKDtpPGUubGVuZ3RoOyl7Y29uc3Qgbz1pO2lmKCJbIj09PWUuY2hhckF0KGkrKykpe2E9ZS5zbGljZShpKS5tYXRjaChDbCk7aWYoIWEpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1zLmF0KC0xKS5pbmRleD1wYXJzZUluZGV4KGFbMF0pO2krPWFbMF0ubGVuZ3RoKzE7Y29udGludWV9bGV0IGw7c3dpdGNoKGUuY2hhckF0KGkpKXtjYXNlIi4iOmlmKCF0KXJldHVybiBudWxsO2krKztsPUZsO2JyZWFrO2Nhc2UiIyI6aSsrO2w9VGw7YnJlYWs7Y2FzZSJbIjppZihuKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWw9Umw7YnJlYWs7Y2FzZSIoIjppZihuKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEphdmFTY3JpcHQgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9bD1CbDticmVhaztkZWZhdWx0Omw9SWx9YT1lLnNsaWNlKGkpLm1hdGNoKHhsKTtpZighYSlicmVhaztbcl09YTtpKz1yLmxlbmd0aDtzLnB1c2goe25hbWU6cixjYWNoZU5hbWU6ZS5zbGljZShvLGkpLG9wZXJhdG9yOmwsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGx9KX1yZXR1cm4gc31mdW5jdGlvbiBzZWFyY2hOb2RlKGUsdCxuLGE9ITAscj0hMCl7Y29uc3Qgcz1wYXJzZUV4cHJlc3Npb24obixhKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCBpPURsLmdldChzWzBdLm5hbWUpO2xldCBvLGw9MDtpZihpKXtvPSEwO2U9W2koZSx0KV07bD0xfWVsc2V7bz1udWxsPT09dDtlPVt0fHxlXX1mb3IobGV0IG49cy5sZW5ndGg7bDxuO2wrKyl7Y29uc3R7bmFtZTpuLGNhY2hlTmFtZTphLG9wZXJhdG9yOmksaW5kZXg6Zn09c1tsXSxjPVtdO2Zvcihjb25zdCB0IG9mIGUpe2lmKCF0LmlzWEZBT2JqZWN0KWNvbnRpbnVlO2xldCBlLHM7aWYocil7cz1IbC5nZXRPckluc2VydENvbXB1dGVkKHQsbWFrZU1hcCk7ZT1zLmdldChhKX1pZighZSl7c3dpdGNoKGkpe2Nhc2UgSWw6ZT10W3hvXShuLCExKTticmVhaztjYXNlIEZsOmU9dFt4b10obiwhMCk7YnJlYWs7Y2FzZSBUbDplPXRbQW9dKG4pO2U9ZS5pc1hGQU9iamVjdEFycmF5P2UuY2hpbGRyZW46W2VdfXImJnMuc2V0KGEsZSl9ZS5sZW5ndGg+MCYmYy5wdXNoKGUpfWlmKDA9PT1jLmxlbmd0aCYmIW8mJjA9PT1sKXtjb25zdCBuPXRbTW9dKCk7aWYoISh0PW4pKXJldHVybiBudWxsO2w9LTE7ZT1bdF07Y29udGludWV9ZT1pc0Zpbml0ZShmKT9jLmZpbHRlcihlPT5mPGUubGVuZ3RoKS5tYXAoZT0+ZVtmXSk6Yy5mbGF0KCl9cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOmV9ZnVuY3Rpb24gY3JlYXRlRGF0YU5vZGUoZSx0LG4pe2NvbnN0IGE9cGFyc2VFeHByZXNzaW9uKG4pO2lmKCFhKXJldHVybiBudWxsO2lmKGEuc29tZShlPT5lLm9wZXJhdG9yPT09RmwpKXJldHVybiBudWxsO2NvbnN0IHI9RGwuZ2V0KGFbMF0ubmFtZSk7bGV0IHM9MDtpZihyKXtlPXIoZSx0KTtzPTF9ZWxzZSBlPXR8fGU7Zm9yKGxldCB0PWEubGVuZ3RoO3M8dDtzKyspe2NvbnN0e25hbWU6dCxvcGVyYXRvcjpuLGluZGV4OnJ9PWFbc107aWYoIWlzRmluaXRlKHIpKXthW3NdLmluZGV4PTA7cmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSl9bGV0IGk7c3dpdGNoKG4pe2Nhc2UgSWw6aT1lW3hvXSh0LCExKTticmVhaztjYXNlIEZsOmk9ZVt4b10odCwhMCk7YnJlYWs7Y2FzZSBUbDppPWVbQW9dKHQpO2k9aS5pc1hGQU9iamVjdEFycmF5P2kuY2hpbGRyZW46W2ldfWlmKDA9PT1pLmxlbmd0aClyZXR1cm4gZS5jcmVhdGVOb2RlcyhhLnNsaWNlKHMpKTtpZighKHI8aS5sZW5ndGgpKXthW3NdLmluZGV4PXItaS5sZW5ndGg7cmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSl9e2NvbnN0IHQ9aVtyXTtpZighdC5pc1hGQU9iamVjdCl7d2FybigiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH1jb25zdCBNbD1TeW1ib2woKSxObD1TeW1ib2woKSxQbD1TeW1ib2woKSxfbD1TeW1ib2woIl9jaGlsZHJlbiIpLEVsPVN5bWJvbCgpLHpsPVN5bWJvbCgpLExsPVN5bWJvbCgpLFdsPVN5bWJvbCgpLFhsPVN5bWJvbCgpLEtsPVN5bWJvbCgpLEdsPVN5bWJvbCgpLFZsPVN5bWJvbCgpLCRsPVN5bWJvbCgpLFlsPVN5bWJvbCgicGFyZW50IiksSmw9U3ltYm9sKCksUWw9U3ltYm9sKCksWmw9U3ltYm9sKCk7bGV0IGVmPTA7Y29uc3QgdGY9dmwuZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxuPSExKXt0aGlzW1pvXT1lO3RoaXNbZWxdPXQ7dGhpc1tHbF09bjt0aGlzW1lsXT1udWxsO3RoaXNbX2xdPVtdO3RoaXNbeWxdPWAke3R9JHtlZisrfWA7dGhpc1tQb109bnVsbH1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMH1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiExfWNyZWF0ZU5vZGVzKGUpe2xldCB0PXRoaXMsbj1udWxsO2Zvcihjb25zdHtuYW1lOmEsaW5kZXg6cn1vZiBlKXtmb3IobGV0IGU9MCxzPWlzRmluaXRlKHIpP3I6MDtlPD1zO2UrKyl7Y29uc3QgZT10W1pvXT09PXRmPy0xOnRbWm9dO249bmV3IFhtbE9iamVjdChlLGEpO3RbbG9dKG4pfXQ9bn1yZXR1cm4gbn1bbmxdKGUpe2lmKCF0aGlzW0dsXXx8IXRoaXNbYWxdKGUpKXJldHVybiExO2NvbnN0IHQ9ZVtlbF0sbj10aGlzW3RdO2lmKCEobiBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSl7bnVsbCE9PW4mJnRoaXNbbGxdKG4pO3RoaXNbdF09ZTt0aGlzW2xvXShlKTtyZXR1cm4hMH1pZihuLnB1c2goZSkpe3RoaXNbbG9dKGUpO3JldHVybiEwfWxldCBhPSIiO3RoaXMuaWQ/YT1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKGE9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTt3YXJuKGBYRkEgLSBub2RlICIke3RoaXNbZWxdfSIke2F9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W2FsXShlKXtyZXR1cm4gT2JqZWN0Lmhhc093bih0aGlzLGVbZWxdKSYmZVtab109PT10aGlzW1pvXX1bR29dKCl7cmV0dXJuITF9W2lvXSgpe3JldHVybiExfVtVb10oKXtyZXR1cm4hMX1bV29dKCl7cmV0dXJuITF9W2lsXSgpe3RoaXMucGFyYSYmdGhpc1tOb10oKVtqb10ucGFyYVN0YWNrLnBvcCgpfVtvbF0oKXt0aGlzW05vXSgpW2pvXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVt1bF0oZSl7dGhpcy5pZCYmdGhpc1tab109PT12bC50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1bTm9dKCl7cmV0dXJuIHRoaXNbUG9dLnRlbXBsYXRlfVtWb10oKXtyZXR1cm4hMX1bJG9dKCl7cmV0dXJuITF9W2xvXShlKXtlW1lsXT10aGlzO3RoaXNbX2xdLnB1c2goZSk7IWVbUG9dJiZ0aGlzW1BvXSYmKGVbUG9dPXRoaXNbUG9dKX1bbGxdKGUpe2NvbnN0IHQ9dGhpc1tfbF0uaW5kZXhPZihlKTt0aGlzW19sXS5zcGxpY2UodCwxKX1bX29dKCl7cmV0dXJuIE9iamVjdC5oYXNPd24odGhpcywidmFsdWUiKX1bcGxdKGUpe31bcmxdKGUpe31ba29dKCl7fVtjb10oZSl7ZGVsZXRlIHRoaXNbR2xdO2lmKHRoaXNbdW9dKXtlLmNsZWFuKHRoaXNbdW9dKTtkZWxldGUgdGhpc1t1b119fVt6b10oZSl7cmV0dXJuIHRoaXNbX2xdLmluZGV4T2YoZSl9W0xvXShlLHQpe3RbWWxdPXRoaXM7dGhpc1tfbF0uc3BsaWNlKGUsMCx0KTshdFtQb10mJnRoaXNbUG9dJiYodFtQb109dGhpc1tQb10pfVtZb10oKXtyZXR1cm4hdGhpcy5uYW1lfVtRb10oKXtyZXR1cm4iIn1bZ2xdKCl7cmV0dXJuIDA9PT10aGlzW19sXS5sZW5ndGg/dGhpc1tnb106dGhpc1tfbF0ubWFwKGU9PmVbZ2xdKCkpLmpvaW4oIiIpfWdldFtQbF0oKXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtpZighZS5fYXR0cmlidXRlcyl7Y29uc3QgdD1lLl9hdHRyaWJ1dGVzPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKG51bGw9PT10aGlzW2VdfHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHRoaXNbZV1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KWJyZWFrO3QuYWRkKGUpfX1yZXR1cm4gc2hhZG93KHRoaXMsUGwsZS5fYXR0cmlidXRlcyl9W0tvXShlKXtsZXQgdD10aGlzO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dFtNb10oKX1yZXR1cm4hMX1bTW9dKCl7cmV0dXJuIHRoaXNbWWxdfVtIb10oKXtyZXR1cm4gdGhpc1tNb10oKX1bUm9dKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1tlXTp0aGlzW19sXX1bd29dKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXNbZ29dJiYoZS4kY29udGVudD10aGlzW2dvXSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IG49dGhpc1t0XTtudWxsIT09biYmKG4gaW5zdGFuY2VvZiBYRkFPYmplY3Q/ZVt0XT1uW3dvXSgpOm4gaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheT9uLmlzRW1wdHkoKXx8KGVbdF09bi5kdW1wKCkpOmVbdF09bil9cmV0dXJuIGV9W2tsXSgpe3JldHVybiBudWxsfVt3bF0oKXtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX0qW0JvXSgpe2Zvcihjb25zdCBlIG9mIHRoaXNbUm9dKCkpeWllbGQgZX0qW1dsXShlLHQpe2Zvcihjb25zdCBuIG9mIHRoaXNbQm9dKCkpaWYoIWV8fHQ9PT1lLmhhcyhuW2VsXSkpe2NvbnN0IGU9dGhpc1tTb10oKSx0PW5bd2xdKGUpO3Quc3VjY2Vzc3x8KHRoaXNbam9dLmZhaWxpbmdOb2RlPW4pO3lpZWxkIHR9fVt5b10oKXtyZXR1cm4gbnVsbH1bb29dKGUsdCl7dGhpc1tqb10uY2hpbGRyZW4ucHVzaChlKX1bU29dKCl7fVtmb10oe2ZpbHRlcjplPW51bGwsaW5jbHVkZTp0PSEwfSl7aWYodGhpc1tqb10uZ2VuZXJhdG9yKXtjb25zdCBlPXRoaXNbU29dKCksdD10aGlzW2pvXS5mYWlsaW5nTm9kZVt3bF0oZSk7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbb29dKHQuaHRtbCx0LmJib3gpO2RlbGV0ZSB0aGlzW2pvXS5mYWlsaW5nTm9kZX1lbHNlIHRoaXNbam9dLmdlbmVyYXRvcj10aGlzW1dsXShlLHQpO2Zvcig7Oyl7Y29uc3QgZT10aGlzW2pvXS5nZW5lcmF0b3IubmV4dCgpO2lmKGUuZG9uZSlicmVhaztjb25zdCB0PWUudmFsdWU7aWYoIXQuc3VjY2VzcylyZXR1cm4gdDt0Lmh0bWwmJnRoaXNbb29dKHQuaHRtbCx0LmJib3gpfXRoaXNbam9dLmdlbmVyYXRvcj1udWxsO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfVttbF0oZSl7dGhpc1tRbF09bmV3IFNldChPYmplY3Qua2V5cyhlKSl9W0tsXShlKXtjb25zdCB0PXRoaXNbUGxdLG49dGhpc1tRbF07cmV0dXJuIGUua2V5cygpLmZpbHRlcihlPT50LmhhcyhlKSYmIW4uaGFzKGUpKS50b0FycmF5KCl9W2NsXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IG4gb2YgdGhpc1tfbF0pbltKbF0oZSx0KX1bSmxdKGUsdCl7Y29uc3Qgbj10aGlzW1hsXShlLHQpO24/dGhpc1tNbF0obixlLHQpOnRoaXNbY2xdKGUsdCl9W1hsXShlLHQpe2NvbnN0e3VzZTpuLHVzZWhyZWY6YX09dGhpcztpZighbiYmIWEpcmV0dXJuIG51bGw7bGV0IHI9bnVsbCxzPW51bGwsaT1udWxsLG89bjtpZihhKXtvPWE7YS5zdGFydHNXaXRoKCIjc29tKCIpJiZhLmVuZHNXaXRoKCIpIik/cz1hLnNsaWNlKDUsLTEpOmEuc3RhcnRzV2l0aCgiLiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9zPWEuc2xpY2UoNiwtMSk6YS5zdGFydHNXaXRoKCIjIik/aT1hLnNsaWNlKDEpOmEuc3RhcnRzV2l0aCgiLiMiKSYmKGk9YS5zbGljZSgyKSl9ZWxzZSBuLnN0YXJ0c1dpdGgoIiMiKT9pPW4uc2xpY2UoMSk6cz1uO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihpKXI9ZS5nZXQoaSk7ZWxzZXtyPXNlYXJjaE5vZGUoZS5nZXQoZmwpLHRoaXMscywhMCwhMSk7ciYmPXJbMF19aWYoIXIpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihyW2VsXSE9PXRoaXNbZWxdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke3JbZWxdfSAhPT0gJHt0aGlzW2VsXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMocikpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKHIpO2NvbnN0IGw9cltYbF0oZSx0KTtsJiZyW01sXShsLGUsdCk7cltjbF0oZSx0KTt0LmRlbGV0ZShyKTtyZXR1cm4gcn1bTWxdKGUsdCxuKXtpZihuLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW2dvXSYmZVtnb10mJih0aGlzW2dvXT1lW2dvXSk7bmV3IFNldChuKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tLbF0oZVtRbF0pKXt0aGlzW3RdPWVbdF07dGhpc1tRbF0mJnRoaXNbUWxdLmFkZCh0KX1mb3IoY29uc3QgYSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tQbF0uaGFzKGEpKWNvbnRpbnVlO2NvbnN0IHI9dGhpc1thXSxzPWVbYV07aWYociBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KXtmb3IoY29uc3QgZSBvZiByW19sXSllW0psXSh0LG4pO2ZvcihsZXQgYT1yW19sXS5sZW5ndGgsaT1zW19sXS5sZW5ndGg7YTxpO2ErKyl7Y29uc3Qgcz1lW19sXVthXVttb10oKTtpZighci5wdXNoKHMpKWJyZWFrO3NbWWxdPXRoaXM7dGhpc1tfbF0ucHVzaChzKTtzW0psXSh0LG4pfX1lbHNlIGlmKG51bGw9PT1yKXtpZihudWxsIT09cyl7Y29uc3QgZT1zW21vXSgpO2VbWWxdPXRoaXM7dGhpc1thXT1lO3RoaXNbX2xdLnB1c2goZSk7ZVtKbF0odCxuKX19ZWxzZXtyW2NsXSh0LG4pO3MmJnJbTWxdKHMsdCxuKX19fXN0YXRpY1tFbF0oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZT0+WEZBT2JqZWN0W0VsXShlKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W21vXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHtzaGFkb3coZSx0LHRoaXNbdF0pfWVbeWxdPWAke2VbZWxdfSR7ZWYrK31gO2VbX2xdPVtdO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW1BsXS5oYXModCkpe2VbdF09WEZBT2JqZWN0W0VsXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBuPXRoaXNbdF07ZVt0XT1uIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KG5bVmxdKTpudWxsfWZvcihjb25zdCB0IG9mIHRoaXNbX2xdKXtjb25zdCBuPXRbZWxdLGE9dFttb10oKTtlW19sXS5wdXNoKGEpO2FbWWxdPWU7bnVsbD09PWVbbl0/ZVtuXT1hOmVbbl1bX2xdLnB1c2goYSl9cmV0dXJuIGV9W1JvXShlPW51bGwpe3JldHVybiBlP3RoaXNbX2xdLmZpbHRlcih0PT50W2VsXT09PWUpOnRoaXNbX2xdfVtBb10oZSl7cmV0dXJuIHRoaXNbZV19W3hvXShlLHQsbj0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tDb10oZSx0LG4pKX0qW0NvXShlLHQsbj0hMCl7aWYoInBhcmVudCIhPT1lKXtmb3IoY29uc3QgbiBvZiB0aGlzW19sXSl7bltlbF09PT1lJiYoeWllbGQgbik7bi5uYW1lPT09ZSYmKHlpZWxkIG4pOyh0fHxuW1lvXSgpKSYmKHlpZWxkKm5bQ29dKGUsdCwhMSkpfW4mJnRoaXNbUGxdLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbWWxdfX1jbGFzcyBYRkFPYmplY3RBcnJheXtjb25zdHJ1Y3RvcihlPTEvMCl7dGhpc1tWbF09ZTt0aGlzW19sXT1bXX1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMX1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiEwfXB1c2goZSl7aWYodGhpc1tfbF0ubGVuZ3RoPD10aGlzW1ZsXSl7dGhpc1tfbF0ucHVzaChlKTtyZXR1cm4hMH13YXJuKGBYRkEgLSBub2RlICIke2VbZWxdfSIgYWNjZXB0cyBubyBtb3JlIHRoYW4gJHt0aGlzW1ZsXX0gY2hpbGRyZW5gKTtyZXR1cm4hMX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzW19sXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1tfbF0ubGVuZ3RoP3RoaXNbX2xdWzBdW3dvXSgpOnRoaXNbX2xdLm1hcChlPT5lW3dvXSgpKX1bbW9dKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tWbF0pO2VbX2xdPXRoaXNbX2xdLm1hcChlPT5lW21vXSgpKTtyZXR1cm4gZX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpc1tfbF19Y2xlYXIoKXt0aGlzW19sXS5sZW5ndGg9MH19Y2xhc3MgWEZBQXR0cmlidXRle2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzW1lsXT1lO3RoaXNbZWxdPXQ7dGhpc1tnb109bjt0aGlzW3BvXT0hMTt0aGlzW3lsXT0iYXR0cmlidXRlIitlZisrfVtNb10oKXtyZXR1cm4gdGhpc1tZbF19W1hvXSgpe3JldHVybiEwfVtJb10oKXtyZXR1cm4gdGhpc1tnb10udHJpbSgpfVtwbF0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2dvXT1lLnRvU3RyaW5nKCl9W2dsXSgpe3JldHVybiB0aGlzW2dvXX1bS29dKGUpe3JldHVybiB0aGlzW1lsXT09PWV8fHRoaXNbWWxdW0tvXShlKX19Y2xhc3MgWG1sT2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxuPXt9KXtzdXBlcihlLHQpO3RoaXNbZ29dPSIiO3RoaXNbemxdPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW05sXT1lO2Zvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMobikpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxhKSk7aWYoT2JqZWN0Lmhhc093bihuLHRsKSl7Y29uc3QgZT1uW3RsXS54ZmEuZGF0YU5vZGU7dm9pZCAwIT09ZSYmKCJkYXRhR3JvdXAiPT09ZT90aGlzW3psXT0hMToiZGF0YVZhbHVlIj09PWUmJih0aGlzW3psXT0hMCkpfX10aGlzW3BvXT0hMX1bamxdKGUpe2NvbnN0IHQ9dGhpc1tlbF07aWYoIiN0ZXh0Ij09PXQpe2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW2dvXSkpO3JldHVybn1jb25zdCBuPXV0ZjhTdHJpbmdUb1N0cmluZyh0KSxhPXRoaXNbWm9dPT09dGY/InhmYToiOiIiO2UucHVzaChgPCR7YX0ke259YCk7Zm9yKGNvbnN0W3Qsbl1vZiB0aGlzW05sXSl7Y29uc3QgYT11dGY4U3RyaW5nVG9TdHJpbmcodCk7ZS5wdXNoKGAgJHthfT0iJHtlbmNvZGVUb1htbFN0cmluZyhuW2dvXSl9ImApfW51bGwhPT10aGlzW3psXSYmKHRoaXNbemxdP2UucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YVZhbHVlIicpOmUucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YUdyb3VwIicpKTtpZih0aGlzW2dvXXx8MCE9PXRoaXNbX2xdLmxlbmd0aCl7ZS5wdXNoKCI+Iik7aWYodGhpc1tnb10pInN0cmluZyI9PXR5cGVvZiB0aGlzW2dvXT9lLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tnb10pKTp0aGlzW2dvXVtqbF0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW19sXSl0W2psXShlKTtlLnB1c2goYDwvJHthfSR7bn0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W25sXShlKXtpZih0aGlzW2dvXSl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbWm9dLCIjdGV4dCIpO3RoaXNbbG9dKGUpO2VbZ29dPXRoaXNbZ29dO3RoaXNbZ29dPSIifXRoaXNbbG9dKGUpO3JldHVybiEwfVtybF0oZSl7dGhpc1tnb10rPWV9W2tvXSgpe2lmKHRoaXNbZ29dJiZ0aGlzW19sXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbWm9dLCIjdGV4dCIpO3RoaXNbbG9dKGUpO2VbZ29dPXRoaXNbZ29dO2RlbGV0ZSB0aGlzW2dvXX19W3dsXSgpe3JldHVybiIjdGV4dCI9PT10aGlzW2VsXT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6IiN0ZXh0Iix2YWx1ZTp0aGlzW2dvXX0pOkhUTUxSZXN1bHQuRU1QVFl9W1JvXShlPW51bGwpe3JldHVybiBlP3RoaXNbX2xdLmZpbHRlcih0PT50W2VsXT09PWUpOnRoaXNbX2xdfVt2b10oKXtyZXR1cm4gdGhpc1tObF19W0FvXShlKXtjb25zdCB0PXRoaXNbTmxdLmdldChlKTtyZXR1cm4gdm9pZCAwIT09dD90OnRoaXNbUm9dKGUpfSpbQ29dKGUsdCl7Y29uc3Qgbj10aGlzW05sXS5nZXQoZSk7biYmKHlpZWxkIG4pO2Zvcihjb25zdCBuIG9mIHRoaXNbX2xdKXtuW2VsXT09PWUmJih5aWVsZCBuKTt0JiYoeWllbGQqbltDb10oZSx0KSl9fSpbcW9dKGUsdCl7Y29uc3Qgbj10aGlzW05sXS5nZXQoZSk7IW58fHQmJm5bcG9dfHwoeWllbGQgbik7Zm9yKGNvbnN0IG4gb2YgdGhpc1tfbF0peWllbGQqbltxb10oZSx0KX0qW09vXShlLHQsbil7Zm9yKGNvbnN0IGEgb2YgdGhpc1tfbF0pe2FbZWxdIT09ZXx8biYmYVtwb118fCh5aWVsZCBhKTt0JiYoeWllbGQqYVtPb10oZSx0LG4pKX19W1hvXSgpe3JldHVybiBudWxsPT09dGhpc1t6bF0/MD09PXRoaXNbX2xdLmxlbmd0aHx8dGhpc1tfbF1bMF1bWm9dPT09dmwueGh0bWwuaWQ6dGhpc1t6bF19W0lvXSgpe3JldHVybiBudWxsPT09dGhpc1t6bF0/MD09PXRoaXNbX2xdLmxlbmd0aD90aGlzW2dvXS50cmltKCk6dGhpc1tfbF1bMF1bWm9dPT09dmwueGh0bWwuaWQ/dGhpc1tfbF1bMF1bZ2xdKCkudHJpbSgpOm51bGw6dGhpc1tnb10udHJpbSgpfVtwbF0oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW2dvXT1lLnRvU3RyaW5nKCl9W3dvXShlPSExKXtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7ZSYmKHQuJG5zPXRoaXNbWm9dKTt0aGlzW2dvXSYmKHQuJGNvbnRlbnQ9dGhpc1tnb10pO3QuJG5hbWU9dGhpc1tlbF07dC5jaGlsZHJlbj1bXTtmb3IoY29uc3QgbiBvZiB0aGlzW19sXSl0LmNoaWxkcmVuLnB1c2goblt3b10oZSkpO3QuYXR0cmlidXRlcz1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtlLG5db2YgdGhpc1tObF0pdC5hdHRyaWJ1dGVzW2VdPW5bZ29dO3JldHVybiB0fX1jbGFzcyBDb250ZW50T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0KTt0aGlzW2dvXT0iIn1bcmxdKGUpe3RoaXNbZ29dKz1lfVtrb10oKXt9fWNsYXNzIE9wdGlvbk9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKGUsdCk7dGhpc1skbF09bn1ba29dKCl7dGhpc1tnb109Z2V0S2V5d29yZCh7ZGF0YTp0aGlzW2dvXSxkZWZhdWx0VmFsdWU6dGhpc1skbF1bMF0sdmFsaWRhdGU6ZT0+dGhpc1skbF0uaW5jbHVkZXMoZSl9KX1bY29dKGUpe3N1cGVyW2NvXShlKTtkZWxldGUgdGhpc1skbF19fWNsYXNzIFN0cmluZ09iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7W2tvXSgpe3RoaXNbZ29dPXRoaXNbZ29dLnRyaW0oKX19Y2xhc3MgSW50ZWdlck9iamVjdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSx0LG4sYSl7c3VwZXIoZSx0KTt0aGlzW0xsXT1uO3RoaXNbWmxdPWF9W2tvXSgpe3RoaXNbZ29dPWdldEludGVnZXIoe2RhdGE6dGhpc1tnb10sZGVmYXVsdFZhbHVlOnRoaXNbTGxdLHZhbGlkYXRlOnRoaXNbWmxdfSl9W2NvXShlKXtzdXBlcltjb10oZSk7ZGVsZXRlIHRoaXNbTGxdO2RlbGV0ZSB0aGlzW1psXX19Y2xhc3MgT3B0aW9uMDEgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDAsZT0+MT09PWUpfX1jbGFzcyBPcHRpb24xMCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMSxlPT4wPT09ZSl9fWZ1bmN0aW9uIG1lYXN1cmVUb1N0cmluZyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtlfXB4YDpgJHtlLnRvRml4ZWQoMil9cHhgfWNvbnN0IG5mPXthbmNob3JUeXBlKGUsdCl7Y29uc3Qgbj1lW0hvXSgpO2lmKG4mJighbi5sYXlvdXR8fCJwb3NpdGlvbiI9PT1uLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBuPWVbSG9dKCk7bGV0IGE9ZS53O2NvbnN0IHI9ZS5oO2lmKG4ubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IHQ9bltqb10scj1lLmNvbFNwYW47bGV0IHM7aWYoLTE9PT1yKXtzPU1hdGguc3VtUHJlY2lzZSh0LmNvbHVtbldpZHRocy5zbGljZSh0LmN1cnJlbnRDb2x1bW4pKTt0LmN1cnJlbnRDb2x1bW49MH1lbHNle3M9TWF0aC5zdW1QcmVjaXNlKHQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbix0LmN1cnJlbnRDb2x1bW4rcikpO3QuY3VycmVudENvbHVtbj0odC5jdXJyZW50Q29sdW1uK2UuY29sU3BhbikldC5jb2x1bW5XaWR0aHMubGVuZ3RofWlzTmFOKHMpfHwoYT1lLnc9cyl9dC53aWR0aD0iIiE9PWE/bWVhc3VyZVRvU3RyaW5nKGEpOiJhdXRvIjt0LmhlaWdodD0iIiE9PXI/bWVhc3VyZVRvU3RyaW5nKHIpOiJhdXRvIn0scG9zaXRpb24oZSx0KXtjb25zdCBuPWVbSG9dKCk7aWYoIW4/LmxheW91dHx8InBvc2l0aW9uIj09PW4ubGF5b3V0KXt0LnBvc2l0aW9uPSJhYnNvbHV0ZSI7dC5sZWZ0PW1lYXN1cmVUb1N0cmluZyhlLngpO3QudG9wPW1lYXN1cmVUb1N0cmluZyhlLnkpfX0scm90YXRlKGUsdCl7aWYoZS5yb3RhdGUpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTt0LnRyYW5zZm9ybSs9YHJvdGF0ZSgtJHtlLnJvdGF0ZX1kZWcpYDt0LnRyYW5zZm9ybU9yaWdpbj0idG9wIGxlZnQifX0scHJlc2VuY2UoZSx0KXtzd2l0Y2goZS5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOnQudmlzaWJpbGl0eT0iaGlkZGVuIjticmVhaztjYXNlImhpZGRlbiI6Y2FzZSJpbmFjdGl2ZSI6dC5kaXNwbGF5PSJub25lIn19LGhBbGlnbihlLHQpe2lmKCJwYXJhIj09PWVbZWxdKXN3aXRjaChlLmhBbGlnbil7Y2FzZSJqdXN0aWZ5QWxsIjp0LnRleHRBbGlnbj0ianVzdGlmeS1hbGwiO2JyZWFrO2Nhc2UicmFkaXgiOnQudGV4dEFsaWduPSJsZWZ0IjticmVhaztkZWZhdWx0OnQudGV4dEFsaWduPWUuaEFsaWdufWVsc2Ugc3dpdGNoKGUuaEFsaWduKXtjYXNlImxlZnQiOnQuYWxpZ25TZWxmPSJzdGFydCI7YnJlYWs7Y2FzZSJjZW50ZXIiOnQuYWxpZ25TZWxmPSJjZW50ZXIiO2JyZWFrO2Nhc2UicmlnaHQiOnQuYWxpZ25TZWxmPSJlbmQifX0sbWFyZ2luKGUsdCl7ZS5tYXJnaW4mJih0Lm1hcmdpbj1lLm1hcmdpbltrbF0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW0hvXSgpLmxheW91dCl7ZS5taW5XPjAmJih0Lm1pbldpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1pblcpKTtlLm1heFc+MCYmKHQubWF4V2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWF4VykpO2UubWluSD4wJiYodC5taW5IZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWluSCkpO2UubWF4SD4wJiYodC5tYXhIZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWF4SCkpfX1mdW5jdGlvbiBsYXlvdXRUZXh0KGUsdCxuLGEscixzKXtjb25zdCBpPW5ldyBUZXh0TWVhc3VyZSh0LG4sYSxyKTsic3RyaW5nIj09dHlwZW9mIGU/aS5hZGRTdHJpbmcoZSk6ZVtzbF0oaSk7cmV0dXJuIGkuY29tcHV0ZShzKX1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IG49bnVsbCxhPW51bGwscj0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCBzPTAsaT0wO2lmKGUubWFyZ2luKXtzPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O2k9ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG89bnVsbCxsPW51bGw7aWYoZS5wYXJhKXtsPU9iamVjdC5jcmVhdGUobnVsbCk7bz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7bC50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2wuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztsLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2wucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGY9ZS5mb250O2lmKCFmKXtjb25zdCB0PWVbTm9dKCk7bGV0IG49ZVtNb10oKTtmb3IoO24mJm4hPT10Oyl7aWYobi5mb250KXtmPW4uZm9udDticmVha31uPW5bTW9dKCl9fWNvbnN0IGM9KGUud3x8dC53aWR0aCktcyxoPWVbUG9dLmZvbnRGaW5kZXI7aWYoZS52YWx1ZS5leERhdGEmJmUudmFsdWUuZXhEYXRhW2dvXSYmInRleHQvaHRtbCI9PT1lLnZhbHVlLmV4RGF0YS5jb250ZW50VHlwZSl7Y29uc3QgdD1sYXlvdXRUZXh0KGUudmFsdWUuZXhEYXRhW2dvXSxmLGwsbyxoLGMpO2E9dC53aWR0aDtuPXQuaGVpZ2h0O3I9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtnbF0oKTtpZih0KXtjb25zdCBlPWxheW91dFRleHQodCxmLGwsbyxoLGMpO2E9ZS53aWR0aDtuPWUuaGVpZ2h0O3I9ZS5pc0Jyb2tlbn19bnVsbD09PWF8fGUud3x8KGErPXMpO251bGw9PT1ufHxlLmh8fChuKz1pKX1yZXR1cm57dzphLGg6bixpc0Jyb2tlbjpyfX1mdW5jdGlvbiBjb21wdXRlQmJveChlLHQsbil7bGV0IGE7aWYoIiIhPT1lLncmJiIiIT09ZS5oKWE9W2UueCxlLnksZS53LGUuaF07ZWxzZXtpZighbilyZXR1cm4gbnVsbDtsZXQgcj1lLnc7aWYoIiI9PT1yKXtpZigwPT09ZS5tYXhXKXtjb25zdCB0PWVbSG9dKCk7cj0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC53PzA6ZS5taW5XfWVsc2Ugcj1NYXRoLm1pbihlLm1heFcsbi53aWR0aCk7dC5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoPW1lYXN1cmVUb1N0cmluZyhyKX1sZXQgcz1lLmg7aWYoIiI9PT1zKXtpZigwPT09ZS5tYXhIKXtjb25zdCB0PWVbSG9dKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsbi5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfWE9W2UueCxlLnkscixzXX1yZXR1cm4gYX1mdW5jdGlvbiBmaXhEaW1lbnNpb25zKGUpe2NvbnN0IHQ9ZVtIb10oKTtpZih0LmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCBuPXRbam9dLGE9ZS5jb2xTcGFuO2xldCByO3I9LTE9PT1hP01hdGguc3VtUHJlY2lzZShuLmNvbHVtbldpZHRocy5zbGljZShuLmN1cnJlbnRDb2x1bW4pKTpNYXRoLnN1bVByZWNpc2Uobi5jb2x1bW5XaWR0aHMuc2xpY2Uobi5jdXJyZW50Q29sdW1uLG4uY3VycmVudENvbHVtbithKSk7aXNOYU4ocil8fChlLnc9cil9dC5sYXlvdXQmJiJwb3NpdGlvbiIhPT10LmxheW91dCYmKGUueD1lLnk9MCk7InRhYmxlIj09PWUubGF5b3V0JiYiIj09PWUudyYmQXJyYXkuaXNBcnJheShlLmNvbHVtbldpZHRocykmJihlLnc9TWF0aC5zdW1QcmVjaXNlKGUuY29sdW1uV2lkdGhzKSl9ZnVuY3Rpb24gbGF5b3V0Q2xhc3MoZSl7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpkZWZhdWx0OnJldHVybiJ4ZmFQb3NpdGlvbiI7Y2FzZSJsci10YiI6cmV0dXJuInhmYUxyVGIiO2Nhc2Uicmwtcm93IjpyZXR1cm4ieGZhUmxSb3ciO2Nhc2UicmwtdGIiOnJldHVybiJ4ZmFSbFRiIjtjYXNlInJvdyI6cmV0dXJuInhmYVJvdyI7Y2FzZSJ0YWJsZSI6cmV0dXJuInhmYVRhYmxlIjtjYXNlInRiIjpyZXR1cm4ieGZhVGIifX1mdW5jdGlvbiB0b1N0eWxlKGUsLi4udCl7Y29uc3Qgbj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZVthXTtpZihudWxsIT09dClpZihPYmplY3QuaGFzT3duKG5mLGEpKW5mW2FdKGUsbik7ZWxzZSBpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXtjb25zdCBlPXRba2xdKCk7ZT9PYmplY3QuYXNzaWduKG4sZSk6d2FybihgKERFQlVHKSAtIFhGQSAtIHN0eWxlIGZvciAke2F9IG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX19cmV0dXJuIG59ZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlLHQpe2NvbnN0e2F0dHJpYnV0ZXM6bn09dCx7c3R5bGU6YX09bixyPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTtuLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKTtpZihlLmJvcmRlcil7Y29uc3R7d2lkdGhzOm4saW5zZXRzOnN9PWUuYm9yZGVyW2pvXTtsZXQgaSxvLGw9c1swXSxmPXNbM107Y29uc3QgYz1zWzBdK3NbMl0saD1zWzFdK3NbM107c3dpdGNoKGUuYm9yZGVyLmhhbmQpe2Nhc2UiZXZlbiI6bC09blswXS8yO2YtPW5bM10vMjtpPWBjYWxjKDEwMCUgKyAkeyhuWzFdK25bM10pLzItaH1weClgO289YGNhbGMoMTAwJSArICR7KG5bMF0rblsyXSkvMi1jfXB4KWA7YnJlYWs7Y2FzZSJsZWZ0IjpsLT1uWzBdO2YtPW5bM107aT1gY2FsYygxMDAlICsgJHtuWzFdK25bM10taH1weClgO289YGNhbGMoMTAwJSArICR7blswXStuWzJdLWN9cHgpYDticmVhaztjYXNlInJpZ2h0IjppPWg/YGNhbGMoMTAwJSAtICR7aH1weClgOiIxMDAlIjtvPWM/YGNhbGMoMTAwJSAtICR7Y31weClgOiIxMDAlIn1jb25zdCB1PVsieGZhQm9yZGVyIl07aXNQcmludE9ubHkoZS5ib3JkZXIpJiZ1LnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IG09e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6dSxzdHlsZTp7dG9wOmAke2x9cHhgLGxlZnQ6YCR7Zn1weGAsd2lkdGg6aSxoZWlnaHQ6b319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZlsiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlclN0eWxlIl0paWYodm9pZCAwIT09YVtlXSl7bS5hdHRyaWJ1dGVzLnN0eWxlW2VdPWFbZV07ZGVsZXRlIGFbZV19ci5jaGlsZHJlbi5wdXNoKG0sdCl9ZWxzZSByLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0paWYodm9pZCAwIT09YVtlXSl7ci5hdHRyaWJ1dGVzLnN0eWxlW2VdPWFbZV07ZGVsZXRlIGFbZV19ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1hLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIjtkZWxldGUgYS5wb3NpdGlvbjtpZihhLmFsaWduU2VsZil7ci5hdHRyaWJ1dGVzLnN0eWxlLmFsaWduU2VsZj1hLmFsaWduU2VsZjtkZWxldGUgYS5hbGlnblNlbGZ9cmV0dXJuIHJ9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PWdldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3Qgbj0icGFkZGluZyIrKCJsZWZ0Ij09PSgicmlnaHQiPT09ZS50ZXh0QWxpZ24/InJpZ2h0IjoibGVmdCIpPyJMZWZ0IjoiUmlnaHQiKSxhPWdldE1lYXN1cmVtZW50KGVbbl0sIjBweCIpO2Vbbl09YS10KyJweCJ9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW05vXSgpW2pvXS5wYXJhU3RhY2s7cmV0dXJuIHQubGVuZ3RoP3QuYXQoLTEpOm51bGx9ZnVuY3Rpb24gc2V0UGFyYShlLHQsbil7aWYobi5hdHRyaWJ1dGVzLmNsYXNzPy5pbmNsdWRlcygieGZhUmljaCIpKXtpZih0KXsiIj09PWUuaCYmKHQuaGVpZ2h0PSJhdXRvIik7IiI9PT1lLncmJih0LndpZHRoPSJhdXRvIil9Y29uc3QgYT1nZXRDdXJyZW50UGFyYShlKTtpZihhKXtjb25zdCBlPW4uYXR0cmlidXRlcy5zdHlsZTtlLmRpc3BsYXk9ImZsZXgiO2UuZmxleERpcmVjdGlvbj0iY29sdW1uIjtzd2l0Y2goYS52QWxpZ24pe2Nhc2UidG9wIjplLmp1c3RpZnlDb250ZW50PSJzdGFydCI7YnJlYWs7Y2FzZSJib3R0b20iOmUuanVzdGlmeUNvbnRlbnQ9ImVuZCI7YnJlYWs7Y2FzZSJtaWRkbGUiOmUuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciJ9Y29uc3QgdD1hW2tsXSgpO2Zvcihjb25zdFtuLGFdb2YgT2JqZWN0LmVudHJpZXModCkpbiBpbiBlfHwoZVtuXT1hKX19fWZ1bmN0aW9uIHNldEZvbnRGYW1pbHkoZSx0LG4sYSl7aWYoIW4pe2RlbGV0ZSBhLmZvbnRGYW1pbHk7cmV0dXJufWNvbnN0IHI9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSk7YS5mb250RmFtaWx5PWAiJHtyfSJgO2NvbnN0IHM9bi5maW5kKHIpO2lmKHMpe2NvbnN0e2ZvbnRGYW1pbHk6bn09cy5yZWd1bGFyLmNzc0ZvbnRJbmZvO24hPT1yJiYoYS5mb250RmFtaWx5PWAiJHtufSJgKTtjb25zdCBpPWdldEN1cnJlbnRQYXJhKHQpO2lmKGkmJiIiIT09aS5saW5lSGVpZ2h0KXJldHVybjtpZihhLmxpbmVIZWlnaHQpcmV0dXJuO2NvbnN0IG89c2VsZWN0Rm9udChlLHMpO28mJihhLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLG8ubGluZUhlaWdodCkpfX1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfWZ1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fWZ1bmN0aW9uIGZsdXNoSFRNTChlKXtpZighZVtqb10pcmV0dXJuIG51bGw7Y29uc3QgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbam9dLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtqb10uY2hpbGRyZW59O2lmKGVbam9dLmZhaWxpbmdOb2RlKXtjb25zdCBuPWVbam9dLmZhaWxpbmdOb2RlW3lvXSgpO24mJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbbl0pKTp0LmNoaWxkcmVuLnB1c2gobikpfXJldHVybiAwPT09dC5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0fWZ1bmN0aW9uIGFkZEhUTUwoZSx0LG4pe2NvbnN0IGE9ZVtqb10scj1hLmF2YWlsYWJsZVNwYWNlLFtzLGksbyxsXT1uO3N3aXRjaChlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6YS53aWR0aD1NYXRoLm1heChhLndpZHRoLHMrbyk7YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsaStsKTthLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIWEubGluZXx8MT09PWEuYXR0ZW1wdCl7YS5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7YS5jaGlsZHJlbi5wdXNoKGEubGluZSk7YS5udW1iZXJJbkxpbmU9MH1hLm51bWJlckluTGluZSs9MTthLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09YS5hdHRlbXB0KXthLmN1cnJlbnRXaWR0aCs9bzthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxhLnByZXZIZWlnaHQrbCl9ZWxzZXthLmN1cnJlbnRXaWR0aD1vO2EucHJldkhlaWdodD1hLmhlaWdodDthLmhlaWdodCs9bDthLmF0dGVtcHQ9MH1hLndpZHRoPU1hdGgubWF4KGEud2lkdGgsYS5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e2EuY2hpbGRyZW4ucHVzaCh0KTthLndpZHRoKz1vO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LGwpO2NvbnN0IGU9bWVhc3VyZVRvU3RyaW5nKGEuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiBhLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjphLndpZHRoPU1hdGhDbGFtcChvLGEud2lkdGgsci53aWR0aCk7YS5oZWlnaHQrPWw7YS5jaGlsZHJlbi5wdXNoKHQpfX1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbam9dLmF2YWlsYWJsZVNwYWNlLG49ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxhPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbam9dLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtYS1lW2pvXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LW4tZVtqb10ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtYSxoZWlnaHQ6dC5oZWlnaHQtbi1lW2pvXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOk1hdGguc3VtUHJlY2lzZShlW2pvXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVtqb10uY3VycmVudENvbHVtbikpLGhlaWdodDp0LmhlaWdodC1hfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1hLGhlaWdodDp0LmhlaWdodC1uLWVbam9dLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbTm9dKClbam9dLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3Qgbj1lW0hvXSgpLGE9bltqb10/LmF0dGVtcHR8fDAsWyxyLHMsaV09ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LG4sYT0iIj09PWUudz9OYU46ZS53LHI9IiI9PT1lLmg/TmFOOmUuaCxbcyxpXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltzLGldPVthLzIscl07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbcyxpXT1bMCxyXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbcyxpXT1bYSxyXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W3MsaV09W2EvMixyLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W3MsaV09WzAsci8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbcyxpXT1bYSxyLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbcyxpXT1bYS8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltzLGldPVthLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LG5dPVstcywtaV07YnJlYWs7Y2FzZSA5MDpbdCxuXT1bLWksc107W2Escl09W3IsLWFdO2JyZWFrO2Nhc2UgMTgwOlt0LG5dPVtzLGldO1thLHJdPVstYSwtcl07YnJlYWs7Y2FzZSAyNzA6W3Qsbl09W2ksLXNdO1thLHJdPVstcixhXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxhKSxlLnkrbitNYXRoLm1pbigwLHIpLE1hdGguYWJzKGEpLE1hdGguYWJzKHIpXX0oZSk7c3dpdGNoKG4ubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWE/ZVtOb10oKVtqb10ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChpLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQocy10LndpZHRoKTw9Mnx8MD09PW5bam9dLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtOb10oKVtqb10ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKGktdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKHMtdC53aWR0aCk8PTJ8fCFuWyRvXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW05vXSgpW2pvXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVtWb10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IW5bJG9dKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQoaS10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbTm9dKClbam9dLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChpK3ItdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBpK3I+ZVtOb10oKVtqb10uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbTm9dKClbam9dLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKGktdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBhZj12bC50ZW1wbGF0ZS5pZCxyZj0vXkgoXGQrKSQvLHNmPW5ldyBTZXQoWyJpbWFnZS9naWYiLCJpbWFnZS9qcGVnIiwiaW1hZ2UvanBnIiwiaW1hZ2UvcGpwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9hcG5nIiwiaW1hZ2UveC1wbmciLCJpbWFnZS9ibXAiLCJpbWFnZS94LW1zLWJtcCIsImltYWdlL3RpZmYiLCJpbWFnZS90aWYiLCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iXSksb2Y9W1tbNjYsNzddLCJpbWFnZS9ibXAiXSxbWzI1NSwyMTYsMjU1XSwiaW1hZ2UvanBlZyJdLFtbNzMsNzMsNDIsMF0sImltYWdlL3RpZmYiXSxbWzc3LDc3LDAsNDJdLCJpbWFnZS90aWZmIl0sW1s3MSw3Myw3MCw1Niw1Nyw5N10sImltYWdlL2dpZiJdLFtbMTM3LDgwLDc4LDcxLDEzLDEwLDI2LDEwXSwiaW1hZ2UvcG5nIl1dO2Z1bmN0aW9uIGdldEJvcmRlckRpbXMoZSl7aWYoIWV8fCFlLmJvcmRlcilyZXR1cm57dzowLGg6MH07Y29uc3QgdD1lLmJvcmRlcltGb10oKTtyZXR1cm4gdD97dzp0LndpZHRoc1swXSt0LndpZHRoc1syXSt0Lmluc2V0c1swXSt0Lmluc2V0c1syXSxoOnQud2lkdGhzWzFdK3Qud2lkdGhzWzNdK3QuaW5zZXRzWzFdK3QuaW5zZXRzWzNdfTp7dzowLGg6MH19ZnVuY3Rpb24gaGFzTWFyZ2luKGUpe3JldHVybiBlLm1hcmdpbiYmKGUubWFyZ2luLnRvcEluc2V0fHxlLm1hcmdpbi5yaWdodEluc2V0fHxlLm1hcmdpbi5ib3R0b21JbnNldHx8ZS5tYXJnaW4ubGVmdEluc2V0KX1mdW5jdGlvbiBfc2V0VmFsdWUoZSx0KXtpZighZS52YWx1ZSl7Y29uc3QgdD1uZXcgVmFsdWUoe30pO2VbbG9dKHQpO2UudmFsdWU9dH1lLnZhbHVlW3BsXSh0KX1mdW5jdGlvbipnZXRDb250YWluZWRDaGlsZHJlbihlKXtmb3IoY29uc3QgdCBvZiBlW1JvXSgpKXQgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P3lpZWxkKnRbQm9dKCk6eWllbGQgdH1mdW5jdGlvbiBpc1JlcXVpcmVkKGUpe3JldHVybiJlcnJvciI9PT1lLnZhbGlkYXRlPy5udWxsVGVzdH1mdW5jdGlvbiBzZXRUYWJJbmRleChlKXtmb3IoO2U7KXtpZighZS50cmF2ZXJzYWwpe2VbZGxdPWVbTW9dKClbZGxdO3JldHVybn1pZihlW2RsXSlyZXR1cm47bGV0IHQ9bnVsbDtmb3IoY29uc3QgbiBvZiBlLnRyYXZlcnNhbFtSb10oKSlpZigibmV4dCI9PT1uLm9wZXJhdGlvbil7dD1uO2JyZWFrfWlmKCF0fHwhdC5yZWYpe2VbZGxdPWVbTW9dKClbZGxdO3JldHVybn1jb25zdCBuPWVbTm9dKCk7ZVtkbF09KytuW2RsXTtjb25zdCBhPW5baGxdKHQucmVmLGUpO2lmKCFhKXJldHVybjtlPWFbMF19fWZ1bmN0aW9uIGFwcGx5QXNzaXN0KGUsdCl7Y29uc3Qgbj1lLmFzc2lzdDtpZihuKXtjb25zdCBlPW5bd2xdKCk7ZSYmKHQudGl0bGU9ZSk7Y29uc3QgYT1uLnJvbGUubWF0Y2gocmYpO2lmKGEpe2NvbnN0IGU9ImhlYWRpbmciLG49YVsxXTt0LnJvbGU9ZTt0WyJhcmlhLWxldmVsIl09bn19aWYoInRhYmxlIj09PWUubGF5b3V0KXQucm9sZT0idGFibGUiO2Vsc2UgaWYoInJvdyI9PT1lLmxheW91dCl0LnJvbGU9InJvdyI7ZWxzZXtjb25zdCBuPWVbTW9dKCk7InJvdyI9PT1uLmxheW91dCYmKHQucm9sZT0iVEgiPT09bi5hc3Npc3Q/LnJvbGU/ImNvbHVtbmhlYWRlciI6ImNlbGwiKX19ZnVuY3Rpb24gYXJpYUxhYmVsKGUpe2lmKCFlLmFzc2lzdClyZXR1cm4gbnVsbDtjb25zdCB0PWUuYXNzaXN0O3JldHVybiB0LnNwZWFrJiYiIiE9PXQuc3BlYWtbZ29dP3Quc3BlYWtbZ29dOnQudG9vbFRpcD90LnRvb2xUaXBbZ29dOm51bGx9ZnVuY3Rpb24gdmFsdWVUb0h0bWwoZSl7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbe25hbWU6InNwYW4iLGF0dHJpYnV0ZXM6e3N0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LHZhbHVlOmV9XX0pfWZ1bmN0aW9uIHNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtOb10oKTtpZihudWxsPT09dFtqb10uZmlyc3RVbnNwbGl0dGFibGUpe3Rbam9dLmZpcnN0VW5zcGxpdHRhYmxlPWU7dFtqb10ubm9MYXlvdXRGYWlsdXJlPSEwfX1mdW5jdGlvbiB1bnNldEZpcnN0VW5zcGxpdHRhYmxlKGUpe2NvbnN0IHQ9ZVtOb10oKTt0W2pvXS5maXJzdFVuc3BsaXR0YWJsZT09PWUmJih0W2pvXS5ub0xheW91dEZhaWx1cmU9ITEpfWZ1bmN0aW9uIGhhbmRsZUJyZWFrKGUpe2lmKGVbam9dKXJldHVybiExO2Vbam9dPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKXJldHVybiExO2NvbnN0IHQ9ZVtOb10oKTtsZXQgbj1udWxsO2lmKGUudGFyZ2V0KXtuPXRbaGxdKGUudGFyZ2V0LGVbTW9dKCkpO2lmKCFuKXJldHVybiExO249blswXX1jb25zdHtjdXJyZW50UGFnZUFyZWE6YSxjdXJyZW50Q29udGVudEFyZWE6cn09dFtqb107aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7biBpbnN0YW5jZW9mIFBhZ2VBcmVhfHwobj1udWxsKTtpZihlLnN0YXJ0TmV3KXtlW2pvXS50YXJnZXQ9bnx8YTtyZXR1cm4hMH1pZihuJiZuIT09YSl7ZVtqb10udGFyZ2V0PW47cmV0dXJuITB9cmV0dXJuITF9biBpbnN0YW5jZW9mIENvbnRlbnRBcmVhfHwobj1udWxsKTtjb25zdCBzPW4mJm5bTW9dKCk7bGV0IGksbz1zO2lmKGUuc3RhcnROZXcpaWYobil7Y29uc3QgZT1zLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHQ9ZS5pbmRleE9mKHIpLGE9ZS5pbmRleE9mKG4pOy0xIT09dCYmdDxhJiYobz1udWxsKTtpPWEtMX1lbHNlIGk9YS5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKHIpO2Vsc2V7aWYoIW58fG49PT1yKXJldHVybiExO2k9cy5jb250ZW50QXJlYS5jaGlsZHJlbi5pbmRleE9mKG4pLTE7bz1zPT09YT9udWxsOnN9ZVtqb10udGFyZ2V0PW87ZVtqb10uaW5kZXg9aTtyZXR1cm4hMH1mdW5jdGlvbiBoYW5kbGVPdmVyZmxvdyhlLHQsbil7Y29uc3QgYT1lW05vXSgpLHI9YVtqb10ubm9MYXlvdXRGYWlsdXJlLHM9dFtIb107dFtIb109KCk9PmU7YVtqb10ubm9MYXlvdXRGYWlsdXJlPSEwO2NvbnN0IGk9dFt3bF0obik7ZVtvb10oaS5odG1sLGkuYmJveCk7YVtqb10ubm9MYXlvdXRGYWlsdXJlPXI7dFtIb109c31jbGFzcyBBcHBlYXJhbmNlRmlsdGVyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJhcHBlYXJhbmNlRmlsdGVyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBBcmMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImFyYyIsITApO3RoaXMuY2lyY3VsYXI9Z2V0SW50ZWdlcih7ZGF0YTplLmNpcmN1bGFyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zdGFydEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3RhcnRBbmdsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4hMH0pO3RoaXMuc3dlZXBBbmdsZT1nZXRGbG9hdCh7ZGF0YTplLnN3ZWVwQW5nbGUsZGVmYXVsdFZhbHVlOjM2MCx2YWxpZGF0ZTplPT4hMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVkZ2U9bnVsbDt0aGlzLmZpbGw9bnVsbH1bd2xdKCl7Y29uc3QgZT10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSx0PWVba2xdKCksbj1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihuLHRoaXMuZmlsbFtrbF0oKSk6bi5maWxsPSJ0cmFuc3BhcmVudCI7bi5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtuLnN0cm9rZT10LmNvbG9yO2xldCBhO2NvbnN0IHI9e3htbG5zOm8sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlhPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpvLGN4OiI1MCUiLGN5OiI1MCUiLHJ4OiI1MCUiLHJ5OiI1MCUiLHN0eWxlOm59fTtlbHNle2NvbnN0IGU9dGhpcy5zdGFydEFuZ2xlKk1hdGguUEkvMTgwLHQ9dGhpcy5zd2VlcEFuZ2xlKk1hdGguUEkvMTgwLHM9dGhpcy5zd2VlcEFuZ2xlPjE4MD8xOjAsW2ksbCxmLGNdPVs1MCooMStNYXRoLmNvcyhlKSksNTAqKDEtTWF0aC5zaW4oZSkpLDUwKigxK01hdGguY29zKGUrdCkpLDUwKigxLU1hdGguc2luKGUrdCkpXTthPXtuYW1lOiJwYXRoIixhdHRyaWJ1dGVzOnt4bWxuczpvLGQ6YE0gJHtpfSAke2x9IEEgNTAgNTAgMCAke3N9IDAgJHtmfSAke2N9YCx2ZWN0b3JFZmZlY3Q6Im5vbi1zY2FsaW5nLXN0cm9rZSIsc3R5bGU6bn19O09iamVjdC5hc3NpZ24ocix7dmlld0JveDoiMCAwIDEwMCAxMDAiLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUifSl9Y29uc3Qgcz17bmFtZToic3ZnIixjaGlsZHJlbjpbYV0sYXR0cmlidXRlczpyfTtpZihoYXNNYXJnaW4odGhpc1tNb10oKVtNb10oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltzXX0pO3MuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Mocyl9fWNsYXNzIEFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImFyZWEiLCEwKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fSpbQm9dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W1lvXSgpe3JldHVybiEwfVtXb10oKXtyZXR1cm4hMH1bb29dKGUsdCl7Y29uc3RbbixhLHIsc109dDt0aGlzW2pvXS53aWR0aD1NYXRoLm1heCh0aGlzW2pvXS53aWR0aCxuK3IpO3RoaXNbam9dLmhlaWdodD1NYXRoLm1heCh0aGlzW2pvXS5oZWlnaHQsYStzKTt0aGlzW2pvXS5jaGlsZHJlbi5wdXNoKGUpfVtTb10oKXtyZXR1cm4gdGhpc1tqb10uYXZhaWxhYmxlU3BhY2V9W3dsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywicG9zaXRpb24iKSxuPXtzdHlsZTp0LGlkOnRoaXNbeWxdLGNsYXNzOlsieGZhQXJlYSJdfTtpc1ByaW50T25seSh0aGlzKSYmbi5jbGFzcy5wdXNoKCJ4ZmFQcmludE9ubHkiKTt0aGlzLm5hbWUmJihuLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBhPVtdO3RoaXNbam9dPXtjaGlsZHJlbjphLHdpZHRoOjAsaGVpZ2h0OjAsYXZhaWxhYmxlU3BhY2U6ZX07Y29uc3Qgcj10aGlzW2ZvXSh7ZmlsdGVyOm5ldyBTZXQoWyJhcmVhIiwiZHJhdyIsImZpZWxkIiwiZXhjbEdyb3VwIiwic3ViZm9ybSIsInN1YmZvcm1TZXQiXSksaW5jbHVkZTohMH0pO2lmKCFyLnN1Y2Nlc3Mpe2lmKHIuaXNCcmVhaygpKXJldHVybiByO2RlbGV0ZSB0aGlzW2pvXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXNbam9dLndpZHRoKTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpc1tqb10uaGVpZ2h0KTtjb25zdCBzPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bixjaGlsZHJlbjphfSxpPVt0aGlzLngsdGhpcy55LHRoaXNbam9dLndpZHRoLHRoaXNbam9dLmhlaWdodF07ZGVsZXRlIHRoaXNbam9dO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MocyxpKX19Y2xhc3MgQXNzaXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJhc3Npc3QiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucm9sZT1lLnJvbGV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNwZWFrPW51bGw7dGhpcy50b29sVGlwPW51bGx9W3dsXSgpe3JldHVybiB0aGlzLnRvb2xUaXA/Lltnb118fG51bGx9fWNsYXNzIEJhcmNvZGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImJhcmNvZGUiLCEwKTt0aGlzLmNoYXJFbmNvZGluZz1nZXRLZXl3b3JkKHtkYXRhOmUuY2hhckVuY29kaW5nP2UuY2hhckVuY29kaW5nLnRvTG93ZXJDYXNlKCk6IiIsZGVmYXVsdFZhbHVlOiIiLHZhbGlkYXRlOmU9PlsidXRmLTgiLCJiaWctZml2ZSIsImZvbnRzcGVjaWZpYyIsImdiayIsImdiLTE4MDMwIiwiZ2ItMjMxMiIsImtzYy01NjAxIiwibm9uZSIsInNoaWZ0LWppcyIsInVjcy0yIiwidXRmLTE2Il0uaW5jbHVkZXMoZSl8fGUubWF0Y2goL2lzby04ODU5LVxkezJ9Lyl9KTt0aGlzLmNoZWNrc3VtPWdldFN0cmluZ09wdGlvbihlLmNoZWNrc3VtLFsibm9uZSIsIjFtb2QxMCIsIjFtb2QxMF8xbW9kMTEiLCIybW9kMTAiLCJhdXRvIl0pO3RoaXMuZGF0YUNvbHVtbkNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5kYXRhQ29sdW1uQ291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFMZW5ndGg9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFMZW5ndGgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmRhdGFQcmVwPWdldFN0cmluZ09wdGlvbihlLmRhdGFQcmVwLFsibm9uZSIsImZsYXRlQ29tcHJlc3MiXSk7dGhpcy5kYXRhUm93Q291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFSb3dDb3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZW5kQ2hhcj1lLmVuZENoYXJ8fCIiO3RoaXMuZXJyb3JDb3JyZWN0aW9uTGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmVycm9yQ29ycmVjdGlvbkxldmVsLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wJiZlPD04fSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1vZHVsZUhlaWdodD1nZXRNZWFzdXJlbWVudChlLm1vZHVsZUhlaWdodCwiNW1tIik7dGhpcy5tb2R1bGVXaWR0aD1nZXRNZWFzdXJlbWVudChlLm1vZHVsZVdpZHRoLCIwLjI1bW0iKTt0aGlzLnByaW50Q2hlY2tEaWdpdD1nZXRJbnRlZ2VyKHtkYXRhOmUucHJpbnRDaGVja0RpZ2l0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yb3dDb2x1bW5SYXRpbz1nZXRSYXRpbyhlLnJvd0NvbHVtblJhdGlvKTt0aGlzLnN0YXJ0Q2hhcj1lLnN0YXJ0Q2hhcnx8IiI7dGhpcy50ZXh0TG9jYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUudGV4dExvY2F0aW9uLFsiYmVsb3ciLCJhYm92ZSIsImFib3ZlRW1iZWRkZWQiLCJiZWxvd0VtYmVkZGVkIiwibm9uZSJdKTt0aGlzLnRydW5jYXRlPWdldEludGVnZXIoe2RhdGE6ZS50cnVuY2F0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlP2UudHlwZS50b0xvd2VyQ2FzZSgpOiIiLFsiYXp0ZWMiLCJjb2RhYmFyIiwiY29kZTJvZjVpbmR1c3RyaWFsIiwiY29kZTJvZjVpbnRlcmxlYXZlZCIsImNvZGUyb2Y1bWF0cml4IiwiY29kZTJvZjVzdGFuZGFyZCIsImNvZGUzb2Y5IiwiY29kZTNvZjlleHRlbmRlZCIsImNvZGUxMSIsImNvZGU0OSIsImNvZGU5MyIsImNvZGUxMjgiLCJjb2RlMTI4YSIsImNvZGUxMjhiIiwiY29kZTEyOGMiLCJjb2RlMTI4c3NjYyIsImRhdGFtYXRyaXgiLCJlYW44IiwiZWFuOGFkZDIiLCJlYW44YWRkNSIsImVhbjEzIiwiZWFuMTNhZGQyIiwiZWFuMTNhZGQ1IiwiZWFuMTNwd2NkIiwiZmltIiwibG9nbWFycyIsIm1heGljb2RlIiwibXNpIiwicGRmNDE3IiwicGRmNDE3bWFjcm8iLCJwbGVzc2V5IiwicG9zdGF1c2N1c3QyIiwicG9zdGF1c2N1c3QzIiwicG9zdGF1c3JlcGx5cGFpZCIsInBvc3RhdXNzdGFuZGFyZCIsInBvc3R1a3JtNHNjYyIsInBvc3R1c2RwYmMiLCJwb3N0dXNpbWIiLCJwb3N0dXNzdGFuZGFyZCIsInBvc3R1czV6aXAiLCJxcmNvZGUiLCJyZmlkIiwicnNzMTQiLCJyc3MxNGV4cGFuZGVkIiwicnNzMTRsaW1pdGVkIiwicnNzMTRzdGFja2VkIiwicnNzMTRzdGFja2Vkb21uaSIsInJzczE0dHJ1bmNhdGVkIiwidGVsZXBlbiIsInVjYzEyOCIsInVjYzEyOHJhbmRvbSIsInVjYzEyOHNzY2MiLCJ1cGNhIiwidXBjYWFkZDIiLCJ1cGNhYWRkNSIsInVwY2Fwd2NkIiwidXBjZSIsInVwY2VhZGQyIiwidXBjZWFkZDUiLCJ1cGNlYW4yIiwidXBjZWFuNSIsInVwc21heGljb2RlIl0pO3RoaXMudXBzTW9kZT1nZXRTdHJpbmdPcHRpb24oZS51cHNNb2RlLFsidXNDYXJyaWVyIiwiaW50ZXJuYXRpb25hbENhcnJpZXIiLCJzZWN1cmVTeW1ib2wiLCJzdGFuZGFyZFN5bWJvbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53aWRlTmFycm93UmF0aW89Z2V0UmF0aW8oZS53aWRlTmFycm93UmF0aW8pO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJpbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImJpbmQiLCEwKTt0aGlzLm1hdGNoPWdldFN0cmluZ09wdGlvbihlLm1hdGNoLFsib25jZSIsImRhdGFSZWYiLCJnbG9iYWwiLCJub25lIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQmluZEl0ZW1zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJiaW5kSXRlbXMiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmxhYmVsUmVmPWUubGFiZWxSZWZ8fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnZhbHVlUmVmPWUudmFsdWVSZWZ8fCIifX1jbGFzcyBCb29rZW5kIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJib29rZW5kIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBCb29sZWFuRWxlbWVudCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJib29sZWFuIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3dsXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwoMT09PXRoaXNbZ29dPyIxIjoiMCIpfX1jbGFzcyBCb3JkZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImJvcmRlciIsITApO3RoaXMuYnJlYWs9Z2V0U3RyaW5nT3B0aW9uKGUuYnJlYWssWyJjbG9zZSIsIm9wZW4iXSk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsO3RoaXMubWFyZ2luPW51bGx9W0ZvXSgpe2lmKCF0aGlzW2pvXSl7Y29uc3QgZT10aGlzLmVkZ2UuY2hpbGRyZW4uc2xpY2UoKTtpZihlLmxlbmd0aDw0KXtjb25zdCB0PWUuYXQoLTEpfHxuZXcgRWRnZSh7fSk7Zm9yKGxldCBuPWUubGVuZ3RoO248NDtuKyspZS5wdXNoKHQpfWNvbnN0IHQ9ZS5tYXAoZT0+ZS50aGlja25lc3MpLG49WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXtuWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O25bMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDtuWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O25bM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbam9dPXt3aWR0aHM6dCxpbnNldHM6bixlZGdlczplfX1yZXR1cm4gdGhpc1tqb119W2tsXSgpe2NvbnN0e2VkZ2VzOmV9PXRoaXNbRm9dKCksdD1lLm1hcChlPT57Y29uc3QgdD1lW2tsXSgpO3QuY29sb3J8fD0iIzAwMDAwMCI7cmV0dXJuIHR9KSxuPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5tYXJnaW4mJk9iamVjdC5hc3NpZ24obix0aGlzLm1hcmdpbltrbF0oKSk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZSYmT2JqZWN0LmFzc2lnbihuLHRoaXMuZmlsbFtrbF0oKSk7aWYodGhpcy5jb3JuZXIuY2hpbGRyZW4uc29tZShlPT4wIT09ZS5yYWRpdXMpKXtjb25zdCBlPXRoaXMuY29ybmVyLmNoaWxkcmVuLm1hcChlPT5lW2tsXSgpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IG49ZS5sZW5ndGg7bjw0O24rKyllLnB1c2godCl9bi5ib3JkZXJSYWRpdXM9ZS5tYXAoZT0+ZS5yYWRpdXMpLmpvaW4oIiAiKX1zd2l0Y2godGhpcy5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOmNhc2UiaGlkZGVuIjpuLmJvcmRlclN0eWxlPSIiO2JyZWFrO2Nhc2UiaW5hY3RpdmUiOm4uYm9yZGVyU3R5bGU9Im5vbmUiO2JyZWFrO2RlZmF1bHQ6bi5ib3JkZXJTdHlsZT10Lm1hcChlPT5lLnN0eWxlKS5qb2luKCIgIil9bi5ib3JkZXJXaWR0aD10Lm1hcChlPT5lLndpZHRoKS5qb2luKCIgIik7bi5ib3JkZXJDb2xvcj10Lm1hcChlPT5lLmNvbG9yKS5qb2luKCIgIik7cmV0dXJuIG59fWNsYXNzIEJyZWFrIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJicmVhayIsITApO3RoaXMuYWZ0ZXI9Z2V0U3RyaW5nT3B0aW9uKGUuYWZ0ZXIsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSIsInBhZ2VFdmVuIiwicGFnZU9kZCJdKTt0aGlzLmFmdGVyVGFyZ2V0PWUuYWZ0ZXJUYXJnZXR8fCIiO3RoaXMuYmVmb3JlPWdldFN0cmluZ09wdGlvbihlLmJlZm9yZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYmVmb3JlVGFyZ2V0PWUuYmVmb3JlVGFyZ2V0fHwiIjt0aGlzLmJvb2tlbmRMZWFkZXI9ZS5ib29rZW5kTGVhZGVyfHwiIjt0aGlzLmJvb2tlbmRUcmFpbGVyPWUuYm9va2VuZFRyYWlsZXJ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVyZmxvd0xlYWRlcj1lLm92ZXJmbG93TGVhZGVyfHwiIjt0aGlzLm92ZXJmbG93VGFyZ2V0PWUub3ZlcmZsb3dUYXJnZXR8fCIiO3RoaXMub3ZlcmZsb3dUcmFpbGVyPWUub3ZlcmZsb3dUcmFpbGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCcmVha0FmdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJicmVha0FmdGVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgQnJlYWtCZWZvcmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImJyZWFrQmVmb3JlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy5zdGFydE5ldz1nZXRJbnRlZ2VyKHtkYXRhOmUuc3RhcnROZXcsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50YXJnZXRUeXBlPWdldFN0cmluZ09wdGlvbihlLnRhcmdldFR5cGUsWyJhdXRvIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdKTt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zY3JpcHQ9bnVsbH1bd2xdKGUpe3RoaXNbam9dPXt9O3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9fWNsYXNzIEJ1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiYnV0dG9uIiwhMCk7dGhpcy5oaWdobGlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGlnaGxpZ2h0LFsiaW52ZXJ0ZWQiLCJub25lIiwib3V0bGluZSIsInB1c2giXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bd2xdKGUpe2NvbnN0IHQ9dGhpc1tNb10oKVtNb10oKSxuPXtuYW1lOiJidXR0b24iLGF0dHJpYnV0ZXM6e2lkOnRoaXNbeWxdLGNsYXNzOlsieGZhQnV0dG9uIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZiB0LmV2ZW50LmNoaWxkcmVuKXtpZigiY2xpY2siIT09ZS5hY3Rpdml0eXx8IWUuc2NyaXB0KWNvbnRpbnVlO2NvbnN0IHQ9cmVjb3ZlckpzVVJMKGUuc2NyaXB0W2dvXSk7aWYoIXQpY29udGludWU7Y29uc3QgYT1maXhVUkwodC51cmwpO2EmJm4uY2hpbGRyZW4ucHVzaCh7bmFtZToiYSIsYXR0cmlidXRlczp7aWQ6ImxpbmsiK3RoaXNbeWxdLGhyZWY6YSxuZXdXaW5kb3c6dC5uZXdXaW5kb3csY2xhc3M6WyJ4ZmFMaW5rIl0sc3R5bGU6e319LGNoaWxkcmVuOltdfSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhuKX19Y2xhc3MgQ2FsY3VsYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJjYWxjdWxhdGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0U3RyaW5nT3B0aW9uKGUub3ZlcnJpZGUsWyJkaXNhYmxlZCIsImVycm9yIiwiaWdub3JlIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBDYXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJjYXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBsYWNlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5wbGFjZW1lbnQsWyJsZWZ0IiwiYm90dG9tIiwiaW5saW5lIiwicmlnaHQiLCJ0b3AiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlc2VydmU9TWF0aC5jZWlsKGdldE1lYXN1cmVtZW50KGUucmVzZXJ2ZSkpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy52YWx1ZT1udWxsfVtwbF0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W0ZvXShlKXtpZighdGhpc1tqb10pe2xldHt3aWR0aDp0LGhlaWdodDpufT1lO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dD10aGlzLnJlc2VydmU8PTA/dDp0aGlzLnJlc2VydmU7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpuPXRoaXMucmVzZXJ2ZTw9MD9uOnRoaXMucmVzZXJ2ZX10aGlzW2pvXT1sYXlvdXROb2RlKHRoaXMse3dpZHRoOnQsaGVpZ2h0Om59KX1yZXR1cm4gdGhpc1tqb119W3dsXShlKXtpZighdGhpcy52YWx1ZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzW29sXSgpO2NvbnN0IHQ9dGhpcy52YWx1ZVt3bF0oZSkuaHRtbDtpZighdCl7dGhpc1tpbF0oKTtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCBuPXRoaXMucmVzZXJ2ZTtpZih0aGlzLnJlc2VydmU8PTApe2NvbnN0e3c6dCxoOm59PXRoaXNbRm9dKGUpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dGhpcy5yZXNlcnZlPXQ7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjp0aGlzLnJlc2VydmU9bn19Y29uc3QgYT1bXTsic3RyaW5nIj09dHlwZW9mIHQ/YS5wdXNoKHtuYW1lOiIjdGV4dCIsdmFsdWU6dH0pOmEucHVzaCh0KTtjb25zdCByPXRvU3R5bGUodGhpcywiZm9udCIsIm1hcmdpbiIsInZpc2liaWxpdHkiKTtzd2l0Y2godGhpcy5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6dGhpcy5yZXNlcnZlPjAmJihyLndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLnJlc2VydmUpKTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT4wJiYoci5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpfXNldFBhcmEodGhpcyxudWxsLHQpO3RoaXNbaWxdKCk7dGhpcy5yZXNlcnZlPW47cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTpyLGNsYXNzOlsieGZhQ2FwdGlvbiJdfSxjaGlsZHJlbjphfSl9fWNsYXNzIENlcnRpZmljYXRlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJjZXJ0aWZpY2F0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDZXJ0aWZpY2F0ZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImNlcnRpZmljYXRlcyIsITApO3RoaXMuY3JlZGVudGlhbFNlcnZlclBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5jcmVkZW50aWFsU2VydmVyUG9saWN5LFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXJsPWUudXJsfHwiIjt0aGlzLnVybFBvbGljeT1lLnVybFBvbGljeXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbj1udWxsO3RoaXMuaXNzdWVycz1udWxsO3RoaXMua2V5VXNhZ2U9bnVsbDt0aGlzLm9pZHM9bnVsbDt0aGlzLnNpZ25pbmc9bnVsbDt0aGlzLnN1YmplY3RETnM9bnVsbH19Y2xhc3MgQ2hlY2tCdXR0b24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImNoZWNrQnV0dG9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1hcms9Z2V0U3RyaW5nT3B0aW9uKGUubWFyayxbImRlZmF1bHQiLCJjaGVjayIsImNpcmNsZSIsImNyb3NzIiwiZGlhbW9uZCIsInNxdWFyZSIsInN0YXIiXSk7dGhpcy5zaGFwZT1nZXRTdHJpbmdPcHRpb24oZS5zaGFwZSxbInNxdWFyZSIsInJvdW5kIl0pO3RoaXMuc2l6ZT1nZXRNZWFzdXJlbWVudChlLnNpemUsIjEwcHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3dsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywibWFyZ2luIiksbj1tZWFzdXJlVG9TdHJpbmcodGhpcy5zaXplKTt0LndpZHRoPXQuaGVpZ2h0PW47bGV0IGEscixzO2NvbnN0IGk9dGhpc1tNb10oKVtNb10oKSxvPWkuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZpLml0ZW1zLmNoaWxkcmVuWzBdW3dsXSgpLmh0bWx8fFtdLGw9e29uOih2b2lkIDAhPT1vWzBdP29bMF06Im9uIikudG9TdHJpbmcoKSxvZmY6KHZvaWQgMCE9PW9bMV0/b1sxXToib2ZmIikudG9TdHJpbmcoKX0sZj0oaS52YWx1ZT8uW2dsXSgpfHwib2ZmIik9PT1sLm9ufHx2b2lkIDAsYz1pW0hvXSgpLGg9aVt5bF07bGV0IHU7aWYoYyBpbnN0YW5jZW9mIEV4Y2xHcm91cCl7cz1jW3lsXTthPSJyYWRpbyI7cj0ieGZhUmFkaW8iO3U9Y1tib10/Llt5bF18fGNbeWxdfWVsc2V7YT0iY2hlY2tib3giO3I9InhmYUNoZWNrYm94Ijt1PWlbYm9dPy5beWxdfHxpW3lsXX1jb25zdCBtPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W3JdLHN0eWxlOnQsZmllbGRJZDpoLGRhdGFJZDp1LHR5cGU6YSxjaGVja2VkOmYseGZhT246bC5vbix4ZmFPZmY6bC5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChpKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtzJiYobS5hdHRyaWJ1dGVzLm5hbWU9cyk7aWYoaXNSZXF1aXJlZChpKSl7bS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7bS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlttXX0pfX1jbGFzcyBDaG9pY2VMaXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj1nZXRTdHJpbmdPcHRpb24oZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49Z2V0U3RyaW5nT3B0aW9uKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PWdldEludGVnZXIoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3dsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwibWFyZ2luIiksbj10aGlzW01vXSgpW01vXSgpLGE9e2ZvbnRTaXplOmBjYWxjKCR7bi5mb250Py5zaXplfHwxMH1weCAqIHZhcigtLXRvdGFsLXNjYWxlLWZhY3RvcikpYH0scj1bXTtpZihuLml0ZW1zLmNoaWxkcmVuLmxlbmd0aD4wKXtjb25zdCBlPW4uaXRlbXM7bGV0IHQ9MCxzPTA7aWYoMj09PWUuY2hpbGRyZW4ubGVuZ3RoKXt0PWUuY2hpbGRyZW5bMF0uc2F2ZTtzPTEtdH1jb25zdCBpPWUuY2hpbGRyZW5bdF1bd2xdKCkuaHRtbCxvPWUuY2hpbGRyZW5bc11bd2xdKCkuaHRtbDtsZXQgbD0hMTtjb25zdCBmPW4udmFsdWU/LltnbF0oKXx8IiI7Zm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOm9bZV18fGlbZV0sc3R5bGU6YX0sdmFsdWU6aVtlXX07b1tlXT09PWYmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9bD0hMCk7ci5wdXNoKHQpfWx8fHIuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IHM9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDpuW3lsXSxkYXRhSWQ6bltib10/Llt5bF18fG5beWxdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChuKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQobikpe3NbImFyaWEtcmVxdWlyZWQiXT0hMDtzLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihzLm11bHRpcGxlPSEwKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbe25hbWU6InNlbGVjdCIsY2hpbGRyZW46cixhdHRyaWJ1dGVzOnN9XX0pfX1jbGFzcyBDb2xvciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT1nZXRTdHJpbmdPcHRpb24oZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT9mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W24sYSxyXT10O2lmKCFlKXJldHVybntyOm4sZzphLGI6cn07Y29uc3Qgcz1lLnNwbGl0KCIsIiwzKS5tYXAoZT0+TWF0aENsYW1wKHBhcnNlSW50KGUudHJpbSgpLDEwKSwwLDI1NSkpLm1hcChlPT5pc05hTihlKT8wOmUpO2lmKHMubGVuZ3RoPDMpcmV0dXJue3I6bixnOmEsYjpyfTtbbixhLHJdPXM7cmV0dXJue3I6bixnOmEsYjpyfX0oZS52YWx1ZSk6IiI7dGhpcy5leHRyYXM9bnVsbH1bX29dKCl7cmV0dXJuITF9W2tsXSgpe3JldHVybiB0aGlzLnZhbHVlP1V0aWwubWFrZUhleENvbG9yKHRoaXMudmFsdWUucix0aGlzLnZhbHVlLmcsdGhpcy52YWx1ZS5iKTpudWxsfX1jbGFzcyBDb21iIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9Z2V0SW50ZWdlcih7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiY29ubmVjdCIsITApO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNhZ2U9Z2V0U3RyaW5nT3B0aW9uKGUudXNhZ2UsWyJleHBvcnRBbmRJbXBvcnQiLCJleHBvcnRPbmx5IiwiaW1wb3J0T25seSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIENvbnRlbnRBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJjb250ZW50QXJlYSIsITApO3RoaXMuaD1nZXRNZWFzdXJlbWVudChlLmgpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWdldE1lYXN1cmVtZW50KGUudyk7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bd2xdKGUpe2NvbnN0IHQ9e2xlZnQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMueCksdG9wOm1lYXN1cmVUb1N0cmluZyh0aGlzLnkpLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLncpLGhlaWdodDptZWFzdXJlVG9TdHJpbmcodGhpcy5oKX0sbj1bInhmYUNvbnRlbnRhcmVhIl07aXNQcmludE9ubHkodGhpcykmJm4ucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOntzdHlsZTp0LGNsYXNzOm4saWQ6dGhpc1t5bF19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiY29ybmVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmludmVydGVkPWdldEludGVnZXIoe2RhdGE6ZS5pbnZlcnRlZCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuam9pbj1nZXRTdHJpbmdPcHRpb24oZS5qb2luLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJhZGl1cz1nZXRNZWFzdXJlbWVudChlLnJhZGl1cyk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2tsXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9bWVhc3VyZVRvU3RyaW5nKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImRhdGUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1ba29dKCl7Y29uc3QgZT10aGlzW2dvXS50cmltKCk7dGhpc1tnb109ZT9uZXcgRGF0ZShlKTpudWxsfVt3bF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbZ29dP3RoaXNbZ29dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImRhdGVUaW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2tvXSgpe2NvbnN0IGU9dGhpc1tnb10udHJpbSgpO3RoaXNbZ29dPWU/bmV3IERhdGUoZSk6bnVsbH1bd2xdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2dvXT90aGlzW2dvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWVFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPWdldFN0cmluZ09wdGlvbihlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd2xdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksbj10aGlzW01vXSgpW01vXSgpLGE9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOm5beWxdLGRhdGFJZDpuW2JvXT8uW3lsXXx8blt5bF0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwobiksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChuKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlthXX0pfX1jbGFzcyBEZWNpbWFsIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPWdldEludGVnZXIoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1ba29dKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbZ29dLnRyaW0oKSk7dGhpc1tnb109aXNOYU4oZSk/bnVsbDplfVt3bF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2dvXT90aGlzW2dvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJkZWZhdWx0VWkiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBEZXNjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJkZXNjIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEaWdlc3RNZXRob2QgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImRpZ2VzdE1ldGhvZCIsWyIiLCJTSEExIiwiU0hBMjU2IiwiU0hBNTEyIiwiUklQRU1EMTYwIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBEaWdlc3RNZXRob2RzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRHJhdyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bcGxdKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVt3bF0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO3RoaXNbb2xdKCk7Y29uc3QgdD10aGlzLncsbj10aGlzLmgse3c6YSxoOnIsaXNCcm9rZW46c309bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKGEmJiIiPT09dGhpcy53KXtpZihzJiZ0aGlzW0hvXSgpWyRvXSgpKXt0aGlzW2lsXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dGhpcy53PWF9ciYmIiI9PT10aGlzLmgmJih0aGlzLmg9cik7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXt0aGlzLnc9dDt0aGlzLmg9bjt0aGlzW2lsXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtjb25zdCBpPXRvU3R5bGUodGhpcywiZm9udCIsImhBbGlnbiIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsImJvcmRlciIsIm1hcmdpbiIpO3NldE1pbk1heERpbWVuc2lvbnModGhpcyxpKTtpZihpLm1hcmdpbil7aS5wYWRkaW5nPWkubWFyZ2luO2RlbGV0ZSBpLm1hcmdpbn1jb25zdCBvPVsieGZhRHJhdyJdO3RoaXMuZm9udCYmby5wdXNoKCJ4ZmFGb250Iik7aXNQcmludE9ubHkodGhpcykmJm8ucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgbD17c3R5bGU6aSxpZDp0aGlzW3lsXSxjbGFzczpvfTt0aGlzLm5hbWUmJihsLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBmPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bCxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxsKTtjb25zdCBjPWNvbXB1dGVCYm94KHRoaXMsZixlKSxoPXRoaXMudmFsdWU/dGhpcy52YWx1ZVt3bF0oZSkuaHRtbDpudWxsO2lmKG51bGw9PT1oKXt0aGlzLnc9dDt0aGlzLmg9bjt0aGlzW2lsXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGMpfWYuY2hpbGRyZW4ucHVzaChoKTtzZXRQYXJhKHRoaXMsaSxoKTt0aGlzLnc9dDt0aGlzLmg9bjt0aGlzW2lsXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGMpfX1jbGFzcyBFZGdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJlZGdlIiwhMCk7dGhpcy5jYXA9Z2V0U3RyaW5nT3B0aW9uKGUuY2FwLFsic3F1YXJlIiwiYnV0dCIsInJvdW5kIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnN0cm9rZT1nZXRTdHJpbmdPcHRpb24oZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPWdldE1lYXN1cmVtZW50KGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1ba2xdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6bWVhc3VyZVRvU3RyaW5nKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jba2xdKCk6IiMwMDAwMDAiLHN0eWxlOiIifSk7aWYoInZpc2libGUiIT09dGhpcy5wcmVzZW5jZSllLnN0eWxlPSJub25lIjtlbHNlIHN3aXRjaCh0aGlzLnN0cm9rZSl7Y2FzZSJzb2xpZCI6ZS5zdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UiZGFzaERvdCI6Y2FzZSJkYXNoRG90RG90IjpjYXNlImRhc2hlZCI6ZS5zdHlsZT0iZGFzaGVkIjticmVhaztjYXNlImRvdHRlZCI6ZS5zdHlsZT0iZG90dGVkIjticmVhaztjYXNlImVtYm9zc2VkIjplLnN0eWxlPSJyaWRnZSI7YnJlYWs7Y2FzZSJldGNoZWQiOmUuc3R5bGU9Imdyb292ZSI7YnJlYWs7Y2FzZSJsb3dlcmVkIjplLnN0eWxlPSJpbnNldCI7YnJlYWs7Y2FzZSJyYWlzZWQiOmUuc3R5bGU9Im91dHNldCJ9cmV0dXJuIGV9fWNsYXNzIEVuY29kaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImVuY29kaW5ncyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiZW5jcnlwdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bnVsbH19Y2xhc3MgRW5jcnlwdERhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImVuY3J5cHREYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJlbmNyeXB0IiwiZGVjcnlwdCJdKTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBFbmNyeXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJlbmNyeXB0aW9uTWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiZXZlbnQiLCEwKTt0aGlzLmFjdGl2aXR5PWdldFN0cmluZ09wdGlvbihlLmFjdGl2aXR5LFsiY2xpY2siLCJjaGFuZ2UiLCJkb2NDbG9zZSIsImRvY1JlYWR5IiwiZW50ZXIiLCJleGl0IiwiZnVsbCIsImluZGV4Q2hhbmdlIiwiaW5pdGlhbGl6ZSIsIm1vdXNlRG93biIsIm1vdXNlRW50ZXIiLCJtb3VzZUV4aXQiLCJtb3VzZVVwIiwicG9zdEV4ZWN1dGUiLCJwb3N0T3BlbiIsInBvc3RQcmludCIsInBvc3RTYXZlIiwicG9zdFNpZ24iLCJwb3N0U3VibWl0IiwicHJlRXhlY3V0ZSIsInByZU9wZW4iLCJwcmVQcmludCIsInByZVNhdmUiLCJwcmVTaWduIiwicHJlU3VibWl0IiwicmVhZHkiLCJ2YWxpZGF0aW9uU3RhdGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpc3Rlbj1nZXRTdHJpbmdPcHRpb24oZS5saXN0ZW4sWyJyZWZPbmx5IiwicmVmQW5kRGVzY2VuZGVudHMiXSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZW5jcnlwdERhdGE9bnVsbDt0aGlzLmV4ZWN1dGU9bnVsbDt0aGlzLnNjcmlwdD1udWxsO3RoaXMuc2lnbkRhdGE9bnVsbDt0aGlzLnN1Ym1pdD1udWxsfX1jbGFzcyBFeERhdGEgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJleERhdGEiKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhMZW5ndGg9Z2V0SW50ZWdlcih7ZGF0YTplLm1heExlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49LTF9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJub25lIiwiYmFzZTY0IiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1VvXSgpe3JldHVybiJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZX1bbmxdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtab109PT12bC54aHRtbC5pZCl7dGhpc1tnb109ZTtyZXR1cm4hMH1pZigidGV4dC94bWwiPT09dGhpcy5jb250ZW50VHlwZSl7dGhpc1tnb109ZTtyZXR1cm4hMH1yZXR1cm4hMX1bd2xdKGUpe3JldHVybiJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmdGhpc1tnb10/dGhpc1tnb11bd2xdKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJleE9iamVjdCIsITApO3RoaXMuYXJjaGl2ZT1lLmFyY2hpdmV8fCIiO3RoaXMuY2xhc3NJZD1lLmNsYXNzSWR8fCIiO3RoaXMuY29kZUJhc2U9ZS5jb2RlQmFzZXx8IiI7dGhpcy5jb2RlVHlwZT1lLmNvZGVUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXhjbEdyb3VwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9Z2V0U3RyaW5nT3B0aW9uKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bV29dKCl7cmV0dXJuITB9W19vXSgpe3JldHVybiEwfVtwbF0oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W2xvXShlKTt0LnZhbHVlPWV9dC52YWx1ZVtwbF0oZSl9fVskb10oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1tqb10uYXR0ZW1wdCYmdGhpc1tqb10ubnVtYmVySW5MaW5lPjB8fHRoaXNbTW9dKClbJG9dKCl9W1ZvXSgpe2NvbnN0IGU9dGhpc1tIb10oKTtpZighZVtWb10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW2pvXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW2pvXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW2pvXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW2pvXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1tqb10uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1beW9dKCl7cmV0dXJuIGZsdXNoSFRNTCh0aGlzKX1bb29dKGUsdCl7YWRkSFRNTCh0aGlzLGUsdCl9W1NvXSgpe3JldHVybiBnZXRBdmFpbGFibGVTcGFjZSh0aGlzKX1bd2xdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLG49e2lkOnRoaXNbeWxdLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxuLmNsYXNzKTt0aGlzW2pvXXx8PU9iamVjdC5jcmVhdGUobnVsbCk7T2JqZWN0LmFzc2lnbih0aGlzW2pvXSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOm4sYXR0ZW1wdDowLGxpbmU6bnVsbCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbVm9dKCk7YXx8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgcj1uZXcgU2V0KFsiZmllbGQiXSk7aWYodGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXtjb25zdCBlPXRoaXNbSG9dKCkuY29sdW1uV2lkdGhzO2lmKEFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjApe3RoaXNbam9dLmNvbHVtbldpZHRocz1lO3RoaXNbam9dLmN1cnJlbnRDb2x1bW49MH19Y29uc3Qgcz10b1N0eWxlKHRoaXMsImFuY2hvclR5cGUiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJwcmVzZW5jZSIsImJvcmRlciIsIm1hcmdpbiIsImhBbGlnbiIpLGk9WyJ4ZmFFeGNsZ3JvdXAiXSxvPWxheW91dENsYXNzKHRoaXMpO28mJmkucHVzaChvKTtpc1ByaW50T25seSh0aGlzKSYmaS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtuLnN0eWxlPXM7bi5jbGFzcz1pO3RoaXMubmFtZSYmKG4ueGZhTmFtZT10aGlzLm5hbWUpO3RoaXNbb2xdKCk7Y29uc3QgbD0ibHItdGIiPT09dGhpcy5sYXlvdXR8fCJybC10YiI9PT10aGlzLmxheW91dCxmPWw/MjoxO2Zvcig7dGhpc1tqb10uYXR0ZW1wdDxmO3RoaXNbam9dLmF0dGVtcHQrKyl7bCYmMT09PXRoaXNbam9dLmF0dGVtcHQmJih0aGlzW2pvXS5udW1iZXJJbkxpbmU9MCk7Y29uc3QgZT10aGlzW2ZvXSh7ZmlsdGVyOnIsaW5jbHVkZTohMH0pO2lmKGUuc3VjY2VzcylicmVhaztpZihlLmlzQnJlYWsoKSl7dGhpc1tpbF0oKTtyZXR1cm4gZX1pZihsJiYwPT09dGhpc1tqb10uYXR0ZW1wdCYmMD09PXRoaXNbam9dLm51bWJlckluTGluZSYmIXRoaXNbTm9dKClbam9dLm5vTGF5b3V0RmFpbHVyZSl7dGhpc1tqb10uYXR0ZW1wdD1mO2JyZWFrfX10aGlzW2lsXSgpO2F8fHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYodGhpc1tqb10uYXR0ZW1wdD09PWYpe2F8fGRlbGV0ZSB0aGlzW2pvXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWxldCBjPTAsaD0wO2lmKHRoaXMubWFyZ2luKXtjPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2g9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgdT1NYXRoLm1heCh0aGlzW2pvXS53aWR0aCtjLHRoaXMud3x8MCksbT1NYXRoLm1heCh0aGlzW2pvXS5oZWlnaHQraCx0aGlzLmh8fDApLHA9W3RoaXMueCx0aGlzLnksdSxtXTsiIj09PXRoaXMudyYmKHMud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHUpKTsiIj09PXRoaXMuaCYmKHMuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhtKSk7Y29uc3QgZD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOm4sY2hpbGRyZW46dH07YXBwbHlBc3Npc3QodGhpcyxuKTtkZWxldGUgdGhpc1tqb107cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsZCkscCl9fWNsYXNzIEV4ZWN1dGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImV4ZWN1dGUiKTt0aGlzLmNvbm5lY3Rpb249ZS5jb25uZWN0aW9ufHwiIjt0aGlzLmV4ZWN1dGVUeXBlPWdldFN0cmluZ09wdGlvbihlLmV4ZWN1dGVUeXBlLFsiaW1wb3J0IiwicmVtZXJnZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRXh0cmFzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJleHRyYXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leHRyYXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGaWVsZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiZmllbGQiLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb3JtYXQ9bnVsbDt0aGlzLml0ZW1zPW5ldyBYRkFPYmplY3RBcnJheSgyKTt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbHVlPW51bGw7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXl9W1dvXSgpe3JldHVybiEwfVtwbF0oZSl7X3NldFZhbHVlKHRoaXMsZSl9W3dsXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZighdGhpcy51aSl7dGhpcy51aT1uZXcgVWkoe30pO3RoaXMudWlbUG9dPXRoaXNbUG9dO3RoaXNbbG9dKHRoaXMudWkpO2xldCBlO3N3aXRjaCh0aGlzLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCl7Y2FzZSAwOmU9bmV3IFRleHRFZGl0KHt9KTt0aGlzLnVpLnRleHRFZGl0PWU7YnJlYWs7Y2FzZSAxOmU9bmV3IENoZWNrQnV0dG9uKHt9KTt0aGlzLnVpLmNoZWNrQnV0dG9uPWU7YnJlYWs7Y2FzZSAyOmU9bmV3IENob2ljZUxpc3Qoe30pO3RoaXMudWkuY2hvaWNlTGlzdD1lfXRoaXMudWlbbG9dKGUpfWlmKCF0aGlzLnVpfHwiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlfHwwPT09dGhpcy5ofHwwPT09dGhpcy53KXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO3RoaXMuY2FwdGlvbiYmZGVsZXRlIHRoaXMuY2FwdGlvbltqb107dGhpc1tvbF0oKTtjb25zdCB0PXRoaXMuY2FwdGlvbj90aGlzLmNhcHRpb25bd2xdKGUpLmh0bWw6bnVsbCxuPXRoaXMudyxhPXRoaXMuaDtsZXQgcj0wLHM9MDtpZih0aGlzLm1hcmdpbil7cj10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDtzPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWxldCBpPW51bGw7aWYoIiI9PT10aGlzLnd8fCIiPT09dGhpcy5oKXtsZXQgdD1udWxsLG49bnVsbCxhPTAsbz0wO2lmKHRoaXMudWkuY2hlY2tCdXR0b24pYT1vPXRoaXMudWkuY2hlY2tCdXR0b24uc2l6ZTtlbHNle2NvbnN0e3c6dCxoOm59PWxheW91dE5vZGUodGhpcyxlKTtpZihudWxsIT09dCl7YT10O289bn1lbHNlIG89ZnVuY3Rpb24gZm9udHNfZ2V0TWV0cmljcyhlLHQ9ITEpe2xldCBuPW51bGw7aWYoZSl7Y29uc3QgdD1zdHJpcFF1b3RlcyhlLnR5cGVmYWNlKSxhPWVbUG9dLmZvbnRGaW5kZXIuZmluZCh0KTtuPXNlbGVjdEZvbnQoZSxhKX1pZighbilyZXR1cm57bGluZUhlaWdodDoxMixsaW5lR2FwOjIsbGluZU5vR2FwOjEwfTtjb25zdCBhPWUuc2l6ZXx8MTAscj1uLmxpbmVIZWlnaHQ/TWF0aC5tYXgodD8wOjEuMixuLmxpbmVIZWlnaHQpOjEuMixzPXZvaWQgMD09PW4ubGluZUdhcD8uMjpuLmxpbmVHYXA7cmV0dXJue2xpbmVIZWlnaHQ6ciphLGxpbmVHYXA6cyphLGxpbmVOb0dhcDpNYXRoLm1heCgxLHItcykqYX19KHRoaXMuZm9udCwhMCkubGluZU5vR2FwfWk9Z2V0Qm9yZGVyRGltcyh0aGlzLnVpW0ZvXSgpKTthKz1pLnc7bys9aS5oO2lmKHRoaXMuY2FwdGlvbil7Y29uc3R7dzpyLGg6cyxpc0Jyb2tlbjppfT10aGlzLmNhcHRpb25bRm9dKGUpO2lmKGkmJnRoaXNbSG9dKClbJG9dKCkpe3RoaXNbaWxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10PXI7bj1zO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0Kz1hO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6bis9b319ZWxzZXt0PWE7bj1vfWlmKHQmJiIiPT09dGhpcy53KXt0Kz1yO3RoaXMudz1NYXRoLm1pbih0aGlzLm1heFc8PTA/MS8wOnRoaXMubWF4Vyx0aGlzLm1pblcrMTx0P3Q6dGhpcy5taW5XKX1pZihuJiYiIj09PXRoaXMuaCl7bis9czt0aGlzLmg9TWF0aC5taW4odGhpcy5tYXhIPD0wPzEvMDp0aGlzLm1heEgsdGhpcy5taW5IKzE8bj9uOnRoaXMubWluSCl9fXRoaXNbaWxdKCk7Zml4RGltZW5zaW9ucyh0aGlzKTtzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpe3RoaXMudz1uO3RoaXMuaD1hO3RoaXNbaWxdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IG89dG9TdHlsZSh0aGlzLCJmb250IiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsInByZXNlbmNlIiwibWFyZ2luIiwiaEFsaWduIik7c2V0TWluTWF4RGltZW5zaW9ucyh0aGlzLG8pO2NvbnN0IGw9WyJ4ZmFGaWVsZCJdO3RoaXMuZm9udCYmbC5wdXNoKCJ4ZmFGb250Iik7aXNQcmludE9ubHkodGhpcykmJmwucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgZj17c3R5bGU6byxpZDp0aGlzW3lsXSxjbGFzczpsfTtpZihvLm1hcmdpbil7by5wYWRkaW5nPW8ubWFyZ2luO2RlbGV0ZSBvLm1hcmdpbn1zZXRBY2Nlc3ModGhpcyxsKTt0aGlzLm5hbWUmJihmLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBjPVtdLGg9e25hbWU6ImRpdiIsYXR0cmlidXRlczpmLGNoaWxkcmVuOmN9O2FwcGx5QXNzaXN0KHRoaXMsZik7Y29uc3QgdT10aGlzLmJvcmRlcj90aGlzLmJvcmRlcltrbF0oKTpudWxsLG09Y29tcHV0ZUJib3godGhpcyxoLGUpLHA9dGhpcy51aVt3bF0oKS5odG1sO2lmKCFwKXtPYmplY3QuYXNzaWduKG8sdSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksbSl9dGhpc1tkbF0mJihwLmNoaWxkcmVuPy5bMF0/cC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbZGxdOnAuYXR0cmlidXRlcy50YWJpbmRleD10aGlzW2RsXSk7cC5hdHRyaWJ1dGVzLnN0eWxlfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgZD1udWxsO2lmKHRoaXMudWkuYnV0dG9uKXsxPT09cC5jaGlsZHJlbi5sZW5ndGgmJihbZF09cC5jaGlsZHJlbi5zcGxpY2UoMCwxKSk7T2JqZWN0LmFzc2lnbihwLmF0dHJpYnV0ZXMuc3R5bGUsdSl9ZWxzZSBPYmplY3QuYXNzaWduKG8sdSk7Yy5wdXNoKHApO2lmKHRoaXMudmFsdWUpaWYodGhpcy51aS5pbWFnZUVkaXQpcC5jaGlsZHJlbi5wdXNoKHRoaXMudmFsdWVbd2xdKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbZ2xdKCk7ZWxzZSBpZih0aGlzLnZhbHVlLnRleHQpZT10aGlzLnZhbHVlLnRleHRbRm9dKCk7ZWxzZXtjb25zdCB0PXRoaXMudmFsdWVbd2xdKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0Py5tYXhDaGFycyYmKHAuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5tYXhMZW5ndGg9dGhpcy52YWx1ZS50ZXh0Lm1heENoYXJzKTtpZihlKXtpZih0aGlzLnVpLm51bWVyaWNFZGl0KXtlPXBhcnNlRmxvYXQoZSk7ZT1pc05hTihlKT8iIjplLnRvU3RyaW5nKCl9InRleHRhcmVhIj09PXAuY2hpbGRyZW5bMF0ubmFtZT9wLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGV4dENvbnRlbnQ9ZTpwLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudmFsdWU9ZX19aWYoIXRoaXMudWkuaW1hZ2VFZGl0JiZwLmNoaWxkcmVuPy5bMF0mJnRoaXMuaCl7aXx8PWdldEJvcmRlckRpbXModGhpcy51aVtGb10oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW0ZvXShlKS5oKTtjb25zdCBuPXRoaXMuaC10LXMtaS5oO3AuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKG4pfWVsc2UgcC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9ZCYmcC5jaGlsZHJlbi5wdXNoKGQpO2lmKCF0KXtwLmF0dHJpYnV0ZXMuY2xhc3MmJnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PW47dGhpcy5oPWE7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsaCksbSl9aWYodGhpcy51aS5idXR0b24pe28ucGFkZGluZyYmZGVsZXRlIG8ucGFkZGluZzsiZGl2Ij09PXQubmFtZSYmKHQubmFtZT0ic3BhbiIpO3AuY2hpbGRyZW4ucHVzaCh0KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGgsbSl9dGhpcy51aS5jaGVja0J1dHRvbiYmKHQuYXR0cmlidXRlcy5jbGFzc1swXT0ieGZhQ2FwdGlvbkZvckNoZWNrQnV0dG9uIik7cC5hdHRyaWJ1dGVzLmNsYXNzfHw9W107cC5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjpwLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOnAuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9bjt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxoKSxtKX19Y2xhc3MgRmlsbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiZmlsbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5saW5lYXI9bnVsbDt0aGlzLnBhdHRlcm49bnVsbDt0aGlzLnJhZGlhbD1udWxsO3RoaXMuc29saWQ9bnVsbDt0aGlzLnN0aXBwbGU9bnVsbH1ba2xdKCl7Y29uc3QgZT10aGlzW01vXSgpLHQ9ZVtNb10oKVtNb10oKSxuPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGE9ImNvbG9yIixyPWE7aWYoZSBpbnN0YW5jZW9mIEJvcmRlcil7YT0iYmFja2dyb3VuZC1jb2xvciI7cj0iYmFja2dyb3VuZCI7dCBpbnN0YW5jZW9mIFVpJiYobi5iYWNrZ3JvdW5kQ29sb3I9IndoaXRlIil9aWYoZSBpbnN0YW5jZW9mIFJlY3RhbmdsZXx8ZSBpbnN0YW5jZW9mIEFyYyl7YT1yPSJmaWxsIjtuLmZpbGw9IndoaXRlIn1mb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwiY29sb3IiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYoISh0IGluc3RhbmNlb2YgWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRba2xdKHRoaXMuY29sb3IpO3MmJihuW3Muc3RhcnRzV2l0aCgiIyIpP2E6cl09cyk7cmV0dXJuIG59aWYodGhpcy5jb2xvcj8udmFsdWUpe2NvbnN0IGU9dGhpcy5jb2xvcltrbF0oKTtuW2Uuc3RhcnRzV2l0aCgiIyIpP2E6cl09ZX1yZXR1cm4gbn19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJmaWx0ZXIiLCEwKTt0aGlzLmFkZFJldm9jYXRpb25JbmZvPWdldFN0cmluZ09wdGlvbihlLmFkZFJldm9jYXRpb25JbmZvLFsiIiwicmVxdWlyZWQiLCJvcHRpb25hbCIsIm5vbmUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52ZXJzaW9uPWdldEludGVnZXIoe2RhdGE6dGhpcy52ZXJzaW9uLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTEmJmU8PTV9KTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bnVsbDt0aGlzLmNlcnRpZmljYXRlcz1udWxsO3RoaXMuZGlnZXN0TWV0aG9kcz1udWxsO3RoaXMuZW5jb2RpbmdzPW51bGw7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1udWxsO3RoaXMuaGFuZGxlcj1udWxsO3RoaXMubG9ja0RvY3VtZW50PW51bGw7dGhpcy5tZHA9bnVsbDt0aGlzLnJlYXNvbnM9bnVsbDt0aGlzLnRpbWVTdGFtcD1udWxsfX1jbGFzcyBGbG9hdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImZsb2F0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2tvXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2dvXS50cmltKCkpO3RoaXNbZ29dPWlzTmFOKGUpP251bGw6ZX1bd2xdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tnb10/dGhpc1tnb10udG9TdHJpbmcoKToiIil9fWNsYXNzIHRlbXBsYXRlX0ZvbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9Z2V0TWVhc3VyZW1lbnQoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9Z2V0U3RyaW5nT3B0aW9uKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD1nZXRJbnRlZ2VyKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPWdldFN0cmluZ09wdGlvbihlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtjb10oZSl7c3VwZXJbY29dKGUpO3RoaXNbUG9dLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtrbF0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiZmlsbCIpLHQ9ZS5jb2xvcjtpZih0KWlmKCIjMDAwMDAwIj09PXQpZGVsZXRlIGUuY29sb3I7ZWxzZSBpZighdC5zdGFydHNXaXRoKCIjIikpe2UuYmFja2dyb3VuZD10O2UuYmFja2dyb3VuZENsaXA9InRleHQiO2UuY29sb3I9InRyYW5zcGFyZW50In10aGlzLmJhc2VsaW5lU2hpZnQmJihlLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKHRoaXMuYmFzZWxpbmVTaGlmdCkpO2UuZm9udEtlcm5pbmc9Im5vbmUiPT09dGhpcy5rZXJuaW5nTW9kZT8ibm9uZSI6Im5vcm1hbCI7ZS5sZXR0ZXJTcGFjaW5nPW1lYXN1cmVUb1N0cmluZyh0aGlzLmxldHRlclNwYWNpbmcpO2lmKDAhPT10aGlzLmxpbmVUaHJvdWdoKXtlLnRleHREZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giOzI9PT10aGlzLmxpbmVUaHJvdWdoJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1pZigwIT09dGhpcy5vdmVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0ib3ZlcmxpbmUiOzI9PT10aGlzLm92ZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRTdHlsZT10aGlzLnBvc3R1cmU7ZS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoLjk5KnRoaXMuc2l6ZSk7c2V0Rm9udEZhbWlseSh0aGlzLHRoaXMsdGhpc1tQb10uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiZm9ybWF0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgSGFuZGxlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiaGFuZGxlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSHlwaGVuYXRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPWdldEludGVnZXIoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJpbWFnZSIpO3RoaXMuYXNwZWN0PWdldFN0cmluZ09wdGlvbihlLmFzcGVjdCxbImZpdCIsImFjdHVhbCIsImhlaWdodCIsIm5vbmUiLCJ3aWR0aCJdKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJiYXNlNjQiLCJub25lIiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3dsXSgpe2lmKHRoaXMuY29udGVudFR5cGUmJiFzZi5oYXModGhpcy5jb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW1BvXS5pbWFnZXM/LmdldCh0aGlzLmhyZWYpO2lmKCFlJiYodGhpcy5ocmVmfHwhdGhpc1tnb10pKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT1VaW50OEFycmF5LmZyb21CYXNlNjQodGhpc1tnb10pKTtpZighZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtpZighdGhpcy5jb250ZW50VHlwZSl7Zm9yKGNvbnN0W3Qsbl1vZiBvZilpZihlLmxlbmd0aD50Lmxlbmd0aCYmdC5ldmVyeSgodCxuKT0+dD09PWVbbl0pKXt0aGlzLmNvbnRlbnRUeXBlPW47YnJlYWt9aWYoIXRoaXMuY29udGVudFR5cGUpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Y29uc3QgdD1uZXcgQmxvYihbZV0se3R5cGU6dGhpcy5jb250ZW50VHlwZX0pO2xldCBuO3N3aXRjaCh0aGlzLmFzcGVjdCl7Y2FzZSJmaXQiOmNhc2UiYWN0dWFsIjpicmVhaztjYXNlImhlaWdodCI6bj17aGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIm5vbmUiOm49e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uid2lkdGgiOm49e3dpZHRoOiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifX1jb25zdCBhPXRoaXNbTW9dKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiaW1nIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUltYWdlIl0sc3R5bGU6bixzcmM6VVJMLmNyZWF0ZU9iamVjdFVSTCh0KSxhbHQ6YT9hcmlhTGFiZWwoYVtNb10oKSk6bnVsbH19KX19Y2xhc3MgSW1hZ2VFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJpbWFnZUVkaXQiLCEwKTt0aGlzLmRhdGE9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YSxbImxpbmsiLCJlbWJlZCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bd2xdKGUpe3JldHVybiJlbWJlZCI9PT10aGlzLmRhdGE/SFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319KTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBJbnRlZ2VyIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiaW50ZWdlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtrb10oKXtjb25zdCBlPXBhcnNlSW50KHRoaXNbZ29dLnRyaW0oKSwxMCk7dGhpc1tnb109aXNOYU4oZSk/bnVsbDplfVt3bF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2dvXT90aGlzW2dvXS50b1N0cmluZygpOiIiKX19Y2xhc3MgSXNzdWVycyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwiaXNzdWVycyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNlcnRpZmljYXRlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsIml0ZW1zIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnNhdmU9Z2V0SW50ZWdlcih7ZGF0YTplLnNhdmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVt3bF0oKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXNbUm9dKCkpZS5wdXNoKHRbZ2xdKCkpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9fWNsYXNzIEtlZXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsImtlZXAiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO2NvbnN0IHQ9WyJub25lIiwiY29udGVudEFyZWEiLCJwYWdlQXJlYSJdO3RoaXMuaW50YWN0PWdldFN0cmluZ09wdGlvbihlLmludGFjdCx0KTt0aGlzLm5leHQ9Z2V0U3RyaW5nT3B0aW9uKGUubmV4dCx0KTt0aGlzLnByZXZpb3VzPWdldFN0cmluZ09wdGlvbihlLnByZXZpb3VzLHQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBLZXlVc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwia2V5VXNhZ2UiKTtjb25zdCB0PVsiIiwieWVzIiwibm8iXTt0aGlzLmNybFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUuY3JsU2lnbix0KTt0aGlzLmRhdGFFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YUVuY2lwaGVybWVudCx0KTt0aGlzLmRlY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5kZWNpcGhlck9ubHksdCk7dGhpcy5kaWdpdGFsU2lnbmF0dXJlPWdldFN0cmluZ09wdGlvbihlLmRpZ2l0YWxTaWduYXR1cmUsdCk7dGhpcy5lbmNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZW5jaXBoZXJPbmx5LHQpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5rZXlBZ3JlZW1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5QWdyZWVtZW50LHQpO3RoaXMua2V5Q2VydFNpZ249Z2V0U3RyaW5nT3B0aW9uKGUua2V5Q2VydFNpZ24sdCk7dGhpcy5rZXlFbmNpcGhlcm1lbnQ9Z2V0U3RyaW5nT3B0aW9uKGUua2V5RW5jaXBoZXJtZW50LHQpO3RoaXMubm9uUmVwdWRpYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUubm9uUmVwdWRpYXRpb24sdCk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTGluZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwibGluZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2xvcGU9Z2V0U3RyaW5nT3B0aW9uKGUuc2xvcGUsWyJcXCIsIi8iXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsfVt3bF0oKXtjb25zdCBlPXRoaXNbTW9dKClbTW9dKCksdD10aGlzLmVkZ2V8fG5ldyBFZGdlKHt9KSxuPXRba2xdKCksYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9InZpc2libGUiPT09dC5wcmVzZW5jZT90LnRoaWNrbmVzczowO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKHIpO2Euc3Ryb2tlPW4uY29sb3I7bGV0IHMsaSxsLGYsYz0iMTAwJSIsaD0iMTAwJSI7aWYoZS53PD1yKXtbcyxpLGwsZl09WyI1MCUiLDAsIjUwJSIsIjEwMCUiXTtjPWEuc3Ryb2tlV2lkdGh9ZWxzZSBpZihlLmg8PXIpe1tzLGksbCxmXT1bMCwiNTAlIiwiMTAwJSIsIjUwJSJdO2g9YS5zdHJva2VXaWR0aH1lbHNlIlxcIj09PXRoaXMuc2xvcGU/W3MsaSxsLGZdPVswLDAsIjEwMCUiLCIxMDAlIl06W3MsaSxsLGZdPVswLCIxMDAlIiwiMTAwJSIsMF07Y29uc3QgdT17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6ImxpbmUiLGF0dHJpYnV0ZXM6e3htbG5zOm8seDE6cyx5MTppLHgyOmwseTI6ZixzdHlsZTphfX1dLGF0dHJpYnV0ZXM6e3htbG5zOm8sd2lkdGg6YyxoZWlnaHQ6aCxzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifX19O2lmKGhhc01hcmdpbihlKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3VdfSk7dS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh1KX19Y2xhc3MgTGluZWFyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtrbF0oZSl7ZT1lP2Vba2xdKCk6IiNGRkZGRkYiO3JldHVybmBsaW5lYXItZ3JhZGllbnQoJHt0aGlzLnR5cGUucmVwbGFjZSgvKFtSQkxUXSkvLCIgJDEiKS50b0xvd2VyQ2FzZSgpfSwgJHtlfSwgJHt0aGlzLmNvbG9yP3RoaXMuY29sb3Jba2xdKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJsb2NrRG9jdW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2tvXSgpe3RoaXNbZ29dPWdldFN0cmluZ09wdGlvbih0aGlzW2dvXSxbImF1dG8iLCIwIiwiMSJdKX19Y2xhc3MgTWFuaWZlc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1hcmdpbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD1nZXRNZWFzdXJlbWVudChlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD1nZXRNZWFzdXJlbWVudChlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD1nZXRNZWFzdXJlbWVudChlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PWdldE1lYXN1cmVtZW50KGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1ba2xdKCl7cmV0dXJue21hcmdpbjptZWFzdXJlVG9TdHJpbmcodGhpcy50b3BJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLnJpZ2h0SW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5ib3R0b21JbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmxlZnRJbnNldCl9fX1jbGFzcyBNZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz1nZXRJbnRlZ2VyKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPWdldFN0cmluZ09wdGlvbihlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsIm1lZGl1bSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbWFnaW5nQkJveD1mdW5jdGlvbiBnZXRCQm94KGUpe2NvbnN0IHQ9LTE7aWYoIWUpcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3Qgbj1lLnNwbGl0KCIsIiw0KS5tYXAoZT0+Z2V0TWVhc3VyZW1lbnQoZS50cmltKCksIi0xIikpO2lmKG4ubGVuZ3RoPDR8fG5bMl08MHx8blszXTwwKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0W2EscixzLGldPW47cmV0dXJue3g6YSx5OnIsd2lkdGg6cyxoZWlnaHQ6aX19KGUuaW1hZ2luZ0JCb3gpO3RoaXMubG9uZz1nZXRNZWFzdXJlbWVudChlLmxvbmcpO3RoaXMub3JpZW50YXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3JpZW50YXRpb24sWyJwb3J0cmFpdCIsImxhbmRzY2FwZSJdKTt0aGlzLnNob3J0PWdldE1lYXN1cmVtZW50KGUuc2hvcnQpO3RoaXMuc3RvY2s9ZS5zdG9ja3x8IiI7dGhpcy50cmF5SW49Z2V0U3RyaW5nT3B0aW9uKGUudHJheUluLFsiYXV0byIsImRlbGVnYXRlIiwicGFnZUZyb250Il0pO3RoaXMudHJheU91dD1nZXRTdHJpbmdPcHRpb24oZS50cmF5T3V0LFsiYXV0byIsImRlbGVnYXRlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwibWVzc2FnZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE51bWVyaWNFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJudW1lcmljRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVt3bF0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxuPXRoaXNbTW9dKClbTW9dKCksYT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6blt5bF0sZGF0YUlkOm5bYm9dPy5beWxdfHxuW3lsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChuKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKG4pKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIE9jY3VyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJvY2N1ciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsPSIiIT09ZS5pbml0aWFsP2dldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMubWF4PSIiIT09ZS5tYXg/Z2V0SW50ZWdlcih7ZGF0YTplLm1heCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1pbj0iIiE9PWUubWluP2dldEludGVnZXIoe2RhdGE6ZS5taW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bY29dKCl7Y29uc3QgZT10aGlzW01vXSgpLHQ9dGhpcy5taW47IiI9PT10aGlzLm1pbiYmKHRoaXMubWluPWUgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/MDoxKTsiIj09PXRoaXMubWF4JiYodGhpcy5tYXg9IiI9PT10P2UgaW5zdGFuY2VvZiBQYWdlQXJlYXx8ZSBpbnN0YW5jZW9mIFBhZ2VTZXQ/LTE6MTp0aGlzLm1pbik7LTEhPT10aGlzLm1heCYmdGhpcy5tYXg8dGhpcy5taW4mJih0aGlzLm1heD10aGlzLm1pbik7IiI9PT10aGlzLmluaXRpYWwmJih0aGlzLmluaXRpYWw9ZSBpbnN0YW5jZW9mIFRlbXBsYXRlPzE6dGhpcy5taW4pfX1jbGFzcyBPaWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsIm9pZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPaWRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJvaWRzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMub2lkPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgT3ZlcmZsb3cgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsIm92ZXJmbG93Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWRlcj1lLmxlYWRlcnx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bRm9dKCl7aWYoIXRoaXNbam9dKXtjb25zdCBlPXRoaXNbTW9dKCksdD10aGlzW05vXSgpLG49dFtobF0odGhpcy50YXJnZXQsZSksYT10W2hsXSh0aGlzLmxlYWRlcixlKSxyPXRbaGxdKHRoaXMudHJhaWxlcixlKTt0aGlzW2pvXT17dGFyZ2V0Om4/LlswXXx8bnVsbCxsZWFkZXI6YT8uWzBdfHxudWxsLHRyYWlsZXI6cj8uWzBdfHxudWxsLGFkZExlYWRlcjohMSxhZGRUcmFpbGVyOiExfX1yZXR1cm4gdGhpc1tqb119fWNsYXNzIFBhZ2VBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJwYWdlQXJlYSIsITApO3RoaXMuYmxhbmtPck5vdEJsYW5rPWdldFN0cmluZ09wdGlvbihlLmJsYW5rT3JOb3RCbGFuayxbImFueSIsImJsYW5rIiwibm90QmxhbmsiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmluaXRpYWxOdW1iZXI9Z2V0SW50ZWdlcih7ZGF0YTplLmluaXRpYWxOdW1iZXIsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm51bWJlcmVkPWdldEludGVnZXIoe2RhdGE6ZS5udW1iZXJlZCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMub2RkT3JFdmVuPWdldFN0cmluZ09wdGlvbihlLm9kZE9yRXZlbixbImFueSIsImV2ZW4iLCJvZGQiXSk7dGhpcy5wYWdlUG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucGFnZVBvc2l0aW9uLFsiYW55IiwiZmlyc3QiLCJsYXN0Iiwib25seSIsInJlc3QiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lZGl1bT1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9W0pvXSgpe2lmKCF0aGlzW2pvXSl7dGhpc1tqb109e251bWJlck9mVXNlOjB9O3JldHVybiEwfXJldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW2pvXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1baG9dKCl7ZGVsZXRlIHRoaXNbam9dfVtEb10oKXt0aGlzW2pvXXx8PXtudW1iZXJPZlVzZTowfTtjb25zdCBlPXRoaXNbTW9dKCk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PWUucmVsYXRpb24mJnRoaXNbSm9dKCkpe3RoaXNbam9dLm51bWJlck9mVXNlKz0xO3JldHVybiB0aGlzfXJldHVybiBlW0RvXSgpfVtTb10oKXtyZXR1cm4gdGhpc1tqb10uc3BhY2V8fHt3aWR0aDowLGhlaWdodDowfX1bd2xdKCl7dGhpc1tqb118fD17bnVtYmVyT2ZVc2U6MX07Y29uc3QgZT1bXTt0aGlzW2pvXS5jaGlsZHJlbj1lO2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0aGlzLm1lZGl1bSYmdGhpcy5tZWRpdW0uc2hvcnQmJnRoaXMubWVkaXVtLmxvbmcpe3Qud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLnNob3J0KTt0LmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tZWRpdW0ubG9uZyk7dGhpc1tqb10uc3BhY2U9e3dpZHRoOnRoaXMubWVkaXVtLnNob3J0LGhlaWdodDp0aGlzLm1lZGl1bS5sb25nfTtpZigibGFuZHNjYXBlIj09PXRoaXMubWVkaXVtLm9yaWVudGF0aW9uKXtjb25zdCBlPXQud2lkdGg7dC53aWR0aD10LmhlaWdodDt0LmhlaWdodD1lO3RoaXNbam9dLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5sb25nLGhlaWdodDp0aGlzLm1lZGl1bS5zaG9ydH19fWVsc2Ugd2FybigiWEZBIC0gTm8gbWVkaXVtIHNwZWNpZmllZCBpbiBwYWdlQXJlYTogcGxlYXNlIGZpbGUgYSBidWcuIik7dGhpc1tmb10oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsInN1YmZvcm0iXSksaW5jbHVkZTohMH0pO3RoaXNbZm9dKHtmaWx0ZXI6bmV3IFNldChbImNvbnRlbnRBcmVhIl0pLGluY2x1ZGU6ITB9KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOmUsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFQYWdlIl0saWQ6dGhpc1t5bF0sc3R5bGU6dCx4ZmFOYW1lOnRoaXMubmFtZX19KX19Y2xhc3MgUGFnZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwicGFnZVNldCIsITApO3RoaXMuZHVwbGV4SW1wb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5kdXBsZXhJbXBvc2l0aW9uLFsibG9uZ0VkZ2UiLCJzaG9ydEVkZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGF0aW9uPWdldFN0cmluZ09wdGlvbihlLnJlbGF0aW9uLFsib3JkZXJlZE9jY3VycmVuY2UiLCJkdXBsZXhQYWdpbmF0ZWQiLCJzaW1wbGV4UGFnaW5hdGVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMucGFnZUFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFnZVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W2hvXSgpe2Zvcihjb25zdCBlIG9mIHRoaXMucGFnZUFyZWEuY2hpbGRyZW4pZVtob10oKTtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW4pZVtob10oKX1bSm9dKCl7cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbam9dLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtEb10oKXt0aGlzW2pvXXx8PXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDotMSxwYWdlU2V0SW5kZXg6LTF9O2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT10aGlzLnJlbGF0aW9uKXtpZih0aGlzW2pvXS5wYWdlSW5kZXgrMTx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tqb10ucGFnZUluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuW3RoaXNbam9dLnBhZ2VJbmRleF1bRG9dKCl9aWYodGhpc1tqb10ucGFnZVNldEluZGV4KzE8dGhpcy5wYWdlU2V0LmNoaWxkcmVuLmxlbmd0aCl7dGhpc1tqb10ucGFnZVNldEluZGV4Kz0xO3JldHVybiB0aGlzLnBhZ2VTZXQuY2hpbGRyZW5bdGhpc1tqb10ucGFnZVNldEluZGV4XVtEb10oKX1pZih0aGlzW0pvXSgpKXt0aGlzW2pvXS5udW1iZXJPZlVzZSs9MTt0aGlzW2pvXS5wYWdlSW5kZXg9LTE7dGhpc1tqb10ucGFnZVNldEluZGV4PS0xO3JldHVybiB0aGlzW0RvXSgpfWNvbnN0IGU9dGhpc1tNb10oKTtpZihlIGluc3RhbmNlb2YgUGFnZVNldClyZXR1cm4gZVtEb10oKTt0aGlzW2hvXSgpO3JldHVybiB0aGlzW0RvXSgpfWNvbnN0IGU9dGhpc1tOb10oKVtqb10ucGFnZU51bWJlcix0PWUlMj09MD8iZXZlbiI6Im9kZCIsbj0wPT09ZT8iZmlyc3QiOiJyZXN0IjtsZXQgYT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PW4pO2lmKGEpcmV0dXJuIGE7YT10aGlzLnBhZ2VBcmVhLmNoaWxkcmVuLmZpbmQoZT0+ImFueSI9PT1lLm9kZE9yRXZlbiYmZS5wYWdlUG9zaXRpb249PT1uKTtpZihhKXJldHVybiBhO2E9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJiJhbnkiPT09ZS5wYWdlUG9zaXRpb24pO3JldHVybiBhfHx0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuWzBdfX1jbGFzcyBQYXJhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJwYXJhIiwhMCk7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGluZUhlaWdodD1lLmxpbmVIZWlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5saW5lSGVpZ2h0LCIwcHQiKToiIjt0aGlzLm1hcmdpbkxlZnQ9ZS5tYXJnaW5MZWZ0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luTGVmdCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5SaWdodD1lLm1hcmdpblJpZ2h0P2dldE1lYXN1cmVtZW50KGUubWFyZ2luUmlnaHQsIjBwdCIpOiIiO3RoaXMub3JwaGFucz1nZXRJbnRlZ2VyKHtkYXRhOmUub3JwaGFucyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5wcmVzZXJ2ZT1lLnByZXNlcnZlfHwiIjt0aGlzLnJhZGl4T2Zmc2V0PWUucmFkaXhPZmZzZXQ/Z2V0TWVhc3VyZW1lbnQoZS5yYWRpeE9mZnNldCwiMHB0Iik6IiI7dGhpcy5zcGFjZUFib3ZlPWUuc3BhY2VBYm92ZT9nZXRNZWFzdXJlbWVudChlLnNwYWNlQWJvdmUsIjBwdCIpOiIiO3RoaXMuc3BhY2VCZWxvdz1lLnNwYWNlQmVsb3c/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUJlbG93LCIwcHQiKToiIjt0aGlzLnRhYkRlZmF1bHQ9ZS50YWJEZWZhdWx0P2dldE1lYXN1cmVtZW50KHRoaXMudGFiRGVmYXVsdCk6IiI7dGhpcy50YWJTdG9wcz0oZS50YWJTdG9wc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKChlLHQpPT50JTI9PTE/Z2V0TWVhc3VyZW1lbnQoZSk6ZSk7dGhpcy50ZXh0SW5kZW50PWUudGV4dEluZGVudD9nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBwdCIpOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnZBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS52QWxpZ24sWyJ0b3AiLCJib3R0b20iLCJtaWRkbGUiXSk7dGhpcy53aWRvd3M9Z2V0SW50ZWdlcih7ZGF0YTplLndpZG93cyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5oeXBoZW5hdGlvbj1udWxsfVtrbF0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiaEFsaWduIik7IiIhPT10aGlzLm1hcmdpbkxlZnQmJihlLnBhZGRpbmdMZWZ0PW1lYXN1cmVUb1N0cmluZyh0aGlzLm1hcmdpbkxlZnQpKTsiIiE9PXRoaXMubWFyZ2luUmlnaHQmJihlLnBhZGRpbmdSaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW2tsXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2tsXShlKXtlPWU/ZVtrbF0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jba2xdKCk6IiMwMDAwMDAiLG49InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke259KHRvIHRvcCwke2F9KSAke259KHRvIHJpZ2h0LCR7YX0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke259KDQ1ZGVnLCR7YX0pICR7bn0oLTQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7bn0oNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7bn0oLTQ1ZGVnLCR7YX0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke259KHRvIHRvcCwke2F9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7bn0odG8gcmlnaHQsJHthfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W2tsXShlKXtlPWU/ZVtrbF0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jba2xdKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVt3bF0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVba2xdKCksbj1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihuLHRoaXMuZmlsbFtrbF0oKSk6bi5maWxsPSJ0cmFuc3BhcmVudCI7bi5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtuLnN0cm9rZT10LmNvbG9yO2NvbnN0IGE9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlba2xdKCkscj17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOm8sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIseDowLHk6MCxyeDphLnJhZGl1cyxyeTphLnJhZGl1cyxzdHlsZTpufX1dLGF0dHJpYnV0ZXM6e3htbG5zOm8sc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtpZihoYXNNYXJnaW4odGhpc1tNb10oKVtNb10oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltyXX0pO3IuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Mocil9fWNsYXNzIFJlZkVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInJlZiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJzZXRQcm9wZXJ0eSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiJ9fWNsYXNzIFNpZ25EYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJzaWduRGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsic2lnbiIsImNsZWFyIiwidmVyaWZ5Il0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInNpZ25hdHVyZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJQREYxLjMiLCJQREYxLjYiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBTaWduaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTb2xpZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtrbF0oZSl7cmV0dXJuIGU/ZVtrbF0oKToiI0ZGRkZGRiJ9fWNsYXNzIFNwZWFrIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJzcGVhayIpO3RoaXMuZGlzYWJsZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZGlzYWJsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmlvcml0eT1nZXRTdHJpbmdPcHRpb24oZS5wcmlvcml0eSxbImN1c3RvbSIsImNhcHRpb24iLCJuYW1lIiwidG9vbFRpcCJdKTt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTdGlwcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1ba2xdKGUpe2NvbnN0IHQ9dGhpcy5yYXRlLzEwMDtyZXR1cm4gVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS5nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyBTdWJmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJzdWJmb3JtIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hbGxvd01hY3JvPWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd01hY3JvLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuY29sdW1uV2lkdGhzPShlLmNvbHVtbldpZHRoc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWVyZ2VNb2RlPWdldFN0cmluZ09wdGlvbihlLm1lcmdlTW9kZSxbImNvbnN1bWVEYXRhIiwibWF0Y2hUZW1wbGF0ZSJdKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yZXN0b3JlU3RhdGU9Z2V0U3RyaW5nT3B0aW9uKGUucmVzdG9yZVN0YXRlLFsibWFudWFsIiwiYXV0byJdKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsibmFtZSIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5wYWdlU2V0PW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YXJpYWJsZXM9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnByb3RvPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W0hvXSgpe2NvbnN0IGU9dGhpc1tNb10oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVtIb10oKTplfVtXb10oKXtyZXR1cm4hMH1bJG9dKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbam9dLmF0dGVtcHQmJnRoaXNbam9dLm51bWJlckluTGluZT4wfHx0aGlzW01vXSgpWyRvXSgpfSpbQm9dKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W3lvXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W29vXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVtTb10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W1ZvXSgpe2NvbnN0IGU9dGhpc1tIb10oKTtpZighZVtWb10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW2pvXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW2pvXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW2pvXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKHRoaXMua2VlcCYmIm5vbmUiIT09dGhpcy5rZWVwLmludGFjdCl7dGhpc1tqb10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtqb10ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbam9dLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W3dsXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW1BvXT10aGlzW1BvXTt0aGlzW2xvXShlKTt0aGlzLmJyZWFrQWZ0ZXIucHVzaChlKX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtCZWZvcmUoe3RhcmdldFR5cGU6dGhpcy5icmVhay5iZWZvcmUsdGFyZ2V0OnRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2VbUG9dPXRoaXNbUG9dO3RoaXNbbG9dKGUpO3RoaXMuYnJlYWtCZWZvcmUucHVzaChlKX1pZigiIiE9PXRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQpe2NvbnN0IGU9bmV3IE92ZXJmbG93KHt0YXJnZXQ6dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCxsZWFkZXI6dGhpcy5icmVhay5vdmVyZmxvd0xlYWRlcix0cmFpbGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dUcmFpbGVyfSk7ZVtQb109dGhpc1tQb107dGhpc1tsb10oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbbGxdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZOyh0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD4xfHx0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPjEpJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIGJyZWFrQmVmb3JlIG9yIGJyZWFrQWZ0ZXIgaW4gc3ViZm9ybXM6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO2lmKHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpcmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKHRoaXNbam9dPy5hZnRlckJyZWFrQWZ0ZXIpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLG49e2lkOnRoaXNbeWxdLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxuLmNsYXNzKTt0aGlzW2pvXXx8PU9iamVjdC5jcmVhdGUobnVsbCk7T2JqZWN0LmFzc2lnbih0aGlzW2pvXSx7Y2hpbGRyZW46dCxsaW5lOm51bGwsYXR0cmlidXRlczpuLGF0dGVtcHQ6MCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCBhPXRoaXNbTm9dKCkscj1hW2pvXS5ub0xheW91dEZhaWx1cmUscz10aGlzW1ZvXSgpO3N8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IGk9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1tIb10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tqb10uY29sdW1uV2lkdGhzPWU7dGhpc1tqb10uY3VycmVudENvbHVtbj0wfX1jb25zdCBvPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksbD1bInhmYVN1YmZvcm0iXSxmPWxheW91dENsYXNzKHRoaXMpO2YmJmwucHVzaChmKTtuLnN0eWxlPW87bi5jbGFzcz1sO3RoaXMubmFtZSYmKG4ueGZhTmFtZT10aGlzLm5hbWUpO2lmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tGb10oKTtpZih0LmFkZExlYWRlcil7dC5hZGRMZWFkZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LmxlYWRlcixlKX19dGhpc1tvbF0oKTtjb25zdCBjPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGg9Yz8yOjE7Zm9yKDt0aGlzW2pvXS5hdHRlbXB0PGg7dGhpc1tqb10uYXR0ZW1wdCsrKXtjJiYxPT09dGhpc1tqb10uYXR0ZW1wdCYmKHRoaXNbam9dLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbZm9dKHtmaWx0ZXI6aSxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW2lsXSgpO3JldHVybiBlfWlmKGMmJjA9PT10aGlzW2pvXS5hdHRlbXB0JiYwPT09dGhpc1tqb10ubnVtYmVySW5MaW5lJiYhYVtqb10ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW2pvXS5hdHRlbXB0PWg7YnJlYWt9fXRoaXNbaWxdKCk7c3x8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTthW2pvXS5ub0xheW91dEZhaWx1cmU9cjtpZih0aGlzW2pvXS5hdHRlbXB0PT09aCl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbTm9dKClbam9dLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtzfHxkZWxldGUgdGhpc1tqb107cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbRm9dKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCB1PTAsbT0wO2lmKHRoaXMubWFyZ2luKXt1PXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O209dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgcD1NYXRoLm1heCh0aGlzW2pvXS53aWR0aCt1LHRoaXMud3x8MCksZD1NYXRoLm1heCh0aGlzW2pvXS5oZWlnaHQrbSx0aGlzLmh8fDApLGc9W3RoaXMueCx0aGlzLnkscCxkXTsiIj09PXRoaXMudyYmKG8ud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHApKTsiIj09PXRoaXMuaCYmKG8uaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhkKSk7aWYoKCIwcHgiPT09by53aWR0aHx8IjBweCI9PT1vLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtjb25zdCBiPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6bixjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLG4pO2NvbnN0IHc9SFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxiKSxnKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1tqb10uYWZ0ZXJCcmVha0FmdGVyPXc7cmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tqb107cmV0dXJuIHd9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9KltCb10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bSG9dKCl7bGV0IGU9dGhpc1tNb10oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbTW9dKCk7cmV0dXJuIGV9W1dvXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtrb10oKXt0aGlzW2dvXT1uZXcgTWFwKHRoaXNbZ29dLnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5tYXAoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKX19Y2xhc3MgU3ViamVjdEROcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwic3ViamVjdEROcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnN1YmplY3RETj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFN1Ym1pdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwic3VibWl0IiwhMCk7dGhpcy5lbWJlZFBERj1nZXRJbnRlZ2VyKHtkYXRhOmUuZW1iZWRQREYsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJ4ZHAiLCJmb3JtZGF0YSIsInBkZiIsInVybGVuY29kZWQiLCJ4ZmQiLCJ4bWwiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50ZXh0RW5jb2Rpbmc9Z2V0S2V5d29yZCh7ZGF0YTplLnRleHRFbmNvZGluZz9lLnRleHRFbmNvZGluZy50b0xvd2VyQ2FzZSgpOiIiLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT5bInV0Zi04IiwiYmlnLWZpdmUiLCJmb250c3BlY2lmaWMiLCJnYmsiLCJnYi0xODAzMCIsImdiLTIzMTIiLCJrc2MtNTYwMSIsIm5vbmUiLCJzaGlmdC1qaXMiLCJ1Y3MtMiIsInV0Zi0xNiJdLmluY2x1ZGVzKGUpfHxlLm1hdGNoKC9pc28tODg1OS1cZHsyfS8pfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueGRwQ29udGVudD1lLnhkcENvbnRlbnR8fCIiO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2VQcm9maWxlPWdldFN0cmluZ09wdGlvbihlLmJhc2VQcm9maWxlLFsiZnVsbCIsImludGVyYWN0aXZlRm9ybXMiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtrb10oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmd2FybigiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbZGxdPTVlM31bVm9dKCl7cmV0dXJuITB9W2hsXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1tFb10uZ2V0KGUuc2xpY2UoMSkpXTpzZWFyY2hOb2RlKHRoaXMsdCxlLCEwLCEwKX0qW2JsXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W119KTt0aGlzW2pvXT17b3ZlcmZsb3dOb2RlOm51bGwsZmlyc3RVbnNwbGl0dGFibGU6bnVsbCxjdXJyZW50Q29udGVudEFyZWE6bnVsbCxjdXJyZW50UGFnZUFyZWE6bnVsbCxub0xheW91dEZhaWx1cmU6ITEscGFnZU51bWJlcjoxLHBhZ2VQb3NpdGlvbjoiZmlyc3QiLG9kZE9yRXZlbjoib2RkIixibGFua09yTm90Qmxhbms6Im5vbkJsYW5rIixwYXJhU3RhY2s6W119O2NvbnN0IGU9dGhpcy5zdWJmb3JtLmNoaWxkcmVuWzBdO2UucGFnZVNldFtob10oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixuPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgYT1udWxsLHI9bnVsbCxzPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3I9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtzPXIudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7cj1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1yLnRhcmdldH1lbHNlIGlmKGUuYnJlYWs/LmJlZm9yZVRhcmdldCl7cj1lLmJyZWFrO3M9ci5iZWZvcmVUYXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs/LmJlZm9yZVRhcmdldCl7cj1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7cz1yLmJlZm9yZVRhcmdldH1pZihyKXtjb25zdCBlPXRoaXNbaGxdKHMscltNb10oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXthPWU7cltqb109e319fWF8fD10WzBdO2Fbam9dPXtudW1iZXJPZlVzZToxfTtjb25zdCBpPWFbTW9dKCk7aVtqb109e251bWJlck9mVXNlOjEscGFnZUluZGV4OmkucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKSxwYWdlU2V0SW5kZXg6MH07bGV0IG8sbD1udWxsLGY9bnVsbCxjPSEwLGg9MCx1PTA7Zm9yKDs7KXtpZihjKWg9MDtlbHNle24uY2hpbGRyZW4ucG9wKCk7aWYoMz09PSsraCl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBufX1vPW51bGw7dGhpc1tqb10uY3VycmVudFBhZ2VBcmVhPWE7Y29uc3QgdD1hW3dsXSgpLmh0bWw7bi5jaGlsZHJlbi5wdXNoKHQpO2lmKGwpe3RoaXNbam9dLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2gobFt3bF0oYVtqb10uc3BhY2UpLmh0bWwpO2w9bnVsbH1pZihmKXt0aGlzW2pvXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGZbd2xdKGFbam9dLnNwYWNlKS5odG1sKTtmPW51bGx9Y29uc3Qgcj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoZT0+ZS5hdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKCJ4ZmFDb250ZW50YXJlYSIpKTtjPSExO3RoaXNbam9dLmZpcnN0VW5zcGxpdHRhYmxlPW51bGw7dGhpc1tqb10ubm9MYXlvdXRGYWlsdXJlPSExO2NvbnN0IGZsdXNoPXQ9Pntjb25zdCBuPWVbeW9dKCk7aWYobil7Y3x8PW4uY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChuKX19O2ZvcihsZXQgdD11LGE9ci5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT10aGlzW2pvXS5jdXJyZW50Q29udGVudEFyZWE9clt0XSxpPXt3aWR0aDphLncsaGVpZ2h0OmEuaH07dT0wO2lmKGwpe3NbdF0uY2hpbGRyZW4ucHVzaChsW3dsXShpKS5odG1sKTtsPW51bGx9aWYoZil7c1t0XS5jaGlsZHJlbi5wdXNoKGZbd2xdKGkpLmh0bWwpO2Y9bnVsbH1jb25zdCBoPWVbd2xdKGkpO2lmKGguc3VjY2Vzcyl7aWYoaC5odG1sKXtjfHw9aC5odG1sLmNoaWxkcmVuPy5sZW5ndGg+MDtzW3RdLmNoaWxkcmVuLnB1c2goaC5odG1sKX1lbHNlIWMmJm4uY2hpbGRyZW4ubGVuZ3RoPjEmJm4uY2hpbGRyZW4ucG9wKCk7cmV0dXJuIG59aWYoaC5pc0JyZWFrKCkpe2NvbnN0IGU9aC5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXtsPXRoaXNbaGxdKGUubGVhZGVyLGVbTW9dKCkpO2w9bD9sWzBdOm51bGx9aWYoZS50cmFpbGVyKXtmPXRoaXNbaGxdKGUudHJhaWxlcixlW01vXSgpKTtmPWY/ZlswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe289ZVtqb10udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtqb10udGFyZ2V0KXtvPWVbam9dLnRhcmdldDt1PWVbam9dLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbam9dLmluZGV4O2NvbnRpbnVlfWlmKHRoaXNbam9dLm92ZXJmbG93Tm9kZSl7Y29uc3QgZT10aGlzW2pvXS5vdmVyZmxvd05vZGU7dGhpc1tqb10ub3ZlcmZsb3dOb2RlPW51bGw7Y29uc3Qgbj1lW0ZvXSgpLGE9bi50YXJnZXQ7bi5hZGRMZWFkZXI9bnVsbCE9PW4ubGVhZGVyO24uYWRkVHJhaWxlcj1udWxsIT09bi50cmFpbGVyO2ZsdXNoKHQpO2NvbnN0IHM9dDt0PTEvMDtpZihhIGluc3RhbmNlb2YgUGFnZUFyZWEpbz1hO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIENvbnRlbnRBcmVhKXtjb25zdCBlPXIuaW5kZXhPZihhKTtpZigtMSE9PWUpZT5zP3Q9ZS0xOnU9ZTtlbHNle289YVtNb10oKTt1PW8uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihhKX19Y29udGludWV9Zmx1c2godCl9dGhpc1tqb10ucGFnZU51bWJlcis9MTtvJiYob1tKb10oKT9vW2pvXS5udW1iZXJPZlVzZSs9MTpvPW51bGwpO2E9b3x8YVtEb10oKTt5aWVsZCBudWxsfX19Y2xhc3MgVGV4dCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtpb10oKXtyZXR1cm4hMH1bbmxdKGUpe2lmKGVbWm9dPT09dmwueGh0bWwuaWQpe3RoaXNbZ29dPWU7cmV0dXJuITB9d2FybihgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtlbF19LmApO3JldHVybiExfVtybF0oZSl7dGhpc1tnb11pbnN0YW5jZW9mIFhGQU9iamVjdHx8c3VwZXJbcmxdKGUpfVtrb10oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbZ29dJiYodGhpc1tnb109dGhpc1tnb10ucmVwbGFjZUFsbCgiXHJcbiIsIlxuIikpfVtGb10oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXNbZ29dP3RoaXNbZ29dLnNwbGl0KC9bXHUyMDI5XHUyMDI4XG5dLykuZmlsdGVyKGU9PiEhZSkuam9pbigiXG4iKTp0aGlzW2dvXVtnbF0oKX1bd2xdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tnb10pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tnb10pLmh0bWw7aWYodGhpc1tnb10uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2dvXS5zcGxpdCgiXHUyMDI5IikubWFwKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5mbGF0TWFwKGU9Plt7bmFtZToic3BhbiIsdmFsdWU6ZX0se25hbWU6ImJyIn1dKSkuZm9yRWFjaCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KX1lbHNlIGlmKC9bXHUyMDI4XG5dLy50ZXN0KHRoaXNbZ29dKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tnb10uc3BsaXQoL1tcdTIwMjhcbl0vKS5mb3JFYWNoKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbZ29dW3dsXShlKX19Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInRleHRFZGl0IiwhMCk7dGhpcy5hbGxvd1JpY2hUZXh0PWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd1JpY2hUZXh0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm11bHRpTGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUubXVsdGlMaW5lLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4wPT09ZXx8MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52U2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLnZTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W3dsXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwiZm9udCIsIm1hcmdpbiIpO2xldCBuO2NvbnN0IGE9dGhpc1tNb10oKVtNb10oKTsiIj09PXRoaXMubXVsdGlMaW5lJiYodGhpcy5tdWx0aUxpbmU9YSBpbnN0YW5jZW9mIERyYXc/MTowKTtuPTE9PT10aGlzLm11bHRpTGluZT97bmFtZToidGV4dGFyZWEiLGF0dHJpYnV0ZXM6e2RhdGFJZDphW2JvXT8uW3lsXXx8YVt5bF0sZmllbGRJZDphW3lsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTp7bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGRhdGFJZDphW2JvXT8uW3lsXXx8YVt5bF0sZmllbGRJZDphW3lsXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGEpKXtuLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtuLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W25dfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1ba29dKCl7Y29uc3QgZT10aGlzW2dvXS50cmltKCk7dGhpc1tnb109ZT9uZXcgRGF0ZShlKTpudWxsfVt3bF0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbZ29dP3RoaXNbZ29dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBUaW1lU3RhbXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInRpbWVTdGFtcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zZXJ2ZXI9ZS5zZXJ2ZXJ8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRvb2xUaXAgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwidHJhdmVyc2FsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInRyYXZlcnNlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtZb10oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLmJhcmNvZGU9bnVsbDt0aGlzLmJ1dHRvbj1udWxsO3RoaXMuY2hlY2tCdXR0b249bnVsbDt0aGlzLmNob2ljZUxpc3Q9bnVsbDt0aGlzLmRhdGVUaW1lRWRpdD1udWxsO3RoaXMuZGVmYXVsdFVpPW51bGw7dGhpcy5pbWFnZUVkaXQ9bnVsbDt0aGlzLm51bWVyaWNFZGl0PW51bGw7dGhpcy5wYXNzd29yZEVkaXQ9bnVsbDt0aGlzLnNpZ25hdHVyZT1udWxsO3RoaXMudGV4dEVkaXQ9bnVsbH1bRm9dKCl7aWYodm9pZCAwPT09dGhpc1tqb10pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbam9dPXQ7cmV0dXJuIHR9fXRoaXNbam9dPW51bGx9cmV0dXJuIHRoaXNbam9dfVt3bF0oZSl7Y29uc3QgdD10aGlzW0ZvXSgpO3JldHVybiB0P3Rbd2xdKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGFmLCJ2YWxpZGF0ZSIsITApO3RoaXMuZm9ybWF0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXRUZXN0LFsid2FybmluZyIsImRpc2FibGVkIiwiZXJyb3IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bGxUZXN0PWdldFN0cmluZ09wdGlvbihlLm51bGxUZXN0LFsiZGlzYWJsZWQiLCJlcnJvciIsIndhcm5pbmciXSk7dGhpcy5zY3JpcHRUZXN0PWdldFN0cmluZ09wdGlvbihlLnNjcmlwdFRlc3QsWyJlcnJvciIsImRpc2FibGVkIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBWYWx1ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihhZiwidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W3BsXShlKXtjb25zdCB0PXRoaXNbTW9dKCk7aWYodCBpbnN0YW5jZW9mIEZpZWxkJiZ0LnVpPy5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tsb10odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtnb109ZVtnb107cmV0dXJufWNvbnN0IG49ZVtlbF07aWYobnVsbD09PXRoaXNbbl0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbbGxdKHQpfX10aGlzW2VbZWxdXT1lO3RoaXNbbG9dKGUpfWVsc2UgdGhpc1tuXVtnb109ZVtnb119W2dsXSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbZ29dP3RoaXMuZXhEYXRhW2dvXS50cmltKCk6dGhpcy5leERhdGFbZ29dW2dsXSgpLnRyaW0oKTtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImltYWdlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuKHRbZ29dfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W3dsXShlKXtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3Qgbj10aGlzW3RdO2lmKG4gaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuIG5bd2xdKGUpfXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYXJpYWJsZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoYWYsInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W1lvXSgpe3JldHVybiEwfX1jbGFzcyBUZW1wbGF0ZU5hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihUZW1wbGF0ZU5hbWVzcGFjZSxlKSl7Y29uc3Qgbj1UZW1wbGF0ZU5hbWVzcGFjZVtlXSh0KTtuW21sXSh0KTtyZXR1cm4gbn19c3RhdGljIGFwcGVhcmFuY2VGaWx0ZXIoZSl7cmV0dXJuIG5ldyBBcHBlYXJhbmNlRmlsdGVyKGUpfXN0YXRpYyBhcmMoZSl7cmV0dXJuIG5ldyBBcmMoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBBcmVhKGUpfXN0YXRpYyBhc3Npc3QoZSl7cmV0dXJuIG5ldyBBc3Npc3QoZSl9c3RhdGljIGJhcmNvZGUoZSl7cmV0dXJuIG5ldyBCYXJjb2RlKGUpfXN0YXRpYyBiaW5kKGUpe3JldHVybiBuZXcgQmluZChlKX1zdGF0aWMgYmluZEl0ZW1zKGUpe3JldHVybiBuZXcgQmluZEl0ZW1zKGUpfXN0YXRpYyBib29rZW5kKGUpe3JldHVybiBuZXcgQm9va2VuZChlKX1zdGF0aWMgYm9vbGVhbihlKXtyZXR1cm4gbmV3IEJvb2xlYW5FbGVtZW50KGUpfXN0YXRpYyBib3JkZXIoZSl7cmV0dXJuIG5ldyBCb3JkZXIoZSl9c3RhdGljIGJyZWFrKGUpe3JldHVybiBuZXcgQnJlYWsoZSl9c3RhdGljIGJyZWFrQWZ0ZXIoZSl7cmV0dXJuIG5ldyBCcmVha0FmdGVyKGUpfXN0YXRpYyBicmVha0JlZm9yZShlKXtyZXR1cm4gbmV3IEJyZWFrQmVmb3JlKGUpfXN0YXRpYyBidXR0b24oZSl7cmV0dXJuIG5ldyBCdXR0b24oZSl9c3RhdGljIGNhbGN1bGF0ZShlKXtyZXR1cm4gbmV3IENhbGN1bGF0ZShlKX1zdGF0aWMgY2FwdGlvbihlKXtyZXR1cm4gbmV3IENhcHRpb24oZSl9c3RhdGljIGNlcnRpZmljYXRlKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGUoZSl9c3RhdGljIGNlcnRpZmljYXRlcyhlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlcyhlKX1zdGF0aWMgY2hlY2tCdXR0b24oZSl7cmV0dXJuIG5ldyBDaGVja0J1dHRvbihlKX1zdGF0aWMgY2hvaWNlTGlzdChlKXtyZXR1cm4gbmV3IENob2ljZUxpc3QoZSl9c3RhdGljIGNvbG9yKGUpe3JldHVybiBuZXcgQ29sb3IoZSl9c3RhdGljIGNvbWIoZSl7cmV0dXJuIG5ldyBDb21iKGUpfXN0YXRpYyBjb25uZWN0KGUpe3JldHVybiBuZXcgQ29ubmVjdChlKX1zdGF0aWMgY29udGVudEFyZWEoZSl7cmV0dXJuIG5ldyBDb250ZW50QXJlYShlKX1zdGF0aWMgY29ybmVyKGUpe3JldHVybiBuZXcgQ29ybmVyKGUpfXN0YXRpYyBkYXRlKGUpe3JldHVybiBuZXcgRGF0ZUVsZW1lbnQoZSl9c3RhdGljIGRhdGVUaW1lKGUpe3JldHVybiBuZXcgRGF0ZVRpbWUoZSl9c3RhdGljIGRhdGVUaW1lRWRpdChlKXtyZXR1cm4gbmV3IERhdGVUaW1lRWRpdChlKX1zdGF0aWMgZGVjaW1hbChlKXtyZXR1cm4gbmV3IERlY2ltYWwoZSl9c3RhdGljIGRlZmF1bHRVaShlKXtyZXR1cm4gbmV3IERlZmF1bHRVaShlKX1zdGF0aWMgZGVzYyhlKXtyZXR1cm4gbmV3IERlc2MoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZChlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZChlKX1zdGF0aWMgZGlnZXN0TWV0aG9kcyhlKXtyZXR1cm4gbmV3IERpZ2VzdE1ldGhvZHMoZSl9c3RhdGljIGRyYXcoZSl7cmV0dXJuIG5ldyBEcmF3KGUpfXN0YXRpYyBlZGdlKGUpe3JldHVybiBuZXcgRWRnZShlKX1zdGF0aWMgZW5jb2RpbmcoZSl7cmV0dXJuIG5ldyBFbmNvZGluZyhlKX1zdGF0aWMgZW5jb2RpbmdzKGUpe3JldHVybiBuZXcgRW5jb2RpbmdzKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdERhdGEoZSl7cmV0dXJuIG5ldyBFbmNyeXB0RGF0YShlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2QoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kcyhlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2RzKGUpfXN0YXRpYyBldmVudChlKXtyZXR1cm4gbmV3IEV2ZW50KGUpfXN0YXRpYyBleERhdGEoZSl7cmV0dXJuIG5ldyBFeERhdGEoZSl9c3RhdGljIGV4T2JqZWN0KGUpe3JldHVybiBuZXcgRXhPYmplY3QoZSl9c3RhdGljIGV4Y2xHcm91cChlKXtyZXR1cm4gbmV3IEV4Y2xHcm91cChlKX1zdGF0aWMgZXhlY3V0ZShlKXtyZXR1cm4gbmV3IEV4ZWN1dGUoZSl9c3RhdGljIGV4dHJhcyhlKXtyZXR1cm4gbmV3IEV4dHJhcyhlKX1zdGF0aWMgZmllbGQoZSl7cmV0dXJuIG5ldyBGaWVsZChlKX1zdGF0aWMgZmlsbChlKXtyZXR1cm4gbmV3IEZpbGwoZSl9c3RhdGljIGZpbHRlcihlKXtyZXR1cm4gbmV3IEZpbHRlcihlKX1zdGF0aWMgZmxvYXQoZSl7cmV0dXJuIG5ldyBGbG9hdChlKX1zdGF0aWMgZm9udChlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX0ZvbnQoZSl9c3RhdGljIGZvcm1hdChlKXtyZXR1cm4gbmV3IEZvcm1hdChlKX1zdGF0aWMgaGFuZGxlcihlKXtyZXR1cm4gbmV3IEhhbmRsZXIoZSl9c3RhdGljIGh5cGhlbmF0aW9uKGUpe3JldHVybiBuZXcgSHlwaGVuYXRpb24oZSl9c3RhdGljIGltYWdlKGUpe3JldHVybiBuZXcgSW1hZ2UoZSl9c3RhdGljIGltYWdlRWRpdChlKXtyZXR1cm4gbmV3IEltYWdlRWRpdChlKX1zdGF0aWMgaW50ZWdlcihlKXtyZXR1cm4gbmV3IEludGVnZXIoZSl9c3RhdGljIGlzc3VlcnMoZSl7cmV0dXJuIG5ldyBJc3N1ZXJzKGUpfXN0YXRpYyBpdGVtcyhlKXtyZXR1cm4gbmV3IEl0ZW1zKGUpfXN0YXRpYyBrZWVwKGUpe3JldHVybiBuZXcgS2VlcChlKX1zdGF0aWMga2V5VXNhZ2UoZSl7cmV0dXJuIG5ldyBLZXlVc2FnZShlKX1zdGF0aWMgbGluZShlKXtyZXR1cm4gbmV3IExpbmUoZSl9c3RhdGljIGxpbmVhcihlKXtyZXR1cm4gbmV3IExpbmVhcihlKX1zdGF0aWMgbG9ja0RvY3VtZW50KGUpe3JldHVybiBuZXcgTG9ja0RvY3VtZW50KGUpfXN0YXRpYyBtYW5pZmVzdChlKXtyZXR1cm4gbmV3IE1hbmlmZXN0KGUpfXN0YXRpYyBtYXJnaW4oZSl7cmV0dXJuIG5ldyBNYXJnaW4oZSl9c3RhdGljIG1kcChlKXtyZXR1cm4gbmV3IE1kcChlKX1zdGF0aWMgbWVkaXVtKGUpe3JldHVybiBuZXcgTWVkaXVtKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgTWVzc2FnZShlKX1zdGF0aWMgbnVtZXJpY0VkaXQoZSl7cmV0dXJuIG5ldyBOdW1lcmljRWRpdChlKX1zdGF0aWMgb2NjdXIoZSl7cmV0dXJuIG5ldyBPY2N1cihlKX1zdGF0aWMgb2lkKGUpe3JldHVybiBuZXcgT2lkKGUpfXN0YXRpYyBvaWRzKGUpe3JldHVybiBuZXcgT2lkcyhlKX1zdGF0aWMgb3ZlcmZsb3coZSl7cmV0dXJuIG5ldyBPdmVyZmxvdyhlKX1zdGF0aWMgcGFnZUFyZWEoZSl7cmV0dXJuIG5ldyBQYWdlQXJlYShlKX1zdGF0aWMgcGFnZVNldChlKXtyZXR1cm4gbmV3IFBhZ2VTZXQoZSl9c3RhdGljIHBhcmEoZSl7cmV0dXJuIG5ldyBQYXJhKGUpfXN0YXRpYyBwYXNzd29yZEVkaXQoZSl7cmV0dXJuIG5ldyBQYXNzd29yZEVkaXQoZSl9c3RhdGljIHBhdHRlcm4oZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9QYXR0ZXJuKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgUGljdHVyZShlKX1zdGF0aWMgcHJvdG8oZSl7cmV0dXJuIG5ldyBQcm90byhlKX1zdGF0aWMgcmFkaWFsKGUpe3JldHVybiBuZXcgUmFkaWFsKGUpfXN0YXRpYyByZWFzb24oZSl7cmV0dXJuIG5ldyBSZWFzb24oZSl9c3RhdGljIHJlYXNvbnMoZSl7cmV0dXJuIG5ldyBSZWFzb25zKGUpfXN0YXRpYyByZWN0YW5nbGUoZSl7cmV0dXJuIG5ldyBSZWN0YW5nbGUoZSl9c3RhdGljIHJlZihlKXtyZXR1cm4gbmV3IFJlZkVsZW1lbnQoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IFNjcmlwdChlKX1zdGF0aWMgc2V0UHJvcGVydHkoZSl7cmV0dXJuIG5ldyBTZXRQcm9wZXJ0eShlKX1zdGF0aWMgc2lnbkRhdGEoZSl7cmV0dXJuIG5ldyBTaWduRGF0YShlKX1zdGF0aWMgc2lnbmF0dXJlKGUpe3JldHVybiBuZXcgU2lnbmF0dXJlKGUpfXN0YXRpYyBzaWduaW5nKGUpe3JldHVybiBuZXcgU2lnbmluZyhlKX1zdGF0aWMgc29saWQoZSl7cmV0dXJuIG5ldyBTb2xpZChlKX1zdGF0aWMgc3BlYWsoZSl7cmV0dXJuIG5ldyBTcGVhayhlKX1zdGF0aWMgc3RpcHBsZShlKXtyZXR1cm4gbmV3IFN0aXBwbGUoZSl9c3RhdGljIHN1YmZvcm0oZSl7cmV0dXJuIG5ldyBTdWJmb3JtKGUpfXN0YXRpYyBzdWJmb3JtU2V0KGUpe3JldHVybiBuZXcgU3ViZm9ybVNldChlKX1zdGF0aWMgc3ViamVjdEROKGUpe3JldHVybiBuZXcgU3ViamVjdEROKGUpfXN0YXRpYyBzdWJqZWN0RE5zKGUpe3JldHVybiBuZXcgU3ViamVjdEROcyhlKX1zdGF0aWMgc3VibWl0KGUpe3JldHVybiBuZXcgU3VibWl0KGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlKGUpfXN0YXRpYyB0ZXh0KGUpe3JldHVybiBuZXcgVGV4dChlKX1zdGF0aWMgdGV4dEVkaXQoZSl7cmV0dXJuIG5ldyBUZXh0RWRpdChlKX1zdGF0aWMgdGltZShlKXtyZXR1cm4gbmV3IFRpbWUoZSl9c3RhdGljIHRpbWVTdGFtcChlKXtyZXR1cm4gbmV3IFRpbWVTdGFtcChlKX1zdGF0aWMgdG9vbFRpcChlKXtyZXR1cm4gbmV3IFRvb2xUaXAoZSl9c3RhdGljIHRyYXZlcnNhbChlKXtyZXR1cm4gbmV3IFRyYXZlcnNhbChlKX1zdGF0aWMgdHJhdmVyc2UoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzZShlKX1zdGF0aWMgdWkoZSl7cmV0dXJuIG5ldyBVaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZShlKX1zdGF0aWMgdmFsdWUoZSl7cmV0dXJuIG5ldyBWYWx1ZShlKX1zdGF0aWMgdmFyaWFibGVzKGUpe3JldHVybiBuZXcgVmFyaWFibGVzKGUpfX1jb25zdCBsZj12bC5kYXRhc2V0cy5pZDtmdW5jdGlvbiBjcmVhdGVUZXh0KGUpe2NvbnN0IHQ9bmV3IFRleHQoe30pO3RbZ29dPWU7cmV0dXJuIHR9Y2xhc3MgQmluZGVye2NvbnN0cnVjdG9yKGUpe3RoaXMucm9vdD1lO3RoaXMuZGF0YXNldHM9ZS5kYXRhc2V0czt0aGlzLmRhdGE9ZS5kYXRhc2V0cz8uZGF0YXx8bmV3IFhtbE9iamVjdChsZiwiZGF0YSIpO3RoaXMuZW1wdHlNZXJnZT0wPT09dGhpcy5kYXRhW1JvXSgpLmxlbmd0aDt0aGlzLnJvb3QuZm9ybT10aGlzLmZvcm09ZS50ZW1wbGF0ZVttb10oKX1faXNDb25zdW1lRGF0YSgpe3JldHVybiF0aGlzLmVtcHR5TWVyZ2UmJnRoaXMuX21lcmdlTW9kZX1faXNNYXRjaFRlbXBsYXRlKCl7cmV0dXJuIXRoaXMuX2lzQ29uc3VtZURhdGEoKX1iaW5kKCl7dGhpcy5fYmluZEVsZW1lbnQodGhpcy5mb3JtLHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZm9ybX1nZXREYXRhKCl7cmV0dXJuIHRoaXMuZGF0YX1fYmluZFZhbHVlKGUsdCxuKXtlW2JvXT10O2lmKGVbX29dKCkpaWYodFtYb10oKSl7Y29uc3Qgbj10W0lvXSgpO2VbcGxdKGNyZWF0ZVRleHQobikpfWVsc2UgaWYoZSBpbnN0YW5jZW9mIEZpZWxkJiYibXVsdGlTZWxlY3QiPT09ZS51aT8uY2hvaWNlTGlzdD8ub3Blbil7Y29uc3Qgbj10W1JvXSgpLm1hcChlPT5lW2dvXS50cmltKCkpLmpvaW4oIlxuIik7ZVtwbF0oY3JlYXRlVGV4dChuKSl9ZWxzZSB0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKTtlbHNlIXRbWG9dKCl8fHRoaXMuX2lzTWF0Y2hUZW1wbGF0ZSgpP3RoaXMuX2JpbmRFbGVtZW50KGUsdCk6d2FybigiWEZBIC0gTm9kZXMgaGF2ZW4ndCB0aGUgc2FtZSB0eXBlLiIpfV9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShlLHQsbixhKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgcixzO2ZvcihsZXQgYT0wO2E8MzthKyspe3I9bltPb10oZSwhMSwhMCk7Zm9yKDs7KXtzPXIubmV4dCgpLnZhbHVlO2lmKCFzKWJyZWFrO2lmKHQ9PT1zW1hvXSgpKXJldHVybiBzfWlmKG5bWm9dPT09bGYmJiJkYXRhIj09PW5bZWxdKWJyZWFrO249bltNb10oKX1pZighYSlyZXR1cm4gbnVsbDtyPXRoaXMuZGF0YVtPb10oZSwhMCwhMSk7cz1yLm5leHQoKS52YWx1ZTtpZihzKXJldHVybiBzO3I9dGhpcy5kYXRhW3FvXShlLCEwKTtzPXIubmV4dCgpLnZhbHVlO3JldHVybiBzPy5bWG9dKCk/czpudWxsfV9zZXRQcm9wZXJ0aWVzKGUsdCl7aWYoT2JqZWN0Lmhhc093bihlLCJzZXRQcm9wZXJ0eSIpKWZvcihjb25zdHtyZWY6bix0YXJnZXQ6YSxjb25uZWN0aW9uOnJ9b2YgZS5zZXRQcm9wZXJ0eS5jaGlsZHJlbil7aWYociljb250aW51ZTtpZighbiljb250aW51ZTtjb25zdCBzPXNlYXJjaE5vZGUodGhpcy5yb290LHQsbiwhMSwhMSk7aWYoIXMpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke259LmApO2NvbnRpbnVlfWNvbnN0W2ldPXM7aWYoIWlbS29dKHRoaXMuZGF0YSkpe3dhcm4oIlhGQSAtIEludmFsaWQgbm9kZTogbXVzdCBiZSBhIGRhdGEgbm9kZS4iKTtjb250aW51ZX1jb25zdCBvPXNlYXJjaE5vZGUodGhpcy5yb290LGUsYSwhMSwhMSk7aWYoIW8pe3dhcm4oYFhGQSAtIEludmFsaWQgdGFyZ2V0OiAke2F9LmApO2NvbnRpbnVlfWNvbnN0W2xdPW87aWYoIWxbS29dKGUpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogbXVzdCBiZSBhIHByb3BlcnR5IG9yIHN1YnByb3BlcnR5LiIpO2NvbnRpbnVlfWNvbnN0IGY9bFtNb10oKTtpZihsIGluc3RhbmNlb2YgU2V0UHJvcGVydHl8fGYgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eSl7d2FybigiWEZBIC0gSW52YWxpZCB0YXJnZXQ6IGNhbm5vdCBiZSBhIHNldFByb3BlcnR5IG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1pZihsIGluc3RhbmNlb2YgQmluZEl0ZW1zfHxmIGluc3RhbmNlb2YgQmluZEl0ZW1zKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgYmluZEl0ZW1zIG9yIG9uZSBvZiBpdHMgcHJvcGVydGllcy4iKTtjb250aW51ZX1jb25zdCBjPWlbZ2xdKCksaD1sW2VsXTtpZihsIGluc3RhbmNlb2YgWEZBQXR0cmlidXRlKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZVtoXT1jO2NvbnN0IHQ9UmVmbGVjdC5jb25zdHJ1Y3QoT2JqZWN0LmdldFByb3RvdHlwZU9mKGYpLmNvbnN0cnVjdG9yLFtlXSk7ZltoXT10W2hdO2NvbnRpbnVlfWlmKE9iamVjdC5oYXNPd24obCxnbykpe2xbYm9dPWk7bFtnb109YztsW2tvXSgpfWVsc2Ugd2FybigiWEZBIC0gSW52YWxpZCBub2RlIHRvIHVzZSBpbiBzZXRQcm9wZXJ0eSIpfX1fYmluZEl0ZW1zKGUsdCl7aWYoIU9iamVjdC5oYXNPd24oZSwiaXRlbXMiKXx8IU9iamVjdC5oYXNPd24oZSwiYmluZEl0ZW1zIil8fGUuYmluZEl0ZW1zLmlzRW1wdHkoKSlyZXR1cm47Zm9yKGNvbnN0IHQgb2YgZS5pdGVtcy5jaGlsZHJlbillW2xsXSh0KTtlLml0ZW1zLmNsZWFyKCk7Y29uc3Qgbj1uZXcgSXRlbXMoe30pLGE9bmV3IEl0ZW1zKHt9KTtlW2xvXShuKTtlLml0ZW1zLnB1c2gobik7ZVtsb10oYSk7ZS5pdGVtcy5wdXNoKGEpO2Zvcihjb25zdHtyZWY6cixsYWJlbFJlZjpzLHZhbHVlUmVmOmksY29ubmVjdGlvbjpvfW9mIGUuYmluZEl0ZW1zLmNoaWxkcmVuKXtpZihvKWNvbnRpbnVlO2lmKCFyKWNvbnRpbnVlO2NvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxyLCExLCExKTtpZihlKWZvcihjb25zdCB0IG9mIGUpe2lmKCF0W0tvXSh0aGlzLmRhdGFzZXRzKSl7d2FybihgWEZBIC0gSW52YWxpZCByZWYgKCR7cn0pOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuYCk7Y29udGludWV9Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKCFlKXt3YXJuKGBYRkEgLSBJbnZhbGlkIGxhYmVsOiAke3N9LmApO2NvbnRpbnVlfWNvbnN0W29dPWU7aWYoIW9bS29dKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIGxhYmVsOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgbD1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LGksITAsITEpO2lmKCFsKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHZhbHVlOiAke2l9LmApO2NvbnRpbnVlfWNvbnN0W2ZdPWw7aWYoIWZbS29dKHRoaXMuZGF0YXNldHMpKXt3YXJuKCJYRkEgLSBJbnZhbGlkIHZhbHVlOiBtdXN0IGJlIGEgZGF0YXNldHMgY2hpbGQuIik7Y29udGludWV9Y29uc3QgYz1jcmVhdGVUZXh0KG9bZ2xdKCkpLGg9Y3JlYXRlVGV4dChmW2dsXSgpKTtuW2xvXShjKTtuLnRleHQucHVzaChjKTthW2xvXShoKTthLnRleHQucHVzaChoKX1lbHNlIHdhcm4oYFhGQSAtIEludmFsaWQgcmVmZXJlbmNlOiAke3J9LmApfX1fYmluZE9jY3VycmVuY2VzKGUsdCxuKXtsZXQgYTtpZih0Lmxlbmd0aD4xKXthPWVbbW9dKCk7YVtsbF0oYS5vY2N1cik7YS5vY2N1cj1udWxsfXRoaXMuX2JpbmRWYWx1ZShlLHRbMF0sbik7dGhpcy5fc2V0UHJvcGVydGllcyhlLHRbMF0pO3RoaXMuX2JpbmRJdGVtcyhlLHRbMF0pO2lmKDE9PT10Lmxlbmd0aClyZXR1cm47Y29uc3Qgcj1lW01vXSgpLHM9ZVtlbF0saT1yW3pvXShlKTtmb3IobGV0IGU9MSxvPXQubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89dFtlXSxsPWFbbW9dKCk7cltzXS5wdXNoKGwpO3JbTG9dKGkrZSxsKTt0aGlzLl9iaW5kVmFsdWUobCxvLG4pO3RoaXMuX3NldFByb3BlcnRpZXMobCxvKTt0aGlzLl9iaW5kSXRlbXMobCxvKX19X2NyZWF0ZU9jY3VycmVuY2VzKGUpe2lmKCF0aGlzLmVtcHR5TWVyZ2UpcmV0dXJuO2NvbnN0e29jY3VyOnR9PWU7aWYoIXR8fHQuaW5pdGlhbDw9MSlyZXR1cm47Y29uc3Qgbj1lW01vXSgpLGE9ZVtlbF07aWYoIShuW2FdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSkpcmV0dXJuO2xldCByO3I9ZS5uYW1lP25bYV0uY2hpbGRyZW4uZmlsdGVyKHQ9PnQubmFtZT09PWUubmFtZSkubGVuZ3RoOm5bYV0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IHM9blt6b10oZSkrMSxpPXQuaW5pdGlhbC1yO2lmKGkpe2NvbnN0IHQ9ZVttb10oKTt0W2xsXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7blthXS5wdXNoKHQpO25bTG9dKHMsdCk7Zm9yKGxldCBlPTE7ZTxpO2UrKyl7Y29uc3Qgcj10W21vXSgpO25bYV0ucHVzaChyKTtuW0xvXShzK2Uscil9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjpufT1lO2lmKCFufHwhdClyZXR1cm5bMSwxXTtjb25zdCBhPS0xPT09bi5tYXg/MS8wOm4ubWF4O3JldHVybltuLm1pbixhXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IG49W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtSb10oKSl7aWYoYVtib10pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1hW2VsXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1hLm1lcmdlTW9kZTtjb25zdCBlPXRbUm9dKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFtab109PT1sZj8tMTp0W1pvXSxuPWFbYm9dPW5ldyBYbWxPYmplY3QoZSxhLm5hbWV8fCJyb290Iik7dFtsb10obik7dGhpcy5fYmluZEVsZW1lbnQoYSxuKX1jb250aW51ZX1pZighYVtXb10oKSljb250aW51ZTtsZXQgZT0hMSxyPW51bGwscz1udWxsLGk9bnVsbDtpZihhLmJpbmQpe3N3aXRjaChhLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIWEuYmluZC5yZWYpe3dhcm4oYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7YVtlbF19LmApO3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1zPWEuYmluZC5yZWZ9YS5iaW5kLnBpY3R1cmUmJihyPWEuYmluZC5waWN0dXJlW2dvXSl9Y29uc3RbbyxsXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYocyl7aT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKG51bGw9PT1pKXtpPWNyZWF0ZURhdGFOb2RlKHRoaXMuZGF0YSx0LHMpO2lmKCFpKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKGlbcG9dPSEwKTt0aGlzLl9zZXRBbmRCaW5kKGEsaSk7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoaT1pLmZpbHRlcihlPT4hZVtwb10pKTtpLmxlbmd0aD5sP2k9aS5zbGljZSgwLGwpOjA9PT1pLmxlbmd0aCYmKGk9bnVsbCk7aSYmdGhpcy5faXNDb25zdW1lRGF0YSgpJiZpLmZvckVhY2goZT0+e2VbcG9dPSEwfSl9ZWxzZXtpZighYS5uYW1lKXt0aGlzLl9zZXRBbmRCaW5kKGEsdCk7Y29udGludWV9aWYodGhpcy5faXNDb25zdW1lRGF0YSgpKXtjb25zdCBuPVtdO2Zvcig7bi5sZW5ndGg8bDspe2NvbnN0IHI9dGhpcy5fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoYS5uYW1lLGFbX29dKCksdCxlKTtpZighcilicmVhaztyW3BvXT0hMDtuLnB1c2gocil9aT1uLmxlbmd0aD4wP246bnVsbH1lbHNle2k9dFtPb10oYS5uYW1lLCExLHRoaXMuZW1wdHlNZXJnZSkubmV4dCgpLnZhbHVlO2lmKCFpKXtpZigwPT09byl7bi5wdXNoKGEpO2NvbnRpbnVlfWNvbnN0IGU9dFtab109PT1sZj8tMTp0W1pvXTtpPWFbYm9dPW5ldyBYbWxPYmplY3QoZSxhLm5hbWUpO3RoaXMuZW1wdHlNZXJnZSYmKGlbcG9dPSEwKTt0W2xvXShpKTt0aGlzLl9zZXRBbmRCaW5kKGEsaSk7Y29udGludWV9dGhpcy5lbXB0eU1lcmdlJiYoaVtwb109ITApO2k9W2ldfX1pP3RoaXMuX2JpbmRPY2N1cnJlbmNlcyhhLGkscik6bz4wP3RoaXMuX3NldEFuZEJpbmQoYSx0KTpuLnB1c2goYSl9bi5mb3JFYWNoKGU9PmVbTW9dKClbbGxdKGUpKX19Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtSb10oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IG49dC5hdCgtMSksW2Escl09bjtpZihhKzE9PT1yLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCBzPXJbKytuWzBdXSxpPWUuZ2V0KHNbeWxdKTtpZihpKXNbcGxdKGkpO2Vsc2V7Y29uc3QgdD1zW3ZvXSgpO2Zvcihjb25zdCBuIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQoblt5bF0pO2lmKHQpe25bcGxdKHQpO2JyZWFrfX19Y29uc3Qgbz1zW1JvXSgpO28ubGVuZ3RoPjAmJnQucHVzaChbLTEsb10pfWNvbnN0IG49Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W1JvXSgpKSJkYXRhIiE9PWVbZWxdJiZlW2psXShuKTt0aGlzLmRhdGFbamxdKG4pO24ucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIG4uam9pbigiIil9fWNvbnN0IGZmPXZsLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsZT0+ZT49MSYmZTw9OCl9fWNsYXNzIEFnZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhZ2VudCIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmNvbW1vbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFsd2F5c0VtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYWx3YXlzRW1iZWQiKX19Y2xhc3MgQW1kIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJhbWQiKX19Y2xhc3MgY29uZmlnX0FyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImFyZWEiKTt0aGlzLmxldmVsPWdldEludGVnZXIoe2RhdGE6ZS5sZXZlbCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0xJiZlPD0zfSk7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyIiLCJiYXJjb2RlIiwiY29yZWluaXQiLCJkZXZpY2VEcml2ZXIiLCJmb250IiwiZ2VuZXJhbCIsImxheW91dCIsIm1lcmdlIiwic2NyaXB0Iiwic2lnbmF0dXJlIiwic291cmNlU2V0IiwidGVtcGxhdGVDYWNoZSJdKX19Y2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYXR0cmlidXRlcyIsWyJwcmVzZXJ2ZSIsImRlbGVnYXRlIiwiaWdub3JlIl0pfX1jbGFzcyBBdXRvU2F2ZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiYXV0b1NhdmUiLFsiZGlzYWJsZWQiLCJlbmFibGVkIl0pfX1jbGFzcyBCYXNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJiYXNlIil9fWNsYXNzIEJhdGNoT3V0cHV0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJiYXRjaE91dHB1dCIpO3RoaXMuZm9ybWF0PWdldFN0cmluZ09wdGlvbihlLmZvcm1hdCxbIm5vbmUiLCJjb25jYXQiLCJ6aXAiLCJ6aXBDb21wcmVzcyJdKX19Y2xhc3MgQmVoYXZpb3JPdmVycmlkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImJlaGF2aW9yT3ZlcnJpZGUiKX1ba29dKCl7dGhpc1tnb109bmV3IE1hcCh0aGlzW2dvXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihlPT5lLmluY2x1ZGVzKCI6IikpLm1hcChlPT5lLnNwbGl0KCI6IiwyKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNvbXByZXNzIik7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY29waWVzIiwxLGU9PmU+PTEpfX1jbGFzcyBDcmVhdG9yIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJjcmVhdG9yIil9fWNsYXNzIEN1cnJlbnRQYWdlIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiY3VycmVudFBhZ2UiLDAsZT0+ZT49MCl9fWNsYXNzIERhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImRhdGEiLCEwKTt0aGlzLmFkanVzdERhdGE9bnVsbDt0aGlzLmF0dHJpYnV0ZXM9bnVsbDt0aGlzLmluY3JlbWVudGFsTG9hZD1udWxsO3RoaXMub3V0cHV0WFNMPW51bGw7dGhpcy5yYW5nZT1udWxsO3RoaXMucmVjb3JkPW51bGw7dGhpcy5zdGFydE5vZGU9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMud2luZG93PW51bGw7dGhpcy54c2w9bnVsbDt0aGlzLmV4Y2x1ZGVOUz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmFuc2Zvcm09bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEZWJ1ZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZGVidWciLCEwKTt0aGlzLnVyaT1udWxsfX1jbGFzcyBEZWZhdWx0VHlwZWZhY2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJkZWZhdWx0VHlwZWZhY2UiKTt0aGlzLndyaXRpbmdTY3JpcHQ9Z2V0U3RyaW5nT3B0aW9uKGUud3JpdGluZ1NjcmlwdCxbIioiLCJBcmFiaWMiLCJDeXJpbGxpYyIsIkVhc3RFdXJvcGVhblJvbWFuIiwiR3JlZWsiLCJIZWJyZXciLCJKYXBhbmVzZSIsIktvcmVhbiIsIlJvbWFuIiwiU2ltcGxpZmllZENoaW5lc2UiLCJUaGFpIiwiVHJhZGl0aW9uYWxDaGluZXNlIiwiVmlldG5hbWVzZSJdKX19Y2xhc3MgRGVzdGluYXRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImRlc3RpbmF0aW9uIixbInBkZiIsInBjbCIsInBzIiwid2ViQ2xpZW50IiwienBsIl0pfX1jbGFzcyBEb2N1bWVudEFzc2VtYmx5IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImRvY3VtZW50QXNzZW1ibHkiKX19Y2xhc3MgRHJpdmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJkcml2ZXIiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIER1cGxleE9wdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZHVwbGV4T3B0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhGbGlwTG9uZ0VkZ2UiLCJkdXBsZXhGbGlwU2hvcnRFZGdlIl0pfX1jbGFzcyBEeW5hbWljUmVuZGVyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJkeW5hbWljUmVuZGVyIixbImZvcmJpZGRlbiIsInJlcXVpcmVkIl0pfX1jbGFzcyBFbWJlZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJlbWJlZCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJlbmNyeXB0Iil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5lbmNyeXB0aW9uTGV2ZWw9bnVsbDt0aGlzLnBlcm1pc3Npb25zPW51bGx9fWNsYXNzIEVuY3J5cHRpb25MZXZlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZW5jcnlwdGlvbkxldmVsIixbIjQwYml0IiwiMTI4Yml0Il0pfX1jbGFzcyBFbmZvcmNlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJlbmZvcmNlIil9fWNsYXNzIEVxdWF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZXF1YXRlIik7dGhpcy5mb3JjZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZm9yY2UsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+MD09PWV9KTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIifX1jbGFzcyBFcXVhdGVSYW5nZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiZXF1YXRlUmFuZ2UiKTt0aGlzLmZyb209ZS5mcm9tfHwiIjt0aGlzLnRvPWUudG98fCIiO3RoaXMuX3VuaWNvZGVSYW5nZT1lLnVuaWNvZGVSYW5nZXx8IiJ9Z2V0IHVuaWNvZGVSYW5nZSgpe2NvbnN0IGU9W10sdD0vVVwrKFswLTlhLWZBLUZdKykvLG49dGhpcy5fdW5pY29kZVJhbmdlO2ZvcihsZXQgYSBvZiBuLnNwbGl0KCIsIikubWFwKGU9PmUudHJpbSgpKS5maWx0ZXIoZT0+ISFlKSl7YT1hLnNwbGl0KCItIiwyKS5tYXAoZT0+e2NvbnN0IG49ZS5tYXRjaCh0KTtyZXR1cm4gbj9wYXJzZUludChuWzFdLDE2KTowfSk7MT09PWEubGVuZ3RoJiZhLnB1c2goYVswXSk7ZS5wdXNoKGEpfXJldHVybiBzaGFkb3codGhpcywidW5pY29kZVJhbmdlIixlKX19Y2xhc3MgRXhjbHVkZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImV4Y2x1ZGUiKX1ba29dKCl7dGhpc1tnb109dGhpc1tnb10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+ZSYmWyJjYWxjdWxhdGUiLCJjbG9zZSIsImVudGVyIiwiZXhpdCIsImluaXRpYWxpemUiLCJyZWFkeSIsInZhbGlkYXRlIl0uaW5jbHVkZXMoZSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibGV2ZWwiLDAsZT0+ZT4wKX19Y2xhc3MgTGluZWFyaXplZCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJsaW5lYXJpemVkIil9fWNsYXNzIExvY2FsZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibG9jYWxlIil9fWNsYXNzIExvY2FsZVNldCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibG9jYWxlU2V0Iil9fWNsYXNzIExvZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibG9nIiwhMCk7dGhpcy5tb2RlPW51bGw7dGhpcy50aHJlc2hvbGQ9bnVsbDt0aGlzLnRvPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgTWFwRWxlbWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibWFwIiwhMCk7dGhpcy5lcXVhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXF1YXRlUmFuZ2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZWRpdW1JbmZvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJtZWRpdW1JbmZvIiwhMCk7dGhpcy5tYXA9bnVsbH19Y2xhc3MgY29uZmlnX01lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm1lc3NhZ2UiLCEwKTt0aGlzLm1zZ0lkPW51bGw7dGhpcy5zZXZlcml0eT1udWxsfX1jbGFzcyBNZXNzYWdpbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm1lc3NhZ2luZyIsITApO3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1vZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm1vZGUiLFsiYXBwZW5kIiwib3ZlcndyaXRlIl0pfX1jbGFzcyBNb2RpZnlBbm5vdHMgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibW9kaWZ5QW5ub3RzIil9fWNsYXNzIE1zZ0lkIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibXNnSWQiLDEsZT0+ZT49MSl9fWNsYXNzIE5hbWVBdHRyIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJuYW1lQXR0ciIpfX1jbGFzcyBOZXZlckVtYmVkIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwibmV2ZXJFbWJlZCIpfX1jbGFzcyBOdW1iZXJPZkNvcGllcyBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm51bWJlck9mQ29waWVzIixudWxsLGU9PmU+PTImJmU8PTUpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWNrZXRzIil9W2tvXSgpeyIqIiE9PXRoaXNbZ29dJiYodGhpc1tnb109dGhpc1tnb10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+WyJjb25maWciLCJkYXRhc2V0cyIsInRlbXBsYXRlIiwieGZkZiIsInhzbHQiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBQYWdlT2Zmc2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWdlT2Zmc2V0Iik7dGhpcy54PWdldEludGVnZXIoe2RhdGE6ZS54LGRlZmF1bHRWYWx1ZToidXNlWERDU2V0dGluZyIsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnk9Z2V0SW50ZWdlcih7ZGF0YTplLnksZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pfX1jbGFzcyBQYWdlUmFuZ2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBhZ2VSYW5nZSIpfVtrb10oKXtjb25zdCBlPXRoaXNbZ29dLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9PnBhcnNlSW50KGUsMTApKSx0PVtdO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rPTIpdC5wdXNoKGUuc2xpY2UobixuKzIpKTt0aGlzW2dvXT10fX1jbGFzcyBQYWdpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWdpbmF0aW9uIixbInNpbXBsZXgiLCJkdXBsZXhTaG9ydEVkZ2UiLCJkdXBsZXhMb25nRWRnZSJdKX19Y2xhc3MgUGFnaW5hdGlvbk92ZXJyaWRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwYWdpbmF0aW9uT3ZlcnJpZGUiLFsibm9uZSIsImZvcmNlRHVwbGV4IiwiZm9yY2VEdXBsZXhMb25nRWRnZSIsImZvcmNlRHVwbGV4U2hvcnRFZGdlIiwiZm9yY2VTaW1wbGV4Il0pfX1jbGFzcyBQYXJ0IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGFydCIsMSxlPT4hMSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJyYW5nZSIpfVtrb10oKXt0aGlzW2dvXT10aGlzW2dvXS5zcGxpdCgiLCIsMikubWFwKGU9PmUuc3BsaXQoIi0iKS5tYXAoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkuZmlsdGVyKGU9PmUuZXZlcnkoZT0+IWlzTmFOKGUpKSkubWFwKGU9PnsxPT09ZS5sZW5ndGgmJmUucHVzaChlWzBdKTtyZXR1cm4gZX0pfX1jbGFzcyBSZWNvcmQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJyZWNvcmQiKX1ba29dKCl7dGhpc1tnb109dGhpc1tnb10udHJpbSgpO2NvbnN0IGU9cGFyc2VJbnQodGhpc1tnb10sMTApOyFpc05hTihlKSYmZT49MCYmKHRoaXNbZ29dPWUpfX1jbGFzcyBSZWxldmFudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInJlbGV2YW50Iil9W2tvXSgpe3RoaXNbZ29dPXRoaXNbZ29dLnRyaW0oKS5zcGxpdCgvXHMrLyl9fWNsYXNzIFJlbmFtZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInJlbmFtZSIpfVtrb10oKXt0aGlzW2dvXT10aGlzW2dvXS50cmltKCk7KHRoaXNbZ29dLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgieG1sIil8fC9bXHB7TH1fXVtccHtMfVxkLl9ccHtNfS1dKi91LnRlc3QodGhpc1tnb10pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJzdGFydFBhZ2UiLDAsZT0+ITApfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwic3Vic2V0QmVsb3ciLDEwMCxlPT5lPj0wJiZlPD0xMDApfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJzdXBwcmVzc0Jhbm5lciIpfX1jbGFzcyBUYWdnZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidGFnZ2VkIil9fWNsYXNzIGNvbmZpZ19UZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2U9bnVsbDt0aGlzLnJlbGV2YW50PW51bGw7dGhpcy5zdGFydFBhZ2U9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMueHNsPW51bGx9fWNsYXNzIFRocmVzaG9sZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0byIsWyJudWxsIiwibWVtb3J5Iiwic3RkZXJyIiwic3Rkb3V0Iiwic3lzdGVtIiwidXJpIl0pfX1jbGFzcyBUZW1wbGF0ZUNhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0ZW1wbGF0ZUNhY2hlIik7dGhpcy5tYXhFbnRyaWVzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhFbnRyaWVzLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgVHJhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhbnNmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ0eXBlIixbIm5vbmUiLCJhc2NpaTg1IiwiYXNjaWlIZXgiLCJjY2l0dGZheCIsImZsYXRlIiwibHp3IiwicnVuTGVuZ3RoIiwibmF0aXZlIiwieGRwIiwibWVyZ2VkWERQIl0pfX1jbGFzcyBVcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInVyaSIpfX1jbGFzcyBjb25maWdfVmFsaWRhdGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInZhbGlkYXRlIixbInByZVN1Ym1pdCIsInByZVByaW50IiwicHJlRXhlY3V0ZSIsInByZVNhdmUiXSl9fWNsYXNzIFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1ba29dKCl7dGhpc1tnb109dGhpc1tnb10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZmYsIndpbmRvdyIpfVtrb10oKXtjb25zdCBlPXRoaXNbZ29dLnNwbGl0KCIsIiwyKS5tYXAoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKTtpZihlLnNvbWUoZT0+aXNOYU4oZSkpKXRoaXNbZ29dPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tnb109ZX19fWNsYXNzIFhkYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihmZiwieGRjIiwhMCk7dGhpcy51cmk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ4ZHAiLCEwKTt0aGlzLnBhY2tldHM9bnVsbH19Y2xhc3MgWHNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGZmLCJ6cGwiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIENvbmZpZ05hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihDb25maWdOYW1lc3BhY2UsZSkpcmV0dXJuIENvbmZpZ05hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYWNyb2JhdChlKXtyZXR1cm4gbmV3IEFjcm9iYXQoZSl9c3RhdGljIGFjcm9iYXQ3KGUpe3JldHVybiBuZXcgQWNyb2JhdDcoZSl9c3RhdGljIEFEQkVfSlNDb25zb2xlKGUpe3JldHVybiBuZXcgQURCRV9KU0NvbnNvbGUoZSl9c3RhdGljIEFEQkVfSlNEZWJ1Z2dlcihlKXtyZXR1cm4gbmV3IEFEQkVfSlNEZWJ1Z2dlcihlKX1zdGF0aWMgYWRkU2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBBZGRTaWxlbnRQcmludChlKX1zdGF0aWMgYWRkVmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgYWRqdXN0RGF0YShlKXtyZXR1cm4gbmV3IEFkanVzdERhdGEoZSl9c3RhdGljIGFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBBZG9iZUV4dGVuc2lvbkxldmVsKGUpfXN0YXRpYyBhZ2VudChlKXtyZXR1cm4gbmV3IEFnZW50KGUpfXN0YXRpYyBhbHdheXNFbWJlZChlKXtyZXR1cm4gbmV3IEFsd2F5c0VtYmVkKGUpfXN0YXRpYyBhbWQoZSl7cmV0dXJuIG5ldyBBbWQoZSl9c3RhdGljIGFyZWEoZSl7cmV0dXJuIG5ldyBjb25maWdfQXJlYShlKX1zdGF0aWMgYXR0cmlidXRlcyhlKXtyZXR1cm4gbmV3IEF0dHJpYnV0ZXMoZSl9c3RhdGljIGF1dG9TYXZlKGUpe3JldHVybiBuZXcgQXV0b1NhdmUoZSl9c3RhdGljIGJhc2UoZSl7cmV0dXJuIG5ldyBCYXNlKGUpfXN0YXRpYyBiYXRjaE91dHB1dChlKXtyZXR1cm4gbmV3IEJhdGNoT3V0cHV0KGUpfXN0YXRpYyBiZWhhdmlvck92ZXJyaWRlKGUpe3JldHVybiBuZXcgQmVoYXZpb3JPdmVycmlkZShlKX1zdGF0aWMgY2FjaGUoZSl7cmV0dXJuIG5ldyBDYWNoZShlKX1zdGF0aWMgY2hhbmdlKGUpe3JldHVybiBuZXcgQ2hhbmdlKGUpfXN0YXRpYyBjb21tb24oZSl7cmV0dXJuIG5ldyBDb21tb24oZSl9c3RhdGljIGNvbXByZXNzKGUpe3JldHVybiBuZXcgQ29tcHJlc3MoZSl9c3RhdGljIGNvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKXtyZXR1cm4gbmV3IENvbXByZXNzTG9naWNhbFN0cnVjdHVyZShlKX1zdGF0aWMgY29tcHJlc3NPYmplY3RTdHJlYW0oZSl7cmV0dXJuIG5ldyBDb21wcmVzc09iamVjdFN0cmVhbShlKX1zdGF0aWMgY29tcHJlc3Npb24oZSl7cmV0dXJuIG5ldyBDb21wcmVzc2lvbihlKX1zdGF0aWMgY29uZmlnKGUpe3JldHVybiBuZXcgQ29uZmlnKGUpfXN0YXRpYyBjb25mb3JtYW5jZShlKXtyZXR1cm4gbmV3IENvbmZvcm1hbmNlKGUpfXN0YXRpYyBjb250ZW50Q29weShlKXtyZXR1cm4gbmV3IENvbnRlbnRDb3B5KGUpfXN0YXRpYyBjb3BpZXMoZSl7cmV0dXJuIG5ldyBDb3BpZXMoZSl9c3RhdGljIGNyZWF0b3IoZSl7cmV0dXJuIG5ldyBDcmVhdG9yKGUpfXN0YXRpYyBjdXJyZW50UGFnZShlKXtyZXR1cm4gbmV3IEN1cnJlbnRQYWdlKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgRGF0YShlKX1zdGF0aWMgZGVidWcoZSl7cmV0dXJuIG5ldyBEZWJ1ZyhlKX1zdGF0aWMgZGVmYXVsdFR5cGVmYWNlKGUpe3JldHVybiBuZXcgRGVmYXVsdFR5cGVmYWNlKGUpfXN0YXRpYyBkZXN0aW5hdGlvbihlKXtyZXR1cm4gbmV3IERlc3RpbmF0aW9uKGUpfXN0YXRpYyBkb2N1bWVudEFzc2VtYmx5KGUpe3JldHVybiBuZXcgRG9jdW1lbnRBc3NlbWJseShlKX1zdGF0aWMgZHJpdmVyKGUpe3JldHVybiBuZXcgRHJpdmVyKGUpfXN0YXRpYyBkdXBsZXhPcHRpb24oZSl7cmV0dXJuIG5ldyBEdXBsZXhPcHRpb24oZSl9c3RhdGljIGR5bmFtaWNSZW5kZXIoZSl7cmV0dXJuIG5ldyBEeW5hbWljUmVuZGVyKGUpfXN0YXRpYyBlbWJlZChlKXtyZXR1cm4gbmV3IEVtYmVkKGUpfXN0YXRpYyBlbmNyeXB0KGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbkxldmVsKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbkxldmVsKGUpfXN0YXRpYyBlbmZvcmNlKGUpe3JldHVybiBuZXcgRW5mb3JjZShlKX1zdGF0aWMgZXF1YXRlKGUpe3JldHVybiBuZXcgRXF1YXRlKGUpfXN0YXRpYyBlcXVhdGVSYW5nZShlKXtyZXR1cm4gbmV3IEVxdWF0ZVJhbmdlKGUpfXN0YXRpYyBleGNsdWRlKGUpe3JldHVybiBuZXcgRXhjbHVkZShlKX1zdGF0aWMgZXhjbHVkZU5TKGUpe3JldHVybiBuZXcgRXhjbHVkZU5TKGUpfXN0YXRpYyBmbGlwTGFiZWwoZSl7cmV0dXJuIG5ldyBGbGlwTGFiZWwoZSl9c3RhdGljIGZvbnRJbmZvKGUpe3JldHVybiBuZXcgY29uZmlnX0ZvbnRJbmZvKGUpfXN0YXRpYyBmb3JtRmllbGRGaWxsaW5nKGUpe3JldHVybiBuZXcgRm9ybUZpZWxkRmlsbGluZyhlKX1zdGF0aWMgZ3JvdXBQYXJlbnQoZSl7cmV0dXJuIG5ldyBHcm91cFBhcmVudChlKX1zdGF0aWMgaWZFbXB0eShlKXtyZXR1cm4gbmV3IElmRW1wdHkoZSl9c3RhdGljIGluY2x1ZGVYRFBDb250ZW50KGUpe3JldHVybiBuZXcgSW5jbHVkZVhEUENvbnRlbnQoZSl9c3RhdGljIGluY3JlbWVudGFsTG9hZChlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTG9hZChlKX1zdGF0aWMgaW5jcmVtZW50YWxNZXJnZShlKXtyZXR1cm4gbmV3IEluY3JlbWVudGFsTWVyZ2UoZSl9c3RhdGljIGludGVyYWN0aXZlKGUpe3JldHVybiBuZXcgSW50ZXJhY3RpdmUoZSl9c3RhdGljIGpvZyhlKXtyZXR1cm4gbmV3IEpvZyhlKX1zdGF0aWMgbGFiZWxQcmludGVyKGUpe3JldHVybiBuZXcgTGFiZWxQcmludGVyKGUpfXN0YXRpYyBsYXlvdXQoZSl7cmV0dXJuIG5ldyBMYXlvdXQoZSl9c3RhdGljIGxldmVsKGUpe3JldHVybiBuZXcgTGV2ZWwoZSl9c3RhdGljIGxpbmVhcml6ZWQoZSl7cmV0dXJuIG5ldyBMaW5lYXJpemVkKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBMb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IExvY2FsZVNldChlKX1zdGF0aWMgbG9nKGUpe3JldHVybiBuZXcgTG9nKGUpfXN0YXRpYyBtYXAoZSl7cmV0dXJuIG5ldyBNYXBFbGVtZW50KGUpfXN0YXRpYyBtZWRpdW1JbmZvKGUpe3JldHVybiBuZXcgTWVkaXVtSW5mbyhlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19NZXNzYWdlKGUpfXN0YXRpYyBtZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBNZXNzYWdpbmcoZSl9c3RhdGljIG1vZGUoZSl7cmV0dXJuIG5ldyBNb2RlKGUpfXN0YXRpYyBtb2RpZnlBbm5vdHMoZSl7cmV0dXJuIG5ldyBNb2RpZnlBbm5vdHMoZSl9c3RhdGljIG1zZ0lkKGUpe3JldHVybiBuZXcgTXNnSWQoZSl9c3RhdGljIG5hbWVBdHRyKGUpe3JldHVybiBuZXcgTmFtZUF0dHIoZSl9c3RhdGljIG5ldmVyRW1iZWQoZSl7cmV0dXJuIG5ldyBOZXZlckVtYmVkKGUpfXN0YXRpYyBudW1iZXJPZkNvcGllcyhlKXtyZXR1cm4gbmV3IE51bWJlck9mQ29waWVzKGUpfXN0YXRpYyBvcGVuQWN0aW9uKGUpe3JldHVybiBuZXcgT3BlbkFjdGlvbihlKX1zdGF0aWMgb3V0cHV0KGUpe3JldHVybiBuZXcgT3V0cHV0KGUpfXN0YXRpYyBvdXRwdXRCaW4oZSl7cmV0dXJuIG5ldyBPdXRwdXRCaW4oZSl9c3RhdGljIG91dHB1dFhTTChlKXtyZXR1cm4gbmV3IE91dHB1dFhTTChlKX1zdGF0aWMgb3ZlcnByaW50KGUpe3JldHVybiBuZXcgT3ZlcnByaW50KGUpfXN0YXRpYyBwYWNrZXRzKGUpe3JldHVybiBuZXcgUGFja2V0cyhlKX1zdGF0aWMgcGFnZU9mZnNldChlKXtyZXR1cm4gbmV3IFBhZ2VPZmZzZXQoZSl9c3RhdGljIHBhZ2VSYW5nZShlKXtyZXR1cm4gbmV3IFBhZ2VSYW5nZShlKX1zdGF0aWMgcGFnaW5hdGlvbihlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb24oZSl9c3RhdGljIHBhZ2luYXRpb25PdmVycmlkZShlKXtyZXR1cm4gbmV3IFBhZ2luYXRpb25PdmVycmlkZShlKX1zdGF0aWMgcGFydChlKXtyZXR1cm4gbmV3IFBhcnQoZSl9c3RhdGljIHBjbChlKXtyZXR1cm4gbmV3IFBjbChlKX1zdGF0aWMgcGRmKGUpe3JldHVybiBuZXcgUGRmKGUpfXN0YXRpYyBwZGZhKGUpe3JldHVybiBuZXcgUGRmYShlKX1zdGF0aWMgcGVybWlzc2lvbnMoZSl7cmV0dXJuIG5ldyBQZXJtaXNzaW9ucyhlKX1zdGF0aWMgcGlja1RyYXlCeVBERlNpemUoZSl7cmV0dXJuIG5ldyBQaWNrVHJheUJ5UERGU2l6ZShlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19QaWN0dXJlKGUpfXN0YXRpYyBwbGFpbnRleHRNZXRhZGF0YShlKXtyZXR1cm4gbmV3IFBsYWludGV4dE1ldGFkYXRhKGUpfXN0YXRpYyBwcmVzZW5jZShlKXtyZXR1cm4gbmV3IFByZXNlbmNlKGUpfXN0YXRpYyBwcmVzZW50KGUpe3JldHVybiBuZXcgUHJlc2VudChlKX1zdGF0aWMgcHJpbnQoZSl7cmV0dXJuIG5ldyBQcmludChlKX1zdGF0aWMgcHJpbnRIaWdoUXVhbGl0eShlKXtyZXR1cm4gbmV3IFByaW50SGlnaFF1YWxpdHkoZSl9c3RhdGljIHByaW50U2NhbGluZyhlKXtyZXR1cm4gbmV3IFByaW50U2NhbGluZyhlKX1zdGF0aWMgcHJpbnRlck5hbWUoZSl7cmV0dXJuIG5ldyBQcmludGVyTmFtZShlKX1zdGF0aWMgcHJvZHVjZXIoZSl7cmV0dXJuIG5ldyBQcm9kdWNlcihlKX1zdGF0aWMgcHMoZSl7cmV0dXJuIG5ldyBQcyhlKX1zdGF0aWMgcmFuZ2UoZSl7cmV0dXJuIG5ldyBSYW5nZShlKX1zdGF0aWMgcmVjb3JkKGUpe3JldHVybiBuZXcgUmVjb3JkKGUpfXN0YXRpYyByZWxldmFudChlKXtyZXR1cm4gbmV3IFJlbGV2YW50KGUpfXN0YXRpYyByZW5hbWUoZSl7cmV0dXJuIG5ldyBSZW5hbWUoZSl9c3RhdGljIHJlbmRlclBvbGljeShlKXtyZXR1cm4gbmV3IFJlbmRlclBvbGljeShlKX1zdGF0aWMgcnVuU2NyaXB0cyhlKXtyZXR1cm4gbmV3IFJ1blNjcmlwdHMoZSl9c3RhdGljIHNjcmlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19TY3JpcHQoZSl9c3RhdGljIHNjcmlwdE1vZGVsKGUpe3JldHVybiBuZXcgU2NyaXB0TW9kZWwoZSl9c3RhdGljIHNldmVyaXR5KGUpe3JldHVybiBuZXcgU2V2ZXJpdHkoZSl9c3RhdGljIHNpbGVudFByaW50KGUpe3JldHVybiBuZXcgU2lsZW50UHJpbnQoZSl9c3RhdGljIHN0YXBsZShlKXtyZXR1cm4gbmV3IFN0YXBsZShlKX1zdGF0aWMgc3RhcnROb2RlKGUpe3JldHVybiBuZXcgU3RhcnROb2RlKGUpfXN0YXRpYyBzdGFydFBhZ2UoZSl7cmV0dXJuIG5ldyBTdGFydFBhZ2UoZSl9c3RhdGljIHN1Ym1pdEZvcm1hdChlKXtyZXR1cm4gbmV3IFN1Ym1pdEZvcm1hdChlKX1zdGF0aWMgc3VibWl0VXJsKGUpe3JldHVybiBuZXcgU3VibWl0VXJsKGUpfXN0YXRpYyBzdWJzZXRCZWxvdyhlKXtyZXR1cm4gbmV3IFN1YnNldEJlbG93KGUpfXN0YXRpYyBzdXBwcmVzc0Jhbm5lcihlKXtyZXR1cm4gbmV3IFN1cHByZXNzQmFubmVyKGUpfXN0YXRpYyB0YWdnZWQoZSl7cmV0dXJuIG5ldyBUYWdnZWQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1RlbXBsYXRlKGUpfXN0YXRpYyB0ZW1wbGF0ZUNhY2hlKGUpe3JldHVybiBuZXcgVGVtcGxhdGVDYWNoZShlKX1zdGF0aWMgdGhyZXNob2xkKGUpe3JldHVybiBuZXcgVGhyZXNob2xkKGUpfXN0YXRpYyB0byhlKXtyZXR1cm4gbmV3IFRvKGUpfXN0YXRpYyB0cmFjZShlKXtyZXR1cm4gbmV3IFRyYWNlKGUpfXN0YXRpYyB0cmFuc2Zvcm0oZSl7cmV0dXJuIG5ldyBUcmFuc2Zvcm0oZSl9c3RhdGljIHR5cGUoZSl7cmV0dXJuIG5ldyBUeXBlKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBVcmkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgY29uZmlnX1ZhbGlkYXRlKGUpfXN0YXRpYyB2YWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpfXN0YXRpYyB2YWxpZGF0aW9uTWVzc2FnaW5nKGUpe3JldHVybiBuZXcgVmFsaWRhdGlvbk1lc3NhZ2luZyhlKX1zdGF0aWMgdmVyc2lvbihlKXtyZXR1cm4gbmV3IFZlcnNpb24oZSl9c3RhdGljIHZlcnNpb25Db250cm9sKGUpe3JldHVybiBuZXcgVmVyc2lvbkNvbnRyb2woZSl9c3RhdGljIHZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIHdlYkNsaWVudChlKXtyZXR1cm4gbmV3IFdlYkNsaWVudChlKX1zdGF0aWMgd2hpdGVzcGFjZShlKXtyZXR1cm4gbmV3IFdoaXRlc3BhY2UoZSl9c3RhdGljIHdpbmRvdyhlKXtyZXR1cm4gbmV3IFdpbmRvdyhlKX1zdGF0aWMgeGRjKGUpe3JldHVybiBuZXcgWGRjKGUpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyBYZHAoZSl9c3RhdGljIHhzbChlKXtyZXR1cm4gbmV3IFhzbChlKX1zdGF0aWMgenBsKGUpe3JldHVybiBuZXcgWnBsKGUpfX1jb25zdCBjZj12bC5jb25uZWN0aW9uU2V0LmlkO2NsYXNzIENvbm5lY3Rpb25TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsImNvbm5lY3Rpb25TZXQiLCEwKTt0aGlzLndzZGxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhtbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueHNkQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVmZmVjdGl2ZUlucHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJlZmZlY3RpdmVJbnB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFZmZlY3RpdmVPdXRwdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsImVmZmVjdGl2ZU91dHB1dFBvbGljeSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBPcGVyYXRpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsIm9wZXJhdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbnB1dD1lLmlucHV0fHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLm91dHB1dD1lLm91dHB1dHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBSb290RWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjZiwicm9vdEVsZW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFjdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjZiwic29hcEFjdGlvbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjZiwic29hcEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgY29ubmVjdGlvbl9zZXRfVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJ1cmkiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsIndzZGxBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGNmLCJ3c2RsQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmVmZmVjdGl2ZUlucHV0UG9saWN5PW51bGw7dGhpcy5lZmZlY3RpdmVPdXRwdXRQb2xpY3k9bnVsbDt0aGlzLm9wZXJhdGlvbj1udWxsO3RoaXMuc29hcEFjdGlvbj1udWxsO3RoaXMuc29hcEFkZHJlc3M9bnVsbDt0aGlzLndzZGxBZGRyZXNzPW51bGx9fWNsYXNzIFhtbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoY2YsInhtbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51cmk9bnVsbH19Y2xhc3MgWHNkQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihjZiwieHNkQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJvb3RFbGVtZW50PW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgQ29ubmVjdGlvblNldE5hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBjb25uZWN0aW9uX3NldF9VcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19Y29uc3QgaGY9dmwuZGF0YXNldHMuaWQ7Y2xhc3MgZGF0YXNldHNfRGF0YSBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihoZiwiZGF0YSIsZSl9W0dvXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihoZiwiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtubF0oZSl7Y29uc3QgdD1lW2VsXTsoImRhdGEiPT09dCYmZVtab109PT1oZnx8IlNpZ25hdHVyZSI9PT10JiZlW1pvXT09PXZsLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbbG9dKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihEYXRhc2V0c05hbWVzcGFjZSxlKSlyZXR1cm4gRGF0YXNldHNOYW1lc3BhY2VbZV0odCl9c3RhdGljIGRhdGFzZXRzKGUpe3JldHVybiBuZXcgRGF0YXNldHMoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBkYXRhc2V0c19EYXRhKGUpfX1jb25zdCB1Zj12bC5sb2NhbGVTZXQuaWQ7Y2xhc3MgQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJjYWxlbmRhclN5bWJvbHMiLCEwKTt0aGlzLm5hbWU9ImdyZWdvcmlhbiI7dGhpcy5kYXlOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5lcmFOYW1lcz1udWxsO3RoaXMubWVyaWRpZW1OYW1lcz1udWxsO3RoaXMubW9udGhOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJjdXJyZW5jeVN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIEN1cnJlbmN5U3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwiY3VycmVuY3lTeW1ib2xzIiwhMCk7dGhpcy5jdXJyZW5jeVN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoMyl9fWNsYXNzIERhdGVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJkYXRlUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgRGF0ZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgRGF0ZVRpbWVTeW1ib2xzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwiZGF5Iil9fWNsYXNzIERheU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJkYXlOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZGF5PW5ldyBYRkFPYmplY3RBcnJheSg3KX19Y2xhc3MgRXJhIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJlcmEiKX19Y2xhc3MgRXJhTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwibG9jYWxlIiwhMCk7dGhpcy5kZXNjPWUuZGVzY3x8IiI7dGhpcy5uYW1lPSJpc29uYW1lIjt0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsO3RoaXMuY3VycmVuY3lTeW1ib2xzPW51bGw7dGhpcy5kYXRlUGF0dGVybnM9bnVsbDt0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsO3RoaXMubnVtYmVyUGF0dGVybnM9bnVsbDt0aGlzLm51bWJlclN5bWJvbHM9bnVsbDt0aGlzLnRpbWVQYXR0ZXJucz1udWxsO3RoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lcmlkaWVtIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtZXJpZGllbU5hbWVzIiwhMCk7dGhpcy5tZXJpZGllbT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtb250aCIpfX1jbGFzcyBNb250aE5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJtb250aE5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5tb250aD1uZXcgWEZBT2JqZWN0QXJyYXkoMTIpfX1jbGFzcyBOdW1iZXJQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHVmLCJudW1iZXJQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBOdW1iZXJQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBOdW1iZXJTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwibnVtYmVyU3ltYm9scyIsITApO3RoaXMubnVtYmVyU3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsInRpbWVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBUaW1lUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsInRpbWVQYXR0ZXJucyIsITApO3RoaXMudGltZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBUeXBlRmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih1ZiwidHlwZUZhY2UiLCEwKTt0aGlzLm5hbWU9IiJ8ZS5uYW1lfX1jbGFzcyBUeXBlRmFjZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIodWYsInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBMb2NhbGVTZXROYW1lc3BhY2V7c3RhdGljW3FsXShlLHQpe2lmKE9iamVjdC5oYXNPd24oTG9jYWxlU2V0TmFtZXNwYWNlLGUpKXJldHVybiBMb2NhbGVTZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNhbGVuZGFyU3ltYm9scyhlKXtyZXR1cm4gbmV3IENhbGVuZGFyU3ltYm9scyhlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2woZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbChlKX1zdGF0aWMgY3VycmVuY3lTeW1ib2xzKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2xzKGUpfXN0YXRpYyBkYXRlUGF0dGVybihlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJuKGUpfXN0YXRpYyBkYXRlUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybnMoZSl9c3RhdGljIGRhdGVUaW1lU3ltYm9scyhlKXtyZXR1cm4gbmV3IERhdGVUaW1lU3ltYm9scyhlKX1zdGF0aWMgZGF5KGUpe3JldHVybiBuZXcgRGF5KGUpfXN0YXRpYyBkYXlOYW1lcyhlKXtyZXR1cm4gbmV3IERheU5hbWVzKGUpfXN0YXRpYyBlcmEoZSl7cmV0dXJuIG5ldyBFcmEoZSl9c3RhdGljIGVyYU5hbWVzKGUpe3JldHVybiBuZXcgRXJhTmFtZXMoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZVNldChlKX1zdGF0aWMgbWVyaWRpZW0oZSl7cmV0dXJuIG5ldyBNZXJpZGllbShlKX1zdGF0aWMgbWVyaWRpZW1OYW1lcyhlKXtyZXR1cm4gbmV3IE1lcmlkaWVtTmFtZXMoZSl9c3RhdGljIG1vbnRoKGUpe3JldHVybiBuZXcgTW9udGgoZSl9c3RhdGljIG1vbnRoTmFtZXMoZSl7cmV0dXJuIG5ldyBNb250aE5hbWVzKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJuKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybihlKX1zdGF0aWMgbnVtYmVyUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJucyhlKX1zdGF0aWMgbnVtYmVyU3ltYm9sKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9sKGUpfXN0YXRpYyBudW1iZXJTeW1ib2xzKGUpe3JldHVybiBuZXcgTnVtYmVyU3ltYm9scyhlKX1zdGF0aWMgdGltZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybihlKX1zdGF0aWMgdGltZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm5zKGUpfXN0YXRpYyB0eXBlRmFjZShlKXtyZXR1cm4gbmV3IFR5cGVGYWNlKGUpfXN0YXRpYyB0eXBlRmFjZXMoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZXMoZSl9fWNvbnN0IG1mPXZsLnNpZ25hdHVyZS5pZDtjbGFzcyBzaWduYXR1cmVfU2lnbmF0dXJlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKG1mLCJzaWduYXR1cmUiLCEwKX19Y2xhc3MgU2lnbmF0dXJlTmFtZXNwYWNle3N0YXRpY1txbF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFNpZ25hdHVyZU5hbWVzcGFjZSxlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBzaWduYXR1cmVfU2lnbmF0dXJlKGUpfX1jb25zdCBwZj12bC5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocGYsInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbcWxdKGUsdCl7aWYoT2JqZWN0Lmhhc093bihTdHlsZXNoZWV0TmFtZXNwYWNlLGUpKXJldHVybiBTdHlsZXNoZWV0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzdHlsZXNoZWV0KGUpe3JldHVybiBuZXcgU3R5bGVzaGVldChlKX19Y29uc3QgZGY9dmwueGRwLmlkO2NsYXNzIHhkcF9YZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZGYsInhkcCIsITApO3RoaXMudXVpZD1lLnV1aWR8fCIiO3RoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIjt0aGlzLmNvbmZpZz1udWxsO3RoaXMuY29ubmVjdGlvblNldD1udWxsO3RoaXMuZGF0YXNldHM9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMuc3R5bGVzaGVldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVthbF0oZSl7Y29uc3QgdD12bFtlW2VsXV07cmV0dXJuIHQmJmVbWm9dPT09dC5pZH19Y2xhc3MgWGRwTmFtZXNwYWNle3N0YXRpY1txbF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFhkcE5hbWVzcGFjZSxlKSlyZXR1cm4gWGRwTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyB4ZHAoZSl7cmV0dXJuIG5ldyB4ZHBfWGRwKGUpfX1jb25zdCBnZj12bC54aHRtbC5pZCxiZj1TeW1ib2woKSx3Zj1uZXcgU2V0KFsiY29sb3IiLCJmb250IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXN0cmV0Y2giLCJmb250LXN0eWxlIiwiZm9udC13ZWlnaHQiLCJtYXJnaW4iLCJtYXJnaW4tYm90dG9tIiwibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW4tdG9wIiwibGV0dGVyLXNwYWNpbmciLCJsaW5lLWhlaWdodCIsIm9ycGhhbnMiLCJwYWdlLWJyZWFrLWFmdGVyIiwicGFnZS1icmVhay1iZWZvcmUiLCJwYWdlLWJyZWFrLWluc2lkZSIsInRhYi1pbnRlcnZhbCIsInRhYi1zdG9wIiwidGV4dC1hbGlnbiIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtaW5kZW50IiwidmVydGljYWwtYWxpZ24iLCJ3aWRvd3MiLCJrZXJuaW5nLW1vZGUiLCJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIiwieGZhLWZvbnQtdmVydGljYWwtc2NhbGUiLCJ4ZmEtc3BhY2VydW4iLCJ4ZmEtdGFiLXN0b3BzIl0pLGpmPW5ldyBNYXAoW1sicGFnZS1icmVhay1hZnRlciIsImJyZWFrQWZ0ZXIiXSxbInBhZ2UtYnJlYWstYmVmb3JlIiwiYnJlYWtCZWZvcmUiXSxbInBhZ2UtYnJlYWstaW5zaWRlIiwiYnJlYWtJbnNpZGUiXSxbImtlcm5pbmctbW9kZSIsZT0+Im5vbmUiPT09ZT8ibm9uZSI6Im5vcm1hbCJdLFsieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsZT0+YHNjYWxlWCgke01hdGgubWF4KDAscGFyc2VJbnQoZSwxMCkvMTAwKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxwYXJzZUludChlLDEwKS8xMDApLnRvRml4ZWQoMil9KWBdLFsieGZhLXNwYWNlcnVuIiwiIl0sWyJ4ZmEtdGFiLXN0b3BzIiwiIl0sWyJmb250LXNpemUiLChlLHQpPT5tZWFzdXJlVG9TdHJpbmcoLjk5KihlPXQuZm9udFNpemU9TWF0aC5hYnMoZ2V0TWVhc3VyZW1lbnQoZSkpKSldLFsibGV0dGVyLXNwYWNpbmciLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibGluZS1oZWlnaHQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1ib3R0b20iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLWxlZnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLXJpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi10b3AiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsidGV4dC1pbmRlbnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsiZm9udC1mYW1pbHkiLGU9PmVdLFsidmVydGljYWwtYWxpZ24iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldXSksa2Y9L1xzKy9nLHlmPS9bXHJcbl0rL2cscWY9L1xyXG4/L2c7ZnVuY3Rpb24gbWFwU3R5bGUoZSx0LG4pe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gYTtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3Qsbl1vZiBlLnNwbGl0KCI7IikubWFwKGU9PmUuc3BsaXQoIjoiLDIpKSl7Y29uc3QgZT1qZi5nZXQodCk7aWYoIiI9PT1lKWNvbnRpbnVlO2xldCBzPW47ZSYmKHM9InN0cmluZyI9PXR5cGVvZiBlP2U6ZShuLHIpKTt0LmVuZHNXaXRoKCJzY2FsZSIpP2EudHJhbnNmb3JtPWEudHJhbnNmb3JtP2Ake2FbdF19ICR7c31gOnM6YVt0LnJlcGxhY2VBbGwoLy0oW2Etel0pL2dpLChlLHQpPT50LnRvVXBwZXJDYXNlKCkpXT1zfWEuZm9udEZhbWlseSYmc2V0Rm9udEZhbWlseSh7dHlwZWZhY2U6YS5mb250RmFtaWx5LHdlaWdodDphLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6YS5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6ci5mb250U2l6ZXx8MH0sdCx0W1BvXS5mb250RmluZGVyLGEpO2lmKG4mJmEudmVydGljYWxBbGlnbiYmIjBweCIhPT1hLnZlcnRpY2FsQWxpZ24mJmEuZm9udFNpemUpe2NvbnN0IGU9LjU4Myx0PS4zMzMsbj1nZXRNZWFzdXJlbWVudChhLmZvbnRTaXplKTthLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyhuKmUpO2EudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmcoTWF0aC5zaWduKGdldE1lYXN1cmVtZW50KGEudmVydGljYWxBbGlnbikpKm4qdCl9biYmYS5mb250U2l6ZSYmKGEuZm9udFNpemU9YGNhbGMoJHthLmZvbnRTaXplfSAqIHZhcigtLXRvdGFsLXNjYWxlLWZhY3RvcikpYCk7Zml4VGV4dEluZGVudChhKTtyZXR1cm4gYX1jb25zdCB2Zj1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgWGh0bWxPYmplY3QgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihnZix0KTt0aGlzW2JmXT0hMTt0aGlzLnN0eWxlPWUuc3R5bGV8fCIifVtjb10oZSl7c3VwZXJbY29dKGUpO3RoaXMuc3R5bGU9ZnVuY3Rpb24gY2hlY2tTdHlsZShlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnNwbGl0KCI7IikuZmlsdGVyKGU9PiEhZS50cmltKCkpLm1hcChlPT5lLnNwbGl0KCI6IiwyKS5tYXAoZT0+ZS50cmltKCkpKS5maWx0ZXIoKFt0LG5dKT0+eyJmb250LWZhbWlseSI9PT10JiZlW1BvXS51c2VkVHlwZWZhY2VzLmFkZChuKTtyZXR1cm4gd2YuaGFzKHQpfSkubWFwKGU9PmUuam9pbigiOiIpKS5qb2luKCI7Iik6IiJ9KHRoaXMpfVtpb10oKXtyZXR1cm4hdmYuaGFzKHRoaXNbZWxdKX1bcmxdKGUsdD0hMSl7aWYodCl0aGlzW2JmXT0hMDtlbHNle2U9ZS5yZXBsYWNlQWxsKHlmLCIiKTt0aGlzLnN0eWxlLmluY2x1ZGVzKCJ4ZmEtc3BhY2VydW46eWVzIil8fChlPWUucmVwbGFjZUFsbChrZiwiICIpKX1lJiYodGhpc1tnb10rPWUpfVtzbF0oZSx0PSEwKXtjb25zdCBuPU9iamVjdC5jcmVhdGUobnVsbCksYT17dG9wOk5hTixib3R0b206TmFOLGxlZnQ6TmFOLHJpZ2h0Ok5hTn07bGV0IHI9bnVsbDtmb3IoY29uc3RbZSx0XW9mIHRoaXMuc3R5bGUuc3BsaXQoIjsiKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjpuLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjpuLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6bi53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOm4ucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOm4ubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoZT0+Z2V0TWVhc3VyZW1lbnQoZSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOmEudG9wPWEuYm90dG9tPWEubGVmdD1hLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOmEudG9wPWEuYm90dG9tPWVbMF07YS5sZWZ0PWEucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6YS50b3A9ZVswXTthLmJvdHRvbT1lWzJdO2EubGVmdD1hLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0OmEudG9wPWVbMF07YS5sZWZ0PWVbMV07YS5ib3R0b209ZVsyXTthLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjphLnRvcD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOmEuYm90dG9tPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOmEubGVmdD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6YS5yaWdodD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjpyPWdldE1lYXN1cmVtZW50KHQpfWUucHVzaERhdGEobixhLHIpO2lmKHRoaXNbZ29dKWUuYWRkU3RyaW5nKHRoaXNbZ29dKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbUm9dKCkpIiN0ZXh0IiE9PXRbZWxdP3Rbc2xdKGUpOmUuYWRkU3RyaW5nKHRbZ29dKTt0JiZlLnBvcEZvbnQoKX1bd2xdKGUpe2NvbnN0IHQ9W107dGhpc1tqb109e2NoaWxkcmVuOnR9O3RoaXNbZm9dKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW2dvXSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgbjtuPXRoaXNbYmZdP3RoaXNbZ29dP3RoaXNbZ29dLnJlcGxhY2VBbGwocWYsIlxuIik6dm9pZCAwOnRoaXNbZ29dfHx2b2lkIDA7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZTp0aGlzW2VsXSxhdHRyaWJ1dGVzOntocmVmOnRoaXMuaHJlZixzdHlsZTptYXBTdHlsZSh0aGlzLnN0eWxlLHRoaXMsdGhpc1tiZl0pfSxjaGlsZHJlbjp0LHZhbHVlOm59KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9Zml4VVJMKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtzbF0oZSl7ZS5wdXNoRm9udCh7d2VpZ2h0OiJib2xkIn0pO3N1cGVyW3NsXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgQm9keSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJvZHkiKX1bd2xdKGUpe2NvbnN0IHQ9c3VwZXJbd2xdKGUpLHtodG1sOm59PXQ7aWYoIW4pcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bi5uYW1lPSJkaXYiO24uYXR0cmlidXRlcy5jbGFzcz1bInhmYVJpY2giXTtyZXR1cm4gdH19Y2xhc3MgQnIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiciIpfVtnbF0oKXtyZXR1cm4iXG4ifVtzbF0oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W3dsXShlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bd2xdKGUpe2NvbnN0IHQ9W107dGhpc1tqb109e2NoaWxkcmVuOnR9O3RoaXNbZm9dKHt9KTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tnb118fCIifSk7aWYoMT09PXQubGVuZ3RoKXtjb25zdCBlPXRbMF07aWYoZS5hdHRyaWJ1dGVzPy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sY2hpbGRyZW46dH0pfX1jbGFzcyBJIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaSIpfVtzbF0oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW3NsXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgTGkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJsaSIpfX1jbGFzcyBPbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm9sIil9fWNsYXNzIFAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJwIil9W3NsXShlKXtzdXBlcltzbF0oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W2dsXSgpe3JldHVybiB0aGlzW01vXSgpW1JvXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbZ2xdKCk6c3VwZXJbZ2xdKCkrIlxuIn19Y2xhc3MgU3BhbiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInNwYW4iKX19Y2xhc3MgU3ViIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3ViIil9fWNsYXNzIFN1cCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1cCIpfX1jbGFzcyBVbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInVsIil9fWNsYXNzIFhodG1sTmFtZXNwYWNle3N0YXRpY1txbF0oZSx0KXtpZihPYmplY3QuaGFzT3duKFhodG1sTmFtZXNwYWNlLGUpKXJldHVybiBYaHRtbE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgYShlKXtyZXR1cm4gbmV3IEEoZSl9c3RhdGljIGIoZSl7cmV0dXJuIG5ldyBCKGUpfXN0YXRpYyBib2R5KGUpe3JldHVybiBuZXcgQm9keShlKX1zdGF0aWMgYnIoZSl7cmV0dXJuIG5ldyBCcihlKX1zdGF0aWMgaHRtbChlKXtyZXR1cm4gbmV3IEh0bWwoZSl9c3RhdGljIGkoZSl7cmV0dXJuIG5ldyBJKGUpfXN0YXRpYyBsaShlKXtyZXR1cm4gbmV3IExpKGUpfXN0YXRpYyBvbChlKXtyZXR1cm4gbmV3IE9sKGUpfXN0YXRpYyBwKGUpe3JldHVybiBuZXcgUChlKX1zdGF0aWMgc3BhbihlKXtyZXR1cm4gbmV3IFNwYW4oZSl9c3RhdGljIHN1YihlKXtyZXR1cm4gbmV3IFN1YihlKX1zdGF0aWMgc3VwKGUpe3JldHVybiBuZXcgU3VwKGUpfXN0YXRpYyB1bChlKXtyZXR1cm4gbmV3IFVsKGUpfX1jb25zdCBTZj17Y29uZmlnOkNvbmZpZ05hbWVzcGFjZSxjb25uZWN0aW9uOkNvbm5lY3Rpb25TZXROYW1lc3BhY2UsZGF0YXNldHM6RGF0YXNldHNOYW1lc3BhY2UsbG9jYWxlU2V0OkxvY2FsZVNldE5hbWVzcGFjZSxzaWduYXR1cmU6U2lnbmF0dXJlTmFtZXNwYWNlLHN0eWxlc2hlZXQ6U3R5bGVzaGVldE5hbWVzcGFjZSx0ZW1wbGF0ZTpUZW1wbGF0ZU5hbWVzcGFjZSx4ZHA6WGRwTmFtZXNwYWNlLHhodG1sOlhodG1sTmFtZXNwYWNlfTtjbGFzcyBVbmtub3duTmFtZXNwYWNle2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZXNwYWNlSWQ9ZX1bcWxdKGUsdCl7cmV0dXJuIG5ldyBYbWxPYmplY3QodGhpcy5uYW1lc3BhY2VJZCxlLHQpfX1jbGFzcyBSb290IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKC0xLCJyb290IixPYmplY3QuY3JlYXRlKG51bGwpKTt0aGlzLmVsZW1lbnQ9bnVsbDt0aGlzW0VvXT1lfVtubF0oZSl7dGhpcy5lbGVtZW50PWU7cmV0dXJuITB9W2tvXSgpe3N1cGVyW2tvXSgpO2lmKHRoaXMuZWxlbWVudC50ZW1wbGF0ZSBpbnN0YW5jZW9mIFRlbXBsYXRlKXt0aGlzW0VvXS5zZXQoZmwsdGhpcy5lbGVtZW50KTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbY2xdKHRoaXNbRW9dKTt0aGlzLmVsZW1lbnQudGVtcGxhdGVbRW9dPXRoaXNbRW9dfX19Y2xhc3MgRW1wdHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoKXtzdXBlcigtMSwiIixPYmplY3QuY3JlYXRlKG51bGwpKX1bbmxdKGUpe3JldHVybiExfX1jbGFzcyBCdWlsZGVye2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbmFtZXNwYWNlU3RhY2s9W107dGhpcy5fbnNBZ25vc3RpY0xldmVsPTA7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXM9bmV3IE1hcDt0aGlzLl9uYW1lc3BhY2VzPW5ldyBNYXA7dGhpcy5fbmV4dE5zSWQ9TWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyh2bCkubWFwKCh7aWQ6ZX0pPT5lKSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT1lfHxuZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKX1idWlsZFJvb3QoZSl7cmV0dXJuIG5ldyBSb290KGUpfWJ1aWxkKHtuc1ByZWZpeDplLG5hbWU6dCxhdHRyaWJ1dGVzOm4sbmFtZXNwYWNlOmEscHJlZml4ZXM6cn0pe2NvbnN0IHM9bnVsbCE9PWE7aWYocyl7dGhpcy5fbmFtZXNwYWNlU3RhY2sucHVzaCh0aGlzLl9jdXJyZW50TmFtZXNwYWNlKTt0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShhKX1yJiZ0aGlzLl9hZGROYW1lc3BhY2VQcmVmaXgocik7aWYoT2JqZWN0Lmhhc093bihuLHRsKSl7Y29uc3QgZT1TZi5kYXRhc2V0cyx0PW5bdGxdO2xldCBhPW51bGw7Zm9yKGNvbnN0W24scl1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYodGhpcy5fZ2V0TmFtZXNwYWNlVG9Vc2Uobik9PT1lKXthPXt4ZmE6cn07YnJlYWt9fWE/blt0bF09YTpkZWxldGUgblt0bF19Y29uc3QgaT10aGlzLl9nZXROYW1lc3BhY2VUb1VzZShlKSxvPWk/LltxbF0odCxuKXx8bmV3IEVtcHR5O29bR29dKCkmJnRoaXMuX25zQWdub3N0aWNMZXZlbCsrOyhzfHxyfHxvW0dvXSgpKSYmKG9bdW9dPXtoYXNOYW1lc3BhY2U6cyxwcmVmaXhlczpyLG5zQWdub3N0aWM6b1tHb10oKX0pO3JldHVybiBvfWlzTnNBZ25vc3RpYygpe3JldHVybiB0aGlzLl9uc0Fnbm9zdGljTGV2ZWw+MH1fc2VhcmNoTmFtZXNwYWNlKGUpe2xldCB0PXRoaXMuX25hbWVzcGFjZXMuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Zm9yKGNvbnN0W24se2NoZWNrOmF9XW9mIE9iamVjdC5lbnRyaWVzKHZsKSlpZihhKGUpKXt0PVNmW25dO2lmKHQpe3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9YnJlYWt9dD1uZXcgVW5rbm93bk5hbWVzcGFjZSgrK3RoaXMuX25leHROc0lkKTt0aGlzLl9uYW1lc3BhY2VzLnNldChlLHQpO3JldHVybiB0fV9hZGROYW1lc3BhY2VQcmVmaXgoZSl7Zm9yKGNvbnN0e3ByZWZpeDp0LHZhbHVlOm59b2YgZSl7Y29uc3QgZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uobik7dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0T3JJbnNlcnRDb21wdXRlZCh0LG1ha2VBcnIpLnB1c2goZSl9fV9nZXROYW1lc3BhY2VUb1VzZShlKXtpZighZSlyZXR1cm4gdGhpcy5fY3VycmVudE5hbWVzcGFjZTtjb25zdCB0PXRoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKTtpZih0Py5sZW5ndGg+MClyZXR1cm4gdC5hdCgtMSk7d2FybihgVW5rbm93biBuYW1lc3BhY2UgcHJlZml4OiAke2V9LmApO3JldHVybiBudWxsfWNsZWFuKGUpe2NvbnN0e2hhc05hbWVzcGFjZTp0LHByZWZpeGVzOm4sbnNBZ25vc3RpYzphfT1lO3QmJih0aGlzLl9jdXJyZW50TmFtZXNwYWNlPXRoaXMuX25hbWVzcGFjZVN0YWNrLnBvcCgpKTtuJiZuLmZvckVhY2goKHtwcmVmaXg6ZX0pPT57dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuZ2V0KGUpLnBvcCgpfSk7YSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fWNsYXNzIFhGQVBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3IoZT1udWxsLHQ9ITEpe3N1cGVyKCk7dGhpcy5fYnVpbGRlcj1uZXcgQnVpbGRlcihlKTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9nbG9iYWxEYXRhPXt1c2VkVHlwZWZhY2VzOm5ldyBTZXR9O3RoaXMuX2lkcz1uZXcgTWFwO3RoaXMuX2N1cnJlbnQ9dGhpcy5fYnVpbGRlci5idWlsZFJvb3QodGhpcy5faWRzKTt0aGlzLl9lcnJvckNvZGU9R2k7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1HaSl7dGhpcy5fY3VycmVudFtrb10oKTtyZXR1cm4gdGhpcy5fY3VycmVudC5lbGVtZW50fX1vblRleHQoZSl7ZT1lLnJlcGxhY2UodGhpcy5fbmJzcHMsZT0+ZS5zbGljZSgxKSsiICIpO3RoaXMuX3JpY2hUZXh0fHx0aGlzLl9jdXJyZW50W2lvXSgpP3RoaXMuX2N1cnJlbnRbcmxdKGUsdGhpcy5fcmljaFRleHQpOnRoaXMuX3doaXRlUmVnZXgudGVzdChlKXx8dGhpcy5fY3VycmVudFtybF0oZS50cmltKCkpfW9uQ2RhdGEoZSl7dGhpcy5fY3VycmVudFtybF0oZSl9X21rQXR0cmlidXRlcyhlLHQpe2xldCBuPW51bGwsYT1udWxsO2NvbnN0IHI9T2JqZWN0LmNyZWF0ZSh7fSk7Zm9yKGNvbnN0e25hbWU6cyx2YWx1ZTppfW9mIGUpaWYoInhtbG5zIj09PXMpbj93YXJuKGBYRkEgLSBtdWx0aXBsZSBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpbiA8JHt0fT5gKTpuPWk7ZWxzZSBpZihzLnN0YXJ0c1dpdGgoInhtbG5zOiIpKXtjb25zdCBlPXMuc3Vic3RyaW5nKDYpO2E/Pz1bXTthLnB1c2goe3ByZWZpeDplLHZhbHVlOml9KX1lbHNle2NvbnN0IGU9cy5pbmRleE9mKCI6Iik7aWYoLTE9PT1lKXJbc109aTtlbHNle2NvbnN0IHQ9clt0bF0/Pz1PYmplY3QuY3JlYXRlKG51bGwpLFtuLGFdPVtzLnNsaWNlKDAsZSkscy5zbGljZShlKzEpXTsodFtuXXx8PU9iamVjdC5jcmVhdGUobnVsbCkpW2FdPWl9fXJldHVybltuLGEscl19X2dldE5hbWVBbmRQcmVmaXgoZSx0KXtjb25zdCBuPWUuaW5kZXhPZigiOiIpO3JldHVybi0xPT09bj9bZSxudWxsXTpbZS5zdWJzdHJpbmcobisxKSx0PyIiOmUuc3Vic3RyaW5nKDAsbildfW9uQmVnaW5FbGVtZW50KGUsdCxuKXtjb25zdFthLHIsc109dGhpcy5fbWtBdHRyaWJ1dGVzKHQsZSksW2ksb109dGhpcy5fZ2V0TmFtZUFuZFByZWZpeChlLHRoaXMuX2J1aWxkZXIuaXNOc0Fnbm9zdGljKCkpLGw9dGhpcy5fYnVpbGRlci5idWlsZCh7bnNQcmVmaXg6byxuYW1lOmksYXR0cmlidXRlczpzLG5hbWVzcGFjZTphLHByZWZpeGVzOnJ9KTtsW1BvXT10aGlzLl9nbG9iYWxEYXRhO2lmKG4pe2xba29dKCk7dGhpcy5fY3VycmVudFtubF0obCkmJmxbdWxdKHRoaXMuX2lkcyk7bFtjb10odGhpcy5fYnVpbGRlcil9ZWxzZXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnQpO3RoaXMuX2N1cnJlbnQ9bH19b25FbmRFbGVtZW50KGUpe2NvbnN0IHQ9dGhpcy5fY3VycmVudDtpZih0W1VvXSgpJiYic3RyaW5nIj09dHlwZW9mIHRbZ29dKXtjb25zdCBlPW5ldyBYRkFQYXJzZXI7ZS5fZ2xvYmFsRGF0YT10aGlzLl9nbG9iYWxEYXRhO2NvbnN0IG49ZS5wYXJzZSh0W2dvXSk7dFtnb109bnVsbDt0W25sXShuKX10W2tvXSgpO3RoaXMuX2N1cnJlbnQ9dGhpcy5fc3RhY2sucG9wKCk7dGhpcy5fY3VycmVudFtubF0odCkmJnRbdWxdKHRoaXMuX2lkcyk7dFtjb10odGhpcy5fYnVpbGRlcil9b25FcnJvcihlKXt0aGlzLl9lcnJvckNvZGU9ZX19Y2xhc3MgWEZBRmFjdG9yeXtjb25zdHJ1Y3RvcihlKXt0cnl7dGhpcy5yb290PShuZXcgWEZBUGFyc2VyKS5wYXJzZShYRkFGYWN0b3J5Ll9jcmVhdGVEb2N1bWVudChlKSk7Y29uc3QgdD1uZXcgQmluZGVyKHRoaXMucm9vdCk7dGhpcy5mb3JtPXQuYmluZCgpO3RoaXMuZGF0YUhhbmRsZXI9bmV3IERhdGFIYW5kbGVyKHRoaXMucm9vdCx0LmdldERhdGEoKSk7dGhpcy5mb3JtW1BvXS50ZW1wbGF0ZT10aGlzLmZvcm19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgYW5kIGJpbmRpbmc6ICR7ZX1gKX19aXNWYWxpZCgpe3JldHVybiEoIXRoaXMucm9vdHx8IXRoaXMuZm9ybSl9X2NyZWF0ZVBhZ2VzSGVscGVyKCl7Y29uc3QgZT10aGlzLmZvcm1bYmxdKCk7cmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57Y29uc3QgbmV4dEl0ZXJhdGlvbj0oKT0+e3RyeXtjb25zdCBuPWUubmV4dCgpO24uZG9uZT90KG4udmFsdWUpOnNldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX1jYXRjaChlKXtuKGUpfX07c2V0VGltZW91dChuZXh0SXRlcmF0aW9uLDApfSl9YXN5bmMgX2NyZWF0ZVBhZ2VzKCl7dHJ5e3RoaXMucGFnZXM9YXdhaXQgdGhpcy5fY3JlYXRlUGFnZXNIZWxwZXIoKTt0aGlzLmRpbXM9dGhpcy5wYWdlcy5jaGlsZHJlbi5tYXAoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0Om59PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQsMTApLHBhcnNlSW50KG4sMTApXX0pfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBsYXlvdXQ6ICR7ZX1gKX19Z2V0Qm91bmRpbmdCb3goZSl7cmV0dXJuIHRoaXMuZGltc1tlXX1hc3luYyBnZXROdW1QYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7cmV0dXJuIHRoaXMuZGltcy5sZW5ndGh9c2V0SW1hZ2VzKGUpe3RoaXMuZm9ybVtQb10uaW1hZ2VzPWV9c2V0Rm9udHMoZSl7dGhpcy5mb3JtW1BvXS5mb250RmluZGVyPW5ldyBGb250RmluZGVyKGUpO2NvbnN0IHQ9W107Zm9yKGxldCBlIG9mIHRoaXMuZm9ybVtQb10udXNlZFR5cGVmYWNlcyl7ZT1zdHJpcFF1b3RlcyhlKTt0aGlzLmZvcm1bUG9dLmZvbnRGaW5kZXIuZmluZChlKXx8dC5wdXNoKGUpfXJldHVybiB0Lmxlbmd0aD4wP3Q6bnVsbH1hcHBlbmRGb250cyhlLHQpe3RoaXMuZm9ybVtQb10uZm9udEZpbmRlci5hZGQoZSx0KX1hc3luYyBnZXRQYWdlcygpe3RoaXMucGFnZXN8fGF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzKCk7Y29uc3QgZT10aGlzLnBhZ2VzO3RoaXMucGFnZXM9bnVsbDtyZXR1cm4gZX1zZXJpYWxpemVEYXRhKGUpe3JldHVybiB0aGlzLmRhdGFIYW5kbGVyLnNlcmlhbGl6ZShlKX1zdGF0aWMgX2NyZWF0ZURvY3VtZW50KGUpe3JldHVybiBlLmdldCgiL3hkcDp4ZHAiKT9lLnZhbHVlcygpLmpvaW4oIiIpOmUuZ2V0KCJ4ZHA6eGRwIil9c3RhdGljIGdldFJpY2hUZXh0QXNIdG1sKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e2xldCB0PW5ldyBYRkFQYXJzZXIoWGh0bWxOYW1lc3BhY2UsITApLnBhcnNlKGUpO2lmKCFbImJvZHkiLCJ4aHRtbCJdLmluY2x1ZGVzKHRbZWxdKSl7Y29uc3QgZT1YaHRtbE5hbWVzcGFjZS5ib2R5KHt9KTtlW2xvXSh0KTt0PWV9Y29uc3Qgbj10W3dsXSgpO2lmKCFuLnN1Y2Nlc3MpcmV0dXJuIG51bGw7Y29uc3R7aHRtbDphfT1uLHthdHRyaWJ1dGVzOnJ9PWE7aWYocil7ci5jbGFzcyYmPXIuY2xhc3MuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoInhmYSIpKTtyLmRpcj0iYXV0byJ9cmV0dXJue2h0bWw6YSxzdHI6dFtnbF0oKX19Y2F0Y2goZSl7d2FybihgWEZBIC0gYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBhcnNpbmcgb2YgcmljaCB0ZXh0OiAke2V9YCl9cmV0dXJuIG51bGx9fWNsYXNzIEFubm90YXRpb25GYWN0b3J5e3N0YXRpYyBjcmVhdGVHbG9iYWxzKGUpe3JldHVybiBQcm9taXNlLmFsbChbZS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGUuZW5zdXJlRG9jKCJ4ZmFEYXRhc2V0cyIpLGUuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKSxlLmVuc3VyZUNhdGFsb2coImJhc2VVcmwiKSxlLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIiksZS5lbnN1cmVDYXRhbG9nKCJnbG9iYWxDb2xvclNwYWNlQ2FjaGUiKV0pLnRoZW4oKFt0LG4sYSxyLHMsaV0pPT4oe3BkZk1hbmFnZXI6ZSxjYXRhbG9nOmUucGRmRG9jdW1lbnQuY2F0YWxvZyxhY3JvRm9ybTp0IGluc3RhbmNlb2YgRGljdD90OkRpY3QuZW1wdHkseGZhRGF0YXNldHM6bixzdHJ1Y3RUcmVlUm9vdDphLGJhc2VVcmw6cixhdHRhY2htZW50czpzLGdsb2JhbENvbG9yU3BhY2VDYWNoZTppfSksZT0+e3dhcm4oYGNyZWF0ZUdsb2JhbHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pfXN0YXRpYyBhc3luYyBjcmVhdGUoZSx0LG4sYSxyLHMsaSxvKXtjb25zdCBsPXI/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxuLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIG4ucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxuLGEscixzLGksbCxvXSl9c3RhdGljIF9jcmVhdGUoZSx0LG4sYSxyPSExLHM9bnVsbCxpPW51bGwsbz1udWxsLGw9bnVsbCl7Y29uc3QgZj1lLmZldGNoSWZSZWYodCk7aWYoIShmIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2xldCBjPWYuZ2V0KCJTdWJ0eXBlIik7Yz1jIGluc3RhbmNlb2YgTmFtZT9jLm5hbWU6bnVsbDtpZihpJiYhaS5oYXMoSFtjPy50b1VwcGVyQ2FzZSgpXSkpcmV0dXJuIG51bGw7Y29uc3R7YWNyb0Zvcm06aCxwZGZNYW5hZ2VyOnV9PW4sbT10IGluc3RhbmNlb2YgUmVmP3QudG9TdHJpbmcoKTpgYW5ub3RfJHthLmNyZWF0ZU9iaklkKCl9YCxwPXt4cmVmOmUscmVmOnQsZGljdDpmLHN1YnR5cGU6YyxpZDptLGFubm90YXRpb25HbG9iYWxzOm4sY29sbGVjdEZpZWxkczpyLG9ycGhhbkZpZWxkczpzLG5lZWRBcHBlYXJhbmNlczohciYmITA9PT1oLmdldCgiTmVlZEFwcGVhcmFuY2VzIikscGFnZUluZGV4Om8sZXZhbHVhdG9yT3B0aW9uczp1LmV2YWx1YXRvck9wdGlvbnMscGFnZVJlZjpsfTtzd2l0Y2goYyl7Y2FzZSJMaW5rIjpyZXR1cm4gbmV3IExpbmtBbm5vdGF0aW9uKHApO2Nhc2UiVGV4dCI6cmV0dXJuIG5ldyBUZXh0QW5ub3RhdGlvbihwKTtjYXNlIldpZGdldCI6bGV0IGU9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDpmLGtleToiRlQifSk7ZT1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6bnVsbDtzd2l0Y2goZSl7Y2FzZSJUeCI6cmV0dXJuIG5ldyBUZXh0V2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIkJ0biI6cmV0dXJuIG5ldyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uKHApO2Nhc2UiQ2giOnJldHVybiBuZXcgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIlNpZyI6cmV0dXJuIG5ldyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uKHApfXdhcm4oYFVuaW1wbGVtZW50ZWQgd2lkZ2V0IGZpZWxkIHR5cGUgIiR7ZX0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBmaWVsZCB0eXBlLmApO3JldHVybiBuZXcgV2lkZ2V0QW5ub3RhdGlvbihwKTtjYXNlIlBvcHVwIjpyZXR1cm4gbmV3IFBvcHVwQW5ub3RhdGlvbihwKTtjYXNlIkZyZWVUZXh0IjpyZXR1cm4gbmV3IEZyZWVUZXh0QW5ub3RhdGlvbihwKTtjYXNlIkxpbmUiOnJldHVybiBuZXcgTGluZUFubm90YXRpb24ocCk7Y2FzZSJTcXVhcmUiOnJldHVybiBuZXcgU3F1YXJlQW5ub3RhdGlvbihwKTtjYXNlIkNpcmNsZSI6cmV0dXJuIG5ldyBDaXJjbGVBbm5vdGF0aW9uKHApO2Nhc2UiUG9seUxpbmUiOnJldHVybiBuZXcgUG9seWxpbmVBbm5vdGF0aW9uKHApO2Nhc2UiUG9seWdvbiI6cmV0dXJuIG5ldyBQb2x5Z29uQW5ub3RhdGlvbihwKTtjYXNlIkNhcmV0IjpyZXR1cm4gbmV3IENhcmV0QW5ub3RhdGlvbihwKTtjYXNlIkluayI6cmV0dXJuIG5ldyBJbmtBbm5vdGF0aW9uKHApO2Nhc2UiSGlnaGxpZ2h0IjpyZXR1cm4gbmV3IEhpZ2hsaWdodEFubm90YXRpb24ocCk7Y2FzZSJVbmRlcmxpbmUiOnJldHVybiBuZXcgVW5kZXJsaW5lQW5ub3RhdGlvbihwKTtjYXNlIlNxdWlnZ2x5IjpyZXR1cm4gbmV3IFNxdWlnZ2x5QW5ub3RhdGlvbihwKTtjYXNlIlN0cmlrZU91dCI6cmV0dXJuIG5ldyBTdHJpa2VPdXRBbm5vdGF0aW9uKHApO2Nhc2UiU3RhbXAiOnJldHVybiBuZXcgU3RhbXBBbm5vdGF0aW9uKHApO2Nhc2UiRmlsZUF0dGFjaG1lbnQiOnJldHVybiBuZXcgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uKHApO2Nhc2UiUmljaE1lZGlhIjpyZXR1cm4gbmV3IFJpY2hNZWRpYUFubm90YXRpb24ocCk7Y2FzZSJTY3JlZW4iOnJldHVybiBuZXcgU2NyZWVuQW5ub3RhdGlvbihwKTtjYXNlIlNvdW5kIjpyZXR1cm4gbmV3IFNvdW5kQW5ub3RhdGlvbihwKTtkZWZhdWx0OnJ8fHdhcm4oYz9gVW5pbXBsZW1lbnRlZCBhbm5vdGF0aW9uIHR5cGUgIiR7Y30iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBhbm5vdGF0aW9uLmA6IkFubm90YXRpb24gaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgL1N1YnR5cGUuIik7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKHApfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsbil7dHJ5e2NvbnN0IGE9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuLTE7Y29uc3Qgcj1hLmdldFJhdygiUCIpO2lmKHIgaW5zdGFuY2VvZiBSZWYpdHJ5e3JldHVybiBhd2FpdCBuLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW3JdKX1jYXRjaChlKXtpbmZvKGBfZ2V0UGFnZUluZGV4IC0tIG5vdCBhIHZhbGlkIHBhZ2UgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYS5oYXMoIktpZHMiKSlyZXR1cm4tMTtjb25zdCBzPWF3YWl0IG4uZW5zdXJlRG9jKCJudW1QYWdlcyIpO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IGE9YXdhaXQgbi5nZXRQYWdlKGUpLHI9YXdhaXQgbi5lbnN1cmUoYSwiYW5ub3RhdGlvbnMiKTtmb3IoY29uc3QgbiBvZiByKWlmKG4gaW5zdGFuY2VvZiBSZWYmJmlzUmVmc0VxdWFsKG4sdCkpcmV0dXJuIGV9fWNhdGNoKGUpe3dhcm4oYF9nZXRQYWdlSW5kZXg6ICIke2V9Ii5gKX1yZXR1cm4tMX1zdGF0aWMgZ2VuZXJhdGVJbWFnZXMoZSx0LG4pe2lmKCFuKXt3YXJuKCJnZW5lcmF0ZUltYWdlczogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGNhbm5vdCBzYXZlIG9yIHByaW50IHNvbWUgYW5ub3RhdGlvbnMgd2l0aCBpbWFnZXMuIik7cmV0dXJuIG51bGx9bGV0IGE7Zm9yKGNvbnN0e2JpdG1hcElkOm4sYml0bWFwOnJ9b2YgZSlpZihyKXthfHw9bmV3IE1hcDthLnNldChuLGNyZWF0ZUltYWdlKHIsdCkpfXJldHVybiBhfXN0YXRpYyBhc3luYyBzYXZlTmV3QW5ub3RhdGlvbnMoZSx0LG4sYSxyLHMpe2xldCBpO2NvbnN0IG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmx9PWUub3B0aW9ucztmb3IoY29uc3QgZiBvZiBhKWlmKCFmLmRlbGV0ZWQpc3dpdGNoKGYuYW5ub3RhdGlvblR5cGUpe2Nhc2UgYjppZighaSl7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldElmTmFtZSgiQmFzZUZvbnQiLCJIZWx2ZXRpY2EiKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUxIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiV2luQW5zaUVuY29kaW5nIik7aT10LmdldE5ld1RlbXBvcmFyeVJlZigpO3MucHV0KGkse2RhdGE6ZX0pfW8ucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscyx7ZXZhbHVhdG9yOmUsdGFzazpuLGJhc2VGb250UmVmOml9KSk7YnJlYWs7Y2FzZSB3OmYucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixzKSk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscykpO2JyZWFrO2Nhc2UgazpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHQsZixzKSk7YnJlYWs7Y2FzZSBqOmNvbnN0IGE9bD9hd2FpdChyPy5nZXQoZi5iaXRtYXBJZCkpOm51bGw7aWYoYT8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06bn09YTtpZihuKXtjb25zdCBhPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7cy5wdXQoYSx7ZGF0YTpufSk7ZS5kaWN0LnNldCgiU01hc2siLGEpfWNvbnN0IHI9YS5pbWFnZVJlZj10LmdldE5ld1RlbXBvcmFyeVJlZigpO3MucHV0KHIse2RhdGE6ZX0pO2EuaW1hZ2VTdHJlYW09bnVsbDthLmltYWdlUmVuZGVyU3RyZWFtPW51bGw7YS5zbWFza1N0cmVhbT1udWxsO2Euc21hc2tSZW5kZXJTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24odCxmLHMse2ltYWdlOmF9KSk7YnJlYWs7Y2FzZSB5Om8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbih0LGYscyx7fSkpfXJldHVybnthbm5vdGF0aW9uczooYXdhaXQgUHJvbWlzZS5hbGwobykpLmZsYXQoKX19c3RhdGljIGFzeW5jIHByaW50TmV3QW5ub3RhdGlvbnMoZSx0LG4sYSxyKXtpZighYSlyZXR1cm4gbnVsbDtjb25zdHtvcHRpb25zOnMseHJlZjppfT10LG89W107Zm9yKGNvbnN0IGwgb2YgYSlpZighbC5kZWxldGVkKXN3aXRjaChsLmFubm90YXRpb25UeXBlKXtjYXNlIGI6by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvcjp0LHRhc2s6bixldmFsdWF0b3JPcHRpb25zOnN9KSk7YnJlYWs7Y2FzZSB3OmwucXVhZFBvaW50cz9vLnB1c2goSGlnaGxpZ2h0QW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6c30pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIGs6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtldmFsdWF0b3JPcHRpb25zOnN9KSk7YnJlYWs7Y2FzZSBqOmNvbnN0IGE9cy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD9hd2FpdChyPy5nZXQobC5iaXRtYXBJZCkpOm51bGw7aWYoYT8uaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsaW1hZ2VSZW5kZXJTdHJlYW06dCxzbWFza1N0cmVhbTpuLHNtYXNrUmVuZGVyU3RyZWFtOnJ9PWEscz10fHxuZXcgSnBlZ1N0cmVhbShlLGUubGVuZ3RoKTsobnx8cikmJnMuZGljdC5zZXQoIlNNYXNrIixyfHxuKTthLmltYWdlUmVmPXM7YS5pbWFnZVN0cmVhbT1udWxsO2EuaW1hZ2VSZW5kZXJTdHJlYW09bnVsbDthLnNtYXNrU3RyZWFtPW51bGw7YS5zbWFza1JlbmRlclN0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsaSxsLHtpbWFnZTphLGV2YWx1YXRvck9wdGlvbnM6c30pKTticmVhaztjYXNlIHk6by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxpLGwse2V2YWx1YXRvck9wdGlvbnM6c30pKX1yZXR1cm4gUHJvbWlzZS5hbGwobyl9fWZ1bmN0aW9uIGdldFJnYkNvbG9yKGUsdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiB0O2NvbnN0IG49dHx8bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMTpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKGUsMCxuLDApO3JldHVybiBuO2Nhc2UgMzpDb2xvclNwYWNlVXRpbHMucmdiLmdldFJnYkl0ZW0oZSwwLG4sMCk7cmV0dXJuIG47Y2FzZSA0OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0oZSwwLG4sMCk7cmV0dXJuIG47ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gZ2V0UGRmQ29sb3JBcnJheShlLHQ9bnVsbCl7cmV0dXJuIGUmJkFycmF5LmZyb20oZSxlPT5lLzI1NSl8fHR9ZnVuY3Rpb24gZ2V0UXVhZFBvaW50cyhlLHQpe2NvbnN0IG49ZS5nZXRBcnJheSgiUXVhZFBvaW50cyIpO2lmKCFpc051bWJlckFycmF5KG4sbnVsbCl8fDA9PT1uLmxlbmd0aHx8bi5sZW5ndGglOD4wKXJldHVybiBudWxsO2NvbnN0IGE9bmV3IEZsb2F0MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSs9OCl7Y29uc3RbcixzLGksbyxsLGYsYyxoXT1uLnNsaWNlKGUsZSs4KSx1PU1hdGgubWluKHIsaSxsLGMpLG09TWF0aC5tYXgocixpLGwsYykscD1NYXRoLm1pbihzLG8sZixoKSxkPU1hdGgubWF4KHMsbyxmLGgpO2lmKG51bGwhPT10JiYodTx0WzBdfHxtPnRbMl18fHA8dFsxXXx8ZD50WzNdKSlyZXR1cm4gbnVsbDthLnNldChbdSxkLG0sZCx1LHAsbSxwXSxlKX1yZXR1cm4gYX1mdW5jdGlvbiBnZXRUcmFuc2Zvcm1NYXRyaXgoZSx0LG4pe2NvbnN0IGE9ci5zbGljZSgpO1V0aWwuYXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxuLGEpO2NvbnN0W3MsaSxvLGxdPWE7aWYocz09PW98fGk9PT1sKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgZj0oZVsyXS1lWzBdKS8oby1zKSxjPShlWzNdLWVbMV0pLyhsLWkpO3JldHVybltmLDAsMCxjLGVbMF0tcypmLGVbMV0taSpjXX1jbGFzcyBBbm5vdGF0aW9ue2FwcGVhcmFuY2U9bnVsbDtfb2M9dm9pZCAwO2NvbnN0cnVjdG9yKGUpe2NvbnN0e2Fubm90YXRpb25HbG9iYWxzOnQsZGljdDpuLG9ycGhhbkZpZWxkczphLHJlZjpyLHN1YnR5cGU6cyx4cmVmOml9PWUsbz1hPy5nZXQocik7byYmbi5zZXQoIlBhcmVudCIsbyk7dGhpcy5zZXRUaXRsZShuLmdldCgiVCIpKTt0aGlzLnNldENvbnRlbnRzKG4uZ2V0KCJDb250ZW50cyIpKTt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUobi5nZXQoIk0iKSk7dGhpcy5zZXRGbGFncyhuLmdldCgiRiIpKTt0aGlzLnNldFJlY3RhbmdsZShuLmdldEFycmF5KCJSZWN0IikpO3RoaXMuc2V0Q29sb3Iobi5nZXRBcnJheSgiQyIpKTt0aGlzLnNldEJvcmRlclN0eWxlKG4pO3RoaXMuc2V0QXBwZWFyYW5jZShuKTt0aGlzLiN2dChpLG4pO2NvbnN0IGw9bi5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGwpO3RoaXMuc2V0Um90YXRpb24obCxuKTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBmPSEhKHRoaXMuZmxhZ3MmSyksYz0hISh0aGlzLmZsYWdzJkcpO3RoaXMuZGF0YT17YW5ub3RhdGlvblR5cGU6SFtzPy50b1VwcGVyQ2FzZSgpXSxhbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUsb2M6dGhpcy5fb2MscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOnMsaGFzT3duQ2FudmFzOiExLG5vUm90YXRlOiEhKHRoaXMuZmxhZ3MmVyksbm9IVE1MOmYmJmMsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKHQuc3RydWN0VHJlZVJvb3Qpe2xldCBhPW4uZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWE9TnVtYmVyLmlzSW50ZWdlcihhKSYmYT49MD9hOi0xO3Quc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixhKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IHQ9bi5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHQpbiBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKG4udG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhpLG4sY2UpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKG4pO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgaD1uLmdldCgiSVQiKTtoIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1oLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9nZXRPcGVyYXRvckxpc3ROb0FwcGVhcmFuY2UoKXtyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX1faGFzRmxhZyhlLHQpe3JldHVybiEhKGUmdCl9X2J1aWxkRmxhZ3MoZSx0KXtsZXR7ZmxhZ3M6bn09dGhpcztpZih2b2lkIDA9PT1lKXtpZih2b2lkIDA9PT10KXJldHVybjtyZXR1cm4gdD9uJn5VOm4mfkx8VX1pZihlKXtufD1VO3JldHVybiB0P24mflh8TDpuJn5MfFh9biY9fihMfFgpO3JldHVybiB0P24mflU6bnxVfV9pc1ZpZXdhYmxlKGUpe3JldHVybiF0aGlzLl9oYXNGbGFnKGUseikmJiF0aGlzLl9oYXNGbGFnKGUsWCl9X2lzUHJpbnRhYmxlKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKGUsVSkmJiF0aGlzLl9oYXNGbGFnKGUsTCkmJiF0aGlzLl9oYXNGbGFnKGUseil9bXVzdEJlVmlld2VkKGUsdCl7Y29uc3Qgbj1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9WaWV3O3JldHVybiB2b2lkIDAhPT1uPyFuOnRoaXMudmlld2FibGUmJiF0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsTCl9bXVzdEJlUHJpbnRlZChlKXtjb25zdCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ByaW50O3JldHVybiB2b2lkIDAhPT10PyF0OnRoaXMucHJpbnRhYmxlfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtyZXR1cm4gZT8hdGhpcy5kYXRhLmlzRWRpdGFibGU6IXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfWdldCB2aWV3YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwPT09dGhpcy5mbGFnc3x8dGhpcy5faXNWaWV3YWJsZSh0aGlzLmZsYWdzKSl9Z2V0IHByaW50YWJsZSgpe3JldHVybiBudWxsIT09dGhpcy5kYXRhLnF1YWRQb2ludHMmJigwIT09dGhpcy5mbGFncyYmdGhpcy5faXNQcmludGFibGUodGhpcy5mbGFncykpfV9wYXJzZVN0cmluZ0hlbHBlcihlKXtjb25zdCB0PSJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKToiIjtyZXR1cm57c3RyOnQsZGlyOnQmJiJydGwiPT09YmlkaSh0KS5kaXI/InJ0bCI6Imx0ciJ9fXNldERlZmF1bHRBcHBlYXJhbmNlKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczpufT1lLGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiREEifSl8fG4uYWNyb0Zvcm0uZ2V0KCJEQSIpO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPSJzdHJpbmciPT10eXBlb2YgYT9hOiIiO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZSl9c2V0VGl0bGUoZSl7dGhpcy5fdGl0bGU9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0Q29udGVudHMoZSl7dGhpcy5fY29udGVudHM9dGhpcy5fcGFyc2VTdHJpbmdIZWxwZXIoZSl9c2V0TW9kaWZpY2F0aW9uRGF0ZShlKXt0aGlzLm1vZGlmaWNhdGlvbkRhdGU9InN0cmluZyI9PXR5cGVvZiBlP2U6bnVsbH1zZXRGbGFncyhlKXt0aGlzLmZsYWdzPU51bWJlci5pc0ludGVnZXIoZSkmJmU+MD9lOjA7dGhpcy5mbGFncyZ6JiYiQW5ub3RhdGlvbiIhPT10aGlzLmNvbnN0cnVjdG9yLm5hbWUmJih0aGlzLmZsYWdzXj16KX1oYXNGbGFnKGUpe3JldHVybiB0aGlzLl9oYXNGbGFnKHRoaXMuZmxhZ3MsZSl9c2V0UmVjdGFuZ2xlKGUpe3RoaXMucmVjdGFuZ2xlPWxvb2t1cE5vcm1hbFJlY3QoZSxbMCwwLDAsMF0pfXNldENvbG9yKGUpe3RoaXMuY29sb3I9Z2V0UmdiQ29sb3IoZSl9c2V0TGluZUVuZGluZ3MoZSl7dGhpcy5saW5lRW5kaW5ncz1bIk5vbmUiLCJOb25lIl07aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKWZvcihsZXQgdD0wO3Q8Mjt0Kyspe2NvbnN0IG49ZVt0XTtpZihuIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2gobi5uYW1lKXtjYXNlIk5vbmUiOmNvbnRpbnVlO2Nhc2UiU3F1YXJlIjpjYXNlIkNpcmNsZSI6Y2FzZSJEaWFtb25kIjpjYXNlIk9wZW5BcnJvdyI6Y2FzZSJDbG9zZWRBcnJvdyI6Y2FzZSJCdXR0IjpjYXNlIlJPcGVuQXJyb3ciOmNhc2UiUkNsb3NlZEFycm93IjpjYXNlIlNsYXNoIjp0aGlzLmxpbmVFbmRpbmdzW3RdPW4ubmFtZTtjb250aW51ZX13YXJuKGBJZ25vcmluZyBpbnZhbGlkIGxpbmVFbmRpbmc6ICR7bn1gKX19c2V0Um90YXRpb24oZSx0KXt0aGlzLnJvdGF0aW9uPTA7bGV0IG49ZSBpbnN0YW5jZW9mIERpY3Q/ZS5nZXQoIlIiKXx8MDp0LmdldCgiUm90YXRlIil8fDA7aWYoTnVtYmVyLmlzSW50ZWdlcihuKSYmMCE9PW4pe24lPTM2MDtuPDAmJihuKz0zNjApO24lOTA9PTAmJih0aGlzLnJvdGF0aW9uPW4pfX1zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKGUpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLmJvcmRlckNvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJDIiksbnVsbCk7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkciKSxudWxsKX1lbHNlIHRoaXMuYm9yZGVyQ29sb3I9dGhpcy5iYWNrZ3JvdW5kQ29sb3I9bnVsbH1zZXRCb3JkZXJTdHlsZShlKXt0aGlzLmJvcmRlclN0eWxlPW5ldyBBbm5vdGF0aW9uQm9yZGVyU3R5bGU7aWYoZSBpbnN0YW5jZW9mIERpY3QpaWYoZS5oYXMoIkJTIikpe2NvbnN0IHQ9ZS5nZXQoIkJTIik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIlR5cGUiKTtpZighZXx8aXNOYW1lKGUsIkJvcmRlciIpKXt0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKHQuZ2V0KCJXIiksdGhpcy5yZWN0YW5nbGUpO3RoaXMuYm9yZGVyU3R5bGUuc2V0U3R5bGUodC5nZXQoIlMiKSk7dGhpcy5ib3JkZXJTdHlsZS5zZXREYXNoQXJyYXkodC5nZXRBcnJheSgiRCIpKX19fWVsc2UgaWYoZS5oYXMoIkJvcmRlciIpKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkJvcmRlciIpO2lmKEFycmF5LmlzQXJyYXkodCkpaWYodC5sZW5ndGg+PTMpe3RoaXMuYm9yZGVyU3R5bGUuc2V0SG9yaXpvbnRhbENvcm5lclJhZGl1cyh0WzBdKTt0aGlzLmJvcmRlclN0eWxlLnNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKHRbMV0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodFsyXSx0aGlzLnJlY3RhbmdsZSk7ND09PXQubGVuZ3RoJiZ0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0WzNdLCEwKX1lbHNlIDA9PT10Lmxlbmd0aCYmdGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCgwKX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBuPXQuZ2V0KCJOIik7aWYobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3RoaXMuYXBwZWFyYW5jZT1uO3JldHVybn1pZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgYT1lLmdldCgiQVMiKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm47Y29uc3Qgcj1uLmdldChhLm5hbWUpO3IgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodGhpcy5hcHBlYXJhbmNlPXIpfSN2dChlLHQpe2lmKHQuaGFzKCJPQyIpKXRyeXt0aGlzLl9vYz1wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlLHQuZ2V0KCJPQyIpLG51bGwpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYCNzZXRPcHRpb25hbENvbnRlbnQ6ICR7ZX1gKX19YXN5bmMgbG9hZFJlc291cmNlcyhlLHQpe2NvbnN0IG49YXdhaXQgdC5kaWN0LmdldEFzeW5jKCJSZXNvdXJjZXMiKTtuJiZhd2FpdCBPYmplY3RMb2FkZXIubG9hZChuLGUsbi54cmVmKTtyZXR1cm4gbn1nZXQgX293bkNhbnZhc1JlcXVpcmVzRm9ybXMoKXtyZXR1cm4hMX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LG4sYSl7Y29uc3R7aGFzT3duQ2FudmFzOnIsaWQ6cyxyZWN0Oml9PXRoaXMuZGF0YTtsZXQgbz10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShyJiZuJmYmJighdGhpcy5fb3duQ2FudmFzUmVxdWlyZXNGb3Jtc3x8biZ1KSk7aWYobCYmKDA9PT10aGlzLndpZHRofHwwPT09dGhpcy5oZWlnaHQpKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybiB0aGlzLl9nZXRPcGVyYXRvckxpc3ROb0FwcGVhcmFuY2UoKX1pZighbyl7aWYoIWwpcmV0dXJuIHRoaXMuX2dldE9wZXJhdG9yTGlzdE5vQXBwZWFyYW5jZSgpO289bmV3IFN0cmluZ1N0cmVhbSgiIixuZXcgRGljdCl9Y29uc3QgYz1vLmRpY3QsaD1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoeW4sbyksbT1sb29rdXBSZWN0KGMuZ2V0QXJyYXkoIkJCb3giKSxbMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHRdKSxwPWxvb2t1cE1hdHJpeChjLmdldEFycmF5KCJNYXRyaXgiKSxrbiksZD1nZXRUcmFuc2Zvcm1NYXRyaXgoaSxtLHApLGc9bmV3IE9wZXJhdG9yTGlzdCxiPXRoaXMuX29jO3ZvaWQgMCE9PWImJmcuYWRkT3AoT3QsWyJPQyIsYl0pO2cuYWRkT3AoX3QsW3MsaSxkLHAsbF0pO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06byx0YXNrOnQscmVzb3VyY2VzOmgsb3BlcmF0b3JMaXN0OmcsZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSk7Zy5hZGRPcChFdCxbXSk7dm9pZCAwIT09YiYmZy5hZGRPcChSdCxbXSk7dGhpcy5yZXNldCgpO3JldHVybntvcExpc3Q6ZyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6bH19YXN5bmMgc2F2ZShlLHQsbixhKXtyZXR1cm4gbnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiExfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsbil7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3QgYT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMocW4sdGhpcy5hcHBlYXJhbmNlKSxyPVtdLHM9W107bGV0IGk9MS8wLG89MS8wLGw9bnVsbDtjb25zdCBmPXtkZXNpcmVkU2l6ZTpNYXRoLkluZmluaXR5LHJlYWR5OiEwLGVucXVldWUoZSx0KXtmb3IoY29uc3QgdCBvZiBlLml0ZW1zKWlmKHZvaWQgMCE9PXQuc3RyKXtpPU1hdGgubWluKGksdC50cmFuc2Zvcm1bNF0pO289TWF0aC5taW4obyx0LnRyYW5zZm9ybVs1XSk7cy5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7ci5wdXNoKHMuam9pbigiIikudHJpbUVuZCgpKTtzLmxlbmd0aD0wfX19fTthd2FpdCBlLmdldFRleHRDb250ZW50KHtzdHJlYW06dGhpcy5hcHBlYXJhbmNlLHRhc2s6dCxyZXNvdXJjZXM6YSxpbmNsdWRlTWFya2VkQ29udGVudDohMCxrZWVwV2hpdGVTcGFjZTohMCxzaW5rOmYsdmlld0JveDpufSk7dGhpcy5yZXNldCgpO2khPT0xLzAmJihsPVtpLG9dKTtzLmxlbmd0aCYmci5wdXNoKHMuam9pbigiIikudHJpbUVuZCgpKTtpZihyLmxlbmd0aD4xfHxyWzBdKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZS5kaWN0LHQ9bG9va3VwUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCksbj1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7dGhpcy5kYXRhLnRleHRQb3NpdGlvbj10aGlzLl90cmFuc2Zvcm1Qb2ludChsLHQsbik7dGhpcy5kYXRhLnRleHRDb250ZW50PXJ9fV90cmFuc2Zvcm1Qb2ludChlLHQsbil7Y29uc3R7cmVjdDphfT10aGlzLmRhdGE7dHx8PVswLDAsMSwxXTtufHw9WzEsMCwwLDEsMCwwXTtjb25zdCByPWdldFRyYW5zZm9ybU1hdHJpeChhLHQsbik7cls0XS09YVswXTtyWzVdLT1hWzFdO2NvbnN0IHM9ZS5zbGljZSgpO1V0aWwuYXBwbHlUcmFuc2Zvcm0ocyxyKTtVdGlsLmFwcGx5VHJhbnNmb3JtKHMsbik7cmV0dXJuIHN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7d2FybigiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybiBzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKTtjb25zdCB0PVtdO2UuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKSk7bGV0IG49ZTtjb25zdCBhPW5ldyBSZWZTZXQ7ZS5vYmpJZCYmYS5wdXQoZS5vYmpJZCk7Zm9yKDtuLmhhcygiUGFyZW50Iik7KXtuPW4uZ2V0KCJQYXJlbnQiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KXx8bi5vYmpJZCYmYS5oYXMobi5vYmpJZCkpYnJlYWs7bi5vYmpJZCYmYS5wdXQobi5vYmpJZCk7bi5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKG4uZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9X2dldEF0dGFjaG1lbnRJZChlLHQsbixhPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dCBpbnN0YW5jZW9mIFJlZnx8KHQ9RmlsZVNwZWMucGlja1BsYXRmb3JtSXRlbShlLmdldCgiRUYiKSwhMCkpO3JldHVybiB0IGluc3RhbmNlb2YgUmVmP24uY2F0YWxvZy5nZXRBdHRhY2htZW50SWRGb3JBbm5vdGF0aW9uKHQsYSk6dm9pZCAwfX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF19Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle3dpZHRoPTE7cmF3V2lkdGg9MTtzdHlsZT1zZTtkYXNoQXJyYXk9WzNdO2hvcml6b250YWxDb3JuZXJSYWRpdXM9MDt2ZXJ0aWNhbENvcm5lclJhZGl1cz0wO3NldFdpZHRoKGUsdD1bMCwwLDAsMF0pe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXRoaXMud2lkdGg9MDtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoZT4wKXt0aGlzLnJhd1dpZHRoPWU7Y29uc3Qgbj0odFsyXS10WzBdKS8yLGE9KHRbM10tdFsxXSkvMjtpZihuPjAmJmE+MCYmKGU+bnx8ZT5hKSl7d2FybihgQW5ub3RhdGlvbkJvcmRlclN0eWxlLnNldFdpZHRoIC0gaWdub3Jpbmcgd2lkdGg6ICR7ZX1gKTtlPTF9fXRoaXMud2lkdGg9ZX19c2V0U3R5bGUoZSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPXNlO2JyZWFrO2Nhc2UiRCI6dGhpcy5zdHlsZT1pZTticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9b2U7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPWxlO2JyZWFrO2Nhc2UiVSI6dGhpcy5zdHlsZT1mZX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IG49ITAsYT0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7bj0hMTticmVha310PjAmJihhPSExKX1pZigwPT09ZS5sZW5ndGh8fG4mJiFhKXt0aGlzLmRhc2hBcnJheT1lO3QmJnRoaXMuc2V0U3R5bGUoTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fWNsYXNzIE1hcmt1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIFJlZj9lLnRvU3RyaW5nKCk6bnVsbDtjb25zdCBuPXQuZ2V0KCJSVCIpO3RoaXMuZGF0YS5yZXBseVR5cGU9biBpbnN0YW5jZW9mIE5hbWU/bi5uYW1lOk59bGV0IG49bnVsbDtpZih0aGlzLmRhdGEucmVwbHlUeXBlPT09TSl7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO249ZS5nZXRSYXcoIlBvcHVwIik7aWYoZS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihlLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGx9ZWxzZXt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDcmVhdGlvbkRhdGUodC5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlO249dC5nZXRSYXcoIlBvcHVwIik7dC5oYXMoIkMiKXx8KHRoaXMuZGF0YS5jb2xvcj1udWxsKX10aGlzLmRhdGEucG9wdXBSZWY9biBpbnN0YW5jZW9mIFJlZj9uLnRvU3RyaW5nKCk6bnVsbDt0LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjpuLGZpbGxDb2xvcjpyLGJsZW5kTW9kZTpzLHN0cm9rZUFscGhhOmksZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6bH0pe2NvbnN0IGY9dGhpcy5kYXRhLnJlY3Q9YS5zbGljZSgpLGM9WyJxIl07dCYmYy5wdXNoKHQpO24mJmMucHVzaChgJHtuWzBdfSAke25bMV19ICR7blsyXX0gUkdgKTtyJiZjLnB1c2goYCR7clswXX0gJHtyWzFdfSAke3JbMl19IHJnYCk7Y29uc3QgaD10aGlzLmRhdGEucXVhZFBvaW50c3x8RmxvYXQzMkFycmF5LmZyb20oW3RoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzNdLHRoaXMucmVjdGFuZ2xlWzBdLHRoaXMucmVjdGFuZ2xlWzFdLHRoaXMucmVjdGFuZ2xlWzJdLHRoaXMucmVjdGFuZ2xlWzFdXSk7Zm9yKGxldCBlPTAsdD1oLmxlbmd0aDtlPHQ7ZSs9OCl7Y29uc3QgdD1sKGMsaC5zdWJhcnJheShlLGUrOCkpO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLnQsZil9Yy5wdXNoKCJRIik7Y29uc3QgdT1uZXcgRGljdChlKSxtPW5ldyBEaWN0KGUpO20uc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2NvbnN0IHA9bmV3IFN0cmluZ1N0cmVhbShjLmpvaW4oIiAiKSxtKTt1LnNldCgiRm0wIixwKTtjb25zdCBkPW5ldyBEaWN0KGUpO3MmJmQuc2V0SWZOYW1lKCJCTSIscyk7ZC5zZXRJZk51bWJlcigiQ0EiLGkpO2Quc2V0SWZOdW1iZXIoImNhIixvKTtjb25zdCBnPW5ldyBEaWN0KGUpO2cuc2V0KCJHUzAiLGQpO2NvbnN0IGI9bmV3IERpY3QoZSk7Yi5zZXQoIkV4dEdTdGF0ZSIsZyk7Yi5zZXQoIlhPYmplY3QiLHUpO2NvbnN0IHc9bmV3IERpY3QoZSk7dy5zZXQoIlJlc291cmNlcyIsYik7dy5zZXQoIkJCb3giLGYpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iLHcpO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UscCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LG4sYSl7Y29uc3Qgcj10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpO2xldCBpO2lmKHMpe2NvbnN0IGE9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtpPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOmF9KTtuLnB1dChhLHtkYXRhOnN9KX1lbHNlIGk9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJmkuc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTtuLnB1dChyLHtkYXRhOml9KTtjb25zdCBvPXtyZWY6cn0se3BvcHVwOmx9PXQ7aWYobCl7aWYobC5kZWxldGVkKXtpLmRlbGV0ZSgiUG9wdXAiKTtpLmRlbGV0ZSgiQ29udGVudHMiKTtpLmRlbGV0ZSgiUkMiKTtyZXR1cm4gb31jb25zdCB0PWwucmVmfHw9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtsLnBhcmVudD1yO2NvbnN0IGE9UG9wdXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0RpY3QobCxlKTtuLnB1dCh0LHtkYXRhOmF9KTtpLnNldElmRGVmaW5lZCgiQ29udGVudHMiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobC5jb250ZW50cykpO2kuc2V0KCJQb3B1cCIsdCk7cmV0dXJuW28se3JlZjp0fV19cmV0dXJuIG99c3RhdGljIGFzeW5jIGNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHQsbixhKXtjb25zdCByPWF3YWl0IHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShuLHQsYSkscz10aGlzLmNyZWF0ZU5ld0RpY3Qobix0LHI/e2FwOnJ9Ont9KSxpPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7ZGljdDpzLHhyZWY6dCxhbm5vdGF0aW9uR2xvYmFsczplLGV2YWx1YXRvck9wdGlvbnM6YS5ldmFsdWF0b3JPcHRpb25zfSk7bi5yZWYmJihpLnJlZj1pLnJlZlRvUmVwbGFjZT1uLnJlZik7cmV0dXJuIGl9fWNsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm4sYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxyPXRoaXMuZGF0YTt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ZS5uZWVkQXBwZWFyYW5jZXM7dm9pZCAwPT09ci5maWVsZE5hbWUmJihyLmZpZWxkTmFtZT10aGlzLl9jb25zdHJ1Y3RGaWVsZE5hbWUodCkpO3ZvaWQgMD09PXIuYWN0aW9ucyYmKHIuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhuLHQsY2UpKTtsZXQgcz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJWIixnZXRBcnJheTohMH0pO3IuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUocyk7Y29uc3QgaT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEViIsZ2V0QXJyYXk6ITB9KTtyLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShpKTtpZih2b2lkIDA9PT1zJiZhLnhmYURhdGFzZXRzKXtjb25zdCBlPXRoaXMuX3RpdGxlLnN0cjtpZihlKXt0aGlzLl9oYXNWYWx1ZUZyb21YRkE9ITA7ci5maWVsZFZhbHVlPXM9YS54ZmFEYXRhc2V0cy5nZXRWYWx1ZShlKX19dm9pZCAwPT09cyYmbnVsbCE9PXIuZGVmYXVsdEZpZWxkVmFsdWUmJihyLmZpZWxkVmFsdWU9ci5kZWZhdWx0RmllbGRWYWx1ZSk7ci5hbHRlcm5hdGl2ZVRleHQ9c3RyaW5nVG9QREZTdHJpbmcodC5nZXQoIlRVIil8fCIiKTt0aGlzLnNldERlZmF1bHRBcHBlYXJhbmNlKGUpO3IuaGFzQXBwZWFyYW5jZXx8PXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmdm9pZCAwIT09ci5maWVsZFZhbHVlJiZudWxsIT09ci5maWVsZFZhbHVlO2NvbnN0IG89Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRlQifSk7ci5maWVsZFR5cGU9byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7Y29uc3QgbD1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEUiJ9KSxmPWEuYWNyb0Zvcm0uZ2V0KCJEUiIpLGM9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7dGhpcy5fZmllbGRSZXNvdXJjZXM9e2xvY2FsUmVzb3VyY2VzOmwsYWNyb0Zvcm1SZXNvdXJjZXM6ZixhcHBlYXJhbmNlUmVzb3VyY2VzOmMsbWVyZ2VkUmVzb3VyY2VzOkRpY3QubWVyZ2Uoe3hyZWY6bixkaWN0QXJyYXk6W2wsYyxmXSxtZXJnZVN1YkRpY3RzOiEwfSl9O3IuZmllbGRGbGFncz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGZiJ9KTsoIU51bWJlci5pc0ludGVnZXIoci5maWVsZEZsYWdzKXx8ci5maWVsZEZsYWdzPDApJiYoci5maWVsZEZsYWdzPTApO3IucGFzc3dvcmQ9dGhpcy5oYXNGaWVsZEZsYWcoSik7ci5yZWFkT25seT10aGlzLmhhc0ZpZWxkRmxhZyhWKTtyLnJlcXVpcmVkPXRoaXMuaGFzRmllbGRGbGFnKCQpO3IuaGlkZGVuPXRoaXMuX2hhc0ZsYWcoci5hbm5vdGF0aW9uRmxhZ3MsTCl8fHRoaXMuX2hhc0ZsYWcoci5hbm5vdGF0aW9uRmxhZ3MsWCl9X2RlY29kZUZvcm1WYWx1ZShlKXtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubWFwKGU9PnRoaXMuX2RlY29kZUZvcm1WYWx1ZShlKSkuZmlsdGVyKGU9Pm51bGwhPT1lKTtyZXR1cm4gdC5sZW5ndGg+MD90Om51bGx9cmV0dXJuIGUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbH1oYXNGaWVsZEZsYWcoZSl7cmV0dXJuISEodGhpcy5kYXRhLmZpZWxkRmxhZ3MmZSl9X2lzVmlld2FibGUoZSl7cmV0dXJuITB9bXVzdEJlVmlld2VkKGUsdCl7cmV0dXJuIHQ/dGhpcy52aWV3YWJsZTpzdXBlci5tdXN0QmVWaWV3ZWQoZSx0KSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxYKX1nZXRSb3RhdGlvbk1hdHJpeChlKXtsZXQgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ucm90YXRpb247dm9pZCAwPT09dCYmKHQ9dGhpcy5yb3RhdGlvbik7cmV0dXJuIDA9PT10P2tuOmdldFJvdGF0aW9uTWF0cml4KHQsdGhpcy53aWR0aCx0aGlzLmhlaWdodCl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IG49MD09PXR8fDE4MD09PXQ/YDAgMCAke3RoaXMud2lkdGh9ICR7dGhpcy5oZWlnaHR9IHJlYDpgMCAwICR7dGhpcy5oZWlnaHR9ICR7dGhpcy53aWR0aH0gcmVgO2xldCBhPSIiO3RoaXMuYmFja2dyb3VuZENvbG9yJiYoYT1gJHtnZXRQZGZDb2xvcih0aGlzLmJhY2tncm91bmRDb2xvciwhMCl9ICR7bn0gZiBgKTtpZih0aGlzLmJvcmRlckNvbG9yKXthKz1gJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofHwxfSB3ICR7Z2V0UGRmQ29sb3IodGhpcy5ib3JkZXJDb2xvciwhMSl9ICR7bn0gUyBgfXJldHVybiBhfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsbixhKXtpZihuJnUmJiEodGhpcyBpbnN0YW5jZW9mIFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24pJiYhdGhpcy5kYXRhLm5vSFRNTCYmIXRoaXMuZGF0YS5oYXNPd25DYW52YXMpe2NvbnN0IGU9dGhpcy5fZ2V0T3BlcmF0b3JMaXN0Tm9BcHBlYXJhbmNlKCk7ZS5zZXBhcmF0ZUZvcm09ITA7cmV0dXJuIGV9aWYoIXRoaXMuX2hhc1RleHQpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsbixhKTtjb25zdCByPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LG4sYSk7aWYodGhpcy5hcHBlYXJhbmNlJiZudWxsPT09cilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxuLGEpO2NvbnN0IHM9bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1yKXJldHVybntvcExpc3Q6cyxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGk9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmbiZmKSxvPVswLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF0sbD1nZXRUcmFuc2Zvcm1NYXRyaXgodGhpcy5kYXRhLnJlY3QsbyxbMSwwLDAsMSwwLDBdKSxjPXRoaXMuX29jO3ZvaWQgMCE9PWMmJnMuYWRkT3AoT3QsWyJPQyIsY10pO3MuYWRkT3AoX3QsW3RoaXMuZGF0YS5pZCx0aGlzLmRhdGEucmVjdCxsLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSksaV0pO2NvbnN0IGg9bmV3IFN0cmluZ1N0cmVhbShyKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmgsdGFzazp0LHJlc291cmNlczp0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMsb3BlcmF0b3JMaXN0OnN9KTtzLmFkZE9wKEV0LFtdKTt2b2lkIDAhPT1jJiZzLmFkZE9wKFJ0LFtdKTtyZXR1cm57b3BMaXN0OnMsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOml9fV9nZXRNS0RpY3QoZSl7Y29uc3QgdD1uZXcgRGljdChudWxsKTtlJiZ0LnNldCgiUiIsZSk7dC5zZXRJZkFycmF5KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dC5zZXRJZkFycmF5KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9c2V0VmFsdWUoZSx0LG4sYSl7Y29uc3R7ZGljdDpyLHJlZjpzfT1mdW5jdGlvbiBnZXRQYXJlbnRUb1VwZGF0ZShlLHQsbil7Y29uc3QgYT1uZXcgUmVmU2V0LHI9ZSxzPXtkaWN0Om51bGwscmVmOm51bGx9O2Zvcig7ZSBpbnN0YW5jZW9mIERpY3QmJiFhLmhhcyh0KTspe2EucHV0KHQpO2lmKGUuaGFzKCJUIikpYnJlYWs7aWYoISgodD1lLmdldFJhdygiUGFyZW50IikpaW5zdGFuY2VvZiBSZWYpKXJldHVybiBzO2U9bi5mZXRjaCh0KX1pZihlIGluc3RhbmNlb2YgRGljdCYmZSE9PXIpe3MuZGljdD1lO3MucmVmPXR9cmV0dXJuIHN9KGUsdGhpcy5yZWYsbik7aWYocil7aWYoIWEuaGFzKHMpKXtjb25zdCBlPXIuY2xvbmUoKTtlLnNldCgiViIsdCk7YS5wdXQocyx7ZGF0YTplfSk7cmV0dXJuIGV9fWVsc2UgZS5zZXQoIlYiLHQpO3JldHVybiBudWxsfWFzeW5jIHNhdmUoZSx0LG4sYSl7Y29uc3Qgcj1uPy5nZXQodGhpcy5kYXRhLmlkKSxzPXRoaXMuX2J1aWxkRmxhZ3Mocj8ubm9WaWV3LHI/Lm5vUHJpbnQpO2xldCBpPXI/LnZhbHVlLG89cj8ucm90YXRpb247aWYoaT09PXRoaXMuZGF0YS5maWVsZFZhbHVlfHx2b2lkIDA9PT1pKXtpZighdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZ2b2lkIDA9PT1vJiZ2b2lkIDA9PT1zKXJldHVybjtpfHw9dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09byYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShpKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJmlzQXJyYXlFcXVhbChpLHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmdm9pZCAwPT09cylyZXR1cm47dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGw9bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtsPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSx0LGgsbik7aWYobnVsbD09PWwmJnZvaWQgMD09PXMpcmV0dXJufWxldCBmPSExO2lmKGw/Lm5lZWRBcHBlYXJhbmNlcyl7Zj0hMDtsPW51bGx9Y29uc3R7eHJlZjpjfT1lLHU9Yy5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKHUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgbT1uZXcgRGljdChjKTtmb3IoY29uc3RbZSx0XW9mIHUuZ2V0UmF3RW50cmllcygpKSJBUCIhPT1lJiZtLnNldChlLHQpO2lmKHZvaWQgMCE9PXMpe20uc2V0KCJGIixzKTtpZihudWxsPT09bCYmIWYpe2NvbnN0IGU9dS5nZXRSYXcoIkFQIik7ZSYmbS5zZXQoIkFQIixlKX19Y29uc3QgcD17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOml9LGQ9dGhpcy5zZXRWYWx1ZShtLEFycmF5LmlzQXJyYXkoaSk/aS5tYXAoc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSk6c3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSxjLGEpO3RoaXMuYW1lbmRTYXZlZERpY3QobixkfHxtKTtjb25zdCBnPXRoaXMuX2dldE1LRGljdChvKTtnJiZtLnNldCgiTUsiLGcpO2EucHV0KHRoaXMucmVmLHtkYXRhOm0seGZhOnAsbmVlZEFwcGVhcmFuY2VzOmZ9KTtpZihudWxsIT09bCl7Y29uc3QgZT1jLmdldE5ld1RlbXBvcmFyeVJlZigpLHQ9bmV3IERpY3QoYyk7bS5zZXQoIkFQIix0KTt0LnNldCgiTiIsZSk7Y29uc3Qgcj10aGlzLl9nZXRTYXZlRmllbGRSZXNvdXJjZXMoYykscz1uZXcgRGljdChjKTtzLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtzLnNldCgiUmVzb3VyY2VzIixyKTtjb25zdCBpPW8lMTgwPT0wP1swLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF06WzAsMCx0aGlzLmhlaWdodCx0aGlzLndpZHRoXTtzLnNldCgiQkJveCIsaSk7Y29uc3QgZj1uZXcgU3RyaW5nU3RyZWFtKGwscyksaD10aGlzLmdldFJvdGF0aW9uTWF0cml4KG4pO2ghPT1rbiYmcy5zZXQoIk1hdHJpeCIsaCk7YS5wdXQoZSx7ZGF0YTpmLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pfW0uc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsbixhKXtpZih0aGlzLmRhdGEucGFzc3dvcmQpcmV0dXJuIG51bGw7Y29uc3Qgcj1hPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcyxvO2lmKHIpe3M9ci5mb3JtYXR0ZWRWYWx1ZXx8ci52YWx1ZTtvPXIucm90YXRpb259aWYodm9pZCAwPT09byYmdm9pZCAwPT09cyYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgbD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZih2b2lkIDA9PT1zKXtzPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFzKXJldHVybmAvVHggQk1DIHEgJHtsfVEgRU1DYH1BcnJheS5pc0FycmF5KHMpJiYxPT09cy5sZW5ndGgmJihzPXNbMF0pO2Fzc2VydCgic3RyaW5nIj09dHlwZW9mIHMsIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7cz1zLnRyaW1FbmQoKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoe2V4cG9ydFZhbHVlOmV9KT0+cz09PWUpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7bH1RIEVNQ2A7dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGYsYz0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtmPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKGU9PmUubm9ybWFsaXplKCJORkMiKSk7Yz1mLmxlbmd0aH1lbHNlIGY9W3MucmVwbGFjZSgvXHJcbj98XG4vLCIiKS5ub3JtYWxpemUoIk5GQyIpXTtsZXR7d2lkdGg6dSxoZWlnaHQ6bX09dGhpczs5MCE9PW8mJjI3MCE9PW98fChbdSxtXT1bbSx1XSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IHAsZCxnLGI9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCB3PVtdO2xldCBqPSExO2Zvcihjb25zdCBlIG9mIGYpe2NvbnN0IHQ9Yi5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKGo9ITApO3cucHVzaCh0LmpvaW4oIiIpKX1pZihqJiZuJmgpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYoaiYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IG49dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLGE9bmV3IEZha2VVbmljb2RlRm9udChlLnhyZWYsbikscj1hLmNyZWF0ZUZvbnRSZXNvdXJjZXMoZi5qb2luKCIiKSksaT1yLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0W3Qsbl1vZiBpLmdldFJhd0VudHJpZXMoKSllLnNldCh0LG4pfWVsc2UgdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLnNldCgiRm9udCIsaSk7Y29uc3Qgbz1hLmZvbnROYW1lLm5hbWU7Yj1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQse2ZvbnROYW1lOm8sZm9udFNpemU6MH0scik7Zm9yKGxldCBlPTAsdD13Lmxlbmd0aDtlPHQ7ZSsrKXdbZV09c3RyaW5nVG9VVEYxNlN0cmluZyhmW2VdKTtjb25zdCBsPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhKTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPTA7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250TmFtZT1vO1twLGQsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKG0tMix1LTQscyxiLGMpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9bH1lbHNle3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkfHx3YXJuKCJfZ2V0QXBwZWFyYW5jZTogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpO1twLGQsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKG0tMix1LTQscyxiLGMpfWxldCBrPWIuZGVzY2VudDtrPWlzTmFOKGspP2kqZzpNYXRoLm1heChpKmcsTWF0aC5hYnMoaykqZCk7Y29uc3QgeT1NYXRoLm1pbihNYXRoLmZsb29yKChtLWQpLzIpLDEpLHE9dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ7aWYodGhpcy5kYXRhLm11bHRpTGluZSlyZXR1cm4gdGhpcy5fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShwLHcsYixkLHUsbSxxLDIseSxrLGcsYSk7aWYodGhpcy5kYXRhLmNvbWIpcmV0dXJuIHRoaXMuX2dldENvbWJBcHBlYXJhbmNlKHAsYix3WzBdLGQsdSxtLHEsInJ0bCI9PT1iaWRpKGZbMF0pLmRpcixhKTtjb25zdCB2PXkraztpZigwPT09cXx8cT4yKXJldHVybmAvVHggQk1DIHEgJHtsfUJUIGArcCtgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZygyKX0gJHtudW1iZXJUb1N0cmluZyh2KX0gVG0gKCR7ZXNjYXBlU3RyaW5nKHdbMF0pfSkgVGogRVQgUSBFTUNgO3JldHVybmAvVHggQk1DIHEgJHtsfUJUIGArcCtgIDEgMCAwIDEgMCAwIFRtICR7dGhpcy5fcmVuZGVyVGV4dCh3WzBdLGIsZCx1LHEse3NoaWZ0OjB9LDIsdil9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxuLGEpe2NvbnN0IHI9bmV3IE9wZXJhdG9yTGlzdCxzPXtmb250Om51bGwsY2xvbmUoKXtyZXR1cm4gdGhpc319LHtmb250TmFtZTppLGZvbnRTaXplOm99PW47YXdhaXQgZS5oYW5kbGVTZXRGb250KGEsW2kmJk5hbWUuZ2V0KGkpLG9dLG51bGwscix0LHMsbnVsbCk7cmV0dXJuIHMuZm9udH1fZ2V0VGV4dFdpZHRoKGUsdCl7cmV0dXJuIE1hdGguc3VtUHJlY2lzZSh0LmNoYXJzVG9HbHlwaHMoZSkubWFwKGU9PmUud2lkdGgpKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQsbixhLHIpe2xldHtmb250U2l6ZTpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLGk9MS4zNSooc3x8MTIpLG89TWF0aC5yb3VuZChlL2kpO2lmKCFzKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09cil7Y29uc3Qgcj10aGlzLl9nZXRUZXh0V2lkdGgobixhKTtzPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlLzEuMzUsdC9yKSk7bz0xfWVsc2V7Y29uc3QgbD1uLnNwbGl0KC9cclxuP3xcbi8pLGY9W107Zm9yKGNvbnN0IGUgb2YgbCl7Y29uc3QgdD1hLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxuPWEuY2hhcnNUb0dseXBocyh0KSxyPWEuZ2V0Q2hhclBvc2l0aW9ucyh0KTtmLnB1c2goe2xpbmU6dCxnbHlwaHM6bixwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPW49PntsZXQgcj0wO2Zvcihjb25zdCBzIG9mIGYpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLGEsbix0LHMpLmxlbmd0aCpuO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07bz1NYXRoLm1heChvLHIpO2Zvcig7Oyl7aT1lL287cz1yb3VuZFdpdGhUd29EaWdpdHMoaS8xLjM1KTtpZighaXNUb29CaWcocykpYnJlYWs7bysrfX1jb25zdHtmb250TmFtZTpsLGZvbnRDb2xvcjpmfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOm59KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKG4sITApfWB9KHtmb250U2l6ZTpzLGZvbnROYW1lOmwsZm9udENvbG9yOmZ9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UscyxlL29dfV9yZW5kZXJUZXh0KGUsdCxuLGEscixzLGksbyl7bGV0IGw7aWYoMT09PXIpe2w9KGEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqbikvMn1lbHNlIGlmKDI9PT1yKXtsPWEtdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqbi1pfWVsc2UgbD1pO2NvbnN0IGY9bnVtYmVyVG9TdHJpbmcobC1zLnNoaWZ0KTtzLnNoaWZ0PWw7cmV0dXJuYCR7Zn0gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6bixhY3JvRm9ybVJlc291cmNlczphfT10aGlzLl9maWVsZFJlc291cmNlcyxyPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFyKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3Qsbl0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMocikpcmV0dXJuIGV9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IG49YS5nZXQoIkZvbnQiKTtpZihuIGluc3RhbmNlb2YgRGljdCYmbi5oYXMocikpe2NvbnN0IGE9bmV3IERpY3QoZSk7YS5zZXQocixuLmdldFJhdyhyKSk7Y29uc3Qgcz1uZXcgRGljdChlKTtzLnNldCgiRm9udCIsYSk7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W3MsdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9TDt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihuKXx8bjwwfHxuPjIpJiYobj1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1uO2xldCBhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIoYSl8fGE8MCkmJihhPTApO3RoaXMuZGF0YS5tYXhMZW49YTt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKFkpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKHJlKSYmIXRoaXMuZGF0YS5tdWx0aUxpbmUmJiF0aGlzLmRhdGEucGFzc3dvcmQmJiF0aGlzLmhhc0ZpZWxkRmxhZyh0ZSkmJjAhPT10aGlzLmRhdGEubWF4TGVuO3RoaXMuZGF0YS5kb05vdFNjcm9sbD10aGlzLmhhc0ZpZWxkRmxhZyhhZSk7Y29uc3R7ZGF0YTp7YWN0aW9uczpyfX09dGhpcztpZighcilyZXR1cm47Y29uc3Qgcz0vXkFGKERhdGV8VGltZSlfKD86S2V5c3Ryb2tlfEZvcm1hdCkoPzpFeCk/XChbJyJdPyhbXiciXSspWyciXT9cKTskLztsZXQgaT0hMTsoMT09PXIuRm9ybWF0Py5sZW5ndGgmJjE9PT1yLktleXN0cm9rZT8ubGVuZ3RoJiZzLnRlc3Qoci5Gb3JtYXRbMF0pJiZzLnRlc3Qoci5LZXlzdHJva2VbMF0pfHwwPT09ci5Gb3JtYXQ/Lmxlbmd0aCYmMT09PXIuS2V5c3Ryb2tlPy5sZW5ndGgmJnMudGVzdChyLktleXN0cm9rZVswXSl8fDA9PT1yLktleXN0cm9rZT8ubGVuZ3RoJiYxPT09ci5Gb3JtYXQ/Lmxlbmd0aCYmcy50ZXN0KHIuRm9ybWF0WzBdKSkmJihpPSEwKTtjb25zdCBvPVtdO3IuRm9ybWF0JiZvLnB1c2goLi4uci5Gb3JtYXQpO3IuS2V5c3Ryb2tlJiZvLnB1c2goLi4uci5LZXlzdHJva2UpO2lmKGkpe2RlbGV0ZSByLktleXN0cm9rZTtyLkZvcm1hdD1vfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9ZS5tYXRjaChzKTtpZighdCljb250aW51ZTtjb25zdCBuPSJEYXRlIj09PXRbMV07bGV0IGE9dFsyXTtjb25zdCByPXBhcnNlSW50KGEsMTApO2lzTmFOKHIpfHxNYXRoLmZsb29yKE1hdGgubG9nMTAocikpKzEhPT10WzJdLmxlbmd0aHx8KGE9KG4/WGk6S2kpW3JdPz9hKTt0aGlzLmRhdGEuZGF0ZXRpbWVGb3JtYXQ9YTtpZighaSlicmVhaztpZihuKXtpZigvSEh8TU18c3N8aC8udGVzdChhKSl7dGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0iZGF0ZXRpbWUtbG9jYWwiO3RoaXMuZGF0YS50aW1lU3RlcD0vc3MvLnRlc3QoYSk/MTo2MH1lbHNlIHRoaXMuZGF0YS5kYXRldGltZVR5cGU9ImRhdGUiO2JyZWFrfXRoaXMuZGF0YS5kYXRldGltZVR5cGU9InRpbWUiO3RoaXMuZGF0YS50aW1lU3RlcD0vc3MvLnRlc3QoYSk/MTo2MDticmVha319Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxuLGEscixzLGksbyxsKXtjb25zdCBmPXIvdGhpcy5kYXRhLm1heExlbixjPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGwpLGg9dC5nZXRDaGFyUG9zaXRpb25zKG4pLm1hcCgoW2Uscl0pPT57Y29uc3Qgcz1uLnN1YnN0cmluZyhlLHIpO3JldHVybntnbHlwaDpzLHdpZHRoOnRoaXMuX2dldFRleHRXaWR0aChzLHQpKmF9fSk7byYmaC5yZXZlcnNlKCk7Y29uc3QgdT1mKmgubGVuZ3RoO2xldCBtPTA7MT09PWk/bSs9TWF0aC5mbG9vcigoci11KS8oMipmKSkqZjoyPT09aSYmKG0rPXItdSk7Y29uc3QgcD1bXTtsZXQgZD0wO2ZvcihsZXQgZT0wLHQ9aC5sZW5ndGg7ZTx0O2UrKyl7Y29uc3R7Z2x5cGg6dCx3aWR0aDpufT1oW2VdLGE9MD09PWU/KGYtbikvMjpmKyhkLW4pLzI7cC5wdXNoKGAke251bWJlclRvU3RyaW5nKGEpfSAwIFRkICgke2VzY2FwZVN0cmluZyh0KX0pIFRqYCk7ZD1ufWNvbnN0IGc9cC5qb2luKCIgIiksYj0ocy0odC5jYXBIZWlnaHR8fHQuYXNjZW50fHwxKSphKS8yO3JldHVybmAvVHggQk1DIHEgJHtjfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyhtKX0gJHtudW1iZXJUb1N0cmluZyhiKX0gVG0gJHtnfSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LG4sYSxyLHMsaSxvLGwsZixjLGgpe2NvbnN0IHU9W10sbT1yLTIqbyxwPXtzaGlmdDowfTtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKyspe2NvbnN0IHM9dFtlXSxoPXRoaXMuX3NwbGl0TGluZShzLG4sYSxtKTtmb3IobGV0IHQ9MCxzPWgubGVuZ3RoO3Q8czt0Kyspe2NvbnN0IHM9aFt0XSxtPTA9PT1lJiYwPT09dD8tbC0oYy1mKTotYzt1LnB1c2godGhpcy5fcmVuZGVyVGV4dChzLG4sYSxyLGkscCxvLG0pKX19Y29uc3QgZD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhoKSxnPXUuam9pbigiXG4iKTtyZXR1cm5gL1R4IEJNQyBxICR7ZH1CVCBgK2UrYCAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhzKX0gVG0gJHtnfSBFVCBRIEVNQ2B9X3NwbGl0TGluZShlLHQsbixhLHI9e30pe2U9ci5saW5lfHxlO2NvbnN0IHM9ci5nbHlwaHN8fHQuY2hhcnNUb0dseXBocyhlKTtpZihzLmxlbmd0aDw9MSlyZXR1cm5bZV07Y29uc3QgaT1yLnBvc2l0aW9uc3x8dC5nZXRDaGFyUG9zaXRpb25zKGUpLG89bi8xZTMsbD1bXTtsZXQgZj0tMSxjPS0xLGg9LTEsdT0wLG09MDtmb3IobGV0IHQ9MCxuPXMubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0W24scl09aVt0XSxwPXNbdF0sZD1wLndpZHRoKm87aWYoIiAiPT09cC51bmljb2RlKWlmKG0rZD5hKXtsLnB1c2goZS5zdWJzdHJpbmcodSxuKSk7dT1uO209ZDtmPS0xO2g9LTF9ZWxzZXttKz1kO2Y9bjtjPXI7aD10fWVsc2UgaWYobStkPmEpaWYoLTEhPT1mKXtsLnB1c2goZS5zdWJzdHJpbmcodSxjKSk7dT1jO3Q9aCsxO2Y9LTE7bT0wfWVsc2V7bC5wdXNoKGUuc3Vic3RyaW5nKHUsbikpO3U9bjttPWR9ZWxzZSBtKz1kfXU8ZS5sZW5ndGgmJmwucHVzaChlLnN1YnN0cmluZyh1KSk7cmV0dXJuIGx9YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KGUsdCxuKXthd2FpdCBzdXBlci5leHRyYWN0VGV4dENvbnRlbnQoZSx0LG4pO2NvbnN0IGE9dGhpcy5kYXRhLnRleHRDb250ZW50O2lmKCFhKXJldHVybjtjb25zdCByPWEuam9pbigiXG4iKTtpZihyPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUpcmV0dXJuO2NvbnN0IHM9ci5yZXBsYWNlQWxsKC8oWy4qKz9eJHt9KCl8W1xdXFxdKXwoXHMrKS9nLChlLHQpPT50P2BcXCR7dH1gOiJcXHMrIik7bmV3IFJlZ0V4cChgXlxccyoke3N9XFxzKiRgKS50ZXN0KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmKHRoaXMuZGF0YS50ZXh0Q29udGVudD10aGlzLmRhdGEuZmllbGRWYWx1ZS5zcGxpdCgiXG4iKSl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWV8fCIiLG11bHRpbGluZTp0aGlzLmRhdGEubXVsdGlMaW5lLHBhc3N3b3JkOnRoaXMuZGF0YS5wYXNzd29yZCxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sZGF0ZXRpbWVGb3JtYXQ6dGhpcy5kYXRhLmRhdGV0aW1lRm9ybWF0LGhhc0RhdGV0aW1lSFRNTDohIXRoaXMuZGF0YS5kYXRldGltZVR5cGUsdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7Y29uc3QgdD10aGlzLmhhc0ZpZWxkRmxhZyhRKSxuPXRoaXMuaGFzRmllbGRGbGFnKFopO3RoaXMuZGF0YS5jaGVja0JveD0hdCYmIW47dGhpcy5kYXRhLnJhZGlvQnV0dG9uPXQmJiFuO3RoaXMuZGF0YS5wdXNoQnV0dG9uPW47dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9ITE7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5jaGVja0JveD90aGlzLl9wcm9jZXNzQ2hlY2tCb3goZSk6dGhpcy5kYXRhLnJhZGlvQnV0dG9uP3RoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTp0aGlzLmRhdGEucHVzaEJ1dHRvbj90aGlzLl9wcm9jZXNzUHVzaEJ1dHRvbihlKTp3YXJuKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1nZXQgX293bkNhbnZhc1JlcXVpcmVzRm9ybXMoKXtyZXR1cm4gdGhpcy5kYXRhLmNoZWNrQm94fHx0aGlzLmRhdGEucmFkaW9CdXR0b259I1N0KGUsdCxuLGEscixzKXtpZighcylyZXR1cm4gdGhpcy5fZ2V0T3BlcmF0b3JMaXN0Tm9BcHBlYXJhbmNlKCk7Y29uc3QgaT10aGlzLmFwcGVhcmFuY2Usbz1sb29rdXBNYXRyaXgocy5kaWN0LmdldEFycmF5KCJNYXRyaXgiKSxrbik7ciYmcy5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KGEpKTt0aGlzLmFwcGVhcmFuY2U9cztjb25zdCBsPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsbixhKTt0aGlzLmFwcGVhcmFuY2U9aTtzLmRpY3Quc2V0KCJNYXRyaXgiLG8pO3JldHVybiBsfWFzeW5jIGdldE9wZXJhdG9yTGlzdChlLHQsbixhKXtpZih0aGlzLmRhdGEucHVzaEJ1dHRvbilyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxuLCExLGEpO2lmKG4mZiYmbiZ1JiYodGhpcy5kYXRhLmNoZWNrQm94fHx0aGlzLmRhdGEucmFkaW9CdXR0b24pKXtjb25zdCBzZXRDYW52YXNOYW1lPShlLHQpPT57Y29uc3Qgbj1lLmZuQXJyYXkuaW5kZXhPZihfdCk7LTEhPT1uJiZlLmFyZ3NBcnJheVtuXS5wdXNoKHQpfSxyPWF3YWl0IHRoaXMuI1N0KGUsdCxuLGEsbnVsbCx0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTtzZXRDYW52YXNOYW1lKHIub3BMaXN0LCJjaGVja2VkIik7Y29uc3Qgcz1hd2FpdCB0aGlzLiNTdChlLHQsbixhLG51bGwsdGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTtzZXRDYW52YXNOYW1lKHMub3BMaXN0LCJ1bmNoZWNrZWQiKTtyLm9wTGlzdC5hZGRPcExpc3Qocy5vcExpc3QpO3Iuc2VwYXJhdGVGb3JtfHw9cy5zZXBhcmF0ZUZvcm07ci5zZXBhcmF0ZUNhbnZhc3x8PXMuc2VwYXJhdGVDYW52YXM7cmV0dXJuIHJ9bGV0IHI9bnVsbCxzPW51bGw7aWYoYSl7Y29uc3QgZT1hLmdldCh0aGlzLmRhdGEuaWQpO3I9ZT9lLnZhbHVlOm51bGw7cz1lP2Uucm90YXRpb246bnVsbH1pZihudWxsPT09ciYmdGhpcy5hcHBlYXJhbmNlKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LG4sYSk7cj8/PXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZTtyZXR1cm4gdGhpcy4jU3QoZSx0LG4sYSxzLHI/dGhpcy5jaGVja2VkQXBwZWFyYW5jZTp0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2UpfWFzeW5jIHNhdmUoZSx0LG4sYSl7dGhpcy5kYXRhLmNoZWNrQm94P3RoaXMuX3NhdmVDaGVja2JveChlLHQsbixhKTp0aGlzLmRhdGEucmFkaW9CdXR0b24mJnRoaXMuX3NhdmVSYWRpb0J1dHRvbihlLHQsbixhKX1hc3luYyBfc2F2ZUNoZWNrYm94KGUsdCxuLGEpe2lmKCFuKXJldHVybjtjb25zdCByPW4uZ2V0KHRoaXMuZGF0YS5pZCkscz10aGlzLl9idWlsZEZsYWdzKHI/Lm5vVmlldyxyPy5ub1ByaW50KTtsZXQgaT1yPy5yb3RhdGlvbixvPXI/LnZhbHVlO2lmKHZvaWQgMD09PWkmJnZvaWQgMD09PXMpe2lmKHZvaWQgMD09PW8pcmV0dXJuO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlPT09bylyZXR1cm59bGV0IGw9ZS54cmVmLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEobCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtsPWwuY2xvbmUoKTt2b2lkIDA9PT1pJiYoaT10aGlzLnJvdGF0aW9uKTt2b2lkIDA9PT1vJiYobz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZSk7Y29uc3QgZj17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOm8/dGhpcy5kYXRhLmV4cG9ydFZhbHVlOiIifSxjPU5hbWUuZ2V0KG8/dGhpcy5fb25TdGF0ZU5hbWU6Ik9mZiIpO3RoaXMuc2V0VmFsdWUobCxjLGUueHJlZixhKTtsLnNldCgiQVMiLGMpO2wuc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1zJiZsLnNldCgiRiIscyk7Y29uc3QgaD10aGlzLl9nZXRNS0RpY3QoaSk7aCYmbC5zZXQoIk1LIixoKTthLnB1dCh0aGlzLnJlZix7ZGF0YTpsLHhmYTpmLG5lZWRBcHBlYXJhbmNlczohMX0pfWFzeW5jIF9zYXZlUmFkaW9CdXR0b24oZSx0LG4sYSl7aWYoIW4pcmV0dXJuO2NvbnN0IHI9bi5nZXQodGhpcy5kYXRhLmlkKSxzPXRoaXMuX2J1aWxkRmxhZ3Mocj8ubm9WaWV3LHI/Lm5vUHJpbnQpO2xldCBpPXI/LnJvdGF0aW9uLG89cj8udmFsdWU7aWYodm9pZCAwPT09aSYmdm9pZCAwPT09cyl7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWU9PT1vKXJldHVybn1sZXQgbD1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShsIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2w9bC5jbG9uZSgpO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt2b2lkIDA9PT1pJiYoaT10aGlzLnJvdGF0aW9uKTtjb25zdCBmPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LGM9TmFtZS5nZXQobz90aGlzLl9vblN0YXRlTmFtZToiT2ZmIik7byYmdGhpcy5zZXRWYWx1ZShsLGMsZS54cmVmLGEpO2wuc2V0KCJBUyIsYyk7bC5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO3ZvaWQgMCE9PXMmJmwuc2V0KCJGIixzKTtjb25zdCBoPXRoaXMuX2dldE1LRGljdChpKTtoJiZsLnNldCgiTUsiLGgpO2EucHV0KHRoaXMucmVmLHtkYXRhOmwseGZhOmYsbmVlZEFwcGVhcmFuY2VzOiExfSl9X2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLHQpe2NvbnN0e3dpZHRoOm4saGVpZ2h0OmF9PXRoaXMscj1bMCwwLG4sYV0scz0uOCpNYXRoLm1pbihuLGEpO2xldCBpLG87aWYoImNoZWNrIj09PXQpe2k9e3dpZHRoOi43NTUqcyxoZWlnaHQ6LjcwNSpzfTtvPSIzIn1lbHNlIGlmKCJkaXNjIj09PXQpe2k9e3dpZHRoOi43OTEqcyxoZWlnaHQ6LjcwNSpzfTtvPSJsIn1lbHNlIHVucmVhY2hhYmxlKGBfZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlIC0gdW5zdXBwb3J0ZWQgdHlwZTogJHt0fWApO2NvbnN0IGw9YHEgQlQgL1BkZkpzWmFEYiAke3N9IFRmIDAgZyAke251bWJlclRvU3RyaW5nKChuLWkud2lkdGgpLzIpfSAke251bWJlclRvU3RyaW5nKChhLWkuaGVpZ2h0KS8yKX0gVGQgKCR7b30pIFRqIEVUIFFgLGY9bmV3IERpY3QoZS54cmVmKTtmLnNldCgiRm9ybVR5cGUiLDEpO2Yuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2Yuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2Yuc2V0KCJCQm94IixyKTtmLnNldCgiTWF0cml4IixbMSwwLDAsMSwwLDBdKTtmLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7Y29uc3QgYz1uZXcgRGljdChlLnhyZWYpLGg9bmV3IERpY3QoZS54cmVmKTtoLnNldCgiUGRmSnNaYURiIix0aGlzLmZhbGxiYWNrRm9udERpY3QpO2Muc2V0KCJGb250IixoKTtmLnNldCgiUmVzb3VyY2VzIixjKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW5ldyBTdHJpbmdTdHJlYW0obCxmKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSl9X2dldE9uU3RhdGVOYW1lKGUpe2NvbnN0IHQ9ZS5nZXQoIkFQIik7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3Qgbj10LmdldCgiTiIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIG4uZ2V0S2V5cygpKWlmKCJPZmYiIT09ZSlyZXR1cm4gZTtyZXR1cm4gbnVsbH1fZ2V0RXhwb3J0VmFsdWVGb3JPcHRJbmRleChlLHQsbil7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MCYmZTx0Lmxlbmd0aCl7Y29uc3QgYT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobi5mZXRjaElmUmVmKHRbZV0pKTtpZigic3RyaW5nIj09dHlwZW9mIGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9X2dldE9wdEluZm8oZSx0LG4sYSl7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIG51bGw7Y29uc3Qgcj1uZXcgTWFwO2xldCBzPW51bGw7Y29uc3QgaT1lLmdldCgiUGFyZW50Iiksbz1pIGluc3RhbmNlb2YgRGljdD9pLmdldCgiS2lkcyIpOm51bGw7aWYoQXJyYXkuaXNBcnJheShvKSlmb3IobGV0IHQ9MCxpPU1hdGgubWluKG8ubGVuZ3RoLG4ubGVuZ3RoKTt0PGk7dCsrKXtjb25zdCBuPW9bdF07biBpbnN0YW5jZW9mIFJlZiYmaXNSZWZzRXF1YWwobix0aGlzLnJlZikmJihzPXQpO2NvbnN0IGk9YS5mZXRjaElmUmVmKG4pO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2k9PT1lJiYocz10KTtjb25zdCBsPXRoaXMuX2dldE9uU3RhdGVOYW1lKGkpOyJzdHJpbmciIT10eXBlb2YgbHx8ci5oYXMobCl8fHIuc2V0KGwsdCl9ZWxzZSBpZigxPT09bi5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgdCl7cz0wO3Iuc2V0KHQsMCl9cmV0dXJue2N1cnJlbnRJbmRleDpzLG9wdDpuLHN0YXRlVG9JbmRleDpyfX1fZ2V0RXhwb3J0VmFsdWUoZSx0LG4pe2lmKCF0fHwic3RyaW5nIiE9dHlwZW9mIGV8fCJPZmYiPT09ZSlyZXR1cm4gZTtpZihlPT09dGhpcy5fb25TdGF0ZU5hbWUpe2NvbnN0IGU9dGhpcy5fZ2V0RXhwb3J0VmFsdWVGb3JPcHRJbmRleCh0LmN1cnJlbnRJbmRleCx0Lm9wdCxuKTtpZihudWxsIT09ZSlyZXR1cm4gZX1pZih0LnN0YXRlVG9JbmRleC5oYXMoZSkpe2NvbnN0IGE9dGhpcy5fZ2V0RXhwb3J0VmFsdWVGb3JPcHRJbmRleCh0LnN0YXRlVG9JbmRleC5nZXQoZSksdC5vcHQsbik7aWYobnVsbCE9PWEpcmV0dXJuIGF9Y29uc3QgYT1wYXJzZUludChlLDEwKTtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihhKSYmU3RyaW5nKGEpPT09ZSYmdGhpcy5fZ2V0RXhwb3J0VmFsdWVGb3JPcHRJbmRleChhLHQub3B0LG4pfHxlfV9wcm9jZXNzQ2hlY2tCb3goZSl7Y29uc3QgdD1lLmRpY3QuZ2V0KCJBUCIpO2xldCBuPXQgaW5zdGFuY2VvZiBEaWN0P3QuZ2V0KCJOIik6bnVsbDtuIGluc3RhbmNlb2YgRGljdHx8KG49bnVsbCk7Y29uc3QgYT10aGlzLl9kZWNvZGVGb3JtVmFsdWUoZS5kaWN0LmdldCgiQVMiKSk7InN0cmluZyI9PXR5cGVvZiBhJiYodGhpcy5kYXRhLmZpZWxkVmFsdWU9YSk7Y29uc3Qgcj1udWxsIT09dGhpcy5kYXRhLmZpZWxkVmFsdWUmJiJPZmYiIT09dGhpcy5kYXRhLmZpZWxkVmFsdWU/dGhpcy5kYXRhLmZpZWxkVmFsdWU6IlllcyIscz1uP1suLi5uLmdldEtleXMoKV06W107aWYoMD09PXMubGVuZ3RoKXMucHVzaCgiT2ZmIixyKTtlbHNlIGlmKDE9PT1zLmxlbmd0aCkiT2ZmIj09PXNbMF0/cy5wdXNoKHIpOnMudW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihzLmluY2x1ZGVzKHIpKXtzLmxlbmd0aD0wO3MucHVzaCgiT2ZmIixyKX1lbHNle2NvbnN0IGU9cy5maW5kKGU9PiJPZmYiIT09ZSk7cy5sZW5ndGg9MDtzLnB1c2goIk9mZiIsZSl9Y29uc3QgaT1zWzFdO3RoaXMuX29uU3RhdGVOYW1lPWk7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUuZGljdCxrZXk6Ik9wdCJ9KSxsPXRoaXMuX2dldE9wdEluZm8oZS5kaWN0LGksbyxlLnhyZWYpO3RoaXMuZGF0YS5leHBvcnRWYWx1ZT10aGlzLl9nZXRFeHBvcnRWYWx1ZShpLGwsZS54cmVmKTtzLmluY2x1ZGVzKHRoaXMuZGF0YS5maWVsZFZhbHVlKXx8dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWV8fCh0aGlzLmRhdGEuZmllbGRWYWx1ZT0iT2ZmIik7dGhpcy5kYXRhLmZpZWxkVmFsdWU9dGhpcy5fZ2V0RXhwb3J0VmFsdWUodGhpcy5kYXRhLmZpZWxkVmFsdWUsbCxlLnhyZWYpO3RoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT10aGlzLl9nZXRFeHBvcnRWYWx1ZSh0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsbCxlLnhyZWYpO2NvbnN0IGY9bj8uZ2V0KGkpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9ZiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZjpudWxsO2NvbnN0IGM9bj8uZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9YyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YzpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJjaGVjayIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7dGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3Q7bnVsbD09PXRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT0iT2ZmIil9X3Byb2Nlc3NSYWRpb0J1dHRvbihlKXt0aGlzLmRhdGEuYnV0dG9uVmFsdWU9bnVsbDtjb25zdCB0PWUuZGljdC5nZXQoIlBhcmVudCIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnBhcmVudD1lLmRpY3QuZ2V0UmF3KCJQYXJlbnQiKTtjb25zdCBuPXQuZ2V0KCJWIik7biBpbnN0YW5jZW9mIE5hbWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobikpfWNvbnN0IG49ZS5kaWN0LmdldCgiQVAiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgYT1uLmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtsZXQgcj1udWxsO2Zvcihjb25zdCBlIG9mIGEuZ2V0S2V5cygpKWlmKCJPZmYiIT09ZSl7cj1lO2JyZWFrfXRoaXMuX29uU3RhdGVOYW1lPXI7Y29uc3Qgcz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUuZGljdCxrZXk6Ik9wdCJ9KSxpPXRoaXMuX2dldE9wdEluZm8oZS5kaWN0LHIscyxlLnhyZWYpO3RoaXMuZGF0YS5idXR0b25WYWx1ZT10aGlzLl9nZXRFeHBvcnRWYWx1ZShyLGksZS54cmVmKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT10aGlzLl9nZXRFeHBvcnRWYWx1ZSh0aGlzLmRhdGEuZmllbGRWYWx1ZSxpLGUueHJlZik7dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPXRoaXMuX2dldEV4cG9ydFZhbHVlKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxpLGUueHJlZik7Y29uc3Qgbz1hLmdldChyKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW8gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP286bnVsbDtjb25zdCBsPWEuZ2V0KCJPZmYiKTt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9bCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bDpudWxsO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U/dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuY2hlY2tlZEFwcGVhcmFuY2UpOnRoaXMuX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLCJkaXNjIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1B1c2hCdXR0b24oZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOm59PWU7aWYodC5oYXMoIkEiKXx8dC5oYXMoIkFBIil8fHRoaXMuZGF0YS5hbHRlcm5hdGl2ZVRleHQpe3RoaXMuZGF0YS5pc1Rvb2x0aXBPbmx5PSF0LmhhcygiQSIpJiYhdC5oYXMoIkFBIik7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDpuLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6bi5hdHRhY2htZW50c30pfWVsc2Ugd2FybigiUHVzaCBidXR0b25zIHdpdGhvdXQgYWN0aW9uIGRpY3Rpb25hcmllcyBhcmUgbm90IHN1cHBvcnRlZCIpfWdldEZpZWxkT2JqZWN0KCl7bGV0IGUsdD0iYnV0dG9uIjtpZih0aGlzLmRhdGEuY2hlY2tCb3gpe3Q9ImNoZWNrYm94IjtlPXRoaXMuZGF0YS5leHBvcnRWYWx1ZX1lbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil7dD0icmFkaW9idXR0b24iO2U9dGhpcy5kYXRhLmJ1dHRvblZhbHVlfXJldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWV8fCJPZmYiLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZXhwb3J0VmFsdWVzOmUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOnR9fWdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldElmTmFtZSgiQmFzZUZvbnQiLCJaYXBmRGluZ2JhdHMiKTtlLnNldElmTmFtZSgiVHlwZSIsIkZhbGxiYWNrVHlwZSIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRmFsbGJhY2tUeXBlIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiWmFwZkRpbmdiYXRzRW5jb2RpbmciKTtyZXR1cm4gc2hhZG93KHRoaXMsImZhbGxiYWNrRm9udERpY3QiLGUpfX1jbGFzcyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpufT1lO3RoaXMuaW5kaWNlcz10LmdldEFycmF5KCJJIik7dGhpcy5oYXNJbmRpY2VzPUFycmF5LmlzQXJyYXkodGhpcy5pbmRpY2VzKSYmdGhpcy5pbmRpY2VzLmxlbmd0aD4wO3RoaXMuZGF0YS5vcHRpb25zPVtdO2NvbnN0IGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiT3B0In0pO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PW4uZmV0Y2hJZlJlZihhW2VdKSxyPUFycmF5LmlzQXJyYXkodCk7dGhpcy5kYXRhLm9wdGlvbnNbZV09e2V4cG9ydFZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShyP24uZmV0Y2hJZlJlZih0WzBdKTp0KSxkaXNwbGF5VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHI/bi5mZXRjaElmUmVmKHRbMV0pOnQpfX1pZih0aGlzLmhhc0luZGljZXMpe3RoaXMuZGF0YS5maWVsZFZhbHVlPVtdO2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoO2Zvcihjb25zdCB0IG9mIHRoaXMuaW5kaWNlcylOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wJiZ0PGUmJnRoaXMuZGF0YS5maWVsZFZhbHVlLnB1c2godGhpcy5kYXRhLm9wdGlvbnNbdF0uZXhwb3J0VmFsdWUpfWVsc2Uic3RyaW5nIj09dHlwZW9mIHRoaXMuZGF0YS5maWVsZFZhbHVlP3RoaXMuZGF0YS5maWVsZFZhbHVlPVt0aGlzLmRhdGEuZmllbGRWYWx1ZV06dGhpcy5kYXRhLmZpZWxkVmFsdWV8fD1bXTswPT09dGhpcy5kYXRhLm9wdGlvbnMubGVuZ3RoJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MCYmKHRoaXMuZGF0YS5vcHRpb25zPXRoaXMuZGF0YS5maWVsZFZhbHVlLm1hcChlPT4oe2V4cG9ydFZhbHVlOmUsZGlzcGxheVZhbHVlOmV9KSkpO3RoaXMuZGF0YS5jb21ibz10aGlzLmhhc0ZpZWxkRmxhZyhlZSk7dGhpcy5kYXRhLm11bHRpU2VsZWN0PXRoaXMuaGFzRmllbGRGbGFnKG5lKTt0aGlzLl9oYXNUZXh0PSEwfWdldEZpZWxkT2JqZWN0KCl7Y29uc3QgZT10aGlzLmRhdGEuY29tYm8/ImNvbWJvYm94IjoibGlzdGJveCIsdD10aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGg+MD90aGlzLmRhdGEuZmllbGRWYWx1ZVswXTpudWxsO3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dCxkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsbnVtSXRlbXM6dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoLG11bHRpcGxlU2VsZWN0aW9uOnRoaXMuZGF0YS5tdWx0aVNlbGVjdCxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLGl0ZW1zOnRoaXMuZGF0YS5vcHRpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbix0eXBlOmV9fWFtZW5kU2F2ZWREaWN0KGUsdCl7aWYoIXRoaXMuaGFzSW5kaWNlcylyZXR1cm47bGV0IG49ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnZhbHVlO0FycmF5LmlzQXJyYXkobil8fChuPVtuXSk7Y29uc3QgYT1bXSx7b3B0aW9uczpyfT10aGlzLmRhdGE7Zm9yKGxldCBlPTAsdD0wLHM9ci5sZW5ndGg7ZTxzO2UrKylpZihyW2VdLmV4cG9ydFZhbHVlPT09blt0XSl7YS5wdXNoKGUpO3QrPTF9dC5zZXQoIkkiLGEpfWFzeW5jIF9nZXRBcHBlYXJhbmNlKGUsdCxuLGEpe2lmKHRoaXMuZGF0YS5jb21ibylyZXR1cm4gc3VwZXIuX2dldEFwcGVhcmFuY2UoZSx0LG4sYSk7bGV0IHIscztjb25zdCBpPWE/LmdldCh0aGlzLmRhdGEuaWQpO2lmKGkpe3M9aS5yb3RhdGlvbjtyPWkudmFsdWV9aWYodm9pZCAwPT09cyYmdm9pZCAwPT09ciYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcylyZXR1cm4gbnVsbDt2b2lkIDA9PT1yP3I9dGhpcy5kYXRhLmZpZWxkVmFsdWU6QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtsZXR7d2lkdGg6byxoZWlnaHQ6bH09dGhpczs5MCE9PXMmJjI3MCE9PXN8fChbbyxsXT1bbCxvXSk7Y29uc3QgZj10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsYz1bXTtmb3IobGV0IGU9MDtlPGY7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtyLmluY2x1ZGVzKHQpJiZjLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgaD1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCB1LHtmb250U2l6ZTptfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKG0pdT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGwtMSkvZjtsZXQgdCxuPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxoKTtpZihhPm4pe249YTt0PWV9fVt1LG1dPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLG8tNCx0LGgsLTEpfWNvbnN0IHA9MS4zNSptLGQ9KHAtbSkvMixnPU1hdGguZmxvb3IobC9wKTtsZXQgYj0wO2lmKGMubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4uYyksdD1NYXRoLm1heCguLi5jKTtiPU1hdGgubWF4KDAsdC1nKzEpO2I+ZSYmKGI9ZSl9Y29uc3Qgdz1NYXRoLm1pbihiK2crMSxmKSxqPVsiL1R4IEJNQyBxIixgMSAxICR7b30gJHtsfSByZSBXIG5gXTtpZihjLmxlbmd0aCl7ai5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGMpYjw9ZSYmZTx3JiZqLnB1c2goYDEgJHtsLShlLWIrMSkqcH0gJHtvfSAke3B9IHJlIGZgKX1qLnB1c2goIkJUIix1LGAxIDAgMCAxIDAgJHtsfSBUbWApO2NvbnN0IGs9e3NoaWZ0OjB9O2ZvcihsZXQgZT1iO2U8dztlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxuPWU9PT1iP2Q6MDtqLnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LGgsbSxvLDAsaywyLC1wK24pKX1qLnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIGouam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257X2hhc1ZhbHVlRnJvbVhGQT0hMTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9IXRoaXMuZGF0YS5oYXNPd25DYW52YXN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLm5vUm90YXRlPSEwO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0fT1lO2lmKHRoaXMuZGF0YS5oYXNBcHBlYXJhbmNlKXRoaXMuZGF0YS5uYW1lPSJOb0ljb24iO2Vsc2V7dGhpcy5kYXRhLnJlY3RbMV09dGhpcy5kYXRhLnJlY3RbM10tMjI7dGhpcy5kYXRhLnJlY3RbMl09dGhpcy5kYXRhLnJlY3RbMF0rMjI7dGhpcy5kYXRhLm5hbWU9dC5oYXMoIk5hbWUiKT90LmdldCgiTmFtZSIpLm5hbWU6Ik5vdGUifWlmKHQuaGFzKCJTdGF0ZSIpKXt0aGlzLmRhdGEuc3RhdGU9dC5nZXQoIlN0YXRlIil8fG51bGw7dGhpcy5kYXRhLnN0YXRlTW9kZWw9dC5nZXQoIlN0YXRlTW9kZWwiKXx8bnVsbH1lbHNle3RoaXMuZGF0YS5zdGF0ZT1udWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPW51bGx9fX1jbGFzcyBMaW5rQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOm59PWU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdCBhPWdldFF1YWRQb2ludHModCx0aGlzLnJlY3RhbmdsZSk7YSYmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWEpO3RoaXMuZGF0YS5ib3JkZXJDb2xvcnx8PXRoaXMuZGF0YS5jb2xvcjtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OnQscmVzdWx0T2JqOnRoaXMuZGF0YSxkb2NCYXNlVXJsOm4uYmFzZVVybCxkb2NBdHRhY2htZW50czpuLmF0dGFjaG1lbnRzfSl9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgUG9wdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7dGhpcy5kYXRhLm5vSFRNTD0hMTswIT09dGhpcy53aWR0aCYmMCE9PXRoaXMuaGVpZ2h0fHwodGhpcy5kYXRhLnJlY3Q9bnVsbCk7bGV0IG49dC5nZXQoIlBhcmVudCIpO2lmKCFuKXt3YXJuKCJQb3B1cCBhbm5vdGF0aW9uIGhhcyBhIG1pc3Npbmcgb3IgaW52YWxpZCBwYXJlbnQgYW5ub3RhdGlvbi4iKTtyZXR1cm59dGhpcy5kYXRhLnBhcmVudFJlY3Q9bG9va3VwTm9ybWFsUmVjdChuLmdldEFycmF5KCJSZWN0IiksbnVsbCk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1uLmdldCgiQ3JlYXRpb25EYXRlIil8fCIiO2lzTmFtZShuLmdldCgiUlQiKSxNKSYmKG49bi5nZXQoIklSVCIpKTtpZihuLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUobi5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDtpZihuLmhhcygiQyIpKXt0aGlzLnNldENvbG9yKG4uZ2V0QXJyYXkoIkMiKSk7dGhpcy5kYXRhLmNvbG9yPXRoaXMuY29sb3J9ZWxzZSB0aGlzLmRhdGEuY29sb3I9bnVsbDtpZighdGhpcy52aWV3YWJsZSl7Y29uc3QgZT1uLmdldCgiRiIpO3RoaXMuX2lzVmlld2FibGUoZSkmJnRoaXMuc2V0RmxhZ3MoZSl9dGhpcy5zZXRUaXRsZShuLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhuLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO24uaGFzKCJSQyIpJiYodGhpcy5kYXRhLnJpY2hUZXh0PVhGQUZhY3RvcnkuZ2V0UmljaFRleHRBc0h0bWwobi5nZXQoIlJDIikpKTt0aGlzLmRhdGEub3Blbj0hIXQuZ2V0KCJPcGVuIil9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LG4pe2NvbnN0e29sZEFubm90YXRpb246YSxyZWN0OnIscGFyZW50OnN9PWUsaT1hfHxuZXcgRGljdCh0KTtpLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aS5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIlBvcHVwIikpO2kuc2V0SWZOb3RFeGlzdHMoIk9wZW4iLCExKTtpLnNldElmQXJyYXkoIlJlY3QiLHIpO2kuc2V0KCJQYXJlbnQiLHMpO3JldHVybiBpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxuKXtyZXR1cm4gbnVsbH19Y2xhc3MgRnJlZVRleHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2Fubm90YXRpb25HbG9iYWxzOnQseHJlZjpufT1lO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7dGhpcy5faGFzQXBwZWFyYW5jZT0hIXRoaXMuYXBwZWFyYW5jZTtpZih0aGlzLl9oYXNBcHBlYXJhbmNlKXtjb25zdHtmb250Q29sb3I6ZSxmb250U2l6ZTphfT1mdW5jdGlvbiBwYXJzZUFwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsbikucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLG4sdC5nbG9iYWxDb2xvclNwYWNlQ2FjaGUpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udENvbG9yPWU7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZT1hfHwxMH1lbHNle3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemV8fD0xMDtjb25zdHtmb250Q29sb3I6dCxmb250U2l6ZTphfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKHRoaXMuX2NvbnRlbnRzLnN0cil7dGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuX2NvbnRlbnRzLnN0ci5zcGxpdCgvXHJcbj98XG4vKS5tYXAoZT0+ZS50cmltRW5kKCkpO2NvbnN0e2Nvb3JkczplLGJib3g6dCxtYXRyaXg6bn09RmFrZVVuaWNvZGVGb250LmdldEZpcnN0UG9zaXRpb25JbmZvKHRoaXMucmVjdGFuZ2xlLHRoaXMucm90YXRpb24sYSk7dGhpcy5kYXRhLnRleHRQb3NpdGlvbj10aGlzLl90cmFuc2Zvcm1Qb2ludChlLHQsbil9aWYodGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IHI9ZS5kaWN0LmdldCgiQ0EiKSxzPW5ldyBGYWtlVW5pY29kZUZvbnQobiwic2Fucy1zZXJpZiIpO3RoaXMuYXBwZWFyYW5jZT1zLmNyZWF0ZUFwcGVhcmFuY2UodGhpcy5fY29udGVudHMuc3RyLHRoaXMucmVjdGFuZ2xlLHRoaXMucm90YXRpb24sYSx0LHIpO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UpfWVsc2Ugd2FybigiRnJlZVRleHRBbm5vdGF0aW9uOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIil9fWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiB0aGlzLl9oYXNBcHBlYXJhbmNlfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7Y29sb3I6cixkYXRlOnMsZm9udFNpemU6aSxvbGRBbm5vdGF0aW9uOm8scmVjdDpsLHJvdGF0aW9uOmYsdXNlcjpjLHZhbHVlOmh9PWUsdT1vfHxuZXcgRGljdCh0KTt1LnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7dS5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIkZyZWVUZXh0IikpO3Uuc2V0KG8/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZShzKX1gKTtvJiZ1LmRlbGV0ZSgiUkMiKTt1LnNldElmQXJyYXkoIlJlY3QiLGwpO2NvbnN0IG09YC9IZWx2ICR7aX0gVGYgJHtnZXRQZGZDb2xvcihyLCEwKX1gO3Uuc2V0KCJEQSIsbSk7dS5zZXRJZkRlZmluZWQoIkNvbnRlbnRzIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGgpKTt1LnNldElmTm90RXhpc3RzKCJGIiw0KTt1LnNldElmTm90RXhpc3RzKCJCb3JkZXIiLFswLDAsMF0pO3Uuc2V0SWZOdW1iZXIoIlJvdGF0ZSIsZik7dS5zZXRJZkRlZmluZWQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYykpO2lmKG58fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7dS5zZXQoIkFQIixlKTtlLnNldCgiTiIsbnx8YSl9cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe2NvbnN0e2Jhc2VGb250UmVmOmEsZXZhbHVhdG9yOnIsdGFzazpzfT1uLHtjb2xvcjppLGZvbnRTaXplOm8scmVjdDpsLHJvdGF0aW9uOmYsdmFsdWU6Y309ZTtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBoPW5ldyBEaWN0KHQpLHU9bmV3IERpY3QodCk7aWYoYSl1LnNldCgiSGVsdiIsYSk7ZWxzZXtjb25zdCBlPW5ldyBEaWN0KHQpO2Uuc2V0SWZOYW1lKCJCYXNlRm9udCIsIkhlbHZldGljYSIpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRm9udCIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiVHlwZTEiKTtlLnNldElmTmFtZSgiRW5jb2RpbmciLCJXaW5BbnNpRW5jb2RpbmciKTt1LnNldCgiSGVsdiIsZSl9aC5zZXQoIkZvbnQiLHUpO2NvbnN0IG09YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEocixzLHtmb250TmFtZToiSGVsdiIsZm9udFNpemU6b30saCksW3AsZCxnLGJdPWw7bGV0IHc9Zy1wLGo9Yi1kO2YlMTgwIT0wJiYoW3csal09W2osd10pO2NvbnN0IGs9Yy5zcGxpdCgiXG4iKSx5PW8vMWUzO2xldCBxPS0xLzA7Y29uc3Qgdj1bXTtmb3IobGV0IGUgb2Ygayl7Y29uc3QgdD1tLmVuY29kZVN0cmluZyhlKTtpZih0Lmxlbmd0aD4xKXJldHVybiBudWxsO2U9dC5qb2luKCIiKTt2LnB1c2goZSk7bGV0IG49MDtjb25zdCBhPW0uY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiBhKW4rPWUud2lkdGgqeTtxPU1hdGgubWF4KHEsbil9Y29uc3QgUz1xPnc/dy9xOjE7bGV0IHg9MTtjb25zdCBDPTEuMzUqbyxUPTEqbyxPPUMqay5sZW5ndGg7Tz5qJiYoeD1qL08pO2NvbnN0IFI9bypNYXRoLm1pbihTLHgpO2xldCBELEgsTTtzd2l0Y2goZil7Y2FzZSAwOk09WzEsMCwwLDFdO0g9W2xbMF0sbFsxXSx3LGpdO0Q9W2xbMF0sbFszXS1UXTticmVhaztjYXNlIDkwOk09WzAsMSwtMSwwXTtIPVtsWzFdLC1sWzJdLHcsal07RD1bbFsxXSwtbFswXS1UXTticmVhaztjYXNlIDE4MDpNPVstMSwwLDAsLTFdO0g9Wy1sWzJdLC1sWzNdLHcsal07RD1bLWxbMl0sLWxbMV0tVF07YnJlYWs7Y2FzZSAyNzA6TT1bMCwtMSwxLDBdO0g9Wy1sWzNdLGxbMF0sdyxqXTtEPVstbFszXSxsWzJdLVRdfWNvbnN0IE49WyJxIixgJHtNLmpvaW4oIiAiKX0gMCAwIGNtYCxgJHtILmpvaW4oIiAiKX0gcmUgVyBuYCwiQlQiLGAke2dldFBkZkNvbG9yKGksITApfWAsYDAgVGMgL0hlbHYgJHtudW1iZXJUb1N0cmluZyhSKX0gVGZgXTtOLnB1c2goYCR7RC5qb2luKCIgIil9IFRkICgke2VzY2FwZVN0cmluZyh2WzBdKX0pIFRqYCk7Y29uc3QgXz1udW1iZXJUb1N0cmluZyhDKTtmb3IobGV0IGU9MSx0PXYubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9dltlXTtOLnB1c2goYDAgLSR7X30gVGQgKCR7ZXNjYXBlU3RyaW5nKHQpfSkgVGpgKX1OLnB1c2goIkVUIiwiUSIpO2NvbnN0IEU9Ti5qb2luKCJcbiIpLHo9bmV3IERpY3QodCk7ei5zZXQoIkZvcm1UeXBlIiwxKTt6LnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTt6LnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTt6LnNldCgiQkJveCIsbCk7ei5zZXQoIlJlc291cmNlcyIsaCk7ei5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsLWxbMF0sLWxbMV1dKTtyZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShFLHopfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bn09ZTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHI9dC5nZXQoIkNBIikscz1nZXRQZGZDb2xvckFycmF5KGdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkpLGk9cz9yOm51bGwsbz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGw9MipvLGY9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tbCx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWwsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStsLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rbF07VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsZil8fCh0aGlzLnJlY3RhbmdsZT1mKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOmAke299IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnMsc3Ryb2tlQWxwaGE6cixmaWxsQWxwaGE6aSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHthWzBdfSAke2FbMV19IG1gLGAke2FbMl19ICR7YVszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS1vLHRbN10tbyx0WzJdK28sdFszXStvXX19KX19fWNsYXNzIFNxdWFyZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm59PWU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UGRmQ29sb3JBcnJheShnZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpKSxzPXI/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcilyZXR1cm47dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6bixleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpyLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOnMscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBuPXRbNF0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGE9dFs1XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIscz10WzZdLXRbNF0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxpPXRbM10tdFs3XS10aGlzLmJvcmRlclN0eWxlLndpZHRoO2UucHVzaChgJHtufSAke2F9ICR7c30gJHtpfSByZWApO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bn09ZTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxhPXQuZ2V0KCJDQSIpLHI9Z2V0UGRmQ29sb3JBcnJheShnZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpKSxzPXI/YTpudWxsO2lmKDA9PT10aGlzLmJvcmRlclN0eWxlLndpZHRoJiYhcilyZXR1cm47Y29uc3QgaT00LzMqTWF0aC50YW4oTWF0aC5QSS84KTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOmAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh9IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOnIsc3Ryb2tlQWxwaGE6YSxmaWxsQWxwaGE6cyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IG49dFswXSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzFdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixzPXRbNl0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG89dFs3XSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbD1uKyhzLW4pLzIsZj1hKyhvLWEpLzIsYz0ocy1uKS8yKmksaD0oby1hKS8yKmk7ZS5wdXNoKGAke2x9ICR7b30gbWAsYCR7bCtjfSAke299ICR7c30gJHtmK2h9ICR7c30gJHtmfSBjYCxgJHtzfSAke2YtaH0gJHtsK2N9ICR7YX0gJHtsfSAke2F9IGNgLGAke2wtY30gJHthfSAke259ICR7Zi1ofSAke259ICR7Zn0gY2AsYCR7bn0gJHtmK2h9ICR7bC1jfSAke299ICR7bH0gJHtvfSBjYCwiaCIpO3I/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX19Y2xhc3MgUG9seWxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpufT1lO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLnZlcnRpY2VzPW51bGw7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IHI9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZighaXNOdW1iZXJBcnJheShyLG51bGwpKXJldHVybjtjb25zdCBzPXRoaXMuZGF0YS52ZXJ0aWNlcz1GbG9hdDMyQXJyYXkuZnJvbShyKTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxyPXQuZ2V0KCJDQSIpO2xldCBpLG89Z2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKTtvJiY9Z2V0UGRmQ29sb3JBcnJheShvKTtpPW8/dGhpcy5jb2xvcj9vLmV2ZXJ5KCh0LG4pPT50PT09ZVtuXSk/ImYiOiJCIjoiZiI6IlMiO2NvbnN0IGw9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxmPTIqbCxjPWEuc2xpY2UoKTtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKz0yKVV0aWwucmVjdEJvdW5kaW5nQm94KHNbZV0tZixzW2UrMV0tZixzW2VdK2Ysc1tlKzFdK2YsYyk7VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsYyl8fCh0aGlzLnJlY3RhbmdsZT1jKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOmAke2x9IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6cixmaWxsQ29sb3I6byxmaWxsQWxwaGE6bz9yOm51bGwscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IobGV0IHQ9MCxuPXMubGVuZ3RoO3Q8bjt0Kz0yKWUucHVzaChgJHtzW3RdfSAke3NbdCsxXX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaChpKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbiBleHRlbmRzIFBvbHlsaW5lQW5ub3RhdGlvbnt9Y2xhc3MgQ2FyZXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbnt9Y2xhc3MgSW5rQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtkaWN0OnQseHJlZjpufT1lO3RoaXMuZGF0YS5pbmtMaXN0cz1bXTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5vcGFjaXR5PXQuZ2V0KCJDQSIpfHwxO2NvbnN0IHI9dC5nZXRBcnJheSgiSW5rTGlzdCIpO2lmKEFycmF5LmlzQXJyYXkocikpe2Zvcihjb25zdCBlIG9mIHIpe2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShlLmxlbmd0aCk7dGhpcy5kYXRhLmlua0xpc3RzLnB1c2godCk7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSs9Mil7Y29uc3Qgcj1uLmZldGNoSWZSZWYoZVthXSkscz1uLmZldGNoSWZSZWYoZVthKzFdKTtpZigibnVtYmVyIj09dHlwZW9mIHImJiJudW1iZXIiPT10eXBlb2Ygcyl7dFthXT1yO3RbYSsxXT1zfX19aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscj10LmdldCgiQ0EiKSxzPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEsaT0yKnMsbz1hLnNsaWNlKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrPTIpVXRpbC5yZWN0Qm91bmRpbmdCb3goZVt0XS1pLGVbdCsxXS1pLGVbdF0raSxlW3QrMV0raSxvKTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxvKXx8KHRoaXMucmVjdGFuZ2xlPW8pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOm4sZXh0cmE6YCR7c30gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IG49MCxhPXQubGVuZ3RoO248YTtuKz0yKWUucHVzaChgJHt0W25dfSAke3RbbisxXX0gJHswPT09bj8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7b2xkQW5ub3RhdGlvbjpyLGNvbG9yOnMsZGF0ZTppLG9wYWNpdHk6byxwYXRoczpsLG91dGxpbmVzOmYscmVjdDpjLHJvdGF0aW9uOmgsdGhpY2tuZXNzOnUsdXNlcjptfT1lLHA9cnx8bmV3IERpY3QodCk7cC5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Auc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJJbmsiKSk7cC5zZXQocj8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKGkpfWApO3Auc2V0SWZBcnJheSgiUmVjdCIsYyk7cC5zZXRJZkFycmF5KCJJbmtMaXN0IixmPy5wb2ludHN8fGw/LnBvaW50cyk7cC5zZXRJZk5vdEV4aXN0cygiRiIsNCk7cC5zZXRJZk51bWJlcigiUm90YXRlIixoKTtwLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShtKSk7ZiYmcC5zZXRJZk5hbWUoIklUIiwiSW5rSGlnaGxpZ2h0Iik7aWYodT4wKXtjb25zdCBlPW5ldyBEaWN0KHQpO3Auc2V0KCJCUyIsZSk7ZS5zZXQoIlciLHUpfXAuc2V0SWZBcnJheSgiQyIsZ2V0UGRmQ29sb3JBcnJheShzKSk7cC5zZXRJZk51bWJlcigiQ0EiLG8pO2lmKGF8fG4pe2NvbnN0IGU9bmV3IERpY3QodCk7cC5zZXQoIkFQIixlKTtlLnNldCgiTiIsbnx8YSl9cmV0dXJuIHB9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsbik7Y29uc3R7Y29sb3I6YSxyZWN0OnIscGF0aHM6cyx0aGlja25lc3M6aSxvcGFjaXR5Om99PWU7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3QgbD1bYCR7aX0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmbC5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiBzLmxpbmVzKXtsLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixuPWUubGVuZ3RoO3Q8bjt0Kz02KWlmKGlzTmFOKGVbdF0pKWwucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W24sYSxyLHMsaSxvXT1lLnNsaWNlKHQsdCs2KTtsLnB1c2goW24sYSxyLHMsaSxvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmwucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWwucHVzaCgiUyIpO2NvbnN0IGY9bC5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIscik7Yy5zZXQoIkxlbmd0aCIsZi5sZW5ndGgpO2lmKDEhPT1vKXtjb25zdCBlPW5ldyBEaWN0KHQpLG49bmV3IERpY3QodCksYT1uZXcgRGljdCh0KTthLnNldCgiQ0EiLG8pO2Euc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIik7bi5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixuKTtjLnNldCgiUmVzb3VyY2VzIixlKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShmLGMpfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtRm9ySGlnaGxpZ2h0KGUsdCxuKXtjb25zdHtjb2xvcjphLHJlY3Q6cixvdXRsaW5lczp7b3V0bGluZTpzfSxvcGFjaXR5Oml9PWU7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgbz1bYCR7Z2V0UGRmQ29sb3IoYSwhMCl9YCwiL1IwIGdzIl07by5wdXNoKGAke251bWJlclRvU3RyaW5nKHNbNF0pfSAke251bWJlclRvU3RyaW5nKHNbNV0pfSBtYCk7Zm9yKGxldCBlPTYsdD1zLmxlbmd0aDtlPHQ7ZSs9NilpZihpc05hTihzW2VdKSlvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1tlKzRdKX0gJHtudW1iZXJUb1N0cmluZyhzW2UrNV0pfSBsYCk7ZWxzZXtjb25zdFt0LG4sYSxyLGksbF09cy5zbGljZShlLGUrNik7by5wdXNoKFt0LG4sYSxyLGksbF0ubWFwKG51bWJlclRvU3RyaW5nKS5qb2luKCIgIikrIiBjIil9by5wdXNoKCJoIGYiKTtjb25zdCBsPW8uam9pbigiXG4iKSxmPW5ldyBEaWN0KHQpO2Yuc2V0KCJGb3JtVHlwZSIsMSk7Zi5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Zi5zZXRJZk5hbWUoIlR5cGUiLCJYT2JqZWN0Iik7Zi5zZXQoIkJCb3giLHIpO2Yuc2V0KCJMZW5ndGgiLGwubGVuZ3RoKTtjb25zdCBjPW5ldyBEaWN0KHQpLGg9bmV3IERpY3QodCk7Yy5zZXQoIkV4dEdTdGF0ZSIsaCk7Zi5zZXQoIlJlc291cmNlcyIsYyk7Y29uc3QgdT1uZXcgRGljdCh0KTtoLnNldCgiUjAiLHUpO3Uuc2V0SWZOYW1lKCJCTSIsIk11bHRpcGx5Iik7aWYoMSE9PWkpe3Uuc2V0KCJjYSIsaSk7dS5zZXRJZk5hbWUoIlR5cGUiLCJFeHRHU3RhdGUiKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShsLGYpfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpufT1lO3RoaXMuZGF0YS5pc0VkaXRhYmxlPSF0aGlzLmRhdGEubm9IVE1MO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLm9wYWNpdHk9dC5nZXQoIkNBIil8fDE7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMSwxLDBdKSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOm4sZmlsbENvbG9yOmUsYmxlbmRNb2RlOiJNdWx0aXBseSIsZmlsbEFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFswXX0gJHt0WzFdfSBtYCxgJHt0WzJdfSAke3RbM119IGxgLGAke3RbNl19ICR7dFs3XX0gbGAsYCR7dFs0XX0gJHt0WzVdfSBsYCwiZiIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7Y29sb3I6cixkYXRlOnMsb2xkQW5ub3RhdGlvbjppLG9wYWNpdHk6byxyZWN0Omwscm90YXRpb246Zix1c2VyOmMscXVhZFBvaW50czpofT1lLHU9aXx8bmV3IERpY3QodCk7dS5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Uuc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJIaWdobGlnaHQiKSk7dS5zZXQoaT8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKHMpfWApO3Uuc2V0SWZBcnJheSgiUmVjdCIsbCk7dS5zZXRJZk5vdEV4aXN0cygiRiIsNCk7dS5zZXRJZk5vdEV4aXN0cygiQm9yZGVyIixbMCwwLDBdKTt1LnNldElmTnVtYmVyKCJSb3RhdGUiLGYpO3Uuc2V0SWZBcnJheSgiUXVhZFBvaW50cyIsaCk7dS5zZXRJZkFycmF5KCJDIixnZXRQZGZDb2xvckFycmF5KHIpKTt1LnNldElmTnVtYmVyKCJDQSIsbyk7dS5zZXRJZkRlZmluZWQoIlQiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYykpO2lmKG58fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7dS5zZXQoIkFQIixlKTtlLnNldCgiTiIsbnx8YSl9cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LG4pe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOnMsb3BhY2l0eTppfT1lO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG89W2Ake2dldFBkZkNvbG9yKGEsITApfWAsIi9SMCBncyJdLGw9W107Zm9yKGNvbnN0IGUgb2Ygcyl7bC5sZW5ndGg9MDtsLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IG1gKTtmb3IobGV0IHQ9MixuPWUubGVuZ3RoO3Q8bjt0Kz0yKWwucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3RdKX0gJHtudW1iZXJUb1N0cmluZyhlW3QrMV0pfSBsYCk7bC5wdXNoKCJoIik7by5wdXNoKGwuam9pbigiXG4iKSl9by5wdXNoKCJmKiIpO2NvbnN0IGY9by5qb2luKCJcbiIpLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIscik7Yy5zZXQoIkxlbmd0aCIsZi5sZW5ndGgpO2NvbnN0IGg9bmV3IERpY3QodCksdT1uZXcgRGljdCh0KTtoLnNldCgiRXh0R1N0YXRlIix1KTtjLnNldCgiUmVzb3VyY2VzIixoKTtjb25zdCBtPW5ldyBEaWN0KHQpO3Uuc2V0KCJSMCIsbSk7bS5zZXRJZk5hbWUoIkJNIiwiTXVsdGlwbHkiKTtpZigxIT09aSl7bS5zZXQoImNhIixpKTttLnNldElmTmFtZSgiVHlwZSIsIkV4dEdTdGF0ZSIpfXJldHVybiBuZXcgU3RyaW5nU3RyZWFtKGYsYyl9fWNsYXNzIFVuZGVybGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm59PWU7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOm4sZXh0cmE6IltdIDAgZCAwLjU3MSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFs0XX0gJHt0WzVdKzEuM30gbWAsYCR7dFs2XX0gJHt0WzddKzEuM30gbGAsIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3F1aWdnbHlBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpufT1lO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSksYT10LmdldCgiQ0EiKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjpuLGV4dHJhOiJbXSAwIGQgMSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBuPSh0WzFdLXRbNV0pLzY7bGV0IGE9bixyPXRbNF07Y29uc3Qgcz10WzVdLGk9dFs2XTtlLnB1c2goYCR7cn0gJHtzK2F9IG1gKTtkb3tyKz0yO2E9MD09PWE/bjowO2UucHVzaChgJHtyfSAke3MrYX0gbGApfXdoaWxlKHI8aSk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbNF0scy0yKm4saSxzKzIqbl19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3RyaWtlT3V0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bn09ZTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6bixleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKCh0WzBdK3RbNF0pLzIrIiAiKyh0WzFdK3RbNV0pLzIrIiBtIiwodFsyXSt0WzZdKS8yKyIgIisodFszXSt0WzddKS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3RhbXBBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbnsjQXQ9bnVsbDtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtpZihlKXtpZighdGhpcy5kYXRhLmlzRWRpdGFibGUpcmV0dXJuITA7dGhpcy4jQXQ/Pz10aGlzLmRhdGEuaGFzT3duQ2FudmFzO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7cmV0dXJuITB9aWYobnVsbCE9PXRoaXMuI0F0KXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuI0F0O3RoaXMuI0F0PW51bGx9cmV0dXJuIXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6bixhcDphfSl7Y29uc3R7ZGF0ZTpyLG9sZEFubm90YXRpb246cyxyZWN0Omkscm90YXRpb246byx1c2VyOmx9PWUsZj1zfHxuZXcgRGljdCh0KTtmLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7Zi5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIlN0YW1wIikpO2Yuc2V0KHM/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZShyKX1gKTtmLnNldElmQXJyYXkoIlJlY3QiLGkpO2Yuc2V0SWZOb3RFeGlzdHMoIkYiLDQpO2Yuc2V0SWZOb3RFeGlzdHMoIkJvcmRlciIsWzAsMCwwXSk7Zi5zZXRJZk51bWJlcigiUm90YXRlIixvKTtmLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShsKSk7aWYobnx8YSl7Y29uc3QgZT1uZXcgRGljdCh0KTtmLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixufHxhKX1yZXR1cm4gZn1zdGF0aWMgYXN5bmMjeHQoZSx0KXtjb25zdHthcmVDb250b3VyczpuLGNvbG9yOmEscmVjdDpyLGxpbmVzOnMsdGhpY2tuZXNzOml9PWU7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3Qgbz1bYCR7aX0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLG4pfWBdO2Zvcihjb25zdCBlIG9mIHMpe28ucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbWApO2ZvcihsZXQgdD02LG49ZS5sZW5ndGg7dDxuO3QrPTYpaWYoaXNOYU4oZVt0XSkpby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdCs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzVdKX0gbGApO2Vsc2V7Y29uc3RbbixhLHIscyxpLGxdPWUuc2xpY2UodCx0KzYpO28ucHVzaChbbixhLHIscyxpLGxdLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfTY9PT1lLmxlbmd0aCYmby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBsYCl9by5wdXNoKG4/IkYiOiJTIik7Y29uc3QgbD1vLmpvaW4oIlxuIiksZj1uZXcgRGljdCh0KTtmLnNldCgiRm9ybVR5cGUiLDEpO2Yuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2Yuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2Yuc2V0KCJCQm94IixyKTtmLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7cmV0dXJuIG5ldyBTdHJpbmdTdHJlYW0obCxmKX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsbil7aWYoZS5vbGRBbm5vdGF0aW9uKXJldHVybiBudWxsO2lmKGUuaXNTaWduYXR1cmUpcmV0dXJuIHRoaXMuI3h0KGUsdCk7Y29uc3R7cm90YXRpb246YX09ZSx7aW1hZ2VSZWY6cix3aWR0aDpzLGhlaWdodDppfT1uLmltYWdlLG89bmV3IERpY3QodCksbD1uZXcgRGljdCh0KTtvLnNldCgiWE9iamVjdCIsbCk7bC5zZXQoIkltMCIscik7Y29uc3QgZj1gcSAke3N9IDAgMCAke2l9IDAgMCBjbSAvSW0wIERvIFFgLGM9bmV3IERpY3QodCk7Yy5zZXQoIkZvcm1UeXBlIiwxKTtjLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtjLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtjLnNldCgiQkJveCIsWzAsMCxzLGldKTtjLnNldCgiUmVzb3VyY2VzIixvKTtpZihhKXtjb25zdCBlPWdldFJvdGF0aW9uTWF0cml4KGEscyxpKTtjLnNldCgiTWF0cml4IixlKX1yZXR1cm4gbmV3IFN0cmluZ1N0cmVhbShmLGMpfX1jbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2Fubm90YXRpb25HbG9iYWxzOnQsZGljdDpufT1lLGE9bi5nZXQoIkZTIik7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEuZmlsZUlkPXRoaXMuX2dldEF0dGFjaG1lbnRJZChhLG4uZ2V0UmF3KCJGUyIpLHQpO3RoaXMuZGF0YS5maWxlPW5ldyBGaWxlU3BlYyhhKS5zZXJpYWxpemFibGU7Y29uc3Qgcj1uLmdldCgiTmFtZSIpO3RoaXMuZGF0YS5uYW1lPXIgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKHIubmFtZSk6IlB1c2hQaW4iO2NvbnN0IHM9bi5nZXQoImNhIik7dGhpcy5kYXRhLmZpbGxBbHBoYT0ibnVtYmVyIj09dHlwZW9mIHMmJnM+PTAmJnM8PTE/czpudWxsfX1jbGFzcyBNZWRpYUFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue3N0YXRpYyNDdD0vXig/OnZpZGVvfGF1ZGlvKVwvLztjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEubm9IVE1MPSEwfV9zZXRNZWRpYURhdGEoe2Fzc2V0UmVmOmUsYXNzZXREaWN0OnQsZmlsZW5hbWU6bixjb250ZW50VHlwZTphLHdyYXBTb3VuZDpyPSExfSxzKXt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yaWNoTWVkaWE9e2ZpbGVJZDp0aGlzLl9nZXRBdHRhY2htZW50SWQodCxlLHMsciksZmlsZW5hbWU6bixjb250ZW50VHlwZTphfX1zdGF0aWMgX2dldENvbnRlbnRUeXBlKGUsdCxuPW51bGwpe2lmKCJzdHJpbmciPT10eXBlb2YgbiYmTWVkaWFBbm5vdGF0aW9uLiNDdC50ZXN0KG4pKXJldHVybiBuO2NvbnN0IGE9RmlsZVNwZWMucGlja1BsYXRmb3JtSXRlbShlLmdldCgiRUYiKSkscj1hIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hLmRpY3Q/LmdldCgiU3VidHlwZSIpOm51bGw7aWYociBpbnN0YW5jZW9mIE5hbWUmJk1lZGlhQW5ub3RhdGlvbi4jQ3QudGVzdChyLm5hbWUpKXJldHVybiByLm5hbWU7Y29uc3Qgcz10LnNwbGl0KCIuIikuYXQoLTEpPy50b0xvd2VyQ2FzZSgpO3N3aXRjaChzKXtjYXNlIm1wNCI6Y2FzZSJtNHYiOnJldHVybiJ2aWRlby9tcDQiO2Nhc2Uid2VibSI6cmV0dXJuInZpZGVvL3dlYm0iO2Nhc2Uib2d2IjpyZXR1cm4idmlkZW8vb2dnIjtjYXNlIm1vdiI6cmV0dXJuInZpZGVvL3F1aWNrdGltZSI7Y2FzZSJtcDMiOnJldHVybiJhdWRpby9tcGVnIjtjYXNlIm00YSI6cmV0dXJuImF1ZGlvL21wNCI7Y2FzZSJ3YXYiOnJldHVybiJhdWRpby93YXYiO2Nhc2Uib2dhIjpjYXNlIm9nZyI6cmV0dXJuImF1ZGlvL29nZyI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19fWNsYXNzIFJpY2hNZWRpYUFubm90YXRpb24gZXh0ZW5kcyBNZWRpYUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6bixhbm5vdGF0aW9uR2xvYmFsczphfT1lLHI9dC5nZXQoIlJpY2hNZWRpYUNvbnRlbnQiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgcz1SaWNoTWVkaWFBbm5vdGF0aW9uLiNJdChyLG4pO3M/dGhpcy5fc2V0TWVkaWFEYXRhKHMsYSk6d2FybigiUmljaE1lZGlhIGFubm90YXRpb24gaGFzIG5vIHBsYXlhYmxlIGFzc2V0LiIpfXN0YXRpYyNJdChlLHQpe2NvbnN0IG49ZS5nZXQoIkNvbmZpZ3VyYXRpb25zIik7aWYoIUFycmF5LmlzQXJyYXkobikpcmV0dXJuIG51bGw7Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3Qgbj10LmZldGNoSWZSZWYoZSk7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgYT1uLmdldCgiSW5zdGFuY2VzIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBuPXQuZmV0Y2hJZlJlZihlKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZihpc05hbWUobi5nZXQoIlN1YnR5cGUiKSwiRmxhc2giKSljb250aW51ZTtjb25zdCBhPW4uZ2V0UmF3KCJBc3NldCIpLHI9dC5mZXRjaElmUmVmKGEpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFGaWxlU3BlYy5oYXNFbWJlZGRlZEZpbGUocikpY29udGludWU7Y29uc3R7ZmlsZW5hbWU6c309bmV3IEZpbGVTcGVjKHIpLnNlcmlhbGl6YWJsZSxpPU1lZGlhQW5ub3RhdGlvbi5fZ2V0Q29udGVudFR5cGUocixzKTtpZihpKXJldHVybnthc3NldFJlZjphIGluc3RhbmNlb2YgUmVmP2E6bnVsbCxhc3NldERpY3Q6cixmaWxlbmFtZTpzLGNvbnRlbnRUeXBlOml9fX1yZXR1cm4gbnVsbH19Y2xhc3MgU2NyZWVuQW5ub3RhdGlvbiBleHRlbmRzIE1lZGlhQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjpuLGFubm90YXRpb25HbG9iYWxzOmF9PWUscj1TY3JlZW5Bbm5vdGF0aW9uLiNJdCh0LG4pO3ImJnRoaXMuX3NldE1lZGlhRGF0YShyLGEpfXN0YXRpYyNJdChlLHQpe2Zvcihjb25zdCBuIG9mIHRoaXMuI0Z0KGUpKXtjb25zdCBlPXRoaXMuI1R0KG4uZ2V0KCJSIiksdCxuZXcgUmVmU2V0KTtpZihlKXJldHVybiBlfXJldHVybiBudWxsfXN0YXRpYyojRnQoZSl7Y29uc3QgdD1lLmdldCgiQSIpO3QgaW5zdGFuY2VvZiBEaWN0JiZpc05hbWUodC5nZXQoIlMiKSwiUmVuZGl0aW9uIikmJnRoaXMuI090KHQpJiYoeWllbGQgdCk7Y29uc3Qgbj1lLmdldCgiQUEiKTtpZihuIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3RbLGVdb2YgbillIGluc3RhbmNlb2YgRGljdCYmaXNOYW1lKGUuZ2V0KCJTIiksIlJlbmRpdGlvbiIpJiZ0aGlzLiNPdChlKSYmKHlpZWxkIGUpfXN0YXRpYyNPdChlKXtjb25zdCB0PWUuZ2V0KCJPUCIpO3JldHVybiB2b2lkIDA9PT10fHx0PT09X3x8dD09PUV9c3RhdGljI1R0KGUsdCxuKXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBhPWUuZ2V0KCJTIik7aWYoaXNOYW1lKGEsIk1SIikpcmV0dXJuIHRoaXMuI1J0KGUuZ2V0KCJDIiksdCk7aWYoaXNOYW1lKGEsIlNSIikpe2NvbnN0IGE9ZS5nZXQoIlIiKTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihjb25zdCBlIG9mIGEpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKG4uaGFzKGUpKWNvbnRpbnVlO24ucHV0KGUpfWNvbnN0IGE9dGhpcy4jVHQodC5mZXRjaElmUmVmKGUpLHQsbik7aWYoYSlyZXR1cm4gYX19cmV0dXJuIG51bGx9c3RhdGljI1J0KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCYmaXNOYW1lKGUuZ2V0KCJTIiksIk1DRCIpKSlyZXR1cm4gbnVsbDtjb25zdCBuPWUuZ2V0UmF3KCJEIiksYT10LmZldGNoSWZSZWYobikscj1lLmdldCgiQ1QiKTtsZXQgcyxpLG89InN0cmluZyI9PXR5cGVvZiByP3I6bnVsbDtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7cz1hLmRpY3Q7Y29uc3QgdD1lLmdldCgiTiIpO2k9InN0cmluZyI9PXR5cGVvZiB0P3N0cmluZ1RvUERGU3RyaW5nKHQpOiIiO2lmKCFvKXtjb25zdCBlPWEuZGljdC5nZXQoIlN1YnR5cGUiKTtlIGluc3RhbmNlb2YgTmFtZSYmKG89ZS5uYW1lKX19ZWxzZXtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtpZighRmlsZVNwZWMuaGFzRW1iZWRkZWRGaWxlKGEpKXJldHVybiBudWxsO3M9YTsoe2ZpbGVuYW1lOml9PW5ldyBGaWxlU3BlYyhhKS5zZXJpYWxpemFibGUpfWNvbnN0IGw9TWVkaWFBbm5vdGF0aW9uLl9nZXRDb250ZW50VHlwZShzLGksbyk7cmV0dXJuIGw/e2Fzc2V0UmVmOm4gaW5zdGFuY2VvZiBSZWY/bjpudWxsLGFzc2V0RGljdDpzLGZpbGVuYW1lOmksY29udGVudFR5cGU6bH06bnVsbH19Y2xhc3MgU291bmRBbm5vdGF0aW9uIGV4dGVuZHMgTWVkaWFBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOm4sYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxyPXQuZ2V0UmF3KCJTb3VuZCIpO2lmKCEociBpbnN0YW5jZW9mIFJlZikpcmV0dXJuO2xldCBzO3RyeXtzPW4uZmV0Y2gocil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgU291bmRBbm5vdGF0aW9uOiAiJHtlfSIuYCk7cmV0dXJufXMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZnZXRTb3VuZEZvcm1hdChzLmRpY3QpJiZ0aGlzLl9zZXRNZWRpYURhdGEoe2Fzc2V0UmVmOnIsYXNzZXREaWN0OnMuZGljdCxmaWxlbmFtZToic291bmQud2F2Iixjb250ZW50VHlwZToiYXVkaW8vd2F2Iix3cmFwU291bmQ6ITB9LGEpfX1jb25zdCBBZj17Z2V0IHIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInIiLG5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSl9LGdldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixuZXcgSW50MzJBcnJheShbLTY4MDg3NjkzNiwtMzg5NTY0NTg2LDYwNjEwNTgxOSwtMTA0NDUyNTMzMCwtMTc2NDE4ODk3LDEyMDAwODA0MjYsLTE0NzMyMzEzNDEsLTQ1NzA1OTgzLDE3NzAwMzU0MTYsLTE5NTg0MTQ0MTcsLTQyMDYzLC0xOTkwNDA0MTYyLDE4MDQ2MDM2ODIsLTQwMzQxMTAxLC0xNTAyMDAyMjkwLDEyMzY1MzUzMjksLTE2NTc5NjUxMCwtMTA2OTUwMTYzMiw2NDM3MTc3MTMsLTM3Mzg5NzMwMiwtNzAxNTU4NjkxLDM4MDE2MDgzLC02NjA0NzgzMzUsLTQwNTUzNzg0OCw1Njg0NDY0MzgsLTEwMTk4MDM2OTAsLTE4NzM2Mzk2MSwxMTYzNTMxNTAxLC0xNDQ0NjgxNDY3LC01MTQwMzc4NCwxNzM1MzI4NDczLC0xOTI2NjA3NzM0LC0zNzg1NTgsLTIwMjI1NzQ0NjMsMTgzOTAzMDU2MiwtMzUzMDk1NTYsLTE1MzA5OTIwNjAsMTI3Mjg5MzM1MywtMTU1NDk3NjMyLC0xMDk0NzMwNjQwLDY4MTI3OTE3NCwtMzU4NTM3MjIyLC03MjI1MjE5NzksNzYwMjkxODksLTY0MDM2NDQ4NywtNDIxODE1ODM1LDUzMDc0MjUyMCwtOTk1MzM4NjUxLC0xOTg2MzA4NDQsMTEyNjg5MTQxNSwtMTQxNjM1NDkwNSwtNTc0MzQwNTUsMTcwMDQ4NTU3MSwtMTg5NDk4NjYwNiwtMTA1MTUyMywtMjA1NDkyMjc5OSwxODczMzEzMzU5LC0zMDYxMTc0NCwtMTU2MDE5ODM4MCwxMzA5MTUxNjQ5LC0xNDU1MjMwNzAsLTExMjAyMTAzNzksNzE4Nzg3MjU5LC0zNDM0ODU1NTFdKSl9fTtmdW5jdGlvbiBjYWxjdWxhdGVNRDUoZSx0LG4pe2xldCBhPTE3MzI1ODQxOTMscj0tMjcxNzMzODc5LHM9LTE3MzI1ODQxOTQsaT0yNzE3MzM4Nzg7Y29uc3Qgbz1uKzcyJi02NCxsPW5ldyBVaW50OEFycmF5KG8pO2xldCBmLGM7Zm9yKGY9MDtmPG47KytmKWxbZl09ZVt0KytdO2xbZisrXT0xMjg7Y29uc3QgaD1vLTg7ZjxoJiYoZj1oKTtsW2YrK109bjw8MyYyNTU7bFtmKytdPW4+PjUmMjU1O2xbZisrXT1uPj4xMyYyNTU7bFtmKytdPW4+PjIxJjI1NTtsW2YrK109bj4+PjI5JjI1NTtmKz0zO2NvbnN0IHU9bmV3IEludDMyQXJyYXkoMTYpLHtrOm0scjpwfT1BZjtmb3IoZj0wO2Y8bzspe2ZvcihjPTA7YzwxNjsrK2MsZis9NCl1W2NdPWxbZl18bFtmKzFdPDw4fGxbZisyXTw8MTZ8bFtmKzNdPDwyNDtsZXQgZSx0LG49YSxvPXIsaD1zLGQ9aTtmb3IoYz0wO2M8NjQ7KytjKXtpZihjPDE2KXtlPW8maHx+byZkO3Q9Y31lbHNlIGlmKGM8MzIpe2U9ZCZvfH5kJmg7dD01KmMrMSYxNX1lbHNlIGlmKGM8NDgpe2U9b15oXmQ7dD0zKmMrNSYxNX1lbHNle2U9aF4ob3x+ZCk7dD03KmMmMTV9Y29uc3QgYT1kLHI9bitlK21bY10rdVt0XXwwLHM9cFtjXTtkPWg7aD1vO289bysocjw8c3xyPj4+MzItcyl8MDtuPWF9YT1hK258MDtyPXIrb3wwO3M9cytofDA7aT1pK2R8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZhLGE+PjgmMjU1LGE+PjE2JjI1NSxhPj4+MjQmMjU1LDI1NSZyLHI+PjgmMjU1LHI+PjE2JjI1NSxyPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1LDI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1XSl9ZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGUpe3RyeXtyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoKHQpe3dhcm4oYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgU2ltcGxlWE1MUGFyc2Vye25vZGU9bnVsbDtvbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBuPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09bj8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoZT0+ZGVjb2RlU3RyaW5nKGUudGV4dENvbnRlbnQpKTpkZWNvZGVTdHJpbmcodC50ZXh0Q29udGVudCl9fWNsYXNzIFNpbmdsZUludGVyc2VjdG9yeyNCdDttaW5YPTEvMDttaW5ZPTEvMDttYXhYPS0xLzA7bWF4WT0tMS8wOyNEdD1udWxsOyNIdD1bXTsjTXQ9W107I050PS0xOyNQdD0hMTtjb25zdHJ1Y3RvcihlKXt0aGlzLiNCdD1lO2NvbnN0IHQ9ZS5kYXRhLnF1YWRQb2ludHM7aWYodCl7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9OCl7dGhpcy5taW5YPU1hdGgubWluKHRoaXMubWluWCx0W2VdKTt0aGlzLm1heFg9TWF0aC5tYXgodGhpcy5tYXhYLHRbZSsyXSk7dGhpcy5taW5ZPU1hdGgubWluKHRoaXMubWluWSx0W2UrNV0pO3RoaXMubWF4WT1NYXRoLm1heCh0aGlzLm1heFksdFtlKzFdKX10Lmxlbmd0aD44JiYodGhpcy4jRHQ9dCl9ZWxzZVt0aGlzLm1pblgsdGhpcy5taW5ZLHRoaXMubWF4WCx0aGlzLm1heFldPWUuZGF0YS5yZWN0fSNfdChlLHQpe2lmKHRoaXMubWluWD49ZXx8dGhpcy5tYXhYPD1lfHx0aGlzLm1pblk+PXR8fHRoaXMubWF4WTw9dClyZXR1cm4hMTtjb25zdCBuPXRoaXMuI0R0O2lmKCFuKXJldHVybiEwO2lmKHRoaXMuI050Pj0wKXtjb25zdCBhPXRoaXMuI050O2lmKCEoblthXT49ZXx8blthKzJdPD1lfHxuW2ErNV0+PXR8fG5bYSsxXTw9dCkpcmV0dXJuITA7dGhpcy4jTnQ9LTF9Zm9yKGxldCBhPTAscj1uLmxlbmd0aDthPHI7YSs9OClpZighKG5bYV0+PWV8fG5bYSsyXTw9ZXx8blthKzVdPj10fHxuW2ErMV08PXQpKXt0aGlzLiNOdD1hO3JldHVybiEwfXJldHVybiExfWFkZEdseXBoKGUsdCxuKXtpZighdGhpcy4jX3QoZSx0KSl7dGhpcy5kaXNhYmxlRXh0cmFDaGFycygpO3JldHVybiExfWlmKHRoaXMuI010Lmxlbmd0aD4wKXt0aGlzLiNIdC5wdXNoKHRoaXMuI010LmpvaW4oIiIpKTt0aGlzLiNNdC5sZW5ndGg9MH10aGlzLiNIdC5wdXNoKG4pO3RoaXMuI1B0PSEwO3JldHVybiEwfWFkZEV4dHJhQ2hhcihlKXt0aGlzLiNQdCYmdGhpcy4jTXQucHVzaChlKX1kaXNhYmxlRXh0cmFDaGFycygpe2lmKHRoaXMuI1B0KXt0aGlzLiNQdD0hMTt0aGlzLiNNdC5sZW5ndGg9MH19c2V0VGV4dCgpe3RoaXMuI0J0LmRhdGEub3ZlcmxhaWRUZXh0PXRoaXMuI0h0LmpvaW4oIiIpfX1jb25zdCB4Zj02NDtjbGFzcyBJbnRlcnNlY3RvcnsjRXQ9W107I3p0PVtdOyNMdDsjVXQ7I1d0OyNYdDsjS3Q7I0d0O2NvbnN0cnVjdG9yKGUpe2xldCB0PTEvMCxuPTEvMCxhPS0xLzAscj0tMS8wO2NvbnN0IHM9dGhpcy4jRXQ7Zm9yKGNvbnN0IGkgb2YgZSl7aWYoIWkuZGF0YS5xdWFkUG9pbnRzJiYhaS5kYXRhLnJlY3QpY29udGludWU7Y29uc3QgZT1uZXcgU2luZ2xlSW50ZXJzZWN0b3IoaSk7cy5wdXNoKGUpO3Q9TWF0aC5taW4odCxlLm1pblgpO249TWF0aC5taW4obixlLm1pblkpO2E9TWF0aC5tYXgoYSxlLm1heFgpO3I9TWF0aC5tYXgocixlLm1heFkpfXRoaXMuI0x0PXQ7dGhpcy4jV3Q9bjt0aGlzLiNVdD1hO3RoaXMuI1h0PXI7dGhpcy4jS3Q9NjMvKGEtdCk7dGhpcy4jR3Q9NjMvKHItbik7Zm9yKGNvbnN0IGUgb2Ygcyl7Y29uc3QgdD10aGlzLiNWdChlLm1pblgsZS5taW5ZKSxuPXRoaXMuI1Z0KGUubWF4WCxlLm1heFkpLGE9KG4tdCkleGYscj1NYXRoLmZsb29yKChuLXQpL3hmKTtmb3IobGV0IG49dDtuPD10K3IqeGY7bis9eGYpZm9yKGxldCB0PTA7dDw9YTt0KyspKHRoaXMuI3p0W24rdF0/Pz1bXSkucHVzaChlKX19I1Z0KGUsdCl7cmV0dXJuIE1hdGguZmxvb3IoKGUtdGhpcy4jTHQpKnRoaXMuI0t0KStNYXRoLmZsb29yKCh0LXRoaXMuI1d0KSp0aGlzLiNHdCkqeGZ9YWRkR2x5cGgoZSx0LG4sYSl7Y29uc3Qgcj1lWzRdK3QvMixzPWVbNV0rbi8yO2lmKHI8dGhpcy4jTHR8fHM8dGhpcy4jV3R8fHI+dGhpcy4jVXR8fHM+dGhpcy4jWHQpcmV0dXJuO2NvbnN0IGk9dGhpcy4jenRbdGhpcy4jVnQocixzKV07aWYoaSlmb3IoY29uc3QgZSBvZiBpKWUuYWRkR2x5cGgocixzLGEpfWFkZEV4dHJhQ2hhcihlKXtmb3IoY29uc3QgdCBvZiB0aGlzLiNFdCl0LmFkZEV4dHJhQ2hhcihlKX1zZXRUZXh0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy4jRXQpZS5zZXRUZXh0KCl9fWNsYXNzIFdvcmQ2NHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuaGlnaD0wfGU7dGhpcy5sb3c9MHx0fWFuZChlKXt0aGlzLmhpZ2gmPWUuaGlnaDt0aGlzLmxvdyY9ZS5sb3d9eG9yKGUpe3RoaXMuaGlnaF49ZS5oaWdoO3RoaXMubG93Xj1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LG47aWYoMzImZSl7bj10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7bj10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8bjw8MzItZTt0aGlzLmhpZ2g9bj4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IG49KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihuKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8bn1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3QgQ2Y9e2dldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixbbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldKX19O2Z1bmN0aW9uIGNoKGUsdCxuLGEscil7ZS5hc3NpZ24odCk7ZS5hbmQobik7ci5hc3NpZ24odCk7ci5ub3QoKTtyLmFuZChhKTtlLnhvcihyKX1mdW5jdGlvbiBtYWooZSx0LG4sYSxyKXtlLmFzc2lnbih0KTtlLmFuZChuKTtyLmFzc2lnbih0KTtyLmFuZChhKTtlLnhvcihyKTtyLmFzc2lnbihuKTtyLmFuZChhKTtlLnhvcihyKX1mdW5jdGlvbiBzaWdtYShlLHQsbil7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgyOCk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCgzNCk7ZS54b3Iobik7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCgzOSk7ZS54b3Iobil9ZnVuY3Rpb24gc2lnbWFQcmltZShlLHQsbil7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxNCk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCgxOCk7ZS54b3Iobik7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCg0MSk7ZS54b3Iobil9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSx0LG4pe2UuYXNzaWduKHQpO2Uucm90YXRlUmlnaHQoMSk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCg4KTtlLnhvcihuKTtuLmFzc2lnbih0KTtuLnNoaWZ0UmlnaHQoNyk7ZS54b3Iobil9ZnVuY3Rpb24gbGl0dGxlU2lnbWFQcmltZShlLHQsbil7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxOSk7bi5hc3NpZ24odCk7bi5yb3RhdGVSaWdodCg2MSk7ZS54b3Iobik7bi5hc3NpZ24odCk7bi5zaGlmdFJpZ2h0KDYpO2UueG9yKG4pfWZ1bmN0aW9uIGNhbGN1bGF0ZVNIQTUxMihlLHQsbixhPSExKXtsZXQgcixzLGksbyxsLGYsYyxoO2lmKGEpe3I9bmV3IFdvcmQ2NCgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpO3M9bmV3IFdvcmQ2NCgxNjU0MjcwMjUwLDkxNDE1MDY2Myk7aT1uZXcgV29yZDY0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KTtvPW5ldyBXb3JkNjQoMzU1NDYyMzYwLDQxNDQ5MTI2OTcpO2w9bmV3IFdvcmQ2NCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpO2Y9bmV3IFdvcmQ2NCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpO2M9bmV3IFdvcmQ2NCgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpO2g9bmV3IFdvcmQ2NCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpfWVsc2V7cj1uZXcgV29yZDY0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCk7cz1uZXcgV29yZDY0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSk7aT1uZXcgV29yZDY0KDEwMTM5MDQyNDIsNDI3MTE3NTcyMyk7bz1uZXcgV29yZDY0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSk7bD1uZXcgV29yZDY0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyk7Zj1uZXcgV29yZDY0KDI2MDA4MjI5MjQsNzI1NTExMTk5KTtjPW5ldyBXb3JkNjQoNTI4NzM0NjM1LDQyMTUzODk1NDcpO2g9bmV3IFdvcmQ2NCgxNTQxNDU5MjI1LDMyNzAzMzIwOSl9Y29uc3QgdT0xMjgqTWF0aC5jZWlsKChuKzE3KS8xMjgpLG09bmV3IFVpbnQ4QXJyYXkodSk7bGV0IHAsZDtmb3IocD0wO3A8bjsrK3ApbVtwXT1lW3QrK107bVtwKytdPTEyODtjb25zdCBnPXUtMTY7cDxnJiYocD1nKTtwKz0xMTttW3ArK109bj4+PjI5JjI1NTttW3ArK109bj4+MjEmMjU1O21bcCsrXT1uPj4xMyYyNTU7bVtwKytdPW4+PjUmMjU1O21bcCsrXT1uPDwzJjI1NTtjb25zdCBiPW5ldyBBcnJheSg4MCk7Zm9yKHA9MDtwPDgwO3ArKyliW3BdPW5ldyBXb3JkNjQoMCwwKTtjb25zdHtrOnd9PUNmO2xldCBqPW5ldyBXb3JkNjQoMCwwKSxrPW5ldyBXb3JkNjQoMCwwKSx5PW5ldyBXb3JkNjQoMCwwKSxxPW5ldyBXb3JkNjQoMCwwKSx2PW5ldyBXb3JkNjQoMCwwKSxTPW5ldyBXb3JkNjQoMCwwKSx4PW5ldyBXb3JkNjQoMCwwKSxDPW5ldyBXb3JkNjQoMCwwKTtjb25zdCBUPW5ldyBXb3JkNjQoMCwwKSxPPW5ldyBXb3JkNjQoMCwwKSxSPW5ldyBXb3JkNjQoMCwwKSxEPW5ldyBXb3JkNjQoMCwwKTtsZXQgSCxNO2ZvcihwPTA7cDx1Oyl7Zm9yKGQ9MDtkPDE2OysrZCl7YltkXS5oaWdoPW1bcF08PDI0fG1bcCsxXTw8MTZ8bVtwKzJdPDw4fG1bcCszXTtiW2RdLmxvdz1tW3ArNF08PDI0fG1bcCs1XTw8MTZ8bVtwKzZdPDw4fG1bcCs3XTtwKz04fWZvcihkPTE2O2Q8ODA7KytkKXtIPWJbZF07bGl0dGxlU2lnbWFQcmltZShILGJbZC0yXSxEKTtILmFkZChiW2QtN10pO2xpdHRsZVNpZ21hKFIsYltkLTE1XSxEKTtILmFkZChSKTtILmFkZChiW2QtMTZdKX1qLmFzc2lnbihyKTtrLmFzc2lnbihzKTt5LmFzc2lnbihpKTtxLmFzc2lnbihvKTt2LmFzc2lnbihsKTtTLmFzc2lnbihmKTt4LmFzc2lnbihjKTtDLmFzc2lnbihoKTtmb3IoZD0wO2Q8ODA7KytkKXtULmFzc2lnbihDKTtzaWdtYVByaW1lKFIsdixEKTtULmFkZChSKTtjaChSLHYsUyx4LEQpO1QuYWRkKFIpO1QuYWRkKHdbZF0pO1QuYWRkKGJbZF0pO3NpZ21hKE8saixEKTttYWooUixqLGsseSxEKTtPLmFkZChSKTtIPUM7Qz14O3g9UztTPXY7cS5hZGQoVCk7dj1xO3E9eTt5PWs7az1qO0guYXNzaWduKFQpO0guYWRkKE8pO2o9SH1yLmFkZChqKTtzLmFkZChrKTtpLmFkZCh5KTtvLmFkZChxKTtsLmFkZCh2KTtmLmFkZChTKTtjLmFkZCh4KTtoLmFkZChDKX1pZihhKXtNPW5ldyBVaW50OEFycmF5KDQ4KTtyLmNvcHlUbyhNLDApO3MuY29weVRvKE0sOCk7aS5jb3B5VG8oTSwxNik7by5jb3B5VG8oTSwyNCk7bC5jb3B5VG8oTSwzMik7Zi5jb3B5VG8oTSw0MCl9ZWxzZXtNPW5ldyBVaW50OEFycmF5KDY0KTtyLmNvcHlUbyhNLDApO3MuY29weVRvKE0sOCk7aS5jb3B5VG8oTSwxNik7by5jb3B5VG8oTSwyNCk7bC5jb3B5VG8oTSwzMik7Zi5jb3B5VG8oTSw0MCk7Yy5jb3B5VG8oTSw0OCk7aC5jb3B5VG8oTSw1Nil9cmV0dXJuIE19ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMzg0KGUsdCxuKXtyZXR1cm4gY2FsY3VsYXRlU0hBNTEyKGUsdCxuLCEwKX1jb25zdCBJZj17Z2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLFsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdKX19O2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2NoKGUsdCxuKXtyZXR1cm4gZSZ0Xn5lJm59ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9tYWooZSx0LG4pe3JldHVybiBlJnReZSZuXnQmbn1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X3NpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfc2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDYpXnJvdHIoZSwxMSlecm90cihlLDI1KX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hKGUpe3JldHVybiByb3RyKGUsNylecm90cihlLDE4KV5lPj4+M31mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSwxNylecm90cihlLDE5KV5lPj4+MTB9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMjU2KGUsdCxuKXtsZXQgYT0xNzc5MDMzNzAzLHI9MzE0NDEzNDI3NyxzPTEwMTM5MDQyNDIsaT0yNzczNDgwNzYyLG89MTM1OTg5MzExOSxsPTI2MDA4MjI5MjQsZj01Mjg3MzQ2MzUsYz0xNTQxNDU5MjI1O2NvbnN0IGg9NjQqTWF0aC5jZWlsKChuKzkpLzY0KSx1PW5ldyBVaW50OEFycmF5KGgpO2xldCBtLHA7Zm9yKG09MDttPG47KyttKXVbbV09ZVt0KytdO3VbbSsrXT0xMjg7Y29uc3QgZD1oLTg7bTxkJiYobT1kKTttKz0zO3VbbSsrXT1uPj4+MjkmMjU1O3VbbSsrXT1uPj4yMSYyNTU7dVttKytdPW4+PjEzJjI1NTt1W20rK109bj4+NSYyNTU7dVttKytdPW48PDMmMjU1O2NvbnN0IGc9bmV3IFVpbnQzMkFycmF5KDY0KSx7azpifT1JZjtmb3IobT0wO208aDspe2ZvcihwPTA7cDwxNjsrK3Ape2dbcF09dVttXTw8MjR8dVttKzFdPDwxNnx1W20rMl08PDh8dVttKzNdO20rPTR9Zm9yKHA9MTY7cDw2NDsrK3ApZ1twXT1jYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hUHJpbWUoZ1twLTJdKStnW3AtN10rY2FsY3VsYXRlX3NoYTI1Nl9saXR0bGVTaWdtYShnW3AtMTVdKStnW3AtMTZdfDA7bGV0IGUsdCxuPWEsaD1yLGQ9cyx3PWksaj1vLGs9bCx5PWYscT1jO2ZvcihwPTA7cDw2NDsrK3Ape2U9cStjYWxjdWxhdGVfc2hhMjU2X3NpZ21hUHJpbWUoaikrY2FsY3VsYXRlX3NoYTI1Nl9jaChqLGsseSkrYltwXStnW3BdO3Q9Y2FsY3VsYXRlX3NoYTI1Nl9zaWdtYShuKStjYWxjdWxhdGVfc2hhMjU2X21haihuLGgsZCk7cT15O3k9aztrPWo7aj13K2V8MDt3PWQ7ZD1oO2g9bjtuPWUrdHwwfWE9YStufDA7cj1yK2h8MDtzPXMrZHwwO2k9aSt3fDA7bz1vK2p8MDtsPWwra3wwO2Y9Zit5fDA7Yz1jK3F8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2E+PjI0JjI1NSxhPj4xNiYyNTUsYT4+OCYyNTUsMjU1JmEscj4+MjQmMjU1LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixzPj4yNCYyNTUscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLGk+PjI0JjI1NSxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1Jmksbz4+MjQmMjU1LG8+PjE2JjI1NSxvPj44JjI1NSwyNTUmbyxsPj4yNCYyNTUsbD4+MTYmMjU1LGw+PjgmMjU1LDI1NSZsLGY+PjI0JjI1NSxmPj4xNiYyNTUsZj4+OCYyNTUsMjU1JmYsYz4+MjQmMjU1LGM+PjE2JjI1NSxjPj44JjI1NSwyNTUmY10pfWNsYXNzIERlY3J5cHRTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17IyR0PW51bGw7Y29uc3RydWN0b3IoZSx0LG4pe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmRlY3J5cHQ9bn1yZWFkQmxvY2soKXtsZXQgZT10aGlzLiMkdD8/dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTtpZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy4jJHQ9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMuIyR0Py5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3Qgbj10aGlzLmJ1ZmZlckxlbmd0aCxhPW4rZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIoYSkuc2V0KGUsbik7dGhpcy5idWZmZXJMZW5ndGg9YX1nZXRPcmlnaW5hbFN0cmVhbSgpe3JldHVybiB0aGlzfX1jb25zdCBGZj1uZXcgU2V0KFsxNjAsNTc2MCw4MTkyLDgxOTMsODE5NCw4MTk1LDgxOTYsODE5Nyw4MTk4LDgxOTksODIwMCw4MjAxLDgyMDIsODIwMyw4MjM5LDgyODcsMTIyODhdKSxUZj1uZXcgU2V0KFsxNzMsODQ3LDYxNTAsNjE1NSw2MTU2LDYxNTcsODIwMyw4MjA0LDgyMDUsODI4OCw2NTAyNCw2NTAyNSw2NTAyNiw2NTAyNyw2NTAyOCw2NTAyOSw2NTAzMCw2NTAzMSw2NTAzMiw2NTAzMyw2NTAzNCw2NTAzNSw2NTAzNiw2NTAzNyw2NTAzOCw2NTAzOSw2NTI3OV0pO2NsYXNzIEFSQ0ZvdXJDaXBoZXJ7YT0wO2I9MDtjb25zdHJ1Y3RvcihlKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1Niksbj1lLmxlbmd0aDtmb3IobGV0IGU9MDtlPDI1NjsrK2UpdFtlXT1lO2ZvcihsZXQgYT0wLHI9MDthPDI1NjsrK2Epe2NvbnN0IHM9dFthXTtyPXIrcytlW2Elbl0mMjU1O3RbYV09dFtyXTt0W3JdPXN9dGhpcy5zPXR9ZW5jcnlwdEJsb2NrKGUpe2xldCB0PXRoaXMuYSxuPXRoaXMuYjtjb25zdCBhPXRoaXMucyxyPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBpPTA7aTxyOysraSl7dD10KzEmMjU1O2NvbnN0IHI9YVt0XTtuPW4rciYyNTU7Y29uc3Qgbz1hW25dO2FbdF09bzthW25dPXI7c1tpXT1lW2ldXmFbcitvJjI1NV19dGhpcy5hPXQ7dGhpcy5iPW47cmV0dXJuIHN9ZGVjcnlwdEJsb2NrKGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX1lbmNyeXB0KGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX19Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntfcz1uZXcgVWludDhBcnJheShbOTksMTI0LDExOSwxMjMsMjQyLDEwNywxMTEsMTk3LDQ4LDEsMTAzLDQzLDI1NCwyMTUsMTcxLDExOCwyMDIsMTMwLDIwMSwxMjUsMjUwLDg5LDcxLDI0MCwxNzMsMjEyLDE2MiwxNzUsMTU2LDE2NCwxMTQsMTkyLDE4MywyNTMsMTQ3LDM4LDU0LDYzLDI0NywyMDQsNTIsMTY1LDIyOSwyNDEsMTEzLDIxNiw0OSwyMSw0LDE5OSwzNSwxOTUsMjQsMTUwLDUsMTU0LDcsMTgsMTI4LDIyNiwyMzUsMzksMTc4LDExNyw5LDEzMSw0NCwyNiwyNywxMTAsOTAsMTYwLDgyLDU5LDIxNCwxNzksNDEsMjI3LDQ3LDEzMiw4MywyMDksMCwyMzcsMzIsMjUyLDE3Nyw5MSwxMDYsMjAzLDE5MCw1Nyw3NCw3Niw4OCwyMDcsMjA4LDIzOSwxNzAsMjUxLDY3LDc3LDUxLDEzMyw2OSwyNDksMiwxMjcsODAsNjAsMTU5LDE2OCw4MSwxNjMsNjQsMTQzLDE0NiwxNTcsNTYsMjQ1LDE4OCwxODIsMjE4LDMzLDE2LDI1NSwyNDMsMjEwLDIwNSwxMiwxOSwyMzYsOTUsMTUxLDY4LDIzLDE5NiwxNjcsMTI2LDYxLDEwMCw5MywyNSwxMTUsOTYsMTI5LDc5LDIyMCwzNCw0MiwxNDQsMTM2LDcwLDIzOCwxODQsMjAsMjIyLDk0LDExLDIxOSwyMjQsNTAsNTgsMTAsNzMsNiwzNiw5MiwxOTQsMjExLDE3Miw5OCwxNDUsMTQ5LDIyOCwxMjEsMjMxLDIwMCw1NSwxMDksMTQxLDIxMyw3OCwxNjksMTA4LDg2LDI0NCwyMzQsMTAxLDEyMiwxNzQsOCwxODYsMTIwLDM3LDQ2LDI4LDE2NiwxODAsMTk4LDIzMiwyMjEsMTE2LDMxLDc1LDE4OSwxMzksMTM4LDExMiw2MiwxODEsMTAyLDcyLDMsMjQ2LDE0LDk3LDUzLDg3LDE4NSwxMzQsMTkzLDI5LDE1OCwyMjUsMjQ4LDE1MiwxNywxMDUsMjE3LDE0MiwxNDgsMTU1LDMwLDEzNSwyMzMsMjA2LDg1LDQwLDIyMywxNDAsMTYxLDEzNywxMywxOTEsMjMwLDY2LDEwNCw2NSwxNTMsNDUsMTUsMTc2LDg0LDE4NywyMl0pO19pbnZfcz1uZXcgVWludDhBcnJheShbODIsOSwxMDYsMjEzLDQ4LDU0LDE2NSw1NiwxOTEsNjQsMTYzLDE1OCwxMjksMjQzLDIxNSwyNTEsMTI0LDIyNyw1NywxMzAsMTU1LDQ3LDI1NSwxMzUsNTIsMTQyLDY3LDY4LDE5NiwyMjIsMjMzLDIwMyw4NCwxMjMsMTQ4LDUwLDE2NiwxOTQsMzUsNjEsMjM4LDc2LDE0OSwxMSw2NiwyNTAsMTk1LDc4LDgsNDYsMTYxLDEwMiw0MCwyMTcsMzYsMTc4LDExOCw5MSwxNjIsNzMsMTA5LDEzOSwyMDksMzcsMTE0LDI0OCwyNDYsMTAwLDEzNCwxMDQsMTUyLDIyLDIxMiwxNjQsOTIsMjA0LDkzLDEwMSwxODIsMTQ2LDEwOCwxMTIsNzIsODAsMjUzLDIzNywxODUsMjE4LDk0LDIxLDcwLDg3LDE2NywxNDEsMTU3LDEzMiwxNDQsMjE2LDE3MSwwLDE0MCwxODgsMjExLDEwLDI0NywyMjgsODgsNSwxODQsMTc5LDY5LDYsMjA4LDQ0LDMwLDE0MywyMDIsNjMsMTUsMiwxOTMsMTc1LDE4OSwzLDEsMTksMTM4LDEwNyw1OCwxNDUsMTcsNjUsNzksMTAzLDIyMCwyMzQsMTUxLDI0MiwyMDcsMjA2LDI0MCwxODAsMjMwLDExNSwxNTAsMTcyLDExNiwzNCwyMzEsMTczLDUzLDEzMywyMjYsMjQ5LDU1LDIzMiwyOCwxMTcsMjIzLDExMCw3MSwyNDEsMjYsMTEzLDI5LDQxLDE5NywxMzcsMTExLDE4Myw5OCwxNCwxNzAsMjQsMTkwLDI3LDI1Miw4Niw2Miw3NSwxOTgsMjEwLDEyMSwzMiwxNTQsMjE5LDE5MiwyNTQsMTIwLDIwNSw5MCwyNDQsMzEsMjIxLDE2OCw1MSwxMzYsNywxOTksNDksMTc3LDE4LDE2LDg5LDM5LDEyOCwyMzYsOTUsOTYsODEsMTI3LDE2OSwyNSwxODEsNzQsMTMsNDUsMjI5LDEyMiwxNTksMTQ3LDIwMSwxNTYsMjM5LDE2MCwyMjQsNTksNzcsMTc0LDQyLDI0NSwxNzYsMjAwLDIzNSwxODcsNjAsMTMxLDgzLDE1Myw5NywyMyw0Myw0LDEyNiwxODYsMTE5LDIxNCwzOCwyMjUsMTA1LDIwLDk5LDg1LDMzLDEyLDEyNV0pO19taXg9bmV3IFVpbnQzMkFycmF5KFswLDIzNTQ3NDE4Nyw0NzA5NDgzNzQsMzAzNzY1Mjc3LDk0MTg5Njc0OCw5MDg5MzM0MTUsNjA3NTMwNTU0LDcwODc4MDg0OSwxODgzNzkzNDk2LDIxMTgyMTQ5OTUsMTgxNzg2NjgzMCwxNjQ5NjM5MjM3LDEyMTUwNjExMDgsMTE4MTA0NTExOSwxNDE3NTYxNjk4LDE1MTc3Njc1MjksMzc2NzU4Njk5Miw0MDAzMDYxMTc5LDQyMzY0Mjk5OTAsNDA2OTI0Njg5MywzNjM1NzMzNjYwLDM2MDI3NzAzMjcsMzI5OTI3ODQ3NCwzNDAwNTI4NzY5LDI0MzAxMjIyMTYsMjY2NDU0MzcxNSwyMzYyMDkwMjM4LDIxOTM4NjI2NDUsMjgzNTEyMzM5NiwyODAxMTA3NDA3LDMwMzU1MzUwNTgsMzEzNTc0MDg4OSwzNjc4MTI0OTIzLDM1NzY4NzA1MTIsMzM0MTM5NDI4NSwzMzc0MzYxNzAyLDM4MTA0OTYzNDMsMzk3NzY3NTM1Niw0Mjc5MDgwMjU3LDQwNDM2MTAxODYsMjg3NjQ5NDYyNywyNzc2MjkyOTA0LDMwNzY2MzkwMjksMzExMDY1MDk0MiwyNDcyMDExNTM1LDI2NDAyNDMyMDQsMjQwMzcyODY2NSwyMTY5MzAzMDU4LDEwMDEwODk5OTUsODk5ODM1NTg0LDY2NjQ2NDczMyw2OTk0MzIxNTAsNTk3Mjc4NDcsMjI2OTA2ODYwLDUzMDQwMDc1MywyOTQ5MzA2ODIsMTI3MzE2ODc4NywxMTcyOTY3MDY0LDE0NzU0MTg1MDEsMTUwOTQzMDQxNCwxOTQyNDM1Nzc1LDIxMTA2Njc0NDQsMTg3NjI0MTgzMywxNjQxODE2MjI2LDI5MTAyMTk3NjYsMjc0MzAzNDEwOSwyOTc2MTUxNTIwLDMyMTE2MjMxNDcsMjUwNTIwMjEzOCwyNjA2NDUzOTY5LDIzMDI2OTAyNTIsMjI2OTcyODQ1NSwzNzExODI5NDIyLDM1NDM1OTkyNjksMzI0MDg5NDM5MiwzNDc1MzEzMzMxLDM4NDM2OTkwNzQsMzk0MzkwNjQ0MSw0MTc4MDYyMjI4LDQxNDQwNDc3NzUsMTMwNjk2NzM2NiwxMTM5NzgxNzA5LDEzNzQ5ODgxMTIsMTYxMDQ1OTczOSwxOTc1NjgzNDM0LDIwNzY5MzUyNjUsMTc3NTI3NjkyNCwxNzQyMzE1MTI3LDEwMzQ4Njc5OTgsODY2NjM3ODQ1LDU2NjAyMTg5Niw4MDA0NDA4MzUsOTI5ODc2OTgsMTkzMTk1MDY1LDQyOTQ1NjE2NCwzOTU0NDE3MTEsMTk4NDgxMjY4NSwyMDE3Nzc4NTY2LDE3ODQ2NjMxOTUsMTY4MzQwNzI0OCwxMzE1NTYyMTQ1LDEwODAwOTQ2MzQsMTM4Mzg1NjMxMSwxNTUxMDM3ODg0LDEwMTAzOTgyOSwxMzUwNTAyMDYsNDM3NzU3MTIzLDMzNzU1Mzg2NCwxMDQyMzg1NjU3LDgwNzk2MjYxMCw1NzM4MDQ3ODMsNzQyMDM5MDEyLDI1MzEwNjc0NTMsMjU2NDAzMzMzNCwyMzI4ODI4OTcxLDIyMjc1NzMwMjQsMjkzNTU2Njg2NSwyNzAwMDk5MzU0LDMwMDE3NTU2NTUsMzE2ODkzNzIyOCwzODY4NTUyODA1LDM5MDI1NjMxODIsNDIwMzE4MTE3MSw0MTAyOTc3OTEyLDM3MzYxNjQ5MzcsMzUwMTc0MTg5MCwzMjY1NDc4NzUxLDM0MzM3MTI5ODAsMTEwNjA0MTU5MSwxMzQwNDYzMTAwLDE1NzY5NzY2MDksMTQwODc0OTAzNCwyMDQzMjExNDgzLDIwMDkxOTU0NzIsMTcwODg0ODMzMywxODA5MDU0MTUwLDgzMjg3NzIzMSwxMDY4MzUxMzk2LDc2Njk0NTQ2NSw1OTk3NjIzNTQsMTU5NDE3OTg3LDEyNjQ1NDY2NCwzNjE5Mjk4NzcsNDYzMTgwMTkwLDI3MDkyNjA4NzEsMjk0MzY4MjM4MCwzMTc4MTA2OTYxLDMwMDk4NzkzODYsMjU3MjY5NzE5NSwyNTM4NjgxMTg0LDIyMzYyMjg3MzMsMjMzNjQzNDU1MCwzNTA5ODcxMTM1LDM3NDUzNDUzMDAsMzQ0MTg1MDM3NywzMjc0NjY3MjY2LDM5MTAxNjE5NzEsMzg3NzE5ODY0OCw0MTEwNTY4NDg1LDQyMTE4MTg3OTgsMjU5NzgwNjQ3NiwyNDk3NjA0NzQzLDIyNjEwODkxNzgsMjI5NTEwMTA3MywyNzMzODU2MTYwLDI5MDIwODc4NTEsMzIwMjQzNzA0NiwyOTY4MDExNDUzLDM5MzYyOTEyODQsMzgzNTAzNjg5NSw0MTM2NDQwNzcwLDQxNjk0MDgyMDEsMzUzNTQ4NjQ1NiwzNzAyNjY1NDU5LDM0NjcxOTIzMDIsMzIzMTcyMjIxMywyMDUxNTE4NzgwLDE5NTEzMTcwNDcsMTcxNjg5MDQxMCwxNzUwOTAyMzA1LDExMTM4MTgzODQsMTI4MjA1MDA3NSwxNTg0NTA0NTgyLDEzNTAwNzg5ODksMTY4ODEwODUyLDY3NTU2NDYzLDM3MTA0OTMzMCw0MDQwMTY3NjEsODQxNzM5NTkyLDEwMDg5MTg1OTUsNzc1NTUwODE0LDU0MDA4MDcyNSwzOTY5NTYyMzY5LDM4MDEzMzIyMzQsNDAzNTQ4OTA0Nyw0MjY5OTA3OTk2LDM1NjkyNTUyMTMsMzY2OTQ2MjU2NiwzMzY2NzU0NjE5LDMzMzI3NDAxNDQsMjYzMTA2NTQzMywyNDYzODc5NzYyLDIxNjAxMTcwNzEsMjM5NTU4ODY3NiwyNzY3NjQ1NTU3LDI4Njg4OTc0MDYsMzEwMjAxMTc0NywzMDY5MDQ5OTYwLDIwMjAwODQ5NywzMzc3ODM2MiwyNzAwNDA0ODcsNTA0NDU5NDM2LDg3NTQ1MTI5Myw5NzU2NTg2NDYsNjc1MDM5NjI3LDY0MTAyNTE1MiwyMDg0NzA0MjMzLDE5MTc1MTg1NjIsMTYxNTg2MTI0NywxODUxMzMyODUyLDExNDc1NTA2NjEsMTI0ODgwMjUxMCwxNDg0MDA1ODQzLDE0NTEwNDQwNTYsOTMzMzAxMzcwLDk2NzMxMTcyOSw3MzMxNTY5NzIsNjMyOTUzNzAzLDI2MDM4ODk1MCwyNTk2NTkxNywzMjg2NzE4MDgsNDk2OTA2MDU5LDEyMDY0Nzc4NTgsMTIzOTQ0Mzc1MywxNTQzMjA4NTAwLDE0NDE5NTI1NzUsMjE0NDE2MTgwNiwxOTA4Njk0Mjc3LDE2NzU1Nzc4ODAsMTg0Mjc1OTQ0MywzNjEwMzY5MjI2LDM2NDQzNzk1ODUsMzQwODExOTUxNiwzMzA3OTE2MjQ3LDQwMTExOTA1MDIsMzc3Njc2NzQ2OSw0MDc3Mzg0NDMyLDQyNDU2MTg2ODMsMjgwOTc3MTE1NCwyODQyNzM3MDQ5LDMxNDQzOTY0MjAsMzA0MzE0MDQ5NSwyNjczNzA1MTUwLDI0MzgyMzc2MjEsMjIwMzAzMjIzMiwyMzcwMjEzNzk1XSk7X21peENvbD1uZXcgVWludDhBcnJheSgyNTYpLm1hcCgoZSx0KT0+dDwxMjg/dDw8MTp0PDwxXjI3KTtjb25zdHJ1Y3Rvcigpe3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmJ1ZmZlclBvc2l0aW9uPTB9X2V4cGFuZEtleShlKXt1bnJlYWNoYWJsZSgiQ2Fubm90IGNhbGwgYF9leHBhbmRLZXlgIG9uIHRoZSBiYXNlIGNsYXNzIil9X2RlY3J5cHQoZSx0KXtsZXQgbixhLHI7Y29uc3Qgcz1uZXcgVWludDhBcnJheSgxNik7cy5zZXQoZSk7Zm9yKGxldCBlPTAsbj10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrbilzW2VdXj10W25dO2ZvcihsZXQgZT10aGlzLl9jeWNsZXNPZlJlcGV0aXRpb24tMTtlPj0xOy0tZSl7bj1zWzEzXTtzWzEzXT1zWzldO3NbOV09c1s1XTtzWzVdPXNbMV07c1sxXT1uO249c1sxNF07YT1zWzEwXTtzWzE0XT1zWzZdO3NbMTBdPXNbMl07c1s2XT1uO3NbMl09YTtuPXNbMTVdO2E9c1sxMV07cj1zWzddO3NbMTVdPXNbM107c1sxMV09bjtzWzddPWE7c1szXT1yO2ZvcihsZXQgZT0wO2U8MTY7KytlKXNbZV09dGhpcy5faW52X3Nbc1tlXV07Zm9yKGxldCBuPTAsYT0xNiplO248MTY7KytuLCsrYSlzW25dXj10W2FdO2ZvcihsZXQgZT0wO2U8MTY7ZSs9NCl7Y29uc3QgdD10aGlzLl9taXhbc1tlXV0sYT10aGlzLl9taXhbc1tlKzFdXSxyPXRoaXMuX21peFtzW2UrMl1dLGk9dGhpcy5fbWl4W3NbZSszXV07bj10XmE+Pj44XmE8PDI0XnI+Pj4xNl5yPDwxNl5pPj4+MjReaTw8ODtzW2VdPW4+Pj4yNCYyNTU7c1tlKzFdPW4+PjE2JjI1NTtzW2UrMl09bj4+OCYyNTU7c1tlKzNdPTI1NSZufX1uPXNbMTNdO3NbMTNdPXNbOV07c1s5XT1zWzVdO3NbNV09c1sxXTtzWzFdPW47bj1zWzE0XTthPXNbMTBdO3NbMTRdPXNbNl07c1sxMF09c1syXTtzWzZdPW47c1syXT1hO249c1sxNV07YT1zWzExXTtyPXNbN107c1sxNV09c1szXTtzWzExXT1uO3NbN109YTtzWzNdPXI7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upe3NbZV09dGhpcy5faW52X3Nbc1tlXV07c1tlXV49dFtlXX1yZXR1cm4gc31fZW5jcnlwdChlLHQpe2NvbnN0IG49dGhpcy5fcztsZXQgYSxyLHM7Y29uc3QgaT1uZXcgVWludDhBcnJheSgxNik7aS5zZXQoZSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpaVtlXV49dFtlXTtmb3IobGV0IGU9MTtlPHRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbjtlKyspe2ZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV09bltpW2VdXTtzPWlbMV07aVsxXT1pWzVdO2lbNV09aVs5XTtpWzldPWlbMTNdO2lbMTNdPXM7cz1pWzJdO3I9aVs2XTtpWzJdPWlbMTBdO2lbNl09aVsxNF07aVsxMF09cztpWzE0XT1yO3M9aVszXTtyPWlbN107YT1pWzExXTtpWzNdPWlbMTVdO2lbN109cztpWzExXT1yO2lbMTVdPWE7Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PWlbZV0sbj1pW2UrMV0scj1pW2UrMl0scz1pW2UrM107YT10Xm5ecl5zO2lbZV1ePWFedGhpcy5fbWl4Q29sW3Rebl07aVtlKzFdXj1hXnRoaXMuX21peENvbFtuXnJdO2lbZSsyXV49YV50aGlzLl9taXhDb2xbcl5zXTtpW2UrM11ePWFedGhpcy5fbWl4Q29sW3NedF19Zm9yKGxldCBuPTAsYT0xNiplO248MTY7KytuLCsrYSlpW25dXj10W2FdfWZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV09bltpW2VdXTtzPWlbMV07aVsxXT1pWzVdO2lbNV09aVs5XTtpWzldPWlbMTNdO2lbMTNdPXM7cz1pWzJdO3I9aVs2XTtpWzJdPWlbMTBdO2lbNl09aVsxNF07aVsxMF09cztpWzE0XT1yO3M9aVszXTtyPWlbN107YT1pWzExXTtpWzNdPWlbMTVdO2lbN109cztpWzExXT1yO2lbMTVdPWE7Zm9yKGxldCBlPTAsbj10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsrbilpW2VdXj10W25dO3JldHVybiBpfV9kZWNyeXB0QmxvY2syKGUsdCl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgYT10aGlzLmJ1ZmZlcixyPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcz1bXTtsZXQgaT10aGlzLml2O2ZvcihsZXQgdD0wO3Q8bjsrK3Qpe2Fbcl09ZVt0XTsrK3I7aWYocjwxNiljb250aW51ZTtjb25zdCBuPXRoaXMuX2RlY3J5cHQoYSx0aGlzLl9rZXkpO2ZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV1ePWlbZV07aT1hO3MucHVzaChuKTthPW5ldyBVaW50OEFycmF5KDE2KTtyPTB9dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1yO3RoaXMuaXY9aTtpZigwPT09cy5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBvPTE2KnMubGVuZ3RoO2lmKHQpe2NvbnN0IGU9cy5hdCgtMSk7bGV0IHQ9ZVsxNV07aWYodDw9MTYpe2ZvcihsZXQgbj0xNSxhPTE2LXQ7bj49YTstLW4paWYoZVtuXSE9PXQpe3Q9MDticmVha31vLT10O3Nbcy5sZW5ndGgtMV09ZS5zdWJhcnJheSgwLDE2LXQpfX1jb25zdCBsPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgZT0wLHQ9MCxuPXMubGVuZ3RoO2U8bjsrK2UsdCs9MTYpbC5zZXQoc1tlXSx0KTtyZXR1cm4gbH1kZWNyeXB0QmxvY2soZSx0LG49bnVsbCl7Y29uc3QgYT1lLmxlbmd0aCxyPXRoaXMuYnVmZmVyO2xldCBzPXRoaXMuYnVmZmVyUG9zaXRpb247aWYobil0aGlzLml2PW47ZWxzZXtmb3IobGV0IHQ9MDtzPDE2JiZ0PGE7Kyt0LCsrcylyW3NdPWVbdF07aWYoczwxNil7dGhpcy5idWZmZXJMZW5ndGg9cztyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCl9dGhpcy5pdj1yO2U9ZS5zdWJhcnJheSgxNil9dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5kZWNyeXB0QmxvY2s9dGhpcy5fZGVjcnlwdEJsb2NrMjtyZXR1cm4gdGhpcy5kZWNyeXB0QmxvY2soZSx0KX1lbmNyeXB0KGUsdCl7Y29uc3Qgbj1lLmxlbmd0aDtsZXQgYT10aGlzLmJ1ZmZlcixyPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcz1bXTt0fHw9bmV3IFVpbnQ4QXJyYXkoMTYpO2ZvcihsZXQgaT0wO2k8bjsrK2kpe2Fbcl09ZVtpXTsrK3I7aWYocjwxNiljb250aW51ZTtmb3IobGV0IGU9MDtlPDE2OysrZSlhW2VdXj10W2VdO2NvbnN0IG49dGhpcy5fZW5jcnlwdChhLHRoaXMuX2tleSk7dD1uO3MucHVzaChuKTthPW5ldyBVaW50OEFycmF5KDE2KTtyPTB9dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1yO3RoaXMuaXY9dDtpZigwPT09cy5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2NvbnN0IGk9MTYqcy5sZW5ndGgsbz1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IGU9MCx0PTAsbj1zLmxlbmd0aDtlPG47KytlLHQrPTE2KW8uc2V0KHNbZV0sdCk7cmV0dXJuIG99fWNsYXNzIEFFUzEyOENpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7X3Jjb249bmV3IFVpbnQ4QXJyYXkoWzE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDFdKTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xMDt0aGlzLl9rZXlTaXplPTE2MDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLG49dGhpcy5fcmNvbixhPW5ldyBVaW50OEFycmF5KDE3Nik7YS5zZXQoZSk7Zm9yKGxldCBlPTE2LHI9MTtlPDE3NjsrK3Ipe2xldCBzPWFbZS0zXSxpPWFbZS0yXSxvPWFbZS0xXSxsPWFbZS00XTtzPXRbc107aT10W2ldO289dFtvXTtsPXRbbF07c149bltyXTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KXthW2VdPXNePWFbZS0xNl07ZSsrO2FbZV09aV49YVtlLTE2XTtlKys7YVtlXT1vXj1hW2UtMTZdO2UrKzthW2VdPWxePWFbZS0xNl07ZSsrfX1yZXR1cm4gYX19Y2xhc3MgQUVTMjU2Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3RvcihlKXtzdXBlcigpO3RoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbj0xNDt0aGlzLl9rZXlTaXplPTIyNDt0aGlzLl9rZXk9dGhpcy5fZXhwYW5kS2V5KGUpfV9leHBhbmRLZXkoZSl7Y29uc3QgdD10aGlzLl9zLG49bmV3IFVpbnQ4QXJyYXkoMjQwKTtuLnNldChlKTtsZXQgYSxyLHMsaSxvPTE7Zm9yKGxldCBlPTMyLGw9MTtlPDI0MDsrK2wpe2lmKGUlMzI9PTE2KXthPXRbYV07cj10W3JdO3M9dFtzXTtpPXRbaV19ZWxzZSBpZihlJTMyPT0wKXthPW5bZS0zXTtyPW5bZS0yXTtzPW5bZS0xXTtpPW5bZS00XTthPXRbYV07cj10W3JdO3M9dFtzXTtpPXRbaV07YV49bzsobzw8PTEpPj0yNTYmJihvPTI1NSYoMjdebykpfWZvcihsZXQgdD0wO3Q8NDsrK3Qpe25bZV09YV49bltlLTMyXTtlKys7bltlXT1yXj1uW2UtMzJdO2UrKztuW2VdPXNePW5bZS0zMl07ZSsrO25bZV09aV49bltlLTMyXTtlKyt9fXJldHVybiBufX1jbGFzcyBQREZCYXNle19oYXNoKGUsdCxuKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBfaGFzaGAgY2FsbGVkIil9Y2hlY2tPd25lclBhc3N3b3JkKGUsdCxuLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQobixlLmxlbmd0aCt0Lmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0aGlzLl9oYXNoKGUscixuKSxhKX1jaGVja1VzZXJQYXNzd29yZChlLHQsbil7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodGhpcy5faGFzaChlLGEsW10pLG4pfWdldE93bmVyS2V5KGUsdCxuLGEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrNTYpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7ci5zZXQobixlLmxlbmd0aCt0Lmxlbmd0aCk7Y29uc3Qgcz10aGlzLl9oYXNoKGUscixuKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihzKS5kZWNyeXB0QmxvY2soYSwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LG4pe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtjb25zdCByPXRoaXMuX2hhc2goZSxhLFtdKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihyKS5kZWNyeXB0QmxvY2sobiwhMSxuZXcgVWludDhBcnJheSgxNikpfX1jbGFzcyBQREYxNyBleHRlbmRzIFBERkJhc2V7X2hhc2goZSx0LG4pe3JldHVybiBjYWxjdWxhdGVTSEEyNTYodCwwLHQubGVuZ3RoKX19Y2xhc3MgUERGMjAgZXh0ZW5kcyBQREZCYXNle19oYXNoKGUsdCxuKXtsZXQgYT1jYWxjdWxhdGVTSEEyNTYodCwwLHQubGVuZ3RoKS5zdWJhcnJheSgwLDMyKSxyPVswXSxzPTA7Zm9yKDtzPDY0fHxyLmF0KC0xKT5zLTMyOyl7Y29uc3QgdD1lLmxlbmd0aCthLmxlbmd0aCtuLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KHQpO2xldCBvPTA7aS5zZXQoZSxvKTtvKz1lLmxlbmd0aDtpLnNldChhLG8pO28rPWEubGVuZ3RoO2kuc2V0KG4sbyk7Y29uc3QgbD1uZXcgVWludDhBcnJheSg2NCp0KTtmb3IobGV0IGU9MCxuPTA7ZTw2NDtlKyssbis9dClsLnNldChpLG4pO3I9bmV3IEFFUzEyOENpcGhlcihhLnN1YmFycmF5KDAsMTYpKS5lbmNyeXB0KGwsYS5zdWJhcnJheSgxNiwzMikpO2NvbnN0IGY9TWF0aC5zdW1QcmVjaXNlKHIuc2xpY2UoMCwxNikpJTM7MD09PWY/YT1jYWxjdWxhdGVTSEEyNTYociwwLHIubGVuZ3RoKToxPT09Zj9hPWNhbGN1bGF0ZVNIQTM4NChyLDAsci5sZW5ndGgpOjI9PT1mJiYoYT1jYWxjdWxhdGVTSEE1MTIociwwLHIubGVuZ3RoKSk7cysrfXJldHVybiBhLnN1YmFycmF5KDAsMzIpfX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm17I1l0PW5ldyBNYXA7ZW1iZWRkZWRGaWx0ZXJOYW1lPW51bGw7Y29uc3RydWN0b3IoZSx0PW51bGwsbj1udWxsKXt0aGlzLnJlc29sdmVDaXBoZXI9ZTt0aGlzLnN0cmVhbUZpbHRlck5hbWU9bjt0aGlzLnN0cmluZ0ZpbHRlck5hbWU9dH0jSnQoZT1udWxsKXtjb25zdCB0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiX19kZWZhdWx0X18iO3JldHVybiB0aGlzLiNZdC5nZXRPckluc2VydENvbXB1dGVkKHQsKCk9PnRoaXMucmVzb2x2ZUNpcGhlcihlKSl9Y3JlYXRlU3RyZWFtKGUsdCxuPW51bGwpe2NvbnN0IGE9dGhpcy5lbWJlZGRlZEZpbHRlck5hbWUmJmlzRGljdChlLmRpY3QsIkVtYmVkZGVkRmlsZSIpP3RoaXMuZW1iZWRkZWRGaWx0ZXJOYW1lOnRoaXMuc3RyZWFtRmlsdGVyTmFtZSxyPW5ldyh0aGlzLiNKdChufHxhKSk7cmV0dXJuIG5ldyBEZWNyeXB0U3RyZWFtKGUsdCxmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1EZWNyeXB0U3RyZWFtKGUsdCl7cmV0dXJuIHIuZGVjcnlwdEJsb2NrKGUsdCl9KX1kZWNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3KHRoaXMuI0p0KHRoaXMuc3RyaW5nRmlsdGVyTmFtZSkpO2xldCBuPXN0cmluZ1RvQnl0ZXMoZSk7bj10LmRlY3J5cHRCbG9jayhuLCEwKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhuKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3KHRoaXMuI0p0KHRoaXMuc3RyaW5nRmlsdGVyTmFtZSkpO2lmKHQgaW5zdGFuY2VvZiBBRVNCYXNlQ2lwaGVyKXtjb25zdCBuPTE2LWUubGVuZ3RoJTE2O2UrPVN0cmluZy5mcm9tQ2hhckNvZGUobikucmVwZWF0KG4pO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMTYpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7bGV0IHI9c3RyaW5nVG9CeXRlcyhlKTtyPXQuZW5jcnlwdChyLGEpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYrci5sZW5ndGgpO3Muc2V0KGEpO3Muc2V0KHIsMTYpO3JldHVybiBieXRlc1RvU3RyaW5nKHMpfWxldCBuPXN0cmluZ1RvQnl0ZXMoZSk7bj10LmVuY3J5cHQobik7cmV0dXJuIGJ5dGVzVG9TdHJpbmcobil9fWZ1bmN0aW9uIHV0ZjhQYXNzd29yZFRvQnl0ZXMoZSl7dHJ5e2U9dXRmOFN0cmluZ1RvU3RyaW5nKGUpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1yZXR1cm4gc3RyaW5nVG9CeXRlcyhlKX1jbGFzcyBDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5eyNRdDtzdGF0aWMgZ2V0IF9kZWZhdWx0UGFzc3dvcmRCeXRlcygpe3JldHVybiBzaGFkb3codGhpcywiX2RlZmF1bHRQYXNzd29yZEJ5dGVzIixuZXcgVWludDhBcnJheShbNDAsMTkxLDc4LDk0LDc4LDExNywxMzgsNjUsMTAwLDAsNzgsODYsMjU1LDI1MCwxLDgsNDYsNDYsMCwxODIsMjA4LDEwNCw2MiwxMjgsNDcsMTIsMTY5LDI1NCwxMDAsODMsMTA1LDEyMl0pKX0jWnQoZSx0LG4sYSxyLHMsaSxvLGwsZixjLGgpe2lmKHQpe2NvbnN0IGU9TWF0aC5taW4oMTI3LHQubGVuZ3RoKTt0PXQuc3ViYXJyYXkoMCxlKX1lbHNlIHQ9W107Y29uc3QgdT02PT09ZT9uZXcgUERGMjA6bmV3IFBERjE3O3JldHVybiB1LmNoZWNrVXNlclBhc3N3b3JkKHQsbyxpKT91LmdldFVzZXJLZXkodCxsLGMpOnQubGVuZ3RoJiZ1LmNoZWNrT3duZXJQYXNzd29yZCh0LGEscyxuKT91LmdldE93bmVyS2V5KHQscixzLGYpOm51bGx9I2VuKGUsdCxuLGEscixzLGksbyl7Y29uc3QgbD00MCtuLmxlbmd0aCtlLmxlbmd0aCxmPW5ldyBVaW50OEFycmF5KGwpO2xldCBjLGgsdT0wO2lmKHQpe2g9TWF0aC5taW4oMzIsdC5sZW5ndGgpO2Zvcig7dTxoOysrdSlmW3VdPXRbdV19Yz0wO2Zvcig7dTwzMjspZlt1KytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzW2MrK107Zi5zZXQobix1KTt1Kz1uLmxlbmd0aDtmW3UrK109MjU1JnI7Zlt1KytdPXI+PjgmMjU1O2ZbdSsrXT1yPj4xNiYyNTU7Zlt1KytdPXI+Pj4yNCYyNTU7Zi5zZXQoZSx1KTt1Kz1lLmxlbmd0aDtpZihzPj00JiYhbyl7Zi5maWxsKDI1NSx1LHUrNCk7dSs9NH1sZXQgbT1jYWxjdWxhdGVNRDUoZiwwLHUpO2NvbnN0IHA9aT4+MztpZihzPj0zKWZvcihjPTA7Yzw1MDsrK2MpbT1jYWxjdWxhdGVNRDUobSwwLHApO2NvbnN0IGQ9bS5zdWJhcnJheSgwLHApO2xldCBnLGI7aWYocz49Myl7dT0wO2Yuc2V0KENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzLHUpO3UrPTMyO2Yuc2V0KGUsdSk7dSs9ZS5sZW5ndGg7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKGNhbGN1bGF0ZU1ENShmLDAsdSkpO2g9ZC5sZW5ndGg7Y29uc3QgdD1uZXcgVWludDhBcnJheShoKTtmb3IoYz0xO2M8PTE5OysrYyl7Zm9yKGxldCBlPTA7ZTxoOysrZSl0W2VdPWRbZV1eYztnPW5ldyBBUkNGb3VyQ2lwaGVyKHQpO2I9Zy5lbmNyeXB0QmxvY2soYil9fWVsc2V7Zz1uZXcgQVJDRm91ckNpcGhlcihkKTtiPWcuZW5jcnlwdEJsb2NrKENpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzKX1yZXR1cm4gYi5ldmVyeSgoZSx0KT0+YVt0XT09PWUpP2Q6bnVsbH0jdG4oZSx0LG4sYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheSgzMik7bGV0IHM9MDtjb25zdCBpPU1hdGgubWluKDMyLGUubGVuZ3RoKTtmb3IoO3M8aTsrK3MpcltzXT1lW3NdO2xldCBvPTA7Zm9yKDtzPDMyOylyW3MrK109Q2lwaGVyVHJhbnNmb3JtRmFjdG9yeS5fZGVmYXVsdFBhc3N3b3JkQnl0ZXNbbysrXTtsZXQgbD1jYWxjdWxhdGVNRDUociwwLHMpO2NvbnN0IGY9YT4+MztpZihuPj0zKWZvcihvPTA7bzw1MDsrK28pbD1jYWxjdWxhdGVNRDUobCwwLGwubGVuZ3RoKTtsZXQgYyxoO2lmKG4+PTMpe2g9dDtjb25zdCBlPW5ldyBVaW50OEFycmF5KGYpO2ZvcihvPTE5O28+PTA7by0tKXtmb3IobGV0IHQ9MDt0PGY7Kyt0KWVbdF09bFt0XV5vO2M9bmV3IEFSQ0ZvdXJDaXBoZXIoZSk7aD1jLmVuY3J5cHRCbG9jayhoKX19ZWxzZXtjPW5ldyBBUkNGb3VyQ2lwaGVyKGwuc3ViYXJyYXkoMCxmKSk7aD1jLmVuY3J5cHRCbG9jayh0KX1yZXR1cm4gaH0jbm4oZSx0LG4sYT0hMSl7Y29uc3Qgcj1uLmxlbmd0aCxzPW5ldyBVaW50OEFycmF5KHIrOSk7cy5zZXQobik7bGV0IGk9cjtzW2krK109MjU1JmU7c1tpKytdPWU+PjgmMjU1O3NbaSsrXT1lPj4xNiYyNTU7c1tpKytdPTI1NSZ0O3NbaSsrXT10Pj44JjI1NTtpZihhKXtzW2krK109MTE1O3NbaSsrXT02NTtzW2krK109MTA4O3NbaSsrXT04NH1yZXR1cm4gY2FsY3VsYXRlTUQ1KHMsMCxpKS5zdWJhcnJheSgwLE1hdGgubWluKHIrNSwxNikpfWNvbnN0cnVjdG9yKGUsdCxuKXtjb25zdCBhPWUuZ2V0KCJGaWx0ZXIiKTtpZighaXNOYW1lKGEsIlN0YW5kYXJkIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bmtub3duIGVuY3J5cHRpb24gbWV0aG9kIik7dGhpcy5maWx0ZXJOYW1lPWEubmFtZTt0aGlzLmRpY3Q9ZTt0aGlzLiNRdD10O2NvbnN0IHI9ZS5nZXQoIlYiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKXx8MSE9PXImJjIhPT1yJiY0IT09ciYmNSE9PXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPXI7bGV0IHM9ZS5nZXQoIkxlbmd0aCIpO2lmKCFzKWlmKHI8PTMpcz00MDtlbHNle2NvbnN0IHQ9ZS5nZXQoIkNGIiksbj1lLmdldCgiU3RtRiIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiZuIGluc3RhbmNlb2YgTmFtZSl7dC5zdXBwcmVzc0VuY3J5cHRpb249ITA7Y29uc3QgZT10LmdldChuLm5hbWUpO3M9ZT8uZ2V0KCJMZW5ndGgiKXx8MTI4O3M8NDAmJihzPDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpfHxzPDQwfHxzJTghPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGgiKTtsZXQgaT1udWxsLG89TmFtZS5nZXQoIklkZW50aXR5IiksbD1OYW1lLmdldCgiSWRlbnRpdHkiKSxmPW87aWYocj49NCl7aT1lLmdldCgiQ0YiKTtpIGluc3RhbmNlb2YgRGljdCYmKGkuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTtvPWUuZ2V0KCJTdG1GIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO2w9ZS5nZXQoIlN0ckYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7Zj1lLmdldCgiRUZGIil8fG99dGhpcy5jZj1pO3RoaXMuc3RtZj1vO3RoaXMuc3RyZj1sO3RoaXMuZWZmPWY7Y29uc3QgYz1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPIikpLGg9c3RyaW5nVG9CeXRlcyhlLmdldCgiVSIpKSx1PWMuc3ViYXJyYXkoMCwzMiksbT1oLnN1YmFycmF5KDAsMzIpLHA9ZS5nZXQoIlAiKSxkPWUuZ2V0KCJSIiksZz0oND09PXJ8fDU9PT1yKSYmITEhPT1lLmdldCgiRW5jcnlwdE1ldGFkYXRhIik7dGhpcy5lbmNyeXB0TWV0YWRhdGE9Zztjb25zdCBiPXN0cmluZ1RvQnl0ZXModCk7bGV0IHcsaixrO2lmKG4paWYoNj09PWQpe2NvbnN0IGU9ZnVuY3Rpb24gc2FzbFByZXAoZSl7bGV0IHQ9IiI7Zm9yKGNvbnN0IG4gb2YgZSl7Y29uc3QgZT1uLmNvZGVQb2ludEF0KDApO0ZmLmhhcyhlKT90Kz0iICI6VGYuaGFzKGUpfHwodCs9bil9cmV0dXJuIHQubm9ybWFsaXplKCJORktDIil9KG4pO3c9dXRmOFBhc3N3b3JkVG9CeXRlcyhlKTtlIT09biYmKGo9dXRmOFBhc3N3b3JkVG9CeXRlcyhuKSl9ZWxzZSB3PTU9PT1yP3V0ZjhQYXNzd29yZFRvQnl0ZXMobik6c3RyaW5nVG9CeXRlcyhuKTtpZig1IT09cilrPXRoaXMuI2VuKGIsdyx1LG0scCxkLHMsZyk7ZWxzZXtjb25zdCB0PWMuc3ViYXJyYXkoMzIsNDApLG49Yy5zdWJhcnJheSg0MCw0OCksYT1oLnN1YmFycmF5KDAsNDgpLHI9aC5zdWJhcnJheSgzMiw0MCkscz1oLnN1YmFycmF5KDQwLDQ4KSxpPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk9FIikpLG89c3RyaW5nVG9CeXRlcyhlLmdldCgiVUUiKSksbD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJQZXJtcyIpKTtmb3IoY29uc3QgZSBvZiBqP1t3LGpdOlt3XSl7az10aGlzLiNadChkLGUsdSx0LG4sYSxtLHIscyxpLG8sbCk7aWYoaylicmVha319aWYoIWspe2lmKCFuKXtpZih0aGlzLmFsZ29yaXRobT49NCYmaXNOYW1lKHRoaXMuc3RtZiwiSWRlbnRpdHkiKSYmaXNOYW1lKHRoaXMuc3RyZiwiSWRlbnRpdHkiKSl7Y29uc3QgZT10aGlzLmNmPy5nZXQodGhpcy5lZmYubmFtZSksdD1lPy5nZXQoIkF1dGhFdmVudCIpO2lmKGlzTmFtZSh0LCJFRk9wZW4iKSl7dGhpcy5lbmNyeXB0aW9uS2V5PW51bGw7cmV0dXJufX10aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIk5vIHBhc3N3b3JkIGdpdmVuIixybil9Y29uc3QgZT10aGlzLiN0bih3LHUsZCxzKTtrPXRoaXMuI2VuKGIsZSx1LG0scCxkLHMsZyl9aWYoIWspdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJJbmNvcnJlY3QgUGFzc3dvcmQiLHNuKTtpZig0PT09ciYmay5sZW5ndGg8MTYpe3RoaXMuZW5jcnlwdGlvbktleT1uZXcgVWludDhBcnJheSgxNik7dGhpcy5lbmNyeXB0aW9uS2V5LnNldChrKX1lbHNlIHRoaXMuZW5jcnlwdGlvbktleT1rfXNldFBhc3N3b3JkKGUpe2NvbnN0IHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkodGhpcy5kaWN0LHRoaXMuI1F0LGUpO3RoaXMuZW5jcnlwdGlvbktleT10LmVuY3J5cHRpb25LZXl9Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pe2NvbnN0IG49bmV3IENpcGhlclRyYW5zZm9ybShuPT57aWYoIShuIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNyeXB0IGZpbHRlciBuYW1lLiIpO2NvbnN0IGE9dGhpcy5jZi5nZXQobi5uYW1lKSxyPWE/LmdldCgiQ0ZNIik7aWYoIXJ8fCJOb25lIj09PXIubmFtZSlyZXR1cm4gTnVsbENpcGhlcjtpZighdGhpcy5lbmNyeXB0aW9uS2V5KXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLHJuKTtpZig1PT09dGhpcy5hbGdvcml0aG18fCJBRVNWMyI9PT1yLm5hbWUpcmV0dXJuIEFFUzI1NkNpcGhlci5iaW5kKG51bGwsdGhpcy5lbmNyeXB0aW9uS2V5KTtpZigiVjIiPT09ci5uYW1lKXJldHVybiBBUkNGb3VyQ2lwaGVyLmJpbmQobnVsbCx0aGlzLiNubihlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSk7aWYoIkFFU1YyIj09PXIubmFtZSlyZXR1cm4gQUVTMTI4Q2lwaGVyLmJpbmQobnVsbCx0aGlzLiNubihlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCEwKSk7dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX0sdGhpcy5zdHJmLHRoaXMuc3RtZik7bi5lbWJlZGRlZEZpbHRlck5hbWU9dGhpcy5lZmY7cmV0dXJuIG59cmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0oKCk9PkFSQ0ZvdXJDaXBoZXIuYmluZChudWxsLHRoaXMuI25uKGUsdCx0aGlzLmVuY3J5cHRpb25LZXksITEpKSl9fWNsYXNzIFhSZWZ7I2FuPW5ldyBNYXA7I3JuPVtdOyNzbj1udWxsOyNpbj1udWxsOyNvbj0hMTsjbG49bmV3IFJlZlNldDsjZm49bnVsbDsjY249bmV3IFNldDsjaG49ITA7I3VuPW5ldyBTZXQ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMucGRmTWFuYWdlcj10fWdldE5ld1BlcnNpc3RlbnRSZWYoZSl7bnVsbD09PXRoaXMuI3NuJiYodGhpcy4jc249dGhpcy4jcm4ubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuI3NuKys7dGhpcy4jYW4uc2V0KHQsZSk7cmV0dXJuIFJlZi5nZXQodCwwKX1nZXROZXdUZW1wb3JhcnlSZWYoKXtpZihudWxsPT09dGhpcy4jaW4pe3RoaXMuI2luPXRoaXMuI3JuLmxlbmd0aHx8MTtpZih0aGlzLiNzbil7dGhpcy4jZm49bmV3IE1hcDtmb3IobGV0IGU9dGhpcy4jaW47ZTx0aGlzLiNzbjtlKyspe3RoaXMuI2ZuLnNldChlLHRoaXMuI2FuLmdldChlKSk7dGhpcy4jYW4uZGVsZXRlKGUpfX19cmV0dXJuIFJlZi5nZXQodGhpcy4jaW4rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuI2luPW51bGw7aWYodGhpcy4jZm4pZm9yKGNvbnN0W2UsdF1vZiB0aGlzLiNmbil0aGlzLiNhbi5zZXQoZSx0KTt0aGlzLiNmbj1udWxsfXNldFN0YXJ0WFJlZihlKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlPVtlXX1wYXJzZShlPSExKXt0aGlzLiNvbj1lO2xldCB0LG4sYTtpZihlKXt3YXJuKCJJbmRleGluZyBhbGwgUERGIG9iamVjdHMiKTt0PXRoaXMuaW5kZXhPYmplY3RzKCl9ZWxzZSB0PXRoaXMucmVhZFhSZWYoKTt0LmFzc2lnblhyZWYodGhpcyk7dGhpcy50cmFpbGVyPXQ7dHJ5e249dC5nZXQoIkVuY3J5cHQiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiRW5jcnlwdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYobiBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIiksYT1lPy5sZW5ndGg/ZVswXToiIjtuLnN1cHByZXNzRW5jcnlwdGlvbj0hMDt0aGlzLmVuY3J5cHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkobixhLHRoaXMucGRmTWFuYWdlci5wYXNzd29yZCl9dHJ5e2E9dC5nZXQoIlJvb3QiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYSBpbnN0YW5jZW9mIERpY3QpdHJ5e2lmKGEuZ2V0KCJQYWdlcyIpaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnJvb3Q9YTtyZXR1cm59fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbjt0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBSb290IHJlZmVyZW5jZS4iKX1wcm9jZXNzWFJlZlRhYmxlKGUpe3RoaXMuX3RhYmxlU3RhdGU/Pz17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfTtpZighaXNDbWQodGhpcy5yZWFkWFJlZlRhYmxlKGUpLCJ0cmFpbGVyIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBmaW5kIHRyYWlsZXIgZGljdGlvbmFyeSIpO2xldCB0PWUuZ2V0T2JqKCk7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJih0PXQuZGljdCk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IGNvdWxkIG5vdCBwYXJzZSB0cmFpbGVyIGRpY3Rpb25hcnkiKTtkZWxldGUgdGhpcy5fdGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0sbj10aGlzLl90YWJsZVN0YXRlO3QucG9zPW4uc3RyZWFtUG9zO2UuYnVmMT1uLnBhcnNlckJ1ZjE7ZS5idWYyPW4ucGFyc2VyQnVmMjtsZXQgYTtmb3IoOzspe2lmKCEoImZpcnN0RW50cnlOdW0iaW4gbil8fCEoImVudHJ5Q291bnQiaW4gbikpe2lmKGlzQ21kKGE9ZS5nZXRPYmooKSwidHJhaWxlciIpKWJyZWFrO24uZmlyc3RFbnRyeU51bT1hO24uZW50cnlDb3VudD1lLmdldE9iaigpfWxldCByPW4uZmlyc3RFbnRyeU51bTtjb25zdCBzPW4uZW50cnlDb3VudDtpZighTnVtYmVyLmlzSW50ZWdlcihyKXx8IU51bWJlci5pc0ludGVnZXIocykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCBhPW4uZW50cnlOdW07YTxzO2ErKyl7bi5zdHJlYW1Qb3M9dC5wb3M7bi5lbnRyeU51bT1hO24ucGFyc2VyQnVmMT1lLmJ1ZjE7bi5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBpPXtvZmZzZXQ6ZS5nZXRPYmooKSxnZW46ZS5nZXRPYmooKX0sbz1lLmdldE9iaigpO2lmKG8gaW5zdGFuY2VvZiBDbWQpc3dpdGNoKG8uY21kKXtjYXNlImYiOmkuZnJlZT0hMDticmVhaztjYXNlIm4iOmkudW5jb21wcmVzc2VkPSEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKGkub2Zmc2V0KXx8IU51bWJlci5pc0ludGVnZXIoaS5nZW4pfHwhaS5mcmVlJiYhaS51bmNvbXByZXNzZWQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluIFhSZWYgc3Vic2VjdGlvbjogJHtyfSwgJHtzfWApOzA9PT1hJiZpLmZyZWUmJjE9PT1yJiYocj0wKTt0aGlzLiNybltyK2FdPz89aX1uLmVudHJ5TnVtPTA7bi5zdHJlYW1Qb3M9dC5wb3M7bi5wYXJzZXJCdWYxPWUuYnVmMTtuLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBuLmZpcnN0RW50cnlOdW07ZGVsZXRlIG4uZW50cnlDb3VudH1pZih0aGlzLiNyblswXSYmIXRoaXMuI3JuWzBdLmZyZWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIGF9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0e2RpY3Q6dCxwb3M6bn09ZSxhPXQuZ2V0KCJXIikscj10LmdldCgiSW5kZXgiKXx8WzAsdC5nZXQoIlNpemUiKV07dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6cixieXRlV2lkdGhzOmEsZW50cnlOdW06MCxzdHJlYW1Qb3M6bn19dGhpcy5yZWFkWFJlZlN0cmVhbShlKTtkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZTtyZXR1cm4gZS5kaWN0fXJlYWRYUmVmU3RyZWFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztjb25zdFtuLGEscl09dC5ieXRlV2lkdGhzLHM9dC5lbnRyeVJhbmdlcztmb3IoO3MubGVuZ3RoPjA7KXtjb25zdFtpLG9dPXM7aWYoIU51bWJlci5pc0ludGVnZXIoaSl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtpfSwgJHtvfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHwhTnVtYmVyLmlzSW50ZWdlcihhKXx8IU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtpfSwgJHtvfWApO2ZvcihsZXQgcz10LmVudHJ5TnVtO3M8bzsrK3Mpe3QuZW50cnlOdW09czt0LnN0cmVhbVBvcz1lLnBvcztsZXQgbz0wLGw9MCxmPTA7Zm9yKGxldCB0PTA7dDxuOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAndHlwZScuIik7bz1vPDw4fHR9MD09PW4mJihvPTEpO2ZvcihsZXQgdD0wO3Q8YTsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7bD1sPDw4fHR9Zm9yKGxldCB0PTA7dDxyOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7Zj1mPDw4fHR9Y29uc3QgYz17b2Zmc2V0OmwsZ2VuOmZ9O3N3aXRjaChvKXtjYXNlIDA6Yy5mcmVlPSEwO2JyZWFrO2Nhc2UgMTpjLnVuY29tcHJlc3NlZD0hMDticmVhaztjYXNlIDI6YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgWFJlZiBlbnRyeSB0eXBlOiAke299YCl9dGhpcy4jcm5baStzXT8/PWN9dC5lbnRyeU51bT0wO3Quc3RyZWFtUG9zPWUucG9zO3Muc3BsaWNlKDAsMil9fWluZGV4T2JqZWN0cygpe2Z1bmN0aW9uIHJlYWRUb2tlbihlLHQpe2xldCBuPSIiLGE9ZVt0XTtmb3IoOzEwIT09YSYmMTMhPT1hJiY2MCE9PWEmJiEoKyt0Pj1lLmxlbmd0aCk7KXtuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGEpO2E9ZVt0XX1yZXR1cm4gbn1mdW5jdGlvbiBza2lwVW50aWwoZSx0LG4pe2NvbnN0IGE9bi5sZW5ndGgscj1lLmxlbmd0aDtsZXQgcz0wO2Zvcig7dDxyOyl7bGV0IHI9MDtmb3IoO3I8YSYmZVt0K3JdPT09bltyXTspKytyO2lmKHI+PWEpYnJlYWs7dCsrO3MrK31yZXR1cm4gc31jb25zdCBlPS9cYihlbmRvYmp8XGQrXHMrXGQrXHMrb2JqfHhyZWZ8dHJhaWxlclxzKjw8KVxiL2csdD0vXGIoc3RhcnR4cmVmfFxkK1xzK1xkK1xzK29iailcYi9nLG49L14oXGQrKVxzKyhcZCspXHMrb2JqXGIvLGE9bmV3IFVpbnQ4QXJyYXkoWzExNiwxMTQsOTcsMTA1LDEwOCwxMDEsMTE0XSkscj1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLHM9bmV3IFVpbnQ4QXJyYXkoWzQ3LDg4LDgyLDEwMSwxMDJdKTt0aGlzLiNybi5sZW5ndGg9MDt0aGlzLiNhbi5jbGVhcigpO2NvbnN0IGk9dGhpcy5zdHJlYW07aS5wb3M9MDtjb25zdCBvPWkuZ2V0Qnl0ZXMoKSxsPWJ5dGVzVG9TdHJpbmcobyksZj1vLmxlbmd0aDtsZXQgYz1pLnN0YXJ0O2NvbnN0IGg9W10sdT1bXTtmb3IoO2M8Zjspe2xldCBtPW9bY107aWYoOT09PW18fDEwPT09bXx8MTM9PT1tfHwzMj09PW0peysrYztjb250aW51ZX1pZigzNz09PW0pe2RveysrYztpZihjPj1mKWJyZWFrO209b1tjXX13aGlsZSgxMCE9PW0mJjEzIT09bSk7Y29udGludWV9Y29uc3QgcD1yZWFkVG9rZW4obyxjKTtsZXQgZDtpZihwLnN0YXJ0c1dpdGgoInhyZWYiKSYmKDQ9PT1wLmxlbmd0aHx8L1xzLy50ZXN0KHBbNF0pKSl7Yys9c2tpcFVudGlsKG8sYyxhKTtoLnB1c2goYyk7Yys9c2tpcFVudGlsKG8sYyxyKX1lbHNlIGlmKGQ9bi5leGVjKHApKXtjb25zdCB0PTB8ZFsxXSxuPTB8ZFsyXSxhPWMrcC5sZW5ndGg7bGV0IHIsaD0hMTtpZih0aGlzLiNyblt0XSl7aWYodGhpcy4jcm5bdF0uZ2VuPT09bil0cnl7bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGkubWFrZVN1YlN0cmVhbShhKSl9KS5nZXRPYmooKTtoPSEwfWNhdGNoKGUpe2UgaW5zdGFuY2VvZiBQYXJzZXJFT0ZFeGNlcHRpb24/d2FybihgaW5kZXhPYmplY3RzIC0tIGNoZWNraW5nIG9iamVjdCAoJHtwfSk6ICIke2V9Ii5gKTpoPSEwfX1lbHNlIGg9ITA7aCYmKHRoaXMuI3JuW3RdPXtvZmZzZXQ6Yy1pLnN0YXJ0LGdlbjpuLHVuY29tcHJlc3NlZDohMH0pO2UubGFzdEluZGV4PWE7Y29uc3QgbT1lLmV4ZWMobCk7aWYobSl7cj1lLmxhc3RJbmRleCsxLWM7aWYoImVuZG9iaiIhPT1tWzFdKXt3YXJuKGBpbmRleE9iamVjdHM6IEZvdW5kICIke21bMV19IiBpbnNpZGUgb2YgYW5vdGhlciAib2JqIiwgY2F1c2VkIGJ5IG1pc3NpbmcgImVuZG9iaiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7ci09bVsxXS5sZW5ndGgrMX19ZWxzZSByPWYtYztjb25zdCBnPW8uc3ViYXJyYXkoYyxjK3IpLGI9c2tpcFVudGlsKGcsMCxzKTtpZihiPHImJmdbYis1XTw2NCl7dS5wdXNoKGMtaS5zdGFydCk7dGhpcy4jdW4uYWRkKGMtaS5zdGFydCl9Yys9cn1lbHNlIGlmKHAuc3RhcnRzV2l0aCgidHJhaWxlciIpJiYoNz09PXAubGVuZ3RofHwvXHMvLnRlc3QocFs3XSkpKXtoLnB1c2goYyk7Y29uc3QgZT1jK3AubGVuZ3RoO2xldCBuO3QubGFzdEluZGV4PWU7Y29uc3QgYT10LmV4ZWMobCk7aWYoYSl7bj10Lmxhc3RJbmRleCsxLWM7aWYoInN0YXJ0eHJlZiIhPT1hWzFdKXt3YXJuKGBpbmRleE9iamVjdHM6IEZvdW5kICIke2FbMV19IiBhZnRlciAidHJhaWxlciIsIGNhdXNlZCBieSBtaXNzaW5nICJzdGFydHhyZWYiIC0tIHRyeWluZyB0byByZWNvdmVyLmApO24tPWFbMV0ubGVuZ3RoKzF9fWVsc2Ugbj1mLWM7Yys9bn1lbHNlIGMrPXAubGVuZ3RoKzF9Zm9yKGNvbnN0IGUgb2YgdSl7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKGUpO3RoaXMucmVhZFhSZWYoITApfWNvbnN0IG09W107bGV0IHAsZCxnPSExO2Zvcihjb25zdCBlIG9mIGgpe2kucG9zPWU7Y29uc3QgdD1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIoaSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMCxyZWNvdmVyeU1vZGU6ITB9KTtpZighaXNDbWQodC5nZXRPYmooKSwidHJhaWxlciIpKWNvbnRpbnVlO2NvbnN0IG49dC5nZXRPYmooKTtpZihuIGluc3RhbmNlb2YgRGljdCl7bS5wdXNoKG4pO24uaGFzKCJFbmNyeXB0IikmJihnPSEwKX19Zm9yKGNvbnN0IGUgb2ZbLi4ubSwiZ2VuRmFsbGJhY2siLC4uLm1dKXtpZigiZ2VuRmFsbGJhY2siPT09ZSl7aWYoIWQpYnJlYWs7dGhpcy5fZ2VuZXJhdGlvbkZhbGxiYWNrPSEwO2NvbnRpbnVlfWxldCB0PSExO3RyeXtjb25zdCBuPWUuZ2V0KCJSb290Iik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7Y29uc3QgYT1uLmdldCgiUGFnZXMiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCByPWEuZ2V0KCJDb3VudCIpO051bWJlci5pc0ludGVnZXIocikmJih0PSEwKX1jYXRjaChlKXtkPWU7Y29udGludWV9aWYodCYmKCFnfHxlLmhhcygiRW5jcnlwdCIpKSYmZS5oYXMoIklEIikpcmV0dXJuIGU7cD1lfWlmKHApcmV0dXJuIHA7aWYodGhpcy50b3BEaWN0KXJldHVybiB0aGlzLnRvcERpY3Q7aWYoIW0ubGVuZ3RoKWZvcihjb25zdCBlIGluIHRoaXMuI3JuKXtjb25zdCB0PXRoaXMuI3JuW2VdO2lmKCF0KWNvbnRpbnVlO2NvbnN0IG49UmVmLmdldChwYXJzZUludChlLDEwKSx0Lmdlbik7bGV0IGE7dHJ5e2E9dGhpcy5mZXRjaChuKX1jYXRjaHtjb250aW51ZX1hIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9YS5kaWN0KTtpZihhIGluc3RhbmNlb2YgRGljdCYmYS5oYXMoIlJvb3QiKSlyZXR1cm4gYX10aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0sbj1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKG4uaGFzKGUpKXt3YXJuKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1uLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgYT1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIodCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2xldCByLHM9YS5nZXRPYmooKTtpZihpc0NtZChzLCJ4cmVmIikpe3I9dGhpcy5wcm9jZXNzWFJlZlRhYmxlKGEpO3RoaXMudG9wRGljdHx8PXI7cz1yLmdldCgiWFJlZlN0bSIpO2lmKE51bWJlci5pc0ludGVnZXIocykmJiF0aGlzLiN1bi5oYXMocykpe3RoaXMuI3VuLmFkZChzKTt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gocyl9fWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIocykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIGhlYWRlciIpO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhLmdldE9iaigpKSYmaXNDbWQoYS5nZXRPYmooKSwib2JqIikmJihzPWEuZ2V0T2JqKCkpaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0iKTtyPXRoaXMucHJvY2Vzc1hSZWZTdHJlYW0ocyk7dGhpcy50b3BEaWN0fHw9cjtpZighcil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9dGhpcy4jY24uYWRkKGUpO3M9ci5nZXQoIlByZXYiKTtOdW1iZXIuaXNJbnRlZ2VyKHMpP3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzKTpzIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gocy5udW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3RoaXMuI2huPSExO2luZm8oIih3aGlsZSByZWFkaW5nIFhSZWYpOiAiK2UpfXRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1pZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufWNvdW50VXBkYXRlc0FmdGVyKGUpe2lmKHRoaXMuI29ufHwhdGhpcy4jaG4pcmV0dXJuIG51bGw7Y29uc3QgdD1lLXRoaXMuc3RyZWFtLnN0YXJ0O2xldCBuPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy4jY24pZT49dCYmIXRoaXMuI3VuLmhhcyhlKSYmbisrO3JldHVybiBufWdldEVudHJ5KGUpe2NvbnN0IHQ9dGhpcy4jcm5bZV07cmV0dXJuIHQmJiF0LmZyZWUmJnQub2Zmc2V0P3Q6bnVsbH1mZXRjaElmUmVmKGUsdD0hMSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaChlLHQpOmV9ZmV0Y2goZSx0PSExKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBuPWUubnVtLGE9dGhpcy4jYW4uZ2V0KG4pO2lmKHZvaWQgMCE9PWEpe2EgaW5zdGFuY2VvZiBEaWN0JiYhYS5vYmpJZCYmKGEub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gYX1sZXQgcj10aGlzLmdldEVudHJ5KG4pO2lmKG51bGw9PT1yKXJldHVybiByO2lmKHRoaXMuI2xuLmhhcyhlKSl7dGhpcy4jbG4ucmVtb3ZlKGUpO3dhcm4oYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gaG59dGhpcy4jbG4ucHV0KGUpO3RyeXtyPXIudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxyLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscix0KTt0aGlzLiNsbi5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy4jbG4ucmVtb3ZlKGUpO3Rocm93IHR9ciBpbnN0YW5jZW9mIERpY3Q/ci5vYmpJZD1lLnRvU3RyaW5nKCk6ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihyLmRpY3Qub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gcn1mZXRjaFVuY29tcHJlc3NlZChlLHQsbj0hMSl7Y29uc3QgYT1lLmdlbjtsZXQgcj1lLm51bTtpZih0LmdlbiE9PWEpe2NvbnN0IHM9YEluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICR7ZX1gO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48YSl7d2FybihzKTtyZXR1cm4gdGhpcy5mZXRjaFVuY29tcHJlc3NlZChSZWYuZ2V0KHIsdC5nZW4pLHQsbil9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihzKX1jb25zdCBzPXRoaXMuc3RyZWFtLm1ha2VTdWJTdHJlYW0odC5vZmZzZXQrdGhpcy5zdHJlYW0uc3RhcnQpLGk9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxvPWkuZ2V0T2JqKCksbD1pLmdldE9iaigpLGY9aS5nZXRPYmooKTtpZihvIT09cnx8bCE9PWF8fCEoZiBpbnN0YW5jZW9mIENtZCkpdGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtpZigib2JqIiE9PWYuY21kKXtpZihmLmNtZC5zdGFydHNXaXRoKCJvYmoiKSl7cj1wYXJzZUludChmLmNtZC5zdWJzdHJpbmcoMyksMTApO2lmKCFOdW1iZXIuaXNOYU4ocikpcmV0dXJuIHJ9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFuP2kuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0ocixhKSk6aS5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW18fHRoaXMuI2FuLnNldChyLHQpO3JldHVybiB0fWZldGNoQ29tcHJlc3NlZChlLHQsbj0hMSl7Y29uc3QgYT10Lm9mZnNldCxyPXRoaXMuZmV0Y2goUmVmLmdldChhLDApKTtpZighKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImJhZCBPYmpTdG0gc3RyZWFtIik7Y29uc3Qgcz1yLmRpY3QuZ2V0KCJGaXJzdCIpLGk9ci5kaWN0LmdldCgiTiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpfHwhTnVtYmVyLmlzSW50ZWdlcihpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2xldCBvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihyKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgbD1uZXcgQXJyYXkoaSksZj1uZXcgQXJyYXkoaSk7Zm9yKGxldCBlPTA7ZTxpOysrZSl7Y29uc3QgdD1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke3R9YCk7Y29uc3Qgbj1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke259YCk7bFtlXT10O2NvbnN0IHI9dGhpcy5nZXRFbnRyeSh0KTtyPy5vZmZzZXQ9PT1hJiZyLmdlbiE9PWUmJihyLmdlbj1lKTtmW2VdPW59Y29uc3QgYz0oci5zdGFydHx8MCkrcyxoPW5ldyBBcnJheShpKTtmb3IobGV0IGU9MDtlPGk7KytlKXtjb25zdCB0PWU8aS0xP2ZbZSsxXS1mW2VdOnZvaWQgMDtpZih0PDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbS4iKTtvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihyLm1ha2VTdWJTdHJlYW0oYytmW2VdLHQsci5kaWN0KSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IG49by5nZXRPYmooKTtoW2VdPW47aWYobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pY29udGludWU7Y29uc3Qgcz1sW2VdLHU9dGhpcy4jcm5bc107dSYmdS5vZmZzZXQ9PT1hJiZ1Lmdlbj09PWUmJnRoaXMuI2FuLnNldChzLG4pfWlmKHZvaWQgMD09PSh0PWhbdC5nZW5dKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtyZXR1cm4gdH1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChuKXtpZighKG4gaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgbjthd2FpdCB0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKG4uYmVnaW4sbi5lbmQpO3JldHVybiB0aGlzLmZldGNoQXN5bmMoZSx0KX19Z2V0Q2F0YWxvZ09iaigpe3JldHVybiB0aGlzLnJvb3R9fWNvbnN0IE9mPVswLDAsNjEyLDc5Ml07Y2xhc3MgUGFnZXsjbW49bnVsbDtjb25zdHJ1Y3Rvcih7cGRmTWFuYWdlcjplLHhyZWY6dCxwYWdlSW5kZXg6bixwYWdlRGljdDphLHJlZjpyLGdsb2JhbElkRmFjdG9yeTpzLGZvbnRDYWNoZTppLGJ1aWx0SW5DTWFwQ2FjaGU6byxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6bCxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6ZixnbG9iYWxJbWFnZUNhY2hlOmMsc3lzdGVtRm9udENhY2hlOmgsbm9uQmxlbmRNb2Rlc1NldDp1LHhmYUZhY3Rvcnk6bX0pe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMucGFnZUluZGV4PW47dGhpcy5wYWdlRGljdD1hO3RoaXMueHJlZj10O3RoaXMucmVmPXI7dGhpcy5mb250Q2FjaGU9aTt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bzt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1sO3RoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlPWY7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPWM7dGhpcy5zeXN0ZW1Gb250Q2FjaGU9aDt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9dTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9ZS5ldmFsdWF0b3JPcHRpb25zO3RoaXMueGZhRmFjdG9yeT1tO2NvbnN0IHA9e29iajowfTt0aGlzLl9sb2NhbElkRmFjdG9yeT1jbGFzcyBleHRlbmRzIHN7c3RhdGljIGNyZWF0ZU9iaklkKCl7cmV0dXJuYHAke259XyR7KytwLm9ian1gfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXtyZXR1cm5gcCR7ci50b1N0cmluZygpfWB9fX0jcG4oZSx0PXRoaXMucGFnZUluZGV4KXtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSl9Y3JlYXRlQW5ub3RhdGlvbkV2YWx1YXRvcihlKXtyZXR1cm4gdGhpcy4jcG4oZSl9I2RuKGUsdD0hMSl7Y29uc3Qgbj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnRoaXMucGFnZURpY3Qsa2V5OmUsZ2V0QXJyYXk6dCxzdG9wV2hlbkZvdW5kOiExfSk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/MSE9PW4ubGVuZ3RoJiZuWzBdaW5zdGFuY2VvZiBEaWN0P0RpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpufSk6blswXTpufWdldCBjb250ZW50KCl7cmV0dXJuIHRoaXMucGFnZURpY3QuZ2V0QXJyYXkoIkNvbnRlbnRzIil9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9dGhpcy4jZG4oIlJlc291cmNlcyIpO3JldHVybiBzaGFkb3codGhpcywicmVzb3VyY2VzIixlIGluc3RhbmNlb2YgRGljdD9lOkRpY3QuZW1wdHkpfWdldEJvdW5kaW5nQm94KGUpe2lmKHRoaXMueGZhRGF0YSlyZXR1cm4gdGhpcy54ZmFEYXRhLmJib3g7Y29uc3QgdD1sb29rdXBOb3JtYWxSZWN0KHRoaXMuI2RuKGUsITApLG51bGwpO2lmKHQpe2lmKHRbMl0tdFswXT4wJiZ0WzNdLXRbMV0+MClyZXR1cm4gdDt3YXJuKGBFbXB0eSwgb3IgaW52YWxpZCwgLyR7ZX0gZW50cnkuYCl9cmV0dXJuIG51bGx9Z2V0IG1lZGlhQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJtZWRpYUJveCIsdGhpcy5nZXRCb3VuZGluZ0JveCgiTWVkaWFCb3giKXx8T2YpfWdldCBjcm9wQm94KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjcm9wQm94Iix0aGlzLmdldEJvdW5kaW5nQm94KCJDcm9wQm94Iil8fHRoaXMubWVkaWFCb3gpfWdldCB1c2VyVW5pdCgpe2NvbnN0IGU9dGhpcy5wYWdlRGljdC5nZXQoIlVzZXJVbml0Iik7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VyVW5pdCIsIm51bWJlciI9PXR5cGVvZiBlJiZlPjA/ZToxKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhaXNBcnJheUVxdWFsKGUsdCkpe2NvbnN0IG49VXRpbC5pbnRlcnNlY3QoZSx0KTtpZihuJiZuWzJdLW5bMF0+MCYmblszXS1uWzFdPjApcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3IixuKTt3YXJuKCJFbXB0eSAvQ3JvcEJveCBhbmQgL01lZGlhQm94IGludGVyc2VjdGlvbi4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLiNkbigiUm90YXRlIil8fDA7ZSU5MCE9MD9lPTA6ZT49MzYwP2UlPTM2MDplPDAmJihlPShlJTM2MCszNjApJTM2MCk7cmV0dXJuIHNoYWRvdyh0aGlzLCJyb3RhdGUiLGUpfSNnbihlLHQpe2lmKCF0aGlzLmV2YWx1YXRvck9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0Q29udGVudFN0cmVhbSAtIGlnbm9yaW5nIHN1Yi1zdHJlYW0gKCR7dH0pOiAiJHtlfSIuYCl9YXN5bmMgZ2V0Q29udGVudFN0cmVhbSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50Iik7aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFlLmlzSW1hZ2VTdHJlYW0pe2lmKGUuaXNBc3luYyl7Y29uc3QgdD1hd2FpdCBlLmFzeW5jR2V0Qnl0ZXMoKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQsMCx0Lmxlbmd0aCxlLmRpY3QpfXJldHVybiBlfWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9W107Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXtjb25zdCBhPWVbbl07YSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEuaXNBc3luYyYmdC5wdXNoKGEuYXN5bmNHZXRCeXRlcygpLnRoZW4odD0+e3QmJihlW25dPW5ldyBTdHJlYW0odCwwLHQubGVuZ3RoLGEuZGljdCkpfSkpfXQubGVuZ3RoPjAmJmF3YWl0IFByb21pc2UuYWxsKHQpO3JldHVybiBuZXcgU3RyZWFtc1NlcXVlbmNlU3RyZWFtKGUsdGhpcy4jZ24uYmluZCh0aGlzKSl9cmV0dXJuIG5ldyBOdWxsU3RyZWFtfWdldCB4ZmFEYXRhKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhIix0aGlzLnhmYUZhY3Rvcnk/e2Jib3g6dGhpcy54ZmFGYWN0b3J5LmdldEJvdW5kaW5nQm94KHRoaXMucGFnZUluZGV4KX06bnVsbCl9YXN5bmMjYm4oZSx0LG4pe2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgZSlpZihyLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKHIuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7ci5pZH1gKTtjb250aW51ZX1pZihyLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYoci5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhyLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWlmKHIucG9wdXA/LmRlbGV0ZWQpe2NvbnN0IGU9UmVmLmZyb21TdHJpbmcoci5wb3B1cFJlZik7ZSYmdC5wdXQoZSxlKX1uPy5wdXQoZSk7ci5yZWY9ZTthLnB1c2godGhpcy54cmVmLmZldGNoQXN5bmMoZSkudGhlbihlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihyLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0sKCk9Pnt3YXJuKGBDYW5ub3QgZmV0Y2ggXGBvbGRBbm5vdGF0aW9uXGAgZm9yOiAke2V9LmApfSkpO2RlbGV0ZSByLmlkfWF3YWl0IFByb21pc2UuYWxsKGEpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsbixhLHIpe2lmKHRoaXMueGZhRmFjdG9yeSl0aHJvdyBuZXcgRXJyb3IoIlhGQTogQ2Fubm90IHNhdmUgbmV3IGFubm90YXRpb25zLiIpO2NvbnN0IHM9dGhpcy4jcG4oZSksaT1uZXcgUmVmU2V0Q2FjaGUsbz1uZXcgUmVmU2V0O2F3YWl0IHRoaXMuI2JuKG4saSxvKTtjb25zdCBsPXRoaXMucGFnZURpY3QsZj10aGlzLmFubm90YXRpb25zLmZpbHRlcihlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJmkuaGFzKGUpKSksYz1hd2FpdCBBbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMocyx0aGlzLnhyZWYsdCxuLGEscik7Zm9yKGNvbnN0e3JlZjplfW9mIGMuYW5ub3RhdGlvbnMpZSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGUpJiZmLnB1c2goZSk7Y29uc3QgaD1sLmNsb25lKCk7aC5zZXQoIkFubm90cyIsZik7ci5wdXQodGhpcy5yZWYse2RhdGE6aH0pO2Zvcihjb25zdCBlIG9mIGkpci5wdXQoZSx7ZGF0YTpudWxsfSl9YXN5bmMgc2F2ZShlLHQsbixhKXtjb25zdCByPXRoaXMuI3BuKGUpLHM9YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsaT1bXTtmb3IoY29uc3QgZSBvZiBzKWkucHVzaChlLnNhdmUocix0LG4sYSkuY2F0Y2goZnVuY3Rpb24oZSl7d2Fybihgc2F2ZSAtIGlnbm9yaW5nIGFubm90YXRpb24gZGF0YSBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpO3JldHVybiBQcm9taXNlLmFsbChpKX1hc3luYyBsb2FkUmVzb3VyY2VzKGUpe2F3YWl0KHRoaXMuI21uPz89dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJyZXNvdXJjZXMiKSk7YXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpfWFzeW5jI3duKGUsdCl7Y29uc3Qgbj1lPy5nZXQoIlJlc291cmNlcyIpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QmJm4uc2l6ZSkpcmV0dXJuIHRoaXMucmVzb3VyY2VzO2F3YWl0IE9iamVjdExvYWRlci5sb2FkKG4sdCx0aGlzLnhyZWYpO3JldHVybiBEaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W24sdGhpcy5yZXNvdXJjZXNdLG1lcmdlU3ViRGljdHM6ITB9KX1hc3luYyBnZXRPcGVyYXRvckxpc3Qoe2hhbmRsZXI6ZSxzaW5rOnQsdGFzazpuLGludGVudDphLGNhY2hlS2V5OnIscGFnZUluZGV4OnM9dGhpcy5wYWdlSW5kZXgsYW5ub3RhdGlvblN0b3JhZ2U6aT1udWxsLG1vZGlmaWVkSWRzOm89bnVsbH0pe2NvbnN0IGg9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksZD10aGlzLmxvYWRSZXNvdXJjZXMoeW4pLGI9dGhpcy4jcG4oZSxzKSx3PXRoaXMueGZhRmFjdG9yeT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKGkpLGo9dz8uZ2V0KHRoaXMucGFnZUluZGV4KTtsZXQgaz1Qcm9taXNlLnJlc29sdmUobnVsbCkseT1udWxsO2lmKGope2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtsZXQgdDtjb25zdCBhPW5ldyBTZXQ7Zm9yKGNvbnN0e2JpdG1hcElkOmUsYml0bWFwOnR9b2YgaikhZXx8dHx8YS5oYXMoZSl8fGEuYWRkKGUpO2NvbnN0e2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnJ9PXRoaXMuZXZhbHVhdG9yT3B0aW9ucztpZihhLnNpemU+MCl7Y29uc3QgZT1qLnNsaWNlKCk7Zm9yKGNvbnN0W3Qsbl1vZiBpKXQuc3RhcnRzV2l0aChnKSYmbi5iaXRtYXAmJmEuaGFzKG4uYml0bWFwSWQpJiZlLnB1c2gobik7dD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhlLHRoaXMueHJlZixyKX1lbHNlIHQ9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoaix0aGlzLnhyZWYscik7eT1uZXcgUmVmU2V0O2s9UHJvbWlzZS5hbGwoW2UsdGhpcy4jYm4oaix5LG51bGwpXSkudGhlbigoW2VdKT0+ZT9Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKGUsYixuLGosdCk6bnVsbCl9Y29uc3QgcT1Qcm9taXNlLmFsbChbaCxkXSkudGhlbihhc3luYyhbaV0pPT57Y29uc3Qgbz1hd2FpdCB0aGlzLiN3bihpLmRpY3QseW4pLGw9bmV3IE9wZXJhdG9yTGlzdChhLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5OmIuaGFzQmxlbmRNb2RlcyhvLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnMsY2FjaGVLZXk6cn0pO2F3YWl0IGIuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06aSx0YXNrOm4scmVzb3VyY2VzOm8sb3BlcmF0b3JMaXN0Omx9KTtyZXR1cm4gbH0pO2xldFt2LFMseF09YXdhaXQgUHJvbWlzZS5hbGwoW3EsdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMsa10pO2lmKHgpe1M9Uy5maWx0ZXIoZT0+IShlLnJlZiYmeS5oYXMoZS5yZWYpKSk7Zm9yKGxldCBlPTAsdD14Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCBuPXhbZV07aWYobi5yZWZUb1JlcGxhY2Upe2NvbnN0IGE9Uy5maW5kSW5kZXgoZT0+ZS5yZWYmJmlzUmVmc0VxdWFsKGUucmVmLG4ucmVmVG9SZXBsYWNlKSk7aWYoYT49MCl7Uy5zcGxpY2UoYSwxLG4pO3guc3BsaWNlKGUtLSwxKTt0LS19fX1TPVMuY29uY2F0KHgpfWlmKDA9PT1TLmxlbmd0aHx8YSZtKXt2LmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOnYudG90YWxMZW5ndGh9fWNvbnN0IEM9ISEoYSZ1KSxUPSEhKGEmcCksTz0hIShhJmwpLFI9ISEoYSZmKSxEPSEhKGEmYyksSD1bXTtmb3IoY29uc3QgZSBvZiBTKShPfHxSJiZlLm11c3RCZVZpZXdlZChpLEMpJiZlLm11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKFQsbyl8fEQmJmUubXVzdEJlUHJpbnRlZChpKSkmJkgucHVzaChlLmdldE9wZXJhdG9yTGlzdChiLG4sYSxpKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke24ubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKTtjb25zdCBNPWF3YWl0IFByb21pc2UuYWxsKEgpO2xldCBOPSExLF89ITE7Zm9yKGNvbnN0e29wTGlzdDplLHNlcGFyYXRlRm9ybTp0LHNlcGFyYXRlQ2FudmFzOm59b2YgTSl7di5hZGRPcExpc3QoZSk7Tnx8PXQ7X3x8PW59di5mbHVzaCghMCx7Zm9ybTpOLGNhbnZhczpffSk7cmV0dXJue2xlbmd0aDp2LnRvdGFsTGVuZ3RofX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cixpbnRlcnNlY3RvcjpzPW51bGx9KXtjb25zdCBpPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLG89dGhpcy5sb2FkUmVzb3VyY2VzKHFuKSxsPXRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJsYW5nIiksW2YsLGNdPWF3YWl0IFByb21pc2UuYWxsKFtpLG8sbF0pLGg9YXdhaXQgdGhpcy4jd24oZi5kaWN0LHFuKTtyZXR1cm4gdGhpcy4jcG4oZSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpmLHRhc2s6dCxyZXNvdXJjZXM6aCxpbmNsdWRlTWFya2VkQ29udGVudDpuLGRpc2FibGVOb3JtYWxpemF0aW9uOmEsc2luazpyLHZpZXdCb3g6dGhpcy52aWV3LGxhbmc6YyxpbnRlcnNlY3RvcjpzfSl9YXN5bmMgZ2V0U3RydWN0VHJlZSgpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290Iik7aWYoIWUpcmV0dXJuIG51bGw7YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7dHJ5e2NvbnN0IHQ9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pO3JldHVybiBhd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHQsInNlcmlhbGl6YWJsZSIpfWNhdGNoKGUpe3dhcm4oYGdldFN0cnVjdFRyZWU6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH19X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyBTdHJ1Y3RUcmVlUGFnZShlLHRoaXMucGFnZURpY3QpO3QucGFyc2UodGhpcy5yZWYpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsbil7Y29uc3QgYT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09YS5sZW5ndGgpcmV0dXJuIGE7Y29uc3Qgcj1bXSxzPVtdO2xldCBpO2NvbnN0IG89ISEobiZsKSxoPSEhKG4mZiksdT0hIShuJmMpLG09W107Zm9yKGNvbnN0IG4gb2YgYSl7Y29uc3QgYT1vfHxoJiZuLnZpZXdhYmxlOyhhfHx1JiZuLnByaW50YWJsZSkmJnIucHVzaChuLmRhdGEpO2lmKG4uaGFzVGV4dENvbnRlbnQmJmEpe2k/Pz10aGlzLiNwbihlKTtzLnB1c2gobi5leHRyYWN0VGV4dENvbnRlbnQoaSx0LFstMS8wLC0xLzAsMS8wLDEvMF0pLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYGdldEFubm90YXRpb25zRGF0YSAtIGlnbm9yaW5nIHRleHRDb250ZW50IGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCl9KSl9ZWxzZSBuLm92ZXJsYXlzVGV4dENvbnRlbnQmJmEmJm0ucHVzaChuKX1pZihtLmxlbmd0aD4wKXtjb25zdCBuPW5ldyBJbnRlcnNlY3RvcihtKTtzLnB1c2godGhpcy5leHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITEsZGlzYWJsZU5vcm1hbGl6YXRpb246ITEsc2luazpudWxsLGludGVyc2VjdG9yOm59KS50aGVuKCgpPT57bi5zZXRUZXh0KCl9KSl9YXdhaXQgUHJvbWlzZS5hbGwocyk7cmV0dXJuIHJ9Z2V0IGFubm90YXRpb25zKCl7Y29uc3QgZT10aGlzLiNkbigiQW5ub3RzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxuXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IGE9bj8ub3JwaGFuRmllbGRzLHI9W107Zm9yKGNvbnN0IG4gb2YgZSlyLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixuLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsYSxudWxsLHRoaXMucmVmKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBfcGFyc2VkQW5ub3RhdGlvbnM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtjb25zdCBzPVtdO2xldCBpLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwocikpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8oaXx8PVtdKS5wdXNoKGUpOnMucHVzaChlKSk7byYmcy5wdXNoKC4uLm8pO2kmJnMucHVzaCguLi5pKTtyZXR1cm4gc30pKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LHVlKSl9YXN5bmMgY29sbGVjdEFubm90YXRpb25zQnlUeXBlKGUsdCxuLGEscil7Y29uc3R7cGFnZUluZGV4OnN9PXRoaXM7aWYoT2JqZWN0Lmhhc093bih0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiKSl7Y29uc3QgZT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztmb3IoY29uc3R7ZGF0YTp0fW9mIGUpaWYoIW58fG4uaGFzKHQuYW5ub3RhdGlvblR5cGUpKXt0LnBhZ2VJbmRleD1zO2EucHVzaChQcm9taXNlLnJlc29sdmUodCkpfXJldHVybn1jb25zdCBpPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKTtsZXQgbztmb3IoY29uc3QgbCBvZiBpKWEucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUodGhpcy54cmVmLGwscix0aGlzLl9sb2NhbElkRmFjdG9yeSwhMSxudWxsLG4sdGhpcy5yZWYpLnRoZW4oYXN5bmMgbj0+e2lmKCFuKXJldHVybiBudWxsO24uZGF0YS5wYWdlSW5kZXg9cztpZihuLmhhc1RleHRDb250ZW50JiZuLnZpZXdhYmxlKXtvPz89dGhpcy4jcG4oZSk7YXdhaXQgbi5leHRyYWN0VGV4dENvbnRlbnQobyx0LFstMS8wLC0xLzAsMS8wLDEvMF0pfXJldHVybiBuLmRhdGF9KS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBjb2xsZWN0QW5ub3RhdGlvbnNCeVR5cGU6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKX19Y29uc3QgUmY9bmV3IFVpbnQ4QXJyYXkoWzM3LDgwLDY4LDcwLDQ1XSksQmY9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxEZj1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDAsMTExLDk4LDEwNl0pO2Z1bmN0aW9uIGZpbmQoZSx0LG49MTAyNCxhPSExKXtjb25zdCByPXQubGVuZ3RoLHM9ZS5wZWVrQnl0ZXMobiksaT1zLmxlbmd0aC1yO2lmKGk8PTApcmV0dXJuITE7aWYoYSl7Y29uc3Qgbj1yLTE7bGV0IGE9cy5sZW5ndGgtMTtmb3IoO2E+PW47KXtsZXQgaT0wO2Zvcig7aTxyJiZzW2EtaV09PT10W24taV07KWkrKztpZihpPj1yKXtlLnBvcys9YS1uO3JldHVybiEwfWEtLX19ZWxzZXtsZXQgbj0wO2Zvcig7bjw9aTspe2xldCBhPTA7Zm9yKDthPHImJnNbbithXT09PXRbYV07KWErKztpZihhPj1yKXtlLnBvcys9bjtyZXR1cm4hMH1uKyt9fXJldHVybiExfWNsYXNzIFBERkRvY3VtZW50eyNqbj1uZXcgTWFwOyNrbj1udWxsOyN5bj1udWxsO2NvbnN0cnVjdG9yKGUsdCl7aWYodC5sZW5ndGg8PTApdGhyb3cgbmV3IEludmFsaWRQREZFeGNlcHRpb24oIlRoZSBQREYgZmlsZSBpcyBlbXB0eSwgaS5lLiBpdHMgc2l6ZSBpcyB6ZXJvIGJ5dGVzLiIpO3RoaXMucGRmTWFuYWdlcj1lO3RoaXMuc3RyZWFtPXQ7dGhpcy54cmVmPW5ldyBYUmVmKHQsZSk7Y29uc3Qgbj17Zm9udDowfTt0aGlzLl9nbG9iYWxJZEZhY3Rvcnk9Y2xhc3N7c3RhdGljIGdldERvY0lkKCl7cmV0dXJuYGdfJHtlLmRvY0lkfWB9c3RhdGljIGNyZWF0ZUZvbnRJZCgpe3JldHVybiJmIisgKytuLmZvbnR9c3RhdGljIGNyZWF0ZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgY3JlYXRlT2JqSWRgIGNhbGxlZC4iKX1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0UGFnZU9iaklkYCBjYWxsZWQuIil9fX1wYXJzZShlKXt0aGlzLnhyZWYucGFyc2UoZSk7dGhpcy5jYXRhbG9nPW5ldyBDYXRhbG9nKHRoaXMucGRmTWFuYWdlcix0aGlzLnhyZWYpfWdldCBsaW5lYXJpemF0aW9uKCl7bGV0IGU9bnVsbDt0cnl7ZT1MaW5lYXJpemF0aW9uLmNyZWF0ZSh0aGlzLnN0cmVhbSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhlKX1yZXR1cm4gc2hhZG93KHRoaXMsImxpbmVhcml6YXRpb24iLGUpfWdldCBzdGFydFhSZWYoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PTA7aWYodGhpcy5saW5lYXJpemF0aW9uKXtlLnJlc2V0KCk7aWYoZmluZChlLERmKSl7ZS5za2lwKDYpO2xldCBuPWUucGVla0J5dGUoKTtmb3IoO2lzV2hpdGVTcGFjZShuKTspe2UucG9zKys7bj1lLnBlZWtCeXRlKCl9dD1lLnBvcy1lLnN0YXJ0fX1lbHNle2NvbnN0IG49MTAyNCxhPUJmLmxlbmd0aDtsZXQgcj0hMSxzPWUuZW5kO2Zvcig7IXImJnM+MDspe3MtPW4tYTtzPDAmJihzPTApO2UucG9zPXM7cj1maW5kKGUsQmYsbiwhMCl9aWYocil7ZS5za2lwKDkpO2xldCBuO2Rve249ZS5nZXRCeXRlKCl9d2hpbGUoaXNXaGl0ZVNwYWNlKG4pKTtsZXQgYT0iIjtmb3IoO24+PTMyJiZuPD01Nzspe2ErPVN0cmluZy5mcm9tQ2hhckNvZGUobik7bj1lLmdldEJ5dGUoKX10PXBhcnNlSW50KGEsMTApO2lzTmFOKHQpJiYodD0wKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJzdGFydFhSZWYiLHQpfWNoZWNrSGVhZGVyKCl7Y29uc3QgZT10aGlzLnN0cmVhbTtlLnJlc2V0KCk7aWYoIWZpbmQoZSxSZikpcmV0dXJuO2UubW92ZVN0YXJ0KCk7ZS5za2lwKFJmLmxlbmd0aCk7bGV0IHQsbj0iIjtmb3IoOyh0PWUuZ2V0Qnl0ZSgpKT4zMiYmbi5sZW5ndGg8Nzspbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTt3bi50ZXN0KG4pP3RoaXMuI3luPW46d2FybihgSW52YWxpZCBQREYgaGVhZGVyIHZlcnNpb246ICR7bn1gKX1wYXJzZVN0YXJ0WFJlZigpe3RoaXMueHJlZi5zZXRTdGFydFhSZWYodGhpcy5zdGFydFhSZWYpfWdldCBudW1QYWdlcygpe2xldCBlPTA7ZT10aGlzLmNhdGFsb2cuaGFzQWN0dWFsTnVtUGFnZXM/dGhpcy5jYXRhbG9nLm51bVBhZ2VzOnRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3RvcnkuZ2V0TnVtUGFnZXMoKTp0aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnRoaXMuY2F0YWxvZy5udW1QYWdlcztyZXR1cm4gc2hhZG93KHRoaXMsIm51bVBhZ2VzIixlKX0jcW4oZSx0PTApe3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeShlPT57aWYoISgoZT10aGlzLnhyZWYuZmV0Y2hJZlJlZihlKSlpbnN0YW5jZW9mIERpY3QpKXJldHVybiExO2lmKGUuaGFzKCJLaWRzIikpe2lmKCsrdD4xMCl7d2FybigiI2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXM6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIHJlYWNoZWQiKTtyZXR1cm4hMX1yZXR1cm4gdGhpcy4jcW4oZS5nZXQoIktpZHMiKSx0KX1jb25zdCBuPWlzTmFtZShnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OiJGVCJ9KSwiU2lnIiksYT1lLmdldCgiUmVjdCIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeShlPT4wPT09ZSk7cmV0dXJuIG4mJnJ9KX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdHthY3JvRm9ybTplfT10aGlzLmNhdGFsb2c7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmdldCgiWEZBIiksbj1uZXcgTWFwKFsieGRwOnhkcCIsInRlbXBsYXRlIiwiZGF0YXNldHMiLCJjb25maWciLCJjb25uZWN0aW9uU2V0IiwibG9jYWxlU2V0Iiwic3R5bGVzaGVldCIsIi94ZHA6eGRwIl0ubWFwKGU9PltlLG51bGxdKSk7aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe24uc2V0KCJ4ZHA6eGRwIix0KTtyZXR1cm4gbn1pZighQXJyYXkuaXNBcnJheSh0KXx8MD09PXQubGVuZ3RoKXJldHVybiBudWxsO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrPTIpe2xldCByO3I9MD09PWU/InhkcDp4ZHAiOmU9PT1hLTI/Ii94ZHA6eGRwIjp0W2VdO2lmKCFuLmhhcyhyKSljb250aW51ZTtjb25zdCBzPXRoaXMueHJlZi5mZXRjaElmUmVmKHRbZSsxXSk7cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiFzLmlzRW1wdHkmJm4uc2V0KHIscyl9cmV0dXJuIG59Z2V0IHhmYURhdGFzZXRzKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpO2Zvcihjb25zdCB0IG9mWyJkYXRhc2V0cyIsInhkcDp4ZHAiXSl7Y29uc3Qgbj1lLmdldCh0KTtpZihuKXRyeXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhuLmdldFN0cmluZygpKTtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixuZXcgRGF0YXNldFJlYWRlcih7W3RdOmV9KSl9Y2F0Y2h7d2FybigiWEZBIC0gSW52YWxpZCB1dGYtOCBzdHJpbmcuIik7YnJlYWt9fXJldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG51bGwpfWdldCB4ZmFEYXRhKCl7Y29uc3QgZT10aGlzLl94ZmFTdHJlYW1zO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbbixhXW9mIGUpaWYoYSl0cnl7dC5zZXQobixzdHJpbmdUb1VURjhTdHJpbmcoYS5nZXRTdHJpbmcoKSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO3JldHVybiBudWxsfXJldHVybiB0fWdldCB4ZmFGYWN0b3J5KCl7bGV0IGU7dGhpcy5wZGZNYW5hZ2VyLmVuYWJsZVhmYSYmdGhpcy5jYXRhbG9nLm5lZWRzUmVuZGVyaW5nJiZ0aGlzLmZvcm1JbmZvLmhhc1hmYSYmIXRoaXMuZm9ybUluZm8uaGFzQWNyb0Zvcm0mJihlPXRoaXMueGZhRGF0YSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFGYWN0b3J5IixlP25ldyBYRkFGYWN0b3J5KGUpOm51bGwpfWdldCBpc1B1cmVYZmEoKXtyZXR1cm4hIXRoaXMueGZhRmFjdG9yeSYmdGhpcy54ZmFGYWN0b3J5LmlzVmFsaWQoKX1nZXQgaHRtbEZvclhmYSgpe3JldHVybiB0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldFBhZ2VzKCk6bnVsbH1hc3luYyN2bigpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2UmJnRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoZSl9YXN5bmMjU24oZSx0KXtjb25zdCBuPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpO2lmKCFuKXJldHVybjtjb25zdCBhPWF3YWl0IG4uZ2V0QXN5bmMoIkRSIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2F3YWl0IE9iamVjdExvYWRlci5sb2FkKGEsWyJGb250Il0sdGhpcy54cmVmKTtjb25zdCByPWEuZ2V0KCJGb250Iik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IHM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLHt1c2VTeXN0ZW1Gb250czohMX0pLHtidWlsdEluQ01hcENhY2hlOmksZm9udENhY2hlOm8sc3RhbmRhcmRGb250RGF0YUNhY2hlOmx9PXRoaXMuY2F0YWxvZyxmPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4Oi0xLGlkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOm8sYnVpbHRJbkNNYXBDYWNoZTppLHN0YW5kYXJkRm9udERhdGFDYWNoZTpsLG9wdGlvbnM6c30pLGM9bmV3IE9wZXJhdG9yTGlzdCxoPVtdLHU9e2dldCBmb250KCl7cmV0dXJuIGguYXQoLTEpfSxzZXQgZm9udChlKXtoLnB1c2goZSl9LGNsb25lKCl7cmV0dXJuIHRoaXN9fSxwYXJzZUZvbnQ9KGUsbixyKT0+Zi5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KGUpLDFdLG51bGwsYyx0LHUsbixyKS5jYXRjaChlPT57d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSxtPVtdO2Zvcihjb25zdFtlLHRdb2Ygcil7Y29uc3Qgbj10LmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgYT1uLmdldCgiRm9udEZhbWlseSIpO2E9YS5yZXBsYWNlQWxsKC8gKyhcZCkvZywiJDEiKTtjb25zdCByPXtmb250RmFtaWx5OmEsZm9udFdlaWdodDpuLmdldCgiRm9udFdlaWdodCIpLGl0YWxpY0FuZ2xlOi1uLmdldCgiSXRhbGljQW5nbGUiKX07dmFsaWRhdGVDU1NGb250KHIpJiZtLnB1c2gocGFyc2VGb250KGUsbnVsbCxyKSl9YXdhaXQgUHJvbWlzZS5hbGwobSk7Y29uc3QgcD10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoaCk7aWYoIXApcmV0dXJuO3MuaWdub3JlRXJyb3JzPSEwO20ubGVuZ3RoPTA7aC5sZW5ndGg9MDtjb25zdCBkPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgcClnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fGQuYWRkKGUpO2Quc2l6ZSYmcC5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIHApaWYoIWQuaGFzKGUpKWZvcihjb25zdCB0IG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCBuPWAke2V9LSR7dC5uYW1lfWA7bS5wdXNoKHBhcnNlRm9udChuLGdldFhmYUZvbnREaWN0KG4pLHtmb250RmFtaWx5OmUsZm9udFdlaWdodDp0LmZvbnRXZWlnaHQsaXRhbGljQW5nbGU6dC5pdGFsaWNBbmdsZX0pKX1hd2FpdCBQcm9taXNlLmFsbChtKTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHMoaCxkKX1sb2FkWGZhUmVzb3VyY2VzKGUsdCl7cmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLiNTbihlLHQpLmNhdGNoKCgpPT57fSksdGhpcy4jdm4oKV0pfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLiN5bn1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHthY3JvRm9ybTp0fT10aGlzLmNhdGFsb2c7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IG49dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksaT1zJiZ0aGlzLiNxbihuKTtlLmhhc0Fjcm9Gb3JtPWEmJiFpO2UuaGFzU2lnbmF0dXJlcz1zfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSl9Z2V0IGRvY3VtZW50SW5mbygpe2NvbnN0e2NhdGFsb2c6ZSxmb3JtSW5mbzp0LHhyZWY6bn09dGhpcyxhPXtQREZGb3JtYXRWZXJzaW9uOnRoaXMudmVyc2lvbixMYW5ndWFnZTplLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6bi5lbmNyeXB0Py5maWx0ZXJOYW1lPz9udWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0Lmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0Lmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhZS5jb2xsZWN0aW9uLElzU2lnbmF0dXJlc1ByZXNlbnQ6dC5oYXNTaWduYXR1cmVzfTtsZXQgcjt0cnl7cj1uLnRyYWlsZXIuZ2V0KCJJbmZvIil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsYSk7Zm9yKGNvbnN0W2UsdF1vZiByKXtzd2l0Y2goZSl7Y2FzZSJUaXRsZSI6Y2FzZSJBdXRob3IiOmNhc2UiU3ViamVjdCI6Y2FzZSJLZXl3b3JkcyI6Y2FzZSJDcmVhdG9yIjpjYXNlIlByb2R1Y2VyIjpjYXNlIkNyZWF0aW9uRGF0ZSI6Y2FzZSJNb2REYXRlIjppZigic3RyaW5nIj09dHlwZW9mIHQpe2FbZV09c3RyaW5nVG9QREZTdHJpbmcodCk7Y29udGludWV9YnJlYWs7Y2FzZSJUcmFwcGVkIjppZih0IGluc3RhbmNlb2YgTmFtZSl7YVtlXT10O2NvbnRpbnVlfWJyZWFrO2RlZmF1bHQ6bGV0IG47c3dpdGNoKHR5cGVvZiB0KXtjYXNlInN0cmluZyI6bj1zdHJpbmdUb1BERlN0cmluZyh0KTticmVhaztjYXNlIm51bWJlciI6Y2FzZSJib29sZWFuIjpuPXQ7YnJlYWs7ZGVmYXVsdDp0IGluc3RhbmNlb2YgTmFtZSYmKG49dCl9aWYodm9pZCAwPT09bil7d2FybihgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHtlfSIsIGluIEluZm86ICR7dH0uYCk7Y29udGludWV9YS5DdXN0b20/Pz1PYmplY3QuY3JlYXRlKG51bGwpO2EuQ3VzdG9tW2VdPW47Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2V9IiwgaW4gSW5mbzogJHt0fS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsYSl9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IG4sYTtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7bj1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKGE9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBuPWNhbGN1bGF0ZU1ENSh0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbbi50b0hleCgpLGE/LnRvSGV4KCk/P251bGxdKX1hc3luYyNBbihlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjpuLHhyZWY6YX09dGhpcyxyPVJlZi5nZXQobi5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCBhLmZldGNoQXN5bmMocik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBuPWUuZ2V0UmF3KCJUeXBlIik7biBpbnN0YW5jZW9mIFJlZiYmKG49YXdhaXQgYS5mZXRjaEFzeW5jKG4pKTtpZihpc05hbWUobiwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMocil8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChyLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKHIpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChyLDApO3JldHVybltlLHJdfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChuKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke24ubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy4jam4uZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzpuLGxpbmVhcml6YXRpb246YSx4ZmFGYWN0b3J5OnJ9PXRoaXM7bGV0IHM7cz1yP1Byb21pc2UucmVzb2x2ZShbRGljdC5lbXB0eSxudWxsXSk6YT8ucGFnZUZpcnN0PT09ZT90aGlzLiNBbihlKTpuLmdldFBhZ2VEaWN0KGUpO3M9cy50aGVuKChbdCxhXSk9Pm5ldyBQYWdlKHtwZGZNYW5hZ2VyOnRoaXMucGRmTWFuYWdlcix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDp0LHJlZjphLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOm4uZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6bi5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTpuLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6bi5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTpuLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOm4uc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6bi5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6cn0pKTt0aGlzLiNqbi5zZXQoZSxzKTtyZXR1cm4gc31hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuI2puLmRlbGV0ZSgwKTthd2FpdCB0aGlzLmNsZWFudXAoKTt0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufX19YXN5bmMgY2hlY2tMYXN0UGFnZShlPSExKXtjb25zdHtjYXRhbG9nOnQscGRmTWFuYWdlcjpufT10aGlzO3Quc2V0QWN0dWFsTnVtUGFnZXMoKTtsZXQgYTt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW24uZW5zdXJlRG9jKCJ4ZmFGYWN0b3J5Iiksbi5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxuLmVuc3VyZUNhdGFsb2coIm51bVBhZ2VzIildKTtpZih0aGlzLnhmYUZhY3RvcnkpcmV0dXJuO2E9dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0Lm51bVBhZ2VzO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihhPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2UoYS0xKX1jYXRjaChyKXt0aGlzLiNqbi5kZWxldGUoYS0xKTthd2FpdCB0aGlzLmNsZWFudXAoKTtpZihyIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3dhcm4oYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHthfS5gKTtsZXQgczt0cnl7cz1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChuKXtpZihuIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFthLHJdXW9mIHMpe2xldCBzO2lmKGEgaW5zdGFuY2VvZiBFcnJvcil7cz1Qcm9taXNlLnJlamVjdChhKTtzLmNhdGNoKCgpPT57fSl9ZWxzZSBzPVByb21pc2UucmVzb2x2ZShuZXcgUGFnZSh7cGRmTWFuYWdlcjpuLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OmEscmVmOnIsZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dC5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0LmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnQuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuI2puLnNldChlLHMpfXQuc2V0QWN0dWFsTnVtUGFnZXMocy5zaXplKX19YXN5bmMgZm9udEZhbGxiYWNrKGUsdCl7Y29uc3R7Y2F0YWxvZzpuLHBkZk1hbmFnZXI6YX09dGhpcztmb3IoY29uc3QgciBvZiBhd2FpdCBQcm9taXNlLmFsbChuLmZvbnRDYWNoZSkpaWYoci5sb2FkZWROYW1lPT09ZSl7ci5mYWxsYmFjayh0LGEuZXZhbHVhdG9yT3B0aW9ucyk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLmNhdGFsb2c/dGhpcy5jYXRhbG9nLmNsZWFudXAoZSk6Y2xlYXJHbG9iYWxDYWNoZXMoKX1hc3luYyN4bihlLHQsbixhLHIscyxpKXtjb25zdHt4cmVmOm99PXRoaXM7aWYoIShuIGluc3RhbmNlb2YgUmVmKXx8cy5oYXMobikpcmV0dXJuO3MucHV0KG4pO2NvbnN0IGw9YXdhaXQgby5mZXRjaEFzeW5jKG4pO2lmKCEobCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtsZXQgZj1hd2FpdCBsLmdldEFzeW5jKCJTdWJ0eXBlIik7Zj1mIGluc3RhbmNlb2YgTmFtZT9mLm5hbWU6bnVsbDtpZigiTGluayI9PT1mKXJldHVybjtpZihsLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGwuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCBuPWw7Y29uc3QgYT1uZXcgUmVmU2V0O2Zvcig7Oyl7bj1uLmdldFJhdygiUGFyZW50Iil8fHQ7aWYobiBpbnN0YW5jZW9mIFJlZil7aWYocy5oYXMobil8fGEuaGFzKG4pKWJyZWFrO2EucHV0KG4pO249YXdhaXQgby5mZXRjaEFzeW5jKG4pfWlmKCEobiBpbnN0YW5jZW9mIERpY3QpKWJyZWFrO2lmKG4uaGFzKCJUIikpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoYXdhaXQgbi5nZXRBc3luYygiVCIpKTtlPSIiPT09ZT90OmAke2V9LiR7dH1gO2JyZWFrfX19dCYmIWwuaGFzKCJQYXJlbnQiKSYmaXNOYW1lKGwuZ2V0KCJTdWJ0eXBlIiksIldpZGdldCIpJiZpLnB1dChuLHQpO2EuZ2V0T3JJbnNlcnRDb21wdXRlZChlLG1ha2VBcnIpLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKG8sbixyLG51bGwsITAsaSxudWxsLG51bGwpLnRoZW4oZT0+ZT8uZ2V0RmllbGRPYmplY3QoKSkuY2F0Y2goZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtpZighbC5oYXMoIktpZHMiKSlyZXR1cm47Y29uc3QgYz1hd2FpdCBsLmdldEFzeW5jKCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShjKSlmb3IoY29uc3QgdCBvZiBjKWF3YWl0IHRoaXMuI3huKGUsbix0LGEscixzLGkpfWdldCBmaWVsZE9iamVjdHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZm9ybUluZm8iKS50aGVuKGFzeW5jIGU9PntpZighZS5oYXNGaWVsZHMpcmV0dXJuIG51bGw7Y29uc3QgdD1hd2FpdCB0aGlzLmFubm90YXRpb25HbG9iYWxzO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Fjcm9Gb3JtOm59PXQsYT1uZXcgUmVmU2V0LHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPW5ldyBNYXAsaT1uZXcgUmVmU2V0Q2FjaGU7Zm9yKGNvbnN0IGUgb2Ygbi5nZXQoIkZpZWxkcyIpKWF3YWl0IHRoaXMuI3huKCIiLG51bGwsZSxzLHQsYSxpKTtjb25zdCBvPVtdO2Zvcihjb25zdFtlLHRdb2YgcylvLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbih0PT57KHQ9dC5maWx0ZXIoZT0+ISFlKSkubGVuZ3RoPjAmJihyW2VdPXQpfSkpO2F3YWl0IFByb21pc2UuYWxsKG8pO3JldHVybnthbGxGaWVsZHM6T2JqZWN0LmtleXMocikubGVuZ3RoP3I6bnVsbCxvcnBoYW5GaWVsZHM6aX19KSl9YXN5bmMjQ24oZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IGEgb2YgZSl7aWYoYSBpbnN0YW5jZW9mIFJlZil7aWYobi5oYXMoYSkpY29udGludWU7bi5wdXQoYSl9Y29uc3QgZT1hd2FpdCB0aGlzLnhyZWYuZmV0Y2hJZlJlZkFzeW5jKGEpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUoYXdhaXQgZS5nZXRBc3luYygiRlQiKSwiU2lnIikpe2NvbnN0IG49YXdhaXQgZS5nZXRBc3luYygiViIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCByPWF3YWl0IHRoaXMuI0luKGUsbixhKTtyJiZ0LnB1c2gocil9fWUuaGFzKCJLaWRzIikmJmF3YWl0IHRoaXMuI0NuKGF3YWl0IGUuZ2V0QXN5bmMoIktpZHMiKSx0LG4pfX19YXN5bmMjRm4oZSx0KXt0cnl7cmV0dXJuIHRoaXMuc3RyZWFtLmdldEJ5dGVSYW5nZShlLHQpfWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyBuO2F3YWl0IHRoaXMucGRmTWFuYWdlci5yZXF1ZXN0UmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy4jRm4oZSx0KX19YXN5bmMjVG4oZSx0KXtpZih0PjApcmV0dXJuITE7Y29uc3Qgbj10aGlzLnN0cmVhbS5lbmQ7Zm9yKGxldCB0PWU7dDxuO3QrPTY1NTM2KXtjb25zdCBlPU1hdGgubWluKHQrNjU1MzYsbiksYT1hd2FpdCB0aGlzLiNGbih0LGUpO2Zvcihjb25zdCBlIG9mIGEpaWYoMCE9PWUmJjkhPT1lJiYxMCE9PWUmJjEyIT09ZSYmMTMhPT1lJiYzMiE9PWUpcmV0dXJuITF9cmV0dXJuITB9YXN5bmMjSW4oZSx0LG4pe2NvbnN0IGE9YXdhaXQgdC5nZXRBc3luYygiQnl0ZVJhbmdlIik7aWYoIUFycmF5LmlzQXJyYXkoYSl8fDQhPT1hLmxlbmd0aHx8YS5zb21lKGU9PiFOdW1iZXIuaXNJbnRlZ2VyKGUpfHxlPDApKXJldHVybiBudWxsO2NvbnN0W3IscyxpLG9dPWEsbD10aGlzLnN0cmVhbS5lbmR8fDA7aWYoMCE9PXJ8fHM8PTB8fHIrcz5pfHxpK28+bHx8MD09PWwpcmV0dXJuIG51bGw7Y29uc3QgZj1hd2FpdCB0LmdldEFzeW5jKCJDb250ZW50cyIpO2lmKCJzdHJpbmciIT10eXBlb2YgZnx8MD09PWYubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0W2MsaCx1LG0scCxkLGcsYl09YXdhaXQgUHJvbWlzZS5hbGwoW3QuZ2V0QXN5bmMoIkZpbHRlciIpLHQuZ2V0QXN5bmMoIlN1YkZpbHRlciIpLGUuZ2V0QXN5bmMoIlQiKSx0LmdldEFzeW5jKCJOYW1lIiksdC5nZXRBc3luYygiUmVhc29uIiksdC5nZXRBc3luYygiTG9jYXRpb24iKSx0LmdldEFzeW5jKCJDb250YWN0SW5mbyIpLHQuZ2V0QXN5bmMoIk0iKV0pLHc9YyBpbnN0YW5jZW9mIE5hbWU/Yy5uYW1lOm51bGwsaj1oIGluc3RhbmNlb2YgTmFtZT9oLm5hbWU6bnVsbDtsZXQgaz1udWxsOyJhZGJlLnBrY3M3LmRldGFjaGVkIj09PWo/az0wOiJhZGJlLnBrY3M3LnNoYTEiPT09aiYmKGs9MSk7cmV0dXJue2lkOmAke24gaW5zdGFuY2VvZiBSZWY/bi50b1N0cmluZygpOiJpbmxpbmUifToke3J9LSR7c30tJHtpfS0ke299YCxmaWVsZE5hbWU6InN0cmluZyI9PXR5cGVvZiB1P3N0cmluZ1RvUERGU3RyaW5nKHUpOiIiLHNpZ25lck5hbWU6InN0cmluZyI9PXR5cGVvZiBtP3N0cmluZ1RvUERGU3RyaW5nKG0pOm51bGwscmVhc29uOiJzdHJpbmciPT10eXBlb2YgcD9zdHJpbmdUb1BERlN0cmluZyhwKTpudWxsLGxvY2F0aW9uOiJzdHJpbmciPT10eXBlb2YgZD9zdHJpbmdUb1BERlN0cmluZyhkKTpudWxsLGNvbnRhY3RJbmZvOiJzdHJpbmciPT10eXBlb2YgZz9zdHJpbmdUb1BERlN0cmluZyhnKTpudWxsLHNpZ25pbmdUaW1lOiJzdHJpbmciPT10eXBlb2YgYj9iOm51bGwsZmlsdGVyOncsc3ViRmlsdGVyOmosc2lnbmF0dXJlVHlwZTprLGJ5dGVSYW5nZTphLHBrY3M3OnN0cmluZ1RvQnl0ZXMoZikscmV2aXNpb25JbmRleDowLHBhcmVudElkOm51bGx9fWdldCBzaWduYXR1cmVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJzaWduYXR1cmVzIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmb3JtSW5mbyIpLnRoZW4oYXN5bmMgZT0+e2lmKCFlLmhhc1NpZ25hdHVyZXN8fCFlLmhhc0ZpZWxkcylyZXR1cm4gbnVsbDtjb25zdCB0PWF3YWl0IHRoaXMuYW5ub3RhdGlvbkdsb2JhbHM7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3Qgbj10LmFjcm9Gb3JtLmdldCgiRmllbGRzIiksYT1bXTthd2FpdCB0aGlzLiNDbihuLGEsbmV3IFJlZlNldCk7YXdhaXQgUHJvbWlzZS5hbGwoYS5tYXAoYXN5bmMgZT0+e2NvbnN0IHQ9ZS5ieXRlUmFuZ2VbMl0rZS5ieXRlUmFuZ2VbM107ZS5tb2RpZmljYXRpb25zQWZ0ZXJTaWduYXR1cmU9dGhpcy54cmVmLmNvdW50VXBkYXRlc0FmdGVyKHQpO2UuY292ZXJzV2hvbGVEb2N1bWVudD1hd2FpdCB0aGlzLiNUbih0LGUubW9kaWZpY2F0aW9uc0FmdGVyU2lnbmF0dXJlKX0pKTthLnNvcnQoKGUsdCk9PnQuYnl0ZVJhbmdlWzJdK3QuYnl0ZVJhbmdlWzNdLShlLmJ5dGVSYW5nZVsyXStlLmJ5dGVSYW5nZVszXSkpO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hW2VdO3QucmV2aXNpb25JbmRleD1lO2ZvcihsZXQgbj1lLTE7bj49MDtuLS0pe2NvbnN0IGU9YVtuXTtpZihlLmJ5dGVSYW5nZVsyXStlLmJ5dGVSYW5nZVszXT50LmJ5dGVSYW5nZVsyXSt0LmJ5dGVSYW5nZVszXSl7dC5wYXJlbnRJZD1lLmlkO2JyZWFrfX19Y29uc3Qgcj1uZXcgTWFwLHM9YS5tYXAoZT0+e2NvbnN0e3BrY3M3OnQsLi4ubn09ZTtyLnNldChlLmlkLHtieXRlUmFuZ2U6ZS5ieXRlUmFuZ2UscGtjczc6dH0pO3JldHVybiBufSk7dGhpcy4ja249cjtyZXR1cm4gcy5sZW5ndGg/czpudWxsfSkpfWFzeW5jIGdldFNpZ25hdHVyZURhdGEoZSl7YXdhaXQgdGhpcy5zaWduYXR1cmVzO2NvbnN0IHQ9dGhpcy4ja24/LmdldChlKTtpZighdClyZXR1cm4gbnVsbDtjb25zdHtieXRlUmFuZ2U6bixwa2NzNzphfT10LFtyLHMsaSxvXT1uO3JldHVybntkYXRhOmF3YWl0IFByb21pc2UuYWxsKFt0aGlzLiNGbihyLHIrcyksdGhpcy4jRm4oaSxpK28pXSkscGtjczc6YX19Z2V0IGhhc0pTQWN0aW9ucygpe3JldHVybiBzaGFkb3codGhpcywiaGFzSlNBY3Rpb25zIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJfcGFyc2VIYXNKU0FjdGlvbnMiKSl9YXN5bmMgX3BhcnNlSGFzSlNBY3Rpb25zKCl7Y29uc3RbZSx0XT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImZpZWxkT2JqZWN0cyIpXSk7cmV0dXJuISFlfHwhIXQ/LmFsbEZpZWxkcyYmT2JqZWN0LnZhbHVlcyh0LmFsbEZpZWxkcykuc29tZShlPT5lLnNvbWUoZT0+bnVsbCE9PWUuYWN0aW9ucykpfWdldCBjYWxjdWxhdGlvbk9yZGVySWRzKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm0/LmdldCgiQ08iKTtpZighQXJyYXkuaXNBcnJheShlKXx8MD09PWUubGVuZ3RoKXJldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsbnVsbCk7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKW4gaW5zdGFuY2VvZiBSZWYmJnQucHVzaChuLnRvU3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsdC5sZW5ndGg/dDpudWxsKX1nZXQgYW5ub3RhdGlvbkdsb2JhbHMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25HbG9iYWxzIixBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGVHbG9iYWxzKHRoaXMucGRmTWFuYWdlcikpfWFzeW5jIHRvSlNPYmplY3QoZSx0PSEwKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZDogdG9KU09iamVjdCIpfX1jbGFzcyBCYXNlUGRmTWFuYWdlcntjb25zdHJ1Y3Rvcih7ZG9jQmFzZVVybDplLGRvY0lkOnQsZW5hYmxlWGZhOm4sZXZhbHVhdG9yT3B0aW9uczphLGhhbmRsZXI6cixwYXNzd29yZDpzfSl7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZSk7dGhpcy5fZG9jSWQ9dDt0aGlzLl9wYXNzd29yZD1zO3RoaXMuZW5hYmxlWGZhPW47YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCYmPUZlYXR1cmVUZXN0LmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkO2EuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQmJj1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDt0aGlzLmV2YWx1YXRvck9wdGlvbnM9T2JqZWN0LmZyZWV6ZShhKTtJbWFnZVJlc2l6ZXIuc2V0T3B0aW9ucyhhKTtKcGVnU3RyZWFtLnNldE9wdGlvbnMoYSk7T3BlcmF0b3JMaXN0LnNldE9wdGlvbnMoYSk7Y29uc3QgaT17Li4uYSxoYW5kbGVyOnJ9O0ljY0NvbG9yU3BhY2Uuc2V0T3B0aW9ucyhpKTtDbXlrSUNDQmFzZWRDUy5zZXRPcHRpb25zKGkpO1BERkZ1bmN0aW9uRmFjdG9yeS5zZXRPcHRpb25zKGkpO1BhdHRlcm4uc2V0T3B0aW9ucyhpKTtXYXNtSW1hZ2Uuc2V0T3B0aW9ucyhpKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9ZW5zdXJlRG9jKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQsZSx0KX1lbnN1cmVYUmVmKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQueHJlZixlLHQpfWVuc3VyZUNhdGFsb2coZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nLGUsdCl9YXN5bmMgaW5pdERvY3VtZW50KGUpe2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IHRoaXMuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCB0aGlzLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgdGhpcy5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSl9Z2V0UGFnZShlKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKGUpfWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmZvbnRGYWxsYmFjayhlLHQpfWNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuY2xlYW51cChlKX1hc3luYyBlbnN1cmUoZSx0LG4pe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGVuc3VyZWAgY2FsbGVkIil9cmVxdWVzdFJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdFJhbmdlYCBjYWxsZWQiKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RMb2FkZWRTdHJlYW1gIGNhbGxlZCIpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgc2VuZFByb2dyZXNzaXZlRGF0YWAgY2FsbGVkIil9dXBkYXRlUGFzc3dvcmQoZSl7dGhpcy5fcGFzc3dvcmQ9ZTt0aGlzLnBkZkRvY3VtZW50LnhyZWYuZW5jcnlwdD8uc2V0UGFzc3dvcmQoZSl9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LG4pe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsbik6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsbil7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hd2FpdCBhLmFwcGx5KGUsbik6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LG4pfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDE2ODkpO2NvbnN0IEhmPTEsTWY9MixOZj0xLFBmPTIsX2Y9MyxFZj00LHpmPTUsTGY9NixVZj03LFdmPTg7ZnVuY3Rpb24gb25Gbigpe31mdW5jdGlvbiB3cmFwUmVhc29uKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIEludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uKXJldHVybiBlO2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8dW5yZWFjaGFibGUoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBBYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBQYXNzd29yZEV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5jb2RlKTtjYXNlIlJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFJlc3BvbnNlRXhjZXB0aW9uKGUubWVzc2FnZSxlLnN0YXR1cyxlLm1pc3NpbmcpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKX1yZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX1jbGFzcyBNZXNzYWdlSGFuZGxlcnsjT249bmV3IEFib3J0Q29udHJvbGxlcjtjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5zb3VyY2VOYW1lPWU7dGhpcy50YXJnZXROYW1lPXQ7dGhpcy5jb21PYmo9bjt0aGlzLmNhbGxiYWNrSWQ9MTt0aGlzLnN0cmVhbUlkPTE7dGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCk7bi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLiNSbi5iaW5kKHRoaXMpLHtzaWduYWw6dGhpcy4jT24uc2lnbmFsfSl9I1JuKHtkYXRhOmV9KXtpZihlLnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKGUuc3RyZWFtKXt0aGlzLiNCbihlKTtyZXR1cm59aWYoZS5jYWxsYmFjayl7Y29uc3QgdD1lLmNhbGxiYWNrSWQsbj10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKCFuKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHt0fWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKGUuY2FsbGJhY2s9PT1IZiluLnJlc29sdmUoZS5kYXRhKTtlbHNle2lmKGUuY2FsbGJhY2shPT1NZil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgY2FsbGJhY2sgY2FzZSIpO24ucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKX1yZXR1cm59Y29uc3QgdD10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dO2lmKCF0KXRocm93IG5ldyBFcnJvcihgVW5rbm93biBhY3Rpb24gZnJvbSB3b3JrZXI6ICR7ZS5hY3Rpb259YCk7aWYoZS5jYWxsYmFja0lkKXtjb25zdCBuPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqO1Byb21pc2UudHJ5KHQsZS5kYXRhKS50aGVuKGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsY2FsbGJhY2s6SGYsY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTp0fSl9LGZ1bmN0aW9uKHQpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsY2FsbGJhY2s6TWYsY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQscmVhc29uOndyYXBSZWFzb24odCl9KX0pO3JldHVybn1lLnN0cmVhbUlkP3RoaXMuI0RuKGUpOnQoZS5kYXRhKX1vbihlLHQpe2NvbnN0IG49dGhpcy5hY3Rpb25IYW5kbGVyO2lmKG5bZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO25bZV09dH1zZW5kKGUsdCxuKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxuKX1zZW5kV2l0aFByb21pc2UoZSx0LG4pe2NvbnN0IGE9dGhpcy5jYWxsYmFja0lkKysscj1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW2FdPXI7dHJ5e3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxjYWxsYmFja0lkOmEsZGF0YTp0fSxuKX1jYXRjaChlKXtyLnJlamVjdChlKX1yZXR1cm4gci5wcm9taXNlfXNlbmRXaXRoU3RyZWFtKGUsdCxuLGEpe2NvbnN0IHI9dGhpcy5zdHJlYW1JZCsrLHM9dGhpcy5zb3VyY2VOYW1lLGk9dGhpcy50YXJnZXROYW1lLG89dGhpcy5jb21PYmo7cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6bj0+e2NvbnN0IGw9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXT17Y29udHJvbGxlcjpuLHN0YXJ0Q2FsbDpsLHB1bGxDYWxsOm51bGwsY2FuY2VsQ2FsbDpudWxsLGlzQ2xvc2VkOiExfTtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTppLGFjdGlvbjplLHN0cmVhbUlkOnIsZGF0YTp0LGRlc2lyZWRTaXplOm4uZGVzaXJlZFNpemV9LGEpO3JldHVybiBsLnByb21pc2V9LHB1bGw6ZT0+e2NvbnN0IHQ9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5wdWxsQ2FsbD10O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOmksc3RyZWFtOkxmLHN0cmVhbUlkOnIsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZX0pO3JldHVybiB0LnByb21pc2V9LGNhbmNlbDplPT57YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiY2FuY2VsIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2NvbnN0IHQ9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5jYW5jZWxDYWxsPXQ7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tyXS5pc0Nsb3NlZD0hMDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnMsdGFyZ2V0TmFtZTppLHN0cmVhbTpOZixzdHJlYW1JZDpyLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LG4pfSNEbihlKXtjb25zdCB0PWUuc3RyZWFtSWQsbj10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWUscj10aGlzLmNvbU9iaixzPXRoaXMsaT10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dLG89e2VucXVldWUoZSxzPTEsaSl7aWYodGhpcy5pc0NhbmNlbGxlZClyZXR1cm47Y29uc3Qgbz10aGlzLmRlc2lyZWRTaXplO3RoaXMuZGVzaXJlZFNpemUtPXM7aWYobz4wJiZ0aGlzLmRlc2lyZWRTaXplPD0wKXt0aGlzLnNpbmtDYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMucmVhZHk9dGhpcy5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlfXIucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOkVmLHN0cmVhbUlkOnQsY2h1bms6ZX0saSl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6YSxzdHJlYW06X2Ysc3RyZWFtSWQ6dH0pO2RlbGV0ZSBzLnN0cmVhbVNpbmtzW3RdfX0sZXJyb3IoZSl7YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6YSxzdHJlYW06emYsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfX0sc2lua0NhcGFiaWxpdHk6UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O28uc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO28ucmVhZHk9by5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09bztQcm9taXNlLnRyeShpLGUuZGF0YSxvKS50aGVuKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6YSxzdHJlYW06V2Ysc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGZ1bmN0aW9uKGUpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOldmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pfSNCbihlKXtjb25zdCB0PWUuc3RyZWFtSWQsbj10aGlzLnNvdXJjZU5hbWUsYT1lLnNvdXJjZU5hbWUscj10aGlzLmNvbU9iaixzPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0saT10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaChlLnN0cmVhbSl7Y2FzZSBXZjplLnN1Y2Nlc3M/cy5zdGFydENhbGwucmVzb2x2ZSgpOnMuc3RhcnRDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBVZjplLnN1Y2Nlc3M/cy5wdWxsQ2FsbC5yZXNvbHZlKCk6cy5wdWxsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO2JyZWFrO2Nhc2UgTGY6aWYoIWkpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOlVmLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pO2JyZWFrfWkuZGVzaXJlZFNpemU8PTAmJmUuZGVzaXJlZFNpemU+MCYmaS5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7aS5kZXNpcmVkU2l6ZT1lLmRlc2lyZWRTaXplO1Byb21pc2UudHJ5KGkub25QdWxsfHxvbkZuKS50aGVuKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6YSxzdHJlYW06VWYsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGZ1bmN0aW9uKGUpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOmEsc3RyZWFtOlVmLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pO2JyZWFrO2Nhc2UgRWY6YXNzZXJ0KHMsImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihzLmlzQ2xvc2VkKWJyZWFrO3MuY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgX2Y6YXNzZXJ0KHMsImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmlzQ2xvc2VkPSEwO3MuY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI0huKHMsdCk7YnJlYWs7Y2FzZSB6Zjphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI0huKHMsdCk7YnJlYWs7Y2FzZSBQZjplLnN1Y2Nlc3M/cy5jYW5jZWxDYWxsLnJlc29sdmUoKTpzLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiNIbihzLHQpO2JyZWFrO2Nhc2UgTmY6aWYoIWkpYnJlYWs7Y29uc3Qgbz13cmFwUmVhc29uKGUucmVhc29uKTtQcm9taXNlLnRyeShpLm9uQ2FuY2VsfHxvbkZuLG8pLnRoZW4oZnVuY3Rpb24oKXtyLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTphLHN0cmVhbTpQZixzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0sZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpuLHRhcmdldE5hbWU6YSxzdHJlYW06UGYsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSk7aS5zaW5rQ2FwYWJpbGl0eS5yZWplY3Qobyk7aS5pc0NhbmNlbGxlZD0hMDtkZWxldGUgdGhpcy5zdHJlYW1TaW5rc1t0XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBzdHJlYW0gY2FzZSIpfX1hc3luYyNIbihlLHQpe2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbZS5zdGFydENhbGw/LnByb21pc2UsZS5wdWxsQ2FsbD8ucHJvbWlzZSxlLmNhbmNlbENhbGw/LnByb21pc2VdKTtkZWxldGUgdGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XX1kZXN0cm95KCl7dGhpcy4jT24/LmFib3J0KCk7dGhpcy4jT249bnVsbH19YXN5bmMgZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LG4se2VuY3J5cHQ6YT1udWxsLGVuY3J5cHRSZWY6cj1udWxsfSl7Y29uc3Qgcz1hJiZyIT09ZT9hLmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbik6bnVsbDtuLnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IG9ialxuYCk7YXdhaXQgd3JpdGVWYWx1ZSh0LG4scyk7bi5wdXNoKCJcbmVuZG9ialxuIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVEaWN0KGUsdCxuKXt0LnB1c2goIjw8Iik7Zm9yKGNvbnN0W2Escl1vZiBlLmdldFJhd0VudHJpZXMoKSl7dC5wdXNoKGAgLyR7ZXNjYXBlUERGTmFtZShhKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShyLHQsbil9dC5wdXNoKCI+PiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlVmFsdWUoZSx0LG4pe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXQucHVzaChgLyR7ZXNjYXBlUERGTmFtZShlLm5hbWUpfWApO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSl8fEFycmF5QnVmZmVyLmlzVmlldyhlKSlhd2FpdCBhc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxuKXt0LnB1c2goIlsiKTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2F3YWl0IHdyaXRlVmFsdWUoZVthXSx0LG4pO2E8ci0xJiZ0LnB1c2goIiAiKX10LnB1c2goIl0iKX0oZSx0LG4pO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtuJiYoZT1uLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlP3QucHVzaChlLnRvRml4ZWQoMTApLnJlcGxhY2UoL1wuPzArJC8sIiIpKToiYm9vbGVhbiI9PXR5cGVvZiBlP3QucHVzaChlLnRvU3RyaW5nKCkpOmUgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdChlLHQsbik6ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVTdHJlYW0oZSx0LG4peyhlPWUuZ2V0T3JpZ2luYWxTdHJlYW0oKSkucmVzZXQoKTtsZXQgYT1lLmdldEJ5dGVzKCk7Y29uc3R7ZGljdDpyfT1lLFtzLGldPWF3YWl0IFByb21pc2UuYWxsKFtyLmdldEFzeW5jKCJGaWx0ZXIiKSxyLmdldEFzeW5jKCJEZWNvZGVQYXJtcyIpXSksbz1BcnJheS5pc0FycmF5KHMpP2F3YWl0IHIueHJlZi5mZXRjaElmUmVmQXN5bmMoc1swXSk6cyxsPWlzTmFtZShvLCJGbGF0ZURlY29kZSIpLGY9aXNOYW1lKG8sIkRDVERlY29kZSIpfHxpc05hbWUobywiSlBYRGVjb2RlIil8fGlzTmFtZShvLCJKQklHMkRlY29kZSIpfHxpc05hbWUobywiQ0NJVFRGYXhEZWNvZGUiKXx8aXNOYW1lKG8sIkxaV0RlY29kZSIpO2lmKCEobHx8Znx8aXNOYW1lKG8sIkJyb3RsaURlY29kZSIpKSYmYS5sZW5ndGg+PTI1Nil0cnl7Y29uc3QgZT1uZXcgQ29tcHJlc3Npb25TdHJlYW0oImRlZmxhdGUiKSx0PWUud3JpdGFibGUuZ2V0V3JpdGVyKCk7YXdhaXQgdC5yZWFkeTt0LndyaXRlKGEpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IHQucmVhZHk7YXdhaXQgdC5jbG9zZSgpfSkuY2F0Y2goKCk9Pnt9KTthPWF3YWl0IG5ldyBSZXNwb25zZShlLnJlYWRhYmxlKS5ieXRlcygpO2xldCBuLG87aWYocyl7aWYoIWwpe249QXJyYXkuaXNBcnJheShzKT9bTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksLi4uc106W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLHNdO2kmJihvPUFycmF5LmlzQXJyYXkoaSk/W251bGwsLi4uaV06W251bGwsaV0pfX1lbHNlIG49TmFtZS5nZXQoIkZsYXRlRGVjb2RlIik7biYmci5zZXQoIkZpbHRlciIsbik7byYmci5zZXQoIkRlY29kZVBhcm1zIixvKX1jYXRjaChlKXtpbmZvKGB3cml0ZVN0cmVhbSAtIGNhbm5vdCBjb21wcmVzcyBkYXRhOiAiJHtlfSIuYCl9bGV0IGM9Ynl0ZXNUb1N0cmluZyhhKTtuJiYoYz1uLmVuY3J5cHRTdHJpbmcoYykpO3Iuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTthd2FpdCB3cml0ZURpY3Qocix0LG4pO3QucHVzaCgiIHN0cmVhbVxuIixjLCJcbmVuZHN0cmVhbSIpfShlLHQsbik6bnVsbD09PWU/dC5wdXNoKCJudWxsIik6d2FybihgVW5oYW5kbGVkIHZhbHVlIGluIHdyaXRlcjogJHt0eXBlb2YgZX0sIHBsZWFzZSBmaWxlIGEgYnVnLmApfWZ1bmN0aW9uIHdyaXRlSW50KGUsdCxuLGEpe2ZvcihsZXQgcj10K24tMTtyPm4tMTtyLS0pe2Fbcl09MjU1JmU7ZT4+PTh9cmV0dXJuIG4rdH1mdW5jdGlvbiB3cml0ZVN0cmluZyhlLHQsbil7Y29uc3QgYT1lLmxlbmd0aDtmb3IobGV0IHI9MDtyPGE7cisrKW5bdCtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiB0K2F9ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOm4seHJlZjphfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBuPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTphfT1lO2lmKCF0fHxudWxsPT09YSljb250aW51ZTtjb25zdCByPXBhcnNlWEZBUGF0aCh0KTtsZXQgcz1uLmRvY3VtZW50RWxlbWVudC5zZWFyY2hOb2RlKHIsMCk7IXMmJnIubGVuZ3RoPjEmJihzPW4uZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoW3IuYXQoLTEpXSwwKSk7cz9zLmNoaWxkTm9kZXM9QXJyYXkuaXNBcnJheShhKT9hLm1hcChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKTpbbmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixhKV06d2FybihgTm9kZSBub3QgZm91bmQgZm9yIHBhdGg6ICR7dH1gKX1jb25zdCBhPVtdO24uZG9jdW1lbnRFbGVtZW50LmR1bXAoYSk7cmV0dXJuIGEuam9pbigiIil9KGEuZmV0Y2hJZlJlZih0KS5nZXRTdHJpbmcoKSxuKX1jb25zdCByPW5ldyBTdHJpbmdTdHJlYW0oZSxuZXcgRGljdChhKSk7ci5kaWN0LnNldElmTmFtZSgiVHlwZSIsIkVtYmVkZGVkRmlsZSIpO24ucHV0KHQse2RhdGE6cn0pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOm59b2YgZSluLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKG4ubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBhPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBuPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGE9dC5maWxlbmFtZXx8IiIscj1bbi50b1N0cmluZygpLGEsZS50b1N0cmluZygpLC4uLnQuaW5mb01hcC52YWx1ZXMoKV0scz1NYXRoLnN1bVByZWNpc2Uoci5tYXAoZT0+ZS5sZW5ndGgpKSxpPW5ldyBVaW50OEFycmF5KHMpO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2YgcilvPXdyaXRlU3RyaW5nKGUsbyxpKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhjYWxjdWxhdGVNRDUoaSwwLGkubGVuZ3RoKSl9KGUsdCk7bi5zZXQoIklEIixbdC5maWxlSWRzWzBdfHxhLGFdKX19YXN5bmMgZnVuY3Rpb24gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTplLHhyZWZJbmZvOnQsY2hhbmdlczpuLHhyZWY6YT1udWxsLGhhc1hmYTpyPSExLHhmYURhdGFzZXRzUmVmOnM9bnVsbCxoYXNYZmFEYXRhc2V0c0VudHJ5Omk9ITEsbmVlZEFwcGVhcmFuY2VzOm8sYWNyb0Zvcm1SZWY6bD1udWxsLGFjcm9Gb3JtOmY9bnVsbCx4ZmFEYXRhOmM9bnVsbCx1c2VYcmVmU3RyZWFtOmg9ITF9KXthd2FpdCBhc3luYyBmdW5jdGlvbiB1cGRhdGVBY3JvZm9ybSh7eHJlZjplLGFjcm9Gb3JtOnQsYWNyb0Zvcm1SZWY6bixoYXNYZmE6YSxoYXNYZmFEYXRhc2V0c0VudHJ5OnIseGZhRGF0YXNldHNSZWY6cyxuZWVkQXBwZWFyYW5jZXM6aSxjaGFuZ2VzOm99KXshYXx8cnx8c3x8d2FybigiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtpZighaSYmKCFhfHwhc3x8cikpcmV0dXJuO2NvbnN0IGw9dC5jbG9uZSgpO2lmKGEmJiFyKXtjb25zdCBlPXQuZ2V0KCJYRkEiKS5zbGljZSgpO2Uuc3BsaWNlKDIsMCwiZGF0YXNldHMiKTtlLnNwbGljZSgzLDAscyk7bC5zZXQoIlhGQSIsZSl9aSYmbC5zZXQoIk5lZWRBcHBlYXJhbmNlcyIsITApO28ucHV0KG4se2RhdGE6bH0pfSh7eHJlZjphLGFjcm9Gb3JtOmYsYWNyb0Zvcm1SZWY6bCxoYXNYZmE6cixoYXNYZmFEYXRhc2V0c0VudHJ5OmkseGZhRGF0YXNldHNSZWY6cyxuZWVkQXBwZWFyYW5jZXM6byxjaGFuZ2VzOm59KTtyJiZ1cGRhdGVYRkEoe3hmYURhdGE6Yyx4ZmFEYXRhc2V0c1JlZjpzLGNoYW5nZXM6bix4cmVmOmF9KTtjb25zdCB1PWZ1bmN0aW9uIGdldFRyYWlsZXJEaWN0KGUsdCxuKXtjb25zdCBhPW5ldyBEaWN0KG51bGwpO2Euc2V0SWZEZWZpbmVkKCJQcmV2IixlPy5zdGFydFhSZWYpO2NvbnN0IHI9ZS5uZXdSZWY7aWYobil7dC5wdXQocix7ZGF0YToiIn0pO2Euc2V0KCJTaXplIixyLm51bSsxKTthLnNldElmTmFtZSgiVHlwZSIsIlhSZWYiKX1lbHNlIGEuc2V0KCJTaXplIixyLm51bSk7YS5zZXRJZkRlZmluZWQoIlJvb3QiLGU/LnJvb3RSZWYpO2Euc2V0SWZEZWZpbmVkKCJJbmZvIixlPy5pbmZvUmVmKTthLnNldElmRGVmaW5lZCgiRW5jcnlwdCIsZT8uZW5jcnlwdFJlZik7cmV0dXJuIGF9KHQsbixoKSxtPVtdLHA9YXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDaGFuZ2VzKGUsdCxuPVtdKXtjb25zdCBhPVtdO2Zvcihjb25zdFtyLHtkYXRhOnMsb2JqU3RyZWFtUmVmOmksaW5kZXg6b31db2YgZS5pdGVtcygpKWlmKGkpYS5wdXNoKHtyZWY6cixkYXRhOnMsb2JqU3RyZWFtUmVmOmksaW5kZXg6b30pO2Vsc2UgaWYobnVsbCE9PXMmJiJzdHJpbmciIT10eXBlb2Ygcyl7YXdhaXQgd3JpdGVPYmplY3QocixzLG4sdCk7YS5wdXNoKHtyZWY6cixkYXRhOm4uam9pbigiIil9KTtuLmxlbmd0aD0wfWVsc2UgYS5wdXNoKHtyZWY6cixkYXRhOnN9KTtyZXR1cm4gYS5zb3J0KChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKX0obixhLG0pO2xldCBkPWUubGVuZ3RoO2NvbnN0IGc9ZS5hdCgtMSk7aWYoMTAhPT1nJiYxMyE9PWcpe20ucHVzaCgiXG4iKTtkKz0xfWZvcihjb25zdHtkYXRhOmV9b2YgcCludWxsIT09ZSYmbS5wdXNoKGUpO2F3YWl0KGg/YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlN0cmVhbVRhYmxlKGUsdCxuLGEscil7Y29uc3Qgcz1bXTtsZXQgaT0wLG89MDtmb3IoY29uc3R7cmVmOmUsZGF0YTphLG9ialN0cmVhbVJlZjpyLGluZGV4Omx9b2Ygbil7bGV0IG47aT1NYXRoLm1heChpLHQpO2lmKHIpe249bDtzLnB1c2goWzIsci5udW0sbl0pfWVsc2UgaWYobnVsbCE9PWEpe249TWF0aC5taW4oZS5nZW4sNjU1MzUpO3MucHVzaChbMSx0LG5dKTt0Kz1hLmxlbmd0aH1lbHNle249TWF0aC5taW4oZS5nZW4rMSw2NTUzNSk7cy5wdXNoKFswLDAsbl0pfW89TWF0aC5tYXgobyxuKX1hLnNldCgiSW5kZXgiLGdldEluZGV4ZXMobikpO2NvbnN0IGw9WzEsZ2V0U2l6ZUluQnl0ZXMoaSksZ2V0U2l6ZUluQnl0ZXMobyldO2Euc2V0KCJXIixsKTtjb21wdXRlSURzKHQsZSxhKTtjb25zdCBmPU1hdGguc3VtUHJlY2lzZShsKSxjPW5ldyBVaW50OEFycmF5KGYqcy5sZW5ndGgpLGg9bmV3IFN0cmVhbShjKTtoLmRpY3Q9YTtsZXQgdT0wO2Zvcihjb25zdFtlLHQsbl1vZiBzKXt1PXdyaXRlSW50KGUsbFswXSx1LGMpO3U9d3JpdGVJbnQodCxsWzFdLHUsYyk7dT13cml0ZUludChuLGxbMl0sdSxjKX1hd2FpdCB3cml0ZU9iamVjdChlLm5ld1JlZixoLHIse30pO3IucHVzaCgic3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQsZCxwLHUsbSk6YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlRhYmxlKGUsdCxuLGEscil7ci5wdXNoKCJ4cmVmXG4iKTtjb25zdCBzPWdldEluZGV4ZXMobik7bGV0IGk9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTphfW9mIG4pe2lmKGUubnVtPT09c1tpXSl7ci5wdXNoKGAke3NbaV19ICR7c1tpKzFdfVxuYCk7aSs9Mn1pZihudWxsIT09YSl7ci5wdXNoKGAke3QudG9TdHJpbmcoKS5wYWRTdGFydCgxMCwiMCIpfSAke01hdGgubWluKGUuZ2VuLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gblxyXG5gKTt0Kz1hLmxlbmd0aH1lbHNlIHIucHVzaChgMDAwMDAwMDAwMCAke01hdGgubWluKGUuZ2VuKzEsNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBmXHJcbmApfWNvbXB1dGVJRHModCxlLGEpO3IucHVzaCgidHJhaWxlclxuIik7YXdhaXQgd3JpdGVEaWN0KGEscixudWxsKTtyLnB1c2goIlxuc3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQsZCxwLHUsbSkpO2NvbnN0IGI9ZS5sZW5ndGgrTWF0aC5zdW1QcmVjaXNlKG0ubWFwKGU9PmUubGVuZ3RoKSksdz1uZXcgVWludDhBcnJheShiKTt3LnNldChlKTtsZXQgaj1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBtKWo9d3JpdGVTdHJpbmcoZSxqLHcpO3JldHVybiB3fWNsYXNzIFBhZ2VEYXRhe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wYWdlPWU7dGhpcy5kb2N1bWVudERhdGE9dDt0aGlzLmFubm90YXRpb25zPW51bGw7dGhpcy5wb2ludGluZ05hbWVkRGVzdGluYXRpb25zPW51bGw7dC5wYWdlc01hcC5wdXQoZS5yZWYsdGhpcyl9fWNsYXNzIERvY3VtZW50RGF0YXtjb25zdHJ1Y3RvcihlKXt0aGlzLmRvY3VtZW50PWU7dGhpcy5kZXN0aW5hdGlvbnM9bnVsbDt0aGlzLnBhZ2VMYWJlbHM9bnVsbDt0aGlzLnBhZ2VzTWFwPW5ldyBSZWZTZXRDYWNoZTt0aGlzLm9sZFJlZk1hcHBpbmc9bmV3IFJlZlNldENhY2hlO3RoaXMuZGVkdXBOYW1lZERlc3RpbmF0aW9ucz1uZXcgTWFwO3RoaXMudXNlZE5hbWVkRGVzdGluYXRpb25zPW5ldyBTZXQ7dGhpcy5wb3N0cG9uZWRSZWZDb3BpZXM9bmV3IFJlZlNldENhY2hlO3RoaXMucmVzb3VyY2VTdHJlYW1Qcm9taXNlcz1uZXcgTWFwO3RoaXMudXNlZFN0cnVjdFBhcmVudHM9bmV3IFNldDt0aGlzLm9sZFN0cnVjdFBhcmVudE1hcHBpbmc9bmV3IE1hcDt0aGlzLnN0cnVjdFRyZWVSb290PW51bGw7dGhpcy5wYXJlbnRUcmVlPW51bGw7dGhpcy5pZFRyZWU9bnVsbDt0aGlzLnJvbGVNYXA9bnVsbDt0aGlzLmNsYXNzTWFwPW51bGw7dGhpcy5uYW1lc3BhY2VzPW51bGw7dGhpcy5zdHJ1Y3RUcmVlQUY9bnVsbDt0aGlzLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbj1bXTt0aGlzLmFjcm9Gb3JtPW51bGw7dGhpcy5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlPSIiO3RoaXMuYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzPW51bGw7dGhpcy5hY3JvRm9ybVE9MDt0aGlzLmhhc1NpZ25hdHVyZUFubm90YXRpb25zPSExO3RoaXMuZmllbGRUb1BhcmVudD1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5vdXRsaW5lPW51bGw7dGhpcy5lbWJlZGRlZEZpbGVzPW51bGx9fWNsYXNzIFhSZWZXcmFwcGVye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5lbnRyaWVzPWU7dGhpcy5fZ2V0TmV3UmVmPXR9Z2V0TmV3VGVtcG9yYXJ5UmVmKCl7cmV0dXJuIHRoaXMuX2dldE5ld1JlZigpfWNvdW50VXBkYXRlc0FmdGVyKGUpe3JldHVybiBudWxsfWZldGNoSWZSZWYoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaChlKTplfWZldGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO3JldHVybiB0aGlzLmVudHJpZXNbZS5udW1dfWFzeW5jIGZldGNoSWZSZWZBc3luYyhlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoQXN5bmMoZSk6ZX1hc3luYyBmZXRjaEFzeW5jKGUpe3JldHVybiB0aGlzLmZldGNoKGUpfX1jbGFzcyBQREZFZGl0b3J7aXNTaW5nbGVGaWxlPSExOyNNbj1udWxsOyNObj1udWxsOyNQbj1uZXcgTWFwO2N1cnJlbnREb2N1bWVudD1udWxsO29sZFBhZ2VzPVtdO25ld1BhZ2VzPVtdO3hyZWY9W251bGxdO3hyZWZXcmFwcGVyPW5ldyBYUmVmV3JhcHBlcih0aGlzLnhyZWYsKCk9PnRoaXMubmV3UmVmKTtuZXdSZWZDb3VudD0xO25hbWVzRGljdD1udWxsO3ZlcnNpb249IjEuNyI7cGFnZUxhYmVscz1udWxsO25hbWVkRGVzdGluYXRpb25zPW5ldyBNYXA7cGFyZW50VHJlZT1uZXcgTWFwO3N0cnVjdFRyZWVLaWRzPVtdO2lkVHJlZT1uZXcgTWFwO2NsYXNzTWFwPW5ldyBEaWN0O3JvbGVNYXA9bmV3IERpY3Q7bmFtZXNwYWNlcz1uZXcgTWFwO3N0cnVjdFRyZWVBRj1bXTtzdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb249W107ZmllbGRzPVtdO2Fjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9IiI7YWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzPW51bGw7YWNyb0Zvcm1OZWVkQXBwZWFyYW5jZXM9ITE7YWNyb0Zvcm1TaWdGbGFncz0wO2Fjcm9Gb3JtQ2FsY3VsYXRpb25PcmRlcj1udWxsO2Fjcm9Gb3JtUT0wO291dGxpbmVJdGVtcz1udWxsO2VtYmVkZGVkRmlsZXM9bmV3IE1hcDtjb25zdHJ1Y3Rvcih7dXNlT2JqZWN0U3RyZWFtczplPSEwLHRpdGxlOnQ9IiIsYXV0aG9yOm49IiJ9PXt9KXtbdGhpcy5yb290UmVmLHRoaXMucm9vdERpY3RdPXRoaXMubmV3RGljdDtbdGhpcy5pbmZvUmVmLHRoaXMuaW5mb0RpY3RdPXRoaXMubmV3RGljdDtbdGhpcy5wYWdlc1JlZix0aGlzLnBhZ2VzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMudXNlT2JqZWN0U3RyZWFtcz1lO3RoaXMub2JqU3RyZWFtUmVmcz1lP25ldyBTZXQ6bnVsbDt0aGlzLnRpdGxlPXQ7dGhpcy5hdXRob3I9bn1nZXQgbmV3UmVmKCl7cmV0dXJuIFJlZi5nZXQodGhpcy5uZXdSZWZDb3VudCsrLDApfWdldCBuZXdEaWN0KCl7Y29uc3QgZT10aGlzLm5ld1JlZjtyZXR1cm5bZSx0aGlzLnhyZWZbZS5udW1dPW5ldyBEaWN0XX1hc3luYyNfbihlLHQpe2NvbnN0IG49dGhpcy5uZXdSZWY7dGhpcy54cmVmW24ubnVtXT1hd2FpdCB0aGlzLiNFbihlLCEwLHQpO3JldHVybiBufWNsb25lRGljdChlKXtjb25zdCB0PWUuY2xvbmUoKTt0LnhyZWY9dGhpcy54cmVmV3JhcHBlcjtyZXR1cm4gdH1hc3luYyNFbihlLHQsbixhPW5ldyBSZWZTZXQpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2NvbnN0e2N1cnJlbnREb2N1bWVudDp7b2xkUmVmTWFwcGluZzp0fX09dGhpcyxyPXQuZ2V0KGUpO2lmKHIpcmV0dXJuIHI7Y29uc3Qgcz1lO2lmKCJudW1iZXIiPT10eXBlb2YoZT1hd2FpdCBuLmZldGNoQXN5bmMocykpKXJldHVybiBlO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZ0aGlzLiN6bihlLmRpY3QpKXJldHVybiB0aGlzLiNMbihzLGUsbixhKTtjb25zdCBpPXRoaXMubmV3UmVmO3QucHV0KHMsaSk7dGhpcy54cmVmW2kubnVtXT1hd2FpdCB0aGlzLiNFbihlLCEwLG4sYSk7cmV0dXJuIGl9Y29uc3Qgcj1bXSx7Y3VycmVudERvY3VtZW50Ontwb3N0cG9uZWRSZWZDb3BpZXM6c319PXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSl7dCYmKGU9ZS5zbGljZSgpKTtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9ZVt0XWluc3RhbmNlb2YgUmVmJiZzLmdldChlW3RdKTtpP2kucHVzaChuPT5lW3RdPW4pOnIucHVzaCh0aGlzLiNFbihlW3RdLCEwLG4sYSkudGhlbihuPT5lW3RdPW4pKX1hd2FpdCBQcm9taXNlLmFsbChyKTtyZXR1cm4gZX1sZXQgaTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7KHtkaWN0Oml9PWU9ZS5nZXRPcmlnaW5hbFN0cmVhbSgpLmNsb25lKCkpO2kueHJlZj10aGlzLnhyZWZXcmFwcGVyfWVsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3Qpe3QmJigoZT1lLmNsb25lKCkpLnhyZWY9dGhpcy54cmVmV3JhcHBlcik7aT1lfWlmKGkpe2Zvcihjb25zdFtlLHRdb2YgaS5nZXRSYXdFbnRyaWVzKCkpe2NvbnN0IG89dCBpbnN0YW5jZW9mIFJlZiYmcy5nZXQodCk7bz9vLnB1c2godD0+aS5zZXQoZSx0KSk6ci5wdXNoKHRoaXMuI0VuKHQsITAsbixhKS50aGVuKHQ9Pmkuc2V0KGUsdCkpKX1hd2FpdCBQcm9taXNlLmFsbChyKX1yZXR1cm4gZX0jem4oZSl7Y29uc3QgdD1lLmdldCgiU3VidHlwZSIpO3JldHVybiBpc05hbWUodCwiSW1hZ2UiKXx8ZS5oYXMoIkxlbmd0aDEiKXx8aXNOYW1lKHQsIlR5cGUxQyIpfHxpc05hbWUodCwiQ0lERm9udFR5cGUwQyIpfHxpc05hbWUodCwiT3BlblR5cGUiKX0jVW4oZSl7Y29uc3QgdD1lLmdldE9yaWdpbmFsU3RyZWFtKCk7dC5yZXNldCgpO3JldHVybiB0LmdldEJ5dGVzKCl9YXN5bmMjV24oZSl7Y29uc3QgdD1bXTthd2FpdCB3cml0ZVZhbHVlKGUsdCxudWxsKTtyZXR1cm4gdC5qb2luKCIiKX0jWG4oZSx0KXtjb25zdCBuPTI1Nix7bGVuZ3RoOmF9PXQscj1uZXcgTXVybXVySGFzaDNfNjQ7ci51cGRhdGUoZSk7ci51cGRhdGUoYCMke2F9YCk7aWYoYTw9MTAyNClyLnVwZGF0ZSh0KTtlbHNle2NvbnN0IGU9TWF0aC5mbG9vcigoYS1uKS8zKTtmb3IobGV0IHM9MDtzPDQ7cysrKXtjb25zdCBpPU1hdGgubWluKHMqZSxhLW4pO3IudXBkYXRlKHQuc3ViYXJyYXkoaSxpK24pKX19cmV0dXJuIHIuaGV4ZGlnZXN0KCl9YXN5bmMjTG4oZSx0LG4sYSl7Y29uc3R7Y3VycmVudERvY3VtZW50OntvbGRSZWZNYXBwaW5nOnIscmVzb3VyY2VTdHJlYW1Qcm9taXNlczpzfX09dGhpcztpZihhLmhhcyhlKSlyZXR1cm4gci5nZXRPclB1dENvbXB1dGVkKGUsKCk9PnRoaXMubmV3UmVmKTtjb25zdCBpPWUudG9TdHJpbmcoKSxvPXMuZ2V0KGkpO2lmKG8pcmV0dXJuIG87Y29uc3QgbD1uZXcgUmVmU2V0KGEpO2wucHV0KGUpO2NvbnN0IGY9UHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT57Y29uc3QgYT1hd2FpdCB0aGlzLiNFbih0LCEwLG4sbCkscz1yLmdldChlKTtpZihzKXt0aGlzLnhyZWZbcy5udW1dPWE7cmV0dXJuIHN9Y29uc3QgaT1hd2FpdCB0aGlzLiNLbihhKTtyLnB1dChlLGkpO3JldHVybiBpfSk7cy5zZXQoaSxmKTt0cnl7cmV0dXJuIGF3YWl0IGZ9ZmluYWxseXtzLmdldChpKT09PWYmJnMuZGVsZXRlKGkpfX1hc3luYyNLbihlKXtjb25zdCB0PWF3YWl0IHRoaXMuI1duKGUuZGljdCksbj10aGlzLiNVbihlKSxhPXRoaXMuI1huKHQsbikscj10aGlzLiNQbi5nZXRPckluc2VydENvbXB1dGVkKGEsbWFrZUFycik7Zm9yKGNvbnN0IGUgb2YgcilpZihlLmRpY3RTdHI9PT10JiZpc0FycmF5RXF1YWwodGhpcy4jVW4oZS5zdHJlYW0pLG4pKXJldHVybiBlLnJlZjtjb25zdCBzPXRoaXMubmV3UmVmO3RoaXMueHJlZltzLm51bV09ZTtyLnB1c2goe3JlZjpzLGRpY3RTdHI6dCxzdHJlYW06ZX0pO3JldHVybiBzfWFzeW5jI0duKGUsdCl7aWYoZSBpbnN0YW5jZW9mIFJlZil7Y29uc3Qgbj1hd2FpdCB0LmZldGNoQXN5bmMoZSk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bjpbZV19cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19YXN5bmMjVm4oZSx0LG4sYSxyLHMsaSxvPW5ldyBSZWZTZXQpe2NvbnN0e2N1cnJlbnREb2N1bWVudDp7cGFnZXNNYXA6bCxvbGRSZWZNYXBwaW5nOmZ9fT10aGlzLGM9dC5nZXRSYXcoIlBnIik7aWYoYyBpbnN0YW5jZW9mIFJlZiYmIWwuaGFzKGMpKXJldHVybiBudWxsO2NvbnN0IGg9dC5nZXRSYXcoIksiKTtpZihoIGluc3RhbmNlb2YgUmVmJiZvLmhhcyhoKSlyZXR1cm4gbnVsbDtjb25zdCB1PWF3YWl0IHRoaXMuI0duKGgsbiksbT1bXSxwPVtdO2ZvcihsZXQgdCBvZiB1KXtjb25zdCBjPXQgaW5zdGFuY2VvZiBSZWY/dDpudWxsO2lmKGMpe2lmKG8uaGFzKGMpKWNvbnRpbnVlO28ucHV0KGMpO3Q9YXdhaXQgbi5mZXRjaEFzeW5jKGMpfWlmKCJudW1iZXIiPT10eXBlb2YgdCl7bS5wdXNoKHQpO2NvbnRpbnVlfWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGg9dC5nZXRSYXcoIlBnIik7aWYoaCBpbnN0YW5jZW9mIFJlZiYmIWwuaGFzKGgpKWNvbnRpbnVlO2NvbnN0IHU9dC5nZXQoIlR5cGUiKTtpZighdXx8aXNOYW1lKHUsIlN0cnVjdEVsZW0iKSl7bGV0IGU9ITE7aWYoYyYmYS5oYXMoYykpe2lmKCFpc05hbWUodC5nZXQoIlMiKSwiTGluayIpKWNvbnRpbnVlO2U9ITB9Y29uc3QgbD1hd2FpdCB0aGlzLiNWbihjLHQsbixhLHIscyxpLG8pO2lmKGwpe3AucHVzaChtLmxlbmd0aCk7bS5wdXNoKGwpO2MmJmYucHV0KGMsbCk7ZSYmdGhpcy54cmVmW2wubnVtXS5zZXRJZk5hbWUoIlMiLCJTcGFuIil9Y29udGludWV9aWYoaXNOYW1lKHUsIk9CSlIiKSl7aWYoIWMpY29udGludWU7Y29uc3QgYT10LmdldFJhdygiT2JqIik7aWYoYSBpbnN0YW5jZW9mIFJlZiYmIWYuZ2V0KGEpKWNvbnRpbnVlO2NvbnN0IHI9Zi5nZXQoYyl8fGF3YWl0IHRoaXMuI0VuKGMsITAsbikscz10aGlzLnhyZWZbci5udW1dLmdldFJhdygiT2JqIik7aWYocyBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD10aGlzLnhyZWZbcy5udW1dO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiYhdC5oYXMoIlN0cnVjdFBhcmVudCIpJiZlKXtjb25zdCBuPXRoaXMucGFyZW50VHJlZS5zaXplO3RoaXMucGFyZW50VHJlZS5zZXQobixbZixlXSk7dC5zZXQoIlN0cnVjdFBhcmVudCIsbil9fW0ucHVzaChyKTtjb250aW51ZX1pZihpc05hbWUodSwiTUNSIikpe2NvbnN0IGU9YXdhaXQgdGhpcy4jRW4oY3x8dCwhMCxuKTttLnB1c2goZSk7Y29udGludWV9aWYoYyl7Y29uc3QgZT1hd2FpdCB0aGlzLiNFbihjLCEwLG4pO20ucHVzaChlKX19aWYoMCE9PXUubGVuZ3RoJiYwPT09bS5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgZD10aGlzLm5ld1JlZixnPXRoaXMueHJlZltkLm51bV09dGhpcy5jbG9uZURpY3QodCk7Zy5kZWxldGUoIklEIik7Zy5kZWxldGUoIkMiKTtnLmRlbGV0ZSgiSyIpO2cuZGVsZXRlKCJQIik7Zy5kZWxldGUoIlMiKTthd2FpdCB0aGlzLiNFbihnLCExLG4pO2NvbnN0IGI9dC5nZXQoIkMiKTtpZihiIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT1zLmdldChiLm5hbWUpO2cuc2V0KCJDIixlP05hbWUuZ2V0KGUpOmIpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShiKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBiKWlmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBuPXMuZ2V0KHQubmFtZSk7ZS5wdXNoKG4/TmFtZS5nZXQobik6dCl9Zy5zZXQoIkMiLGUpfWNvbnN0IHc9dC5nZXQoIlMiKTtpZih3IGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT1pLmdldCh3Lm5hbWUpO2cuc2V0KCJTIixlP05hbWUuZ2V0KGUpOncpfWNvbnN0IGo9dC5nZXQoIklEIik7aWYoInN0cmluZyI9PXR5cGVvZiBqKXtjb25zdCBlPXN0cmluZ1RvUERGU3RyaW5nKGosITEpLHQ9ci5nZXQoZSk7Zy5zZXQoIklEIix0P3N0cmluZ1RvQXNjaWlPclVURjE2QkUodCk6ail9bGV0IGs9Zy5nZXQoIkEiKTtpZihrKXtBcnJheS5pc0FycmF5KGspfHwoaz1ba10pO2ZvcihsZXQgZSBvZiBrKXtlPXRoaXMueHJlZldyYXBwZXIuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgRGljdCYmKGlzTmFtZShlLmdldCgiTyIpLCJUYWJsZSIpJiZlLmhhcygiSGVhZGVycyIpKSl7Y29uc3QgdD10aGlzLnhyZWZXcmFwcGVyLmZldGNoSWZSZWYoZS5nZXRSYXcoIkhlYWRlcnMiKSk7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dGhpcy54cmVmV3JhcHBlci5mZXRjaElmUmVmKHRbZV0pO2lmKCJzdHJpbmciIT10eXBlb2Ygbiljb250aW51ZTtjb25zdCBhPXIuZ2V0KHN0cmluZ1RvUERGU3RyaW5nKG4sITEpKTthJiYodFtlXT1hKX19fX1mb3IoY29uc3QgZSBvZiBwKXtjb25zdCB0PW1bZV07dGhpcy54cmVmW3QubnVtXS5zZXQoIlAiLGQpfTE9PT1tLmxlbmd0aD9nLnNldCgiSyIsbVswXSk6bS5sZW5ndGg+MSYmZy5zZXQoIksiLG0pO3JldHVybiBkfSMkbih7ZG9jdW1lbnQ6ZSxpbmNsdWRlUGFnZXM6dCxleGNsdWRlUGFnZXM6bn0pe2lmKCFlKXJldHVybltdO2NvbnN0IGNvbXBpbGU9ZT0+e2lmKCFlPy5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgU2V0LG49W107Zm9yKGNvbnN0IGEgb2YgZSlBcnJheS5pc0FycmF5KGEpP24ucHVzaChhKTp0LmFkZChhKTtyZXR1cm57aW5kaWNlczp0LHJhbmdlczpufX0sbWF0Y2hlcz0oZSx7aW5kaWNlczp0LHJhbmdlczpufSk9PnQuaGFzKGUpfHxuLnNvbWUoKFt0LG5dKT0+ZT49dCYmZTw9biksYT1jb21waWxlKHQpLHI9Y29tcGlsZShuKSxzPVtdO2ZvcihsZXQgdD0wLG49ZS5udW1QYWdlczt0PG47dCsrKXImJm1hdGNoZXModCxyKXx8YSYmIW1hdGNoZXModCxhKXx8cy5wdXNoKHQpO3JldHVybiBzfSNZbihlKXtjb25zdCB0PW5ldyBBcnJheShlLmxlbmd0aCksbj1bXSxhPVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtjb25zdCBzPWVbcl07bGV0IGk7aWYocy5pbWFnZSlpPXRbcl09MTtlbHNle2lmKCFzLmRvY3VtZW50KXt0W3JdPTA7Y29udGludWV9aT10W3JdPXRoaXMuIyRuKHMpLmxlbmd0aH1pZighcy5wYWdlSW5kaWNlcylpZih2b2lkIDA9PT1zLmluc2VydEFmdGVyKWZvcihsZXQgZT0wO2U8aTtlKyspbi5wdXNoKHIpO2Vsc2UgYS5wdXNoKHtpOnIsaW5zZXJ0QWZ0ZXI6cy5pbnNlcnRBZnRlcixjb3VudDppfSl9aWYoMD09PWEubGVuZ3RoKXJldHVybiBlO2NvbnN0IGhhc0NvbnRlbnQ9ZT0+ISghZS5kb2N1bWVudCYmIWUuaW1hZ2UpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCBhPWVbbl07aWYoaGFzQ29udGVudChhKSYmYS5wYWdlSW5kaWNlcyYmYS5wYWdlSW5kaWNlcy5sZW5ndGg8dFtuXSl0aHJvdyBuZXcgRXJyb3IoImV4dHJhY3RQYWdlczogcGFydGlhbCBwYWdlSW5kaWNlcyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBpbnNlcnRBZnRlciBlbnRyaWVzLiIpfWEuc29ydCgoZSx0KT0+ZS5pbnNlcnRBZnRlci10Lmluc2VydEFmdGVyfHxlLmktdC5pKTtpZigwPT09bi5sZW5ndGgmJmUuc29tZShlPT5oYXNDb250ZW50KGUpJiZlLnBhZ2VJbmRpY2VzKSl7Y29uc3QgdD1lLnNsaWNlKCk7bGV0IG49LTE7Zm9yKGNvbnN0IHQgb2YgZSlpZihoYXNDb250ZW50KHQpJiZ0LnBhZ2VJbmRpY2VzKWZvcihjb25zdCBlIG9mIHQucGFnZUluZGljZXMpZT5uJiYobj1lKTtsZXQgcj0wO2Zvcihjb25zdHtpOmUsaW5zZXJ0QWZ0ZXI6cyxjb3VudDppfW9mIGEpe2NvbnN0IGE9TWF0aC5taW4oTWF0aC5tYXgocywtMSkrcixuKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdO2hhc0NvbnRlbnQobikmJm4ucGFnZUluZGljZXMmJiFuLnBhZ2VJbmRpY2VzLmV2ZXJ5KGU9PmU8PWEpJiYodFtlXT17Li4ubixwYWdlSW5kaWNlczpuLnBhZ2VJbmRpY2VzLm1hcChlPT5lPmE/ZStpOmUpfSl9Y29uc3Qgbz1bXTtmb3IobGV0IGU9MDtlPGk7ZSsrKW8ucHVzaChhKzErZSk7Y29uc3QgbD17Li4udFtlXSxwYWdlSW5kaWNlczpvfTtkZWxldGUgbC5pbnNlcnRBZnRlcjt0W2VdPWw7cis9aTtuKz1pfXJldHVybiB0fWxldCByPTA7Zm9yKGNvbnN0e2k6ZSxpbnNlcnRBZnRlcjp0LGNvdW50OnN9b2YgYSl7Y29uc3QgYT1NYXRoLm1heCh0LC0xKSsxK3I7bi5zcGxpY2UoYSwwLC4uLm5ldyBBcnJheShzKS5maWxsKGUpKTtyKz1zfWNvbnN0IHM9bmV3IEFycmF5KGUubGVuZ3RoKTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7Y29uc3QgdD1uW2VdOyhzW3RdfHw9W10pLnB1c2goZSl9cmV0dXJuIGUubWFwKChlLHQpPT57aWYoIWhhc0NvbnRlbnQoZSl8fGUucGFnZUluZGljZXMpcmV0dXJuIGU7Y29uc3Qgbj17Li4uZSxwYWdlSW5kaWNlczpzW3RdfHxbXX07ZGVsZXRlIG4uaW5zZXJ0QWZ0ZXI7cmV0dXJuIG59KX1hc3luYyBleHRyYWN0UGFnZXMoZSx0LG4sYSxyKXt0aGlzLiNObj1uO2NvbnN0IHM9W107bGV0IGk9MDtjb25zdCByZXNlcnZlUGFnZVNsb3Q9ZT0+e2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpfHxlPDApdGhyb3cgbmV3IEVycm9yKCJleHRyYWN0UGFnZXM6IGludmFsaWQgcGFnZSBpbmRleC4iKTtpZih2b2lkIDAhPT10aGlzLm9sZFBhZ2VzW2VdKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiBvdmVybGFwcGluZyBwYWdlSW5kaWNlcy4iKTt0aGlzLm9sZFBhZ2VzW2VdPW51bGx9LG89KGU9dGhpcy4jWW4oZSkpLmZpbHRlcihlPT4hIWUuZG9jdW1lbnQpO3RoaXMuaXNTaW5nbGVGaWxlPTE9PT1vLmxlbmd0aHx8by5sZW5ndGg+MCYmby5ldmVyeShlPT5lLmRvY3VtZW50PT09b1swXS5kb2N1bWVudCk7Y29uc3QgbD1bXTt0JiYodGhpcy4jTW49e2hhbmRsZXI6YSx0YXNrOnIsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6Z2V0TmV3QW5ub3RhdGlvbnNNYXAodCksaW1hZ2VzUHJvbWlzZXM6QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXModC52YWx1ZXMoKSx0aGlzLnhyZWZXcmFwcGVyLCEwKX0pO2NvbnN0IGY9W107Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3R7ZG9jdW1lbnQ6ZSxpbWFnZTpuLGluY2x1ZGVQYWdlczphLGV4Y2x1ZGVQYWdlczpyLHBhZ2VJbmRpY2VzOm99PXQ7aWYobil7aWYobyl7aT0tMTtpZihvLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiB0b28gbWFueSBwYWdlSW5kaWNlcy4iKX1sZXQgZTtpZihvPy5sZW5ndGgpZT1vWzBdO2Vsc2UgaWYoLTEhPT1pKWU9aSsrO2Vsc2UgZm9yKGU9MDt2b2lkIDAhPT10aGlzLm9sZFBhZ2VzW2VdO2UrKyk7cmVzZXJ2ZVBhZ2VTbG90KGUpO2YucHVzaCh7aW1hZ2U6bixzbG90OmV9KTtjb250aW51ZX1pZighZSljb250aW51ZTtvJiYoaT0tMSk7Y29uc3QgYz10aGlzLiMkbih7ZG9jdW1lbnQ6ZSxpbmNsdWRlUGFnZXM6YSxleGNsdWRlUGFnZXM6cn0pO2lmKG8mJm8ubGVuZ3RoPmMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZXh0cmFjdFBhZ2VzOiB0b28gbWFueSBwYWdlSW5kaWNlcy4iKTtjb25zdCBoPW5ldyBEb2N1bWVudERhdGEoZSk7bC5wdXNoKGgpO3MucHVzaCh0aGlzLiNKbihoKSk7bGV0IHU9MDtmb3IoY29uc3QgdCBvZiBjKXtsZXQgbjtvJiYobj1vW3UrK10pO2lmKHZvaWQgMD09PW4paWYoLTEhPT1pKW49aSsrO2Vsc2UgZm9yKG49MDt2b2lkIDAhPT10aGlzLm9sZFBhZ2VzW25dO24rKyk7cmVzZXJ2ZVBhZ2VTbG90KG4pO3MucHVzaChlLmdldFBhZ2UodCkudGhlbihlPT57dGhpcy5vbGRQYWdlc1tuXT1uZXcgUGFnZURhdGEoZSxoKX0pKX19YXdhaXQgUHJvbWlzZS5hbGwocyk7Zm9yKGxldCBlPTAsdD10aGlzLm9sZFBhZ2VzLmxlbmd0aDtlPHQ7ZSsrKWlmKHZvaWQgMD09PXRoaXMub2xkUGFnZXNbZV0pdGhyb3cgbmV3IEVycm9yKCJleHRyYWN0UGFnZXM6IHNwYXJzZSBwYWdlSW5kaWNlcy4iKTtzLmxlbmd0aD0wO3RoaXMuI1FuKGwpO3RoaXMuI1puKGwpO3RoaXMuI2VhKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5vbGRQYWdlcyllJiZzLnB1c2godGhpcy4jdGEoZSkpO2F3YWl0IFByb21pc2UuYWxsKHMpO3RoaXMuI25hKCk7dGhpcy4jYWEobCk7Y29uc3QgYz1uZXcgTWFwO2Zvcihjb25zdCBlIG9mIGYpYy5zZXQoZS5zbG90LGUpO2NvbnN0IGg9Yy5zaXplPjA/dGhpcy4jcmEoKTpudWxsO2ZvcihsZXQgZT0wLHQ9dGhpcy5vbGRQYWdlcy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1jLmdldChlKTt0aGlzLm5ld1BhZ2VzW2VdPXQ/YXdhaXQgdGhpcy4jc2EodC5pbWFnZSxoKTphd2FpdCB0aGlzLiNpYShlLG51bGwpfXRoaXMuI29hKGwpO2F3YWl0IHRoaXMuI2xhKGwpO2F3YWl0IHRoaXMuI2ZhKGwpO3RoaXMuI2NhKGwpO2F3YWl0IHRoaXMuI2hhKGwpO3JldHVybiB0aGlzLndyaXRlUERGKCl9YXN5bmMjSm4oZSl7Y29uc3R7ZG9jdW1lbnQ6e3BkZk1hbmFnZXI6dCx4cmVmOm59fT1lO2F3YWl0IFByb21pc2UuYWxsKFt0LmVuc3VyZUNhdGFsb2coImRlc3RpbmF0aW9ucyIpLnRoZW4odD0+ZS5kZXN0aW5hdGlvbnM9dCksdC5lbnN1cmVDYXRhbG9nKCJyYXdQYWdlTGFiZWxzIikudGhlbih0PT5lLnBhZ2VMYWJlbHM9dCksdC5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLnRoZW4odD0+ZS5zdHJ1Y3RUcmVlUm9vdD10KSx0LmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIikudGhlbih0PT5lLmFjcm9Gb3JtPXQpLHQuZW5zdXJlQ2F0YWxvZygiZG9jdW1lbnRPdXRsaW5lRm9yRWRpdG9yIikudGhlbih0PT5lLm91dGxpbmU9dCksdC5lbnN1cmVDYXRhbG9nKCJyYXdFbWJlZGRlZEZpbGVzIikudGhlbih0PT5lLmVtYmVkZGVkRmlsZXM9dCldKTtjb25zdCBhPWUuc3RydWN0VHJlZVJvb3Q7aWYoYSl7Y29uc3QgdD1hLmRpY3Qscj10LmdldCgiUGFyZW50VHJlZSIpO2lmKHIpe2NvbnN0IHQ9bmV3IE51bWJlclRyZWUocixuKTtlLnBhcmVudFRyZWU9dC5nZXRBbGwoITApfWNvbnN0IHM9dC5nZXQoIklEVHJlZSIpO2lmKHMpe2NvbnN0IHQ9bmV3IE5hbWVUcmVlKHMsbik7ZS5pZFRyZWU9dC5nZXRBbGwoITApfWUucm9sZU1hcD10LmdldCgiUm9sZU1hcCIpfHxudWxsO2UuY2xhc3NNYXA9dC5nZXQoIkNsYXNzTWFwIil8fG51bGw7bGV0IGk9dC5nZXQoIk5hbWVzcGFjZXMiKXx8bnVsbDtpJiYhQXJyYXkuaXNBcnJheShpKSYmKGk9W2ldKTtlLm5hbWVzcGFjZXM9aTtlLnN0cnVjdFRyZWVBRj10LmdldCgiQUYiKXx8bnVsbDtlLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbj10LmdldCgiUHJvbnVuY2lhdGlvbkxleGljb24iKXx8bnVsbH19YXN5bmMjdGEoZSl7Y29uc3R7cGFnZTp7eHJlZjp0LGFubm90YXRpb25zOm59LGRvY3VtZW50RGF0YTp7cGFnZXNNYXA6YSxkZXN0aW5hdGlvbnM6cix1c2VkTmFtZWREZXN0aW5hdGlvbnM6cyxmaWVsZFRvUGFyZW50Oml9fT1lO2lmKCFuKXJldHVybjtjb25zdCBvPVtdO2xldCBsPVtdLGY9MCx7aGFzU2lnbmF0dXJlQW5ub3RhdGlvbnM6Y309ZS5kb2N1bWVudERhdGE7Zm9yKGNvbnN0IGUgb2Ygbil7Y29uc3Qgbj1mKys7by5wdXNoKHQuZmV0Y2hJZlJlZkFzeW5jKGUpLnRoZW4oYXN5bmMgdD0+e2lmKCFpc05hbWUodC5nZXQoIlN1YnR5cGUiKSwiTGluayIpKXtpZihpc05hbWUodC5nZXQoIlN1YnR5cGUiKSwiV2lkZ2V0Iikpe2N8fD1pc05hbWUoZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRlQifSksIlNpZyIpO2NvbnN0IG49dC5nZXRSYXcoIlBhcmVudCIpfHxudWxsO3QuZGVsZXRlKCJQYXJlbnQiKTtpLnB1dChlLG4pfWxbbl09ZTtyZXR1cm59Y29uc3Qgbz10LmdldCgiQSIpO2lmKG8gaW5zdGFuY2VvZiBEaWN0JiYhaXNOYW1lKG8uZ2V0KCJTIiksIkdvVG8iKSl7bFtuXT1lO3JldHVybn1jb25zdCBmPW8gaW5zdGFuY2VvZiBEaWN0P28uZ2V0KCJEIik6dC5nZXQoIkRlc3QiKTtpZihmJiYoIUFycmF5LmlzQXJyYXkoZil8fGZbMF1pbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGZbMF0pKSl7aWYoZiBpbnN0YW5jZW9mIE5hbWV8fCJzdHJpbmciPT10eXBlb2YgZil7Y29uc3QgdD1zdHJpbmdUb1BERlN0cmluZyhmIGluc3RhbmNlb2YgTmFtZT9mLm5hbWU6ZiwhMCk7aWYoci5oYXModCkpe2xbbl09ZTtzLmFkZCh0KX19fWVsc2UgbFtuXT1lfSkpfWF3YWl0IFByb21pc2UuYWxsKG8pO2w9bC5maWx0ZXIoZT0+ISFlKTtlLmFubm90YXRpb25zPWwubGVuZ3RoPjA/bDpudWxsO2UuZG9jdW1lbnREYXRhLmhhc1NpZ25hdHVyZUFubm90YXRpb25zfHw9Y30jYWEoZSl7Zm9yKGNvbnN0e3Bvc3Rwb25lZFJlZkNvcGllczp0LHBhZ2VzTWFwOm59b2YgZSlmb3IoY29uc3QgZSBvZiBuLmtleXMoKSl0LnB1dChlLFtdKX0jb2EoZSl7Zm9yKGNvbnN0e3Bvc3Rwb25lZFJlZkNvcGllczp0LG9sZFJlZk1hcHBpbmc6bn1vZiBlKXtmb3IoY29uc3RbZSxhXW9mIHQuaXRlbXMoKSl7Y29uc3QgdD1uLmdldChlKTtmb3IoY29uc3QgZSBvZiBhKWUodCl9dC5jbGVhcigpfX0jdWEoZSx0LG49bmV3IFJlZlNldCl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoIW4uaGFzKGUpKXtuLnB1dChlKTt0aGlzLiN1YSh0aGlzLnhyZWZbZS5udW1dLHQsbil9cmV0dXJufWlmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcihjb25zdCBhIG9mIGUpdGhpcy4jdWEoYSx0LG4pO3JldHVybn1sZXQgYTtlIGluc3RhbmNlb2YgQmFzZVN0cmVhbT8oe2RpY3Q6YX09ZSk6ZSBpbnN0YW5jZW9mIERpY3QmJihhPWUpO2lmKGEpe3QoYSk7Zm9yKGNvbnN0IGUgb2YgYS5nZXRSYXdWYWx1ZXMoKSl0aGlzLiN1YShlLHQsbil9fWFzeW5jI2xhKGUpe2xldCB0PTA7Y29uc3R7cGFyZW50VHJlZTpufT10aGlzO2ZvcihsZXQgZT0wLGE9dGhpcy5uZXdQYWdlcy5sZW5ndGg7ZTxhO2UrKyl7aWYoIXRoaXMub2xkUGFnZXNbZV0pY29udGludWU7Y29uc3R7ZG9jdW1lbnREYXRhOntwYXJlbnRUcmVlOmEsb2xkUmVmTWFwcGluZzpyLG9sZFN0cnVjdFBhcmVudE1hcHBpbmc6cyx1c2VkU3RydWN0UGFyZW50czppLGRvY3VtZW50Ont4cmVmOm99fX09dGhpcy5vbGRQYWdlc1tlXTtpZighYSljb250aW51ZTtjb25zdCBsPXRoaXMubmV3UGFnZXNbZV0sZj10aGlzLnhyZWZbbC5udW1dLGM9bmV3IFJlZlNldDtjLnB1dChsKTt0aGlzLiN1YShmLGU9Pntjb25zdCBsPWUuZ2V0KCJTdHJ1Y3RQYXJlbnQiKT8/ZS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZigibnVtYmVyIiE9dHlwZW9mIGwpcmV0dXJuO2kuYWRkKGwpO2xldCBmPWEuZ2V0KGwpO2NvbnN0IGM9ZiBpbnN0YW5jZW9mIFJlZj9mOm51bGw7aWYoYyl7Y29uc3QgZT1vLmZldGNoKGMpO0FycmF5LmlzQXJyYXkoZSkmJihmPWUpfUFycmF5LmlzQXJyYXkoZikmJmYuZXZlcnkoZT0+bnVsbD09PWUpJiYoZj1udWxsKTtpZighZil7ZS5oYXMoIlN0cnVjdFBhcmVudCIpP2UuZGVsZXRlKCJTdHJ1Y3RQYXJlbnQiKTplLmRlbGV0ZSgiU3RydWN0UGFyZW50cyIpO3JldHVybn1sZXQgaD1zLmdldChsKTtpZih2b2lkIDA9PT1oKXtoPXQrKztzLnNldChsLGgpO24uc2V0KGgsW3IsZl0pfWUuaGFzKCJTdHJ1Y3RQYXJlbnQiKT9lLnNldCgiU3RydWN0UGFyZW50IixoKTplLnNldCgiU3RydWN0UGFyZW50cyIsaCl9LGMpfWNvbnN0e3N0cnVjdFRyZWVLaWRzOmEsaWRUcmVlOnIsY2xhc3NNYXA6cyxyb2xlTWFwOmksbmFtZXNwYWNlczpvLHN0cnVjdFRyZWVBRjpsLHN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbjpmfT10aGlzO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0e2RvY3VtZW50Ont4cmVmOmV9LG9sZFJlZk1hcHBpbmc6bixwYXJlbnRUcmVlOmMsdXNlZFN0cnVjdFBhcmVudHM6aCxzdHJ1Y3RUcmVlUm9vdDp1LGlkVHJlZTptLGNsYXNzTWFwOnAscm9sZU1hcDpkLG5hbWVzcGFjZXM6ZyxzdHJ1Y3RUcmVlQUY6YixzdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb246d309dDtpZighdSljb250aW51ZTt0aGlzLmN1cnJlbnREb2N1bWVudD10O2NvbnN0IGo9bmV3IFJlZlNldDtmb3IoY29uc3RbZSx0XW9mIGN8fFtdKSFoLmhhcyhlKSYmdCBpbnN0YW5jZW9mIFJlZiYmai5wdXQodCk7Y29uc3Qgaz1uZXcgTWFwO2Zvcihjb25zdFtlLHRdb2YgbXx8W10pe2xldCBuPWU7aWYoci5oYXMoZSkpZm9yKGxldCB0PTE7O3QrKyl7Y29uc3QgYT1gJHtlfV8ke3R9YDtpZighci5oYXMoYSkpe2suc2V0KGUsYSk7bj1hO2JyZWFrfX1yLnNldChuLHQpfWNvbnN0IHk9bmV3IE1hcDtpZihwPy5zaXplPjApZm9yKGxldFt0LG5db2YgcCl7bj1hd2FpdCB0aGlzLiNFbihuLCEwLGUpO2lmKHMuaGFzKHQpKWZvcihsZXQgZT0xOztlKyspe2NvbnN0IG49YCR7dH1fJHtlfWA7aWYoIXMuaGFzKG4pKXt5LnNldCh0LG4pO3Q9bjticmVha319cy5zZXQodCxuKX1jb25zdCBxPW5ldyBNYXA7aWYoZD8uc2l6ZT4wKWZvcihjb25zdFtlLHRdb2YgZCl7Y29uc3Qgbj1pLmdldChlKTtpZihuKXtpZihuIT09dClmb3IobGV0IG49MTs7bisrKXtjb25zdCBhPWAke2V9XyR7bn1gO2lmKCFpLmhhcyhhKSl7cS5zZXQoZSxhKTtpLnNldChhLHQpO2JyZWFrfX19ZWxzZSBpLnNldChlLHQpfWlmKGc/Lmxlbmd0aD4wKWZvcihjb25zdCB0IG9mIGcpe2NvbnN0IG49YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7bGV0IGE9bi5nZXQoIk5TIik7aWYoIWF8fG8uaGFzKGEpKWNvbnRpbnVlO2E9c3RyaW5nVG9QREZTdHJpbmcoYSwhMSk7Y29uc3Qgcj1hd2FpdCB0aGlzLiNFbihuLCEwLGUpO28uc2V0KGEscil9aWYoYilmb3IoY29uc3QgdCBvZiBiKWwucHVzaChhd2FpdCB0aGlzLiNFbih0LCEwLGUpKTtpZih3KWZvcihjb25zdCB0IG9mIHcpZi5wdXNoKGF3YWl0IHRoaXMuI0VuKHQsITAsZSkpO2NvbnN0IHY9dS5kaWN0LmdldFJhdygiSyIpO2lmKCF2KWNvbnRpbnVlO2NvbnN0IFM9YXdhaXQgdGhpcy4jR24odixlKTtmb3IobGV0IHQgb2YgUyl7Y29uc3Qgcj10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDt0PWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2xldCBzPSExO2lmKHImJmouaGFzKHIpKXtpZighaXNOYW1lKHQuZ2V0KCJTIiksIkxpbmsiKSljb250aW51ZTtzPSEwfWNvbnN0IGk9YXdhaXQgdGhpcy4jVm4ocix0LGUsaixrLHkscSk7aWYoaSl7YS5wdXNoKGkpO3ImJm4ucHV0KHIsaSk7cyYmdGhpcy54cmVmW2kubnVtXS5zZXRJZk5hbWUoIlMiLCJTcGFuIil9fWZvcihjb25zdFtlLHRdb2YgbXx8W10pe2NvbnN0IGE9dCBpbnN0YW5jZW9mIFJlZiYmbi5nZXQodCkscz1rLmdldChlKXx8ZTthP3Iuc2V0KHMsYSk6ci5kZWxldGUocyl9fWZvcihjb25zdFtlLFt0LGFdXW9mIG4pe2lmKCFhKXtuLmRlbGV0ZShlKTtjb250aW51ZX1pZighQXJyYXkuaXNBcnJheShhKSl7Y29uc3Qgcj10LmdldChhKTt2b2lkIDA9PT1yP24uZGVsZXRlKGUpOm4uc2V0KGUscik7Y29udGludWV9Y29uc3Qgcj1hLm1hcChlPT5lIGluc3RhbmNlb2YgUmVmJiZ0LmdldChlKXx8bnVsbCk7MD09PXIubGVuZ3RofHxyLmV2ZXJ5KGU9Pm51bGw9PT1lKT9uLmRlbGV0ZShlKTpuLnNldChlLHIpfXRoaXMuY3VycmVudERvY3VtZW50PW51bGx9I1FuKGUpe2Zvcihjb25zdCB0IG9mIGUpe2lmKCF0LmRlc3RpbmF0aW9ucyljb250aW51ZTtjb25zdHtkZXN0aW5hdGlvbnM6ZSxwYWdlc01hcDpufT10LGE9dC5kZXN0aW5hdGlvbnM9bmV3IE1hcDtmb3IoY29uc3RbdCxyXW9mIGUpe2NvbnN0IGU9clswXSxzPWUgaW5zdGFuY2VvZiBSZWYmJm4uZ2V0KGUpO2lmKHMpeyhzLnBvaW50aW5nTmFtZWREZXN0aW5hdGlvbnN8fD1uZXcgU2V0KS5hZGQodCk7YS5zZXQodCxyKX19fX0jbmEoKXtjb25zdHtuYW1lZERlc3RpbmF0aW9uczplfT10aGlzLGdldFVuaXF1ZURlc3RpbmF0aW9uTmFtZT10PT57aWYoIWUuaGFzKHQpKXJldHVybiB0O2ZvcihsZXQgbj0xOztuKyspe2NvbnN0IGE9YCR7dH1fJHtufWA7aWYoIWUuaGFzKGEpKXJldHVybiBhfX07Zm9yKGxldCB0PTAsbj10aGlzLm9sZFBhZ2VzLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPXRoaXMub2xkUGFnZXNbdF07aWYoIW4pY29udGludWU7Y29uc3R7ZG9jdW1lbnREYXRhOntkZXN0aW5hdGlvbnM6YSxkZWR1cE5hbWVkRGVzdGluYXRpb25zOnIsdXNlZE5hbWVkRGVzdGluYXRpb25zOnN9fT1uO2xldHtwb2ludGluZ05hbWVkRGVzdGluYXRpb25zOml9PW47aWYoaSl7bi5wb2ludGluZ05hbWVkRGVzdGluYXRpb25zPWk9aS5pbnRlcnNlY3Rpb24ocyk7Zm9yKGNvbnN0IG4gb2YgaSl7aWYoIXMuaGFzKG4pKWNvbnRpbnVlO2NvbnN0IGk9YS5nZXQobikuc2xpY2UoKTtpZighZS5oYXMobikpe2Uuc2V0KG4saSk7Y29udGludWV9Y29uc3Qgbz1nZXRVbmlxdWVEZXN0aW5hdGlvbk5hbWUoYCR7bn1fcCR7dCsxfWApO3Iuc2V0KG4sbyk7ZS5zZXQobyxpKX19fX0jbWEoZSx0KXtpZigwPT09dC5zaXplKXJldHVybjtjb25zdCBmaXhEZXN0aW5hdGlvbj0oZSxuLGEpPT57InN0cmluZyI9PXR5cGVvZiBhJiZlLnNldChuLHQuZ2V0KHN0cmluZ1RvUERGU3RyaW5nKGEsITApKXx8YSl9O2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dGhpcy54cmVmW3QubnVtXTtpZighaXNOYW1lKGUuZ2V0KCJTdWJ0eXBlIiksIkxpbmsiKSljb250aW51ZTtjb25zdCBuPWUuZ2V0KCJBIik7aWYobiBpbnN0YW5jZW9mIERpY3QmJm4uaGFzKCJEIikpe2NvbnN0IGU9bi5nZXQoIkQiKTtmaXhEZXN0aW5hdGlvbihuLCJEIixlKTtjb250aW51ZX1jb25zdCBhPWUuZ2V0KCJEZXN0Iik7Zml4RGVzdGluYXRpb24oZSwiRGVzdCIsYSl9fSNabihlKXtjb25zdCBjb2xsZWN0PShlLHQsbik9Pntmb3IoY29uc3QgYSBvZiBlKXsic3RyaW5nIj09dHlwZW9mIGEuZGVzdCYmdD8uaGFzKGEuZGVzdCkmJm4uYWRkKGEuZGVzdCk7YS5pdGVtcy5sZW5ndGg+MCYmY29sbGVjdChhLml0ZW1zLHQsbil9fTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdHtvdXRsaW5lOmUsZGVzdGluYXRpb25zOm4sdXNlZE5hbWVkRGVzdGluYXRpb25zOmF9PXQ7ZT8ubGVuZ3RoJiZjb2xsZWN0KGUsbixhKX19I3BhKGUsdCl7Y29uc3R7ZGVzdDpuLGFjdGlvbjphLHVybDpyLHVuc2FmZVVybDpzLGF0dGFjaG1lbnQ6aSxzZXRPQ0dTdGF0ZTpvfT1lO2lmKGF8fHJ8fHN8fGl8fG8pcmV0dXJuITA7aWYoIW4pcmV0dXJuITE7aWYoInN0cmluZyI9PXR5cGVvZiBuKXtjb25zdCBlPXQuZGVkdXBOYW1lZERlc3RpbmF0aW9ucy5nZXQobil8fG47cmV0dXJuIHRoaXMubmFtZWREZXN0aW5hdGlvbnMuaGFzKGUpfXJldHVybiEhKEFycmF5LmlzQXJyYXkobikmJm5bMF1pbnN0YW5jZW9mIFJlZikmJiEhdC5vbGRSZWZNYXBwaW5nLmdldChuWzBdKX0jZGEoZSx0KXtjb25zdCBuPVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy4jZGEoYS5pdGVtcyx0KSxyPXRoaXMuI3BhKGEsdCk7KHJ8fGUubGVuZ3RoPjApJiZuLnB1c2goey4uLmEsZGVzdDpyP2EuZGVzdDpudWxsLHJhd0RpY3Q6cj9hLnJhd0RpY3Q6bnVsbCxpdGVtczplLF9kb2N1bWVudERhdGE6dH0pfXJldHVybiBufSNjYShlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0e291dGxpbmU6ZX09bjtlPy5sZW5ndGgmJnQucHVzaCguLi50aGlzLiNkYShlLG4pKX10aGlzLm91dGxpbmVJdGVtcz10Lmxlbmd0aD4wP3Q6bnVsbH1hc3luYyNnYShlLHQpe2NvbnN0e2Rlc3Q6bixyYXdEaWN0OmF9PXQscj10Ll9kb2N1bWVudERhdGE7aWYobil7aWYoInN0cmluZyI9PXR5cGVvZiBuKXtjb25zdCB0PXIuZGVkdXBOYW1lZERlc3RpbmF0aW9ucy5nZXQobil8fG47ZS5zZXQoIkRlc3QiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUodCkpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3QgdD1uLnNsaWNlKCk7dFswXWluc3RhbmNlb2YgUmVmJiYodFswXT1yLm9sZFJlZk1hcHBpbmcuZ2V0KHRbMF0pfHx0WzBdKTtlLnNldCgiRGVzdCIsdCl9cmV0dXJufWNvbnN0IHM9YT8uZ2V0KCJBIik7aWYocyBpbnN0YW5jZW9mIERpY3Qpe3RoaXMuY3VycmVudERvY3VtZW50PXI7Y29uc3QgdD1hd2FpdCB0aGlzLiNfbihzLHIuZG9jdW1lbnQueHJlZik7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbDtlLnNldCgiQSIsdCl9fWFzeW5jI2JhKCl7Y29uc3R7b3V0bGluZUl0ZW1zOmV9PXRoaXM7aWYoIWU/Lmxlbmd0aClyZXR1cm47Y29uc3RbdCxuXT10aGlzLm5ld0RpY3Q7bi5zZXRJZk5hbWUoIlR5cGUiLCJPdXRsaW5lcyIpO2NvbnN0IGFzc2lnblJlZnM9ZT0+e2Zvcihjb25zdCB0IG9mIGUpe1t0Ll9yZWZdPXRoaXMubmV3RGljdDt0Lml0ZW1zLmxlbmd0aD4wJiZhc3NpZ25SZWZzKHQuaXRlbXMpfX07YXNzaWduUmVmcyhlKTtjb25zdCBmaWxsSXRlbXM9YXN5bmMoZSx0KT0+e2xldCBuPTA7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IHI9ZVthXSxzPXRoaXMueHJlZltyLl9yZWYubnVtXTtzLnNldCgiVGl0bGUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoci50aXRsZSkpO3Muc2V0KCJQYXJlbnQiLHQpO2E+MCYmcy5zZXQoIlByZXYiLGVbYS0xXS5fcmVmKTthPGUubGVuZ3RoLTEmJnMuc2V0KCJOZXh0IixlW2ErMV0uX3JlZik7aWYoci5pdGVtcy5sZW5ndGg+MCl7cy5zZXQoIkZpcnN0IixyLml0ZW1zWzBdLl9yZWYpO3Muc2V0KCJMYXN0IixyLml0ZW1zLmF0KC0xKS5fcmVmKTtjb25zdCBlPWF3YWl0IGZpbGxJdGVtcyhyLml0ZW1zLHIuX3JlZik7dm9pZCAwIT09ci5jb3VudCYmcy5zZXQoIkNvdW50IixyLmNvdW50PDA/LWU6ZSk7bis9dm9pZCAwIT09ci5jb3VudCYmci5jb3VudDwwPzE6ZSsxfWVsc2Ugbis9MTthd2FpdCB0aGlzLiNnYShzLHIpO2NvbnN0IGk9KHIuYm9sZD8yOjApfChyLml0YWxpYz8xOjApOzAhPT1pJiZzLnNldCgiRiIsaSk7IXIuY29sb3J8fDA9PT1yLmNvbG9yWzBdJiYwPT09ci5jb2xvclsxXSYmMD09PXIuY29sb3JbMl18fHMuc2V0KCJDIixbci5jb2xvclswXS8yNTUsci5jb2xvclsxXS8yNTUsci5jb2xvclsyXS8yNTVdKX1yZXR1cm4gbn0sYT1hd2FpdCBmaWxsSXRlbXMoZSx0KTtuLnNldCgiRmlyc3QiLGVbMF0uX3JlZik7bi5zZXQoIkxhc3QiLGUuYXQoLTEpLl9yZWYpO24uc2V0KCJDb3VudCIsYSk7dGhpcy5yb290RGljdC5zZXQoIk91dGxpbmVzIix0KX1hc3luYyNmYShlKXt0aGlzLiN3YShlKTt0aGlzLiNqYShlKTt0aGlzLiNrYShlKTthd2FpdCB0aGlzLiN5YShlKTtjb25zdCB0PXRoaXMuZmllbGRzO2Zvcihjb25zdCBuIG9mIGUpe2xldCBlPW4uYWNyb0Zvcm0/LmdldCgiRmllbGRzIil8fG51bGw7IWUmJm4uZmllbGRUb1BhcmVudC5zaXplPjAmJihlPXRoaXMuI3FhKG4uZmllbGRUb1BhcmVudCxuLmRvY3VtZW50LnhyZWYpKTtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzLmN1cnJlbnREb2N1bWVudD1uO2F3YWl0IHRoaXMuI3ZhKHQsZSk7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbH19dGhpcy4jU2EoZSl9I2thKGUpe2xldCB0PTAsbj1udWxsO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9YS5hY3JvRm9ybT8uZ2V0KCJRIik7aWYoIm51bWJlciI9PXR5cGVvZiBlJiYwIT09ZSlpZihuPy5hY3JvRm9ybVE+MClhLmFjcm9Gb3JtUT1lO2Vsc2UgaWYoMCE9PXQpe2lmKGUhPT10KXtuLmFjcm9Gb3JtUXx8PXQ7YS5hY3JvRm9ybVE9ZTt0PTB9fWVsc2V7dD1lO249YX19dD4wJiYodGhpcy5hY3JvRm9ybVE9dCl9I3dhKGUpe2xldCB0PTAsbj0hMTtmb3IoY29uc3QgYSBvZiBlKXtpZighYS5hY3JvRm9ybSljb250aW51ZTtjb25zdCBlPWEuYWNyb0Zvcm0uZ2V0KCJTaWdGbGFncyIpOyJudW1iZXIiPT10eXBlb2YgZSYmYS5oYXNTaWduYXR1cmVBbm5vdGF0aW9ucyYmKHR8PWUpOyEwPT09YS5hY3JvRm9ybS5nZXQoIk5lZWRBcHBlYXJhbmNlcyIpJiYobj0hMCl9dGhpcy5hY3JvRm9ybVNpZ0ZsYWdzPXQ7dGhpcy5hY3JvRm9ybU5lZWRBcHBlYXJhbmNlcz1ufSNTYShlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IGU9bi5hY3JvRm9ybT8uZ2V0KCJDTyIpfHxudWxsO2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2NvbnN0e29sZFJlZk1hcHBpbmc6YX09bjtmb3IoY29uc3QgbiBvZiBlKXtjb25zdCBlPW4gaW5zdGFuY2VvZiBSZWYmJmEuZ2V0KG4pO2UmJnQucHVzaChlKX19dGhpcy5hY3JvRm9ybUNhbGN1bGF0aW9uT3JkZXI9dC5sZW5ndGg+MD90Om51bGx9I2phKGUpe2xldCB0PW51bGwsbj1udWxsO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9YS5hY3JvRm9ybT8uZ2V0KCJEQSIpfHxudWxsO2lmKGUmJiJzdHJpbmciPT10eXBlb2YgZSlpZihuPy5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlKWEuYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZT1lO2Vsc2UgaWYodCl7aWYoZSE9PXQpe24uYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZXx8PXQ7YS5hY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlPWU7dD1udWxsfX1lbHNle3Q9ZTtuPWF9fXQmJih0aGlzLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2U9dCl9YXN5bmMjeWEoZSl7bGV0IHQ9bnVsbCxuPW51bGwsYT1udWxsO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9ci5hY3JvRm9ybT8uZ2V0KCJEUiIpfHxudWxsO2lmKGUmJmUgaW5zdGFuY2VvZiBEaWN0KWlmKGE/LmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlcylyLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlcz1lO2Vsc2UgaWYodCl7aWYoIWRlZXBDb21wYXJlKHQsZSkpe2EuYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzfHw9dDtyLmFjcm9Gb3JtRGVmYXVsdFJlc291cmNlcz1lO3Q9bnVsbDtuPW51bGx9fWVsc2V7dD1lO249ci5hY3JvRm9ybS5nZXRSYXcoIkRSIik7YT1yfX1pZih0KXt0aGlzLmN1cnJlbnREb2N1bWVudD1hO3RoaXMuYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzPWF3YWl0IHRoaXMuI0VuKG4sITAsYS5kb2N1bWVudC54cmVmKTt0aGlzLmN1cnJlbnREb2N1bWVudD1udWxsfX0jcWEoZSx0KXtjb25zdCBuPVtdLGE9bmV3IFJlZlNldDtmb3IoY29uc3RbcixzXW9mIGUuaXRlbXMoKSl7aWYoIXMpe24ucHVzaChyKTtjb250aW51ZX1sZXQgZT1zLGk9cztmb3IoOzspe2U9dC5mZXRjaElmUmVmKGUpPy5nZXRSYXcoIlBhcmVudCIpfHxudWxsO2lmKCFlKWJyZWFrO2k9ZX1pZihpIGluc3RhbmNlb2YgUmVmJiYhYS5oYXMoaSkpe24ucHVzaChpKTthLnB1dChpKX19cmV0dXJuIG59YXN5bmMjdmEoZSx0KXtjb25zdCBuPW5ldyBSZWZTZXQsYT1be2tpZHM6dCxuZXdLaWRzOmUscG9zOjAsb2xkUGFyZW50UmVmOm51bGwscGFyZW50UmVmOm51bGwscGFyZW50Om51bGx9XSx7ZG9jdW1lbnQ6e3hyZWY6cn0sb2xkUmVmTWFwcGluZzpzLGZpZWxkVG9QYXJlbnQ6aSxhY3JvRm9ybURlZmF1bHRBcHBlYXJhbmNlOm8sYWNyb0Zvcm1EZWZhdWx0UmVzb3VyY2VzOmwsYWNyb0Zvcm1ROmZ9PXRoaXMuY3VycmVudERvY3VtZW50LGM9W10saD1bXTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCBlPWEuYXQoLTEpLHtraWRzOnQsbmV3S2lkczp1LHBhcmVudDptLHBvczpwfT1lO2lmKHA9PT10Lmxlbmd0aCl7YS5wb3AoKTtpZigwPT09dS5sZW5ndGh8fCFtKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy54cmVmW2UucGFyZW50UmVmLm51bV09dGhpcy5jbG9uZURpY3QobSk7dC5kZWxldGUoIlBhcmVudCIpO3QuZGVsZXRlKCJLaWRzIik7YXdhaXQgdGhpcy4jRW4odCwhMSxyKTt0LnNldCgiS2lkcyIsdSk7aWYoYS5sZW5ndGg+MCl7Y29uc3Qgbj1hLmF0KC0xKTtpZighbi5wYXJlbnRSZWYmJm4ub2xkUGFyZW50UmVmKXtjb25zdCBlPW4ucGFyZW50UmVmPXRoaXMubmV3UmVmO3Quc2V0KCJQYXJlbnQiLGUpO3MucHV0KG4ub2xkUGFyZW50UmVmLGUpfW4ubmV3S2lkcy5wdXNoKGUucGFyZW50UmVmKX1jb250aW51ZX1jb25zdCBkPXRbZS5wb3MrK107aWYoIShkIGluc3RhbmNlb2YgUmVmKXx8bi5oYXMoZCkpY29udGludWU7bi5wdXQoZCk7Y29uc3QgZz1yLmZldGNoSWZSZWYoZCk7aWYoZy5oYXMoIktpZHMiKSl7Y29uc3QgZT1nLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2EucHVzaCh7a2lkczplLG5ld0tpZHM6W10scG9zOjAsb2xkUGFyZW50UmVmOmQscGFyZW50UmVmOm51bGwscGFyZW50Omd9KTtjb250aW51ZX1pZighaS5oYXMoZCkpY29udGludWU7Y29uc3QgYj1zLmdldChkKTtpZighYiljb250aW51ZTt1LnB1c2goYik7aWYoIWUucGFyZW50UmVmJiZlLm9sZFBhcmVudFJlZil7ZS5wYXJlbnRSZWY9dGhpcy5uZXdSZWY7cy5wdXQoZS5vbGRQYXJlbnRSZWYsZS5wYXJlbnRSZWYpfWNvbnN0IHc9dGhpcy54cmVmW2IubnVtXTtlLnBhcmVudFJlZiYmdy5zZXQoIlBhcmVudCIsZS5wYXJlbnRSZWYpO28mJiF3LmhhcygiREEiKSYmYy5wdXNoKHcpO2wmJiF3LmhhcygiS2lkcyIpJiZ3LmdldCgiQVAiKWluc3RhbmNlb2YgRGljdCYmaC5wdXNoKHcpO2YmJiF3LmhhcygiUSIpJiZ3LnNldCgiUSIsZil9Zm9yKGNvbnN0IGUgb2YgYyl7aWYoIWlzTmFtZShnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OiJGVCJ9KSwiVHgiKSljb250aW51ZTtnZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OmUsa2V5OiJEQSJ9KXx8ZS5zZXQoIkRBIixvKX1jb25zdCB1PW5ldyBNYXAsZml4QXBwZWFyYW5jZVJlc291cmNlcz1hc3luYyBlPT57bGV0IHQ9ZS5kaWN0LmdldFJhdygiUmVzb3VyY2VzIik7dCYmPXRoaXMueHJlZldyYXBwZXIuZmV0Y2hJZlJlZih0KTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSl7Y29uc3QgdD1hd2FpdCB1LmdldE9ySW5zZXJ0Q29tcHV0ZWQobCwoKT0+dGhpcy4jX24obCxyKSk7ZS5kaWN0LnNldCgiUmVzb3VyY2VzIix0KTtyZXR1cm59Zm9yKGNvbnN0W2Usbl1vZiBsLmdldFJhd0VudHJpZXMoKSl7aWYodC5oYXMoZSkpY29udGludWU7bGV0IGE9bjtuIGluc3RhbmNlb2YgUmVmP2E9YXdhaXQgdGhpcy4jRW4obiwhMCxyKToobiBpbnN0YW5jZW9mIERpY3R8fG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KG4pKSYmKGE9YXdhaXQgdS5nZXRPckluc2VydENvbXB1dGVkKG4sKCk9PnRoaXMuI19uKG4scikpKTt0LnNldChlLGEpfX07Zm9yKGNvbnN0IGUgb2YgaCl7Y29uc3QgdD1lLmdldCgiQVAiKTtmb3IoY29uc3RbLGVdb2YgdClpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhd2FpdCBmaXhBcHBlYXJhbmNlUmVzb3VyY2VzKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0Wyx0XW9mIGUpdCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmF3YWl0IGZpeEFwcGVhcmFuY2VSZXNvdXJjZXModCl9fWFzeW5jI2VhKCl7aWYoIXRoaXMuaXNTaW5nbGVGaWxlKXJldHVybjtjb25zdCBlPXRoaXMub2xkUGFnZXMuZmluZChlPT4hIWUpO2lmKCFlKXJldHVybjtjb25zdHtkb2N1bWVudERhdGE6e2RvY3VtZW50OnQscGFnZUxhYmVsczpufX09ZTtpZighbilyZXR1cm47Y29uc3QgYT10Lm51bVBhZ2VzLHI9bmV3IE1hcCxzPW5ldyBTZXQodGhpcy5vbGRQYWdlcy5maWx0ZXIoZT0+ISFlKS5tYXAoKHtwYWdlOntwYWdlSW5kZXg6ZX19KT0+ZSkpO2xldCBpPW51bGwsbz0tMTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQpe2k9dDtvPWkuaGFzKCJTdCIpP2U6LTF9aWYocy5oYXMoZSkpe2lmKC0xIT09byl7Y29uc3QgdD1pLmdldCgiU3QiKTtpPXRoaXMuY2xvbmVEaWN0KGkpO2kuc2V0KCJTdCIsdCsoZS1vKSk7bz0tMX1yLnNldChlLGkpfX1jb25zdCBkZWZhdWx0TGFiZWw9ZT0+e2NvbnN0IHQ9bmV3IERpY3Q7dC5zZXRJZk5hbWUoIlMiLCJEIik7dC5zZXQoIlN0IixlKzEpO3JldHVybiB0fTtpPW51bGw7Y29uc3QgbD10aGlzLnBhZ2VMYWJlbHM9W107Zm9yKGxldCBlPTAsdD10aGlzLm9sZFBhZ2VzLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXRoaXMub2xkUGFnZXNbZV0sbj10JiZyLmdldCh0LnBhZ2UucGFnZUluZGV4KXx8ZGVmYXVsdExhYmVsKGUpO2lmKG4hPT1pKXtpPW47bC5wdXNoKFtlLGldKX19fWFzeW5jI2lhKGUpe2NvbnN0e3BhZ2U6dCxkb2N1bWVudERhdGE6bixhbm5vdGF0aW9uczphLHBvaW50aW5nTmFtZWREZXN0aW5hdGlvbnM6cn09dGhpcy5vbGRQYWdlc1tlXTt0aGlzLmN1cnJlbnREb2N1bWVudD1uO2NvbnN0e2RlZHVwTmFtZWREZXN0aW5hdGlvbnM6cyxvbGRSZWZNYXBwaW5nOml9PW4se3hyZWY6byxyb3RhdGU6bCxtZWRpYUJveDpmLHJlc291cmNlczpjLHJlZjpofT10LHU9dGhpcy5uZXdSZWYsbT10aGlzLnhyZWZbdS5udW1dPXRoaXMuY2xvbmVEaWN0KHQucGFnZURpY3QpO2kucHV0KGgsdSk7aWYocilmb3IoY29uc3QgZSBvZiByKXtjb25zdCB0PXMuZ2V0KGUpfHxlO3RoaXMubmFtZWREZXN0aW5hdGlvbnMuZ2V0KHQpWzBdPXV9Zm9yKGNvbnN0IGUgb2ZbIlJvdGF0ZSIsIk1lZGlhQm94IiwiQ3JvcEJveCIsIkJsZWVkQm94IiwiVHJpbUJveCIsIkFydEJveCIsIlJlc291cmNlcyIsIkFubm90cyIsIlBhcmVudCIsIlVzZXJVbml0Il0pbS5kZWxldGUoZSk7Y29uc3QgcD10aGlzLm5ld1JlZkNvdW50O2F3YWl0IHRoaXMuI0VuKG0sITEsbyk7bS5zZXQoIlJvdGF0ZSIsbCk7bS5zZXQoIk1lZGlhQm94IixmKTtmb3IoY29uc3QgZSBvZlsiQ3JvcEJveCIsIkJsZWVkQm94IiwiVHJpbUJveCIsIkFydEJveCJdKXtjb25zdCBuPXQuZ2V0Qm91bmRpbmdCb3goZSk7bj8uc29tZSgoZSx0KT0+ZSE9PWZbdF0pJiZtLnNldChlLG4pfWNvbnN0IGQ9dC51c2VyVW5pdDsxIT09ZCYmbS5zZXQoIlVzZXJVbml0IixkKTttLnNldElmRGljdCgiUmVzb3VyY2VzIixhd2FpdCB0aGlzLiNFbihjLCEwLG8pKTtsZXQgZz1udWxsO2lmKGEpe2NvbnN0IGU9YXdhaXQgdGhpcy4jRW4oYSwhMCxvKTt0aGlzLiNtYShlLHMpO0FycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoPjAmJihnPWUpfWNvbnN0IGI9bi5kb2N1bWVudD09PXRoaXMuI05uP3RoaXMuI01uPy5uZXdBbm5vdGF0aW9uc0J5UGFnZT8uZ2V0KHQucGFnZUluZGV4KTpudWxsO2lmKGIpe2NvbnN0e2hhbmRsZXI6ZSx0YXNrOm4saW1hZ2VzUHJvbWlzZXM6YX09dGhpcy4jTW4scj1uZXcgUmVmU2V0Q2FjaGUscz1hd2FpdCBBbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnModC5jcmVhdGVBbm5vdGF0aW9uRXZhbHVhdG9yKGUpLHRoaXMueHJlZldyYXBwZXIsbixiLGEscik7Zm9yKGNvbnN0W2Use2RhdGE6dH1db2Ygci5pdGVtcygpKXRoaXMueHJlZltlLm51bV09dDtnfHw9W107Zm9yKGNvbnN0e3JlZjplfW9mIHMuYW5ub3RhdGlvbnMpZy5wdXNoKGUpfW0uc2V0SWZBcnJheSgiQW5ub3RzIixnKTtpZih0aGlzLnVzZU9iamVjdFN0cmVhbXMpe2NvbnN0IGU9dGhpcy5uZXdSZWZDb3VudCx0PVtdO2ZvcihsZXQgbj1wO248ZTtuKyspe3RoaXMueHJlZltuXWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dC5wdXNoKFJlZi5nZXQobiwwKSl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz02NTUzNSl7Y29uc3Qgbj10aGlzLm5ld1JlZjt0aGlzLm9ialN0cmVhbVJlZnMuYWRkKG4ubnVtKTt0aGlzLnhyZWZbbi5udW1dPXQuc2xpY2UoZSxlKzY1NTM1KX19dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbDtyZXR1cm4gdX0jcmEoKXtjb25zdCBlPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgdGhpcy5vbGRQYWdlcyl7aWYoIXQpY29udGludWU7Y29uc3R7cGFnZTpufT10LFthLHIscyxpXT1uLnZpZXc7bGV0IG89cy1hLGw9aS1yO2lmKG88PTB8fGw8PTApY29udGludWU7bi5yb3RhdGUlMTgwIT0wJiYoW28sbF09W2wsb10pO2NvbnN0IGY9YCR7b314JHtsfWAsYz1lLmdldChmKTtjP2MuY291bnQrKzplLnNldChmLHt3aWR0aDpvLGhlaWdodDpsLGNvdW50OjF9KX1pZigwPT09ZS5zaXplKXtjb25zdFssLGUsdF09T2Y7cmV0dXJue3dpZHRoOmUsaGVpZ2h0OnR9fWxldCB0PW51bGw7Zm9yKGNvbnN0IG4gb2YgZS52YWx1ZXMoKSkoIXR8fG4uY291bnQ+dC5jb3VudHx8bi5jb3VudD09PXQuY291bnQmJm4ud2lkdGgqbi5oZWlnaHQ+dC53aWR0aCp0LmhlaWdodCkmJih0PW4pO3JldHVybnt3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19YXN5bmMjc2EoZSx0KXtjb25zdHt3aWR0aDpuLGhlaWdodDphfT10LHI9LjEqbixzPU1hdGgubWF4KDEsbi0yKnIpLGk9TWF0aC5tYXgoMSxhLTIqciksbz10aGlzLm5ld1JlZkNvdW50LHtpbWFnZVN0cmVhbTpsLHNtYXNrU3RyZWFtOmYsd2lkdGg6YyxoZWlnaHQ6aH09YXdhaXQgY3JlYXRlSW1hZ2UoZSx0aGlzLnhyZWZXcmFwcGVyLHtjbG9zZUJpdG1hcDohMH0pLHU9TWF0aC5taW4ocy9jLGkvaCksbT1jKnUscD1oKnUsZD0obi1tKS8yLGc9KGEtcCkvMjtpZihmKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09ZjtsLmRpY3Quc2V0KCJTTWFzayIsZSl9Y29uc3QgYj10aGlzLm5ld1JlZjt0aGlzLnhyZWZbYi5udW1dPWw7Y29uc3Qgdz1uZXcgRGljdCh0aGlzLnhyZWZXcmFwcGVyKTt3LnNldCgiSW0wIixiKTtjb25zdCBqPW5ldyBEaWN0KHRoaXMueHJlZldyYXBwZXIpO2ouc2V0KCJYT2JqZWN0Iix3KTtqLnNldCgiUHJvY1NldCIsW05hbWUuZ2V0KCJQREYiKSxOYW1lLmdldCgiSW1hZ2VDIildKTtjb25zdCBrPWBxICR7bnVtYmVyVG9TdHJpbmcobSl9IDAgMCAke251bWJlclRvU3RyaW5nKHApfSAke251bWJlclRvU3RyaW5nKGQpfSAke251bWJlclRvU3RyaW5nKGcpfSBjbSAvSW0wIERvIFFgLHk9bmV3IFN0cmluZ1N0cmVhbShrLG5ldyBEaWN0KHRoaXMueHJlZldyYXBwZXIpKSxxPXRoaXMubmV3UmVmO3RoaXMueHJlZltxLm51bV09eTtjb25zdCB2PXRoaXMubmV3UmVmLFM9dGhpcy54cmVmW3YubnVtXT1uZXcgRGljdCh0aGlzLnhyZWZXcmFwcGVyKTtTLnNldElmTmFtZSgiVHlwZSIsIlBhZ2UiKTtTLnNldCgiTWVkaWFCb3giLFswLDAsbixhXSk7Uy5zZXQoIlJlc291cmNlcyIsaik7Uy5zZXQoIkNvbnRlbnRzIixxKTtpZih0aGlzLnVzZU9iamVjdFN0cmVhbXMpe2NvbnN0IGU9dGhpcy5uZXdSZWZDb3VudCx0PVtdO2ZvcihsZXQgbj1vO248ZTtuKyspe3RoaXMueHJlZltuXWluc3RhbmNlb2YgQmFzZVN0cmVhbXx8dC5wdXNoKFJlZi5nZXQobiwwKSl9Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz02NTUzNSl7Y29uc3Qgbj10aGlzLm5ld1JlZjt0aGlzLm9ialN0cmVhbVJlZnMuYWRkKG4ubnVtKTt0aGlzLnhyZWZbbi5udW1dPXQuc2xpY2UoZSxlKzY1NTM1KX19cmV0dXJuIHZ9I0FhKCl7Y29uc3R7bmV3UGFnZXM6ZSxyb290RGljdDp0LHBhZ2VzUmVmOm4scGFnZXNEaWN0OmF9PXRoaXM7dC5zZXQoIlBhZ2VzIixuKTthLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7YS5zZXQoIkNvdW50IixlLmxlbmd0aCk7Y29uc3Qgcj1be2RpY3Q6YSxraWRzOmUscGFyZW50UmVmOm59XTtmb3IoO3IubGVuZ3RoPjA7KXtjb25zdHtkaWN0OmUsa2lkczp0LHBhcmVudFJlZjpufT1yLnBvcCgpO2lmKHQubGVuZ3RoPD0xNil7ZS5zZXQoIktpZHMiLHQpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy54cmVmW2UubnVtXS5zZXQoIlBhcmVudCIsbik7Y29udGludWV9Y29uc3QgYT1NYXRoLm1heCgxNixNYXRoLmNlaWwodC5sZW5ndGgvMTYpKSxzPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9YSlzLnB1c2godC5zbGljZShlLGUrYSkpO2NvbnN0IGk9W107ZS5zZXQoIktpZHMiLGkpO2Zvcihjb25zdCBlIG9mIHMpe2NvbnN0W3QsYV09dGhpcy5uZXdEaWN0O2kucHVzaCh0KTthLnNldElmTmFtZSgiVHlwZSIsIlBhZ2VzIik7YS5zZXQoIlBhcmVudCIsbik7YS5zZXQoIkNvdW50IixlLmxlbmd0aCk7ci5wdXNoKHtkaWN0OmEsa2lkczplLHBhcmVudFJlZjp0fSl9fX0jeGEoZSx0KXtjb25zdCBuPWUuc29ydCh0PyhbZV0sW3RdKT0+ZTx0Py0xOmU+dD8xOjA6KFtlXSxbdF0pPT5lLXQpLFthLHJdPXRoaXMubmV3RGljdCxzPVt7ZGljdDpyLGVudHJpZXM6bixpc1Jvb3Q6ITB9XSxpPXQ/Ik5hbWVzIjoiTnVtcyI7Zm9yKDtzLmxlbmd0aD4wOyl7Y29uc3R7ZGljdDplLGVudHJpZXM6dCxpc1Jvb3Q6bn09cy5wb3AoKTtpZih0Lmxlbmd0aDw9NjQpe258fGUuc2V0KCJMaW1pdHMiLFt0WzBdWzBdLHQuYXQoLTEpWzBdXSk7ZS5zZXQoaSx0LmZsYXQoKSk7Y29udGludWV9Y29uc3QgYT1bXSxyPU1hdGgubWF4KDY0LE1hdGguY2VpbCh0Lmxlbmd0aC82NCkpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9cilhLnB1c2godC5zbGljZShlLGUrcikpO2NvbnN0IG89W107ZS5zZXQoIktpZHMiLG8pO2Zvcihjb25zdCBlIG9mIGEpe2NvbnN0W3Qsbl09dGhpcy5uZXdEaWN0O28ucHVzaCh0KTtuLnNldCgiTGltaXRzIixbZVswXVswXSxlLmF0KC0xKVswXV0pO3MucHVzaCh7ZGljdDpuLGVudHJpZXM6ZX0pfX1yZXR1cm4gYX0jQ2EoKXtjb25zdHtwYWdlTGFiZWxzOmV9PXRoaXM7aWYoIWU/Lmxlbmd0aClyZXR1cm47Y29uc3R7cm9vdERpY3Q6dH09dGhpcyxuPXRoaXMuI3hhKHRoaXMucGFnZUxhYmVscywhMSk7dC5zZXQoIlBhZ2VMYWJlbHMiLG4pfWFzeW5jI2hhKGUpe2NvbnN0e2VtYmVkZGVkRmlsZXM6dH09dGhpcztmb3IoY29uc3QgbiBvZiBlKXtjb25zdHtlbWJlZGRlZEZpbGVzOmUsZG9jdW1lbnQ6e3hyZWY6YX19PW47aWYoZT8uc2l6ZSl7dGhpcy5jdXJyZW50RG9jdW1lbnQ9bjtmb3IoY29uc3RbbixyXW9mIGUpe2xldCBlPW47aWYodC5oYXMoZSkpe2NvbnN0IGE9c3RyaW5nVG9QREZTdHJpbmcobiwhMCk7Zm9yKGxldCBuPTE7O24rKyl7Y29uc3Qgcj1zdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGAke2F9XyR7bn1gKTtpZighdC5oYXMocikpe2U9cjticmVha319fXQuc2V0KGUsYXdhaXQgdGhpcy4jRW4ociwhMCxhKSl9dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbH19fSNJYSgpe2NvbnN0e2VtYmVkZGVkRmlsZXM6ZX09dGhpcztpZigwIT09ZS5zaXplKXtpZighdGhpcy5uYW1lc0RpY3Qpe1t0aGlzLm5hbWVzUmVmLHRoaXMubmFtZXNEaWN0XT10aGlzLm5ld0RpY3Q7dGhpcy5yb290RGljdC5zZXQoIk5hbWVzIix0aGlzLm5hbWVzUmVmKX10aGlzLm5hbWVzRGljdC5zZXQoIkVtYmVkZGVkRmlsZXMiLHRoaXMuI3hhKEFycmF5LmZyb20oZS5lbnRyaWVzKCkpLCEwKSl9fSNGYSgpe2NvbnN0e25hbWVkRGVzdGluYXRpb25zOmV9PXRoaXM7aWYoMCE9PWUuc2l6ZSl7aWYoIXRoaXMubmFtZXNEaWN0KXtbdGhpcy5uYW1lc1JlZix0aGlzLm5hbWVzRGljdF09dGhpcy5uZXdEaWN0O3RoaXMucm9vdERpY3Quc2V0KCJOYW1lcyIsdGhpcy5uYW1lc1JlZil9dGhpcy5uYW1lc0RpY3Quc2V0KCJEZXN0cyIsdGhpcy4jeGEoQXJyYXkuZnJvbShlLChbZSx0XSk9PltzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGUpLHRdKSwhMCkpfX0jVGEoKXtjb25zdHtzdHJ1Y3RUcmVlS2lkczplfT10aGlzO2lmKCFlPy5sZW5ndGgpcmV0dXJuO2NvbnN0e3Jvb3REaWN0OnR9PXRoaXMsbj10aGlzLm5ld1JlZixhPXRoaXMueHJlZltuLm51bV09bmV3IERpY3Q7YS5zZXRJZk5hbWUoIlR5cGUiLCJTdHJ1Y3RUcmVlUm9vdCIpO2Euc2V0SWZBcnJheSgiSyIsZSk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLnhyZWZbdC5udW1dLGE9ZS5nZXQoIlR5cGUiKTthJiYhaXNOYW1lKGEsIlN0cnVjdEVsZW0iKXx8ZS5zZXQoIlAiLG4pfWlmKHRoaXMucGFyZW50VHJlZS5zaXplPjApe2NvbnN0IGU9dGhpcy4jeGEoQXJyYXkuZnJvbSh0aGlzLnBhcmVudFRyZWUuZW50cmllcygpKSwhMSk7dGhpcy54cmVmW2UubnVtXS5zZXRJZk5hbWUoIlR5cGUiLCJQYXJlbnRUcmVlIik7YS5zZXQoIlBhcmVudFRyZWUiLGUpO2Euc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsdGhpcy5wYXJlbnRUcmVlLnNpemUpfWlmKHRoaXMuaWRUcmVlLnNpemU+MCl7Y29uc3QgZT10aGlzLiN4YShBcnJheS5mcm9tKHRoaXMuaWRUcmVlLmVudHJpZXMoKSksITApO3RoaXMueHJlZltlLm51bV0uc2V0SWZOYW1lKCJUeXBlIiwiSURUcmVlIik7YS5zZXQoIklEVHJlZSIsZSl9aWYodGhpcy5jbGFzc01hcC5zaXplPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLmNsYXNzTWFwO2Euc2V0KCJDbGFzc01hcCIsZSl9aWYodGhpcy5yb2xlTWFwLnNpemU+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMucm9sZU1hcDthLnNldCgiUm9sZU1hcCIsZSl9aWYodGhpcy5uYW1lc3BhY2VzLnNpemU+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPUFycmF5LmZyb20odGhpcy5uYW1lc3BhY2VzLnZhbHVlcygpKTthLnNldCgiTmFtZXNwYWNlcyIsZSl9aWYodGhpcy5zdHJ1Y3RUcmVlQUYubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLnN0cnVjdFRyZWVBRjthLnNldCgiQUYiLGUpfWlmKHRoaXMuc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5zdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb247YS5zZXQoIlByb251bmNpYXRpb25MZXhpY29uIixlKX10LnNldCgiU3RydWN0VHJlZVJvb3QiLG4pfSNPYSgpe2lmKDA9PT10aGlzLmZpZWxkcy5sZW5ndGgpcmV0dXJuO2NvbnN0e3Jvb3REaWN0OmV9PXRoaXMsdD10aGlzLm5ld1JlZixuPXRoaXMueHJlZlt0Lm51bV09bmV3IERpY3Q7ZS5zZXQoIkFjcm9Gb3JtIix0KTtuLnNldCgiRmllbGRzIix0aGlzLmZpZWxkcyk7dGhpcy5hY3JvRm9ybU5lZWRBcHBlYXJhbmNlcyYmbi5zZXQoIk5lZWRBcHBlYXJhbmNlcyIsITApO3RoaXMuYWNyb0Zvcm1TaWdGbGFncz4wJiZuLnNldCgiU2lnRmxhZ3MiLHRoaXMuYWNyb0Zvcm1TaWdGbGFncyk7bi5zZXRJZkFycmF5KCJDTyIsdGhpcy5hY3JvRm9ybUNhbGN1bGF0aW9uT3JkZXIpO24uc2V0SWZEZWZpbmVkKCJEUiIsdGhpcy5hY3JvRm9ybURlZmF1bHRSZXNvdXJjZXMpO3RoaXMuYWNyb0Zvcm1EZWZhdWx0QXBwZWFyYW5jZSYmbi5zZXQoIkRBIix0aGlzLmFjcm9Gb3JtRGVmYXVsdEFwcGVhcmFuY2UpO3RoaXMuYWNyb0Zvcm1RPjAmJm4uc2V0KCJRIix0aGlzLmFjcm9Gb3JtUSl9YXN5bmMjUmEoKXtjb25zdHtyb290RGljdDplfT10aGlzO2Uuc2V0SWZOYW1lKCJUeXBlIiwiQ2F0YWxvZyIpO2Uuc2V0SWZOYW1lKCJWZXJzaW9uIix0aGlzLnZlcnNpb24pO3RoaXMuI09hKCk7dGhpcy4jQWEoKTt0aGlzLiNDYSgpO3RoaXMuI0lhKCk7dGhpcy4jRmEoKTt0aGlzLiNUYSgpO2F3YWl0IHRoaXMuI2JhKCl9I0JhKCl7Y29uc3QgZT1uZXcgTWFwO2lmKHRoaXMuaXNTaW5nbGVGaWxlKXtjb25zdCB0PXRoaXMub2xkUGFnZXMuZmluZChlPT4hIWUpLHt4cmVmOnt0cmFpbGVyOm59fT10LmRvY3VtZW50RGF0YS5kb2N1bWVudCxhPW4uZ2V0KCJJbmZvIik7Zm9yKGNvbnN0W3Qsbl1vZiBhfHxbXSkic3RyaW5nIj09dHlwZW9mIG4mJmUuc2V0KHQsc3RyaW5nVG9QREZTdHJpbmcobikpfWUuZGVsZXRlKCJNb2REYXRlIik7ZS5zZXQoIkNyZWF0aW9uRGF0ZSIsZ2V0TW9kaWZpY2F0aW9uRGF0ZSgpKTtlLnNldCgiQ3JlYXRvciIsIlBERi5qcyIpO2Uuc2V0KCJQcm9kdWNlciIsIkZpcmVmb3giKTt0aGlzLmF1dGhvciYmZS5zZXQoIkF1dGhvciIsdGhpcy5hdXRob3IpO3RoaXMudGl0bGUmJmUuc2V0KCJUaXRsZSIsdGhpcy50aXRsZSk7Zm9yKGNvbnN0W3Qsbl1vZiBlKXRoaXMuaW5mb0RpY3Quc2V0KHQsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShuKSk7cmV0dXJuIGV9YXN5bmMjRGEoKXtpZighdGhpcy5pc1NpbmdsZUZpbGUpcmV0dXJuW251bGwsbnVsbCxudWxsXTtjb25zdCBlPXRoaXMub2xkUGFnZXMuZmluZChlPT4hIWUpLHtkb2N1bWVudERhdGE6dH09ZSx7ZG9jdW1lbnQ6e3hyZWY6e3RyYWlsZXI6bixlbmNyeXB0OmF9fX09dDtpZighbi5oYXMoIkVuY3J5cHQiKSlyZXR1cm5bbnVsbCxudWxsLG51bGxdO2NvbnN0IHI9bi5nZXQoIkVuY3J5cHQiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm5bbnVsbCxudWxsLG51bGxdO3RoaXMuY3VycmVudERvY3VtZW50PXQ7Y29uc3Qgcz1bYXdhaXQgdGhpcy4jX24ocixuLnhyZWYpLGEsbi5nZXQoIklEIildO3RoaXMuY3VycmVudERvY3VtZW50PW51bGw7cmV0dXJuIHN9YXN5bmMjSGEoKXtjb25zdCBlPW5ldyBSZWZTZXRDYWNoZTtlLnB1dChSZWYuZ2V0KDAsNjU1MzUpLHtkYXRhOm51bGx9KTtmb3IobGV0IHQ9MSxuPXRoaXMueHJlZi5sZW5ndGg7dDxuO3QrKyl0aGlzLm9ialN0cmVhbVJlZnM/Lmhhcyh0KT9hd2FpdCB0aGlzLiNNYShSZWYuZ2V0KHQsMCksdGhpcy54cmVmW3RdLGUpOmUucHV0KFJlZi5nZXQodCwwKSx7ZGF0YTp0aGlzLnhyZWZbdF19KTtyZXR1cm5bZSx0aGlzLm5ld1JlZl19YXN5bmMjTWEoZSx0LG4pe2NvbnN0IGE9WyIiXSxyPVtdO2xldCBzPTA7Y29uc3QgaT1bXTtmb3IobGV0IG89MCxsPXQubGVuZ3RoO288bDtvKyspe2NvbnN0IGw9dFtvXTtuLnB1dChsLHtkYXRhOm51bGwsb2JqU3RyZWFtUmVmOmUsaW5kZXg6b30pO3IucHVzaChgJHtsLm51bX0gJHtzfWApO2NvbnN0IGY9dGhpcy54cmVmW2wubnVtXTthd2FpdCB3cml0ZVZhbHVlKGYsaSxudWxsKTtjb25zdCBjPWkuam9pbigiIik7aS5sZW5ndGg9MDthLnB1c2goYyk7cys9Yy5sZW5ndGgrMX1hWzBdPXIuam9pbigiXG4iKTtjb25zdCBvPW5ldyBEaWN0O28uc2V0SWZOYW1lKCJUeXBlIiwiT2JqU3RtIik7by5zZXQoIk4iLHQubGVuZ3RoKTtvLnNldCgiRmlyc3QiLGFbMF0ubGVuZ3RoKzEpO2NvbnN0IGw9bmV3IFN0cmluZ1N0cmVhbShhLmpvaW4oIlxuIiksbyk7bi5wdXQoZSx7ZGF0YTpsfSl9YXN5bmMgd3JpdGVQREYoKXthd2FpdCB0aGlzLiNSYSgpO2NvbnN0IGU9dGhpcy4jQmEoKSxbdCxuLGFdPWF3YWl0IHRoaXMuI0RhKCksW3Isc109YXdhaXQgdGhpcy4jSGEoKTtyZXR1cm4gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTpzdHJpbmdUb0J5dGVzKGAlUERGLSR7dGhpcy52ZXJzaW9ufVxuJcO6w57DusOOYCksY2hhbmdlczpyLHhyZWZJbmZvOntzdGFydFhSZWY6bnVsbCxyb290UmVmOnRoaXMucm9vdFJlZixpbmZvUmVmOnRoaXMuaW5mb1JlZixlbmNyeXB0UmVmOnQsbmV3UmVmOnMsZmlsZUlkczphfHxbbnVsbCxudWxsXSxpbmZvTWFwOmV9LHVzZVhyZWZTdHJlYW06dGhpcy51c2VPYmplY3RTdHJlYW1zLHhyZWY6e2VuY3J5cHQ6bixlbmNyeXB0UmVmOnR9fSl9fWNsYXNzIEJhc2VQREZTdHJlYW17I05hPW51bGw7I1BhPW51bGw7X2Z1bGxSZWFkZXI9bnVsbDtfcmFuZ2VSZWFkZXJzPW5ldyBTZXQ7X3NvdXJjZT1udWxsO2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl9zb3VyY2U9ZTt0aGlzLiNOYT10O3RoaXMuI1BhPW59Z2V0IF9wcm9ncmVzc2l2ZURhdGFMZW5ndGgoKXtyZXR1cm4gdGhpcy5fZnVsbFJlYWRlcj8uX2xvYWRlZD8/MH1nZXRGdWxsUmVhZGVyKCl7YXNzZXJ0KCF0aGlzLl9mdWxsUmVhZGVyLCJCYXNlUERGU3RyZWFtLmdldEZ1bGxSZWFkZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuIik7cmV0dXJuIHRoaXMuX2Z1bGxSZWFkZXI9bmV3IHRoaXMuI05hKHRoaXMpfWdldFJhbmdlUmVhZGVyKGUsdCl7aWYodDw9dGhpcy5fcHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IG49bmV3IHRoaXMuI1BhKHRoaXMsZSx0KTt0aGlzLl9yYW5nZVJlYWRlcnMuYWRkKG4pO3JldHVybiBufWNhbmNlbEFsbFJlcXVlc3RzKGUpe3RoaXMuX2Z1bGxSZWFkZXI/LmNhbmNlbChlKTtmb3IoY29uc3QgdCBvZiBuZXcgU2V0KHRoaXMuX3JhbmdlUmVhZGVycykpdC5jYW5jZWwoZSl9fWNsYXNzIEJhc2VQREZTdHJlYW1SZWFkZXJ7b25Qcm9ncmVzcz1udWxsO19jb250ZW50TGVuZ3RoPTA7X2ZpbGVuYW1lPW51bGw7X2hlYWRlcnNDYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpO19pc1JhbmdlU3VwcG9ydGVkPSExO19pc1N0cmVhbWluZ1N1cHBvcnRlZD0hMTtfbG9hZGVkPTA7X3N0cmVhbT1udWxsO2NvbnN0cnVjdG9yKGUpe3RoaXMuX3N0cmVhbT1lfV9jYWxsT25Qcm9ncmVzcygpe3RoaXMub25Qcm9ncmVzcz8uKHtsb2FkZWQ6dGhpcy5fbG9hZGVkLHRvdGFsOnRoaXMuX2NvbnRlbnRMZW5ndGh9KX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnByb21pc2V9Z2V0IGZpbGVuYW1lKCl7cmV0dXJuIHRoaXMuX2ZpbGVuYW1lfWdldCBjb250ZW50TGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnRMZW5ndGh9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9YXN5bmMgcmVhZCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlYWRgIGNhbGxlZCIpfWNhbmNlbChlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjYW5jZWxgIGNhbGxlZCIpfX1jbGFzcyBCYXNlUERGU3RyZWFtUmFuZ2VSZWFkZXJ7X3N0cmVhbT1udWxsO2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLl9zdHJlYW09ZX1hc3luYyByZWFkKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVhZGAgY2FsbGVkIil9Y2FuY2VsKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGNhbmNlbGAgY2FsbGVkIil9fWNsYXNzIFBERldvcmtlclN0cmVhbSBleHRlbmRzIEJhc2VQREZTdHJlYW17Y29uc3RydWN0b3IoZSl7c3VwZXIoZSxQREZXb3JrZXJTdHJlYW1SZWFkZXIsUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXIpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXIgZXh0ZW5kcyBCYXNlUERGU3RyZWFtUmVhZGVye19yZWFkZXI9bnVsbDtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHttc2dIYW5kbGVyOnR9PWUuX3NvdXJjZSxuPXQuc2VuZFdpdGhTdHJlYW0oIkdldFJlYWRlciIpO3RoaXMuX3JlYWRlcj1uLmdldFJlYWRlcigpO3Quc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKGU9Pnt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aDt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2hlYWRlcnNDYXBhYmlsaXR5LnJlc29sdmUoKX0sdGhpcy5faGVhZGVyc0NhcGFiaWxpdHkucmVqZWN0KX1hc3luYyByZWFkKCl7Y29uc3R7dmFsdWU6ZSxkb25lOnR9PWF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7cmV0dXJuIHQ/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTp7dmFsdWU6ZS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKGUpe3RoaXMuX3JlYWRlci5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyIGV4dGVuZHMgQmFzZVBERlN0cmVhbVJhbmdlUmVhZGVye19yZWFkZXI9bnVsbDtjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoZSx0LG4pO2NvbnN0e21zZ0hhbmRsZXI6YX09ZS5fc291cmNlLHI9YS5zZW5kV2l0aFN0cmVhbSgiR2V0UmFuZ2VSZWFkZXIiLHtiZWdpbjp0LGVuZDpufSk7dGhpcy5fcmVhZGVyPXIuZ2V0UmVhZGVyKCl9YXN5bmMgcmVhZCgpe2NvbnN0e3ZhbHVlOmUsZG9uZTp0fT1hd2FpdCB0aGlzLl9yZWFkZXIucmVhZCgpO3JldHVybiB0P3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06e3ZhbHVlOmUuYnVmZmVyLGRvbmU6ITF9fWNhbmNlbChlKXt0aGlzLl9yZWFkZXIuY2FuY2VsKGUpfX1jbGFzcyBXb3JrZXJUYXNre2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lO3RoaXMudGVybWluYXRlZD0hMTt0aGlzLl9jYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfWdldCBmaW5pc2hlZCgpe3JldHVybiB0aGlzLl9jYXBhYmlsaXR5LnByb21pc2V9ZmluaXNoKCl7dGhpcy5fY2FwYWJpbGl0eS5yZXNvbHZlKCl9dGVybWluYXRlKCl7dGhpcy50ZXJtaW5hdGVkPSEwfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZih0aGlzLnRlcm1pbmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgdGFzayB3YXMgdGVybWluYXRlZCIpfX1jbGFzcyBXb3JrZXJNZXNzYWdlSGFuZGxlcntzdGF0aWN7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFuJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJiJmdW5jdGlvbiI9PXR5cGVvZiBzZWxmLnBvc3RNZXNzYWdlJiYib25tZXNzYWdlImluIHNlbGYmJnRoaXMuaW5pdGlhbGl6ZUZyb21Qb3J0KHNlbGYpfXN0YXRpYyBzZXR1cChlLHQpe2xldCBuPSExO2Uub24oInRlc3QiLHQ9PntpZighbil7bj0hMDtlLnNlbmQoInRlc3QiLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KX19KTtlLm9uKCJjb25maWd1cmUiLGU9PnshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKG9uPWUpfShlLnZlcmJvc2l0eSl9KTtlLm9uKCJHZXREb2NSZXF1ZXN0IixlPT50aGlzLmNyZWF0ZURvY3VtZW50SGFuZGxlcihlLHQpKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IG4sYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LGk9Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmx9PWUsZj0iNi4yLjEwOCI7aWYobCE9PWYpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7bH0iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtmfSIuYCk7Y29uc3QgYnVpbGRNc2c9KGUsdCk9PmBUaGUgXGAke2V9LnByb3RvdHlwZVxgIGNvbnRhaW5zIHVuZXhwZWN0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSAiJHt0fSIsIHRodXMgYnJlYWtpbmcgZS5nLiBcYGZvci4uLmluXGAgaXRlcmF0aW9uIG9mICR7ZX1zLmA7Zm9yKGNvbnN0IGUgaW57fSl0aHJvdyBuZXcgRXJyb3IoYnVpbGRNc2coIk9iamVjdCIsZSkpO2Zvcihjb25zdCBlIGluW10pdGhyb3cgbmV3IEVycm9yKGJ1aWxkTXNnKCJBcnJheSIsZSkpO2NvbnN0IGM9bysiX3dvcmtlciI7bGV0IGg9bmV3IE1lc3NhZ2VIYW5kbGVyKGMsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtzLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7cy5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IG4uaW5pdERvY3VtZW50KGUpO2NvbnN0IHQ9YXdhaXQgbi5lbnN1cmVEb2MoImlzUHVyZVhmYSIpO2lmKHQpe2NvbnN0IGU9bmV3IFdvcmtlclRhc2soImxvYWRYZmFSZXNvdXJjZXMiKTtzdGFydFdvcmtlclRhc2soZSk7YXdhaXQgbi5lbnN1cmVEb2MoImxvYWRYZmFSZXNvdXJjZXMiLFtoLGVdKTtmaW5pc2hXb3JrZXJUYXNrKGUpfWNvbnN0W2Escl09YXdhaXQgUHJvbWlzZS5hbGwoW24uZW5zdXJlRG9jKCJudW1QYWdlcyIpLG4uZW5zdXJlRG9jKCJmaW5nZXJwcmludHMiKV0pO3JldHVybntudW1QYWdlczphLGZpbmdlcnByaW50czpyLGh0bWxGb3JYZmE6dD9hd2FpdCBuLmVuc3VyZURvYygiaHRtbEZvclhmYSIpOm51bGx9fWFzeW5jIGZ1bmN0aW9uIGdldFBhc3N3b3JkKGUpe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7dHJ5e3JldHVybihhd2FpdCBoLnNlbmRXaXRoUHJvbWlzZSgiUGFzc3dvcmRSZXF1ZXN0IixlKSkucGFzc3dvcmR9ZmluYWxseXtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57ZmluaXNoV29ya2VyVGFzayh0KX0pfX1mdW5jdGlvbiBzZXR1cERvYyhlKXtmdW5jdGlvbiBvblN1Y2Nlc3MoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2guc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gb25GYWlsdXJlKGUpe2F8fChlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24/Z2V0UGFzc3dvcmQoZSkudGhlbihlPT57bi51cGRhdGVQYXNzd29yZChlKTtwZGZNYW5hZ2VyUmVhZHkoKX0pLmNhdGNoKCgpPT57aC5zZW5kKCJEb2NFeGNlcHRpb24iLGUpfSk6aC5zZW5kKCJEb2NFeGNlcHRpb24iLHdyYXBSZWFzb24oZSkpKX1mdW5jdGlvbiBwZGZNYW5hZ2VyUmVhZHkoKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCExKS50aGVuKG9uU3VjY2VzcyxmdW5jdGlvbihlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7ZSBpbnN0YW5jZW9mIFhSZWZQYXJzZUV4Y2VwdGlvbj9uLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0sb25GYWlsdXJlKTpvbkZhaWx1cmUoZSl9KX1lbnN1cmVOb3RUZXJtaW5hdGVkKCk7KGFzeW5jIGZ1bmN0aW9uIGdldFBkZk1hbmFnZXIoe2RhdGE6ZSxwYXNzd29yZDp0LGRpc2FibGVBdXRvRmV0Y2g6bixyYW5nZUNodW5rU2l6ZTphLGRvY0Jhc2VVcmw6cyxlbmFibGVYZmE6aSxldmFsdWF0b3JPcHRpb25zOmx9KXtjb25zdCBmPXtzb3VyY2U6bnVsbCxkaXNhYmxlQXV0b0ZldGNoOm4sZG9jQmFzZVVybDpzLGRvY0lkOm8sZW5hYmxlWGZhOmksZXZhbHVhdG9yT3B0aW9uczpsLGhhbmRsZXI6aCxsZW5ndGg6MCxwYXNzd29yZDp0LHJhbmdlQ2h1bmtTaXplOmF9O2lmKGUpe2Yuc291cmNlPWU7cmV0dXJuIG5ldyBMb2NhbFBkZk1hbmFnZXIoZil9Y29uc3QgYz1uZXcgUERGV29ya2VyU3RyZWFtKHttc2dIYW5kbGVyOmh9KSx1PWMuZ2V0RnVsbFJlYWRlcigpLHtwcm9taXNlOm0scmVzb2x2ZTpwLHJlamVjdDpkfT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtsZXQgZyxiPVtdO3I9ZT0+Yy5jYW5jZWxBbGxSZXF1ZXN0cyhlKTt1LmhlYWRlcnNSZWFkeS50aGVuKCgpPT57aWYodS5pc1JhbmdlU3VwcG9ydGVkKXtmLnNvdXJjZT1jO2YubGVuZ3RoPXUuY29udGVudExlbmd0aDtmLmRpc2FibGVBdXRvRmV0Y2h8fD11LmlzU3RyZWFtaW5nU3VwcG9ydGVkO2c9bmV3IE5ldHdvcmtQZGZNYW5hZ2VyKGYpO2Zvcihjb25zdCBlIG9mIGIpZy5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpO2I9bnVsbDtwKGcpO3I9bnVsbH19KS5jYXRjaChlPT57ZChlKTtyPW51bGx9KTsoYXN5bmMgZnVuY3Rpb24gcmVhZERhdGEoKXtsZXQgZT0wO2Zvcig7Oyl7Y29uc3R7dmFsdWU6dCxkb25lOm59PWF3YWl0IHUucmVhZCgpO2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihuKWJyZWFrO2UrPXQuYnl0ZUxlbmd0aDt1LmlzU3RyZWFtaW5nU3VwcG9ydGVkfHxoLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOmUsdG90YWw6dS5jb250ZW50TGVuZ3RofSk7Zz9nLnNlbmRQcm9ncmVzc2l2ZURhdGEodCk6Yi5wdXNoKHQpfWlmKCFnKXtmLnNvdXJjZT1hcnJheUJ1ZmZlcnNUb0J5dGVzKGIpO2I9bnVsbDtnPW5ldyBMb2NhbFBkZk1hbmFnZXIoZik7cChnKX1yPW51bGx9KSgpLmNhdGNoKGU9PntkKGUpO3I9bnVsbH0pO3JldHVybiBtfSkoZSkudGhlbihmdW5jdGlvbihlKXtpZihhKXtlLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7dGhyb3cgbmV3IEVycm9yKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQiKX1uPWU7bi5yZXF1ZXN0TG9hZGVkU3RyZWFtKCEwKS50aGVuKGU9PntoLnNlbmQoIkRhdGFMb2FkZWQiLHtsZW5ndGg6ZS5ieXRlcy5ieXRlTGVuZ3RofSl9LCgpPT57fSl9KS50aGVuKHBkZk1hbmFnZXJSZWFkeSxvbkZhaWx1cmUpfWgub24oIkdldFBhZ2UiLGFzeW5jIGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe2NvbnN0IHQ9YXdhaXQgbi5nZXRQYWdlKGUpLFthLHIscyxpXT1hd2FpdCBQcm9taXNlLmFsbChbbi5lbnN1cmUodCwicm90YXRlIiksbi5lbnN1cmUodCwicmVmIiksbi5lbnN1cmUodCwidXNlclVuaXQiKSxuLmVuc3VyZSh0LCJ2aWV3IildKTtyZXR1cm57cm90YXRlOmEscmVmOnIscmVmU3RyOnI/LnRvU3RyaW5nKCk/P251bGwsdXNlclVuaXQ6cyx2aWV3Oml9fSk7aC5vbigiR2V0UGFnZUluZGV4IixmdW5jdGlvbih7bnVtOmUsZ2VuOnR9KXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtSZWYuZ2V0KGUsdCldKX0pO2gub24oIkdldERlc3RpbmF0aW9ucyIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJkZXN0aW5hdGlvbnMiKX0pO2gub24oIkdldERlc3RpbmF0aW9uIixmdW5jdGlvbih7aWQ6ZX0pe3JldHVybiBuLmVuc3VyZUNhdGFsb2coImdldERlc3RpbmF0aW9uIixbZV0pfSk7aC5vbigiR2V0UGFnZUxhYmVscyIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJwYWdlTGFiZWxzIil9KTtoLm9uKCJHZXRQYWdlTGF5b3V0IixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZUNhdGFsb2coInBhZ2VMYXlvdXQiKX0pO2gub24oIkdldFBhZ2VNb2RlIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KTtoLm9uKCJHZXRWaWV3ZXJQcmVmZXJlbmNlcyIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJ2aWV3ZXJQcmVmZXJlbmNlcyIpfSk7aC5vbigiR2V0T3BlbkFjdGlvbiIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJvcGVuQWN0aW9uIil9KTtoLm9uKCJHZXRBdHRhY2htZW50cyIsZnVuY3Rpb24oKXtyZXR1cm4gbi5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpfSk7aC5vbigiR2V0QXR0YWNobWVudENvbnRlbnQiLGFzeW5jIGZ1bmN0aW9uKGUpe2xldCB0O2Zvcig7Oyl7Y29uc3QgYT10P2F3YWl0IGdldFBhc3N3b3JkKHQpOm51bGw7dHJ5e2EmJm4udXBkYXRlUGFzc3dvcmQoYSk7cmV0dXJuIGF3YWl0IG4uZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudENvbnRlbnQiLFtlXSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uKXt0PWU7Y29udGludWV9dGhyb3cgZX19fSk7aC5vbigiR2V0RG9jSlNBY3Rpb25zIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZUNhdGFsb2coImpzQWN0aW9ucyIpfSk7aC5vbigiR2V0UGFnZUpTQWN0aW9ucyIsYXN5bmMgZnVuY3Rpb24oe3BhZ2VJbmRleDplfSl7Y29uc3QgdD1hd2FpdCBuLmdldFBhZ2UoZSk7cmV0dXJuIG4uZW5zdXJlKHQsImpzQWN0aW9ucyIpfSk7aC5vbigiR2V0QW5ub3RhdGlvbnNCeVR5cGUiLGFzeW5jIGZ1bmN0aW9uKHt0eXBlczplLHBhZ2VJbmRleGVzVG9Ta2lwOnR9KXtjb25zdFthLHJdPWF3YWl0IFByb21pc2UuYWxsKFtuLmVuc3VyZURvYygibnVtUGFnZXMiKSxuLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKV0pO2lmKCFyKXJldHVybiBudWxsO2NvbnN0IHM9W10saT1bXTtsZXQgbz1udWxsO3RyeXtmb3IobGV0IGw9MCxmPWE7bDxmO2wrKylpZighdD8uaGFzKGwpKXtpZighbyl7bz1uZXcgV29ya2VyVGFzaygiR2V0QW5ub3RhdGlvbnNCeVR5cGUiKTtzdGFydFdvcmtlclRhc2sobyl9cy5wdXNoKG4uZ2V0UGFnZShsKS50aGVuKHQ9PnQuY29sbGVjdEFubm90YXRpb25zQnlUeXBlKGgsbyxlLGkscikpKX1hd2FpdCBQcm9taXNlLmFsbChzKTtyZXR1cm4oYXdhaXQgUHJvbWlzZS5hbGwoaSkpLmZpbHRlcihlPT4hIWUpfWZpbmFsbHl7byYmZmluaXNoV29ya2VyVGFzayhvKX19KTtoLm9uKCJHZXRPdXRsaW5lIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZUNhdGFsb2coImRvY3VtZW50T3V0bGluZSIpfSk7aC5vbigiR2V0T3B0aW9uYWxDb250ZW50Q29uZmlnIixmdW5jdGlvbigpe3JldHVybiBuLmVuc3VyZUNhdGFsb2coIm9wdGlvbmFsQ29udGVudENvbmZpZyIpfSk7aC5vbigiR2V0UGVybWlzc2lvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pO2gub24oIkdldE1ldGFkYXRhIixmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLmFsbChbbi5lbnN1cmVEb2MoImRvY3VtZW50SW5mbyIpLG4uZW5zdXJlQ2F0YWxvZygibWV0YWRhdGEiKSxuLmVuc3VyZUNhdGFsb2coImhhc1N0cnVjdFRyZWUiKV0pfSk7aC5vbigiR2V0TWFya0luZm8iLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlQ2F0YWxvZygibWFya0luZm8iKX0pO2gub24oIkdldERhdGEiLGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuKGF3YWl0IG4ucmVxdWVzdExvYWRlZFN0cmVhbSgpKS5ieXRlc30pO2gub24oIkdldEFubm90YXRpb25zIixhc3luYyBmdW5jdGlvbih7cGFnZUluZGV4OmUsaW50ZW50OnR9KXtjb25zdCBhPWF3YWl0IG4uZ2V0UGFnZShlKSxyPW5ldyBXb3JrZXJUYXNrKGBHZXRBbm5vdGF0aW9uczogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKHIpO3RyeXtyZXR1cm4gYXdhaXQgYS5nZXRBbm5vdGF0aW9uc0RhdGEoaCxyLHQpfWZpbmFsbHl7ZmluaXNoV29ya2VyVGFzayhyKX19KTtoLm9uKCJHZXRGaWVsZE9iamVjdHMiLGFzeW5jIGZ1bmN0aW9uKCl7Y29uc3QgZT1hd2FpdCBuLmVuc3VyZURvYygiZmllbGRPYmplY3RzIik7cmV0dXJuIGU/LmFsbEZpZWxkc3x8bnVsbH0pO2gub24oIkdldFNpZ25hdHVyZXMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlRG9jKCJzaWduYXR1cmVzIil9KTtoLm9uKCJHZXRTaWduYXR1cmVEYXRhIixmdW5jdGlvbihlKXtyZXR1cm4gbi5lbnN1cmVEb2MoImdldFNpZ25hdHVyZURhdGEiLFtlXSl9KTtoLm9uKCJIYXNKU0FjdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlRG9jKCJoYXNKU0FjdGlvbnMiKX0pO2gub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLGZ1bmN0aW9uKCl7cmV0dXJuIG4uZW5zdXJlRG9jKCJjYWxjdWxhdGlvbk9yZGVySWRzIil9KTtoLm9uKCJFeHRyYWN0UGFnZXMiLGFzeW5jIGZ1bmN0aW9uKHtwYWdlSW5mb3M6ZSxhbm5vdGF0aW9uU3RvcmFnZTp0fSl7aWYoIWUpe3dhcm4oImV4dHJhY3RQYWdlczogbm90aGluZyB0byBleHRyYWN0LiIpO3JldHVybiBudWxsfUFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7bGV0IGEscj0wO2Zvcihjb25zdCB0IG9mIGUpaWYoIXQuaW1hZ2UpaWYobnVsbD09PXQuZG9jdW1lbnQpdC5kb2N1bWVudD1uLnBkZkRvY3VtZW50O2Vsc2UgaWYoQXJyYXlCdWZmZXIuaXNWaWV3KHQuZG9jdW1lbnQpKXtjb25zdCBlPW5ldyBMb2NhbFBkZk1hbmFnZXIoe3NvdXJjZTp0LmRvY3VtZW50LGRvY0lkOmAke299X2V4dHJhY3RQYWdlc18ke3IrK31gLGhhbmRsZXI6aCxwYXNzd29yZDp0LnBhc3N3b3JkPz9udWxsLGV2YWx1YXRvck9wdGlvbnM6T2JqZWN0LmFzc2lnbih7fSxuLmV2YWx1YXRvck9wdGlvbnMpfSk7bGV0IGE9ITEscz0hMDtmb3IoOzspdHJ5e2F3YWl0IGUucmVxdWVzdExvYWRlZFN0cmVhbSgpO2F3YWl0IGUuaW5pdERvY3VtZW50KGEpO2JyZWFrfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBYUmVmUGFyc2VFeGNlcHRpb24pe2lmKCExPT09YSl7YT0hMDtjb250aW51ZX1zPSExO3dhcm4oImV4dHJhY3RQYWdlczogWFJlZlBhcnNlRXhjZXB0aW9uLiIpfWVsc2UgaWYodCBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uKXRyeXtjb25zdCBuPWF3YWl0IGdldFBhc3N3b3JkKHQpO2UudXBkYXRlUGFzc3dvcmQobil9Y2F0Y2h7cz0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IGludmFsaWQgcGFzc3dvcmQuIil9ZWxzZXtzPSExO3dhcm4oImV4dHJhY3RQYWdlczogaW52YWxpZCBkb2N1bWVudC4iKX1pZighcylicmVha31zfHwodC5kb2N1bWVudD1udWxsKTtpZihhd2FpdCBlLmVuc3VyZURvYygiaXNQdXJlWGZhIikpe3QuZG9jdW1lbnQ9bnVsbDt3YXJuKCJleHRyYWN0UGFnZXMgZG9lcyBub3Qgc3VwcG9ydCBwdXJlIFhGQSBkb2N1bWVudHMuIil9ZWxzZSB0LmRvY3VtZW50PWUucGRmRG9jdW1lbnR9ZWxzZSB3YXJuKCJleHRyYWN0UGFnZXM6IGludmFsaWQgZG9jdW1lbnQuIik7dHJ5e2NvbnN0IHI9bmV3IFBERkVkaXRvcjthPW5ldyBXb3JrZXJUYXNrKGBFeHRyYWN0UGFnZXM6ICR7ZS5sZW5ndGh9IHBhZ2UocylgKTtzdGFydFdvcmtlclRhc2soYSk7cmV0dXJuIGF3YWl0IHIuZXh0cmFjdFBhZ2VzKGUsdCxuLnBkZkRvY3VtZW50LGgsYSl9Y2F0Y2goZSl7d2FybihgZXh0cmFjdFBhZ2VzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9ZmluYWxseXthJiZmaW5pc2hXb3JrZXJUYXNrKGEpfX0pO2gub24oIlNhdmVEb2N1bWVudCIsYXN5bmMgZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6YSxmaWxlbmFtZTpyfSl7Y29uc3Qgcz1bbi5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksbi5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLG4uZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxuLmVuc3VyZURvYygic3RhcnRYUmVmIiksbi5lbnN1cmVEb2MoInhyZWYiKSxuLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLGk9bmV3IFJlZlNldENhY2hlLG89W10sbD1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAoYSksW2YsYyx1LG0scCxkXT1hd2FpdCBQcm9taXNlLmFsbChzKSxnPXAudHJhaWxlci5nZXRSYXcoIlJvb3QiKXx8bnVsbDtsZXQgYjtpZihsKXtkP2F3YWl0IGQuY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjpuLG5ld0Fubm90YXRpb25zQnlQYWdlOmx9KSYmKGI9ZCk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjpnLHBkZk1hbmFnZXI6bixuZXdBbm5vdGF0aW9uc0J5UGFnZTpsfSkmJihiPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoYS52YWx1ZXMoKSxwLG4uZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1iP286W107Zm9yKGNvbnN0W2Escl1vZiBsKXQucHVzaChuLmdldFBhZ2UoYSkudGhlbih0PT57Y29uc3Qgbj1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke2F9YCk7c3RhcnRXb3JrZXJUYXNrKG4pO3JldHVybiB0LnNhdmVOZXdBbm5vdGF0aW9ucyhoLG4scixlLGkpLmZpbmFsbHkoKCk9PntmaW5pc2hXb3JrZXJUYXNrKG4pfSl9KSk7bnVsbD09PWI/by5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IFN0cnVjdFRyZWVSb290LmNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmwseHJlZjpwLGNhdGFsb2dSZWY6ZyxwZGZNYW5hZ2VyOm4sY2hhbmdlczppfSl9KSk6YiYmby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IGIudXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6bCxwZGZNYW5hZ2VyOm4sY2hhbmdlczppfSl9KSl9aWYoZSlvLnB1c2gobi5lbnN1cmVEb2MoInNlcmlhbGl6ZVhmYURhdGEiLFthXSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylvLnB1c2gobi5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24odCl7Y29uc3Qgbj1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKG4pO3JldHVybiB0LnNhdmUoaCxuLGEsaSkuZmluYWxseSgoKT0+e2ZpbmlzaFdvcmtlclRhc2sobil9KX0pKTtjb25zdCB3PWF3YWl0IFByb21pc2UuYWxsKG8pO2xldCBqPW51bGw7aWYoZSl7aj13WzBdO2lmKCFqKXJldHVybiBmLmJ5dGVzfWVsc2UgaWYoMD09PWkuc2l6ZSlyZXR1cm4gZi5ieXRlcztjb25zdCBrPXUmJmMgaW5zdGFuY2VvZiBEaWN0JiZpLnZhbHVlcygpLnNvbWUoZT0+ZS5uZWVkQXBwZWFyYW5jZXMpLHk9YyBpbnN0YW5jZW9mIERpY3QmJmMuZ2V0KCJYRkEiKXx8bnVsbDtsZXQgcT1udWxsLHY9ITE7aWYoQXJyYXkuaXNBcnJheSh5KSl7Zm9yKGxldCBlPTAsdD15Lmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09eVtlXSl7cT15W2UrMV07dj0hMH1udWxsPT09cSYmKHE9cC5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSB5JiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgUz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHAudHJhaWxlcil7Y29uc3QgZT1uZXcgTWFwLHQ9cC50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFtuLGFdb2YgdCkic3RyaW5nIj09dHlwZW9mIGEmJmUuc2V0KG4sc3RyaW5nVG9QREZTdHJpbmcoYSkpO1M9e3Jvb3RSZWY6ZyxlbmNyeXB0UmVmOnAudHJhaWxlci5nZXRSYXcoIkVuY3J5cHQiKXx8bnVsbCxuZXdSZWY6cC5nZXROZXdUZW1wb3JhcnlSZWYoKSxpbmZvUmVmOnAudHJhaWxlci5nZXRSYXcoIkluZm8iKXx8bnVsbCxpbmZvTWFwOmUsZmlsZUlkczpwLnRyYWlsZXIuZ2V0KCJJRCIpfHxudWxsLHN0YXJ0WFJlZjptLGZpbGVuYW1lOnJ9fXJldHVybiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmYuYnl0ZXMseHJlZkluZm86UyxjaGFuZ2VzOmkseHJlZjpwLGhhc1hmYTohIXkseGZhRGF0YXNldHNSZWY6cSxoYXNYZmFEYXRhc2V0c0VudHJ5OnYsbmVlZEFwcGVhcmFuY2VzOmssYWNyb0Zvcm1SZWY6dSxhY3JvRm9ybTpjLHhmYURhdGE6aix1c2VYcmVmU3RyZWFtOmlzRGljdChwLnRvcERpY3QsIlhSZWYiKX0pLmZpbmFsbHkoKCk9PntwLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KX0pO2gub24oIkdldE9wZXJhdG9yTGlzdCIsZnVuY3Rpb24oe3BhZ2VJZDplLHBhZ2VJbmRleDp0LGludGVudDphLGNhY2hlS2V5OnIsYW5ub3RhdGlvblN0b3JhZ2U6cyxtb2RpZmllZElkczpvfSxsKXtuLmdldFBhZ2UoZSkudGhlbihmdW5jdGlvbihlKXtjb25zdCBuPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHt0fWApO3N0YXJ0V29ya2VyVGFzayhuKTtjb25zdCBmPWk+PXBlP0RhdGUubm93KCk6MDtlLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpoLHNpbms6bCx0YXNrOm4saW50ZW50OmEsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTpzLG1vZGlmaWVkSWRzOm8scGFnZUluZGV4OnR9KS50aGVuKGU9PntmJiZpbmZvKGAke24ubmFtZX07IHRpbWU9JHtEYXRlLm5vdygpLWZ9bXMsIGxlbj0ke2UubGVuZ3RofWApO2wuY2xvc2UoKX0sZT0+e24udGVybWluYXRlZHx8bC5lcnJvcihlKX0pLmZpbmFsbHkoKCk9PntmaW5pc2hXb3JrZXJUYXNrKG4pfSl9KX0pO2gub24oIkdldFRleHRDb250ZW50IixmdW5jdGlvbih7cGFnZUlkOmUscGFnZUluZGV4OnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxkaXNhYmxlTm9ybWFsaXphdGlvbjpyfSxzKXtuLmdldFBhZ2UoZSkudGhlbihmdW5jdGlvbihlKXtjb25zdCBuPW5ldyBXb3JrZXJUYXNrKCJHZXRUZXh0Q29udGVudDogcGFnZSAiK3QpO3N0YXJ0V29ya2VyVGFzayhuKTtjb25zdCBvPWk+PXBlP0RhdGUubm93KCk6MDtlLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjpoLHRhc2s6bixzaW5rOnMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxkaXNhYmxlTm9ybWFsaXphdGlvbjpyfSkudGhlbigoKT0+e28mJmluZm8oYCR7bi5uYW1lfTsgdGltZT0ke0RhdGUubm93KCktb31tc2ApO3MuY2xvc2UoKX0sZT0+e24udGVybWluYXRlZHx8cy5lcnJvcihlKX0pLmZpbmFsbHkoKCk9PntmaW5pc2hXb3JrZXJUYXNrKG4pfSl9KX0pO2gub24oIkdldFN0cnVjdFRyZWUiLGFzeW5jIGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe2NvbnN0IHQ9YXdhaXQgbi5nZXRQYWdlKGUpO3JldHVybiBuLmVuc3VyZSh0LCJnZXRTdHJ1Y3RUcmVlIil9KTtoLm9uKCJGb250RmFsbGJhY2siLGZ1bmN0aW9uKHtpZDplfSl7cmV0dXJuIG4uZm9udEZhbGxiYWNrKGUsaCl9KTtoLm9uKCJDbGVhbnVwIixmdW5jdGlvbigpe3JldHVybiBuLmNsZWFudXAoITApfSk7aC5vbigiVGVybWluYXRlIixhc3luYyBmdW5jdGlvbigpe2E9ITA7Y29uc3QgZT1bXTtpZihuKXtuLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgdD1uLmNsZWFudXAoKTtlLnB1c2godCk7bj1udWxsfWVsc2UgY2xlYXJHbG9iYWxDYWNoZXMoKTtyPy4obmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2Zvcihjb25zdCB0IG9mIHMpe2UucHVzaCh0LmZpbmlzaGVkKTt0LnRlcm1pbmF0ZSgpfWF3YWl0IFByb21pc2UuYWxsKGUpO2guZGVzdHJveSgpO2g9bnVsbH0pO2gub24oIlJlYWR5IixmdW5jdGlvbigpe3NldHVwRG9jKGUpO2U9bnVsbH0pO3JldHVybiBjfXN0YXRpYyBpbml0aWFsaXplRnJvbVBvcnQoZSl7Y29uc3QgdD1uZXcgTWVzc2FnZUhhbmRsZXIoIndvcmtlciIsIm1haW4iLGUpO3RoaXMuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19Z2xvYmFsVGhpcy5wZGZqc1dvcmtlcj17V29ya2VyTWVzc2FnZUhhbmRsZXJ9O2V4cG9ydHtXb3JrZXJNZXNzYWdlSGFuZGxlcn07`,``+{}.url).href:(() => { throw new Error('PdfSource: pass workerSrc for UMD/CDN'); })()}catch{throw Error(`PdfSource: couldn't auto-resolve pdf.js's worker. Pass a \`workerSrc\` URL (see the @zinejs/pdf README, "The pdf.js worker"), set pdfjs GlobalWorkerOptions.workerSrc yourself, or pass a pre-created pdf.js document.`)}}get(e,t){if(t&&t.scale>1)return this.#x(e,t.scale);let n=this.#v(e);for(let t=1;t<=this.#r;t++)this.prefetch([e-t,e+t]);return n}prefetch(e){for(let t of e)t>=0&&t<this.pageCount&&this.#v(t).catch(()=>{})}getText(e){let t=this.#m.get(e);if(t)return t;let n=this.#_(e).catch(()=>``);return this.#m.set(e,n),n}async getOutline(){let e=this.#i;if(!e||typeof e.getOutline!=`function`)return[];let t;try{t=await e.getOutline()}catch{return[]}if(!t?.length)return[];let n=async e=>Promise.all(e.map(async e=>({title:(e.title??``).trim()||`Untitled`,page:await this.#g(e.dest),children:e.items?.length?await n(e.items):[]})));return n(t)}async#g(e){let t=this.#i;if(!t||e==null)return null;try{let n=(typeof e==`string`?await t.getDestination?.(e):e)?.[0];if(n==null)return null;if(typeof n==`number`)return n;let r=await t.getPageIndex?.(n);return typeof r==`number`?r:null}catch{return null}}async getDownload(){let e=this.#e;if(typeof e==`string`)return{url:e,filename:o(e)};if(e instanceof ArrayBuffer||ArrayBuffer.isView(e)){let t=new Blob([e],{type:`application/pdf`});return{url:URL.createObjectURL(t),filename:`document.pdf`,revoke:!0}}return null}async#_(e){if(this.#i===null)throw Error(`PdfSource: use after open() — the document is not loaded.`);let t=await this.#i.getPage(e+1);if(typeof t.getTextContent!=`function`)return``;let n=await t.getTextContent(),r=``;for(let e of n.items)typeof e.str==`string`&&(r+=e.str,r+=e.hasEOL?`
|
|
2
|
+
`:``);return r}destroy(){this.#i?.destroy?.(),this.#u.clear();for(let e of this.#p.values())e.then(i).catch(()=>{});this.#p.clear(),this.#m.clear(),this.#d=0,this.#i=null}#v(e){let t=this.#u.get(e);if(t)return this.#u.delete(e),this.#u.set(e,t),t.promise;let r=typeof devicePixelRatio==`number`?devicePixelRatio:1,i=this.#n*r,a=this.#o?i*n:i,o={promise:void 0,bytes:0};return o.promise=this.#S(e,a).then(t=>(o.bytes=t.width*t.height*4,this.#d+=o.bytes,this.#b(e),this.#o&&this.#y(e,o,i),t),t=>{throw this.#u.delete(e),t}),this.#u.set(e,o),o.promise}#y(e,t,n){this.#S(e,n).then(n=>{this.#u.get(e)===t&&(this.#d-=t.bytes,t.promise=Promise.resolve(n),t.bytes=n.width*n.height*4,this.#d+=t.bytes,this.#b(e),this.#f?.(e))}).catch(()=>{})}#b(e){for(let[t,n]of this.#u){if(this.#d<=this.#a)break;t===e||n.bytes===0||(this.#u.delete(t),this.#d-=n.bytes)}}#x(e,t){let n=Math.min(t,r),a=`${e}@${n}`,o=this.#p.get(a);if(o)return o;let s=typeof devicePixelRatio==`number`?devicePixelRatio:1,c=this.#S(e,this.#n*s*n).catch(e=>{throw this.#p.delete(a),e});for(let[e,t]of this.#p)e.endsWith(`@${n}`)||(this.#p.delete(e),t.then(i).catch(()=>{}));return this.#p.set(a,c),c}async#S(e,t){if(this.#i===null)throw Error(`PdfSource: use after open() — the document is not loaded.`);let n=await this.#i.getPage(e+1),r=n.getViewport({scale:t}),i=document.createElement(`canvas`);return i.width=Math.ceil(r.width),i.height=Math.ceil(r.height),await n.render({canvasContext:i.getContext(`2d`),viewport:r}).promise,i}}});
|
|
3
3
|
//# sourceMappingURL=index.umd.js.map
|