@prisma/studio-core 0.0.0-dev.202505201204 → 0.0.0-dev.202505201332
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/dist/{CPIOZS5X-ICU6WNOA.js → CPIOZS5X-UPTL2UWR.js} +2 -2
- package/dist/{OKF6E45R-3IGVLQES.js → OKF6E45R-YTUX3V7Q.js} +2 -2
- package/dist/chunk-DOLSM2NU.js +2 -0
- package/dist/chunk-I5ZAREYR.js +2 -0
- package/dist/chunk-NK6FOTFM.js +2 -0
- package/dist/chunk-U2CXFK7N.js +2 -0
- package/dist/chunk-U4ZJBDVG.js +1333 -0
- package/dist/data/accelerate/index.cjs +1 -1
- package/dist/data/accelerate/index.js +2 -2
- package/dist/data/bff/index.cjs +1 -1
- package/dist/data/bff/index.js +2 -2
- package/dist/data/index.cjs +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/pglite/index.cjs +1 -1
- package/dist/data/pglite/index.js +2 -2
- package/dist/data/postgres-core/index.cjs +1 -1
- package/dist/data/postgres-core/index.js +1 -1
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/ui/index.cjs +109 -1335
- package/dist/ui/index.js +110 -7
- package/package.json +12 -13
- package/dist/chunk-IAKOOX7B.js +0 -1
- package/dist/chunk-NVCWH6WH.js +0 -2
- package/dist/chunk-OGMDOPWW.js +0 -2
- package/dist/chunk-RFCV76TR.js +0 -2
- package/dist/chunk-SOR7YZQY.js +0 -1333
- package/dist/chunk-XBQ4XZ2M.js +0 -2
package/dist/chunk-SOR7YZQY.js
DELETED
|
@@ -1,1333 +0,0 @@
|
|
|
1
|
-
import{$ as lo,A as Xr,C as _,D as xn,E as Zr,F as A,G as T,H as Jr,I as eo,J as zt,K as k,L as Ce,M as Vn,N as to,O as no,P as ro,Q as Dt,R as oo,S as io,T as At,U as so,V as Zt,W as wn,X as $n,Y as Hn,_ as Cn,a as Un,b as Gn,c as z,d as Gr,e as N,f as B,g as M,h as Vr,i as Mt,j as Xe,k as mt,l as U,m as Hr,n as jr,o as me,p as ye,q as v,r as j,s as X,u as Fe,v as Wr,w as Qr,x as R,y as Yr,z as bn}from"./chunk-RFCV76TR.js";var _s=!Ce,zs=_s&&!!Xr,ao=()=>{},Rs=e=>e!=null,Ks=e=>e.filter(Rs);function Bs(e){return(...t)=>{for(let n of e)n&&n(...t)}}var E=e=>typeof e=="function"&&!e.length?e():e,Zn=e=>Array.isArray(e)?e:e?[e]:[];function Ns(e,...t){return typeof e=="function"?e(...t):e}var Us=zs?e=>Hr()?U(e):e:U;function Gs(e,t,n,r){let o=e.length,s=t.length,l=0;if(!s){for(;l<o;l++)n(e[l]);return}if(!o){for(;l<s;l++)r(t[l]);return}for(;l<s&&t[l]===e[l];l++);let a,i;t=t.slice(l),e=e.slice(l);for(a of t)e.includes(a)||r(a);for(i of e)t.includes(i)||n(i)}function Vs(e){let[t,n]=z(),r=e?.throw?(g,f)=>{throw n(g instanceof Error?g:new Error(f)),g}:(g,f)=>{n(g instanceof Error?g:new Error(f))},o=e?.api?Array.isArray(e.api)?e.api:[e.api]:[globalThis.localStorage].filter(Boolean),s=e?.prefix?`${e.prefix}.`:"",l=new Map,a=new Proxy({},{get(g,f){let h=l.get(f);h||(h=z(void 0,{equals:!1}),l.set(f,h)),h[0]();let p=o.reduce((m,y)=>{if(m!==null||!y)return m;try{return y.getItem(`${s}${f}`)}catch(b){return r(b,`Error reading ${s}${f} from ${y.name}`),null}},null);return p!==null&&e?.deserializer?e.deserializer(p,f,e.options):p}}),i=(g,f,h)=>{let p=e?.serializer?e.serializer(f,g,h??e.options):f,m=`${s}${g}`;o.forEach(b=>{try{b.getItem(m)!==p&&b.setItem(m,p)}catch(x){r(x,`Error setting ${s}${g} to ${p} in ${b.name}`)}});let y=l.get(g);y&&y[1]()},c=g=>o.forEach(f=>{try{f.removeItem(`${s}${g}`)}catch(h){r(h,`Error removing ${s}${g} from ${f.name}`)}}),u=()=>o.forEach(g=>{try{g.clear()}catch(f){r(f,`Error clearing ${g.name}`)}}),d=()=>{let g={},f=(h,p)=>{if(!g.hasOwnProperty(h)){let m=p&&e?.deserializer?e.deserializer(p,h,e.options):p;m&&(g[h]=m)}};return o.forEach(h=>{if(typeof h.getAll=="function"){let p;try{p=h.getAll()}catch(m){r(m,`Error getting all values from in ${h.name}`)}for(let m of p)f(m,p[m])}else{let p=0,m;try{for(;m=h.key(p++);)g.hasOwnProperty(m)||f(m,h.getItem(m))}catch(y){r(y,`Error getting all values from ${h.name}`)}}}),g};return e?.sync!==!1&&mt(()=>{let g=f=>{let h=!1;o.forEach(p=>{try{p!==f.storageArea&&f.key&&f.newValue!==p.getItem(f.key)&&(f.newValue?p.setItem(f.key,f.newValue):p.removeItem(f.key),h=!0)}catch(m){r(m,`Error synching api ${p.name} from storage event (${f.key}=${f.newValue})`)}}),h&&f.key&&l.get(f.key)?.[1]()};"addEventListener"in globalThis?(globalThis.addEventListener("storage",g),U(()=>globalThis.removeEventListener("storage",g))):(o.forEach(f=>f.addEventListener?.("storage",g)),U(()=>o.forEach(f=>f.removeEventListener?.("storage",g))))}),[a,i,{clear:u,error:t,remove:c,toJSON:d}]}var i0=Vs,Hs=e=>(typeof e.clear=="function"||(e.clear=()=>{let t;for(;t=e.key(0);)e.removeItem(t)}),e),co=e=>{if(!e)return"";let t="";for(let n in e){if(!e.hasOwnProperty(n))continue;let r=e[n];t+=r instanceof Date?`; ${n}=${r.toUTCString()}`:typeof r=="boolean"?`; ${n}`:`; ${n}=${r}`}return t},_e=Hs({_cookies:[globalThis.document,"cookie"],getItem:e=>_e._cookies[0][_e._cookies[1]].match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)")?.pop()??null,setItem:(e,t,n)=>{let r=_e.getItem(e);_e._cookies[0][_e._cookies[1]]=`${e}=${t}${co(n)}`;let o=Object.assign(new Event("storage"),{key:e,oldValue:r,newValue:t,url:globalThis.document.URL,storageArea:_e});window.dispatchEvent(o)},removeItem:e=>{_e._cookies[0][_e._cookies[1]]=`${e}=deleted${co({expires:new Date(0)})}`},key:e=>{let t=null,n=0;return _e._cookies[0][_e._cookies[1]].replace(/(?:^|;)\s*(.+?)\s*=\s*[^;]+/g,(r,o)=>(!t&&o&&n++===e&&(t=o),"")),t},get length(){let e=0;return _e._cookies[0][_e._cookies[1]].replace(/(?:^|;)\s*.+?\s*=\s*[^;]+/g,t=>(e+=t?1:0,"")),e}}),js=1024,Ft=796,cr=700,Ws="bottom-right",Jn="bottom",s0="system",Qs=!1,oi=500,Ys=500,ii=500,Xs=Object.keys(wn)[0],uo=1,Zs=Object.keys($n)[0],Js=me({client:void 0,onlineManager:void 0,queryFlavor:"",version:"",shadowDOMTarget:void 0});function K(){return ye(Js)}var si=me(void 0),l0=e=>{let[t,n]=z(null),r=()=>{let l=t();l!=null&&(l.close(),n(null))},o=(l,a)=>{if(t()!=null)return;let i=window.open("","TSQD-Devtools-Panel",`width=${l},height=${a},popup`);if(!i)throw new Error("Failed to open popup. Please allow popups for this site to view the devtools in picture-in-picture mode.");i.document.head.innerHTML="",i.document.body.innerHTML="",Zr(i.document),i.document.title="TanStack Query Devtools",i.document.body.style.margin="0",i.addEventListener("pagehide",()=>{e.setLocalStore("pip_open","false"),n(null)}),[...(K().shadowDOMTarget||document).styleSheets].forEach(c=>{try{let u=[...c.cssRules].map(h=>h.cssText).join(""),d=document.createElement("style"),g=c.ownerNode,f="";g&&"id"in g&&(f=g.id),f&&d.setAttribute("id",f),d.textContent=u,i.document.head.appendChild(d)}catch{let d=document.createElement("link");if(c.href==null)return;d.rel="stylesheet",d.type=c.type,d.media=c.media.toString(),d.href=c.href,i.document.head.appendChild(d)}}),xn(["focusin","focusout","pointermove","keydown","pointerdown","pointerup","click","mousedown","input"],i.document),e.setLocalStore("pip_open","true"),n(i)};B(()=>{(e.localStore.pip_open??"false")==="true"&&!e.disabled&&o(Number(window.innerWidth),Number(e.localStore.height||Ys))}),B(()=>{let l=(K().shadowDOMTarget||document).querySelector("#_goober"),a=t();if(l&&a){let i=new MutationObserver(()=>{let c=(K().shadowDOMTarget||a.document).querySelector("#_goober");c&&(c.textContent=l.textContent)});i.observe(l,{childList:!0,subtree:!0,characterDataOldValue:!0}),U(()=>{i.disconnect()})}});let s=M(()=>({pipWindow:t(),requestPipWindow:o,closePipWindow:r,disabled:e.disabled??!1}));return v(si.Provider,{value:s,get children(){return e.children}})},ur=()=>M(()=>{let t=ye(si);if(!t)throw new Error("usePiPWindow must be used within a PiPProvider");return t()}),el=me(()=>"dark");function xe(){return ye(el)}var li={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u1EA4:"A",\u1EAE:"A",\u1EB2:"A",\u1EB4:"A",\u1EB6:"A",\u00C6:"AE",\u1EA6:"A",\u1EB0:"A",\u0202:"A",\u00C7:"C",\u1E08:"C",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u1EBE:"E",\u1E16:"E",\u1EC0:"E",\u1E14:"E",\u1E1C:"E",\u0206:"E",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u1E2E:"I",\u020A:"I",\u00D0:"D",\u00D1:"N",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u1ED0:"O",\u1E4C:"O",\u1E52:"O",\u020E:"O",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00DD:"Y",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u1EA5:"a",\u1EAF:"a",\u1EB3:"a",\u1EB5:"a",\u1EB7:"a",\u00E6:"ae",\u1EA7:"a",\u1EB1:"a",\u0203:"a",\u00E7:"c",\u1E09:"c",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u1EBF:"e",\u1E17:"e",\u1EC1:"e",\u1E15:"e",\u1E1D:"e",\u0207:"e",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u1E2F:"i",\u020B:"i",\u00F0:"d",\u00F1:"n",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u1ED1:"o",\u1E4D:"o",\u1E53:"o",\u020F:"o",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00FD:"y",\u00FF:"y",\u0100:"A",\u0101:"a",\u0102:"A",\u0103:"a",\u0104:"A",\u0105:"a",\u0106:"C",\u0107:"c",\u0108:"C",\u0109:"c",\u010A:"C",\u010B:"c",\u010C:"C",\u010D:"c",C\u0306:"C",c\u0306:"c",\u010E:"D",\u010F:"d",\u0110:"D",\u0111:"d",\u0112:"E",\u0113:"e",\u0114:"E",\u0115:"e",\u0116:"E",\u0117:"e",\u0118:"E",\u0119:"e",\u011A:"E",\u011B:"e",\u011C:"G",\u01F4:"G",\u011D:"g",\u01F5:"g",\u011E:"G",\u011F:"g",\u0120:"G",\u0121:"g",\u0122:"G",\u0123:"g",\u0124:"H",\u0125:"h",\u0126:"H",\u0127:"h",\u1E2A:"H",\u1E2B:"h",\u0128:"I",\u0129:"i",\u012A:"I",\u012B:"i",\u012C:"I",\u012D:"i",\u012E:"I",\u012F:"i",\u0130:"I",\u0131:"i",\u0132:"IJ",\u0133:"ij",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u1E30:"K",\u1E31:"k",K\u0306:"K",k\u0306:"k",\u0139:"L",\u013A:"l",\u013B:"L",\u013C:"l",\u013D:"L",\u013E:"l",\u013F:"L",\u0140:"l",\u0141:"l",\u0142:"l",\u1E3E:"M",\u1E3F:"m",M\u0306:"M",m\u0306:"m",\u0143:"N",\u0144:"n",\u0145:"N",\u0146:"n",\u0147:"N",\u0148:"n",\u0149:"n",N\u0306:"N",n\u0306:"n",\u014C:"O",\u014D:"o",\u014E:"O",\u014F:"o",\u0150:"O",\u0151:"o",\u0152:"OE",\u0153:"oe",P\u0306:"P",p\u0306:"p",\u0154:"R",\u0155:"r",\u0156:"R",\u0157:"r",\u0158:"R",\u0159:"r",R\u0306:"R",r\u0306:"r",\u0212:"R",\u0213:"r",\u015A:"S",\u015B:"s",\u015C:"S",\u015D:"s",\u015E:"S",\u0218:"S",\u0219:"s",\u015F:"s",\u0160:"S",\u0161:"s",\u0162:"T",\u0163:"t",\u021B:"t",\u021A:"T",\u0164:"T",\u0165:"t",\u0166:"T",\u0167:"t",T\u0306:"T",t\u0306:"t",\u0168:"U",\u0169:"u",\u016A:"U",\u016B:"u",\u016C:"U",\u016D:"u",\u016E:"U",\u016F:"u",\u0170:"U",\u0171:"u",\u0172:"U",\u0173:"u",\u0216:"U",\u0217:"u",V\u0306:"V",v\u0306:"v",\u0174:"W",\u0175:"w",\u1E82:"W",\u1E83:"w",X\u0306:"X",x\u0306:"x",\u0176:"Y",\u0177:"y",\u0178:"Y",Y\u0306:"Y",y\u0306:"y",\u0179:"Z",\u017A:"z",\u017B:"Z",\u017C:"z",\u017D:"Z",\u017E:"z",\u017F:"s",\u0192:"f",\u01A0:"O",\u01A1:"o",\u01AF:"U",\u01B0:"u",\u01CD:"A",\u01CE:"a",\u01CF:"I",\u01D0:"i",\u01D1:"O",\u01D2:"o",\u01D3:"U",\u01D4:"u",\u01D5:"U",\u01D6:"u",\u01D7:"U",\u01D8:"u",\u01D9:"U",\u01DA:"u",\u01DB:"U",\u01DC:"u",\u1EE8:"U",\u1EE9:"u",\u1E78:"U",\u1E79:"u",\u01FA:"A",\u01FB:"a",\u01FC:"AE",\u01FD:"ae",\u01FE:"O",\u01FF:"o",\u00DE:"TH",\u00FE:"th",\u1E54:"P",\u1E55:"p",\u1E64:"S",\u1E65:"s",X\u0301:"X",x\u0301:"x",\u0403:"\u0413",\u0453:"\u0433",\u040C:"\u041A",\u045C:"\u043A",A\u030B:"A",a\u030B:"a",E\u030B:"E",e\u030B:"e",I\u030B:"I",i\u030B:"i",\u01F8:"N",\u01F9:"n",\u1ED2:"O",\u1ED3:"o",\u1E50:"O",\u1E51:"o",\u1EEA:"U",\u1EEB:"u",\u1E80:"W",\u1E81:"w",\u1EF2:"Y",\u1EF3:"y",\u0200:"A",\u0201:"a",\u0204:"E",\u0205:"e",\u0208:"I",\u0209:"i",\u020C:"O",\u020D:"o",\u0210:"R",\u0211:"r",\u0214:"U",\u0215:"u",B\u030C:"B",b\u030C:"b",\u010C\u0323:"C",\u010D\u0323:"c",\u00CA\u030C:"E",\u00EA\u030C:"e",F\u030C:"F",f\u030C:"f",\u01E6:"G",\u01E7:"g",\u021E:"H",\u021F:"h",J\u030C:"J",\u01F0:"j",\u01E8:"K",\u01E9:"k",M\u030C:"M",m\u030C:"m",P\u030C:"P",p\u030C:"p",Q\u030C:"Q",q\u030C:"q",\u0158\u0329:"R",\u0159\u0329:"r",\u1E66:"S",\u1E67:"s",V\u030C:"V",v\u030C:"v",W\u030C:"W",w\u030C:"w",X\u030C:"X",x\u030C:"x",Y\u030C:"Y",y\u030C:"y",A\u0327:"A",a\u0327:"a",B\u0327:"B",b\u0327:"b",\u1E10:"D",\u1E11:"d",\u0228:"E",\u0229:"e",\u0190\u0327:"E",\u025B\u0327:"e",\u1E28:"H",\u1E29:"h",I\u0327:"I",i\u0327:"i",\u0197\u0327:"I",\u0268\u0327:"i",M\u0327:"M",m\u0327:"m",O\u0327:"O",o\u0327:"o",Q\u0327:"Q",q\u0327:"q",U\u0327:"U",u\u0327:"u",X\u0327:"X",x\u0327:"x",Z\u0327:"Z",z\u0327:"z"},tl=Object.keys(li).join("|"),nl=new RegExp(tl,"g");function rl(e){return e.replace(nl,t=>li[t])}var Te={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0};function fo(e,t,n){var r;if(n=n||{},n.threshold=(r=n.threshold)!=null?r:Te.MATCHES,!n.accessors){let l=go(e,t,n);return{rankedValue:e,rank:l,accessorIndex:-1,accessorThreshold:n.threshold,passed:l>=n.threshold}}let o=ll(e,n.accessors),s={rankedValue:e,rank:Te.NO_MATCH,accessorIndex:-1,accessorThreshold:n.threshold,passed:!1};for(let l=0;l<o.length;l++){let a=o[l],i=go(a.itemValue,t,n),{minRanking:c,maxRanking:u,threshold:d=n.threshold}=a.attributes;i<c&&i>=Te.MATCHES?i=c:i>u&&(i=u),i=Math.min(i,u),i>=d&&i>s.rank&&(s.rank=i,s.passed=!0,s.accessorIndex=l,s.accessorThreshold=d,s.rankedValue=a.itemValue)}return s}function go(e,t,n){return e=ho(e,n),t=ho(t,n),t.length>e.length?Te.NO_MATCH:e===t?Te.CASE_SENSITIVE_EQUAL:(e=e.toLowerCase(),t=t.toLowerCase(),e===t?Te.EQUAL:e.startsWith(t)?Te.STARTS_WITH:e.includes(` ${t}`)?Te.WORD_STARTS_WITH:e.includes(t)?Te.CONTAINS:t.length===1?Te.NO_MATCH:ol(e).includes(t)?Te.ACRONYM:il(e,t))}function ol(e){let t="";return e.split(" ").forEach(r=>{r.split("-").forEach(s=>{t+=s.substr(0,1)})}),t}function il(e,t){let n=0,r=0;function o(i,c,u){for(let d=u,g=c.length;d<g;d++)if(c[d]===i)return n+=1,d+1;return-1}function s(i){let c=1/i,u=n/t.length;return Te.MATCHES+u*c}let l=o(t[0],e,0);if(l<0)return Te.NO_MATCH;r=l;for(let i=1,c=t.length;i<c;i++){let u=t[i];if(r=o(u,e,r),!(r>-1))return Te.NO_MATCH}let a=r-l;return s(a)}function ho(e,t){let{keepDiacritics:n}=t;return e=`${e}`,n||(e=rl(e)),e}function sl(e,t){let n=t;typeof t=="object"&&(n=t.accessor);let r=n(e);return r==null?[]:Array.isArray(r)?r:[String(r)]}function ll(e,t){let n=[];for(let r=0,o=t.length;r<o;r++){let s=t[r],l=al(s),a=sl(e,s);for(let i=0,c=a.length;i<c;i++)n.push({itemValue:a[i],attributes:l})}return n}var vo={maxRanking:1/0,minRanking:-1/0};function al(e){return typeof e=="function"?vo:{...vo,...e}}var cl={data:""},ul=e=>typeof window=="object"?((e?e.querySelector("#_goober"):window._goober)||Object.assign((e||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:e||cl,dl=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,fl=/\/\*[^]*?\*\/| +/g,po=/\n+/g,Tt=(e,t)=>{let n="",r="",o="";for(let s in e){let l=e[s];s[0]=="@"?s[1]=="i"?n=s+" "+l+";":r+=s[1]=="f"?Tt(l,s):s+"{"+Tt(l,s[1]=="k"?"":t)+"}":typeof l=="object"?r+=Tt(l,t?t.replace(/([^,])+/g,a=>s.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,i=>/&/.test(i)?i.replace(/&/g,a):a?a+" "+i:i)):s):l!=null&&(s=/^--/.test(s)?s:s.replace(/[A-Z]/g,"-$&").toLowerCase(),o+=Tt.p?Tt.p(s,l):s+":"+l+";")}return n+(t&&o?t+"{"+o+"}":o)+r},at={},ai=e=>{if(typeof e=="object"){let t="";for(let n in e)t+=n+ai(e[n]);return t}return e},gl=(e,t,n,r,o)=>{let s=ai(e),l=at[s]||(at[s]=(i=>{let c=0,u=11;for(;c<i.length;)u=101*u+i.charCodeAt(c++)>>>0;return"go"+u})(s));if(!at[l]){let i=s!==e?e:(c=>{let u,d,g=[{}];for(;u=dl.exec(c.replace(fl,""));)u[4]?g.shift():u[3]?(d=u[3].replace(po," ").trim(),g.unshift(g[0][d]=g[0][d]||{})):g[0][u[1]]=u[2].replace(po," ").trim();return g[0]})(e);at[l]=Tt(o?{["@keyframes "+l]:i}:i,n?"":"."+l)}let a=n&&at.g?at.g:null;return n&&(at.g=at[l]),((i,c,u,d)=>{d?c.data=c.data.replace(d,i):c.data.indexOf(i)===-1&&(c.data=u?i+c.data:c.data+i)})(at[l],t,r,a),l},hl=(e,t,n)=>e.reduce((r,o,s)=>{let l=t[s];if(l&&l.call){let a=l(n),i=a&&a.props&&a.props.className||/^go/.test(a)&&a;l=i?"."+i:a&&typeof a=="object"?a.props?"":Tt(a,""):a===!1?"":a}return r+o+(l??"")},"");function W(e){let t=this||{},n=e.call?e(t.p):e;return gl(n.unshift?n.raw?hl(n,[].slice.call(arguments,1),t.p):n.reduce((r,o)=>Object.assign(r,o&&o.call?o(t.p):o),{}):n,ul(t.target),t.g,t.o,t.k)}W.bind({g:1});W.bind({k:1});function ci(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(n=ci(e[t]))&&(r&&(r+=" "),r+=n)}else for(n in e)e[n]&&(r&&(r+=" "),r+=n);return r}function O(){for(var e,t,n=0,r="",o=arguments.length;n<o;n++)(e=arguments[n])&&(t=ci(e))&&(r&&(r+=" "),r+=t);return r}function vl(e,t){let n=Mt(e);if(Ce){let d=n.slice();return()=>d}let{onChange:r}=t,o=new Set(t.appear?void 0:n),s=new WeakSet,[l,a]=z([],{equals:!1}),[i]=jr(),c=d=>{a(g=>(g.push.apply(g,d),g));for(let g of d)s.delete(g)},u=(d,g,f)=>d.splice(f,0,g);return M(d=>{let g=l(),f=e();if(f[Un],Mt(i))return i(),d;if(g.length){let h=d.filter(p=>!g.includes(p));return g.length=0,r({list:h,added:[],removed:[],unchanged:h,finishRemoved:c}),h}return Mt(()=>{let h=new Set(f),p=f.slice(),m=[],y=[],b=[];for(let w of f)(o.has(w)?b:m).push(w);let x=!m.length;for(let w=0;w<d.length;w++){let $=d[w];h.has($)||(s.has($)||(y.push($),s.add($)),u(p,$,w)),x&&$!==p[w]&&(x=!1)}return!y.length&&x?d:(r({list:p,added:m,removed:y,unchanged:b,finishRemoved:c}),o=h,p)})},t.appear?[]:n.slice())}function De(...e){return Bs(e)}var mo=Ce?e=>e!=null&&typeof e=="object"&&"t"in e:e=>e instanceof Element;function er(e,t){if(t(e))return e;if(typeof e=="function"&&!e.length)return er(e(),t);if(Array.isArray(e)){let n=[];for(let r of e){let o=er(r,t);o&&(Array.isArray(o)?n.push.apply(n,o):n.push(o))}return n.length?n:null}return null}function pl(e,t=mo,n=mo){let r=M(e),o=M(()=>er(r(),Ce?n:t));return o.toArray=()=>{let s=o();return Array.isArray(s)?s:s?[s]:[]},o}function ml(e){return M(()=>{let t=e.name||"s";return{enterActive:(e.enterActiveClass||t+"-enter-active").split(" "),enter:(e.enterClass||t+"-enter").split(" "),enterTo:(e.enterToClass||t+"-enter-to").split(" "),exitActive:(e.exitActiveClass||t+"-exit-active").split(" "),exit:(e.exitClass||t+"-exit").split(" "),exitTo:(e.exitToClass||t+"-exit-to").split(" "),move:(e.moveClass||t+"-move").split(" ")}})}function ui(e){requestAnimationFrame(()=>requestAnimationFrame(e))}function yl(e,t,n,r){let{onBeforeEnter:o,onEnter:s,onAfterEnter:l}=t;o?.(n),n.classList.add(...e.enter),n.classList.add(...e.enterActive),queueMicrotask(()=>{if(!n.parentNode)return r?.();s?.(n,()=>a())}),ui(()=>{n.classList.remove(...e.enter),n.classList.add(...e.enterTo),(!s||s.length<2)&&(n.addEventListener("transitionend",a),n.addEventListener("animationend",a))});function a(i){(!i||i.target===n)&&(n.removeEventListener("transitionend",a),n.removeEventListener("animationend",a),n.classList.remove(...e.enterActive),n.classList.remove(...e.enterTo),l?.(n))}}function bl(e,t,n,r){let{onBeforeExit:o,onExit:s,onAfterExit:l}=t;if(!n.parentNode)return r?.();o?.(n),n.classList.add(...e.exit),n.classList.add(...e.exitActive),s?.(n,()=>a()),ui(()=>{n.classList.remove(...e.exit),n.classList.add(...e.exitTo),(!s||s.length<2)&&(n.addEventListener("transitionend",a),n.addEventListener("animationend",a))});function a(i){(!i||i.target===n)&&(r?.(),n.removeEventListener("transitionend",a),n.removeEventListener("animationend",a),n.classList.remove(...e.exitActive),n.classList.remove(...e.exitTo),l?.(n))}}var yo=e=>{let t=ml(e);return vl(pl(()=>e.children).toArray,{appear:e.appear,onChange({added:n,removed:r,finishRemoved:o,list:s}){let l=t();for(let i of n)yl(l,e,i);let a=[];for(let i of s)i.isConnected&&(i instanceof HTMLElement||i instanceof SVGElement)&&a.push({el:i,rect:i.getBoundingClientRect()});queueMicrotask(()=>{let i=[];for(let{el:c,rect:u}of a)if(c.isConnected){let d=c.getBoundingClientRect(),g=u.left-d.left,f=u.top-d.top;(g||f)&&(c.style.transform=`translate(${g}px, ${f}px)`,c.style.transitionDuration="0s",i.push(c))}document.body.offsetHeight;for(let c of i){let u=function(d){(d.target===c||/transform$/.test(d.propertyName))&&(c.removeEventListener("transitionend",u),c.classList.remove(...l.move))};c.classList.add(...l.move),c.style.transform=c.style.transitionDuration="",c.addEventListener("transitionend",u)}});for(let i of r)bl(l,e,i,()=>o([i]))}})},jn=Symbol("fallback");function bo(e){for(let t of e)t.dispose()}function xl(e,t,n,r={}){if(Ce){let l=e(),a=[];if(l&&l.length)for(let i=0,c=l.length;i<c;i++)a.push(n(()=>l[i],()=>i));else r.fallback&&(a=[r.fallback()]);return()=>a}let o=new Map;return U(()=>bo(o.values())),()=>{let l=e()||[];return l[Un],Mt(()=>{if(!l.length)return bo(o.values()),o.clear(),r.fallback?[Gn(d=>(o.set(jn,{dispose:d}),r.fallback()))]:[];let a=new Array(l.length),i=o.get(jn);if(!o.size||i){i?.dispose(),o.delete(jn);for(let u=0;u<l.length;u++){let d=l[u],g=t(d,u);s(a,d,u,g)}return a}let c=new Set(o.keys());for(let u=0;u<l.length;u++){let d=l[u],g=t(d,u);c.delete(g);let f=o.get(g);f?(a[u]=f.mapped,f.setIndex?.(u),f.setItem(()=>d)):s(a,d,u,g)}for(let u of c)o.get(u)?.dispose(),o.delete(u);return a})};function s(l,a,i,c){Gn(u=>{let[d,g]=z(a),f={setItem:g,dispose:u};if(n.length>1){let[h,p]=z(i);f.setIndex=p,f.mapped=n(d,h)}else f.mapped=n(d);o.set(c,f),l[i]=f.mapped})}}function Mn(e){let{by:t}=e;return M(xl(()=>e.each,typeof t=="function"?t:n=>n[t],e.children,"fallback"in e?{fallback:()=>e.fallback}:void 0))}function wl(e,t,n,r){return e.addEventListener(t,n,r),Us(e.removeEventListener.bind(e,t,n,r))}function $l(e,t,n,r){if(Ce)return;let o=()=>{Zn(E(e)).forEach(s=>{s&&Zn(E(t)).forEach(l=>wl(s,l,n,r))})};typeof e=="function"?B(o):N(o)}function Cl(e,t){if(Ce)return{observe:ao,unobserve:ao};let n=new ResizeObserver(e);return U(n.disconnect.bind(n)),{observe:r=>n.observe(r,t),unobserve:n.unobserve.bind(n)}}function di(e,t,n){if(Ce)return;let r=new WeakMap,{observe:o,unobserve:s}=Cl(l=>{for(let a of l){let{contentRect:i,target:c}=a,u=Math.round(i.width),d=Math.round(i.height),g=r.get(c);(!g||g.width!==u||g.height!==d)&&(t(i,c,a),r.set(c,{width:u,height:d}))}},n);B(l=>{let a=Ks(Zn(E(e)));return Gs(a,l,o,s),a},[])}var Sl=/((?:--)?(?:\w+-?)+)\s*:\s*([^;]*)/g;function xo(e){let t={},n;for(;n=Sl.exec(e);)t[n[1]]=n[2];return t}function Ln(e,t){if(typeof e=="string"){if(typeof t=="string")return`${e};${t}`;e=xo(e)}else typeof t=="string"&&(t=xo(t));return{...e,...t}}function kl(e,t,n=-1){return n in e?[...e.slice(0,n),t,...e.slice(n)]:[...e,t]}function tr(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function El(e){return typeof e=="number"}function Kt(e){return Object.prototype.toString.call(e)==="[object String]"}function Ml(e){return typeof e=="function"}function un(e){return t=>`${e()}-${t}`}function Ke(e,t){return e?e===t||e.contains(t):!1}function nn(e,t=!1){let{activeElement:n}=Je(e);if(!n?.nodeName)return null;if(fi(n)&&n.contentDocument)return nn(n.contentDocument.body,t);if(t){let r=n.getAttribute("aria-activedescendant");if(r){let o=Je(n).getElementById(r);if(o)return o}}return n}function Dl(e){return Je(e).defaultView||window}function Je(e){return e?e.ownerDocument||e:document}function fi(e){return e.tagName==="IFRAME"}var dr=(e=>(e.Escape="Escape",e.Enter="Enter",e.Tab="Tab",e.Space=" ",e.ArrowDown="ArrowDown",e.ArrowLeft="ArrowLeft",e.ArrowRight="ArrowRight",e.ArrowUp="ArrowUp",e.End="End",e.Home="Home",e.PageDown="PageDown",e.PageUp="PageUp",e))(dr||{});function fr(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.userAgentData?.platform||window.navigator.platform):!1}function On(){return fr(/^Mac/i)}function Al(){return fr(/^iPhone/i)}function Tl(){return fr(/^iPad/i)||On()&&navigator.maxTouchPoints>1}function Fl(){return Al()||Tl()}function Il(){return On()||Fl()}function ue(e,t){return t&&(Ml(t)?t(e):t[0](t[1],e)),e?.defaultPrevented}function be(e){return t=>{for(let n of e)ue(t,n)}}function Pl(e){return On()?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey}function ke(e){if(e)if(Ll())e.focus({preventScroll:!0});else{let t=Ol(e);e.focus(),ql(t)}}var Sn=null;function Ll(){if(Sn==null){Sn=!1;try{document.createElement("div").focus({get preventScroll(){return Sn=!0,!0}})}catch{}}return Sn}function Ol(e){let t=e.parentNode,n=[],r=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==r;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&n.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return r instanceof HTMLElement&&n.push({element:r,scrollTop:r.scrollTop,scrollLeft:r.scrollLeft}),n}function ql(e){for(let{element:t,scrollTop:n,scrollLeft:r}of e)t.scrollTop=n,t.scrollLeft=r}var gi=["input:not([type='hidden']):not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","[tabindex]","iframe","object","embed","audio[controls]","video[controls]","[contenteditable]:not([contenteditable='false'])"],_l=[...gi,'[tabindex]:not([tabindex="-1"]):not([disabled])'],gr=gi.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])",zl=_l.join(':not([hidden]):not([tabindex="-1"]),');function hi(e,t){let r=Array.from(e.querySelectorAll(gr)).filter(wo);return t&&wo(e)&&r.unshift(e),r.forEach((o,s)=>{if(fi(o)&&o.contentDocument){let l=o.contentDocument.body,a=hi(l,!1);r.splice(s,1,...a)}}),r}function wo(e){return vi(e)&&!Rl(e)}function vi(e){return e.matches(gr)&&hr(e)}function Rl(e){return parseInt(e.getAttribute("tabindex")||"0",10)<0}function hr(e,t){return e.nodeName!=="#comment"&&Kl(e)&&Bl(e,t)&&(!e.parentElement||hr(e.parentElement,e))}function Kl(e){if(!(e instanceof HTMLElement)&&!(e instanceof SVGElement))return!1;let{display:t,visibility:n}=e.style,r=t!=="none"&&n!=="hidden"&&n!=="collapse";if(r){if(!e.ownerDocument.defaultView)return r;let{getComputedStyle:o}=e.ownerDocument.defaultView,{display:s,visibility:l}=o(e);r=s!=="none"&&l!=="hidden"&&l!=="collapse"}return r}function Bl(e,t){return!e.hasAttribute("hidden")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Nl(e,t,n){let r=t?.tabbable?zl:gr,o=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode(s){return t?.from?.contains(s)?NodeFilter.FILTER_REJECT:s.matches(r)&&hr(s)&&(!t?.accept||t.accept(s))?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});return t?.from&&(o.currentNode=t.from),o}function $o(e){for(;e&&!Ul(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}function Ul(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function Gl(){}function Vl(e,t){let[n,r]=e,o=!1,s=t.length;for(let l=s,a=0,i=l-1;a<l;i=a++){let[c,u]=t[a],[d,g]=t[i],[,f]=t[i===0?l-1:i-1]||[0,0],h=(u-g)*(n-c)-(c-d)*(r-u);if(g<u){if(r>=g&&r<u){if(h===0)return!0;h>0&&(r===g?r>f&&(o=!o):o=!o)}}else if(u<g){if(r>u&&r<=g){if(h===0)return!0;h<0&&(r===g?r<f&&(o=!o):o=!o)}}else if(r==u&&(n>=d&&n<=c||n>=c&&n<=d))return!0}return o}function Q(e,t){return j(e,t)}var Jt=new Map,Co=new Set;function So(){if(typeof window>"u")return;let e=n=>{if(!n.target)return;let r=Jt.get(n.target);r||(r=new Set,Jt.set(n.target,r),n.target.addEventListener("transitioncancel",t)),r.add(n.propertyName)},t=n=>{if(!n.target)return;let r=Jt.get(n.target);if(r&&(r.delete(n.propertyName),r.size===0&&(n.target.removeEventListener("transitioncancel",t),Jt.delete(n.target)),Jt.size===0)){for(let o of Co)o();Co.clear()}};document.body.addEventListener("transitionrun",e),document.body.addEventListener("transitionend",t)}typeof document<"u"&&(document.readyState!=="loading"?So():document.addEventListener("DOMContentLoaded",So));function nr(e,t){let n=ko(e,t,"left"),r=ko(e,t,"top"),o=t.offsetWidth,s=t.offsetHeight,l=e.scrollLeft,a=e.scrollTop,i=l+e.offsetWidth,c=a+e.offsetHeight;n<=l?l=n:n+o>i&&(l+=n+o-i),r<=a?a=r:r+s>c&&(a+=r+s-c),e.scrollLeft=l,e.scrollTop=a}function ko(e,t,n){let r=n==="left"?"offsetLeft":"offsetTop",o=0;for(;t.offsetParent&&(o+=t[r],t.offsetParent!==e);){if(t.offsetParent.contains(e)){o-=e[r];break}t=t.offsetParent}return o}function Hl(e,t){if(document.contains(e)){let n=document.scrollingElement||document.documentElement;if(window.getComputedStyle(n).overflow==="hidden"){let o=$o(e);for(;e&&o&&e!==n&&o!==n;)nr(o,e),e=o,o=$o(e)}else{let{left:o,top:s}=e.getBoundingClientRect();e?.scrollIntoView?.({block:"nearest"});let{left:l,top:a}=e.getBoundingClientRect();(Math.abs(o-l)>1||Math.abs(s-a)>1)&&e.scrollIntoView?.({block:"nearest"})}}}var pi={border:"0",clip:"rect(0 0 0 0)","clip-path":"inset(50%)",height:"1px",margin:"0 -1px -1px 0",overflow:"hidden",padding:"0",position:"absolute",width:"1px","white-space":"nowrap"};function Be(e){return t=>(e(t),()=>e(void 0))}function qn(e,t){let[n,r]=z(Eo(t?.()));return B(()=>{r(e()?.tagName.toLowerCase()||Eo(t?.()))}),n}function Eo(e){return Kt(e)?e:void 0}function de(e){let[t,n]=X(e,["as"]);if(!t.as)throw new Error("[kobalte]: Polymorphic is missing the required `as` prop.");return v(to,j(n,{get component(){return t.as}}))}var jl=["id","name","validationState","required","disabled","readOnly"];function Wl(e){let t=`form-control-${Fe()}`,n=Q({id:t},e),[r,o]=z(),[s,l]=z(),[a,i]=z(),[c,u]=z(),d=(p,m,y)=>{let b=y!=null||r()!=null;return[y,r(),b&&m!=null?p:void 0].filter(Boolean).join(" ")||void 0},g=p=>[a(),c(),p].filter(Boolean).join(" ")||void 0,f=M(()=>({"data-valid":E(n.validationState)==="valid"?"":void 0,"data-invalid":E(n.validationState)==="invalid"?"":void 0,"data-required":E(n.required)?"":void 0,"data-disabled":E(n.disabled)?"":void 0,"data-readonly":E(n.readOnly)?"":void 0}));return{formControlContext:{name:()=>E(n.name)??E(n.id),dataset:f,validationState:()=>E(n.validationState),isRequired:()=>E(n.required),isDisabled:()=>E(n.disabled),isReadOnly:()=>E(n.readOnly),labelId:r,fieldId:s,descriptionId:a,errorMessageId:c,getAriaLabelledBy:d,getAriaDescribedBy:g,generateId:un(()=>E(n.id)),registerLabel:Be(o),registerField:Be(l),registerDescription:Be(i),registerErrorMessage:Be(u)}}}var mi=me();function dn(){let e=ye(mi);if(e===void 0)throw new Error("[kobalte]: `useFormControlContext` must be used within a `FormControlContext.Provider` component");return e}function yi(e){let t=dn(),n=Q({id:t.generateId("description")},e);return B(()=>U(t.registerDescription(n.id))),v(de,j({as:"div"},()=>t.dataset(),n))}function bi(e){let t=dn(),n=Q({id:t.generateId("error-message")},e),[r,o]=X(n,["forceMount"]),s=()=>t.validationState()==="invalid";return B(()=>{s()&&U(t.registerErrorMessage(o.id))}),v(R,{get when(){return r.forceMount||s()},get children(){return v(de,j({as:"div"},()=>t.dataset(),o))}})}function Ql(e){let t,n=dn(),r=Q({id:n.generateId("label")},e),[o,s]=X(r,["ref"]),l=qn(()=>t,()=>"label");return B(()=>U(n.registerLabel(s.id))),v(de,j({as:"label",ref(a){let i=De(c=>t=c,o.ref);typeof i=="function"&&i(a)},get for(){return M(()=>l()==="label")()?n.fieldId():void 0}},()=>n.dataset(),s))}function Yl(e,t){B(Xe(e,n=>{if(n==null)return;let r=Xl(n);r!=null&&(r.addEventListener("reset",t,{passive:!0}),U(()=>{r.removeEventListener("reset",t)}))}))}function Xl(e){return Zl(e)?e.form:e.closest("form")}function Zl(e){return e.matches("textarea, input, select, button")}function fn(e){let[t,n]=z(e.defaultValue?.()),r=M(()=>e.value?.()!==void 0),o=M(()=>r()?e.value?.():t());return[o,l=>{Mt(()=>{let a=Ns(l,o());return Object.is(a,o())||(r()||n(a),e.onChange?.(a)),a})}]}function xi(e){let[t,n]=fn(e);return[()=>t()??!1,n]}function Jl(e){let[t,n]=fn(e);return[()=>t()??[],n]}function ea(e={}){let[t,n]=xi({value:()=>E(e.isSelected),defaultValue:()=>!!E(e.defaultIsSelected),onChange:s=>e.onSelectedChange?.(s)});return{isSelected:t,setIsSelected:s=>{!E(e.isReadOnly)&&!E(e.isDisabled)&&n(s)},toggle:()=>{!E(e.isReadOnly)&&!E(e.isDisabled)&&n(!t())}}}var ta=Object.defineProperty,_n=(e,t)=>{for(var n in t)ta(e,n,{get:t[n],enumerable:!0})},wi=me();function $i(){return ye(wi)}function na(){let e=$i();if(e===void 0)throw new Error("[kobalte]: `useDomCollectionContext` must be used within a `DomCollectionProvider` component");return e}function Ci(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}function ra(e,t){let n=t.ref();if(!n)return-1;let r=e.length;if(!r)return-1;for(;r--;){let o=e[r]?.ref();if(o&&Ci(o,n))return r+1}return 0}function oa(e){let t=e.map((r,o)=>[o,r]),n=!1;return t.sort(([r,o],[s,l])=>{let a=o.ref(),i=l.ref();return a===i||!a||!i?0:Ci(a,i)?(r>s&&(n=!0),-1):(r<s&&(n=!0),1)}),n?t.map(([r,o])=>o):e}function Si(e,t){let n=oa(e);e!==n&&t(n)}function ia(e){let t=e[0],n=e[e.length-1]?.ref(),r=t?.ref()?.parentElement;for(;r;){if(n&&r.contains(n))return r;r=r.parentElement}return Je(r).body}function sa(e,t){B(()=>{let n=setTimeout(()=>{Si(e(),t)});U(()=>clearTimeout(n))})}function la(e,t){if(typeof IntersectionObserver!="function"){sa(e,t);return}let n=[];B(()=>{let r=()=>{let l=!!n.length;n=e(),l&&Si(e(),t)},o=ia(e()),s=new IntersectionObserver(r,{root:o});for(let l of e()){let a=l.ref();a&&s.observe(a)}U(()=>s.disconnect())})}function aa(e={}){let[t,n]=Jl({value:()=>E(e.items),onChange:s=>e.onItemsChange?.(s)});la(t,n);let r=s=>(n(l=>{let a=ra(l,s);return kl(l,s,a)}),()=>{n(l=>{let a=l.filter(i=>i.ref()!==s.ref());return l.length===a.length?l:a})});return{DomCollectionProvider:s=>v(wi.Provider,{value:{registerItem:r},get children(){return s.children}})}}function ca(e){let t=na(),n=Q({shouldRegisterItem:!0},e);B(()=>{if(!n.shouldRegisterItem)return;let r=t.registerItem(n.getItem());U(r)})}function ki(e){let t=e.startIndex??0,n=e.startLevel??0,r=[],o=i=>{if(i==null)return"";let c=e.getKey??"key",u=Kt(c)?i[c]:c(i);return u!=null?String(u):""},s=i=>{if(i==null)return"";let c=e.getTextValue??"textValue",u=Kt(c)?i[c]:c(i);return u!=null?String(u):""},l=i=>{if(i==null)return!1;let c=e.getDisabled??"disabled";return(Kt(c)?i[c]:c(i))??!1},a=i=>{if(i!=null)return Kt(e.getSectionChildren)?i[e.getSectionChildren]:e.getSectionChildren?.(i)};for(let i of e.dataSource){if(Kt(i)||El(i)){r.push({type:"item",rawValue:i,key:String(i),textValue:String(i),disabled:l(i),level:n,index:t}),t++;continue}if(a(i)!=null){r.push({type:"section",rawValue:i,key:"",textValue:"",disabled:!1,level:n,index:t}),t++;let c=a(i)??[];if(c.length>0){let u=ki({dataSource:c,getKey:e.getKey,getTextValue:e.getTextValue,getDisabled:e.getDisabled,getSectionChildren:e.getSectionChildren,startIndex:t,startLevel:n+1});r.push(...u),t+=u.length}}else r.push({type:"item",rawValue:i,key:o(i),textValue:s(i),disabled:l(i),level:n,index:t}),t++}return r}function ua(e,t=[]){return M(()=>{let n=ki({dataSource:E(e.dataSource),getKey:E(e.getKey),getTextValue:E(e.getTextValue),getDisabled:E(e.getDisabled),getSectionChildren:E(e.getSectionChildren)});for(let r=0;r<t.length;r++)t[r]();return e.factory(n)})}var da=new Set(["Avst","Arab","Armi","Syrc","Samr","Mand","Thaa","Mend","Nkoo","Adlm","Rohg","Hebr"]),fa=new Set(["ae","ar","arc","bcc","bqi","ckb","dv","fa","glk","he","ku","mzn","nqo","pnb","ps","sd","ug","ur","yi"]);function ga(e){if(Intl.Locale){let n=new Intl.Locale(e).maximize().script??"";return da.has(n)}let t=e.split("-")[0];return fa.has(t)}function ha(e){return ga(e)?"rtl":"ltr"}function Ei(){let e=typeof navigator<"u"&&(navigator.language||navigator.userLanguage)||"en-US";return{locale:e,direction:ha(e)}}var rr=Ei(),rn=new Set;function Mo(){rr=Ei();for(let e of rn)e(rr)}function va(){let e={locale:"en-US",direction:"ltr"},[t,n]=z(rr),r=M(()=>Ce?e:t());return mt(()=>{rn.size===0&&window.addEventListener("languagechange",Mo),rn.add(n),U(()=>{rn.delete(n),rn.size===0&&window.removeEventListener("languagechange",Mo)})}),{locale:()=>r().locale,direction:()=>r().direction}}var pa=me();function Ct(){let e=va();return ye(pa)||e}var Wn=new Map;function ma(e){let{locale:t}=Ct(),n=M(()=>t()+(e?Object.entries(e).sort((r,o)=>r[0]<o[0]?-1:1).join():""));return M(()=>{let r=n(),o;return Wn.has(r)&&(o=Wn.get(r)),o||(o=new Intl.Collator(t(),e),Wn.set(r,o)),o})}var ct=class Mi extends Set{anchorKey;currentKey;constructor(t,n,r){super(t),t instanceof Mi?(this.anchorKey=n||t.anchorKey,this.currentKey=r||t.currentKey):(this.anchorKey=n,this.currentKey=r)}};function ya(e){let[t,n]=fn(e);return[()=>t()??new ct,n]}function Di(e){return Il()?e.altKey:e.ctrlKey}function Bt(e){return On()?e.metaKey:e.ctrlKey}function Do(e){return new ct(e)}function ba(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function xa(e){let t=Q({selectionMode:"none",selectionBehavior:"toggle"},e),[n,r]=z(!1),[o,s]=z(),l=M(()=>{let p=E(t.selectedKeys);return p!=null?Do(p):p}),a=M(()=>{let p=E(t.defaultSelectedKeys);return p!=null?Do(p):new ct}),[i,c]=ya({value:l,defaultValue:a,onChange:p=>t.onSelectionChange?.(p)}),[u,d]=z(E(t.selectionBehavior)),g=()=>E(t.selectionMode),f=()=>E(t.disallowEmptySelection)??!1,h=p=>{(E(t.allowDuplicateSelectionEvents)||!ba(p,i()))&&c(p)};return B(()=>{let p=i();E(t.selectionBehavior)==="replace"&&u()==="toggle"&&typeof p=="object"&&p.size===0&&d("replace")}),B(()=>{d(E(t.selectionBehavior)??"toggle")}),{selectionMode:g,disallowEmptySelection:f,selectionBehavior:u,setSelectionBehavior:d,isFocused:n,setFocused:r,focusedKey:o,setFocusedKey:s,selectedKeys:i,setSelectedKeys:h}}function wa(e){let[t,n]=z(""),[r,o]=z(-1);return{typeSelectHandlers:{onKeyDown:l=>{if(E(e.isDisabled))return;let a=E(e.keyboardDelegate),i=E(e.selectionManager);if(!a.getKeyForSearch)return;let c=$a(l.key);if(!c||l.ctrlKey||l.metaKey)return;c===" "&&t().trim().length>0&&(l.preventDefault(),l.stopPropagation());let u=n(g=>g+c),d=a.getKeyForSearch(u,i.focusedKey())??a.getKeyForSearch(u);d==null&&Ca(u)&&(u=u[0],d=a.getKeyForSearch(u,i.focusedKey())??a.getKeyForSearch(u)),d!=null&&(i.setFocusedKey(d),e.onTypeSelect?.(d)),clearTimeout(r()),o(window.setTimeout(()=>n(""),500))}}}}function $a(e){return e.length===1||!/^[A-Z]/i.test(e)?e:""}function Ca(e){return e.split("").every(t=>t===e[0])}function Sa(e,t,n){let o=j({selectOnFocus:()=>E(e.selectionManager).selectionBehavior()==="replace"},e),s=()=>t(),{direction:l}=Ct(),a={top:0,left:0};$l(()=>E(o.isVirtualized)?void 0:s(),"scroll",()=>{let m=s();m&&(a={top:m.scrollTop,left:m.scrollLeft})});let{typeSelectHandlers:i}=wa({isDisabled:()=>E(o.disallowTypeAhead),keyboardDelegate:()=>E(o.keyboardDelegate),selectionManager:()=>E(o.selectionManager)}),c=()=>E(o.orientation)??"vertical",u=m=>{ue(m,i.onKeyDown),m.altKey&&m.key==="Tab"&&m.preventDefault();let y=t();if(!y?.contains(m.target))return;let b=E(o.selectionManager),x=E(o.selectOnFocus),w=P=>{P!=null&&(b.setFocusedKey(P),m.shiftKey&&b.selectionMode()==="multiple"?b.extendSelection(P):x&&!Di(m)&&b.replaceSelection(P))},$=E(o.keyboardDelegate),L=E(o.shouldFocusWrap),F=b.focusedKey();switch(m.key){case(c()==="vertical"?"ArrowDown":"ArrowRight"):{if($.getKeyBelow){m.preventDefault();let P;F!=null?P=$.getKeyBelow(F):P=$.getFirstKey?.(),P==null&&L&&(P=$.getFirstKey?.(F)),w(P)}break}case(c()==="vertical"?"ArrowUp":"ArrowLeft"):{if($.getKeyAbove){m.preventDefault();let P;F!=null?P=$.getKeyAbove(F):P=$.getLastKey?.(),P==null&&L&&(P=$.getLastKey?.(F)),w(P)}break}case(c()==="vertical"?"ArrowLeft":"ArrowUp"):{if($.getKeyLeftOf){m.preventDefault();let P=l()==="rtl",S;F!=null?S=$.getKeyLeftOf(F):S=P?$.getFirstKey?.():$.getLastKey?.(),w(S)}break}case(c()==="vertical"?"ArrowRight":"ArrowDown"):{if($.getKeyRightOf){m.preventDefault();let P=l()==="rtl",S;F!=null?S=$.getKeyRightOf(F):S=P?$.getLastKey?.():$.getFirstKey?.(),w(S)}break}case"Home":if($.getFirstKey){m.preventDefault();let P=$.getFirstKey(F,Bt(m));P!=null&&(b.setFocusedKey(P),Bt(m)&&m.shiftKey&&b.selectionMode()==="multiple"?b.extendSelection(P):x&&b.replaceSelection(P))}break;case"End":if($.getLastKey){m.preventDefault();let P=$.getLastKey(F,Bt(m));P!=null&&(b.setFocusedKey(P),Bt(m)&&m.shiftKey&&b.selectionMode()==="multiple"?b.extendSelection(P):x&&b.replaceSelection(P))}break;case"PageDown":if($.getKeyPageBelow&&F!=null){m.preventDefault();let P=$.getKeyPageBelow(F);w(P)}break;case"PageUp":if($.getKeyPageAbove&&F!=null){m.preventDefault();let P=$.getKeyPageAbove(F);w(P)}break;case"a":Bt(m)&&b.selectionMode()==="multiple"&&E(o.disallowSelectAll)!==!0&&(m.preventDefault(),b.selectAll());break;case"Escape":m.defaultPrevented||(m.preventDefault(),E(o.disallowEmptySelection)||b.clearSelection());break;case"Tab":if(!E(o.allowsTabNavigation)){if(m.shiftKey)y.focus();else{let P=Nl(y,{tabbable:!0}),S,q;do q=P.lastChild(),q&&(S=q);while(q);S&&!S.contains(document.activeElement)&&ke(S)}break}}},d=m=>{let y=E(o.selectionManager),b=E(o.keyboardDelegate),x=E(o.selectOnFocus);if(y.isFocused()){m.currentTarget.contains(m.target)||y.setFocused(!1);return}if(m.currentTarget.contains(m.target)){if(y.setFocused(!0),y.focusedKey()==null){let w=L=>{L!=null&&(y.setFocusedKey(L),x&&y.replaceSelection(L))},$=m.relatedTarget;$&&m.currentTarget.compareDocumentPosition($)&Node.DOCUMENT_POSITION_FOLLOWING?w(y.lastSelectedKey()??b.getLastKey?.()):w(y.firstSelectedKey()??b.getFirstKey?.())}else if(!E(o.isVirtualized)){let w=s();if(w){w.scrollTop=a.top,w.scrollLeft=a.left;let $=w.querySelector(`[data-key="${y.focusedKey()}"]`);$&&(ke($),nr(w,$))}}}},g=m=>{let y=E(o.selectionManager);m.currentTarget.contains(m.relatedTarget)||y.setFocused(!1)},f=m=>{s()===m.target&&m.preventDefault()},h=()=>{let m=E(o.autoFocus);if(!m)return;let y=E(o.selectionManager),b=E(o.keyboardDelegate),x;m==="first"&&(x=b.getFirstKey?.()),m==="last"&&(x=b.getLastKey?.());let w=y.selectedKeys();w.size&&(x=w.values().next().value),y.setFocused(!0),y.setFocusedKey(x);let $=t();$&&x==null&&!E(o.shouldUseVirtualFocus)&&ke($)};return mt(()=>{o.deferAutoFocus?setTimeout(h,0):h()}),B(Xe([s,()=>E(o.isVirtualized),()=>E(o.selectionManager).focusedKey()],m=>{let[y,b,x]=m;if(b)x&&o.scrollToKey?.(x);else if(x&&y){let w=y.querySelector(`[data-key="${x}"]`);w&&nr(y,w)}})),{tabIndex:M(()=>{if(!E(o.shouldUseVirtualFocus))return E(o.selectionManager).focusedKey()==null?0:-1}),onKeyDown:u,onMouseDown:f,onFocusIn:d,onFocusOut:g}}function Ai(e,t){let n=()=>E(e.selectionManager),r=()=>E(e.key),o=()=>E(e.shouldUseVirtualFocus),s=b=>{n().selectionMode()!=="none"&&(n().selectionMode()==="single"?n().isSelected(r())&&!n().disallowEmptySelection()?n().toggleSelection(r()):n().replaceSelection(r()):b?.shiftKey?n().extendSelection(r()):n().selectionBehavior()==="toggle"||Bt(b)||"pointerType"in b&&b.pointerType==="touch"?n().toggleSelection(r()):n().replaceSelection(r()))},l=()=>n().isSelected(r()),a=()=>E(e.disabled)||n().isDisabled(r()),i=()=>!a()&&n().canSelectItem(r()),c=null,u=b=>{i()&&(c=b.pointerType,b.pointerType==="mouse"&&b.button===0&&!E(e.shouldSelectOnPressUp)&&s(b))},d=b=>{i()&&b.pointerType==="mouse"&&b.button===0&&E(e.shouldSelectOnPressUp)&&E(e.allowsDifferentPressOrigin)&&s(b)},g=b=>{i()&&(E(e.shouldSelectOnPressUp)&&!E(e.allowsDifferentPressOrigin)||c!=="mouse")&&s(b)},f=b=>{!i()||!["Enter"," "].includes(b.key)||(Di(b)?n().toggleSelection(r()):s(b))},h=b=>{a()&&b.preventDefault()},p=b=>{let x=t();o()||a()||!x||b.target===x&&n().setFocusedKey(r())},m=M(()=>{if(!(o()||a()))return r()===n().focusedKey()?0:-1}),y=M(()=>E(e.virtualized)?void 0:r());return B(Xe([t,r,o,()=>n().focusedKey(),()=>n().isFocused()],([b,x,w,$,L])=>{b&&x===$&&L&&!w&&document.activeElement!==b&&(e.focus?e.focus():ke(b))})),{isSelected:l,isDisabled:a,allowsSelection:i,tabIndex:m,dataKey:y,onPointerDown:u,onPointerUp:d,onClick:g,onKeyDown:f,onMouseDown:h,onFocus:p}}var ka=class{collection;state;constructor(e,t){this.collection=e,this.state=t}selectionMode(){return this.state.selectionMode()}disallowEmptySelection(){return this.state.disallowEmptySelection()}selectionBehavior(){return this.state.selectionBehavior()}setSelectionBehavior(e){this.state.setSelectionBehavior(e)}isFocused(){return this.state.isFocused()}setFocused(e){this.state.setFocused(e)}focusedKey(){return this.state.focusedKey()}setFocusedKey(e){(e==null||this.collection().getItem(e))&&this.state.setFocusedKey(e)}selectedKeys(){return this.state.selectedKeys()}isSelected(e){if(this.state.selectionMode()==="none")return!1;let t=this.getKey(e);return t==null?!1:this.state.selectedKeys().has(t)}isEmpty(){return this.state.selectedKeys().size===0}isSelectAll(){if(this.isEmpty())return!1;let e=this.state.selectedKeys();return this.getAllSelectableKeys().every(t=>e.has(t))}firstSelectedKey(){let e;for(let t of this.state.selectedKeys()){let n=this.collection().getItem(t),r=n?.index!=null&&e?.index!=null&&n.index<e.index;(!e||r)&&(e=n)}return e?.key}lastSelectedKey(){let e;for(let t of this.state.selectedKeys()){let n=this.collection().getItem(t),r=n?.index!=null&&e?.index!=null&&n.index>e.index;(!e||r)&&(e=n)}return e?.key}extendSelection(e){if(this.selectionMode()==="none")return;if(this.selectionMode()==="single"){this.replaceSelection(e);return}let t=this.getKey(e);if(t==null)return;let n=this.state.selectedKeys(),r=n.anchorKey||t,o=new ct(n,r,t);for(let s of this.getKeyRange(r,n.currentKey||t))o.delete(s);for(let s of this.getKeyRange(t,r))this.canSelectItem(s)&&o.add(s);this.state.setSelectedKeys(o)}getKeyRange(e,t){let n=this.collection().getItem(e),r=this.collection().getItem(t);return n&&r?n.index!=null&&r.index!=null&&n.index<=r.index?this.getKeyRangeInternal(e,t):this.getKeyRangeInternal(t,e):[]}getKeyRangeInternal(e,t){let n=[],r=e;for(;r!=null;){let o=this.collection().getItem(r);if(o&&o.type==="item"&&n.push(r),r===t)return n;r=this.collection().getKeyAfter(r)}return[]}getKey(e){let t=this.collection().getItem(e);return t?!t||t.type!=="item"?null:t.key:e}toggleSelection(e){if(this.selectionMode()==="none")return;if(this.selectionMode()==="single"&&!this.isSelected(e)){this.replaceSelection(e);return}let t=this.getKey(e);if(t==null)return;let n=new ct(this.state.selectedKeys());n.has(t)?n.delete(t):this.canSelectItem(t)&&(n.add(t),n.anchorKey=t,n.currentKey=t),!(this.disallowEmptySelection()&&n.size===0)&&this.state.setSelectedKeys(n)}replaceSelection(e){if(this.selectionMode()==="none")return;let t=this.getKey(e);if(t==null)return;let n=this.canSelectItem(t)?new ct([t],t,t):new ct;this.state.setSelectedKeys(n)}setSelectedKeys(e){if(this.selectionMode()==="none")return;let t=new ct;for(let n of e){let r=this.getKey(n);if(r!=null&&(t.add(r),this.selectionMode()==="single"))break}this.state.setSelectedKeys(t)}selectAll(){this.selectionMode()==="multiple"&&this.state.setSelectedKeys(new Set(this.getAllSelectableKeys()))}clearSelection(){let e=this.state.selectedKeys();!this.disallowEmptySelection()&&e.size>0&&this.state.setSelectedKeys(new ct)}toggleSelectAll(){this.isSelectAll()?this.clearSelection():this.selectAll()}select(e,t){this.selectionMode()!=="none"&&(this.selectionMode()==="single"?this.isSelected(e)&&!this.disallowEmptySelection()?this.toggleSelection(e):this.replaceSelection(e):this.selectionBehavior()==="toggle"||t&&t.pointerType==="touch"?this.toggleSelection(e):this.replaceSelection(e))}isSelectionEqual(e){if(e===this.state.selectedKeys())return!0;let t=this.selectedKeys();if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;for(let n of t)if(!e.has(n))return!1;return!0}canSelectItem(e){if(this.state.selectionMode()==="none")return!1;let t=this.collection().getItem(e);return t!=null&&!t.disabled}isDisabled(e){let t=this.collection().getItem(e);return!t||t.disabled}getAllSelectableKeys(){let e=[];return(n=>{for(;n!=null;){if(this.canSelectItem(n)){let r=this.collection().getItem(n);if(!r)continue;r.type==="item"&&e.push(n)}n=this.collection().getKeyAfter(n)}})(this.collection().getFirstKey()),e}},Ao=class{keyMap=new Map;iterable;firstKey;lastKey;constructor(e){this.iterable=e;for(let r of e)this.keyMap.set(r.key,r);if(this.keyMap.size===0)return;let t,n=0;for(let[r,o]of this.keyMap)t?(t.nextKey=r,o.prevKey=t.key):(this.firstKey=r,o.prevKey=void 0),o.type==="item"&&(o.index=n++),t=o,t.nextKey=void 0;this.lastKey=t.key}*[Symbol.iterator](){yield*this.iterable}getSize(){return this.keyMap.size}getKeys(){return this.keyMap.keys()}getKeyBefore(e){return this.keyMap.get(e)?.prevKey}getKeyAfter(e){return this.keyMap.get(e)?.nextKey}getFirstKey(){return this.firstKey}getLastKey(){return this.lastKey}getItem(e){return this.keyMap.get(e)}at(e){let t=[...this.getKeys()];return this.getItem(t[e])}};function Ea(e){let t=xa(e),r=ua({dataSource:()=>E(e.dataSource),getKey:()=>E(e.getKey),getTextValue:()=>E(e.getTextValue),getDisabled:()=>E(e.getDisabled),getSectionChildren:()=>E(e.getSectionChildren),factory:s=>e.filter?new Ao(e.filter(s)):new Ao(s)},[()=>e.filter]),o=new ka(r,t);return Gr(()=>{let s=t.focusedKey();s!=null&&!r().getItem(s)&&t.setFocusedKey(void 0)}),{collection:r,selectionManager:()=>o}}var Se=e=>typeof e=="function"?e():e,Ma=e=>{let t=M(()=>{let l=Se(e.element);if(l)return getComputedStyle(l)}),n=()=>t()?.animationName??"none",[r,o]=z(Se(e.show)?"present":"hidden"),s="none";return B(l=>{let a=Se(e.show);return Mt(()=>{if(l===a)return a;let i=s,c=n();a?o("present"):c==="none"||t()?.display==="none"?o("hidden"):o(l===!0&&i!==c?"hiding":"hidden")}),a}),B(()=>{let l=Se(e.element);if(!l)return;let a=c=>{c.target===l&&(s=n())},i=c=>{let d=n().includes(c.animationName);c.target===l&&d&&r()==="hiding"&&o("hidden")};l.addEventListener("animationstart",a),l.addEventListener("animationcancel",i),l.addEventListener("animationend",i),U(()=>{l.removeEventListener("animationstart",a),l.removeEventListener("animationcancel",i),l.removeEventListener("animationend",i)})}),{present:()=>r()==="present"||r()==="hiding",state:r}},Da=Ma,Ti=Da,Dn="data-kb-top-layer",Fi,or=!1,dt=[];function sn(e){return dt.findIndex(t=>t.node===e)}function Aa(e){return dt[sn(e)]}function Ta(e){return dt[dt.length-1].node===e}function Ii(){return dt.filter(e=>e.isPointerBlocking)}function Fa(){return[...Ii()].slice(-1)[0]}function vr(){return Ii().length>0}function Pi(e){let t=sn(Fa()?.node);return sn(e)<t}function Ia(e){dt.push(e)}function Pa(e){let t=sn(e);t<0||dt.splice(t,1)}function La(){for(let{node:e}of dt)e.style.pointerEvents=Pi(e)?"none":"auto"}function Oa(e){if(vr()&&!or){let t=Je(e);Fi=document.body.style.pointerEvents,t.body.style.pointerEvents="none",or=!0}}function qa(e){if(vr())return;let t=Je(e);t.body.style.pointerEvents=Fi,t.body.style.length===0&&t.body.removeAttribute("style"),or=!1}var Ie={layers:dt,isTopMostLayer:Ta,hasPointerBlockingLayer:vr,isBelowPointerBlockingLayer:Pi,addLayer:Ia,removeLayer:Pa,indexOf:sn,find:Aa,assignPointerEventToLayers:La,disableBodyPointerEvents:Oa,restoreBodyPointerEvents:qa},_a={};_n(_a,{Button:()=>Ka,Root:()=>pr});var za=["button","color","file","image","reset","submit"];function Ra(e){let t=e.tagName.toLowerCase();return t==="button"?!0:t==="input"&&e.type?za.indexOf(e.type)!==-1:!1}function pr(e){let t,n=Q({type:"button"},e),[r,o]=X(n,["ref","type","disabled"]),s=qn(()=>t,()=>"button"),l=M(()=>{let c=s();return c==null?!1:Ra({tagName:c,type:r.type})}),a=M(()=>s()==="input"),i=M(()=>s()==="a"&&t?.getAttribute("href")!=null);return v(de,j({as:"button",ref(c){let u=De(d=>t=d,r.ref);typeof u=="function"&&u(c)},get type(){return l()||a()?r.type:void 0},get role(){return!l()&&!i()?"button":void 0},get tabIndex(){return!l()&&!i()&&!r.disabled?0:void 0},get disabled(){return l()||a()?r.disabled:void 0},get"aria-disabled"(){return!l()&&!a()&&r.disabled?!0:void 0},get"data-disabled"(){return r.disabled?"":void 0}},o))}var Ka=pr,Ba=["top","right","bottom","left"],Ze=Math.min,Le=Math.max,An=Math.round,kn=Math.floor,xt=e=>({x:e,y:e}),Na={left:"right",right:"left",bottom:"top",top:"bottom"},Ua={start:"end",end:"start"};function ir(e,t,n){return Le(e,Ze(t,n))}function Lt(e,t){return typeof e=="function"?e(t):e}function wt(e){return e.split("-")[0]}function Gt(e){return e.split("-")[1]}function Li(e){return e==="x"?"y":"x"}function mr(e){return e==="y"?"height":"width"}function It(e){return["top","bottom"].includes(wt(e))?"y":"x"}function yr(e){return Li(It(e))}function Ga(e,t,n){n===void 0&&(n=!1);let r=Gt(e),o=yr(e),s=mr(o),l=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(l=Tn(l)),[l,Tn(l)]}function Va(e){let t=Tn(e);return[sr(e),t,sr(t)]}function sr(e){return e.replace(/start|end/g,t=>Ua[t])}function Ha(e,t,n){let r=["left","right"],o=["right","left"],s=["top","bottom"],l=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?s:l;default:return[]}}function ja(e,t,n,r){let o=Gt(e),s=Ha(wt(e),n==="start",r);return o&&(s=s.map(l=>l+"-"+o),t&&(s=s.concat(s.map(sr)))),s}function Tn(e){return e.replace(/left|right|bottom|top/g,t=>Na[t])}function Wa(e){return{top:0,right:0,bottom:0,left:0,...e}}function Oi(e){return typeof e!="number"?Wa(e):{top:e,right:e,bottom:e,left:e}}function Fn(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function To(e,t,n){let{reference:r,floating:o}=e,s=It(t),l=yr(t),a=mr(l),i=wt(t),c=s==="y",u=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,g=r[a]/2-o[a]/2,f;switch(i){case"top":f={x:u,y:r.y-o.height};break;case"bottom":f={x:u,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:d};break;case"left":f={x:r.x-o.width,y:d};break;default:f={x:r.x,y:r.y}}switch(Gt(t)){case"start":f[l]-=g*(n&&c?-1:1);break;case"end":f[l]+=g*(n&&c?-1:1);break}return f}var Qa=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:l}=n,a=s.filter(Boolean),i=await(l.isRTL==null?void 0:l.isRTL(t)),c=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=To(c,r,i),g=r,f={},h=0;for(let p=0;p<a.length;p++){let{name:m,fn:y}=a[p],{x:b,y:x,data:w,reset:$}=await y({x:u,y:d,initialPlacement:r,placement:g,strategy:o,middlewareData:f,rects:c,platform:l,elements:{reference:e,floating:t}});u=b??u,d=x??d,f={...f,[m]:{...f[m],...w}},$&&h<=50&&(h++,typeof $=="object"&&($.placement&&(g=$.placement),$.rects&&(c=$.rects===!0?await l.getElementRects({reference:e,floating:t,strategy:o}):$.rects),{x:u,y:d}=To(c,g,i)),p=-1)}return{x:u,y:d,placement:g,strategy:o,middlewareData:f}};async function ln(e,t){var n;t===void 0&&(t={});let{x:r,y:o,platform:s,rects:l,elements:a,strategy:i}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:g=!1,padding:f=0}=Lt(t,e),h=Oi(f),m=a[g?d==="floating"?"reference":"floating":d],y=Fn(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(m)))==null||n?m:m.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(a.floating)),boundary:c,rootBoundary:u,strategy:i})),b=d==="floating"?{x:r,y:o,width:l.floating.width,height:l.floating.height}:l.reference,x=await(s.getOffsetParent==null?void 0:s.getOffsetParent(a.floating)),w=await(s.isElement==null?void 0:s.isElement(x))?await(s.getScale==null?void 0:s.getScale(x))||{x:1,y:1}:{x:1,y:1},$=Fn(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:b,offsetParent:x,strategy:i}):b);return{top:(y.top-$.top+h.top)/w.y,bottom:($.bottom-y.bottom+h.bottom)/w.y,left:(y.left-$.left+h.left)/w.x,right:($.right-y.right+h.right)/w.x}}var Ya=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:r,placement:o,rects:s,platform:l,elements:a,middlewareData:i}=t,{element:c,padding:u=0}=Lt(e,t)||{};if(c==null)return{};let d=Oi(u),g={x:n,y:r},f=yr(o),h=mr(f),p=await l.getDimensions(c),m=f==="y",y=m?"top":"left",b=m?"bottom":"right",x=m?"clientHeight":"clientWidth",w=s.reference[h]+s.reference[f]-g[f]-s.floating[h],$=g[f]-s.reference[f],L=await(l.getOffsetParent==null?void 0:l.getOffsetParent(c)),F=L?L[x]:0;(!F||!await(l.isElement==null?void 0:l.isElement(L)))&&(F=a.floating[x]||s.floating[h]);let P=w/2-$/2,S=F/2-p[h]/2-1,q=Ze(d[y],S),H=Ze(d[b],S),G=q,te=F-p[h]-H,J=F/2-p[h]/2+P,le=ir(G,J,te),oe=!i.arrow&&Gt(o)!=null&&J!==le&&s.reference[h]/2-(J<G?q:H)-p[h]/2<0,ne=oe?J<G?J-G:J-te:0;return{[f]:g[f]+ne,data:{[f]:le,centerOffset:J-le-ne,...oe&&{alignmentOffset:ne}},reset:oe}}}),Xa=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,r;let{placement:o,middlewareData:s,rects:l,initialPlacement:a,platform:i,elements:c}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:g,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:h="none",flipAlignment:p=!0,...m}=Lt(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return{};let y=wt(o),b=It(a),x=wt(a)===a,w=await(i.isRTL==null?void 0:i.isRTL(c.floating)),$=g||(x||!p?[Tn(a)]:Va(a)),L=h!=="none";!g&&L&&$.push(...ja(a,p,h,w));let F=[a,...$],P=await ln(t,m),S=[],q=((r=s.flip)==null?void 0:r.overflows)||[];if(u&&S.push(P[y]),d){let J=Ga(o,l,w);S.push(P[J[0]],P[J[1]])}if(q=[...q,{placement:o,overflows:S}],!S.every(J=>J<=0)){var H,G;let J=(((H=s.flip)==null?void 0:H.index)||0)+1,le=F[J];if(le)return{data:{index:J,overflows:q},reset:{placement:le}};let oe=(G=q.filter(ne=>ne.overflows[0]<=0).sort((ne,ie)=>ne.overflows[1]-ie.overflows[1])[0])==null?void 0:G.placement;if(!oe)switch(f){case"bestFit":{var te;let ne=(te=q.filter(ie=>{if(L){let ae=It(ie.placement);return ae===b||ae==="y"}return!0}).map(ie=>[ie.placement,ie.overflows.filter(ae=>ae>0).reduce((ae,ve)=>ae+ve,0)]).sort((ie,ae)=>ie[1]-ae[1])[0])==null?void 0:te[0];ne&&(oe=ne);break}case"initialPlacement":oe=a;break}if(o!==oe)return{reset:{placement:oe}}}return{}}}};function Fo(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Io(e){return Ba.some(t=>e[t]>=0)}var Za=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){let{rects:n}=t,{strategy:r="referenceHidden",...o}=Lt(e,t);switch(r){case"referenceHidden":{let s=await ln(t,{...o,elementContext:"reference"}),l=Fo(s,n.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:Io(l)}}}case"escaped":{let s=await ln(t,{...o,altBoundary:!0}),l=Fo(s,n.floating);return{data:{escapedOffsets:l,escaped:Io(l)}}}default:return{}}}}};async function Ja(e,t){let{placement:n,platform:r,elements:o}=e,s=await(r.isRTL==null?void 0:r.isRTL(o.floating)),l=wt(n),a=Gt(n),i=It(n)==="y",c=["left","top"].includes(l)?-1:1,u=s&&i?-1:1,d=Lt(t,e),{mainAxis:g,crossAxis:f,alignmentAxis:h}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return a&&typeof h=="number"&&(f=a==="end"?h*-1:h),i?{x:f*u,y:g*c}:{x:g*c,y:f*u}}var ec=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;let{x:o,y:s,placement:l,middlewareData:a}=t,i=await Ja(t,e);return l===((n=a.offset)==null?void 0:n.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+i.x,y:s+i.y,data:{...i,placement:l}}}}},tc=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:o}=t,{mainAxis:s=!0,crossAxis:l=!1,limiter:a={fn:m=>{let{x:y,y:b}=m;return{x:y,y:b}}},...i}=Lt(e,t),c={x:n,y:r},u=await ln(t,i),d=It(wt(o)),g=Li(d),f=c[g],h=c[d];if(s){let m=g==="y"?"top":"left",y=g==="y"?"bottom":"right",b=f+u[m],x=f-u[y];f=ir(b,f,x)}if(l){let m=d==="y"?"top":"left",y=d==="y"?"bottom":"right",b=h+u[m],x=h-u[y];h=ir(b,h,x)}let p=a.fn({...t,[g]:f,[d]:h});return{...p,data:{x:p.x-n,y:p.y-r}}}}},nc=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){let{placement:n,rects:r,platform:o,elements:s}=t,{apply:l=()=>{},...a}=Lt(e,t),i=await ln(t,a),c=wt(n),u=Gt(n),d=It(n)==="y",{width:g,height:f}=r.floating,h,p;c==="top"||c==="bottom"?(h=c,p=u===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(p=c,h=u==="end"?"top":"bottom");let m=f-i.top-i.bottom,y=g-i.left-i.right,b=Ze(f-i[h],m),x=Ze(g-i[p],y),w=!t.middlewareData.shift,$=b,L=x;if(d?L=u||w?Ze(x,y):y:$=u||w?Ze(b,m):m,w&&!u){let P=Le(i.left,0),S=Le(i.right,0),q=Le(i.top,0),H=Le(i.bottom,0);d?L=g-2*(P!==0||S!==0?P+S:Le(i.left,i.right)):$=f-2*(q!==0||H!==0?q+H:Le(i.top,i.bottom))}await l({...t,availableWidth:L,availableHeight:$});let F=await o.getDimensions(s.floating);return g!==F.width||f!==F.height?{reset:{rects:!0}}:{}}}};function Vt(e){return qi(e)?(e.nodeName||"").toLowerCase():"#document"}function Oe(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function ft(e){var t;return(t=(qi(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function qi(e){return e instanceof Node||e instanceof Oe(e).Node}function We(e){return e instanceof Element||e instanceof Oe(e).Element}function et(e){return e instanceof HTMLElement||e instanceof Oe(e).HTMLElement}function Po(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Oe(e).ShadowRoot}function gn(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=Qe(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function rc(e){return["table","td","th"].includes(Vt(e))}function zn(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function br(e){let t=xr(),n=We(e)?Qe(e):e;return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function oc(e){let t=$t(e);for(;et(t)&&!Ut(t);){if(br(t))return t;if(zn(t))return null;t=$t(t)}return null}function xr(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Ut(e){return["html","body","#document"].includes(Vt(e))}function Qe(e){return Oe(e).getComputedStyle(e)}function Rn(e){return We(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function $t(e){if(Vt(e)==="html")return e;let t=e.assignedSlot||e.parentNode||Po(e)&&e.host||ft(e);return Po(t)?t.host:t}function _i(e){let t=$t(e);return Ut(t)?e.ownerDocument?e.ownerDocument.body:e.body:et(t)&&gn(t)?t:_i(t)}function an(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);let o=_i(e),s=o===((r=e.ownerDocument)==null?void 0:r.body),l=Oe(o);return s?t.concat(l,l.visualViewport||[],gn(o)?o:[],l.frameElement&&n?an(l.frameElement):[]):t.concat(o,an(o,[],n))}function zi(e){let t=Qe(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=et(e),s=o?e.offsetWidth:n,l=o?e.offsetHeight:r,a=An(n)!==s||An(r)!==l;return a&&(n=s,r=l),{width:n,height:r,$:a}}function wr(e){return We(e)?e:e.contextElement}function Nt(e){let t=wr(e);if(!et(t))return xt(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:s}=zi(t),l=(s?An(n.width):n.width)/r,a=(s?An(n.height):n.height)/o;return(!l||!Number.isFinite(l))&&(l=1),(!a||!Number.isFinite(a))&&(a=1),{x:l,y:a}}var ic=xt(0);function Ri(e){let t=Oe(e);return!xr()||!t.visualViewport?ic:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function sc(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Oe(e)?!1:t}function Pt(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let o=e.getBoundingClientRect(),s=wr(e),l=xt(1);t&&(r?We(r)&&(l=Nt(r)):l=Nt(e));let a=sc(s,n,r)?Ri(s):xt(0),i=(o.left+a.x)/l.x,c=(o.top+a.y)/l.y,u=o.width/l.x,d=o.height/l.y;if(s){let g=Oe(s),f=r&&We(r)?Oe(r):r,h=g,p=h.frameElement;for(;p&&r&&f!==h;){let m=Nt(p),y=p.getBoundingClientRect(),b=Qe(p),x=y.left+(p.clientLeft+parseFloat(b.paddingLeft))*m.x,w=y.top+(p.clientTop+parseFloat(b.paddingTop))*m.y;i*=m.x,c*=m.y,u*=m.x,d*=m.y,i+=x,c+=w,h=Oe(p),p=h.frameElement}}return Fn({width:u,height:d,x:i,y:c})}function lc(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,s=o==="fixed",l=ft(r),a=t?zn(t.floating):!1;if(r===l||a&&s)return n;let i={scrollLeft:0,scrollTop:0},c=xt(1),u=xt(0),d=et(r);if((d||!d&&!s)&&((Vt(r)!=="body"||gn(l))&&(i=Rn(r)),et(r))){let g=Pt(r);c=Nt(r),u.x=g.x+r.clientLeft,u.y=g.y+r.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-i.scrollLeft*c.x+u.x,y:n.y*c.y-i.scrollTop*c.y+u.y}}function ac(e){return Array.from(e.getClientRects())}function Ki(e){return Pt(ft(e)).left+Rn(e).scrollLeft}function cc(e){let t=ft(e),n=Rn(e),r=e.ownerDocument.body,o=Le(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),s=Le(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),l=-n.scrollLeft+Ki(e),a=-n.scrollTop;return Qe(r).direction==="rtl"&&(l+=Le(t.clientWidth,r.clientWidth)-o),{width:o,height:s,x:l,y:a}}function uc(e,t){let n=Oe(e),r=ft(e),o=n.visualViewport,s=r.clientWidth,l=r.clientHeight,a=0,i=0;if(o){s=o.width,l=o.height;let c=xr();(!c||c&&t==="fixed")&&(a=o.offsetLeft,i=o.offsetTop)}return{width:s,height:l,x:a,y:i}}function dc(e,t){let n=Pt(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,s=et(e)?Nt(e):xt(1),l=e.clientWidth*s.x,a=e.clientHeight*s.y,i=o*s.x,c=r*s.y;return{width:l,height:a,x:i,y:c}}function Lo(e,t,n){let r;if(t==="viewport")r=uc(e,n);else if(t==="document")r=cc(ft(e));else if(We(t))r=dc(t,n);else{let o=Ri(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return Fn(r)}function Bi(e,t){let n=$t(e);return n===t||!We(n)||Ut(n)?!1:Qe(n).position==="fixed"||Bi(n,t)}function fc(e,t){let n=t.get(e);if(n)return n;let r=an(e,[],!1).filter(a=>We(a)&&Vt(a)!=="body"),o=null,s=Qe(e).position==="fixed",l=s?$t(e):e;for(;We(l)&&!Ut(l);){let a=Qe(l),i=br(l);!i&&a.position==="fixed"&&(o=null),(s?!i&&!o:!i&&a.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||gn(l)&&!i&&Bi(e,l))?r=r.filter(u=>u!==l):o=a,l=$t(l)}return t.set(e,r),r}function gc(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,l=[...n==="clippingAncestors"?zn(t)?[]:fc(t,this._c):[].concat(n),r],a=l[0],i=l.reduce((c,u)=>{let d=Lo(t,u,o);return c.top=Le(d.top,c.top),c.right=Ze(d.right,c.right),c.bottom=Ze(d.bottom,c.bottom),c.left=Le(d.left,c.left),c},Lo(t,a,o));return{width:i.right-i.left,height:i.bottom-i.top,x:i.left,y:i.top}}function hc(e){let{width:t,height:n}=zi(e);return{width:t,height:n}}function vc(e,t,n){let r=et(t),o=ft(t),s=n==="fixed",l=Pt(e,!0,s,t),a={scrollLeft:0,scrollTop:0},i=xt(0);if(r||!r&&!s)if((Vt(t)!=="body"||gn(o))&&(a=Rn(t)),r){let d=Pt(t,!0,s,t);i.x=d.x+t.clientLeft,i.y=d.y+t.clientTop}else o&&(i.x=Ki(o));let c=l.left+a.scrollLeft-i.x,u=l.top+a.scrollTop-i.y;return{x:c,y:u,width:l.width,height:l.height}}function Qn(e){return Qe(e).position==="static"}function Oo(e,t){return!et(e)||Qe(e).position==="fixed"?null:t?t(e):e.offsetParent}function Ni(e,t){let n=Oe(e);if(zn(e))return n;if(!et(e)){let o=$t(e);for(;o&&!Ut(o);){if(We(o)&&!Qn(o))return o;o=$t(o)}return n}let r=Oo(e,t);for(;r&&rc(r)&&Qn(r);)r=Oo(r,t);return r&&Ut(r)&&Qn(r)&&!br(r)?n:r||oc(e)||n}var pc=async function(e){let t=this.getOffsetParent||Ni,n=this.getDimensions,r=await n(e.floating);return{reference:vc(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function mc(e){return Qe(e).direction==="rtl"}var Ui={convertOffsetParentRelativeRectToViewportRelativeRect:lc,getDocumentElement:ft,getClippingRect:gc,getOffsetParent:Ni,getElementRects:pc,getClientRects:ac,getDimensions:hc,getScale:Nt,isElement:We,isRTL:mc};function yc(e,t){let n=null,r,o=ft(e);function s(){var a;clearTimeout(r),(a=n)==null||a.disconnect(),n=null}function l(a,i){a===void 0&&(a=!1),i===void 0&&(i=1),s();let{left:c,top:u,width:d,height:g}=e.getBoundingClientRect();if(a||t(),!d||!g)return;let f=kn(u),h=kn(o.clientWidth-(c+d)),p=kn(o.clientHeight-(u+g)),m=kn(c),b={rootMargin:-f+"px "+-h+"px "+-p+"px "+-m+"px",threshold:Le(0,Ze(1,i))||1},x=!0;function w($){let L=$[0].intersectionRatio;if(L!==i){if(!x)return l();L?l(!1,L):r=setTimeout(()=>{l(!1,1e-7)},1e3)}x=!1}try{n=new IntersectionObserver(w,{...b,root:o.ownerDocument})}catch{n=new IntersectionObserver(w,b)}n.observe(e)}return l(!0),s}function bc(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:i=!1}=r,c=wr(e),u=o||s?[...c?an(c):[],...an(t)]:[];u.forEach(y=>{o&&y.addEventListener("scroll",n,{passive:!0}),s&&y.addEventListener("resize",n)});let d=c&&a?yc(c,n):null,g=-1,f=null;l&&(f=new ResizeObserver(y=>{let[b]=y;b&&b.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var x;(x=f)==null||x.observe(t)})),n()}),c&&!i&&f.observe(c),f.observe(t));let h,p=i?Pt(e):null;i&&m();function m(){let y=Pt(e);p&&(y.x!==p.x||y.y!==p.y||y.width!==p.width||y.height!==p.height)&&n(),p=y,h=requestAnimationFrame(m)}return n(),()=>{var y;u.forEach(b=>{o&&b.removeEventListener("scroll",n),s&&b.removeEventListener("resize",n)}),d?.(),(y=f)==null||y.disconnect(),f=null,i&&cancelAnimationFrame(h)}}var xc=ec,wc=tc,$c=Xa,Cc=nc,Sc=Za,kc=Ya,Ec=(e,t,n)=>{let r=new Map,o={platform:Ui,...n},s={...o.platform,_c:r};return Qa(e,t,{...o,platform:s})},$r=me();function Cr(){let e=ye($r);if(e===void 0)throw new Error("[kobalte]: `usePopperContext` must be used within a `Popper` component");return e}var Mc=_('<svg display="block" viewBox="0 0 30 30" style="transform:scale(1.02)"><g><path fill="none" d="M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z"></path><path stroke="none" d="M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z">'),lr=30,qo=lr/2,Dc={top:180,right:-90,bottom:0,left:90};function Sr(e){let t=Cr(),n=Q({size:lr},e),[r,o]=X(n,["ref","style","size"]),s=()=>t.currentPlacement().split("-")[0],l=Ac(t.contentRef),a=()=>l()?.getPropertyValue("background-color")||"none",i=()=>l()?.getPropertyValue(`border-${s()}-color`)||"none",c=()=>l()?.getPropertyValue(`border-${s()}-width`)||"0px",u=()=>Number.parseInt(c())*2*(lr/r.size),d=()=>`rotate(${Dc[s()]} ${qo} ${qo}) translate(0 2)`;return v(de,j({as:"div",ref(g){let f=De(t.setArrowRef,r.ref);typeof f=="function"&&f(g)},"aria-hidden":"true",get style(){return Ln({position:"absolute","font-size":`${r.size}px`,width:"1em",height:"1em","pointer-events":"none",fill:a(),stroke:i(),"stroke-width":u()},r.style)}},o,{get children(){let g=Mc(),f=g.firstChild;return N(()=>A(f,"transform",d())),g}}))}function Ac(e){let[t,n]=z();return B(()=>{let r=e();r&&n(Dl(r).getComputedStyle(r))}),t}function Tc(e){let t=Cr(),[n,r]=X(e,["ref","style"]);return v(de,j({as:"div",ref(o){let s=De(t.setPositionerRef,n.ref);typeof s=="function"&&s(o)},"data-popper-positioner":"",get style(){return Ln({position:"absolute",top:0,left:0,"min-width":"max-content"},n.style)}},r))}function _o(e){let{x:t=0,y:n=0,width:r=0,height:o=0}=e??{};if(typeof DOMRect=="function")return new DOMRect(t,n,r,o);let s={x:t,y:n,width:r,height:o,top:n,right:t+r,bottom:n+o,left:t};return{...s,toJSON:()=>s}}function Fc(e,t){return{contextElement:e,getBoundingClientRect:()=>{let r=t(e);return r?_o(r):e?e.getBoundingClientRect():_o()}}}function Ic(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}var Pc={top:"bottom",right:"left",bottom:"top",left:"right"};function Lc(e,t){let[n,r]=e.split("-"),o=Pc[n];return r?n==="left"||n==="right"?`${o} ${r==="start"?"top":"bottom"}`:r==="start"?`${o} ${t==="rtl"?"right":"left"}`:`${o} ${t==="rtl"?"left":"right"}`:`${o} center`}function Oc(e){let t=Q({getAnchorRect:g=>g?.getBoundingClientRect(),placement:"bottom",gutter:0,shift:0,flip:!0,slide:!0,overlap:!1,sameWidth:!1,fitViewport:!1,hideWhenDetached:!1,detachedPadding:0,arrowPadding:4,overflowPadding:8},e),[n,r]=z(),[o,s]=z(),[l,a]=z(t.placement),i=()=>Fc(t.anchorRef?.(),t.getAnchorRect),{direction:c}=Ct();async function u(){let g=i(),f=n(),h=o();if(!g||!f)return;let p=(h?.clientHeight||0)/2,m=typeof t.gutter=="number"?t.gutter+p:t.gutter??p;f.style.setProperty("--kb-popper-content-overflow-padding",`${t.overflowPadding}px`),g.getBoundingClientRect();let y=[xc(({placement:L})=>{let F=!!L.split("-")[1];return{mainAxis:m,crossAxis:F?void 0:t.shift,alignmentAxis:t.shift}})];if(t.flip!==!1){let L=typeof t.flip=="string"?t.flip.split(" "):void 0;if(L!==void 0&&!L.every(Ic))throw new Error("`flip` expects a spaced-delimited list of placements");y.push($c({padding:t.overflowPadding,fallbackPlacements:L}))}(t.slide||t.overlap)&&y.push(wc({mainAxis:t.slide,crossAxis:t.overlap,padding:t.overflowPadding})),y.push(Cc({padding:t.overflowPadding,apply({availableWidth:L,availableHeight:F,rects:P}){let S=Math.round(P.reference.width);L=Math.floor(L),F=Math.floor(F),f.style.setProperty("--kb-popper-anchor-width",`${S}px`),f.style.setProperty("--kb-popper-content-available-width",`${L}px`),f.style.setProperty("--kb-popper-content-available-height",`${F}px`),t.sameWidth&&(f.style.width=`${S}px`),t.fitViewport&&(f.style.maxWidth=`${L}px`,f.style.maxHeight=`${F}px`)}})),t.hideWhenDetached&&y.push(Sc({padding:t.detachedPadding})),h&&y.push(kc({element:h,padding:t.arrowPadding}));let b=await Ec(g,f,{placement:t.placement,strategy:"absolute",middleware:y,platform:{...Ui,isRTL:()=>c()==="rtl"}});if(a(b.placement),t.onCurrentPlacementChange?.(b.placement),!f)return;f.style.setProperty("--kb-popper-content-transform-origin",Lc(b.placement,c()));let x=Math.round(b.x),w=Math.round(b.y),$;if(t.hideWhenDetached&&($=b.middlewareData.hide?.referenceHidden?"hidden":"visible"),Object.assign(f.style,{top:"0",left:"0",transform:`translate3d(${x}px, ${w}px, 0)`,visibility:$}),h&&b.middlewareData.arrow){let{x:L,y:F}=b.middlewareData.arrow,P=b.placement.split("-")[0];Object.assign(h.style,{left:L!=null?`${L}px`:"",top:F!=null?`${F}px`:"",[P]:"100%"})}}B(()=>{let g=i(),f=n();if(!g||!f)return;let h=bc(g,f,u,{elementResize:typeof ResizeObserver=="function"});U(h)}),B(()=>{let g=n(),f=t.contentRef?.();!g||!f||queueMicrotask(()=>{g.style.zIndex=getComputedStyle(f).zIndex})});let d={currentPlacement:l,contentRef:()=>t.contentRef?.(),setPositionerRef:r,setArrowRef:s};return v($r.Provider,{value:d,get children(){return t.children}})}var Gi=Object.assign(Oc,{Arrow:Sr,Context:$r,usePopperContext:Cr,Positioner:Tc});function qc(e){let t=n=>{n.key===dr.Escape&&e.onEscapeKeyDown?.(n)};B(()=>{if(Ce||E(e.isDisabled))return;let n=e.ownerDocument?.()??Je();n.addEventListener("keydown",t),U(()=>{n.removeEventListener("keydown",t)})})}var zo="interactOutside.pointerDownOutside",Ro="interactOutside.focusOutside";function _c(e,t){let n,r=Gl,o=()=>Je(t()),s=d=>e.onPointerDownOutside?.(d),l=d=>e.onFocusOutside?.(d),a=d=>e.onInteractOutside?.(d),i=d=>{let g=d.target;return!(g instanceof HTMLElement)||g.closest(`[${Dn}]`)||!Ke(o(),g)||Ke(t(),g)?!1:!e.shouldExcludeElement?.(g)},c=d=>{function g(){let f=t(),h=d.target;if(!f||!h||!i(d))return;let p=be([s,a]);h.addEventListener(zo,p,{once:!0});let m=new CustomEvent(zo,{bubbles:!1,cancelable:!0,detail:{originalEvent:d,isContextMenu:d.button===2||Pl(d)&&d.button===0}});h.dispatchEvent(m)}d.pointerType==="touch"?(o().removeEventListener("click",g),r=g,o().addEventListener("click",g,{once:!0})):g()},u=d=>{let g=t(),f=d.target;if(!g||!f||!i(d))return;let h=be([l,a]);f.addEventListener(Ro,h,{once:!0});let p=new CustomEvent(Ro,{bubbles:!1,cancelable:!0,detail:{originalEvent:d,isContextMenu:!1}});f.dispatchEvent(p)};B(()=>{Ce||E(e.isDisabled)||(n=window.setTimeout(()=>{o().addEventListener("pointerdown",c,!0)},0),o().addEventListener("focusin",u,!0),U(()=>{window.clearTimeout(n),o().removeEventListener("click",r),o().removeEventListener("pointerdown",c,!0),o().removeEventListener("focusin",u,!0)}))})}var Vi=me();function zc(){return ye(Vi)}function Rc(e){let t,n=zc(),[r,o]=X(e,["ref","disableOutsidePointerEvents","excludedElements","onEscapeKeyDown","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","bypassTopMostLayerCheck"]),s=new Set([]),l=d=>{s.add(d);let g=n?.registerNestedLayer(d);return()=>{s.delete(d),g?.()}};_c({shouldExcludeElement:d=>t?r.excludedElements?.some(g=>Ke(g(),d))||[...s].some(g=>Ke(g,d)):!1,onPointerDownOutside:d=>{!t||Ie.isBelowPointerBlockingLayer(t)||!r.bypassTopMostLayerCheck&&!Ie.isTopMostLayer(t)||(r.onPointerDownOutside?.(d),r.onInteractOutside?.(d),d.defaultPrevented||r.onDismiss?.())},onFocusOutside:d=>{r.onFocusOutside?.(d),r.onInteractOutside?.(d),d.defaultPrevented||r.onDismiss?.()}},()=>t),qc({ownerDocument:()=>Je(t),onEscapeKeyDown:d=>{!t||!Ie.isTopMostLayer(t)||(r.onEscapeKeyDown?.(d),!d.defaultPrevented&&r.onDismiss&&(d.preventDefault(),r.onDismiss()))}}),mt(()=>{if(!t)return;Ie.addLayer({node:t,isPointerBlocking:r.disableOutsidePointerEvents,dismiss:r.onDismiss});let d=n?.registerNestedLayer(t);Ie.assignPointerEventToLayers(),Ie.disableBodyPointerEvents(t),U(()=>{t&&(Ie.removeLayer(t),d?.(),Ie.assignPointerEventToLayers(),Ie.restoreBodyPointerEvents(t))})}),B(Xe([()=>t,()=>r.disableOutsidePointerEvents],([d,g])=>{if(!d)return;let f=Ie.find(d);f&&f.isPointerBlocking!==g&&(f.isPointerBlocking=g,Ie.assignPointerEventToLayers()),g&&Ie.disableBodyPointerEvents(d),U(()=>{Ie.restoreBodyPointerEvents(d)})},{defer:!0}));let u={registerNestedLayer:l};return v(Vi.Provider,{value:u,get children(){return v(de,j({as:"div",ref(d){let g=De(f=>t=f,r.ref);typeof g=="function"&&g(d)}},o))}})}function Hi(e={}){let[t,n]=xi({value:()=>E(e.open),defaultValue:()=>!!E(e.defaultOpen),onChange:l=>e.onOpenChange?.(l)}),r=()=>{n(!0)},o=()=>{n(!1)};return{isOpen:t,setIsOpen:n,open:r,close:o,toggle:()=>{t()?o():r()}}}var Re={};_n(Re,{Description:()=>yi,ErrorMessage:()=>bi,Item:()=>Yi,ItemControl:()=>Xi,ItemDescription:()=>Zi,ItemIndicator:()=>Ji,ItemInput:()=>es,ItemLabel:()=>ts,Label:()=>ns,RadioGroup:()=>Kc,Root:()=>rs});var ji=me();function Wi(){let e=ye(ji);if(e===void 0)throw new Error("[kobalte]: `useRadioGroupContext` must be used within a `RadioGroup` component");return e}var Qi=me();function hn(){let e=ye(Qi);if(e===void 0)throw new Error("[kobalte]: `useRadioGroupItemContext` must be used within a `RadioGroup.Item` component");return e}function Yi(e){let t=dn(),n=Wi(),r=`${t.generateId("item")}-${Fe()}`,o=Q({id:r},e),[s,l]=X(o,["value","disabled","onPointerDown"]),[a,i]=z(),[c,u]=z(),[d,g]=z(),[f,h]=z(),[p,m]=z(!1),y=M(()=>n.isSelectedValue(s.value)),b=M(()=>s.disabled||t.isDisabled()||!1),x=L=>{ue(L,s.onPointerDown),p()&&L.preventDefault()},w=M(()=>({...t.dataset(),"data-disabled":b()?"":void 0,"data-checked":y()?"":void 0})),$={value:()=>s.value,dataset:w,isSelected:y,isDisabled:b,inputId:a,labelId:c,descriptionId:d,inputRef:f,select:()=>n.setSelectedValue(s.value),generateId:un(()=>l.id),registerInput:Be(i),registerLabel:Be(u),registerDescription:Be(g),setIsFocused:m,setInputRef:h};return v(Qi.Provider,{value:$,get children(){return v(de,j({as:"div",role:"group",onPointerDown:x},w,l))}})}function Xi(e){let t=hn(),n=Q({id:t.generateId("control")},e),[r,o]=X(n,["onClick","onKeyDown"]);return v(de,j({as:"div",onClick:a=>{ue(a,r.onClick),t.select(),t.inputRef()?.focus()},onKeyDown:a=>{ue(a,r.onKeyDown),a.key===dr.Space&&(t.select(),t.inputRef()?.focus())}},()=>t.dataset(),o))}function Zi(e){let t=hn(),n=Q({id:t.generateId("description")},e);return B(()=>U(t.registerDescription(n.id))),v(de,j({as:"div"},()=>t.dataset(),n))}function Ji(e){let t=hn(),n=Q({id:t.generateId("indicator")},e),[r,o]=X(n,["ref","forceMount"]),[s,l]=z(),{present:a}=Ti({show:()=>r.forceMount||t.isSelected(),element:()=>s()??null});return v(R,{get when(){return a()},get children(){return v(de,j({as:"div",ref(i){let c=De(l,r.ref);typeof c=="function"&&c(i)}},()=>t.dataset(),o))}})}function es(e){let t=dn(),n=Wi(),r=hn(),o=Q({id:r.generateId("input")},e),[s,l]=X(o,["ref","style","aria-labelledby","aria-describedby","onChange","onFocus","onBlur"]),a=()=>[s["aria-labelledby"],r.labelId(),s["aria-labelledby"]!=null&&l["aria-label"]!=null?l.id:void 0].filter(Boolean).join(" ")||void 0,i=()=>[s["aria-describedby"],r.descriptionId(),n.ariaDescribedBy()].filter(Boolean).join(" ")||void 0,[c,u]=z(!1),d=h=>{if(ue(h,s.onChange),h.stopPropagation(),!c()){n.setSelectedValue(r.value());let p=h.target;p.checked=r.isSelected()}u(!1)},g=h=>{ue(h,s.onFocus),r.setIsFocused(!0)},f=h=>{ue(h,s.onBlur),r.setIsFocused(!1)};return B(Xe([()=>r.isSelected(),()=>r.value()],h=>{if(!h[0]&&h[1]===r.value())return;u(!0);let p=r.inputRef();p?.dispatchEvent(new Event("input",{bubbles:!0,cancelable:!0})),p?.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0}))},{defer:!0})),B(()=>U(r.registerInput(l.id))),v(de,j({as:"input",ref(h){let p=De(r.setInputRef,s.ref);typeof p=="function"&&p(h)},type:"radio",get name(){return t.name()},get value(){return r.value()},get checked(){return r.isSelected()},get required(){return t.isRequired()},get disabled(){return r.isDisabled()},get readonly(){return t.isReadOnly()},get style(){return Ln({...pi},s.style)},get"aria-labelledby"(){return a()},get"aria-describedby"(){return i()},onChange:d,onFocus:g,onBlur:f},()=>r.dataset(),l))}function ts(e){let t=hn(),n=Q({id:t.generateId("label")},e);return B(()=>U(t.registerLabel(n.id))),v(de,j({as:"label",get for(){return t.inputId()}},()=>t.dataset(),n))}function ns(e){return v(Ql,j({as:"span"},e))}function rs(e){let t,n=`radiogroup-${Fe()}`,r=Q({id:n,orientation:"vertical"},e),[o,s,l]=X(r,["ref","value","defaultValue","onChange","orientation","aria-labelledby","aria-describedby"],jl),[a,i]=fn({value:()=>o.value,defaultValue:()=>o.defaultValue,onChange:h=>o.onChange?.(h)}),{formControlContext:c}=Wl(s);Yl(()=>t,()=>i(o.defaultValue??""));let u=()=>c.getAriaLabelledBy(E(s.id),l["aria-label"],o["aria-labelledby"]),d=()=>c.getAriaDescribedBy(o["aria-describedby"]),g=h=>h===a(),f={ariaDescribedBy:d,isSelectedValue:g,setSelectedValue:h=>{if(!(c.isReadOnly()||c.isDisabled())&&(i(h),t))for(let p of t.querySelectorAll("[type='radio']")){let m=p;m.checked=g(m.value)}}};return v(mi.Provider,{value:c,get children(){return v(ji.Provider,{value:f,get children(){return v(de,j({as:"div",ref(h){let p=De(m=>t=m,o.ref);typeof p=="function"&&p(h)},role:"radiogroup",get id(){return E(s.id)},get"aria-invalid"(){return c.validationState()==="invalid"||void 0},get"aria-required"(){return c.isRequired()||void 0},get"aria-disabled"(){return c.isDisabled()||void 0},get"aria-readonly"(){return c.isReadOnly()||void 0},get"aria-orientation"(){return o.orientation},get"aria-labelledby"(){return u()},get"aria-describedby"(){return d()}},()=>c.dataset(),l))}})}})}var Kc=Object.assign(rs,{Description:yi,ErrorMessage:bi,Item:Yi,ItemControl:Xi,ItemDescription:Zi,ItemIndicator:Ji,ItemInput:es,ItemLabel:ts,Label:ns}),Bc=class{collection;ref;collator;constructor(e,t,n){this.collection=e,this.ref=t,this.collator=n}getKeyBelow(e){let t=this.collection().getKeyAfter(e);for(;t!=null;){let n=this.collection().getItem(t);if(n&&n.type==="item"&&!n.disabled)return t;t=this.collection().getKeyAfter(t)}}getKeyAbove(e){let t=this.collection().getKeyBefore(e);for(;t!=null;){let n=this.collection().getItem(t);if(n&&n.type==="item"&&!n.disabled)return t;t=this.collection().getKeyBefore(t)}}getFirstKey(){let e=this.collection().getFirstKey();for(;e!=null;){let t=this.collection().getItem(e);if(t&&t.type==="item"&&!t.disabled)return e;e=this.collection().getKeyAfter(e)}}getLastKey(){let e=this.collection().getLastKey();for(;e!=null;){let t=this.collection().getItem(e);if(t&&t.type==="item"&&!t.disabled)return e;e=this.collection().getKeyBefore(e)}}getItem(e){return this.ref?.()?.querySelector(`[data-key="${e}"]`)??null}getKeyPageAbove(e){let t=this.ref?.(),n=this.getItem(e);if(!t||!n)return;let r=Math.max(0,n.offsetTop+n.offsetHeight-t.offsetHeight),o=e;for(;o&&n&&n.offsetTop>r;)o=this.getKeyAbove(o),n=o!=null?this.getItem(o):null;return o}getKeyPageBelow(e){let t=this.ref?.(),n=this.getItem(e);if(!t||!n)return;let r=Math.min(t.scrollHeight,n.offsetTop-n.offsetHeight+t.offsetHeight),o=e;for(;o&&n&&n.offsetTop<r;)o=this.getKeyBelow(o),n=o!=null?this.getItem(o):null;return o}getKeyForSearch(e,t){let n=this.collator?.();if(!n)return;let r=t!=null?this.getKeyBelow(t):this.getFirstKey();for(;r!=null;){let o=this.collection().getItem(r);if(o){let s=o.textValue.slice(0,e.length);if(o.textValue&&n.compare(s,e)===0)return r}r=this.getKeyBelow(r)}}};function Nc(e,t,n){let r=ma({usage:"search",sensitivity:"base"}),o=M(()=>{let s=E(e.keyboardDelegate);return s||new Bc(e.collection,t,r)});return Sa({selectionManager:()=>E(e.selectionManager),keyboardDelegate:o,autoFocus:()=>E(e.autoFocus),deferAutoFocus:()=>E(e.deferAutoFocus),shouldFocusWrap:()=>E(e.shouldFocusWrap),disallowEmptySelection:()=>E(e.disallowEmptySelection),selectOnFocus:()=>E(e.selectOnFocus),disallowTypeAhead:()=>E(e.disallowTypeAhead),shouldUseVirtualFocus:()=>E(e.shouldUseVirtualFocus),allowsTabNavigation:()=>E(e.allowsTabNavigation),isVirtualized:()=>E(e.isVirtualized),scrollToKey:s=>E(e.scrollToKey)?.(s),orientation:()=>E(e.orientation)},t)}var Yn="focusScope.autoFocusOnMount",Xn="focusScope.autoFocusOnUnmount",Ko={bubbles:!1,cancelable:!0},Bo={stack:[],active(){return this.stack[0]},add(e){e!==this.active()&&this.active()?.pause(),this.stack=tr(this.stack,e),this.stack.unshift(e)},remove(e){this.stack=tr(this.stack,e),this.active()?.resume()}};function Uc(e,t){let[n,r]=z(!1),o={pause(){r(!0)},resume(){r(!1)}},s=null,l=h=>e.onMountAutoFocus?.(h),a=h=>e.onUnmountAutoFocus?.(h),i=()=>Je(t()),c=()=>{let h=i().createElement("span");return h.setAttribute("data-focus-trap",""),h.tabIndex=0,Object.assign(h.style,pi),h},u=()=>{let h=t();return h?hi(h,!0).filter(p=>!p.hasAttribute("data-focus-trap")):[]},d=()=>{let h=u();return h.length>0?h[0]:null},g=()=>{let h=u();return h.length>0?h[h.length-1]:null},f=()=>{let h=t();if(!h)return!1;let p=nn(h);return!p||Ke(h,p)?!1:vi(p)};B(()=>{if(Ce)return;let h=t();if(!h)return;Bo.add(o);let p=nn(h);if(!Ke(h,p)){let y=new CustomEvent(Yn,Ko);h.addEventListener(Yn,l),h.dispatchEvent(y),y.defaultPrevented||setTimeout(()=>{ke(d()),nn(h)===p&&ke(h)},0)}U(()=>{h.removeEventListener(Yn,l),setTimeout(()=>{let y=new CustomEvent(Xn,Ko);f()&&y.preventDefault(),h.addEventListener(Xn,a),h.dispatchEvent(y),y.defaultPrevented||ke(p??i().body),h.removeEventListener(Xn,a),Bo.remove(o)},0)})}),B(()=>{if(Ce)return;let h=t();if(!h||!E(e.trapFocus)||n())return;let p=y=>{let b=y.target;b?.closest(`[${Dn}]`)||(Ke(h,b)?s=b:ke(s))},m=y=>{let x=y.relatedTarget??nn(h);x?.closest(`[${Dn}]`)||Ke(h,x)||ke(s)};i().addEventListener("focusin",p),i().addEventListener("focusout",m),U(()=>{i().removeEventListener("focusin",p),i().removeEventListener("focusout",m)})}),B(()=>{if(Ce)return;let h=t();if(!h||!E(e.trapFocus)||n())return;let p=c();h.insertAdjacentElement("afterbegin",p);let m=c();h.insertAdjacentElement("beforeend",m);function y(x){let w=d(),$=g();x.relatedTarget===w?ke($):ke(w)}p.addEventListener("focusin",y),m.addEventListener("focusin",y);let b=new MutationObserver(x=>{for(let w of x)w.previousSibling===m&&(m.remove(),h.insertAdjacentElement("beforeend",m)),w.nextSibling===p&&(p.remove(),h.insertAdjacentElement("afterbegin",p))});b.observe(h,{childList:!0,subtree:!1}),U(()=>{p.removeEventListener("focusin",y),m.removeEventListener("focusin",y),p.remove(),m.remove(),b.disconnect()})})}var Gc="data-live-announcer";function Vc(e){B(()=>{E(e.isDisabled)||U(Hc(E(e.targets),E(e.root)))})}var en=new WeakMap,ze=[];function Hc(e,t=document.body){let n=new Set(e),r=new Set,o=i=>{for(let g of i.querySelectorAll(`[${Gc}], [${Dn}]`))n.add(g);let c=g=>{if(n.has(g)||g.parentElement&&r.has(g.parentElement)&&g.parentElement.getAttribute("role")!=="row")return NodeFilter.FILTER_REJECT;for(let f of n)if(g.contains(f))return NodeFilter.FILTER_SKIP;return NodeFilter.FILTER_ACCEPT},u=document.createTreeWalker(i,NodeFilter.SHOW_ELEMENT,{acceptNode:c}),d=c(i);if(d===NodeFilter.FILTER_ACCEPT&&s(i),d!==NodeFilter.FILTER_REJECT){let g=u.nextNode();for(;g!=null;)s(g),g=u.nextNode()}},s=i=>{let c=en.get(i)??0;i.getAttribute("aria-hidden")==="true"&&c===0||(c===0&&i.setAttribute("aria-hidden","true"),r.add(i),en.set(i,c+1))};ze.length&&ze[ze.length-1].disconnect(),o(t);let l=new MutationObserver(i=>{for(let c of i)if(!(c.type!=="childList"||c.addedNodes.length===0)&&![...n,...r].some(u=>u.contains(c.target))){for(let u of c.removedNodes)u instanceof Element&&(n.delete(u),r.delete(u));for(let u of c.addedNodes)(u instanceof HTMLElement||u instanceof SVGElement)&&(u.dataset.liveAnnouncer==="true"||u.dataset.reactAriaTopLayer==="true")?n.add(u):u instanceof Element&&o(u)}});l.observe(t,{childList:!0,subtree:!0});let a={observe(){l.observe(t,{childList:!0,subtree:!0})},disconnect(){l.disconnect()}};return ze.push(a),()=>{l.disconnect();for(let i of r){let c=en.get(i);if(c==null)return;c===1?(i.removeAttribute("aria-hidden"),en.delete(i)):en.set(i,c-1)}a===ze[ze.length-1]?(ze.pop(),ze.length&&ze[ze.length-1].observe()):ze.splice(ze.indexOf(a),1)}}var En=new Map,jc=e=>{B(()=>{let t=Se(e.style)??{},n=Se(e.properties)??[],r={};for(let s in t)r[s]=e.element.style[s];let o=En.get(e.key);o?o.activeCount++:En.set(e.key,{activeCount:1,originalStyles:r,properties:n.map(s=>s.key)}),Object.assign(e.element.style,e.style);for(let s of n)e.element.style.setProperty(s.key,s.value);U(()=>{let s=En.get(e.key);if(s){if(s.activeCount!==1){s.activeCount--;return}En.delete(e.key);for(let[l,a]of Object.entries(s.originalStyles))e.element.style[l]=a;for(let l of s.properties)e.element.style.removeProperty(l);e.element.style.length===0&&e.element.removeAttribute("style"),e.cleanup?.()}})})},No=jc,Wc=(e,t)=>{switch(t){case"x":return[e.clientWidth,e.scrollLeft,e.scrollWidth];case"y":return[e.clientHeight,e.scrollTop,e.scrollHeight]}},Qc=(e,t)=>{let n=getComputedStyle(e),r=t==="x"?n.overflowX:n.overflowY;return r==="auto"||r==="scroll"||e.tagName==="HTML"&&r==="visible"},Yc=(e,t,n)=>{let r=t==="x"&&window.getComputedStyle(e).direction==="rtl"?-1:1,o=e,s=0,l=0,a=!1;do{let[i,c,u]=Wc(o,t),d=u-i-r*c;(c!==0||d!==0)&&Qc(o,t)&&(s+=d,l+=c),o===(n??document.documentElement)?a=!0:o=o._$host??o.parentElement}while(o&&!a);return[s,l]},[Uo,Go]=z([]),Xc=e=>Uo().indexOf(e)===Uo().length-1,Zc=e=>{let t=j({element:null,enabled:!0,hideScrollbar:!0,preventScrollbarShift:!0,preventScrollbarShiftMode:"padding",restoreScrollPosition:!0,allowPinchZoom:!1},e),n=Fe(),r=[0,0],o=null,s=null;B(()=>{Se(t.enabled)&&(Go(c=>[...c,n]),U(()=>{Go(c=>c.filter(u=>u!==n))}))}),B(()=>{if(!Se(t.enabled)||!Se(t.hideScrollbar))return;let{body:c}=document,u=window.innerWidth-c.offsetWidth;if(Se(t.preventScrollbarShift)){let d={overflow:"hidden"},g=[];u>0&&(Se(t.preventScrollbarShiftMode)==="padding"?d.paddingRight=`calc(${window.getComputedStyle(c).paddingRight} + ${u}px)`:d.marginRight=`calc(${window.getComputedStyle(c).marginRight} + ${u}px)`,g.push({key:"--scrollbar-width",value:`${u}px`}));let f=window.scrollY,h=window.scrollX;No({key:"prevent-scroll",element:c,style:d,properties:g,cleanup:()=>{Se(t.restoreScrollPosition)&&u>0&&window.scrollTo(h,f)}})}else No({key:"prevent-scroll",element:c,style:{overflow:"hidden"}})}),B(()=>{!Xc(n)||!Se(t.enabled)||(document.addEventListener("wheel",a,{passive:!1}),document.addEventListener("touchstart",l,{passive:!1}),document.addEventListener("touchmove",i,{passive:!1}),U(()=>{document.removeEventListener("wheel",a),document.removeEventListener("touchstart",l),document.removeEventListener("touchmove",i)}))});let l=c=>{r=Vo(c),o=null,s=null},a=c=>{let u=c.target,d=Se(t.element),g=Jc(c),f=Math.abs(g[0])>Math.abs(g[1])?"x":"y",h=f==="x"?g[0]:g[1],p=Ho(u,f,h,d),m;d&&ar(d,u)?m=!p:m=!0,m&&c.cancelable&&c.preventDefault()},i=c=>{let u=Se(t.element),d=c.target,g;if(c.touches.length===2)g=!Se(t.allowPinchZoom);else{if(o==null||s===null){let f=Vo(c).map((p,m)=>r[m]-p),h=Math.abs(f[0])>Math.abs(f[1])?"x":"y";o=h,s=h==="x"?f[0]:f[1]}if(d.type==="range")g=!1;else{let f=Ho(d,o,s,u);u&&ar(u,d)?g=!f:g=!0}}g&&c.cancelable&&c.preventDefault()}},Jc=e=>[e.deltaX,e.deltaY],Vo=e=>e.changedTouches[0]?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0],Ho=(e,t,n,r)=>{let o=r!==null&&ar(r,e),[s,l]=Yc(e,t,o?r:void 0);return!(n>0&&Math.abs(s)<=1||n<0&&Math.abs(l)<1)},ar=(e,t)=>{if(e.contains(t))return!0;let n=t;for(;n;){if(n===e)return!0;n=n._$host??n.parentElement}return!1},eu=Zc,tu=eu,os=me();function is(){return ye(os)}function gt(){let e=is();if(e===void 0)throw new Error("[kobalte]: `useMenuContext` must be used within a `Menu` component");return e}var ss=me();function kr(){let e=ye(ss);if(e===void 0)throw new Error("[kobalte]: `useMenuItemContext` must be used within a `Menu.Item` component");return e}var ls=me();function tt(){let e=ye(ls);if(e===void 0)throw new Error("[kobalte]: `useMenuRootContext` must be used within a `MenuRoot` component");return e}function Er(e){let t,n=tt(),r=gt(),o=Q({id:n.generateId(`item-${Fe()}`)},e),[s,l]=X(o,["ref","textValue","disabled","closeOnSelect","checked","indeterminate","onSelect","onPointerMove","onPointerLeave","onPointerDown","onPointerUp","onClick","onKeyDown","onMouseDown","onFocus"]),[a,i]=z(),[c,u]=z(),[d,g]=z(),f=()=>r.listState().selectionManager(),h=()=>l.id,p=()=>f().focusedKey()===h(),m=()=>{s.onSelect?.(),s.closeOnSelect&&setTimeout(()=>{r.close(!0)})};ca({getItem:()=>({ref:()=>t,type:"item",key:h(),textValue:s.textValue??d()?.textContent??t?.textContent??"",disabled:s.disabled??!1})});let y=Ai({key:h,selectionManager:f,shouldSelectOnPressUp:!0,allowsDifferentPressOrigin:!0,disabled:()=>s.disabled},()=>t),b=S=>{ue(S,s.onPointerMove),S.pointerType==="mouse"&&(s.disabled?r.onItemLeave(S):(r.onItemEnter(S),S.defaultPrevented||(ke(S.currentTarget),r.listState().selectionManager().setFocused(!0),r.listState().selectionManager().setFocusedKey(h()))))},x=S=>{ue(S,s.onPointerLeave),S.pointerType==="mouse"&&r.onItemLeave(S)},w=S=>{ue(S,s.onPointerUp),!s.disabled&&S.button===0&&m()},$=S=>{if(ue(S,s.onKeyDown),!S.repeat&&!s.disabled)switch(S.key){case"Enter":case" ":m();break}},L=M(()=>{if(s.indeterminate)return"mixed";if(s.checked!=null)return s.checked}),F=M(()=>({"data-indeterminate":s.indeterminate?"":void 0,"data-checked":s.checked&&!s.indeterminate?"":void 0,"data-disabled":s.disabled?"":void 0,"data-highlighted":p()?"":void 0})),P={isChecked:()=>s.checked,dataset:F,setLabelRef:g,generateId:un(()=>l.id),registerLabel:Be(i),registerDescription:Be(u)};return v(ss.Provider,{value:P,get children(){return v(de,j({as:"div",ref(S){let q=De(H=>t=H,s.ref);typeof q=="function"&&q(S)},get tabIndex(){return y.tabIndex()},get"aria-checked"(){return L()},get"aria-disabled"(){return s.disabled},get"aria-labelledby"(){return a()},get"aria-describedby"(){return c()},get"data-key"(){return y.dataKey()},get onPointerDown(){return be([s.onPointerDown,y.onPointerDown])},get onPointerUp(){return be([w,y.onPointerUp])},get onClick(){return be([s.onClick,y.onClick])},get onKeyDown(){return be([$,y.onKeyDown])},get onMouseDown(){return be([s.onMouseDown,y.onMouseDown])},get onFocus(){return be([s.onFocus,y.onFocus])},onPointerMove:b,onPointerLeave:x},F,l))}})}function as(e){let t=Q({closeOnSelect:!1},e),[n,r]=X(t,["checked","defaultChecked","onChange","onSelect"]),o=ea({isSelected:()=>n.checked,defaultIsSelected:()=>n.defaultChecked,onSelectedChange:l=>n.onChange?.(l),isDisabled:()=>r.disabled});return v(Er,j({role:"menuitemcheckbox",get checked(){return o.isSelected()},onSelect:()=>{n.onSelect?.(),o.toggle()}},r))}var nu=me();function Kn(){return ye(nu)}var cn={next:(e,t)=>e==="ltr"?t==="horizontal"?"ArrowRight":"ArrowDown":t==="horizontal"?"ArrowLeft":"ArrowUp",previous:(e,t)=>cn.next(e==="ltr"?"rtl":"ltr",t)},jo={first:e=>e==="horizontal"?"ArrowDown":"ArrowRight",last:e=>e==="horizontal"?"ArrowUp":"ArrowLeft"};function cs(e){let t=tt(),n=gt(),r=Kn(),{direction:o}=Ct(),s=Q({id:t.generateId("trigger")},e),[l,a]=X(s,["ref","id","disabled","onPointerDown","onClick","onKeyDown","onMouseOver","onFocus"]),i=()=>t.value();r!==void 0&&(i=()=>t.value()??l.id,r.lastValue()===void 0&&r.setLastValue(i));let c=qn(()=>n.triggerRef(),()=>"button"),u=M(()=>c()==="a"&&n.triggerRef()?.getAttribute("href")!=null);B(Xe(()=>r?.value(),y=>{u()&&y===i()&&n.triggerRef()?.focus()}));let d=()=>{r!==void 0?n.isOpen()?r.value()===i()&&r.closeMenu():(r.autoFocusMenu()||r.setAutoFocusMenu(!0),n.open(!1)):n.toggle(!0)},g=y=>{ue(y,l.onPointerDown),y.currentTarget.dataset.pointerType=y.pointerType,!l.disabled&&y.pointerType!=="touch"&&y.button===0&&d()},f=y=>{ue(y,l.onClick),l.disabled||y.currentTarget.dataset.pointerType==="touch"&&d()},h=y=>{if(ue(y,l.onKeyDown),!l.disabled){if(u())switch(y.key){case"Enter":case" ":return}switch(y.key){case"Enter":case" ":case jo.first(t.orientation()):y.stopPropagation(),y.preventDefault(),Hl(y.currentTarget),n.open("first"),r?.setAutoFocusMenu(!0),r?.setValue(i);break;case jo.last(t.orientation()):y.stopPropagation(),y.preventDefault(),n.open("last");break;case cn.next(o(),t.orientation()):if(r===void 0)break;y.stopPropagation(),y.preventDefault(),r.nextMenu();break;case cn.previous(o(),t.orientation()):if(r===void 0)break;y.stopPropagation(),y.preventDefault(),r.previousMenu();break}}},p=y=>{ue(y,l.onMouseOver),n.triggerRef()?.dataset.pointerType!=="touch"&&!l.disabled&&r!==void 0&&r.value()!==void 0&&r.setValue(i)},m=y=>{ue(y,l.onFocus),r!==void 0&&y.currentTarget.dataset.pointerType!=="touch"&&r.setValue(i)};return B(()=>U(n.registerTriggerId(l.id))),v(pr,j({ref(y){let b=De(n.setTriggerRef,l.ref);typeof b=="function"&&b(y)},get"data-kb-menu-value-trigger"(){return t.value()},get id(){return l.id},get disabled(){return l.disabled},"aria-haspopup":"true",get"aria-expanded"(){return n.isOpen()},get"aria-controls"(){return M(()=>!!n.isOpen())()?n.contentId():void 0},get"data-highlighted"(){return i()!==void 0&&r?.value()===i()?!0:void 0},get tabIndex(){return r!==void 0?r.value()===i()||r.lastValue()===i()?0:-1:void 0},onPointerDown:g,onMouseOver:p,onClick:f,onKeyDown:h,onFocus:m,role:r!==void 0?"menuitem":void 0},()=>n.dataset(),a))}var ru=me();function us(){return ye(ru)}function ds(e){let t,n=tt(),r=gt(),o=Kn(),s=us(),{direction:l}=Ct(),a=Q({id:n.generateId(`content-${Fe()}`)},e),[i,c]=X(a,["ref","id","style","onOpenAutoFocus","onCloseAutoFocus","onEscapeKeyDown","onFocusOutside","onPointerEnter","onPointerMove","onKeyDown","onMouseDown","onFocusIn","onFocusOut"]),u=0,d=()=>r.parentMenuContext()==null&&o===void 0&&n.isModal(),g=Nc({selectionManager:r.listState().selectionManager,collection:r.listState().collection,autoFocus:r.autoFocus,deferAutoFocus:!0,shouldFocusWrap:!0,disallowTypeAhead:()=>!r.listState().selectionManager().isFocused(),orientation:()=>n.orientation()==="horizontal"?"vertical":"horizontal"},()=>t);Uc({trapFocus:()=>d()&&r.isOpen(),onMountAutoFocus:x=>{o===void 0&&i.onOpenAutoFocus?.(x)},onUnmountAutoFocus:i.onCloseAutoFocus},()=>t);let f=x=>{if(Ke(x.currentTarget,x.target)&&(x.key==="Tab"&&r.isOpen()&&x.preventDefault(),o!==void 0&&x.currentTarget.getAttribute("aria-haspopup")!=="true"))switch(x.key){case cn.next(l(),n.orientation()):x.stopPropagation(),x.preventDefault(),r.close(!0),o.setAutoFocusMenu(!0),o.nextMenu();break;case cn.previous(l(),n.orientation()):if(x.currentTarget.hasAttribute("data-closed"))break;x.stopPropagation(),x.preventDefault(),r.close(!0),o.setAutoFocusMenu(!0),o.previousMenu();break}},h=x=>{i.onEscapeKeyDown?.(x),o?.setAutoFocusMenu(!1),r.close(!0)},p=x=>{i.onFocusOutside?.(x),n.isModal()&&x.preventDefault()},m=x=>{ue(x,i.onPointerEnter),r.isOpen()&&(r.parentMenuContext()?.listState().selectionManager().setFocused(!1),r.parentMenuContext()?.listState().selectionManager().setFocusedKey(void 0))},y=x=>{if(ue(x,i.onPointerMove),x.pointerType!=="mouse")return;let w=x.target,$=u!==x.clientX;Ke(x.currentTarget,w)&&$&&(r.setPointerDir(x.clientX>u?"right":"left"),u=x.clientX)};B(()=>U(r.registerContentId(i.id)));let b={ref:De(x=>{r.setContentRef(x),t=x},i.ref),role:"menu",get id(){return i.id},get tabIndex(){return g.tabIndex()},get"aria-labelledby"(){return r.triggerId()},onKeyDown:be([i.onKeyDown,g.onKeyDown,f]),onMouseDown:be([i.onMouseDown,g.onMouseDown]),onFocusIn:be([i.onFocusIn,g.onFocusIn]),onFocusOut:be([i.onFocusOut,g.onFocusOut]),onPointerEnter:m,onPointerMove:y,get"data-orientation"(){return n.orientation()}};return v(R,{get when(){return r.contentPresent()},get children(){return v(R,{get when(){return s===void 0||r.parentMenuContext()!=null},get fallback(){return v(de,j({as:"div"},()=>r.dataset(),b,c))},get children(){return v(Gi.Positioner,{get children(){return v(Rc,j({get disableOutsidePointerEvents(){return M(()=>!!d())()&&r.isOpen()},get excludedElements(){return[r.triggerRef]},bypassTopMostLayerCheck:!0,get style(){return Ln({"--kb-menu-content-transform-origin":"var(--kb-popper-content-transform-origin)",position:"relative"},i.style)},onEscapeKeyDown:h,onFocusOutside:p,get onDismiss(){return r.close}},()=>r.dataset(),b,c))}})}})}})}function ou(e){let t,n=tt(),r=gt(),[o,s]=X(e,["ref"]);return tu({element:()=>t??null,enabled:()=>r.contentPresent()&&n.preventScroll()}),v(ds,j({ref(l){let a=De(i=>{t=i},o.ref);typeof a=="function"&&a(l)}},s))}var fs=me();function iu(){let e=ye(fs);if(e===void 0)throw new Error("[kobalte]: `useMenuGroupContext` must be used within a `Menu.Group` component");return e}function Mr(e){let t=tt(),n=Q({id:t.generateId(`group-${Fe()}`)},e),[r,o]=z(),s={generateId:un(()=>n.id),registerLabelId:Be(o)};return v(fs.Provider,{value:s,get children(){return v(de,j({as:"div",role:"group",get"aria-labelledby"(){return r()}},n))}})}function gs(e){let t=iu(),n=Q({id:t.generateId("label")},e),[r,o]=X(n,["id"]);return B(()=>U(t.registerLabelId(r.id))),v(de,j({as:"span",get id(){return r.id},"aria-hidden":"true"},o))}function hs(e){let t=gt(),n=Q({children:"\u25BC"},e);return v(de,j({as:"span","aria-hidden":"true"},()=>t.dataset(),n))}function vs(e){return v(Er,j({role:"menuitem",closeOnSelect:!0},e))}function ps(e){let t=kr(),n=Q({id:t.generateId("description")},e),[r,o]=X(n,["id"]);return B(()=>U(t.registerDescription(r.id))),v(de,j({as:"div",get id(){return r.id}},()=>t.dataset(),o))}function ms(e){let t=kr(),n=Q({id:t.generateId("indicator")},e),[r,o]=X(n,["forceMount"]);return v(R,{get when(){return r.forceMount||t.isChecked()},get children(){return v(de,j({as:"div"},()=>t.dataset(),o))}})}function ys(e){let t=kr(),n=Q({id:t.generateId("label")},e),[r,o]=X(n,["ref","id"]);return B(()=>U(t.registerLabel(r.id))),v(de,j({as:"div",ref(s){let l=De(t.setLabelRef,r.ref);typeof l=="function"&&l(s)},get id(){return r.id}},()=>t.dataset(),o))}function bs(e){let t=gt();return v(R,{get when(){return t.contentPresent()},get children(){return v(Vn,e)}})}var xs=me();function su(){let e=ye(xs);if(e===void 0)throw new Error("[kobalte]: `useMenuRadioGroupContext` must be used within a `Menu.RadioGroup` component");return e}function ws(e){let n=tt().generateId(`radiogroup-${Fe()}`),r=Q({id:n},e),[o,s]=X(r,["value","defaultValue","onChange","disabled"]),[l,a]=fn({value:()=>o.value,defaultValue:()=>o.defaultValue,onChange:c=>o.onChange?.(c)}),i={isDisabled:()=>o.disabled,isSelectedValue:c=>c===l(),setSelectedValue:a};return v(xs.Provider,{value:i,get children(){return v(Mr,s)}})}function $s(e){let t=su(),n=Q({closeOnSelect:!1},e),[r,o]=X(n,["value","onSelect"]);return v(Er,j({role:"menuitemradio",get checked(){return t.isSelectedValue(r.value)},onSelect:()=>{r.onSelect?.(),t.setSelectedValue(r.value)}},o))}function lu(e,t,n){let r=e.split("-")[0],o=n.getBoundingClientRect(),s=[],l=t.clientX,a=t.clientY;switch(r){case"top":s.push([l,a+5]),s.push([o.left,o.bottom]),s.push([o.left,o.top]),s.push([o.right,o.top]),s.push([o.right,o.bottom]);break;case"right":s.push([l-5,a]),s.push([o.left,o.top]),s.push([o.right,o.top]),s.push([o.right,o.bottom]),s.push([o.left,o.bottom]);break;case"bottom":s.push([l,a-5]),s.push([o.right,o.top]),s.push([o.right,o.bottom]),s.push([o.left,o.bottom]),s.push([o.left,o.top]);break;case"left":s.push([l+5,a]),s.push([o.right,o.bottom]),s.push([o.left,o.bottom]),s.push([o.left,o.top]),s.push([o.right,o.top]);break}return s}function au(e,t){return t?Vl([e.clientX,e.clientY],t):!1}function Cs(e){let t=tt(),n=$i(),r=is(),o=Kn(),s=us(),l=Q({placement:t.orientation()==="horizontal"?"bottom-start":"right-start"},e),[a,i]=X(l,["open","defaultOpen","onOpenChange"]),c=0,u=null,d="right",[g,f]=z(),[h,p]=z(),[m,y]=z(),[b,x]=z(),[w,$]=z(!0),[L,F]=z(i.placement),[P,S]=z([]),[q,H]=z([]),{DomCollectionProvider:G}=aa({items:q,onItemsChange:H}),te=Hi({open:()=>a.open,defaultOpen:()=>a.defaultOpen,onOpenChange:V=>a.onOpenChange?.(V)}),{present:J}=Ti({show:()=>t.forceMount()||te.isOpen(),element:()=>b()??null}),le=Ea({selectionMode:"none",dataSource:q}),oe=V=>{$(V),te.open()},ne=(V=!1)=>{te.close(),V&&r&&r.close(!0)},ie=V=>{$(V),te.toggle()},ae=()=>{let V=b();V&&(ke(V),le.selectionManager().setFocused(!0),le.selectionManager().setFocusedKey(void 0))},ve=()=>{s!=null?setTimeout(()=>ae()):ae()},Ae=V=>{S($e=>[...$e,V]);let Ge=r?.registerNestedMenu(V);return()=>{S($e=>tr($e,V)),Ge?.()}},ge=V=>d===u?.side&&au(V,u?.area),Ee=V=>{ge(V)&&V.preventDefault()},D=V=>{ge(V)||ve()},fe=V=>{ge(V)&&V.preventDefault()};Vc({isDisabled:()=>!(r==null&&te.isOpen()&&t.isModal()),targets:()=>[b(),...P()].filter(Boolean)}),B(()=>{let V=b();if(!V||!r)return;let Ge=r.registerNestedMenu(V);U(()=>{Ge()})}),B(()=>{r===void 0&&o?.registerMenu(t.value(),[b(),...P()])}),B(()=>{r!==void 0||o===void 0||(o.value()===t.value()?(m()?.focus(),o.autoFocusMenu()&&oe(!0)):ne())}),B(()=>{r!==void 0||o===void 0||te.isOpen()&&o.setValue(t.value())}),U(()=>{r===void 0&&o?.unregisterMenu(t.value())});let ht={dataset:M(()=>({"data-expanded":te.isOpen()?"":void 0,"data-closed":te.isOpen()?void 0:""})),isOpen:te.isOpen,contentPresent:J,nestedMenus:P,currentPlacement:L,pointerGraceTimeoutId:()=>c,autoFocus:w,listState:()=>le,parentMenuContext:()=>r,triggerRef:m,contentRef:b,triggerId:g,contentId:h,setTriggerRef:y,setContentRef:x,open:oe,close:ne,toggle:ie,focusContent:ve,onItemEnter:Ee,onItemLeave:D,onTriggerLeave:fe,setPointerDir:V=>d=V,setPointerGraceTimeoutId:V=>c=V,setPointerGraceIntent:V=>u=V,registerNestedMenu:Ae,registerItemToParentDomCollection:n?.registerItem,registerTriggerId:Be(f),registerContentId:Be(p)};return v(G,{get children(){return v(os.Provider,{value:ht,get children(){return v(R,{when:s===void 0,get fallback(){return i.children},get children(){return v(Gi,j({anchorRef:m,contentRef:b,onCurrentPlacementChange:F},i))}})}})}})}function Ss(e){let{direction:t}=Ct();return v(Cs,j({get placement(){return t()==="rtl"?"left-start":"right-start"},flip:!0},e))}var cu={close:(e,t)=>e==="ltr"?[t==="horizontal"?"ArrowLeft":"ArrowUp"]:[t==="horizontal"?"ArrowRight":"ArrowDown"]};function ks(e){let t=gt(),n=tt(),[r,o]=X(e,["onFocusOutside","onKeyDown"]),{direction:s}=Ct();return v(ds,j({onOpenAutoFocus:u=>{u.preventDefault()},onCloseAutoFocus:u=>{u.preventDefault()},onFocusOutside:u=>{r.onFocusOutside?.(u);let d=u.target;Ke(t.triggerRef(),d)||t.close()},onKeyDown:u=>{ue(u,r.onKeyDown);let d=Ke(u.currentTarget,u.target),g=cu.close(s(),n.orientation()).includes(u.key),f=t.parentMenuContext()!=null;d&&g&&f&&(t.close(),ke(t.triggerRef()))}},o))}var Wo=["Enter"," "],uu={open:(e,t)=>e==="ltr"?[...Wo,t==="horizontal"?"ArrowRight":"ArrowDown"]:[...Wo,t==="horizontal"?"ArrowLeft":"ArrowUp"]};function Es(e){let t,n=tt(),r=gt(),o=Q({id:n.generateId(`sub-trigger-${Fe()}`)},e),[s,l]=X(o,["ref","id","textValue","disabled","onPointerMove","onPointerLeave","onPointerDown","onPointerUp","onClick","onKeyDown","onMouseDown","onFocus"]),a=null,i=()=>{Ce||(a&&window.clearTimeout(a),a=null)},{direction:c}=Ct(),u=()=>s.id,d=()=>{let x=r.parentMenuContext();if(x==null)throw new Error("[kobalte]: `Menu.SubTrigger` must be used within a `Menu.Sub` component");return x.listState().selectionManager()},g=()=>r.listState().collection(),f=()=>d().focusedKey()===u(),h=Ai({key:u,selectionManager:d,shouldSelectOnPressUp:!0,allowsDifferentPressOrigin:!0,disabled:()=>s.disabled},()=>t),p=x=>{ue(x,s.onClick),!r.isOpen()&&!s.disabled&&r.open(!0)},m=x=>{if(ue(x,s.onPointerMove),x.pointerType!=="mouse")return;let w=r.parentMenuContext();if(w?.onItemEnter(x),!x.defaultPrevented){if(s.disabled){w?.onItemLeave(x);return}!r.isOpen()&&!a&&(r.parentMenuContext()?.setPointerGraceIntent(null),a=window.setTimeout(()=>{r.open(!1),i()},100)),w?.onItemEnter(x),x.defaultPrevented||(r.listState().selectionManager().isFocused()&&(r.listState().selectionManager().setFocused(!1),r.listState().selectionManager().setFocusedKey(void 0)),ke(x.currentTarget),w?.listState().selectionManager().setFocused(!0),w?.listState().selectionManager().setFocusedKey(u()))}},y=x=>{if(ue(x,s.onPointerLeave),x.pointerType!=="mouse")return;i();let w=r.parentMenuContext(),$=r.contentRef();if($){w?.setPointerGraceIntent({area:lu(r.currentPlacement(),x,$),side:r.currentPlacement().split("-")[0]}),window.clearTimeout(w?.pointerGraceTimeoutId());let L=window.setTimeout(()=>{w?.setPointerGraceIntent(null)},300);w?.setPointerGraceTimeoutId(L)}else{if(w?.onTriggerLeave(x),x.defaultPrevented)return;w?.setPointerGraceIntent(null)}w?.onItemLeave(x)},b=x=>{ue(x,s.onKeyDown),!x.repeat&&(s.disabled||uu.open(c(),n.orientation()).includes(x.key)&&(x.stopPropagation(),x.preventDefault(),d().setFocused(!1),d().setFocusedKey(void 0),r.isOpen()||r.open("first"),r.focusContent(),r.listState().selectionManager().setFocused(!0),r.listState().selectionManager().setFocusedKey(g().getFirstKey())))};return B(()=>{if(r.registerItemToParentDomCollection==null)throw new Error("[kobalte]: `Menu.SubTrigger` must be used within a `Menu.Sub` component");let x=r.registerItemToParentDomCollection({ref:()=>t,type:"item",key:u(),textValue:s.textValue??t?.textContent??"",disabled:s.disabled??!1});U(x)}),B(Xe(()=>r.parentMenuContext()?.pointerGraceTimeoutId(),x=>{U(()=>{window.clearTimeout(x),r.parentMenuContext()?.setPointerGraceIntent(null)})})),B(()=>U(r.registerTriggerId(s.id))),U(()=>{i()}),v(de,j({as:"div",ref(x){let w=De($=>{r.setTriggerRef($),t=$},s.ref);typeof w=="function"&&w(x)},get id(){return s.id},role:"menuitem",get tabIndex(){return h.tabIndex()},"aria-haspopup":"true",get"aria-expanded"(){return r.isOpen()},get"aria-controls"(){return M(()=>!!r.isOpen())()?r.contentId():void 0},get"aria-disabled"(){return s.disabled},get"data-key"(){return h.dataKey()},get"data-highlighted"(){return f()?"":void 0},get"data-disabled"(){return s.disabled?"":void 0},get onPointerDown(){return be([s.onPointerDown,h.onPointerDown])},get onPointerUp(){return be([s.onPointerUp,h.onPointerUp])},get onClick(){return be([p,h.onClick])},get onKeyDown(){return be([b,h.onKeyDown])},get onMouseDown(){return be([s.onMouseDown,h.onMouseDown])},get onFocus(){return be([s.onFocus,h.onFocus])},onPointerMove:m,onPointerLeave:y},()=>r.dataset(),l))}function du(e){let t=Kn(),n=`menu-${Fe()}`,r=Q({id:n,modal:!0},e),[o,s]=X(r,["id","modal","preventScroll","forceMount","open","defaultOpen","onOpenChange","value","orientation"]),l=Hi({open:()=>o.open,defaultOpen:()=>o.defaultOpen,onOpenChange:i=>o.onOpenChange?.(i)}),a={isModal:()=>o.modal??!0,preventScroll:()=>o.preventScroll??a.isModal(),forceMount:()=>o.forceMount??!1,generateId:un(()=>o.id),value:()=>o.value,orientation:()=>o.orientation??t?.orientation()??"horizontal"};return v(ls.Provider,{value:a,get children(){return v(Cs,j({get open(){return l.isOpen()},get onOpenChange(){return l.setIsOpen}},s))}})}var fu={};_n(fu,{Root:()=>Bn,Separator:()=>gu});function Bn(e){let t,n=Q({orientation:"horizontal"},e),[r,o]=X(n,["ref","orientation"]),s=qn(()=>t,()=>"hr");return v(de,j({as:"hr",ref(l){let a=De(i=>t=i,r.ref);typeof a=="function"&&a(l)},get role(){return s()!=="hr"?"separator":void 0},get"aria-orientation"(){return r.orientation==="vertical"?"vertical":void 0},get"data-orientation"(){return r.orientation}},o))}var gu=Bn,he={};_n(he,{Arrow:()=>Sr,CheckboxItem:()=>as,Content:()=>Ms,DropdownMenu:()=>hu,Group:()=>Mr,GroupLabel:()=>gs,Icon:()=>hs,Item:()=>vs,ItemDescription:()=>ps,ItemIndicator:()=>ms,ItemLabel:()=>ys,Portal:()=>bs,RadioGroup:()=>ws,RadioItem:()=>$s,Root:()=>Ds,Separator:()=>Bn,Sub:()=>Ss,SubContent:()=>ks,SubTrigger:()=>Es,Trigger:()=>cs});function Ms(e){let t=tt(),n=gt(),[r,o]=X(e,["onCloseAutoFocus","onInteractOutside"]),s=!1;return v(ou,j({onCloseAutoFocus:i=>{r.onCloseAutoFocus?.(i),s||ke(n.triggerRef()),s=!1,i.preventDefault()},onInteractOutside:i=>{r.onInteractOutside?.(i),(!t.isModal()||i.detail.isContextMenu)&&(s=!0)}},o))}function Ds(e){let t=`dropdownmenu-${Fe()}`,n=Q({id:t},e);return v(du,n)}var hu=Object.assign(Ds,{Arrow:Sr,CheckboxItem:as,Content:Ms,Group:Mr,GroupLabel:gs,Icon:hs,Item:vs,ItemDescription:ps,ItemIndicator:ms,ItemLabel:ys,Portal:bs,RadioGroup:ws,RadioItem:$s,Separator:Bn,Sub:Ss,SubContent:ks,SubTrigger:Es,Trigger:cs}),C={colors:{inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000000",white:"#ffffff",neutral:{50:"#f9fafb",100:"#f2f4f7",200:"#eaecf0",300:"#d0d5dd",400:"#98a2b3",500:"#667085",600:"#475467",700:"#344054",800:"#1d2939",900:"#101828"},darkGray:{50:"#525c7a",100:"#49536e",200:"#414962",300:"#394056",400:"#313749",500:"#292e3d",600:"#212530",700:"#191c24",800:"#111318",900:"#0b0d10"},gray:{50:"#f9fafb",100:"#f2f4f7",200:"#eaecf0",300:"#d0d5dd",400:"#98a2b3",500:"#667085",600:"#475467",700:"#344054",800:"#1d2939",900:"#101828"},blue:{25:"#F5FAFF",50:"#EFF8FF",100:"#D1E9FF",200:"#B2DDFF",300:"#84CAFF",400:"#53B1FD",500:"#2E90FA",600:"#1570EF",700:"#175CD3",800:"#1849A9",900:"#194185"},green:{25:"#F6FEF9",50:"#ECFDF3",100:"#D1FADF",200:"#A6F4C5",300:"#6CE9A6",400:"#32D583",500:"#12B76A",600:"#039855",700:"#027A48",800:"#05603A",900:"#054F31"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"},yellow:{25:"#FFFCF5",50:"#FFFAEB",100:"#FEF0C7",200:"#FEDF89",300:"#FEC84B",400:"#FDB022",500:"#F79009",600:"#DC6803",700:"#B54708",800:"#93370D",900:"#7A2E0E"},purple:{25:"#FAFAFF",50:"#F4F3FF",100:"#EBE9FE",200:"#D9D6FE",300:"#BDB4FE",400:"#9B8AFB",500:"#7A5AF8",600:"#6938EF",700:"#5925DC",800:"#4A1FB8",900:"#3E1C96"},teal:{25:"#F6FEFC",50:"#F0FDF9",100:"#CCFBEF",200:"#99F6E0",300:"#5FE9D0",400:"#2ED3B7",500:"#15B79E",600:"#0E9384",700:"#107569",800:"#125D56",900:"#134E48"},pink:{25:"#fdf2f8",50:"#fce7f3",100:"#fbcfe8",200:"#f9a8d4",300:"#f472b6",400:"#ec4899",500:"#db2777",600:"#be185d",700:"#9d174d",800:"#831843",900:"#500724"},cyan:{25:"#ecfeff",50:"#cffafe",100:"#a5f3fc",200:"#67e8f9",300:"#22d3ee",400:"#06b6d4",500:"#0891b2",600:"#0e7490",700:"#155e75",800:"#164e63",900:"#083344"}},alpha:{100:"ff",90:"e5",80:"cc",70:"b3",60:"99",50:"80",40:"66",30:"4d",20:"33",10:"1a",0:"00"},font:{size:{"2xs":"calc(var(--tsqd-font-size) * 0.625)",xs:"calc(var(--tsqd-font-size) * 0.75)",sm:"calc(var(--tsqd-font-size) * 0.875)",md:"var(--tsqd-font-size)",lg:"calc(var(--tsqd-font-size) * 1.125)",xl:"calc(var(--tsqd-font-size) * 1.25)","2xl":"calc(var(--tsqd-font-size) * 1.5)","3xl":"calc(var(--tsqd-font-size) * 1.875)","4xl":"calc(var(--tsqd-font-size) * 2.25)","5xl":"calc(var(--tsqd-font-size) * 3)","6xl":"calc(var(--tsqd-font-size) * 3.75)","7xl":"calc(var(--tsqd-font-size) * 4.5)","8xl":"calc(var(--tsqd-font-size) * 6)","9xl":"calc(var(--tsqd-font-size) * 8)"},lineHeight:{xs:"calc(var(--tsqd-font-size) * 1)",sm:"calc(var(--tsqd-font-size) * 1.25)",md:"calc(var(--tsqd-font-size) * 1.5)",lg:"calc(var(--tsqd-font-size) * 1.75)",xl:"calc(var(--tsqd-font-size) * 2)","2xl":"calc(var(--tsqd-font-size) * 2.25)","3xl":"calc(var(--tsqd-font-size) * 2.5)","4xl":"calc(var(--tsqd-font-size) * 2.75)","5xl":"calc(var(--tsqd-font-size) * 3)","6xl":"calc(var(--tsqd-font-size) * 3.25)","7xl":"calc(var(--tsqd-font-size) * 3.5)","8xl":"calc(var(--tsqd-font-size) * 3.75)","9xl":"calc(var(--tsqd-font-size) * 4)"},weight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"}},breakpoints:{xs:"320px",sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},border:{radius:{none:"0px",xs:"calc(var(--tsqd-font-size) * 0.125)",sm:"calc(var(--tsqd-font-size) * 0.25)",md:"calc(var(--tsqd-font-size) * 0.375)",lg:"calc(var(--tsqd-font-size) * 0.5)",xl:"calc(var(--tsqd-font-size) * 0.75)","2xl":"calc(var(--tsqd-font-size) * 1)","3xl":"calc(var(--tsqd-font-size) * 1.5)",full:"9999px"}},size:{0:"0px",.25:"calc(var(--tsqd-font-size) * 0.0625)",.5:"calc(var(--tsqd-font-size) * 0.125)",1:"calc(var(--tsqd-font-size) * 0.25)",1.5:"calc(var(--tsqd-font-size) * 0.375)",2:"calc(var(--tsqd-font-size) * 0.5)",2.5:"calc(var(--tsqd-font-size) * 0.625)",3:"calc(var(--tsqd-font-size) * 0.75)",3.5:"calc(var(--tsqd-font-size) * 0.875)",4:"calc(var(--tsqd-font-size) * 1)",4.5:"calc(var(--tsqd-font-size) * 1.125)",5:"calc(var(--tsqd-font-size) * 1.25)",5.5:"calc(var(--tsqd-font-size) * 1.375)",6:"calc(var(--tsqd-font-size) * 1.5)",6.5:"calc(var(--tsqd-font-size) * 1.625)",7:"calc(var(--tsqd-font-size) * 1.75)",8:"calc(var(--tsqd-font-size) * 2)",9:"calc(var(--tsqd-font-size) * 2.25)",10:"calc(var(--tsqd-font-size) * 2.5)",11:"calc(var(--tsqd-font-size) * 2.75)",12:"calc(var(--tsqd-font-size) * 3)",14:"calc(var(--tsqd-font-size) * 3.5)",16:"calc(var(--tsqd-font-size) * 4)",20:"calc(var(--tsqd-font-size) * 5)",24:"calc(var(--tsqd-font-size) * 6)",28:"calc(var(--tsqd-font-size) * 7)",32:"calc(var(--tsqd-font-size) * 8)",36:"calc(var(--tsqd-font-size) * 9)",40:"calc(var(--tsqd-font-size) * 10)",44:"calc(var(--tsqd-font-size) * 11)",48:"calc(var(--tsqd-font-size) * 12)",52:"calc(var(--tsqd-font-size) * 13)",56:"calc(var(--tsqd-font-size) * 14)",60:"calc(var(--tsqd-font-size) * 15)",64:"calc(var(--tsqd-font-size) * 16)",72:"calc(var(--tsqd-font-size) * 18)",80:"calc(var(--tsqd-font-size) * 20)",96:"calc(var(--tsqd-font-size) * 24)"},shadow:{xs:(e="rgb(0 0 0 / 0.1)")=>"0 1px 2px 0 rgb(0 0 0 / 0.05)",sm:(e="rgb(0 0 0 / 0.1)")=>`0 1px 3px 0 ${e}, 0 1px 2px -1px ${e}`,md:(e="rgb(0 0 0 / 0.1)")=>`0 4px 6px -1px ${e}, 0 2px 4px -2px ${e}`,lg:(e="rgb(0 0 0 / 0.1)")=>`0 10px 15px -3px ${e}, 0 4px 6px -4px ${e}`,xl:(e="rgb(0 0 0 / 0.1)")=>`0 20px 25px -5px ${e}, 0 8px 10px -6px ${e}`,"2xl":(e="rgb(0 0 0 / 0.25)")=>`0 25px 50px -12px ${e}`,inner:(e="rgb(0 0 0 / 0.05)")=>`inset 0 2px 4px 0 ${e}`,none:()=>"none"},zIndices:{hide:-1,auto:"auto",base:0,docked:10,dropdown:1e3,sticky:1100,banner:1200,overlay:1300,modal:1400,popover:1500,skipLink:1600,toast:1700,tooltip:1800}},vu=_('<svg width=14 height=14 viewBox="0 0 14 14"fill=none xmlns=http://www.w3.org/2000/svg><path d="M13 13L9.00007 9M10.3333 5.66667C10.3333 8.244 8.244 10.3333 5.66667 10.3333C3.08934 10.3333 1 8.244 1 5.66667C1 3.08934 3.08934 1 5.66667 1C8.244 1 10.3333 3.08934 10.3333 5.66667Z"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),pu=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9 3H15M3 6H21M19 6L18.2987 16.5193C18.1935 18.0975 18.1409 18.8867 17.8 19.485C17.4999 20.0118 17.0472 20.4353 16.5017 20.6997C15.882 21 15.0911 21 13.5093 21H10.4907C8.90891 21 8.11803 21 7.49834 20.6997C6.95276 20.4353 6.50009 20.0118 6.19998 19.485C5.85911 18.8867 5.8065 18.0975 5.70129 16.5193L5 6M10 10.5V15.5M14 10.5V15.5"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),mu=_('<svg width=10 height=6 viewBox="0 0 10 6"fill=none xmlns=http://www.w3.org/2000/svg><path d="M1 1L5 5L9 1"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),yu=_('<svg width=12 height=12 viewBox="0 0 16 16"fill=none xmlns=http://www.w3.org/2000/svg><path d="M8 13.3333V2.66667M8 2.66667L4 6.66667M8 2.66667L12 6.66667"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),Dr=_('<svg width=12 height=12 viewBox="0 0 16 16"fill=none xmlns=http://www.w3.org/2000/svg><path d="M8 2.66667V13.3333M8 13.3333L4 9.33333M8 13.3333L12 9.33333"stroke=currentColor stroke-width=1.66667 stroke-linecap=round stroke-linejoin=round>'),bu=_('<svg viewBox="0 0 24 24"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d="M12 2v2m0 16v2M4 12H2m4.314-5.686L4.9 4.9m12.786 1.414L19.1 4.9M6.314 17.69 4.9 19.104m12.786-1.414 1.414 1.414M22 12h-2m-3 0a5 5 0 1 1-10 0 5 5 0 0 1 10 0Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),xu=_('<svg viewBox="0 0 24 24"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d="M22 15.844a10.424 10.424 0 0 1-4.306.925c-5.779 0-10.463-4.684-10.463-10.462 0-1.536.33-2.994.925-4.307A10.464 10.464 0 0 0 2 11.538C2 17.316 6.684 22 12.462 22c4.243 0 7.896-2.526 9.538-6.156Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),wu=_('<svg viewBox="0 0 24 24"height=12 width=12 fill=none xmlns=http://www.w3.org/2000/svg><path d="M8 21h8m-4-4v4m-5.2-4h10.4c1.68 0 2.52 0 3.162-.327a3 3 0 0 0 1.311-1.311C22 14.72 22 13.88 22 12.2V7.8c0-1.68 0-2.52-.327-3.162a3 3 0 0 0-1.311-1.311C19.72 3 18.88 3 17.2 3H6.8c-1.68 0-2.52 0-3.162.327a3 3 0 0 0-1.311 1.311C2 5.28 2 6.12 2 7.8v4.4c0 1.68 0 2.52.327 3.162a3 3 0 0 0 1.311 1.311C4.28 17 5.12 17 6.8 17Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),$u=_('<svg stroke=currentColor fill=currentColor stroke-width=0 viewBox="0 0 24 24"height=1em width=1em xmlns=http://www.w3.org/2000/svg><path fill=none d="M0 0h24v24H0z"></path><path d="M1 9l2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9zm8 8l3 3 3-3a4.237 4.237 0 00-6 0zm-4-4l2 2a7.074 7.074 0 0110 0l2-2C15.14 9.14 8.87 9.14 5 13z">'),Cu=_('<svg stroke-width=0 viewBox="0 0 24 24"height=1em width=1em xmlns=http://www.w3.org/2000/svg><path fill=none d="M24 .01c0-.01 0-.01 0 0L0 0v24h24V.01zM0 0h24v24H0V0zm0 0h24v24H0V0z"></path><path d="M22.99 9C19.15 5.16 13.8 3.76 8.84 4.78l2.52 2.52c3.47-.17 6.99 1.05 9.63 3.7l2-2zm-4 4a9.793 9.793 0 00-4.49-2.56l3.53 3.53.96-.97zM2 3.05L5.07 6.1C3.6 6.82 2.22 7.78 1 9l1.99 2c1.24-1.24 2.67-2.16 4.2-2.77l2.24 2.24A9.684 9.684 0 005 13v.01L6.99 15a7.042 7.042 0 014.92-2.06L18.98 20l1.27-1.26L3.29 1.79 2 3.05zM9 17l3 3 3-3a4.237 4.237 0 00-6 0z">'),Su=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9.3951 19.3711L9.97955 20.6856C10.1533 21.0768 10.4368 21.4093 10.7958 21.6426C11.1547 21.8759 11.5737 22.0001 12.0018 22C12.4299 22.0001 12.8488 21.8759 13.2078 21.6426C13.5667 21.4093 13.8503 21.0768 14.024 20.6856L14.6084 19.3711C14.8165 18.9047 15.1664 18.5159 15.6084 18.26C16.0532 18.0034 16.5678 17.8941 17.0784 17.9478L18.5084 18.1C18.9341 18.145 19.3637 18.0656 19.7451 17.8713C20.1265 17.6771 20.4434 17.3763 20.6573 17.0056C20.8715 16.635 20.9735 16.2103 20.9511 15.7829C20.9286 15.3555 20.7825 14.9438 20.5307 14.5978L19.684 13.4344C19.3825 13.0171 19.2214 12.5148 19.224 12C19.2239 11.4866 19.3865 10.9864 19.6884 10.5711L20.5351 9.40778C20.787 9.06175 20.933 8.65007 20.9555 8.22267C20.978 7.79528 20.8759 7.37054 20.6618 7C20.4479 6.62923 20.131 6.32849 19.7496 6.13423C19.3681 5.93997 18.9386 5.86053 18.5129 5.90556L17.0829 6.05778C16.5722 6.11141 16.0577 6.00212 15.6129 5.74556C15.17 5.48825 14.82 5.09736 14.6129 4.62889L14.024 3.31444C13.8503 2.92317 13.5667 2.59072 13.2078 2.3574C12.8488 2.12408 12.4299 1.99993 12.0018 2C11.5737 1.99993 11.1547 2.12408 10.7958 2.3574C10.4368 2.59072 10.1533 2.92317 9.97955 3.31444L9.3951 4.62889C9.18803 5.09736 8.83798 5.48825 8.3951 5.74556C7.95032 6.00212 7.43577 6.11141 6.9251 6.05778L5.49066 5.90556C5.06499 5.86053 4.6354 5.93997 4.25397 6.13423C3.87255 6.32849 3.55567 6.62923 3.34177 7C3.12759 7.37054 3.02555 7.79528 3.04804 8.22267C3.07052 8.65007 3.21656 9.06175 3.46844 9.40778L4.3151 10.5711C4.61704 10.9864 4.77964 11.4866 4.77955 12C4.77964 12.5134 4.61704 13.0137 4.3151 13.4289L3.46844 14.5922C3.21656 14.9382 3.07052 15.3499 3.04804 15.7773C3.02555 16.2047 3.12759 16.6295 3.34177 17C3.55589 17.3706 3.8728 17.6712 4.25417 17.8654C4.63554 18.0596 5.06502 18.1392 5.49066 18.0944L6.92066 17.9422C7.43133 17.8886 7.94587 17.9979 8.39066 18.2544C8.83519 18.511 9.18687 18.902 9.3951 19.3711Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round></path><path d="M12 15C13.6568 15 15 13.6569 15 12C15 10.3431 13.6568 9 12 9C10.3431 9 8.99998 10.3431 8.99998 12C8.99998 13.6569 10.3431 15 12 15Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),ku=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M16 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V8M11.5 12.5L17 7M17 7H12M17 7V12M6.2 21H8.8C9.9201 21 10.4802 21 10.908 20.782C11.2843 20.5903 11.5903 20.2843 11.782 19.908C12 19.4802 12 18.9201 12 17.8V15.2C12 14.0799 12 13.5198 11.782 13.092C11.5903 12.7157 11.2843 12.4097 10.908 12.218C10.4802 12 9.92011 12 8.8 12H6.2C5.0799 12 4.51984 12 4.09202 12.218C3.71569 12.4097 3.40973 12.7157 3.21799 13.092C3 13.5198 3 14.0799 3 15.2V17.8C3 18.9201 3 19.4802 3.21799 19.908C3.40973 20.2843 3.71569 20.5903 4.09202 20.782C4.51984 21 5.07989 21 6.2 21Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),Eu=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path class=copier d="M8 8V5.2C8 4.0799 8 3.51984 8.21799 3.09202C8.40973 2.71569 8.71569 2.40973 9.09202 2.21799C9.51984 2 10.0799 2 11.2 2H18.8C19.9201 2 20.4802 2 20.908 2.21799C21.2843 2.40973 21.5903 2.71569 21.782 3.09202C22 3.51984 22 4.0799 22 5.2V12.8C22 13.9201 22 14.4802 21.782 14.908C21.5903 15.2843 21.2843 15.5903 20.908 15.782C20.4802 16 19.9201 16 18.8 16H16M5.2 22H12.8C13.9201 22 14.4802 22 14.908 21.782C15.2843 21.5903 15.5903 21.2843 15.782 20.908C16 20.4802 16 19.9201 16 18.8V11.2C16 10.0799 16 9.51984 15.782 9.09202C15.5903 8.71569 15.2843 8.40973 14.908 8.21799C14.4802 8 13.9201 8 12.8 8H5.2C4.0799 8 3.51984 8 3.09202 8.21799C2.71569 8.40973 2.40973 8.71569 2.21799 9.09202C2 9.51984 2 10.0799 2 11.2V18.8C2 19.9201 2 20.4802 2.21799 20.908C2.40973 21.2843 2.71569 21.5903 3.09202 21.782C3.51984 22 4.07989 22 5.2 22Z"stroke-width=2 stroke-linecap=round stroke-linejoin=round stroke=currentColor>'),Mu=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M2.5 21.4998L8.04927 19.3655C8.40421 19.229 8.58168 19.1607 8.74772 19.0716C8.8952 18.9924 9.0358 18.901 9.16804 18.7984C9.31692 18.6829 9.45137 18.5484 9.72028 18.2795L21 6.99982C22.1046 5.89525 22.1046 4.10438 21 2.99981C19.8955 1.89525 18.1046 1.89524 17 2.99981L5.72028 14.2795C5.45138 14.5484 5.31692 14.6829 5.20139 14.8318C5.09877 14.964 5.0074 15.1046 4.92823 15.2521C4.83911 15.4181 4.77085 15.5956 4.63433 15.9506L2.5 21.4998ZM2.5 21.4998L4.55812 16.1488C4.7054 15.7659 4.77903 15.5744 4.90534 15.4867C5.01572 15.4101 5.1523 15.3811 5.2843 15.4063C5.43533 15.4351 5.58038 15.5802 5.87048 15.8703L8.12957 18.1294C8.41967 18.4195 8.56472 18.5645 8.59356 18.7155C8.61877 18.8475 8.58979 18.9841 8.51314 19.0945C8.42545 19.2208 8.23399 19.2944 7.85107 19.4417L2.5 21.4998Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),As=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M7.5 12L10.5 15L16.5 9M7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21Z"stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),Du=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9 9L15 15M15 9L9 15M7.8 21H16.2C17.8802 21 18.7202 21 19.362 20.673C19.9265 20.3854 20.3854 19.9265 20.673 19.362C21 18.7202 21 17.8802 21 16.2V7.8C21 6.11984 21 5.27976 20.673 4.63803C20.3854 4.07354 19.9265 3.6146 19.362 3.32698C18.7202 3 17.8802 3 16.2 3H7.8C6.11984 3 5.27976 3 4.63803 3.32698C4.07354 3.6146 3.6146 4.07354 3.32698 4.63803C3 5.27976 3 6.11984 3 7.8V16.2C3 17.8802 3 18.7202 3.32698 19.362C3.6146 19.9265 4.07354 20.3854 4.63803 20.673C5.27976 21 6.11984 21 7.8 21Z"stroke=#F04438 stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),Au=_('<svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 xmlns=http://www.w3.org/2000/svg><rect class=list width=20 height=20 y=2 x=2 rx=2></rect><line class=list-item y1=7 y2=7 x1=6 x2=18></line><line class=list-item y2=12 y1=12 x1=6 x2=18></line><line class=list-item y1=17 y2=17 x1=6 x2=18>'),Tu=_('<svg viewBox="0 0 24 24"height=20 width=20 fill=none xmlns=http://www.w3.org/2000/svg><path d="M3 7.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C5.28 3 6.12 3 7.8 3h8.4c1.68 0 2.52 0 3.162.327a3 3 0 0 1 1.311 1.311C21 5.28 21 6.12 21 7.8v8.4c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C18.72 21 17.88 21 16.2 21H7.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C3 18.72 3 17.88 3 16.2V7.8Z"stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),Fu=_('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M7.5 12L10.5 15L16.5 9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),Iu=_('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M12 2V6M12 18V22M6 12H2M22 12H18M19.0784 19.0784L16.25 16.25M19.0784 4.99994L16.25 7.82837M4.92157 19.0784L7.75 16.25M4.92157 4.99994L7.75 7.82837"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round></path><animateTransform attributeName=transform attributeType=XML type=rotate from=0 to=360 dur=2s repeatCount=indefinite>'),Pu=_('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M15 9L9 15M9 9L15 15M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),Lu=_('<svg width=14 height=14 viewBox="0 0 24 24"fill=none xmlns=http://www.w3.org/2000/svg><path d="M9.5 15V9M14.5 15V9M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),Ou=_('<svg version=1.0 viewBox="0 0 633 633"><linearGradient x1=-666.45 x2=-666.45 y1=163.28 y2=163.99 gradientTransform="matrix(633 0 0 633 422177 -103358)"gradientUnits=userSpaceOnUse><stop stop-color=#6BDAFF offset=0></stop><stop stop-color=#F9FFB5 offset=.32></stop><stop stop-color=#FFA770 offset=.71></stop><stop stop-color=#FF7373 offset=1></stop></linearGradient><circle cx=316.5 cy=316.5 r=316.5></circle><defs><filter x=-137.5 y=412 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=-137.5 y=412 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=610.5 rx=214.5 ry=186 fill=#015064 stroke=#00CFE2 stroke-width=25></ellipse></g><defs><filter x=316.5 y=412 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=316.5 y=412 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=610.5 rx=214.5 ry=186 fill=#015064 stroke=#00CFE2 stroke-width=25></ellipse></g><defs><filter x=-137.5 y=450 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=-137.5 y=450 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=648.5 rx=214.5 ry=186 fill=#015064 stroke=#00A8B8 stroke-width=25></ellipse></g><defs><filter x=316.5 y=450 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=316.5 y=450 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=648.5 rx=214.5 ry=186 fill=#015064 stroke=#00A8B8 stroke-width=25></ellipse></g><defs><filter x=-137.5 y=486 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=-137.5 y=486 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=89.5 cy=684.5 rx=214.5 ry=186 fill=#015064 stroke=#007782 stroke-width=25></ellipse></g><defs><filter x=316.5 y=486 width=454 height=396.9 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=316.5 y=486 width=454 height=396.9 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><ellipse cx=543.5 cy=684.5 rx=214.5 ry=186 fill=#015064 stroke=#007782 stroke-width=25></ellipse></g><defs><filter x=272.2 y=308 width=176.9 height=129.3 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=272.2 y=308 width=176.9 height=129.3 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><line x1=436 x2=431 y1=403.2 y2=431.8 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><line x1=291 x2=280 y1=341.5 y2=403.5 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><line x1=332.9 x2=328.6 y1=384.1 y2=411.2 fill=none stroke=#000 stroke-linecap=round stroke-linejoin=bevel stroke-width=11></line><linearGradient x1=-670.75 x2=-671.59 y1=164.4 y2=164.49 gradientTransform="matrix(-184.16 -32.472 -11.461 64.997 -121359 -32126)"gradientUnits=userSpaceOnUse><stop stop-color=#EE2700 offset=0></stop><stop stop-color=#FF008E offset=1></stop></linearGradient><path d="m344.1 363 97.7 17.2c5.8 2.1 8.2 6.1 7.1 12.1s-4.7 9.2-11 9.9l-106-18.7-57.5-59.2c-3.2-4.8-2.9-9.1 0.8-12.8s8.3-4.4 13.7-2.1l55.2 53.6z"clip-rule=evenodd fill-rule=evenodd></path><line x1=428.2 x2=429.1 y1=384.5 y2=378 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=395.2 x2=396.1 y1=379.5 y2=373 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=362.2 x2=363.1 y1=373.5 y2=367.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=324.2 x2=328.4 y1=351.3 y2=347.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line><line x1=303.2 x2=307.4 y1=331.3 y2=327.4 fill=none stroke=#fff stroke-linecap=round stroke-linejoin=bevel stroke-width=7></line></g><defs><filter x=73.2 y=113.8 width=280.6 height=317.4 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=73.2 y=113.8 width=280.6 height=317.4 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-672.16 x2=-672.16 y1=165.03 y2=166.03 gradientTransform="matrix(-100.18 48.861 97.976 200.88 -83342 -93.059)"gradientUnits=userSpaceOnUse><stop stop-color=#A17500 offset=0></stop><stop stop-color=#5D2100 offset=1></stop></linearGradient><path d="m192.3 203c8.1 37.3 14 73.6 17.8 109.1 3.8 35.4 2.8 75.1-3 119.2l61.2-16.7c-15.6-59-25.2-97.9-28.6-116.6s-10.8-51.9-22.1-99.6l-25.3 4.6"clip-rule=evenodd fill-rule=evenodd></path><g stroke=#2F8A00><linearGradient x1=-660.23 x2=-660.23 y1=166.72 y2=167.72 gradientTransform="matrix(92.683 4.8573 -2.0259 38.657 61680 -3088.6)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m195 183.9s-12.6-22.1-36.5-29.9c-15.9-5.2-34.4-1.5-55.5 11.1 15.9 14.3 29.5 22.6 40.7 24.9 16.8 3.6 51.3-6.1 51.3-6.1z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-661.36 x2=-661.36 y1=164.18 y2=165.18 gradientTransform="matrix(110 5.7648 -6.3599 121.35 73933 -15933)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5s-47.5-8.5-83.2 15.7c-23.8 16.2-34.3 49.3-31.6 99.4 30.3-27.8 52.1-48.5 65.2-61.9 19.8-20.2 49.6-53.2 49.6-53.2z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-656.79 x2=-656.79 y1=165.15 y2=166.15 gradientTransform="matrix(62.954 3.2993 -3.5023 66.828 42156 -8754.1)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m195 183.9c-0.8-21.9 6-38 20.6-48.2s29.8-15.4 45.5-15.3c-6.1 21.4-14.5 35.8-25.2 43.4s-24.4 14.2-40.9 20.1z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-663.07 x2=-663.07 y1=165.44 y2=166.44 gradientTransform="matrix(152.47 7.9907 -3.0936 59.029 101884 -4318.7)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5c31.9-30 64.1-39.7 96.7-29s50.8 30.4 54.6 59.1c-35.2-5.5-60.4-9.6-75.8-12.1-15.3-2.6-40.5-8.6-75.5-18z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-662.57 x2=-662.57 y1=164.44 y2=165.44 gradientTransform="matrix(136.46 7.1517 -5.2163 99.533 91536 -11442)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5c35.8-7.6 65.6-0.2 89.2 22s37.7 49 42.3 80.3c-39.8-9.7-68.3-23.8-85.5-42.4s-32.5-38.5-46-59.9z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><linearGradient x1=-656.43 x2=-656.43 y1=163.86 y2=164.86 gradientTransform="matrix(60.866 3.1899 -8.7773 167.48 41560 -25168)"gradientUnits=userSpaceOnUse><stop stop-color=#2F8A00 offset=0></stop><stop stop-color=#90FF57 offset=1></stop></linearGradient><path d="m194.9 184.5c-33.6 13.8-53.6 35.7-60.1 65.6s-3.6 63.1 8.7 99.6c27.4-40.3 43.2-69.6 47.4-88s5.6-44.1 4-77.2z"clip-rule=evenodd fill-rule=evenodd stroke-width=13></path><path d="m196.5 182.3c-14.8 21.6-25.1 41.4-30.8 59.4s-9.5 33-11.1 45.1"fill=none stroke-linecap=round stroke-width=8></path><path d="m194.9 185.7c-24.4 1.7-43.8 9-58.1 21.8s-24.7 25.4-31.3 37.8"fill=none stroke-linecap=round stroke-width=8></path><path d="m204.5 176.4c29.7-6.7 52-8.4 67-5.1s26.9 8.6 35.8 15.9"fill=none stroke-linecap=round stroke-width=8></path><path d="m196.5 181.4c20.3 9.9 38.2 20.5 53.9 31.9s27.4 22.1 35.1 32"fill=none stroke-linecap=round stroke-width=8></path></g></g><defs><filter x=50.5 y=399 width=532 height=633 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=50.5 y=399 width=532 height=633 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-666.06 x2=-666.23 y1=163.36 y2=163.75 gradientTransform="matrix(532 0 0 633 354760 -102959)"gradientUnits=userSpaceOnUse><stop stop-color=#FFF400 offset=0></stop><stop stop-color=#3C8700 offset=1></stop></linearGradient><ellipse cx=316.5 cy=715.5 rx=266 ry=316.5></ellipse></g><defs><filter x=391 y=-24 width=288 height=283 filterUnits=userSpaceOnUse><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter></defs><mask x=391 y=-24 width=288 height=283 maskUnits=userSpaceOnUse><g><circle cx=316.5 cy=316.5 r=316.5 fill=#fff></circle></g></mask><g><linearGradient x1=-664.56 x2=-664.56 y1=163.79 y2=164.79 gradientTransform="matrix(227 0 0 227 151421 -37204)"gradientUnits=userSpaceOnUse><stop stop-color=#FFDF00 offset=0></stop><stop stop-color=#FF9D00 offset=1></stop></linearGradient><circle cx=565.5 cy=89.5 r=113.5></circle><linearGradient x1=-644.5 x2=-645.77 y1=342 y2=342 gradientTransform="matrix(30 0 0 1 19770 -253)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=427 x2=397 y1=89 y2=89 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-641.56 x2=-642.83 y1=196.02 y2=196.07 gradientTransform="matrix(26.5 0 0 5.5 17439 -1025.5)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=430.5 x2=404 y1=55.5 y2=50 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-643.73 x2=-645 y1=185.83 y2=185.9 gradientTransform="matrix(29 0 0 8 19107 -1361)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=431 x2=402 y1=122 y2=130 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-638.94 x2=-640.22 y1=177.09 y2=177.39 gradientTransform="matrix(24 0 0 13 15783 -2145)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=442 x2=418 y1=153 y2=166 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-633.42 x2=-634.7 y1=172.41 y2=173.31 gradientTransform="matrix(20 0 0 19 13137 -3096)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=464 x2=444 y1=180 y2=199 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-619.05 x2=-619.52 y1=170.82 y2=171.82 gradientTransform="matrix(13.83 0 0 22.85 9050 -3703.4)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=491.4 x2=477.5 y1=203 y2=225.9 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=-578.5 x2=-578.63 y1=170.31 y2=171.31 gradientTransform="matrix(7.5 0 0 24.5 4860 -3953)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=524.5 x2=517 y1=219.5 y2=244 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12></line><linearGradient x1=666.5 x2=666.5 y1=170.31 y2=171.31 gradientTransform="matrix(.5 0 0 24.5 231.5 -3944)"gradientUnits=userSpaceOnUse><stop stop-color=#FFA400 offset=0></stop><stop stop-color=#FF5E00 offset=1></stop></linearGradient><line x1=564.5 x2=565 y1=228.5 y2=253 fill=none stroke-linecap=round stroke-linejoin=bevel stroke-width=12>');function qu(){return vu()}function Ts(){return pu()}function on(){return mu()}function Qo(){return yu()}function Yo(){return Dr()}function _u(){return(()=>{var e=Dr();return e.style.setProperty("transform","rotate(90deg)"),e})()}function zu(){return(()=>{var e=Dr();return e.style.setProperty("transform","rotate(-90deg)"),e})()}function Ru(){return bu()}function Ku(){return xu()}function Bu(){return wu()}function Nu(){return $u()}function Uu(){return Cu()}function Gu(){return Su()}function Vu(){return ku()}function Hu(){return Eu()}function ju(){return Mu()}function Wu(e){return(()=>{var t=As(),n=t.firstChild;return N(()=>A(n,"stroke",e.theme==="dark"?"#12B76A":"#027A48")),t})()}function Qu(){return Du()}function Yu(){return Au()}function Xu(e){return[v(R,{get when(){return e.checked},get children(){var t=As(),n=t.firstChild;return N(()=>A(n,"stroke",e.theme==="dark"?"#9B8AFB":"#6938EF")),t}}),v(R,{get when(){return!e.checked},get children(){var t=Tu(),n=t.firstChild;return N(()=>A(n,"stroke",e.theme==="dark"?"#9B8AFB":"#6938EF")),t}})]}function Zu(){return Fu()}function Ju(){return Iu()}function ed(){return Pu()}function td(){return Lu()}function Xo(){let e=Fe();return(()=>{var t=Ou(),n=t.firstChild,r=n.nextSibling,o=r.nextSibling,s=o.firstChild,l=o.nextSibling,a=l.firstChild,i=l.nextSibling,c=i.nextSibling,u=c.firstChild,d=c.nextSibling,g=d.firstChild,f=d.nextSibling,h=f.nextSibling,p=h.firstChild,m=h.nextSibling,y=m.firstChild,b=m.nextSibling,x=b.nextSibling,w=x.firstChild,$=x.nextSibling,L=$.firstChild,F=$.nextSibling,P=F.nextSibling,S=P.firstChild,q=P.nextSibling,H=q.firstChild,G=q.nextSibling,te=G.nextSibling,J=te.firstChild,le=te.nextSibling,oe=le.firstChild,ne=le.nextSibling,ie=ne.nextSibling,ae=ie.firstChild,ve=ie.nextSibling,Ae=ve.firstChild,ge=ve.nextSibling,Ee=ge.firstChild,D=Ee.nextSibling,fe=D.nextSibling,Y=fe.nextSibling,ht=Y.nextSibling,V=ge.nextSibling,Ge=V.firstChild,$e=V.nextSibling,Ot=$e.firstChild,qe=$e.nextSibling,vt=qe.firstChild,St=vt.nextSibling,nt=St.nextSibling,Ye=nt.firstChild,rt=Ye.nextSibling,I=rt.nextSibling,re=I.nextSibling,Me=re.nextSibling,se=Me.nextSibling,ee=se.nextSibling,ce=ee.nextSibling,pe=ce.nextSibling,Z=pe.nextSibling,ot=Z.nextSibling,it=ot.nextSibling,Ve=qe.nextSibling,kt=Ve.firstChild,st=Ve.nextSibling,Et=st.firstChild,lt=st.nextSibling,pt=lt.firstChild,pn=pt.nextSibling,Wt=lt.nextSibling,mn=Wt.firstChild,qt=Wt.nextSibling,yn=qt.firstChild,Qt=qt.nextSibling,Yt=Qt.firstChild,Xt=Yt.nextSibling,_t=Xt.nextSibling,Tr=_t.nextSibling,Fr=Tr.nextSibling,Ir=Fr.nextSibling,Pr=Ir.nextSibling,Lr=Pr.nextSibling,Or=Lr.nextSibling,qr=Or.nextSibling,_r=qr.nextSibling,zr=_r.nextSibling,Rr=zr.nextSibling,Kr=Rr.nextSibling,Br=Kr.nextSibling,Nr=Br.nextSibling,Ur=Nr.nextSibling,qs=Ur.nextSibling;return A(n,"id",`a-${e}`),A(r,"fill",`url(#a-${e})`),A(s,"id",`am-${e}`),A(l,"id",`b-${e}`),A(a,"filter",`url(#am-${e})`),A(i,"mask",`url(#b-${e})`),A(u,"id",`ah-${e}`),A(d,"id",`k-${e}`),A(g,"filter",`url(#ah-${e})`),A(f,"mask",`url(#k-${e})`),A(p,"id",`ae-${e}`),A(m,"id",`j-${e}`),A(y,"filter",`url(#ae-${e})`),A(b,"mask",`url(#j-${e})`),A(w,"id",`ai-${e}`),A($,"id",`i-${e}`),A(L,"filter",`url(#ai-${e})`),A(F,"mask",`url(#i-${e})`),A(S,"id",`aj-${e}`),A(q,"id",`h-${e}`),A(H,"filter",`url(#aj-${e})`),A(G,"mask",`url(#h-${e})`),A(J,"id",`ag-${e}`),A(le,"id",`g-${e}`),A(oe,"filter",`url(#ag-${e})`),A(ne,"mask",`url(#g-${e})`),A(ae,"id",`af-${e}`),A(ve,"id",`f-${e}`),A(Ae,"filter",`url(#af-${e})`),A(ge,"mask",`url(#f-${e})`),A(Y,"id",`m-${e}`),A(ht,"fill",`url(#m-${e})`),A(Ge,"id",`ak-${e}`),A($e,"id",`e-${e}`),A(Ot,"filter",`url(#ak-${e})`),A(qe,"mask",`url(#e-${e})`),A(vt,"id",`n-${e}`),A(St,"fill",`url(#n-${e})`),A(Ye,"id",`r-${e}`),A(rt,"fill",`url(#r-${e})`),A(I,"id",`s-${e}`),A(re,"fill",`url(#s-${e})`),A(Me,"id",`q-${e}`),A(se,"fill",`url(#q-${e})`),A(ee,"id",`p-${e}`),A(ce,"fill",`url(#p-${e})`),A(pe,"id",`o-${e}`),A(Z,"fill",`url(#o-${e})`),A(ot,"id",`l-${e}`),A(it,"fill",`url(#l-${e})`),A(kt,"id",`al-${e}`),A(st,"id",`d-${e}`),A(Et,"filter",`url(#al-${e})`),A(lt,"mask",`url(#d-${e})`),A(pt,"id",`u-${e}`),A(pn,"fill",`url(#u-${e})`),A(mn,"id",`ad-${e}`),A(qt,"id",`c-${e}`),A(yn,"filter",`url(#ad-${e})`),A(Qt,"mask",`url(#c-${e})`),A(Yt,"id",`t-${e}`),A(Xt,"fill",`url(#t-${e})`),A(_t,"id",`v-${e}`),A(Tr,"stroke",`url(#v-${e})`),A(Fr,"id",`aa-${e}`),A(Ir,"stroke",`url(#aa-${e})`),A(Pr,"id",`w-${e}`),A(Lr,"stroke",`url(#w-${e})`),A(Or,"id",`ac-${e}`),A(qr,"stroke",`url(#ac-${e})`),A(_r,"id",`ab-${e}`),A(zr,"stroke",`url(#ab-${e})`),A(Rr,"id",`y-${e}`),A(Kr,"stroke",`url(#y-${e})`),A(Br,"id",`x-${e}`),A(Nr,"stroke",`url(#x-${e})`),A(Ur,"id",`z-${e}`),A(qs,"stroke",`url(#z-${e})`),t})()}var nd=_('<span><svg width=16 height=16 viewBox="0 0 16 16"fill=none xmlns=http://www.w3.org/2000/svg><path d="M6 12L10 8L6 4"stroke-width=2 stroke-linecap=round stroke-linejoin=round>'),rd=_('<button title="Copy object to clipboard">'),od=_('<button title="Remove all items"aria-label="Remove all items">'),id=_('<button title="Delete item"aria-label="Delete item">'),sd=_('<button title="Toggle value"aria-label="Toggle value">'),ld=_('<button title="Bulk Edit Data"aria-label="Bulk Edit Data">'),tn=_("<div>"),ad=_("<div><button> <span></span> <span> "),cd=_("<input>"),Zo=_("<span>"),ud=_("<div><span>:"),dd=_("<div><div><button> [<!>...<!>]");function fd(e,t){let n=0,r=[];for(;n<e.length;)r.push(e.slice(n,n+t)),n=n+t;return r}var Jo=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?jt(n):Ht(n));return(()=>{var o=nd();return N(()=>T(o,O(r().expander,n`
|
|
2
|
-
transform: rotate(${e.expanded?90:0}deg);
|
|
3
|
-
`,e.expanded&&n`
|
|
4
|
-
& svg {
|
|
5
|
-
top: -1px;
|
|
6
|
-
}
|
|
7
|
-
`))),o})()},gd=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?jt(n):Ht(n)),[o,s]=z("NoCopy");return(()=>{var l=rd();return Jr(l,"click",o()==="NoCopy"?()=>{navigator.clipboard.writeText(ro(e.value)).then(()=>{s("SuccessCopy"),setTimeout(()=>{s("NoCopy")},1500)},a=>{s("ErrorCopy"),setTimeout(()=>{s("NoCopy")},1500)})}:void 0,!0),k(l,v(Yr,{get children(){return[v(bn,{get when(){return o()==="NoCopy"},get children(){return v(Hu,{})}}),v(bn,{get when(){return o()==="SuccessCopy"},get children(){return v(Wu,{get theme(){return t()}})}}),v(bn,{get when(){return o()==="ErrorCopy"},get children(){return v(Qu,{})}})]}})),N(a=>{var i=r().actionButton,c=`${o()==="NoCopy"?"Copy object to clipboard":o()==="SuccessCopy"?"Object copied to clipboard":"Error copying object to clipboard"}`;return i!==a.e&&T(l,a.e=i),c!==a.t&&A(l,"aria-label",a.t=c),a},{e:void 0,t:void 0}),l})()},hd=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?jt(n):Ht(n)),o=K().client;return(()=>{var s=od();return s.$$click=()=>{let l=e.activeQuery.state.data,a=Cn(l,e.dataPath,[]);o.setQueryData(e.activeQuery.queryKey,a)},k(s,v(Yu,{})),N(()=>T(s,r().actionButton)),s})()},ei=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?jt(n):Ht(n)),o=K().client;return(()=>{var s=id();return s.$$click=()=>{let l=e.activeQuery.state.data,a=lo(l,e.dataPath);o.setQueryData(e.activeQuery.queryKey,a)},k(s,v(Ts,{})),N(()=>T(s,O(r().actionButton))),s})()},vd=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?jt(n):Ht(n)),o=K().client;return(()=>{var s=sd();return s.$$click=()=>{let l=e.activeQuery.state.data,a=Cn(l,e.dataPath,!e.value);o.setQueryData(e.activeQuery.queryKey,a)},k(s,v(Xu,{get theme(){return t()},get checked(){return e.value}})),N(()=>T(s,O(r().actionButton,n`
|
|
8
|
-
width: ${C.size[3.5]};
|
|
9
|
-
height: ${C.size[3.5]};
|
|
10
|
-
`))),s})()};function ti(e){return Symbol.iterator in e}function yt(e){let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?jt(n):Ht(n)),o=K().client,[s,l]=z((e.defaultExpanded||[]).includes(e.label)),a=()=>l(h=>!h),[i,c]=z([]),u=M(()=>Array.isArray(e.value)?e.value.map((h,p)=>({label:p.toString(),value:h})):e.value!==null&&typeof e.value=="object"&&ti(e.value)&&typeof e.value[Symbol.iterator]=="function"?e.value instanceof Map?Array.from(e.value,([h,p])=>({label:h,value:p})):Array.from(e.value,(h,p)=>({label:p.toString(),value:h})):typeof e.value=="object"&&e.value!==null?Object.entries(e.value).map(([h,p])=>({label:h,value:p})):[]),d=M(()=>Array.isArray(e.value)?"array":e.value!==null&&typeof e.value=="object"&&ti(e.value)&&typeof e.value[Symbol.iterator]=="function"?"Iterable":typeof e.value=="object"&&e.value!==null?"object":typeof e.value),g=M(()=>fd(u(),100)),f=e.dataPath??[];return(()=>{var h=tn();return k(h,v(R,{get when(){return g().length},get children(){return[(()=>{var p=ad(),m=p.firstChild,y=m.firstChild,b=y.nextSibling,x=b.nextSibling,w=x.nextSibling,$=w.firstChild;return m.$$click=()=>a(),k(m,v(Jo,{get expanded(){return s()}}),y),k(b,()=>e.label),k(w,()=>String(d()).toLowerCase()==="iterable"?"(Iterable) ":"",$),k(w,()=>u().length,$),k(w,()=>u().length>1?"items":"item",null),k(p,v(R,{get when(){return e.editable},get children(){var L=tn();return k(L,v(gd,{get value(){return e.value}}),null),k(L,v(R,{get when(){return e.itemsDeletable&&e.activeQuery!==void 0},get children(){return v(ei,{get activeQuery(){return e.activeQuery},dataPath:f})}}),null),k(L,v(R,{get when(){return d()==="array"&&e.activeQuery!==void 0},get children(){return v(hd,{get activeQuery(){return e.activeQuery},dataPath:f})}}),null),k(L,v(R,{get when(){return M(()=>!!e.onEdit)()&&!no(e.value).meta},get children(){var F=ld();return F.$$click=()=>{e.onEdit?.()},k(F,v(ju,{})),N(()=>T(F,r().actionButton)),F}}),null),N(()=>T(L,r().actions)),L}}),null),N(L=>{var F=r().expanderButtonContainer,P=r().expanderButton,S=r().info;return F!==L.e&&T(p,L.e=F),P!==L.t&&T(m,L.t=P),S!==L.a&&T(w,L.a=S),L},{e:void 0,t:void 0,a:void 0}),p})(),v(R,{get when(){return s()},get children(){return[v(R,{get when(){return g().length===1},get children(){var p=tn();return k(p,v(Mn,{get each(){return u()},by:m=>m.label,children:m=>v(yt,{get defaultExpanded(){return e.defaultExpanded},get label(){return m().label},get value(){return m().value},get editable(){return e.editable},get dataPath(){return[...f,m().label]},get activeQuery(){return e.activeQuery},get itemsDeletable(){return d()==="array"||d()==="Iterable"||d()==="object"}})})),N(()=>T(p,r().subEntry)),p}}),v(R,{get when(){return g().length>1},get children(){var p=tn();return k(p,v(Qr,{get each(){return g()},children:(m,y)=>(()=>{var b=dd(),x=b.firstChild,w=x.firstChild,$=w.firstChild,L=$.nextSibling,F=L.nextSibling,P=F.nextSibling;return P.nextSibling,w.$$click=()=>c(S=>S.includes(y)?S.filter(q=>q!==y):[...S,y]),k(w,v(Jo,{get expanded(){return i().includes(y)}}),$),k(w,y*100,L),k(w,y*100+100-1,P),k(x,v(R,{get when(){return i().includes(y)},get children(){var S=tn();return k(S,v(Mn,{get each(){return m()},by:q=>q.label,children:q=>v(yt,{get defaultExpanded(){return e.defaultExpanded},get label(){return q().label},get value(){return q().value},get editable(){return e.editable},get dataPath(){return[...f,q().label]},get activeQuery(){return e.activeQuery}})})),N(()=>T(S,r().subEntry)),S}}),null),N(S=>{var q=r().entry,H=r().expanderButton;return q!==S.e&&T(x,S.e=q),H!==S.t&&T(w,S.t=H),S},{e:void 0,t:void 0}),b})()})),N(()=>T(p,r().subEntry)),p}})]}})]}}),null),k(h,v(R,{get when(){return g().length===0},get children(){var p=ud(),m=p.firstChild,y=m.firstChild;return k(m,()=>e.label,y),k(p,v(R,{get when(){return M(()=>!!(e.editable&&e.activeQuery!==void 0))()&&(d()==="string"||d()==="number"||d()==="boolean")},get fallback(){return(()=>{var b=Zo();return k(b,()=>Zt(e.value)),N(()=>T(b,r().value)),b})()},get children(){return[v(R,{get when(){return M(()=>!!(e.editable&&e.activeQuery!==void 0))()&&(d()==="string"||d()==="number")},get children(){var b=cd();return b.addEventListener("change",x=>{let w=e.activeQuery.state.data,$=Cn(w,f,d()==="number"?x.target.valueAsNumber:x.target.value);o.setQueryData(e.activeQuery.queryKey,$)}),N(x=>{var w=d()==="number"?"number":"text",$=O(r().value,r().editableInput);return w!==x.e&&A(b,"type",x.e=w),$!==x.t&&T(b,x.t=$),x},{e:void 0,t:void 0}),N(()=>b.value=e.value),b}}),v(R,{get when(){return d()==="boolean"},get children(){var b=Zo();return k(b,v(vd,{get activeQuery(){return e.activeQuery},dataPath:f,get value(){return e.value}}),null),k(b,()=>Zt(e.value),null),N(()=>T(b,O(r().value,r().actions,r().editableInput))),b}})]}}),null),k(p,v(R,{get when(){return e.editable&&e.itemsDeletable&&e.activeQuery!==void 0},get children(){return v(ei,{get activeQuery(){return e.activeQuery},dataPath:f})}}),null),N(b=>{var x=r().row,w=r().label;return x!==b.e&&T(p,b.e=x),w!==b.t&&T(m,b.t=w),b},{e:void 0,t:void 0}),p}}),null),N(()=>T(h,r().entry)),h})()}var Fs=(e,t)=>{let{colors:n,font:r,size:o,border:s}=C,l=(a,i)=>e==="light"?a:i;return{entry:t`
|
|
11
|
-
& * {
|
|
12
|
-
font-size: ${r.size.xs};
|
|
13
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
14
|
-
'Liberation Mono', 'Courier New', monospace;
|
|
15
|
-
}
|
|
16
|
-
position: relative;
|
|
17
|
-
outline: none;
|
|
18
|
-
word-break: break-word;
|
|
19
|
-
`,subEntry:t`
|
|
20
|
-
margin: 0 0 0 0.5em;
|
|
21
|
-
padding-left: 0.75em;
|
|
22
|
-
border-left: 2px solid ${l(n.gray[300],n.darkGray[400])};
|
|
23
|
-
/* outline: 1px solid ${n.teal[400]}; */
|
|
24
|
-
`,expander:t`
|
|
25
|
-
& path {
|
|
26
|
-
stroke: ${n.gray[400]};
|
|
27
|
-
}
|
|
28
|
-
& svg {
|
|
29
|
-
width: ${o[3]};
|
|
30
|
-
height: ${o[3]};
|
|
31
|
-
}
|
|
32
|
-
display: inline-flex;
|
|
33
|
-
align-items: center;
|
|
34
|
-
transition: all 0.1s ease;
|
|
35
|
-
/* outline: 1px solid ${n.blue[400]}; */
|
|
36
|
-
`,expanderButtonContainer:t`
|
|
37
|
-
display: flex;
|
|
38
|
-
align-items: center;
|
|
39
|
-
line-height: ${o[4]};
|
|
40
|
-
min-height: ${o[4]};
|
|
41
|
-
gap: ${o[2]};
|
|
42
|
-
`,expanderButton:t`
|
|
43
|
-
cursor: pointer;
|
|
44
|
-
color: inherit;
|
|
45
|
-
font: inherit;
|
|
46
|
-
outline: inherit;
|
|
47
|
-
height: ${o[5]};
|
|
48
|
-
background: transparent;
|
|
49
|
-
border: none;
|
|
50
|
-
padding: 0;
|
|
51
|
-
display: inline-flex;
|
|
52
|
-
align-items: center;
|
|
53
|
-
gap: ${o[1]};
|
|
54
|
-
position: relative;
|
|
55
|
-
/* outline: 1px solid ${n.green[400]}; */
|
|
56
|
-
|
|
57
|
-
&:focus-visible {
|
|
58
|
-
border-radius: ${s.radius.xs};
|
|
59
|
-
outline: 2px solid ${n.blue[800]};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
& svg {
|
|
63
|
-
position: relative;
|
|
64
|
-
left: 1px;
|
|
65
|
-
}
|
|
66
|
-
`,info:t`
|
|
67
|
-
color: ${l(n.gray[500],n.gray[500])};
|
|
68
|
-
font-size: ${r.size.xs};
|
|
69
|
-
margin-left: ${o[1]};
|
|
70
|
-
/* outline: 1px solid ${n.yellow[400]}; */
|
|
71
|
-
`,label:t`
|
|
72
|
-
color: ${l(n.gray[700],n.gray[300])};
|
|
73
|
-
white-space: nowrap;
|
|
74
|
-
`,value:t`
|
|
75
|
-
color: ${l(n.purple[600],n.purple[400])};
|
|
76
|
-
flex-grow: 1;
|
|
77
|
-
`,actions:t`
|
|
78
|
-
display: inline-flex;
|
|
79
|
-
gap: ${o[2]};
|
|
80
|
-
align-items: center;
|
|
81
|
-
`,row:t`
|
|
82
|
-
display: inline-flex;
|
|
83
|
-
gap: ${o[2]};
|
|
84
|
-
width: 100%;
|
|
85
|
-
margin: ${o[.25]} 0px;
|
|
86
|
-
line-height: ${o[4.5]};
|
|
87
|
-
align-items: center;
|
|
88
|
-
`,editableInput:t`
|
|
89
|
-
border: none;
|
|
90
|
-
padding: ${o[.5]} ${o[1]} ${o[.5]} ${o[1.5]};
|
|
91
|
-
flex-grow: 1;
|
|
92
|
-
border-radius: ${s.radius.xs};
|
|
93
|
-
background-color: ${l(n.gray[200],n.darkGray[500])};
|
|
94
|
-
|
|
95
|
-
&:hover {
|
|
96
|
-
background-color: ${l(n.gray[300],n.darkGray[600])};
|
|
97
|
-
}
|
|
98
|
-
`,actionButton:t`
|
|
99
|
-
background-color: transparent;
|
|
100
|
-
color: ${l(n.gray[500],n.gray[500])};
|
|
101
|
-
border: none;
|
|
102
|
-
display: inline-flex;
|
|
103
|
-
padding: 0px;
|
|
104
|
-
align-items: center;
|
|
105
|
-
justify-content: center;
|
|
106
|
-
cursor: pointer;
|
|
107
|
-
width: ${o[3]};
|
|
108
|
-
height: ${o[3]};
|
|
109
|
-
position: relative;
|
|
110
|
-
z-index: 1;
|
|
111
|
-
|
|
112
|
-
&:hover svg {
|
|
113
|
-
color: ${l(n.gray[600],n.gray[400])};
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
&:focus-visible {
|
|
117
|
-
border-radius: ${s.radius.xs};
|
|
118
|
-
outline: 2px solid ${n.blue[800]};
|
|
119
|
-
outline-offset: 2px;
|
|
120
|
-
}
|
|
121
|
-
`}},Ht=e=>Fs("light",e),jt=e=>Fs("dark",e);xn(["click"]);var pd=_('<div><div aria-hidden=true></div><button type=button aria-label="Open Tanstack query devtools"class=tsqd-open-btn>'),vn=_("<div>"),md=_('<aside aria-label="Tanstack query devtools"><div></div><button aria-label="Close tanstack query devtools">'),yd=_("<select name=tsqd-queries-filter-sort>"),bd=_("<select name=tsqd-mutations-filter-sort>"),xd=_("<span>Asc"),wd=_("<span>Desc"),$d=_('<button aria-label="Open in picture-in-picture mode"title="Open in picture-in-picture mode">'),Cd=_("<div>Settings"),Sd=_("<span>Position"),kd=_("<span>Top"),Ed=_("<span>Bottom"),Md=_("<span>Left"),Dd=_("<span>Right"),Ad=_("<span>Theme"),Td=_("<span>Light"),Fd=_("<span>Dark"),Id=_("<span>System"),Pd=_("<div><div class=tsqd-queries-container>"),Ld=_("<div><div class=tsqd-mutations-container>"),Od=_('<div><div><div><button aria-label="Close Tanstack query devtools"><span>TANSTACK</span><span> v</span></button></div></div><div><div><div><input aria-label="Filter queries by query key"type=text placeholder=Filter name=tsqd-query-filter-input></div><div></div><button class=tsqd-query-filter-sort-order-btn></button></div><div><button aria-label="Clear query cache"></button><button>'),ni=_("<option>Sort by "),qd=_("<div class=tsqd-query-disabled-indicator>disabled"),Is=_("<button><div></div><code class=tsqd-query-hash>"),_d=_("<div role=tooltip id=tsqd-status-tooltip>"),zd=_("<span>"),Rd=_("<button><span></span><span>"),Kd=_("<button><span></span> Error"),Bd=_('<div><span></span>Trigger Error<select><option value=""disabled selected>'),Nd=_('<div class="tsqd-query-details-explorer-container tsqd-query-details-data-explorer">'),Ud=_("<form><textarea name=data></textarea><div><span></span><div><button type=button>Cancel</button><button>Save"),Gd=_('<div><div>Query Details</div><div><div class=tsqd-query-details-summary><pre><code></code></pre><span></span></div><div class=tsqd-query-details-observers-count><span>Observers:</span><span></span></div><div class=tsqd-query-details-last-updated><span>Last Updated:</span><span></span></div></div><div>Actions</div><div><button><span></span>Refetch</button><button><span></span>Invalidate</button><button><span></span>Reset</button><button><span></span>Remove</button><button><span></span> Loading</button></div><div>Data </div><div>Query Explorer</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer">'),Vd=_("<option>"),Hd=_('<div><div>Mutation Details</div><div><div class=tsqd-query-details-summary><pre><code></code></pre><span></span></div><div class=tsqd-query-details-last-updated><span>Submitted At:</span><span></span></div></div><div>Variables Details</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer"></div><div>Context Details</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer"></div><div>Data Explorer</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer"></div><div>Mutations Explorer</div><div class="tsqd-query-details-explorer-container tsqd-query-details-query-explorer">'),[Pe,Nn]=z(null),[bt,Ps]=z(null),[je,Ar]=z(0),[Rt,ri]=z(!1),a0=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?Ue(n):Ne(n)),o=ur(),s=M(()=>K().buttonPosition||Ws),l=M(()=>e.localStore.open==="true"?!0:e.localStore.open==="false"?!1:K().initialIsOpen||Qs),a=M(()=>e.localStore.position||K().position||Jn),i;B(()=>{let u=i.parentElement,d=e.localStore.height||oi,g=e.localStore.width||ii,f=a();u.style.setProperty("--tsqd-panel-height",`${f==="top"?"-":""}${d}px`),u.style.setProperty("--tsqd-panel-width",`${f==="left"?"-":""}${g}px`)}),mt(()=>{let u=()=>{let d=i.parentElement,g=getComputedStyle(d).fontSize;d.style.setProperty("--tsqd-font-size",g)};u(),window.addEventListener("focus",u),U(()=>{window.removeEventListener("focus",u)})});let c=M(()=>e.localStore.pip_open??"false");return[v(R,{get when(){return M(()=>!!o().pipWindow)()&&c()=="true"},get children(){return v(Vn,{get mount(){return o().pipWindow?.document.body},get children(){return v(jd,{get children(){return v(Ls,e)}})}})}}),(()=>{var u=vn(),d=i;return typeof d=="function"?zt(d,u):i=u,k(u,v(yo,{name:"tsqd-panel-transition",get children(){return v(R,{get when(){return M(()=>!!(l()&&!o().pipWindow))()&&c()=="false"},get children(){return v(Wd,{get localStore(){return e.localStore},get setLocalStore(){return e.setLocalStore}})}})}}),null),k(u,v(yo,{name:"tsqd-button-transition",get children(){return v(R,{get when(){return!l()},get children(){var g=pd(),f=g.firstChild,h=f.nextSibling;return k(f,v(Xo,{})),h.$$click=()=>e.setLocalStore("open","true"),k(h,v(Xo,{})),N(()=>T(g,O(r().devtoolsBtn,r()[`devtoolsBtn-position-${s()}`],"tsqd-open-btn-container"))),g}})}}),null),N(()=>T(u,O(n`
|
|
122
|
-
& .tsqd-panel-transition-exit-active,
|
|
123
|
-
& .tsqd-panel-transition-enter-active {
|
|
124
|
-
transition:
|
|
125
|
-
opacity 0.3s,
|
|
126
|
-
transform 0.3s;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
& .tsqd-panel-transition-exit-to,
|
|
130
|
-
& .tsqd-panel-transition-enter {
|
|
131
|
-
${a()==="top"||a()==="bottom"?"transform: translateY(var(--tsqd-panel-height));":"transform: translateX(var(--tsqd-panel-width));"}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
& .tsqd-button-transition-exit-active,
|
|
135
|
-
& .tsqd-button-transition-enter-active {
|
|
136
|
-
transition:
|
|
137
|
-
opacity 0.3s,
|
|
138
|
-
transform 0.3s;
|
|
139
|
-
opacity: 1;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
& .tsqd-button-transition-exit-to,
|
|
143
|
-
& .tsqd-button-transition-enter {
|
|
144
|
-
transform: ${s()==="relative"?"none;":s()==="top-left"?"translateX(-72px);":s()==="top-right"?"translateX(72px);":"translateY(72px);"};
|
|
145
|
-
opacity: 0;
|
|
146
|
-
}
|
|
147
|
-
`,"tsqd-transitions-container"))),u})()]},jd=e=>{let t=ur(),n=xe(),r=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,o=M(()=>n()==="dark"?Ue(r):Ne(r)),s=()=>{let{colors:l}=C,a=(i,c)=>n()==="dark"?c:i;return je()<Ft?r`
|
|
148
|
-
flex-direction: column;
|
|
149
|
-
background-color: ${a(l.gray[300],l.gray[600])};
|
|
150
|
-
`:r`
|
|
151
|
-
flex-direction: row;
|
|
152
|
-
background-color: ${a(l.gray[200],l.darkGray[900])};
|
|
153
|
-
`};return B(()=>{let l=t().pipWindow,a=()=>{l&&Ar(l.innerWidth)};l&&(l.addEventListener("resize",a),a()),U(()=>{l&&l.removeEventListener("resize",a)})}),(()=>{var l=vn();return l.style.setProperty("--tsqd-font-size","16px"),l.style.setProperty("max-height","100vh"),l.style.setProperty("height","100vh"),l.style.setProperty("width","100vw"),k(l,()=>e.children),N(()=>T(l,O(o().panel,s(),{[r`
|
|
154
|
-
min-width: min-content;
|
|
155
|
-
`]:je()<cr},"tsqd-main-panel"))),l})()},c0=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?Ue(n):Ne(n)),o;mt(()=>{di(o,({width:l},a)=>{a===o&&Ar(l)})});let s=()=>{let{colors:l}=C,a=(i,c)=>t()==="dark"?c:i;return je()<Ft?n`
|
|
156
|
-
flex-direction: column;
|
|
157
|
-
background-color: ${a(l.gray[300],l.gray[600])};
|
|
158
|
-
`:n`
|
|
159
|
-
flex-direction: row;
|
|
160
|
-
background-color: ${a(l.gray[200],l.darkGray[900])};
|
|
161
|
-
`};return(()=>{var l=vn(),a=o;return typeof a=="function"?zt(a,l):o=l,l.style.setProperty("--tsqd-font-size","16px"),k(l,()=>e.children),N(()=>T(l,O(r().parentPanel,s(),{[n`
|
|
162
|
-
min-width: min-content;
|
|
163
|
-
`]:je()<cr},"tsqd-main-panel"))),l})()},Wd=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?Ue(n):Ne(n)),[o,s]=z(!1),l=M(()=>e.localStore.position||K().position||Jn),a=u=>{let d=u.currentTarget.parentElement;if(!d)return;s(!0);let{height:g,width:f}=d.getBoundingClientRect(),h=u.clientX,p=u.clientY,m=0,y=Hn(3.5),b=Hn(12),x=$=>{if($.preventDefault(),l()==="left"||l()==="right"){let L=l()==="right"?h-$.clientX:$.clientX-h;m=Math.round(f+L),m<b&&(m=b),e.setLocalStore("width",String(Math.round(m)));let F=d.getBoundingClientRect().width;Number(e.localStore.width)<F&&e.setLocalStore("width",String(F))}else{let L=l()==="bottom"?p-$.clientY:$.clientY-p;m=Math.round(g+L),m<y&&(m=y,Nn(null)),e.setLocalStore("height",String(Math.round(m)))}},w=()=>{o()&&s(!1),document.removeEventListener("mousemove",x,!1),document.removeEventListener("mouseUp",w,!1)};document.addEventListener("mousemove",x,!1),document.addEventListener("mouseup",w,!1)},i;mt(()=>{di(i,({width:u},d)=>{d===i&&Ar(u)})}),B(()=>{let u=i.parentElement?.parentElement?.parentElement;if(!u)return;let d=e.localStore.position||Jn,g=oo("padding",d),f=e.localStore.position==="left"||e.localStore.position==="right",h=(({padding:p,paddingTop:m,paddingBottom:y,paddingLeft:b,paddingRight:x})=>({padding:p,paddingTop:m,paddingBottom:y,paddingLeft:b,paddingRight:x}))(u.style);u.style[g]=`${f?e.localStore.width:e.localStore.height}px`,U(()=>{Object.entries(h).forEach(([p,m])=>{u.style[p]=m})})});let c=()=>{let{colors:u}=C,d=(g,f)=>t()==="dark"?f:g;return je()<Ft?n`
|
|
164
|
-
flex-direction: column;
|
|
165
|
-
background-color: ${d(u.gray[300],u.gray[600])};
|
|
166
|
-
`:n`
|
|
167
|
-
flex-direction: row;
|
|
168
|
-
background-color: ${d(u.gray[200],u.darkGray[900])};
|
|
169
|
-
`};return(()=>{var u=md(),d=u.firstChild,g=d.nextSibling,f=i;return typeof f=="function"?zt(f,u):i=u,d.$$mousedown=a,g.$$click=()=>e.setLocalStore("open","false"),k(g,v(on,{})),k(u,v(Ls,e),null),N(h=>{var p=O(r().panel,r()[`panel-position-${l()}`],c(),{[n`
|
|
170
|
-
min-width: min-content;
|
|
171
|
-
`]:je()<cr&&(l()==="right"||l()==="left")},"tsqd-main-panel"),m=l()==="bottom"||l()==="top"?`${e.localStore.height||oi}px`:"auto",y=l()==="right"||l()==="left"?`${e.localStore.width||ii}px`:"auto",b=O(r().dragHandle,r()[`dragHandle-position-${l()}`],"tsqd-drag-handle"),x=O(r().closeBtn,r()[`closeBtn-position-${l()}`],"tsqd-minimize-btn");return p!==h.e&&T(u,h.e=p),m!==h.t&&((h.t=m)!=null?u.style.setProperty("height",m):u.style.removeProperty("height")),y!==h.a&&((h.a=y)!=null?u.style.setProperty("width",y):u.style.removeProperty("width")),b!==h.o&&T(d,h.o=b),x!==h.i&&T(g,h.i=x),h},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),u})()},Ls=e=>{t0(),n0();let t,n=xe(),r=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,o=M(()=>n()==="dark"?Ue(r):Ne(r)),s=ur(),[l,a]=z("queries"),i=M(()=>e.localStore.sort||Xs),c=M(()=>Number(e.localStore.sortOrder)||uo),u=M(()=>e.localStore.mutationSort||Zs),d=M(()=>Number(e.localStore.mutationSortOrder)||uo),g=M(()=>wn[i()]),f=M(()=>$n[u()]),h=M(()=>K().onlineManager),p=M(()=>K().client.getQueryCache()),m=M(()=>K().client.getMutationCache()),y=we(F=>F().getAll().length,!1),b=M(Xe(()=>[y(),e.localStore.filter,i(),c()],()=>{let F=p().getAll(),P=e.localStore.filter?F.filter(q=>fo(q.queryHash,e.localStore.filter||"").passed):[...F];return g()?P.sort((q,H)=>g()(q,H)*c()):P})),x=He(F=>F().getAll().length,!1),w=M(Xe(()=>[x(),e.localStore.mutationFilter,u(),d()],()=>{let F=m().getAll(),P=e.localStore.mutationFilter?F.filter(q=>{let H=`${q.options.mutationKey?JSON.stringify(q.options.mutationKey)+" - ":""}${new Date(q.state.submittedAt).toLocaleString()}`;return fo(H,e.localStore.mutationFilter||"").passed}):[...F];return f()?P.sort((q,H)=>f()(q,H)*d()):P})),$=F=>{e.setLocalStore("position",F)},L=F=>{let S=getComputedStyle(t).getPropertyValue("--tsqd-font-size");F.style.setProperty("--tsqd-font-size",S)};return[(()=>{var F=Od(),P=F.firstChild,S=P.firstChild,q=S.firstChild,H=q.firstChild,G=H.nextSibling,te=G.firstChild,J=P.nextSibling,le=J.firstChild,oe=le.firstChild,ne=oe.firstChild,ie=oe.nextSibling,ae=ie.nextSibling,ve=le.nextSibling,Ae=ve.firstChild,ge=Ae.nextSibling,Ee=t;return typeof Ee=="function"?zt(Ee,F):t=F,q.$$click=()=>{if(!s().pipWindow&&!e.showPanelViewOnly){e.setLocalStore("open","false");return}e.onClose&&e.onClose()},k(G,()=>K().queryFlavor,te),k(G,()=>K().version,null),k(S,v(Re.Root,{get class(){return O(o().viewToggle)},get value(){return l()},onChange:D=>{a(D),Nn(null),Ps(null)},get children(){return[v(Re.Item,{value:"queries",class:"tsqd-radio-toggle",get children(){return[v(Re.ItemInput,{}),v(Re.ItemControl,{get children(){return v(Re.ItemIndicator,{})}}),v(Re.ItemLabel,{title:"Toggle Queries View",children:"Queries"})]}}),v(Re.Item,{value:"mutations",class:"tsqd-radio-toggle",get children(){return[v(Re.ItemInput,{}),v(Re.ItemControl,{get children(){return v(Re.ItemIndicator,{})}}),v(Re.ItemLabel,{title:"Toggle Mutations View",children:"Mutations"})]}})]}}),null),k(P,v(R,{get when(){return l()==="queries"},get children(){return v(Xd,{})}}),null),k(P,v(R,{get when(){return l()==="mutations"},get children(){return v(Zd,{})}}),null),k(oe,v(qu,{}),ne),ne.$$input=D=>{l()==="queries"?e.setLocalStore("filter",D.currentTarget.value):e.setLocalStore("mutationFilter",D.currentTarget.value)},k(ie,v(R,{get when(){return l()==="queries"},get children(){var D=yd();return D.addEventListener("change",fe=>{e.setLocalStore("sort",fe.currentTarget.value)}),k(D,()=>Object.keys(wn).map(fe=>(()=>{var Y=ni();return Y.firstChild,Y.value=fe,k(Y,fe,null),Y})())),N(()=>D.value=i()),D}}),null),k(ie,v(R,{get when(){return l()==="mutations"},get children(){var D=bd();return D.addEventListener("change",fe=>{e.setLocalStore("mutationSort",fe.currentTarget.value)}),k(D,()=>Object.keys($n).map(fe=>(()=>{var Y=ni();return Y.firstChild,Y.value=fe,k(Y,fe,null),Y})())),N(()=>D.value=u()),D}}),null),k(ie,v(on,{}),null),ae.$$click=()=>{l()==="queries"?e.setLocalStore("sortOrder",String(c()*-1)):e.setLocalStore("mutationSortOrder",String(d()*-1))},k(ae,v(R,{get when(){return(l()==="queries"?c():d())===1},get children(){return[xd(),v(Qo,{})]}}),null),k(ae,v(R,{get when(){return(l()==="queries"?c():d())===-1},get children(){return[wd(),v(Yo,{})]}}),null),Ae.$$click=()=>{l()==="queries"?p().clear():m().clear()},k(Ae,v(Ts,{})),ge.$$click=()=>{Rt()?(h().setOnline(!0),ri(!1)):(h().setOnline(!1),ri(!0))},k(ge,(()=>{var D=M(()=>!!Rt());return()=>D()?v(Uu,{}):v(Nu,{})})()),k(ve,v(R,{get when(){return M(()=>!s().pipWindow)()&&!s().disabled},get children(){var D=$d();return D.$$click=()=>{s().requestPipWindow(Number(window.innerWidth),Number(e.localStore.height??500))},k(D,v(Vu,{})),N(()=>T(D,O(o().actionsBtn,"tsqd-actions-btn","tsqd-action-open-pip"))),D}}),null),k(ve,v(he.Root,{gutter:4,get children(){return[v(he.Trigger,{get class(){return O(o().actionsBtn,"tsqd-actions-btn","tsqd-action-settings")},get children(){return v(Gu,{})}}),v(he.Portal,{ref:D=>L(D),get mount(){return M(()=>!!s().pipWindow)()?s().pipWindow.document.body:document.body},get children(){return v(he.Content,{get class(){return O(o().settingsMenu,"tsqd-settings-menu")},get children(){return[(()=>{var D=Cd();return N(()=>T(D,O(o().settingsMenuHeader,"tsqd-settings-menu-header"))),D})(),v(R,{get when(){return!e.showPanelViewOnly},get children(){return v(he.Sub,{overlap:!0,gutter:8,shift:-4,get children(){return[v(he.SubTrigger,{get class(){return O(o().settingsSubTrigger,"tsqd-settings-menu-sub-trigger","tsqd-settings-menu-sub-trigger-position")},get children(){return[Sd(),v(on,{})]}}),v(he.Portal,{ref:D=>L(D),get mount(){return M(()=>!!s().pipWindow)()?s().pipWindow.document.body:document.body},get children(){return v(he.SubContent,{get class(){return O(o().settingsMenu,"tsqd-settings-submenu")},get children(){return[v(he.Item,{onSelect:()=>{$("top")},as:"button",get class(){return O(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-top")},get children(){return[kd(),v(Qo,{})]}}),v(he.Item,{onSelect:()=>{$("bottom")},as:"button",get class(){return O(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-bottom")},get children(){return[Ed(),v(Yo,{})]}}),v(he.Item,{onSelect:()=>{$("left")},as:"button",get class(){return O(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-left")},get children(){return[Md(),v(_u,{})]}}),v(he.Item,{onSelect:()=>{$("right")},as:"button",get class(){return O(o().settingsSubButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-right")},get children(){return[Dd(),v(zu,{})]}})]}})}})]}})}}),v(he.Sub,{overlap:!0,gutter:8,shift:-4,get children(){return[v(he.SubTrigger,{get class(){return O(o().settingsSubTrigger,"tsqd-settings-menu-sub-trigger","tsqd-settings-menu-sub-trigger-position")},get children(){return[Ad(),v(on,{})]}}),v(he.Portal,{ref:D=>L(D),get mount(){return M(()=>!!s().pipWindow)()?s().pipWindow.document.body:document.body},get children(){return v(he.SubContent,{get class(){return O(o().settingsMenu,"tsqd-settings-submenu")},get children(){return[v(he.Item,{onSelect:()=>{e.setLocalStore("theme_preference","light")},as:"button",get class(){return O(o().settingsSubButton,e.localStore.theme_preference==="light"&&o().themeSelectedButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-top")},get children(){return[Td(),v(Ru,{})]}}),v(he.Item,{onSelect:()=>{e.setLocalStore("theme_preference","dark")},as:"button",get class(){return O(o().settingsSubButton,e.localStore.theme_preference==="dark"&&o().themeSelectedButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-bottom")},get children(){return[Fd(),v(Ku,{})]}}),v(he.Item,{onSelect:()=>{e.setLocalStore("theme_preference","system")},as:"button",get class(){return O(o().settingsSubButton,e.localStore.theme_preference==="system"&&o().themeSelectedButton,"tsqd-settings-menu-position-btn","tsqd-settings-menu-position-btn-left")},get children(){return[Id(),v(Bu,{})]}})]}})}})]}})]}})}})]}}),null),k(F,v(R,{get when(){return l()==="queries"},get children(){var D=Pd(),fe=D.firstChild;return k(fe,v(Mn,{by:Y=>Y.queryHash,get each(){return b()},children:Y=>v(Qd,{get query(){return Y()}})})),N(()=>T(D,O(o().overflowQueryContainer,"tsqd-queries-overflow-container"))),D}}),null),k(F,v(R,{get when(){return l()==="mutations"},get children(){var D=Ld(),fe=D.firstChild;return k(fe,v(Mn,{by:Y=>Y.mutationId,get each(){return w()},children:Y=>v(Yd,{get mutation(){return Y()}})})),N(()=>T(D,O(o().overflowQueryContainer,"tsqd-mutations-overflow-container"))),D}}),null),N(D=>{var fe=O(o().queriesContainer,je()<Ft&&(Pe()||bt())&&r`
|
|
172
|
-
height: 50%;
|
|
173
|
-
max-height: 50%;
|
|
174
|
-
`,je()<Ft&&!(Pe()||bt())&&r`
|
|
175
|
-
height: 100%;
|
|
176
|
-
max-height: 100%;
|
|
177
|
-
`,"tsqd-queries-container"),Y=O(o().row,"tsqd-header"),ht=o().logoAndToggleContainer,V=O(o().logo,"tsqd-text-logo-container"),Ge=O(o().tanstackLogo,"tsqd-text-logo-tanstack"),$e=O(o().queryFlavorLogo,"tsqd-text-logo-query-flavor"),Ot=O(o().row,"tsqd-filters-actions-container"),qe=O(o().filtersContainer,"tsqd-filters-container"),vt=O(o().filterInput,"tsqd-query-filter-textfield-container"),St=O("tsqd-query-filter-textfield"),nt=O(o().filterSelect,"tsqd-query-filter-sort-container"),Ye=`Sort order ${(l()==="queries"?c():d())===-1?"descending":"ascending"}`,rt=(l()==="queries"?c():d())===-1,I=O(o().actionsContainer,"tsqd-actions-container"),re=O(o().actionsBtn,"tsqd-actions-btn","tsqd-action-clear-cache"),Me=`Clear ${l()} cache`,se=O(o().actionsBtn,Rt()&&o().actionsBtnOffline,"tsqd-actions-btn","tsqd-action-mock-offline-behavior"),ee=`${Rt()?"Unset offline mocking behavior":"Mock offline behavior"}`,ce=Rt(),pe=`${Rt()?"Unset offline mocking behavior":"Mock offline behavior"}`;return fe!==D.e&&T(F,D.e=fe),Y!==D.t&&T(P,D.t=Y),ht!==D.a&&T(S,D.a=ht),V!==D.o&&T(q,D.o=V),Ge!==D.i&&T(H,D.i=Ge),$e!==D.n&&T(G,D.n=$e),Ot!==D.s&&T(J,D.s=Ot),qe!==D.h&&T(le,D.h=qe),vt!==D.r&&T(oe,D.r=vt),St!==D.d&&T(ne,D.d=St),nt!==D.l&&T(ie,D.l=nt),Ye!==D.u&&A(ae,"aria-label",D.u=Ye),rt!==D.c&&A(ae,"aria-pressed",D.c=rt),I!==D.w&&T(ve,D.w=I),re!==D.m&&T(Ae,D.m=re),Me!==D.f&&A(Ae,"title",D.f=Me),se!==D.y&&T(ge,D.y=se),ee!==D.g&&A(ge,"aria-label",D.g=ee),ce!==D.p&&A(ge,"aria-pressed",D.p=ce),pe!==D.b&&A(ge,"title",D.b=pe),D},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0}),N(()=>ne.value=l()==="queries"?e.localStore.filter||"":e.localStore.mutationFilter||""),F})(),v(R,{get when(){return M(()=>l()==="queries")()&&Pe()},get children(){return v(Jd,{})}}),v(R,{get when(){return M(()=>l()==="mutations")()&&bt()},get children(){return v(e0,{})}})]},Qd=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?Ue(n):Ne(n)),{colors:o,alpha:s}=C,l=(f,h)=>t()==="dark"?h:f,a=we(f=>f().find({queryKey:e.query.queryKey})?.state,!0,f=>f.query.queryHash===e.query.queryHash),i=we(f=>f().find({queryKey:e.query.queryKey})?.isDisabled()??!1,!0,f=>f.query.queryHash===e.query.queryHash),c=we(f=>f().find({queryKey:e.query.queryKey})?.isStale()??!1,!0,f=>f.query.queryHash===e.query.queryHash),u=we(f=>f().find({queryKey:e.query.queryKey})?.getObserversCount()??0,!0,f=>f.query.queryHash===e.query.queryHash),d=M(()=>io({queryState:a(),observerCount:u(),isStale:c()})),g=()=>d()==="gray"?n`
|
|
178
|
-
background-color: ${l(o[d()][200],o[d()][700])};
|
|
179
|
-
color: ${l(o[d()][700],o[d()][300])};
|
|
180
|
-
`:n`
|
|
181
|
-
background-color: ${l(o[d()][200]+s[80],o[d()][900])};
|
|
182
|
-
color: ${l(o[d()][800],o[d()][300])};
|
|
183
|
-
`;return v(R,{get when(){return a()},get children(){var f=Is(),h=f.firstChild,p=h.nextSibling;return f.$$click=()=>Nn(e.query.queryHash===Pe()?null:e.query.queryHash),k(h,u),k(p,()=>e.query.queryHash),k(f,v(R,{get when(){return i()},get children(){return qd()}}),null),N(m=>{var y=O(r().queryRow,Pe()===e.query.queryHash&&r().selectedQueryRow,"tsqd-query-row"),b=`Query key ${e.query.queryHash}`,x=O(g(),"tsqd-query-observer-count");return y!==m.e&&T(f,m.e=y),b!==m.t&&A(f,"aria-label",m.t=b),x!==m.a&&T(h,m.a=x),m},{e:void 0,t:void 0,a:void 0}),f}})},Yd=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?Ue(n):Ne(n)),{colors:o,alpha:s}=C,l=(g,f)=>t()==="dark"?f:g,a=He(g=>g().getAll().find(p=>p.mutationId===e.mutation.mutationId)?.state),i=He(g=>{let h=g().getAll().find(p=>p.mutationId===e.mutation.mutationId);return h?h.state.isPaused:!1}),c=He(g=>{let h=g().getAll().find(p=>p.mutationId===e.mutation.mutationId);return h?h.state.status:"idle"}),u=M(()=>At({isPaused:i(),status:c()})),d=()=>u()==="gray"?n`
|
|
184
|
-
background-color: ${l(o[u()][200],o[u()][700])};
|
|
185
|
-
color: ${l(o[u()][700],o[u()][300])};
|
|
186
|
-
`:n`
|
|
187
|
-
background-color: ${l(o[u()][200]+s[80],o[u()][900])};
|
|
188
|
-
color: ${l(o[u()][800],o[u()][300])};
|
|
189
|
-
`;return v(R,{get when(){return a()},get children(){var g=Is(),f=g.firstChild,h=f.nextSibling;return g.$$click=()=>{Ps(e.mutation.mutationId===bt()?null:e.mutation.mutationId)},k(f,v(R,{get when(){return u()==="purple"},get children(){return v(td,{})}}),null),k(f,v(R,{get when(){return u()==="green"},get children(){return v(Zu,{})}}),null),k(f,v(R,{get when(){return u()==="red"},get children(){return v(ed,{})}}),null),k(f,v(R,{get when(){return u()==="yellow"},get children(){return v(Ju,{})}}),null),k(h,v(R,{get when(){return e.mutation.options.mutationKey},get children(){return[M(()=>JSON.stringify(e.mutation.options.mutationKey))," -"," "]}}),null),k(h,()=>new Date(e.mutation.state.submittedAt).toLocaleString(),null),N(p=>{var m=O(r().queryRow,bt()===e.mutation.mutationId&&r().selectedQueryRow,"tsqd-query-row"),y=`Mutation submitted at ${new Date(e.mutation.state.submittedAt).toLocaleString()}`,b=O(d(),"tsqd-query-observer-count");return m!==p.e&&T(g,p.e=m),y!==p.t&&A(g,"aria-label",p.t=y),b!==p.a&&T(f,p.a=b),p},{e:void 0,t:void 0,a:void 0}),g}})},Xd=()=>{let e=we(i=>i().getAll().filter(c=>Dt(c)==="stale").length),t=we(i=>i().getAll().filter(c=>Dt(c)==="fresh").length),n=we(i=>i().getAll().filter(c=>Dt(c)==="fetching").length),r=we(i=>i().getAll().filter(c=>Dt(c)==="paused").length),o=we(i=>i().getAll().filter(c=>Dt(c)==="inactive").length),s=xe(),l=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,a=M(()=>s()==="dark"?Ue(l):Ne(l));return(()=>{var i=vn();return k(i,v(ut,{label:"Fresh",color:"green",get count(){return t()}}),null),k(i,v(ut,{label:"Fetching",color:"blue",get count(){return n()}}),null),k(i,v(ut,{label:"Paused",color:"purple",get count(){return r()}}),null),k(i,v(ut,{label:"Stale",color:"yellow",get count(){return e()}}),null),k(i,v(ut,{label:"Inactive",color:"gray",get count(){return o()}}),null),N(()=>T(i,O(a().queryStatusContainer,"tsqd-query-status-container"))),i})()},Zd=()=>{let e=He(a=>a().getAll().filter(i=>At({isPaused:i.state.isPaused,status:i.state.status})==="green").length),t=He(a=>a().getAll().filter(i=>At({isPaused:i.state.isPaused,status:i.state.status})==="yellow").length),n=He(a=>a().getAll().filter(i=>At({isPaused:i.state.isPaused,status:i.state.status})==="purple").length),r=He(a=>a().getAll().filter(i=>At({isPaused:i.state.isPaused,status:i.state.status})==="red").length),o=xe(),s=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,l=M(()=>o()==="dark"?Ue(s):Ne(s));return(()=>{var a=vn();return k(a,v(ut,{label:"Paused",color:"purple",get count(){return n()}}),null),k(a,v(ut,{label:"Pending",color:"yellow",get count(){return t()}}),null),k(a,v(ut,{label:"Success",color:"green",get count(){return e()}}),null),k(a,v(ut,{label:"Error",color:"red",get count(){return r()}}),null),N(()=>T(a,O(l().queryStatusContainer,"tsqd-query-status-container"))),a})()},ut=e=>{let t=xe(),n=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,r=M(()=>t()==="dark"?Ue(n):Ne(n)),{colors:o,alpha:s}=C,l=(f,h)=>t()==="dark"?h:f,a,[i,c]=z(!1),[u,d]=z(!1),g=M(()=>!(Pe()&&je()<js&&je()>Ft||je()<Ft));return(()=>{var f=Rd(),h=f.firstChild,p=h.nextSibling,m=a;return typeof m=="function"?zt(m,f):a=f,f.addEventListener("mouseleave",()=>{c(!1),d(!1)}),f.addEventListener("mouseenter",()=>c(!0)),f.addEventListener("blur",()=>d(!1)),f.addEventListener("focus",()=>d(!0)),eo(f,j({get disabled(){return g()},get class(){return O(r().queryStatusTag,!g()&&n`
|
|
190
|
-
cursor: pointer;
|
|
191
|
-
&:hover {
|
|
192
|
-
background: ${l(o.gray[200],o.darkGray[400])}${s[80]};
|
|
193
|
-
}
|
|
194
|
-
`,"tsqd-query-status-tag",`tsqd-query-status-tag-${e.label.toLowerCase()}`)}},()=>i()||u()?{"aria-describedby":"tsqd-status-tooltip"}:{}),!1,!0),k(f,v(R,{get when(){return M(()=>!g())()&&(i()||u())},get children(){var y=_d();return k(y,()=>e.label),N(()=>T(y,O(r().statusTooltip,"tsqd-query-status-tooltip"))),y}}),h),k(f,v(R,{get when(){return g()},get children(){var y=zd();return k(y,()=>e.label),N(()=>T(y,O(r().queryStatusTagLabel,"tsqd-query-status-tag-label"))),y}}),p),k(p,()=>e.count),N(y=>{var b=O(n`
|
|
195
|
-
width: ${C.size[1.5]};
|
|
196
|
-
height: ${C.size[1.5]};
|
|
197
|
-
border-radius: ${C.border.radius.full};
|
|
198
|
-
background-color: ${C.colors[e.color][500]};
|
|
199
|
-
`,"tsqd-query-status-tag-dot"),x=O(r().queryStatusCount,e.count>0&&e.color!=="gray"&&n`
|
|
200
|
-
background-color: ${l(o[e.color][100],o[e.color][900])};
|
|
201
|
-
color: ${l(o[e.color][700],o[e.color][300])};
|
|
202
|
-
`,"tsqd-query-status-tag-count");return b!==y.e&&T(h,y.e=b),x!==y.t&&T(p,y.t=x),y},{e:void 0,t:void 0}),f})()},Jd=()=>{let e=xe(),t=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,n=M(()=>e()==="dark"?Ue(t):Ne(t)),{colors:r}=C,o=(S,q)=>e()==="dark"?q:S,s=K().client,[l,a]=z(!1),[i,c]=z("view"),[u,d]=z(!1),g=M(()=>K().errorTypes||[]),f=we(S=>S().getAll().find(q=>q.queryHash===Pe()),!1),h=we(S=>S().getAll().find(q=>q.queryHash===Pe()),!1),p=we(S=>S().getAll().find(q=>q.queryHash===Pe())?.state,!1),m=we(S=>S().getAll().find(q=>q.queryHash===Pe())?.state.data,!1),y=we(S=>{let q=S().getAll().find(H=>H.queryHash===Pe());return q?Dt(q):"inactive"}),b=we(S=>{let q=S().getAll().find(H=>H.queryHash===Pe());return q?q.state.status:"pending"}),x=we(S=>S().getAll().find(q=>q.queryHash===Pe())?.getObserversCount()??0),w=M(()=>so(y())),$=()=>{f()?.fetch()?.catch(()=>{})},L=S=>{let q=S?.initializer(f())??new Error("Unknown error from devtools"),H=f().options;f().setState({status:"error",error:q,fetchMeta:{...f().state.fetchMeta,__previousQueryOptions:H}})},F=()=>{let S=f(),q=S.state,H=S.state.fetchMeta?S.state.fetchMeta.__previousQueryOptions:null;S.cancel({silent:!0}),S.setState({...q,fetchStatus:"idle",fetchMeta:null}),H&&S.fetch(H)};B(()=>{y()!=="fetching"&&a(!1)});let P=()=>w()==="gray"?t`
|
|
203
|
-
background-color: ${o(r[w()][200],r[w()][700])};
|
|
204
|
-
color: ${o(r[w()][700],r[w()][300])};
|
|
205
|
-
border-color: ${o(r[w()][400],r[w()][600])};
|
|
206
|
-
`:t`
|
|
207
|
-
background-color: ${o(r[w()][100],r[w()][900])};
|
|
208
|
-
color: ${o(r[w()][700],r[w()][300])};
|
|
209
|
-
border-color: ${o(r[w()][400],r[w()][600])};
|
|
210
|
-
`;return v(R,{get when(){return M(()=>!!f())()&&p()},get children(){var S=Gd(),q=S.firstChild,H=q.nextSibling,G=H.firstChild,te=G.firstChild,J=te.firstChild,le=te.nextSibling,oe=G.nextSibling,ne=oe.firstChild,ie=ne.nextSibling,ae=oe.nextSibling,ve=ae.firstChild,Ae=ve.nextSibling,ge=H.nextSibling,Ee=ge.nextSibling,D=Ee.firstChild,fe=D.firstChild,Y=D.nextSibling,ht=Y.firstChild,V=Y.nextSibling,Ge=V.firstChild,$e=V.nextSibling,Ot=$e.firstChild,qe=$e.nextSibling,vt=qe.firstChild,St=vt.nextSibling,nt=Ee.nextSibling;nt.firstChild;var Ye=nt.nextSibling,rt=Ye.nextSibling;return k(J,()=>Zt(f().queryKey,!0)),k(le,y),k(ie,x),k(Ae,()=>new Date(p().dataUpdatedAt).toLocaleTimeString()),D.$$click=$,Y.$$click=()=>s.invalidateQueries(f()),V.$$click=()=>s.resetQueries(f()),$e.$$click=()=>{s.removeQueries(f()),Nn(null)},qe.$$click=()=>{if(f()?.state.data===void 0)a(!0),F();else{let I=f();if(!I)return;let re=I.options;I.fetch({...re,queryFn:()=>new Promise(()=>{}),gcTime:-1}),I.setState({data:void 0,status:"pending",fetchMeta:{...I.state.fetchMeta,__previousQueryOptions:re}})}},k(qe,()=>b()==="pending"?"Restore":"Trigger",St),k(Ee,v(R,{get when(){return g().length===0||b()==="error"},get children(){var I=Kd(),re=I.firstChild,Me=re.nextSibling;return I.$$click=()=>{f().state.error?s.resetQueries(f()):L()},k(I,()=>b()==="error"?"Restore":"Trigger",Me),N(se=>{var ee=O(t`
|
|
211
|
-
color: ${o(r.red[500],r.red[400])};
|
|
212
|
-
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-error"),ce=b()==="pending",pe=t`
|
|
213
|
-
background-color: ${o(r.red[500],r.red[400])};
|
|
214
|
-
`;return ee!==se.e&&T(I,se.e=ee),ce!==se.t&&(I.disabled=se.t=ce),pe!==se.a&&T(re,se.a=pe),se},{e:void 0,t:void 0,a:void 0}),I}}),null),k(Ee,v(R,{get when(){return!(g().length===0||b()==="error")},get children(){var I=Bd(),re=I.firstChild,Me=re.nextSibling,se=Me.nextSibling;return se.firstChild,se.addEventListener("change",ee=>{let ce=g().find(pe=>pe.name===ee.currentTarget.value);L(ce)}),k(se,v(Wr,{get each(){return g()},children:ee=>(()=>{var ce=Vd();return k(ce,()=>ee.name),N(()=>ce.value=ee.name),ce})()}),null),k(I,v(on,{}),null),N(ee=>{var ce=O(n().actionsSelect,"tsqd-query-details-actions-btn","tsqd-query-details-action-error-multiple"),pe=t`
|
|
215
|
-
background-color: ${C.colors.red[400]};
|
|
216
|
-
`,Z=b()==="pending";return ce!==ee.e&&T(I,ee.e=ce),pe!==ee.t&&T(re,ee.t=pe),Z!==ee.a&&(se.disabled=ee.a=Z),ee},{e:void 0,t:void 0,a:void 0}),I}}),null),k(nt,()=>i()==="view"?"Explorer":"Editor",null),k(S,v(R,{get when(){return i()==="view"},get children(){var I=Nd();return k(I,v(yt,{label:"Data",defaultExpanded:["Data"],get value(){return m()},editable:!0,onEdit:()=>c("edit"),get activeQuery(){return f()}})),N(re=>(re=C.size[2])!=null?I.style.setProperty("padding",re):I.style.removeProperty("padding")),I}}),Ye),k(S,v(R,{get when(){return i()==="edit"},get children(){var I=Ud(),re=I.firstChild,Me=re.nextSibling,se=Me.firstChild,ee=se.nextSibling,ce=ee.firstChild,pe=ce.nextSibling;return I.addEventListener("submit",Z=>{Z.preventDefault();let it=new FormData(Z.currentTarget).get("data");try{let Ve=JSON.parse(it);f().setState({...f().state,data:Ve}),c("view")}catch{d(!0)}}),re.addEventListener("focus",()=>d(!1)),k(se,()=>u()?"Invalid Value":""),ce.$$click=()=>c("view"),N(Z=>{var ot=O(n().devtoolsEditForm,"tsqd-query-details-data-editor"),it=n().devtoolsEditTextarea,Ve=u(),kt=n().devtoolsEditFormActions,st=n().devtoolsEditFormError,Et=n().devtoolsEditFormActionContainer,lt=O(n().devtoolsEditFormAction,t`
|
|
217
|
-
color: ${o(r.gray[600],r.gray[300])};
|
|
218
|
-
`),pt=O(n().devtoolsEditFormAction,t`
|
|
219
|
-
color: ${o(r.blue[600],r.blue[400])};
|
|
220
|
-
`);return ot!==Z.e&&T(I,Z.e=ot),it!==Z.t&&T(re,Z.t=it),Ve!==Z.a&&A(re,"data-error",Z.a=Ve),kt!==Z.o&&T(Me,Z.o=kt),st!==Z.i&&T(se,Z.i=st),Et!==Z.n&&T(ee,Z.n=Et),lt!==Z.s&&T(ce,Z.s=lt),pt!==Z.h&&T(pe,Z.h=pt),Z},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0}),N(()=>re.value=JSON.stringify(m(),null,2)),I}}),Ye),k(rt,v(yt,{label:"Query",defaultExpanded:["Query","queryKey"],get value(){return h()}})),N(I=>{var re=O(n().detailsContainer,"tsqd-query-details-container"),Me=O(n().detailsHeader,"tsqd-query-details-header"),se=O(n().detailsBody,"tsqd-query-details-summary-container"),ee=O(n().queryDetailsStatus,P()),ce=O(n().detailsHeader,"tsqd-query-details-header"),pe=O(n().actionsBody,"tsqd-query-details-actions-container"),Z=O(t`
|
|
221
|
-
color: ${o(r.blue[600],r.blue[400])};
|
|
222
|
-
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-refetch"),ot=y()==="fetching",it=t`
|
|
223
|
-
background-color: ${o(r.blue[600],r.blue[400])};
|
|
224
|
-
`,Ve=O(t`
|
|
225
|
-
color: ${o(r.yellow[600],r.yellow[400])};
|
|
226
|
-
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-invalidate"),kt=b()==="pending",st=t`
|
|
227
|
-
background-color: ${o(r.yellow[600],r.yellow[400])};
|
|
228
|
-
`,Et=O(t`
|
|
229
|
-
color: ${o(r.gray[600],r.gray[300])};
|
|
230
|
-
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-reset"),lt=b()==="pending",pt=t`
|
|
231
|
-
background-color: ${o(r.gray[600],r.gray[400])};
|
|
232
|
-
`,pn=O(t`
|
|
233
|
-
color: ${o(r.pink[500],r.pink[400])};
|
|
234
|
-
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-remove"),Wt=y()==="fetching",mn=t`
|
|
235
|
-
background-color: ${o(r.pink[500],r.pink[400])};
|
|
236
|
-
`,qt=O(t`
|
|
237
|
-
color: ${o(r.cyan[500],r.cyan[400])};
|
|
238
|
-
`,"tsqd-query-details-actions-btn","tsqd-query-details-action-loading"),yn=l(),Qt=t`
|
|
239
|
-
background-color: ${o(r.cyan[500],r.cyan[400])};
|
|
240
|
-
`,Yt=O(n().detailsHeader,"tsqd-query-details-header"),Xt=O(n().detailsHeader,"tsqd-query-details-header"),_t=C.size[2];return re!==I.e&&T(S,I.e=re),Me!==I.t&&T(q,I.t=Me),se!==I.a&&T(H,I.a=se),ee!==I.o&&T(le,I.o=ee),ce!==I.i&&T(ge,I.i=ce),pe!==I.n&&T(Ee,I.n=pe),Z!==I.s&&T(D,I.s=Z),ot!==I.h&&(D.disabled=I.h=ot),it!==I.r&&T(fe,I.r=it),Ve!==I.d&&T(Y,I.d=Ve),kt!==I.l&&(Y.disabled=I.l=kt),st!==I.u&&T(ht,I.u=st),Et!==I.c&&T(V,I.c=Et),lt!==I.w&&(V.disabled=I.w=lt),pt!==I.m&&T(Ge,I.m=pt),pn!==I.f&&T($e,I.f=pn),Wt!==I.y&&($e.disabled=I.y=Wt),mn!==I.g&&T(Ot,I.g=mn),qt!==I.p&&T(qe,I.p=qt),yn!==I.b&&(qe.disabled=I.b=yn),Qt!==I.T&&T(vt,I.T=Qt),Yt!==I.A&&T(nt,I.A=Yt),Xt!==I.O&&T(Ye,I.O=Xt),_t!==I.I&&((I.I=_t)!=null?rt.style.setProperty("padding",_t):rt.style.removeProperty("padding")),I},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0,c:void 0,w:void 0,m:void 0,f:void 0,y:void 0,g:void 0,p:void 0,b:void 0,T:void 0,A:void 0,O:void 0,I:void 0}),S}})},e0=()=>{let e=xe(),t=K().shadowDOMTarget?W.bind({target:K().shadowDOMTarget}):W,n=M(()=>e()==="dark"?Ue(t):Ne(t)),{colors:r}=C,o=(u,d)=>e()==="dark"?d:u,s=He(u=>{let g=u().getAll().find(f=>f.mutationId===bt());return g?g.state.isPaused:!1}),l=He(u=>{let g=u().getAll().find(f=>f.mutationId===bt());return g?g.state.status:"idle"}),a=M(()=>At({isPaused:s(),status:l()})),i=He(u=>u().getAll().find(d=>d.mutationId===bt()),!1),c=()=>a()==="gray"?t`
|
|
241
|
-
background-color: ${o(r[a()][200],r[a()][700])};
|
|
242
|
-
color: ${o(r[a()][700],r[a()][300])};
|
|
243
|
-
border-color: ${o(r[a()][400],r[a()][600])};
|
|
244
|
-
`:t`
|
|
245
|
-
background-color: ${o(r[a()][100],r[a()][900])};
|
|
246
|
-
color: ${o(r[a()][700],r[a()][300])};
|
|
247
|
-
border-color: ${o(r[a()][400],r[a()][600])};
|
|
248
|
-
`;return v(R,{get when(){return i()},get children(){var u=Hd(),d=u.firstChild,g=d.nextSibling,f=g.firstChild,h=f.firstChild,p=h.firstChild,m=h.nextSibling,y=f.nextSibling,b=y.firstChild,x=b.nextSibling,w=g.nextSibling,$=w.nextSibling,L=$.nextSibling,F=L.nextSibling,P=F.nextSibling,S=P.nextSibling,q=S.nextSibling,H=q.nextSibling;return k(p,v(R,{get when(){return i().options.mutationKey},fallback:"No mutationKey found",get children(){return Zt(i().options.mutationKey,!0)}})),k(m,v(R,{get when(){return a()==="purple"},children:"pending"}),null),k(m,v(R,{get when(){return a()!=="purple"},get children(){return l()}}),null),k(x,()=>new Date(i().state.submittedAt).toLocaleTimeString()),k($,v(yt,{label:"Variables",defaultExpanded:["Variables"],get value(){return i().state.variables}})),k(F,v(yt,{label:"Context",defaultExpanded:["Context"],get value(){return i().state.context}})),k(S,v(yt,{label:"Data",defaultExpanded:["Data"],get value(){return i().state.data}})),k(H,v(yt,{label:"Mutation",defaultExpanded:["Mutation"],get value(){return i()}})),N(G=>{var te=O(n().detailsContainer,"tsqd-query-details-container"),J=O(n().detailsHeader,"tsqd-query-details-header"),le=O(n().detailsBody,"tsqd-query-details-summary-container"),oe=O(n().queryDetailsStatus,c()),ne=O(n().detailsHeader,"tsqd-query-details-header"),ie=C.size[2],ae=O(n().detailsHeader,"tsqd-query-details-header"),ve=C.size[2],Ae=O(n().detailsHeader,"tsqd-query-details-header"),ge=C.size[2],Ee=O(n().detailsHeader,"tsqd-query-details-header"),D=C.size[2];return te!==G.e&&T(u,G.e=te),J!==G.t&&T(d,G.t=J),le!==G.a&&T(g,G.a=le),oe!==G.o&&T(m,G.o=oe),ne!==G.i&&T(w,G.i=ne),ie!==G.n&&((G.n=ie)!=null?$.style.setProperty("padding",ie):$.style.removeProperty("padding")),ae!==G.s&&T(L,G.s=ae),ve!==G.h&&((G.h=ve)!=null?F.style.setProperty("padding",ve):F.style.removeProperty("padding")),Ae!==G.r&&T(P,G.r=Ae),ge!==G.d&&((G.d=ge)!=null?S.style.setProperty("padding",ge):S.style.removeProperty("padding")),Ee!==G.l&&T(q,G.l=Ee),D!==G.u&&((G.u=D)!=null?H.style.setProperty("padding",D):H.style.removeProperty("padding")),G},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0,n:void 0,s:void 0,h:void 0,r:void 0,d:void 0,l:void 0,u:void 0}),u}})},In=new Map,t0=()=>{let e=M(()=>K().client.getQueryCache()),t=e().subscribe(n=>{Vr(()=>{for(let[r,o]of In.entries())o.shouldUpdate(n)&&o.setter(r(e))})});return U(()=>{In.clear(),t()}),t},we=(e,t=!0,n=()=>!0)=>{let r=M(()=>K().client.getQueryCache()),[o,s]=z(e(r),t?void 0:{equals:!1});return B(()=>{s(e(r))}),In.set(e,{setter:s,shouldUpdate:n}),U(()=>{In.delete(e)}),o},Pn=new Map,n0=()=>{let e=M(()=>K().client.getMutationCache()),t=e().subscribe(()=>{for(let[n,r]of Pn.entries())queueMicrotask(()=>{r(n(e))})});return U(()=>{Pn.clear(),t()}),t},He=(e,t=!0)=>{let n=M(()=>K().client.getMutationCache()),[r,o]=z(e(n),t?void 0:{equals:!1});return B(()=>{o(e(n))}),Pn.set(e,o),U(()=>{Pn.delete(e)}),r},Os=(e,t)=>{let{colors:n,font:r,size:o,alpha:s,shadow:l,border:a}=C,i=(c,u)=>e==="light"?c:u;return{devtoolsBtn:t`
|
|
249
|
-
z-index: 100000;
|
|
250
|
-
position: fixed;
|
|
251
|
-
padding: 4px;
|
|
252
|
-
text-align: left;
|
|
253
|
-
|
|
254
|
-
display: flex;
|
|
255
|
-
align-items: center;
|
|
256
|
-
justify-content: center;
|
|
257
|
-
border-radius: 9999px;
|
|
258
|
-
box-shadow: ${l.md()};
|
|
259
|
-
overflow: hidden;
|
|
260
|
-
|
|
261
|
-
& div {
|
|
262
|
-
position: absolute;
|
|
263
|
-
top: -8px;
|
|
264
|
-
left: -8px;
|
|
265
|
-
right: -8px;
|
|
266
|
-
bottom: -8px;
|
|
267
|
-
border-radius: 9999px;
|
|
268
|
-
|
|
269
|
-
& svg {
|
|
270
|
-
position: absolute;
|
|
271
|
-
width: 100%;
|
|
272
|
-
height: 100%;
|
|
273
|
-
}
|
|
274
|
-
filter: blur(6px) saturate(1.2) contrast(1.1);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
&:focus-within {
|
|
278
|
-
outline-offset: 2px;
|
|
279
|
-
outline: 3px solid ${n.green[600]};
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
& button {
|
|
283
|
-
position: relative;
|
|
284
|
-
z-index: 1;
|
|
285
|
-
padding: 0;
|
|
286
|
-
border-radius: 9999px;
|
|
287
|
-
background-color: transparent;
|
|
288
|
-
border: none;
|
|
289
|
-
height: 40px;
|
|
290
|
-
display: flex;
|
|
291
|
-
width: 40px;
|
|
292
|
-
overflow: hidden;
|
|
293
|
-
cursor: pointer;
|
|
294
|
-
outline: none;
|
|
295
|
-
& svg {
|
|
296
|
-
position: absolute;
|
|
297
|
-
width: 100%;
|
|
298
|
-
height: 100%;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
`,panel:t`
|
|
302
|
-
position: fixed;
|
|
303
|
-
z-index: 9999;
|
|
304
|
-
display: flex;
|
|
305
|
-
gap: ${C.size[.5]};
|
|
306
|
-
& * {
|
|
307
|
-
box-sizing: border-box;
|
|
308
|
-
text-transform: none;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
& *::-webkit-scrollbar {
|
|
312
|
-
width: 7px;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
& *::-webkit-scrollbar-track {
|
|
316
|
-
background: transparent;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
& *::-webkit-scrollbar-thumb {
|
|
320
|
-
background: ${i(n.gray[300],n.darkGray[200])};
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
& *::-webkit-scrollbar-thumb:hover {
|
|
324
|
-
background: ${i(n.gray[400],n.darkGray[300])};
|
|
325
|
-
}
|
|
326
|
-
`,parentPanel:t`
|
|
327
|
-
z-index: 9999;
|
|
328
|
-
display: flex;
|
|
329
|
-
height: 100%;
|
|
330
|
-
gap: ${C.size[.5]};
|
|
331
|
-
& * {
|
|
332
|
-
box-sizing: border-box;
|
|
333
|
-
text-transform: none;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
& *::-webkit-scrollbar {
|
|
337
|
-
width: 7px;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
& *::-webkit-scrollbar-track {
|
|
341
|
-
background: transparent;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
& *::-webkit-scrollbar-thumb {
|
|
345
|
-
background: ${i(n.gray[300],n.darkGray[200])};
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
& *::-webkit-scrollbar-thumb:hover {
|
|
349
|
-
background: ${i(n.gray[400],n.darkGray[300])};
|
|
350
|
-
}
|
|
351
|
-
`,"devtoolsBtn-position-bottom-right":t`
|
|
352
|
-
bottom: 12px;
|
|
353
|
-
right: 12px;
|
|
354
|
-
`,"devtoolsBtn-position-bottom-left":t`
|
|
355
|
-
bottom: 12px;
|
|
356
|
-
left: 12px;
|
|
357
|
-
`,"devtoolsBtn-position-top-left":t`
|
|
358
|
-
top: 12px;
|
|
359
|
-
left: 12px;
|
|
360
|
-
`,"devtoolsBtn-position-top-right":t`
|
|
361
|
-
top: 12px;
|
|
362
|
-
right: 12px;
|
|
363
|
-
`,"devtoolsBtn-position-relative":t`
|
|
364
|
-
position: relative;
|
|
365
|
-
`,"panel-position-top":t`
|
|
366
|
-
top: 0;
|
|
367
|
-
right: 0;
|
|
368
|
-
left: 0;
|
|
369
|
-
max-height: 90%;
|
|
370
|
-
min-height: ${o[14]};
|
|
371
|
-
border-bottom: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
372
|
-
`,"panel-position-bottom":t`
|
|
373
|
-
bottom: 0;
|
|
374
|
-
right: 0;
|
|
375
|
-
left: 0;
|
|
376
|
-
max-height: 90%;
|
|
377
|
-
min-height: ${o[14]};
|
|
378
|
-
border-top: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
379
|
-
`,"panel-position-right":t`
|
|
380
|
-
bottom: 0;
|
|
381
|
-
right: 0;
|
|
382
|
-
top: 0;
|
|
383
|
-
border-left: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
384
|
-
max-width: 90%;
|
|
385
|
-
`,"panel-position-left":t`
|
|
386
|
-
bottom: 0;
|
|
387
|
-
left: 0;
|
|
388
|
-
top: 0;
|
|
389
|
-
border-right: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
390
|
-
max-width: 90%;
|
|
391
|
-
`,closeBtn:t`
|
|
392
|
-
position: absolute;
|
|
393
|
-
cursor: pointer;
|
|
394
|
-
z-index: 5;
|
|
395
|
-
display: flex;
|
|
396
|
-
align-items: center;
|
|
397
|
-
justify-content: center;
|
|
398
|
-
outline: none;
|
|
399
|
-
background-color: ${i(n.gray[50],n.darkGray[700])};
|
|
400
|
-
&:hover {
|
|
401
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
402
|
-
}
|
|
403
|
-
&:focus-visible {
|
|
404
|
-
outline: 2px solid ${n.blue[600]};
|
|
405
|
-
}
|
|
406
|
-
& svg {
|
|
407
|
-
color: ${i(n.gray[600],n.gray[400])};
|
|
408
|
-
width: ${o[2]};
|
|
409
|
-
height: ${o[2]};
|
|
410
|
-
}
|
|
411
|
-
`,"closeBtn-position-top":t`
|
|
412
|
-
bottom: 0;
|
|
413
|
-
right: ${o[2]};
|
|
414
|
-
transform: translate(0, 100%);
|
|
415
|
-
border-right: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
416
|
-
border-left: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
417
|
-
border-top: none;
|
|
418
|
-
border-bottom: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
419
|
-
border-radius: 0px 0px ${a.radius.sm} ${a.radius.sm};
|
|
420
|
-
padding: ${o[.5]} ${o[1.5]} ${o[1]} ${o[1.5]};
|
|
421
|
-
|
|
422
|
-
&::after {
|
|
423
|
-
content: ' ';
|
|
424
|
-
position: absolute;
|
|
425
|
-
bottom: 100%;
|
|
426
|
-
left: -${o[2.5]};
|
|
427
|
-
height: ${o[1.5]};
|
|
428
|
-
width: calc(100% + ${o[5]});
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
& svg {
|
|
432
|
-
transform: rotate(180deg);
|
|
433
|
-
}
|
|
434
|
-
`,"closeBtn-position-bottom":t`
|
|
435
|
-
top: 0;
|
|
436
|
-
right: ${o[2]};
|
|
437
|
-
transform: translate(0, -100%);
|
|
438
|
-
border-right: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
439
|
-
border-left: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
440
|
-
border-top: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
441
|
-
border-bottom: none;
|
|
442
|
-
border-radius: ${a.radius.sm} ${a.radius.sm} 0px 0px;
|
|
443
|
-
padding: ${o[1]} ${o[1.5]} ${o[.5]} ${o[1.5]};
|
|
444
|
-
|
|
445
|
-
&::after {
|
|
446
|
-
content: ' ';
|
|
447
|
-
position: absolute;
|
|
448
|
-
top: 100%;
|
|
449
|
-
left: -${o[2.5]};
|
|
450
|
-
height: ${o[1.5]};
|
|
451
|
-
width: calc(100% + ${o[5]});
|
|
452
|
-
}
|
|
453
|
-
`,"closeBtn-position-right":t`
|
|
454
|
-
bottom: ${o[2]};
|
|
455
|
-
left: 0;
|
|
456
|
-
transform: translate(-100%, 0);
|
|
457
|
-
border-right: none;
|
|
458
|
-
border-left: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
459
|
-
border-top: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
460
|
-
border-bottom: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
461
|
-
border-radius: ${a.radius.sm} 0px 0px ${a.radius.sm};
|
|
462
|
-
padding: ${o[1.5]} ${o[.5]} ${o[1.5]} ${o[1]};
|
|
463
|
-
|
|
464
|
-
&::after {
|
|
465
|
-
content: ' ';
|
|
466
|
-
position: absolute;
|
|
467
|
-
left: 100%;
|
|
468
|
-
height: calc(100% + ${o[5]});
|
|
469
|
-
width: ${o[1.5]};
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
& svg {
|
|
473
|
-
transform: rotate(-90deg);
|
|
474
|
-
}
|
|
475
|
-
`,"closeBtn-position-left":t`
|
|
476
|
-
bottom: ${o[2]};
|
|
477
|
-
right: 0;
|
|
478
|
-
transform: translate(100%, 0);
|
|
479
|
-
border-left: none;
|
|
480
|
-
border-right: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
481
|
-
border-top: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
482
|
-
border-bottom: ${i(n.gray[400],n.darkGray[300])} 1px solid;
|
|
483
|
-
border-radius: 0px ${a.radius.sm} ${a.radius.sm} 0px;
|
|
484
|
-
padding: ${o[1.5]} ${o[1]} ${o[1.5]} ${o[.5]};
|
|
485
|
-
|
|
486
|
-
&::after {
|
|
487
|
-
content: ' ';
|
|
488
|
-
position: absolute;
|
|
489
|
-
right: 100%;
|
|
490
|
-
height: calc(100% + ${o[5]});
|
|
491
|
-
width: ${o[1.5]};
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
& svg {
|
|
495
|
-
transform: rotate(90deg);
|
|
496
|
-
}
|
|
497
|
-
`,queriesContainer:t`
|
|
498
|
-
flex: 1 1 700px;
|
|
499
|
-
background-color: ${i(n.gray[50],n.darkGray[700])};
|
|
500
|
-
display: flex;
|
|
501
|
-
flex-direction: column;
|
|
502
|
-
& * {
|
|
503
|
-
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
504
|
-
}
|
|
505
|
-
`,dragHandle:t`
|
|
506
|
-
position: absolute;
|
|
507
|
-
transition: background-color 0.125s ease;
|
|
508
|
-
&:hover {
|
|
509
|
-
background-color: ${n.purple[400]}${i("",s[90])};
|
|
510
|
-
}
|
|
511
|
-
z-index: 4;
|
|
512
|
-
`,"dragHandle-position-top":t`
|
|
513
|
-
bottom: 0;
|
|
514
|
-
width: 100%;
|
|
515
|
-
height: 3px;
|
|
516
|
-
cursor: ns-resize;
|
|
517
|
-
`,"dragHandle-position-bottom":t`
|
|
518
|
-
top: 0;
|
|
519
|
-
width: 100%;
|
|
520
|
-
height: 3px;
|
|
521
|
-
cursor: ns-resize;
|
|
522
|
-
`,"dragHandle-position-right":t`
|
|
523
|
-
left: 0;
|
|
524
|
-
width: 3px;
|
|
525
|
-
height: 100%;
|
|
526
|
-
cursor: ew-resize;
|
|
527
|
-
`,"dragHandle-position-left":t`
|
|
528
|
-
right: 0;
|
|
529
|
-
width: 3px;
|
|
530
|
-
height: 100%;
|
|
531
|
-
cursor: ew-resize;
|
|
532
|
-
`,row:t`
|
|
533
|
-
display: flex;
|
|
534
|
-
justify-content: space-between;
|
|
535
|
-
align-items: center;
|
|
536
|
-
padding: ${C.size[2]} ${C.size[2.5]};
|
|
537
|
-
gap: ${C.size[2.5]};
|
|
538
|
-
border-bottom: ${i(n.gray[300],n.darkGray[500])} 1px solid;
|
|
539
|
-
align-items: center;
|
|
540
|
-
& > button {
|
|
541
|
-
padding: 0;
|
|
542
|
-
background: transparent;
|
|
543
|
-
border: none;
|
|
544
|
-
display: flex;
|
|
545
|
-
gap: ${o[.5]};
|
|
546
|
-
flex-direction: column;
|
|
547
|
-
}
|
|
548
|
-
`,logoAndToggleContainer:t`
|
|
549
|
-
display: flex;
|
|
550
|
-
gap: ${C.size[3]};
|
|
551
|
-
align-items: center;
|
|
552
|
-
`,logo:t`
|
|
553
|
-
cursor: pointer;
|
|
554
|
-
display: flex;
|
|
555
|
-
flex-direction: column;
|
|
556
|
-
background-color: transparent;
|
|
557
|
-
border: none;
|
|
558
|
-
gap: ${C.size[.5]};
|
|
559
|
-
padding: 0px;
|
|
560
|
-
&:hover {
|
|
561
|
-
opacity: 0.7;
|
|
562
|
-
}
|
|
563
|
-
&:focus-visible {
|
|
564
|
-
outline-offset: 4px;
|
|
565
|
-
border-radius: ${a.radius.xs};
|
|
566
|
-
outline: 2px solid ${n.blue[800]};
|
|
567
|
-
}
|
|
568
|
-
`,tanstackLogo:t`
|
|
569
|
-
font-size: ${r.size.md};
|
|
570
|
-
font-weight: ${r.weight.bold};
|
|
571
|
-
line-height: ${r.lineHeight.xs};
|
|
572
|
-
white-space: nowrap;
|
|
573
|
-
color: ${i(n.gray[600],n.gray[300])};
|
|
574
|
-
`,queryFlavorLogo:t`
|
|
575
|
-
font-weight: ${r.weight.semibold};
|
|
576
|
-
font-size: ${r.size.xs};
|
|
577
|
-
background: linear-gradient(
|
|
578
|
-
to right,
|
|
579
|
-
${i("#ea4037, #ff9b11","#dd524b, #e9a03b")}
|
|
580
|
-
);
|
|
581
|
-
background-clip: text;
|
|
582
|
-
-webkit-background-clip: text;
|
|
583
|
-
line-height: 1;
|
|
584
|
-
-webkit-text-fill-color: transparent;
|
|
585
|
-
white-space: nowrap;
|
|
586
|
-
`,queryStatusContainer:t`
|
|
587
|
-
display: flex;
|
|
588
|
-
gap: ${C.size[2]};
|
|
589
|
-
height: min-content;
|
|
590
|
-
`,queryStatusTag:t`
|
|
591
|
-
display: flex;
|
|
592
|
-
gap: ${C.size[1.5]};
|
|
593
|
-
box-sizing: border-box;
|
|
594
|
-
height: ${C.size[6.5]};
|
|
595
|
-
background: ${i(n.gray[50],n.darkGray[500])};
|
|
596
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
597
|
-
border-radius: ${C.border.radius.sm};
|
|
598
|
-
font-size: ${r.size.sm};
|
|
599
|
-
padding: ${C.size[1]};
|
|
600
|
-
padding-left: ${C.size[1.5]};
|
|
601
|
-
align-items: center;
|
|
602
|
-
font-weight: ${r.weight.medium};
|
|
603
|
-
border: ${i("1px solid "+n.gray[300],"1px solid transparent")};
|
|
604
|
-
user-select: none;
|
|
605
|
-
position: relative;
|
|
606
|
-
&:focus-visible {
|
|
607
|
-
outline-offset: 2px;
|
|
608
|
-
outline: 2px solid ${n.blue[800]};
|
|
609
|
-
}
|
|
610
|
-
`,queryStatusTagLabel:t`
|
|
611
|
-
font-size: ${r.size.xs};
|
|
612
|
-
`,queryStatusCount:t`
|
|
613
|
-
font-size: ${r.size.xs};
|
|
614
|
-
padding: 0 5px;
|
|
615
|
-
display: flex;
|
|
616
|
-
align-items: center;
|
|
617
|
-
justify-content: center;
|
|
618
|
-
color: ${i(n.gray[500],n.gray[400])};
|
|
619
|
-
background-color: ${i(n.gray[200],n.darkGray[300])};
|
|
620
|
-
border-radius: 2px;
|
|
621
|
-
font-variant-numeric: tabular-nums;
|
|
622
|
-
height: ${C.size[4.5]};
|
|
623
|
-
`,statusTooltip:t`
|
|
624
|
-
position: absolute;
|
|
625
|
-
z-index: 1;
|
|
626
|
-
background-color: ${i(n.gray[50],n.darkGray[500])};
|
|
627
|
-
top: 100%;
|
|
628
|
-
left: 50%;
|
|
629
|
-
transform: translate(-50%, calc(${C.size[2]}));
|
|
630
|
-
padding: ${C.size[.5]} ${C.size[2]};
|
|
631
|
-
border-radius: ${C.border.radius.sm};
|
|
632
|
-
font-size: ${r.size.xs};
|
|
633
|
-
border: 1px solid ${i(n.gray[400],n.gray[600])};
|
|
634
|
-
color: ${i(n.gray[600],n.gray[300])};
|
|
635
|
-
|
|
636
|
-
&::before {
|
|
637
|
-
top: 0px;
|
|
638
|
-
content: ' ';
|
|
639
|
-
display: block;
|
|
640
|
-
left: 50%;
|
|
641
|
-
transform: translate(-50%, -100%);
|
|
642
|
-
position: absolute;
|
|
643
|
-
border-color: transparent transparent
|
|
644
|
-
${i(n.gray[400],n.gray[600])} transparent;
|
|
645
|
-
border-style: solid;
|
|
646
|
-
border-width: 7px;
|
|
647
|
-
/* transform: rotate(180deg); */
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
&::after {
|
|
651
|
-
top: 0px;
|
|
652
|
-
content: ' ';
|
|
653
|
-
display: block;
|
|
654
|
-
left: 50%;
|
|
655
|
-
transform: translate(-50%, calc(-100% + 2px));
|
|
656
|
-
position: absolute;
|
|
657
|
-
border-color: transparent transparent
|
|
658
|
-
${i(n.gray[100],n.darkGray[500])} transparent;
|
|
659
|
-
border-style: solid;
|
|
660
|
-
border-width: 7px;
|
|
661
|
-
}
|
|
662
|
-
`,filtersContainer:t`
|
|
663
|
-
display: flex;
|
|
664
|
-
gap: ${C.size[2]};
|
|
665
|
-
& > button {
|
|
666
|
-
cursor: pointer;
|
|
667
|
-
padding: ${C.size[.5]} ${C.size[1.5]} ${C.size[.5]}
|
|
668
|
-
${C.size[2]};
|
|
669
|
-
border-radius: ${C.border.radius.sm};
|
|
670
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
671
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[200])};
|
|
672
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
673
|
-
font-size: ${r.size.xs};
|
|
674
|
-
display: flex;
|
|
675
|
-
align-items: center;
|
|
676
|
-
line-height: ${r.lineHeight.sm};
|
|
677
|
-
gap: ${C.size[1.5]};
|
|
678
|
-
max-width: 160px;
|
|
679
|
-
&:focus-visible {
|
|
680
|
-
outline-offset: 2px;
|
|
681
|
-
border-radius: ${a.radius.xs};
|
|
682
|
-
outline: 2px solid ${n.blue[800]};
|
|
683
|
-
}
|
|
684
|
-
& svg {
|
|
685
|
-
width: ${C.size[3]};
|
|
686
|
-
height: ${C.size[3]};
|
|
687
|
-
color: ${i(n.gray[500],n.gray[400])};
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
`,filterInput:t`
|
|
691
|
-
padding: ${o[.5]} ${o[2]};
|
|
692
|
-
border-radius: ${C.border.radius.sm};
|
|
693
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
694
|
-
display: flex;
|
|
695
|
-
box-sizing: content-box;
|
|
696
|
-
align-items: center;
|
|
697
|
-
gap: ${C.size[1.5]};
|
|
698
|
-
max-width: 160px;
|
|
699
|
-
min-width: 100px;
|
|
700
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[200])};
|
|
701
|
-
height: min-content;
|
|
702
|
-
color: ${i(n.gray[600],n.gray[400])};
|
|
703
|
-
& > svg {
|
|
704
|
-
width: ${o[3]};
|
|
705
|
-
height: ${o[3]};
|
|
706
|
-
}
|
|
707
|
-
& input {
|
|
708
|
-
font-size: ${r.size.xs};
|
|
709
|
-
width: 100%;
|
|
710
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
711
|
-
border: none;
|
|
712
|
-
padding: 0;
|
|
713
|
-
line-height: ${r.lineHeight.sm};
|
|
714
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
715
|
-
&::placeholder {
|
|
716
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
717
|
-
}
|
|
718
|
-
&:focus {
|
|
719
|
-
outline: none;
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
&:focus-within {
|
|
724
|
-
outline-offset: 2px;
|
|
725
|
-
border-radius: ${a.radius.xs};
|
|
726
|
-
outline: 2px solid ${n.blue[800]};
|
|
727
|
-
}
|
|
728
|
-
`,filterSelect:t`
|
|
729
|
-
padding: ${C.size[.5]} ${C.size[2]};
|
|
730
|
-
border-radius: ${C.border.radius.sm};
|
|
731
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
732
|
-
display: flex;
|
|
733
|
-
align-items: center;
|
|
734
|
-
gap: ${C.size[1.5]};
|
|
735
|
-
box-sizing: content-box;
|
|
736
|
-
max-width: 160px;
|
|
737
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[200])};
|
|
738
|
-
height: min-content;
|
|
739
|
-
& > svg {
|
|
740
|
-
color: ${i(n.gray[600],n.gray[400])};
|
|
741
|
-
width: ${C.size[2]};
|
|
742
|
-
height: ${C.size[2]};
|
|
743
|
-
}
|
|
744
|
-
& > select {
|
|
745
|
-
appearance: none;
|
|
746
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
747
|
-
min-width: 100px;
|
|
748
|
-
line-height: ${r.lineHeight.sm};
|
|
749
|
-
font-size: ${r.size.xs};
|
|
750
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
751
|
-
border: none;
|
|
752
|
-
&:focus {
|
|
753
|
-
outline: none;
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
&:focus-within {
|
|
757
|
-
outline-offset: 2px;
|
|
758
|
-
border-radius: ${a.radius.xs};
|
|
759
|
-
outline: 2px solid ${n.blue[800]};
|
|
760
|
-
}
|
|
761
|
-
`,actionsContainer:t`
|
|
762
|
-
display: flex;
|
|
763
|
-
gap: ${C.size[2]};
|
|
764
|
-
`,actionsBtn:t`
|
|
765
|
-
border-radius: ${C.border.radius.sm};
|
|
766
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
767
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[200])};
|
|
768
|
-
width: ${C.size[6.5]};
|
|
769
|
-
height: ${C.size[6.5]};
|
|
770
|
-
justify-content: center;
|
|
771
|
-
display: flex;
|
|
772
|
-
align-items: center;
|
|
773
|
-
gap: ${C.size[1.5]};
|
|
774
|
-
max-width: 160px;
|
|
775
|
-
cursor: pointer;
|
|
776
|
-
padding: 0;
|
|
777
|
-
&:hover {
|
|
778
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
779
|
-
}
|
|
780
|
-
& svg {
|
|
781
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
782
|
-
width: ${C.size[3]};
|
|
783
|
-
height: ${C.size[3]};
|
|
784
|
-
}
|
|
785
|
-
&:focus-visible {
|
|
786
|
-
outline-offset: 2px;
|
|
787
|
-
border-radius: ${a.radius.xs};
|
|
788
|
-
outline: 2px solid ${n.blue[800]};
|
|
789
|
-
}
|
|
790
|
-
`,actionsBtnOffline:t`
|
|
791
|
-
& svg {
|
|
792
|
-
stroke: ${i(n.yellow[700],n.yellow[500])};
|
|
793
|
-
fill: ${i(n.yellow[700],n.yellow[500])};
|
|
794
|
-
}
|
|
795
|
-
`,overflowQueryContainer:t`
|
|
796
|
-
flex: 1;
|
|
797
|
-
overflow-y: auto;
|
|
798
|
-
& > div {
|
|
799
|
-
display: flex;
|
|
800
|
-
flex-direction: column;
|
|
801
|
-
}
|
|
802
|
-
`,queryRow:t`
|
|
803
|
-
display: flex;
|
|
804
|
-
align-items: center;
|
|
805
|
-
padding: 0;
|
|
806
|
-
border: none;
|
|
807
|
-
cursor: pointer;
|
|
808
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
809
|
-
background-color: ${i(n.gray[50],n.darkGray[700])};
|
|
810
|
-
line-height: 1;
|
|
811
|
-
&:focus {
|
|
812
|
-
outline: none;
|
|
813
|
-
}
|
|
814
|
-
&:focus-visible {
|
|
815
|
-
outline-offset: -2px;
|
|
816
|
-
border-radius: ${a.radius.xs};
|
|
817
|
-
outline: 2px solid ${n.blue[800]};
|
|
818
|
-
}
|
|
819
|
-
&:hover .tsqd-query-hash {
|
|
820
|
-
background-color: ${i(n.gray[200],n.darkGray[600])};
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
& .tsqd-query-observer-count {
|
|
824
|
-
padding: 0 ${C.size[1]};
|
|
825
|
-
user-select: none;
|
|
826
|
-
min-width: ${C.size[6.5]};
|
|
827
|
-
align-self: stretch;
|
|
828
|
-
display: flex;
|
|
829
|
-
align-items: center;
|
|
830
|
-
justify-content: center;
|
|
831
|
-
font-size: ${r.size.xs};
|
|
832
|
-
font-weight: ${r.weight.medium};
|
|
833
|
-
border-bottom-width: 1px;
|
|
834
|
-
border-bottom-style: solid;
|
|
835
|
-
border-bottom: 1px solid ${i(n.gray[300],n.darkGray[700])};
|
|
836
|
-
}
|
|
837
|
-
& .tsqd-query-hash {
|
|
838
|
-
user-select: text;
|
|
839
|
-
font-size: ${r.size.xs};
|
|
840
|
-
display: flex;
|
|
841
|
-
align-items: center;
|
|
842
|
-
min-height: ${C.size[6]};
|
|
843
|
-
flex: 1;
|
|
844
|
-
padding: ${C.size[1]} ${C.size[2]};
|
|
845
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
846
|
-
'Liberation Mono', 'Courier New', monospace;
|
|
847
|
-
border-bottom: 1px solid ${i(n.gray[300],n.darkGray[400])};
|
|
848
|
-
text-align: left;
|
|
849
|
-
text-overflow: clip;
|
|
850
|
-
word-break: break-word;
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
& .tsqd-query-disabled-indicator {
|
|
854
|
-
align-self: stretch;
|
|
855
|
-
display: flex;
|
|
856
|
-
align-items: center;
|
|
857
|
-
padding: 0 ${C.size[2]};
|
|
858
|
-
color: ${i(n.gray[800],n.gray[300])};
|
|
859
|
-
background-color: ${i(n.gray[300],n.darkGray[600])};
|
|
860
|
-
border-bottom: 1px solid ${i(n.gray[300],n.darkGray[400])};
|
|
861
|
-
font-size: ${r.size.xs};
|
|
862
|
-
}
|
|
863
|
-
`,selectedQueryRow:t`
|
|
864
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
865
|
-
`,detailsContainer:t`
|
|
866
|
-
flex: 1 1 700px;
|
|
867
|
-
background-color: ${i(n.gray[50],n.darkGray[700])};
|
|
868
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
869
|
-
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
870
|
-
display: flex;
|
|
871
|
-
flex-direction: column;
|
|
872
|
-
overflow-y: auto;
|
|
873
|
-
display: flex;
|
|
874
|
-
text-align: left;
|
|
875
|
-
`,detailsHeader:t`
|
|
876
|
-
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
877
|
-
position: sticky;
|
|
878
|
-
top: 0;
|
|
879
|
-
z-index: 2;
|
|
880
|
-
background-color: ${i(n.gray[200],n.darkGray[600])};
|
|
881
|
-
padding: ${C.size[1.5]} ${C.size[2]};
|
|
882
|
-
font-weight: ${r.weight.medium};
|
|
883
|
-
font-size: ${r.size.xs};
|
|
884
|
-
line-height: ${r.lineHeight.xs};
|
|
885
|
-
text-align: left;
|
|
886
|
-
`,detailsBody:t`
|
|
887
|
-
margin: ${C.size[1.5]} 0px ${C.size[2]} 0px;
|
|
888
|
-
& > div {
|
|
889
|
-
display: flex;
|
|
890
|
-
align-items: stretch;
|
|
891
|
-
padding: 0 ${C.size[2]};
|
|
892
|
-
line-height: ${r.lineHeight.sm};
|
|
893
|
-
justify-content: space-between;
|
|
894
|
-
& > span {
|
|
895
|
-
font-size: ${r.size.xs};
|
|
896
|
-
}
|
|
897
|
-
& > span:nth-child(2) {
|
|
898
|
-
font-variant-numeric: tabular-nums;
|
|
899
|
-
}
|
|
900
|
-
}
|
|
901
|
-
|
|
902
|
-
& > div:first-child {
|
|
903
|
-
margin-bottom: ${C.size[1.5]};
|
|
904
|
-
}
|
|
905
|
-
|
|
906
|
-
& code {
|
|
907
|
-
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
|
|
908
|
-
'Liberation Mono', 'Courier New', monospace;
|
|
909
|
-
margin: 0;
|
|
910
|
-
font-size: ${r.size.xs};
|
|
911
|
-
line-height: ${r.lineHeight.xs};
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
& pre {
|
|
915
|
-
margin: 0;
|
|
916
|
-
display: flex;
|
|
917
|
-
align-items: center;
|
|
918
|
-
}
|
|
919
|
-
`,queryDetailsStatus:t`
|
|
920
|
-
border: 1px solid ${n.darkGray[200]};
|
|
921
|
-
border-radius: ${C.border.radius.sm};
|
|
922
|
-
font-weight: ${r.weight.medium};
|
|
923
|
-
padding: ${C.size[1]} ${C.size[2.5]};
|
|
924
|
-
`,actionsBody:t`
|
|
925
|
-
flex-wrap: wrap;
|
|
926
|
-
margin: ${C.size[2]} 0px ${C.size[2]} 0px;
|
|
927
|
-
display: flex;
|
|
928
|
-
gap: ${C.size[2]};
|
|
929
|
-
padding: 0px ${C.size[2]};
|
|
930
|
-
& > button {
|
|
931
|
-
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
932
|
-
font-size: ${r.size.xs};
|
|
933
|
-
padding: ${C.size[1]} ${C.size[2]};
|
|
934
|
-
display: flex;
|
|
935
|
-
border-radius: ${C.border.radius.sm};
|
|
936
|
-
background-color: ${i(n.gray[100],n.darkGray[600])};
|
|
937
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[400])};
|
|
938
|
-
align-items: center;
|
|
939
|
-
gap: ${C.size[2]};
|
|
940
|
-
font-weight: ${r.weight.medium};
|
|
941
|
-
line-height: ${r.lineHeight.xs};
|
|
942
|
-
cursor: pointer;
|
|
943
|
-
&:focus-visible {
|
|
944
|
-
outline-offset: 2px;
|
|
945
|
-
border-radius: ${a.radius.xs};
|
|
946
|
-
outline: 2px solid ${n.blue[800]};
|
|
947
|
-
}
|
|
948
|
-
&:hover {
|
|
949
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
950
|
-
}
|
|
951
|
-
|
|
952
|
-
&:disabled {
|
|
953
|
-
opacity: 0.6;
|
|
954
|
-
cursor: not-allowed;
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
& > span {
|
|
958
|
-
width: ${o[1.5]};
|
|
959
|
-
height: ${o[1.5]};
|
|
960
|
-
border-radius: ${C.border.radius.full};
|
|
961
|
-
}
|
|
962
|
-
}
|
|
963
|
-
`,actionsSelect:t`
|
|
964
|
-
font-size: ${r.size.xs};
|
|
965
|
-
padding: ${C.size[.5]} ${C.size[2]};
|
|
966
|
-
display: flex;
|
|
967
|
-
border-radius: ${C.border.radius.sm};
|
|
968
|
-
overflow: hidden;
|
|
969
|
-
background-color: ${i(n.gray[100],n.darkGray[600])};
|
|
970
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[400])};
|
|
971
|
-
align-items: center;
|
|
972
|
-
gap: ${C.size[2]};
|
|
973
|
-
font-weight: ${r.weight.medium};
|
|
974
|
-
line-height: ${r.lineHeight.sm};
|
|
975
|
-
color: ${i(n.red[500],n.red[400])};
|
|
976
|
-
cursor: pointer;
|
|
977
|
-
position: relative;
|
|
978
|
-
&:hover {
|
|
979
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
980
|
-
}
|
|
981
|
-
& > span {
|
|
982
|
-
width: ${o[1.5]};
|
|
983
|
-
height: ${o[1.5]};
|
|
984
|
-
border-radius: ${C.border.radius.full};
|
|
985
|
-
}
|
|
986
|
-
&:focus-within {
|
|
987
|
-
outline-offset: 2px;
|
|
988
|
-
border-radius: ${a.radius.xs};
|
|
989
|
-
outline: 2px solid ${n.blue[800]};
|
|
990
|
-
}
|
|
991
|
-
& select {
|
|
992
|
-
position: absolute;
|
|
993
|
-
top: 0;
|
|
994
|
-
left: 0;
|
|
995
|
-
width: 100%;
|
|
996
|
-
height: 100%;
|
|
997
|
-
appearance: none;
|
|
998
|
-
background-color: transparent;
|
|
999
|
-
border: none;
|
|
1000
|
-
color: transparent;
|
|
1001
|
-
outline: none;
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
& svg path {
|
|
1005
|
-
stroke: ${C.colors.red[400]};
|
|
1006
|
-
}
|
|
1007
|
-
& svg {
|
|
1008
|
-
width: ${C.size[2]};
|
|
1009
|
-
height: ${C.size[2]};
|
|
1010
|
-
}
|
|
1011
|
-
`,settingsMenu:t`
|
|
1012
|
-
display: flex;
|
|
1013
|
-
& * {
|
|
1014
|
-
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
1015
|
-
}
|
|
1016
|
-
flex-direction: column;
|
|
1017
|
-
gap: ${o[.5]};
|
|
1018
|
-
border-radius: ${C.border.radius.sm};
|
|
1019
|
-
border: 1px solid ${i(n.gray[300],n.gray[700])};
|
|
1020
|
-
background-color: ${i(n.gray[50],n.darkGray[600])};
|
|
1021
|
-
font-size: ${r.size.xs};
|
|
1022
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
1023
|
-
z-index: 99999;
|
|
1024
|
-
min-width: 120px;
|
|
1025
|
-
padding: ${o[.5]};
|
|
1026
|
-
`,settingsSubTrigger:t`
|
|
1027
|
-
display: flex;
|
|
1028
|
-
align-items: center;
|
|
1029
|
-
justify-content: space-between;
|
|
1030
|
-
border-radius: ${C.border.radius.xs};
|
|
1031
|
-
padding: ${C.size[1]} ${C.size[1]};
|
|
1032
|
-
cursor: pointer;
|
|
1033
|
-
background-color: transparent;
|
|
1034
|
-
border: none;
|
|
1035
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
1036
|
-
& svg {
|
|
1037
|
-
color: ${i(n.gray[600],n.gray[400])};
|
|
1038
|
-
transform: rotate(-90deg);
|
|
1039
|
-
width: ${C.size[2]};
|
|
1040
|
-
height: ${C.size[2]};
|
|
1041
|
-
}
|
|
1042
|
-
&:hover {
|
|
1043
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
1044
|
-
}
|
|
1045
|
-
&:focus-visible {
|
|
1046
|
-
outline-offset: 2px;
|
|
1047
|
-
outline: 2px solid ${n.blue[800]};
|
|
1048
|
-
}
|
|
1049
|
-
&.data-disabled {
|
|
1050
|
-
opacity: 0.6;
|
|
1051
|
-
cursor: not-allowed;
|
|
1052
|
-
}
|
|
1053
|
-
`,settingsMenuHeader:t`
|
|
1054
|
-
padding: ${C.size[1]} ${C.size[1]};
|
|
1055
|
-
font-weight: ${r.weight.medium};
|
|
1056
|
-
border-bottom: 1px solid ${i(n.gray[300],n.darkGray[400])};
|
|
1057
|
-
color: ${i(n.gray[500],n.gray[400])};
|
|
1058
|
-
font-size: ${r.size.xs};
|
|
1059
|
-
`,settingsSubButton:t`
|
|
1060
|
-
display: flex;
|
|
1061
|
-
align-items: center;
|
|
1062
|
-
justify-content: space-between;
|
|
1063
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
1064
|
-
font-size: ${r.size.xs};
|
|
1065
|
-
border-radius: ${C.border.radius.xs};
|
|
1066
|
-
padding: ${C.size[1]} ${C.size[1]};
|
|
1067
|
-
cursor: pointer;
|
|
1068
|
-
background-color: transparent;
|
|
1069
|
-
border: none;
|
|
1070
|
-
& svg {
|
|
1071
|
-
color: ${i(n.gray[600],n.gray[400])};
|
|
1072
|
-
}
|
|
1073
|
-
&:hover {
|
|
1074
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
1075
|
-
}
|
|
1076
|
-
&:focus-visible {
|
|
1077
|
-
outline-offset: 2px;
|
|
1078
|
-
outline: 2px solid ${n.blue[800]};
|
|
1079
|
-
}
|
|
1080
|
-
`,themeSelectedButton:t`
|
|
1081
|
-
background-color: ${i(n.purple[100],n.purple[900])};
|
|
1082
|
-
color: ${i(n.purple[700],n.purple[300])};
|
|
1083
|
-
& svg {
|
|
1084
|
-
color: ${i(n.purple[700],n.purple[300])};
|
|
1085
|
-
}
|
|
1086
|
-
&:hover {
|
|
1087
|
-
background-color: ${i(n.purple[100],n.purple[900])};
|
|
1088
|
-
}
|
|
1089
|
-
`,viewToggle:t`
|
|
1090
|
-
border-radius: ${C.border.radius.sm};
|
|
1091
|
-
background-color: ${i(n.gray[200],n.darkGray[600])};
|
|
1092
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[200])};
|
|
1093
|
-
display: flex;
|
|
1094
|
-
padding: 0;
|
|
1095
|
-
font-size: ${r.size.xs};
|
|
1096
|
-
color: ${i(n.gray[700],n.gray[300])};
|
|
1097
|
-
overflow: hidden;
|
|
1098
|
-
|
|
1099
|
-
&:has(:focus-visible) {
|
|
1100
|
-
outline: 2px solid ${n.blue[800]};
|
|
1101
|
-
}
|
|
1102
|
-
|
|
1103
|
-
& .tsqd-radio-toggle {
|
|
1104
|
-
opacity: 0.5;
|
|
1105
|
-
display: flex;
|
|
1106
|
-
& label {
|
|
1107
|
-
display: flex;
|
|
1108
|
-
align-items: center;
|
|
1109
|
-
cursor: pointer;
|
|
1110
|
-
line-height: ${r.lineHeight.md};
|
|
1111
|
-
}
|
|
1112
|
-
|
|
1113
|
-
& label:hover {
|
|
1114
|
-
background-color: ${i(n.gray[100],n.darkGray[500])};
|
|
1115
|
-
}
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
|
-
& > [data-checked] {
|
|
1119
|
-
opacity: 1;
|
|
1120
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
1121
|
-
& label:hover {
|
|
1122
|
-
background-color: ${i(n.gray[100],n.darkGray[400])};
|
|
1123
|
-
}
|
|
1124
|
-
}
|
|
1125
|
-
|
|
1126
|
-
& .tsqd-radio-toggle:first-child {
|
|
1127
|
-
& label {
|
|
1128
|
-
padding: 0 ${C.size[1.5]} 0 ${C.size[2]};
|
|
1129
|
-
}
|
|
1130
|
-
border-right: 1px solid ${i(n.gray[300],n.darkGray[200])};
|
|
1131
|
-
}
|
|
1132
|
-
|
|
1133
|
-
& .tsqd-radio-toggle:nth-child(2) {
|
|
1134
|
-
& label {
|
|
1135
|
-
padding: 0 ${C.size[2]} 0 ${C.size[1.5]};
|
|
1136
|
-
}
|
|
1137
|
-
}
|
|
1138
|
-
`,devtoolsEditForm:t`
|
|
1139
|
-
padding: ${o[2]};
|
|
1140
|
-
& > [data-error='true'] {
|
|
1141
|
-
outline: 2px solid ${i(n.red[200],n.red[800])};
|
|
1142
|
-
outline-offset: 2px;
|
|
1143
|
-
border-radius: ${a.radius.xs};
|
|
1144
|
-
}
|
|
1145
|
-
`,devtoolsEditTextarea:t`
|
|
1146
|
-
width: 100%;
|
|
1147
|
-
max-height: 500px;
|
|
1148
|
-
font-family: 'Fira Code', monospace;
|
|
1149
|
-
font-size: ${r.size.xs};
|
|
1150
|
-
border-radius: ${a.radius.sm};
|
|
1151
|
-
field-sizing: content;
|
|
1152
|
-
padding: ${o[2]};
|
|
1153
|
-
background-color: ${i(n.gray[100],n.darkGray[800])};
|
|
1154
|
-
color: ${i(n.gray[900],n.gray[100])};
|
|
1155
|
-
border: 1px solid ${i(n.gray[200],n.gray[700])};
|
|
1156
|
-
resize: none;
|
|
1157
|
-
&:focus {
|
|
1158
|
-
outline-offset: 2px;
|
|
1159
|
-
border-radius: ${a.radius.xs};
|
|
1160
|
-
outline: 2px solid ${i(n.blue[200],n.blue[800])};
|
|
1161
|
-
}
|
|
1162
|
-
`,devtoolsEditFormActions:t`
|
|
1163
|
-
display: flex;
|
|
1164
|
-
justify-content: space-between;
|
|
1165
|
-
gap: ${o[2]};
|
|
1166
|
-
align-items: center;
|
|
1167
|
-
padding-top: ${o[1]};
|
|
1168
|
-
font-size: ${r.size.xs};
|
|
1169
|
-
`,devtoolsEditFormError:t`
|
|
1170
|
-
color: ${i(n.red[700],n.red[500])};
|
|
1171
|
-
`,devtoolsEditFormActionContainer:t`
|
|
1172
|
-
display: flex;
|
|
1173
|
-
gap: ${o[2]};
|
|
1174
|
-
`,devtoolsEditFormAction:t`
|
|
1175
|
-
font-family: ui-sans-serif, Inter, system-ui, sans-serif, sans-serif;
|
|
1176
|
-
font-size: ${r.size.xs};
|
|
1177
|
-
padding: ${o[1]} ${C.size[2]};
|
|
1178
|
-
display: flex;
|
|
1179
|
-
border-radius: ${a.radius.sm};
|
|
1180
|
-
background-color: ${i(n.gray[100],n.darkGray[600])};
|
|
1181
|
-
border: 1px solid ${i(n.gray[300],n.darkGray[400])};
|
|
1182
|
-
align-items: center;
|
|
1183
|
-
gap: ${o[2]};
|
|
1184
|
-
font-weight: ${r.weight.medium};
|
|
1185
|
-
line-height: ${r.lineHeight.xs};
|
|
1186
|
-
cursor: pointer;
|
|
1187
|
-
&:focus-visible {
|
|
1188
|
-
outline-offset: 2px;
|
|
1189
|
-
border-radius: ${a.radius.xs};
|
|
1190
|
-
outline: 2px solid ${n.blue[800]};
|
|
1191
|
-
}
|
|
1192
|
-
&:hover {
|
|
1193
|
-
background-color: ${i(n.gray[200],n.darkGray[500])};
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
|
-
&:disabled {
|
|
1197
|
-
opacity: 0.6;
|
|
1198
|
-
cursor: not-allowed;
|
|
1199
|
-
}
|
|
1200
|
-
`}},Ne=e=>Os("light",e),Ue=e=>Os("dark",e);xn(["click","mousedown","input"]);export{i0 as a,s0 as b,Js as c,l0 as d,el as e,a0 as f,c0 as g,Ls as h};
|
|
1201
|
-
/*! Bundled license information:
|
|
1202
|
-
|
|
1203
|
-
@tanstack/query-devtools/build/chunk/WXAWMS3D.js:
|
|
1204
|
-
(*! Bundled license information:
|
|
1205
|
-
|
|
1206
|
-
@tanstack/match-sorter-utils/build/lib/index.mjs:
|
|
1207
|
-
(**
|
|
1208
|
-
* match-sorter-utils
|
|
1209
|
-
*
|
|
1210
|
-
* Copyright (c) TanStack
|
|
1211
|
-
*
|
|
1212
|
-
* This source code is licensed under the MIT license found in the
|
|
1213
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
1214
|
-
*
|
|
1215
|
-
* @license MIT
|
|
1216
|
-
*)
|
|
1217
|
-
(**
|
|
1218
|
-
* @name match-sorter
|
|
1219
|
-
* @license MIT license.
|
|
1220
|
-
* @copyright (c) 2099 Kent C. Dodds
|
|
1221
|
-
* @author Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com)
|
|
1222
|
-
*)
|
|
1223
|
-
|
|
1224
|
-
@kobalte/utils/dist/index.js:
|
|
1225
|
-
(*!
|
|
1226
|
-
* Portions of this file are based on code from ariakit.
|
|
1227
|
-
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1228
|
-
*
|
|
1229
|
-
* Credits to the Ariakit team:
|
|
1230
|
-
* https://github.com/ariakit/ariakit/blob/da142672eddefa99365773ced72171facc06fdcb/packages/ariakit-utils/src/array.ts
|
|
1231
|
-
*)
|
|
1232
|
-
(*!
|
|
1233
|
-
* Original code by Chakra UI
|
|
1234
|
-
* MIT Licensed, Copyright (c) 2019 Segun Adebayo.
|
|
1235
|
-
*
|
|
1236
|
-
* Credits to the Chakra UI team:
|
|
1237
|
-
* https://github.com/chakra-ui/chakra-ui/blob/main/packages/utils/src/assertion.ts
|
|
1238
|
-
*)
|
|
1239
|
-
(*!
|
|
1240
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1241
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1242
|
-
*
|
|
1243
|
-
* Credits to the React Spectrum team:
|
|
1244
|
-
* https://github.com/solidjs-community/solid-aria/blob/2c5f54feb5cfea514b1ee0a52d0416878f882351/packages/utils/src/createGlobalListeners.ts
|
|
1245
|
-
*)
|
|
1246
|
-
(*!
|
|
1247
|
-
* Portions of this file are based on code from ariakit.
|
|
1248
|
-
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1249
|
-
*
|
|
1250
|
-
* Credits to the Ariakit team:
|
|
1251
|
-
* https://github.com/ariakit/ariakit/blob/232bc79018ec20967fec1e097a9474aba3bb5be7/packages/ariakit-utils/src/dom.ts
|
|
1252
|
-
*)
|
|
1253
|
-
(*!
|
|
1254
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1255
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1256
|
-
*
|
|
1257
|
-
* Credits to the React Spectrum team:
|
|
1258
|
-
* https://github.com/adobe/react-spectrum/blob/cf9ab24f3255be1530d0f584061a01aa1e8180e6/packages/@react-aria/utils/src/platform.ts
|
|
1259
|
-
*)
|
|
1260
|
-
(*!
|
|
1261
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1262
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1263
|
-
*
|
|
1264
|
-
* Credits to the React Spectrum team:
|
|
1265
|
-
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/focusWithoutScrolling.ts
|
|
1266
|
-
*)
|
|
1267
|
-
(*!
|
|
1268
|
-
* Portions of this file are based on code from ariakit.
|
|
1269
|
-
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1270
|
-
*
|
|
1271
|
-
* Credits to the Ariakit team:
|
|
1272
|
-
* https://github.com/ariakit/ariakit/blob/main/packages/ariakit-utils/src/focus.ts
|
|
1273
|
-
*
|
|
1274
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1275
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1276
|
-
*
|
|
1277
|
-
* Credits to the React Spectrum team:
|
|
1278
|
-
* https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/focus/src/isElementVisible.ts
|
|
1279
|
-
* https://github.com/adobe/react-spectrum/blob/8f2f2acb3d5850382ebe631f055f88c704aa7d17/packages/@react-aria/focus/src/FocusScope.tsx
|
|
1280
|
-
*)
|
|
1281
|
-
(*!
|
|
1282
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1283
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1284
|
-
*
|
|
1285
|
-
* Credits to the React Spectrum team:
|
|
1286
|
-
* https://github.com/adobe/react-spectrum/blob/f6e686fe9d3b983d48650980c1ecfdde320bc62f/packages/@react-aria/focus/src/FocusScope.tsx
|
|
1287
|
-
*)
|
|
1288
|
-
(*!
|
|
1289
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1290
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1291
|
-
*
|
|
1292
|
-
* Credits to the React Spectrum team:
|
|
1293
|
-
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/getScrollParent.ts
|
|
1294
|
-
*)
|
|
1295
|
-
(*!
|
|
1296
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1297
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1298
|
-
*
|
|
1299
|
-
* Credits to the React Spectrum team:
|
|
1300
|
-
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/isVirtualEvent.ts
|
|
1301
|
-
*)
|
|
1302
|
-
(*!
|
|
1303
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1304
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1305
|
-
*
|
|
1306
|
-
* Credits to the React Spectrum team:
|
|
1307
|
-
* https://github.com/adobe/react-spectrum/blob/ff3e690fffc6c54367b8057e28a0e5b9211f37b5/packages/@react-stately/utils/src/number.ts
|
|
1308
|
-
*)
|
|
1309
|
-
(*!
|
|
1310
|
-
* Portions of this file are based on code from ariakit.
|
|
1311
|
-
* MIT Licensed, Copyright (c) Diego Haz.
|
|
1312
|
-
*
|
|
1313
|
-
* Credits to the Ariakit team:
|
|
1314
|
-
* https://github.com/ariakit/ariakit/blob/84e97943ad637a582c01c9b56d880cd95f595737/packages/ariakit/src/hovercard/__utils/polygon.ts
|
|
1315
|
-
* https://github.com/ariakit/ariakit/blob/f2a96973de523d67e41eec983263936c489ef3e2/packages/ariakit/src/hovercard/__utils/debug-polygon.ts
|
|
1316
|
-
*)
|
|
1317
|
-
(*!
|
|
1318
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1319
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1320
|
-
*
|
|
1321
|
-
* Credits to the React Spectrum team:
|
|
1322
|
-
* https://github.com/adobe/react-spectrum/blob/a9dea8a3672179e6c38aafd1429daf44c7ea2ff6/packages/@react-aria/utils/src/runAfterTransition.ts
|
|
1323
|
-
*)
|
|
1324
|
-
(*!
|
|
1325
|
-
* Portions of this file are based on code from react-spectrum.
|
|
1326
|
-
* Apache License Version 2.0, Copyright 2020 Adobe.
|
|
1327
|
-
*
|
|
1328
|
-
* Credits to the React Spectrum team:
|
|
1329
|
-
* https://github.com/adobe/react-spectrum/blob/8f2f2acb3d5850382ebe631f055f88c704aa7d17/packages/@react-aria/utils/src/scrollIntoView.ts
|
|
1330
|
-
*)
|
|
1331
|
-
*)
|
|
1332
|
-
*/
|
|
1333
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjaytxdWVyeS1kZXZ0b29sc0A1LjcyLjIvbm9kZV9tb2R1bGVzL0B0YW5zdGFjay9xdWVyeS1kZXZ0b29scy9idWlsZC9jaHVuay9XWEFXTVMzRC5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgc29ydEZucywgbXV0YXRpb25Tb3J0Rm5zLCBjcmVhdGVDb250ZXh0LCBzcGxpdFByb3BzLCBjcmVhdGVNZW1vLCBjcmVhdGVDb21wb25lbnQsIG1lcmdlUHJvcHMsIGNyZWF0ZVVuaXF1ZUlkLCBjcmVhdGVTaWduYWwsIGNyZWF0ZUVmZmVjdCwgb25DbGVhbnVwLCBTaG93LCBvbiwgZGVsZWdhdGVFdmVudHMsIER5bmFtaWMsIHVzZUNvbnRleHQsIHRlbXBsYXRlLCBjcmVhdGVSZW5kZXJFZmZlY3QsIHNldEF0dHJpYnV0ZSwgUG9ydGFsLCB1bnRyYWNrLCBpc1NlcnZlciwgb25Nb3VudCwgY3JlYXRlQ29tcHV0ZWQsIGdldE93bmVyLCB1c2UsIGluc2VydCwgY2xhc3NOYW1lLCBnZXRTaWRlZFByb3AsIGdldFF1ZXJ5U3RhdHVzQ29sb3IsIGdldE11dGF0aW9uU3RhdHVzQ29sb3IsIGdldFF1ZXJ5U3RhdHVzTGFiZWwsIHNwcmVhZCwgZ2V0UXVlcnlTdGF0dXNDb2xvckJ5TGFiZWwsIGRpc3BsYXlWYWx1ZSwgRm9yLCBiYXRjaCwgY2xlYXJEZWxlZ2F0ZWRFdmVudHMsIGNvbnZlcnRSZW1Ub1BpeGVscywgc2VyaWFsaXplLCBJbmRleCwgdXBkYXRlTmVzdGVkRGF0YUJ5UGF0aCwgJFRSQUNLLCBjcmVhdGVSb290LCBERVYsIGFkZEV2ZW50TGlzdGVuZXIsIHN0cmluZ2lmeSwgU3dpdGNoLCBNYXRjaCwgZGVsZXRlTmVzdGVkRGF0YUJ5UGF0aCwgdXNlVHJhbnNpdGlvbiB9IGZyb20gJy4vSFI3WVhaNUguanMnO1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHNvbGlkLXByaW1pdGl2ZXMrdXRpbHNANi4yLjNfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bzb2xpZC1wcmltaXRpdmVzL3V0aWxzL2Rpc3QvY2h1bmsvUjU2NzVZTVUuanNcbnZhciBpc0NsaWVudCA9ICFpc1NlcnZlcjtcbnZhciBpc0RldiA9IGlzQ2xpZW50ICYmICEhREVWO1xudmFyIG5vb3AgPSAoKSA9PiB2b2lkIDA7XG52YXIgaXNOb25OdWxsYWJsZSA9IChpMikgPT4gaTIgIT0gbnVsbDtcbnZhciBmaWx0ZXJOb25OdWxsYWJsZSA9IChhcnIpID0+IGFyci5maWx0ZXIoaXNOb25OdWxsYWJsZSk7XG5mdW5jdGlvbiBjaGFpbihjYWxsYmFja3MpIHtcbiAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBjYWxsYmFja3MpXG4gICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayguLi5hcmdzKTtcbiAgfTtcbn1cbnZhciBhY2Nlc3MgPSAodikgPT4gdHlwZW9mIHYgPT09IFwiZnVuY3Rpb25cIiAmJiAhdi5sZW5ndGggPyB2KCkgOiB2O1xudmFyIGFzQXJyYXkgPSAodmFsdWUpID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IFt2YWx1ZV0gOiBbXTtcbmZ1bmN0aW9uIGFjY2Vzc1dpdGgodmFsdWVPckZuLCAuLi5hcmdzKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWVPckZuID09PSBcImZ1bmN0aW9uXCIgPyB2YWx1ZU9yRm4oLi4uYXJncykgOiB2YWx1ZU9yRm47XG59XG52YXIgdHJ5T25DbGVhbnVwID0gaXNEZXYgPyAoZm4pID0+IGdldE93bmVyKCkgPyBvbkNsZWFudXAoZm4pIDogZm4gOiBvbkNsZWFudXA7XG5mdW5jdGlvbiBoYW5kbGVEaWZmQXJyYXkoY3VycmVudCwgcHJldiwgaGFuZGxlQWRkZWQsIGhhbmRsZVJlbW92ZWQpIHtcbiAgY29uc3QgY3Vyckxlbmd0aCA9IGN1cnJlbnQubGVuZ3RoO1xuICBjb25zdCBwcmV2TGVuZ3RoID0gcHJldi5sZW5ndGg7XG4gIGxldCBpMiA9IDA7XG4gIGlmICghcHJldkxlbmd0aCkge1xuICAgIGZvciAoOyBpMiA8IGN1cnJMZW5ndGg7IGkyKyspXG4gICAgICBoYW5kbGVBZGRlZChjdXJyZW50W2kyXSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghY3Vyckxlbmd0aCkge1xuICAgIGZvciAoOyBpMiA8IHByZXZMZW5ndGg7IGkyKyspXG4gICAgICBoYW5kbGVSZW1vdmVkKHByZXZbaTJdKTtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yICg7IGkyIDwgcHJldkxlbmd0aDsgaTIrKykge1xuICAgIGlmIChwcmV2W2kyXSAhPT0gY3VycmVudFtpMl0pXG4gICAgICBicmVhaztcbiAgfVxuICBsZXQgcHJldkVsO1xuICBsZXQgY3VyckVsO1xuICBwcmV2ID0gcHJldi5zbGljZShpMik7XG4gIGN1cnJlbnQgPSBjdXJyZW50LnNsaWNlKGkyKTtcbiAgZm9yIChwcmV2RWwgb2YgcHJldikge1xuICAgIGlmICghY3VycmVudC5pbmNsdWRlcyhwcmV2RWwpKVxuICAgICAgaGFuZGxlUmVtb3ZlZChwcmV2RWwpO1xuICB9XG4gIGZvciAoY3VyckVsIG9mIGN1cnJlbnQpIHtcbiAgICBpZiAoIXByZXYuaW5jbHVkZXMoY3VyckVsKSlcbiAgICAgIGhhbmRsZUFkZGVkKGN1cnJFbCk7XG4gIH1cbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzb2xpZC1wcmltaXRpdmVzK3N0b3JhZ2VAMS4zLjExX3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Ac29saWQtcHJpbWl0aXZlcy9zdG9yYWdlL2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIGNyZWF0ZVN0b3JhZ2UocHJvcHMpIHtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgaGFuZGxlRXJyb3IgPSBwcm9wcz8udGhyb3cgPyAoZXJyLCBmYWxsYmFjaykgPT4ge1xuICAgIHNldEVycm9yKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKGZhbGxiYWNrKSk7XG4gICAgdGhyb3cgZXJyO1xuICB9IDogKGVyciwgZmFsbGJhY2spID0+IHtcbiAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihmYWxsYmFjaykpO1xuICB9O1xuICBjb25zdCBhcGlzID0gcHJvcHM/LmFwaSA/IEFycmF5LmlzQXJyYXkocHJvcHMuYXBpKSA/IHByb3BzLmFwaSA6IFtwcm9wcy5hcGldIDogW2dsb2JhbFRoaXMubG9jYWxTdG9yYWdlXS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHByZWZpeCA9IHByb3BzPy5wcmVmaXggPyBgJHtwcm9wcy5wcmVmaXh9LmAgOiBcIlwiO1xuICBjb25zdCBzaWduYWxzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgY29uc3Qgc3RvcmUgPSBuZXcgUHJveHkoXG4gICAge30sXG4gICAge1xuICAgICAgZ2V0KF8sIGtleSkge1xuICAgICAgICBsZXQgbm9kZSA9IHNpZ25hbHMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgIG5vZGUgPSBjcmVhdGVTaWduYWwodm9pZCAwLCB7IGVxdWFsczogZmFsc2UgfSk7XG4gICAgICAgICAgc2lnbmFscy5zZXQoa2V5LCBub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlWzBdKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXBpcy5yZWR1Y2UoXG4gICAgICAgICAgKHJlc3VsdCwgYXBpKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsIHx8ICFhcGkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBhcGkuZ2V0SXRlbShgJHtwcmVmaXh9JHtrZXl9YCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyLCBgRXJyb3IgcmVhZGluZyAke3ByZWZpeH0ke2tleX0gZnJvbSAke2FwaVtcIm5hbWVcIl19YCk7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbnVsbFxuICAgICAgICApO1xuICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgcHJvcHM/LmRlc2VyaWFsaXplcikge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5kZXNlcmlhbGl6ZXIodmFsdWUsIGtleSwgcHJvcHMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbiAgY29uc3Qgc2V0dGVyID0gKGtleSwgdmFsdWUsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJlZFZhbHVlID0gcHJvcHM/LnNlcmlhbGl6ZXIgPyBwcm9wcy5zZXJpYWxpemVyKHZhbHVlLCBrZXksIG9wdGlvbnMgPz8gcHJvcHMub3B0aW9ucykgOiB2YWx1ZTtcbiAgICBjb25zdCBhcGlLZXkgPSBgJHtwcmVmaXh9JHtrZXl9YDtcbiAgICBhcGlzLmZvckVhY2goKGFwaSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXBpLmdldEl0ZW0oYXBpS2V5KSAhPT0gZmlsdGVyZWRWYWx1ZSAmJiBhcGkuc2V0SXRlbShhcGlLZXksIGZpbHRlcmVkVmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVyciwgYEVycm9yIHNldHRpbmcgJHtwcmVmaXh9JHtrZXl9IHRvICR7ZmlsdGVyZWRWYWx1ZX0gaW4gJHthcGkubmFtZX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBub2RlID0gc2lnbmFscy5nZXQoa2V5KTtcbiAgICBub2RlICYmIG5vZGVbMV0oKTtcbiAgfTtcbiAgY29uc3QgcmVtb3ZlID0gKGtleSkgPT4gYXBpcy5mb3JFYWNoKChhcGkpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXBpLnJlbW92ZUl0ZW0oYCR7cHJlZml4fSR7a2V5fWApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaGFuZGxlRXJyb3IoZXJyLCBgRXJyb3IgcmVtb3ZpbmcgJHtwcmVmaXh9JHtrZXl9IGZyb20gJHthcGkubmFtZX1gKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjbGVhciA9ICgpID0+IGFwaXMuZm9yRWFjaCgoYXBpKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGFwaS5jbGVhcigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaGFuZGxlRXJyb3IoZXJyLCBgRXJyb3IgY2xlYXJpbmcgJHthcGkubmFtZX1gKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCB0b0pTT04gPSAoKSA9PiB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgY29uc3QgYWRkVmFsdWUgPSAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFyZXN1bHQuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFZhbHVlID0gdmFsdWUgJiYgcHJvcHM/LmRlc2VyaWFsaXplciA/IHByb3BzLmRlc2VyaWFsaXplcih2YWx1ZSwga2V5LCBwcm9wcy5vcHRpb25zKSA6IHZhbHVlO1xuICAgICAgICBpZiAoZmlsdGVyZWRWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gZmlsdGVyZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgYXBpcy5mb3JFYWNoKChhcGkpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYXBpLmdldEFsbCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGxldCB2YWx1ZXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdmFsdWVzID0gYXBpLmdldEFsbCgpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBoYW5kbGVFcnJvcihlcnIsIGBFcnJvciBnZXR0aW5nIGFsbCB2YWx1ZXMgZnJvbSBpbiAke2FwaS5uYW1lfWApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHZhbHVlcykge1xuICAgICAgICAgIGFkZFZhbHVlKGtleSwgdmFsdWVzW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgaW5kZXggPSAwLCBrZXk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgd2hpbGUgKGtleSA9IGFwaS5rZXkoaW5kZXgrKykpIHtcbiAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgICAgYWRkVmFsdWUoa2V5LCBhcGkuZ2V0SXRlbShrZXkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGVyciwgYEVycm9yIGdldHRpbmcgYWxsIHZhbHVlcyBmcm9tICR7YXBpLm5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBwcm9wcz8uc3luYyAhPT0gZmFsc2UgJiYgb25Nb3VudCgoKSA9PiB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoZXYpID0+IHtcbiAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICBhcGlzLmZvckVhY2goKGFwaSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGlmIChhcGkgIT09IGV2LnN0b3JhZ2VBcmVhICYmIGV2LmtleSAmJiBldi5uZXdWYWx1ZSAhPT0gYXBpLmdldEl0ZW0oZXYua2V5KSkge1xuICAgICAgICAgICAgZXYubmV3VmFsdWUgPyBhcGkuc2V0SXRlbShldi5rZXksIGV2Lm5ld1ZhbHVlKSA6IGFwaS5yZW1vdmVJdGVtKGV2LmtleSk7XG4gICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGhhbmRsZUVycm9yKFxuICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgYEVycm9yIHN5bmNoaW5nIGFwaSAke2FwaS5uYW1lfSBmcm9tIHN0b3JhZ2UgZXZlbnQgKCR7ZXYua2V5fT0ke2V2Lm5ld1ZhbHVlfSlgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjaGFuZ2VkICYmIGV2LmtleSAmJiBzaWduYWxzLmdldChldi5rZXkpPy5bMV0oKTtcbiAgICB9O1xuICAgIGlmIChcImFkZEV2ZW50TGlzdGVuZXJcIiBpbiBnbG9iYWxUaGlzKSB7XG4gICAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoXCJzdG9yYWdlXCIsIGxpc3RlbmVyKTtcbiAgICAgIG9uQ2xlYW51cCgoKSA9PiBnbG9iYWxUaGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzdG9yYWdlXCIsIGxpc3RlbmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaXMuZm9yRWFjaCgoYXBpKSA9PiBhcGkuYWRkRXZlbnRMaXN0ZW5lcj8uKFwic3RvcmFnZVwiLCBsaXN0ZW5lcikpO1xuICAgICAgb25DbGVhbnVwKCgpID0+IGFwaXMuZm9yRWFjaCgoYXBpKSA9PiBhcGkucmVtb3ZlRXZlbnRMaXN0ZW5lcj8uKFwic3RvcmFnZVwiLCBsaXN0ZW5lcikpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gW1xuICAgIHN0b3JlLFxuICAgIHNldHRlcixcbiAgICB7XG4gICAgICBjbGVhcixcbiAgICAgIGVycm9yLFxuICAgICAgcmVtb3ZlLFxuICAgICAgdG9KU09OXG4gICAgfVxuICBdO1xufVxudmFyIGNyZWF0ZUxvY2FsU3RvcmFnZSA9IGNyZWF0ZVN0b3JhZ2U7XG52YXIgYWRkQ2xlYXJNZXRob2QgPSAoc3RvcmFnZSkgPT4ge1xuICBpZiAodHlwZW9mIHN0b3JhZ2UuY2xlYXIgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBzdG9yYWdlO1xuICB9XG4gIHN0b3JhZ2UuY2xlYXIgPSAoKSA9PiB7XG4gICAgbGV0IGtleTtcbiAgICB3aGlsZSAoa2V5ID0gc3RvcmFnZS5rZXkoMCkpIHtcbiAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHN0b3JhZ2U7XG59O1xudmFyIHNlcmlhbGl6ZUNvb2tpZU9wdGlvbnMgPSAob3B0aW9ucykgPT4ge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuICBsZXQgbWVtbyA9IFwiXCI7XG4gIGZvciAoY29uc3Qga2V5IGluIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uc1trZXldO1xuICAgIG1lbW8gKz0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gYDsgJHtrZXl9PSR7dmFsdWUudG9VVENTdHJpbmcoKX1gIDogdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIiA/IGA7ICR7a2V5fWAgOiBgOyAke2tleX09JHt2YWx1ZX1gO1xuICB9XG4gIHJldHVybiBtZW1vO1xufTtcbnZhciBjb29raWVTdG9yYWdlID0gYWRkQ2xlYXJNZXRob2Qoe1xuICBfY29va2llczogW2dsb2JhbFRoaXMuZG9jdW1lbnQsIFwiY29va2llXCJdLFxuICBnZXRJdGVtOiAoa2V5KSA9PiBjb29raWVTdG9yYWdlLl9jb29raWVzWzBdW2Nvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMV1dLm1hdGNoKFwiKF58OylcXFxccypcIiArIGtleSArIFwiXFxcXHMqPVxcXFxzKihbXjtdKylcIik/LnBvcCgpID8/IG51bGwsXG4gIHNldEl0ZW06IChrZXksIHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSBjb29raWVTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICBjb29raWVTdG9yYWdlLl9jb29raWVzWzBdW2Nvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMV1dID0gYCR7a2V5fT0ke3ZhbHVlfSR7c2VyaWFsaXplQ29va2llT3B0aW9ucyhcbiAgICAgIG9wdGlvbnNcbiAgICApfWA7XG4gICAgY29uc3Qgc3RvcmFnZUV2ZW50ID0gT2JqZWN0LmFzc2lnbihuZXcgRXZlbnQoXCJzdG9yYWdlXCIpLCB7XG4gICAgICBrZXksXG4gICAgICBvbGRWYWx1ZSxcbiAgICAgIG5ld1ZhbHVlOiB2YWx1ZSxcbiAgICAgIHVybDogZ2xvYmFsVGhpcy5kb2N1bWVudC5VUkwsXG4gICAgICBzdG9yYWdlQXJlYTogY29va2llU3RvcmFnZVxuICAgIH0pO1xuICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KHN0b3JhZ2VFdmVudCk7XG4gIH0sXG4gIHJlbW92ZUl0ZW06IChrZXkpID0+IHtcbiAgICBjb29raWVTdG9yYWdlLl9jb29raWVzWzBdW2Nvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMV1dID0gYCR7a2V5fT1kZWxldGVkJHtzZXJpYWxpemVDb29raWVPcHRpb25zKHtcbiAgICAgIGV4cGlyZXM6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgwKVxuICAgIH0pfWA7XG4gIH0sXG4gIGtleTogKGluZGV4KSA9PiB7XG4gICAgbGV0IGtleSA9IG51bGw7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBjb29raWVTdG9yYWdlLl9jb29raWVzWzBdW2Nvb2tpZVN0b3JhZ2UuX2Nvb2tpZXNbMV1dLnJlcGxhY2UoXG4gICAgICAvKD86Xnw7KVxccyooLis/KVxccyo9XFxzKlteO10rL2csXG4gICAgICAoXywgZm91bmQpID0+IHtcbiAgICAgICAgaWYgKCFrZXkgJiYgZm91bmQgJiYgY291bnQrKyA9PT0gaW5kZXgpIHtcbiAgICAgICAgICBrZXkgPSBmb3VuZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBrZXk7XG4gIH0sXG4gIGdldCBsZW5ndGgoKSB7XG4gICAgbGV0IGxlbmd0aCA9IDA7XG4gICAgY29va2llU3RvcmFnZS5fY29va2llc1swXVtjb29raWVTdG9yYWdlLl9jb29raWVzWzFdXS5yZXBsYWNlKFxuICAgICAgLyg/Ol58OylcXHMqLis/XFxzKj1cXHMqW147XSsvZyxcbiAgICAgIChmb3VuZCkgPT4ge1xuICAgICAgICBsZW5ndGggKz0gZm91bmQgPyAxIDogMDtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG59KTtcblxuLy8gc3JjL2NvbnN0YW50cy50c1xudmFyIGZpcnN0QnJlYWtwb2ludCA9IDEwMjQ7XG52YXIgc2Vjb25kQnJlYWtwb2ludCA9IDc5NjtcbnZhciB0aGlyZEJyZWFrcG9pbnQgPSA3MDA7XG52YXIgQlVUVE9OX1BPU0lUSU9OID0gXCJib3R0b20tcmlnaHRcIjtcbnZhciBQT1NJVElPTiA9IFwiYm90dG9tXCI7XG52YXIgVEhFTUVfUFJFRkVSRU5DRSA9IFwic3lzdGVtXCI7XG52YXIgSU5JVElBTF9JU19PUEVOID0gZmFsc2U7XG52YXIgREVGQVVMVF9IRUlHSFQgPSA1MDA7XG52YXIgUElQX0RFRkFVTFRfSEVJR0hUID0gNTAwO1xudmFyIERFRkFVTFRfV0lEVEggPSA1MDA7XG52YXIgREVGQVVMVF9TT1JUX0ZOX05BTUUgPSBPYmplY3Qua2V5cyhzb3J0Rm5zKVswXTtcbnZhciBERUZBVUxUX1NPUlRfT1JERVIgPSAxO1xudmFyIERFRkFVTFRfTVVUQVRJT05fU09SVF9GTl9OQU1FID0gT2JqZWN0LmtleXMobXV0YXRpb25Tb3J0Rm5zKVswXTtcblxuLy8gc3JjL2NvbnRleHRzL1F1ZXJ5RGV2dG9vbHNDb250ZXh0LnRzXG52YXIgUXVlcnlEZXZ0b29sc0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHtcbiAgY2xpZW50OiB2b2lkIDAsXG4gIG9ubGluZU1hbmFnZXI6IHZvaWQgMCxcbiAgcXVlcnlGbGF2b3I6IFwiXCIsXG4gIHZlcnNpb246IFwiXCIsXG4gIHNoYWRvd0RPTVRhcmdldDogdm9pZCAwXG59KTtcbmZ1bmN0aW9uIHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChRdWVyeURldnRvb2xzQ29udGV4dCk7XG59XG5cbi8vIHNyYy9jb250ZXh0cy9QaVBDb250ZXh0LnRzeFxudmFyIFBpUENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHZvaWQgMCk7XG52YXIgUGlQUHJvdmlkZXIgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgW3BpcFdpbmRvdywgc2V0UGlwV2luZG93XSA9IGNyZWF0ZVNpZ25hbChudWxsKTtcbiAgY29uc3QgY2xvc2VQaXBXaW5kb3cgPSAoKSA9PiB7XG4gICAgY29uc3QgdyA9IHBpcFdpbmRvdygpO1xuICAgIGlmICh3ICE9IG51bGwpIHtcbiAgICAgIHcuY2xvc2UoKTtcbiAgICAgIHNldFBpcFdpbmRvdyhudWxsKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlcXVlc3RQaXBXaW5kb3cgPSAod2lkdGgsIGhlaWdodCkgPT4ge1xuICAgIGlmIChwaXBXaW5kb3coKSAhPSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBpcCA9IHdpbmRvdy5vcGVuKFwiXCIsIFwiVFNRRC1EZXZ0b29scy1QYW5lbFwiLCBgd2lkdGg9JHt3aWR0aH0saGVpZ2h0PSR7aGVpZ2h0fSxwb3B1cGApO1xuICAgIGlmICghcGlwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gb3BlbiBwb3B1cC4gUGxlYXNlIGFsbG93IHBvcHVwcyBmb3IgdGhpcyBzaXRlIHRvIHZpZXcgdGhlIGRldnRvb2xzIGluIHBpY3R1cmUtaW4tcGljdHVyZSBtb2RlLlwiKTtcbiAgICB9XG4gICAgcGlwLmRvY3VtZW50LmhlYWQuaW5uZXJIVE1MID0gXCJcIjtcbiAgICBwaXAuZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBcIlwiO1xuICAgIGNsZWFyRGVsZWdhdGVkRXZlbnRzKHBpcC5kb2N1bWVudCk7XG4gICAgcGlwLmRvY3VtZW50LnRpdGxlID0gXCJUYW5TdGFjayBRdWVyeSBEZXZ0b29sc1wiO1xuICAgIHBpcC5kb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9IFwiMFwiO1xuICAgIHBpcC5hZGRFdmVudExpc3RlbmVyKFwicGFnZWhpZGVcIiwgKCkgPT4ge1xuICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcInBpcF9vcGVuXCIsIFwiZmFsc2VcIik7XG4gICAgICBzZXRQaXBXaW5kb3cobnVsbCk7XG4gICAgfSk7XG4gICAgWy4uLih1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCB8fCBkb2N1bWVudCkuc3R5bGVTaGVldHNdLmZvckVhY2goKHN0eWxlU2hlZXQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNzc1J1bGVzID0gWy4uLnN0eWxlU2hlZXQuY3NzUnVsZXNdLm1hcCgocnVsZSkgPT4gcnVsZS5jc3NUZXh0KS5qb2luKFwiXCIpO1xuICAgICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgY29uc3Qgc3R5bGVfbm9kZSA9IHN0eWxlU2hlZXQub3duZXJOb2RlO1xuICAgICAgICBsZXQgc3R5bGVfaWQgPSBcIlwiO1xuICAgICAgICBpZiAoc3R5bGVfbm9kZSAmJiBcImlkXCIgaW4gc3R5bGVfbm9kZSkge1xuICAgICAgICAgIHN0eWxlX2lkID0gc3R5bGVfbm9kZS5pZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3R5bGVfaWQpIHtcbiAgICAgICAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBzdHlsZV9pZCk7XG4gICAgICAgIH1cbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBjc3NSdWxlcztcbiAgICAgICAgcGlwLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgICAgfSBjYXRjaCAoZTIpIHtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuICAgICAgICBpZiAoc3R5bGVTaGVldC5ocmVmID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGluay5yZWwgPSBcInN0eWxlc2hlZXRcIjtcbiAgICAgICAgbGluay50eXBlID0gc3R5bGVTaGVldC50eXBlO1xuICAgICAgICBsaW5rLm1lZGlhID0gc3R5bGVTaGVldC5tZWRpYS50b1N0cmluZygpO1xuICAgICAgICBsaW5rLmhyZWYgPSBzdHlsZVNoZWV0LmhyZWY7XG4gICAgICAgIHBpcC5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGRlbGVnYXRlRXZlbnRzKFtcImZvY3VzaW5cIiwgXCJmb2N1c291dFwiLCBcInBvaW50ZXJtb3ZlXCIsIFwia2V5ZG93blwiLCBcInBvaW50ZXJkb3duXCIsIFwicG9pbnRlcnVwXCIsIFwiY2xpY2tcIiwgXCJtb3VzZWRvd25cIiwgXCJpbnB1dFwiXSwgcGlwLmRvY3VtZW50KTtcbiAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwicGlwX29wZW5cIiwgXCJ0cnVlXCIpO1xuICAgIHNldFBpcFdpbmRvdyhwaXApO1xuICB9O1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHBpcF9vcGVuID0gcHJvcHMubG9jYWxTdG9yZS5waXBfb3BlbiA/PyBcImZhbHNlXCI7XG4gICAgaWYgKHBpcF9vcGVuID09PSBcInRydWVcIiAmJiAhcHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJlcXVlc3RQaXBXaW5kb3coTnVtYmVyKHdpbmRvdy5pbm5lcldpZHRoKSwgTnVtYmVyKHByb3BzLmxvY2FsU3RvcmUuaGVpZ2h0IHx8IFBJUF9ERUZBVUxUX0hFSUdIVCkpO1xuICAgIH1cbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZ29vYmVyU3R5bGVzID0gKHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0IHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKFwiI19nb29iZXJcIik7XG4gICAgY29uc3QgdyA9IHBpcFdpbmRvdygpO1xuICAgIGlmIChnb29iZXJTdHlsZXMgJiYgdykge1xuICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBpcF9zdHlsZSA9ICh1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCB8fCB3LmRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKFwiI19nb29iZXJcIik7XG4gICAgICAgIGlmIChwaXBfc3R5bGUpIHtcbiAgICAgICAgICBwaXBfc3R5bGUudGV4dENvbnRlbnQgPSBnb29iZXJTdHlsZXMudGV4dENvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShnb29iZXJTdHlsZXMsIHtcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAvLyBvYnNlcnZlIGRpcmVjdCBjaGlsZHJlblxuICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAvLyBhbmQgbG93ZXIgZGVzY2VuZGFudHMgdG9vXG4gICAgICAgIGNoYXJhY3RlckRhdGFPbGRWYWx1ZTogdHJ1ZVxuICAgICAgICAvLyBwYXNzIG9sZCBkYXRhIHRvIGNhbGxiYWNrXG4gICAgICB9KTtcbiAgICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHZhbHVlID0gY3JlYXRlTWVtbygoKSA9PiAoe1xuICAgIHBpcFdpbmRvdzogcGlwV2luZG93KCksXG4gICAgcmVxdWVzdFBpcFdpbmRvdyxcbiAgICBjbG9zZVBpcFdpbmRvdyxcbiAgICBkaXNhYmxlZDogcHJvcHMuZGlzYWJsZWQgPz8gZmFsc2VcbiAgfSkpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBpUENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gcHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICB9KTtcbn07XG52YXIgdXNlUGlQV2luZG93ID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChQaVBDb250ZXh0KTtcbiAgICBpZiAoIWN0eCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXNlUGlQV2luZG93IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBQaVBQcm92aWRlclwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGN0eCgpO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG4vLyBzcmMvY29udGV4dHMvVGhlbWVDb250ZXh0LnRzXG52YXIgVGhlbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dChcbiAgKCkgPT4gXCJkYXJrXCJcbik7XG5mdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B0YW5zdGFjayttYXRjaC1zb3J0ZXItdXRpbHNAOC4xOS40L25vZGVfbW9kdWxlcy9AdGFuc3RhY2svbWF0Y2gtc29ydGVyLXV0aWxzL2J1aWxkL2xpYi9pbmRleC5tanNcbnZhciBjaGFyYWN0ZXJNYXAgPSB7XG4gIFxcdTAwQzA6IFwiQVwiLFxuICBcXHUwMEMxOiBcIkFcIixcbiAgXFx1MDBDMjogXCJBXCIsXG4gIFxcdTAwQzM6IFwiQVwiLFxuICBcXHUwMEM0OiBcIkFcIixcbiAgXFx1MDBDNTogXCJBXCIsXG4gIFxcdTFFQTQ6IFwiQVwiLFxuICBcXHUxRUFFOiBcIkFcIixcbiAgXFx1MUVCMjogXCJBXCIsXG4gIFxcdTFFQjQ6IFwiQVwiLFxuICBcXHUxRUI2OiBcIkFcIixcbiAgXFx1MDBDNjogXCJBRVwiLFxuICBcXHUxRUE2OiBcIkFcIixcbiAgXFx1MUVCMDogXCJBXCIsXG4gIFxcdTAyMDI6IFwiQVwiLFxuICBcXHUwMEM3OiBcIkNcIixcbiAgXFx1MUUwODogXCJDXCIsXG4gIFxcdTAwQzg6IFwiRVwiLFxuICBcXHUwMEM5OiBcIkVcIixcbiAgXFx1MDBDQTogXCJFXCIsXG4gIFxcdTAwQ0I6IFwiRVwiLFxuICBcXHUxRUJFOiBcIkVcIixcbiAgXFx1MUUxNjogXCJFXCIsXG4gIFxcdTFFQzA6IFwiRVwiLFxuICBcXHUxRTE0OiBcIkVcIixcbiAgXFx1MUUxQzogXCJFXCIsXG4gIFxcdTAyMDY6IFwiRVwiLFxuICBcXHUwMENDOiBcIklcIixcbiAgXFx1MDBDRDogXCJJXCIsXG4gIFxcdTAwQ0U6IFwiSVwiLFxuICBcXHUwMENGOiBcIklcIixcbiAgXFx1MUUyRTogXCJJXCIsXG4gIFxcdTAyMEE6IFwiSVwiLFxuICBcXHUwMEQwOiBcIkRcIixcbiAgXFx1MDBEMTogXCJOXCIsXG4gIFxcdTAwRDI6IFwiT1wiLFxuICBcXHUwMEQzOiBcIk9cIixcbiAgXFx1MDBENDogXCJPXCIsXG4gIFxcdTAwRDU6IFwiT1wiLFxuICBcXHUwMEQ2OiBcIk9cIixcbiAgXFx1MDBEODogXCJPXCIsXG4gIFxcdTFFRDA6IFwiT1wiLFxuICBcXHUxRTRDOiBcIk9cIixcbiAgXFx1MUU1MjogXCJPXCIsXG4gIFxcdTAyMEU6IFwiT1wiLFxuICBcXHUwMEQ5OiBcIlVcIixcbiAgXFx1MDBEQTogXCJVXCIsXG4gIFxcdTAwREI6IFwiVVwiLFxuICBcXHUwMERDOiBcIlVcIixcbiAgXFx1MDBERDogXCJZXCIsXG4gIFxcdTAwRTA6IFwiYVwiLFxuICBcXHUwMEUxOiBcImFcIixcbiAgXFx1MDBFMjogXCJhXCIsXG4gIFxcdTAwRTM6IFwiYVwiLFxuICBcXHUwMEU0OiBcImFcIixcbiAgXFx1MDBFNTogXCJhXCIsXG4gIFxcdTFFQTU6IFwiYVwiLFxuICBcXHUxRUFGOiBcImFcIixcbiAgXFx1MUVCMzogXCJhXCIsXG4gIFxcdTFFQjU6IFwiYVwiLFxuICBcXHUxRUI3OiBcImFcIixcbiAgXFx1MDBFNjogXCJhZVwiLFxuICBcXHUxRUE3OiBcImFcIixcbiAgXFx1MUVCMTogXCJhXCIsXG4gIFxcdTAyMDM6IFwiYVwiLFxuICBcXHUwMEU3OiBcImNcIixcbiAgXFx1MUUwOTogXCJjXCIsXG4gIFxcdTAwRTg6IFwiZVwiLFxuICBcXHUwMEU5OiBcImVcIixcbiAgXFx1MDBFQTogXCJlXCIsXG4gIFxcdTAwRUI6IFwiZVwiLFxuICBcXHUxRUJGOiBcImVcIixcbiAgXFx1MUUxNzogXCJlXCIsXG4gIFxcdTFFQzE6IFwiZVwiLFxuICBcXHUxRTE1OiBcImVcIixcbiAgXFx1MUUxRDogXCJlXCIsXG4gIFxcdTAyMDc6IFwiZVwiLFxuICBcXHUwMEVDOiBcImlcIixcbiAgXFx1MDBFRDogXCJpXCIsXG4gIFxcdTAwRUU6IFwiaVwiLFxuICBcXHUwMEVGOiBcImlcIixcbiAgXFx1MUUyRjogXCJpXCIsXG4gIFxcdTAyMEI6IFwiaVwiLFxuICBcXHUwMEYwOiBcImRcIixcbiAgXFx1MDBGMTogXCJuXCIsXG4gIFxcdTAwRjI6IFwib1wiLFxuICBcXHUwMEYzOiBcIm9cIixcbiAgXFx1MDBGNDogXCJvXCIsXG4gIFxcdTAwRjU6IFwib1wiLFxuICBcXHUwMEY2OiBcIm9cIixcbiAgXFx1MDBGODogXCJvXCIsXG4gIFxcdTFFRDE6IFwib1wiLFxuICBcXHUxRTREOiBcIm9cIixcbiAgXFx1MUU1MzogXCJvXCIsXG4gIFxcdTAyMEY6IFwib1wiLFxuICBcXHUwMEY5OiBcInVcIixcbiAgXFx1MDBGQTogXCJ1XCIsXG4gIFxcdTAwRkI6IFwidVwiLFxuICBcXHUwMEZDOiBcInVcIixcbiAgXFx1MDBGRDogXCJ5XCIsXG4gIFxcdTAwRkY6IFwieVwiLFxuICBcXHUwMTAwOiBcIkFcIixcbiAgXFx1MDEwMTogXCJhXCIsXG4gIFxcdTAxMDI6IFwiQVwiLFxuICBcXHUwMTAzOiBcImFcIixcbiAgXFx1MDEwNDogXCJBXCIsXG4gIFxcdTAxMDU6IFwiYVwiLFxuICBcXHUwMTA2OiBcIkNcIixcbiAgXFx1MDEwNzogXCJjXCIsXG4gIFxcdTAxMDg6IFwiQ1wiLFxuICBcXHUwMTA5OiBcImNcIixcbiAgXFx1MDEwQTogXCJDXCIsXG4gIFxcdTAxMEI6IFwiY1wiLFxuICBcXHUwMTBDOiBcIkNcIixcbiAgXFx1MDEwRDogXCJjXCIsXG4gIENcXHUwMzA2OiBcIkNcIixcbiAgY1xcdTAzMDY6IFwiY1wiLFxuICBcXHUwMTBFOiBcIkRcIixcbiAgXFx1MDEwRjogXCJkXCIsXG4gIFxcdTAxMTA6IFwiRFwiLFxuICBcXHUwMTExOiBcImRcIixcbiAgXFx1MDExMjogXCJFXCIsXG4gIFxcdTAxMTM6IFwiZVwiLFxuICBcXHUwMTE0OiBcIkVcIixcbiAgXFx1MDExNTogXCJlXCIsXG4gIFxcdTAxMTY6IFwiRVwiLFxuICBcXHUwMTE3OiBcImVcIixcbiAgXFx1MDExODogXCJFXCIsXG4gIFxcdTAxMTk6IFwiZVwiLFxuICBcXHUwMTFBOiBcIkVcIixcbiAgXFx1MDExQjogXCJlXCIsXG4gIFxcdTAxMUM6IFwiR1wiLFxuICBcXHUwMUY0OiBcIkdcIixcbiAgXFx1MDExRDogXCJnXCIsXG4gIFxcdTAxRjU6IFwiZ1wiLFxuICBcXHUwMTFFOiBcIkdcIixcbiAgXFx1MDExRjogXCJnXCIsXG4gIFxcdTAxMjA6IFwiR1wiLFxuICBcXHUwMTIxOiBcImdcIixcbiAgXFx1MDEyMjogXCJHXCIsXG4gIFxcdTAxMjM6IFwiZ1wiLFxuICBcXHUwMTI0OiBcIkhcIixcbiAgXFx1MDEyNTogXCJoXCIsXG4gIFxcdTAxMjY6IFwiSFwiLFxuICBcXHUwMTI3OiBcImhcIixcbiAgXFx1MUUyQTogXCJIXCIsXG4gIFxcdTFFMkI6IFwiaFwiLFxuICBcXHUwMTI4OiBcIklcIixcbiAgXFx1MDEyOTogXCJpXCIsXG4gIFxcdTAxMkE6IFwiSVwiLFxuICBcXHUwMTJCOiBcImlcIixcbiAgXFx1MDEyQzogXCJJXCIsXG4gIFxcdTAxMkQ6IFwiaVwiLFxuICBcXHUwMTJFOiBcIklcIixcbiAgXFx1MDEyRjogXCJpXCIsXG4gIFxcdTAxMzA6IFwiSVwiLFxuICBcXHUwMTMxOiBcImlcIixcbiAgXFx1MDEzMjogXCJJSlwiLFxuICBcXHUwMTMzOiBcImlqXCIsXG4gIFxcdTAxMzQ6IFwiSlwiLFxuICBcXHUwMTM1OiBcImpcIixcbiAgXFx1MDEzNjogXCJLXCIsXG4gIFxcdTAxMzc6IFwia1wiLFxuICBcXHUxRTMwOiBcIktcIixcbiAgXFx1MUUzMTogXCJrXCIsXG4gIEtcXHUwMzA2OiBcIktcIixcbiAga1xcdTAzMDY6IFwia1wiLFxuICBcXHUwMTM5OiBcIkxcIixcbiAgXFx1MDEzQTogXCJsXCIsXG4gIFxcdTAxM0I6IFwiTFwiLFxuICBcXHUwMTNDOiBcImxcIixcbiAgXFx1MDEzRDogXCJMXCIsXG4gIFxcdTAxM0U6IFwibFwiLFxuICBcXHUwMTNGOiBcIkxcIixcbiAgXFx1MDE0MDogXCJsXCIsXG4gIFxcdTAxNDE6IFwibFwiLFxuICBcXHUwMTQyOiBcImxcIixcbiAgXFx1MUUzRTogXCJNXCIsXG4gIFxcdTFFM0Y6IFwibVwiLFxuICBNXFx1MDMwNjogXCJNXCIsXG4gIG1cXHUwMzA2OiBcIm1cIixcbiAgXFx1MDE0MzogXCJOXCIsXG4gIFxcdTAxNDQ6IFwiblwiLFxuICBcXHUwMTQ1OiBcIk5cIixcbiAgXFx1MDE0NjogXCJuXCIsXG4gIFxcdTAxNDc6IFwiTlwiLFxuICBcXHUwMTQ4OiBcIm5cIixcbiAgXFx1MDE0OTogXCJuXCIsXG4gIE5cXHUwMzA2OiBcIk5cIixcbiAgblxcdTAzMDY6IFwiblwiLFxuICBcXHUwMTRDOiBcIk9cIixcbiAgXFx1MDE0RDogXCJvXCIsXG4gIFxcdTAxNEU6IFwiT1wiLFxuICBcXHUwMTRGOiBcIm9cIixcbiAgXFx1MDE1MDogXCJPXCIsXG4gIFxcdTAxNTE6IFwib1wiLFxuICBcXHUwMTUyOiBcIk9FXCIsXG4gIFxcdTAxNTM6IFwib2VcIixcbiAgUFxcdTAzMDY6IFwiUFwiLFxuICBwXFx1MDMwNjogXCJwXCIsXG4gIFxcdTAxNTQ6IFwiUlwiLFxuICBcXHUwMTU1OiBcInJcIixcbiAgXFx1MDE1NjogXCJSXCIsXG4gIFxcdTAxNTc6IFwiclwiLFxuICBcXHUwMTU4OiBcIlJcIixcbiAgXFx1MDE1OTogXCJyXCIsXG4gIFJcXHUwMzA2OiBcIlJcIixcbiAgclxcdTAzMDY6IFwiclwiLFxuICBcXHUwMjEyOiBcIlJcIixcbiAgXFx1MDIxMzogXCJyXCIsXG4gIFxcdTAxNUE6IFwiU1wiLFxuICBcXHUwMTVCOiBcInNcIixcbiAgXFx1MDE1QzogXCJTXCIsXG4gIFxcdTAxNUQ6IFwic1wiLFxuICBcXHUwMTVFOiBcIlNcIixcbiAgXFx1MDIxODogXCJTXCIsXG4gIFxcdTAyMTk6IFwic1wiLFxuICBcXHUwMTVGOiBcInNcIixcbiAgXFx1MDE2MDogXCJTXCIsXG4gIFxcdTAxNjE6IFwic1wiLFxuICBcXHUwMTYyOiBcIlRcIixcbiAgXFx1MDE2MzogXCJ0XCIsXG4gIFxcdTAyMUI6IFwidFwiLFxuICBcXHUwMjFBOiBcIlRcIixcbiAgXFx1MDE2NDogXCJUXCIsXG4gIFxcdTAxNjU6IFwidFwiLFxuICBcXHUwMTY2OiBcIlRcIixcbiAgXFx1MDE2NzogXCJ0XCIsXG4gIFRcXHUwMzA2OiBcIlRcIixcbiAgdFxcdTAzMDY6IFwidFwiLFxuICBcXHUwMTY4OiBcIlVcIixcbiAgXFx1MDE2OTogXCJ1XCIsXG4gIFxcdTAxNkE6IFwiVVwiLFxuICBcXHUwMTZCOiBcInVcIixcbiAgXFx1MDE2QzogXCJVXCIsXG4gIFxcdTAxNkQ6IFwidVwiLFxuICBcXHUwMTZFOiBcIlVcIixcbiAgXFx1MDE2RjogXCJ1XCIsXG4gIFxcdTAxNzA6IFwiVVwiLFxuICBcXHUwMTcxOiBcInVcIixcbiAgXFx1MDE3MjogXCJVXCIsXG4gIFxcdTAxNzM6IFwidVwiLFxuICBcXHUwMjE2OiBcIlVcIixcbiAgXFx1MDIxNzogXCJ1XCIsXG4gIFZcXHUwMzA2OiBcIlZcIixcbiAgdlxcdTAzMDY6IFwidlwiLFxuICBcXHUwMTc0OiBcIldcIixcbiAgXFx1MDE3NTogXCJ3XCIsXG4gIFxcdTFFODI6IFwiV1wiLFxuICBcXHUxRTgzOiBcIndcIixcbiAgWFxcdTAzMDY6IFwiWFwiLFxuICB4XFx1MDMwNjogXCJ4XCIsXG4gIFxcdTAxNzY6IFwiWVwiLFxuICBcXHUwMTc3OiBcInlcIixcbiAgXFx1MDE3ODogXCJZXCIsXG4gIFlcXHUwMzA2OiBcIllcIixcbiAgeVxcdTAzMDY6IFwieVwiLFxuICBcXHUwMTc5OiBcIlpcIixcbiAgXFx1MDE3QTogXCJ6XCIsXG4gIFxcdTAxN0I6IFwiWlwiLFxuICBcXHUwMTdDOiBcInpcIixcbiAgXFx1MDE3RDogXCJaXCIsXG4gIFxcdTAxN0U6IFwielwiLFxuICBcXHUwMTdGOiBcInNcIixcbiAgXFx1MDE5MjogXCJmXCIsXG4gIFxcdTAxQTA6IFwiT1wiLFxuICBcXHUwMUExOiBcIm9cIixcbiAgXFx1MDFBRjogXCJVXCIsXG4gIFxcdTAxQjA6IFwidVwiLFxuICBcXHUwMUNEOiBcIkFcIixcbiAgXFx1MDFDRTogXCJhXCIsXG4gIFxcdTAxQ0Y6IFwiSVwiLFxuICBcXHUwMUQwOiBcImlcIixcbiAgXFx1MDFEMTogXCJPXCIsXG4gIFxcdTAxRDI6IFwib1wiLFxuICBcXHUwMUQzOiBcIlVcIixcbiAgXFx1MDFENDogXCJ1XCIsXG4gIFxcdTAxRDU6IFwiVVwiLFxuICBcXHUwMUQ2OiBcInVcIixcbiAgXFx1MDFENzogXCJVXCIsXG4gIFxcdTAxRDg6IFwidVwiLFxuICBcXHUwMUQ5OiBcIlVcIixcbiAgXFx1MDFEQTogXCJ1XCIsXG4gIFxcdTAxREI6IFwiVVwiLFxuICBcXHUwMURDOiBcInVcIixcbiAgXFx1MUVFODogXCJVXCIsXG4gIFxcdTFFRTk6IFwidVwiLFxuICBcXHUxRTc4OiBcIlVcIixcbiAgXFx1MUU3OTogXCJ1XCIsXG4gIFxcdTAxRkE6IFwiQVwiLFxuICBcXHUwMUZCOiBcImFcIixcbiAgXFx1MDFGQzogXCJBRVwiLFxuICBcXHUwMUZEOiBcImFlXCIsXG4gIFxcdTAxRkU6IFwiT1wiLFxuICBcXHUwMUZGOiBcIm9cIixcbiAgXFx1MDBERTogXCJUSFwiLFxuICBcXHUwMEZFOiBcInRoXCIsXG4gIFxcdTFFNTQ6IFwiUFwiLFxuICBcXHUxRTU1OiBcInBcIixcbiAgXFx1MUU2NDogXCJTXCIsXG4gIFxcdTFFNjU6IFwic1wiLFxuICBYXFx1MDMwMTogXCJYXCIsXG4gIHhcXHUwMzAxOiBcInhcIixcbiAgXFx1MDQwMzogXCJcXHUwNDEzXCIsXG4gIFxcdTA0NTM6IFwiXFx1MDQzM1wiLFxuICBcXHUwNDBDOiBcIlxcdTA0MUFcIixcbiAgXFx1MDQ1QzogXCJcXHUwNDNBXCIsXG4gIEFcXHUwMzBCOiBcIkFcIixcbiAgYVxcdTAzMEI6IFwiYVwiLFxuICBFXFx1MDMwQjogXCJFXCIsXG4gIGVcXHUwMzBCOiBcImVcIixcbiAgSVxcdTAzMEI6IFwiSVwiLFxuICBpXFx1MDMwQjogXCJpXCIsXG4gIFxcdTAxRjg6IFwiTlwiLFxuICBcXHUwMUY5OiBcIm5cIixcbiAgXFx1MUVEMjogXCJPXCIsXG4gIFxcdTFFRDM6IFwib1wiLFxuICBcXHUxRTUwOiBcIk9cIixcbiAgXFx1MUU1MTogXCJvXCIsXG4gIFxcdTFFRUE6IFwiVVwiLFxuICBcXHUxRUVCOiBcInVcIixcbiAgXFx1MUU4MDogXCJXXCIsXG4gIFxcdTFFODE6IFwid1wiLFxuICBcXHUxRUYyOiBcIllcIixcbiAgXFx1MUVGMzogXCJ5XCIsXG4gIFxcdTAyMDA6IFwiQVwiLFxuICBcXHUwMjAxOiBcImFcIixcbiAgXFx1MDIwNDogXCJFXCIsXG4gIFxcdTAyMDU6IFwiZVwiLFxuICBcXHUwMjA4OiBcIklcIixcbiAgXFx1MDIwOTogXCJpXCIsXG4gIFxcdTAyMEM6IFwiT1wiLFxuICBcXHUwMjBEOiBcIm9cIixcbiAgXFx1MDIxMDogXCJSXCIsXG4gIFxcdTAyMTE6IFwiclwiLFxuICBcXHUwMjE0OiBcIlVcIixcbiAgXFx1MDIxNTogXCJ1XCIsXG4gIEJcXHUwMzBDOiBcIkJcIixcbiAgYlxcdTAzMEM6IFwiYlwiLFxuICBcXHUwMTBDXFx1MDMyMzogXCJDXCIsXG4gIFxcdTAxMERcXHUwMzIzOiBcImNcIixcbiAgXFx1MDBDQVxcdTAzMEM6IFwiRVwiLFxuICBcXHUwMEVBXFx1MDMwQzogXCJlXCIsXG4gIEZcXHUwMzBDOiBcIkZcIixcbiAgZlxcdTAzMEM6IFwiZlwiLFxuICBcXHUwMUU2OiBcIkdcIixcbiAgXFx1MDFFNzogXCJnXCIsXG4gIFxcdTAyMUU6IFwiSFwiLFxuICBcXHUwMjFGOiBcImhcIixcbiAgSlxcdTAzMEM6IFwiSlwiLFxuICBcXHUwMUYwOiBcImpcIixcbiAgXFx1MDFFODogXCJLXCIsXG4gIFxcdTAxRTk6IFwia1wiLFxuICBNXFx1MDMwQzogXCJNXCIsXG4gIG1cXHUwMzBDOiBcIm1cIixcbiAgUFxcdTAzMEM6IFwiUFwiLFxuICBwXFx1MDMwQzogXCJwXCIsXG4gIFFcXHUwMzBDOiBcIlFcIixcbiAgcVxcdTAzMEM6IFwicVwiLFxuICBcXHUwMTU4XFx1MDMyOTogXCJSXCIsXG4gIFxcdTAxNTlcXHUwMzI5OiBcInJcIixcbiAgXFx1MUU2NjogXCJTXCIsXG4gIFxcdTFFNjc6IFwic1wiLFxuICBWXFx1MDMwQzogXCJWXCIsXG4gIHZcXHUwMzBDOiBcInZcIixcbiAgV1xcdTAzMEM6IFwiV1wiLFxuICB3XFx1MDMwQzogXCJ3XCIsXG4gIFhcXHUwMzBDOiBcIlhcIixcbiAgeFxcdTAzMEM6IFwieFwiLFxuICBZXFx1MDMwQzogXCJZXCIsXG4gIHlcXHUwMzBDOiBcInlcIixcbiAgQVxcdTAzMjc6IFwiQVwiLFxuICBhXFx1MDMyNzogXCJhXCIsXG4gIEJcXHUwMzI3OiBcIkJcIixcbiAgYlxcdTAzMjc6IFwiYlwiLFxuICBcXHUxRTEwOiBcIkRcIixcbiAgXFx1MUUxMTogXCJkXCIsXG4gIFxcdTAyMjg6IFwiRVwiLFxuICBcXHUwMjI5OiBcImVcIixcbiAgXFx1MDE5MFxcdTAzMjc6IFwiRVwiLFxuICBcXHUwMjVCXFx1MDMyNzogXCJlXCIsXG4gIFxcdTFFMjg6IFwiSFwiLFxuICBcXHUxRTI5OiBcImhcIixcbiAgSVxcdTAzMjc6IFwiSVwiLFxuICBpXFx1MDMyNzogXCJpXCIsXG4gIFxcdTAxOTdcXHUwMzI3OiBcIklcIixcbiAgXFx1MDI2OFxcdTAzMjc6IFwiaVwiLFxuICBNXFx1MDMyNzogXCJNXCIsXG4gIG1cXHUwMzI3OiBcIm1cIixcbiAgT1xcdTAzMjc6IFwiT1wiLFxuICBvXFx1MDMyNzogXCJvXCIsXG4gIFFcXHUwMzI3OiBcIlFcIixcbiAgcVxcdTAzMjc6IFwicVwiLFxuICBVXFx1MDMyNzogXCJVXCIsXG4gIHVcXHUwMzI3OiBcInVcIixcbiAgWFxcdTAzMjc6IFwiWFwiLFxuICB4XFx1MDMyNzogXCJ4XCIsXG4gIFpcXHUwMzI3OiBcIlpcIixcbiAgelxcdTAzMjc6IFwielwiXG59O1xudmFyIGNoYXJzID0gT2JqZWN0LmtleXMoY2hhcmFjdGVyTWFwKS5qb2luKFwifFwiKTtcbnZhciBhbGxBY2NlbnRzID0gbmV3IFJlZ0V4cChjaGFycywgXCJnXCIpO1xuZnVuY3Rpb24gcmVtb3ZlQWNjZW50cyhzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGFsbEFjY2VudHMsIChtYXRjaCkgPT4ge1xuICAgIHJldHVybiBjaGFyYWN0ZXJNYXBbbWF0Y2hdO1xuICB9KTtcbn1cbnZhciByYW5raW5ncyA9IHtcbiAgQ0FTRV9TRU5TSVRJVkVfRVFVQUw6IDcsXG4gIEVRVUFMOiA2LFxuICBTVEFSVFNfV0lUSDogNSxcbiAgV09SRF9TVEFSVFNfV0lUSDogNCxcbiAgQ09OVEFJTlM6IDMsXG4gIEFDUk9OWU06IDIsXG4gIE1BVENIRVM6IDEsXG4gIE5PX01BVENIOiAwXG59O1xuZnVuY3Rpb24gcmFua0l0ZW0oaXRlbSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJHRocmVzaG9sZDtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIG9wdGlvbnMudGhyZXNob2xkID0gKF9vcHRpb25zJHRocmVzaG9sZCA9IG9wdGlvbnMudGhyZXNob2xkKSAhPSBudWxsID8gX29wdGlvbnMkdGhyZXNob2xkIDogcmFua2luZ3MuTUFUQ0hFUztcbiAgaWYgKCFvcHRpb25zLmFjY2Vzc29ycykge1xuICAgIGNvbnN0IHJhbmsgPSBnZXRNYXRjaFJhbmtpbmcoaXRlbSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgIHJldHVybiB7XG4gICAgICAvLyBlbmRzIHVwIGJlaW5nIGR1cGxpY2F0ZSBvZiAnaXRlbScgaW4gbWF0Y2hlcyBidXQgY29uc2lzdGVudFxuICAgICAgcmFua2VkVmFsdWU6IGl0ZW0sXG4gICAgICByYW5rLFxuICAgICAgYWNjZXNzb3JJbmRleDogLTEsXG4gICAgICBhY2Nlc3NvclRocmVzaG9sZDogb3B0aW9ucy50aHJlc2hvbGQsXG4gICAgICBwYXNzZWQ6IHJhbmsgPj0gb3B0aW9ucy50aHJlc2hvbGRcbiAgICB9O1xuICB9XG4gIGNvbnN0IHZhbHVlc1RvUmFuayA9IGdldEFsbFZhbHVlc1RvUmFuayhpdGVtLCBvcHRpb25zLmFjY2Vzc29ycyk7XG4gIGNvbnN0IHJhbmtpbmdJbmZvID0ge1xuICAgIHJhbmtlZFZhbHVlOiBpdGVtLFxuICAgIHJhbms6IHJhbmtpbmdzLk5PX01BVENILFxuICAgIGFjY2Vzc29ySW5kZXg6IC0xLFxuICAgIGFjY2Vzc29yVGhyZXNob2xkOiBvcHRpb25zLnRocmVzaG9sZCxcbiAgICBwYXNzZWQ6IGZhbHNlXG4gIH07XG4gIGZvciAobGV0IGkyID0gMDsgaTIgPCB2YWx1ZXNUb1JhbmsubGVuZ3RoOyBpMisrKSB7XG4gICAgY29uc3QgcmFua1ZhbHVlID0gdmFsdWVzVG9SYW5rW2kyXTtcbiAgICBsZXQgbmV3UmFuayA9IGdldE1hdGNoUmFua2luZyhyYW5rVmFsdWUuaXRlbVZhbHVlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgY29uc3Qge1xuICAgICAgbWluUmFua2luZyxcbiAgICAgIG1heFJhbmtpbmcsXG4gICAgICB0aHJlc2hvbGQgPSBvcHRpb25zLnRocmVzaG9sZFxuICAgIH0gPSByYW5rVmFsdWUuYXR0cmlidXRlcztcbiAgICBpZiAobmV3UmFuayA8IG1pblJhbmtpbmcgJiYgbmV3UmFuayA+PSByYW5raW5ncy5NQVRDSEVTKSB7XG4gICAgICBuZXdSYW5rID0gbWluUmFua2luZztcbiAgICB9IGVsc2UgaWYgKG5ld1JhbmsgPiBtYXhSYW5raW5nKSB7XG4gICAgICBuZXdSYW5rID0gbWF4UmFua2luZztcbiAgICB9XG4gICAgbmV3UmFuayA9IE1hdGgubWluKG5ld1JhbmssIG1heFJhbmtpbmcpO1xuICAgIGlmIChuZXdSYW5rID49IHRocmVzaG9sZCAmJiBuZXdSYW5rID4gcmFua2luZ0luZm8ucmFuaykge1xuICAgICAgcmFua2luZ0luZm8ucmFuayA9IG5ld1Jhbms7XG4gICAgICByYW5raW5nSW5mby5wYXNzZWQgPSB0cnVlO1xuICAgICAgcmFua2luZ0luZm8uYWNjZXNzb3JJbmRleCA9IGkyO1xuICAgICAgcmFua2luZ0luZm8uYWNjZXNzb3JUaHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gICAgICByYW5raW5nSW5mby5yYW5rZWRWYWx1ZSA9IHJhbmtWYWx1ZS5pdGVtVmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByYW5raW5nSW5mbztcbn1cbmZ1bmN0aW9uIGdldE1hdGNoUmFua2luZyh0ZXN0U3RyaW5nLCBzdHJpbmdUb1JhbmssIG9wdGlvbnMpIHtcbiAgdGVzdFN0cmluZyA9IHByZXBhcmVWYWx1ZUZvckNvbXBhcmlzb24odGVzdFN0cmluZywgb3B0aW9ucyk7XG4gIHN0cmluZ1RvUmFuayA9IHByZXBhcmVWYWx1ZUZvckNvbXBhcmlzb24oc3RyaW5nVG9SYW5rLCBvcHRpb25zKTtcbiAgaWYgKHN0cmluZ1RvUmFuay5sZW5ndGggPiB0ZXN0U3RyaW5nLmxlbmd0aCkge1xuICAgIHJldHVybiByYW5raW5ncy5OT19NQVRDSDtcbiAgfVxuICBpZiAodGVzdFN0cmluZyA9PT0gc3RyaW5nVG9SYW5rKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLkNBU0VfU0VOU0lUSVZFX0VRVUFMO1xuICB9XG4gIHRlc3RTdHJpbmcgPSB0ZXN0U3RyaW5nLnRvTG93ZXJDYXNlKCk7XG4gIHN0cmluZ1RvUmFuayA9IHN0cmluZ1RvUmFuay50b0xvd2VyQ2FzZSgpO1xuICBpZiAodGVzdFN0cmluZyA9PT0gc3RyaW5nVG9SYW5rKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLkVRVUFMO1xuICB9XG4gIGlmICh0ZXN0U3RyaW5nLnN0YXJ0c1dpdGgoc3RyaW5nVG9SYW5rKSkge1xuICAgIHJldHVybiByYW5raW5ncy5TVEFSVFNfV0lUSDtcbiAgfVxuICBpZiAodGVzdFN0cmluZy5pbmNsdWRlcyhgICR7c3RyaW5nVG9SYW5rfWApKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLldPUkRfU1RBUlRTX1dJVEg7XG4gIH1cbiAgaWYgKHRlc3RTdHJpbmcuaW5jbHVkZXMoc3RyaW5nVG9SYW5rKSkge1xuICAgIHJldHVybiByYW5raW5ncy5DT05UQUlOUztcbiAgfSBlbHNlIGlmIChzdHJpbmdUb1JhbmsubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIHJhbmtpbmdzLk5PX01BVENIO1xuICB9XG4gIGlmIChnZXRBY3JvbnltKHRlc3RTdHJpbmcpLmluY2x1ZGVzKHN0cmluZ1RvUmFuaykpIHtcbiAgICByZXR1cm4gcmFua2luZ3MuQUNST05ZTTtcbiAgfVxuICByZXR1cm4gZ2V0Q2xvc2VuZXNzUmFua2luZyh0ZXN0U3RyaW5nLCBzdHJpbmdUb1JhbmspO1xufVxuZnVuY3Rpb24gZ2V0QWNyb255bShzdHJpbmcpIHtcbiAgbGV0IGFjcm9ueW0gPSBcIlwiO1xuICBjb25zdCB3b3Jkc0luU3RyaW5nID0gc3RyaW5nLnNwbGl0KFwiIFwiKTtcbiAgd29yZHNJblN0cmluZy5mb3JFYWNoKCh3b3JkSW5TdHJpbmcpID0+IHtcbiAgICBjb25zdCBzcGxpdEJ5SHlwaGVuV29yZHMgPSB3b3JkSW5TdHJpbmcuc3BsaXQoXCItXCIpO1xuICAgIHNwbGl0QnlIeXBoZW5Xb3Jkcy5mb3JFYWNoKChzcGxpdEJ5SHlwaGVuV29yZCkgPT4ge1xuICAgICAgYWNyb255bSArPSBzcGxpdEJ5SHlwaGVuV29yZC5zdWJzdHIoMCwgMSk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gYWNyb255bTtcbn1cbmZ1bmN0aW9uIGdldENsb3NlbmVzc1JhbmtpbmcodGVzdFN0cmluZywgc3RyaW5nVG9SYW5rKSB7XG4gIGxldCBtYXRjaGluZ0luT3JkZXJDaGFyQ291bnQgPSAwO1xuICBsZXQgY2hhck51bWJlciA9IDA7XG4gIGZ1bmN0aW9uIGZpbmRNYXRjaGluZ0NoYXJhY3RlcihtYXRjaENoYXIsIHN0cmluZywgaW5kZXgpIHtcbiAgICBmb3IgKGxldCBqID0gaW5kZXgsIEogPSBzdHJpbmcubGVuZ3RoOyBqIDwgSjsgaisrKSB7XG4gICAgICBjb25zdCBzdHJpbmdDaGFyID0gc3RyaW5nW2pdO1xuICAgICAgaWYgKHN0cmluZ0NoYXIgPT09IG1hdGNoQ2hhcikge1xuICAgICAgICBtYXRjaGluZ0luT3JkZXJDaGFyQ291bnQgKz0gMTtcbiAgICAgICAgcmV0dXJuIGogKyAxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0UmFua2luZyhzcHJlYWQzKSB7XG4gICAgY29uc3Qgc3ByZWFkUGVyY2VudGFnZSA9IDEgLyBzcHJlYWQzO1xuICAgIGNvbnN0IGluT3JkZXJQZXJjZW50YWdlID0gbWF0Y2hpbmdJbk9yZGVyQ2hhckNvdW50IC8gc3RyaW5nVG9SYW5rLmxlbmd0aDtcbiAgICBjb25zdCByYW5raW5nID0gcmFua2luZ3MuTUFUQ0hFUyArIGluT3JkZXJQZXJjZW50YWdlICogc3ByZWFkUGVyY2VudGFnZTtcbiAgICByZXR1cm4gcmFua2luZztcbiAgfVxuICBjb25zdCBmaXJzdEluZGV4ID0gZmluZE1hdGNoaW5nQ2hhcmFjdGVyKHN0cmluZ1RvUmFua1swXSwgdGVzdFN0cmluZywgMCk7XG4gIGlmIChmaXJzdEluZGV4IDwgMCkge1xuICAgIHJldHVybiByYW5raW5ncy5OT19NQVRDSDtcbiAgfVxuICBjaGFyTnVtYmVyID0gZmlyc3RJbmRleDtcbiAgZm9yIChsZXQgaTIgPSAxLCBJID0gc3RyaW5nVG9SYW5rLmxlbmd0aDsgaTIgPCBJOyBpMisrKSB7XG4gICAgY29uc3QgbWF0Y2hDaGFyID0gc3RyaW5nVG9SYW5rW2kyXTtcbiAgICBjaGFyTnVtYmVyID0gZmluZE1hdGNoaW5nQ2hhcmFjdGVyKG1hdGNoQ2hhciwgdGVzdFN0cmluZywgY2hhck51bWJlcik7XG4gICAgY29uc3QgZm91bmQgPSBjaGFyTnVtYmVyID4gLTE7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgcmV0dXJuIHJhbmtpbmdzLk5PX01BVENIO1xuICAgIH1cbiAgfVxuICBjb25zdCBzcHJlYWQyID0gY2hhck51bWJlciAtIGZpcnN0SW5kZXg7XG4gIHJldHVybiBnZXRSYW5raW5nKHNwcmVhZDIpO1xufVxuZnVuY3Rpb24gcHJlcGFyZVZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSwgX3JlZikge1xuICBsZXQge1xuICAgIGtlZXBEaWFjcml0aWNzXG4gIH0gPSBfcmVmO1xuICB2YWx1ZSA9IGAke3ZhbHVlfWA7XG4gIGlmICgha2VlcERpYWNyaXRpY3MpIHtcbiAgICB2YWx1ZSA9IHJlbW92ZUFjY2VudHModmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGdldEl0ZW1WYWx1ZXMoaXRlbSwgYWNjZXNzb3IpIHtcbiAgbGV0IGFjY2Vzc29yRm4gPSBhY2Nlc3NvcjtcbiAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gXCJvYmplY3RcIikge1xuICAgIGFjY2Vzc29yRm4gPSBhY2Nlc3Nvci5hY2Nlc3NvcjtcbiAgfVxuICBjb25zdCB2YWx1ZSA9IGFjY2Vzc29yRm4oaXRlbSk7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gW1N0cmluZyh2YWx1ZSldO1xufVxuZnVuY3Rpb24gZ2V0QWxsVmFsdWVzVG9SYW5rKGl0ZW0sIGFjY2Vzc29ycykge1xuICBjb25zdCBhbGxWYWx1ZXMgPSBbXTtcbiAgZm9yIChsZXQgaiA9IDAsIEogPSBhY2Nlc3NvcnMubGVuZ3RoOyBqIDwgSjsgaisrKSB7XG4gICAgY29uc3QgYWNjZXNzb3IgPSBhY2Nlc3NvcnNbal07XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IGdldEFjY2Vzc29yQXR0cmlidXRlcyhhY2Nlc3Nvcik7XG4gICAgY29uc3QgaXRlbVZhbHVlcyA9IGdldEl0ZW1WYWx1ZXMoaXRlbSwgYWNjZXNzb3IpO1xuICAgIGZvciAobGV0IGkyID0gMCwgSSA9IGl0ZW1WYWx1ZXMubGVuZ3RoOyBpMiA8IEk7IGkyKyspIHtcbiAgICAgIGFsbFZhbHVlcy5wdXNoKHtcbiAgICAgICAgaXRlbVZhbHVlOiBpdGVtVmFsdWVzW2kyXSxcbiAgICAgICAgYXR0cmlidXRlc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhbGxWYWx1ZXM7XG59XG52YXIgZGVmYXVsdEtleUF0dHJpYnV0ZXMgPSB7XG4gIG1heFJhbmtpbmc6IEluZmluaXR5LFxuICBtaW5SYW5raW5nOiAtSW5maW5pdHlcbn07XG5mdW5jdGlvbiBnZXRBY2Nlc3NvckF0dHJpYnV0ZXMoYWNjZXNzb3IpIHtcbiAgaWYgKHR5cGVvZiBhY2Nlc3NvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRLZXlBdHRyaWJ1dGVzO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uZGVmYXVsdEtleUF0dHJpYnV0ZXMsXG4gICAgLi4uYWNjZXNzb3JcbiAgfTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2dvb2JlckAyLjEuMTZfY3NzdHlwZUAzLjEuMy9ub2RlX21vZHVsZXMvZ29vYmVyL2Rpc3QvZ29vYmVyLm1vZGVybi5qc1xudmFyIGUgPSB7IGRhdGE6IFwiXCIgfTtcbnZhciB0ID0gKHQyKSA9PiBcIm9iamVjdFwiID09IHR5cGVvZiB3aW5kb3cgPyAoKHQyID8gdDIucXVlcnlTZWxlY3RvcihcIiNfZ29vYmVyXCIpIDogd2luZG93Ll9nb29iZXIpIHx8IE9iamVjdC5hc3NpZ24oKHQyIHx8IGRvY3VtZW50LmhlYWQpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKSksIHsgaW5uZXJIVE1MOiBcIiBcIiwgaWQ6IFwiX2dvb2JlclwiIH0pKS5maXJzdENoaWxkIDogdDIgfHwgZTtcbnZhciBsID0gLyg/OihbXFx1MDA4MC1cXHVGRkZGXFx3LSVAXSspICo6PyAqKFteeztdKz8pO3woW147fXtdKj8pICp7KXwofVxccyopL2c7XG52YXIgYSA9IC9cXC9cXCpbXl0qP1xcKlxcL3wgICsvZztcbnZhciBuID0gL1xcbisvZztcbnZhciBvID0gKGUyLCB0MikgPT4ge1xuICBsZXQgcjIgPSBcIlwiLCBsMiA9IFwiXCIsIGEyID0gXCJcIjtcbiAgZm9yIChsZXQgbjIgaW4gZTIpIHtcbiAgICBsZXQgYzIgPSBlMltuMl07XG4gICAgXCJAXCIgPT0gbjJbMF0gPyBcImlcIiA9PSBuMlsxXSA/IHIyID0gbjIgKyBcIiBcIiArIGMyICsgXCI7XCIgOiBsMiArPSBcImZcIiA9PSBuMlsxXSA/IG8oYzIsIG4yKSA6IG4yICsgXCJ7XCIgKyBvKGMyLCBcImtcIiA9PSBuMlsxXSA/IFwiXCIgOiB0MikgKyBcIn1cIiA6IFwib2JqZWN0XCIgPT0gdHlwZW9mIGMyID8gbDIgKz0gbyhjMiwgdDIgPyB0Mi5yZXBsYWNlKC8oW14sXSkrL2csIChlMykgPT4gbjIucmVwbGFjZSgvKFteLF0qOlxcUytcXChbXildKlxcKSl8KFteLF0pKy9nLCAodDMpID0+IC8mLy50ZXN0KHQzKSA/IHQzLnJlcGxhY2UoLyYvZywgZTMpIDogZTMgPyBlMyArIFwiIFwiICsgdDMgOiB0MykpIDogbjIpIDogbnVsbCAhPSBjMiAmJiAobjIgPSAvXi0tLy50ZXN0KG4yKSA/IG4yIDogbjIucmVwbGFjZSgvW0EtWl0vZywgXCItJCZcIikudG9Mb3dlckNhc2UoKSwgYTIgKz0gby5wID8gby5wKG4yLCBjMikgOiBuMiArIFwiOlwiICsgYzIgKyBcIjtcIik7XG4gIH1cbiAgcmV0dXJuIHIyICsgKHQyICYmIGEyID8gdDIgKyBcIntcIiArIGEyICsgXCJ9XCIgOiBhMikgKyBsMjtcbn07XG52YXIgYyA9IHt9O1xudmFyIHMgPSAoZTIpID0+IHtcbiAgaWYgKFwib2JqZWN0XCIgPT0gdHlwZW9mIGUyKSB7XG4gICAgbGV0IHQyID0gXCJcIjtcbiAgICBmb3IgKGxldCByMiBpbiBlMikgdDIgKz0gcjIgKyBzKGUyW3IyXSk7XG4gICAgcmV0dXJuIHQyO1xuICB9XG4gIHJldHVybiBlMjtcbn07XG52YXIgaSA9IChlMiwgdDIsIHIyLCBpMiwgcDIpID0+IHtcbiAgbGV0IHUyID0gcyhlMiksIGQgPSBjW3UyXSB8fCAoY1t1Ml0gPSAoKGUzKSA9PiB7XG4gICAgbGV0IHQzID0gMCwgcjMgPSAxMTtcbiAgICBmb3IgKDsgdDMgPCBlMy5sZW5ndGg7ICkgcjMgPSAxMDEgKiByMyArIGUzLmNoYXJDb2RlQXQodDMrKykgPj4+IDA7XG4gICAgcmV0dXJuIFwiZ29cIiArIHIzO1xuICB9KSh1MikpO1xuICBpZiAoIWNbZF0pIHtcbiAgICBsZXQgdDMgPSB1MiAhPT0gZTIgPyBlMiA6ICgoZTMpID0+IHtcbiAgICAgIGxldCB0NCwgcjMsIG8yID0gW3t9XTtcbiAgICAgIGZvciAoOyB0NCA9IGwuZXhlYyhlMy5yZXBsYWNlKGEsIFwiXCIpKTsgKSB0NFs0XSA/IG8yLnNoaWZ0KCkgOiB0NFszXSA/IChyMyA9IHQ0WzNdLnJlcGxhY2UobiwgXCIgXCIpLnRyaW0oKSwgbzIudW5zaGlmdChvMlswXVtyM10gPSBvMlswXVtyM10gfHwge30pKSA6IG8yWzBdW3Q0WzFdXSA9IHQ0WzJdLnJlcGxhY2UobiwgXCIgXCIpLnRyaW0oKTtcbiAgICAgIHJldHVybiBvMlswXTtcbiAgICB9KShlMik7XG4gICAgY1tkXSA9IG8ocDIgPyB7IFtcIkBrZXlmcmFtZXMgXCIgKyBkXTogdDMgfSA6IHQzLCByMiA/IFwiXCIgOiBcIi5cIiArIGQpO1xuICB9XG4gIGxldCBmID0gcjIgJiYgYy5nID8gYy5nIDogbnVsbDtcbiAgcmV0dXJuIHIyICYmIChjLmcgPSBjW2RdKSwgKChlMywgdDMsIHIzLCBsMikgPT4ge1xuICAgIGwyID8gdDMuZGF0YSA9IHQzLmRhdGEucmVwbGFjZShsMiwgZTMpIDogLTEgPT09IHQzLmRhdGEuaW5kZXhPZihlMykgJiYgKHQzLmRhdGEgPSByMyA/IGUzICsgdDMuZGF0YSA6IHQzLmRhdGEgKyBlMyk7XG4gIH0pKGNbZF0sIHQyLCBpMiwgZiksIGQ7XG59O1xudmFyIHAgPSAoZTIsIHQyLCByMikgPT4gZTIucmVkdWNlKChlMywgbDIsIGEyKSA9PiB7XG4gIGxldCBuMiA9IHQyW2EyXTtcbiAgaWYgKG4yICYmIG4yLmNhbGwpIHtcbiAgICBsZXQgZTQgPSBuMihyMiksIHQzID0gZTQgJiYgZTQucHJvcHMgJiYgZTQucHJvcHMuY2xhc3NOYW1lIHx8IC9eZ28vLnRlc3QoZTQpICYmIGU0O1xuICAgIG4yID0gdDMgPyBcIi5cIiArIHQzIDogZTQgJiYgXCJvYmplY3RcIiA9PSB0eXBlb2YgZTQgPyBlNC5wcm9wcyA/IFwiXCIgOiBvKGU0LCBcIlwiKSA6IGZhbHNlID09PSBlNCA/IFwiXCIgOiBlNDtcbiAgfVxuICByZXR1cm4gZTMgKyBsMiArIChudWxsID09IG4yID8gXCJcIiA6IG4yKTtcbn0sIFwiXCIpO1xuZnVuY3Rpb24gdShlMikge1xuICBsZXQgcjIgPSB0aGlzIHx8IHt9LCBsMiA9IGUyLmNhbGwgPyBlMihyMi5wKSA6IGUyO1xuICByZXR1cm4gaShsMi51bnNoaWZ0ID8gbDIucmF3ID8gcChsMiwgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLCByMi5wKSA6IGwyLnJlZHVjZSgoZTMsIHQyKSA9PiBPYmplY3QuYXNzaWduKGUzLCB0MiAmJiB0Mi5jYWxsID8gdDIocjIucCkgOiB0MiksIHt9KSA6IGwyLCB0KHIyLnRhcmdldCksIHIyLmcsIHIyLm8sIHIyLmspO1xufVxudS5iaW5kKHsgZzogMSB9KTtcbnUuYmluZCh7IGs6IDEgfSk7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jbHN4QDIuMS4xL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tanNcbmZ1bmN0aW9uIHIoZTIpIHtcbiAgdmFyIHQyLCBmLCBuMiA9IFwiXCI7XG4gIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiBlMiB8fCBcIm51bWJlclwiID09IHR5cGVvZiBlMikgbjIgKz0gZTI7XG4gIGVsc2UgaWYgKFwib2JqZWN0XCIgPT0gdHlwZW9mIGUyKSBpZiAoQXJyYXkuaXNBcnJheShlMikpIHtcbiAgICB2YXIgbzIgPSBlMi5sZW5ndGg7XG4gICAgZm9yICh0MiA9IDA7IHQyIDwgbzI7IHQyKyspIGUyW3QyXSAmJiAoZiA9IHIoZTJbdDJdKSkgJiYgKG4yICYmIChuMiArPSBcIiBcIiksIG4yICs9IGYpO1xuICB9IGVsc2UgZm9yIChmIGluIGUyKSBlMltmXSAmJiAobjIgJiYgKG4yICs9IFwiIFwiKSwgbjIgKz0gZik7XG4gIHJldHVybiBuMjtcbn1cbmZ1bmN0aW9uIGNsc3goKSB7XG4gIGZvciAodmFyIGUyLCB0MiwgZiA9IDAsIG4yID0gXCJcIiwgbzIgPSBhcmd1bWVudHMubGVuZ3RoOyBmIDwgbzI7IGYrKykgKGUyID0gYXJndW1lbnRzW2ZdKSAmJiAodDIgPSByKGUyKSkgJiYgKG4yICYmIChuMiArPSBcIiBcIiksIG4yICs9IHQyKTtcbiAgcmV0dXJuIG4yO1xufVxuZnVuY3Rpb24gY3JlYXRlTGlzdFRyYW5zaXRpb24oc291cmNlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGluaXRTb3VyY2UgPSB1bnRyYWNrKHNvdXJjZSk7XG4gIGlmIChpc1NlcnZlcikge1xuICAgIGNvbnN0IGNvcHkgPSBpbml0U291cmNlLnNsaWNlKCk7XG4gICAgcmV0dXJuICgpID0+IGNvcHk7XG4gIH1cbiAgY29uc3QgeyBvbkNoYW5nZSB9ID0gb3B0aW9ucztcbiAgbGV0IHByZXZTZXQgPSBuZXcgU2V0KG9wdGlvbnMuYXBwZWFyID8gdm9pZCAwIDogaW5pdFNvdXJjZSk7XG4gIGNvbnN0IGV4aXRpbmcgPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtTZXQoKTtcbiAgY29uc3QgW3RvUmVtb3ZlLCBzZXRUb1JlbW92ZV0gPSBjcmVhdGVTaWduYWwoW10sIHsgZXF1YWxzOiBmYWxzZSB9KTtcbiAgY29uc3QgW2lzVHJhbnNpdGlvblBlbmRpbmddID0gdXNlVHJhbnNpdGlvbigpO1xuICBjb25zdCBmaW5pc2hSZW1vdmVkID0gKGVscykgPT4ge1xuICAgIHNldFRvUmVtb3ZlKChwMikgPT4gKHAyLnB1c2guYXBwbHkocDIsIGVscyksIHAyKSk7XG4gICAgZm9yIChjb25zdCBlbCBvZiBlbHMpXG4gICAgICBleGl0aW5nLmRlbGV0ZShlbCk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZVJlbW92ZWQgPSAoZWxzLCBlbCwgaTIpID0+IGVscy5zcGxpY2UoaTIsIDAsIGVsKSA7XG4gIHJldHVybiBjcmVhdGVNZW1vKFxuICAgIChwcmV2KSA9PiB7XG4gICAgICBjb25zdCBlbHNUb1JlbW92ZSA9IHRvUmVtb3ZlKCk7XG4gICAgICBjb25zdCBzb3VyY2VMaXN0ID0gc291cmNlKCk7XG4gICAgICBzb3VyY2VMaXN0WyRUUkFDS107XG4gICAgICBpZiAodW50cmFjayhpc1RyYW5zaXRpb25QZW5kaW5nKSkge1xuICAgICAgICBpc1RyYW5zaXRpb25QZW5kaW5nKCk7XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfVxuICAgICAgaWYgKGVsc1RvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0ID0gcHJldi5maWx0ZXIoKGUyKSA9PiAhZWxzVG9SZW1vdmUuaW5jbHVkZXMoZTIpKTtcbiAgICAgICAgZWxzVG9SZW1vdmUubGVuZ3RoID0gMDtcbiAgICAgICAgb25DaGFuZ2UoeyBsaXN0OiBuZXh0LCBhZGRlZDogW10sIHJlbW92ZWQ6IFtdLCB1bmNoYW5nZWQ6IG5leHQsIGZpbmlzaFJlbW92ZWQgfSk7XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVudHJhY2soKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0U2V0ID0gbmV3IFNldChzb3VyY2VMaXN0KTtcbiAgICAgICAgY29uc3QgbmV4dCA9IHNvdXJjZUxpc3Quc2xpY2UoKTtcbiAgICAgICAgY29uc3QgYWRkZWQgPSBbXTtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IFtdO1xuICAgICAgICBjb25zdCB1bmNoYW5nZWQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBlbCBvZiBzb3VyY2VMaXN0KSB7XG4gICAgICAgICAgKHByZXZTZXQuaGFzKGVsKSA/IHVuY2hhbmdlZCA6IGFkZGVkKS5wdXNoKGVsKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbm90aGluZ0NoYW5nZWQgPSAhYWRkZWQubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpMiA9IDA7IGkyIDwgcHJldi5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICBjb25zdCBlbCA9IHByZXZbaTJdO1xuICAgICAgICAgIGlmICghbmV4dFNldC5oYXMoZWwpKSB7XG4gICAgICAgICAgICBpZiAoIWV4aXRpbmcuaGFzKGVsKSkge1xuICAgICAgICAgICAgICByZW1vdmVkLnB1c2goZWwpO1xuICAgICAgICAgICAgICBleGl0aW5nLmFkZChlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYW5kbGVSZW1vdmVkKG5leHQsIGVsLCBpMik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChub3RoaW5nQ2hhbmdlZCAmJiBlbCAhPT0gbmV4dFtpMl0pXG4gICAgICAgICAgICBub3RoaW5nQ2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVtb3ZlZC5sZW5ndGggJiYgbm90aGluZ0NoYW5nZWQpXG4gICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgIG9uQ2hhbmdlKHsgbGlzdDogbmV4dCwgYWRkZWQsIHJlbW92ZWQsIHVuY2hhbmdlZCwgZmluaXNoUmVtb3ZlZCB9KTtcbiAgICAgICAgcHJldlNldCA9IG5leHRTZXQ7XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBvcHRpb25zLmFwcGVhciA/IFtdIDogaW5pdFNvdXJjZS5zbGljZSgpXG4gICk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac29saWQtcHJpbWl0aXZlcytyZWZzQDEuMC44X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Ac29saWQtcHJpbWl0aXZlcy9yZWZzL2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIG1lcmdlUmVmcyguLi5yZWZzKSB7XG4gIHJldHVybiBjaGFpbihyZWZzKTtcbn1cbnZhciBkZWZhdWx0RWxlbWVudFByZWRpY2F0ZSA9IGlzU2VydmVyID8gKGl0ZW0pID0+IGl0ZW0gIT0gbnVsbCAmJiB0eXBlb2YgaXRlbSA9PT0gXCJvYmplY3RcIiAmJiBcInRcIiBpbiBpdGVtIDogKGl0ZW0pID0+IGl0ZW0gaW5zdGFuY2VvZiBFbGVtZW50O1xuZnVuY3Rpb24gZ2V0UmVzb2x2ZWRFbGVtZW50cyh2YWx1ZSwgcHJlZGljYXRlKSB7XG4gIGlmIChwcmVkaWNhdGUodmFsdWUpKVxuICAgIHJldHVybiB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiICYmICF2YWx1ZS5sZW5ndGgpXG4gICAgcmV0dXJuIGdldFJlc29sdmVkRWxlbWVudHModmFsdWUoKSwgcHJlZGljYXRlKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVzb2x2ZWRFbGVtZW50cyhpdGVtLCBwcmVkaWNhdGUpO1xuICAgICAgaWYgKHJlc3VsdClcbiAgICAgICAgQXJyYXkuaXNBcnJheShyZXN1bHQpID8gcmVzdWx0cy5wdXNoLmFwcGx5KHJlc3VsdHMsIHJlc3VsdCkgOiByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHMubGVuZ3RoID8gcmVzdWx0cyA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiByZXNvbHZlRWxlbWVudHMoZm4sIHByZWRpY2F0ZSA9IGRlZmF1bHRFbGVtZW50UHJlZGljYXRlLCBzZXJ2ZXJQcmVkaWNhdGUgPSBkZWZhdWx0RWxlbWVudFByZWRpY2F0ZSkge1xuICBjb25zdCBjaGlsZHJlbjIgPSBjcmVhdGVNZW1vKGZuKTtcbiAgY29uc3QgbWVtbyA9IGNyZWF0ZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVzb2x2ZWRFbGVtZW50cyhjaGlsZHJlbjIoKSwgaXNTZXJ2ZXIgPyBzZXJ2ZXJQcmVkaWNhdGUgOiBwcmVkaWNhdGUpXG4gICk7XG4gIG1lbW8udG9BcnJheSA9ICgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IG1lbW8oKTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gW3ZhbHVlXSA6IFtdO1xuICB9O1xuICByZXR1cm4gbWVtbztcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3NvbGlkLXRyYW5zaXRpb24tZ3JvdXBAMC4yLjNfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL3NvbGlkLXRyYW5zaXRpb24tZ3JvdXAvZGlzdC9pbmRleC5qc1xuZnVuY3Rpb24gY3JlYXRlQ2xhc3NuYW1lcyhwcm9wcykge1xuICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHByb3BzLm5hbWUgfHwgXCJzXCI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGVyQWN0aXZlOiAocHJvcHMuZW50ZXJBY3RpdmVDbGFzcyB8fCBuYW1lICsgXCItZW50ZXItYWN0aXZlXCIpLnNwbGl0KFwiIFwiKSxcbiAgICAgIGVudGVyOiAocHJvcHMuZW50ZXJDbGFzcyB8fCBuYW1lICsgXCItZW50ZXJcIikuc3BsaXQoXCIgXCIpLFxuICAgICAgZW50ZXJUbzogKHByb3BzLmVudGVyVG9DbGFzcyB8fCBuYW1lICsgXCItZW50ZXItdG9cIikuc3BsaXQoXCIgXCIpLFxuICAgICAgZXhpdEFjdGl2ZTogKHByb3BzLmV4aXRBY3RpdmVDbGFzcyB8fCBuYW1lICsgXCItZXhpdC1hY3RpdmVcIikuc3BsaXQoXCIgXCIpLFxuICAgICAgZXhpdDogKHByb3BzLmV4aXRDbGFzcyB8fCBuYW1lICsgXCItZXhpdFwiKS5zcGxpdChcIiBcIiksXG4gICAgICBleGl0VG86IChwcm9wcy5leGl0VG9DbGFzcyB8fCBuYW1lICsgXCItZXhpdC10b1wiKS5zcGxpdChcIiBcIiksXG4gICAgICBtb3ZlOiAocHJvcHMubW92ZUNsYXNzIHx8IG5hbWUgKyBcIi1tb3ZlXCIpLnNwbGl0KFwiIFwiKVxuICAgIH07XG4gIH0pO1xufVxuZnVuY3Rpb24gbmV4dEZyYW1lKGZuKSB7XG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pKTtcbn1cbmZ1bmN0aW9uIGVudGVyVHJhbnNpdGlvbihjbGFzc2VzLCBldmVudHMsIGVsLCBkb25lKSB7XG4gIGNvbnN0IHsgb25CZWZvcmVFbnRlciwgb25FbnRlciwgb25BZnRlckVudGVyIH0gPSBldmVudHM7XG4gIG9uQmVmb3JlRW50ZXI/LihlbCk7XG4gIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5lbnRlcik7XG4gIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5lbnRlckFjdGl2ZSk7XG4gIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICBpZiAoIWVsLnBhcmVudE5vZGUpXG4gICAgICByZXR1cm4gZG9uZT8uKCk7XG4gICAgb25FbnRlcj8uKGVsLCAoKSA9PiBlbmRUcmFuc2l0aW9uKCkpO1xuICB9KTtcbiAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXMuZW50ZXIpO1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5lbnRlclRvKTtcbiAgICBpZiAoIW9uRW50ZXIgfHwgb25FbnRlci5sZW5ndGggPCAyKSB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uKTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIiwgZW5kVHJhbnNpdGlvbik7XG4gICAgfVxuICB9KTtcbiAgZnVuY3Rpb24gZW5kVHJhbnNpdGlvbihlMikge1xuICAgIGlmICghZTIgfHwgZTIudGFyZ2V0ID09PSBlbCkge1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgZW5kVHJhbnNpdGlvbik7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYW5pbWF0aW9uZW5kXCIsIGVuZFRyYW5zaXRpb24pO1xuICAgICAgZWwuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzLmVudGVyQWN0aXZlKTtcbiAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcy5lbnRlclRvKTtcbiAgICAgIG9uQWZ0ZXJFbnRlcj8uKGVsKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGV4aXRUcmFuc2l0aW9uKGNsYXNzZXMsIGV2ZW50cywgZWwsIGRvbmUpIHtcbiAgY29uc3QgeyBvbkJlZm9yZUV4aXQsIG9uRXhpdCwgb25BZnRlckV4aXQgfSA9IGV2ZW50cztcbiAgaWYgKCFlbC5wYXJlbnROb2RlKVxuICAgIHJldHVybiBkb25lPy4oKTtcbiAgb25CZWZvcmVFeGl0Py4oZWwpO1xuICBlbC5jbGFzc0xpc3QuYWRkKC4uLmNsYXNzZXMuZXhpdCk7XG4gIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5leGl0QWN0aXZlKTtcbiAgb25FeGl0Py4oZWwsICgpID0+IGVuZFRyYW5zaXRpb24oKSk7XG4gIG5leHRGcmFtZSgoKSA9PiB7XG4gICAgZWwuY2xhc3NMaXN0LnJlbW92ZSguLi5jbGFzc2VzLmV4aXQpO1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5leGl0VG8pO1xuICAgIGlmICghb25FeGl0IHx8IG9uRXhpdC5sZW5ndGggPCAyKSB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uKTtcbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIiwgZW5kVHJhbnNpdGlvbik7XG4gICAgfVxuICB9KTtcbiAgZnVuY3Rpb24gZW5kVHJhbnNpdGlvbihlMikge1xuICAgIGlmICghZTIgfHwgZTIudGFyZ2V0ID09PSBlbCkge1xuICAgICAgZG9uZT8uKCk7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uKTtcbiAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25lbmRcIiwgZW5kVHJhbnNpdGlvbik7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXMuZXhpdEFjdGl2ZSk7XG4gICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKC4uLmNsYXNzZXMuZXhpdFRvKTtcbiAgICAgIG9uQWZ0ZXJFeGl0Py4oZWwpO1xuICAgIH1cbiAgfVxufVxudmFyIFRyYW5zaXRpb25Hcm91cCA9IChwcm9wcykgPT4ge1xuICBjb25zdCBjbGFzc25hbWVzID0gY3JlYXRlQ2xhc3NuYW1lcyhwcm9wcyk7XG4gIHJldHVybiBjcmVhdGVMaXN0VHJhbnNpdGlvbihyZXNvbHZlRWxlbWVudHMoKCkgPT4gcHJvcHMuY2hpbGRyZW4pLnRvQXJyYXksIHtcbiAgICBhcHBlYXI6IHByb3BzLmFwcGVhcixcbiAgICBvbkNoYW5nZSh7IGFkZGVkLCByZW1vdmVkLCBmaW5pc2hSZW1vdmVkLCBsaXN0IH0pIHtcbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKCk7XG4gICAgICBmb3IgKGNvbnN0IGVsIG9mIGFkZGVkKSB7XG4gICAgICAgIGVudGVyVHJhbnNpdGlvbihjbGFzc2VzLCBwcm9wcywgZWwpO1xuICAgICAgfVxuICAgICAgY29uc3QgdG9Nb3ZlID0gW107XG4gICAgICBmb3IgKGNvbnN0IGVsIG9mIGxpc3QpIHtcbiAgICAgICAgaWYgKGVsLmlzQ29ubmVjdGVkICYmIChlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IGVsIGluc3RhbmNlb2YgU1ZHRWxlbWVudCkpIHtcbiAgICAgICAgICB0b01vdmUucHVzaCh7IGVsLCByZWN0OiBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICBjb25zdCBtb3ZlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHsgZWwsIHJlY3QgfSBvZiB0b01vdmUpIHtcbiAgICAgICAgICBpZiAoZWwuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1JlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgZFggPSByZWN0LmxlZnQgLSBuZXdSZWN0LmxlZnQsIGRZID0gcmVjdC50b3AgLSBuZXdSZWN0LnRvcDtcbiAgICAgICAgICAgIGlmIChkWCB8fCBkWSkge1xuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7ZFh9cHgsICR7ZFl9cHgpYDtcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gXCIwc1wiO1xuICAgICAgICAgICAgICBtb3ZlZC5wdXNoKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGZvciAoY29uc3QgZWwgb2YgbW92ZWQpIHtcbiAgICAgICAgICBsZXQgZW5kVHJhbnNpdGlvbjIgPSBmdW5jdGlvbihlMikge1xuICAgICAgICAgICAgaWYgKGUyLnRhcmdldCA9PT0gZWwgfHwgL3RyYW5zZm9ybSQvLnRlc3QoZTIucHJvcGVydHlOYW1lKSkge1xuICAgICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLCBlbmRUcmFuc2l0aW9uMik7XG4gICAgICAgICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcy5tb3ZlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoLi4uY2xhc3Nlcy5tb3ZlKTtcbiAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBlbC5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBcIlwiO1xuICAgICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsIGVuZFRyYW5zaXRpb24yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGVsIG9mIHJlbW92ZWQpIHtcbiAgICAgICAgZXhpdFRyYW5zaXRpb24oY2xhc3NlcywgcHJvcHMsIGVsLCAoKSA9PiBmaW5pc2hSZW1vdmVkKFtlbF0pKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzb2xpZC1wcmltaXRpdmVzK2tleWVkQDEuMi4yX3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Ac29saWQtcHJpbWl0aXZlcy9rZXllZC9kaXN0L2luZGV4LmpzXG52YXIgRkFMTEJBQ0sgPSBTeW1ib2woXCJmYWxsYmFja1wiKTtcbmZ1bmN0aW9uIGRpc3Bvc2UobGlzdCkge1xuICBmb3IgKGNvbnN0IG8yIG9mIGxpc3QpXG4gICAgbzIuZGlzcG9zZSgpO1xufVxuZnVuY3Rpb24ga2V5QXJyYXkoaXRlbXMsIGtleUZuLCBtYXBGbiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmIChpc1NlcnZlcikge1xuICAgIGNvbnN0IGl0ZW1zUmVmID0gaXRlbXMoKTtcbiAgICBsZXQgczIgPSBbXTtcbiAgICBpZiAoaXRlbXNSZWYgJiYgaXRlbXNSZWYubGVuZ3RoKSB7XG4gICAgICBmb3IgKGxldCBpMiA9IDAsIGxlbiA9IGl0ZW1zUmVmLmxlbmd0aDsgaTIgPCBsZW47IGkyKyspXG4gICAgICAgIHMyLnB1c2goXG4gICAgICAgICAgbWFwRm4oXG4gICAgICAgICAgICAoKSA9PiBpdGVtc1JlZltpMl0sXG4gICAgICAgICAgICAoKSA9PiBpMlxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZmFsbGJhY2spXG4gICAgICBzMiA9IFtvcHRpb25zLmZhbGxiYWNrKCldO1xuICAgIHJldHVybiAoKSA9PiBzMjtcbiAgfVxuICBjb25zdCBwcmV2ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgb25DbGVhbnVwKCgpID0+IGRpc3Bvc2UocHJldi52YWx1ZXMoKSkpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSBpdGVtcygpIHx8IFtdO1xuICAgIGxpc3RbJFRSQUNLXTtcbiAgICByZXR1cm4gdW50cmFjaygoKSA9PiB7XG4gICAgICBpZiAoIWxpc3QubGVuZ3RoKSB7XG4gICAgICAgIGRpc3Bvc2UocHJldi52YWx1ZXMoKSk7XG4gICAgICAgIHByZXYuY2xlYXIoKTtcbiAgICAgICAgaWYgKCFvcHRpb25zLmZhbGxiYWNrKVxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgZmIyID0gY3JlYXRlUm9vdCgoZGlzcG9zZTIpID0+IHtcbiAgICAgICAgICBwcmV2LnNldChGQUxMQkFDSywgeyBkaXNwb3NlOiBkaXNwb3NlMiB9KTtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFtmYjJdO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5KGxpc3QubGVuZ3RoKTtcbiAgICAgIGNvbnN0IGZiID0gcHJldi5nZXQoRkFMTEJBQ0spO1xuICAgICAgaWYgKCFwcmV2LnNpemUgfHwgZmIpIHtcbiAgICAgICAgZmI/LmRpc3Bvc2UoKTtcbiAgICAgICAgcHJldi5kZWxldGUoRkFMTEJBQ0spO1xuICAgICAgICBmb3IgKGxldCBpMiA9IDA7IGkyIDwgbGlzdC5sZW5ndGg7IGkyKyspIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gbGlzdFtpMl07XG4gICAgICAgICAgY29uc3Qga2V5ID0ga2V5Rm4oaXRlbSwgaTIpO1xuICAgICAgICAgIGFkZE5ld0l0ZW0ocmVzdWx0LCBpdGVtLCBpMiwga2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgY29uc3QgcHJldktleXMgPSBuZXcgU2V0KHByZXYua2V5cygpKTtcbiAgICAgIGZvciAobGV0IGkyID0gMDsgaTIgPCBsaXN0Lmxlbmd0aDsgaTIrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gbGlzdFtpMl07XG4gICAgICAgIGNvbnN0IGtleSA9IGtleUZuKGl0ZW0sIGkyKTtcbiAgICAgICAgcHJldktleXMuZGVsZXRlKGtleSk7XG4gICAgICAgIGNvbnN0IGxvb2t1cCA9IHByZXYuZ2V0KGtleSk7XG4gICAgICAgIGlmIChsb29rdXApIHtcbiAgICAgICAgICByZXN1bHRbaTJdID0gbG9va3VwLm1hcHBlZDtcbiAgICAgICAgICBsb29rdXAuc2V0SW5kZXg/LihpMik7XG4gICAgICAgICAgbG9va3VwLnNldEl0ZW0oKCkgPT4gaXRlbSk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIGFkZE5ld0l0ZW0ocmVzdWx0LCBpdGVtLCBpMiwga2V5KTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIHByZXZLZXlzKSB7XG4gICAgICAgIHByZXYuZ2V0KGtleSk/LmRpc3Bvc2UoKTtcbiAgICAgICAgcHJldi5kZWxldGUoa2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gIH07XG4gIGZ1bmN0aW9uIGFkZE5ld0l0ZW0obGlzdCwgaXRlbSwgaTIsIGtleSkge1xuICAgIGNyZWF0ZVJvb3QoKGRpc3Bvc2UyKSA9PiB7XG4gICAgICBjb25zdCBbZ2V0SXRlbSwgc2V0SXRlbV0gPSBjcmVhdGVTaWduYWwoaXRlbSk7XG4gICAgICBjb25zdCBzYXZlID0geyBzZXRJdGVtLCBkaXNwb3NlOiBkaXNwb3NlMiB9O1xuICAgICAgaWYgKG1hcEZuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoaTIpO1xuICAgICAgICBzYXZlLnNldEluZGV4ID0gc2V0SW5kZXg7XG4gICAgICAgIHNhdmUubWFwcGVkID0gbWFwRm4oZ2V0SXRlbSwgaW5kZXgpO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHNhdmUubWFwcGVkID0gbWFwRm4oZ2V0SXRlbSk7XG4gICAgICBwcmV2LnNldChrZXksIHNhdmUpO1xuICAgICAgbGlzdFtpMl0gPSBzYXZlLm1hcHBlZDtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gS2V5KHByb3BzKSB7XG4gIGNvbnN0IHsgYnkgfSA9IHByb3BzO1xuICByZXR1cm4gY3JlYXRlTWVtbyhcbiAgICBrZXlBcnJheShcbiAgICAgICgpID0+IHByb3BzLmVhY2gsXG4gICAgICB0eXBlb2YgYnkgPT09IFwiZnVuY3Rpb25cIiA/IGJ5IDogKHYpID0+IHZbYnldLFxuICAgICAgcHJvcHMuY2hpbGRyZW4sXG4gICAgICBcImZhbGxiYWNrXCIgaW4gcHJvcHMgPyB7IGZhbGxiYWNrOiAoKSA9PiBwcm9wcy5mYWxsYmFjayB9IDogdm9pZCAwXG4gICAgKVxuICApO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHNvbGlkLXByaW1pdGl2ZXMrZXZlbnQtbGlzdGVuZXJAMi4zLjNfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bzb2xpZC1wcmltaXRpdmVzL2V2ZW50LWxpc3RlbmVyL2Rpc3QvaW5kZXguanNcbmZ1bmN0aW9uIG1ha2VFdmVudExpc3RlbmVyKHRhcmdldCwgdHlwZSwgaGFuZGxlciwgb3B0aW9ucykge1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBoYW5kbGVyLCBvcHRpb25zKTtcbiAgcmV0dXJuIHRyeU9uQ2xlYW51cCh0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRhcmdldCwgdHlwZSwgaGFuZGxlciwgb3B0aW9ucykpO1xufVxuZnVuY3Rpb24gY3JlYXRlRXZlbnRMaXN0ZW5lcih0YXJnZXRzLCB0eXBlLCBoYW5kbGVyLCBvcHRpb25zKSB7XG4gIGlmIChpc1NlcnZlcilcbiAgICByZXR1cm47XG4gIGNvbnN0IGF0dGFjaExpc3RlbmVycyA9ICgpID0+IHtcbiAgICBhc0FycmF5KGFjY2Vzcyh0YXJnZXRzKSkuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIGlmIChlbClcbiAgICAgICAgYXNBcnJheShhY2Nlc3ModHlwZSkpLmZvckVhY2goKHR5cGUyKSA9PiBtYWtlRXZlbnRMaXN0ZW5lcihlbCwgdHlwZTIsIGhhbmRsZXIsIG9wdGlvbnMpKTtcbiAgICB9KTtcbiAgfTtcbiAgaWYgKHR5cGVvZiB0YXJnZXRzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgY3JlYXRlRWZmZWN0KGF0dGFjaExpc3RlbmVycyk7XG4gIGVsc2VcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoYXR0YWNoTGlzdGVuZXJzKTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzb2xpZC1wcmltaXRpdmVzK3Jlc2l6ZS1vYnNlcnZlckAyLjAuMjZfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bzb2xpZC1wcmltaXRpdmVzL3Jlc2l6ZS1vYnNlcnZlci9kaXN0L2luZGV4LmpzXG5mdW5jdGlvbiBtYWtlUmVzaXplT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpIHtcbiAgaWYgKGlzU2VydmVyKSB7XG4gICAgcmV0dXJuIHsgb2JzZXJ2ZTogbm9vcCwgdW5vYnNlcnZlOiBub29wIH07XG4gIH1cbiAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICBvbkNsZWFudXAob2JzZXJ2ZXIuZGlzY29ubmVjdC5iaW5kKG9ic2VydmVyKSk7XG4gIHJldHVybiB7XG4gICAgb2JzZXJ2ZTogKHJlZikgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShyZWYsIG9wdGlvbnMpLFxuICAgIHVub2JzZXJ2ZTogb2JzZXJ2ZXIudW5vYnNlcnZlLmJpbmQob2JzZXJ2ZXIpXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVSZXNpemVPYnNlcnZlcih0YXJnZXRzLCBvblJlc2l6ZSwgb3B0aW9ucykge1xuICBpZiAoaXNTZXJ2ZXIpXG4gICAgcmV0dXJuO1xuICBjb25zdCBwcmV2aW91c01hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpLCB7IG9ic2VydmUsIHVub2JzZXJ2ZSB9ID0gbWFrZVJlc2l6ZU9ic2VydmVyKChlbnRyaWVzMikgPT4ge1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllczIpIHtcbiAgICAgIGNvbnN0IHsgY29udGVudFJlY3QsIHRhcmdldCB9ID0gZW50cnksIHdpZHRoID0gTWF0aC5yb3VuZChjb250ZW50UmVjdC53aWR0aCksIGhlaWdodCA9IE1hdGgucm91bmQoY29udGVudFJlY3QuaGVpZ2h0KSwgcHJldmlvdXMgPSBwcmV2aW91c01hcC5nZXQodGFyZ2V0KTtcbiAgICAgIGlmICghcHJldmlvdXMgfHwgcHJldmlvdXMud2lkdGggIT09IHdpZHRoIHx8IHByZXZpb3VzLmhlaWdodCAhPT0gaGVpZ2h0KSB7XG4gICAgICAgIG9uUmVzaXplKGNvbnRlbnRSZWN0LCB0YXJnZXQsIGVudHJ5KTtcbiAgICAgICAgcHJldmlvdXNNYXAuc2V0KHRhcmdldCwgeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwgb3B0aW9ucyk7XG4gIGNyZWF0ZUVmZmVjdCgocHJldikgPT4ge1xuICAgIGNvbnN0IHJlZnMgPSBmaWx0ZXJOb25OdWxsYWJsZShhc0FycmF5KGFjY2Vzcyh0YXJnZXRzKSkpO1xuICAgIGhhbmRsZURpZmZBcnJheShyZWZzLCBwcmV2LCBvYnNlcnZlLCB1bm9ic2VydmUpO1xuICAgIHJldHVybiByZWZzO1xuICB9LCBbXSk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac29saWQtcHJpbWl0aXZlcytwcm9wc0AzLjEuMTFfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bzb2xpZC1wcmltaXRpdmVzL3Byb3BzL2Rpc3QvaW5kZXguanNcbnZhciBleHRyYWN0Q1NTcmVnZXggPSAvKCg/Oi0tKT8oPzpcXHcrLT8pKylcXHMqOlxccyooW147XSopL2c7XG5mdW5jdGlvbiBzdHJpbmdTdHlsZVRvT2JqZWN0KHN0eWxlKSB7XG4gIGNvbnN0IG9iamVjdCA9IHt9O1xuICBsZXQgbWF0Y2g7XG4gIHdoaWxlIChtYXRjaCA9IGV4dHJhY3RDU1NyZWdleC5leGVjKHN0eWxlKSkge1xuICAgIG9iamVjdFttYXRjaFsxXV0gPSBtYXRjaFsyXTtcbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuZnVuY3Rpb24gY29tYmluZVN0eWxlKGEyLCBiMikge1xuICBpZiAodHlwZW9mIGEyID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKHR5cGVvZiBiMiA9PT0gXCJzdHJpbmdcIilcbiAgICAgIHJldHVybiBgJHthMn07JHtiMn1gO1xuICAgIGEyID0gc3RyaW5nU3R5bGVUb09iamVjdChhMik7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGIyID09PSBcInN0cmluZ1wiKSB7XG4gICAgYjIgPSBzdHJpbmdTdHlsZVRvT2JqZWN0KGIyKTtcbiAgfVxuICByZXR1cm4geyAuLi5hMiwgLi4uYjIgfTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK3V0aWxzQDAuOS4wX3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS91dGlscy9kaXN0L2luZGV4LmpzXG5mdW5jdGlvbiBhZGRJdGVtVG9BcnJheShhcnJheSwgaXRlbSwgaW5kZXggPSAtMSkge1xuICBpZiAoIShpbmRleCBpbiBhcnJheSkpIHtcbiAgICByZXR1cm4gWy4uLmFycmF5LCBpdGVtXTtcbiAgfVxuICByZXR1cm4gWy4uLmFycmF5LnNsaWNlKDAsIGluZGV4KSwgaXRlbSwgLi4uYXJyYXkuc2xpY2UoaW5kZXgpXTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUl0ZW1Gcm9tQXJyYXkoYXJyYXksIGl0ZW0pIHtcbiAgY29uc3QgdXBkYXRlZEFycmF5ID0gWy4uLmFycmF5XTtcbiAgY29uc3QgaW5kZXggPSB1cGRhdGVkQXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIHVwZGF0ZWRBcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG4gIHJldHVybiB1cGRhdGVkQXJyYXk7XG59XG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiO1xufVxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBTdHJpbmddXCI7XG59XG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUdlbmVyYXRlSWQoYmFzZUlkKSB7XG4gIHJldHVybiAoc3VmZml4KSA9PiBgJHtiYXNlSWQoKX0tJHtzdWZmaXh9YDtcbn1cbmZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgaWYgKCFwYXJlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcmVudCA9PT0gY2hpbGQgfHwgcGFyZW50LmNvbnRhaW5zKGNoaWxkKTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZUVsZW1lbnQobm9kZSwgYWN0aXZlRGVzY2VuZGFudCA9IGZhbHNlKSB7XG4gIGNvbnN0IHsgYWN0aXZlRWxlbWVudCB9ID0gZ2V0RG9jdW1lbnQobm9kZSk7XG4gIGlmICghYWN0aXZlRWxlbWVudD8ubm9kZU5hbWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoaXNGcmFtZShhY3RpdmVFbGVtZW50KSAmJiBhY3RpdmVFbGVtZW50LmNvbnRlbnREb2N1bWVudCkge1xuICAgIHJldHVybiBnZXRBY3RpdmVFbGVtZW50KGFjdGl2ZUVsZW1lbnQuY29udGVudERvY3VtZW50LmJvZHksIGFjdGl2ZURlc2NlbmRhbnQpO1xuICB9XG4gIGlmIChhY3RpdmVEZXNjZW5kYW50KSB7XG4gICAgY29uc3QgaWQgPSBhY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZShcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKTtcbiAgICBpZiAoaWQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBnZXREb2N1bWVudChhY3RpdmVFbGVtZW50KS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQ7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICByZXR1cm4gZ2V0RG9jdW1lbnQobm9kZSkuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSA/IG5vZGUub3duZXJEb2N1bWVudCB8fCBub2RlIDogZG9jdW1lbnQ7XG59XG5mdW5jdGlvbiBpc0ZyYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQudGFnTmFtZSA9PT0gXCJJRlJBTUVcIjtcbn1cbnZhciBFdmVudEtleSA9IC8qIEBfX1BVUkVfXyAqLyAoKEV2ZW50S2V5MikgPT4ge1xuICBFdmVudEtleTJbXCJFc2NhcGVcIl0gPSBcIkVzY2FwZVwiO1xuICBFdmVudEtleTJbXCJFbnRlclwiXSA9IFwiRW50ZXJcIjtcbiAgRXZlbnRLZXkyW1wiVGFiXCJdID0gXCJUYWJcIjtcbiAgRXZlbnRLZXkyW1wiU3BhY2VcIl0gPSBcIiBcIjtcbiAgRXZlbnRLZXkyW1wiQXJyb3dEb3duXCJdID0gXCJBcnJvd0Rvd25cIjtcbiAgRXZlbnRLZXkyW1wiQXJyb3dMZWZ0XCJdID0gXCJBcnJvd0xlZnRcIjtcbiAgRXZlbnRLZXkyW1wiQXJyb3dSaWdodFwiXSA9IFwiQXJyb3dSaWdodFwiO1xuICBFdmVudEtleTJbXCJBcnJvd1VwXCJdID0gXCJBcnJvd1VwXCI7XG4gIEV2ZW50S2V5MltcIkVuZFwiXSA9IFwiRW5kXCI7XG4gIEV2ZW50S2V5MltcIkhvbWVcIl0gPSBcIkhvbWVcIjtcbiAgRXZlbnRLZXkyW1wiUGFnZURvd25cIl0gPSBcIlBhZ2VEb3duXCI7XG4gIEV2ZW50S2V5MltcIlBhZ2VVcFwiXSA9IFwiUGFnZVVwXCI7XG4gIHJldHVybiBFdmVudEtleTI7XG59KShFdmVudEtleSB8fCB7fSk7XG5mdW5jdGlvbiB0ZXN0UGxhdGZvcm0ocmUpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgJiYgd2luZG93Lm5hdmlnYXRvciAhPSBudWxsID8gKFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3JbXCJ1c2VyQWdlbnREYXRhXCJdPy5wbGF0Zm9ybSB8fCB3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKVxuICApIDogZmFsc2U7XG59XG5mdW5jdGlvbiBpc01hYygpIHtcbiAgcmV0dXJuIHRlc3RQbGF0Zm9ybSgvXk1hYy9pKTtcbn1cbmZ1bmN0aW9uIGlzSVBob25lKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBob25lL2kpO1xufVxuZnVuY3Rpb24gaXNJUGFkKCkge1xuICByZXR1cm4gdGVzdFBsYXRmb3JtKC9eaVBhZC9pKSB8fCAvLyBpUGFkT1MgMTMgbGllcyBhbmQgc2F5cyBpdCdzIGEgTWFjLCBidXQgd2UgY2FuIGRpc3Rpbmd1aXNoIGJ5IGRldGVjdGluZyB0b3VjaCBzdXBwb3J0LlxuICBpc01hYygpICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDE7XG59XG5mdW5jdGlvbiBpc0lPUygpIHtcbiAgcmV0dXJuIGlzSVBob25lKCkgfHwgaXNJUGFkKCk7XG59XG5mdW5jdGlvbiBpc0FwcGxlRGV2aWNlKCkge1xuICByZXR1cm4gaXNNYWMoKSB8fCBpc0lPUygpO1xufVxuZnVuY3Rpb24gY2FsbEhhbmRsZXIoZXZlbnQsIGhhbmRsZXIpIHtcbiAgaWYgKGhhbmRsZXIpIHtcbiAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgICAgaGFuZGxlcihldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJbMF0oaGFuZGxlclsxXSwgZXZlbnQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZXZlbnQ/LmRlZmF1bHRQcmV2ZW50ZWQ7XG59XG5mdW5jdGlvbiBjb21wb3NlRXZlbnRIYW5kbGVycyhoYW5kbGVycykge1xuICByZXR1cm4gKGV2ZW50KSA9PiB7XG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIGhhbmRsZXJzKSB7XG4gICAgICBjYWxsSGFuZGxlcihldmVudCwgaGFuZGxlcik7XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gaXNDdHJsS2V5KGUyKSB7XG4gIGlmIChpc01hYygpKSB7XG4gICAgcmV0dXJuIGUyLm1ldGFLZXkgJiYgIWUyLmN0cmxLZXk7XG4gIH1cbiAgcmV0dXJuIGUyLmN0cmxLZXkgJiYgIWUyLm1ldGFLZXk7XG59XG5mdW5jdGlvbiBmb2N1c1dpdGhvdXRTY3JvbGxpbmcoZWxlbWVudCkge1xuICBpZiAoIWVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN1cHBvcnRzUHJldmVudFNjcm9sbCgpKSB7XG4gICAgZWxlbWVudC5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnRzID0gZ2V0U2Nyb2xsYWJsZUVsZW1lbnRzKGVsZW1lbnQpO1xuICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZUVsZW1lbnRzKTtcbiAgfVxufVxudmFyIHN1cHBvcnRzUHJldmVudFNjcm9sbENhY2hlZCA9IG51bGw7XG5mdW5jdGlvbiBzdXBwb3J0c1ByZXZlbnRTY3JvbGwoKSB7XG4gIGlmIChzdXBwb3J0c1ByZXZlbnRTY3JvbGxDYWNoZWQgPT0gbnVsbCkge1xuICAgIHN1cHBvcnRzUHJldmVudFNjcm9sbENhY2hlZCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmb2N1c0VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgZm9jdXNFbGVtLmZvY3VzKHtcbiAgICAgICAgZ2V0IHByZXZlbnRTY3JvbGwoKSB7XG4gICAgICAgICAgc3VwcG9ydHNQcmV2ZW50U2Nyb2xsQ2FjaGVkID0gdHJ1ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZTIpIHtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1cHBvcnRzUHJldmVudFNjcm9sbENhY2hlZDtcbn1cbmZ1bmN0aW9uIGdldFNjcm9sbGFibGVFbGVtZW50cyhlbGVtZW50KSB7XG4gIGxldCBwYXJlbnQgPSBlbGVtZW50LnBhcmVudE5vZGU7XG4gIGNvbnN0IHNjcm9sbGFibGVFbGVtZW50cyA9IFtdO1xuICBjb25zdCByb290U2Nyb2xsaW5nRWxlbWVudCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgcGFyZW50ICE9PSByb290U2Nyb2xsaW5nRWxlbWVudCkge1xuICAgIGlmIChwYXJlbnQub2Zmc2V0SGVpZ2h0IDwgcGFyZW50LnNjcm9sbEhlaWdodCB8fCBwYXJlbnQub2Zmc2V0V2lkdGggPCBwYXJlbnQuc2Nyb2xsV2lkdGgpIHtcbiAgICAgIHNjcm9sbGFibGVFbGVtZW50cy5wdXNoKHtcbiAgICAgICAgZWxlbWVudDogcGFyZW50LFxuICAgICAgICBzY3JvbGxUb3A6IHBhcmVudC5zY3JvbGxUb3AsXG4gICAgICAgIHNjcm9sbExlZnQ6IHBhcmVudC5zY3JvbGxMZWZ0XG4gICAgICB9KTtcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XG4gIH1cbiAgaWYgKHJvb3RTY3JvbGxpbmdFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICBzY3JvbGxhYmxlRWxlbWVudHMucHVzaCh7XG4gICAgICBlbGVtZW50OiByb290U2Nyb2xsaW5nRWxlbWVudCxcbiAgICAgIHNjcm9sbFRvcDogcm9vdFNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wLFxuICAgICAgc2Nyb2xsTGVmdDogcm9vdFNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsTGVmdFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBzY3JvbGxhYmxlRWxlbWVudHM7XG59XG5mdW5jdGlvbiByZXN0b3JlU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZUVsZW1lbnRzKSB7XG4gIGZvciAoY29uc3QgeyBlbGVtZW50LCBzY3JvbGxUb3AsIHNjcm9sbExlZnQgfSBvZiBzY3JvbGxhYmxlRWxlbWVudHMpIHtcbiAgICBlbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICBlbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xuICB9XG59XG52YXIgZm9jdXNhYmxlRWxlbWVudHMgPSBbXG4gIFwiaW5wdXQ6bm90KFt0eXBlPSdoaWRkZW4nXSk6bm90KFtkaXNhYmxlZF0pXCIsXG4gIFwic2VsZWN0Om5vdChbZGlzYWJsZWRdKVwiLFxuICBcInRleHRhcmVhOm5vdChbZGlzYWJsZWRdKVwiLFxuICBcImJ1dHRvbjpub3QoW2Rpc2FibGVkXSlcIixcbiAgXCJhW2hyZWZdXCIsXG4gIFwiYXJlYVtocmVmXVwiLFxuICBcIlt0YWJpbmRleF1cIixcbiAgXCJpZnJhbWVcIixcbiAgXCJvYmplY3RcIixcbiAgXCJlbWJlZFwiLFxuICBcImF1ZGlvW2NvbnRyb2xzXVwiLFxuICBcInZpZGVvW2NvbnRyb2xzXVwiLFxuICBcIltjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPSdmYWxzZSddKVwiXG5dO1xudmFyIHRhYmJhYmxlRWxlbWVudHMgPSBbLi4uZm9jdXNhYmxlRWxlbWVudHMsICdbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSk6bm90KFtkaXNhYmxlZF0pJ107XG52YXIgRk9DVVNBQkxFX0VMRU1FTlRfU0VMRUNUT1IgPSBmb2N1c2FibGVFbGVtZW50cy5qb2luKFwiOm5vdChbaGlkZGVuXSksXCIpICsgXCIsW3RhYmluZGV4XTpub3QoW2Rpc2FibGVkXSk6bm90KFtoaWRkZW5dKVwiO1xudmFyIFRBQkJBQkxFX0VMRU1FTlRfU0VMRUNUT1IgPSB0YWJiYWJsZUVsZW1lbnRzLmpvaW4oXG4gICc6bm90KFtoaWRkZW5dKTpub3QoW3RhYmluZGV4PVwiLTFcIl0pLCdcbik7XG5mdW5jdGlvbiBnZXRBbGxUYWJiYWJsZUluKGNvbnRhaW5lciwgaW5jbHVkZUNvbnRhaW5lcikge1xuICBjb25zdCBlbGVtZW50cyA9IEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoRk9DVVNBQkxFX0VMRU1FTlRfU0VMRUNUT1IpKTtcbiAgY29uc3QgdGFiYmFibGVFbGVtZW50czIgPSBlbGVtZW50cy5maWx0ZXIoaXNUYWJiYWJsZSk7XG4gIGlmIChpbmNsdWRlQ29udGFpbmVyICYmIGlzVGFiYmFibGUoY29udGFpbmVyKSkge1xuICAgIHRhYmJhYmxlRWxlbWVudHMyLnVuc2hpZnQoY29udGFpbmVyKTtcbiAgfVxuICB0YWJiYWJsZUVsZW1lbnRzMi5mb3JFYWNoKChlbGVtZW50LCBpMikgPT4ge1xuICAgIGlmIChpc0ZyYW1lKGVsZW1lbnQpICYmIGVsZW1lbnQuY29udGVudERvY3VtZW50KSB7XG4gICAgICBjb25zdCBmcmFtZUJvZHkgPSBlbGVtZW50LmNvbnRlbnREb2N1bWVudC5ib2R5O1xuICAgICAgY29uc3QgYWxsRnJhbWVUYWJiYWJsZSA9IGdldEFsbFRhYmJhYmxlSW4oZnJhbWVCb2R5LCBmYWxzZSk7XG4gICAgICB0YWJiYWJsZUVsZW1lbnRzMi5zcGxpY2UoaTIsIDEsIC4uLmFsbEZyYW1lVGFiYmFibGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB0YWJiYWJsZUVsZW1lbnRzMjtcbn1cbmZ1bmN0aW9uIGlzVGFiYmFibGUoZWxlbWVudCkge1xuICByZXR1cm4gaXNGb2N1c2FibGUoZWxlbWVudCkgJiYgIWhhc05lZ2F0aXZlVGFiSW5kZXgoZWxlbWVudCk7XG59XG5mdW5jdGlvbiBpc0ZvY3VzYWJsZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoRk9DVVNBQkxFX0VMRU1FTlRfU0VMRUNUT1IpICYmIGlzRWxlbWVudFZpc2libGUoZWxlbWVudCk7XG59XG5mdW5jdGlvbiBoYXNOZWdhdGl2ZVRhYkluZGV4KGVsZW1lbnQpIHtcbiAgY29uc3QgdGFiSW5kZXggPSBwYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpIHx8IFwiMFwiLCAxMCk7XG4gIHJldHVybiB0YWJJbmRleCA8IDA7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnRWaXNpYmxlKGVsZW1lbnQsIGNoaWxkRWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC5ub2RlTmFtZSAhPT0gXCIjY29tbWVudFwiICYmIGlzU3R5bGVWaXNpYmxlKGVsZW1lbnQpICYmIGlzQXR0cmlidXRlVmlzaWJsZShlbGVtZW50LCBjaGlsZEVsZW1lbnQpICYmICghZWxlbWVudC5wYXJlbnRFbGVtZW50IHx8IGlzRWxlbWVudFZpc2libGUoZWxlbWVudC5wYXJlbnRFbGVtZW50LCBlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc1N0eWxlVmlzaWJsZShlbGVtZW50KSB7XG4gIGlmICghKGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgJiYgIShlbGVtZW50IGluc3RhbmNlb2YgU1ZHRWxlbWVudCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgeyBkaXNwbGF5LCB2aXNpYmlsaXR5IH0gPSBlbGVtZW50LnN0eWxlO1xuICBsZXQgaXNWaXNpYmxlID0gZGlzcGxheSAhPT0gXCJub25lXCIgJiYgdmlzaWJpbGl0eSAhPT0gXCJoaWRkZW5cIiAmJiB2aXNpYmlsaXR5ICE9PSBcImNvbGxhcHNlXCI7XG4gIGlmIChpc1Zpc2libGUpIHtcbiAgICBpZiAoIWVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldykge1xuICAgICAgcmV0dXJuIGlzVmlzaWJsZTtcbiAgICB9XG4gICAgY29uc3QgeyBnZXRDb21wdXRlZFN0eWxlOiBnZXRDb21wdXRlZFN0eWxlMyB9ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgIGNvbnN0IHsgZGlzcGxheTogY29tcHV0ZWREaXNwbGF5LCB2aXNpYmlsaXR5OiBjb21wdXRlZFZpc2liaWxpdHkgfSA9IGdldENvbXB1dGVkU3R5bGUzKGVsZW1lbnQpO1xuICAgIGlzVmlzaWJsZSA9IGNvbXB1dGVkRGlzcGxheSAhPT0gXCJub25lXCIgJiYgY29tcHV0ZWRWaXNpYmlsaXR5ICE9PSBcImhpZGRlblwiICYmIGNvbXB1dGVkVmlzaWJpbGl0eSAhPT0gXCJjb2xsYXBzZVwiO1xuICB9XG4gIHJldHVybiBpc1Zpc2libGU7XG59XG5mdW5jdGlvbiBpc0F0dHJpYnV0ZVZpc2libGUoZWxlbWVudCwgY2hpbGRFbGVtZW50KSB7XG4gIHJldHVybiAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJoaWRkZW5cIikgJiYgKGVsZW1lbnQubm9kZU5hbWUgPT09IFwiREVUQUlMU1wiICYmIGNoaWxkRWxlbWVudCAmJiBjaGlsZEVsZW1lbnQubm9kZU5hbWUgIT09IFwiU1VNTUFSWVwiID8gZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJvcGVuXCIpIDogdHJ1ZSk7XG59XG5mdW5jdGlvbiBnZXRGb2N1c2FibGVUcmVlV2Fsa2VyKHJvb3QsIG9wdHMsIHNjb3BlKSB7XG4gIGNvbnN0IHNlbGVjdG9yID0gb3B0cz8udGFiYmFibGUgPyBUQUJCQUJMRV9FTEVNRU5UX1NFTEVDVE9SIDogRk9DVVNBQkxFX0VMRU1FTlRfU0VMRUNUT1I7XG4gIGNvbnN0IHdhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIocm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIHtcbiAgICBhY2NlcHROb2RlKG5vZGUpIHtcbiAgICAgIGlmIChvcHRzPy5mcm9tPy5jb250YWlucyhub2RlKSkge1xuICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUO1xuICAgICAgfVxuICAgICAgaWYgKG5vZGUubWF0Y2hlcyhzZWxlY3RvcikgJiYgaXNFbGVtZW50VmlzaWJsZShub2RlKSAmJiAodHJ1ZSkgJiYgKCFvcHRzPy5hY2NlcHQgfHwgb3B0cy5hY2NlcHQobm9kZSkpKSB7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICB9XG4gIH0pO1xuICBpZiAob3B0cz8uZnJvbSkge1xuICAgIHdhbGtlci5jdXJyZW50Tm9kZSA9IG9wdHMuZnJvbTtcbiAgfVxuICByZXR1cm4gd2Fsa2VyO1xufVxuZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KG5vZGUpIHtcbiAgd2hpbGUgKG5vZGUgJiYgIWlzU2Nyb2xsYWJsZShub2RlKSkge1xuICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gIH1cbiAgcmV0dXJuIG5vZGUgfHwgZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc1Njcm9sbGFibGUobm9kZSkge1xuICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICByZXR1cm4gLyhhdXRvfHNjcm9sbCkvLnRlc3Qoc3R5bGUub3ZlcmZsb3cgKyBzdHlsZS5vdmVyZmxvd1ggKyBzdHlsZS5vdmVyZmxvd1kpO1xufVxuZnVuY3Rpb24gbm9vcDMoKSB7XG4gIHJldHVybjtcbn1cbmZ1bmN0aW9uIGlzUG9pbnRJblBvbHlnb24ocG9pbnQsIHBvbHlnb24pIHtcbiAgY29uc3QgW3gsIHldID0gcG9pbnQ7XG4gIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgY29uc3QgbGVuZ3RoID0gcG9seWdvbi5sZW5ndGg7XG4gIGZvciAobGV0IGwyID0gbGVuZ3RoLCBpMiA9IDAsIGogPSBsMiAtIDE7IGkyIDwgbDI7IGogPSBpMisrKSB7XG4gICAgY29uc3QgW3hpLCB5aV0gPSBwb2x5Z29uW2kyXTtcbiAgICBjb25zdCBbeGosIHlqXSA9IHBvbHlnb25bal07XG4gICAgY29uc3QgWywgdnldID0gcG9seWdvbltqID09PSAwID8gbDIgLSAxIDogaiAtIDFdIHx8IFswLCAwXTtcbiAgICBjb25zdCB3aGVyZSA9ICh5aSAtIHlqKSAqICh4IC0geGkpIC0gKHhpIC0geGopICogKHkgLSB5aSk7XG4gICAgaWYgKHlqIDwgeWkpIHtcbiAgICAgIGlmICh5ID49IHlqICYmIHkgPCB5aSkge1xuICAgICAgICBpZiAod2hlcmUgPT09IDApXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh3aGVyZSA+IDApIHtcbiAgICAgICAgICBpZiAoeSA9PT0geWopIHtcbiAgICAgICAgICAgIGlmICh5ID4gdnkpIHtcbiAgICAgICAgICAgICAgaW5zaWRlID0gIWluc2lkZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5zaWRlID0gIWluc2lkZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHlpIDwgeWopIHtcbiAgICAgIGlmICh5ID4geWkgJiYgeSA8PSB5aikge1xuICAgICAgICBpZiAod2hlcmUgPT09IDApXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh3aGVyZSA8IDApIHtcbiAgICAgICAgICBpZiAoeSA9PT0geWopIHtcbiAgICAgICAgICAgIGlmICh5IDwgdnkpIHtcbiAgICAgICAgICAgICAgaW5zaWRlID0gIWluc2lkZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5zaWRlID0gIWluc2lkZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHkgPT0geWkgJiYgKHggPj0geGogJiYgeCA8PSB4aSB8fCB4ID49IHhpICYmIHggPD0geGopKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGluc2lkZTtcbn1cbmZ1bmN0aW9uIG1lcmdlRGVmYXVsdFByb3BzKGRlZmF1bHRQcm9wcywgcHJvcHMpIHtcbiAgcmV0dXJuIG1lcmdlUHJvcHMoZGVmYXVsdFByb3BzLCBwcm9wcyk7XG59XG52YXIgdHJhbnNpdGlvbnNCeUVsZW1lbnQgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xudmFyIHRyYW5zaXRpb25DYWxsYmFja3MgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuZnVuY3Rpb24gc2V0dXBHbG9iYWxFdmVudHMoKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IG9uVHJhbnNpdGlvblN0YXJ0ID0gKGUyKSA9PiB7XG4gICAgaWYgKCFlMi50YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnNCeUVsZW1lbnQuZ2V0KGUyLnRhcmdldCk7XG4gICAgaWYgKCF0cmFuc2l0aW9ucykge1xuICAgICAgdHJhbnNpdGlvbnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpO1xuICAgICAgdHJhbnNpdGlvbnNCeUVsZW1lbnQuc2V0KGUyLnRhcmdldCwgdHJhbnNpdGlvbnMpO1xuICAgICAgZTIudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgfVxuICAgIHRyYW5zaXRpb25zLmFkZChlMi5wcm9wZXJ0eU5hbWUpO1xuICB9O1xuICBjb25zdCBvblRyYW5zaXRpb25FbmQgPSAoZTIpID0+IHtcbiAgICBpZiAoIWUyLnRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gdHJhbnNpdGlvbnNCeUVsZW1lbnQuZ2V0KGUyLnRhcmdldCk7XG4gICAgaWYgKCFwcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHByb3BlcnRpZXMuZGVsZXRlKGUyLnByb3BlcnR5TmFtZSk7XG4gICAgaWYgKHByb3BlcnRpZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgZTIudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uY2FuY2VsXCIsIG9uVHJhbnNpdGlvbkVuZCk7XG4gICAgICB0cmFuc2l0aW9uc0J5RWxlbWVudC5kZWxldGUoZTIudGFyZ2V0KTtcbiAgICB9XG4gICAgaWYgKHRyYW5zaXRpb25zQnlFbGVtZW50LnNpemUgPT09IDApIHtcbiAgICAgIGZvciAoY29uc3QgY2Igb2YgdHJhbnNpdGlvbkNhbGxiYWNrcykge1xuICAgICAgICBjYigpO1xuICAgICAgfVxuICAgICAgdHJhbnNpdGlvbkNhbGxiYWNrcy5jbGVhcigpO1xuICAgIH1cbiAgfTtcbiAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbnJ1blwiLCBvblRyYW5zaXRpb25TdGFydCk7XG4gIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIiwgb25UcmFuc2l0aW9uRW5kKTtcbn1cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09IFwibG9hZGluZ1wiKSB7XG4gICAgc2V0dXBHbG9iYWxFdmVudHMoKTtcbiAgfSBlbHNlIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCBzZXR1cEdsb2JhbEV2ZW50cyk7XG4gIH1cbn1cbmZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KHNjcm9sbFZpZXcsIGVsZW1lbnQpIHtcbiAgY29uc3Qgb2Zmc2V0WCA9IHJlbGF0aXZlT2Zmc2V0KHNjcm9sbFZpZXcsIGVsZW1lbnQsIFwibGVmdFwiKTtcbiAgY29uc3Qgb2Zmc2V0WSA9IHJlbGF0aXZlT2Zmc2V0KHNjcm9sbFZpZXcsIGVsZW1lbnQsIFwidG9wXCIpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICBsZXQgeCA9IHNjcm9sbFZpZXcuc2Nyb2xsTGVmdDtcbiAgbGV0IHkgPSBzY3JvbGxWaWV3LnNjcm9sbFRvcDtcbiAgY29uc3QgbWF4WCA9IHggKyBzY3JvbGxWaWV3Lm9mZnNldFdpZHRoO1xuICBjb25zdCBtYXhZID0geSArIHNjcm9sbFZpZXcub2Zmc2V0SGVpZ2h0O1xuICBpZiAob2Zmc2V0WCA8PSB4KSB7XG4gICAgeCA9IG9mZnNldFg7XG4gIH0gZWxzZSBpZiAob2Zmc2V0WCArIHdpZHRoID4gbWF4WCkge1xuICAgIHggKz0gb2Zmc2V0WCArIHdpZHRoIC0gbWF4WDtcbiAgfVxuICBpZiAob2Zmc2V0WSA8PSB5KSB7XG4gICAgeSA9IG9mZnNldFk7XG4gIH0gZWxzZSBpZiAob2Zmc2V0WSArIGhlaWdodCA+IG1heFkpIHtcbiAgICB5ICs9IG9mZnNldFkgKyBoZWlnaHQgLSBtYXhZO1xuICB9XG4gIHNjcm9sbFZpZXcuc2Nyb2xsTGVmdCA9IHg7XG4gIHNjcm9sbFZpZXcuc2Nyb2xsVG9wID0geTtcbn1cbmZ1bmN0aW9uIHJlbGF0aXZlT2Zmc2V0KGFuY2VzdG9yLCBjaGlsZCwgYXhpcykge1xuICBjb25zdCBwcm9wID0gYXhpcyA9PT0gXCJsZWZ0XCIgPyBcIm9mZnNldExlZnRcIiA6IFwib2Zmc2V0VG9wXCI7XG4gIGxldCBzdW0gPSAwO1xuICB3aGlsZSAoY2hpbGQub2Zmc2V0UGFyZW50KSB7XG4gICAgc3VtICs9IGNoaWxkW3Byb3BdO1xuICAgIGlmIChjaGlsZC5vZmZzZXRQYXJlbnQgPT09IGFuY2VzdG9yKSB7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKGNoaWxkLm9mZnNldFBhcmVudC5jb250YWlucyhhbmNlc3RvcikpIHtcbiAgICAgIHN1bSAtPSBhbmNlc3Rvcltwcm9wXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjaGlsZCA9IGNoaWxkLm9mZnNldFBhcmVudDtcbiAgfVxuICByZXR1cm4gc3VtO1xufVxuZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXdwb3J0KHRhcmdldEVsZW1lbnQsIG9wdHMpIHtcbiAgaWYgKGRvY3VtZW50LmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSB7XG4gICAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGlzU2Nyb2xsUHJldmVudGVkID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocm9vdCkub3ZlcmZsb3cgPT09IFwiaGlkZGVuXCI7XG4gICAgaWYgKCFpc1Njcm9sbFByZXZlbnRlZCkge1xuICAgICAgY29uc3QgeyBsZWZ0OiBvcmlnaW5hbExlZnQsIHRvcDogb3JpZ2luYWxUb3AgfSA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0YXJnZXRFbGVtZW50Py5zY3JvbGxJbnRvVmlldz8uKHsgYmxvY2s6IFwibmVhcmVzdFwiIH0pO1xuICAgICAgY29uc3QgeyBsZWZ0OiBuZXdMZWZ0LCB0b3A6IG5ld1RvcCB9ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGlmIChNYXRoLmFicyhvcmlnaW5hbExlZnQgLSBuZXdMZWZ0KSA+IDEgfHwgTWF0aC5hYnMob3JpZ2luYWxUb3AgLSBuZXdUb3ApID4gMSkge1xuICAgICAgICB0YXJnZXRFbGVtZW50LnNjcm9sbEludG9WaWV3Py4oeyBibG9jazogXCJuZWFyZXN0XCIgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQodGFyZ2V0RWxlbWVudCk7XG4gICAgICB3aGlsZSAodGFyZ2V0RWxlbWVudCAmJiBzY3JvbGxQYXJlbnQgJiYgdGFyZ2V0RWxlbWVudCAhPT0gcm9vdCAmJiBzY3JvbGxQYXJlbnQgIT09IHJvb3QpIHtcbiAgICAgICAgc2Nyb2xsSW50b1ZpZXcoc2Nyb2xsUGFyZW50LCB0YXJnZXRFbGVtZW50KTtcbiAgICAgICAgdGFyZ2V0RWxlbWVudCA9IHNjcm9sbFBhcmVudDtcbiAgICAgICAgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KHRhcmdldEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxudmFyIHZpc3VhbGx5SGlkZGVuU3R5bGVzID0ge1xuICBib3JkZXI6IFwiMFwiLFxuICBjbGlwOiBcInJlY3QoMCAwIDAgMClcIixcbiAgXCJjbGlwLXBhdGhcIjogXCJpbnNldCg1MCUpXCIsXG4gIGhlaWdodDogXCIxcHhcIixcbiAgbWFyZ2luOiBcIjAgLTFweCAtMXB4IDBcIixcbiAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gIHBhZGRpbmc6IFwiMFwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB3aWR0aDogXCIxcHhcIixcbiAgXCJ3aGl0ZS1zcGFjZVwiOiBcIm5vd3JhcFwiXG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9FNFIyRU1NNC5qc1xuZnVuY3Rpb24gY3JlYXRlUmVnaXN0ZXJJZChzZXR0ZXIpIHtcbiAgcmV0dXJuIChpZCkgPT4ge1xuICAgIHNldHRlcihpZCk7XG4gICAgcmV0dXJuICgpID0+IHNldHRlcih2b2lkIDApO1xuICB9O1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9FVDVUNDVETy5qc1xuZnVuY3Rpb24gY3JlYXRlVGFnTmFtZShyZWYsIGZhbGxiYWNrKSB7XG4gIGNvbnN0IFt0YWdOYW1lLCBzZXRUYWdOYW1lXSA9IGNyZWF0ZVNpZ25hbChzdHJpbmdPclVuZGVmaW5lZChmYWxsYmFjaz8uKCkpKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRUYWdOYW1lKHJlZigpPy50YWdOYW1lLnRvTG93ZXJDYXNlKCkgfHwgc3RyaW5nT3JVbmRlZmluZWQoZmFsbGJhY2s/LigpKSk7XG4gIH0pO1xuICByZXR1cm4gdGFnTmFtZTtcbn1cbmZ1bmN0aW9uIHN0cmluZ09yVW5kZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyB2YWx1ZSA6IHZvaWQgMDtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvNlk3QjJORU8uanNcbmZ1bmN0aW9uIFBvbHltb3JwaGljKHByb3BzKSB7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMocHJvcHMsIFtcImFzXCJdKTtcbiAgaWYgKCFsb2NhbC5hcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogUG9seW1vcnBoaWMgaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgYGFzYCBwcm9wLlwiKTtcbiAgfVxuICByZXR1cm4gKFxuICAgIC8vIEB0cy1pZ25vcmU6IFByb3BzIGFyZSB2YWxpZCBidXQgbm90IHdvcnRoIGNhbGN1bGF0aW5nXG4gICAgY3JlYXRlQ29tcG9uZW50KER5bmFtaWMsIG1lcmdlUHJvcHMob3RoZXJzLCB7XG4gICAgICBnZXQgY29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gbG9jYWwuYXM7XG4gICAgICB9XG4gICAgfSkpXG4gICk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL1EyREpMWlFFLmpzXG52YXIgRk9STV9DT05UUk9MX1BST1BfTkFNRVMgPSBbXCJpZFwiLCBcIm5hbWVcIiwgXCJ2YWxpZGF0aW9uU3RhdGVcIiwgXCJyZXF1aXJlZFwiLCBcImRpc2FibGVkXCIsIFwicmVhZE9ubHlcIl07XG5mdW5jdGlvbiBjcmVhdGVGb3JtQ29udHJvbChwcm9wcykge1xuICBjb25zdCBkZWZhdWx0SWQgPSBgZm9ybS1jb250cm9sLSR7Y3JlYXRlVW5pcXVlSWQoKX1gO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogZGVmYXVsdElkXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xhYmVsSWQsIHNldExhYmVsSWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtmaWVsZElkLCBzZXRGaWVsZElkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbZGVzY3JpcHRpb25JZCwgc2V0RGVzY3JpcHRpb25JZF0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2Vycm9yTWVzc2FnZUlkLCBzZXRFcnJvck1lc3NhZ2VJZF0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgZ2V0QXJpYUxhYmVsbGVkQnkgPSAoZmllbGRJZDIsIGZpZWxkQXJpYUxhYmVsLCBmaWVsZEFyaWFMYWJlbGxlZEJ5KSA9PiB7XG4gICAgY29uc3QgaGFzQXJpYUxhYmVsbGVkQnkgPSBmaWVsZEFyaWFMYWJlbGxlZEJ5ICE9IG51bGwgfHwgbGFiZWxJZCgpICE9IG51bGw7XG4gICAgcmV0dXJuIFtcbiAgICAgIGZpZWxkQXJpYUxhYmVsbGVkQnksXG4gICAgICBsYWJlbElkKCksXG4gICAgICAvLyBJZiB0aGVyZSBpcyBib3RoIGFuIGFyaWEtbGFiZWwgYW5kIGFyaWEtbGFiZWxsZWRieSwgYWRkIHRoZSBmaWVsZCBpdHNlbGYgaGFzIGFuIGFyaWEtbGFiZWxsZWRieVxuICAgICAgaGFzQXJpYUxhYmVsbGVkQnkgJiYgZmllbGRBcmlhTGFiZWwgIT0gbnVsbCA/IGZpZWxkSWQyIDogdm9pZCAwXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICB9O1xuICBjb25zdCBnZXRBcmlhRGVzY3JpYmVkQnkgPSAoZmllbGRBcmlhRGVzY3JpYmVkQnkpID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAgZGVzY3JpcHRpb25JZCgpLFxuICAgICAgLy8gVXNlIGFyaWEtZGVzY3JpYmVkYnkgZm9yIGVycm9yIG1lc3NhZ2UgYmVjYXVzZSBhcmlhLWVycm9ybWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB1c2luZyBWb2ljZU92ZXIgb3IgTlZEQS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vaXNzdWVzLzEzNDYjaXNzdWVjb21tZW50LTc0MDEzNjI2OFxuICAgICAgZXJyb3JNZXNzYWdlSWQoKSxcbiAgICAgIGZpZWxkQXJpYURlc2NyaWJlZEJ5XG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIikgfHwgdm9pZCAwO1xuICB9O1xuICBjb25zdCBkYXRhc2V0ID0gY3JlYXRlTWVtbygoKSA9PiAoe1xuICAgIFwiZGF0YS12YWxpZFwiOiBhY2Nlc3MobWVyZ2VkUHJvcHMudmFsaWRhdGlvblN0YXRlKSA9PT0gXCJ2YWxpZFwiID8gXCJcIiA6IHZvaWQgMCxcbiAgICBcImRhdGEtaW52YWxpZFwiOiBhY2Nlc3MobWVyZ2VkUHJvcHMudmFsaWRhdGlvblN0YXRlKSA9PT0gXCJpbnZhbGlkXCIgPyBcIlwiIDogdm9pZCAwLFxuICAgIFwiZGF0YS1yZXF1aXJlZFwiOiBhY2Nlc3MobWVyZ2VkUHJvcHMucmVxdWlyZWQpID8gXCJcIiA6IHZvaWQgMCxcbiAgICBcImRhdGEtZGlzYWJsZWRcIjogYWNjZXNzKG1lcmdlZFByb3BzLmRpc2FibGVkKSA/IFwiXCIgOiB2b2lkIDAsXG4gICAgXCJkYXRhLXJlYWRvbmx5XCI6IGFjY2VzcyhtZXJnZWRQcm9wcy5yZWFkT25seSkgPyBcIlwiIDogdm9pZCAwXG4gIH0pKTtcbiAgY29uc3QgZm9ybUNvbnRyb2xDb250ZXh0ID0ge1xuICAgIG5hbWU6ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5uYW1lKSA/PyBhY2Nlc3MobWVyZ2VkUHJvcHMuaWQpLFxuICAgIGRhdGFzZXQsXG4gICAgdmFsaWRhdGlvblN0YXRlOiAoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMudmFsaWRhdGlvblN0YXRlKSxcbiAgICBpc1JlcXVpcmVkOiAoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMucmVxdWlyZWQpLFxuICAgIGlzRGlzYWJsZWQ6ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5kaXNhYmxlZCksXG4gICAgaXNSZWFkT25seTogKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLnJlYWRPbmx5KSxcbiAgICBsYWJlbElkLFxuICAgIGZpZWxkSWQsXG4gICAgZGVzY3JpcHRpb25JZCxcbiAgICBlcnJvck1lc3NhZ2VJZCxcbiAgICBnZXRBcmlhTGFiZWxsZWRCeSxcbiAgICBnZXRBcmlhRGVzY3JpYmVkQnksXG4gICAgZ2VuZXJhdGVJZDogY3JlYXRlR2VuZXJhdGVJZCgoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMuaWQpKSxcbiAgICByZWdpc3RlckxhYmVsOiBjcmVhdGVSZWdpc3RlcklkKHNldExhYmVsSWQpLFxuICAgIHJlZ2lzdGVyRmllbGQ6IGNyZWF0ZVJlZ2lzdGVySWQoc2V0RmllbGRJZCksXG4gICAgcmVnaXN0ZXJEZXNjcmlwdGlvbjogY3JlYXRlUmVnaXN0ZXJJZChzZXREZXNjcmlwdGlvbklkKSxcbiAgICByZWdpc3RlckVycm9yTWVzc2FnZTogY3JlYXRlUmVnaXN0ZXJJZChzZXRFcnJvck1lc3NhZ2VJZClcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBmb3JtQ29udHJvbENvbnRleHRcbiAgfTtcbn1cbnZhciBGb3JtQ29udHJvbENvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VGb3JtQ29udHJvbENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEZvcm1Db250cm9sQ29udGV4dCk7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJba29iYWx0ZV06IGB1c2VGb3JtQ29udHJvbENvbnRleHRgIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgRm9ybUNvbnRyb2xDb250ZXh0LlByb3ZpZGVyYCBjb21wb25lbnRcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiBGb3JtQ29udHJvbERlc2NyaXB0aW9uKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VGb3JtQ29udHJvbENvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGNvbnRleHQuZ2VuZXJhdGVJZChcImRlc2NyaXB0aW9uXCIpXG4gIH0sIHByb3BzKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IG9uQ2xlYW51cChjb250ZXh0LnJlZ2lzdGVyRGVzY3JpcHRpb24obWVyZ2VkUHJvcHMuaWQpKSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImRpdlwiXG4gIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBtZXJnZWRQcm9wcykpO1xufVxuZnVuY3Rpb24gRm9ybUNvbnRyb2xFcnJvck1lc3NhZ2UocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUZvcm1Db250cm9sQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwiZXJyb3ItbWVzc2FnZVwiKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcImZvcmNlTW91bnRcIl0pO1xuICBjb25zdCBpc0ludmFsaWQgPSAoKSA9PiBjb250ZXh0LnZhbGlkYXRpb25TdGF0ZSgpID09PSBcImludmFsaWRcIjtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzSW52YWxpZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9uQ2xlYW51cChjb250ZXh0LnJlZ2lzdGVyRXJyb3JNZXNzYWdlKG90aGVycy5pZCkpO1xuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gbG9jYWwuZm9yY2VNb3VudCB8fCBpc0ludmFsaWQoKTtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBhczogXCJkaXZcIlxuICAgICAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG90aGVycykpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBGb3JtQ29udHJvbExhYmVsKHByb3BzKSB7XG4gIGxldCByZWY7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VGb3JtQ29udHJvbENvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGNvbnRleHQuZ2VuZXJhdGVJZChcImxhYmVsXCIpXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wicmVmXCJdKTtcbiAgY29uc3QgdGFnTmFtZSA9IGNyZWF0ZVRhZ05hbWUoKCkgPT4gcmVmLCAoKSA9PiBcImxhYmVsXCIpO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJMYWJlbChvdGhlcnMuaWQpKSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImxhYmVsXCIsXG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcygoZWwpID0+IHJlZiA9IGVsLCBsb2NhbC5yZWYpO1xuICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgIH0sXG4gICAgZ2V0IFtcImZvclwiXSgpIHtcbiAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+IHRhZ05hbWUoKSA9PT0gXCJsYWJlbFwiKSgpID8gY29udGV4dC5maWVsZElkKCkgOiB2b2lkIDA7XG4gICAgfVxuICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL0FOTjNBMlFNLmpzXG5mdW5jdGlvbiBjcmVhdGVGb3JtUmVzZXRMaXN0ZW5lcihlbGVtZW50LCBoYW5kbGVyKSB7XG4gIGNyZWF0ZUVmZmVjdChcbiAgICBvbihlbGVtZW50LCAoZWxlbWVudDIpID0+IHtcbiAgICAgIGlmIChlbGVtZW50MiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZvcm0gPSBnZXRDbG9zZXN0Rm9ybShlbGVtZW50Mik7XG4gICAgICBpZiAoZm9ybSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcihcInJlc2V0XCIsIGhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICAgIGZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2V0XCIsIGhhbmRsZXIpO1xuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcbn1cbmZ1bmN0aW9uIGdldENsb3Nlc3RGb3JtKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGlzRm9ybUVsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmZvcm0gOiBlbGVtZW50LmNsb3Nlc3QoXCJmb3JtXCIpO1xufVxuZnVuY3Rpb24gaXNGb3JtRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50Lm1hdGNoZXMoXCJ0ZXh0YXJlYSwgaW5wdXQsIHNlbGVjdCwgYnV0dG9uXCIpO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9CTE42M0ZEQy5qc1xuZnVuY3Rpb24gY3JlYXRlQ29udHJvbGxhYmxlU2lnbmFsKHByb3BzKSB7XG4gIGNvbnN0IFtfdmFsdWUsIF9zZXRWYWx1ZV0gPSBjcmVhdGVTaWduYWwocHJvcHMuZGVmYXVsdFZhbHVlPy4oKSk7XG4gIGNvbnN0IGlzQ29udHJvbGxlZCA9IGNyZWF0ZU1lbW8oKCkgPT4gcHJvcHMudmFsdWU/LigpICE9PSB2b2lkIDApO1xuICBjb25zdCB2YWx1ZSA9IGNyZWF0ZU1lbW8oKCkgPT4gaXNDb250cm9sbGVkKCkgPyBwcm9wcy52YWx1ZT8uKCkgOiBfdmFsdWUoKSk7XG4gIGNvbnN0IHNldFZhbHVlID0gKG5leHQpID0+IHtcbiAgICB1bnRyYWNrKCgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGFjY2Vzc1dpdGgobmV4dCwgdmFsdWUoKSk7XG4gICAgICBpZiAoIU9iamVjdC5pcyhuZXh0VmFsdWUsIHZhbHVlKCkpKSB7XG4gICAgICAgIGlmICghaXNDb250cm9sbGVkKCkpIHtcbiAgICAgICAgICBfc2V0VmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBwcm9wcy5vbkNoYW5nZT8uKG5leHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dFZhbHVlO1xuICAgIH0pO1xuICB9O1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZV07XG59XG5mdW5jdGlvbiBjcmVhdGVDb250cm9sbGFibGVCb29sZWFuU2lnbmFsKHByb3BzKSB7XG4gIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZVNpZ25hbChwcm9wcyk7XG4gIGNvbnN0IHZhbHVlID0gKCkgPT4gX3ZhbHVlKCkgPz8gZmFsc2U7XG4gIHJldHVybiBbdmFsdWUsIHNldFZhbHVlXTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRyb2xsYWJsZUFycmF5U2lnbmFsKHByb3BzKSB7XG4gIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZVNpZ25hbChwcm9wcyk7XG4gIGNvbnN0IHZhbHVlID0gKCkgPT4gX3ZhbHVlKCkgPz8gW107XG4gIHJldHVybiBbdmFsdWUsIHNldFZhbHVlXTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvWUdEUVhRMkIuanNcbmZ1bmN0aW9uIGNyZWF0ZVRvZ2dsZVN0YXRlKHByb3BzID0ge30pIHtcbiAgY29uc3QgW2lzU2VsZWN0ZWQsIF9zZXRJc1NlbGVjdGVkXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZUJvb2xlYW5TaWduYWwoe1xuICAgIHZhbHVlOiAoKSA9PiBhY2Nlc3MocHJvcHMuaXNTZWxlY3RlZCksXG4gICAgZGVmYXVsdFZhbHVlOiAoKSA9PiAhIWFjY2Vzcyhwcm9wcy5kZWZhdWx0SXNTZWxlY3RlZCksXG4gICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gcHJvcHMub25TZWxlY3RlZENoYW5nZT8uKHZhbHVlKVxuICB9KTtcbiAgY29uc3Qgc2V0SXNTZWxlY3RlZCA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmICghYWNjZXNzKHByb3BzLmlzUmVhZE9ubHkpICYmICFhY2Nlc3MocHJvcHMuaXNEaXNhYmxlZCkpIHtcbiAgICAgIF9zZXRJc1NlbGVjdGVkKHZhbHVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBpZiAoIWFjY2Vzcyhwcm9wcy5pc1JlYWRPbmx5KSAmJiAhYWNjZXNzKHByb3BzLmlzRGlzYWJsZWQpKSB7XG4gICAgICBfc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCgpKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgaXNTZWxlY3RlZCxcbiAgICBzZXRJc1NlbGVjdGVkLFxuICAgIHRvZ2dsZVxuICB9O1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay81WktBRTRWWi5qc1xudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2V4cG9ydCA9ICh0YXJnZXQsIGFsbCkgPT4ge1xuICBmb3IgKHZhciBuYW1lIGluIGFsbClcbiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7IGdldDogYWxsW25hbWVdLCBlbnVtZXJhYmxlOiB0cnVlIH0pO1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvN0NWTk1UWUYuanNcbnZhciBEb21Db2xsZWN0aW9uQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZU9wdGlvbmFsRG9tQ29sbGVjdGlvbkNvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KERvbUNvbGxlY3Rpb25Db250ZXh0KTtcbn1cbmZ1bmN0aW9uIHVzZURvbUNvbGxlY3Rpb25Db250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlT3B0aW9uYWxEb21Db2xsZWN0aW9uQ29udGV4dCgpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJba29iYWx0ZV06IGB1c2VEb21Db2xsZWN0aW9uQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBEb21Db2xsZWN0aW9uUHJvdmlkZXJgIGNvbXBvbmVudFwiXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudFByZWNlZGluZyhhMiwgYjIpIHtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgYjIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYTIpICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkdcbiAgKTtcbn1cbmZ1bmN0aW9uIGZpbmRET01JbmRleChpdGVtcywgaXRlbSkge1xuICBjb25zdCBpdGVtRWwgPSBpdGVtLnJlZigpO1xuICBpZiAoIWl0ZW1FbCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBsZXQgbGVuZ3RoID0gaXRlbXMubGVuZ3RoO1xuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBjb25zdCBjdXJyZW50SXRlbUVsID0gaXRlbXNbbGVuZ3RoXT8ucmVmKCk7XG4gICAgaWYgKCFjdXJyZW50SXRlbUVsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGlzRWxlbWVudFByZWNlZGluZyhjdXJyZW50SXRlbUVsLCBpdGVtRWwpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoICsgMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5mdW5jdGlvbiBzb3J0QmFzZWRPbkRPTVBvc2l0aW9uKGl0ZW1zKSB7XG4gIGNvbnN0IHBhaXJzID0gaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4gW2luZGV4LCBpdGVtXSk7XG4gIGxldCBpc09yZGVyRGlmZmVyZW50ID0gZmFsc2U7XG4gIHBhaXJzLnNvcnQoKFtpbmRleEEsIGEyXSwgW2luZGV4QiwgYjJdKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudEEgPSBhMi5yZWYoKTtcbiAgICBjb25zdCBlbGVtZW50QiA9IGIyLnJlZigpO1xuICAgIGlmIChlbGVtZW50QSA9PT0gZWxlbWVudEIpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoIWVsZW1lbnRBIHx8ICFlbGVtZW50Qikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmIChpc0VsZW1lbnRQcmVjZWRpbmcoZWxlbWVudEEsIGVsZW1lbnRCKSkge1xuICAgICAgaWYgKGluZGV4QSA+IGluZGV4Qikge1xuICAgICAgICBpc09yZGVyRGlmZmVyZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGluZGV4QSA8IGluZGV4Qikge1xuICAgICAgaXNPcmRlckRpZmZlcmVudCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9KTtcbiAgaWYgKGlzT3JkZXJEaWZmZXJlbnQpIHtcbiAgICByZXR1cm4gcGFpcnMubWFwKChbXywgaXRlbV0pID0+IGl0ZW0pO1xuICB9XG4gIHJldHVybiBpdGVtcztcbn1cbmZ1bmN0aW9uIHNldEl0ZW1zQmFzZWRPbkRPTVBvc2l0aW9uKGl0ZW1zLCBzZXRJdGVtcykge1xuICBjb25zdCBzb3J0ZWRJdGVtcyA9IHNvcnRCYXNlZE9uRE9NUG9zaXRpb24oaXRlbXMpO1xuICBpZiAoaXRlbXMgIT09IHNvcnRlZEl0ZW1zKSB7XG4gICAgc2V0SXRlbXMoc29ydGVkSXRlbXMpO1xuICB9XG59XG5mdW5jdGlvbiBnZXRDb21tb25QYXJlbnQoaXRlbXMpIHtcbiAgY29uc3QgZmlyc3RJdGVtID0gaXRlbXNbMF07XG4gIGNvbnN0IGxhc3RJdGVtRWwgPSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXT8ucmVmKCk7XG4gIGxldCBwYXJlbnRFbCA9IGZpcnN0SXRlbT8ucmVmKCk/LnBhcmVudEVsZW1lbnQ7XG4gIHdoaWxlIChwYXJlbnRFbCkge1xuICAgIGlmIChsYXN0SXRlbUVsICYmIHBhcmVudEVsLmNvbnRhaW5zKGxhc3RJdGVtRWwpKSB7XG4gICAgICByZXR1cm4gcGFyZW50RWw7XG4gICAgfVxuICAgIHBhcmVudEVsID0gcGFyZW50RWwucGFyZW50RWxlbWVudDtcbiAgfVxuICByZXR1cm4gZ2V0RG9jdW1lbnQocGFyZW50RWwpLmJvZHk7XG59XG5mdW5jdGlvbiBjcmVhdGVUaW1lb3V0T2JzZXJ2ZXIoaXRlbXMsIHNldEl0ZW1zKSB7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0SXRlbXNCYXNlZE9uRE9NUG9zaXRpb24oaXRlbXMoKSwgc2V0SXRlbXMpO1xuICAgIH0pO1xuICAgIG9uQ2xlYW51cCgoKSA9PiBjbGVhclRpbWVvdXQodGltZW91dCkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVNvcnRCYXNlZE9uRE9NUG9zaXRpb24oaXRlbXMsIHNldEl0ZW1zKSB7XG4gIGlmICh0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIGNyZWF0ZVRpbWVvdXRPYnNlcnZlcihpdGVtcywgc2V0SXRlbXMpO1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgcHJldmlvdXNJdGVtcyA9IFtdO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgY29uc3QgaGFzUHJldmlvdXNJdGVtcyA9ICEhcHJldmlvdXNJdGVtcy5sZW5ndGg7XG4gICAgICBwcmV2aW91c0l0ZW1zID0gaXRlbXMoKTtcbiAgICAgIGlmICghaGFzUHJldmlvdXNJdGVtcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZXRJdGVtc0Jhc2VkT25ET01Qb3NpdGlvbihpdGVtcygpLCBzZXRJdGVtcyk7XG4gICAgfTtcbiAgICBjb25zdCByb290ID0gZ2V0Q29tbW9uUGFyZW50KGl0ZW1zKCkpO1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCB7IHJvb3QgfSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKCkpIHtcbiAgICAgIGNvbnN0IGl0ZW1FbCA9IGl0ZW0ucmVmKCk7XG4gICAgICBpZiAoaXRlbUVsKSB7XG4gICAgICAgIG9ic2VydmVyLm9ic2VydmUoaXRlbUVsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgb25DbGVhbnVwKCgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKSk7XG4gIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlRG9tQ29sbGVjdGlvbihwcm9wcyA9IHt9KSB7XG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gY3JlYXRlQ29udHJvbGxhYmxlQXJyYXlTaWduYWwoe1xuICAgIHZhbHVlOiAoKSA9PiBhY2Nlc3MocHJvcHMuaXRlbXMpLFxuICAgIG9uQ2hhbmdlOiAodmFsdWUpID0+IHByb3BzLm9uSXRlbXNDaGFuZ2U/Lih2YWx1ZSlcbiAgfSk7XG4gIGNyZWF0ZVNvcnRCYXNlZE9uRE9NUG9zaXRpb24oaXRlbXMsIHNldEl0ZW1zKTtcbiAgY29uc3QgcmVnaXN0ZXJJdGVtID0gKGl0ZW0pID0+IHtcbiAgICBzZXRJdGVtcygocHJldkl0ZW1zKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGZpbmRET01JbmRleChwcmV2SXRlbXMsIGl0ZW0pO1xuICAgICAgcmV0dXJuIGFkZEl0ZW1Ub0FycmF5KHByZXZJdGVtcywgaXRlbSwgaW5kZXgpO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzZXRJdGVtcygocHJldkl0ZW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IHByZXZJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5yZWYoKSAhPT0gaXRlbS5yZWYoKVxuICAgICAgICApO1xuICAgICAgICBpZiAocHJldkl0ZW1zLmxlbmd0aCA9PT0gbmV4dEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBwcmV2SXRlbXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRJdGVtcztcbiAgICAgIH0pO1xuICAgIH07XG4gIH07XG4gIGNvbnN0IERvbUNvbGxlY3Rpb25Qcm92aWRlciA9IChwcm9wczIpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERvbUNvbGxlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogeyByZWdpc3Rlckl0ZW0gfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIHByb3BzMi5jaGlsZHJlbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgcmV0dXJuIHsgRG9tQ29sbGVjdGlvblByb3ZpZGVyIH07XG59XG5mdW5jdGlvbiBjcmVhdGVEb21Db2xsZWN0aW9uSXRlbShwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlRG9tQ29sbGVjdGlvbkNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7IHNob3VsZFJlZ2lzdGVySXRlbTogdHJ1ZSB9LCBwcm9wcyk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZXJnZWRQcm9wcy5zaG91bGRSZWdpc3Rlckl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdW5yZWdpc3RlciA9IGNvbnRleHQucmVnaXN0ZXJJdGVtKG1lcmdlZFByb3BzLmdldEl0ZW0oKSk7XG4gICAgb25DbGVhbnVwKHVucmVnaXN0ZXIpO1xuICB9KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvSk1BMlJXVTYuanNcbmZ1bmN0aW9uIGJ1aWxkTm9kZXMocGFyYW1zKSB7XG4gIGxldCBpbmRleCA9IHBhcmFtcy5zdGFydEluZGV4ID8/IDA7XG4gIGNvbnN0IGxldmVsID0gcGFyYW1zLnN0YXJ0TGV2ZWwgPz8gMDtcbiAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgY29uc3QgZ2V0S2V5ID0gKGRhdGEpID0+IHtcbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgY29uc3QgX2dldEtleSA9IHBhcmFtcy5nZXRLZXkgPz8gXCJrZXlcIjtcbiAgICBjb25zdCBkYXRhS2V5ID0gaXNTdHJpbmcoX2dldEtleSkgPyBkYXRhW19nZXRLZXldIDogX2dldEtleShkYXRhKTtcbiAgICByZXR1cm4gZGF0YUtleSAhPSBudWxsID8gU3RyaW5nKGRhdGFLZXkpIDogXCJcIjtcbiAgfTtcbiAgY29uc3QgZ2V0VGV4dFZhbHVlID0gKGRhdGEpID0+IHtcbiAgICBpZiAoZGF0YSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgY29uc3QgX2dldFRleHRWYWx1ZSA9IHBhcmFtcy5nZXRUZXh0VmFsdWUgPz8gXCJ0ZXh0VmFsdWVcIjtcbiAgICBjb25zdCBkYXRhVGV4dFZhbHVlID0gaXNTdHJpbmcoX2dldFRleHRWYWx1ZSkgPyBkYXRhW19nZXRUZXh0VmFsdWVdIDogX2dldFRleHRWYWx1ZShkYXRhKTtcbiAgICByZXR1cm4gZGF0YVRleHRWYWx1ZSAhPSBudWxsID8gU3RyaW5nKGRhdGFUZXh0VmFsdWUpIDogXCJcIjtcbiAgfTtcbiAgY29uc3QgZ2V0RGlzYWJsZWQgPSAoZGF0YSkgPT4ge1xuICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgX2dldERpc2FibGVkID0gcGFyYW1zLmdldERpc2FibGVkID8/IFwiZGlzYWJsZWRcIjtcbiAgICByZXR1cm4gKGlzU3RyaW5nKF9nZXREaXNhYmxlZCkgPyBkYXRhW19nZXREaXNhYmxlZF0gOiBfZ2V0RGlzYWJsZWQoZGF0YSkpID8/IGZhbHNlO1xuICB9O1xuICBjb25zdCBnZXRTZWN0aW9uQ2hpbGRyZW4gPSAoZGF0YSkgPT4ge1xuICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGlmIChpc1N0cmluZyhwYXJhbXMuZ2V0U2VjdGlvbkNoaWxkcmVuKSkge1xuICAgICAgcmV0dXJuIGRhdGFbcGFyYW1zLmdldFNlY3Rpb25DaGlsZHJlbl07XG4gICAgfVxuICAgIHJldHVybiBwYXJhbXMuZ2V0U2VjdGlvbkNoaWxkcmVuPy4oZGF0YSk7XG4gIH07XG4gIGZvciAoY29uc3QgZGF0YSBvZiBwYXJhbXMuZGF0YVNvdXJjZSkge1xuICAgIGlmIChpc1N0cmluZyhkYXRhKSB8fCBpc051bWJlcihkYXRhKSkge1xuICAgICAgbm9kZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IFwiaXRlbVwiLFxuICAgICAgICByYXdWYWx1ZTogZGF0YSxcbiAgICAgICAga2V5OiBTdHJpbmcoZGF0YSksXG4gICAgICAgIHRleHRWYWx1ZTogU3RyaW5nKGRhdGEpLFxuICAgICAgICBkaXNhYmxlZDogZ2V0RGlzYWJsZWQoZGF0YSksXG4gICAgICAgIGxldmVsLFxuICAgICAgICBpbmRleFxuICAgICAgfSk7XG4gICAgICBpbmRleCsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChnZXRTZWN0aW9uQ2hpbGRyZW4oZGF0YSkgIT0gbnVsbCkge1xuICAgICAgbm9kZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IFwic2VjdGlvblwiLFxuICAgICAgICByYXdWYWx1ZTogZGF0YSxcbiAgICAgICAga2V5OiBcIlwiLFxuICAgICAgICAvLyBub3QgYXBwbGljYWJsZSBoZXJlXG4gICAgICAgIHRleHRWYWx1ZTogXCJcIixcbiAgICAgICAgLy8gbm90IGFwcGxpY2FibGUgaGVyZVxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIC8vIG5vdCBhcHBsaWNhYmxlIGhlcmVcbiAgICAgICAgbGV2ZWwsXG4gICAgICAgIGluZGV4XG4gICAgICB9KTtcbiAgICAgIGluZGV4Kys7XG4gICAgICBjb25zdCBzZWN0aW9uQ2hpbGRyZW4gPSBnZXRTZWN0aW9uQ2hpbGRyZW4oZGF0YSkgPz8gW107XG4gICAgICBpZiAoc2VjdGlvbkNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlcyA9IGJ1aWxkTm9kZXMoe1xuICAgICAgICAgIGRhdGFTb3VyY2U6IHNlY3Rpb25DaGlsZHJlbixcbiAgICAgICAgICBnZXRLZXk6IHBhcmFtcy5nZXRLZXksXG4gICAgICAgICAgZ2V0VGV4dFZhbHVlOiBwYXJhbXMuZ2V0VGV4dFZhbHVlLFxuICAgICAgICAgIGdldERpc2FibGVkOiBwYXJhbXMuZ2V0RGlzYWJsZWQsXG4gICAgICAgICAgZ2V0U2VjdGlvbkNoaWxkcmVuOiBwYXJhbXMuZ2V0U2VjdGlvbkNoaWxkcmVuLFxuICAgICAgICAgIHN0YXJ0SW5kZXg6IGluZGV4LFxuICAgICAgICAgIHN0YXJ0TGV2ZWw6IGxldmVsICsgMVxuICAgICAgICB9KTtcbiAgICAgICAgbm9kZXMucHVzaCguLi5jaGlsZE5vZGVzKTtcbiAgICAgICAgaW5kZXggKz0gY2hpbGROb2Rlcy5sZW5ndGg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVzLnB1c2goe1xuICAgICAgICB0eXBlOiBcIml0ZW1cIixcbiAgICAgICAgcmF3VmFsdWU6IGRhdGEsXG4gICAgICAgIGtleTogZ2V0S2V5KGRhdGEpLFxuICAgICAgICB0ZXh0VmFsdWU6IGdldFRleHRWYWx1ZShkYXRhKSxcbiAgICAgICAgZGlzYWJsZWQ6IGdldERpc2FibGVkKGRhdGEpLFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgaW5kZXhcbiAgICAgIH0pO1xuICAgICAgaW5kZXgrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufVxuZnVuY3Rpb24gY3JlYXRlQ29sbGVjdGlvbihwcm9wcywgZGVwcyA9IFtdKSB7XG4gIHJldHVybiBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBub2RlcyA9IGJ1aWxkTm9kZXMoe1xuICAgICAgZGF0YVNvdXJjZTogYWNjZXNzKHByb3BzLmRhdGFTb3VyY2UpLFxuICAgICAgZ2V0S2V5OiBhY2Nlc3MocHJvcHMuZ2V0S2V5KSxcbiAgICAgIGdldFRleHRWYWx1ZTogYWNjZXNzKHByb3BzLmdldFRleHRWYWx1ZSksXG4gICAgICBnZXREaXNhYmxlZDogYWNjZXNzKHByb3BzLmdldERpc2FibGVkKSxcbiAgICAgIGdldFNlY3Rpb25DaGlsZHJlbjogYWNjZXNzKHByb3BzLmdldFNlY3Rpb25DaGlsZHJlbilcbiAgICB9KTtcbiAgICBmb3IgKGxldCBpMiA9IDA7IGkyIDwgZGVwcy5sZW5ndGg7IGkyKyspXG4gICAgICBkZXBzW2kyXSgpO1xuICAgIHJldHVybiBwcm9wcy5mYWN0b3J5KG5vZGVzKTtcbiAgfSk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL1hISlBRRVpQLmpzXG52YXIgUlRMX1NDUklQVFMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gIFwiQXZzdFwiLFxuICBcIkFyYWJcIixcbiAgXCJBcm1pXCIsXG4gIFwiU3lyY1wiLFxuICBcIlNhbXJcIixcbiAgXCJNYW5kXCIsXG4gIFwiVGhhYVwiLFxuICBcIk1lbmRcIixcbiAgXCJOa29vXCIsXG4gIFwiQWRsbVwiLFxuICBcIlJvaGdcIixcbiAgXCJIZWJyXCJcbl0pO1xudmFyIFJUTF9MQU5HUyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcbiAgXCJhZVwiLFxuICBcImFyXCIsXG4gIFwiYXJjXCIsXG4gIFwiYmNjXCIsXG4gIFwiYnFpXCIsXG4gIFwiY2tiXCIsXG4gIFwiZHZcIixcbiAgXCJmYVwiLFxuICBcImdsa1wiLFxuICBcImhlXCIsXG4gIFwia3VcIixcbiAgXCJtem5cIixcbiAgXCJucW9cIixcbiAgXCJwbmJcIixcbiAgXCJwc1wiLFxuICBcInNkXCIsXG4gIFwidWdcIixcbiAgXCJ1clwiLFxuICBcInlpXCJcbl0pO1xuZnVuY3Rpb24gaXNSVEwobG9jYWxlKSB7XG4gIGlmIChJbnRsLkxvY2FsZSkge1xuICAgIGNvbnN0IHNjcmlwdCA9IG5ldyBJbnRsLkxvY2FsZShsb2NhbGUpLm1heGltaXplKCkuc2NyaXB0ID8/IFwiXCI7XG4gICAgcmV0dXJuIFJUTF9TQ1JJUFRTLmhhcyhzY3JpcHQpO1xuICB9XG4gIGNvbnN0IGxhbmcgPSBsb2NhbGUuc3BsaXQoXCItXCIpWzBdO1xuICByZXR1cm4gUlRMX0xBTkdTLmhhcyhsYW5nKTtcbn1cbmZ1bmN0aW9uIGdldFJlYWRpbmdEaXJlY3Rpb24obG9jYWxlKSB7XG4gIHJldHVybiBpc1JUTChsb2NhbGUpID8gXCJydGxcIiA6IFwibHRyXCI7XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0TG9jYWxlKCkge1xuICBsZXQgbG9jYWxlID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiAmJiAvLyBAdHMtaWdub3JlXG4gIChuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgbmF2aWdhdG9yLnVzZXJMYW5ndWFnZSkgfHwgXCJlbi1VU1wiO1xuICByZXR1cm4ge1xuICAgIGxvY2FsZSxcbiAgICBkaXJlY3Rpb246IGdldFJlYWRpbmdEaXJlY3Rpb24obG9jYWxlKVxuICB9O1xufVxudmFyIGN1cnJlbnRMb2NhbGUgPSBnZXREZWZhdWx0TG9jYWxlKCk7XG52YXIgbGlzdGVuZXJzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbmZ1bmN0aW9uIHVwZGF0ZUxvY2FsZSgpIHtcbiAgY3VycmVudExvY2FsZSA9IGdldERlZmF1bHRMb2NhbGUoKTtcbiAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcbiAgICBsaXN0ZW5lcihjdXJyZW50TG9jYWxlKTtcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVmYXVsdExvY2FsZSgpIHtcbiAgY29uc3QgZGVmYXVsdFNTUkxvY2FsZSA9IHtcbiAgICBsb2NhbGU6IFwiZW4tVVNcIixcbiAgICBkaXJlY3Rpb246IFwibHRyXCJcbiAgfTtcbiAgY29uc3QgW2RlZmF1bHRDbGllbnRMb2NhbGUsIHNldERlZmF1bHRDbGllbnRMb2NhbGVdID0gY3JlYXRlU2lnbmFsKGN1cnJlbnRMb2NhbGUpO1xuICBjb25zdCBkZWZhdWx0TG9jYWxlID0gY3JlYXRlTWVtbyhcbiAgICAoKSA9PiBpc1NlcnZlciA/IGRlZmF1bHRTU1JMb2NhbGUgOiBkZWZhdWx0Q2xpZW50TG9jYWxlKClcbiAgKTtcbiAgb25Nb3VudCgoKSA9PiB7XG4gICAgaWYgKGxpc3RlbmVycy5zaXplID09PSAwKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxhbmd1YWdlY2hhbmdlXCIsIHVwZGF0ZUxvY2FsZSk7XG4gICAgfVxuICAgIGxpc3RlbmVycy5hZGQoc2V0RGVmYXVsdENsaWVudExvY2FsZSk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIGxpc3RlbmVycy5kZWxldGUoc2V0RGVmYXVsdENsaWVudExvY2FsZSk7XG4gICAgICBpZiAobGlzdGVuZXJzLnNpemUgPT09IDApIHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJsYW5ndWFnZWNoYW5nZVwiLCB1cGRhdGVMb2NhbGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBsb2NhbGU6ICgpID0+IGRlZmF1bHRMb2NhbGUoKS5sb2NhbGUsXG4gICAgZGlyZWN0aW9uOiAoKSA9PiBkZWZhdWx0TG9jYWxlKCkuZGlyZWN0aW9uXG4gIH07XG59XG52YXIgSTE4bkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VMb2NhbGUoKSB7XG4gIGNvbnN0IGRlZmF1bHRMb2NhbGUgPSBjcmVhdGVEZWZhdWx0TG9jYWxlKCk7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEkxOG5Db250ZXh0KTtcbiAgcmV0dXJuIGNvbnRleHQgfHwgZGVmYXVsdExvY2FsZTtcbn1cbnZhciBjYWNoZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG5mdW5jdGlvbiBjcmVhdGVDb2xsYXRvcihvcHRpb25zKSB7XG4gIGNvbnN0IHsgbG9jYWxlIH0gPSB1c2VMb2NhbGUoKTtcbiAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gbG9jYWxlKCkgKyAob3B0aW9ucyA/IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpLnNvcnQoKGEyLCBiMikgPT4gYTJbMF0gPCBiMlswXSA/IC0xIDogMSkuam9pbigpIDogXCJcIik7XG4gIH0pO1xuICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gY2FjaGVLZXkoKTtcbiAgICBsZXQgY29sbGF0b3I7XG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICBjb2xsYXRvciA9IGNhY2hlLmdldChrZXkpO1xuICAgIH1cbiAgICBpZiAoIWNvbGxhdG9yKSB7XG4gICAgICBjb2xsYXRvciA9IG5ldyBJbnRsLkNvbGxhdG9yKGxvY2FsZSgpLCBvcHRpb25zKTtcbiAgICAgIGNhY2hlLnNldChrZXksIGNvbGxhdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbGxhdG9yO1xuICB9KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvSDZEU0lERUMuanNcbnZhciBTZWxlY3Rpb24gPSBjbGFzcyBfU2VsZWN0aW9uIGV4dGVuZHMgU2V0IHtcbiAgYW5jaG9yS2V5O1xuICBjdXJyZW50S2V5O1xuICBjb25zdHJ1Y3RvcihrZXlzMiwgYW5jaG9yS2V5LCBjdXJyZW50S2V5KSB7XG4gICAgc3VwZXIoa2V5czIpO1xuICAgIGlmIChrZXlzMiBpbnN0YW5jZW9mIF9TZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuYW5jaG9yS2V5ID0gYW5jaG9yS2V5IHx8IGtleXMyLmFuY2hvcktleTtcbiAgICAgIHRoaXMuY3VycmVudEtleSA9IGN1cnJlbnRLZXkgfHwga2V5czIuY3VycmVudEtleTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hbmNob3JLZXkgPSBhbmNob3JLZXk7XG4gICAgICB0aGlzLmN1cnJlbnRLZXkgPSBjdXJyZW50S2V5O1xuICAgIH1cbiAgfVxufTtcbmZ1bmN0aW9uIGNyZWF0ZUNvbnRyb2xsYWJsZVNlbGVjdGlvblNpZ25hbChwcm9wcykge1xuICBjb25zdCBbX3ZhbHVlLCBzZXRWYWx1ZV0gPSBjcmVhdGVDb250cm9sbGFibGVTaWduYWwocHJvcHMpO1xuICBjb25zdCB2YWx1ZSA9ICgpID0+IF92YWx1ZSgpID8/IG5ldyBTZWxlY3Rpb24oKTtcbiAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVdO1xufVxuZnVuY3Rpb24gaXNOb25Db250aWd1b3VzU2VsZWN0aW9uTW9kaWZpZXIoZTIpIHtcbiAgcmV0dXJuIGlzQXBwbGVEZXZpY2UoKSA/IGUyLmFsdEtleSA6IGUyLmN0cmxLZXk7XG59XG5mdW5jdGlvbiBpc0N0cmxLZXlQcmVzc2VkKGUyKSB7XG4gIGlmIChpc01hYygpKSB7XG4gICAgcmV0dXJuIGUyLm1ldGFLZXk7XG4gIH1cbiAgcmV0dXJuIGUyLmN0cmxLZXk7XG59XG5mdW5jdGlvbiBjb252ZXJ0U2VsZWN0aW9uKHNlbGVjdGlvbikge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzZWxlY3Rpb24pO1xufVxuZnVuY3Rpb24gaXNTYW1lU2VsZWN0aW9uKHNldEEsIHNldEIpIHtcbiAgaWYgKHNldEEuc2l6ZSAhPT0gc2V0Qi5zaXplKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZvciAoY29uc3QgaXRlbSBvZiBzZXRBKSB7XG4gICAgaWYgKCFzZXRCLmhhcyhpdGVtKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZU11bHRpcGxlU2VsZWN0aW9uU3RhdGUocHJvcHMpIHtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyhcbiAgICB7XG4gICAgICBzZWxlY3Rpb25Nb2RlOiBcIm5vbmVcIixcbiAgICAgIHNlbGVjdGlvbkJlaGF2aW9yOiBcInRvZ2dsZVwiXG4gICAgfSxcbiAgICBwcm9wc1xuICApO1xuICBjb25zdCBbaXNGb2N1c2VkLCBzZXRGb2N1c2VkXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IFtmb2N1c2VkS2V5LCBzZXRGb2N1c2VkS2V5XSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBzZWxlY3RlZEtleXNQcm9wID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGVkS2V5cyk7XG4gICAgaWYgKHNlbGVjdGlvbiAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gY29udmVydFNlbGVjdGlvbihzZWxlY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9KTtcbiAgY29uc3QgZGVmYXVsdFNlbGVjdGVkS2V5cyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRTZWxlY3Rpb24gPSBhY2Nlc3MobWVyZ2VkUHJvcHMuZGVmYXVsdFNlbGVjdGVkS2V5cyk7XG4gICAgaWYgKGRlZmF1bHRTZWxlY3Rpb24gIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvbnZlcnRTZWxlY3Rpb24oZGVmYXVsdFNlbGVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiBuZXcgU2VsZWN0aW9uKCk7XG4gIH0pO1xuICBjb25zdCBbc2VsZWN0ZWRLZXlzLCBfc2V0U2VsZWN0ZWRLZXlzXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZVNlbGVjdGlvblNpZ25hbCh7XG4gICAgdmFsdWU6IHNlbGVjdGVkS2V5c1Byb3AsXG4gICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0U2VsZWN0ZWRLZXlzLFxuICAgIG9uQ2hhbmdlOiAodmFsdWUpID0+IG1lcmdlZFByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlPy4odmFsdWUpXG4gIH0pO1xuICBjb25zdCBbc2VsZWN0aW9uQmVoYXZpb3IsIHNldFNlbGVjdGlvbkJlaGF2aW9yXSA9IGNyZWF0ZVNpZ25hbChhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0aW9uQmVoYXZpb3IpKTtcbiAgY29uc3Qgc2VsZWN0aW9uTW9kZSA9ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3Rpb25Nb2RlKTtcbiAgY29uc3QgZGlzYWxsb3dFbXB0eVNlbGVjdGlvbiA9ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5kaXNhbGxvd0VtcHR5U2VsZWN0aW9uKSA/PyBmYWxzZTtcbiAgY29uc3Qgc2V0U2VsZWN0ZWRLZXlzID0gKGtleXMyKSA9PiB7XG4gICAgaWYgKGFjY2VzcyhtZXJnZWRQcm9wcy5hbGxvd0R1cGxpY2F0ZVNlbGVjdGlvbkV2ZW50cykgfHwgIWlzU2FtZVNlbGVjdGlvbihrZXlzMiwgc2VsZWN0ZWRLZXlzKCkpKSB7XG4gICAgICBfc2V0U2VsZWN0ZWRLZXlzKGtleXMyKTtcbiAgICB9XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gc2VsZWN0ZWRLZXlzKCk7XG4gICAgaWYgKGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3Rpb25CZWhhdmlvcikgPT09IFwicmVwbGFjZVwiICYmIHNlbGVjdGlvbkJlaGF2aW9yKCkgPT09IFwidG9nZ2xlXCIgJiYgdHlwZW9mIHNlbGVjdGlvbiA9PT0gXCJvYmplY3RcIiAmJiBzZWxlY3Rpb24uc2l6ZSA9PT0gMCkge1xuICAgICAgc2V0U2VsZWN0aW9uQmVoYXZpb3IoXCJyZXBsYWNlXCIpO1xuICAgIH1cbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0aW9uQmVoYXZpb3IoYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbkJlaGF2aW9yKSA/PyBcInRvZ2dsZVwiKTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgc2VsZWN0aW9uTW9kZSxcbiAgICBkaXNhbGxvd0VtcHR5U2VsZWN0aW9uLFxuICAgIHNlbGVjdGlvbkJlaGF2aW9yLFxuICAgIHNldFNlbGVjdGlvbkJlaGF2aW9yLFxuICAgIGlzRm9jdXNlZCxcbiAgICBzZXRGb2N1c2VkLFxuICAgIGZvY3VzZWRLZXksXG4gICAgc2V0Rm9jdXNlZEtleSxcbiAgICBzZWxlY3RlZEtleXMsXG4gICAgc2V0U2VsZWN0ZWRLZXlzXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVUeXBlU2VsZWN0KHByb3BzKSB7XG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSBjcmVhdGVTaWduYWwoXCJcIik7XG4gIGNvbnN0IFt0aW1lb3V0SWQsIHNldFRpbWVvdXRJZF0gPSBjcmVhdGVTaWduYWwoLTEpO1xuICBjb25zdCBvbktleURvd24gPSAoZTIpID0+IHtcbiAgICBpZiAoYWNjZXNzKHByb3BzLmlzRGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRlbGVnYXRlID0gYWNjZXNzKHByb3BzLmtleWJvYXJkRGVsZWdhdGUpO1xuICAgIGNvbnN0IG1hbmFnZXIgPSBhY2Nlc3MocHJvcHMuc2VsZWN0aW9uTWFuYWdlcik7XG4gICAgaWYgKCFkZWxlZ2F0ZS5nZXRLZXlGb3JTZWFyY2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hhcmFjdGVyID0gZ2V0U3RyaW5nRm9yS2V5KGUyLmtleSk7XG4gICAgaWYgKCFjaGFyYWN0ZXIgfHwgZTIuY3RybEtleSB8fCBlMi5tZXRhS2V5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFyYWN0ZXIgPT09IFwiIFwiICYmIHNlYXJjaCgpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZTIuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIGxldCBuZXdTZWFyY2ggPSBzZXRTZWFyY2goKHByZXYpID0+IHByZXYgKyBjaGFyYWN0ZXIpO1xuICAgIGxldCBrZXkgPSBkZWxlZ2F0ZS5nZXRLZXlGb3JTZWFyY2gobmV3U2VhcmNoLCBtYW5hZ2VyLmZvY3VzZWRLZXkoKSkgPz8gZGVsZWdhdGUuZ2V0S2V5Rm9yU2VhcmNoKG5ld1NlYXJjaCk7XG4gICAgaWYgKGtleSA9PSBudWxsICYmIGlzQWxsU2FtZUxldHRlcihuZXdTZWFyY2gpKSB7XG4gICAgICBuZXdTZWFyY2ggPSBuZXdTZWFyY2hbMF07XG4gICAgICBrZXkgPSBkZWxlZ2F0ZS5nZXRLZXlGb3JTZWFyY2gobmV3U2VhcmNoLCBtYW5hZ2VyLmZvY3VzZWRLZXkoKSkgPz8gZGVsZWdhdGUuZ2V0S2V5Rm9yU2VhcmNoKG5ld1NlYXJjaCk7XG4gICAgfVxuICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgbWFuYWdlci5zZXRGb2N1c2VkS2V5KGtleSk7XG4gICAgICBwcm9wcy5vblR5cGVTZWxlY3Q/LihrZXkpO1xuICAgIH1cbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKCkpO1xuICAgIHNldFRpbWVvdXRJZCh3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBzZXRTZWFyY2goXCJcIiksIDUwMCkpO1xuICB9O1xuICByZXR1cm4ge1xuICAgIHR5cGVTZWxlY3RIYW5kbGVyczoge1xuICAgICAgb25LZXlEb3duXG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0U3RyaW5nRm9yS2V5KGtleSkge1xuICBpZiAoa2V5Lmxlbmd0aCA9PT0gMSB8fCAhL15bQS1aXS9pLnRlc3Qoa2V5KSkge1xuICAgIHJldHVybiBrZXk7XG4gIH1cbiAgcmV0dXJuIFwiXCI7XG59XG5mdW5jdGlvbiBpc0FsbFNhbWVMZXR0ZXIoc2VhcmNoKSB7XG4gIHJldHVybiBzZWFyY2guc3BsaXQoXCJcIikuZXZlcnkoKGxldHRlcikgPT4gbGV0dGVyID09PSBzZWFyY2hbMF0pO1xufVxuZnVuY3Rpb24gY3JlYXRlU2VsZWN0YWJsZUNvbGxlY3Rpb24ocHJvcHMsIHJlZiwgc2Nyb2xsUmVmKSB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBzZWxlY3RPbkZvY3VzOiAoKSA9PiBhY2Nlc3MocHJvcHMuc2VsZWN0aW9uTWFuYWdlcikuc2VsZWN0aW9uQmVoYXZpb3IoKSA9PT0gXCJyZXBsYWNlXCJcbiAgfTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKGRlZmF1bHRQcm9wcywgcHJvcHMpO1xuICBjb25zdCBmaW5hbFNjcm9sbFJlZiA9ICgpID0+IHJlZigpO1xuICBjb25zdCB7IGRpcmVjdGlvbiB9ID0gdXNlTG9jYWxlKCk7XG4gIGxldCBzY3JvbGxQb3MgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuICBjcmVhdGVFdmVudExpc3RlbmVyKFxuICAgICgpID0+ICFhY2Nlc3MobWVyZ2VkUHJvcHMuaXNWaXJ0dWFsaXplZCkgPyBmaW5hbFNjcm9sbFJlZigpIDogdm9pZCAwLFxuICAgIFwic2Nyb2xsXCIsXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3Qgc2Nyb2xsRWwgPSBmaW5hbFNjcm9sbFJlZigpO1xuICAgICAgaWYgKCFzY3JvbGxFbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzY3JvbGxQb3MgPSB7XG4gICAgICAgIHRvcDogc2Nyb2xsRWwuc2Nyb2xsVG9wLFxuICAgICAgICBsZWZ0OiBzY3JvbGxFbC5zY3JvbGxMZWZ0XG4gICAgICB9O1xuICAgIH1cbiAgKTtcbiAgY29uc3QgeyB0eXBlU2VsZWN0SGFuZGxlcnMgfSA9IGNyZWF0ZVR5cGVTZWxlY3Qoe1xuICAgIGlzRGlzYWJsZWQ6ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5kaXNhbGxvd1R5cGVBaGVhZCksXG4gICAga2V5Ym9hcmREZWxlZ2F0ZTogKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLmtleWJvYXJkRGVsZWdhdGUpLFxuICAgIHNlbGVjdGlvbk1hbmFnZXI6ICgpID0+IGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKVxuICB9KTtcbiAgY29uc3Qgb3JpZW50YXRpb24gPSAoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMub3JpZW50YXRpb24pID8/IFwidmVydGljYWxcIjtcbiAgY29uc3Qgb25LZXlEb3duID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIHR5cGVTZWxlY3RIYW5kbGVycy5vbktleURvd24pO1xuICAgIGlmIChlMi5hbHRLZXkgJiYgZTIua2V5ID09PSBcIlRhYlwiKSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBjb25zdCByZWZFbCA9IHJlZigpO1xuICAgIGlmICghcmVmRWw/LmNvbnRhaW5zKGUyLnRhcmdldCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWFuYWdlciA9IGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKTtcbiAgICBjb25zdCBzZWxlY3RPbkZvY3VzID0gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdE9uRm9jdXMpO1xuICAgIGNvbnN0IG5hdmlnYXRlVG9LZXkgPSAoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgICAgbWFuYWdlci5zZXRGb2N1c2VkS2V5KGtleSk7XG4gICAgICAgIGlmIChlMi5zaGlmdEtleSAmJiBtYW5hZ2VyLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgICAgbWFuYWdlci5leHRlbmRTZWxlY3Rpb24oa2V5KTtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RPbkZvY3VzICYmICFpc05vbkNvbnRpZ3VvdXNTZWxlY3Rpb25Nb2RpZmllcihlMikpIHtcbiAgICAgICAgICBtYW5hZ2VyLnJlcGxhY2VTZWxlY3Rpb24oa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgZGVsZWdhdGUgPSBhY2Nlc3MobWVyZ2VkUHJvcHMua2V5Ym9hcmREZWxlZ2F0ZSk7XG4gICAgY29uc3Qgc2hvdWxkRm9jdXNXcmFwID0gYWNjZXNzKG1lcmdlZFByb3BzLnNob3VsZEZvY3VzV3JhcCk7XG4gICAgY29uc3QgZm9jdXNlZEtleSA9IG1hbmFnZXIuZm9jdXNlZEtleSgpO1xuICAgIHN3aXRjaCAoZTIua2V5KSB7XG4gICAgICBjYXNlIChvcmllbnRhdGlvbigpID09PSBcInZlcnRpY2FsXCIgPyBcIkFycm93RG93blwiIDogXCJBcnJvd1JpZ2h0XCIpOiB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5nZXRLZXlCZWxvdykge1xuICAgICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgbGV0IG5leHRLZXk7XG4gICAgICAgICAgaWYgKGZvY3VzZWRLZXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgbmV4dEtleSA9IGRlbGVnYXRlLmdldEtleUJlbG93KGZvY3VzZWRLZXkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0Rmlyc3RLZXk/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAobmV4dEtleSA9PSBudWxsICYmIHNob3VsZEZvY3VzV3JhcCkge1xuICAgICAgICAgICAgbmV4dEtleSA9IGRlbGVnYXRlLmdldEZpcnN0S2V5Py4oZm9jdXNlZEtleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5hdmlnYXRlVG9LZXkobmV4dEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIChvcmllbnRhdGlvbigpID09PSBcInZlcnRpY2FsXCIgPyBcIkFycm93VXBcIiA6IFwiQXJyb3dMZWZ0XCIpOiB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5nZXRLZXlBYm92ZSkge1xuICAgICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgbGV0IG5leHRLZXk7XG4gICAgICAgICAgaWYgKGZvY3VzZWRLZXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgbmV4dEtleSA9IGRlbGVnYXRlLmdldEtleUFib3ZlKGZvY3VzZWRLZXkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0TGFzdEtleT8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXh0S2V5ID09IG51bGwgJiYgc2hvdWxkRm9jdXNXcmFwKSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0TGFzdEtleT8uKGZvY3VzZWRLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuYXZpZ2F0ZVRvS2V5KG5leHRLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAob3JpZW50YXRpb24oKSA9PT0gXCJ2ZXJ0aWNhbFwiID8gXCJBcnJvd0xlZnRcIiA6IFwiQXJyb3dVcFwiKToge1xuICAgICAgICBpZiAoZGVsZWdhdGUuZ2V0S2V5TGVmdE9mKSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBpc1JUTDMgPSBkaXJlY3Rpb24oKSA9PT0gXCJydGxcIjtcbiAgICAgICAgICBsZXQgbmV4dEtleTtcbiAgICAgICAgICBpZiAoZm9jdXNlZEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0S2V5TGVmdE9mKGZvY3VzZWRLZXkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gaXNSVEwzID8gZGVsZWdhdGUuZ2V0Rmlyc3RLZXk/LigpIDogZGVsZWdhdGUuZ2V0TGFzdEtleT8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5hdmlnYXRlVG9LZXkobmV4dEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIChvcmllbnRhdGlvbigpID09PSBcInZlcnRpY2FsXCIgPyBcIkFycm93UmlnaHRcIiA6IFwiQXJyb3dEb3duXCIpOiB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5nZXRLZXlSaWdodE9mKSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBpc1JUTDMgPSBkaXJlY3Rpb24oKSA9PT0gXCJydGxcIjtcbiAgICAgICAgICBsZXQgbmV4dEtleTtcbiAgICAgICAgICBpZiAoZm9jdXNlZEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0S2V5UmlnaHRPZihmb2N1c2VkS2V5KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV4dEtleSA9IGlzUlRMMyA/IGRlbGVnYXRlLmdldExhc3RLZXk/LigpIDogZGVsZWdhdGUuZ2V0Rmlyc3RLZXk/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuYXZpZ2F0ZVRvS2V5KG5leHRLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcIkhvbWVcIjpcbiAgICAgICAgaWYgKGRlbGVnYXRlLmdldEZpcnN0S2V5KSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBmaXJzdEtleSA9IGRlbGVnYXRlLmdldEZpcnN0S2V5KFxuICAgICAgICAgICAgZm9jdXNlZEtleSxcbiAgICAgICAgICAgIGlzQ3RybEtleVByZXNzZWQoZTIpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZmlyc3RLZXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFuYWdlci5zZXRGb2N1c2VkS2V5KGZpcnN0S2V5KTtcbiAgICAgICAgICAgIGlmIChpc0N0cmxLZXlQcmVzc2VkKGUyKSAmJiBlMi5zaGlmdEtleSAmJiBtYW5hZ2VyLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICAgICAgICAgIG1hbmFnZXIuZXh0ZW5kU2VsZWN0aW9uKGZpcnN0S2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0T25Gb2N1cykge1xuICAgICAgICAgICAgICBtYW5hZ2VyLnJlcGxhY2VTZWxlY3Rpb24oZmlyc3RLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJFbmRcIjpcbiAgICAgICAgaWYgKGRlbGVnYXRlLmdldExhc3RLZXkpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNvbnN0IGxhc3RLZXkgPSBkZWxlZ2F0ZS5nZXRMYXN0S2V5KGZvY3VzZWRLZXksIGlzQ3RybEtleVByZXNzZWQoZTIpKTtcbiAgICAgICAgICBpZiAobGFzdEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYW5hZ2VyLnNldEZvY3VzZWRLZXkobGFzdEtleSk7XG4gICAgICAgICAgICBpZiAoaXNDdHJsS2V5UHJlc3NlZChlMikgJiYgZTIuc2hpZnRLZXkgJiYgbWFuYWdlci5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibXVsdGlwbGVcIikge1xuICAgICAgICAgICAgICBtYW5hZ2VyLmV4dGVuZFNlbGVjdGlvbihsYXN0S2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0T25Gb2N1cykge1xuICAgICAgICAgICAgICBtYW5hZ2VyLnJlcGxhY2VTZWxlY3Rpb24obGFzdEtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlBhZ2VEb3duXCI6XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5nZXRLZXlQYWdlQmVsb3cgJiYgZm9jdXNlZEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0S2V5UGFnZUJlbG93KGZvY3VzZWRLZXkpO1xuICAgICAgICAgIG5hdmlnYXRlVG9LZXkobmV4dEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiUGFnZVVwXCI6XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5nZXRLZXlQYWdlQWJvdmUgJiYgZm9jdXNlZEtleSAhPSBudWxsKSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjb25zdCBuZXh0S2V5ID0gZGVsZWdhdGUuZ2V0S2V5UGFnZUFib3ZlKGZvY3VzZWRLZXkpO1xuICAgICAgICAgIG5hdmlnYXRlVG9LZXkobmV4dEtleSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYVwiOlxuICAgICAgICBpZiAoaXNDdHJsS2V5UHJlc3NlZChlMikgJiYgbWFuYWdlci5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibXVsdGlwbGVcIiAmJiBhY2Nlc3MobWVyZ2VkUHJvcHMuZGlzYWxsb3dTZWxlY3RBbGwpICE9PSB0cnVlKSB7XG4gICAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBtYW5hZ2VyLnNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIkVzY2FwZVwiOlxuICAgICAgICBpZiAoIWUyLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmICghYWNjZXNzKG1lcmdlZFByb3BzLmRpc2FsbG93RW1wdHlTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICBtYW5hZ2VyLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIlRhYlwiOiB7XG4gICAgICAgIGlmICghYWNjZXNzKG1lcmdlZFByb3BzLmFsbG93c1RhYk5hdmlnYXRpb24pKSB7XG4gICAgICAgICAgaWYgKGUyLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICByZWZFbC5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB3YWxrZXIgPSBnZXRGb2N1c2FibGVUcmVlV2Fsa2VyKHJlZkVsLCB7IHRhYmJhYmxlOiB0cnVlIH0pO1xuICAgICAgICAgICAgbGV0IG5leHQ7XG4gICAgICAgICAgICBsZXQgbGFzdDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgbGFzdCA9IHdhbGtlci5sYXN0Q2hpbGQoKTtcbiAgICAgICAgICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gbGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAobGFzdCk7XG4gICAgICAgICAgICBpZiAobmV4dCAmJiAhbmV4dC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcobmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkZvY3VzSW4gPSAoZTIpID0+IHtcbiAgICBjb25zdCBtYW5hZ2VyID0gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbk1hbmFnZXIpO1xuICAgIGNvbnN0IGRlbGVnYXRlID0gYWNjZXNzKG1lcmdlZFByb3BzLmtleWJvYXJkRGVsZWdhdGUpO1xuICAgIGNvbnN0IHNlbGVjdE9uRm9jdXMgPSBhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0T25Gb2N1cyk7XG4gICAgaWYgKG1hbmFnZXIuaXNGb2N1c2VkKCkpIHtcbiAgICAgIGlmICghZTIuY3VycmVudFRhcmdldC5jb250YWlucyhlMi50YXJnZXQpKSB7XG4gICAgICAgIG1hbmFnZXIuc2V0Rm9jdXNlZChmYWxzZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghZTIuY3VycmVudFRhcmdldC5jb250YWlucyhlMi50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1hbmFnZXIuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICBpZiAobWFuYWdlci5mb2N1c2VkS2V5KCkgPT0gbnVsbCkge1xuICAgICAgY29uc3QgbmF2aWdhdGVUb0ZpcnN0S2V5ID0gKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWFuYWdlci5zZXRGb2N1c2VkS2V5KGtleSk7XG4gICAgICAgIGlmIChzZWxlY3RPbkZvY3VzKSB7XG4gICAgICAgICAgbWFuYWdlci5yZXBsYWNlU2VsZWN0aW9uKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0gZTIucmVsYXRlZFRhcmdldDtcbiAgICAgIGlmIChyZWxhdGVkVGFyZ2V0ICYmIGUyLmN1cnJlbnRUYXJnZXQuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocmVsYXRlZFRhcmdldCkgJiBOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykge1xuICAgICAgICBuYXZpZ2F0ZVRvRmlyc3RLZXkoXG4gICAgICAgICAgbWFuYWdlci5sYXN0U2VsZWN0ZWRLZXkoKSA/PyBkZWxlZ2F0ZS5nZXRMYXN0S2V5Py4oKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmF2aWdhdGVUb0ZpcnN0S2V5KFxuICAgICAgICAgIG1hbmFnZXIuZmlyc3RTZWxlY3RlZEtleSgpID8/IGRlbGVnYXRlLmdldEZpcnN0S2V5Py4oKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFjY2VzcyhtZXJnZWRQcm9wcy5pc1ZpcnR1YWxpemVkKSkge1xuICAgICAgY29uc3Qgc2Nyb2xsRWwgPSBmaW5hbFNjcm9sbFJlZigpO1xuICAgICAgaWYgKHNjcm9sbEVsKSB7XG4gICAgICAgIHNjcm9sbEVsLnNjcm9sbFRvcCA9IHNjcm9sbFBvcy50b3A7XG4gICAgICAgIHNjcm9sbEVsLnNjcm9sbExlZnQgPSBzY3JvbGxQb3MubGVmdDtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHNjcm9sbEVsLnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgYFtkYXRhLWtleT1cIiR7bWFuYWdlci5mb2N1c2VkS2V5KCl9XCJdYFxuICAgICAgICApO1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhlbGVtZW50KTtcbiAgICAgICAgICBzY3JvbGxJbnRvVmlldyhzY3JvbGxFbCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uRm9jdXNPdXQgPSAoZTIpID0+IHtcbiAgICBjb25zdCBtYW5hZ2VyID0gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbk1hbmFnZXIpO1xuICAgIGlmICghZTIuY3VycmVudFRhcmdldC5jb250YWlucyhlMi5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgbWFuYWdlci5zZXRGb2N1c2VkKGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uTW91c2VEb3duID0gKGUyKSA9PiB7XG4gICAgaWYgKGZpbmFsU2Nyb2xsUmVmKCkgPT09IGUyLnRhcmdldCkge1xuICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRyeUF1dG9Gb2N1cyA9ICgpID0+IHtcbiAgICBjb25zdCBhdXRvRm9jdXMgPSBhY2Nlc3MobWVyZ2VkUHJvcHMuYXV0b0ZvY3VzKTtcbiAgICBpZiAoIWF1dG9Gb2N1cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtYW5hZ2VyID0gYWNjZXNzKG1lcmdlZFByb3BzLnNlbGVjdGlvbk1hbmFnZXIpO1xuICAgIGNvbnN0IGRlbGVnYXRlID0gYWNjZXNzKG1lcmdlZFByb3BzLmtleWJvYXJkRGVsZWdhdGUpO1xuICAgIGxldCBmb2N1c2VkS2V5O1xuICAgIGlmIChhdXRvRm9jdXMgPT09IFwiZmlyc3RcIikge1xuICAgICAgZm9jdXNlZEtleSA9IGRlbGVnYXRlLmdldEZpcnN0S2V5Py4oKTtcbiAgICB9XG4gICAgaWYgKGF1dG9Gb2N1cyA9PT0gXCJsYXN0XCIpIHtcbiAgICAgIGZvY3VzZWRLZXkgPSBkZWxlZ2F0ZS5nZXRMYXN0S2V5Py4oKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gbWFuYWdlci5zZWxlY3RlZEtleXMoKTtcbiAgICBpZiAoc2VsZWN0ZWRLZXlzLnNpemUpIHtcbiAgICAgIGZvY3VzZWRLZXkgPSBzZWxlY3RlZEtleXMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICAgIH1cbiAgICBtYW5hZ2VyLnNldEZvY3VzZWQodHJ1ZSk7XG4gICAgbWFuYWdlci5zZXRGb2N1c2VkS2V5KGZvY3VzZWRLZXkpO1xuICAgIGNvbnN0IHJlZkVsID0gcmVmKCk7XG4gICAgaWYgKHJlZkVsICYmIGZvY3VzZWRLZXkgPT0gbnVsbCAmJiAhYWNjZXNzKG1lcmdlZFByb3BzLnNob3VsZFVzZVZpcnR1YWxGb2N1cykpIHtcbiAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhyZWZFbCk7XG4gICAgfVxuICB9O1xuICBvbk1vdW50KCgpID0+IHtcbiAgICBpZiAobWVyZ2VkUHJvcHMuZGVmZXJBdXRvRm9jdXMpIHtcbiAgICAgIHNldFRpbWVvdXQodHJ5QXV0b0ZvY3VzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5QXV0b0ZvY3VzKCk7XG4gICAgfVxuICB9KTtcbiAgY3JlYXRlRWZmZWN0KFxuICAgIG9uKFxuICAgICAgW1xuICAgICAgICBmaW5hbFNjcm9sbFJlZixcbiAgICAgICAgKCkgPT4gYWNjZXNzKG1lcmdlZFByb3BzLmlzVmlydHVhbGl6ZWQpLFxuICAgICAgICAoKSA9PiBhY2Nlc3MobWVyZ2VkUHJvcHMuc2VsZWN0aW9uTWFuYWdlcikuZm9jdXNlZEtleSgpXG4gICAgICBdLFxuICAgICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzY3JvbGxFbCwgaXNWaXJ0dWFsaXplZCwgZm9jdXNlZEtleV0gPSBuZXdWYWx1ZTtcbiAgICAgICAgaWYgKGlzVmlydHVhbGl6ZWQpIHtcbiAgICAgICAgICBmb2N1c2VkS2V5ICYmIG1lcmdlZFByb3BzLnNjcm9sbFRvS2V5Py4oZm9jdXNlZEtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGZvY3VzZWRLZXkgJiYgc2Nyb2xsRWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBzY3JvbGxFbC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICBgW2RhdGEta2V5PVwiJHtmb2N1c2VkS2V5fVwiXWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICBzY3JvbGxJbnRvVmlldyhzY3JvbGxFbCwgZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICApO1xuICBjb25zdCB0YWJJbmRleCA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGlmIChhY2Nlc3MobWVyZ2VkUHJvcHMuc2hvdWxkVXNlVmlydHVhbEZvY3VzKSkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgcmV0dXJuIGFjY2VzcyhtZXJnZWRQcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKS5mb2N1c2VkS2V5KCkgPT0gbnVsbCA/IDAgOiAtMTtcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgdGFiSW5kZXgsXG4gICAgb25LZXlEb3duLFxuICAgIG9uTW91c2VEb3duLFxuICAgIG9uRm9jdXNJbixcbiAgICBvbkZvY3VzT3V0XG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVTZWxlY3RhYmxlSXRlbShwcm9wcywgcmVmKSB7XG4gIGNvbnN0IG1hbmFnZXIgPSAoKSA9PiBhY2Nlc3MocHJvcHMuc2VsZWN0aW9uTWFuYWdlcik7XG4gIGNvbnN0IGtleSA9ICgpID0+IGFjY2Vzcyhwcm9wcy5rZXkpO1xuICBjb25zdCBzaG91bGRVc2VWaXJ0dWFsRm9jdXMgPSAoKSA9PiBhY2Nlc3MocHJvcHMuc2hvdWxkVXNlVmlydHVhbEZvY3VzKTtcbiAgY29uc3Qgb25TZWxlY3QgPSAoZTIpID0+IHtcbiAgICBpZiAobWFuYWdlcigpLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG1hbmFnZXIoKS5zZWxlY3Rpb25Nb2RlKCkgPT09IFwic2luZ2xlXCIpIHtcbiAgICAgIGlmIChtYW5hZ2VyKCkuaXNTZWxlY3RlZChrZXkoKSkgJiYgIW1hbmFnZXIoKS5kaXNhbGxvd0VtcHR5U2VsZWN0aW9uKCkpIHtcbiAgICAgICAgbWFuYWdlcigpLnRvZ2dsZVNlbGVjdGlvbihrZXkoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtYW5hZ2VyKCkucmVwbGFjZVNlbGVjdGlvbihrZXkoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlMj8uc2hpZnRLZXkpIHtcbiAgICAgIG1hbmFnZXIoKS5leHRlbmRTZWxlY3Rpb24oa2V5KCkpO1xuICAgIH0gZWxzZSBpZiAobWFuYWdlcigpLnNlbGVjdGlvbkJlaGF2aW9yKCkgPT09IFwidG9nZ2xlXCIgfHwgaXNDdHJsS2V5UHJlc3NlZChlMikgfHwgXCJwb2ludGVyVHlwZVwiIGluIGUyICYmIGUyLnBvaW50ZXJUeXBlID09PSBcInRvdWNoXCIpIHtcbiAgICAgIG1hbmFnZXIoKS50b2dnbGVTZWxlY3Rpb24oa2V5KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYW5hZ2VyKCkucmVwbGFjZVNlbGVjdGlvbihrZXkoKSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBpc1NlbGVjdGVkID0gKCkgPT4gbWFuYWdlcigpLmlzU2VsZWN0ZWQoa2V5KCkpO1xuICBjb25zdCBpc0Rpc2FibGVkID0gKCkgPT4gYWNjZXNzKHByb3BzLmRpc2FibGVkKSB8fCBtYW5hZ2VyKCkuaXNEaXNhYmxlZChrZXkoKSk7XG4gIGNvbnN0IGFsbG93c1NlbGVjdGlvbiA9ICgpID0+ICFpc0Rpc2FibGVkKCkgJiYgbWFuYWdlcigpLmNhblNlbGVjdEl0ZW0oa2V5KCkpO1xuICBsZXQgcG9pbnRlckRvd25UeXBlID0gbnVsbDtcbiAgY29uc3Qgb25Qb2ludGVyRG93biA9IChlMikgPT4ge1xuICAgIGlmICghYWxsb3dzU2VsZWN0aW9uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcG9pbnRlckRvd25UeXBlID0gZTIucG9pbnRlclR5cGU7XG4gICAgaWYgKGUyLnBvaW50ZXJUeXBlID09PSBcIm1vdXNlXCIgJiYgZTIuYnV0dG9uID09PSAwICYmICFhY2Nlc3MocHJvcHMuc2hvdWxkU2VsZWN0T25QcmVzc1VwKSkge1xuICAgICAgb25TZWxlY3QoZTIpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyVXAgPSAoZTIpID0+IHtcbiAgICBpZiAoIWFsbG93c1NlbGVjdGlvbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlMi5wb2ludGVyVHlwZSA9PT0gXCJtb3VzZVwiICYmIGUyLmJ1dHRvbiA9PT0gMCAmJiBhY2Nlc3MocHJvcHMuc2hvdWxkU2VsZWN0T25QcmVzc1VwKSAmJiBhY2Nlc3MocHJvcHMuYWxsb3dzRGlmZmVyZW50UHJlc3NPcmlnaW4pKSB7XG4gICAgICBvblNlbGVjdChlMik7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkNsaWNrID0gKGUyKSA9PiB7XG4gICAgaWYgKCFhbGxvd3NTZWxlY3Rpb24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWNjZXNzKHByb3BzLnNob3VsZFNlbGVjdE9uUHJlc3NVcCkgJiYgIWFjY2Vzcyhwcm9wcy5hbGxvd3NEaWZmZXJlbnRQcmVzc09yaWdpbikgfHwgcG9pbnRlckRvd25UeXBlICE9PSBcIm1vdXNlXCIpIHtcbiAgICAgIG9uU2VsZWN0KGUyKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uS2V5RG93biA9IChlMikgPT4ge1xuICAgIGlmICghYWxsb3dzU2VsZWN0aW9uKCkgfHwgIVtcIkVudGVyXCIsIFwiIFwiXS5pbmNsdWRlcyhlMi5rZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc05vbkNvbnRpZ3VvdXNTZWxlY3Rpb25Nb2RpZmllcihlMikpIHtcbiAgICAgIG1hbmFnZXIoKS50b2dnbGVTZWxlY3Rpb24oa2V5KCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvblNlbGVjdChlMik7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbk1vdXNlRG93biA9IChlMikgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKCkpIHtcbiAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkZvY3VzID0gKGUyKSA9PiB7XG4gICAgY29uc3QgcmVmRWwgPSByZWYoKTtcbiAgICBpZiAoc2hvdWxkVXNlVmlydHVhbEZvY3VzKCkgfHwgaXNEaXNhYmxlZCgpIHx8ICFyZWZFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZTIudGFyZ2V0ID09PSByZWZFbCkge1xuICAgICAgbWFuYWdlcigpLnNldEZvY3VzZWRLZXkoa2V5KCkpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdGFiSW5kZXggPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBpZiAoc2hvdWxkVXNlVmlydHVhbEZvY3VzKCkgfHwgaXNEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4ga2V5KCkgPT09IG1hbmFnZXIoKS5mb2N1c2VkS2V5KCkgPyAwIDogLTE7XG4gIH0pO1xuICBjb25zdCBkYXRhS2V5ID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFjY2Vzcyhwcm9wcy52aXJ0dWFsaXplZCkgPyB2b2lkIDAgOiBrZXkoKTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdChcbiAgICBvbihcbiAgICAgIFtcbiAgICAgICAgcmVmLFxuICAgICAgICBrZXksXG4gICAgICAgIHNob3VsZFVzZVZpcnR1YWxGb2N1cyxcbiAgICAgICAgKCkgPT4gbWFuYWdlcigpLmZvY3VzZWRLZXkoKSxcbiAgICAgICAgKCkgPT4gbWFuYWdlcigpLmlzRm9jdXNlZCgpXG4gICAgICBdLFxuICAgICAgKFtyZWZFbCwga2V5Miwgc2hvdWxkVXNlVmlydHVhbEZvY3VzMiwgZm9jdXNlZEtleSwgaXNGb2N1c2VkXSkgPT4ge1xuICAgICAgICBpZiAocmVmRWwgJiYga2V5MiA9PT0gZm9jdXNlZEtleSAmJiBpc0ZvY3VzZWQgJiYgIXNob3VsZFVzZVZpcnR1YWxGb2N1czIgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gcmVmRWwpIHtcbiAgICAgICAgICBpZiAocHJvcHMuZm9jdXMpIHtcbiAgICAgICAgICAgIHByb3BzLmZvY3VzKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhyZWZFbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICApO1xuICByZXR1cm4ge1xuICAgIGlzU2VsZWN0ZWQsXG4gICAgaXNEaXNhYmxlZCxcbiAgICBhbGxvd3NTZWxlY3Rpb24sXG4gICAgdGFiSW5kZXgsXG4gICAgZGF0YUtleSxcbiAgICBvblBvaW50ZXJEb3duLFxuICAgIG9uUG9pbnRlclVwLFxuICAgIG9uQ2xpY2ssXG4gICAgb25LZXlEb3duLFxuICAgIG9uTW91c2VEb3duLFxuICAgIG9uRm9jdXNcbiAgfTtcbn1cbnZhciBTZWxlY3Rpb25NYW5hZ2VyID0gY2xhc3Mge1xuICBjb2xsZWN0aW9uO1xuICBzdGF0ZTtcbiAgY29uc3RydWN0b3IoY29sbGVjdGlvbiwgc3RhdGUpIHtcbiAgICB0aGlzLmNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uO1xuICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgfVxuICAvKiogVGhlIHR5cGUgb2Ygc2VsZWN0aW9uIHRoYXQgaXMgYWxsb3dlZCBpbiB0aGUgY29sbGVjdGlvbi4gKi9cbiAgc2VsZWN0aW9uTW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3Rpb25Nb2RlKCk7XG4gIH1cbiAgLyoqIFdoZXRoZXIgdGhlIGNvbGxlY3Rpb24gYWxsb3dzIGVtcHR5IHNlbGVjdGlvbi4gKi9cbiAgZGlzYWxsb3dFbXB0eVNlbGVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5kaXNhbGxvd0VtcHR5U2VsZWN0aW9uKCk7XG4gIH1cbiAgLyoqIFRoZSBzZWxlY3Rpb24gYmVoYXZpb3IgZm9yIHRoZSBjb2xsZWN0aW9uLiAqL1xuICBzZWxlY3Rpb25CZWhhdmlvcigpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5zZWxlY3Rpb25CZWhhdmlvcigpO1xuICB9XG4gIC8qKiBTZXRzIHRoZSBzZWxlY3Rpb24gYmVoYXZpb3IgZm9yIHRoZSBjb2xsZWN0aW9uLiAqL1xuICBzZXRTZWxlY3Rpb25CZWhhdmlvcihzZWxlY3Rpb25CZWhhdmlvcikge1xuICAgIHRoaXMuc3RhdGUuc2V0U2VsZWN0aW9uQmVoYXZpb3Ioc2VsZWN0aW9uQmVoYXZpb3IpO1xuICB9XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2xsZWN0aW9uIGlzIGN1cnJlbnRseSBmb2N1c2VkLiAqL1xuICBpc0ZvY3VzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNGb2N1c2VkKCk7XG4gIH1cbiAgLyoqIFNldHMgd2hldGhlciB0aGUgY29sbGVjdGlvbiBpcyBmb2N1c2VkLiAqL1xuICBzZXRGb2N1c2VkKGlzRm9jdXNlZCkge1xuICAgIHRoaXMuc3RhdGUuc2V0Rm9jdXNlZChpc0ZvY3VzZWQpO1xuICB9XG4gIC8qKiBUaGUgY3VycmVudCBmb2N1c2VkIGtleSBpbiB0aGUgY29sbGVjdGlvbi4gKi9cbiAgZm9jdXNlZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5mb2N1c2VkS2V5KCk7XG4gIH1cbiAgLyoqIFNldHMgdGhlIGZvY3VzZWQga2V5LiAqL1xuICBzZXRGb2N1c2VkS2V5KGtleSkge1xuICAgIGlmIChrZXkgPT0gbnVsbCB8fCB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleSkpIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0Rm9jdXNlZEtleShrZXkpO1xuICAgIH1cbiAgfVxuICAvKiogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBrZXlzIGluIHRoZSBjb2xsZWN0aW9uLiAqL1xuICBzZWxlY3RlZEtleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRLZXlzKCk7XG4gIH1cbiAgLyoqIFJldHVybnMgd2hldGhlciBhIGtleSBpcyBzZWxlY3RlZC4gKi9cbiAgaXNTZWxlY3RlZChrZXkpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibm9uZVwiKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJldHJpZXZlZEtleSA9IHRoaXMuZ2V0S2V5KGtleSk7XG4gICAgaWYgKHJldHJpZXZlZEtleSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdGVkS2V5cygpLmhhcyhyZXRyaWV2ZWRLZXkpO1xuICB9XG4gIC8qKiBXaGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHkuICovXG4gIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWRLZXlzKCkuc2l6ZSA9PT0gMDtcbiAgfVxuICAvKiogV2hldGhlciBhbGwgaXRlbXMgaW4gdGhlIGNvbGxlY3Rpb24gYXJlIHNlbGVjdGVkLiAqL1xuICBpc1NlbGVjdEFsbCgpIHtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEtleXMoKTtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxTZWxlY3RhYmxlS2V5cygpLmV2ZXJ5KChrKSA9PiBzZWxlY3RlZEtleXMuaGFzKGspKTtcbiAgfVxuICBmaXJzdFNlbGVjdGVkS2V5KCkge1xuICAgIGxldCBmaXJzdDtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLnN0YXRlLnNlbGVjdGVkS2V5cygpKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgICAgY29uc3QgaXNJdGVtQmVmb3JlRmlyc3QgPSBpdGVtPy5pbmRleCAhPSBudWxsICYmIGZpcnN0Py5pbmRleCAhPSBudWxsICYmIGl0ZW0uaW5kZXggPCBmaXJzdC5pbmRleDtcbiAgICAgIGlmICghZmlyc3QgfHwgaXNJdGVtQmVmb3JlRmlyc3QpIHtcbiAgICAgICAgZmlyc3QgPSBpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlyc3Q/LmtleTtcbiAgfVxuICBsYXN0U2VsZWN0ZWRLZXkoKSB7XG4gICAgbGV0IGxhc3Q7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5zdGF0ZS5zZWxlY3RlZEtleXMoKSkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5KTtcbiAgICAgIGNvbnN0IGlzSXRlbUFmdGVyTGFzdCA9IGl0ZW0/LmluZGV4ICE9IG51bGwgJiYgbGFzdD8uaW5kZXggIT0gbnVsbCAmJiBpdGVtLmluZGV4ID4gbGFzdC5pbmRleDtcbiAgICAgIGlmICghbGFzdCB8fCBpc0l0ZW1BZnRlckxhc3QpIHtcbiAgICAgICAgbGFzdCA9IGl0ZW07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsYXN0Py5rZXk7XG4gIH1cbiAgLyoqIEV4dGVuZHMgdGhlIHNlbGVjdGlvbiB0byB0aGUgZ2l2ZW4ga2V5LiAqL1xuICBleHRlbmRTZWxlY3Rpb24odG9LZXkpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibm9uZVwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJzaW5nbGVcIikge1xuICAgICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKHRvS2V5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmV0cmlldmVkVG9LZXkgPSB0aGlzLmdldEtleSh0b0tleSk7XG4gICAgaWYgKHJldHJpZXZlZFRvS2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5zdGF0ZS5zZWxlY3RlZEtleXMoKTtcbiAgICBjb25zdCBhbmNob3JLZXkgPSBzZWxlY3RlZEtleXMuYW5jaG9yS2V5IHx8IHJldHJpZXZlZFRvS2V5O1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oc2VsZWN0ZWRLZXlzLCBhbmNob3JLZXksIHJldHJpZXZlZFRvS2V5KTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmdldEtleVJhbmdlKFxuICAgICAgYW5jaG9yS2V5LFxuICAgICAgc2VsZWN0ZWRLZXlzLmN1cnJlbnRLZXkgfHwgcmV0cmlldmVkVG9LZXlcbiAgICApKSB7XG4gICAgICBzZWxlY3Rpb24uZGVsZXRlKGtleSk7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuZ2V0S2V5UmFuZ2UocmV0cmlldmVkVG9LZXksIGFuY2hvcktleSkpIHtcbiAgICAgIGlmICh0aGlzLmNhblNlbGVjdEl0ZW0oa2V5KSkge1xuICAgICAgICBzZWxlY3Rpb24uYWRkKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuc2V0U2VsZWN0ZWRLZXlzKHNlbGVjdGlvbik7XG4gIH1cbiAgZ2V0S2V5UmFuZ2UoZnJvbSwgdG8pIHtcbiAgICBjb25zdCBmcm9tSXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oZnJvbSk7XG4gICAgY29uc3QgdG9JdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbSh0byk7XG4gICAgaWYgKGZyb21JdGVtICYmIHRvSXRlbSkge1xuICAgICAgaWYgKGZyb21JdGVtLmluZGV4ICE9IG51bGwgJiYgdG9JdGVtLmluZGV4ICE9IG51bGwgJiYgZnJvbUl0ZW0uaW5kZXggPD0gdG9JdGVtLmluZGV4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEtleVJhbmdlSW50ZXJuYWwoZnJvbSwgdG8pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0S2V5UmFuZ2VJbnRlcm5hbCh0bywgZnJvbSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuICBnZXRLZXlSYW5nZUludGVybmFsKGZyb20sIHRvKSB7XG4gICAgY29uc3Qga2V5czIgPSBbXTtcbiAgICBsZXQga2V5ID0gZnJvbTtcbiAgICB3aGlsZSAoa2V5ICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleSk7XG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLnR5cGUgPT09IFwiaXRlbVwiKSB7XG4gICAgICAgIGtleXMyLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICAgIGlmIChrZXkgPT09IHRvKSB7XG4gICAgICAgIHJldHVybiBrZXlzMjtcbiAgICAgIH1cbiAgICAgIGtleSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEtleUFmdGVyKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuICBnZXRLZXkoa2V5KSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIGlmICghaXRlbSB8fCBpdGVtLnR5cGUgIT09IFwiaXRlbVwiKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW0ua2V5O1xuICB9XG4gIC8qKiBUb2dnbGVzIHdoZXRoZXIgdGhlIGdpdmVuIGtleSBpcyBzZWxlY3RlZC4gKi9cbiAgdG9nZ2xlU2VsZWN0aW9uKGtleSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSBcInNpbmdsZVwiICYmICF0aGlzLmlzU2VsZWN0ZWQoa2V5KSkge1xuICAgICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKGtleSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHJldHJpZXZlZEtleSA9IHRoaXMuZ2V0S2V5KGtleSk7XG4gICAgaWYgKHJldHJpZXZlZEtleSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGtleXMyID0gbmV3IFNlbGVjdGlvbih0aGlzLnN0YXRlLnNlbGVjdGVkS2V5cygpKTtcbiAgICBpZiAoa2V5czIuaGFzKHJldHJpZXZlZEtleSkpIHtcbiAgICAgIGtleXMyLmRlbGV0ZShyZXRyaWV2ZWRLZXkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jYW5TZWxlY3RJdGVtKHJldHJpZXZlZEtleSkpIHtcbiAgICAgIGtleXMyLmFkZChyZXRyaWV2ZWRLZXkpO1xuICAgICAga2V5czIuYW5jaG9yS2V5ID0gcmV0cmlldmVkS2V5O1xuICAgICAga2V5czIuY3VycmVudEtleSA9IHJldHJpZXZlZEtleTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWxsb3dFbXB0eVNlbGVjdGlvbigpICYmIGtleXMyLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGF0ZS5zZXRTZWxlY3RlZEtleXMoa2V5czIpO1xuICB9XG4gIC8qKiBSZXBsYWNlcyB0aGUgc2VsZWN0aW9uIHdpdGggb25seSB0aGUgZ2l2ZW4ga2V5LiAqL1xuICByZXBsYWNlU2VsZWN0aW9uKGtleSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJub25lXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmV0cmlldmVkS2V5ID0gdGhpcy5nZXRLZXkoa2V5KTtcbiAgICBpZiAocmV0cmlldmVkS2V5ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5jYW5TZWxlY3RJdGVtKHJldHJpZXZlZEtleSkgPyBuZXcgU2VsZWN0aW9uKFtyZXRyaWV2ZWRLZXldLCByZXRyaWV2ZWRLZXksIHJldHJpZXZlZEtleSkgOiBuZXcgU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5zdGF0ZS5zZXRTZWxlY3RlZEtleXMoc2VsZWN0aW9uKTtcbiAgfVxuICAvKiogUmVwbGFjZXMgdGhlIHNlbGVjdGlvbiB3aXRoIHRoZSBnaXZlbiBrZXlzLiAqL1xuICBzZXRTZWxlY3RlZEtleXMoa2V5czIpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibm9uZVwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzMikge1xuICAgICAgY29uc3QgcmV0cmlldmVkS2V5ID0gdGhpcy5nZXRLZXkoa2V5KTtcbiAgICAgIGlmIChyZXRyaWV2ZWRLZXkgIT0gbnVsbCkge1xuICAgICAgICBzZWxlY3Rpb24uYWRkKHJldHJpZXZlZEtleSk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJzaW5nbGVcIikge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc3RhdGUuc2V0U2VsZWN0ZWRLZXlzKHNlbGVjdGlvbik7XG4gIH1cbiAgLyoqIFNlbGVjdHMgYWxsIGl0ZW1zIGluIHRoZSBjb2xsZWN0aW9uLiAqL1xuICBzZWxlY3RBbGwoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSgpID09PSBcIm11bHRpcGxlXCIpIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0U2VsZWN0ZWRLZXlzKG5ldyBTZXQodGhpcy5nZXRBbGxTZWxlY3RhYmxlS2V5cygpKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZW1vdmVzIGFsbCBrZXlzIGZyb20gdGhlIHNlbGVjdGlvbi5cbiAgICovXG4gIGNsZWFyU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkS2V5cyA9IHRoaXMuc3RhdGUuc2VsZWN0ZWRLZXlzKCk7XG4gICAgaWYgKCF0aGlzLmRpc2FsbG93RW1wdHlTZWxlY3Rpb24oKSAmJiBzZWxlY3RlZEtleXMuc2l6ZSA+IDApIHtcbiAgICAgIHRoaXMuc3RhdGUuc2V0U2VsZWN0ZWRLZXlzKG5ldyBTZWxlY3Rpb24oKSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBUb2dnbGVzIGJldHdlZW4gc2VsZWN0IGFsbCBhbmQgYW4gZW1wdHkgc2VsZWN0aW9uLlxuICAgKi9cbiAgdG9nZ2xlU2VsZWN0QWxsKCkge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0QWxsKCkpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RBbGwoKTtcbiAgICB9XG4gIH1cbiAgc2VsZWN0KGtleSwgZTIpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlKCkgPT09IFwibm9uZVwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUoKSA9PT0gXCJzaW5nbGVcIikge1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChrZXkpICYmICF0aGlzLmRpc2FsbG93RW1wdHlTZWxlY3Rpb24oKSkge1xuICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbihrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKGtleSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbkJlaGF2aW9yKCkgPT09IFwidG9nZ2xlXCIgfHwgZTIgJiYgZTIucG9pbnRlclR5cGUgPT09IFwidG91Y2hcIikge1xuICAgICAgdGhpcy50b2dnbGVTZWxlY3Rpb24oa2V5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKGtleSk7XG4gICAgfVxuICB9XG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGlzIGVxdWFsIHRvIHRoZSBnaXZlbiBzZWxlY3Rpb24uICovXG4gIGlzU2VsZWN0aW9uRXF1YWwoc2VsZWN0aW9uKSB7XG4gICAgaWYgKHNlbGVjdGlvbiA9PT0gdGhpcy5zdGF0ZS5zZWxlY3RlZEtleXMoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkS2V5cyA9IHRoaXMuc2VsZWN0ZWRLZXlzKCk7XG4gICAgaWYgKHNlbGVjdGlvbi5zaXplICE9PSBzZWxlY3RlZEtleXMuc2l6ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzZWxlY3Rpb24pIHtcbiAgICAgIGlmICghc2VsZWN0ZWRLZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc2VsZWN0ZWRLZXlzKSB7XG4gICAgICBpZiAoIXNlbGVjdGlvbi5oYXMoa2V5KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNhblNlbGVjdEl0ZW0oa2V5KSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuc2VsZWN0aW9uTW9kZSgpID09PSBcIm5vbmVcIikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgIHJldHVybiBpdGVtICE9IG51bGwgJiYgIWl0ZW0uZGlzYWJsZWQ7XG4gIH1cbiAgaXNEaXNhYmxlZChrZXkpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgIHJldHVybiAhaXRlbSB8fCBpdGVtLmRpc2FibGVkO1xuICB9XG4gIGdldEFsbFNlbGVjdGFibGVLZXlzKCkge1xuICAgIGNvbnN0IGtleXMyID0gW107XG4gICAgY29uc3QgYWRkS2V5cyA9IChrZXkpID0+IHtcbiAgICAgIHdoaWxlIChrZXkgIT0gbnVsbCkge1xuICAgICAgICBpZiAodGhpcy5jYW5TZWxlY3RJdGVtKGtleSkpIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwiaXRlbVwiKSB7XG4gICAgICAgICAgICBrZXlzMi5wdXNoKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEtleUFmdGVyKGtleSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBhZGRLZXlzKHRoaXMuY29sbGVjdGlvbigpLmdldEZpcnN0S2V5KCkpO1xuICAgIHJldHVybiBrZXlzMjtcbiAgfVxufTtcbnZhciBMaXN0Q29sbGVjdGlvbiA9IGNsYXNzIHtcbiAga2V5TWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgaXRlcmFibGU7XG4gIGZpcnN0S2V5O1xuICBsYXN0S2V5O1xuICBjb25zdHJ1Y3Rvcihub2Rlcykge1xuICAgIHRoaXMuaXRlcmFibGUgPSBub2RlcztcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIHRoaXMua2V5TWFwLnNldChub2RlLmtleSwgbm9kZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmtleU1hcC5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBsYXN0O1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgZm9yIChjb25zdCBba2V5LCBub2RlXSBvZiB0aGlzLmtleU1hcCkge1xuICAgICAgaWYgKGxhc3QpIHtcbiAgICAgICAgbGFzdC5uZXh0S2V5ID0ga2V5O1xuICAgICAgICBub2RlLnByZXZLZXkgPSBsYXN0LmtleTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlyc3RLZXkgPSBrZXk7XG4gICAgICAgIG5vZGUucHJldktleSA9IHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGlmIChub2RlLnR5cGUgPT09IFwiaXRlbVwiKSB7XG4gICAgICAgIG5vZGUuaW5kZXggPSBpbmRleCsrO1xuICAgICAgfVxuICAgICAgbGFzdCA9IG5vZGU7XG4gICAgICBsYXN0Lm5leHRLZXkgPSB2b2lkIDA7XG4gICAgfVxuICAgIHRoaXMubGFzdEtleSA9IGxhc3Qua2V5O1xuICB9XG4gICpbU3ltYm9sLml0ZXJhdG9yXSgpIHtcbiAgICB5aWVsZCogdGhpcy5pdGVyYWJsZTtcbiAgfVxuICBnZXRTaXplKCkge1xuICAgIHJldHVybiB0aGlzLmtleU1hcC5zaXplO1xuICB9XG4gIGdldEtleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5TWFwLmtleXMoKTtcbiAgfVxuICBnZXRLZXlCZWZvcmUoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMua2V5TWFwLmdldChrZXkpPy5wcmV2S2V5O1xuICB9XG4gIGdldEtleUFmdGVyKGtleSkge1xuICAgIHJldHVybiB0aGlzLmtleU1hcC5nZXQoa2V5KT8ubmV4dEtleTtcbiAgfVxuICBnZXRGaXJzdEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5maXJzdEtleTtcbiAgfVxuICBnZXRMYXN0S2V5KCkge1xuICAgIHJldHVybiB0aGlzLmxhc3RLZXk7XG4gIH1cbiAgZ2V0SXRlbShrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlNYXAuZ2V0KGtleSk7XG4gIH1cbiAgYXQoaWR4KSB7XG4gICAgY29uc3Qga2V5czIgPSBbLi4udGhpcy5nZXRLZXlzKCldO1xuICAgIHJldHVybiB0aGlzLmdldEl0ZW0oa2V5czJbaWR4XSk7XG4gIH1cbn07XG5mdW5jdGlvbiBjcmVhdGVMaXN0U3RhdGUocHJvcHMpIHtcbiAgY29uc3Qgc2VsZWN0aW9uU3RhdGUgPSBjcmVhdGVNdWx0aXBsZVNlbGVjdGlvblN0YXRlKHByb3BzKTtcbiAgY29uc3QgZmFjdG9yeSA9IChub2RlcykgPT4ge1xuICAgIHJldHVybiBwcm9wcy5maWx0ZXIgPyBuZXcgTGlzdENvbGxlY3Rpb24ocHJvcHMuZmlsdGVyKG5vZGVzKSkgOiBuZXcgTGlzdENvbGxlY3Rpb24obm9kZXMpO1xuICB9O1xuICBjb25zdCBjb2xsZWN0aW9uID0gY3JlYXRlQ29sbGVjdGlvbihcbiAgICB7XG4gICAgICBkYXRhU291cmNlOiAoKSA9PiBhY2Nlc3MocHJvcHMuZGF0YVNvdXJjZSksXG4gICAgICBnZXRLZXk6ICgpID0+IGFjY2Vzcyhwcm9wcy5nZXRLZXkpLFxuICAgICAgZ2V0VGV4dFZhbHVlOiAoKSA9PiBhY2Nlc3MocHJvcHMuZ2V0VGV4dFZhbHVlKSxcbiAgICAgIGdldERpc2FibGVkOiAoKSA9PiBhY2Nlc3MocHJvcHMuZ2V0RGlzYWJsZWQpLFxuICAgICAgZ2V0U2VjdGlvbkNoaWxkcmVuOiAoKSA9PiBhY2Nlc3MocHJvcHMuZ2V0U2VjdGlvbkNoaWxkcmVuKSxcbiAgICAgIGZhY3RvcnlcbiAgICB9LFxuICAgIFsoKSA9PiBwcm9wcy5maWx0ZXJdXG4gICk7XG4gIGNvbnN0IHNlbGVjdGlvbk1hbmFnZXIgPSBuZXcgU2VsZWN0aW9uTWFuYWdlcihjb2xsZWN0aW9uLCBzZWxlY3Rpb25TdGF0ZSk7XG4gIGNyZWF0ZUNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBmb2N1c2VkS2V5ID0gc2VsZWN0aW9uU3RhdGUuZm9jdXNlZEtleSgpO1xuICAgIGlmIChmb2N1c2VkS2V5ICE9IG51bGwgJiYgIWNvbGxlY3Rpb24oKS5nZXRJdGVtKGZvY3VzZWRLZXkpKSB7XG4gICAgICBzZWxlY3Rpb25TdGF0ZS5zZXRGb2N1c2VkS2V5KHZvaWQgMCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBjb2xsZWN0aW9uLFxuICAgIHNlbGVjdGlvbk1hbmFnZXI6ICgpID0+IHNlbGVjdGlvbk1hbmFnZXJcbiAgfTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bjb3J2dSt1dGlsc0AwLjMuMl9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGNvcnZ1L3V0aWxzL2Rpc3QvY2h1bmsvWlY2RzI1VFQuanNcbnZhciBhY2Nlc3MyID0gKHYpID0+IHR5cGVvZiB2ID09PSBcImZ1bmN0aW9uXCIgPyB2KCkgOiB2O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc29saWQtcHJlc2VuY2VAMC4xLjdfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL3NvbGlkLXByZXNlbmNlL2Rpc3QvaW5kZXguanNcbnZhciBjcmVhdGVQcmVzZW5jZSA9IChwcm9wcykgPT4ge1xuICBjb25zdCByZWZTdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gYWNjZXNzMihwcm9wcy5lbGVtZW50KTtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgfSk7XG4gIGNvbnN0IGdldEFuaW1hdGlvbk5hbWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHJlZlN0eWxlcygpPy5hbmltYXRpb25OYW1lID8/IFwibm9uZVwiO1xuICB9O1xuICBjb25zdCBbcHJlc2VudFN0YXRlLCBzZXRQcmVzZW50U3RhdGVdID0gY3JlYXRlU2lnbmFsKGFjY2VzczIocHJvcHMuc2hvdykgPyBcInByZXNlbnRcIiA6IFwiaGlkZGVuXCIpO1xuICBsZXQgYW5pbWF0aW9uTmFtZSA9IFwibm9uZVwiO1xuICBjcmVhdGVFZmZlY3QoKHByZXZTaG93KSA9PiB7XG4gICAgY29uc3Qgc2hvdyA9IGFjY2VzczIocHJvcHMuc2hvdyk7XG4gICAgdW50cmFjaygoKSA9PiB7XG4gICAgICBpZiAocHJldlNob3cgPT09IHNob3cpIHJldHVybiBzaG93O1xuICAgICAgY29uc3QgcHJldkFuaW1hdGlvbk5hbWUgPSBhbmltYXRpb25OYW1lO1xuICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKCk7XG4gICAgICBpZiAoc2hvdykge1xuICAgICAgICBzZXRQcmVzZW50U3RhdGUoXCJwcmVzZW50XCIpO1xuICAgICAgfSBlbHNlIGlmIChjdXJyZW50QW5pbWF0aW9uTmFtZSA9PT0gXCJub25lXCIgfHwgcmVmU3R5bGVzKCk/LmRpc3BsYXkgPT09IFwibm9uZVwiKSB7XG4gICAgICAgIHNldFByZXNlbnRTdGF0ZShcImhpZGRlblwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGlzQW5pbWF0aW5nID0gcHJldkFuaW1hdGlvbk5hbWUgIT09IGN1cnJlbnRBbmltYXRpb25OYW1lO1xuICAgICAgICBpZiAocHJldlNob3cgPT09IHRydWUgJiYgaXNBbmltYXRpbmcpIHtcbiAgICAgICAgICBzZXRQcmVzZW50U3RhdGUoXCJoaWRpbmdcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0UHJlc2VudFN0YXRlKFwiaGlkZGVuXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNob3c7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBhY2Nlc3MyKHByb3BzLmVsZW1lbnQpO1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xuICAgIGNvbnN0IGhhbmRsZUFuaW1hdGlvblN0YXJ0ID0gKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBlbGVtZW50KSB7XG4gICAgICAgIGFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVBbmltYXRpb25FbmQgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gZ2V0QW5pbWF0aW9uTmFtZSgpO1xuICAgICAgY29uc3QgaXNDdXJyZW50QW5pbWF0aW9uID0gY3VycmVudEFuaW1hdGlvbk5hbWUuaW5jbHVkZXMoXG4gICAgICAgIGV2ZW50LmFuaW1hdGlvbk5hbWVcbiAgICAgICk7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBlbGVtZW50ICYmIGlzQ3VycmVudEFuaW1hdGlvbiAmJiBwcmVzZW50U3RhdGUoKSA9PT0gXCJoaWRpbmdcIikge1xuICAgICAgICBzZXRQcmVzZW50U3RhdGUoXCJoaWRkZW5cIik7XG4gICAgICB9XG4gICAgfTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJhbmltYXRpb25zdGFydFwiLCBoYW5kbGVBbmltYXRpb25TdGFydCk7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiYW5pbWF0aW9uY2FuY2VsXCIsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiYW5pbWF0aW9uZW5kXCIsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFuaW1hdGlvbnN0YXJ0XCIsIGhhbmRsZUFuaW1hdGlvblN0YXJ0KTtcbiAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImFuaW1hdGlvbmNhbmNlbFwiLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiYW5pbWF0aW9uZW5kXCIsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHByZXNlbnQ6ICgpID0+IHByZXNlbnRTdGF0ZSgpID09PSBcInByZXNlbnRcIiB8fCBwcmVzZW50U3RhdGUoKSA9PT0gXCJoaWRpbmdcIixcbiAgICBzdGF0ZTogcHJlc2VudFN0YXRlXG4gIH07XG59O1xudmFyIHByZXNlbmNlX2RlZmF1bHQgPSBjcmVhdGVQcmVzZW5jZTtcbnZhciBzcmNfZGVmYXVsdCA9IHByZXNlbmNlX2RlZmF1bHQ7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL1pLWURESE02LmpzXG52YXIgREFUQV9UT1BfTEFZRVJfQVRUUiA9IFwiZGF0YS1rYi10b3AtbGF5ZXJcIjtcbnZhciBvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzO1xudmFyIGhhc0Rpc2FibGVkQm9keVBvaW50ZXJFdmVudHMgPSBmYWxzZTtcbnZhciBsYXllcnMgPSBbXTtcbmZ1bmN0aW9uIGluZGV4T2Yobm9kZSkge1xuICByZXR1cm4gbGF5ZXJzLmZpbmRJbmRleCgobGF5ZXIpID0+IGxheWVyLm5vZGUgPT09IG5vZGUpO1xufVxuZnVuY3Rpb24gZmluZChub2RlKSB7XG4gIHJldHVybiBsYXllcnNbaW5kZXhPZihub2RlKV07XG59XG5mdW5jdGlvbiBpc1RvcE1vc3RMYXllcihub2RlKSB7XG4gIHJldHVybiBsYXllcnNbbGF5ZXJzLmxlbmd0aCAtIDFdLm5vZGUgPT09IG5vZGU7XG59XG5mdW5jdGlvbiBnZXRQb2ludGVyQmxvY2tpbmdMYXllcnMoKSB7XG4gIHJldHVybiBsYXllcnMuZmlsdGVyKChsYXllcikgPT4gbGF5ZXIuaXNQb2ludGVyQmxvY2tpbmcpO1xufVxuZnVuY3Rpb24gZ2V0VG9wTW9zdFBvaW50ZXJCbG9ja2luZ0xheWVyKCkge1xuICByZXR1cm4gWy4uLmdldFBvaW50ZXJCbG9ja2luZ0xheWVycygpXS5zbGljZSgtMSlbMF07XG59XG5mdW5jdGlvbiBoYXNQb2ludGVyQmxvY2tpbmdMYXllcigpIHtcbiAgcmV0dXJuIGdldFBvaW50ZXJCbG9ja2luZ0xheWVycygpLmxlbmd0aCA+IDA7XG59XG5mdW5jdGlvbiBpc0JlbG93UG9pbnRlckJsb2NraW5nTGF5ZXIobm9kZSkge1xuICBjb25zdCBoaWdoZXN0QmxvY2tpbmdJbmRleCA9IGluZGV4T2YoZ2V0VG9wTW9zdFBvaW50ZXJCbG9ja2luZ0xheWVyKCk/Lm5vZGUpO1xuICByZXR1cm4gaW5kZXhPZihub2RlKSA8IGhpZ2hlc3RCbG9ja2luZ0luZGV4O1xufVxuZnVuY3Rpb24gYWRkTGF5ZXIobGF5ZXIpIHtcbiAgbGF5ZXJzLnB1c2gobGF5ZXIpO1xufVxuZnVuY3Rpb24gcmVtb3ZlTGF5ZXIobm9kZSkge1xuICBjb25zdCBpbmRleCA9IGluZGV4T2Yobm9kZSk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG59XG5mdW5jdGlvbiBhc3NpZ25Qb2ludGVyRXZlbnRUb0xheWVycygpIHtcbiAgZm9yIChjb25zdCB7XG4gICAgbm9kZVxuICB9IG9mIGxheWVycykge1xuICAgIG5vZGUuc3R5bGUucG9pbnRlckV2ZW50cyA9IGlzQmVsb3dQb2ludGVyQmxvY2tpbmdMYXllcihub2RlKSA/IFwibm9uZVwiIDogXCJhdXRvXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIGRpc2FibGVCb2R5UG9pbnRlckV2ZW50cyhub2RlKSB7XG4gIGlmIChoYXNQb2ludGVyQmxvY2tpbmdMYXllcigpICYmICFoYXNEaXNhYmxlZEJvZHlQb2ludGVyRXZlbnRzKSB7XG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IGdldERvY3VtZW50KG5vZGUpO1xuICAgIG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHMgPSBkb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM7XG4gICAgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSBcIm5vbmVcIjtcbiAgICBoYXNEaXNhYmxlZEJvZHlQb2ludGVyRXZlbnRzID0gdHJ1ZTtcbiAgfVxufVxuZnVuY3Rpb24gcmVzdG9yZUJvZHlQb2ludGVyRXZlbnRzKG5vZGUpIHtcbiAgaWYgKGhhc1BvaW50ZXJCbG9ja2luZ0xheWVyKCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgb3duZXJEb2N1bWVudCA9IGdldERvY3VtZW50KG5vZGUpO1xuICBvd25lckRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cyA9IG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM7XG4gIGlmIChvd25lckRvY3VtZW50LmJvZHkuc3R5bGUubGVuZ3RoID09PSAwKSB7XG4gICAgb3duZXJEb2N1bWVudC5ib2R5LnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICB9XG4gIGhhc0Rpc2FibGVkQm9keVBvaW50ZXJFdmVudHMgPSBmYWxzZTtcbn1cbnZhciBsYXllclN0YWNrID0ge1xuICBsYXllcnMsXG4gIGlzVG9wTW9zdExheWVyLFxuICBoYXNQb2ludGVyQmxvY2tpbmdMYXllcixcbiAgaXNCZWxvd1BvaW50ZXJCbG9ja2luZ0xheWVyLFxuICBhZGRMYXllcixcbiAgcmVtb3ZlTGF5ZXIsXG4gIGluZGV4T2YsXG4gIGZpbmQsXG4gIGFzc2lnblBvaW50ZXJFdmVudFRvTGF5ZXJzLFxuICBkaXNhYmxlQm9keVBvaW50ZXJFdmVudHMsXG4gIHJlc3RvcmVCb2R5UG9pbnRlckV2ZW50c1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvN09WS1hZUFUuanNcbnZhciBidXR0b25fZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoYnV0dG9uX2V4cG9ydHMsIHtcbiAgQnV0dG9uOiAoKSA9PiBCdXR0b24sXG4gIFJvb3Q6ICgpID0+IEJ1dHRvblJvb3Rcbn0pO1xudmFyIEJVVFRPTl9JTlBVVF9UWVBFUyA9IFtcbiAgXCJidXR0b25cIixcbiAgXCJjb2xvclwiLFxuICBcImZpbGVcIixcbiAgXCJpbWFnZVwiLFxuICBcInJlc2V0XCIsXG4gIFwic3VibWl0XCJcbl07XG5mdW5jdGlvbiBpc0J1dHRvbihlbGVtZW50KSB7XG4gIGNvbnN0IHRhZ05hbWUgPSBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgaWYgKHRhZ05hbWUgPT09IFwiYnV0dG9uXCIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodGFnTmFtZSA9PT0gXCJpbnB1dFwiICYmIGVsZW1lbnQudHlwZSkge1xuICAgIHJldHVybiBCVVRUT05fSU5QVVRfVFlQRVMuaW5kZXhPZihlbGVtZW50LnR5cGUpICE9PSAtMTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBCdXR0b25Sb290KHByb3BzKSB7XG4gIGxldCByZWY7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIHR5cGU6IFwiYnV0dG9uXCJcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJ0eXBlXCIsIFwiZGlzYWJsZWRcIl0pO1xuICBjb25zdCB0YWdOYW1lID0gY3JlYXRlVGFnTmFtZSgoKSA9PiByZWYsICgpID0+IFwiYnV0dG9uXCIpO1xuICBjb25zdCBpc05hdGl2ZUJ1dHRvbiA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRUYWdOYW1lID0gdGFnTmFtZSgpO1xuICAgIGlmIChlbGVtZW50VGFnTmFtZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc0J1dHRvbih7XG4gICAgICB0YWdOYW1lOiBlbGVtZW50VGFnTmFtZSxcbiAgICAgIHR5cGU6IGxvY2FsLnR5cGVcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IGlzTmF0aXZlSW5wdXQgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGFnTmFtZSgpID09PSBcImlucHV0XCI7XG4gIH0pO1xuICBjb25zdCBpc05hdGl2ZUxpbmsgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGFnTmFtZSgpID09PSBcImFcIiAmJiByZWY/LmdldEF0dHJpYnV0ZShcImhyZWZcIikgIT0gbnVsbDtcbiAgfSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImJ1dHRvblwiLFxuICAgIHJlZihyJCkge1xuICAgICAgY29uc3QgX3JlZiQgPSBtZXJnZVJlZnMoKGVsKSA9PiByZWYgPSBlbCwgbG9jYWwucmVmKTtcbiAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICB9LFxuICAgIGdldCB0eXBlKCkge1xuICAgICAgcmV0dXJuIGlzTmF0aXZlQnV0dG9uKCkgfHwgaXNOYXRpdmVJbnB1dCgpID8gbG9jYWwudHlwZSA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCByb2xlKCkge1xuICAgICAgcmV0dXJuICFpc05hdGl2ZUJ1dHRvbigpICYmICFpc05hdGl2ZUxpbmsoKSA/IFwiYnV0dG9uXCIgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICByZXR1cm4gIWlzTmF0aXZlQnV0dG9uKCkgJiYgIWlzTmF0aXZlTGluaygpICYmICFsb2NhbC5kaXNhYmxlZCA/IDAgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICByZXR1cm4gaXNOYXRpdmVCdXR0b24oKSB8fCBpc05hdGl2ZUlucHV0KCkgPyBsb2NhbC5kaXNhYmxlZCA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCBbXCJhcmlhLWRpc2FibGVkXCJdKCkge1xuICAgICAgcmV0dXJuICFpc05hdGl2ZUJ1dHRvbigpICYmICFpc05hdGl2ZUlucHV0KCkgJiYgbG9jYWwuZGlzYWJsZWQgPyB0cnVlIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IFtcImRhdGEtZGlzYWJsZWRcIl0oKSB7XG4gICAgICByZXR1cm4gbG9jYWwuZGlzYWJsZWQgPyBcIlwiIDogdm9pZCAwO1xuICAgIH1cbiAgfSwgb3RoZXJzKSk7XG59XG52YXIgQnV0dG9uID0gQnV0dG9uUm9vdDtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmbG9hdGluZy11aSt1dGlsc0AwLjIuNS9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMubWpzXG52YXIgc2lkZXMgPSBbXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIl07XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgcm91bmQgPSBNYXRoLnJvdW5kO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBjcmVhdGVDb29yZHMgPSAodikgPT4gKHtcbiAgeDogdixcbiAgeTogdlxufSk7XG52YXIgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiBcInJpZ2h0XCIsXG4gIHJpZ2h0OiBcImxlZnRcIixcbiAgYm90dG9tOiBcInRvcFwiLFxuICB0b3A6IFwiYm90dG9tXCJcbn07XG52YXIgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiBcImVuZFwiLFxuICBlbmQ6IFwic3RhcnRcIlxufTtcbmZ1bmN0aW9uIGNsYW1wMihzdGFydCwgdmFsdWUsIGVuZCkge1xuICByZXR1cm4gbWF4KHN0YXJ0LCBtaW4odmFsdWUsIGVuZCkpO1xufVxuZnVuY3Rpb24gZXZhbHVhdGUodmFsdWUsIHBhcmFtKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdChcIi1cIilbMF07XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoXCItXCIpWzFdO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09IFwieFwiID8gXCJ5XCIgOiBcInhcIjtcbn1cbmZ1bmN0aW9uIGdldEF4aXNMZW5ndGgoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gXCJ5XCIgPyBcImhlaWdodFwiIDogXCJ3aWR0aFwiO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUF4aXMocGxhY2VtZW50KSB7XG4gIHJldHVybiBbXCJ0b3BcIiwgXCJib3R0b21cIl0uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKSA/IFwieVwiIDogXCJ4XCI7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSBcInhcIiA/IGFsaWdubWVudCA9PT0gKHJ0bCA/IFwiZW5kXCIgOiBcInN0YXJ0XCIpID8gXCJyaWdodFwiIDogXCJsZWZ0XCIgOiBhbGlnbm1lbnQgPT09IFwic3RhcnRcIiA/IFwiYm90dG9tXCIgOiBcInRvcFwiO1xuICBpZiAocmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gPiByZWN0cy5mbG9hdGluZ1tsZW5ndGhdKSB7XG4gICAgbWFpbkFsaWdubWVudFNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSk7XG4gIH1cbiAgcmV0dXJuIFttYWluQWxpZ25tZW50U2lkZSwgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpXTtcbn1cbmZ1bmN0aW9uIGdldEV4cGFuZGVkUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgY29uc3Qgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIChhbGlnbm1lbnQpID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gW1wibGVmdFwiLCBcInJpZ2h0XCJdO1xuICBjb25zdCBybCA9IFtcInJpZ2h0XCIsIFwibGVmdFwiXTtcbiAgY29uc3QgdGIgPSBbXCJ0b3BcIiwgXCJib3R0b21cIl07XG4gIGNvbnN0IGJ0ID0gW1wiYm90dG9tXCIsIFwidG9wXCJdO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlIFwidG9wXCI6XG4gICAgY2FzZSBcImJvdHRvbVwiOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgXCJsZWZ0XCI6XG4gICAgY2FzZSBcInJpZ2h0XCI6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSBcInN0YXJ0XCIsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoKHNpZGUpID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCAoc2lkZSkgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSBcIm51bWJlclwiID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9ID0gcmVjdDtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIGxlZnQ6IHgsXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AZmxvYXRpbmctdWkrY29yZUAxLjYuNS9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qc1xuZnVuY3Rpb24gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQoX3JlZiwgcGxhY2VtZW50LCBydGwpIHtcbiAgbGV0IHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmdcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHNpZGVBeGlzID0gZ2V0U2lkZUF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50QXhpcyA9IGdldEFsaWdubWVudEF4aXMocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25MZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gc2lkZUF4aXMgPT09IFwieVwiO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IGNvbW1vbkFsaWduID0gcmVmZXJlbmNlW2FsaWduTGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1thbGlnbkxlbmd0aF0gLyAyO1xuICBsZXQgY29vcmRzO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlIFwidG9wXCI6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJvdHRvbVwiOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwicmlnaHRcIjpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwibGVmdFwiOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlIFwic3RhcnRcIjpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZW5kXCI6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gKz0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGNvb3Jkcztcbn1cbnZhciBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSBcImJvdHRvbVwiLFxuICAgIHN0cmF0ZWd5ID0gXCJhYnNvbHV0ZVwiLFxuICAgIG1pZGRsZXdhcmUgPSBbXSxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm0yXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0yLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0yLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpMiA9IDA7IGkyIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaTIrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaTJdO1xuICAgIGNvbnN0IHtcbiAgICAgIHg6IG5leHRYLFxuICAgICAgeTogbmV4dFksXG4gICAgICBkYXRhLFxuICAgICAgcmVzZXRcbiAgICB9ID0gYXdhaXQgZm4oe1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBpbml0aWFsUGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm06IHBsYXRmb3JtMixcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtMi5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpMiA9IC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybTIsXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSBcImNsaXBwaW5nQW5jZXN0b3JzXCIsXG4gICAgcm9vdEJvdW5kYXJ5ID0gXCJ2aWV3cG9ydFwiLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gXCJmbG9hdGluZ1wiLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gXCJmbG9hdGluZ1wiID8gXCJyZWZlcmVuY2VcIiA6IFwiZmxvYXRpbmdcIjtcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybTIuZ2V0Q2xpcHBpbmdSZWN0KHtcbiAgICBlbGVtZW50OiAoKF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA9IGF3YWl0IChwbGF0Zm9ybTIuaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgYXdhaXQgKHBsYXRmb3JtMi5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5nZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09IFwiZmxvYXRpbmdcIiA/IHtcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGg6IHJlY3RzLmZsb2F0aW5nLndpZHRoLFxuICAgIGhlaWdodDogcmVjdHMuZmxvYXRpbmcuaGVpZ2h0XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybTIuZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IG9mZnNldFNjYWxlID0gYXdhaXQgKHBsYXRmb3JtMi5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkgPyBhd2FpdCAocGxhdGZvcm0yLmdldFNjYWxlID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkgfHwge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9IDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCBlbGVtZW50Q2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QocGxhdGZvcm0yLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0yLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG52YXIgYXJyb3cgPSAob3B0aW9ucykgPT4gKHtcbiAgbmFtZTogXCJhcnJvd1wiLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybTogcGxhdGZvcm0yLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBtaWRkbGV3YXJlRGF0YVxuICAgIH0gPSBzdGF0ZTtcbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gICAgY29uc3QgbGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybTIuZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gXCJ5XCI7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyBcInRvcFwiIDogXCJsZWZ0XCI7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyBcImJvdHRvbVwiIDogXCJyaWdodFwiO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gXCJjbGllbnRIZWlnaHRcIiA6IFwiY2xpZW50V2lkdGhcIjtcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybTIuZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhYXdhaXQgKHBsYXRmb3JtMi5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtMi5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXgyID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldDMgPSBjbGFtcDIobWluJDEsIGNlbnRlciwgbWF4Mik7XG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQzICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBjZW50ZXIgLSBtaW4kMSA6IGNlbnRlciAtIG1heDIgOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSArIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQzLFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldDMgLSBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICAgIC4uLnNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICByZXNldDogc2hvdWxkQWRkT2Zmc2V0XG4gICAgfTtcbiAgfVxufSk7XG52YXIgZmxpcCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiZmxpcFwiLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRmbGlwO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgICAgcGxhdGZvcm06IHBsYXRmb3JtMixcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZSxcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICAgIGZhbGxiYWNrU3RyYXRlZ3kgPSBcImJlc3RGaXRcIixcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9IFwibm9uZVwiLFxuICAgICAgICBmbGlwQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgaWYgKChfbWlkZGxld2FyZURhdGEkYXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgIT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3cuYWxpZ25tZW50T2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpbml0aWFsU2lkZUF4aXMgPSBnZXRTaWRlQXhpcyhpbml0aWFsUGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzQmFzZVBsYWNlbWVudCA9IGdldFNpZGUoaW5pdGlhbFBsYWNlbWVudCkgPT09IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0yLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwQWxpZ25tZW50ID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KGluaXRpYWxQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uID0gZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiAhPT0gXCJub25lXCI7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzMiA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qgc2lkZXMyID0gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKTtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZXMyWzBdXSwgb3ZlcmZsb3dbc2lkZXMyWzFdXSk7XG4gICAgICB9XG4gICAgICBvdmVyZmxvd3NEYXRhID0gWy4uLm92ZXJmbG93c0RhdGEsIHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoKHNpZGUyKSA9PiBzaWRlMiA8PSAwKSkge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGZsaXAyLCBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXI7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICgoKF9taWRkbGV3YXJlRGF0YSRmbGlwMiA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcDIuaW5kZXgpIHx8IDApICsgMTtcbiAgICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHMyW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzZXRQbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyID0gb3ZlcmZsb3dzRGF0YS5maWx0ZXIoKGQpID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEyLCBiMikgPT4gYTIub3ZlcmZsb3dzWzFdIC0gYjIub3ZlcmZsb3dzWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlci5wbGFjZW1lbnQ7XG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgXCJiZXN0Rml0XCI6IHtcbiAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudDIgPSAoX292ZXJmbG93c0RhdGEkZmlsdGVyMiA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKChkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50U2lkZUF4aXMgPT09IGluaXRpYWxTaWRlQXhpcyB8fCAvLyBDcmVhdGUgYSBiaWFzIHRvIHRoZSBgeWAgc2lkZSBheGlzIGR1ZSB0byBob3Jpem9udGFsXG4gICAgICAgICAgICAgICAgICAvLyByZWFkaW5nIGRpcmVjdGlvbnMgZmF2b3JpbmcgZ3JlYXRlciB3aWR0aC5cbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gXCJ5XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICB9KS5tYXAoKGQpID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKChvdmVyZmxvdzIpID0+IG92ZXJmbG93MiA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdzIpID0+IGFjYyArIG92ZXJmbG93MiwgMCldKS5zb3J0KChhMiwgYjIpID0+IGEyWzFdIC0gYjJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyMlswXTtcbiAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudDIpIHtcbiAgICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IHBsYWNlbWVudDI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiaW5pdGlhbFBsYWNlbWVudFwiOlxuICAgICAgICAgICAgICByZXNldFBsYWNlbWVudCA9IGluaXRpYWxQbGFjZW1lbnQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGxhY2VtZW50ICE9PSByZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoKHNpZGUpID0+IG92ZXJmbG93W3NpZGVdID49IDApO1xufVxudmFyIGhpZGUgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcImhpZGVcIixcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gXCJyZWZlcmVuY2VIaWRkZW5cIixcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgc3dpdGNoIChzdHJhdGVneSkge1xuICAgICAgICBjYXNlIFwicmVmZXJlbmNlSGlkZGVuXCI6IHtcbiAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICBlbGVtZW50Q29udGV4dDogXCJyZWZlcmVuY2VcIlxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW46IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImVzY2FwZWRcIjoge1xuICAgICAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgIGVzY2FwZWQ6IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybTIsXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0yLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSBcInlcIjtcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFtcImxlZnRcIiwgXCJ0b3BcIl0uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09IFwibnVtYmVyXCIgPyB7XG4gICAgbWFpbkF4aXM6IHJhd1ZhbHVlLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsXG4gIH0gOiB7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGwsXG4gICAgLi4ucmF3VmFsdWVcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gXCJudW1iZXJcIikge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gXCJlbmRcIiA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG52YXIgb2Zmc2V0ID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcIm9mZnNldFwiLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRhcnJvdztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcbiAgICAgIGlmIChwbGFjZW1lbnQgPT09ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlLnBsYWNlbWVudCkgJiYgKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSAhPSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdy5hbGlnbm1lbnRPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogeCArIGRpZmZDb29yZHMueCxcbiAgICAgICAgeTogeSArIGRpZmZDb29yZHMueSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIC4uLmRpZmZDb29yZHMsXG4gICAgICAgICAgcGxhY2VtZW50XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcbnZhciBzaGlmdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwic2hpZnRcIixcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogKF9yZWYpID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHg6IHgyLFxuICAgICAgICAgICAgICB5OiB5MlxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4OiB4MixcbiAgICAgICAgICAgICAgeTogeTJcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gXCJ5XCIgPyBcInRvcFwiIDogXCJsZWZ0XCI7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gXCJ5XCIgPyBcImJvdHRvbVwiIDogXCJyaWdodFwiO1xuICAgICAgICBjb25zdCBtaW4yID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXgyID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gY2xhbXAyKG1pbjIsIG1haW5BeGlzQ29vcmQsIG1heDIpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09IFwieVwiID8gXCJ0b3BcIiA6IFwibGVmdFwiO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSBcInlcIiA/IFwiYm90dG9tXCIgOiBcInJpZ2h0XCI7XG4gICAgICAgIGNvbnN0IG1pbjIgPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXgyID0gY3Jvc3NBeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBjbGFtcDIobWluMiwgY3Jvc3NBeGlzQ29vcmQsIG1heDIpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGltaXRlZENvb3JkcyA9IGxpbWl0ZXIuZm4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbWl0ZWRDb29yZHMsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB4OiBsaW1pdGVkQ29vcmRzLnggLSB4LFxuICAgICAgICAgIHk6IGxpbWl0ZWRDb29yZHMueSAtIHlcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xudmFyIHNpemUgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcInNpemVcIixcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtOiBwbGF0Zm9ybTIsXG4gICAgICAgIGVsZW1lbnRzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFwcGx5ID0gKCkgPT4ge1xuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNZQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCkgPT09IFwieVwiO1xuICAgICAgY29uc3Qge1xuICAgICAgICB3aWR0aCxcbiAgICAgICAgaGVpZ2h0XG4gICAgICB9ID0gcmVjdHMuZmxvYXRpbmc7XG4gICAgICBsZXQgaGVpZ2h0U2lkZTtcbiAgICAgIGxldCB3aWR0aFNpZGU7XG4gICAgICBpZiAoc2lkZSA9PT0gXCJ0b3BcIiB8fCBzaWRlID09PSBcImJvdHRvbVwiKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09IChhd2FpdCAocGxhdGZvcm0yLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybTIuaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSA/IFwic3RhcnRcIiA6IFwiZW5kXCIpID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aWR0aFNpZGUgPSBzaWRlO1xuICAgICAgICBoZWlnaHRTaWRlID0gYWxpZ25tZW50ID09PSBcImVuZFwiID8gXCJ0b3BcIiA6IFwiYm90dG9tXCI7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBtaW4oaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV0sIG1heGltdW1DbGlwcGluZ0hlaWdodCk7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gbWluKHdpZHRoIC0gb3ZlcmZsb3dbd2lkdGhTaWRlXSwgbWF4aW11bUNsaXBwaW5nV2lkdGgpO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoaXNZQXhpcykge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlV2lkdGgsIG1heGltdW1DbGlwcGluZ1dpZHRoKSA6IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQsIG1heGltdW1DbGlwcGluZ0hlaWdodCkgOiBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQ7XG4gICAgICB9XG4gICAgICBpZiAobm9TaGlmdCAmJiAhYWxpZ25tZW50KSB7XG4gICAgICAgIGNvbnN0IHhNaW4gPSBtYXgob3ZlcmZsb3cubGVmdCwgMCk7XG4gICAgICAgIGNvbnN0IHhNYXggPSBtYXgob3ZlcmZsb3cucmlnaHQsIDApO1xuICAgICAgICBjb25zdCB5TWluID0gbWF4KG92ZXJmbG93LnRvcCwgMCk7XG4gICAgICAgIGNvbnN0IHlNYXggPSBtYXgob3ZlcmZsb3cuYm90dG9tLCAwKTtcbiAgICAgICAgaWYgKGlzWUF4aXMpIHtcbiAgICAgICAgICBhdmFpbGFibGVXaWR0aCA9IHdpZHRoIC0gMiAqICh4TWluICE9PSAwIHx8IHhNYXggIT09IDAgPyB4TWluICsgeE1heCA6IG1heChvdmVyZmxvdy5sZWZ0LCBvdmVyZmxvdy5yaWdodCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGhlaWdodCAtIDIgKiAoeU1pbiAhPT0gMCB8fCB5TWF4ICE9PSAwID8geU1pbiArIHlNYXggOiBtYXgob3ZlcmZsb3cudG9wLCBvdmVyZmxvdy5ib3R0b20pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYXdhaXQgYXBwbHkoe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgYXZhaWxhYmxlV2lkdGgsXG4gICAgICAgIGF2YWlsYWJsZUhlaWdodFxuICAgICAgfSk7XG4gICAgICBjb25zdCBuZXh0RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtMi5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmbG9hdGluZy11aSt1dGlsc0AwLjIuNS9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3V0aWxzL2Rpc3QvZmxvYXRpbmctdWkudXRpbHMuZG9tLm1qc1xuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobm9kZSkge1xuICBpZiAoaXNOb2RlKG5vZGUpKSB7XG4gICAgcmV0dXJuIChub2RlLm5vZGVOYW1lIHx8IFwiXCIpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIFwiI2RvY3VtZW50XCI7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3cyKG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBOb2RlIHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93Mih2YWx1ZSkuTm9kZTtcbn1cbmZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93Mih2YWx1ZSkuRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3cyKHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgU2hhZG93Um9vdCB8fCB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdzIodmFsdWUpLlNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUyKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbXCJpbmxpbmVcIiwgXCJjb250ZW50c1wiXS5pbmNsdWRlcyhkaXNwbGF5KTtcbn1cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFtcInRhYmxlXCIsIFwidGRcIiwgXCJ0aFwiXS5pbmNsdWRlcyhnZXROb2RlTmFtZShlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc1RvcExheWVyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIFtcIjpwb3BvdmVyLW9wZW5cIiwgXCI6bW9kYWxcIl0uc29tZSgoc2VsZWN0b3IpID0+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZTIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gaXNDb250YWluaW5nQmxvY2soZWxlbWVudE9yQ3NzKSB7XG4gIGNvbnN0IHdlYmtpdCA9IGlzV2ViS2l0KCk7XG4gIGNvbnN0IGNzcyA9IGlzRWxlbWVudChlbGVtZW50T3JDc3MpID8gZ2V0Q29tcHV0ZWRTdHlsZTIoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcbiAgcmV0dXJuIGNzcy50cmFuc2Zvcm0gIT09IFwibm9uZVwiIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gXCJub25lXCIgfHwgKGNzcy5jb250YWluZXJUeXBlID8gY3NzLmNvbnRhaW5lclR5cGUgIT09IFwibm9ybWFsXCIgOiBmYWxzZSkgfHwgIXdlYmtpdCAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSBcIm5vbmVcIiA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gXCJub25lXCIgOiBmYWxzZSkgfHwgW1widHJhbnNmb3JtXCIsIFwicGVyc3BlY3RpdmVcIiwgXCJmaWx0ZXJcIl0uc29tZSgodmFsdWUpID0+IChjc3Mud2lsbENoYW5nZSB8fCBcIlwiKS5pbmNsdWRlcyh2YWx1ZSkpIHx8IFtcInBhaW50XCIsIFwibGF5b3V0XCIsIFwic3RyaWN0XCIsIFwiY29udGVudFwiXS5zb21lKCh2YWx1ZSkgPT4gKGNzcy5jb250YWluIHx8IFwiXCIpLmluY2x1ZGVzKHZhbHVlKSk7XG59XG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICBsZXQgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBpZiAoaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIGlmIChpc1RvcExheWVyKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBpc1dlYktpdCgpIHtcbiAgaWYgKHR5cGVvZiBDU1MgPT09IFwidW5kZWZpbmVkXCIgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKFwiLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXJcIiwgXCJub25lXCIpO1xufVxuZnVuY3Rpb24gaXNMYXN0VHJhdmVyc2FibGVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIFtcImh0bWxcIiwgXCJib2R5XCIsIFwiI2RvY3VtZW50XCJdLmluY2x1ZGVzKGdldE5vZGVOYW1lKG5vZGUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbXB1dGVkU3R5bGUyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdzIoZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSBcImh0bWxcIikge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IChcbiAgICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgICBub2RlLmFzc2lnbmVkU2xvdCB8fCAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgICBub2RlLnBhcmVudE5vZGUgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8IC8vIEZhbGxiYWNrLlxuICAgIGdldERvY3VtZW50RWxlbWVudChub2RlKVxuICApO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUobm9kZSk7XG4gIGlmIChpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50ID8gbm9kZS5vd25lckRvY3VtZW50LmJvZHkgOiBub2RlLmJvZHk7XG4gIH1cbiAgaWYgKGlzSFRNTEVsZW1lbnQocGFyZW50Tm9kZSkgJiYgaXNPdmVyZmxvd0VsZW1lbnQocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IocGFyZW50Tm9kZSk7XG59XG5mdW5jdGlvbiBnZXRPdmVyZmxvd0FuY2VzdG9ycyhub2RlLCBsaXN0LCB0cmF2ZXJzZUlmcmFtZXMpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQyO1xuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG4gIGlmICh0cmF2ZXJzZUlmcmFtZXMgPT09IHZvaWQgMCkge1xuICAgIHRyYXZlcnNlSWZyYW1lcyA9IHRydWU7XG4gIH1cbiAgY29uc3Qgc2Nyb2xsYWJsZUFuY2VzdG9yID0gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSk7XG4gIGNvbnN0IGlzQm9keSA9IHNjcm9sbGFibGVBbmNlc3RvciA9PT0gKChfbm9kZSRvd25lckRvY3VtZW50MiA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQyLmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3cyKHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSwgd2luLmZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyh3aW4uZnJhbWVFbGVtZW50KSA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IsIFtdLCB0cmF2ZXJzZUlmcmFtZXMpKTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0BmbG9hdGluZy11aStkb21AMS42Ljgvbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9kb20vZGlzdC9mbG9hdGluZy11aS5kb20ubWpzXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZTIoZWxlbWVudCk7XG4gIGxldCB3aWR0aCA9IHBhcnNlRmxvYXQoY3NzLndpZHRoKSB8fCAwO1xuICBsZXQgaGVpZ2h0ID0gcGFyc2VGbG9hdChjc3MuaGVpZ2h0KSB8fCAwO1xuICBjb25zdCBoYXNPZmZzZXQgPSBpc0hUTUxFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBvZmZzZXRXaWR0aCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0V2lkdGggOiB3aWR0aDtcbiAgY29uc3Qgb2Zmc2V0SGVpZ2h0ID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRIZWlnaHQgOiBoZWlnaHQ7XG4gIGNvbnN0IHNob3VsZEZhbGxiYWNrID0gcm91bmQod2lkdGgpICE9PSBvZmZzZXRXaWR0aCB8fCByb3VuZChoZWlnaHQpICE9PSBvZmZzZXRIZWlnaHQ7XG4gIGlmIChzaG91bGRGYWxsYmFjaykge1xuICAgIHdpZHRoID0gb2Zmc2V0V2lkdGg7XG4gICAgaGVpZ2h0ID0gb2Zmc2V0SGVpZ2h0O1xuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgICQ6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cbmZ1bmN0aW9uIGdldFNjYWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChkb21FbGVtZW50KSkge1xuICAgIHJldHVybiBjcmVhdGVDb29yZHMoMSk7XG4gIH1cbiAgY29uc3QgcmVjdCA9IGRvbUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgJFxuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhkb21FbGVtZW50KTtcbiAgbGV0IHggPSAoJCA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoJCA/IHJvdW5kKHJlY3QuaGVpZ2h0KSA6IHJlY3QuaGVpZ2h0KSAvIGhlaWdodDtcbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG52YXIgbm9PZmZzZXRzID0gLyogQF9fUFVSRV9fICovIGNyZWF0ZUNvb3JkcygwKTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3cyKGVsZW1lbnQpO1xuICBpZiAoIWlzV2ViS2l0KCkgfHwgIXdpbi52aXN1YWxWaWV3cG9ydCkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICB5OiB3aW4udmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wXG4gIH07XG59XG5mdW5jdGlvbiBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSBnZXRXaW5kb3cyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBsZXQgc2NhbGUgPSBjcmVhdGVDb29yZHMoMSk7XG4gIGlmIChpbmNsdWRlU2NhbGUpIHtcbiAgICBpZiAob2Zmc2V0UGFyZW50KSB7XG4gICAgICBpZiAoaXNFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB2aXN1YWxPZmZzZXRzID0gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhkb21FbGVtZW50LCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkgPyBnZXRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDApO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93Mihkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cyKG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBjdXJyZW50V2luLmZyYW1lRWxlbWVudDtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSBjdXJyZW50V2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlMihjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3cyKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY3VycmVudElGcmFtZSA9IGN1cnJlbnRXaW4uZnJhbWVFbGVtZW50O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cbmZ1bmN0aW9uIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSBcImZpeGVkXCI7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCB0b3BMYXllciA9IGVsZW1lbnRzID8gaXNUb3BMYXllcihlbGVtZW50cy5mbG9hdGluZykgOiBmYWxzZTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50IHx8IHRvcExheWVyICYmIGlzRml4ZWQpIHtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gXCJib2R5XCIgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55XG4gIH07XG59XG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0cyhlbGVtZW50KSB7XG4gIHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKSk7XG59XG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59XG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUyKGJvZHkpLmRpcmVjdGlvbiA9PT0gXCJydGxcIikge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpIC0gd2lkdGg7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93MihlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSBcImZpeGVkXCIpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIHN0cmF0ZWd5ID09PSBcImZpeGVkXCIpO1xuICBjb25zdCB0b3AgPSBjbGllbnRSZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICBjb25zdCBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICBjb25zdCBzY2FsZSA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRTY2FsZShlbGVtZW50KSA6IGNyZWF0ZUNvb3JkcygxKTtcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoICogc2NhbGUueDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY2FsZS55O1xuICBjb25zdCB4ID0gbGVmdCAqIHNjYWxlLng7XG4gIGNvbnN0IHkgPSB0b3AgKiBzY2FsZS55O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkge1xuICBsZXQgcmVjdDtcbiAgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09IFwidmlld3BvcnRcIikge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09IFwiZG9jdW1lbnRcIikge1xuICAgIHJlY3QgPSBnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0VsZW1lbnQoY2xpcHBpbmdBbmNlc3RvcikpIHtcbiAgICByZWN0ID0gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQpO1xuICAgIHJlY3QgPSB7XG4gICAgICAuLi5jbGlwcGluZ0FuY2VzdG9yLFxuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlMihwYXJlbnROb2RlKS5wb3NpdGlvbiA9PT0gXCJmaXhlZFwiIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5mdW5jdGlvbiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgY2FjaGUyKSB7XG4gIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGNhY2hlMi5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcigoZWwpID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSBcImJvZHlcIik7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZTIoZWxlbWVudCkucG9zaXRpb24gPT09IFwiZml4ZWRcIjtcbiAgbGV0IGN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIDogZWxlbWVudDtcbiAgd2hpbGUgKGlzRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgIWlzTGFzdFRyYXZlcnNhYmxlTm9kZShjdXJyZW50Tm9kZSkpIHtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZTIoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gXCJmaXhlZFwiKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSBcInN0YXRpY1wiICYmICEhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgJiYgW1wiYWJzb2x1dGVcIiwgXCJmaXhlZFwiXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoKGFuY2VzdG9yKSA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUyLnNldChlbGVtZW50LCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09IFwiY2xpcHBpbmdBbmNlc3RvcnNcIiA/IGlzVG9wTGF5ZXIoZWxlbWVudCkgPyBbXSA6IGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCB0aGlzLl9jKSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIGNvbnN0IGNsaXBwaW5nQW5jZXN0b3JzID0gWy4uLmVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycywgcm9vdEJvdW5kYXJ5XTtcbiAgY29uc3QgZmlyc3RDbGlwcGluZ0FuY2VzdG9yID0gY2xpcHBpbmdBbmNlc3RvcnNbMF07XG4gIGNvbnN0IGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nQW5jZXN0b3JzLnJlZHVjZSgoYWNjUmVjdCwgY2xpcHBpbmdBbmNlc3RvcikgPT4ge1xuICAgIGNvbnN0IHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgY2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBmaXJzdENsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIGhlaWdodDogY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3AsXG4gICAgeDogY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgeTogY2xpcHBpbmdSZWN0LnRvcFxuICB9O1xufVxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH07XG59XG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSBcImZpeGVkXCI7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09IFwiYm9keVwiIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50KSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cbmZ1bmN0aW9uIGlzU3RhdGljUG9zaXRpb25lZChlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlMihlbGVtZW50KS5wb3NpdGlvbiA9PT0gXCJzdGF0aWNcIjtcbn1cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IGdldENvbXB1dGVkU3R5bGUyKGVsZW1lbnQpLnBvc2l0aW9uID09PSBcImZpeGVkXCIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufVxuZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdzIoZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG52YXIgZ2V0RWxlbWVudFJlY3RzID0gYXN5bmMgZnVuY3Rpb24oZGF0YSkge1xuICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgY29uc3QgZ2V0RGltZW5zaW9uc0ZuID0gdGhpcy5nZXREaW1lbnNpb25zO1xuICBjb25zdCBmbG9hdGluZ0RpbWVuc2lvbnMgPSBhd2FpdCBnZXREaW1lbnNpb25zRm4oZGF0YS5mbG9hdGluZyk7XG4gIHJldHVybiB7XG4gICAgcmVmZXJlbmNlOiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChkYXRhLnJlZmVyZW5jZSwgYXdhaXQgZ2V0T2Zmc2V0UGFyZW50Rm4oZGF0YS5mbG9hdGluZyksIGRhdGEuc3RyYXRlZ3kpLFxuICAgIGZsb2F0aW5nOiB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMCxcbiAgICAgIHdpZHRoOiBmbG9hdGluZ0RpbWVuc2lvbnMud2lkdGgsXG4gICAgICBoZWlnaHQ6IGZsb2F0aW5nRGltZW5zaW9ucy5oZWlnaHRcbiAgICB9XG4gIH07XG59O1xuZnVuY3Rpb24gaXNSVEwyKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUyKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gXCJydGxcIjtcbn1cbnZhciBwbGF0Zm9ybSA9IHtcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldEVsZW1lbnRSZWN0cyxcbiAgZ2V0Q2xpZW50UmVjdHMsXG4gIGdldERpbWVuc2lvbnMsXG4gIGdldFNjYWxlLFxuICBpc0VsZW1lbnQsXG4gIGlzUlRMOiBpc1JUTDJcbn07XG5mdW5jdGlvbiBvYnNlcnZlTW92ZShlbGVtZW50LCBvbk1vdmUpIHtcbiAgbGV0IGlvID0gbnVsbDtcbiAgbGV0IHRpbWVvdXRJZDtcbiAgY29uc3Qgcm9vdCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICB2YXIgX2lvO1xuICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgIChfaW8gPSBpbykgPT0gbnVsbCB8fCBfaW8uZGlzY29ubmVjdCgpO1xuICAgIGlvID0gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiByZWZyZXNoKHNraXAsIHRocmVzaG9sZCkge1xuICAgIGlmIChza2lwID09PSB2b2lkIDApIHtcbiAgICAgIHNraXAgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRocmVzaG9sZCA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJlc2hvbGQgPSAxO1xuICAgIH1cbiAgICBjbGVhbnVwKCk7XG4gICAgY29uc3Qge1xuICAgICAgbGVmdCxcbiAgICAgIHRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfSA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllczIpIHtcbiAgICAgIGNvbnN0IHJhdGlvID0gZW50cmllczJbMF0uaW50ZXJzZWN0aW9uUmF0aW87XG4gICAgICBpZiAocmF0aW8gIT09IHRocmVzaG9sZCkge1xuICAgICAgICBpZiAoIWlzRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgICByZXR1cm4gcmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmF0aW8pIHtcbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDFlMyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVmcmVzaChmYWxzZSwgcmF0aW8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpc0ZpcnN0VXBkYXRlID0gZmFsc2U7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVPYnNlcnZlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIC8vIEhhbmRsZSA8aWZyYW1lPnNcbiAgICAgICAgcm9vdDogcm9vdC5vd25lckRvY3VtZW50XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlMikge1xuICAgICAgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoaGFuZGxlT2JzZXJ2ZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlvLm9ic2VydmUoZWxlbWVudCk7XG4gIH1cbiAgcmVmcmVzaCh0cnVlKTtcbiAgcmV0dXJuIGNsZWFudXA7XG59XG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgPT09IFwiZnVuY3Rpb25cIixcbiAgICBsYXlvdXRTaGlmdCA9IHR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9PT0gXCJmdW5jdGlvblwiLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi5yZWZlcmVuY2VFbCA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZUVsKSA6IFtdLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKChhbmNlc3RvcikgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgdXBkYXRlLCB7XG4gICAgICBwYXNzaXZlOiB0cnVlXG4gICAgfSk7XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB1cGRhdGUpO1xuICB9KTtcbiAgY29uc3QgY2xlYW51cElvID0gcmVmZXJlbmNlRWwgJiYgbGF5b3V0U2hpZnQgPyBvYnNlcnZlTW92ZShyZWZlcmVuY2VFbCwgdXBkYXRlKSA6IG51bGw7XG4gIGxldCByZW9ic2VydmVGcmFtZSA9IC0xO1xuICBsZXQgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICBpZiAoZWxlbWVudFJlc2l6ZSkge1xuICAgIHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChfcmVmKSA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZmxvYXRpbmcpO1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyZW9ic2VydmVGcmFtZSk7XG4gICAgICAgIHJlb2JzZXJ2ZUZyYW1lID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICB2YXIgX3Jlc2l6ZU9ic2VydmVyO1xuICAgICAgICAgIChfcmVzaXplT2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcikgPT0gbnVsbCB8fCBfcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaWYgKHJlZmVyZW5jZUVsICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2VFbCk7XG4gICAgfVxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZmxvYXRpbmcpO1xuICB9XG4gIGxldCBmcmFtZUlkO1xuICBsZXQgcHJldlJlZlJlY3QgPSBhbmltYXRpb25GcmFtZSA/IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpIDogbnVsbDtcbiAgaWYgKGFuaW1hdGlvbkZyYW1lKSB7XG4gICAgZnJhbWVMb29wKCk7XG4gIH1cbiAgZnVuY3Rpb24gZnJhbWVMb29wKCkge1xuICAgIGNvbnN0IG5leHRSZWZSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSk7XG4gICAgaWYgKHByZXZSZWZSZWN0ICYmIChuZXh0UmVmUmVjdC54ICE9PSBwcmV2UmVmUmVjdC54IHx8IG5leHRSZWZSZWN0LnkgIT09IHByZXZSZWZSZWN0LnkgfHwgbmV4dFJlZlJlY3Qud2lkdGggIT09IHByZXZSZWZSZWN0LndpZHRoIHx8IG5leHRSZWZSZWN0LmhlaWdodCAhPT0gcHJldlJlZlJlY3QuaGVpZ2h0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKChhbmNlc3RvcikgPT4ge1xuICAgICAgYW5jZXN0b3JTY3JvbGwgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxudmFyIG9mZnNldDIgPSBvZmZzZXQ7XG52YXIgc2hpZnQyID0gc2hpZnQ7XG52YXIgZmxpcDIgPSBmbGlwO1xudmFyIHNpemUyID0gc2l6ZTtcbnZhciBoaWRlMiA9IGhpZGU7XG52YXIgYXJyb3cyID0gYXJyb3c7XG52YXIgY29tcHV0ZVBvc2l0aW9uMiA9IChyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IGNhY2hlMiA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB7XG4gICAgcGxhdGZvcm0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuICBjb25zdCBwbGF0Zm9ybVdpdGhDYWNoZSA9IHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLnBsYXRmb3JtLFxuICAgIF9jOiBjYWNoZTJcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay80WDJFS1VKMy5qc1xudmFyIFBvcHBlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VQb3BwZXJDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChQb3BwZXJDb250ZXh0KTtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogYHVzZVBvcHBlckNvbnRleHRgIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgUG9wcGVyYCBjb21wb25lbnRcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgX3RtcGwkID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIGRpc3BsYXk9XCJibG9ja1wiIHZpZXdCb3g9XCIwIDAgMzAgMzBcIiBzdHlsZT1cInRyYW5zZm9ybTpzY2FsZSgxLjAyKVwiPjxnPjxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0yMywyNy44YzEuMSwxLjIsMy40LDIuMiw1LDIuMmgySDBoMmMxLjcsMCwzLjktMSw1LTIuMmw2LjYtNy4yYzAuNy0wLjgsMi0wLjgsMi43LDBMMjMsMjcuOEwyMywyNy44elwiPjwvcGF0aD48cGF0aCBzdHJva2U9XCJub25lXCIgZD1cIk0yMywyNy44YzEuMSwxLjIsMy40LDIuMiw1LDIuMmgySDBoMmMxLjcsMCwzLjktMSw1LTIuMmw2LjYtNy4yYzAuNy0wLjgsMi0wLjgsMi43LDBMMjMsMjcuOEwyMywyNy44elwiPmApO1xudmFyIERFRkFVTFRfU0laRSA9IDMwO1xudmFyIEhBTEZfREVGQVVMVF9TSVpFID0gREVGQVVMVF9TSVpFIC8gMjtcbnZhciBST1RBVElPTl9ERUcgPSB7XG4gIHRvcDogMTgwLFxuICByaWdodDogLTkwLFxuICBib3R0b206IDAsXG4gIGxlZnQ6IDkwXG59O1xuZnVuY3Rpb24gUG9wcGVyQXJyb3cocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZVBvcHBlckNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgc2l6ZTogREVGQVVMVF9TSVpFXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wicmVmXCIsIFwic3R5bGVcIiwgXCJzaXplXCJdKTtcbiAgY29uc3QgZGlyID0gKCkgPT4gY29udGV4dC5jdXJyZW50UGxhY2VtZW50KCkuc3BsaXQoXCItXCIpWzBdO1xuICBjb25zdCBjb250ZW50U3R5bGUgPSBjcmVhdGVDb21wdXRlZFN0eWxlKGNvbnRleHQuY29udGVudFJlZik7XG4gIGNvbnN0IGZpbGwgPSAoKSA9PiBjb250ZW50U3R5bGUoKT8uZ2V0UHJvcGVydHlWYWx1ZShcImJhY2tncm91bmQtY29sb3JcIikgfHwgXCJub25lXCI7XG4gIGNvbnN0IHN0cm9rZSA9ICgpID0+IGNvbnRlbnRTdHlsZSgpPy5nZXRQcm9wZXJ0eVZhbHVlKGBib3JkZXItJHtkaXIoKX0tY29sb3JgKSB8fCBcIm5vbmVcIjtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSAoKSA9PiBjb250ZW50U3R5bGUoKT8uZ2V0UHJvcGVydHlWYWx1ZShgYm9yZGVyLSR7ZGlyKCl9LXdpZHRoYCkgfHwgXCIwcHhcIjtcbiAgY29uc3Qgc3Ryb2tlV2lkdGggPSAoKSA9PiB7XG4gICAgcmV0dXJuIE51bWJlci5wYXJzZUludChib3JkZXJXaWR0aCgpKSAqIDIgKiAoREVGQVVMVF9TSVpFIC8gbG9jYWwuc2l6ZSk7XG4gIH07XG4gIGNvbnN0IHJvdGF0ZSA9ICgpID0+IHtcbiAgICByZXR1cm4gYHJvdGF0ZSgke1JPVEFUSU9OX0RFR1tkaXIoKV19ICR7SEFMRl9ERUZBVUxUX1NJWkV9ICR7SEFMRl9ERUZBVUxUX1NJWkV9KSB0cmFuc2xhdGUoMCAyKWA7XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImRpdlwiLFxuICAgIHJlZihyJCkge1xuICAgICAgY29uc3QgX3JlZiQgPSBtZXJnZVJlZnMoY29udGV4dC5zZXRBcnJvd1JlZiwgbG9jYWwucmVmKTtcbiAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICB9LFxuICAgIFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIsXG4gICAgZ2V0IHN0eWxlKCkge1xuICAgICAgcmV0dXJuIGNvbWJpbmVTdHlsZSh7XG4gICAgICAgIC8vIHNlcnZlciBzaWRlIHJlbmRlcmluZ1xuICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICBcImZvbnQtc2l6ZVwiOiBgJHtsb2NhbC5zaXplfXB4YCxcbiAgICAgICAgd2lkdGg6IFwiMWVtXCIsXG4gICAgICAgIGhlaWdodDogXCIxZW1cIixcbiAgICAgICAgXCJwb2ludGVyLWV2ZW50c1wiOiBcIm5vbmVcIixcbiAgICAgICAgZmlsbDogZmlsbCgpLFxuICAgICAgICBzdHJva2U6IHN0cm9rZSgpLFxuICAgICAgICBcInN0cm9rZS13aWR0aFwiOiBzdHJva2VXaWR0aCgpXG4gICAgICB9LCBsb2NhbC5zdHlsZSk7XG4gICAgfVxuICB9LCBvdGhlcnMsIHtcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICBjb25zdCBfZWwkID0gX3RtcGwkKCksIF9lbCQyID0gX2VsJC5maXJzdENoaWxkO1xuICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IHNldEF0dHJpYnV0ZShfZWwkMiwgXCJ0cmFuc2Zvcm1cIiwgcm90YXRlKCkpKTtcbiAgICAgIHJldHVybiBfZWwkO1xuICAgIH1cbiAgfSkpO1xufVxuZnVuY3Rpb24gY3JlYXRlQ29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIGNvbnN0IFtzdHlsZSwgc2V0U3R5bGVdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBlbGVtZW50KCk7XG4gICAgZWwgJiYgc2V0U3R5bGUoZ2V0V2luZG93KGVsKS5nZXRDb21wdXRlZFN0eWxlKGVsKSk7XG4gIH0pO1xuICByZXR1cm4gc3R5bGU7XG59XG5mdW5jdGlvbiBQb3BwZXJQb3NpdGlvbmVyKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VQb3BwZXJDb250ZXh0KCk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMocHJvcHMsIFtcInJlZlwiLCBcInN0eWxlXCJdKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCIsXG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcyhjb250ZXh0LnNldFBvc2l0aW9uZXJSZWYsIGxvY2FsLnJlZik7XG4gICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgfSxcbiAgICBcImRhdGEtcG9wcGVyLXBvc2l0aW9uZXJcIjogXCJcIixcbiAgICBnZXQgc3R5bGUoKSB7XG4gICAgICByZXR1cm4gY29tYmluZVN0eWxlKHtcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICBcIm1pbi13aWR0aFwiOiBcIm1heC1jb250ZW50XCJcbiAgICAgIH0sIGxvY2FsLnN0eWxlKTtcbiAgICB9XG4gIH0sIG90aGVycykpO1xufVxuZnVuY3Rpb24gY3JlYXRlRE9NUmVjdChhbmNob3JSZWN0KSB7XG4gIGNvbnN0IHsgeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDAsIGhlaWdodCA9IDAgfSA9IGFuY2hvclJlY3QgPz8ge307XG4gIGlmICh0eXBlb2YgRE9NUmVjdCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIG5ldyBET01SZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpO1xuICB9XG4gIGNvbnN0IHJlY3QgPSB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgbGVmdDogeFxuICB9O1xuICByZXR1cm4geyAuLi5yZWN0LCB0b0pTT046ICgpID0+IHJlY3QgfTtcbn1cbmZ1bmN0aW9uIGdldEFuY2hvckVsZW1lbnQoYW5jaG9yLCBnZXRBbmNob3JSZWN0KSB7XG4gIGNvbnN0IGNvbnRleHRFbGVtZW50ID0gYW5jaG9yO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHRFbGVtZW50LFxuICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdDogKCkgPT4ge1xuICAgICAgY29uc3QgYW5jaG9yUmVjdCA9IGdldEFuY2hvclJlY3QoYW5jaG9yKTtcbiAgICAgIGlmIChhbmNob3JSZWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVET01SZWN0KGFuY2hvclJlY3QpO1xuICAgICAgfVxuICAgICAgaWYgKGFuY2hvcikge1xuICAgICAgICByZXR1cm4gYW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNyZWF0ZURPTVJlY3QoKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBpc1ZhbGlkUGxhY2VtZW50KGZsaXAyMikge1xuICByZXR1cm4gL14oPzp0b3B8Ym90dG9tfGxlZnR8cmlnaHQpKD86LSg/OnN0YXJ0fGVuZCkpPyQvLnRlc3QoZmxpcDIyKTtcbn1cbnZhciBSRVZFUlNFX0JBU0VfUExBQ0VNRU5UID0ge1xuICB0b3A6IFwiYm90dG9tXCIsXG4gIHJpZ2h0OiBcImxlZnRcIixcbiAgYm90dG9tOiBcInRvcFwiLFxuICBsZWZ0OiBcInJpZ2h0XCJcbn07XG5mdW5jdGlvbiBnZXRUcmFuc2Zvcm1PcmlnaW4ocGxhY2VtZW50LCByZWFkaW5nRGlyZWN0aW9uKSB7XG4gIGNvbnN0IFtiYXNlUGxhY2VtZW50LCBhbGlnbm1lbnRdID0gcGxhY2VtZW50LnNwbGl0KFwiLVwiKTtcbiAgY29uc3QgcmV2ZXJzZVBsYWNlbWVudCA9IFJFVkVSU0VfQkFTRV9QTEFDRU1FTlRbYmFzZVBsYWNlbWVudF07XG4gIGlmICghYWxpZ25tZW50KSB7XG4gICAgcmV0dXJuIGAke3JldmVyc2VQbGFjZW1lbnR9IGNlbnRlcmA7XG4gIH1cbiAgaWYgKGJhc2VQbGFjZW1lbnQgPT09IFwibGVmdFwiIHx8IGJhc2VQbGFjZW1lbnQgPT09IFwicmlnaHRcIikge1xuICAgIHJldHVybiBgJHtyZXZlcnNlUGxhY2VtZW50fSAke2FsaWdubWVudCA9PT0gXCJzdGFydFwiID8gXCJ0b3BcIiA6IFwiYm90dG9tXCJ9YDtcbiAgfVxuICBpZiAoYWxpZ25tZW50ID09PSBcInN0YXJ0XCIpIHtcbiAgICByZXR1cm4gYCR7cmV2ZXJzZVBsYWNlbWVudH0gJHtyZWFkaW5nRGlyZWN0aW9uID09PSBcInJ0bFwiID8gXCJyaWdodFwiIDogXCJsZWZ0XCJ9YDtcbiAgfVxuICByZXR1cm4gYCR7cmV2ZXJzZVBsYWNlbWVudH0gJHtyZWFkaW5nRGlyZWN0aW9uID09PSBcInJ0bFwiID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCJ9YDtcbn1cbmZ1bmN0aW9uIFBvcHBlclJvb3QocHJvcHMpIHtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgZ2V0QW5jaG9yUmVjdDogKGFuY2hvcikgPT4gYW5jaG9yPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICBwbGFjZW1lbnQ6IFwiYm90dG9tXCIsXG4gICAgZ3V0dGVyOiAwLFxuICAgIHNoaWZ0OiAwLFxuICAgIGZsaXA6IHRydWUsXG4gICAgc2xpZGU6IHRydWUsXG4gICAgb3ZlcmxhcDogZmFsc2UsXG4gICAgc2FtZVdpZHRoOiBmYWxzZSxcbiAgICBmaXRWaWV3cG9ydDogZmFsc2UsXG4gICAgaGlkZVdoZW5EZXRhY2hlZDogZmFsc2UsXG4gICAgZGV0YWNoZWRQYWRkaW5nOiAwLFxuICAgIGFycm93UGFkZGluZzogNCxcbiAgICBvdmVyZmxvd1BhZGRpbmc6IDhcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbcG9zaXRpb25lclJlZiwgc2V0UG9zaXRpb25lclJlZl0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2Fycm93UmVmLCBzZXRBcnJvd1JlZl0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2N1cnJlbnRQbGFjZW1lbnQsIHNldEN1cnJlbnRQbGFjZW1lbnRdID0gY3JlYXRlU2lnbmFsKG1lcmdlZFByb3BzLnBsYWNlbWVudCk7XG4gIGNvbnN0IGFuY2hvclJlZiA9ICgpID0+IGdldEFuY2hvckVsZW1lbnQobWVyZ2VkUHJvcHMuYW5jaG9yUmVmPy4oKSwgbWVyZ2VkUHJvcHMuZ2V0QW5jaG9yUmVjdCk7XG4gIGNvbnN0IHtcbiAgICBkaXJlY3Rpb25cbiAgfSA9IHVzZUxvY2FsZSgpO1xuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBjb25zdCByZWZlcmVuY2VFbCA9IGFuY2hvclJlZigpO1xuICAgIGNvbnN0IGZsb2F0aW5nRWwgPSBwb3NpdGlvbmVyUmVmKCk7XG4gICAgY29uc3QgYXJyb3dFbCA9IGFycm93UmVmKCk7XG4gICAgaWYgKCFyZWZlcmVuY2VFbCB8fCAhZmxvYXRpbmdFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhcnJvd09mZnNldCA9IChhcnJvd0VsPy5jbGllbnRIZWlnaHQgfHwgMCkgLyAyO1xuICAgIGNvbnN0IGZpbmFsR3V0dGVyID0gdHlwZW9mIG1lcmdlZFByb3BzLmd1dHRlciA9PT0gXCJudW1iZXJcIiA/IG1lcmdlZFByb3BzLmd1dHRlciArIGFycm93T2Zmc2V0IDogbWVyZ2VkUHJvcHMuZ3V0dGVyID8/IGFycm93T2Zmc2V0O1xuICAgIGZsb2F0aW5nRWwuc3R5bGUuc2V0UHJvcGVydHkoXCItLWtiLXBvcHBlci1jb250ZW50LW92ZXJmbG93LXBhZGRpbmdcIiwgYCR7bWVyZ2VkUHJvcHMub3ZlcmZsb3dQYWRkaW5nfXB4YCk7XG4gICAgcmVmZXJlbmNlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgbWlkZGxld2FyZSA9IFtcbiAgICAgIC8vIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gICAgICBvZmZzZXQyKCh7XG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNBbGlnbm1lbnQgPSAhIXBsYWNlbWVudC5zcGxpdChcIi1cIilbMV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWFpbkF4aXM6IGZpbmFsR3V0dGVyLFxuICAgICAgICAgIGNyb3NzQXhpczogIWhhc0FsaWdubWVudCA/IG1lcmdlZFByb3BzLnNoaWZ0IDogdm9pZCAwLFxuICAgICAgICAgIGFsaWdubWVudEF4aXM6IG1lcmdlZFByb3BzLnNoaWZ0XG4gICAgICAgIH07XG4gICAgICB9KVxuICAgIF07XG4gICAgaWYgKG1lcmdlZFByb3BzLmZsaXAgIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBmYWxsYmFja1BsYWNlbWVudHMgPSB0eXBlb2YgbWVyZ2VkUHJvcHMuZmxpcCA9PT0gXCJzdHJpbmdcIiA/IG1lcmdlZFByb3BzLmZsaXAuc3BsaXQoXCIgXCIpIDogdm9pZCAwO1xuICAgICAgaWYgKGZhbGxiYWNrUGxhY2VtZW50cyAhPT0gdm9pZCAwICYmICFmYWxsYmFja1BsYWNlbWVudHMuZXZlcnkoaXNWYWxpZFBsYWNlbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYGZsaXBgIGV4cGVjdHMgYSBzcGFjZWQtZGVsaW1pdGVkIGxpc3Qgb2YgcGxhY2VtZW50c1wiKTtcbiAgICAgIH1cbiAgICAgIG1pZGRsZXdhcmUucHVzaChmbGlwMih7XG4gICAgICAgIHBhZGRpbmc6IG1lcmdlZFByb3BzLm92ZXJmbG93UGFkZGluZyxcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGlmIChtZXJnZWRQcm9wcy5zbGlkZSB8fCBtZXJnZWRQcm9wcy5vdmVybGFwKSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goc2hpZnQyKHtcbiAgICAgICAgbWFpbkF4aXM6IG1lcmdlZFByb3BzLnNsaWRlLFxuICAgICAgICBjcm9zc0F4aXM6IG1lcmdlZFByb3BzLm92ZXJsYXAsXG4gICAgICAgIHBhZGRpbmc6IG1lcmdlZFByb3BzLm92ZXJmbG93UGFkZGluZ1xuICAgICAgfSkpO1xuICAgIH1cbiAgICBtaWRkbGV3YXJlLnB1c2goc2l6ZTIoe1xuICAgICAgcGFkZGluZzogbWVyZ2VkUHJvcHMub3ZlcmZsb3dQYWRkaW5nLFxuICAgICAgYXBwbHkoe1xuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0LFxuICAgICAgICByZWN0c1xuICAgICAgfSkge1xuICAgICAgICBjb25zdCByZWZlcmVuY2VXaWR0aCA9IE1hdGgucm91bmQocmVjdHMucmVmZXJlbmNlLndpZHRoKTtcbiAgICAgICAgYXZhaWxhYmxlV2lkdGggPSBNYXRoLmZsb29yKGF2YWlsYWJsZVdpZHRoKTtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gTWF0aC5mbG9vcihhdmFpbGFibGVIZWlnaHQpO1xuICAgICAgICBmbG9hdGluZ0VsLnN0eWxlLnNldFByb3BlcnR5KFwiLS1rYi1wb3BwZXItYW5jaG9yLXdpZHRoXCIsIGAke3JlZmVyZW5jZVdpZHRofXB4YCk7XG4gICAgICAgIGZsb2F0aW5nRWwuc3R5bGUuc2V0UHJvcGVydHkoXCItLWtiLXBvcHBlci1jb250ZW50LWF2YWlsYWJsZS13aWR0aFwiLCBgJHthdmFpbGFibGVXaWR0aH1weGApO1xuICAgICAgICBmbG9hdGluZ0VsLnN0eWxlLnNldFByb3BlcnR5KFwiLS1rYi1wb3BwZXItY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XCIsIGAke2F2YWlsYWJsZUhlaWdodH1weGApO1xuICAgICAgICBpZiAobWVyZ2VkUHJvcHMuc2FtZVdpZHRoKSB7XG4gICAgICAgICAgZmxvYXRpbmdFbC5zdHlsZS53aWR0aCA9IGAke3JlZmVyZW5jZVdpZHRofXB4YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVyZ2VkUHJvcHMuZml0Vmlld3BvcnQpIHtcbiAgICAgICAgICBmbG9hdGluZ0VsLnN0eWxlLm1heFdpZHRoID0gYCR7YXZhaWxhYmxlV2lkdGh9cHhgO1xuICAgICAgICAgIGZsb2F0aW5nRWwuc3R5bGUubWF4SGVpZ2h0ID0gYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgICBpZiAobWVyZ2VkUHJvcHMuaGlkZVdoZW5EZXRhY2hlZCkge1xuICAgICAgbWlkZGxld2FyZS5wdXNoKGhpZGUyKHtcbiAgICAgICAgcGFkZGluZzogbWVyZ2VkUHJvcHMuZGV0YWNoZWRQYWRkaW5nXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGlmIChhcnJvd0VsKSB7XG4gICAgICBtaWRkbGV3YXJlLnB1c2goYXJyb3cyKHtcbiAgICAgICAgZWxlbWVudDogYXJyb3dFbCxcbiAgICAgICAgcGFkZGluZzogbWVyZ2VkUHJvcHMuYXJyb3dQYWRkaW5nXG4gICAgICB9KSk7XG4gICAgfVxuICAgIGNvbnN0IHBvcyA9IGF3YWl0IGNvbXB1dGVQb3NpdGlvbjIocmVmZXJlbmNlRWwsIGZsb2F0aW5nRWwsIHtcbiAgICAgIHBsYWNlbWVudDogbWVyZ2VkUHJvcHMucGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3k6IFwiYWJzb2x1dGVcIixcbiAgICAgIG1pZGRsZXdhcmUsXG4gICAgICBwbGF0Zm9ybToge1xuICAgICAgICAuLi5wbGF0Zm9ybSxcbiAgICAgICAgaXNSVEw6ICgpID0+IGRpcmVjdGlvbigpID09PSBcInJ0bFwiXG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0Q3VycmVudFBsYWNlbWVudChwb3MucGxhY2VtZW50KTtcbiAgICBtZXJnZWRQcm9wcy5vbkN1cnJlbnRQbGFjZW1lbnRDaGFuZ2U/Lihwb3MucGxhY2VtZW50KTtcbiAgICBpZiAoIWZsb2F0aW5nRWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZmxvYXRpbmdFbC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0ta2ItcG9wcGVyLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwiLCBnZXRUcmFuc2Zvcm1PcmlnaW4ocG9zLnBsYWNlbWVudCwgZGlyZWN0aW9uKCkpKTtcbiAgICBjb25zdCB4ID0gTWF0aC5yb3VuZChwb3MueCk7XG4gICAgY29uc3QgeSA9IE1hdGgucm91bmQocG9zLnkpO1xuICAgIGxldCB2aXNpYmlsaXR5O1xuICAgIGlmIChtZXJnZWRQcm9wcy5oaWRlV2hlbkRldGFjaGVkKSB7XG4gICAgICB2aXNpYmlsaXR5ID0gcG9zLm1pZGRsZXdhcmVEYXRhLmhpZGU/LnJlZmVyZW5jZUhpZGRlbiA/IFwiaGlkZGVuXCIgOiBcInZpc2libGVcIjtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihmbG9hdGluZ0VsLnN0eWxlLCB7XG4gICAgICB0b3A6IFwiMFwiLFxuICAgICAgbGVmdDogXCIwXCIsXG4gICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUzZCgke3h9cHgsICR7eX1weCwgMClgLFxuICAgICAgdmlzaWJpbGl0eVxuICAgIH0pO1xuICAgIGlmIChhcnJvd0VsICYmIHBvcy5taWRkbGV3YXJlRGF0YS5hcnJvdykge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4OiBhcnJvd1gsXG4gICAgICAgIHk6IGFycm93WVxuICAgICAgfSA9IHBvcy5taWRkbGV3YXJlRGF0YS5hcnJvdztcbiAgICAgIGNvbnN0IGRpciA9IHBvcy5wbGFjZW1lbnQuc3BsaXQoXCItXCIpWzBdO1xuICAgICAgT2JqZWN0LmFzc2lnbihhcnJvd0VsLnN0eWxlLCB7XG4gICAgICAgIGxlZnQ6IGFycm93WCAhPSBudWxsID8gYCR7YXJyb3dYfXB4YCA6IFwiXCIsXG4gICAgICAgIHRvcDogYXJyb3dZICE9IG51bGwgPyBgJHthcnJvd1l9cHhgIDogXCJcIixcbiAgICAgICAgW2Rpcl06IFwiMTAwJVwiXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCByZWZlcmVuY2VFbCA9IGFuY2hvclJlZigpO1xuICAgIGNvbnN0IGZsb2F0aW5nRWwgPSBwb3NpdGlvbmVyUmVmKCk7XG4gICAgaWYgKCFyZWZlcmVuY2VFbCB8fCAhZmxvYXRpbmdFbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbnVwQXV0b1VwZGF0ZSA9IGF1dG9VcGRhdGUocmVmZXJlbmNlRWwsIGZsb2F0aW5nRWwsIHVwZGF0ZVBvc2l0aW9uLCB7XG4gICAgICAvLyBKU0RPTSBkb2Vzbid0IHN1cHBvcnQgUmVzaXplT2JzZXJ2ZXJcbiAgICAgIGVsZW1lbnRSZXNpemU6IHR5cGVvZiBSZXNpemVPYnNlcnZlciA9PT0gXCJmdW5jdGlvblwiXG4gICAgfSk7XG4gICAgb25DbGVhbnVwKGNsZWFudXBBdXRvVXBkYXRlKTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcG9zaXRpb25lciA9IHBvc2l0aW9uZXJSZWYoKTtcbiAgICBjb25zdCBjb250ZW50ID0gbWVyZ2VkUHJvcHMuY29udGVudFJlZj8uKCk7XG4gICAgaWYgKCFwb3NpdGlvbmVyIHx8ICFjb250ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIHBvc2l0aW9uZXIuc3R5bGUuekluZGV4ID0gZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50KS56SW5kZXg7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgY29udGVudFJlZjogKCkgPT4gbWVyZ2VkUHJvcHMuY29udGVudFJlZj8uKCksXG4gICAgc2V0UG9zaXRpb25lclJlZixcbiAgICBzZXRBcnJvd1JlZlxuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvcHBlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gbWVyZ2VkUHJvcHMuY2hpbGRyZW47XG4gICAgfVxuICB9KTtcbn1cbnZhciBQb3BwZXIgPSBPYmplY3QuYXNzaWduKFBvcHBlclJvb3QsIHtcbiAgQXJyb3c6IFBvcHBlckFycm93LFxuICBDb250ZXh0OiBQb3BwZXJDb250ZXh0LFxuICB1c2VQb3BwZXJDb250ZXh0LFxuICBQb3NpdGlvbmVyOiBQb3BwZXJQb3NpdGlvbmVyXG59KTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvUUVNUExZWlguanNcbmZ1bmN0aW9uIGNyZWF0ZUVzY2FwZUtleURvd24ocHJvcHMpIHtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09IEV2ZW50S2V5LkVzY2FwZSkge1xuICAgICAgcHJvcHMub25Fc2NhcGVLZXlEb3duPy4oZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjY2Vzcyhwcm9wcy5pc0Rpc2FibGVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkb2N1bWVudDIgPSBwcm9wcy5vd25lckRvY3VtZW50Py4oKSA/PyBnZXREb2N1bWVudCgpO1xuICAgIGRvY3VtZW50Mi5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duKTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvUUdDTVlMVEEuanNcbnZhciBQT0lOVEVSX0RPV05fT1VUU0lERV9FVkVOVCA9IFwiaW50ZXJhY3RPdXRzaWRlLnBvaW50ZXJEb3duT3V0c2lkZVwiO1xudmFyIEZPQ1VTX09VVFNJREVfRVZFTlQgPSBcImludGVyYWN0T3V0c2lkZS5mb2N1c091dHNpZGVcIjtcbmZ1bmN0aW9uIGNyZWF0ZUludGVyYWN0T3V0c2lkZShwcm9wcywgcmVmKSB7XG4gIGxldCBwb2ludGVyRG93blRpbWVvdXRJZDtcbiAgbGV0IGNsaWNrSGFuZGxlciA9IG5vb3AzO1xuICBjb25zdCBvd25lckRvY3VtZW50ID0gKCkgPT4gZ2V0RG9jdW1lbnQocmVmKCkpO1xuICBjb25zdCBvblBvaW50ZXJEb3duT3V0c2lkZSA9IChlMikgPT4gcHJvcHMub25Qb2ludGVyRG93bk91dHNpZGU/LihlMik7XG4gIGNvbnN0IG9uRm9jdXNPdXRzaWRlID0gKGUyKSA9PiBwcm9wcy5vbkZvY3VzT3V0c2lkZT8uKGUyKTtcbiAgY29uc3Qgb25JbnRlcmFjdE91dHNpZGUgPSAoZTIpID0+IHByb3BzLm9uSW50ZXJhY3RPdXRzaWRlPy4oZTIpO1xuICBjb25zdCBpc0V2ZW50T3V0c2lkZSA9IChlMikgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGUyLnRhcmdldDtcbiAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHRhcmdldC5jbG9zZXN0KGBbJHtEQVRBX1RPUF9MQVlFUl9BVFRSfV1gKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWNvbnRhaW5zKG93bmVyRG9jdW1lbnQoKSwgdGFyZ2V0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoY29udGFpbnMocmVmKCksIHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICFwcm9wcy5zaG91bGRFeGNsdWRlRWxlbWVudD8uKHRhcmdldCk7XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlckRvd24gPSAoZTIpID0+IHtcbiAgICBmdW5jdGlvbiBoYW5kbGVyKCkge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG4gICAgICBjb25zdCB0YXJnZXQgPSBlMi50YXJnZXQ7XG4gICAgICBpZiAoIWNvbnRhaW5lciB8fCAhdGFyZ2V0IHx8ICFpc0V2ZW50T3V0c2lkZShlMikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaGFuZGxlcjIgPSBjb21wb3NlRXZlbnRIYW5kbGVycyhbXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlLFxuICAgICAgICBvbkludGVyYWN0T3V0c2lkZVxuICAgICAgXSk7XG4gICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihQT0lOVEVSX0RPV05fT1VUU0lERV9FVkVOVCwgaGFuZGxlcjIsIHtcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBjb25zdCBwb2ludGVyRG93bk91dHNpZGVFdmVudCA9IG5ldyBDdXN0b21FdmVudChcbiAgICAgICAgUE9JTlRFUl9ET1dOX09VVFNJREVfRVZFTlQsXG4gICAgICAgIHtcbiAgICAgICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZTIsXG4gICAgICAgICAgICBpc0NvbnRleHRNZW51OiBlMi5idXR0b24gPT09IDIgfHwgaXNDdHJsS2V5KGUyKSAmJiBlMi5idXR0b24gPT09IDBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChwb2ludGVyRG93bk91dHNpZGVFdmVudCk7XG4gICAgfVxuICAgIGlmIChlMi5wb2ludGVyVHlwZSA9PT0gXCJ0b3VjaFwiKSB7XG4gICAgICBvd25lckRvY3VtZW50KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZXIpO1xuICAgICAgY2xpY2tIYW5kbGVyID0gaGFuZGxlcjtcbiAgICAgIG93bmVyRG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVyKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkZvY3VzSW4gPSAoZTIpID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSByZWYoKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlMi50YXJnZXQ7XG4gICAgaWYgKCFjb250YWluZXIgfHwgIXRhcmdldCB8fCAhaXNFdmVudE91dHNpZGUoZTIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXIgPSBjb21wb3NlRXZlbnRIYW5kbGVycyhbXG4gICAgICBvbkZvY3VzT3V0c2lkZSxcbiAgICAgIG9uSW50ZXJhY3RPdXRzaWRlXG4gICAgXSk7XG4gICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoRk9DVVNfT1VUU0lERV9FVkVOVCwgaGFuZGxlciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIGNvbnN0IGZvY3VzT3V0c2lkZUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEZPQ1VTX09VVFNJREVfRVZFTlQsIHtcbiAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBvcmlnaW5hbEV2ZW50OiBlMixcbiAgICAgICAgaXNDb250ZXh0TWVudTogZmFsc2VcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0YXJnZXQuZGlzcGF0Y2hFdmVudChmb2N1c091dHNpZGVFdmVudCk7XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY2Nlc3MocHJvcHMuaXNEaXNhYmxlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcG9pbnRlckRvd25UaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvd25lckRvY3VtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIG9uUG9pbnRlckRvd24sIHRydWUpO1xuICAgIH0sIDApO1xuICAgIG93bmVyRG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLCBvbkZvY3VzSW4sIHRydWUpO1xuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHBvaW50ZXJEb3duVGltZW91dElkKTtcbiAgICAgIG93bmVyRG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgY2xpY2tIYW5kbGVyKTtcbiAgICAgIG93bmVyRG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgb25Qb2ludGVyRG93biwgdHJ1ZSk7XG4gICAgICBvd25lckRvY3VtZW50KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIiwgb25Gb2N1c0luLCB0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL0c3RzNQRlJKLmpzXG52YXIgRGlzbWlzc2FibGVMYXllckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VPcHRpb25hbERpc21pc3NhYmxlTGF5ZXJDb250ZXh0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChEaXNtaXNzYWJsZUxheWVyQ29udGV4dCk7XG59XG5mdW5jdGlvbiBEaXNtaXNzYWJsZUxheWVyKHByb3BzKSB7XG4gIGxldCByZWY7XG4gIGNvbnN0IHBhcmVudENvbnRleHQgPSB1c2VPcHRpb25hbERpc21pc3NhYmxlTGF5ZXJDb250ZXh0KCk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMocHJvcHMsIFtcInJlZlwiLCBcImRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50c1wiLCBcImV4Y2x1ZGVkRWxlbWVudHNcIiwgXCJvbkVzY2FwZUtleURvd25cIiwgXCJvblBvaW50ZXJEb3duT3V0c2lkZVwiLCBcIm9uRm9jdXNPdXRzaWRlXCIsIFwib25JbnRlcmFjdE91dHNpZGVcIiwgXCJvbkRpc21pc3NcIiwgXCJieXBhc3NUb3BNb3N0TGF5ZXJDaGVja1wiXSk7XG4gIGNvbnN0IG5lc3RlZExheWVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtdKTtcbiAgY29uc3QgcmVnaXN0ZXJOZXN0ZWRMYXllciA9IChlbGVtZW50KSA9PiB7XG4gICAgbmVzdGVkTGF5ZXJzLmFkZChlbGVtZW50KTtcbiAgICBjb25zdCBwYXJlbnRVbnJlZ2lzdGVyID0gcGFyZW50Q29udGV4dD8ucmVnaXN0ZXJOZXN0ZWRMYXllcihlbGVtZW50KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbmVzdGVkTGF5ZXJzLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgIHBhcmVudFVucmVnaXN0ZXI/LigpO1xuICAgIH07XG4gIH07XG4gIGNvbnN0IHNob3VsZEV4Y2x1ZGVFbGVtZW50ID0gKGVsZW1lbnQpID0+IHtcbiAgICBpZiAoIXJlZikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWwuZXhjbHVkZWRFbGVtZW50cz8uc29tZSgobm9kZSkgPT4gY29udGFpbnMobm9kZSgpLCBlbGVtZW50KSkgfHwgWy4uLm5lc3RlZExheWVyc10uc29tZSgobGF5ZXIpID0+IGNvbnRhaW5zKGxheWVyLCBlbGVtZW50KSk7XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlckRvd25PdXRzaWRlID0gKGUyKSA9PiB7XG4gICAgaWYgKCFyZWYgfHwgbGF5ZXJTdGFjay5pc0JlbG93UG9pbnRlckJsb2NraW5nTGF5ZXIocmVmKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWxvY2FsLmJ5cGFzc1RvcE1vc3RMYXllckNoZWNrICYmICFsYXllclN0YWNrLmlzVG9wTW9zdExheWVyKHJlZikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbG9jYWwub25Qb2ludGVyRG93bk91dHNpZGU/LihlMik7XG4gICAgbG9jYWwub25JbnRlcmFjdE91dHNpZGU/LihlMik7XG4gICAgaWYgKCFlMi5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBsb2NhbC5vbkRpc21pc3M/LigpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Gb2N1c091dHNpZGUgPSAoZTIpID0+IHtcbiAgICBsb2NhbC5vbkZvY3VzT3V0c2lkZT8uKGUyKTtcbiAgICBsb2NhbC5vbkludGVyYWN0T3V0c2lkZT8uKGUyKTtcbiAgICBpZiAoIWUyLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGxvY2FsLm9uRGlzbWlzcz8uKCk7XG4gICAgfVxuICB9O1xuICBjcmVhdGVJbnRlcmFjdE91dHNpZGUoe1xuICAgIHNob3VsZEV4Y2x1ZGVFbGVtZW50LFxuICAgIG9uUG9pbnRlckRvd25PdXRzaWRlLFxuICAgIG9uRm9jdXNPdXRzaWRlXG4gIH0sICgpID0+IHJlZik7XG4gIGNyZWF0ZUVzY2FwZUtleURvd24oe1xuICAgIG93bmVyRG9jdW1lbnQ6ICgpID0+IGdldERvY3VtZW50KHJlZiksXG4gICAgb25Fc2NhcGVLZXlEb3duOiAoZTIpID0+IHtcbiAgICAgIGlmICghcmVmIHx8ICFsYXllclN0YWNrLmlzVG9wTW9zdExheWVyKHJlZikpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9jYWwub25Fc2NhcGVLZXlEb3duPy4oZTIpO1xuICAgICAgaWYgKCFlMi5kZWZhdWx0UHJldmVudGVkICYmIGxvY2FsLm9uRGlzbWlzcykge1xuICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsb2NhbC5vbkRpc21pc3MoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBvbk1vdW50KCgpID0+IHtcbiAgICBpZiAoIXJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsYXllclN0YWNrLmFkZExheWVyKHtcbiAgICAgIG5vZGU6IHJlZixcbiAgICAgIGlzUG9pbnRlckJsb2NraW5nOiBsb2NhbC5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsXG4gICAgICBkaXNtaXNzOiBsb2NhbC5vbkRpc21pc3NcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyRnJvbVBhcmVudExheWVyID0gcGFyZW50Q29udGV4dD8ucmVnaXN0ZXJOZXN0ZWRMYXllcihyZWYpO1xuICAgIGxheWVyU3RhY2suYXNzaWduUG9pbnRlckV2ZW50VG9MYXllcnMoKTtcbiAgICBsYXllclN0YWNrLmRpc2FibGVCb2R5UG9pbnRlckV2ZW50cyhyZWYpO1xuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICBpZiAoIXJlZikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBsYXllclN0YWNrLnJlbW92ZUxheWVyKHJlZik7XG4gICAgICB1bnJlZ2lzdGVyRnJvbVBhcmVudExheWVyPy4oKTtcbiAgICAgIGxheWVyU3RhY2suYXNzaWduUG9pbnRlckV2ZW50VG9MYXllcnMoKTtcbiAgICAgIGxheWVyU3RhY2sucmVzdG9yZUJvZHlQb2ludGVyRXZlbnRzKHJlZik7XG4gICAgfSk7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3Qob24oWygpID0+IHJlZiwgKCkgPT4gbG9jYWwuZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzXSwgKFtyZWYyLCBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHNdKSA9PiB7XG4gICAgaWYgKCFyZWYyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxheWVyID0gbGF5ZXJTdGFjay5maW5kKHJlZjIpO1xuICAgIGlmIChsYXllciAmJiBsYXllci5pc1BvaW50ZXJCbG9ja2luZyAhPT0gZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzKSB7XG4gICAgICBsYXllci5pc1BvaW50ZXJCbG9ja2luZyA9IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cztcbiAgICAgIGxheWVyU3RhY2suYXNzaWduUG9pbnRlckV2ZW50VG9MYXllcnMoKTtcbiAgICB9XG4gICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cykge1xuICAgICAgbGF5ZXJTdGFjay5kaXNhYmxlQm9keVBvaW50ZXJFdmVudHMocmVmMik7XG4gICAgfVxuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICBsYXllclN0YWNrLnJlc3RvcmVCb2R5UG9pbnRlckV2ZW50cyhyZWYyKTtcbiAgICB9KTtcbiAgfSwge1xuICAgIGRlZmVyOiB0cnVlXG4gIH0pKTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICByZWdpc3Rlck5lc3RlZExheWVyXG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGlzbWlzc2FibGVMYXllckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICAgICAgYXM6IFwiZGl2XCIsXG4gICAgICAgIHJlZihyJCkge1xuICAgICAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKChlbCkgPT4gcmVmID0gZWwsIGxvY2FsLnJlZik7XG4gICAgICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgICAgICB9XG4gICAgICB9LCBvdGhlcnMpKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay83TENBTkdIRC5qc1xuZnVuY3Rpb24gY3JlYXRlRGlzY2xvc3VyZVN0YXRlKHByb3BzID0ge30pIHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZUJvb2xlYW5TaWduYWwoe1xuICAgIHZhbHVlOiAoKSA9PiBhY2Nlc3MocHJvcHMub3BlbiksXG4gICAgZGVmYXVsdFZhbHVlOiAoKSA9PiAhIWFjY2Vzcyhwcm9wcy5kZWZhdWx0T3BlbiksXG4gICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4gcHJvcHMub25PcGVuQ2hhbmdlPy4odmFsdWUpXG4gIH0pO1xuICBjb25zdCBvcGVuID0gKCkgPT4ge1xuICAgIHNldElzT3Blbih0cnVlKTtcbiAgfTtcbiAgY29uc3QgY2xvc2UgPSAoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKTtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIGlzT3BlbigpID8gY2xvc2UoKSA6IG9wZW4oKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBpc09wZW4sXG4gICAgc2V0SXNPcGVuLFxuICAgIG9wZW4sXG4gICAgY2xvc2UsXG4gICAgdG9nZ2xlXG4gIH07XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL1EyQk9GSzdJLmpzXG52YXIgcmFkaW9fZ3JvdXBfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQocmFkaW9fZ3JvdXBfZXhwb3J0cywge1xuICBEZXNjcmlwdGlvbjogKCkgPT4gRm9ybUNvbnRyb2xEZXNjcmlwdGlvbixcbiAgRXJyb3JNZXNzYWdlOiAoKSA9PiBGb3JtQ29udHJvbEVycm9yTWVzc2FnZSxcbiAgSXRlbTogKCkgPT4gUmFkaW9Hcm91cEl0ZW0sXG4gIEl0ZW1Db250cm9sOiAoKSA9PiBSYWRpb0dyb3VwSXRlbUNvbnRyb2wsXG4gIEl0ZW1EZXNjcmlwdGlvbjogKCkgPT4gUmFkaW9Hcm91cEl0ZW1EZXNjcmlwdGlvbixcbiAgSXRlbUluZGljYXRvcjogKCkgPT4gUmFkaW9Hcm91cEl0ZW1JbmRpY2F0b3IsXG4gIEl0ZW1JbnB1dDogKCkgPT4gUmFkaW9Hcm91cEl0ZW1JbnB1dCxcbiAgSXRlbUxhYmVsOiAoKSA9PiBSYWRpb0dyb3VwSXRlbUxhYmVsLFxuICBMYWJlbDogKCkgPT4gUmFkaW9Hcm91cExhYmVsLFxuICBSYWRpb0dyb3VwOiAoKSA9PiBSYWRpb0dyb3VwLFxuICBSb290OiAoKSA9PiBSYWRpb0dyb3VwUm9vdFxufSk7XG52YXIgUmFkaW9Hcm91cENvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VSYWRpb0dyb3VwQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoUmFkaW9Hcm91cENvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgdXNlUmFkaW9Hcm91cENvbnRleHRgIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgUmFkaW9Hcm91cGAgY29tcG9uZW50XCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufVxudmFyIFJhZGlvR3JvdXBJdGVtQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZVJhZGlvR3JvdXBJdGVtQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoUmFkaW9Hcm91cEl0ZW1Db250ZXh0KTtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogYHVzZVJhZGlvR3JvdXBJdGVtQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBSYWRpb0dyb3VwLkl0ZW1gIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIFJhZGlvR3JvdXBJdGVtKHByb3BzKSB7XG4gIGNvbnN0IGZvcm1Db250cm9sQ29udGV4dCA9IHVzZUZvcm1Db250cm9sQ29udGV4dCgpO1xuICBjb25zdCByYWRpb0dyb3VwQ29udGV4dCA9IHVzZVJhZGlvR3JvdXBDb250ZXh0KCk7XG4gIGNvbnN0IGRlZmF1bHRJZCA9IGAke2Zvcm1Db250cm9sQ29udGV4dC5nZW5lcmF0ZUlkKFwiaXRlbVwiKX0tJHtjcmVhdGVVbmlxdWVJZCgpfWA7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBkZWZhdWx0SWRcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJ2YWx1ZVwiLCBcImRpc2FibGVkXCIsIFwib25Qb2ludGVyRG93blwiXSk7XG4gIGNvbnN0IFtpbnB1dElkLCBzZXRJbnB1dElkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbbGFiZWxJZCwgc2V0TGFiZWxJZF0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2Rlc2NyaXB0aW9uSWQsIHNldERlc2NyaXB0aW9uSWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtpbnB1dFJlZiwgc2V0SW5wdXRSZWZdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpO1xuICBjb25zdCBpc1NlbGVjdGVkID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHJhZGlvR3JvdXBDb250ZXh0LmlzU2VsZWN0ZWRWYWx1ZShsb2NhbC52YWx1ZSk7XG4gIH0pO1xuICBjb25zdCBpc0Rpc2FibGVkID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGxvY2FsLmRpc2FibGVkIHx8IGZvcm1Db250cm9sQ29udGV4dC5pc0Rpc2FibGVkKCkgfHwgZmFsc2U7XG4gIH0pO1xuICBjb25zdCBvblBvaW50ZXJEb3duID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlckRvd24pO1xuICAgIGlmIChpc0ZvY3VzZWQoKSkge1xuICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGRhdGFzZXQgPSBjcmVhdGVNZW1vKCgpID0+ICh7XG4gICAgLi4uZm9ybUNvbnRyb2xDb250ZXh0LmRhdGFzZXQoKSxcbiAgICBcImRhdGEtZGlzYWJsZWRcIjogaXNEaXNhYmxlZCgpID8gXCJcIiA6IHZvaWQgMCxcbiAgICBcImRhdGEtY2hlY2tlZFwiOiBpc1NlbGVjdGVkKCkgPyBcIlwiIDogdm9pZCAwXG4gIH0pKTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICB2YWx1ZTogKCkgPT4gbG9jYWwudmFsdWUsXG4gICAgZGF0YXNldCxcbiAgICBpc1NlbGVjdGVkLFxuICAgIGlzRGlzYWJsZWQsXG4gICAgaW5wdXRJZCxcbiAgICBsYWJlbElkLFxuICAgIGRlc2NyaXB0aW9uSWQsXG4gICAgaW5wdXRSZWYsXG4gICAgc2VsZWN0OiAoKSA9PiByYWRpb0dyb3VwQ29udGV4dC5zZXRTZWxlY3RlZFZhbHVlKGxvY2FsLnZhbHVlKSxcbiAgICBnZW5lcmF0ZUlkOiBjcmVhdGVHZW5lcmF0ZUlkKCgpID0+IG90aGVycy5pZCksXG4gICAgcmVnaXN0ZXJJbnB1dDogY3JlYXRlUmVnaXN0ZXJJZChzZXRJbnB1dElkKSxcbiAgICByZWdpc3RlckxhYmVsOiBjcmVhdGVSZWdpc3RlcklkKHNldExhYmVsSWQpLFxuICAgIHJlZ2lzdGVyRGVzY3JpcHRpb246IGNyZWF0ZVJlZ2lzdGVySWQoc2V0RGVzY3JpcHRpb25JZCksXG4gICAgc2V0SXNGb2N1c2VkLFxuICAgIHNldElucHV0UmVmXG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUmFkaW9Hcm91cEl0ZW1Db250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHQsXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGFzOiBcImRpdlwiLFxuICAgICAgICByb2xlOiBcImdyb3VwXCIsXG4gICAgICAgIG9uUG9pbnRlckRvd25cbiAgICAgIH0sIGRhdGFzZXQsIG90aGVycykpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBSYWRpb0dyb3VwSXRlbUNvbnRyb2wocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZVJhZGlvR3JvdXBJdGVtQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwiY29udHJvbFwiKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIl0pO1xuICBjb25zdCBvbkNsaWNrID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uQ2xpY2spO1xuICAgIGNvbnRleHQuc2VsZWN0KCk7XG4gICAgY29udGV4dC5pbnB1dFJlZigpPy5mb2N1cygpO1xuICB9O1xuICBjb25zdCBvbktleURvd24gPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25LZXlEb3duKTtcbiAgICBpZiAoZTIua2V5ID09PSBFdmVudEtleS5TcGFjZSkge1xuICAgICAgY29udGV4dC5zZWxlY3QoKTtcbiAgICAgIGNvbnRleHQuaW5wdXRSZWYoKT8uZm9jdXMoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImRpdlwiLFxuICAgIG9uQ2xpY2ssXG4gICAgb25LZXlEb3duXG4gIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBvdGhlcnMpKTtcbn1cbmZ1bmN0aW9uIFJhZGlvR3JvdXBJdGVtRGVzY3JpcHRpb24ocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZVJhZGlvR3JvdXBJdGVtQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwiZGVzY3JpcHRpb25cIilcbiAgfSwgcHJvcHMpO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJEZXNjcmlwdGlvbihtZXJnZWRQcm9wcy5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCJcbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG1lcmdlZFByb3BzKSk7XG59XG5mdW5jdGlvbiBSYWRpb0dyb3VwSXRlbUluZGljYXRvcihwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlUmFkaW9Hcm91cEl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBjb250ZXh0LmdlbmVyYXRlSWQoXCJpbmRpY2F0b3JcIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJmb3JjZU1vdW50XCJdKTtcbiAgY29uc3QgW3JlZiwgc2V0UmVmXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCB7XG4gICAgcHJlc2VudFxuICB9ID0gc3JjX2RlZmF1bHQoe1xuICAgIHNob3c6ICgpID0+IGxvY2FsLmZvcmNlTW91bnQgfHwgY29udGV4dC5pc1NlbGVjdGVkKCksXG4gICAgZWxlbWVudDogKCkgPT4gcmVmKCkgPz8gbnVsbFxuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gcHJlc2VudCgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgICAgIGFzOiBcImRpdlwiLFxuICAgICAgICByZWYociQpIHtcbiAgICAgICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcyhzZXRSZWYsIGxvY2FsLnJlZik7XG4gICAgICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgICAgICB9XG4gICAgICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIFJhZGlvR3JvdXBJdGVtSW5wdXQocHJvcHMpIHtcbiAgY29uc3QgZm9ybUNvbnRyb2xDb250ZXh0ID0gdXNlRm9ybUNvbnRyb2xDb250ZXh0KCk7XG4gIGNvbnN0IHJhZGlvR3JvdXBDb250ZXh0ID0gdXNlUmFkaW9Hcm91cENvbnRleHQoKTtcbiAgY29uc3QgcmFkaW9Db250ZXh0ID0gdXNlUmFkaW9Hcm91cEl0ZW1Db250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiByYWRpb0NvbnRleHQuZ2VuZXJhdGVJZChcImlucHV0XCIpXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wicmVmXCIsIFwic3R5bGVcIiwgXCJhcmlhLWxhYmVsbGVkYnlcIiwgXCJhcmlhLWRlc2NyaWJlZGJ5XCIsIFwib25DaGFuZ2VcIiwgXCJvbkZvY3VzXCIsIFwib25CbHVyXCJdKTtcbiAgY29uc3QgYXJpYUxhYmVsbGVkQnkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIGxvY2FsW1wiYXJpYS1sYWJlbGxlZGJ5XCJdLFxuICAgICAgcmFkaW9Db250ZXh0LmxhYmVsSWQoKSxcbiAgICAgIC8vIElmIHRoZXJlIGlzIGJvdGggYW4gYXJpYS1sYWJlbCBhbmQgYXJpYS1sYWJlbGxlZGJ5LCBhZGQgdGhlIGlucHV0IGl0c2VsZiBoYXMgYW4gYXJpYS1sYWJlbGxlZGJ5XG4gICAgICBsb2NhbFtcImFyaWEtbGFiZWxsZWRieVwiXSAhPSBudWxsICYmIG90aGVyc1tcImFyaWEtbGFiZWxcIl0gIT0gbnVsbCA/IG90aGVycy5pZCA6IHZvaWQgMFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpIHx8IHZvaWQgMDtcbiAgfTtcbiAgY29uc3QgYXJpYURlc2NyaWJlZEJ5ID0gKCkgPT4ge1xuICAgIHJldHVybiBbbG9jYWxbXCJhcmlhLWRlc2NyaWJlZGJ5XCJdLCByYWRpb0NvbnRleHQuZGVzY3JpcHRpb25JZCgpLCByYWRpb0dyb3VwQ29udGV4dC5hcmlhRGVzY3JpYmVkQnkoKV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpIHx8IHZvaWQgMDtcbiAgfTtcbiAgY29uc3QgW2lzSW50ZXJuYWxDaGFuZ2VFdmVudCwgc2V0SXNJbnRlcm5hbENoYW5nZUV2ZW50XSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IG9uQ2hhbmdlID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uQ2hhbmdlKTtcbiAgICBlMi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIWlzSW50ZXJuYWxDaGFuZ2VFdmVudCgpKSB7XG4gICAgICByYWRpb0dyb3VwQ29udGV4dC5zZXRTZWxlY3RlZFZhbHVlKHJhZGlvQ29udGV4dC52YWx1ZSgpKTtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGUyLnRhcmdldDtcbiAgICAgIHRhcmdldC5jaGVja2VkID0gcmFkaW9Db250ZXh0LmlzU2VsZWN0ZWQoKTtcbiAgICB9XG4gICAgc2V0SXNJbnRlcm5hbENoYW5nZUV2ZW50KGZhbHNlKTtcbiAgfTtcbiAgY29uc3Qgb25Gb2N1cyA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbkZvY3VzKTtcbiAgICByYWRpb0NvbnRleHQuc2V0SXNGb2N1c2VkKHRydWUpO1xuICB9O1xuICBjb25zdCBvbkJsdXIgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25CbHVyKTtcbiAgICByYWRpb0NvbnRleHQuc2V0SXNGb2N1c2VkKGZhbHNlKTtcbiAgfTtcbiAgY3JlYXRlRWZmZWN0KG9uKFsoKSA9PiByYWRpb0NvbnRleHQuaXNTZWxlY3RlZCgpLCAoKSA9PiByYWRpb0NvbnRleHQudmFsdWUoKV0sIChjMikgPT4ge1xuICAgIGlmICghYzJbMF0gJiYgYzJbMV0gPT09IHJhZGlvQ29udGV4dC52YWx1ZSgpKVxuICAgICAgcmV0dXJuO1xuICAgIHNldElzSW50ZXJuYWxDaGFuZ2VFdmVudCh0cnVlKTtcbiAgICBjb25zdCByZWYgPSByYWRpb0NvbnRleHQuaW5wdXRSZWYoKTtcbiAgICByZWY/LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwiaW5wdXRcIiwge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcbiAgICB9KSk7XG4gICAgcmVmPy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChcImNoYW5nZVwiLCB7XG4gICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pKTtcbiAgfSwge1xuICAgIGRlZmVyOiB0cnVlXG4gIH0pKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IG9uQ2xlYW51cChyYWRpb0NvbnRleHQucmVnaXN0ZXJJbnB1dChvdGhlcnMuaWQpKSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImlucHV0XCIsXG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcyhyYWRpb0NvbnRleHQuc2V0SW5wdXRSZWYsIGxvY2FsLnJlZik7XG4gICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgfSxcbiAgICB0eXBlOiBcInJhZGlvXCIsXG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0Lm5hbWUoKTtcbiAgICB9LFxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgIHJldHVybiByYWRpb0NvbnRleHQudmFsdWUoKTtcbiAgICB9LFxuICAgIGdldCBjaGVja2VkKCkge1xuICAgICAgcmV0dXJuIHJhZGlvQ29udGV4dC5pc1NlbGVjdGVkKCk7XG4gICAgfSxcbiAgICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0LmlzUmVxdWlyZWQoKTtcbiAgICB9LFxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgIHJldHVybiByYWRpb0NvbnRleHQuaXNEaXNhYmxlZCgpO1xuICAgIH0sXG4gICAgZ2V0IHJlYWRvbmx5KCkge1xuICAgICAgcmV0dXJuIGZvcm1Db250cm9sQ29udGV4dC5pc1JlYWRPbmx5KCk7XG4gICAgfSxcbiAgICBnZXQgc3R5bGUoKSB7XG4gICAgICByZXR1cm4gY29tYmluZVN0eWxlKHtcbiAgICAgICAgLi4udmlzdWFsbHlIaWRkZW5TdHlsZXNcbiAgICAgIH0sIGxvY2FsLnN0eWxlKTtcbiAgICB9LFxuICAgIGdldCBbXCJhcmlhLWxhYmVsbGVkYnlcIl0oKSB7XG4gICAgICByZXR1cm4gYXJpYUxhYmVsbGVkQnkoKTtcbiAgICB9LFxuICAgIGdldCBbXCJhcmlhLWRlc2NyaWJlZGJ5XCJdKCkge1xuICAgICAgcmV0dXJuIGFyaWFEZXNjcmliZWRCeSgpO1xuICAgIH0sXG4gICAgb25DaGFuZ2UsXG4gICAgb25Gb2N1cyxcbiAgICBvbkJsdXJcbiAgfSwgKCkgPT4gcmFkaW9Db250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBSYWRpb0dyb3VwSXRlbUxhYmVsKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VSYWRpb0dyb3VwSXRlbUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGNvbnRleHQuZ2VuZXJhdGVJZChcImxhYmVsXCIpXG4gIH0sIHByb3BzKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IG9uQ2xlYW51cChjb250ZXh0LnJlZ2lzdGVyTGFiZWwobWVyZ2VkUHJvcHMuaWQpKSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImxhYmVsXCIsXG4gICAgZ2V0IFtcImZvclwiXSgpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmlucHV0SWQoKTtcbiAgICB9XG4gIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBtZXJnZWRQcm9wcykpO1xufVxuZnVuY3Rpb24gUmFkaW9Hcm91cExhYmVsKHByb3BzKSB7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoRm9ybUNvbnRyb2xMYWJlbCwgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwic3BhblwiXG4gIH0sIHByb3BzKSk7XG59XG5mdW5jdGlvbiBSYWRpb0dyb3VwUm9vdChwcm9wcykge1xuICBsZXQgcmVmO1xuICBjb25zdCBkZWZhdWx0SWQgPSBgcmFkaW9ncm91cC0ke2NyZWF0ZVVuaXF1ZUlkKCl9YDtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGRlZmF1bHRJZCxcbiAgICBvcmllbnRhdGlvbjogXCJ2ZXJ0aWNhbFwiXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBmb3JtQ29udHJvbFByb3BzLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wicmVmXCIsIFwidmFsdWVcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJvbkNoYW5nZVwiLCBcIm9yaWVudGF0aW9uXCIsIFwiYXJpYS1sYWJlbGxlZGJ5XCIsIFwiYXJpYS1kZXNjcmliZWRieVwiXSwgRk9STV9DT05UUk9MX1BST1BfTkFNRVMpO1xuICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IGNyZWF0ZUNvbnRyb2xsYWJsZVNpZ25hbCh7XG4gICAgdmFsdWU6ICgpID0+IGxvY2FsLnZhbHVlLFxuICAgIGRlZmF1bHRWYWx1ZTogKCkgPT4gbG9jYWwuZGVmYXVsdFZhbHVlLFxuICAgIG9uQ2hhbmdlOiAodmFsdWUpID0+IGxvY2FsLm9uQ2hhbmdlPy4odmFsdWUpXG4gIH0pO1xuICBjb25zdCB7XG4gICAgZm9ybUNvbnRyb2xDb250ZXh0XG4gIH0gPSBjcmVhdGVGb3JtQ29udHJvbChmb3JtQ29udHJvbFByb3BzKTtcbiAgY3JlYXRlRm9ybVJlc2V0TGlzdGVuZXIoKCkgPT4gcmVmLCAoKSA9PiBzZXRTZWxlY3RlZChsb2NhbC5kZWZhdWx0VmFsdWUgPz8gXCJcIikpO1xuICBjb25zdCBhcmlhTGFiZWxsZWRCeSA9ICgpID0+IHtcbiAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0LmdldEFyaWFMYWJlbGxlZEJ5KGFjY2Vzcyhmb3JtQ29udHJvbFByb3BzLmlkKSwgb3RoZXJzW1wiYXJpYS1sYWJlbFwiXSwgbG9jYWxbXCJhcmlhLWxhYmVsbGVkYnlcIl0pO1xuICB9O1xuICBjb25zdCBhcmlhRGVzY3JpYmVkQnkgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGZvcm1Db250cm9sQ29udGV4dC5nZXRBcmlhRGVzY3JpYmVkQnkobG9jYWxbXCJhcmlhLWRlc2NyaWJlZGJ5XCJdKTtcbiAgfTtcbiAgY29uc3QgaXNTZWxlY3RlZFZhbHVlID0gKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBzZWxlY3RlZCgpO1xuICB9O1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIGFyaWFEZXNjcmliZWRCeSxcbiAgICBpc1NlbGVjdGVkVmFsdWUsXG4gICAgc2V0U2VsZWN0ZWRWYWx1ZTogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoZm9ybUNvbnRyb2xDb250ZXh0LmlzUmVhZE9ubHkoKSB8fCBmb3JtQ29udHJvbENvbnRleHQuaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldFNlbGVjdGVkKHZhbHVlKTtcbiAgICAgIGlmIChyZWYpXG4gICAgICAgIGZvciAoY29uc3QgZWwgb2YgcmVmLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbdHlwZT0ncmFkaW8nXVwiKSkge1xuICAgICAgICAgIGNvbnN0IHJhZGlvID0gZWw7XG4gICAgICAgICAgcmFkaW8uY2hlY2tlZCA9IGlzU2VsZWN0ZWRWYWx1ZShyYWRpby52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoRm9ybUNvbnRyb2xDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGZvcm1Db250cm9sQ29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFJhZGlvR3JvdXBDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBjb250ZXh0LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgICAgICAgICBhczogXCJkaXZcIixcbiAgICAgICAgICAgIHJlZihyJCkge1xuICAgICAgICAgICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcygoZWwpID0+IHJlZiA9IGVsLCBsb2NhbC5yZWYpO1xuICAgICAgICAgICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9sZTogXCJyYWRpb2dyb3VwXCIsXG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhY2Nlc3MoZm9ybUNvbnRyb2xQcm9wcy5pZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IFtcImFyaWEtaW52YWxpZFwiXSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sQ29udGV4dC52YWxpZGF0aW9uU3RhdGUoKSA9PT0gXCJpbnZhbGlkXCIgfHwgdm9pZCAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBbXCJhcmlhLXJlcXVpcmVkXCJdKCkge1xuICAgICAgICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2xDb250ZXh0LmlzUmVxdWlyZWQoKSB8fCB2b2lkIDA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IFtcImFyaWEtZGlzYWJsZWRcIl0oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmb3JtQ29udHJvbENvbnRleHQuaXNEaXNhYmxlZCgpIHx8IHZvaWQgMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgW1wiYXJpYS1yZWFkb25seVwiXSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZvcm1Db250cm9sQ29udGV4dC5pc1JlYWRPbmx5KCkgfHwgdm9pZCAwO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBbXCJhcmlhLW9yaWVudGF0aW9uXCJdKCkge1xuICAgICAgICAgICAgICByZXR1cm4gbG9jYWwub3JpZW50YXRpb247XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IFtcImFyaWEtbGFiZWxsZWRieVwiXSgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGFyaWFMYWJlbGxlZEJ5KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IFtcImFyaWEtZGVzY3JpYmVkYnlcIl0oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhcmlhRGVzY3JpYmVkQnkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCAoKSA9PiBmb3JtQ29udHJvbENvbnRleHQuZGF0YXNldCgpLCBvdGhlcnMpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbn1cbnZhciBSYWRpb0dyb3VwID0gT2JqZWN0LmFzc2lnbihSYWRpb0dyb3VwUm9vdCwge1xuICBEZXNjcmlwdGlvbjogRm9ybUNvbnRyb2xEZXNjcmlwdGlvbixcbiAgRXJyb3JNZXNzYWdlOiBGb3JtQ29udHJvbEVycm9yTWVzc2FnZSxcbiAgSXRlbTogUmFkaW9Hcm91cEl0ZW0sXG4gIEl0ZW1Db250cm9sOiBSYWRpb0dyb3VwSXRlbUNvbnRyb2wsXG4gIEl0ZW1EZXNjcmlwdGlvbjogUmFkaW9Hcm91cEl0ZW1EZXNjcmlwdGlvbixcbiAgSXRlbUluZGljYXRvcjogUmFkaW9Hcm91cEl0ZW1JbmRpY2F0b3IsXG4gIEl0ZW1JbnB1dDogUmFkaW9Hcm91cEl0ZW1JbnB1dCxcbiAgSXRlbUxhYmVsOiBSYWRpb0dyb3VwSXRlbUxhYmVsLFxuICBMYWJlbDogUmFkaW9Hcm91cExhYmVsXG59KTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvR0xLQzJRRkYuanNcbnZhciBMaXN0S2V5Ym9hcmREZWxlZ2F0ZSA9IGNsYXNzIHtcbiAgY29sbGVjdGlvbjtcbiAgcmVmO1xuICBjb2xsYXRvcjtcbiAgY29uc3RydWN0b3IoY29sbGVjdGlvbiwgcmVmLCBjb2xsYXRvcikge1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gICAgdGhpcy5yZWYgPSByZWY7XG4gICAgdGhpcy5jb2xsYXRvciA9IGNvbGxhdG9yO1xuICB9XG4gIGdldEtleUJlbG93KGtleSkge1xuICAgIGxldCBrZXlBZnRlciA9IHRoaXMuY29sbGVjdGlvbigpLmdldEtleUFmdGVyKGtleSk7XG4gICAgd2hpbGUgKGtleUFmdGVyICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleUFmdGVyKTtcbiAgICAgIGlmIChpdGVtICYmIGl0ZW0udHlwZSA9PT0gXCJpdGVtXCIgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGtleUFmdGVyO1xuICAgICAgfVxuICAgICAga2V5QWZ0ZXIgPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRLZXlBZnRlcihrZXlBZnRlcik7XG4gICAgfVxuICB9XG4gIGdldEtleUFib3ZlKGtleSkge1xuICAgIGxldCBrZXlCZWZvcmUgPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRLZXlCZWZvcmUoa2V5KTtcbiAgICB3aGlsZSAoa2V5QmVmb3JlICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRJdGVtKGtleUJlZm9yZSk7XG4gICAgICBpZiAoaXRlbSAmJiBpdGVtLnR5cGUgPT09IFwiaXRlbVwiICYmICFpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiBrZXlCZWZvcmU7XG4gICAgICB9XG4gICAgICBrZXlCZWZvcmUgPSB0aGlzLmNvbGxlY3Rpb24oKS5nZXRLZXlCZWZvcmUoa2V5QmVmb3JlKTtcbiAgICB9XG4gIH1cbiAgZ2V0Rmlyc3RLZXkoKSB7XG4gICAgbGV0IGtleSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEZpcnN0S2V5KCk7XG4gICAgd2hpbGUgKGtleSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpdGVtID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0SXRlbShrZXkpO1xuICAgICAgaWYgKGl0ZW0gJiYgaXRlbS50eXBlID09PSBcIml0ZW1cIiAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgICAga2V5ID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0S2V5QWZ0ZXIoa2V5KTtcbiAgICB9XG4gIH1cbiAgZ2V0TGFzdEtleSgpIHtcbiAgICBsZXQga2V5ID0gdGhpcy5jb2xsZWN0aW9uKCkuZ2V0TGFzdEtleSgpO1xuICAgIHdoaWxlIChrZXkgIT0gbnVsbCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmIChpdGVtICYmIGl0ZW0udHlwZSA9PT0gXCJpdGVtXCIgJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH1cbiAgICAgIGtleSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEtleUJlZm9yZShrZXkpO1xuICAgIH1cbiAgfVxuICBnZXRJdGVtKGtleSkge1xuICAgIHJldHVybiB0aGlzLnJlZj8uKCk/LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWtleT1cIiR7a2V5fVwiXWApID8/IG51bGw7XG4gIH1cbiAgLy8gVE9ETzogbm90IHdvcmtpbmcgY29ycmVjdGx5XG4gIGdldEtleVBhZ2VBYm92ZShrZXkpIHtcbiAgICBjb25zdCBtZW51ID0gdGhpcy5yZWY/LigpO1xuICAgIGxldCBpdGVtID0gdGhpcy5nZXRJdGVtKGtleSk7XG4gICAgaWYgKCFtZW51IHx8ICFpdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhZ2VZID0gTWF0aC5tYXgoXG4gICAgICAwLFxuICAgICAgaXRlbS5vZmZzZXRUb3AgKyBpdGVtLm9mZnNldEhlaWdodCAtIG1lbnUub2Zmc2V0SGVpZ2h0XG4gICAgKTtcbiAgICBsZXQga2V5QWJvdmUgPSBrZXk7XG4gICAgd2hpbGUgKGtleUFib3ZlICYmIGl0ZW0gJiYgaXRlbS5vZmZzZXRUb3AgPiBwYWdlWSkge1xuICAgICAga2V5QWJvdmUgPSB0aGlzLmdldEtleUFib3ZlKGtleUFib3ZlKTtcbiAgICAgIGl0ZW0gPSBrZXlBYm92ZSAhPSBudWxsID8gdGhpcy5nZXRJdGVtKGtleUFib3ZlKSA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBrZXlBYm92ZTtcbiAgfVxuICAvLyBUT0RPOiBub3Qgd29ya2luZyBjb3JyZWN0bHlcbiAgZ2V0S2V5UGFnZUJlbG93KGtleSkge1xuICAgIGNvbnN0IG1lbnUgPSB0aGlzLnJlZj8uKCk7XG4gICAgbGV0IGl0ZW0gPSB0aGlzLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIW1lbnUgfHwgIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFnZVkgPSBNYXRoLm1pbihcbiAgICAgIG1lbnUuc2Nyb2xsSGVpZ2h0LFxuICAgICAgaXRlbS5vZmZzZXRUb3AgLSBpdGVtLm9mZnNldEhlaWdodCArIG1lbnUub2Zmc2V0SGVpZ2h0XG4gICAgKTtcbiAgICBsZXQga2V5QmVsb3cgPSBrZXk7XG4gICAgd2hpbGUgKGtleUJlbG93ICYmIGl0ZW0gJiYgaXRlbS5vZmZzZXRUb3AgPCBwYWdlWSkge1xuICAgICAga2V5QmVsb3cgPSB0aGlzLmdldEtleUJlbG93KGtleUJlbG93KTtcbiAgICAgIGl0ZW0gPSBrZXlCZWxvdyAhPSBudWxsID8gdGhpcy5nZXRJdGVtKGtleUJlbG93KSA6IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBrZXlCZWxvdztcbiAgfVxuICBnZXRLZXlGb3JTZWFyY2goc2VhcmNoLCBmcm9tS2V5KSB7XG4gICAgY29uc3QgY29sbGF0b3IgPSB0aGlzLmNvbGxhdG9yPy4oKTtcbiAgICBpZiAoIWNvbGxhdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBrZXkgPSBmcm9tS2V5ICE9IG51bGwgPyB0aGlzLmdldEtleUJlbG93KGZyb21LZXkpIDogdGhpcy5nZXRGaXJzdEtleSgpO1xuICAgIHdoaWxlIChrZXkgIT0gbnVsbCkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuY29sbGVjdGlvbigpLmdldEl0ZW0oa2V5KTtcbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIGNvbnN0IHN1YnN0cmluZyA9IGl0ZW0udGV4dFZhbHVlLnNsaWNlKDAsIHNlYXJjaC5sZW5ndGgpO1xuICAgICAgICBpZiAoaXRlbS50ZXh0VmFsdWUgJiYgY29sbGF0b3IuY29tcGFyZShzdWJzdHJpbmcsIHNlYXJjaCkgPT09IDApIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBrZXkgPSB0aGlzLmdldEtleUJlbG93KGtleSk7XG4gICAgfVxuICB9XG59O1xuZnVuY3Rpb24gY3JlYXRlU2VsZWN0YWJsZUxpc3QocHJvcHMsIHJlZiwgc2Nyb2xsUmVmKSB7XG4gIGNvbnN0IGNvbGxhdG9yID0gY3JlYXRlQ29sbGF0b3IoeyB1c2FnZTogXCJzZWFyY2hcIiwgc2Vuc2l0aXZpdHk6IFwiYmFzZVwiIH0pO1xuICBjb25zdCBkZWxlZ2F0ZSA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGtleWJvYXJkRGVsZWdhdGUgPSBhY2Nlc3MocHJvcHMua2V5Ym9hcmREZWxlZ2F0ZSk7XG4gICAgaWYgKGtleWJvYXJkRGVsZWdhdGUpIHtcbiAgICAgIHJldHVybiBrZXlib2FyZERlbGVnYXRlO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IExpc3RLZXlib2FyZERlbGVnYXRlKHByb3BzLmNvbGxlY3Rpb24sIHJlZiwgY29sbGF0b3IpO1xuICB9KTtcbiAgcmV0dXJuIGNyZWF0ZVNlbGVjdGFibGVDb2xsZWN0aW9uKFxuICAgIHtcbiAgICAgIHNlbGVjdGlvbk1hbmFnZXI6ICgpID0+IGFjY2Vzcyhwcm9wcy5zZWxlY3Rpb25NYW5hZ2VyKSxcbiAgICAgIGtleWJvYXJkRGVsZWdhdGU6IGRlbGVnYXRlLFxuICAgICAgYXV0b0ZvY3VzOiAoKSA9PiBhY2Nlc3MocHJvcHMuYXV0b0ZvY3VzKSxcbiAgICAgIGRlZmVyQXV0b0ZvY3VzOiAoKSA9PiBhY2Nlc3MocHJvcHMuZGVmZXJBdXRvRm9jdXMpLFxuICAgICAgc2hvdWxkRm9jdXNXcmFwOiAoKSA9PiBhY2Nlc3MocHJvcHMuc2hvdWxkRm9jdXNXcmFwKSxcbiAgICAgIGRpc2FsbG93RW1wdHlTZWxlY3Rpb246ICgpID0+IGFjY2Vzcyhwcm9wcy5kaXNhbGxvd0VtcHR5U2VsZWN0aW9uKSxcbiAgICAgIHNlbGVjdE9uRm9jdXM6ICgpID0+IGFjY2Vzcyhwcm9wcy5zZWxlY3RPbkZvY3VzKSxcbiAgICAgIGRpc2FsbG93VHlwZUFoZWFkOiAoKSA9PiBhY2Nlc3MocHJvcHMuZGlzYWxsb3dUeXBlQWhlYWQpLFxuICAgICAgc2hvdWxkVXNlVmlydHVhbEZvY3VzOiAoKSA9PiBhY2Nlc3MocHJvcHMuc2hvdWxkVXNlVmlydHVhbEZvY3VzKSxcbiAgICAgIGFsbG93c1RhYk5hdmlnYXRpb246ICgpID0+IGFjY2Vzcyhwcm9wcy5hbGxvd3NUYWJOYXZpZ2F0aW9uKSxcbiAgICAgIGlzVmlydHVhbGl6ZWQ6ICgpID0+IGFjY2Vzcyhwcm9wcy5pc1ZpcnR1YWxpemVkKSxcbiAgICAgIHNjcm9sbFRvS2V5OiAoa2V5KSA9PiBhY2Nlc3MocHJvcHMuc2Nyb2xsVG9LZXkpPy4oa2V5KSxcbiAgICAgIG9yaWVudGF0aW9uOiAoKSA9PiBhY2Nlc3MocHJvcHMub3JpZW50YXRpb24pXG4gICAgfSxcbiAgICByZWYpO1xufVxuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9JU0tIWk1IUy5qc1xudmFyIEFVVE9GT0NVU19PTl9NT1VOVF9FVkVOVCA9IFwiZm9jdXNTY29wZS5hdXRvRm9jdXNPbk1vdW50XCI7XG52YXIgQVVUT0ZPQ1VTX09OX1VOTU9VTlRfRVZFTlQgPSBcImZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Vbm1vdW50XCI7XG52YXIgRVZFTlRfT1BUSU9OUyA9IHtcbiAgYnViYmxlczogZmFsc2UsXG4gIGNhbmNlbGFibGU6IHRydWVcbn07XG52YXIgZm9jdXNTY29wZVN0YWNrID0ge1xuICAvKiogQSBzdGFjayBvZiBmb2N1cyBzY29wZXMsIHdpdGggdGhlIGFjdGl2ZSBvbmUgYXQgdGhlIHRvcCAqL1xuICBzdGFjazogW10sXG4gIGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFja1swXTtcbiAgfSxcbiAgYWRkKHNjb3BlKSB7XG4gICAgaWYgKHNjb3BlICE9PSB0aGlzLmFjdGl2ZSgpKSB7XG4gICAgICB0aGlzLmFjdGl2ZSgpPy5wYXVzZSgpO1xuICAgIH1cbiAgICB0aGlzLnN0YWNrID0gcmVtb3ZlSXRlbUZyb21BcnJheSh0aGlzLnN0YWNrLCBzY29wZSk7XG4gICAgdGhpcy5zdGFjay51bnNoaWZ0KHNjb3BlKTtcbiAgfSxcbiAgcmVtb3ZlKHNjb3BlKSB7XG4gICAgdGhpcy5zdGFjayA9IHJlbW92ZUl0ZW1Gcm9tQXJyYXkodGhpcy5zdGFjaywgc2NvcGUpO1xuICAgIHRoaXMuYWN0aXZlKCk/LnJlc3VtZSgpO1xuICB9XG59O1xuZnVuY3Rpb24gY3JlYXRlRm9jdXNTY29wZShwcm9wcywgcmVmKSB7XG4gIGNvbnN0IFtpc1BhdXNlZCwgc2V0SXNQYXVzZWRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgZm9jdXNTY29wZSA9IHtcbiAgICBwYXVzZSgpIHtcbiAgICAgIHNldElzUGF1c2VkKHRydWUpO1xuICAgIH0sXG4gICAgcmVzdW1lKCkge1xuICAgICAgc2V0SXNQYXVzZWQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgbGV0IGxhc3RGb2N1c2VkRWxlbWVudCA9IG51bGw7XG4gIGNvbnN0IG9uTW91bnRBdXRvRm9jdXMgPSAoZTIpID0+IHByb3BzLm9uTW91bnRBdXRvRm9jdXM/LihlMik7XG4gIGNvbnN0IG9uVW5tb3VudEF1dG9Gb2N1cyA9IChlMikgPT4gcHJvcHMub25Vbm1vdW50QXV0b0ZvY3VzPy4oZTIpO1xuICBjb25zdCBvd25lckRvY3VtZW50ID0gKCkgPT4gZ2V0RG9jdW1lbnQocmVmKCkpO1xuICBjb25zdCBjcmVhdGVTZW50aW5lbCA9ICgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gb3duZXJEb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1mb2N1cy10cmFwXCIsIFwiXCIpO1xuICAgIGVsZW1lbnQudGFiSW5kZXggPSAwO1xuICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgdmlzdWFsbHlIaWRkZW5TdHlsZXMpO1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9O1xuICBjb25zdCB0YWJiYWJsZXMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIGdldEFsbFRhYmJhYmxlSW4oY29udGFpbmVyLCB0cnVlKS5maWx0ZXIoKGVsKSA9PiAhZWwuaGFzQXR0cmlidXRlKFwiZGF0YS1mb2N1cy10cmFwXCIpKTtcbiAgfTtcbiAgY29uc3QgZmlyc3RUYWJiYWJsZSA9ICgpID0+IHtcbiAgICBjb25zdCBpdGVtcyA9IHRhYmJhYmxlcygpO1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwID8gaXRlbXNbMF0gOiBudWxsO1xuICB9O1xuICBjb25zdCBsYXN0VGFiYmFibGUgPSAoKSA9PiB7XG4gICAgY29uc3QgaXRlbXMgPSB0YWJiYWJsZXMoKTtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMCA/IGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdIDogbnVsbDtcbiAgfTtcbiAgY29uc3Qgc2hvdWxkUHJldmVudFVubW91bnRBdXRvRm9jdXMgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gcmVmKCk7XG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGdldEFjdGl2ZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGNvbnRhaW5zKGNvbnRhaW5lciwgYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzRm9jdXNhYmxlKGFjdGl2ZUVsZW1lbnQpO1xuICB9O1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXIgPSByZWYoKTtcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb2N1c1Njb3BlU3RhY2suYWRkKGZvY3VzU2NvcGUpO1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGdldEFjdGl2ZUVsZW1lbnQoY29udGFpbmVyKTtcbiAgICBjb25zdCBoYXNGb2N1c2VkQ2FuZGlkYXRlID0gY29udGFpbnMoY29udGFpbmVyLCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpO1xuICAgIGlmICghaGFzRm9jdXNlZENhbmRpZGF0ZSkge1xuICAgICAgY29uc3QgbW91bnRFdmVudCA9IG5ldyBDdXN0b21FdmVudChBVVRPRk9DVVNfT05fTU9VTlRfRVZFTlQsIEVWRU5UX09QVElPTlMpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoQVVUT0ZPQ1VTX09OX01PVU5UX0VWRU5ULCBvbk1vdW50QXV0b0ZvY3VzKTtcbiAgICAgIGNvbnRhaW5lci5kaXNwYXRjaEV2ZW50KG1vdW50RXZlbnQpO1xuICAgICAgaWYgKCFtb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgZm9jdXNXaXRob3V0U2Nyb2xsaW5nKGZpcnN0VGFiYmFibGUoKSk7XG4gICAgICAgICAgaWYgKGdldEFjdGl2ZUVsZW1lbnQoY29udGFpbmVyKSA9PT0gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcoY29udGFpbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoQVVUT0ZPQ1VTX09OX01PVU5UX0VWRU5ULCBvbk1vdW50QXV0b0ZvY3VzKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB1bm1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoQVVUT0ZPQ1VTX09OX1VOTU9VTlRfRVZFTlQsIEVWRU5UX09QVElPTlMpO1xuICAgICAgICBpZiAoc2hvdWxkUHJldmVudFVubW91bnRBdXRvRm9jdXMoKSkge1xuICAgICAgICAgIHVubW91bnRFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKEFVVE9GT0NVU19PTl9VTk1PVU5UX0VWRU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuICAgICAgICBjb250YWluZXIuZGlzcGF0Y2hFdmVudCh1bm1vdW50RXZlbnQpO1xuICAgICAgICBpZiAoIXVubW91bnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgZm9jdXNXaXRob3V0U2Nyb2xsaW5nKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA/PyBvd25lckRvY3VtZW50KCkuYm9keSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGFpbmVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoQVVUT0ZPQ1VTX09OX1VOTU9VTlRfRVZFTlQsIG9uVW5tb3VudEF1dG9Gb2N1cyk7XG4gICAgICAgIGZvY3VzU2NvcGVTdGFjay5yZW1vdmUoZm9jdXNTY29wZSk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHJlZigpO1xuICAgIGlmICghY29udGFpbmVyIHx8ICFhY2Nlc3MocHJvcHMudHJhcEZvY3VzKSB8fCBpc1BhdXNlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9uRm9jdXNJbiA9IChldmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgaWYgKHRhcmdldD8uY2xvc2VzdChgWyR7REFUQV9UT1BfTEFZRVJfQVRUUn1dYCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGNvbnRhaW5zKGNvbnRhaW5lciwgdGFyZ2V0KSkge1xuICAgICAgICBsYXN0Rm9jdXNlZEVsZW1lbnQgPSB0YXJnZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcobGFzdEZvY3VzZWRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9uRm9jdXNPdXQgPSAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgICAgY29uc3QgdGFyZ2V0ID0gcmVsYXRlZFRhcmdldCA/PyBnZXRBY3RpdmVFbGVtZW50KGNvbnRhaW5lcik7XG4gICAgICBpZiAodGFyZ2V0Py5jbG9zZXN0KGBbJHtEQVRBX1RPUF9MQVlFUl9BVFRSfV1gKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWNvbnRhaW5zKGNvbnRhaW5lciwgdGFyZ2V0KSkge1xuICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcobGFzdEZvY3VzZWRFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIG93bmVyRG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLCBvbkZvY3VzSW4pO1xuICAgIG93bmVyRG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIiwgb25Gb2N1c091dCk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIG93bmVyRG9jdW1lbnQoKS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLCBvbkZvY3VzSW4pO1xuICAgICAgb3duZXJEb2N1bWVudCgpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLCBvbkZvY3VzT3V0KTtcbiAgICB9KTtcbiAgfSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHJlZigpO1xuICAgIGlmICghY29udGFpbmVyIHx8ICFhY2Nlc3MocHJvcHMudHJhcEZvY3VzKSB8fCBpc1BhdXNlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0U2VudGluZWwgPSBjcmVhdGVTZW50aW5lbCgpO1xuICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmJlZ2luXCIsIHN0YXJ0U2VudGluZWwpO1xuICAgIGNvbnN0IGVuZFNlbnRpbmVsID0gY3JlYXRlU2VudGluZWwoKTtcbiAgICBjb250YWluZXIuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYmVmb3JlZW5kXCIsIGVuZFNlbnRpbmVsKTtcbiAgICBmdW5jdGlvbiBvbkZvY3VzKGV2ZW50KSB7XG4gICAgICBjb25zdCBmaXJzdCA9IGZpcnN0VGFiYmFibGUoKTtcbiAgICAgIGNvbnN0IGxhc3QgPSBsYXN0VGFiYmFibGUoKTtcbiAgICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0ID09PSBmaXJzdCkge1xuICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcobGFzdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcoZmlyc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICBzdGFydFNlbnRpbmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIG9uRm9jdXMpO1xuICAgIGVuZFNlbnRpbmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c2luXCIsIG9uRm9jdXMpO1xuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnByZXZpb3VzU2libGluZyA9PT0gZW5kU2VudGluZWwpIHtcbiAgICAgICAgICBlbmRTZW50aW5lbC5yZW1vdmUoKTtcbiAgICAgICAgICBjb250YWluZXIuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KFwiYmVmb3JlZW5kXCIsIGVuZFNlbnRpbmVsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobXV0YXRpb24ubmV4dFNpYmxpbmcgPT09IHN0YXJ0U2VudGluZWwpIHtcbiAgICAgICAgICBzdGFydFNlbnRpbmVsLnJlbW92ZSgpO1xuICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEVsZW1lbnQoXCJhZnRlcmJlZ2luXCIsIHN0YXJ0U2VudGluZWwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IGZhbHNlXG4gICAgfSk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIHN0YXJ0U2VudGluZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIiwgb25Gb2N1cyk7XG4gICAgICBlbmRTZW50aW5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLCBvbkZvY3VzKTtcbiAgICAgIHN0YXJ0U2VudGluZWwucmVtb3ZlKCk7XG4gICAgICBlbmRTZW50aW5lbC5yZW1vdmUoKTtcbiAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL1lBN0RDWU1CLmpzXG52YXIgREFUQV9MSVZFX0FOTk9VTkNFUl9BVFRSID0gXCJkYXRhLWxpdmUtYW5ub3VuY2VyXCI7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rL1RaR0UyQVFILmpzXG5mdW5jdGlvbiBjcmVhdGVIaWRlT3V0c2lkZShwcm9wcykge1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhY2Nlc3MocHJvcHMuaXNEaXNhYmxlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb25DbGVhbnVwKGFyaWFIaWRlT3V0c2lkZShhY2Nlc3MocHJvcHMudGFyZ2V0cyksIGFjY2Vzcyhwcm9wcy5yb290KSkpO1xuICB9KTtcbn1cbnZhciByZWZDb3VudE1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgV2Vha01hcCgpO1xudmFyIG9ic2VydmVyU3RhY2sgPSBbXTtcbmZ1bmN0aW9uIGFyaWFIaWRlT3V0c2lkZSh0YXJnZXRzLCByb290ID0gZG9jdW1lbnQuYm9keSkge1xuICBjb25zdCB2aXNpYmxlTm9kZXMgPSBuZXcgU2V0KHRhcmdldHMpO1xuICBjb25zdCBoaWRkZW5Ob2RlcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGNvbnN0IHdhbGsgPSAocm9vdDIpID0+IHtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2Ygcm9vdDIucXVlcnlTZWxlY3RvckFsbChcbiAgICAgIGBbJHtEQVRBX0xJVkVfQU5OT1VOQ0VSX0FUVFJ9XSwgWyR7REFUQV9UT1BfTEFZRVJfQVRUUn1dYFxuICAgICkpIHtcbiAgICAgIHZpc2libGVOb2Rlcy5hZGQoZWxlbWVudCk7XG4gICAgfVxuICAgIGNvbnN0IGFjY2VwdE5vZGUgPSAobm9kZSkgPT4ge1xuICAgICAgaWYgKHZpc2libGVOb2Rlcy5oYXMobm9kZSkgfHwgbm9kZS5wYXJlbnRFbGVtZW50ICYmIGhpZGRlbk5vZGVzLmhhcyhub2RlLnBhcmVudEVsZW1lbnQpICYmIG5vZGUucGFyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpICE9PSBcInJvd1wiKSB7XG4gICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB2aXNpYmxlTm9kZXMpIHtcbiAgICAgICAgaWYgKG5vZGUuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUO1xuICAgIH07XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyb290MiwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIHtcbiAgICAgIGFjY2VwdE5vZGVcbiAgICB9KTtcbiAgICBjb25zdCBhY2NlcHRSb290ID0gYWNjZXB0Tm9kZShyb290Mik7XG4gICAgaWYgKGFjY2VwdFJvb3QgPT09IE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVCkge1xuICAgICAgaGlkZTMocm9vdDIpO1xuICAgIH1cbiAgICBpZiAoYWNjZXB0Um9vdCAhPT0gTm9kZUZpbHRlci5GSUxURVJfUkVKRUNUKSB7XG4gICAgICBsZXQgbm9kZSA9IHdhbGtlci5uZXh0Tm9kZSgpO1xuICAgICAgd2hpbGUgKG5vZGUgIT0gbnVsbCkge1xuICAgICAgICBoaWRlMyhub2RlKTtcbiAgICAgICAgbm9kZSA9IHdhbGtlci5uZXh0Tm9kZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgaGlkZTMgPSAobm9kZSkgPT4ge1xuICAgIGNvbnN0IHJlZkNvdW50ID0gcmVmQ291bnRNYXAuZ2V0KG5vZGUpID8/IDA7XG4gICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgPT09IFwidHJ1ZVwiICYmIHJlZkNvdW50ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyZWZDb3VudCA9PT0gMCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiLCBcInRydWVcIik7XG4gICAgfVxuICAgIGhpZGRlbk5vZGVzLmFkZChub2RlKTtcbiAgICByZWZDb3VudE1hcC5zZXQobm9kZSwgcmVmQ291bnQgKyAxKTtcbiAgfTtcbiAgaWYgKG9ic2VydmVyU3RhY2subGVuZ3RoKSB7XG4gICAgb2JzZXJ2ZXJTdGFja1tvYnNlcnZlclN0YWNrLmxlbmd0aCAtIDFdLmRpc2Nvbm5lY3QoKTtcbiAgfVxuICB3YWxrKHJvb3QpO1xuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChjaGFuZ2VzKSA9PiB7XG4gICAgZm9yIChjb25zdCBjaGFuZ2Ugb2YgY2hhbmdlcykge1xuICAgICAgaWYgKGNoYW5nZS50eXBlICE9PSBcImNoaWxkTGlzdFwiIHx8IGNoYW5nZS5hZGRlZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghWy4uLnZpc2libGVOb2RlcywgLi4uaGlkZGVuTm9kZXNdLnNvbWUoXG4gICAgICAgIChub2RlKSA9PiBub2RlLmNvbnRhaW5zKGNoYW5nZS50YXJnZXQpXG4gICAgICApKSB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjaGFuZ2UucmVtb3ZlZE5vZGVzKSB7XG4gICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICB2aXNpYmxlTm9kZXMuZGVsZXRlKG5vZGUpO1xuICAgICAgICAgICAgaGlkZGVuTm9kZXMuZGVsZXRlKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgY2hhbmdlLmFkZGVkTm9kZXMpIHtcbiAgICAgICAgICBpZiAoKG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU1ZHRWxlbWVudCkgJiYgKG5vZGUuZGF0YXNldC5saXZlQW5ub3VuY2VyID09PSBcInRydWVcIiB8fCBub2RlLmRhdGFzZXQucmVhY3RBcmlhVG9wTGF5ZXIgPT09IFwidHJ1ZVwiKSkge1xuICAgICAgICAgICAgdmlzaWJsZU5vZGVzLmFkZChub2RlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgICAgICB3YWxrKG5vZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIG9ic2VydmVyLm9ic2VydmUocm9vdCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7XG4gIGNvbnN0IG9ic2VydmVyV3JhcHBlciA9IHtcbiAgICBvYnNlcnZlKCkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyb290LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTtcbiAgICB9LFxuICAgIGRpc2Nvbm5lY3QoKSB7XG4gICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9O1xuICBvYnNlcnZlclN0YWNrLnB1c2gob2JzZXJ2ZXJXcmFwcGVyKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIGhpZGRlbk5vZGVzKSB7XG4gICAgICBjb25zdCBjb3VudCA9IHJlZkNvdW50TWFwLmdldChub2RlKTtcbiAgICAgIGlmIChjb3VudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpO1xuICAgICAgICByZWZDb3VudE1hcC5kZWxldGUobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWZDb3VudE1hcC5zZXQobm9kZSwgY291bnQgLSAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9ic2VydmVyV3JhcHBlciA9PT0gb2JzZXJ2ZXJTdGFja1tvYnNlcnZlclN0YWNrLmxlbmd0aCAtIDFdKSB7XG4gICAgICBvYnNlcnZlclN0YWNrLnBvcCgpO1xuICAgICAgaWYgKG9ic2VydmVyU3RhY2subGVuZ3RoKSB7XG4gICAgICAgIG9ic2VydmVyU3RhY2tbb2JzZXJ2ZXJTdGFjay5sZW5ndGggLSAxXS5vYnNlcnZlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ic2VydmVyU3RhY2suc3BsaWNlKG9ic2VydmVyU3RhY2suaW5kZXhPZihvYnNlcnZlcldyYXBwZXIpLCAxKTtcbiAgICB9XG4gIH07XG59XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AY29ydnUrdXRpbHNAMC4zLjJfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bjb3J2dS91dGlscy9kaXN0L2NodW5rL0hENEI3SjdBLmpzXG52YXIgYWN0aXZlU3R5bGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbnZhciBjcmVhdGVTdHlsZSA9IChwcm9wcykgPT4ge1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlID0gYWNjZXNzMihwcm9wcy5zdHlsZSkgPz8ge307XG4gICAgY29uc3QgcHJvcGVydGllcyA9IGFjY2VzczIocHJvcHMucHJvcGVydGllcykgPz8gW107XG4gICAgY29uc3Qgb3JpZ2luYWxTdHlsZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzdHlsZSkge1xuICAgICAgb3JpZ2luYWxTdHlsZXNba2V5XSA9IHByb3BzLmVsZW1lbnQuc3R5bGVba2V5XTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlU3R5bGUgPSBhY3RpdmVTdHlsZXMuZ2V0KHByb3BzLmtleSk7XG4gICAgaWYgKGFjdGl2ZVN0eWxlKSB7XG4gICAgICBhY3RpdmVTdHlsZS5hY3RpdmVDb3VudCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBhY3RpdmVTdHlsZXMuc2V0KHByb3BzLmtleSwge1xuICAgICAgICBhY3RpdmVDb3VudDogMSxcbiAgICAgICAgb3JpZ2luYWxTdHlsZXMsXG4gICAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMubWFwKChwcm9wZXJ0eSkgPT4gcHJvcGVydHkua2V5KVxuICAgICAgfSk7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24ocHJvcHMuZWxlbWVudC5zdHlsZSwgcHJvcHMuc3R5bGUpO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgcHJvcHMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eS5rZXksIHByb3BlcnR5LnZhbHVlKTtcbiAgICB9XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVN0eWxlMiA9IGFjdGl2ZVN0eWxlcy5nZXQocHJvcHMua2V5KTtcbiAgICAgIGlmICghYWN0aXZlU3R5bGUyKSByZXR1cm47XG4gICAgICBpZiAoYWN0aXZlU3R5bGUyLmFjdGl2ZUNvdW50ICE9PSAxKSB7XG4gICAgICAgIGFjdGl2ZVN0eWxlMi5hY3RpdmVDb3VudC0tO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhY3RpdmVTdHlsZXMuZGVsZXRlKHByb3BzLmtleSk7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhhY3RpdmVTdHlsZTIub3JpZ2luYWxTdHlsZXMpKSB7XG4gICAgICAgIHByb3BzLmVsZW1lbnQuc3R5bGVba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBhY3RpdmVTdHlsZTIucHJvcGVydGllcykge1xuICAgICAgICBwcm9wcy5lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5lbGVtZW50LnN0eWxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBwcm9wcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgICAgfVxuICAgICAgcHJvcHMuY2xlYW51cD8uKCk7XG4gICAgfSk7XG4gIH0pO1xufTtcbnZhciBzdHlsZV9kZWZhdWx0ID0gY3JlYXRlU3R5bGU7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9AY29ydnUrdXRpbHNAMC4zLjJfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Bjb3J2dS91dGlscy9kaXN0L3Njcm9sbC9pbmRleC5qc1xudmFyIGdldFNjcm9sbERpbWVuc2lvbnMgPSAoZWxlbWVudCwgYXhpcykgPT4ge1xuICBzd2l0Y2ggKGF4aXMpIHtcbiAgICBjYXNlIFwieFwiOlxuICAgICAgcmV0dXJuIFtlbGVtZW50LmNsaWVudFdpZHRoLCBlbGVtZW50LnNjcm9sbExlZnQsIGVsZW1lbnQuc2Nyb2xsV2lkdGhdO1xuICAgIGNhc2UgXCJ5XCI6XG4gICAgICByZXR1cm4gW2VsZW1lbnQuY2xpZW50SGVpZ2h0LCBlbGVtZW50LnNjcm9sbFRvcCwgZWxlbWVudC5zY3JvbGxIZWlnaHRdO1xuICB9XG59O1xudmFyIGlzU2Nyb2xsQ29udGFpbmVyID0gKGVsZW1lbnQsIGF4aXMpID0+IHtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgY29uc3Qgb3ZlcmZsb3cgPSBheGlzID09PSBcInhcIiA/IHN0eWxlcy5vdmVyZmxvd1ggOiBzdHlsZXMub3ZlcmZsb3dZO1xuICByZXR1cm4gb3ZlcmZsb3cgPT09IFwiYXV0b1wiIHx8IG92ZXJmbG93ID09PSBcInNjcm9sbFwiIHx8IC8vIFRoZSBIVE1MIGVsZW1lbnQgaXMgYSBzY3JvbGwgY29udGFpbmVyIGlmIGl0IGhhcyBvdmVyZmxvdyB2aXNpYmxlXG4gIGVsZW1lbnQudGFnTmFtZSA9PT0gXCJIVE1MXCIgJiYgb3ZlcmZsb3cgPT09IFwidmlzaWJsZVwiO1xufTtcbnZhciBnZXRTY3JvbGxBdExvY2F0aW9uID0gKGxvY2F0aW9uLCBheGlzLCBzdG9wQXQpID0+IHtcbiAgY29uc3QgZGlyZWN0aW9uRmFjdG9yID0gYXhpcyA9PT0gXCJ4XCIgJiYgd2luZG93LmdldENvbXB1dGVkU3R5bGUobG9jYXRpb24pLmRpcmVjdGlvbiA9PT0gXCJydGxcIiA/IC0xIDogMTtcbiAgbGV0IGN1cnJlbnRFbGVtZW50ID0gbG9jYXRpb247XG4gIGxldCBhdmFpbGFibGVTY3JvbGwgPSAwO1xuICBsZXQgYXZhaWxhYmxlU2Nyb2xsVG9wID0gMDtcbiAgbGV0IHdyYXBwZXJSZWFjaGVkID0gZmFsc2U7XG4gIGRvIHtcbiAgICBjb25zdCBbY2xpZW50U2l6ZSwgc2Nyb2xsT2Zmc2V0LCBzY3JvbGxTaXplXSA9IGdldFNjcm9sbERpbWVuc2lvbnMoXG4gICAgICBjdXJyZW50RWxlbWVudCxcbiAgICAgIGF4aXNcbiAgICApO1xuICAgIGNvbnN0IHNjcm9sbGVkID0gc2Nyb2xsU2l6ZSAtIGNsaWVudFNpemUgLSBkaXJlY3Rpb25GYWN0b3IgKiBzY3JvbGxPZmZzZXQ7XG4gICAgaWYgKChzY3JvbGxPZmZzZXQgIT09IDAgfHwgc2Nyb2xsZWQgIT09IDApICYmIGlzU2Nyb2xsQ29udGFpbmVyKGN1cnJlbnRFbGVtZW50LCBheGlzKSkge1xuICAgICAgYXZhaWxhYmxlU2Nyb2xsICs9IHNjcm9sbGVkO1xuICAgICAgYXZhaWxhYmxlU2Nyb2xsVG9wICs9IHNjcm9sbE9mZnNldDtcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRFbGVtZW50ID09PSAoc3RvcEF0ID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHdyYXBwZXJSZWFjaGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5fJGhvc3QgPz8gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG4gIH0gd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmICF3cmFwcGVyUmVhY2hlZCk7XG4gIHJldHVybiBbYXZhaWxhYmxlU2Nyb2xsLCBhdmFpbGFibGVTY3JvbGxUb3BdO1xufTtcblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3NvbGlkLXByZXZlbnQtc2Nyb2xsQDAuMS45X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9zb2xpZC1wcmV2ZW50LXNjcm9sbC9kaXN0L2luZGV4LmpzXG52YXIgW3ByZXZlbnRTY3JvbGxTdGFjaywgc2V0UHJldmVudFNjcm9sbFN0YWNrXSA9IGNyZWF0ZVNpZ25hbChbXSk7XG52YXIgaXNBY3RpdmUgPSAoaWQpID0+IHByZXZlbnRTY3JvbGxTdGFjaygpLmluZGV4T2YoaWQpID09PSBwcmV2ZW50U2Nyb2xsU3RhY2soKS5sZW5ndGggLSAxO1xudmFyIGNyZWF0ZVByZXZlbnRTY3JvbGwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgZGVmYXVsdGVkUHJvcHMgPSBtZXJnZVByb3BzKFxuICAgIHtcbiAgICAgIGVsZW1lbnQ6IG51bGwsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgaGlkZVNjcm9sbGJhcjogdHJ1ZSxcbiAgICAgIHByZXZlbnRTY3JvbGxiYXJTaGlmdDogdHJ1ZSxcbiAgICAgIHByZXZlbnRTY3JvbGxiYXJTaGlmdE1vZGU6IFwicGFkZGluZ1wiLFxuICAgICAgcmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB0cnVlLFxuICAgICAgYWxsb3dQaW5jaFpvb206IGZhbHNlXG4gICAgfSxcbiAgICBwcm9wc1xuICApO1xuICBjb25zdCBwcmV2ZW50U2Nyb2xsSWQgPSBjcmVhdGVVbmlxdWVJZCgpO1xuICBsZXQgY3VycmVudFRvdWNoU3RhcnQgPSBbMCwgMF07XG4gIGxldCBjdXJyZW50VG91Y2hTdGFydEF4aXMgPSBudWxsO1xuICBsZXQgY3VycmVudFRvdWNoU3RhcnREZWx0YSA9IG51bGw7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhY2Nlc3MyKGRlZmF1bHRlZFByb3BzLmVuYWJsZWQpKSByZXR1cm47XG4gICAgc2V0UHJldmVudFNjcm9sbFN0YWNrKChzdGFjaykgPT4gWy4uLnN0YWNrLCBwcmV2ZW50U2Nyb2xsSWRdKTtcbiAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgc2V0UHJldmVudFNjcm9sbFN0YWNrKFxuICAgICAgICAoc3RhY2spID0+IHN0YWNrLmZpbHRlcigoaWQpID0+IGlkICE9PSBwcmV2ZW50U2Nyb2xsSWQpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFjY2VzczIoZGVmYXVsdGVkUHJvcHMuZW5hYmxlZCkgfHwgIWFjY2VzczIoZGVmYXVsdGVkUHJvcHMuaGlkZVNjcm9sbGJhcikpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgeyBib2R5IH0gPSBkb2N1bWVudDtcbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gYm9keS5vZmZzZXRXaWR0aDtcbiAgICBpZiAoYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5wcmV2ZW50U2Nyb2xsYmFyU2hpZnQpKSB7XG4gICAgICBjb25zdCBzdHlsZSA9IHsgb3ZlcmZsb3c6IFwiaGlkZGVuXCIgfTtcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBbXTtcbiAgICAgIGlmIChzY3JvbGxiYXJXaWR0aCA+IDApIHtcbiAgICAgICAgaWYgKGFjY2VzczIoZGVmYXVsdGVkUHJvcHMucHJldmVudFNjcm9sbGJhclNoaWZ0TW9kZSkgPT09IFwicGFkZGluZ1wiKSB7XG4gICAgICAgICAgc3R5bGUucGFkZGluZ1JpZ2h0ID0gYGNhbGMoJHt3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5wYWRkaW5nUmlnaHR9ICsgJHtzY3JvbGxiYXJXaWR0aH1weClgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0eWxlLm1hcmdpblJpZ2h0ID0gYGNhbGMoJHt3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5tYXJnaW5SaWdodH0gKyAke3Njcm9sbGJhcldpZHRofXB4KWA7XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydGllcy5wdXNoKHtcbiAgICAgICAgICBrZXk6IFwiLS1zY3JvbGxiYXItd2lkdGhcIixcbiAgICAgICAgICB2YWx1ZTogYCR7c2Nyb2xsYmFyV2lkdGh9cHhgXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2Zmc2V0VG9wID0gd2luZG93LnNjcm9sbFk7XG4gICAgICBjb25zdCBvZmZzZXRMZWZ0ID0gd2luZG93LnNjcm9sbFg7XG4gICAgICBzdHlsZV9kZWZhdWx0KHtcbiAgICAgICAga2V5OiBcInByZXZlbnQtc2Nyb2xsXCIsXG4gICAgICAgIGVsZW1lbnQ6IGJvZHksXG4gICAgICAgIHN0eWxlLFxuICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICBjbGVhbnVwOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKGFjY2VzczIoZGVmYXVsdGVkUHJvcHMucmVzdG9yZVNjcm9sbFBvc2l0aW9uKSAmJiBzY3JvbGxiYXJXaWR0aCA+IDApIHtcbiAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyhvZmZzZXRMZWZ0LCBvZmZzZXRUb3ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlX2RlZmF1bHQoe1xuICAgICAgICBrZXk6IFwicHJldmVudC1zY3JvbGxcIixcbiAgICAgICAgZWxlbWVudDogYm9keSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIlxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNBY3RpdmUocHJldmVudFNjcm9sbElkKSB8fCAhYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5lbmFibGVkKSkgcmV0dXJuO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLCBtYXliZVByZXZlbnRXaGVlbCwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBsb2dUb3VjaFN0YXJ0LCB7XG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH0pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgbWF5YmVQcmV2ZW50VG91Y2gsIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ3aGVlbFwiLCBtYXliZVByZXZlbnRXaGVlbCk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hzdGFydFwiLCBsb2dUb3VjaFN0YXJ0KTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgbWF5YmVQcmV2ZW50VG91Y2gpO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgbG9nVG91Y2hTdGFydCA9IChldmVudCkgPT4ge1xuICAgIGN1cnJlbnRUb3VjaFN0YXJ0ID0gZ2V0VG91Y2hYWShldmVudCk7XG4gICAgY3VycmVudFRvdWNoU3RhcnRBeGlzID0gbnVsbDtcbiAgICBjdXJyZW50VG91Y2hTdGFydERlbHRhID0gbnVsbDtcbiAgfTtcbiAgY29uc3QgbWF5YmVQcmV2ZW50V2hlZWwgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgY29uc3Qgd3JhcHBlciA9IGFjY2VzczIoZGVmYXVsdGVkUHJvcHMuZWxlbWVudCk7XG4gICAgY29uc3QgZGVsdGEgPSBnZXREZWx0YVhZKGV2ZW50KTtcbiAgICBjb25zdCBheGlzID0gTWF0aC5hYnMoZGVsdGFbMF0pID4gTWF0aC5hYnMoZGVsdGFbMV0pID8gXCJ4XCIgOiBcInlcIjtcbiAgICBjb25zdCBheGlzRGVsdGEgPSBheGlzID09PSBcInhcIiA/IGRlbHRhWzBdIDogZGVsdGFbMV07XG4gICAgY29uc3QgcmVzdWx0c0luU2Nyb2xsID0gd291bGRTY3JvbGwodGFyZ2V0LCBheGlzLCBheGlzRGVsdGEsIHdyYXBwZXIpO1xuICAgIGxldCBzaG91bGRDYW5jZWw7XG4gICAgaWYgKHdyYXBwZXIgJiYgY29udGFpbnMyKHdyYXBwZXIsIHRhcmdldCkpIHtcbiAgICAgIHNob3VsZENhbmNlbCA9ICFyZXN1bHRzSW5TY3JvbGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNob3VsZENhbmNlbCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChzaG91bGRDYW5jZWwgJiYgZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG1heWJlUHJldmVudFRvdWNoID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlciA9IGFjY2VzczIoZGVmYXVsdGVkUHJvcHMuZWxlbWVudCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgIGxldCBzaG91bGRDYW5jZWw7XG4gICAgaWYgKGV2ZW50LnRvdWNoZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICBzaG91bGRDYW5jZWwgPSAhYWNjZXNzMihkZWZhdWx0ZWRQcm9wcy5hbGxvd1BpbmNoWm9vbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyZW50VG91Y2hTdGFydEF4aXMgPT0gbnVsbCB8fCBjdXJyZW50VG91Y2hTdGFydERlbHRhID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGRlbHRhID0gZ2V0VG91Y2hYWShldmVudCkubWFwKFxuICAgICAgICAgICh0b3VjaCwgaTIpID0+IGN1cnJlbnRUb3VjaFN0YXJ0W2kyXSAtIHRvdWNoXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGF4aXMgPSBNYXRoLmFicyhkZWx0YVswXSkgPiBNYXRoLmFicyhkZWx0YVsxXSkgPyBcInhcIiA6IFwieVwiO1xuICAgICAgICBjdXJyZW50VG91Y2hTdGFydEF4aXMgPSBheGlzO1xuICAgICAgICBjdXJyZW50VG91Y2hTdGFydERlbHRhID0gYXhpcyA9PT0gXCJ4XCIgPyBkZWx0YVswXSA6IGRlbHRhWzFdO1xuICAgICAgfVxuICAgICAgaWYgKHRhcmdldC50eXBlID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB3b3VsZFJlc3VsdEluU2Nyb2xsID0gd291bGRTY3JvbGwoXG4gICAgICAgICAgdGFyZ2V0LFxuICAgICAgICAgIGN1cnJlbnRUb3VjaFN0YXJ0QXhpcyxcbiAgICAgICAgICBjdXJyZW50VG91Y2hTdGFydERlbHRhLFxuICAgICAgICAgIHdyYXBwZXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHdyYXBwZXIgJiYgY29udGFpbnMyKHdyYXBwZXIsIHRhcmdldCkpIHtcbiAgICAgICAgICBzaG91bGRDYW5jZWwgPSAhd291bGRSZXN1bHRJblNjcm9sbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzaG91bGRDYW5jZWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRDYW5jZWwgJiYgZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG59O1xudmFyIGdldERlbHRhWFkgPSAoZXZlbnQpID0+IFtcbiAgZXZlbnQuZGVsdGFYLFxuICBldmVudC5kZWx0YVlcbl07XG52YXIgZ2V0VG91Y2hYWSA9IChldmVudCkgPT4gZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0gPyBbZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WV0gOiBbMCwgMF07XG52YXIgd291bGRTY3JvbGwgPSAodGFyZ2V0LCBheGlzLCBkZWx0YSwgd3JhcHBlcikgPT4ge1xuICBjb25zdCB0YXJnZXRJbldyYXBwZXIgPSB3cmFwcGVyICE9PSBudWxsICYmIGNvbnRhaW5zMih3cmFwcGVyLCB0YXJnZXQpO1xuICBjb25zdCBbYXZhaWxhYmxlU2Nyb2xsLCBhdmFpbGFibGVTY3JvbGxUb3BdID0gZ2V0U2Nyb2xsQXRMb2NhdGlvbihcbiAgICB0YXJnZXQsXG4gICAgYXhpcyxcbiAgICB0YXJnZXRJbldyYXBwZXIgPyB3cmFwcGVyIDogdm9pZCAwXG4gICk7XG4gIGlmIChkZWx0YSA+IDAgJiYgTWF0aC5hYnMoYXZhaWxhYmxlU2Nyb2xsKSA8PSAxKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkZWx0YSA8IDAgJiYgTWF0aC5hYnMoYXZhaWxhYmxlU2Nyb2xsVG9wKSA8IDEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIGNvbnRhaW5zMiA9ICh3cmFwcGVyLCB0YXJnZXQpID0+IHtcbiAgaWYgKHdyYXBwZXIuY29udGFpbnModGFyZ2V0KSkgcmV0dXJuIHRydWU7XG4gIGxldCBjdXJyZW50RWxlbWVudCA9IHRhcmdldDtcbiAgd2hpbGUgKGN1cnJlbnRFbGVtZW50KSB7XG4gICAgaWYgKGN1cnJlbnRFbGVtZW50ID09PSB3cmFwcGVyKSByZXR1cm4gdHJ1ZTtcbiAgICBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50Ll8kaG9zdCA/PyBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG52YXIgcHJldmVudFNjcm9sbF9kZWZhdWx0ID0gY3JlYXRlUHJldmVudFNjcm9sbDtcbnZhciBzcmNfZGVmYXVsdDIgPSBwcmV2ZW50U2Nyb2xsX2RlZmF1bHQ7XG5cbi8vIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Aa29iYWx0ZStjb3JlQDAuMTMuNF9zb2xpZC1qc0AxLjkuNS9ub2RlX21vZHVsZXMvQGtvYmFsdGUvY29yZS9kaXN0L2NodW5rLzNGNEI2MlJQLmpzXG52YXIgTWVudUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VPcHRpb25hbE1lbnVDb250ZXh0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChNZW51Q29udGV4dCk7XG59XG5mdW5jdGlvbiB1c2VNZW51Q29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZU9wdGlvbmFsTWVudUNvbnRleHQoKTtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogYHVzZU1lbnVDb250ZXh0YCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYE1lbnVgIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbnZhciBNZW51SXRlbUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VNZW51SXRlbUNvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1lbnVJdGVtQ29udGV4dCk7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJba29iYWx0ZV06IGB1c2VNZW51SXRlbUNvbnRleHRgIG11c3QgYmUgdXNlZCB3aXRoaW4gYSBgTWVudS5JdGVtYCBjb21wb25lbnRcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG52YXIgTWVudVJvb3RDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuZnVuY3Rpb24gdXNlTWVudVJvb3RDb250ZXh0KCkge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChNZW51Um9vdENvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgdXNlTWVudVJvb3RDb250ZXh0YCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYE1lbnVSb290YCBjb21wb25lbnRcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiBNZW51SXRlbUJhc2UocHJvcHMpIHtcbiAgbGV0IHJlZjtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgbWVudUNvbnRleHQgPSB1c2VNZW51Q29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogcm9vdENvbnRleHQuZ2VuZXJhdGVJZChgaXRlbS0ke2NyZWF0ZVVuaXF1ZUlkKCl9YClcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJ0ZXh0VmFsdWVcIiwgXCJkaXNhYmxlZFwiLCBcImNsb3NlT25TZWxlY3RcIiwgXCJjaGVja2VkXCIsIFwiaW5kZXRlcm1pbmF0ZVwiLCBcIm9uU2VsZWN0XCIsIFwib25Qb2ludGVyTW92ZVwiLCBcIm9uUG9pbnRlckxlYXZlXCIsIFwib25Qb2ludGVyRG93blwiLCBcIm9uUG9pbnRlclVwXCIsIFwib25DbGlja1wiLCBcIm9uS2V5RG93blwiLCBcIm9uTW91c2VEb3duXCIsIFwib25Gb2N1c1wiXSk7XG4gIGNvbnN0IFtsYWJlbElkLCBzZXRMYWJlbElkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbZGVzY3JpcHRpb25JZCwgc2V0RGVzY3JpcHRpb25JZF0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2xhYmVsUmVmLCBzZXRMYWJlbFJlZl0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3Qgc2VsZWN0aW9uTWFuYWdlciA9ICgpID0+IG1lbnVDb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKTtcbiAgY29uc3Qga2V5ID0gKCkgPT4gb3RoZXJzLmlkO1xuICBjb25zdCBpc0hpZ2hsaWdodGVkID0gKCkgPT4gc2VsZWN0aW9uTWFuYWdlcigpLmZvY3VzZWRLZXkoKSA9PT0ga2V5KCk7XG4gIGNvbnN0IG9uU2VsZWN0ID0gKCkgPT4ge1xuICAgIGxvY2FsLm9uU2VsZWN0Py4oKTtcbiAgICBpZiAobG9jYWwuY2xvc2VPblNlbGVjdCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIG1lbnVDb250ZXh0LmNsb3NlKHRydWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjcmVhdGVEb21Db2xsZWN0aW9uSXRlbSh7XG4gICAgZ2V0SXRlbTogKCkgPT4gKHtcbiAgICAgIHJlZjogKCkgPT4gcmVmLFxuICAgICAgdHlwZTogXCJpdGVtXCIsXG4gICAgICBrZXk6IGtleSgpLFxuICAgICAgdGV4dFZhbHVlOiBsb2NhbC50ZXh0VmFsdWUgPz8gbGFiZWxSZWYoKT8udGV4dENvbnRlbnQgPz8gcmVmPy50ZXh0Q29udGVudCA/PyBcIlwiLFxuICAgICAgZGlzYWJsZWQ6IGxvY2FsLmRpc2FibGVkID8/IGZhbHNlXG4gICAgfSlcbiAgfSk7XG4gIGNvbnN0IHNlbGVjdGFibGVJdGVtID0gY3JlYXRlU2VsZWN0YWJsZUl0ZW0oe1xuICAgIGtleSxcbiAgICBzZWxlY3Rpb25NYW5hZ2VyLFxuICAgIHNob3VsZFNlbGVjdE9uUHJlc3NVcDogdHJ1ZSxcbiAgICBhbGxvd3NEaWZmZXJlbnRQcmVzc09yaWdpbjogdHJ1ZSxcbiAgICBkaXNhYmxlZDogKCkgPT4gbG9jYWwuZGlzYWJsZWRcbiAgfSwgKCkgPT4gcmVmKTtcbiAgY29uc3Qgb25Qb2ludGVyTW92ZSA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vblBvaW50ZXJNb3ZlKTtcbiAgICBpZiAoZTIucG9pbnRlclR5cGUgIT09IFwibW91c2VcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobG9jYWwuZGlzYWJsZWQpIHtcbiAgICAgIG1lbnVDb250ZXh0Lm9uSXRlbUxlYXZlKGUyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVudUNvbnRleHQub25JdGVtRW50ZXIoZTIpO1xuICAgICAgaWYgKCFlMi5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhlMi5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgbWVudUNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcigpLnNldEZvY3VzZWQodHJ1ZSk7XG4gICAgICAgIG1lbnVDb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkS2V5KGtleSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlckxlYXZlID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlckxlYXZlKTtcbiAgICBpZiAoZTIucG9pbnRlclR5cGUgIT09IFwibW91c2VcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBtZW51Q29udGV4dC5vbkl0ZW1MZWF2ZShlMik7XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlclVwID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlclVwKTtcbiAgICBpZiAoIWxvY2FsLmRpc2FibGVkICYmIGUyLmJ1dHRvbiA9PT0gMCkge1xuICAgICAgb25TZWxlY3QoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uS2V5RG93biA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vbktleURvd24pO1xuICAgIGlmIChlMi5yZXBlYXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGxvY2FsLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZTIua2V5KSB7XG4gICAgICBjYXNlIFwiRW50ZXJcIjpcbiAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgIG9uU2VsZWN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgYXJpYUNoZWNrZWQgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICBpZiAobG9jYWwuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgcmV0dXJuIFwibWl4ZWRcIjtcbiAgICB9XG4gICAgaWYgKGxvY2FsLmNoZWNrZWQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsLmNoZWNrZWQ7XG4gIH0pO1xuICBjb25zdCBkYXRhc2V0ID0gY3JlYXRlTWVtbygoKSA9PiAoe1xuICAgIFwiZGF0YS1pbmRldGVybWluYXRlXCI6IGxvY2FsLmluZGV0ZXJtaW5hdGUgPyBcIlwiIDogdm9pZCAwLFxuICAgIFwiZGF0YS1jaGVja2VkXCI6IGxvY2FsLmNoZWNrZWQgJiYgIWxvY2FsLmluZGV0ZXJtaW5hdGUgPyBcIlwiIDogdm9pZCAwLFxuICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBsb2NhbC5kaXNhYmxlZCA/IFwiXCIgOiB2b2lkIDAsXG4gICAgXCJkYXRhLWhpZ2hsaWdodGVkXCI6IGlzSGlnaGxpZ2h0ZWQoKSA/IFwiXCIgOiB2b2lkIDBcbiAgfSkpO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIGlzQ2hlY2tlZDogKCkgPT4gbG9jYWwuY2hlY2tlZCxcbiAgICBkYXRhc2V0LFxuICAgIHNldExhYmVsUmVmLFxuICAgIGdlbmVyYXRlSWQ6IGNyZWF0ZUdlbmVyYXRlSWQoKCkgPT4gb3RoZXJzLmlkKSxcbiAgICByZWdpc3RlckxhYmVsOiBjcmVhdGVSZWdpc3RlcklkKHNldExhYmVsSWQpLFxuICAgIHJlZ2lzdGVyRGVzY3JpcHRpb246IGNyZWF0ZVJlZ2lzdGVySWQoc2V0RGVzY3JpcHRpb25JZClcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51SXRlbUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICAgICAgYXM6IFwiZGl2XCIsXG4gICAgICAgIHJlZihyJCkge1xuICAgICAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKChlbCkgPT4gcmVmID0gZWwsIGxvY2FsLnJlZik7XG4gICAgICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGFibGVJdGVtLnRhYkluZGV4KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBbXCJhcmlhLWNoZWNrZWRcIl0oKSB7XG4gICAgICAgICAgcmV0dXJuIGFyaWFDaGVja2VkKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBbXCJhcmlhLWRpc2FibGVkXCJdKCkge1xuICAgICAgICAgIHJldHVybiBsb2NhbC5kaXNhYmxlZDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IFtcImFyaWEtbGFiZWxsZWRieVwiXSgpIHtcbiAgICAgICAgICByZXR1cm4gbGFiZWxJZCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgW1wiYXJpYS1kZXNjcmliZWRieVwiXSgpIHtcbiAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25JZCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgW1wiZGF0YS1rZXlcIl0oKSB7XG4gICAgICAgICAgcmV0dXJuIHNlbGVjdGFibGVJdGVtLmRhdGFLZXkoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uUG9pbnRlckRvd24oKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbXBvc2VFdmVudEhhbmRsZXJzKFtsb2NhbC5vblBvaW50ZXJEb3duLCBzZWxlY3RhYmxlSXRlbS5vblBvaW50ZXJEb3duXSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvblBvaW50ZXJVcCgpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uUG9pbnRlclVwLCBzZWxlY3RhYmxlSXRlbS5vblBvaW50ZXJVcF0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25DbGljaygpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uQ2xpY2ssIHNlbGVjdGFibGVJdGVtLm9uQ2xpY2tdKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uS2V5RG93bigpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uS2V5RG93biwgc2VsZWN0YWJsZUl0ZW0ub25LZXlEb3duXSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBvbk1vdXNlRG93bigpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uTW91c2VEb3duLCBzZWxlY3RhYmxlSXRlbS5vbk1vdXNlRG93bl0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgb25Gb2N1cygpIHtcbiAgICAgICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uRm9jdXMsIHNlbGVjdGFibGVJdGVtLm9uRm9jdXNdKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Qb2ludGVyTW92ZSxcbiAgICAgICAgb25Qb2ludGVyTGVhdmVcbiAgICAgIH0sIGRhdGFzZXQsIG90aGVycykpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBNZW51Q2hlY2tib3hJdGVtKHByb3BzKSB7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGNsb3NlT25TZWxlY3Q6IGZhbHNlXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wiY2hlY2tlZFwiLCBcImRlZmF1bHRDaGVja2VkXCIsIFwib25DaGFuZ2VcIiwgXCJvblNlbGVjdFwiXSk7XG4gIGNvbnN0IHN0YXRlID0gY3JlYXRlVG9nZ2xlU3RhdGUoe1xuICAgIGlzU2VsZWN0ZWQ6ICgpID0+IGxvY2FsLmNoZWNrZWQsXG4gICAgZGVmYXVsdElzU2VsZWN0ZWQ6ICgpID0+IGxvY2FsLmRlZmF1bHRDaGVja2VkLFxuICAgIG9uU2VsZWN0ZWRDaGFuZ2U6IChjaGVja2VkKSA9PiBsb2NhbC5vbkNoYW5nZT8uKGNoZWNrZWQpLFxuICAgIGlzRGlzYWJsZWQ6ICgpID0+IG90aGVycy5kaXNhYmxlZFxuICB9KTtcbiAgY29uc3Qgb25TZWxlY3QgPSAoKSA9PiB7XG4gICAgbG9jYWwub25TZWxlY3Q/LigpO1xuICAgIHN0YXRlLnRvZ2dsZSgpO1xuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVJdGVtQmFzZSwgbWVyZ2VQcm9wcyh7XG4gICAgcm9sZTogXCJtZW51aXRlbWNoZWNrYm94XCIsXG4gICAgZ2V0IGNoZWNrZWQoKSB7XG4gICAgICByZXR1cm4gc3RhdGUuaXNTZWxlY3RlZCgpO1xuICAgIH0sXG4gICAgb25TZWxlY3RcbiAgfSwgb3RoZXJzKSk7XG59XG52YXIgTWVudWJhckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XG5mdW5jdGlvbiB1c2VPcHRpb25hbE1lbnViYXJDb250ZXh0KCkge1xuICByZXR1cm4gdXNlQ29udGV4dChNZW51YmFyQ29udGV4dCk7XG59XG52YXIgTUVOVUJBUl9LRVlTID0ge1xuICBuZXh0OiAoZGlyLCBvcmllbnRhdGlvbikgPT4gZGlyID09PSBcImx0clwiID8gb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJBcnJvd1JpZ2h0XCIgOiBcIkFycm93RG93blwiIDogb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJBcnJvd0xlZnRcIiA6IFwiQXJyb3dVcFwiLFxuICBwcmV2aW91czogKGRpciwgb3JpZW50YXRpb24pID0+IE1FTlVCQVJfS0VZUy5uZXh0KGRpciA9PT0gXCJsdHJcIiA/IFwicnRsXCIgOiBcImx0clwiLCBvcmllbnRhdGlvbilcbn07XG52YXIgTUVOVV9LRVlTID0ge1xuICBmaXJzdDogKG9yaWVudGF0aW9uKSA9PiBvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcIkFycm93RG93blwiIDogXCJBcnJvd1JpZ2h0XCIsXG4gIGxhc3Q6IChvcmllbnRhdGlvbikgPT4gb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJBcnJvd1VwXCIgOiBcIkFycm93TGVmdFwiXG59O1xuZnVuY3Rpb24gTWVudVRyaWdnZXIocHJvcHMpIHtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IG9wdGlvbmFsTWVudWJhckNvbnRleHQgPSB1c2VPcHRpb25hbE1lbnViYXJDb250ZXh0KCk7XG4gIGNvbnN0IHtcbiAgICBkaXJlY3Rpb25cbiAgfSA9IHVzZUxvY2FsZSgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogcm9vdENvbnRleHQuZ2VuZXJhdGVJZChcInRyaWdnZXJcIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJpZFwiLCBcImRpc2FibGVkXCIsIFwib25Qb2ludGVyRG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIiwgXCJvbk1vdXNlT3ZlclwiLCBcIm9uRm9jdXNcIl0pO1xuICBsZXQga2V5ID0gKCkgPT4gcm9vdENvbnRleHQudmFsdWUoKTtcbiAgaWYgKG9wdGlvbmFsTWVudWJhckNvbnRleHQgIT09IHZvaWQgMCkge1xuICAgIGtleSA9ICgpID0+IHJvb3RDb250ZXh0LnZhbHVlKCkgPz8gbG9jYWwuaWQ7XG4gICAgaWYgKG9wdGlvbmFsTWVudWJhckNvbnRleHQubGFzdFZhbHVlKCkgPT09IHZvaWQgMClcbiAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQuc2V0TGFzdFZhbHVlKGtleSk7XG4gIH1cbiAgY29uc3QgdGFnTmFtZSA9IGNyZWF0ZVRhZ05hbWUoKCkgPT4gY29udGV4dC50cmlnZ2VyUmVmKCksICgpID0+IFwiYnV0dG9uXCIpO1xuICBjb25zdCBpc05hdGl2ZUxpbmsgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGFnTmFtZSgpID09PSBcImFcIiAmJiBjb250ZXh0LnRyaWdnZXJSZWYoKT8uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSAhPSBudWxsO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KG9uKCgpID0+IG9wdGlvbmFsTWVudWJhckNvbnRleHQ/LnZhbHVlKCksICh2YWx1ZSkgPT4ge1xuICAgIGlmICghaXNOYXRpdmVMaW5rKCkpXG4gICAgICByZXR1cm47XG4gICAgaWYgKHZhbHVlID09PSBrZXkoKSlcbiAgICAgIGNvbnRleHQudHJpZ2dlclJlZigpPy5mb2N1cygpO1xuICB9KSk7XG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChvcHRpb25hbE1lbnViYXJDb250ZXh0ICE9PSB2b2lkIDApIHtcbiAgICAgIGlmICghY29udGV4dC5pc09wZW4oKSkge1xuICAgICAgICBpZiAoIW9wdGlvbmFsTWVudWJhckNvbnRleHQuYXV0b0ZvY3VzTWVudSgpKSB7XG4gICAgICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5zZXRBdXRvRm9jdXNNZW51KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQub3BlbihmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dC52YWx1ZSgpID09PSBrZXkoKSlcbiAgICAgICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0LmNsb3NlTWVudSgpO1xuICAgICAgfVxuICAgIH0gZWxzZVxuICAgICAgY29udGV4dC50b2dnbGUodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlckRvd24gPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Qb2ludGVyRG93bik7XG4gICAgZTIuY3VycmVudFRhcmdldC5kYXRhc2V0LnBvaW50ZXJUeXBlID0gZTIucG9pbnRlclR5cGU7XG4gICAgaWYgKCFsb2NhbC5kaXNhYmxlZCAmJiBlMi5wb2ludGVyVHlwZSAhPT0gXCJ0b3VjaFwiICYmIGUyLmJ1dHRvbiA9PT0gMCkge1xuICAgICAgaGFuZGxlQ2xpY2soKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uQ2xpY2sgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25DbGljayk7XG4gICAgaWYgKCFsb2NhbC5kaXNhYmxlZCkge1xuICAgICAgaWYgKGUyLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5wb2ludGVyVHlwZSA9PT0gXCJ0b3VjaFwiKVxuICAgICAgICBoYW5kbGVDbGljaygpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uS2V5RG93bik7XG4gICAgaWYgKGxvY2FsLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc05hdGl2ZUxpbmsoKSkge1xuICAgICAgc3dpdGNoIChlMi5rZXkpIHtcbiAgICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICAgIGNhc2UgXCIgXCI6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2ggKGUyLmtleSkge1xuICAgICAgY2FzZSBcIkVudGVyXCI6XG4gICAgICBjYXNlIFwiIFwiOlxuICAgICAgY2FzZSBNRU5VX0tFWVMuZmlyc3Qocm9vdENvbnRleHQub3JpZW50YXRpb24oKSk6XG4gICAgICAgIGUyLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBzY3JvbGxJbnRvVmlld3BvcnQoZTIuY3VycmVudFRhcmdldCk7XG4gICAgICAgIGNvbnRleHQub3BlbihcImZpcnN0XCIpO1xuICAgICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0Py5zZXRBdXRvRm9jdXNNZW51KHRydWUpO1xuICAgICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0Py5zZXRWYWx1ZShrZXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTUVOVV9LRVlTLmxhc3Qocm9vdENvbnRleHQub3JpZW50YXRpb24oKSk6XG4gICAgICAgIGUyLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb250ZXh0Lm9wZW4oXCJsYXN0XCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTUVOVUJBUl9LRVlTLm5leHQoZGlyZWN0aW9uKCksIHJvb3RDb250ZXh0Lm9yaWVudGF0aW9uKCkpOlxuICAgICAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dCA9PT0gdm9pZCAwKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBlMi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5uZXh0TWVudSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTUVOVUJBUl9LRVlTLnByZXZpb3VzKGRpcmVjdGlvbigpLCByb290Q29udGV4dC5vcmllbnRhdGlvbigpKTpcbiAgICAgICAgaWYgKG9wdGlvbmFsTWVudWJhckNvbnRleHQgPT09IHZvaWQgMClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZTIuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQucHJldmlvdXNNZW51KCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Nb3VzZU92ZXIgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25Nb3VzZU92ZXIpO1xuICAgIGlmIChjb250ZXh0LnRyaWdnZXJSZWYoKT8uZGF0YXNldC5wb2ludGVyVHlwZSA9PT0gXCJ0b3VjaFwiKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghbG9jYWwuZGlzYWJsZWQgJiYgb3B0aW9uYWxNZW51YmFyQ29udGV4dCAhPT0gdm9pZCAwICYmIG9wdGlvbmFsTWVudWJhckNvbnRleHQudmFsdWUoKSAhPT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0LnNldFZhbHVlKGtleSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkZvY3VzID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uRm9jdXMpO1xuICAgIGlmIChvcHRpb25hbE1lbnViYXJDb250ZXh0ICE9PSB2b2lkIDAgJiYgZTIuY3VycmVudFRhcmdldC5kYXRhc2V0LnBvaW50ZXJUeXBlICE9PSBcInRvdWNoXCIpXG4gICAgICBvcHRpb25hbE1lbnViYXJDb250ZXh0LnNldFZhbHVlKGtleSk7XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiBvbkNsZWFudXAoY29udGV4dC5yZWdpc3RlclRyaWdnZXJJZChsb2NhbC5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChCdXR0b25Sb290LCBtZXJnZVByb3BzKHtcbiAgICByZWYociQpIHtcbiAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKGNvbnRleHQuc2V0VHJpZ2dlclJlZiwgbG9jYWwucmVmKTtcbiAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICB9LFxuICAgIGdldCBbXCJkYXRhLWtiLW1lbnUtdmFsdWUtdHJpZ2dlclwiXSgpIHtcbiAgICAgIHJldHVybiByb290Q29udGV4dC52YWx1ZSgpO1xuICAgIH0sXG4gICAgZ2V0IGlkKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLmlkO1xuICAgIH0sXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLmRpc2FibGVkO1xuICAgIH0sXG4gICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwidHJ1ZVwiLFxuICAgIGdldCBbXCJhcmlhLWV4cGFuZGVkXCJdKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuaXNPcGVuKCk7XG4gICAgfSxcbiAgICBnZXQgW1wiYXJpYS1jb250cm9sc1wiXSgpIHtcbiAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhY29udGV4dC5pc09wZW4oKSkoKSA/IGNvbnRleHQuY29udGVudElkKCkgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBnZXQgW1wiZGF0YS1oaWdobGlnaHRlZFwiXSgpIHtcbiAgICAgIHJldHVybiBrZXkoKSAhPT0gdm9pZCAwICYmIG9wdGlvbmFsTWVudWJhckNvbnRleHQ/LnZhbHVlKCkgPT09IGtleSgpID8gdHJ1ZSA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCB0YWJJbmRleCgpIHtcbiAgICAgIHJldHVybiBvcHRpb25hbE1lbnViYXJDb250ZXh0ICE9PSB2b2lkIDAgPyBvcHRpb25hbE1lbnViYXJDb250ZXh0LnZhbHVlKCkgPT09IGtleSgpIHx8IG9wdGlvbmFsTWVudWJhckNvbnRleHQubGFzdFZhbHVlKCkgPT09IGtleSgpID8gMCA6IC0xIDogdm9pZCAwO1xuICAgIH0sXG4gICAgb25Qb2ludGVyRG93bixcbiAgICBvbk1vdXNlT3ZlcixcbiAgICBvbkNsaWNrLFxuICAgIG9uS2V5RG93bixcbiAgICBvbkZvY3VzLFxuICAgIHJvbGU6IG9wdGlvbmFsTWVudWJhckNvbnRleHQgIT09IHZvaWQgMCA/IFwibWVudWl0ZW1cIiA6IHZvaWQgMFxuICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgb3RoZXJzKSk7XG59XG52YXIgTmF2aWdhdGlvbk1lbnVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xuZnVuY3Rpb24gdXNlT3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQoKSB7XG4gIHJldHVybiB1c2VDb250ZXh0KE5hdmlnYXRpb25NZW51Q29udGV4dCk7XG59XG5mdW5jdGlvbiBNZW51Q29udGVudEJhc2UocHJvcHMpIHtcbiAgbGV0IHJlZjtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IG9wdGlvbmFsTWVudWJhckNvbnRleHQgPSB1c2VPcHRpb25hbE1lbnViYXJDb250ZXh0KCk7XG4gIGNvbnN0IG9wdGlvbmFsTmF2aWdhdGlvbk1lbnVDb250ZXh0ID0gdXNlT3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQoKTtcbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvblxuICB9ID0gdXNlTG9jYWxlKCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiByb290Q29udGV4dC5nZW5lcmF0ZUlkKGBjb250ZW50LSR7Y3JlYXRlVW5pcXVlSWQoKX1gKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInJlZlwiLCBcImlkXCIsIFwic3R5bGVcIiwgXCJvbk9wZW5BdXRvRm9jdXNcIiwgXCJvbkNsb3NlQXV0b0ZvY3VzXCIsIFwib25Fc2NhcGVLZXlEb3duXCIsIFwib25Gb2N1c091dHNpZGVcIiwgXCJvblBvaW50ZXJFbnRlclwiLCBcIm9uUG9pbnRlck1vdmVcIiwgXCJvbktleURvd25cIiwgXCJvbk1vdXNlRG93blwiLCBcIm9uRm9jdXNJblwiLCBcIm9uRm9jdXNPdXRcIl0pO1xuICBsZXQgbGFzdFBvaW50ZXJYID0gMDtcbiAgY29uc3QgaXNSb290TW9kYWxDb250ZW50ID0gKCkgPT4ge1xuICAgIHJldHVybiBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCkgPT0gbnVsbCAmJiBvcHRpb25hbE1lbnViYXJDb250ZXh0ID09PSB2b2lkIDAgJiYgcm9vdENvbnRleHQuaXNNb2RhbCgpO1xuICB9O1xuICBjb25zdCBzZWxlY3RhYmxlTGlzdCA9IGNyZWF0ZVNlbGVjdGFibGVMaXN0KHtcbiAgICBzZWxlY3Rpb25NYW5hZ2VyOiBjb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIsXG4gICAgY29sbGVjdGlvbjogY29udGV4dC5saXN0U3RhdGUoKS5jb2xsZWN0aW9uLFxuICAgIGF1dG9Gb2N1czogY29udGV4dC5hdXRvRm9jdXMsXG4gICAgZGVmZXJBdXRvRm9jdXM6IHRydWUsXG4gICAgLy8gZW5zdXJlIGFsbCBtZW51IGl0ZW1zIGFyZSBtb3VudGVkIGFuZCBjb2xsZWN0aW9uIGlzIG5vdCBlbXB0eSBiZWZvcmUgdHJ5aW5nIHRvIGF1dG9mb2N1cy5cbiAgICBzaG91bGRGb2N1c1dyYXA6IHRydWUsXG4gICAgZGlzYWxsb3dUeXBlQWhlYWQ6ICgpID0+ICFjb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5pc0ZvY3VzZWQoKSxcbiAgICBvcmllbnRhdGlvbjogKCkgPT4gcm9vdENvbnRleHQub3JpZW50YXRpb24oKSA9PT0gXCJob3Jpem9udGFsXCIgPyBcInZlcnRpY2FsXCIgOiBcImhvcml6b250YWxcIlxuICB9LCAoKSA9PiByZWYpO1xuICBjcmVhdGVGb2N1c1Njb3BlKHtcbiAgICB0cmFwRm9jdXM6ICgpID0+IGlzUm9vdE1vZGFsQ29udGVudCgpICYmIGNvbnRleHQuaXNPcGVuKCksXG4gICAgb25Nb3VudEF1dG9Gb2N1czogKGV2ZW50KSA9PiB7XG4gICAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dCA9PT0gdm9pZCAwKVxuICAgICAgICBsb2NhbC5vbk9wZW5BdXRvRm9jdXM/LihldmVudCk7XG4gICAgfSxcbiAgICBvblVubW91bnRBdXRvRm9jdXM6IGxvY2FsLm9uQ2xvc2VBdXRvRm9jdXNcbiAgfSwgKCkgPT4gcmVmKTtcbiAgY29uc3Qgb25LZXlEb3duID0gKGUyKSA9PiB7XG4gICAgaWYgKCFjb250YWlucyhlMi5jdXJyZW50VGFyZ2V0LCBlMi50YXJnZXQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChlMi5rZXkgPT09IFwiVGFiXCIgJiYgY29udGV4dC5pc09wZW4oKSkge1xuICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbmFsTWVudWJhckNvbnRleHQgIT09IHZvaWQgMCkge1xuICAgICAgaWYgKGUyLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oYXNwb3B1cFwiKSAhPT0gXCJ0cnVlXCIpXG4gICAgICAgIHN3aXRjaCAoZTIua2V5KSB7XG4gICAgICAgICAgY2FzZSBNRU5VQkFSX0tFWVMubmV4dChkaXJlY3Rpb24oKSwgcm9vdENvbnRleHQub3JpZW50YXRpb24oKSk6XG4gICAgICAgICAgICBlMi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlKHRydWUpO1xuICAgICAgICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5zZXRBdXRvRm9jdXNNZW51KHRydWUpO1xuICAgICAgICAgICAgb3B0aW9uYWxNZW51YmFyQ29udGV4dC5uZXh0TWVudSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBNRU5VQkFSX0tFWVMucHJldmlvdXMoZGlyZWN0aW9uKCksIHJvb3RDb250ZXh0Lm9yaWVudGF0aW9uKCkpOlxuICAgICAgICAgICAgaWYgKGUyLmN1cnJlbnRUYXJnZXQuaGFzQXR0cmlidXRlKFwiZGF0YS1jbG9zZWRcIikpXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZTIuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29udGV4dC5jbG9zZSh0cnVlKTtcbiAgICAgICAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQuc2V0QXV0b0ZvY3VzTWVudSh0cnVlKTtcbiAgICAgICAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQucHJldmlvdXNNZW51KCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Fc2NhcGVLZXlEb3duID0gKGUyKSA9PiB7XG4gICAgbG9jYWwub25Fc2NhcGVLZXlEb3duPy4oZTIpO1xuICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQ/LnNldEF1dG9Gb2N1c01lbnUoZmFsc2UpO1xuICAgIGNvbnRleHQuY2xvc2UodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IG9uRm9jdXNPdXRzaWRlID0gKGUyKSA9PiB7XG4gICAgbG9jYWwub25Gb2N1c091dHNpZGU/LihlMik7XG4gICAgaWYgKHJvb3RDb250ZXh0LmlzTW9kYWwoKSkge1xuICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG9uUG9pbnRlckVudGVyID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlckVudGVyKTtcbiAgICBpZiAoIWNvbnRleHQuaXNPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29udGV4dC5wYXJlbnRNZW51Q29udGV4dCgpPy5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZChmYWxzZSk7XG4gICAgY29udGV4dC5wYXJlbnRNZW51Q29udGV4dCgpPy5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZEtleSh2b2lkIDApO1xuICB9O1xuICBjb25zdCBvblBvaW50ZXJNb3ZlID0gKGUyKSA9PiB7XG4gICAgY2FsbEhhbmRsZXIoZTIsIGxvY2FsLm9uUG9pbnRlck1vdmUpO1xuICAgIGlmIChlMi5wb2ludGVyVHlwZSAhPT0gXCJtb3VzZVwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldCA9IGUyLnRhcmdldDtcbiAgICBjb25zdCBwb2ludGVyWEhhc0NoYW5nZWQgPSBsYXN0UG9pbnRlclggIT09IGUyLmNsaWVudFg7XG4gICAgaWYgKGNvbnRhaW5zKGUyLmN1cnJlbnRUYXJnZXQsIHRhcmdldCkgJiYgcG9pbnRlclhIYXNDaGFuZ2VkKSB7XG4gICAgICBjb250ZXh0LnNldFBvaW50ZXJEaXIoZTIuY2xpZW50WCA+IGxhc3RQb2ludGVyWCA/IFwicmlnaHRcIiA6IFwibGVmdFwiKTtcbiAgICAgIGxhc3RQb2ludGVyWCA9IGUyLmNsaWVudFg7XG4gICAgfVxuICB9O1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJDb250ZW50SWQobG9jYWwuaWQpKSk7XG4gIGNvbnN0IGNvbW1vbkF0dHJpYnV0ZXMgPSB7XG4gICAgcmVmOiBtZXJnZVJlZnMoKGVsKSA9PiB7XG4gICAgICBjb250ZXh0LnNldENvbnRlbnRSZWYoZWwpO1xuICAgICAgcmVmID0gZWw7XG4gICAgfSwgbG9jYWwucmVmKSxcbiAgICByb2xlOiBcIm1lbnVcIixcbiAgICBnZXQgaWQoKSB7XG4gICAgICByZXR1cm4gbG9jYWwuaWQ7XG4gICAgfSxcbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICByZXR1cm4gc2VsZWN0YWJsZUxpc3QudGFiSW5kZXgoKTtcbiAgICB9LFxuICAgIGdldCBcImFyaWEtbGFiZWxsZWRieVwiKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQudHJpZ2dlcklkKCk7XG4gICAgfSxcbiAgICBvbktleURvd246IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtsb2NhbC5vbktleURvd24sIHNlbGVjdGFibGVMaXN0Lm9uS2V5RG93biwgb25LZXlEb3duXSksXG4gICAgb25Nb3VzZURvd246IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtsb2NhbC5vbk1vdXNlRG93biwgc2VsZWN0YWJsZUxpc3Qub25Nb3VzZURvd25dKSxcbiAgICBvbkZvY3VzSW46IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtsb2NhbC5vbkZvY3VzSW4sIHNlbGVjdGFibGVMaXN0Lm9uRm9jdXNJbl0pLFxuICAgIG9uRm9jdXNPdXQ6IGNvbXBvc2VFdmVudEhhbmRsZXJzKFtsb2NhbC5vbkZvY3VzT3V0LCBzZWxlY3RhYmxlTGlzdC5vbkZvY3VzT3V0XSksXG4gICAgb25Qb2ludGVyRW50ZXIsXG4gICAgb25Qb2ludGVyTW92ZSxcbiAgICBnZXQgXCJkYXRhLW9yaWVudGF0aW9uXCIoKSB7XG4gICAgICByZXR1cm4gcm9vdENvbnRleHQub3JpZW50YXRpb24oKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgIGdldCB3aGVuKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQuY29udGVudFByZXNlbnQoKTtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQgPT09IHZvaWQgMCB8fCBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCkgIT0gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IGZhbGxiYWNrKCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgICAgICAgICAgYXM6IFwiZGl2XCJcbiAgICAgICAgICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgY29tbW9uQXR0cmlidXRlcywgb3RoZXJzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvcHBlci5Qb3NpdGlvbmVyLCB7XG4gICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGlzbWlzc2FibGVMYXllciwgbWVyZ2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgZ2V0IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cygpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhaXNSb290TW9kYWxDb250ZW50KCkpKCkgJiYgY29udGV4dC5pc09wZW4oKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldCBleGNsdWRlZEVsZW1lbnRzKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIFtjb250ZXh0LnRyaWdnZXJSZWZdO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnlwYXNzVG9wTW9zdExheWVyQ2hlY2s6IHRydWUsXG4gICAgICAgICAgICAgICAgZ2V0IHN0eWxlKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVTdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIFwiLS1rYi1tZW51LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpblwiOiBcInZhcigtLWtiLXBvcHBlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pXCIsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgIH0sIGxvY2FsLnN0eWxlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgICAgICAgICBvbkZvY3VzT3V0c2lkZSxcbiAgICAgICAgICAgICAgICBnZXQgb25EaXNtaXNzKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY2xvc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LCAoKSA9PiBjb250ZXh0LmRhdGFzZXQoKSwgY29tbW9uQXR0cmlidXRlcywgb3RoZXJzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBNZW51Q29udGVudChwcm9wcykge1xuICBsZXQgcmVmO1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhwcm9wcywgW1wicmVmXCJdKTtcbiAgc3JjX2RlZmF1bHQyKHtcbiAgICBlbGVtZW50OiAoKSA9PiByZWYgPz8gbnVsbCxcbiAgICBlbmFibGVkOiAoKSA9PiBjb250ZXh0LmNvbnRlbnRQcmVzZW50KCkgJiYgcm9vdENvbnRleHQucHJldmVudFNjcm9sbCgpXG4gIH0pO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVDb250ZW50QmFzZSwgbWVyZ2VQcm9wcyh7XG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcygoZWwpID0+IHtcbiAgICAgICAgcmVmID0gZWw7XG4gICAgICB9LCBsb2NhbC5yZWYpO1xuICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgIH1cbiAgfSwgb3RoZXJzKSk7XG59XG52YXIgTWVudUdyb3VwQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZU1lbnVHcm91cENvbnRleHQoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KE1lbnVHcm91cENvbnRleHQpO1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgdXNlTWVudUdyb3VwQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBNZW51Lkdyb3VwYCBjb21wb25lbnRcIik7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiBNZW51R3JvdXAocHJvcHMpIHtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IHJvb3RDb250ZXh0LmdlbmVyYXRlSWQoYGdyb3VwLSR7Y3JlYXRlVW5pcXVlSWQoKX1gKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsYWJlbElkLCBzZXRMYWJlbElkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIGdlbmVyYXRlSWQ6IGNyZWF0ZUdlbmVyYXRlSWQoKCkgPT4gbWVyZ2VkUHJvcHMuaWQpLFxuICAgIHJlZ2lzdGVyTGFiZWxJZDogY3JlYXRlUmVnaXN0ZXJJZChzZXRMYWJlbElkKVxuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVHcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvbHltb3JwaGljLCBtZXJnZVByb3BzKHtcbiAgICAgICAgYXM6IFwiZGl2XCIsXG4gICAgICAgIHJvbGU6IFwiZ3JvdXBcIixcbiAgICAgICAgZ2V0IFtcImFyaWEtbGFiZWxsZWRieVwiXSgpIHtcbiAgICAgICAgICByZXR1cm4gbGFiZWxJZCgpO1xuICAgICAgICB9XG4gICAgICB9LCBtZXJnZWRQcm9wcykpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBNZW51R3JvdXBMYWJlbChwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUdyb3VwQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwibGFiZWxcIilcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJpZFwiXSk7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiBvbkNsZWFudXAoY29udGV4dC5yZWdpc3RlckxhYmVsSWQobG9jYWwuaWQpKSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcInNwYW5cIixcbiAgICBnZXQgaWQoKSB7XG4gICAgICByZXR1cm4gbG9jYWwuaWQ7XG4gICAgfSxcbiAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiXG4gIH0sIG90aGVycykpO1xufVxuZnVuY3Rpb24gTWVudUljb24ocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGNoaWxkcmVuOiBcIlxcdTI1QkNcIlxuICB9LCBwcm9wcyk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcInNwYW5cIixcbiAgICBcImFyaWEtaGlkZGVuXCI6IFwidHJ1ZVwiXG4gIH0sICgpID0+IGNvbnRleHQuZGF0YXNldCgpLCBtZXJnZWRQcm9wcykpO1xufVxuZnVuY3Rpb24gTWVudUl0ZW0ocHJvcHMpIHtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51SXRlbUJhc2UsIG1lcmdlUHJvcHMoe1xuICAgIHJvbGU6IFwibWVudWl0ZW1cIixcbiAgICBjbG9zZU9uU2VsZWN0OiB0cnVlXG4gIH0sIHByb3BzKSk7XG59XG5mdW5jdGlvbiBNZW51SXRlbURlc2NyaXB0aW9uKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51SXRlbUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGNvbnRleHQuZ2VuZXJhdGVJZChcImRlc2NyaXB0aW9uXCIpXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wiaWRcIl0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJEZXNjcmlwdGlvbihsb2NhbC5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCIsXG4gICAgZ2V0IGlkKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLmlkO1xuICAgIH1cbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG90aGVycykpO1xufVxuZnVuY3Rpb24gTWVudUl0ZW1JbmRpY2F0b3IocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVJdGVtQ29udGV4dCgpO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogY29udGV4dC5nZW5lcmF0ZUlkKFwiaW5kaWNhdG9yXCIpXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wiZm9yY2VNb3VudFwiXSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgIGdldCB3aGVuKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLmZvcmNlTW91bnQgfHwgY29udGV4dC5pc0NoZWNrZWQoKTtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgICAgICBhczogXCJkaXZcIlxuICAgICAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG90aGVycykpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiBNZW51SXRlbUxhYmVsKHByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51SXRlbUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IGNvbnRleHQuZ2VuZXJhdGVJZChcImxhYmVsXCIpXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wicmVmXCIsIFwiaWRcIl0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4gb25DbGVhbnVwKGNvbnRleHQucmVnaXN0ZXJMYWJlbChsb2NhbC5pZCkpKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiZGl2XCIsXG4gICAgcmVmKHIkKSB7XG4gICAgICBjb25zdCBfcmVmJCA9IG1lcmdlUmVmcyhjb250ZXh0LnNldExhYmVsUmVmLCBsb2NhbC5yZWYpO1xuICAgICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgJiYgX3JlZiQociQpO1xuICAgIH0sXG4gICAgZ2V0IGlkKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLmlkO1xuICAgIH1cbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG90aGVycykpO1xufVxuZnVuY3Rpb24gTWVudVBvcnRhbChwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gY29udGV4dC5jb250ZW50UHJlc2VudCgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb3J0YWwsIHByb3BzKTtcbiAgICB9XG4gIH0pO1xufVxudmFyIE1lbnVSYWRpb0dyb3VwQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcbmZ1bmN0aW9uIHVzZU1lbnVSYWRpb0dyb3VwQ29udGV4dCgpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTWVudVJhZGlvR3JvdXBDb250ZXh0KTtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogYHVzZU1lbnVSYWRpb0dyb3VwQ29udGV4dGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBNZW51LlJhZGlvR3JvdXBgIGNvbXBvbmVudFwiKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn1cbmZ1bmN0aW9uIE1lbnVSYWRpb0dyb3VwKHByb3BzKSB7XG4gIGNvbnN0IHJvb3RDb250ZXh0ID0gdXNlTWVudVJvb3RDb250ZXh0KCk7XG4gIGNvbnN0IGRlZmF1bHRJZCA9IHJvb3RDb250ZXh0LmdlbmVyYXRlSWQoYHJhZGlvZ3JvdXAtJHtjcmVhdGVVbmlxdWVJZCgpfWApO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBpZDogZGVmYXVsdElkXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1widmFsdWVcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJvbkNoYW5nZVwiLCBcImRpc2FibGVkXCJdKTtcbiAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBjcmVhdGVDb250cm9sbGFibGVTaWduYWwoe1xuICAgIHZhbHVlOiAoKSA9PiBsb2NhbC52YWx1ZSxcbiAgICBkZWZhdWx0VmFsdWU6ICgpID0+IGxvY2FsLmRlZmF1bHRWYWx1ZSxcbiAgICBvbkNoYW5nZTogKHZhbHVlKSA9PiBsb2NhbC5vbkNoYW5nZT8uKHZhbHVlKVxuICB9KTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBpc0Rpc2FibGVkOiAoKSA9PiBsb2NhbC5kaXNhYmxlZCxcbiAgICBpc1NlbGVjdGVkVmFsdWU6ICh2YWx1ZSkgPT4gdmFsdWUgPT09IHNlbGVjdGVkKCksXG4gICAgc2V0U2VsZWN0ZWRWYWx1ZTogc2V0U2VsZWN0ZWRcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51UmFkaW9Hcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dCxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVHcm91cCwgb3RoZXJzKTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gTWVudVJhZGlvSXRlbShwcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudVJhZGlvR3JvdXBDb250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGNsb3NlT25TZWxlY3Q6IGZhbHNlXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1widmFsdWVcIiwgXCJvblNlbGVjdFwiXSk7XG4gIGNvbnN0IG9uU2VsZWN0ID0gKCkgPT4ge1xuICAgIGxvY2FsLm9uU2VsZWN0Py4oKTtcbiAgICBjb250ZXh0LnNldFNlbGVjdGVkVmFsdWUobG9jYWwudmFsdWUpO1xuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVJdGVtQmFzZSwgbWVyZ2VQcm9wcyh7XG4gICAgcm9sZTogXCJtZW51aXRlbXJhZGlvXCIsXG4gICAgZ2V0IGNoZWNrZWQoKSB7XG4gICAgICByZXR1cm4gY29udGV4dC5pc1NlbGVjdGVkVmFsdWUobG9jYWwudmFsdWUpO1xuICAgIH0sXG4gICAgb25TZWxlY3RcbiAgfSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBnZXRQb2ludGVyR3JhY2VBcmVhKHBsYWNlbWVudCwgZXZlbnQsIGNvbnRlbnRFbCkge1xuICBjb25zdCBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50LnNwbGl0KFwiLVwiKVswXTtcbiAgY29uc3QgY29udGVudFJlY3QgPSBjb250ZW50RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHBvbHlnb24gPSBbXTtcbiAgY29uc3QgcG9pbnRlclggPSBldmVudC5jbGllbnRYO1xuICBjb25zdCBwb2ludGVyWSA9IGV2ZW50LmNsaWVudFk7XG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgXCJ0b3BcIjpcbiAgICAgIHBvbHlnb24ucHVzaChbcG9pbnRlclgsIHBvaW50ZXJZICsgNV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5sZWZ0LCBjb250ZW50UmVjdC5ib3R0b21dKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QubGVmdCwgY29udGVudFJlY3QudG9wXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LnJpZ2h0LCBjb250ZW50UmVjdC50b3BdKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QucmlnaHQsIGNvbnRlbnRSZWN0LmJvdHRvbV0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInJpZ2h0XCI6XG4gICAgICBwb2x5Z29uLnB1c2goW3BvaW50ZXJYIC0gNSwgcG9pbnRlclldKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QubGVmdCwgY29udGVudFJlY3QudG9wXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LnJpZ2h0LCBjb250ZW50UmVjdC50b3BdKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QucmlnaHQsIGNvbnRlbnRSZWN0LmJvdHRvbV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5sZWZ0LCBjb250ZW50UmVjdC5ib3R0b21dKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJib3R0b21cIjpcbiAgICAgIHBvbHlnb24ucHVzaChbcG9pbnRlclgsIHBvaW50ZXJZIC0gNV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5yaWdodCwgY29udGVudFJlY3QudG9wXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LnJpZ2h0LCBjb250ZW50UmVjdC5ib3R0b21dKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QubGVmdCwgY29udGVudFJlY3QuYm90dG9tXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LmxlZnQsIGNvbnRlbnRSZWN0LnRvcF0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImxlZnRcIjpcbiAgICAgIHBvbHlnb24ucHVzaChbcG9pbnRlclggKyA1LCBwb2ludGVyWV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5yaWdodCwgY29udGVudFJlY3QuYm90dG9tXSk7XG4gICAgICBwb2x5Z29uLnB1c2goW2NvbnRlbnRSZWN0LmxlZnQsIGNvbnRlbnRSZWN0LmJvdHRvbV0pO1xuICAgICAgcG9seWdvbi5wdXNoKFtjb250ZW50UmVjdC5sZWZ0LCBjb250ZW50UmVjdC50b3BdKTtcbiAgICAgIHBvbHlnb24ucHVzaChbY29udGVudFJlY3QucmlnaHQsIGNvbnRlbnRSZWN0LnRvcF0pO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHBvbHlnb247XG59XG5mdW5jdGlvbiBpc1BvaW50ZXJJbkdyYWNlQXJlYShldmVudCwgYXJlYSkge1xuICBpZiAoIWFyZWEpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzUG9pbnRJblBvbHlnb24oW2V2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFldLCBhcmVhKTtcbn1cbmZ1bmN0aW9uIE1lbnUocHJvcHMpIHtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgcGFyZW50RG9tQ29sbGVjdGlvbkNvbnRleHQgPSB1c2VPcHRpb25hbERvbUNvbGxlY3Rpb25Db250ZXh0KCk7XG4gIGNvbnN0IHBhcmVudE1lbnVDb250ZXh0ID0gdXNlT3B0aW9uYWxNZW51Q29udGV4dCgpO1xuICBjb25zdCBvcHRpb25hbE1lbnViYXJDb250ZXh0ID0gdXNlT3B0aW9uYWxNZW51YmFyQ29udGV4dCgpO1xuICBjb25zdCBvcHRpb25hbE5hdmlnYXRpb25NZW51Q29udGV4dCA9IHVzZU9wdGlvbmFsTmF2aWdhdGlvbk1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIHBsYWNlbWVudDogcm9vdENvbnRleHQub3JpZW50YXRpb24oKSA9PT0gXCJob3Jpem9udGFsXCIgPyBcImJvdHRvbS1zdGFydFwiIDogXCJyaWdodC1zdGFydFwiXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgW2xvY2FsLCBvdGhlcnNdID0gc3BsaXRQcm9wcyhtZXJnZWRQcm9wcywgW1wib3BlblwiLCBcImRlZmF1bHRPcGVuXCIsIFwib25PcGVuQ2hhbmdlXCJdKTtcbiAgbGV0IHBvaW50ZXJHcmFjZVRpbWVvdXRJZCA9IDA7XG4gIGxldCBwb2ludGVyR3JhY2VJbnRlbnQgPSBudWxsO1xuICBsZXQgcG9pbnRlckRpciA9IFwicmlnaHRcIjtcbiAgY29uc3QgW3RyaWdnZXJJZCwgc2V0VHJpZ2dlcklkXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbY29udGVudElkLCBzZXRDb250ZW50SWRdID0gY3JlYXRlU2lnbmFsKCk7XG4gIGNvbnN0IFt0cmlnZ2VyUmVmLCBzZXRUcmlnZ2VyUmVmXSA9IGNyZWF0ZVNpZ25hbCgpO1xuICBjb25zdCBbY29udGVudFJlZiwgc2V0Q29udGVudFJlZl0gPSBjcmVhdGVTaWduYWwoKTtcbiAgY29uc3QgW2ZvY3VzU3RyYXRlZ3ksIHNldEZvY3VzU3RyYXRlZ3ldID0gY3JlYXRlU2lnbmFsKHRydWUpO1xuICBjb25zdCBbY3VycmVudFBsYWNlbWVudCwgc2V0Q3VycmVudFBsYWNlbWVudF0gPSBjcmVhdGVTaWduYWwob3RoZXJzLnBsYWNlbWVudCk7XG4gIGNvbnN0IFtuZXN0ZWRNZW51cywgc2V0TmVzdGVkTWVudXNdID0gY3JlYXRlU2lnbmFsKFtdKTtcbiAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSBjcmVhdGVTaWduYWwoW10pO1xuICBjb25zdCB7XG4gICAgRG9tQ29sbGVjdGlvblByb3ZpZGVyXG4gIH0gPSBjcmVhdGVEb21Db2xsZWN0aW9uKHtcbiAgICBpdGVtcyxcbiAgICBvbkl0ZW1zQ2hhbmdlOiBzZXRJdGVtc1xuICB9KTtcbiAgY29uc3QgZGlzY2xvc3VyZVN0YXRlID0gY3JlYXRlRGlzY2xvc3VyZVN0YXRlKHtcbiAgICBvcGVuOiAoKSA9PiBsb2NhbC5vcGVuLFxuICAgIGRlZmF1bHRPcGVuOiAoKSA9PiBsb2NhbC5kZWZhdWx0T3BlbixcbiAgICBvbk9wZW5DaGFuZ2U6IChpc09wZW4pID0+IGxvY2FsLm9uT3BlbkNoYW5nZT8uKGlzT3BlbilcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBwcmVzZW50OiBjb250ZW50UHJlc2VudFxuICB9ID0gc3JjX2RlZmF1bHQoe1xuICAgIHNob3c6ICgpID0+IHJvb3RDb250ZXh0LmZvcmNlTW91bnQoKSB8fCBkaXNjbG9zdXJlU3RhdGUuaXNPcGVuKCksXG4gICAgZWxlbWVudDogKCkgPT4gY29udGVudFJlZigpID8/IG51bGxcbiAgfSk7XG4gIGNvbnN0IGxpc3RTdGF0ZSA9IGNyZWF0ZUxpc3RTdGF0ZSh7XG4gICAgc2VsZWN0aW9uTW9kZTogXCJub25lXCIsXG4gICAgZGF0YVNvdXJjZTogaXRlbXNcbiAgfSk7XG4gIGNvbnN0IG9wZW4gPSAoZm9jdXNTdHJhdGVneTIpID0+IHtcbiAgICBzZXRGb2N1c1N0cmF0ZWd5KGZvY3VzU3RyYXRlZ3kyKTtcbiAgICBkaXNjbG9zdXJlU3RhdGUub3BlbigpO1xuICB9O1xuICBjb25zdCBjbG9zZSA9IChyZWN1cnNpdmVseSA9IGZhbHNlKSA9PiB7XG4gICAgZGlzY2xvc3VyZVN0YXRlLmNsb3NlKCk7XG4gICAgaWYgKHJlY3Vyc2l2ZWx5ICYmIHBhcmVudE1lbnVDb250ZXh0KSB7XG4gICAgICBwYXJlbnRNZW51Q29udGV4dC5jbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRvZ2dsZSA9IChmb2N1c1N0cmF0ZWd5MikgPT4ge1xuICAgIHNldEZvY3VzU3RyYXRlZ3koZm9jdXNTdHJhdGVneTIpO1xuICAgIGRpc2Nsb3N1cmVTdGF0ZS50b2dnbGUoKTtcbiAgfTtcbiAgY29uc3QgX2ZvY3VzQ29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBjb250ZW50ID0gY29udGVudFJlZigpO1xuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcoY29udGVudCk7XG4gICAgICBsaXN0U3RhdGUuc2VsZWN0aW9uTWFuYWdlcigpLnNldEZvY3VzZWQodHJ1ZSk7XG4gICAgICBsaXN0U3RhdGUuc2VsZWN0aW9uTWFuYWdlcigpLnNldEZvY3VzZWRLZXkodm9pZCAwKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGZvY3VzQ29udGVudCA9ICgpID0+IHtcbiAgICBpZiAob3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQgIT0gbnVsbClcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gX2ZvY3VzQ29udGVudCgpKTtcbiAgICBlbHNlXG4gICAgICBfZm9jdXNDb250ZW50KCk7XG4gIH07XG4gIGNvbnN0IHJlZ2lzdGVyTmVzdGVkTWVudSA9IChlbGVtZW50KSA9PiB7XG4gICAgc2V0TmVzdGVkTWVudXMoKHByZXYpID0+IFsuLi5wcmV2LCBlbGVtZW50XSk7XG4gICAgY29uc3QgcGFyZW50VW5yZWdpc3RlciA9IHBhcmVudE1lbnVDb250ZXh0Py5yZWdpc3Rlck5lc3RlZE1lbnUoZWxlbWVudCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHNldE5lc3RlZE1lbnVzKChwcmV2KSA9PiByZW1vdmVJdGVtRnJvbUFycmF5KHByZXYsIGVsZW1lbnQpKTtcbiAgICAgIHBhcmVudFVucmVnaXN0ZXI/LigpO1xuICAgIH07XG4gIH07XG4gIGNvbnN0IGlzUG9pbnRlck1vdmluZ1RvU3VibWVudSA9IChlMikgPT4ge1xuICAgIGNvbnN0IGlzTW92aW5nVG93YXJkcyA9IHBvaW50ZXJEaXIgPT09IHBvaW50ZXJHcmFjZUludGVudD8uc2lkZTtcbiAgICByZXR1cm4gaXNNb3ZpbmdUb3dhcmRzICYmIGlzUG9pbnRlckluR3JhY2VBcmVhKGUyLCBwb2ludGVyR3JhY2VJbnRlbnQ/LmFyZWEpO1xuICB9O1xuICBjb25zdCBvbkl0ZW1FbnRlciA9IChlMikgPT4ge1xuICAgIGlmIChpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZTIpKSB7XG4gICAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25JdGVtTGVhdmUgPSAoZTIpID0+IHtcbiAgICBpZiAoaXNQb2ludGVyTW92aW5nVG9TdWJtZW51KGUyKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb2N1c0NvbnRlbnQoKTtcbiAgfTtcbiAgY29uc3Qgb25UcmlnZ2VyTGVhdmUgPSAoZTIpID0+IHtcbiAgICBpZiAoaXNQb2ludGVyTW92aW5nVG9TdWJtZW51KGUyKSkge1xuICAgICAgZTIucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH07XG4gIGNyZWF0ZUhpZGVPdXRzaWRlKHtcbiAgICBpc0Rpc2FibGVkOiAoKSA9PiB7XG4gICAgICByZXR1cm4gIShwYXJlbnRNZW51Q29udGV4dCA9PSBudWxsICYmIGRpc2Nsb3N1cmVTdGF0ZS5pc09wZW4oKSAmJiByb290Q29udGV4dC5pc01vZGFsKCkpO1xuICAgIH0sXG4gICAgdGFyZ2V0czogKCkgPT4gW2NvbnRlbnRSZWYoKSwgLi4ubmVzdGVkTWVudXMoKV0uZmlsdGVyKEJvb2xlYW4pXG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRFbCA9IGNvbnRlbnRSZWYoKTtcbiAgICBpZiAoIWNvbnRlbnRFbCB8fCAhcGFyZW50TWVudUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50VW5yZWdpc3RlciA9IHBhcmVudE1lbnVDb250ZXh0LnJlZ2lzdGVyTmVzdGVkTWVudShjb250ZW50RWwpO1xuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICBwYXJlbnRVbnJlZ2lzdGVyKCk7XG4gICAgfSk7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwYXJlbnRNZW51Q29udGV4dCAhPT0gdm9pZCAwKVxuICAgICAgcmV0dXJuO1xuICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQ/LnJlZ2lzdGVyTWVudShyb290Q29udGV4dC52YWx1ZSgpLCBbY29udGVudFJlZigpLCAuLi5uZXN0ZWRNZW51cygpXSk7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwYXJlbnRNZW51Q29udGV4dCAhPT0gdm9pZCAwIHx8IG9wdGlvbmFsTWVudWJhckNvbnRleHQgPT09IHZvaWQgMClcbiAgICAgIHJldHVybjtcbiAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dC52YWx1ZSgpID09PSByb290Q29udGV4dC52YWx1ZSgpKSB7XG4gICAgICB0cmlnZ2VyUmVmKCk/LmZvY3VzKCk7XG4gICAgICBpZiAob3B0aW9uYWxNZW51YmFyQ29udGV4dC5hdXRvRm9jdXNNZW51KCkpXG4gICAgICAgIG9wZW4odHJ1ZSk7XG4gICAgfSBlbHNlXG4gICAgICBjbG9zZSgpO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocGFyZW50TWVudUNvbnRleHQgIT09IHZvaWQgMCB8fCBvcHRpb25hbE1lbnViYXJDb250ZXh0ID09PSB2b2lkIDApXG4gICAgICByZXR1cm47XG4gICAgaWYgKGRpc2Nsb3N1cmVTdGF0ZS5pc09wZW4oKSlcbiAgICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQuc2V0VmFsdWUocm9vdENvbnRleHQudmFsdWUoKSk7XG4gIH0pO1xuICBvbkNsZWFudXAoKCkgPT4ge1xuICAgIGlmIChwYXJlbnRNZW51Q29udGV4dCAhPT0gdm9pZCAwKVxuICAgICAgcmV0dXJuO1xuICAgIG9wdGlvbmFsTWVudWJhckNvbnRleHQ/LnVucmVnaXN0ZXJNZW51KHJvb3RDb250ZXh0LnZhbHVlKCkpO1xuICB9KTtcbiAgY29uc3QgZGF0YXNldCA9IGNyZWF0ZU1lbW8oKCkgPT4gKHtcbiAgICBcImRhdGEtZXhwYW5kZWRcIjogZGlzY2xvc3VyZVN0YXRlLmlzT3BlbigpID8gXCJcIiA6IHZvaWQgMCxcbiAgICBcImRhdGEtY2xvc2VkXCI6ICFkaXNjbG9zdXJlU3RhdGUuaXNPcGVuKCkgPyBcIlwiIDogdm9pZCAwXG4gIH0pKTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBkYXRhc2V0LFxuICAgIGlzT3BlbjogZGlzY2xvc3VyZVN0YXRlLmlzT3BlbixcbiAgICBjb250ZW50UHJlc2VudCxcbiAgICBuZXN0ZWRNZW51cyxcbiAgICBjdXJyZW50UGxhY2VtZW50LFxuICAgIHBvaW50ZXJHcmFjZVRpbWVvdXRJZDogKCkgPT4gcG9pbnRlckdyYWNlVGltZW91dElkLFxuICAgIGF1dG9Gb2N1czogZm9jdXNTdHJhdGVneSxcbiAgICBsaXN0U3RhdGU6ICgpID0+IGxpc3RTdGF0ZSxcbiAgICBwYXJlbnRNZW51Q29udGV4dDogKCkgPT4gcGFyZW50TWVudUNvbnRleHQsXG4gICAgdHJpZ2dlclJlZixcbiAgICBjb250ZW50UmVmLFxuICAgIHRyaWdnZXJJZCxcbiAgICBjb250ZW50SWQsXG4gICAgc2V0VHJpZ2dlclJlZixcbiAgICBzZXRDb250ZW50UmVmLFxuICAgIG9wZW4sXG4gICAgY2xvc2UsXG4gICAgdG9nZ2xlLFxuICAgIGZvY3VzQ29udGVudCxcbiAgICBvbkl0ZW1FbnRlcixcbiAgICBvbkl0ZW1MZWF2ZSxcbiAgICBvblRyaWdnZXJMZWF2ZSxcbiAgICBzZXRQb2ludGVyRGlyOiAoZGlyKSA9PiBwb2ludGVyRGlyID0gZGlyLFxuICAgIHNldFBvaW50ZXJHcmFjZVRpbWVvdXRJZDogKGlkKSA9PiBwb2ludGVyR3JhY2VUaW1lb3V0SWQgPSBpZCxcbiAgICBzZXRQb2ludGVyR3JhY2VJbnRlbnQ6IChpbnRlbnQpID0+IHBvaW50ZXJHcmFjZUludGVudCA9IGludGVudCxcbiAgICByZWdpc3Rlck5lc3RlZE1lbnUsXG4gICAgcmVnaXN0ZXJJdGVtVG9QYXJlbnREb21Db2xsZWN0aW9uOiBwYXJlbnREb21Db2xsZWN0aW9uQ29udGV4dD8ucmVnaXN0ZXJJdGVtLFxuICAgIHJlZ2lzdGVyVHJpZ2dlcklkOiBjcmVhdGVSZWdpc3RlcklkKHNldFRyaWdnZXJJZCksXG4gICAgcmVnaXN0ZXJDb250ZW50SWQ6IGNyZWF0ZVJlZ2lzdGVySWQoc2V0Q29udGVudElkKVxuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERvbUNvbGxlY3Rpb25Qcm92aWRlciwge1xuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGNvbnRleHQsXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICAgIHdoZW46IG9wdGlvbmFsTmF2aWdhdGlvbk1lbnVDb250ZXh0ID09PSB2b2lkIDAsXG4gICAgICAgICAgICBnZXQgZmFsbGJhY2soKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvdGhlcnMuY2hpbGRyZW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBvcHBlciwgbWVyZ2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgYW5jaG9yUmVmOiB0cmlnZ2VyUmVmLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRSZWYsXG4gICAgICAgICAgICAgICAgb25DdXJyZW50UGxhY2VtZW50Q2hhbmdlOiBzZXRDdXJyZW50UGxhY2VtZW50XG4gICAgICAgICAgICAgIH0sIG90aGVycykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gTWVudVN1Yihwcm9wcykge1xuICBjb25zdCB7XG4gICAgZGlyZWN0aW9uXG4gIH0gPSB1c2VMb2NhbGUoKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51LCBtZXJnZVByb3BzKHtcbiAgICBnZXQgcGxhY2VtZW50KCkge1xuICAgICAgcmV0dXJuIGRpcmVjdGlvbigpID09PSBcInJ0bFwiID8gXCJsZWZ0LXN0YXJ0XCIgOiBcInJpZ2h0LXN0YXJ0XCI7XG4gICAgfSxcbiAgICBmbGlwOiB0cnVlXG4gIH0sIHByb3BzKSk7XG59XG52YXIgU1VCX0NMT1NFX0tFWVMgPSB7XG4gIGNsb3NlOiAoZGlyLCBvcmllbnRhdGlvbikgPT4ge1xuICAgIGlmIChkaXIgPT09IFwibHRyXCIpIHtcbiAgICAgIHJldHVybiBbb3JpZW50YXRpb24gPT09IFwiaG9yaXpvbnRhbFwiID8gXCJBcnJvd0xlZnRcIiA6IFwiQXJyb3dVcFwiXTtcbiAgICB9XG4gICAgcmV0dXJuIFtvcmllbnRhdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgPyBcIkFycm93UmlnaHRcIiA6IFwiQXJyb3dEb3duXCJdO1xuICB9XG59O1xuZnVuY3Rpb24gTWVudVN1YkNvbnRlbnQocHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IHJvb3RDb250ZXh0ID0gdXNlTWVudVJvb3RDb250ZXh0KCk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMocHJvcHMsIFtcIm9uRm9jdXNPdXRzaWRlXCIsIFwib25LZXlEb3duXCJdKTtcbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvblxuICB9ID0gdXNlTG9jYWxlKCk7XG4gIGNvbnN0IG9uT3BlbkF1dG9Gb2N1cyA9IChlMikgPT4ge1xuICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG4gIGNvbnN0IG9uQ2xvc2VBdXRvRm9jdXMgPSAoZTIpID0+IHtcbiAgICBlMi5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuICBjb25zdCBvbkZvY3VzT3V0c2lkZSA9IChlMikgPT4ge1xuICAgIGxvY2FsLm9uRm9jdXNPdXRzaWRlPy4oZTIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGUyLnRhcmdldDtcbiAgICBpZiAoIWNvbnRhaW5zKGNvbnRleHQudHJpZ2dlclJlZigpLCB0YXJnZXQpKSB7XG4gICAgICBjb250ZXh0LmNsb3NlKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbktleURvd24gPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25LZXlEb3duKTtcbiAgICBjb25zdCBpc0tleURvd25JbnNpZGUgPSBjb250YWlucyhlMi5jdXJyZW50VGFyZ2V0LCBlMi50YXJnZXQpO1xuICAgIGNvbnN0IGlzQ2xvc2VLZXkgPSBTVUJfQ0xPU0VfS0VZUy5jbG9zZShkaXJlY3Rpb24oKSwgcm9vdENvbnRleHQub3JpZW50YXRpb24oKSkuaW5jbHVkZXMoZTIua2V5KTtcbiAgICBjb25zdCBpc1N1Yk1lbnUgPSBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCkgIT0gbnVsbDtcbiAgICBpZiAoaXNLZXlEb3duSW5zaWRlICYmIGlzQ2xvc2VLZXkgJiYgaXNTdWJNZW51KSB7XG4gICAgICBjb250ZXh0LmNsb3NlKCk7XG4gICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcoY29udGV4dC50cmlnZ2VyUmVmKCkpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51Q29udGVudEJhc2UsIG1lcmdlUHJvcHMoe1xuICAgIG9uT3BlbkF1dG9Gb2N1cyxcbiAgICBvbkNsb3NlQXV0b0ZvY3VzLFxuICAgIG9uRm9jdXNPdXRzaWRlLFxuICAgIG9uS2V5RG93blxuICB9LCBvdGhlcnMpKTtcbn1cbnZhciBTRUxFQ1RJT05fS0VZUyA9IFtcIkVudGVyXCIsIFwiIFwiXTtcbnZhciBTVUJfT1BFTl9LRVlTID0ge1xuICBvcGVuOiAoZGlyLCBvcmllbnRhdGlvbikgPT4ge1xuICAgIGlmIChkaXIgPT09IFwibHRyXCIpIHtcbiAgICAgIHJldHVybiBbLi4uU0VMRUNUSU9OX0tFWVMsIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwiQXJyb3dSaWdodFwiIDogXCJBcnJvd0Rvd25cIl07XG4gICAgfVxuICAgIHJldHVybiBbLi4uU0VMRUNUSU9OX0tFWVMsIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IFwiQXJyb3dMZWZ0XCIgOiBcIkFycm93VXBcIl07XG4gIH1cbn07XG5mdW5jdGlvbiBNZW51U3ViVHJpZ2dlcihwcm9wcykge1xuICBsZXQgcmVmO1xuICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dCgpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoKTtcbiAgY29uc3QgbWVyZ2VkUHJvcHMgPSBtZXJnZURlZmF1bHRQcm9wcyh7XG4gICAgaWQ6IHJvb3RDb250ZXh0LmdlbmVyYXRlSWQoYHN1Yi10cmlnZ2VyLSR7Y3JlYXRlVW5pcXVlSWQoKX1gKVxuICB9LCBwcm9wcyk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMobWVyZ2VkUHJvcHMsIFtcInJlZlwiLCBcImlkXCIsIFwidGV4dFZhbHVlXCIsIFwiZGlzYWJsZWRcIiwgXCJvblBvaW50ZXJNb3ZlXCIsIFwib25Qb2ludGVyTGVhdmVcIiwgXCJvblBvaW50ZXJEb3duXCIsIFwib25Qb2ludGVyVXBcIiwgXCJvbkNsaWNrXCIsIFwib25LZXlEb3duXCIsIFwib25Nb3VzZURvd25cIiwgXCJvbkZvY3VzXCJdKTtcbiAgbGV0IG9wZW5UaW1lb3V0SWQgPSBudWxsO1xuICBjb25zdCBjbGVhck9wZW5UaW1lb3V0ID0gKCkgPT4ge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob3BlblRpbWVvdXRJZCkge1xuICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZW91dElkKTtcbiAgICB9XG4gICAgb3BlblRpbWVvdXRJZCA9IG51bGw7XG4gIH07XG4gIGNvbnN0IHtcbiAgICBkaXJlY3Rpb25cbiAgfSA9IHVzZUxvY2FsZSgpO1xuICBjb25zdCBrZXkgPSAoKSA9PiBsb2NhbC5pZDtcbiAgY29uc3QgcGFyZW50U2VsZWN0aW9uTWFuYWdlciA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJlbnRNZW51Q29udGV4dCA9IGNvbnRleHQucGFyZW50TWVudUNvbnRleHQoKTtcbiAgICBpZiAocGFyZW50TWVudUNvbnRleHQgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiW2tvYmFsdGVdOiBgTWVudS5TdWJUcmlnZ2VyYCBtdXN0IGJlIHVzZWQgd2l0aGluIGEgYE1lbnUuU3ViYCBjb21wb25lbnRcIik7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRNZW51Q29udGV4dC5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCk7XG4gIH07XG4gIGNvbnN0IGNvbGxlY3Rpb24gPSAoKSA9PiBjb250ZXh0Lmxpc3RTdGF0ZSgpLmNvbGxlY3Rpb24oKTtcbiAgY29uc3QgaXNIaWdobGlnaHRlZCA9ICgpID0+IHBhcmVudFNlbGVjdGlvbk1hbmFnZXIoKS5mb2N1c2VkS2V5KCkgPT09IGtleSgpO1xuICBjb25zdCBzZWxlY3RhYmxlSXRlbSA9IGNyZWF0ZVNlbGVjdGFibGVJdGVtKHtcbiAgICBrZXksXG4gICAgc2VsZWN0aW9uTWFuYWdlcjogcGFyZW50U2VsZWN0aW9uTWFuYWdlcixcbiAgICBzaG91bGRTZWxlY3RPblByZXNzVXA6IHRydWUsXG4gICAgYWxsb3dzRGlmZmVyZW50UHJlc3NPcmlnaW46IHRydWUsXG4gICAgZGlzYWJsZWQ6ICgpID0+IGxvY2FsLmRpc2FibGVkXG4gIH0sICgpID0+IHJlZik7XG4gIGNvbnN0IG9uQ2xpY2sgPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25DbGljayk7XG4gICAgaWYgKCFjb250ZXh0LmlzT3BlbigpICYmICFsb2NhbC5kaXNhYmxlZCkge1xuICAgICAgY29udGV4dC5vcGVuKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3Qgb25Qb2ludGVyTW92ZSA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vblBvaW50ZXJNb3ZlKTtcbiAgICBpZiAoZTIucG9pbnRlclR5cGUgIT09IFwibW91c2VcIikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnRNZW51Q29udGV4dCA9IGNvbnRleHQucGFyZW50TWVudUNvbnRleHQoKTtcbiAgICBwYXJlbnRNZW51Q29udGV4dD8ub25JdGVtRW50ZXIoZTIpO1xuICAgIGlmIChlMi5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChsb2NhbC5kaXNhYmxlZCkge1xuICAgICAgcGFyZW50TWVudUNvbnRleHQ/Lm9uSXRlbUxlYXZlKGUyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFjb250ZXh0LmlzT3BlbigpICYmICFvcGVuVGltZW91dElkKSB7XG4gICAgICBjb250ZXh0LnBhcmVudE1lbnVDb250ZXh0KCk/LnNldFBvaW50ZXJHcmFjZUludGVudChudWxsKTtcbiAgICAgIG9wZW5UaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnRleHQub3BlbihmYWxzZSk7XG4gICAgICAgIGNsZWFyT3BlblRpbWVvdXQoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICAgIHBhcmVudE1lbnVDb250ZXh0Py5vbkl0ZW1FbnRlcihlMik7XG4gICAgaWYgKCFlMi5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBpZiAoY29udGV4dC5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuaXNGb2N1c2VkKCkpIHtcbiAgICAgICAgY29udGV4dC5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZChmYWxzZSk7XG4gICAgICAgIGNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcigpLnNldEZvY3VzZWRLZXkodm9pZCAwKTtcbiAgICAgIH1cbiAgICAgIGZvY3VzV2l0aG91dFNjcm9sbGluZyhlMi5jdXJyZW50VGFyZ2V0KTtcbiAgICAgIHBhcmVudE1lbnVDb250ZXh0Py5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICAgIHBhcmVudE1lbnVDb250ZXh0Py5saXN0U3RhdGUoKS5zZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZEtleShrZXkoKSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvblBvaW50ZXJMZWF2ZSA9IChlMikgPT4ge1xuICAgIGNhbGxIYW5kbGVyKGUyLCBsb2NhbC5vblBvaW50ZXJMZWF2ZSk7XG4gICAgaWYgKGUyLnBvaW50ZXJUeXBlICE9PSBcIm1vdXNlXCIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJPcGVuVGltZW91dCgpO1xuICAgIGNvbnN0IHBhcmVudE1lbnVDb250ZXh0ID0gY29udGV4dC5wYXJlbnRNZW51Q29udGV4dCgpO1xuICAgIGNvbnN0IGNvbnRlbnRFbCA9IGNvbnRleHQuY29udGVudFJlZigpO1xuICAgIGlmIChjb250ZW50RWwpIHtcbiAgICAgIHBhcmVudE1lbnVDb250ZXh0Py5zZXRQb2ludGVyR3JhY2VJbnRlbnQoe1xuICAgICAgICBhcmVhOiBnZXRQb2ludGVyR3JhY2VBcmVhKGNvbnRleHQuY3VycmVudFBsYWNlbWVudCgpLCBlMiwgY29udGVudEVsKSxcbiAgICAgICAgLy8gU2FmZSBiZWNhdXNlIHN1YiBtZW51IGFsd2F5cyBvcGVuIFwibGVmdFwiIG9yIFwicmlnaHRcIi5cbiAgICAgICAgc2lkZTogY29udGV4dC5jdXJyZW50UGxhY2VtZW50KCkuc3BsaXQoXCItXCIpWzBdXG4gICAgICB9KTtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocGFyZW50TWVudUNvbnRleHQ/LnBvaW50ZXJHcmFjZVRpbWVvdXRJZCgpKTtcbiAgICAgIGNvbnN0IHBvaW50ZXJHcmFjZVRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgcGFyZW50TWVudUNvbnRleHQ/LnNldFBvaW50ZXJHcmFjZUludGVudChudWxsKTtcbiAgICAgIH0sIDMwMCk7XG4gICAgICBwYXJlbnRNZW51Q29udGV4dD8uc2V0UG9pbnRlckdyYWNlVGltZW91dElkKHBvaW50ZXJHcmFjZVRpbWVvdXRJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVudE1lbnVDb250ZXh0Py5vblRyaWdnZXJMZWF2ZShlMik7XG4gICAgICBpZiAoZTIuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwYXJlbnRNZW51Q29udGV4dD8uc2V0UG9pbnRlckdyYWNlSW50ZW50KG51bGwpO1xuICAgIH1cbiAgICBwYXJlbnRNZW51Q29udGV4dD8ub25JdGVtTGVhdmUoZTIpO1xuICB9O1xuICBjb25zdCBvbktleURvd24gPSAoZTIpID0+IHtcbiAgICBjYWxsSGFuZGxlcihlMiwgbG9jYWwub25LZXlEb3duKTtcbiAgICBpZiAoZTIucmVwZWF0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChsb2NhbC5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoU1VCX09QRU5fS0VZUy5vcGVuKGRpcmVjdGlvbigpLCByb290Q29udGV4dC5vcmllbnRhdGlvbigpKS5pbmNsdWRlcyhlMi5rZXkpKSB7XG4gICAgICBlMi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBwYXJlbnRTZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZChmYWxzZSk7XG4gICAgICBwYXJlbnRTZWxlY3Rpb25NYW5hZ2VyKCkuc2V0Rm9jdXNlZEtleSh2b2lkIDApO1xuICAgICAgaWYgKCFjb250ZXh0LmlzT3BlbigpKSB7XG4gICAgICAgIGNvbnRleHQub3BlbihcImZpcnN0XCIpO1xuICAgICAgfVxuICAgICAgY29udGV4dC5mb2N1c0NvbnRlbnQoKTtcbiAgICAgIGNvbnRleHQubGlzdFN0YXRlKCkuc2VsZWN0aW9uTWFuYWdlcigpLnNldEZvY3VzZWQodHJ1ZSk7XG4gICAgICBjb250ZXh0Lmxpc3RTdGF0ZSgpLnNlbGVjdGlvbk1hbmFnZXIoKS5zZXRGb2N1c2VkS2V5KGNvbGxlY3Rpb24oKS5nZXRGaXJzdEtleSgpKTtcbiAgICB9XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNvbnRleHQucmVnaXN0ZXJJdGVtVG9QYXJlbnREb21Db2xsZWN0aW9uID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIltrb2JhbHRlXTogYE1lbnUuU3ViVHJpZ2dlcmAgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGBNZW51LlN1YmAgY29tcG9uZW50XCIpO1xuICAgIH1cbiAgICBjb25zdCB1bnJlZ2lzdGVyID0gY29udGV4dC5yZWdpc3Rlckl0ZW1Ub1BhcmVudERvbUNvbGxlY3Rpb24oe1xuICAgICAgcmVmOiAoKSA9PiByZWYsXG4gICAgICB0eXBlOiBcIml0ZW1cIixcbiAgICAgIGtleToga2V5KCksXG4gICAgICB0ZXh0VmFsdWU6IGxvY2FsLnRleHRWYWx1ZSA/PyByZWY/LnRleHRDb250ZW50ID8/IFwiXCIsXG4gICAgICBkaXNhYmxlZDogbG9jYWwuZGlzYWJsZWQgPz8gZmFsc2VcbiAgICB9KTtcbiAgICBvbkNsZWFudXAodW5yZWdpc3Rlcik7XG4gIH0pO1xuICBjcmVhdGVFZmZlY3Qob24oKCkgPT4gY29udGV4dC5wYXJlbnRNZW51Q29udGV4dCgpPy5wb2ludGVyR3JhY2VUaW1lb3V0SWQoKSwgKHBvaW50ZXJHcmFjZVRpbWVyKSA9PiB7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocG9pbnRlckdyYWNlVGltZXIpO1xuICAgICAgY29udGV4dC5wYXJlbnRNZW51Q29udGV4dCgpPy5zZXRQb2ludGVyR3JhY2VJbnRlbnQobnVsbCk7XG4gICAgfSk7XG4gIH0pKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IG9uQ2xlYW51cChjb250ZXh0LnJlZ2lzdGVyVHJpZ2dlcklkKGxvY2FsLmlkKSkpO1xuICBvbkNsZWFudXAoKCkgPT4ge1xuICAgIGNsZWFyT3BlblRpbWVvdXQoKTtcbiAgfSk7XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoUG9seW1vcnBoaWMsIG1lcmdlUHJvcHMoe1xuICAgIGFzOiBcImRpdlwiLFxuICAgIHJlZihyJCkge1xuICAgICAgY29uc3QgX3JlZiQgPSBtZXJnZVJlZnMoKGVsKSA9PiB7XG4gICAgICAgIGNvbnRleHQuc2V0VHJpZ2dlclJlZihlbCk7XG4gICAgICAgIHJlZiA9IGVsO1xuICAgICAgfSwgbG9jYWwucmVmKTtcbiAgICAgIHR5cGVvZiBfcmVmJCA9PT0gXCJmdW5jdGlvblwiICYmIF9yZWYkKHIkKTtcbiAgICB9LFxuICAgIGdldCBpZCgpIHtcbiAgICAgIHJldHVybiBsb2NhbC5pZDtcbiAgICB9LFxuICAgIHJvbGU6IFwibWVudWl0ZW1cIixcbiAgICBnZXQgdGFiSW5kZXgoKSB7XG4gICAgICByZXR1cm4gc2VsZWN0YWJsZUl0ZW0udGFiSW5kZXgoKTtcbiAgICB9LFxuICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcInRydWVcIixcbiAgICBnZXQgW1wiYXJpYS1leHBhbmRlZFwiXSgpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmlzT3BlbigpO1xuICAgIH0sXG4gICAgZ2V0IFtcImFyaWEtY29udHJvbHNcIl0oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIWNvbnRleHQuaXNPcGVuKCkpKCkgPyBjb250ZXh0LmNvbnRlbnRJZCgpIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IFtcImFyaWEtZGlzYWJsZWRcIl0oKSB7XG4gICAgICByZXR1cm4gbG9jYWwuZGlzYWJsZWQ7XG4gICAgfSxcbiAgICBnZXQgW1wiZGF0YS1rZXlcIl0oKSB7XG4gICAgICByZXR1cm4gc2VsZWN0YWJsZUl0ZW0uZGF0YUtleSgpO1xuICAgIH0sXG4gICAgZ2V0IFtcImRhdGEtaGlnaGxpZ2h0ZWRcIl0oKSB7XG4gICAgICByZXR1cm4gaXNIaWdobGlnaHRlZCgpID8gXCJcIiA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCBbXCJkYXRhLWRpc2FibGVkXCJdKCkge1xuICAgICAgcmV0dXJuIGxvY2FsLmRpc2FibGVkID8gXCJcIiA6IHZvaWQgMDtcbiAgICB9LFxuICAgIGdldCBvblBvaW50ZXJEb3duKCkge1xuICAgICAgcmV0dXJuIGNvbXBvc2VFdmVudEhhbmRsZXJzKFtsb2NhbC5vblBvaW50ZXJEb3duLCBzZWxlY3RhYmxlSXRlbS5vblBvaW50ZXJEb3duXSk7XG4gICAgfSxcbiAgICBnZXQgb25Qb2ludGVyVXAoKSB7XG4gICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uUG9pbnRlclVwLCBzZWxlY3RhYmxlSXRlbS5vblBvaW50ZXJVcF0pO1xuICAgIH0sXG4gICAgZ2V0IG9uQ2xpY2soKSB7XG4gICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uQ2xpY2ssIHNlbGVjdGFibGVJdGVtLm9uQ2xpY2tdKTtcbiAgICB9LFxuICAgIGdldCBvbktleURvd24oKSB7XG4gICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uS2V5RG93biwgc2VsZWN0YWJsZUl0ZW0ub25LZXlEb3duXSk7XG4gICAgfSxcbiAgICBnZXQgb25Nb3VzZURvd24oKSB7XG4gICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uTW91c2VEb3duLCBzZWxlY3RhYmxlSXRlbS5vbk1vdXNlRG93bl0pO1xuICAgIH0sXG4gICAgZ2V0IG9uRm9jdXMoKSB7XG4gICAgICByZXR1cm4gY29tcG9zZUV2ZW50SGFuZGxlcnMoW2xvY2FsLm9uRm9jdXMsIHNlbGVjdGFibGVJdGVtLm9uRm9jdXNdKTtcbiAgICB9LFxuICAgIG9uUG9pbnRlck1vdmUsXG4gICAgb25Qb2ludGVyTGVhdmVcbiAgfSwgKCkgPT4gY29udGV4dC5kYXRhc2V0KCksIG90aGVycykpO1xufVxuZnVuY3Rpb24gTWVudVJvb3QocHJvcHMpIHtcbiAgY29uc3Qgb3B0aW9uYWxNZW51YmFyQ29udGV4dCA9IHVzZU9wdGlvbmFsTWVudWJhckNvbnRleHQoKTtcbiAgY29uc3QgZGVmYXVsdElkID0gYG1lbnUtJHtjcmVhdGVVbmlxdWVJZCgpfWA7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBkZWZhdWx0SWQsXG4gICAgbW9kYWw6IHRydWVcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJpZFwiLCBcIm1vZGFsXCIsIFwicHJldmVudFNjcm9sbFwiLCBcImZvcmNlTW91bnRcIiwgXCJvcGVuXCIsIFwiZGVmYXVsdE9wZW5cIiwgXCJvbk9wZW5DaGFuZ2VcIiwgXCJ2YWx1ZVwiLCBcIm9yaWVudGF0aW9uXCJdKTtcbiAgY29uc3QgZGlzY2xvc3VyZVN0YXRlID0gY3JlYXRlRGlzY2xvc3VyZVN0YXRlKHtcbiAgICBvcGVuOiAoKSA9PiBsb2NhbC5vcGVuLFxuICAgIGRlZmF1bHRPcGVuOiAoKSA9PiBsb2NhbC5kZWZhdWx0T3BlbixcbiAgICBvbk9wZW5DaGFuZ2U6IChpc09wZW4pID0+IGxvY2FsLm9uT3BlbkNoYW5nZT8uKGlzT3BlbilcbiAgfSk7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgaXNNb2RhbDogKCkgPT4gbG9jYWwubW9kYWwgPz8gdHJ1ZSxcbiAgICBwcmV2ZW50U2Nyb2xsOiAoKSA9PiBsb2NhbC5wcmV2ZW50U2Nyb2xsID8/IGNvbnRleHQuaXNNb2RhbCgpLFxuICAgIGZvcmNlTW91bnQ6ICgpID0+IGxvY2FsLmZvcmNlTW91bnQgPz8gZmFsc2UsXG4gICAgZ2VuZXJhdGVJZDogY3JlYXRlR2VuZXJhdGVJZCgoKSA9PiBsb2NhbC5pZCksXG4gICAgdmFsdWU6ICgpID0+IGxvY2FsLnZhbHVlLFxuICAgIG9yaWVudGF0aW9uOiAoKSA9PiBsb2NhbC5vcmllbnRhdGlvbiA/PyBvcHRpb25hbE1lbnViYXJDb250ZXh0Py5vcmllbnRhdGlvbigpID8/IFwiaG9yaXpvbnRhbFwiXG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudVJvb3RDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHQsXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChNZW51LCBtZXJnZVByb3BzKHtcbiAgICAgICAgZ2V0IG9wZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGRpc2Nsb3N1cmVTdGF0ZS5pc09wZW4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0IG9uT3BlbkNoYW5nZSgpIHtcbiAgICAgICAgICByZXR1cm4gZGlzY2xvc3VyZVN0YXRlLnNldElzT3BlbjtcbiAgICAgICAgfVxuICAgICAgfSwgb3RoZXJzKSk7XG4gICAgfVxuICB9KTtcbn1cblxuLy8gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Brb2JhbHRlK2NvcmVAMC4xMy40X3NvbGlkLWpzQDEuOS41L25vZGVfbW9kdWxlcy9Aa29iYWx0ZS9jb3JlL2Rpc3QvY2h1bmsvU1RHUkZKSFouanNcbnZhciBzZXBhcmF0b3JfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoc2VwYXJhdG9yX2V4cG9ydHMsIHtcbiAgUm9vdDogKCkgPT4gU2VwYXJhdG9yUm9vdCxcbiAgU2VwYXJhdG9yOiAoKSA9PiBTZXBhcmF0b3Jcbn0pO1xuZnVuY3Rpb24gU2VwYXJhdG9yUm9vdChwcm9wcykge1xuICBsZXQgcmVmO1xuICBjb25zdCBtZXJnZWRQcm9wcyA9IG1lcmdlRGVmYXVsdFByb3BzKHtcbiAgICBvcmllbnRhdGlvbjogXCJob3Jpem9udGFsXCJcbiAgfSwgcHJvcHMpO1xuICBjb25zdCBbbG9jYWwsIG90aGVyc10gPSBzcGxpdFByb3BzKG1lcmdlZFByb3BzLCBbXCJyZWZcIiwgXCJvcmllbnRhdGlvblwiXSk7XG4gIGNvbnN0IHRhZ05hbWUgPSBjcmVhdGVUYWdOYW1lKCgpID0+IHJlZiwgKCkgPT4gXCJoclwiKTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb2x5bW9ycGhpYywgbWVyZ2VQcm9wcyh7XG4gICAgYXM6IFwiaHJcIixcbiAgICByZWYociQpIHtcbiAgICAgIGNvbnN0IF9yZWYkID0gbWVyZ2VSZWZzKChlbCkgPT4gcmVmID0gZWwsIGxvY2FsLnJlZik7XG4gICAgICB0eXBlb2YgX3JlZiQgPT09IFwiZnVuY3Rpb25cIiAmJiBfcmVmJChyJCk7XG4gICAgfSxcbiAgICBnZXQgcm9sZSgpIHtcbiAgICAgIHJldHVybiB0YWdOYW1lKCkgIT09IFwiaHJcIiA/IFwic2VwYXJhdG9yXCIgOiB2b2lkIDA7XG4gICAgfSxcbiAgICBnZXQgW1wiYXJpYS1vcmllbnRhdGlvblwiXSgpIHtcbiAgICAgIHJldHVybiBsb2NhbC5vcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gXCJ2ZXJ0aWNhbFwiIDogdm9pZCAwO1xuICAgIH0sXG4gICAgZ2V0IFtcImRhdGEtb3JpZW50YXRpb25cIl0oKSB7XG4gICAgICByZXR1cm4gbG9jYWwub3JpZW50YXRpb247XG4gICAgfVxuICB9LCBvdGhlcnMpKTtcbn1cbnZhciBTZXBhcmF0b3IgPSBTZXBhcmF0b3JSb290O1xuXG4vLyAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQGtvYmFsdGUrY29yZUAwLjEzLjRfc29saWQtanNAMS45LjUvbm9kZV9tb2R1bGVzL0Brb2JhbHRlL2NvcmUvZGlzdC9jaHVuay9WMkpCWjdCSi5qc1xudmFyIGRyb3Bkb3duX21lbnVfZXhwb3J0cyA9IHt9O1xuX19leHBvcnQoZHJvcGRvd25fbWVudV9leHBvcnRzLCB7XG4gIEFycm93OiAoKSA9PiBQb3BwZXJBcnJvdyxcbiAgQ2hlY2tib3hJdGVtOiAoKSA9PiBNZW51Q2hlY2tib3hJdGVtLFxuICBDb250ZW50OiAoKSA9PiBEcm9wZG93bk1lbnVDb250ZW50LFxuICBEcm9wZG93bk1lbnU6ICgpID0+IERyb3Bkb3duTWVudSxcbiAgR3JvdXA6ICgpID0+IE1lbnVHcm91cCxcbiAgR3JvdXBMYWJlbDogKCkgPT4gTWVudUdyb3VwTGFiZWwsXG4gIEljb246ICgpID0+IE1lbnVJY29uLFxuICBJdGVtOiAoKSA9PiBNZW51SXRlbSxcbiAgSXRlbURlc2NyaXB0aW9uOiAoKSA9PiBNZW51SXRlbURlc2NyaXB0aW9uLFxuICBJdGVtSW5kaWNhdG9yOiAoKSA9PiBNZW51SXRlbUluZGljYXRvcixcbiAgSXRlbUxhYmVsOiAoKSA9PiBNZW51SXRlbUxhYmVsLFxuICBQb3J0YWw6ICgpID0+IE1lbnVQb3J0YWwsXG4gIFJhZGlvR3JvdXA6ICgpID0+IE1lbnVSYWRpb0dyb3VwLFxuICBSYWRpb0l0ZW06ICgpID0+IE1lbnVSYWRpb0l0ZW0sXG4gIFJvb3Q6ICgpID0+IERyb3Bkb3duTWVudVJvb3QsXG4gIFNlcGFyYXRvcjogKCkgPT4gU2VwYXJhdG9yUm9vdCxcbiAgU3ViOiAoKSA9PiBNZW51U3ViLFxuICBTdWJDb250ZW50OiAoKSA9PiBNZW51U3ViQ29udGVudCxcbiAgU3ViVHJpZ2dlcjogKCkgPT4gTWVudVN1YlRyaWdnZXIsXG4gIFRyaWdnZXI6ICgpID0+IE1lbnVUcmlnZ2VyXG59KTtcbmZ1bmN0aW9uIERyb3Bkb3duTWVudUNvbnRlbnQocHJvcHMpIHtcbiAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoKTtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVDb250ZXh0KCk7XG4gIGNvbnN0IFtsb2NhbCwgb3RoZXJzXSA9IHNwbGl0UHJvcHMocHJvcHMsIFtcIm9uQ2xvc2VBdXRvRm9jdXNcIiwgXCJvbkludGVyYWN0T3V0c2lkZVwiXSk7XG4gIGxldCBoYXNJbnRlcmFjdGVkT3V0c2lkZSA9IGZhbHNlO1xuICBjb25zdCBvbkNsb3NlQXV0b0ZvY3VzID0gKGUyKSA9PiB7XG4gICAgbG9jYWwub25DbG9zZUF1dG9Gb2N1cz8uKGUyKTtcbiAgICBpZiAoIWhhc0ludGVyYWN0ZWRPdXRzaWRlKSB7XG4gICAgICBmb2N1c1dpdGhvdXRTY3JvbGxpbmcoY29udGV4dC50cmlnZ2VyUmVmKCkpO1xuICAgIH1cbiAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZSA9IGZhbHNlO1xuICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG4gIGNvbnN0IG9uSW50ZXJhY3RPdXRzaWRlID0gKGUyKSA9PiB7XG4gICAgbG9jYWwub25JbnRlcmFjdE91dHNpZGU/LihlMik7XG4gICAgaWYgKCFyb290Q29udGV4dC5pc01vZGFsKCkgfHwgZTIuZGV0YWlsLmlzQ29udGV4dE1lbnUpIHtcbiAgICAgIGhhc0ludGVyYWN0ZWRPdXRzaWRlID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoTWVudUNvbnRlbnQsIG1lcmdlUHJvcHMoe1xuICAgIG9uQ2xvc2VBdXRvRm9jdXMsXG4gICAgb25JbnRlcmFjdE91dHNpZGVcbiAgfSwgb3RoZXJzKSk7XG59XG5mdW5jdGlvbiBEcm9wZG93bk1lbnVSb290KHByb3BzKSB7XG4gIGNvbnN0IGRlZmF1bHRJZCA9IGBkcm9wZG93bm1lbnUtJHtjcmVhdGVVbmlxdWVJZCgpfWA7XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gbWVyZ2VEZWZhdWx0UHJvcHMoe1xuICAgIGlkOiBkZWZhdWx0SWRcbiAgfSwgcHJvcHMpO1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE1lbnVSb290LCBtZXJnZWRQcm9wcyk7XG59XG52YXIgRHJvcGRvd25NZW51ID0gT2JqZWN0LmFzc2lnbihEcm9wZG93bk1lbnVSb290LCB7XG4gIEFycm93OiBQb3BwZXJBcnJvdyxcbiAgQ2hlY2tib3hJdGVtOiBNZW51Q2hlY2tib3hJdGVtLFxuICBDb250ZW50OiBEcm9wZG93bk1lbnVDb250ZW50LFxuICBHcm91cDogTWVudUdyb3VwLFxuICBHcm91cExhYmVsOiBNZW51R3JvdXBMYWJlbCxcbiAgSWNvbjogTWVudUljb24sXG4gIEl0ZW06IE1lbnVJdGVtLFxuICBJdGVtRGVzY3JpcHRpb246IE1lbnVJdGVtRGVzY3JpcHRpb24sXG4gIEl0ZW1JbmRpY2F0b3I6IE1lbnVJdGVtSW5kaWNhdG9yLFxuICBJdGVtTGFiZWw6IE1lbnVJdGVtTGFiZWwsXG4gIFBvcnRhbDogTWVudVBvcnRhbCxcbiAgUmFkaW9Hcm91cDogTWVudVJhZGlvR3JvdXAsXG4gIFJhZGlvSXRlbTogTWVudVJhZGlvSXRlbSxcbiAgU2VwYXJhdG9yOiBTZXBhcmF0b3JSb290LFxuICBTdWI6IE1lbnVTdWIsXG4gIFN1YkNvbnRlbnQ6IE1lbnVTdWJDb250ZW50LFxuICBTdWJUcmlnZ2VyOiBNZW51U3ViVHJpZ2dlcixcbiAgVHJpZ2dlcjogTWVudVRyaWdnZXJcbn0pO1xuXG4vLyBzcmMvdGhlbWUudHNcbnZhciB0b2tlbnMgPSB7XG4gIGNvbG9yczoge1xuICAgIGluaGVyaXQ6IFwiaW5oZXJpdFwiLFxuICAgIGN1cnJlbnQ6IFwiY3VycmVudENvbG9yXCIsXG4gICAgdHJhbnNwYXJlbnQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICBibGFjazogXCIjMDAwMDAwXCIsXG4gICAgd2hpdGU6IFwiI2ZmZmZmZlwiLFxuICAgIG5ldXRyYWw6IHtcbiAgICAgIDUwOiBcIiNmOWZhZmJcIixcbiAgICAgIDEwMDogXCIjZjJmNGY3XCIsXG4gICAgICAyMDA6IFwiI2VhZWNmMFwiLFxuICAgICAgMzAwOiBcIiNkMGQ1ZGRcIixcbiAgICAgIDQwMDogXCIjOThhMmIzXCIsXG4gICAgICA1MDA6IFwiIzY2NzA4NVwiLFxuICAgICAgNjAwOiBcIiM0NzU0NjdcIixcbiAgICAgIDcwMDogXCIjMzQ0MDU0XCIsXG4gICAgICA4MDA6IFwiIzFkMjkzOVwiLFxuICAgICAgOTAwOiBcIiMxMDE4MjhcIlxuICAgIH0sXG4gICAgZGFya0dyYXk6IHtcbiAgICAgIDUwOiBcIiM1MjVjN2FcIixcbiAgICAgIDEwMDogXCIjNDk1MzZlXCIsXG4gICAgICAyMDA6IFwiIzQxNDk2MlwiLFxuICAgICAgMzAwOiBcIiMzOTQwNTZcIixcbiAgICAgIDQwMDogXCIjMzEzNzQ5XCIsXG4gICAgICA1MDA6IFwiIzI5MmUzZFwiLFxuICAgICAgNjAwOiBcIiMyMTI1MzBcIixcbiAgICAgIDcwMDogXCIjMTkxYzI0XCIsXG4gICAgICA4MDA6IFwiIzExMTMxOFwiLFxuICAgICAgOTAwOiBcIiMwYjBkMTBcIlxuICAgIH0sXG4gICAgZ3JheToge1xuICAgICAgNTA6IFwiI2Y5ZmFmYlwiLFxuICAgICAgMTAwOiBcIiNmMmY0ZjdcIixcbiAgICAgIDIwMDogXCIjZWFlY2YwXCIsXG4gICAgICAzMDA6IFwiI2QwZDVkZFwiLFxuICAgICAgNDAwOiBcIiM5OGEyYjNcIixcbiAgICAgIDUwMDogXCIjNjY3MDg1XCIsXG4gICAgICA2MDA6IFwiIzQ3NTQ2N1wiLFxuICAgICAgNzAwOiBcIiMzNDQwNTRcIixcbiAgICAgIDgwMDogXCIjMWQyOTM5XCIsXG4gICAgICA5MDA6IFwiIzEwMTgyOFwiXG4gICAgfSxcbiAgICBibHVlOiB7XG4gICAgICAyNTogXCIjRjVGQUZGXCIsXG4gICAgICA1MDogXCIjRUZGOEZGXCIsXG4gICAgICAxMDA6IFwiI0QxRTlGRlwiLFxuICAgICAgMjAwOiBcIiNCMkRERkZcIixcbiAgICAgIDMwMDogXCIjODRDQUZGXCIsXG4gICAgICA0MDA6IFwiIzUzQjFGRFwiLFxuICAgICAgNTAwOiBcIiMyRTkwRkFcIixcbiAgICAgIDYwMDogXCIjMTU3MEVGXCIsXG4gICAgICA3MDA6IFwiIzE3NUNEM1wiLFxuICAgICAgODAwOiBcIiMxODQ5QTlcIixcbiAgICAgIDkwMDogXCIjMTk0MTg1XCJcbiAgICB9LFxuICAgIGdyZWVuOiB7XG4gICAgICAyNTogXCIjRjZGRUY5XCIsXG4gICAgICA1MDogXCIjRUNGREYzXCIsXG4gICAgICAxMDA6IFwiI0QxRkFERlwiLFxuICAgICAgMjAwOiBcIiNBNkY0QzVcIixcbiAgICAgIDMwMDogXCIjNkNFOUE2XCIsXG4gICAgICA0MDA6IFwiIzMyRDU4M1wiLFxuICAgICAgNTAwOiBcIiMxMkI3NkFcIixcbiAgICAgIDYwMDogXCIjMDM5ODU1XCIsXG4gICAgICA3MDA6IFwiIzAyN0E0OFwiLFxuICAgICAgODAwOiBcIiMwNTYwM0FcIixcbiAgICAgIDkwMDogXCIjMDU0RjMxXCJcbiAgICB9LFxuICAgIHJlZDoge1xuICAgICAgNTA6IFwiI2ZlZjJmMlwiLFxuICAgICAgMTAwOiBcIiNmZWUyZTJcIixcbiAgICAgIDIwMDogXCIjZmVjYWNhXCIsXG4gICAgICAzMDA6IFwiI2ZjYTVhNVwiLFxuICAgICAgNDAwOiBcIiNmODcxNzFcIixcbiAgICAgIDUwMDogXCIjZWY0NDQ0XCIsXG4gICAgICA2MDA6IFwiI2RjMjYyNlwiLFxuICAgICAgNzAwOiBcIiNiOTFjMWNcIixcbiAgICAgIDgwMDogXCIjOTkxYjFiXCIsXG4gICAgICA5MDA6IFwiIzdmMWQxZFwiLFxuICAgICAgOTUwOiBcIiM0NTBhMGFcIlxuICAgIH0sXG4gICAgeWVsbG93OiB7XG4gICAgICAyNTogXCIjRkZGQ0Y1XCIsXG4gICAgICA1MDogXCIjRkZGQUVCXCIsXG4gICAgICAxMDA6IFwiI0ZFRjBDN1wiLFxuICAgICAgMjAwOiBcIiNGRURGODlcIixcbiAgICAgIDMwMDogXCIjRkVDODRCXCIsXG4gICAgICA0MDA6IFwiI0ZEQjAyMlwiLFxuICAgICAgNTAwOiBcIiNGNzkwMDlcIixcbiAgICAgIDYwMDogXCIjREM2ODAzXCIsXG4gICAgICA3MDA6IFwiI0I1NDcwOFwiLFxuICAgICAgODAwOiBcIiM5MzM3MERcIixcbiAgICAgIDkwMDogXCIjN0EyRTBFXCJcbiAgICB9LFxuICAgIHB1cnBsZToge1xuICAgICAgMjU6IFwiI0ZBRkFGRlwiLFxuICAgICAgNTA6IFwiI0Y0RjNGRlwiLFxuICAgICAgMTAwOiBcIiNFQkU5RkVcIixcbiAgICAgIDIwMDogXCIjRDlENkZFXCIsXG4gICAgICAzMDA6IFwiI0JEQjRGRVwiLFxuICAgICAgNDAwOiBcIiM5QjhBRkJcIixcbiAgICAgIDUwMDogXCIjN0E1QUY4XCIsXG4gICAgICA2MDA6IFwiIzY5MzhFRlwiLFxuICAgICAgNzAwOiBcIiM1OTI1RENcIixcbiAgICAgIDgwMDogXCIjNEExRkI4XCIsXG4gICAgICA5MDA6IFwiIzNFMUM5NlwiXG4gICAgfSxcbiAgICB0ZWFsOiB7XG4gICAgICAyNTogXCIjRjZGRUZDXCIsXG4gICAgICA1MDogXCIjRjBGREY5XCIsXG4gICAgICAxMDA6IFwiI0NDRkJFRlwiLFxuICAgICAgMjAwOiBcIiM5OUY2RTBcIixcbiAgICAgIDMwMDogXCIjNUZFOUQwXCIsXG4gICAgICA0MDA6IFwiIzJFRDNCN1wiLFxuICAgICAgNTAwOiBcIiMxNUI3OUVcIixcbiAgICAgIDYwMDogXCIjMEU5Mzg0XCIsXG4gICAgICA3MDA6IFwiIzEwNzU2OVwiLFxuICAgICAgODAwOiBcIiMxMjVENTZcIixcbiAgICAgIDkwMDogXCIjMTM0RTQ4XCJcbiAgICB9LFxuICAgIHBpbms6IHtcbiAgICAgIDI1OiBcIiNmZGYyZjhcIixcbiAgICAgIDUwOiBcIiNmY2U3ZjNcIixcbiAgICAgIDEwMDogXCIjZmJjZmU4XCIsXG4gICAgICAyMDA6IFwiI2Y5YThkNFwiLFxuICAgICAgMzAwOiBcIiNmNDcyYjZcIixcbiAgICAgIDQwMDogXCIjZWM0ODk5XCIsXG4gICAgICA1MDA6IFwiI2RiMjc3N1wiLFxuICAgICAgNjAwOiBcIiNiZTE4NWRcIixcbiAgICAgIDcwMDogXCIjOWQxNzRkXCIsXG4gICAgICA4MDA6IFwiIzgzMTg0M1wiLFxuICAgICAgOTAwOiBcIiM1MDA3MjRcIlxuICAgIH0sXG4gICAgY3lhbjoge1xuICAgICAgMjU6IFwiI2VjZmVmZlwiLFxuICAgICAgNTA6IFwiI2NmZmFmZVwiLFxuICAgICAgMTAwOiBcIiNhNWYzZmNcIixcbiAgICAgIDIwMDogXCIjNjdlOGY5XCIsXG4gICAgICAzMDA6IFwiIzIyZDNlZVwiLFxuICAgICAgNDAwOiBcIiMwNmI2ZDRcIixcbiAgICAgIDUwMDogXCIjMDg5MWIyXCIsXG4gICAgICA2MDA6IFwiIzBlNzQ5MFwiLFxuICAgICAgNzAwOiBcIiMxNTVlNzVcIixcbiAgICAgIDgwMDogXCIjMTY0ZTYzXCIsXG4gICAgICA5MDA6IFwiIzA4MzM0NFwiXG4gICAgfVxuICB9LFxuICBhbHBoYToge1xuICAgIDEwMDogXCJmZlwiLFxuICAgIDkwOiBcImU1XCIsXG4gICAgODA6IFwiY2NcIixcbiAgICA3MDogXCJiM1wiLFxuICAgIDYwOiBcIjk5XCIsXG4gICAgNTA6IFwiODBcIixcbiAgICA0MDogXCI2NlwiLFxuICAgIDMwOiBcIjRkXCIsXG4gICAgMjA6IFwiMzNcIixcbiAgICAxMDogXCIxYVwiLFxuICAgIDA6IFwiMDBcIlxuICB9LFxuICBmb250OiB7XG4gICAgc2l6ZToge1xuICAgICAgXCIyeHNcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuNjI1KVwiLFxuICAgICAgeHM6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjc1KVwiLFxuICAgICAgc206IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjg3NSlcIixcbiAgICAgIG1kOiBcInZhcigtLXRzcWQtZm9udC1zaXplKVwiLFxuICAgICAgbGc6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjEyNSlcIixcbiAgICAgIHhsOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS4yNSlcIixcbiAgICAgIFwiMnhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjUpXCIsXG4gICAgICBcIjN4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS44NzUpXCIsXG4gICAgICBcIjR4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMi4yNSlcIixcbiAgICAgIFwiNXhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAzKVwiLFxuICAgICAgXCI2eGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDMuNzUpXCIsXG4gICAgICBcIjd4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogNC41KVwiLFxuICAgICAgXCI4eGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDYpXCIsXG4gICAgICBcIjl4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogOClcIlxuICAgIH0sXG4gICAgbGluZUhlaWdodDoge1xuICAgICAgeHM6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxKVwiLFxuICAgICAgc206IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjI1KVwiLFxuICAgICAgbWQ6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjUpXCIsXG4gICAgICBsZzogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuNzUpXCIsXG4gICAgICB4bDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDIpXCIsXG4gICAgICBcIjJ4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMi4yNSlcIixcbiAgICAgIFwiM3hsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAyLjUpXCIsXG4gICAgICBcIjR4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMi43NSlcIixcbiAgICAgIFwiNXhsXCI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAzKVwiLFxuICAgICAgXCI2eGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDMuMjUpXCIsXG4gICAgICBcIjd4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMy41KVwiLFxuICAgICAgXCI4eGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDMuNzUpXCIsXG4gICAgICBcIjl4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogNClcIlxuICAgIH0sXG4gICAgd2VpZ2h0OiB7XG4gICAgICB0aGluOiBcIjEwMFwiLFxuICAgICAgZXh0cmFsaWdodDogXCIyMDBcIixcbiAgICAgIGxpZ2h0OiBcIjMwMFwiLFxuICAgICAgbm9ybWFsOiBcIjQwMFwiLFxuICAgICAgbWVkaXVtOiBcIjUwMFwiLFxuICAgICAgc2VtaWJvbGQ6IFwiNjAwXCIsXG4gICAgICBib2xkOiBcIjcwMFwiLFxuICAgICAgZXh0cmFib2xkOiBcIjgwMFwiLFxuICAgICAgYmxhY2s6IFwiOTAwXCJcbiAgICB9XG4gIH0sXG4gIGJyZWFrcG9pbnRzOiB7XG4gICAgeHM6IFwiMzIwcHhcIixcbiAgICBzbTogXCI2NDBweFwiLFxuICAgIG1kOiBcIjc2OHB4XCIsXG4gICAgbGc6IFwiMTAyNHB4XCIsXG4gICAgeGw6IFwiMTI4MHB4XCIsXG4gICAgXCIyeGxcIjogXCIxNTM2cHhcIlxuICB9LFxuICBib3JkZXI6IHtcbiAgICByYWRpdXM6IHtcbiAgICAgIG5vbmU6IFwiMHB4XCIsXG4gICAgICB4czogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuMTI1KVwiLFxuICAgICAgc206IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjI1KVwiLFxuICAgICAgbWQ6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjM3NSlcIixcbiAgICAgIGxnOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC41KVwiLFxuICAgICAgeGw6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjc1KVwiLFxuICAgICAgXCIyeGxcIjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEpXCIsXG4gICAgICBcIjN4bFwiOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS41KVwiLFxuICAgICAgZnVsbDogXCI5OTk5cHhcIlxuICAgIH1cbiAgfSxcbiAgc2l6ZToge1xuICAgIDA6IFwiMHB4XCIsXG4gICAgMC4yNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuMDYyNSlcIixcbiAgICAwLjU6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjEyNSlcIixcbiAgICAxOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC4yNSlcIixcbiAgICAxLjU6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjM3NSlcIixcbiAgICAyOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMC41KVwiLFxuICAgIDIuNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuNjI1KVwiLFxuICAgIDM6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAwLjc1KVwiLFxuICAgIDMuNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDAuODc1KVwiLFxuICAgIDQ6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxKVwiLFxuICAgIDQuNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuMTI1KVwiLFxuICAgIDU6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjI1KVwiLFxuICAgIDUuNTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuMzc1KVwiLFxuICAgIDY6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxLjUpXCIsXG4gICAgNi41OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMS42MjUpXCIsXG4gICAgNzogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEuNzUpXCIsXG4gICAgODogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDIpXCIsXG4gICAgOTogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDIuMjUpXCIsXG4gICAgMTA6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAyLjUpXCIsXG4gICAgMTE6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAyLjc1KVwiLFxuICAgIDEyOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMylcIixcbiAgICAxNDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDMuNSlcIixcbiAgICAxNjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDQpXCIsXG4gICAgMjA6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiA1KVwiLFxuICAgIDI0OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogNilcIixcbiAgICAyODogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDcpXCIsXG4gICAgMzI6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiA4KVwiLFxuICAgIDM2OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogOSlcIixcbiAgICA0MDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEwKVwiLFxuICAgIDQ0OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMTEpXCIsXG4gICAgNDg6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxMilcIixcbiAgICA1MjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDEzKVwiLFxuICAgIDU2OiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMTQpXCIsXG4gICAgNjA6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAxNSlcIixcbiAgICA2NDogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDE2KVwiLFxuICAgIDcyOiBcImNhbGModmFyKC0tdHNxZC1mb250LXNpemUpICogMTgpXCIsXG4gICAgODA6IFwiY2FsYyh2YXIoLS10c3FkLWZvbnQtc2l6ZSkgKiAyMClcIixcbiAgICA5NjogXCJjYWxjKHZhcigtLXRzcWQtZm9udC1zaXplKSAqIDI0KVwiXG4gIH0sXG4gIHNoYWRvdzoge1xuICAgIHhzOiAoXyA9IFwicmdiKDAgMCAwIC8gMC4xKVwiKSA9PiBgMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSlgLFxuICAgIHNtOiAoY29sb3IgPSBcInJnYigwIDAgMCAvIDAuMSlcIikgPT4gYDAgMXB4IDNweCAwICR7Y29sb3J9LCAwIDFweCAycHggLTFweCAke2NvbG9yfWAsXG4gICAgbWQ6IChjb2xvciA9IFwicmdiKDAgMCAwIC8gMC4xKVwiKSA9PiBgMCA0cHggNnB4IC0xcHggJHtjb2xvcn0sIDAgMnB4IDRweCAtMnB4ICR7Y29sb3J9YCxcbiAgICBsZzogKGNvbG9yID0gXCJyZ2IoMCAwIDAgLyAwLjEpXCIpID0+IGAwIDEwcHggMTVweCAtM3B4ICR7Y29sb3J9LCAwIDRweCA2cHggLTRweCAke2NvbG9yfWAsXG4gICAgeGw6IChjb2xvciA9IFwicmdiKDAgMCAwIC8gMC4xKVwiKSA9PiBgMCAyMHB4IDI1cHggLTVweCAke2NvbG9yfSwgMCA4cHggMTBweCAtNnB4ICR7Y29sb3J9YCxcbiAgICBcIjJ4bFwiOiAoY29sb3IgPSBcInJnYigwIDAgMCAvIDAuMjUpXCIpID0+IGAwIDI1cHggNTBweCAtMTJweCAke2NvbG9yfWAsXG4gICAgaW5uZXI6IChjb2xvciA9IFwicmdiKDAgMCAwIC8gMC4wNSlcIikgPT4gYGluc2V0IDAgMnB4IDRweCAwICR7Y29sb3J9YCxcbiAgICBub25lOiAoKSA9PiBgbm9uZWBcbiAgfSxcbiAgekluZGljZXM6IHtcbiAgICBoaWRlOiAtMSxcbiAgICBhdXRvOiBcImF1dG9cIixcbiAgICBiYXNlOiAwLFxuICAgIGRvY2tlZDogMTAsXG4gICAgZHJvcGRvd246IDFlMyxcbiAgICBzdGlja3k6IDExMDAsXG4gICAgYmFubmVyOiAxMjAwLFxuICAgIG92ZXJsYXk6IDEzMDAsXG4gICAgbW9kYWw6IDE0MDAsXG4gICAgcG9wb3ZlcjogMTUwMCxcbiAgICBza2lwTGluazogMTYwMCxcbiAgICB0b2FzdDogMTcwMCxcbiAgICB0b29sdGlwOiAxODAwXG4gIH1cbn07XG5cbi8vIHNyYy9pY29ucy9pbmRleC50c3hcbnZhciBfdG1wbCQyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTE0IGhlaWdodD0xNCB2aWV3Qm94PVwiMCAwIDE0IDE0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk0xMyAxM0w5LjAwMDA3IDlNMTAuMzMzMyA1LjY2NjY3QzEwLjMzMzMgOC4yNDQgOC4yNDQgMTAuMzMzMyA1LjY2NjY3IDEwLjMzMzNDMy4wODkzNCAxMC4zMzMzIDEgOC4yNDQgMSA1LjY2NjY3QzEgMy4wODkzNCAzLjA4OTM0IDEgNS42NjY2NyAxQzguMjQ0IDEgMTAuMzMzMyAzLjA4OTM0IDEwLjMzMzMgNS42NjY2N1pcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTEuNjY2Njcgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDIyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTI0IGhlaWdodD0yNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk05IDNIMTVNMyA2SDIxTTE5IDZMMTguMjk4NyAxNi41MTkzQzE4LjE5MzUgMTguMDk3NSAxOC4xNDA5IDE4Ljg4NjcgMTcuOCAxOS40ODVDMTcuNDk5OSAyMC4wMTE4IDE3LjA0NzIgMjAuNDM1MyAxNi41MDE3IDIwLjY5OTdDMTUuODgyIDIxIDE1LjA5MTEgMjEgMTMuNTA5MyAyMUgxMC40OTA3QzguOTA4OTEgMjEgOC4xMTgwMyAyMSA3LjQ5ODM0IDIwLjY5OTdDNi45NTI3NiAyMC40MzUzIDYuNTAwMDkgMjAuMDExOCA2LjE5OTk4IDE5LjQ4NUM1Ljg1OTExIDE4Ljg4NjcgNS44MDY1IDE4LjA5NzUgNS43MDEyOSAxNi41MTkzTDUgNk0xMCAxMC41VjE1LjVNMTQgMTAuNVYxNS41XCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQzID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTEwIGhlaWdodD02IHZpZXdCb3g9XCIwIDAgMTAgNlwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNMSAxTDUgNUw5IDFcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTEuNjY2Njcgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDQgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MTIgaGVpZ2h0PTEyIHZpZXdCb3g9XCIwIDAgMTYgMTZcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTggMTMuMzMzM1YyLjY2NjY3TTggMi42NjY2N0w0IDYuNjY2NjdNOCAyLjY2NjY3TDEyIDYuNjY2NjdcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTEuNjY2Njcgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDUgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MTIgaGVpZ2h0PTEyIHZpZXdCb3g9XCIwIDAgMTYgMTZcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTggMi42NjY2N1YxMy4zMzMzTTggMTMuMzMzM0w0IDkuMzMzMzNNOCAxMy4zMzMzTDEyIDkuMzMzMzNcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTEuNjY2Njcgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDYgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiaGVpZ2h0PTEyIHdpZHRoPTEyIGZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTEyIDJ2Mm0wIDE2djJNNCAxMkgybTQuMzE0LTUuNjg2TDQuOSA0LjltMTIuNzg2IDEuNDE0TDE5LjEgNC45TTYuMzE0IDE3LjY5IDQuOSAxOS4xMDRtMTIuNzg2LTEuNDE0IDEuNDE0IDEuNDE0TTIyIDEyaC0ybS0zIDBhNSA1IDAgMSAxLTEwIDAgNSA1IDAgMCAxIDEwIDBaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQ3ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcImhlaWdodD0xMiB3aWR0aD0xMiBmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk0yMiAxNS44NDRhMTAuNDI0IDEwLjQyNCAwIDAgMS00LjMwNi45MjVjLTUuNzc5IDAtMTAuNDYzLTQuNjg0LTEwLjQ2My0xMC40NjIgMC0xLjUzNi4zMy0yLjk5NC45MjUtNC4zMDdBMTAuNDY0IDEwLjQ2NCAwIDAgMCAyIDExLjUzOEMyIDE3LjMxNiA2LjY4NCAyMiAxMi40NjIgMjJjNC4yNDMgMCA3Ljg5Ni0yLjUyNiA5LjUzOC02LjE1NlpcInN0cm9rZT1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDggPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiaGVpZ2h0PTEyIHdpZHRoPTEyIGZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTggMjFoOG0tNC00djRtLTUuMi00aDEwLjRjMS42OCAwIDIuNTIgMCAzLjE2Mi0uMzI3YTMgMyAwIDAgMCAxLjMxMS0xLjMxMUMyMiAxNC43MiAyMiAxMy44OCAyMiAxMi4yVjcuOGMwLTEuNjggMC0yLjUyLS4zMjctMy4xNjJhMyAzIDAgMCAwLTEuMzExLTEuMzExQzE5LjcyIDMgMTguODggMyAxNy4yIDNINi44Yy0xLjY4IDAtMi41MiAwLTMuMTYyLjMyN2EzIDMgMCAwIDAtMS4zMTEgMS4zMTFDMiA1LjI4IDIgNi4xMiAyIDcuOHY0LjRjMCAxLjY4IDAgMi41Mi4zMjcgMy4xNjJhMyAzIDAgMCAwIDEuMzExIDEuMzExQzQuMjggMTcgNS4xMiAxNyA2LjggMTdaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQ5ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHN0cm9rZT1jdXJyZW50Q29sb3IgZmlsbD1jdXJyZW50Q29sb3Igc3Ryb2tlLXdpZHRoPTAgdmlld0JveD1cIjAgMCAyNCAyNFwiaGVpZ2h0PTFlbSB3aWR0aD0xZW0geG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZmlsbD1ub25lIGQ9XCJNMCAwaDI0djI0SDB6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMSA5bDIgMmM0Ljk3LTQuOTcgMTMuMDMtNC45NyAxOCAwbDItMkMxNi45MyAyLjkzIDcuMDggMi45MyAxIDl6bTggOGwzIDMgMy0zYTQuMjM3IDQuMjM3IDAgMDAtNiAwem0tNC00bDIgMmE3LjA3NCA3LjA3NCAwIDAxMTAgMGwyLTJDMTUuMTQgOS4xNCA4Ljg3IDkuMTQgNSAxM3pcIj5gKTtcbnZhciBfdG1wbCQxMCA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyBzdHJva2Utd2lkdGg9MCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJoZWlnaHQ9MWVtIHdpZHRoPTFlbSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBmaWxsPW5vbmUgZD1cIk0yNCAuMDFjMC0uMDEgMC0uMDEgMCAwTDAgMHYyNGgyNFYuMDF6TTAgMGgyNHYyNEgwVjB6bTAgMGgyNHYyNEgwVjB6XCI+PC9wYXRoPjxwYXRoIGQ9XCJNMjIuOTkgOUMxOS4xNSA1LjE2IDEzLjggMy43NiA4Ljg0IDQuNzhsMi41MiAyLjUyYzMuNDctLjE3IDYuOTkgMS4wNSA5LjYzIDMuN2wyLTJ6bS00IDRhOS43OTMgOS43OTMgMCAwMC00LjQ5LTIuNTZsMy41MyAzLjUzLjk2LS45N3pNMiAzLjA1TDUuMDcgNi4xQzMuNiA2LjgyIDIuMjIgNy43OCAxIDlsMS45OSAyYzEuMjQtMS4yNCAyLjY3LTIuMTYgNC4yLTIuNzdsMi4yNCAyLjI0QTkuNjg0IDkuNjg0IDAgMDA1IDEzdi4wMUw2Ljk5IDE1YTcuMDQyIDcuMDQyIDAgMDE0LjkyLTIuMDZMMTguOTggMjBsMS4yNy0xLjI2TDMuMjkgMS43OSAyIDMuMDV6TTkgMTdsMyAzIDMtM2E0LjIzNyA0LjIzNyAwIDAwLTYgMHpcIj5gKTtcbnZhciBfdG1wbCQxMSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNOS4zOTUxIDE5LjM3MTFMOS45Nzk1NSAyMC42ODU2QzEwLjE1MzMgMjEuMDc2OCAxMC40MzY4IDIxLjQwOTMgMTAuNzk1OCAyMS42NDI2QzExLjE1NDcgMjEuODc1OSAxMS41NzM3IDIyLjAwMDEgMTIuMDAxOCAyMkMxMi40Mjk5IDIyLjAwMDEgMTIuODQ4OCAyMS44NzU5IDEzLjIwNzggMjEuNjQyNkMxMy41NjY3IDIxLjQwOTMgMTMuODUwMyAyMS4wNzY4IDE0LjAyNCAyMC42ODU2TDE0LjYwODQgMTkuMzcxMUMxNC44MTY1IDE4LjkwNDcgMTUuMTY2NCAxOC41MTU5IDE1LjYwODQgMTguMjZDMTYuMDUzMiAxOC4wMDM0IDE2LjU2NzggMTcuODk0MSAxNy4wNzg0IDE3Ljk0NzhMMTguNTA4NCAxOC4xQzE4LjkzNDEgMTguMTQ1IDE5LjM2MzcgMTguMDY1NiAxOS43NDUxIDE3Ljg3MTNDMjAuMTI2NSAxNy42NzcxIDIwLjQ0MzQgMTcuMzc2MyAyMC42NTczIDE3LjAwNTZDMjAuODcxNSAxNi42MzUgMjAuOTczNSAxNi4yMTAzIDIwLjk1MTEgMTUuNzgyOUMyMC45Mjg2IDE1LjM1NTUgMjAuNzgyNSAxNC45NDM4IDIwLjUzMDcgMTQuNTk3OEwxOS42ODQgMTMuNDM0NEMxOS4zODI1IDEzLjAxNzEgMTkuMjIxNCAxMi41MTQ4IDE5LjIyNCAxMkMxOS4yMjM5IDExLjQ4NjYgMTkuMzg2NSAxMC45ODY0IDE5LjY4ODQgMTAuNTcxMUwyMC41MzUxIDkuNDA3NzhDMjAuNzg3IDkuMDYxNzUgMjAuOTMzIDguNjUwMDcgMjAuOTU1NSA4LjIyMjY3QzIwLjk3OCA3Ljc5NTI4IDIwLjg3NTkgNy4zNzA1NCAyMC42NjE4IDdDMjAuNDQ3OSA2LjYyOTIzIDIwLjEzMSA2LjMyODQ5IDE5Ljc0OTYgNi4xMzQyM0MxOS4zNjgxIDUuOTM5OTcgMTguOTM4NiA1Ljg2MDUzIDE4LjUxMjkgNS45MDU1NkwxNy4wODI5IDYuMDU3NzhDMTYuNTcyMiA2LjExMTQxIDE2LjA1NzcgNi4wMDIxMiAxNS42MTI5IDUuNzQ1NTZDMTUuMTcgNS40ODgyNSAxNC44MiA1LjA5NzM2IDE0LjYxMjkgNC42Mjg4OUwxNC4wMjQgMy4zMTQ0NEMxMy44NTAzIDIuOTIzMTcgMTMuNTY2NyAyLjU5MDcyIDEzLjIwNzggMi4zNTc0QzEyLjg0ODggMi4xMjQwOCAxMi40Mjk5IDEuOTk5OTMgMTIuMDAxOCAyQzExLjU3MzcgMS45OTk5MyAxMS4xNTQ3IDIuMTI0MDggMTAuNzk1OCAyLjM1NzRDMTAuNDM2OCAyLjU5MDcyIDEwLjE1MzMgMi45MjMxNyA5Ljk3OTU1IDMuMzE0NDRMOS4zOTUxIDQuNjI4ODlDOS4xODgwMyA1LjA5NzM2IDguODM3OTggNS40ODgyNSA4LjM5NTEgNS43NDU1NkM3Ljk1MDMyIDYuMDAyMTIgNy40MzU3NyA2LjExMTQxIDYuOTI1MSA2LjA1Nzc4TDUuNDkwNjYgNS45MDU1NkM1LjA2NDk5IDUuODYwNTMgNC42MzU0IDUuOTM5OTcgNC4yNTM5NyA2LjEzNDIzQzMuODcyNTUgNi4zMjg0OSAzLjU1NTY3IDYuNjI5MjMgMy4zNDE3NyA3QzMuMTI3NTkgNy4zNzA1NCAzLjAyNTU1IDcuNzk1MjggMy4wNDgwNCA4LjIyMjY3QzMuMDcwNTIgOC42NTAwNyAzLjIxNjU2IDkuMDYxNzUgMy40Njg0NCA5LjQwNzc4TDQuMzE1MSAxMC41NzExQzQuNjE3MDQgMTAuOTg2NCA0Ljc3OTY0IDExLjQ4NjYgNC43Nzk1NSAxMkM0Ljc3OTY0IDEyLjUxMzQgNC42MTcwNCAxMy4wMTM3IDQuMzE1MSAxMy40Mjg5TDMuNDY4NDQgMTQuNTkyMkMzLjIxNjU2IDE0LjkzODIgMy4wNzA1MiAxNS4zNDk5IDMuMDQ4MDQgMTUuNzc3M0MzLjAyNTU1IDE2LjIwNDcgMy4xMjc1OSAxNi42Mjk1IDMuMzQxNzcgMTdDMy41NTU4OSAxNy4zNzA2IDMuODcyOCAxNy42NzEyIDQuMjU0MTcgMTcuODY1NEM0LjYzNTU0IDE4LjA1OTYgNS4wNjUwMiAxOC4xMzkyIDUuNDkwNjYgMTguMDk0NEw2LjkyMDY2IDE3Ljk0MjJDNy40MzEzMyAxNy44ODg2IDcuOTQ1ODcgMTcuOTk3OSA4LjM5MDY2IDE4LjI1NDRDOC44MzUxOSAxOC41MTEgOS4xODY4NyAxOC45MDIgOS4zOTUxIDE5LjM3MTFaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD48L3BhdGg+PHBhdGggZD1cIk0xMiAxNUMxMy42NTY4IDE1IDE1IDEzLjY1NjkgMTUgMTJDMTUgMTAuMzQzMSAxMy42NTY4IDkgMTIgOUMxMC4zNDMxIDkgOC45OTk5OCAxMC4zNDMxIDguOTk5OTggMTJDOC45OTk5OCAxMy42NTY5IDEwLjM0MzEgMTUgMTIgMTVaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQxMiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNMTYgMjFIMTYuMkMxNy44ODAyIDIxIDE4LjcyMDIgMjEgMTkuMzYyIDIwLjY3M0MxOS45MjY1IDIwLjM4NTQgMjAuMzg1NCAxOS45MjY1IDIwLjY3MyAxOS4zNjJDMjEgMTguNzIwMiAyMSAxNy44ODAyIDIxIDE2LjJWNy44QzIxIDYuMTE5ODQgMjEgNS4yNzk3NiAyMC42NzMgNC42MzgwM0MyMC4zODU0IDQuMDczNTQgMTkuOTI2NSAzLjYxNDYgMTkuMzYyIDMuMzI2OThDMTguNzIwMiAzIDE3Ljg4MDIgMyAxNi4yIDNINy44QzYuMTE5ODQgMyA1LjI3OTc2IDMgNC42MzgwMyAzLjMyNjk4QzQuMDczNTQgMy42MTQ2IDMuNjE0NiA0LjA3MzU0IDMuMzI2OTggNC42MzgwM0MzIDUuMjc5NzYgMyA2LjExOTg0IDMgNy44VjhNMTEuNSAxMi41TDE3IDdNMTcgN0gxMk0xNyA3VjEyTTYuMiAyMUg4LjhDOS45MjAxIDIxIDEwLjQ4MDIgMjEgMTAuOTA4IDIwLjc4MkMxMS4yODQzIDIwLjU5MDMgMTEuNTkwMyAyMC4yODQzIDExLjc4MiAxOS45MDhDMTIgMTkuNDgwMiAxMiAxOC45MjAxIDEyIDE3LjhWMTUuMkMxMiAxNC4wNzk5IDEyIDEzLjUxOTggMTEuNzgyIDEzLjA5MkMxMS41OTAzIDEyLjcxNTcgMTEuMjg0MyAxMi40MDk3IDEwLjkwOCAxMi4yMThDMTAuNDgwMiAxMiA5LjkyMDExIDEyIDguOCAxMkg2LjJDNS4wNzk5IDEyIDQuNTE5ODQgMTIgNC4wOTIwMiAxMi4yMThDMy43MTU2OSAxMi40MDk3IDMuNDA5NzMgMTIuNzE1NyAzLjIxNzk5IDEzLjA5MkMzIDEzLjUxOTggMyAxNC4wNzk5IDMgMTUuMlYxNy44QzMgMTguOTIwMSAzIDE5LjQ4MDIgMy4yMTc5OSAxOS45MDhDMy40MDk3MyAyMC4yODQzIDMuNzE1NjkgMjAuNTkwMyA0LjA5MjAyIDIwLjc4MkM0LjUxOTg0IDIxIDUuMDc5ODkgMjEgNi4yIDIxWlwic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMTMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MjQgaGVpZ2h0PTI0IHZpZXdCb3g9XCIwIDAgMjQgMjRcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBjbGFzcz1jb3BpZXIgZD1cIk04IDhWNS4yQzggNC4wNzk5IDggMy41MTk4NCA4LjIxNzk5IDMuMDkyMDJDOC40MDk3MyAyLjcxNTY5IDguNzE1NjkgMi40MDk3MyA5LjA5MjAyIDIuMjE3OTlDOS41MTk4NCAyIDEwLjA3OTkgMiAxMS4yIDJIMTguOEMxOS45MjAxIDIgMjAuNDgwMiAyIDIwLjkwOCAyLjIxNzk5QzIxLjI4NDMgMi40MDk3MyAyMS41OTAzIDIuNzE1NjkgMjEuNzgyIDMuMDkyMDJDMjIgMy41MTk4NCAyMiA0LjA3OTkgMjIgNS4yVjEyLjhDMjIgMTMuOTIwMSAyMiAxNC40ODAyIDIxLjc4MiAxNC45MDhDMjEuNTkwMyAxNS4yODQzIDIxLjI4NDMgMTUuNTkwMyAyMC45MDggMTUuNzgyQzIwLjQ4MDIgMTYgMTkuOTIwMSAxNiAxOC44IDE2SDE2TTUuMiAyMkgxMi44QzEzLjkyMDEgMjIgMTQuNDgwMiAyMiAxNC45MDggMjEuNzgyQzE1LjI4NDMgMjEuNTkwMyAxNS41OTAzIDIxLjI4NDMgMTUuNzgyIDIwLjkwOEMxNiAyMC40ODAyIDE2IDE5LjkyMDEgMTYgMTguOFYxMS4yQzE2IDEwLjA3OTkgMTYgOS41MTk4NCAxNS43ODIgOS4wOTIwMkMxNS41OTAzIDguNzE1NjkgMTUuMjg0MyA4LjQwOTczIDE0LjkwOCA4LjIxNzk5QzE0LjQ4MDIgOCAxMy45MjAxIDggMTIuOCA4SDUuMkM0LjA3OTkgOCAzLjUxOTg0IDggMy4wOTIwMiA4LjIxNzk5QzIuNzE1NjkgOC40MDk3MyAyLjQwOTczIDguNzE1NjkgMi4yMTc5OSA5LjA5MjAyQzIgOS41MTk4NCAyIDEwLjA3OTkgMiAxMS4yVjE4LjhDMiAxOS45MjAxIDIgMjAuNDgwMiAyLjIxNzk5IDIwLjkwOEMyLjQwOTczIDIxLjI4NDMgMi43MTU2OSAyMS41OTAzIDMuMDkyMDIgMjEuNzgyQzMuNTE5ODQgMjIgNC4wNzk4OSAyMiA1LjIgMjJaXCJzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQgc3Ryb2tlPWN1cnJlbnRDb2xvcj5gKTtcbnZhciBfdG1wbCQxNCA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNMi41IDIxLjQ5OThMOC4wNDkyNyAxOS4zNjU1QzguNDA0MjEgMTkuMjI5IDguNTgxNjggMTkuMTYwNyA4Ljc0NzcyIDE5LjA3MTZDOC44OTUyIDE4Ljk5MjQgOS4wMzU4IDE4LjkwMSA5LjE2ODA0IDE4Ljc5ODRDOS4zMTY5MiAxOC42ODI5IDkuNDUxMzcgMTguNTQ4NCA5LjcyMDI4IDE4LjI3OTVMMjEgNi45OTk4MkMyMi4xMDQ2IDUuODk1MjUgMjIuMTA0NiA0LjEwNDM4IDIxIDIuOTk5ODFDMTkuODk1NSAxLjg5NTI1IDE4LjEwNDYgMS44OTUyNCAxNyAyLjk5OTgxTDUuNzIwMjggMTQuMjc5NUM1LjQ1MTM4IDE0LjU0ODQgNS4zMTY5MiAxNC42ODI5IDUuMjAxMzkgMTQuODMxOEM1LjA5ODc3IDE0Ljk2NCA1LjAwNzQgMTUuMTA0NiA0LjkyODIzIDE1LjI1MjFDNC44MzkxMSAxNS40MTgxIDQuNzcwODUgMTUuNTk1NiA0LjYzNDMzIDE1Ljk1MDZMMi41IDIxLjQ5OThaTTIuNSAyMS40OTk4TDQuNTU4MTIgMTYuMTQ4OEM0LjcwNTQgMTUuNzY1OSA0Ljc3OTAzIDE1LjU3NDQgNC45MDUzNCAxNS40ODY3QzUuMDE1NzIgMTUuNDEwMSA1LjE1MjMgMTUuMzgxMSA1LjI4NDMgMTUuNDA2M0M1LjQzNTMzIDE1LjQzNTEgNS41ODAzOCAxNS41ODAyIDUuODcwNDggMTUuODcwM0w4LjEyOTU3IDE4LjEyOTRDOC40MTk2NyAxOC40MTk1IDguNTY0NzIgMTguNTY0NSA4LjU5MzU2IDE4LjcxNTVDOC42MTg3NyAxOC44NDc1IDguNTg5NzkgMTguOTg0MSA4LjUxMzE0IDE5LjA5NDVDOC40MjU0NSAxOS4yMjA4IDguMjMzOTkgMTkuMjk0NCA3Ljg1MTA3IDE5LjQ0MTdMMi41IDIxLjQ5OThaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQxNSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0yNCBoZWlnaHQ9MjQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNNy41IDEyTDEwLjUgMTVMMTYuNSA5TTcuOCAyMUgxNi4yQzE3Ljg4MDIgMjEgMTguNzIwMiAyMSAxOS4zNjIgMjAuNjczQzE5LjkyNjUgMjAuMzg1NCAyMC4zODU0IDE5LjkyNjUgMjAuNjczIDE5LjM2MkMyMSAxOC43MjAyIDIxIDE3Ljg4MDIgMjEgMTYuMlY3LjhDMjEgNi4xMTk4NCAyMSA1LjI3OTc2IDIwLjY3MyA0LjYzODAzQzIwLjM4NTQgNC4wNzM1NCAxOS45MjY1IDMuNjE0NiAxOS4zNjIgMy4zMjY5OEMxOC43MjAyIDMgMTcuODgwMiAzIDE2LjIgM0g3LjhDNi4xMTk4NCAzIDUuMjc5NzYgMyA0LjYzODAzIDMuMzI2OThDNC4wNzM1NCAzLjYxNDYgMy42MTQ2IDQuMDczNTQgMy4zMjY5OCA0LjYzODAzQzMgNS4yNzk3NiAzIDYuMTE5ODQgMyA3LjhWMTYuMkMzIDE3Ljg4MDIgMyAxOC43MjAyIDMuMzI2OTggMTkuMzYyQzMuNjE0NiAxOS45MjY1IDQuMDczNTQgMjAuMzg1NCA0LjYzODAzIDIwLjY3M0M1LjI3OTc2IDIxIDYuMTE5ODQgMjEgNy44IDIxWlwic3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDE2ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTI0IGhlaWdodD0yNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk05IDlMMTUgMTVNMTUgOUw5IDE1TTcuOCAyMUgxNi4yQzE3Ljg4MDIgMjEgMTguNzIwMiAyMSAxOS4zNjIgMjAuNjczQzE5LjkyNjUgMjAuMzg1NCAyMC4zODU0IDE5LjkyNjUgMjAuNjczIDE5LjM2MkMyMSAxOC43MjAyIDIxIDE3Ljg4MDIgMjEgMTYuMlY3LjhDMjEgNi4xMTk4NCAyMSA1LjI3OTc2IDIwLjY3MyA0LjYzODAzQzIwLjM4NTQgNC4wNzM1NCAxOS45MjY1IDMuNjE0NiAxOS4zNjIgMy4zMjY5OEMxOC43MjAyIDMgMTcuODgwMiAzIDE2LjIgM0g3LjhDNi4xMTk4NCAzIDUuMjc5NzYgMyA0LjYzODAzIDMuMzI2OThDNC4wNzM1NCAzLjYxNDYgMy42MTQ2IDQuMDczNTQgMy4zMjY5OCA0LjYzODAzQzMgNS4yNzk3NiAzIDYuMTE5ODQgMyA3LjhWMTYuMkMzIDE3Ljg4MDIgMyAxOC43MjAyIDMuMzI2OTggMTkuMzYyQzMuNjE0NiAxOS45MjY1IDQuMDczNTQgMjAuMzg1NCA0LjYzODAzIDIwLjY3M0M1LjI3OTc2IDIxIDYuMTE5ODQgMjEgNy44IDIxWlwic3Ryb2tlPSNGMDQ0Mzggc3Ryb2tlLXdpZHRoPTIgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPXJvdW5kPmApO1xudmFyIF90bXBsJDE3ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTI0IGhlaWdodD0yNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgc3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MiB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cmVjdCBjbGFzcz1saXN0IHdpZHRoPTIwIGhlaWdodD0yMCB5PTIgeD0yIHJ4PTI+PC9yZWN0PjxsaW5lIGNsYXNzPWxpc3QtaXRlbSB5MT03IHkyPTcgeDE9NiB4Mj0xOD48L2xpbmU+PGxpbmUgY2xhc3M9bGlzdC1pdGVtIHkyPTEyIHkxPTEyIHgxPTYgeDI9MTg+PC9saW5lPjxsaW5lIGNsYXNzPWxpc3QtaXRlbSB5MT0xNyB5Mj0xNyB4MT02IHgyPTE4PmApO1xudmFyIF90bXBsJDE4ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcImhlaWdodD0yMCB3aWR0aD0yMCBmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk0zIDcuOGMwLTEuNjggMC0yLjUyLjMyNy0zLjE2MmEzIDMgMCAwIDEgMS4zMTEtMS4zMTFDNS4yOCAzIDYuMTIgMyA3LjggM2g4LjRjMS42OCAwIDIuNTIgMCAzLjE2Mi4zMjdhMyAzIDAgMCAxIDEuMzExIDEuMzExQzIxIDUuMjggMjEgNi4xMiAyMSA3Ljh2OC40YzAgMS42OCAwIDIuNTItLjMyNyAzLjE2MmEzIDMgMCAwIDEtMS4zMTEgMS4zMTFDMTguNzIgMjEgMTcuODggMjEgMTYuMiAyMUg3LjhjLTEuNjggMC0yLjUyIDAtMy4xNjItLjMyN2EzIDMgMCAwIDEtMS4zMTEtMS4zMTFDMyAxOC43MiAzIDE3Ljg4IDMgMTYuMlY3LjhaXCJzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMTkgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MTQgaGVpZ2h0PTE0IHZpZXdCb3g9XCIwIDAgMjQgMjRcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTcuNSAxMkwxMC41IDE1TDE2LjUgOU0yMiAxMkMyMiAxNy41MjI4IDE3LjUyMjggMjIgMTIgMjJDNi40NzcxNSAyMiAyIDE3LjUyMjggMiAxMkMyIDYuNDc3MTUgNi40NzcxNSAyIDEyIDJDMTcuNTIyOCAyIDIyIDYuNDc3MTUgMjIgMTJaXCJzdHJva2U9Y3VycmVudENvbG9yIHN0cm9rZS13aWR0aD0yIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1yb3VuZD5gKTtcbnZhciBfdG1wbCQyMCA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHN2ZyB3aWR0aD0xNCBoZWlnaHQ9MTQgdmlld0JveD1cIjAgMCAyNCAyNFwiZmlsbD1ub25lIHhtbG5zPWh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnPjxwYXRoIGQ9XCJNMTIgMlY2TTEyIDE4VjIyTTYgMTJIMk0yMiAxMkgxOE0xOS4wNzg0IDE5LjA3ODRMMTYuMjUgMTYuMjVNMTkuMDc4NCA0Ljk5OTk0TDE2LjI1IDcuODI4MzdNNC45MjE1NyAxOS4wNzg0TDcuNzUgMTYuMjVNNC45MjE1NyA0Ljk5OTk0TDcuNzUgNy44MjgzN1wic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+PC9wYXRoPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9dHJhbnNmb3JtIGF0dHJpYnV0ZVR5cGU9WE1MIHR5cGU9cm90YXRlIGZyb209MCB0bz0zNjAgZHVyPTJzIHJlcGVhdENvdW50PWluZGVmaW5pdGU+YCk7XG52YXIgX3RtcGwkMjEgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgd2lkdGg9MTQgaGVpZ2h0PTE0IHZpZXdCb3g9XCIwIDAgMjQgMjRcImZpbGw9bm9uZSB4bWxucz1odHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zz48cGF0aCBkPVwiTTE1IDlMOSAxNU05IDlMMTUgMTVNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMjIyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3ZnIHdpZHRoPTE0IGhlaWdodD0xNCB2aWV3Qm94PVwiMCAwIDI0IDI0XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk05LjUgMTVWOU0xNC41IDE1VjlNMjIgMTJDMjIgMTcuNTIyOCAxNy41MjI4IDIyIDEyIDIyQzYuNDc3MTUgMjIgMiAxNy41MjI4IDIgMTJDMiA2LjQ3NzE1IDYuNDc3MTUgMiAxMiAyQzE3LjUyMjggMiAyMiA2LjQ3NzE1IDIyIDEyWlwic3Ryb2tlPWN1cnJlbnRDb2xvciBzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMjMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzdmcgdmVyc2lvbj0xLjAgdmlld0JveD1cIjAgMCA2MzMgNjMzXCI+PGxpbmVhckdyYWRpZW50IHgxPS02NjYuNDUgeDI9LTY2Ni40NSB5MT0xNjMuMjggeTI9MTYzLjk5IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDYzMyAwIDAgNjMzIDQyMjE3NyAtMTAzMzU4KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSM2QkRBRkYgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0Y5RkZCNSBvZmZzZXQ9LjMyPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRkE3NzAgb2Zmc2V0PS43MT48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkY3MzczIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNT48L2NpcmNsZT48ZGVmcz48ZmlsdGVyIHg9LTEzNy41IHk9NDEyIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PS0xMzcuNSB5PTQxMiB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IG1hc2tVbml0cz11c2VyU3BhY2VPblVzZT48Zz48Y2lyY2xlIGN4PTMxNi41IGN5PTMxNi41IHI9MzE2LjUgZmlsbD0jZmZmPjwvY2lyY2xlPjwvZz48L21hc2s+PGc+PGVsbGlwc2UgY3g9ODkuNSBjeT02MTAuNSByeD0yMTQuNSByeT0xODYgZmlsbD0jMDE1MDY0IHN0cm9rZT0jMDBDRkUyIHN0cm9rZS13aWR0aD0yNT48L2VsbGlwc2U+PC9nPjxkZWZzPjxmaWx0ZXIgeD0zMTYuNSB5PTQxMiB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IGZpbHRlclVuaXRzPXVzZXJTcGFjZU9uVXNlPjxmZUNvbG9yTWF0cml4IHZhbHVlcz1cIjEgMCAwIDAgMCAgMCAxIDAgMCAwICAwIDAgMSAwIDAgIDAgMCAwIDEgMFwiPjwvZmVDb2xvck1hdHJpeD48L2ZpbHRlcj48L2RlZnM+PG1hc2sgeD0zMTYuNSB5PTQxMiB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IG1hc2tVbml0cz11c2VyU3BhY2VPblVzZT48Zz48Y2lyY2xlIGN4PTMxNi41IGN5PTMxNi41IHI9MzE2LjUgZmlsbD0jZmZmPjwvY2lyY2xlPjwvZz48L21hc2s+PGc+PGVsbGlwc2UgY3g9NTQzLjUgY3k9NjEwLjUgcng9MjE0LjUgcnk9MTg2IGZpbGw9IzAxNTA2NCBzdHJva2U9IzAwQ0ZFMiBzdHJva2Utd2lkdGg9MjU+PC9lbGxpcHNlPjwvZz48ZGVmcz48ZmlsdGVyIHg9LTEzNy41IHk9NDUwIHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PS0xMzcuNSB5PTQ1MCB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IG1hc2tVbml0cz11c2VyU3BhY2VPblVzZT48Zz48Y2lyY2xlIGN4PTMxNi41IGN5PTMxNi41IHI9MzE2LjUgZmlsbD0jZmZmPjwvY2lyY2xlPjwvZz48L21hc2s+PGc+PGVsbGlwc2UgY3g9ODkuNSBjeT02NDguNSByeD0yMTQuNSByeT0xODYgZmlsbD0jMDE1MDY0IHN0cm9rZT0jMDBBOEI4IHN0cm9rZS13aWR0aD0yNT48L2VsbGlwc2U+PC9nPjxkZWZzPjxmaWx0ZXIgeD0zMTYuNSB5PTQ1MCB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IGZpbHRlclVuaXRzPXVzZXJTcGFjZU9uVXNlPjxmZUNvbG9yTWF0cml4IHZhbHVlcz1cIjEgMCAwIDAgMCAgMCAxIDAgMCAwICAwIDAgMSAwIDAgIDAgMCAwIDEgMFwiPjwvZmVDb2xvck1hdHJpeD48L2ZpbHRlcj48L2RlZnM+PG1hc2sgeD0zMTYuNSB5PTQ1MCB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IG1hc2tVbml0cz11c2VyU3BhY2VPblVzZT48Zz48Y2lyY2xlIGN4PTMxNi41IGN5PTMxNi41IHI9MzE2LjUgZmlsbD0jZmZmPjwvY2lyY2xlPjwvZz48L21hc2s+PGc+PGVsbGlwc2UgY3g9NTQzLjUgY3k9NjQ4LjUgcng9MjE0LjUgcnk9MTg2IGZpbGw9IzAxNTA2NCBzdHJva2U9IzAwQThCOCBzdHJva2Utd2lkdGg9MjU+PC9lbGxpcHNlPjwvZz48ZGVmcz48ZmlsdGVyIHg9LTEzNy41IHk9NDg2IHdpZHRoPTQ1NCBoZWlnaHQ9Mzk2LjkgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PS0xMzcuNSB5PTQ4NiB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IG1hc2tVbml0cz11c2VyU3BhY2VPblVzZT48Zz48Y2lyY2xlIGN4PTMxNi41IGN5PTMxNi41IHI9MzE2LjUgZmlsbD0jZmZmPjwvY2lyY2xlPjwvZz48L21hc2s+PGc+PGVsbGlwc2UgY3g9ODkuNSBjeT02ODQuNSByeD0yMTQuNSByeT0xODYgZmlsbD0jMDE1MDY0IHN0cm9rZT0jMDA3NzgyIHN0cm9rZS13aWR0aD0yNT48L2VsbGlwc2U+PC9nPjxkZWZzPjxmaWx0ZXIgeD0zMTYuNSB5PTQ4NiB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IGZpbHRlclVuaXRzPXVzZXJTcGFjZU9uVXNlPjxmZUNvbG9yTWF0cml4IHZhbHVlcz1cIjEgMCAwIDAgMCAgMCAxIDAgMCAwICAwIDAgMSAwIDAgIDAgMCAwIDEgMFwiPjwvZmVDb2xvck1hdHJpeD48L2ZpbHRlcj48L2RlZnM+PG1hc2sgeD0zMTYuNSB5PTQ4NiB3aWR0aD00NTQgaGVpZ2h0PTM5Ni45IG1hc2tVbml0cz11c2VyU3BhY2VPblVzZT48Zz48Y2lyY2xlIGN4PTMxNi41IGN5PTMxNi41IHI9MzE2LjUgZmlsbD0jZmZmPjwvY2lyY2xlPjwvZz48L21hc2s+PGc+PGVsbGlwc2UgY3g9NTQzLjUgY3k9Njg0LjUgcng9MjE0LjUgcnk9MTg2IGZpbGw9IzAxNTA2NCBzdHJva2U9IzAwNzc4MiBzdHJva2Utd2lkdGg9MjU+PC9lbGxpcHNlPjwvZz48ZGVmcz48ZmlsdGVyIHg9MjcyLjIgeT0zMDggd2lkdGg9MTc2LjkgaGVpZ2h0PTEyOS4zIGZpbHRlclVuaXRzPXVzZXJTcGFjZU9uVXNlPjxmZUNvbG9yTWF0cml4IHZhbHVlcz1cIjEgMCAwIDAgMCAgMCAxIDAgMCAwICAwIDAgMSAwIDAgIDAgMCAwIDEgMFwiPjwvZmVDb2xvck1hdHJpeD48L2ZpbHRlcj48L2RlZnM+PG1hc2sgeD0yNzIuMiB5PTMwOCB3aWR0aD0xNzYuOSBoZWlnaHQ9MTI5LjMgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48bGluZSB4MT00MzYgeDI9NDMxIHkxPTQwMy4yIHkyPTQzMS44IGZpbGw9bm9uZSBzdHJva2U9IzAwMCBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTExPjwvbGluZT48bGluZSB4MT0yOTEgeDI9MjgwIHkxPTM0MS41IHkyPTQwMy41IGZpbGw9bm9uZSBzdHJva2U9IzAwMCBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTExPjwvbGluZT48bGluZSB4MT0zMzIuOSB4Mj0zMjguNiB5MT0zODQuMSB5Mj00MTEuMiBmaWxsPW5vbmUgc3Ryb2tlPSMwMDAgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD0xMT48L2xpbmU+PGxpbmVhckdyYWRpZW50IHgxPS02NzAuNzUgeDI9LTY3MS41OSB5MT0xNjQuNCB5Mj0xNjQuNDkgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTE4NC4xNiAtMzIuNDcyIC0xMS40NjEgNjQuOTk3IC0xMjEzNTkgLTMyMTI2KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNFRTI3MDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0ZGMDA4RSBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPVwibTM0NC4xIDM2MyA5Ny43IDE3LjJjNS44IDIuMSA4LjIgNi4xIDcuMSAxMi4xcy00LjcgOS4yLTExIDkuOWwtMTA2LTE4LjctNTcuNS01OS4yYy0zLjItNC44LTIuOS05LjEgMC44LTEyLjhzOC4zLTQuNCAxMy43LTIuMWw1NS4yIDUzLjZ6XCJjbGlwLXJ1bGU9ZXZlbm9kZCBmaWxsLXJ1bGU9ZXZlbm9kZD48L3BhdGg+PGxpbmUgeDE9NDI4LjIgeDI9NDI5LjEgeTE9Mzg0LjUgeTI9Mzc4IGZpbGw9bm9uZSBzdHJva2U9I2ZmZiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTc+PC9saW5lPjxsaW5lIHgxPTM5NS4yIHgyPTM5Ni4xIHkxPTM3OS41IHkyPTM3MyBmaWxsPW5vbmUgc3Ryb2tlPSNmZmYgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD03PjwvbGluZT48bGluZSB4MT0zNjIuMiB4Mj0zNjMuMSB5MT0zNzMuNSB5Mj0zNjcuNCBmaWxsPW5vbmUgc3Ryb2tlPSNmZmYgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD03PjwvbGluZT48bGluZSB4MT0zMjQuMiB4Mj0zMjguNCB5MT0zNTEuMyB5Mj0zNDcuNCBmaWxsPW5vbmUgc3Ryb2tlPSNmZmYgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD03PjwvbGluZT48bGluZSB4MT0zMDMuMiB4Mj0zMDcuNCB5MT0zMzEuMyB5Mj0zMjcuNCBmaWxsPW5vbmUgc3Ryb2tlPSNmZmYgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD03PjwvbGluZT48L2c+PGRlZnM+PGZpbHRlciB4PTczLjIgeT0xMTMuOCB3aWR0aD0yODAuNiBoZWlnaHQ9MzE3LjQgZmlsdGVyVW5pdHM9dXNlclNwYWNlT25Vc2U+PGZlQ29sb3JNYXRyaXggdmFsdWVzPVwiMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgMSAwXCI+PC9mZUNvbG9yTWF0cml4PjwvZmlsdGVyPjwvZGVmcz48bWFzayB4PTczLjIgeT0xMTMuOCB3aWR0aD0yODAuNiBoZWlnaHQ9MzE3LjQgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48bGluZWFyR3JhZGllbnQgeDE9LTY3Mi4xNiB4Mj0tNjcyLjE2IHkxPTE2NS4wMyB5Mj0xNjYuMDMgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTEwMC4xOCA0OC44NjEgOTcuOTc2IDIwMC44OCAtODMzNDIgLTkzLjA1OSlcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jQTE3NTAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSM1RDIxMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD1cIm0xOTIuMyAyMDNjOC4xIDM3LjMgMTQgNzMuNiAxNy44IDEwOS4xIDMuOCAzNS40IDIuOCA3NS4xLTMgMTE5LjJsNjEuMi0xNi43Yy0xNS42LTU5LTI1LjItOTcuOS0yOC42LTExNi42cy0xMC44LTUxLjktMjIuMS05OS42bC0yNS4zIDQuNlwiY2xpcC1ydWxlPWV2ZW5vZGQgZmlsbC1ydWxlPWV2ZW5vZGQ+PC9wYXRoPjxnIHN0cm9rZT0jMkY4QTAwPjxsaW5lYXJHcmFkaWVudCB4MT0tNjYwLjIzIHgyPS02NjAuMjMgeTE9MTY2LjcyIHkyPTE2Ny43MiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg5Mi42ODMgNC44NTczIC0yLjAyNTkgMzguNjU3IDYxNjgwIC0zMDg4LjYpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9IzJGOEEwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jOTBGRjU3IG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9XCJtMTk1IDE4My45cy0xMi42LTIyLjEtMzYuNS0yOS45Yy0xNS45LTUuMi0zNC40LTEuNS01NS41IDExLjEgMTUuOSAxNC4zIDI5LjUgMjIuNiA0MC43IDI0LjkgMTYuOCAzLjYgNTEuMy02LjEgNTEuMy02LjF6XCJjbGlwLXJ1bGU9ZXZlbm9kZCBmaWxsLXJ1bGU9ZXZlbm9kZCBzdHJva2Utd2lkdGg9MTM+PC9wYXRoPjxsaW5lYXJHcmFkaWVudCB4MT0tNjYxLjM2IHgyPS02NjEuMzYgeTE9MTY0LjE4IHkyPTE2NS4xOCBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxMTAgNS43NjQ4IC02LjM1OTkgMTIxLjM1IDczOTMzIC0xNTkzMylcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jMkY4QTAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSM5MEZGNTcgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD1cIm0xOTQuOSAxODQuNXMtNDcuNS04LjUtODMuMiAxNS43Yy0yMy44IDE2LjItMzQuMyA0OS4zLTMxLjYgOTkuNCAzMC4zLTI3LjggNTIuMS00OC41IDY1LjItNjEuOSAxOS44LTIwLjIgNDkuNi01My4yIDQ5LjYtNTMuMnpcImNsaXAtcnVsZT1ldmVub2RkIGZpbGwtcnVsZT1ldmVub2RkIHN0cm9rZS13aWR0aD0xMz48L3BhdGg+PGxpbmVhckdyYWRpZW50IHgxPS02NTYuNzkgeDI9LTY1Ni43OSB5MT0xNjUuMTUgeTI9MTY2LjE1IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDYyLjk1NCAzLjI5OTMgLTMuNTAyMyA2Ni44MjggNDIxNTYgLTg3NTQuMSlcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jMkY4QTAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSM5MEZGNTcgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD1cIm0xOTUgMTgzLjljLTAuOC0yMS45IDYtMzggMjAuNi00OC4yczI5LjgtMTUuNCA0NS41LTE1LjNjLTYuMSAyMS40LTE0LjUgMzUuOC0yNS4yIDQzLjRzLTI0LjQgMTQuMi00MC45IDIwLjF6XCJjbGlwLXJ1bGU9ZXZlbm9kZCBmaWxsLXJ1bGU9ZXZlbm9kZCBzdHJva2Utd2lkdGg9MTM+PC9wYXRoPjxsaW5lYXJHcmFkaWVudCB4MT0tNjYzLjA3IHgyPS02NjMuMDcgeTE9MTY1LjQ0IHkyPTE2Ni40NCBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxNTIuNDcgNy45OTA3IC0zLjA5MzYgNTkuMDI5IDEwMTg4NCAtNDMxOC43KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSMyRjhBMDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9IzkwRkY1NyBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPVwibTE5NC45IDE4NC41YzMxLjktMzAgNjQuMS0zOS43IDk2LjctMjlzNTAuOCAzMC40IDU0LjYgNTkuMWMtMzUuMi01LjUtNjAuNC05LjYtNzUuOC0xMi4xLTE1LjMtMi42LTQwLjUtOC42LTc1LjUtMTh6XCJjbGlwLXJ1bGU9ZXZlbm9kZCBmaWxsLXJ1bGU9ZXZlbm9kZCBzdHJva2Utd2lkdGg9MTM+PC9wYXRoPjxsaW5lYXJHcmFkaWVudCB4MT0tNjYyLjU3IHgyPS02NjIuNTcgeTE9MTY0LjQ0IHkyPTE2NS40NCBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxMzYuNDYgNy4xNTE3IC01LjIxNjMgOTkuNTMzIDkxNTM2IC0xMTQ0MilcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jMkY4QTAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSM5MEZGNTcgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD1cIm0xOTQuOSAxODQuNWMzNS44LTcuNiA2NS42LTAuMiA4OS4yIDIyczM3LjcgNDkgNDIuMyA4MC4zYy0zOS44LTkuNy02OC4zLTIzLjgtODUuNS00Mi40cy0zMi41LTM4LjUtNDYtNTkuOXpcImNsaXAtcnVsZT1ldmVub2RkIGZpbGwtcnVsZT1ldmVub2RkIHN0cm9rZS13aWR0aD0xMz48L3BhdGg+PGxpbmVhckdyYWRpZW50IHgxPS02NTYuNDMgeDI9LTY1Ni40MyB5MT0xNjMuODYgeTI9MTY0Ljg2IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDYwLjg2NiAzLjE4OTkgLTguNzc3MyAxNjcuNDggNDE1NjAgLTI1MTY4KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSMyRjhBMDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9IzkwRkY1NyBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPVwibTE5NC45IDE4NC41Yy0zMy42IDEzLjgtNTMuNiAzNS43LTYwLjEgNjUuNnMtMy42IDYzLjEgOC43IDk5LjZjMjcuNC00MC4zIDQzLjItNjkuNiA0Ny40LTg4czUuNi00NC4xIDQtNzcuMnpcImNsaXAtcnVsZT1ldmVub2RkIGZpbGwtcnVsZT1ldmVub2RkIHN0cm9rZS13aWR0aD0xMz48L3BhdGg+PHBhdGggZD1cIm0xOTYuNSAxODIuM2MtMTQuOCAyMS42LTI1LjEgNDEuNC0zMC44IDU5LjRzLTkuNSAzMy0xMS4xIDQ1LjFcImZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2Utd2lkdGg9OD48L3BhdGg+PHBhdGggZD1cIm0xOTQuOSAxODUuN2MtMjQuNCAxLjctNDMuOCA5LTU4LjEgMjEuOHMtMjQuNyAyNS40LTMxLjMgMzcuOFwiZmlsbD1ub25lIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS13aWR0aD04PjwvcGF0aD48cGF0aCBkPVwibTIwNC41IDE3Ni40YzI5LjctNi43IDUyLTguNCA2Ny01LjFzMjYuOSA4LjYgMzUuOCAxNS45XCJmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLXdpZHRoPTg+PC9wYXRoPjxwYXRoIGQ9XCJtMTk2LjUgMTgxLjRjMjAuMyA5LjkgMzguMiAyMC41IDUzLjkgMzEuOXMyNy40IDIyLjEgMzUuMSAzMlwiZmlsbD1ub25lIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS13aWR0aD04PjwvcGF0aD48L2c+PC9nPjxkZWZzPjxmaWx0ZXIgeD01MC41IHk9Mzk5IHdpZHRoPTUzMiBoZWlnaHQ9NjMzIGZpbHRlclVuaXRzPXVzZXJTcGFjZU9uVXNlPjxmZUNvbG9yTWF0cml4IHZhbHVlcz1cIjEgMCAwIDAgMCAgMCAxIDAgMCAwICAwIDAgMSAwIDAgIDAgMCAwIDEgMFwiPjwvZmVDb2xvck1hdHJpeD48L2ZpbHRlcj48L2RlZnM+PG1hc2sgeD01MC41IHk9Mzk5IHdpZHRoPTUzMiBoZWlnaHQ9NjMzIG1hc2tVbml0cz11c2VyU3BhY2VPblVzZT48Zz48Y2lyY2xlIGN4PTMxNi41IGN5PTMxNi41IHI9MzE2LjUgZmlsbD0jZmZmPjwvY2lyY2xlPjwvZz48L21hc2s+PGc+PGxpbmVhckdyYWRpZW50IHgxPS02NjYuMDYgeDI9LTY2Ni4yMyB5MT0xNjMuMzYgeTI9MTYzLjc1IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDUzMiAwIDAgNjMzIDM1NDc2MCAtMTAyOTU5KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNGRkY0MDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9IzNDODcwMCBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48ZWxsaXBzZSBjeD0zMTYuNSBjeT03MTUuNSByeD0yNjYgcnk9MzE2LjU+PC9lbGxpcHNlPjwvZz48ZGVmcz48ZmlsdGVyIHg9MzkxIHk9LTI0IHdpZHRoPTI4OCBoZWlnaHQ9MjgzIGZpbHRlclVuaXRzPXVzZXJTcGFjZU9uVXNlPjxmZUNvbG9yTWF0cml4IHZhbHVlcz1cIjEgMCAwIDAgMCAgMCAxIDAgMCAwICAwIDAgMSAwIDAgIDAgMCAwIDEgMFwiPjwvZmVDb2xvck1hdHJpeD48L2ZpbHRlcj48L2RlZnM+PG1hc2sgeD0zOTEgeT0tMjQgd2lkdGg9Mjg4IGhlaWdodD0yODMgbWFza1VuaXRzPXVzZXJTcGFjZU9uVXNlPjxnPjxjaXJjbGUgY3g9MzE2LjUgY3k9MzE2LjUgcj0zMTYuNSBmaWxsPSNmZmY+PC9jaXJjbGU+PC9nPjwvbWFzaz48Zz48bGluZWFyR3JhZGllbnQgeDE9LTY2NC41NiB4Mj0tNjY0LjU2IHkxPTE2My43OSB5Mj0xNjQuNzkgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjI3IDAgMCAyMjcgMTUxNDIxIC0zNzIwNClcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jRkZERjAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjlEMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGNpcmNsZSBjeD01NjUuNSBjeT04OS41IHI9MTEzLjU+PC9jaXJjbGU+PGxpbmVhckdyYWRpZW50IHgxPS02NDQuNSB4Mj0tNjQ1Ljc3IHkxPTM0MiB5Mj0zNDIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMzAgMCAwIDEgMTk3NzAgLTI1MylcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jRkZBNDAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjVFMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGxpbmUgeDE9NDI3IHgyPTM5NyB5MT04OSB5Mj04OSBmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD0xMj48L2xpbmU+PGxpbmVhckdyYWRpZW50IHgxPS02NDEuNTYgeDI9LTY0Mi44MyB5MT0xOTYuMDIgeTI9MTk2LjA3IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDI2LjUgMCAwIDUuNSAxNzQzOSAtMTAyNS41KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNGRkE0MDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0ZGNUUwMCBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48bGluZSB4MT00MzAuNSB4Mj00MDQgeTE9NTUuNSB5Mj01MCBmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD0xMj48L2xpbmU+PGxpbmVhckdyYWRpZW50IHgxPS02NDMuNzMgeDI9LTY0NSB5MT0xODUuODMgeTI9MTg1LjkgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjkgMCAwIDggMTkxMDcgLTEzNjEpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0ZGQTQwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkY1RTAwIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lIHgxPTQzMSB4Mj00MDIgeTE9MTIyIHkyPTEzMCBmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD0xMj48L2xpbmU+PGxpbmVhckdyYWRpZW50IHgxPS02MzguOTQgeDI9LTY0MC4yMiB5MT0xNzcuMDkgeTI9MTc3LjM5IGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDI0IDAgMCAxMyAxNTc4MyAtMjE0NSlcImdyYWRpZW50VW5pdHM9dXNlclNwYWNlT25Vc2U+PHN0b3Agc3RvcC1jb2xvcj0jRkZBNDAwIG9mZnNldD0wPjwvc3RvcD48c3RvcCBzdG9wLWNvbG9yPSNGRjVFMDAgb2Zmc2V0PTE+PC9zdG9wPjwvbGluZWFyR3JhZGllbnQ+PGxpbmUgeDE9NDQyIHgyPTQxOCB5MT0xNTMgeTI9MTY2IGZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTEyPjwvbGluZT48bGluZWFyR3JhZGllbnQgeDE9LTYzMy40MiB4Mj0tNjM0LjcgeTE9MTcyLjQxIHkyPTE3My4zMSBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgyMCAwIDAgMTkgMTMxMzcgLTMwOTYpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0ZGQTQwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkY1RTAwIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lIHgxPTQ2NCB4Mj00NDQgeTE9MTgwIHkyPTE5OSBmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD0xMj48L2xpbmU+PGxpbmVhckdyYWRpZW50IHgxPS02MTkuMDUgeDI9LTYxOS41MiB5MT0xNzAuODIgeTI9MTcxLjgyIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEzLjgzIDAgMCAyMi44NSA5MDUwIC0zNzAzLjQpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0ZGQTQwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkY1RTAwIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lIHgxPTQ5MS40IHgyPTQ3Ny41IHkxPTIwMyB5Mj0yMjUuOSBmaWxsPW5vbmUgc3Ryb2tlLWxpbmVjYXA9cm91bmQgc3Ryb2tlLWxpbmVqb2luPWJldmVsIHN0cm9rZS13aWR0aD0xMj48L2xpbmU+PGxpbmVhckdyYWRpZW50IHgxPS01NzguNSB4Mj0tNTc4LjYzIHkxPTE3MC4zMSB5Mj0xNzEuMzEgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNy41IDAgMCAyNC41IDQ4NjAgLTM5NTMpXCJncmFkaWVudFVuaXRzPXVzZXJTcGFjZU9uVXNlPjxzdG9wIHN0b3AtY29sb3I9I0ZGQTQwMCBvZmZzZXQ9MD48L3N0b3A+PHN0b3Agc3RvcC1jb2xvcj0jRkY1RTAwIG9mZnNldD0xPjwvc3RvcD48L2xpbmVhckdyYWRpZW50PjxsaW5lIHgxPTUyNC41IHgyPTUxNyB5MT0yMTkuNSB5Mj0yNDQgZmlsbD1ub25lIHN0cm9rZS1saW5lY2FwPXJvdW5kIHN0cm9rZS1saW5lam9pbj1iZXZlbCBzdHJva2Utd2lkdGg9MTI+PC9saW5lPjxsaW5lYXJHcmFkaWVudCB4MT02NjYuNSB4Mj02NjYuNSB5MT0xNzAuMzEgeTI9MTcxLjMxIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC41IDAgMCAyNC41IDIzMS41IC0zOTQ0KVwiZ3JhZGllbnRVbml0cz11c2VyU3BhY2VPblVzZT48c3RvcCBzdG9wLWNvbG9yPSNGRkE0MDAgb2Zmc2V0PTA+PC9zdG9wPjxzdG9wIHN0b3AtY29sb3I9I0ZGNUUwMCBvZmZzZXQ9MT48L3N0b3A+PC9saW5lYXJHcmFkaWVudD48bGluZSB4MT01NjQuNSB4Mj01NjUgeTE9MjI4LjUgeTI9MjUzIGZpbGw9bm9uZSBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49YmV2ZWwgc3Ryb2tlLXdpZHRoPTEyPmApO1xuZnVuY3Rpb24gU2VhcmNoKCkge1xuICByZXR1cm4gX3RtcGwkMigpO1xufVxuZnVuY3Rpb24gVHJhc2goKSB7XG4gIHJldHVybiBfdG1wbCQyMigpO1xufVxuZnVuY3Rpb24gQ2hldnJvbkRvd24oKSB7XG4gIHJldHVybiBfdG1wbCQzKCk7XG59XG5mdW5jdGlvbiBBcnJvd1VwKCkge1xuICByZXR1cm4gX3RtcGwkNCgpO1xufVxuZnVuY3Rpb24gQXJyb3dEb3duKCkge1xuICByZXR1cm4gX3RtcGwkNSgpO1xufVxuZnVuY3Rpb24gQXJyb3dMZWZ0KCkge1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDYgPSBfdG1wbCQ1KCk7XG4gICAgX2VsJDYuc3R5bGUuc2V0UHJvcGVydHkoXCJ0cmFuc2Zvcm1cIiwgXCJyb3RhdGUoOTBkZWcpXCIpO1xuICAgIHJldHVybiBfZWwkNjtcbiAgfSkoKTtcbn1cbmZ1bmN0aW9uIEFycm93UmlnaHQoKSB7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNyA9IF90bXBsJDUoKTtcbiAgICBfZWwkNy5zdHlsZS5zZXRQcm9wZXJ0eShcInRyYW5zZm9ybVwiLCBcInJvdGF0ZSgtOTBkZWcpXCIpO1xuICAgIHJldHVybiBfZWwkNztcbiAgfSkoKTtcbn1cbmZ1bmN0aW9uIFN1bigpIHtcbiAgcmV0dXJuIF90bXBsJDYoKTtcbn1cbmZ1bmN0aW9uIE1vb24oKSB7XG4gIHJldHVybiBfdG1wbCQ3KCk7XG59XG5mdW5jdGlvbiBNb25pdG9yKCkge1xuICByZXR1cm4gX3RtcGwkOCgpO1xufVxuZnVuY3Rpb24gV2lmaSgpIHtcbiAgcmV0dXJuIF90bXBsJDkoKTtcbn1cbmZ1bmN0aW9uIE9mZmxpbmUoKSB7XG4gIHJldHVybiBfdG1wbCQxMCgpO1xufVxuZnVuY3Rpb24gU2V0dGluZ3MoKSB7XG4gIHJldHVybiBfdG1wbCQxMSgpO1xufVxuZnVuY3Rpb24gUGlQSWNvbigpIHtcbiAgcmV0dXJuIF90bXBsJDEyKCk7XG59XG5mdW5jdGlvbiBDb3BpZXIoKSB7XG4gIHJldHVybiBfdG1wbCQxMygpO1xufVxuZnVuY3Rpb24gUGVuY2lsKCkge1xuICByZXR1cm4gX3RtcGwkMTQoKTtcbn1cbmZ1bmN0aW9uIENvcGllZENvcGllcihwcm9wcykge1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDE3ID0gX3RtcGwkMTUoKSwgX2VsJDE4ID0gX2VsJDE3LmZpcnN0Q2hpbGQ7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IHNldEF0dHJpYnV0ZShfZWwkMTgsIFwic3Ryb2tlXCIsIHByb3BzLnRoZW1lID09PSBcImRhcmtcIiA/IFwiIzEyQjc2QVwiIDogXCIjMDI3QTQ4XCIpKTtcbiAgICByZXR1cm4gX2VsJDE3O1xuICB9KSgpO1xufVxuZnVuY3Rpb24gRXJyb3JDb3BpZXIoKSB7XG4gIHJldHVybiBfdG1wbCQxNigpO1xufVxuZnVuY3Rpb24gTGlzdCgpIHtcbiAgcmV0dXJuIF90bXBsJDE3KCk7XG59XG5mdW5jdGlvbiBDaGVjayhwcm9wcykge1xuICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gcHJvcHMuY2hlY2tlZDtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHZhciBfZWwkMjEgPSBfdG1wbCQxNSgpLCBfZWwkMjIgPSBfZWwkMjEuZmlyc3RDaGlsZDtcbiAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBzZXRBdHRyaWJ1dGUoX2VsJDIyLCBcInN0cm9rZVwiLCBwcm9wcy50aGVtZSA9PT0gXCJkYXJrXCIgPyBcIiM5QjhBRkJcIiA6IFwiIzY5MzhFRlwiKSk7XG4gICAgICByZXR1cm4gX2VsJDIxO1xuICAgIH1cbiAgfSksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gIXByb3BzLmNoZWNrZWQ7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICB2YXIgX2VsJDIzID0gX3RtcGwkMTgoKSwgX2VsJDI0ID0gX2VsJDIzLmZpcnN0Q2hpbGQ7XG4gICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gc2V0QXR0cmlidXRlKF9lbCQyNCwgXCJzdHJva2VcIiwgcHJvcHMudGhlbWUgPT09IFwiZGFya1wiID8gXCIjOUI4QUZCXCIgOiBcIiM2OTM4RUZcIikpO1xuICAgICAgcmV0dXJuIF9lbCQyMztcbiAgICB9XG4gIH0pXTtcbn1cbmZ1bmN0aW9uIENoZWNrQ2lyY2xlKCkge1xuICByZXR1cm4gX3RtcGwkMTkoKTtcbn1cbmZ1bmN0aW9uIExvYWRpbmdDaXJjbGUoKSB7XG4gIHJldHVybiBfdG1wbCQyMCgpO1xufVxuZnVuY3Rpb24gWENpcmNsZSgpIHtcbiAgcmV0dXJuIF90bXBsJDIxKCk7XG59XG5mdW5jdGlvbiBQYXVzZUNpcmNsZSgpIHtcbiAgcmV0dXJuIF90bXBsJDIyMigpO1xufVxuZnVuY3Rpb24gVGFuc3RhY2tMb2dvKCkge1xuICBjb25zdCBpZCA9IGNyZWF0ZVVuaXF1ZUlkKCk7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkMjkgPSBfdG1wbCQyMygpLCBfZWwkMzAgPSBfZWwkMjkuZmlyc3RDaGlsZCwgX2VsJDMxID0gX2VsJDMwLm5leHRTaWJsaW5nLCBfZWwkMzIgPSBfZWwkMzEubmV4dFNpYmxpbmcsIF9lbCQzMyA9IF9lbCQzMi5maXJzdENoaWxkLCBfZWwkMzQgPSBfZWwkMzIubmV4dFNpYmxpbmcsIF9lbCQzNSA9IF9lbCQzNC5maXJzdENoaWxkLCBfZWwkMzYgPSBfZWwkMzQubmV4dFNpYmxpbmcsIF9lbCQzNyA9IF9lbCQzNi5uZXh0U2libGluZywgX2VsJDM4ID0gX2VsJDM3LmZpcnN0Q2hpbGQsIF9lbCQzOSA9IF9lbCQzNy5uZXh0U2libGluZywgX2VsJDQwID0gX2VsJDM5LmZpcnN0Q2hpbGQsIF9lbCQ0MSA9IF9lbCQzOS5uZXh0U2libGluZywgX2VsJDQyID0gX2VsJDQxLm5leHRTaWJsaW5nLCBfZWwkNDMgPSBfZWwkNDIuZmlyc3RDaGlsZCwgX2VsJDQ0ID0gX2VsJDQyLm5leHRTaWJsaW5nLCBfZWwkNDUgPSBfZWwkNDQuZmlyc3RDaGlsZCwgX2VsJDQ2ID0gX2VsJDQ0Lm5leHRTaWJsaW5nLCBfZWwkNDcgPSBfZWwkNDYubmV4dFNpYmxpbmcsIF9lbCQ0OCA9IF9lbCQ0Ny5maXJzdENoaWxkLCBfZWwkNDkgPSBfZWwkNDcubmV4dFNpYmxpbmcsIF9lbCQ1MCA9IF9lbCQ0OS5maXJzdENoaWxkLCBfZWwkNTEgPSBfZWwkNDkubmV4dFNpYmxpbmcsIF9lbCQ1MiA9IF9lbCQ1MS5uZXh0U2libGluZywgX2VsJDUzID0gX2VsJDUyLmZpcnN0Q2hpbGQsIF9lbCQ1NCA9IF9lbCQ1Mi5uZXh0U2libGluZywgX2VsJDU1ID0gX2VsJDU0LmZpcnN0Q2hpbGQsIF9lbCQ1NiA9IF9lbCQ1NC5uZXh0U2libGluZywgX2VsJDU3ID0gX2VsJDU2Lm5leHRTaWJsaW5nLCBfZWwkNTggPSBfZWwkNTcuZmlyc3RDaGlsZCwgX2VsJDU5ID0gX2VsJDU3Lm5leHRTaWJsaW5nLCBfZWwkNjAgPSBfZWwkNTkuZmlyc3RDaGlsZCwgX2VsJDYxID0gX2VsJDU5Lm5leHRTaWJsaW5nLCBfZWwkNjIgPSBfZWwkNjEubmV4dFNpYmxpbmcsIF9lbCQ2MyA9IF9lbCQ2Mi5maXJzdENoaWxkLCBfZWwkNjQgPSBfZWwkNjIubmV4dFNpYmxpbmcsIF9lbCQ2NSA9IF9lbCQ2NC5maXJzdENoaWxkLCBfZWwkNjYgPSBfZWwkNjQubmV4dFNpYmxpbmcsIF9lbCQ2NyA9IF9lbCQ2Ni5maXJzdENoaWxkLCBfZWwkNjggPSBfZWwkNjcubmV4dFNpYmxpbmcsIF9lbCQ2OSA9IF9lbCQ2OC5uZXh0U2libGluZywgX2VsJDcwID0gX2VsJDY5Lm5leHRTaWJsaW5nLCBfZWwkNzEgPSBfZWwkNzAubmV4dFNpYmxpbmcsIF9lbCQ3MiA9IF9lbCQ2Ni5uZXh0U2libGluZywgX2VsJDczID0gX2VsJDcyLmZpcnN0Q2hpbGQsIF9lbCQ3NCA9IF9lbCQ3Mi5uZXh0U2libGluZywgX2VsJDc1ID0gX2VsJDc0LmZpcnN0Q2hpbGQsIF9lbCQ3NiA9IF9lbCQ3NC5uZXh0U2libGluZywgX2VsJDc3ID0gX2VsJDc2LmZpcnN0Q2hpbGQsIF9lbCQ3OCA9IF9lbCQ3Ny5uZXh0U2libGluZywgX2VsJDc5ID0gX2VsJDc4Lm5leHRTaWJsaW5nLCBfZWwkODAgPSBfZWwkNzkuZmlyc3RDaGlsZCwgX2VsJDgxID0gX2VsJDgwLm5leHRTaWJsaW5nLCBfZWwkODIgPSBfZWwkODEubmV4dFNpYmxpbmcsIF9lbCQ4MyA9IF9lbCQ4Mi5uZXh0U2libGluZywgX2VsJDg0ID0gX2VsJDgzLm5leHRTaWJsaW5nLCBfZWwkODUgPSBfZWwkODQubmV4dFNpYmxpbmcsIF9lbCQ4NiA9IF9lbCQ4NS5uZXh0U2libGluZywgX2VsJDg3ID0gX2VsJDg2Lm5leHRTaWJsaW5nLCBfZWwkODggPSBfZWwkODcubmV4dFNpYmxpbmcsIF9lbCQ4OSA9IF9lbCQ4OC5uZXh0U2libGluZywgX2VsJDkwID0gX2VsJDg5Lm5leHRTaWJsaW5nLCBfZWwkOTEgPSBfZWwkOTAubmV4dFNpYmxpbmcsIF9lbCQ5MiA9IF9lbCQ3Ni5uZXh0U2libGluZywgX2VsJDkzID0gX2VsJDkyLmZpcnN0Q2hpbGQsIF9lbCQ5NCA9IF9lbCQ5Mi5uZXh0U2libGluZywgX2VsJDk1ID0gX2VsJDk0LmZpcnN0Q2hpbGQsIF9lbCQ5NiA9IF9lbCQ5NC5uZXh0U2libGluZywgX2VsJDk3ID0gX2VsJDk2LmZpcnN0Q2hpbGQsIF9lbCQ5OCA9IF9lbCQ5Ny5uZXh0U2libGluZywgX2VsJDk5ID0gX2VsJDk2Lm5leHRTaWJsaW5nLCBfZWwkMTAwID0gX2VsJDk5LmZpcnN0Q2hpbGQsIF9lbCQxMDEgPSBfZWwkOTkubmV4dFNpYmxpbmcsIF9lbCQxMDIgPSBfZWwkMTAxLmZpcnN0Q2hpbGQsIF9lbCQxMDMgPSBfZWwkMTAxLm5leHRTaWJsaW5nLCBfZWwkMTA0ID0gX2VsJDEwMy5maXJzdENoaWxkLCBfZWwkMTA1ID0gX2VsJDEwNC5uZXh0U2libGluZywgX2VsJDEwNiA9IF9lbCQxMDUubmV4dFNpYmxpbmcsIF9lbCQxMDcgPSBfZWwkMTA2Lm5leHRTaWJsaW5nLCBfZWwkMTA4ID0gX2VsJDEwNy5uZXh0U2libGluZywgX2VsJDEwOSA9IF9lbCQxMDgubmV4dFNpYmxpbmcsIF9lbCQxMTAgPSBfZWwkMTA5Lm5leHRTaWJsaW5nLCBfZWwkMTExID0gX2VsJDExMC5uZXh0U2libGluZywgX2VsJDExMiA9IF9lbCQxMTEubmV4dFNpYmxpbmcsIF9lbCQxMTMgPSBfZWwkMTEyLm5leHRTaWJsaW5nLCBfZWwkMTE0ID0gX2VsJDExMy5uZXh0U2libGluZywgX2VsJDExNSA9IF9lbCQxMTQubmV4dFNpYmxpbmcsIF9lbCQxMTYgPSBfZWwkMTE1Lm5leHRTaWJsaW5nLCBfZWwkMTE3ID0gX2VsJDExNi5uZXh0U2libGluZywgX2VsJDExOCA9IF9lbCQxMTcubmV4dFNpYmxpbmcsIF9lbCQxMTkgPSBfZWwkMTE4Lm5leHRTaWJsaW5nLCBfZWwkMTIwID0gX2VsJDExOS5uZXh0U2libGluZywgX2VsJDEyMSA9IF9lbCQxMjAubmV4dFNpYmxpbmc7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzMCwgXCJpZFwiLCBgYS0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMzEsIFwiZmlsbFwiLCBgdXJsKCNhLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMzMsIFwiaWRcIiwgYGFtLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzNCwgXCJpZFwiLCBgYi0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMzUsIFwiZmlsdGVyXCIsIGB1cmwoI2FtLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMzYsIFwibWFza1wiLCBgdXJsKCNiLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMzgsIFwiaWRcIiwgYGFoLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQzOSwgXCJpZFwiLCBgay0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNDAsIFwiZmlsdGVyXCIsIGB1cmwoI2FoLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNDEsIFwibWFza1wiLCBgdXJsKCNrLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNDMsIFwiaWRcIiwgYGFlLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0NCwgXCJpZFwiLCBgai0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNDUsIFwiZmlsdGVyXCIsIGB1cmwoI2FlLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNDYsIFwibWFza1wiLCBgdXJsKCNqLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNDgsIFwiaWRcIiwgYGFpLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ0OSwgXCJpZFwiLCBgaS0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNTAsIFwiZmlsdGVyXCIsIGB1cmwoI2FpLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNTEsIFwibWFza1wiLCBgdXJsKCNpLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNTMsIFwiaWRcIiwgYGFqLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1NCwgXCJpZFwiLCBgaC0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNTUsIFwiZmlsdGVyXCIsIGB1cmwoI2FqLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNTYsIFwibWFza1wiLCBgdXJsKCNoLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNTgsIFwiaWRcIiwgYGFnLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ1OSwgXCJpZFwiLCBgZy0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNjAsIFwiZmlsdGVyXCIsIGB1cmwoI2FnLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNjEsIFwibWFza1wiLCBgdXJsKCNnLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNjMsIFwiaWRcIiwgYGFmLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ2NCwgXCJpZFwiLCBgZi0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNjUsIFwiZmlsdGVyXCIsIGB1cmwoI2FmLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNjYsIFwibWFza1wiLCBgdXJsKCNmLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNzAsIFwiaWRcIiwgYG0tJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDcxLCBcImZpbGxcIiwgYHVybCgjbS0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDczLCBcImlkXCIsIGBhay0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkNzQsIFwiaWRcIiwgYGUtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDc1LCBcImZpbHRlclwiLCBgdXJsKCNhay0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDc2LCBcIm1hc2tcIiwgYHVybCgjZS0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDc3LCBcImlkXCIsIGBuLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ3OCwgXCJmaWxsXCIsIGB1cmwoI24tJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ4MCwgXCJpZFwiLCBgci0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkODEsIFwiZmlsbFwiLCBgdXJsKCNyLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkODIsIFwiaWRcIiwgYHMtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDgzLCBcImZpbGxcIiwgYHVybCgjcy0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDg0LCBcImlkXCIsIGBxLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ4NSwgXCJmaWxsXCIsIGB1cmwoI3EtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ4NiwgXCJpZFwiLCBgcC0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkODcsIFwiZmlsbFwiLCBgdXJsKCNwLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkODgsIFwiaWRcIiwgYG8tJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDg5LCBcImZpbGxcIiwgYHVybCgjby0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDkwLCBcImlkXCIsIGBsLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ5MSwgXCJmaWxsXCIsIGB1cmwoI2wtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ5MywgXCJpZFwiLCBgYWwtJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDk0LCBcImlkXCIsIGBkLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ5NSwgXCJmaWx0ZXJcIiwgYHVybCgjYWwtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ5NiwgXCJtYXNrXCIsIGB1cmwoI2QtJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQ5NywgXCJpZFwiLCBgdS0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkOTgsIFwiZmlsbFwiLCBgdXJsKCN1LSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTAwLCBcImlkXCIsIGBhZC0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTAxLCBcImlkXCIsIGBjLSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMDIsIFwiZmlsdGVyXCIsIGB1cmwoI2FkLSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTAzLCBcIm1hc2tcIiwgYHVybCgjYy0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDEwNCwgXCJpZFwiLCBgdC0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTA1LCBcImZpbGxcIiwgYHVybCgjdC0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDEwNiwgXCJpZFwiLCBgdi0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTA3LCBcInN0cm9rZVwiLCBgdXJsKCN2LSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTA4LCBcImlkXCIsIGBhYS0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTA5LCBcInN0cm9rZVwiLCBgdXJsKCNhYS0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDExMCwgXCJpZFwiLCBgdy0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTExLCBcInN0cm9rZVwiLCBgdXJsKCN3LSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTEyLCBcImlkXCIsIGBhYy0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTEzLCBcInN0cm9rZVwiLCBgdXJsKCNhYy0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDExNCwgXCJpZFwiLCBgYWItJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDExNSwgXCJzdHJva2VcIiwgYHVybCgjYWItJHtpZH0pYCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMTYsIFwiaWRcIiwgYHktJHtpZH1gKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDExNywgXCJzdHJva2VcIiwgYHVybCgjeS0ke2lkfSlgKTtcbiAgICBzZXRBdHRyaWJ1dGUoX2VsJDExOCwgXCJpZFwiLCBgeC0ke2lkfWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTE5LCBcInN0cm9rZVwiLCBgdXJsKCN4LSR7aWR9KWApO1xuICAgIHNldEF0dHJpYnV0ZShfZWwkMTIwLCBcImlkXCIsIGB6LSR7aWR9YCk7XG4gICAgc2V0QXR0cmlidXRlKF9lbCQxMjEsIFwic3Ryb2tlXCIsIGB1cmwoI3otJHtpZH0pYCk7XG4gICAgcmV0dXJuIF9lbCQyOTtcbiAgfSkoKTtcbn1cblxuLy8gc3JjL0V4cGxvcmVyLnRzeFxudmFyIF90bXBsJDI0ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj48c3ZnIHdpZHRoPTE2IGhlaWdodD0xNiB2aWV3Qm94PVwiMCAwIDE2IDE2XCJmaWxsPW5vbmUgeG1sbnM9aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmc+PHBhdGggZD1cIk02IDEyTDEwIDhMNiA0XCJzdHJva2Utd2lkdGg9MiBzdHJva2UtbGluZWNhcD1yb3VuZCBzdHJva2UtbGluZWpvaW49cm91bmQ+YCk7XG52YXIgX3RtcGwkMjUgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxidXR0b24gdGl0bGU9XCJDb3B5IG9iamVjdCB0byBjbGlwYm9hcmRcIj5gKTtcbnZhciBfdG1wbCQzMiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbiB0aXRsZT1cIlJlbW92ZSBhbGwgaXRlbXNcImFyaWEtbGFiZWw9XCJSZW1vdmUgYWxsIGl0ZW1zXCI+YCk7XG52YXIgX3RtcGwkNDIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxidXR0b24gdGl0bGU9XCJEZWxldGUgaXRlbVwiYXJpYS1sYWJlbD1cIkRlbGV0ZSBpdGVtXCI+YCk7XG52YXIgX3RtcGwkNTIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxidXR0b24gdGl0bGU9XCJUb2dnbGUgdmFsdWVcImFyaWEtbGFiZWw9XCJUb2dnbGUgdmFsdWVcIj5gKTtcbnZhciBfdG1wbCQ2MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbiB0aXRsZT1cIkJ1bGsgRWRpdCBEYXRhXCJhcmlhLWxhYmVsPVwiQnVsayBFZGl0IERhdGFcIj5gKTtcbnZhciBfdG1wbCQ3MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj5gKTtcbnZhciBfdG1wbCQ4MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj48YnV0dG9uPiA8c3Bhbj48L3NwYW4+IDxzcGFuPiBgKTtcbnZhciBfdG1wbCQ5MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGlucHV0PmApO1xudmFyIF90bXBsJDEwMiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+YCk7XG52YXIgX3RtcGwkMTEyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PjxzcGFuPjpgKTtcbnZhciBfdG1wbCQxMjIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PGRpdj48YnV0dG9uPiBbPCE+Li4uPCE+XWApO1xuZnVuY3Rpb24gY2h1bmtBcnJheShhcnJheSwgc2l6ZTMpIHtcbiAgbGV0IGkyID0gMDtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIHdoaWxlIChpMiA8IGFycmF5Lmxlbmd0aCkge1xuICAgIHJlc3VsdC5wdXNoKGFycmF5LnNsaWNlKGkyLCBpMiArIHNpemUzKSk7XG4gICAgaTIgPSBpMiArIHNpemUzO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG52YXIgRXhwYW5kZXIgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMoY3NzKSA6IGxpZ2h0U3R5bGVzKGNzcyk7XG4gIH0pO1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJCA9IF90bXBsJDI0KCk7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkLCBjbHN4KHN0eWxlcygpLmV4cGFuZGVyLCBjc3NgXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoJHtwcm9wcy5leHBhbmRlZCA/IDkwIDogMH1kZWcpO1xuICAgICAgICBgLCBwcm9wcy5leHBhbmRlZCAmJiBjc3NgXG4gICAgICAgICAgICAmIHN2ZyB7XG4gICAgICAgICAgICAgIHRvcDogLTFweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBgKSkpO1xuICAgIHJldHVybiBfZWwkO1xuICB9KSgpO1xufTtcbnZhciBDb3B5QnV0dG9uID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzKGNzcykgOiBsaWdodFN0eWxlcyhjc3MpO1xuICB9KTtcbiAgY29uc3QgW2NvcHlTdGF0ZSwgc2V0Q29weVN0YXRlXSA9IGNyZWF0ZVNpZ25hbChcIk5vQ29weVwiKTtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQyID0gX3RtcGwkMjUoKTtcbiAgICBhZGRFdmVudExpc3RlbmVyKF9lbCQyLCBcImNsaWNrXCIsIGNvcHlTdGF0ZSgpID09PSBcIk5vQ29weVwiID8gKCkgPT4ge1xuICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoc3RyaW5naWZ5KHByb3BzLnZhbHVlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldENvcHlTdGF0ZShcIlN1Y2Nlc3NDb3B5XCIpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRDb3B5U3RhdGUoXCJOb0NvcHlcIik7XG4gICAgICAgIH0sIDE1MDApO1xuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICBzZXRDb3B5U3RhdGUoXCJFcnJvckNvcHlcIik7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldENvcHlTdGF0ZShcIk5vQ29weVwiKTtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgICB9KTtcbiAgICB9IDogdm9pZCAwLCB0cnVlKTtcbiAgICBpbnNlcnQoX2VsJDIsIGNyZWF0ZUNvbXBvbmVudChTd2l0Y2gsIHtcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQoTWF0Y2gsIHtcbiAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3B5U3RhdGUoKSA9PT0gXCJOb0NvcHlcIjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoQ29waWVyLCB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KE1hdGNoLCB7XG4gICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY29weVN0YXRlKCkgPT09IFwiU3VjY2Vzc0NvcHlcIjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoQ29waWVkQ29waWVyLCB7XG4gICAgICAgICAgICAgIGdldCB0aGVtZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhlbWUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KE1hdGNoLCB7XG4gICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY29weVN0YXRlKCkgPT09IFwiRXJyb3JDb3B5XCI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KEVycm9yQ29waWVyLCB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KV07XG4gICAgICB9XG4gICAgfSkpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICB2YXIgX3YkID0gc3R5bGVzKCkuYWN0aW9uQnV0dG9uLCBfdiQyID0gYCR7Y29weVN0YXRlKCkgPT09IFwiTm9Db3B5XCIgPyBcIkNvcHkgb2JqZWN0IHRvIGNsaXBib2FyZFwiIDogY29weVN0YXRlKCkgPT09IFwiU3VjY2Vzc0NvcHlcIiA/IFwiT2JqZWN0IGNvcGllZCB0byBjbGlwYm9hcmRcIiA6IFwiRXJyb3IgY29weWluZyBvYmplY3QgdG8gY2xpcGJvYXJkXCJ9YDtcbiAgICAgIF92JCAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQyLCBfcCQuZSA9IF92JCk7XG4gICAgICBfdiQyICE9PSBfcCQudCAmJiBzZXRBdHRyaWJ1dGUoX2VsJDIsIFwiYXJpYS1sYWJlbFwiLCBfcCQudCA9IF92JDIpO1xuICAgICAgcmV0dXJuIF9wJDtcbiAgICB9LCB7XG4gICAgICBlOiB2b2lkIDAsXG4gICAgICB0OiB2b2lkIDBcbiAgICB9KTtcbiAgICByZXR1cm4gX2VsJDI7XG4gIH0pKCk7XG59O1xudmFyIENsZWFyQXJyYXlCdXR0b24gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMoY3NzKSA6IGxpZ2h0U3R5bGVzKGNzcyk7XG4gIH0pO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuY2xpZW50O1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDMgPSBfdG1wbCQzMigpO1xuICAgIF9lbCQzLiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBvbGREYXRhID0gcHJvcHMuYWN0aXZlUXVlcnkuc3RhdGUuZGF0YTtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSB1cGRhdGVOZXN0ZWREYXRhQnlQYXRoKG9sZERhdGEsIHByb3BzLmRhdGFQYXRoLCBbXSk7XG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyeURhdGEocHJvcHMuYWN0aXZlUXVlcnkucXVlcnlLZXksIG5ld0RhdGEpO1xuICAgIH07XG4gICAgaW5zZXJ0KF9lbCQzLCBjcmVhdGVDb21wb25lbnQoTGlzdCwge30pKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQzLCBzdHlsZXMoKS5hY3Rpb25CdXR0b24pKTtcbiAgICByZXR1cm4gX2VsJDM7XG4gIH0pKCk7XG59O1xudmFyIERlbGV0ZUl0ZW1CdXR0b24gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMoY3NzKSA6IGxpZ2h0U3R5bGVzKGNzcyk7XG4gIH0pO1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuY2xpZW50O1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDQgPSBfdG1wbCQ0MigpO1xuICAgIF9lbCQ0LiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBvbGREYXRhID0gcHJvcHMuYWN0aXZlUXVlcnkuc3RhdGUuZGF0YTtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBkZWxldGVOZXN0ZWREYXRhQnlQYXRoKG9sZERhdGEsIHByb3BzLmRhdGFQYXRoKTtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShwcm9wcy5hY3RpdmVRdWVyeS5xdWVyeUtleSwgbmV3RGF0YSk7XG4gICAgfTtcbiAgICBpbnNlcnQoX2VsJDQsIGNyZWF0ZUNvbXBvbmVudChUcmFzaCwge30pKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQ0LCBjbHN4KHN0eWxlcygpLmFjdGlvbkJ1dHRvbikpKTtcbiAgICByZXR1cm4gX2VsJDQ7XG4gIH0pKCk7XG59O1xudmFyIFRvZ2dsZVZhbHVlQnV0dG9uID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzKGNzcykgOiBsaWdodFN0eWxlcyhjc3MpO1xuICB9KTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLmNsaWVudDtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQ1ID0gX3RtcGwkNTIoKTtcbiAgICBfZWwkNS4kJGNsaWNrID0gKCkgPT4ge1xuICAgICAgY29uc3Qgb2xkRGF0YSA9IHByb3BzLmFjdGl2ZVF1ZXJ5LnN0YXRlLmRhdGE7XG4gICAgICBjb25zdCBuZXdEYXRhID0gdXBkYXRlTmVzdGVkRGF0YUJ5UGF0aChvbGREYXRhLCBwcm9wcy5kYXRhUGF0aCwgIXByb3BzLnZhbHVlKTtcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShwcm9wcy5hY3RpdmVRdWVyeS5xdWVyeUtleSwgbmV3RGF0YSk7XG4gICAgfTtcbiAgICBpbnNlcnQoX2VsJDUsIGNyZWF0ZUNvbXBvbmVudChDaGVjaywge1xuICAgICAgZ2V0IHRoZW1lKCkge1xuICAgICAgICByZXR1cm4gdGhlbWUoKTtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLnZhbHVlO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQ1LCBjbHN4KHN0eWxlcygpLmFjdGlvbkJ1dHRvbiwgY3NzYFxuICAgICAgICAgIHdpZHRoOiAke3Rva2Vucy5zaXplWzMuNV19O1xuICAgICAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVszLjVdfTtcbiAgICAgICAgYCkpKTtcbiAgICByZXR1cm4gX2VsJDU7XG4gIH0pKCk7XG59O1xuZnVuY3Rpb24gaXNJdGVyYWJsZSh4KSB7XG4gIHJldHVybiBTeW1ib2wuaXRlcmF0b3IgaW4geDtcbn1cbmZ1bmN0aW9uIEV4cGxvcmVyKHByb3BzKSB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzKGNzcykgOiBsaWdodFN0eWxlcyhjc3MpO1xuICB9KTtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLmNsaWVudDtcbiAgY29uc3QgW2V4cGFuZGVkLCBzZXRFeHBhbmRlZF0gPSBjcmVhdGVTaWduYWwoKHByb3BzLmRlZmF1bHRFeHBhbmRlZCB8fCBbXSkuaW5jbHVkZXMocHJvcHMubGFiZWwpKTtcbiAgY29uc3QgdG9nZ2xlRXhwYW5kZWQgPSAoKSA9PiBzZXRFeHBhbmRlZCgob2xkKSA9PiAhb2xkKTtcbiAgY29uc3QgW2V4cGFuZGVkUGFnZXMsIHNldEV4cGFuZGVkUGFnZXNdID0gY3JlYXRlU2lnbmFsKFtdKTtcbiAgY29uc3Qgc3ViRW50cmllcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BzLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHByb3BzLnZhbHVlLm1hcCgoZCwgaTIpID0+ICh7XG4gICAgICAgIGxhYmVsOiBpMi50b1N0cmluZygpLFxuICAgICAgICB2YWx1ZTogZFxuICAgICAgfSkpO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHByb3BzLnZhbHVlID09PSBcIm9iamVjdFwiICYmIGlzSXRlcmFibGUocHJvcHMudmFsdWUpICYmIHR5cGVvZiBwcm9wcy52YWx1ZVtTeW1ib2wuaXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGlmIChwcm9wcy52YWx1ZSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShwcm9wcy52YWx1ZSwgKFtrZXksIHZhbF0pID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsXG4gICAgICAgIH0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHByb3BzLnZhbHVlLCAodmFsLCBpMikgPT4gKHtcbiAgICAgICAgbGFiZWw6IGkyLnRvU3RyaW5nKCksXG4gICAgICAgIHZhbHVlOiB2YWxcbiAgICAgIH0pKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy52YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBwcm9wcy52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BzLnZhbHVlKS5tYXAoKFtrZXksIHZhbF0pID0+ICh7XG4gICAgICAgIGxhYmVsOiBrZXksXG4gICAgICAgIHZhbHVlOiB2YWxcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9KTtcbiAgY29uc3QgdHlwZSA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BzLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIFwiYXJyYXlcIjtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBwcm9wcy52YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiBpc0l0ZXJhYmxlKHByb3BzLnZhbHVlKSAmJiB0eXBlb2YgcHJvcHMudmFsdWVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gXCJJdGVyYWJsZVwiO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLnZhbHVlID09PSBcIm9iamVjdFwiICYmIHByb3BzLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJvYmplY3RcIjtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiBwcm9wcy52YWx1ZTtcbiAgfSk7XG4gIGNvbnN0IHN1YkVudHJ5UGFnZXMgPSBjcmVhdGVNZW1vKCgpID0+IGNodW5rQXJyYXkoc3ViRW50cmllcygpLCAxMDApKTtcbiAgY29uc3QgY3VycmVudERhdGFQYXRoID0gcHJvcHMuZGF0YVBhdGggPz8gW107XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNiA9IF90bXBsJDcyKCk7XG4gICAgaW5zZXJ0KF9lbCQ2LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBzdWJFbnRyeVBhZ2VzKCkubGVuZ3RoO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIFsoKCkgPT4ge1xuICAgICAgICAgIHZhciBfZWwkNyA9IF90bXBsJDgyKCksIF9lbCQ4ID0gX2VsJDcuZmlyc3RDaGlsZCwgX2VsJDkgPSBfZWwkOC5maXJzdENoaWxkLCBfZWwkMTAgPSBfZWwkOS5uZXh0U2libGluZywgX2VsJDExID0gX2VsJDEwLm5leHRTaWJsaW5nLCBfZWwkMTIgPSBfZWwkMTEubmV4dFNpYmxpbmcsIF9lbCQxMyA9IF9lbCQxMi5maXJzdENoaWxkO1xuICAgICAgICAgIF9lbCQ4LiQkY2xpY2sgPSAoKSA9PiB0b2dnbGVFeHBhbmRlZCgpO1xuICAgICAgICAgIGluc2VydChfZWwkOCwgY3JlYXRlQ29tcG9uZW50KEV4cGFuZGVyLCB7XG4gICAgICAgICAgICBnZXQgZXhwYW5kZWQoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBleHBhbmRlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLCBfZWwkOSk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQxMCwgKCkgPT4gcHJvcHMubGFiZWwpO1xuICAgICAgICAgIGluc2VydChfZWwkMTIsICgpID0+IFN0cmluZyh0eXBlKCkpLnRvTG93ZXJDYXNlKCkgPT09IFwiaXRlcmFibGVcIiA/IFwiKEl0ZXJhYmxlKSBcIiA6IFwiXCIsIF9lbCQxMyk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQxMiwgKCkgPT4gc3ViRW50cmllcygpLmxlbmd0aCwgX2VsJDEzKTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDEyLCAoKSA9PiBzdWJFbnRyaWVzKCkubGVuZ3RoID4gMSA/IGBpdGVtc2AgOiBgaXRlbWAsIG51bGwpO1xuICAgICAgICAgIGluc2VydChfZWwkNywgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZWRpdGFibGU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICB2YXIgX2VsJDE0ID0gX3RtcGwkNzIoKTtcbiAgICAgICAgICAgICAgaW5zZXJ0KF9lbCQxNCwgY3JlYXRlQ29tcG9uZW50KENvcHlCdXR0b24sIHtcbiAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgICAgICAgIGluc2VydChfZWwkMTQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuaXRlbXNEZWxldGFibGUgJiYgcHJvcHMuYWN0aXZlUXVlcnkgIT09IHZvaWQgMDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRGVsZXRlSXRlbUJ1dHRvbiwge1xuICAgICAgICAgICAgICAgICAgICBnZXQgYWN0aXZlUXVlcnkoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmFjdGl2ZVF1ZXJ5O1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkYXRhUGF0aDogY3VycmVudERhdGFQYXRoXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLCBudWxsKTtcbiAgICAgICAgICAgICAgaW5zZXJ0KF9lbCQxNCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKCkgPT09IFwiYXJyYXlcIiAmJiBwcm9wcy5hY3RpdmVRdWVyeSAhPT0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChDbGVhckFycmF5QnV0dG9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGdldCBhY3RpdmVRdWVyeSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZlUXVlcnk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRhdGFQYXRoOiBjdXJyZW50RGF0YVBhdGhcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksIG51bGwpO1xuICAgICAgICAgICAgICBpbnNlcnQoX2VsJDE0LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISEhIXByb3BzLm9uRWRpdCkoKSAmJiAhc2VyaWFsaXplKHByb3BzLnZhbHVlKS5tZXRhO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9lbCQxNSA9IF90bXBsJDYyKCk7XG4gICAgICAgICAgICAgICAgICBfZWwkMTUuJCRjbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMub25FZGl0Py4oKTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDE1LCBjcmVhdGVDb21wb25lbnQoUGVuY2lsLCB7fSkpO1xuICAgICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMTUsIHN0eWxlcygpLmFjdGlvbkJ1dHRvbikpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lbCQxNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLCBudWxsKTtcbiAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMTQsIHN0eWxlcygpLmFjdGlvbnMpKTtcbiAgICAgICAgICAgICAgcmV0dXJuIF9lbCQxNDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgICAgIHZhciBfdiQzID0gc3R5bGVzKCkuZXhwYW5kZXJCdXR0b25Db250YWluZXIsIF92JDQgPSBzdHlsZXMoKS5leHBhbmRlckJ1dHRvbiwgX3YkNSA9IHN0eWxlcygpLmluZm87XG4gICAgICAgICAgICBfdiQzICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDcsIF9wJC5lID0gX3YkMyk7XG4gICAgICAgICAgICBfdiQ0ICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDgsIF9wJC50ID0gX3YkNCk7XG4gICAgICAgICAgICBfdiQ1ICE9PSBfcCQuYSAmJiBjbGFzc05hbWUoX2VsJDEyLCBfcCQuYSA9IF92JDUpO1xuICAgICAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgICAgICB0OiB2b2lkIDAsXG4gICAgICAgICAgICBhOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX2VsJDc7XG4gICAgICAgIH0pKCksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhwYW5kZWQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBbY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1YkVudHJ5UGFnZXMoKS5sZW5ndGggPT09IDE7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2VsJDE2ID0gX3RtcGwkNzIoKTtcbiAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDE2LCBjcmVhdGVDb21wb25lbnQoS2V5LCB7XG4gICAgICAgICAgICAgICAgICBnZXQgZWFjaCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YkVudHJpZXMoKTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBieTogKGl0ZW0pID0+IGl0ZW0ubGFiZWwsXG4gICAgICAgICAgICAgICAgICBjaGlsZHJlbjogKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoRXhwbG9yZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgZGVmYXVsdEV4cGFuZGVkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmRlZmF1bHRFeHBhbmRlZDtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBsYWJlbCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeSgpLmxhYmVsO1xuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5KCkudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgZWRpdGFibGUoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZWRpdGFibGU7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgZGF0YVBhdGgoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmN1cnJlbnREYXRhUGF0aCwgZW50cnkoKS5sYWJlbF07XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgYWN0aXZlUXVlcnkoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZlUXVlcnk7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgaXRlbXNEZWxldGFibGUoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSgpID09PSBcImFycmF5XCIgfHwgdHlwZSgpID09PSBcIkl0ZXJhYmxlXCIgfHwgdHlwZSgpID09PSBcIm9iamVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDE2LCBzdHlsZXMoKS5zdWJFbnRyeSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfZWwkMTY7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3ViRW50cnlQYWdlcygpLmxlbmd0aCA+IDE7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2VsJDE3ID0gX3RtcGwkNzIoKTtcbiAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDE3LCBjcmVhdGVDb21wb25lbnQoSW5kZXgsIHtcbiAgICAgICAgICAgICAgICAgIGdldCBlYWNoKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ViRW50cnlQYWdlcygpO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiAoZW50cmllczIsIGluZGV4KSA9PiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2VsJDIzID0gX3RtcGwkMTIyKCksIF9lbCQyNCA9IF9lbCQyMy5maXJzdENoaWxkLCBfZWwkMjUgPSBfZWwkMjQuZmlyc3RDaGlsZCwgX2VsJDI2ID0gX2VsJDI1LmZpcnN0Q2hpbGQsIF9lbCQzMCA9IF9lbCQyNi5uZXh0U2libGluZywgX2VsJDI4ID0gX2VsJDMwLm5leHRTaWJsaW5nLCBfZWwkMzEgPSBfZWwkMjgubmV4dFNpYmxpbmc7IF9lbCQzMS5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgX2VsJDI1LiQkY2xpY2sgPSAoKSA9PiBzZXRFeHBhbmRlZFBhZ2VzKChvbGQpID0+IG9sZC5pbmNsdWRlcyhpbmRleCkgPyBvbGQuZmlsdGVyKChkKSA9PiBkICE9PSBpbmRleCkgOiBbLi4ub2xkLCBpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDI1LCBjcmVhdGVDb21wb25lbnQoRXhwYW5kZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgZXhwYW5kZWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwYW5kZWRQYWdlcygpLmluY2x1ZGVzKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLCBfZWwkMjYpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDI1LCBpbmRleCAqIDEwMCwgX2VsJDMwKTtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0KF9lbCQyNSwgaW5kZXggKiAxMDAgKyAxMDAgLSAxLCBfZWwkMzEpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDI0LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGFuZGVkUGFnZXMoKS5pbmNsdWRlcyhpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2VsJDMyID0gX3RtcGwkNzIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydChfZWwkMzIsIGNyZWF0ZUNvbXBvbmVudChLZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGVhY2goKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJpZXMyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5OiAoZW50cnkpID0+IGVudHJ5LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogKGVudHJ5KSA9PiBjcmVhdGVDb21wb25lbnQoRXhwbG9yZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgZGVmYXVsdEV4cGFuZGVkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmRlZmF1bHRFeHBhbmRlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBsYWJlbCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeSgpLmxhYmVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5KCkudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgZWRpdGFibGUoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZWRpdGFibGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgZGF0YVBhdGgoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmN1cnJlbnREYXRhUGF0aCwgZW50cnkoKS5sYWJlbF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgYWN0aXZlUXVlcnkoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuYWN0aXZlUXVlcnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMzIsIHN0eWxlcygpLnN1YkVudHJ5KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2VsJDMyO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF9wJCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciBfdiQxMCA9IHN0eWxlcygpLmVudHJ5LCBfdiQxMSA9IHN0eWxlcygpLmV4cGFuZGVyQnV0dG9uO1xuICAgICAgICAgICAgICAgICAgICAgIF92JDEwICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDI0LCBfcCQuZSA9IF92JDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICBfdiQxMSAhPT0gX3AkLnQgJiYgY2xhc3NOYW1lKF9lbCQyNSwgX3AkLnQgPSBfdiQxMSk7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICAgIGU6IHZvaWQgMCxcbiAgICAgICAgICAgICAgICAgICAgICB0OiB2b2lkIDBcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfZWwkMjM7XG4gICAgICAgICAgICAgICAgICB9KSgpXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDE3LCBzdHlsZXMoKS5zdWJFbnRyeSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfZWwkMTc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQ2LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBzdWJFbnRyeVBhZ2VzKCkubGVuZ3RoID09PSAwO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgdmFyIF9lbCQxOCA9IF90bXBsJDExMigpLCBfZWwkMTkgPSBfZWwkMTguZmlyc3RDaGlsZCwgX2VsJDIwID0gX2VsJDE5LmZpcnN0Q2hpbGQ7XG4gICAgICAgIGluc2VydChfZWwkMTksICgpID0+IHByb3BzLmxhYmVsLCBfZWwkMjApO1xuICAgICAgICBpbnNlcnQoX2VsJDE4LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISEocHJvcHMuZWRpdGFibGUgJiYgcHJvcHMuYWN0aXZlUXVlcnkgIT09IHZvaWQgMCkpKCkgJiYgKHR5cGUoKSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlKCkgPT09IFwibnVtYmVyXCIgfHwgdHlwZSgpID09PSBcImJvb2xlYW5cIik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQgZmFsbGJhY2soKSB7XG4gICAgICAgICAgICByZXR1cm4gKCgpID0+IHtcbiAgICAgICAgICAgICAgdmFyIF9lbCQzMyA9IF90bXBsJDEwMigpO1xuICAgICAgICAgICAgICBpbnNlcnQoX2VsJDMzLCAoKSA9PiBkaXNwbGF5VmFsdWUocHJvcHMudmFsdWUpKTtcbiAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMzMsIHN0eWxlcygpLnZhbHVlKSk7XG4gICAgICAgICAgICAgIHJldHVybiBfZWwkMzM7XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIShwcm9wcy5lZGl0YWJsZSAmJiBwcm9wcy5hY3RpdmVRdWVyeSAhPT0gdm9pZCAwKSkoKSAmJiAodHlwZSgpID09PSBcInN0cmluZ1wiIHx8IHR5cGUoKSA9PT0gXCJudW1iZXJcIik7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2VsJDIxID0gX3RtcGwkOTIoKTtcbiAgICAgICAgICAgICAgICBfZWwkMjEuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoY2hhbmdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9sZERhdGEgPSBwcm9wcy5hY3RpdmVRdWVyeS5zdGF0ZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IHVwZGF0ZU5lc3RlZERhdGFCeVBhdGgob2xkRGF0YSwgY3VycmVudERhdGFQYXRoLCB0eXBlKCkgPT09IFwibnVtYmVyXCIgPyBjaGFuZ2VFdmVudC50YXJnZXQudmFsdWVBc051bWJlciA6IGNoYW5nZUV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICBxdWVyeUNsaWVudC5zZXRRdWVyeURhdGEocHJvcHMuYWN0aXZlUXVlcnkucXVlcnlLZXksIG5ld0RhdGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgICAgICAgICAgICB2YXIgX3YkNiA9IHR5cGUoKSA9PT0gXCJudW1iZXJcIiA/IFwibnVtYmVyXCIgOiBcInRleHRcIiwgX3YkNyA9IGNsc3goc3R5bGVzKCkudmFsdWUsIHN0eWxlcygpLmVkaXRhYmxlSW5wdXQpO1xuICAgICAgICAgICAgICAgICAgX3YkNiAhPT0gX3AkLmUgJiYgc2V0QXR0cmlidXRlKF9lbCQyMSwgXCJ0eXBlXCIsIF9wJC5lID0gX3YkNik7XG4gICAgICAgICAgICAgICAgICBfdiQ3ICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDIxLCBfcCQudCA9IF92JDcpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICB0OiB2b2lkIDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gX2VsJDIxLnZhbHVlID0gcHJvcHMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfZWwkMjE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSgpID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgIHZhciBfZWwkMjIgPSBfdG1wbCQxMDIoKTtcbiAgICAgICAgICAgICAgICBpbnNlcnQoX2VsJDIyLCBjcmVhdGVDb21wb25lbnQoVG9nZ2xlVmFsdWVCdXR0b24sIHtcbiAgICAgICAgICAgICAgICAgIGdldCBhY3RpdmVRdWVyeSgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmFjdGl2ZVF1ZXJ5O1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGRhdGFQYXRoOiBjdXJyZW50RGF0YVBhdGgsXG4gICAgICAgICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgaW5zZXJ0KF9lbCQyMiwgKCkgPT4gZGlzcGxheVZhbHVlKHByb3BzLnZhbHVlKSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkMjIsIGNsc3goc3R5bGVzKCkudmFsdWUsIHN0eWxlcygpLmFjdGlvbnMsIHN0eWxlcygpLmVkaXRhYmxlSW5wdXQpKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9lbCQyMjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksIG51bGwpO1xuICAgICAgICBpbnNlcnQoX2VsJDE4LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLmVkaXRhYmxlICYmIHByb3BzLml0ZW1zRGVsZXRhYmxlICYmIHByb3BzLmFjdGl2ZVF1ZXJ5ICE9PSB2b2lkIDA7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KERlbGV0ZUl0ZW1CdXR0b24sIHtcbiAgICAgICAgICAgICAgZ2V0IGFjdGl2ZVF1ZXJ5KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5hY3RpdmVRdWVyeTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZGF0YVBhdGg6IGN1cnJlbnREYXRhUGF0aFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgICAgdmFyIF92JDggPSBzdHlsZXMoKS5yb3csIF92JDkgPSBzdHlsZXMoKS5sYWJlbDtcbiAgICAgICAgICBfdiQ4ICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDE4LCBfcCQuZSA9IF92JDgpO1xuICAgICAgICAgIF92JDkgIT09IF9wJC50ICYmIGNsYXNzTmFtZShfZWwkMTksIF9wJC50ID0gX3YkOSk7XG4gICAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgICAgfSwge1xuICAgICAgICAgIGU6IHZvaWQgMCxcbiAgICAgICAgICB0OiB2b2lkIDBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfZWwkMTg7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDYsIHN0eWxlcygpLmVudHJ5KSk7XG4gICAgcmV0dXJuIF9lbCQ2O1xuICB9KSgpO1xufVxudmFyIHN0eWxlc0ZhY3RvcnkgPSAodGhlbWUsIGNzcykgPT4ge1xuICBjb25zdCB7XG4gICAgY29sb3JzLFxuICAgIGZvbnQsXG4gICAgc2l6ZTogc2l6ZTMsXG4gICAgYm9yZGVyXG4gIH0gPSB0b2tlbnM7XG4gIGNvbnN0IHQyID0gKGxpZ2h0LCBkYXJrKSA9PiB0aGVtZSA9PT0gXCJsaWdodFwiID8gbGlnaHQgOiBkYXJrO1xuICByZXR1cm4ge1xuICAgIGVudHJ5OiBjc3NgXG4gICAgICAmICoge1xuICAgICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgICAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLFxuICAgICAgICAgICdMaWJlcmF0aW9uIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gICAgICB9XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICBgLFxuICAgIHN1YkVudHJ5OiBjc3NgXG4gICAgICBtYXJnaW46IDAgMCAwIDAuNWVtO1xuICAgICAgcGFkZGluZy1sZWZ0OiAwLjc1ZW07XG4gICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgIC8qIG91dGxpbmU6IDFweCBzb2xpZCAke2NvbG9ycy50ZWFsWzQwMF19OyAqL1xuICAgIGAsXG4gICAgZXhwYW5kZXI6IGNzc2BcbiAgICAgICYgcGF0aCB7XG4gICAgICAgIHN0cm9rZTogJHtjb2xvcnMuZ3JheVs0MDBdfTtcbiAgICAgIH1cbiAgICAgICYgc3ZnIHtcbiAgICAgICAgd2lkdGg6ICR7c2l6ZTNbM119O1xuICAgICAgICBoZWlnaHQ6ICR7c2l6ZTNbM119O1xuICAgICAgfVxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZTtcbiAgICAgIC8qIG91dGxpbmU6IDFweCBzb2xpZCAke2NvbG9ycy5ibHVlWzQwMF19OyAqL1xuICAgIGAsXG4gICAgZXhwYW5kZXJCdXR0b25Db250YWluZXI6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgbGluZS1oZWlnaHQ6ICR7c2l6ZTNbNF19O1xuICAgICAgbWluLWhlaWdodDogJHtzaXplM1s0XX07XG4gICAgICBnYXA6ICR7c2l6ZTNbMl19O1xuICAgIGAsXG4gICAgZXhwYW5kZXJCdXR0b246IGNzc2BcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgIG91dGxpbmU6IGluaGVyaXQ7XG4gICAgICBoZWlnaHQ6ICR7c2l6ZTNbNV19O1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiAke3NpemUzWzFdfTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIC8qIG91dGxpbmU6IDFweCBzb2xpZCAke2NvbG9ycy5ncmVlbls0MDBdfTsgKi9cblxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG5cbiAgICAgICYgc3ZnIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBsZWZ0OiAxcHg7XG4gICAgICB9XG4gICAgYCxcbiAgICBpbmZvOiBjc3NgXG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs1MDBdLCBjb2xvcnMuZ3JheVs1MDBdKX07XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3NpemUzWzFdfTtcbiAgICAgIC8qIG91dGxpbmU6IDFweCBzb2xpZCAke2NvbG9ycy55ZWxsb3dbNDAwXX07ICovXG4gICAgYCxcbiAgICBsYWJlbDogY3NzYFxuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBgLFxuICAgIHZhbHVlOiBjc3NgXG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMucHVycGxlWzYwMF0sIGNvbG9ycy5wdXJwbGVbNDAwXSl9O1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgIGAsXG4gICAgYWN0aW9uczogY3NzYFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBnYXA6ICR7c2l6ZTNbMl19O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBgLFxuICAgIHJvdzogY3NzYFxuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBnYXA6ICR7c2l6ZTNbMl19O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXJnaW46ICR7c2l6ZTNbMC4yNV19IDBweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAke3NpemUzWzQuNV19O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBgLFxuICAgIGVkaXRhYmxlSW5wdXQ6IGNzc2BcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIHBhZGRpbmc6ICR7c2l6ZTNbMC41XX0gJHtzaXplM1sxXX0gJHtzaXplM1swLjVdfSAke3NpemUzWzEuNV19O1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfTtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzYwMF0pfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIGFjdGlvbkJ1dHRvbjogY3NzYFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs1MDBdLCBjb2xvcnMuZ3JheVs1MDBdKX07XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHdpZHRoOiAke3NpemUzWzNdfTtcbiAgICAgIGhlaWdodDogJHtzaXplM1szXX07XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB6LWluZGV4OiAxO1xuXG4gICAgICAmOmhvdmVyIHN2ZyB7XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzYwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICB9XG4gICAgYFxuICB9O1xufTtcbnZhciBsaWdodFN0eWxlcyA9IChjc3MpID0+IHN0eWxlc0ZhY3RvcnkoXCJsaWdodFwiLCBjc3MpO1xudmFyIGRhcmtTdHlsZXMgPSAoY3NzKSA9PiBzdHlsZXNGYWN0b3J5KFwiZGFya1wiLCBjc3MpO1xuZGVsZWdhdGVFdmVudHMoW1wiY2xpY2tcIl0pO1xuXG4vLyBzcmMvRGV2dG9vbHMudHN4XG52YXIgX3RtcGwkMjYgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PGRpdiBhcmlhLWhpZGRlbj10cnVlPjwvZGl2PjxidXR0b24gdHlwZT1idXR0b24gYXJpYS1sYWJlbD1cIk9wZW4gVGFuc3RhY2sgcXVlcnkgZGV2dG9vbHNcImNsYXNzPXRzcWQtb3Blbi1idG4+YCk7XG52YXIgX3RtcGwkMjcgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+YCk7XG52YXIgX3RtcGwkMzMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxhc2lkZSBhcmlhLWxhYmVsPVwiVGFuc3RhY2sgcXVlcnkgZGV2dG9vbHNcIj48ZGl2PjwvZGl2PjxidXR0b24gYXJpYS1sYWJlbD1cIkNsb3NlIHRhbnN0YWNrIHF1ZXJ5IGRldnRvb2xzXCI+YCk7XG52YXIgX3RtcGwkNDMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzZWxlY3QgbmFtZT10c3FkLXF1ZXJpZXMtZmlsdGVyLXNvcnQ+YCk7XG52YXIgX3RtcGwkNTMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzZWxlY3QgbmFtZT10c3FkLW11dGF0aW9ucy1maWx0ZXItc29ydD5gKTtcbnZhciBfdG1wbCQ2MyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+QXNjYCk7XG52YXIgX3RtcGwkNzMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPkRlc2NgKTtcbnZhciBfdG1wbCQ4MyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbiBhcmlhLWxhYmVsPVwiT3BlbiBpbiBwaWN0dXJlLWluLXBpY3R1cmUgbW9kZVwidGl0bGU9XCJPcGVuIGluIHBpY3R1cmUtaW4tcGljdHVyZSBtb2RlXCI+YCk7XG52YXIgX3RtcGwkOTMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+U2V0dGluZ3NgKTtcbnZhciBfdG1wbCQxMDMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPlBvc2l0aW9uYCk7XG52YXIgX3RtcGwkMTEzID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5Ub3BgKTtcbnZhciBfdG1wbCQxMjMgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPkJvdHRvbWApO1xudmFyIF90bXBsJDEzMiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+TGVmdGApO1xudmFyIF90bXBsJDE0MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+UmlnaHRgKTtcbnZhciBfdG1wbCQxNTIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxzcGFuPlRoZW1lYCk7XG52YXIgX3RtcGwkMTYyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5MaWdodGApO1xudmFyIF90bXBsJDE3MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+RGFya2ApO1xudmFyIF90bXBsJDE4MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPHNwYW4+U3lzdGVtYCk7XG52YXIgX3RtcGwkMTkyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PjxkaXYgY2xhc3M9dHNxZC1xdWVyaWVzLWNvbnRhaW5lcj5gKTtcbnZhciBfdG1wbCQyMDIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXY+PGRpdiBjbGFzcz10c3FkLW11dGF0aW9ucy1jb250YWluZXI+YCk7XG52YXIgX3RtcGwkMjEyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PjxkaXY+PGRpdj48YnV0dG9uIGFyaWEtbGFiZWw9XCJDbG9zZSBUYW5zdGFjayBxdWVyeSBkZXZ0b29sc1wiPjxzcGFuPlRBTlNUQUNLPC9zcGFuPjxzcGFuPiB2PC9zcGFuPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjxkaXY+PGRpdj48ZGl2PjxpbnB1dCBhcmlhLWxhYmVsPVwiRmlsdGVyIHF1ZXJpZXMgYnkgcXVlcnkga2V5XCJ0eXBlPXRleHQgcGxhY2Vob2xkZXI9RmlsdGVyIG5hbWU9dHNxZC1xdWVyeS1maWx0ZXItaW5wdXQ+PC9kaXY+PGRpdj48L2Rpdj48YnV0dG9uIGNsYXNzPXRzcWQtcXVlcnktZmlsdGVyLXNvcnQtb3JkZXItYnRuPjwvYnV0dG9uPjwvZGl2PjxkaXY+PGJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xlYXIgcXVlcnkgY2FjaGVcIj48L2J1dHRvbj48YnV0dG9uPmApO1xudmFyIF90bXBsJDIyMyA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPG9wdGlvbj5Tb3J0IGJ5IGApO1xudmFyIF90bXBsJDIzMiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdiBjbGFzcz10c3FkLXF1ZXJ5LWRpc2FibGVkLWluZGljYXRvcj5kaXNhYmxlZGApO1xudmFyIF90bXBsJDI0MiA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGJ1dHRvbj48ZGl2PjwvZGl2Pjxjb2RlIGNsYXNzPXRzcWQtcXVlcnktaGFzaD5gKTtcbnZhciBfdG1wbCQyNTIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXYgcm9sZT10b29sdGlwIGlkPXRzcWQtc3RhdHVzLXRvb2x0aXA+YCk7XG52YXIgX3RtcGwkMjYyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8c3Bhbj5gKTtcbnZhciBfdG1wbCQyNzIgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxidXR0b24+PHNwYW4+PC9zcGFuPjxzcGFuPmApO1xudmFyIF90bXBsJDI4ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8YnV0dG9uPjxzcGFuPjwvc3Bhbj4gRXJyb3JgKTtcbnZhciBfdG1wbCQyOSA9IC8qIEBfX1BVUkVfXyAqLyB0ZW1wbGF0ZShgPGRpdj48c3Bhbj48L3NwYW4+VHJpZ2dlciBFcnJvcjxzZWxlY3Q+PG9wdGlvbiB2YWx1ZT1cIlwiZGlzYWJsZWQgc2VsZWN0ZWQ+YCk7XG52YXIgX3RtcGwkMzAgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxkaXYgY2xhc3M9XCJ0c3FkLXF1ZXJ5LWRldGFpbHMtZXhwbG9yZXItY29udGFpbmVyIHRzcWQtcXVlcnktZGV0YWlscy1kYXRhLWV4cGxvcmVyXCI+YCk7XG52YXIgX3RtcGwkMzEgPSAvKiBAX19QVVJFX18gKi8gdGVtcGxhdGUoYDxmb3JtPjx0ZXh0YXJlYSBuYW1lPWRhdGE+PC90ZXh0YXJlYT48ZGl2PjxzcGFuPjwvc3Bhbj48ZGl2PjxidXR0b24gdHlwZT1idXR0b24+Q2FuY2VsPC9idXR0b24+PGJ1dHRvbj5TYXZlYCk7XG52YXIgX3RtcGwkMzIyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PjxkaXY+UXVlcnkgRGV0YWlsczwvZGl2PjxkaXY+PGRpdiBjbGFzcz10c3FkLXF1ZXJ5LWRldGFpbHMtc3VtbWFyeT48cHJlPjxjb2RlPjwvY29kZT48L3ByZT48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz10c3FkLXF1ZXJ5LWRldGFpbHMtb2JzZXJ2ZXJzLWNvdW50PjxzcGFuPk9ic2VydmVyczo8L3NwYW4+PHNwYW4+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9dHNxZC1xdWVyeS1kZXRhaWxzLWxhc3QtdXBkYXRlZD48c3Bhbj5MYXN0IFVwZGF0ZWQ6PC9zcGFuPjxzcGFuPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2PkFjdGlvbnM8L2Rpdj48ZGl2PjxidXR0b24+PHNwYW4+PC9zcGFuPlJlZmV0Y2g8L2J1dHRvbj48YnV0dG9uPjxzcGFuPjwvc3Bhbj5JbnZhbGlkYXRlPC9idXR0b24+PGJ1dHRvbj48c3Bhbj48L3NwYW4+UmVzZXQ8L2J1dHRvbj48YnV0dG9uPjxzcGFuPjwvc3Bhbj5SZW1vdmU8L2J1dHRvbj48YnV0dG9uPjxzcGFuPjwvc3Bhbj4gTG9hZGluZzwvYnV0dG9uPjwvZGl2PjxkaXY+RGF0YSA8L2Rpdj48ZGl2PlF1ZXJ5IEV4cGxvcmVyPC9kaXY+PGRpdiBjbGFzcz1cInRzcWQtcXVlcnktZGV0YWlscy1leHBsb3Jlci1jb250YWluZXIgdHNxZC1xdWVyeS1kZXRhaWxzLXF1ZXJ5LWV4cGxvcmVyXCI+YCk7XG52YXIgX3RtcGwkMzMyID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8b3B0aW9uPmApO1xudmFyIF90bXBsJDM0ID0gLyogQF9fUFVSRV9fICovIHRlbXBsYXRlKGA8ZGl2PjxkaXY+TXV0YXRpb24gRGV0YWlsczwvZGl2PjxkaXY+PGRpdiBjbGFzcz10c3FkLXF1ZXJ5LWRldGFpbHMtc3VtbWFyeT48cHJlPjxjb2RlPjwvY29kZT48L3ByZT48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz10c3FkLXF1ZXJ5LWRldGFpbHMtbGFzdC11cGRhdGVkPjxzcGFuPlN1Ym1pdHRlZCBBdDo8L3NwYW4+PHNwYW4+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXY+VmFyaWFibGVzIERldGFpbHM8L2Rpdj48ZGl2IGNsYXNzPVwidHNxZC1xdWVyeS1kZXRhaWxzLWV4cGxvcmVyLWNvbnRhaW5lciB0c3FkLXF1ZXJ5LWRldGFpbHMtcXVlcnktZXhwbG9yZXJcIj48L2Rpdj48ZGl2PkNvbnRleHQgRGV0YWlsczwvZGl2PjxkaXYgY2xhc3M9XCJ0c3FkLXF1ZXJ5LWRldGFpbHMtZXhwbG9yZXItY29udGFpbmVyIHRzcWQtcXVlcnktZGV0YWlscy1xdWVyeS1leHBsb3JlclwiPjwvZGl2PjxkaXY+RGF0YSBFeHBsb3JlcjwvZGl2PjxkaXYgY2xhc3M9XCJ0c3FkLXF1ZXJ5LWRldGFpbHMtZXhwbG9yZXItY29udGFpbmVyIHRzcWQtcXVlcnktZGV0YWlscy1xdWVyeS1leHBsb3JlclwiPjwvZGl2PjxkaXY+TXV0YXRpb25zIEV4cGxvcmVyPC9kaXY+PGRpdiBjbGFzcz1cInRzcWQtcXVlcnktZGV0YWlscy1leHBsb3Jlci1jb250YWluZXIgdHNxZC1xdWVyeS1kZXRhaWxzLXF1ZXJ5LWV4cGxvcmVyXCI+YCk7XG52YXIgW3NlbGVjdGVkUXVlcnlIYXNoLCBzZXRTZWxlY3RlZFF1ZXJ5SGFzaF0gPSBjcmVhdGVTaWduYWwobnVsbCk7XG52YXIgW3NlbGVjdGVkTXV0YXRpb25JZCwgc2V0U2VsZWN0ZWRNdXRhdGlvbklkXSA9IGNyZWF0ZVNpZ25hbChudWxsKTtcbnZhciBbcGFuZWxXaWR0aCwgc2V0UGFuZWxXaWR0aF0gPSBjcmVhdGVTaWduYWwoMCk7XG52YXIgW29mZmxpbmUsIHNldE9mZmxpbmVdID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbnZhciBEZXZ0b29scyA9IChwcm9wcykgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlczIoY3NzKSA6IGxpZ2h0U3R5bGVzMihjc3MpO1xuICB9KTtcbiAgY29uc3QgcGlwID0gdXNlUGlQV2luZG93KCk7XG4gIGNvbnN0IGJ1dHRvblBvc2l0aW9uID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuYnV0dG9uUG9zaXRpb24gfHwgQlVUVE9OX1BPU0lUSU9OO1xuICB9KTtcbiAgY29uc3QgaXNPcGVuID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzLmxvY2FsU3RvcmUub3BlbiA9PT0gXCJ0cnVlXCIgPyB0cnVlIDogcHJvcHMubG9jYWxTdG9yZS5vcGVuID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuaW5pdGlhbElzT3BlbiB8fCBJTklUSUFMX0lTX09QRU47XG4gIH0pO1xuICBjb25zdCBwb3NpdGlvbiA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5sb2NhbFN0b3JlLnBvc2l0aW9uIHx8IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkucG9zaXRpb24gfHwgUE9TSVRJT047XG4gIH0pO1xuICBsZXQgdHJhbnNpdGlvbnNDb250YWluZXJSZWY7XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHRyYW5zaXRpb25zQ29udGFpbmVyUmVmLnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgaGVpZ2h0ID0gcHJvcHMubG9jYWxTdG9yZS5oZWlnaHQgfHwgREVGQVVMVF9IRUlHSFQ7XG4gICAgY29uc3Qgd2lkdGggPSBwcm9wcy5sb2NhbFN0b3JlLndpZHRoIHx8IERFRkFVTFRfV0lEVEg7XG4gICAgY29uc3QgcGFuZWxQb3NpdGlvbiA9IHBvc2l0aW9uKCk7XG4gICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHNxZC1wYW5lbC1oZWlnaHRcIiwgYCR7cGFuZWxQb3NpdGlvbiA9PT0gXCJ0b3BcIiA/IFwiLVwiIDogXCJcIn0ke2hlaWdodH1weGApO1xuICAgIHJvb3Quc3R5bGUuc2V0UHJvcGVydHkoXCItLXRzcWQtcGFuZWwtd2lkdGhcIiwgYCR7cGFuZWxQb3NpdGlvbiA9PT0gXCJsZWZ0XCIgPyBcIi1cIiA6IFwiXCJ9JHt3aWR0aH1weGApO1xuICB9KTtcbiAgb25Nb3VudCgoKSA9PiB7XG4gICAgY29uc3Qgb25Gb2N1cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3QgPSB0cmFuc2l0aW9uc0NvbnRhaW5lclJlZi5wYXJlbnRFbGVtZW50O1xuICAgICAgY29uc3QgZm9udFNpemUgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmZvbnRTaXplO1xuICAgICAgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHNxZC1mb250LXNpemVcIiwgZm9udFNpemUpO1xuICAgIH07XG4gICAgb25Gb2N1cygpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgb25Gb2N1cyk7XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgb25Gb2N1cyk7XG4gICAgfSk7XG4gIH0pO1xuICBjb25zdCBwaXBfb3BlbiA9IGNyZWF0ZU1lbW8oKCkgPT4gcHJvcHMubG9jYWxTdG9yZS5waXBfb3BlbiA/PyBcImZhbHNlXCIpO1xuICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIXBpcCgpLnBpcFdpbmRvdykoKSAmJiBwaXBfb3BlbigpID09IFwidHJ1ZVwiO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChQb3J0YWwsIHtcbiAgICAgICAgZ2V0IG1vdW50KCkge1xuICAgICAgICAgIHJldHVybiBwaXAoKS5waXBXaW5kb3c/LmRvY3VtZW50LmJvZHk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBpUFBhbmVsLCB7XG4gICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoQ29udGVudFZpZXcsIHByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KSwgKCgpID0+IHtcbiAgICB2YXIgX2VsJCA9IF90bXBsJDI3KCk7XG4gICAgdmFyIF9yZWYkID0gdHJhbnNpdGlvbnNDb250YWluZXJSZWY7XG4gICAgdHlwZW9mIF9yZWYkID09PSBcImZ1bmN0aW9uXCIgPyB1c2UoX3JlZiQsIF9lbCQpIDogdHJhbnNpdGlvbnNDb250YWluZXJSZWYgPSBfZWwkO1xuICAgIGluc2VydChfZWwkLCBjcmVhdGVDb21wb25lbnQoVHJhbnNpdGlvbkdyb3VwLCB7XG4gICAgICBuYW1lOiBcInRzcWQtcGFuZWwtdHJhbnNpdGlvblwiLFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhKGlzT3BlbigpICYmICFwaXAoKS5waXBXaW5kb3cpKSgpICYmIHBpcF9vcGVuKCkgPT0gXCJmYWxzZVwiO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChEcmFnZ2FibGVQYW5lbCwge1xuICAgICAgICAgICAgICBnZXQgbG9jYWxTdG9yZSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMubG9jYWxTdG9yZTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZ2V0IHNldExvY2FsU3RvcmUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLnNldExvY2FsU3RvcmU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkLCBjcmVhdGVDb21wb25lbnQoVHJhbnNpdGlvbkdyb3VwLCB7XG4gICAgICBuYW1lOiBcInRzcWQtYnV0dG9uLXRyYW5zaXRpb25cIixcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gIWlzT3BlbigpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgdmFyIF9lbCQyID0gX3RtcGwkMjYoKSwgX2VsJDMgPSBfZWwkMi5maXJzdENoaWxkLCBfZWwkNCA9IF9lbCQzLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgaW5zZXJ0KF9lbCQzLCBjcmVhdGVDb21wb25lbnQoVGFuc3RhY2tMb2dvLCB7fSkpO1xuICAgICAgICAgICAgX2VsJDQuJCRjbGljayA9ICgpID0+IHByb3BzLnNldExvY2FsU3RvcmUoXCJvcGVuXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgICAgIGluc2VydChfZWwkNCwgY3JlYXRlQ29tcG9uZW50KFRhbnN0YWNrTG9nbywge30pKTtcbiAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDIsIGNsc3goc3R5bGVzKCkuZGV2dG9vbHNCdG4sIHN0eWxlcygpW2BkZXZ0b29sc0J0bi1wb3NpdGlvbi0ke2J1dHRvblBvc2l0aW9uKCl9YF0sIFwidHNxZC1vcGVuLWJ0bi1jb250YWluZXJcIikpKTtcbiAgICAgICAgICAgIHJldHVybiBfZWwkMjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQsIGNsc3goY3NzYFxuICAgICAgICAgICAgJiAudHNxZC1wYW5lbC10cmFuc2l0aW9uLWV4aXQtYWN0aXZlLFxuICAgICAgICAgICAgJiAudHNxZC1wYW5lbC10cmFuc2l0aW9uLWVudGVyLWFjdGl2ZSB7XG4gICAgICAgICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgICAgICAgb3BhY2l0eSAwLjNzLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSAwLjNzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmIC50c3FkLXBhbmVsLXRyYW5zaXRpb24tZXhpdC10byxcbiAgICAgICAgICAgICYgLnRzcWQtcGFuZWwtdHJhbnNpdGlvbi1lbnRlciB7XG4gICAgICAgICAgICAgICR7cG9zaXRpb24oKSA9PT0gXCJ0b3BcIiB8fCBwb3NpdGlvbigpID09PSBcImJvdHRvbVwiID8gYHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS10c3FkLXBhbmVsLWhlaWdodCkpO2AgOiBgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLXRzcWQtcGFuZWwtd2lkdGgpKTtgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmIC50c3FkLWJ1dHRvbi10cmFuc2l0aW9uLWV4aXQtYWN0aXZlLFxuICAgICAgICAgICAgJiAudHNxZC1idXR0b24tdHJhbnNpdGlvbi1lbnRlci1hY3RpdmUge1xuICAgICAgICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgICAgIG9wYWNpdHkgMC4zcyxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0gMC4zcztcbiAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJiAudHNxZC1idXR0b24tdHJhbnNpdGlvbi1leGl0LXRvLFxuICAgICAgICAgICAgJiAudHNxZC1idXR0b24tdHJhbnNpdGlvbi1lbnRlciB7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogJHtidXR0b25Qb3NpdGlvbigpID09PSBcInJlbGF0aXZlXCIgPyBgbm9uZTtgIDogYnV0dG9uUG9zaXRpb24oKSA9PT0gXCJ0b3AtbGVmdFwiID8gYHRyYW5zbGF0ZVgoLTcycHgpO2AgOiBidXR0b25Qb3NpdGlvbigpID09PSBcInRvcC1yaWdodFwiID8gYHRyYW5zbGF0ZVgoNzJweCk7YCA6IGB0cmFuc2xhdGVZKDcycHgpO2B9O1xuICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGAsIFwidHNxZC10cmFuc2l0aW9ucy1jb250YWluZXJcIikpKTtcbiAgICByZXR1cm4gX2VsJDtcbiAgfSkoKV07XG59O1xudmFyIFBpUFBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHBpcCA9IHVzZVBpUFdpbmRvdygpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlczIoY3NzKSA6IGxpZ2h0U3R5bGVzMihjc3MpO1xuICB9KTtcbiAgY29uc3QgZ2V0UGFuZWxEeW5hbWljU3R5bGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvbG9yc1xuICAgIH0gPSB0b2tlbnM7XG4gICAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFyayA6IGxpZ2h0O1xuICAgIGlmIChwYW5lbFdpZHRoKCkgPCBzZWNvbmRCcmVha3BvaW50KSB7XG4gICAgICByZXR1cm4gY3NzYFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5ncmF5WzYwMF0pfTtcbiAgICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBjc3NgXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbOTAwXSl9O1xuICAgIGA7XG4gIH07XG4gIGNyZWF0ZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgd2luID0gcGlwKCkucGlwV2luZG93O1xuICAgIGNvbnN0IHJlc2l6ZUNCID0gKCkgPT4ge1xuICAgICAgaWYgKCF3aW4pIHJldHVybjtcbiAgICAgIHNldFBhbmVsV2lkdGgod2luLmlubmVyV2lkdGgpO1xuICAgIH07XG4gICAgaWYgKHdpbikge1xuICAgICAgd2luLmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgcmVzaXplQ0IpO1xuICAgICAgcmVzaXplQ0IoKTtcbiAgICB9XG4gICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgIGlmICh3aW4pIHtcbiAgICAgICAgd2luLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgcmVzaXplQ0IpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQ1ID0gX3RtcGwkMjcoKTtcbiAgICBfZWwkNS5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tdHNxZC1mb250LXNpemVcIiwgXCIxNnB4XCIpO1xuICAgIF9lbCQ1LnN0eWxlLnNldFByb3BlcnR5KFwibWF4LWhlaWdodFwiLCBcIjEwMHZoXCIpO1xuICAgIF9lbCQ1LnN0eWxlLnNldFByb3BlcnR5KFwiaGVpZ2h0XCIsIFwiMTAwdmhcIik7XG4gICAgX2VsJDUuc3R5bGUuc2V0UHJvcGVydHkoXCJ3aWR0aFwiLCBcIjEwMHZ3XCIpO1xuICAgIGluc2VydChfZWwkNSwgKCkgPT4gcHJvcHMuY2hpbGRyZW4pO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDUsIGNsc3goc3R5bGVzKCkucGFuZWwsIGdldFBhbmVsRHluYW1pY1N0eWxlcygpLCB7XG4gICAgICBbY3NzYFxuICAgICAgICAgICAgbWluLXdpZHRoOiBtaW4tY29udGVudDtcbiAgICAgICAgICBgXTogcGFuZWxXaWR0aCgpIDwgdGhpcmRCcmVha3BvaW50XG4gICAgfSwgXCJ0c3FkLW1haW4tcGFuZWxcIikpKTtcbiAgICByZXR1cm4gX2VsJDU7XG4gIH0pKCk7XG59O1xudmFyIFBhcmVudFBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBsZXQgcGFuZWxSZWY7XG4gIG9uTW91bnQoKCkgPT4ge1xuICAgIGNyZWF0ZVJlc2l6ZU9ic2VydmVyKHBhbmVsUmVmLCAoe1xuICAgICAgd2lkdGhcbiAgICB9LCBlbCkgPT4ge1xuICAgICAgaWYgKGVsID09PSBwYW5lbFJlZikge1xuICAgICAgICBzZXRQYW5lbFdpZHRoKHdpZHRoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IGdldFBhbmVsRHluYW1pY1N0eWxlcyA9ICgpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBjb2xvcnNcbiAgICB9ID0gdG9rZW5zO1xuICAgIGNvbnN0IHQyID0gKGxpZ2h0LCBkYXJrKSA9PiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmsgOiBsaWdodDtcbiAgICBpZiAocGFuZWxXaWR0aCgpIDwgc2Vjb25kQnJlYWtwb2ludCkge1xuICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZ3JheVs2MDBdKX07XG4gICAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gY3NzYFxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzkwMF0pfTtcbiAgICBgO1xuICB9O1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDYgPSBfdG1wbCQyNygpO1xuICAgIHZhciBfcmVmJDIgPSBwYW5lbFJlZjtcbiAgICB0eXBlb2YgX3JlZiQyID09PSBcImZ1bmN0aW9uXCIgPyB1c2UoX3JlZiQyLCBfZWwkNikgOiBwYW5lbFJlZiA9IF9lbCQ2O1xuICAgIF9lbCQ2LnN0eWxlLnNldFByb3BlcnR5KFwiLS10c3FkLWZvbnQtc2l6ZVwiLCBcIjE2cHhcIik7XG4gICAgaW5zZXJ0KF9lbCQ2LCAoKSA9PiBwcm9wcy5jaGlsZHJlbik7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkNiwgY2xzeChzdHlsZXMoKS5wYXJlbnRQYW5lbCwgZ2V0UGFuZWxEeW5hbWljU3R5bGVzKCksIHtcbiAgICAgIFtjc3NgXG4gICAgICAgICAgICBtaW4td2lkdGg6IG1pbi1jb250ZW50O1xuICAgICAgICAgIGBdOiBwYW5lbFdpZHRoKCkgPCB0aGlyZEJyZWFrcG9pbnRcbiAgICB9LCBcInRzcWQtbWFpbi1wYW5lbFwiKSkpO1xuICAgIHJldHVybiBfZWwkNjtcbiAgfSkoKTtcbn07XG52YXIgRHJhZ2dhYmxlUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMyKGNzcykgOiBsaWdodFN0eWxlczIoY3NzKTtcbiAgfSk7XG4gIGNvbnN0IFtpc1Jlc2l6aW5nLCBzZXRJc1Jlc2l6aW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IHBvc2l0aW9uID0gY3JlYXRlTWVtbygoKSA9PiBwcm9wcy5sb2NhbFN0b3JlLnBvc2l0aW9uIHx8IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkucG9zaXRpb24gfHwgUE9TSVRJT04pO1xuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCBwYW5lbEVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0LnBhcmVudEVsZW1lbnQ7XG4gICAgaWYgKCFwYW5lbEVsZW1lbnQpIHJldHVybjtcbiAgICBzZXRJc1Jlc2l6aW5nKHRydWUpO1xuICAgIGNvbnN0IHtcbiAgICAgIGhlaWdodCxcbiAgICAgIHdpZHRoXG4gICAgfSA9IHBhbmVsRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xuICAgIGNvbnN0IHN0YXJ0WSA9IGV2ZW50LmNsaWVudFk7XG4gICAgbGV0IG5ld1NpemUgPSAwO1xuICAgIGNvbnN0IG1pbkhlaWdodCA9IGNvbnZlcnRSZW1Ub1BpeGVscygzLjUpO1xuICAgIGNvbnN0IG1pbldpZHRoID0gY29udmVydFJlbVRvUGl4ZWxzKDEyKTtcbiAgICBjb25zdCBydW5EcmFnID0gKG1vdmVFdmVudCkgPT4ge1xuICAgICAgbW92ZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAocG9zaXRpb24oKSA9PT0gXCJsZWZ0XCIgfHwgcG9zaXRpb24oKSA9PT0gXCJyaWdodFwiKSB7XG4gICAgICAgIGNvbnN0IHZhbFRvQWRkID0gcG9zaXRpb24oKSA9PT0gXCJyaWdodFwiID8gc3RhcnRYIC0gbW92ZUV2ZW50LmNsaWVudFggOiBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcbiAgICAgICAgbmV3U2l6ZSA9IE1hdGgucm91bmQod2lkdGggKyB2YWxUb0FkZCk7XG4gICAgICAgIGlmIChuZXdTaXplIDwgbWluV2lkdGgpIHtcbiAgICAgICAgICBuZXdTaXplID0gbWluV2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcIndpZHRoXCIsIFN0cmluZyhNYXRoLnJvdW5kKG5ld1NpemUpKSk7XG4gICAgICAgIGNvbnN0IG5ld1dpZHRoID0gcGFuZWxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAoTnVtYmVyKHByb3BzLmxvY2FsU3RvcmUud2lkdGgpIDwgbmV3V2lkdGgpIHtcbiAgICAgICAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwid2lkdGhcIiwgU3RyaW5nKG5ld1dpZHRoKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZhbFRvQWRkID0gcG9zaXRpb24oKSA9PT0gXCJib3R0b21cIiA/IHN0YXJ0WSAtIG1vdmVFdmVudC5jbGllbnRZIDogbW92ZUV2ZW50LmNsaWVudFkgLSBzdGFydFk7XG4gICAgICAgIG5ld1NpemUgPSBNYXRoLnJvdW5kKGhlaWdodCArIHZhbFRvQWRkKTtcbiAgICAgICAgaWYgKG5ld1NpemUgPCBtaW5IZWlnaHQpIHtcbiAgICAgICAgICBuZXdTaXplID0gbWluSGVpZ2h0O1xuICAgICAgICAgIHNldFNlbGVjdGVkUXVlcnlIYXNoKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJoZWlnaHRcIiwgU3RyaW5nKE1hdGgucm91bmQobmV3U2l6ZSkpKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gKCkgPT4ge1xuICAgICAgaWYgKGlzUmVzaXppbmcoKSkge1xuICAgICAgICBzZXRJc1Jlc2l6aW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgcnVuRHJhZywgZmFsc2UpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlVXBcIiwgdW5zdWJzY3JpYmUsIGZhbHNlKTtcbiAgICB9O1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgcnVuRHJhZywgZmFsc2UpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIHVuc3Vic2NyaWJlLCBmYWxzZSk7XG4gIH07XG4gIGxldCBwYW5lbFJlZjtcbiAgb25Nb3VudCgoKSA9PiB7XG4gICAgY3JlYXRlUmVzaXplT2JzZXJ2ZXIocGFuZWxSZWYsICh7XG4gICAgICB3aWR0aFxuICAgIH0sIGVsKSA9PiB7XG4gICAgICBpZiAoZWwgPT09IHBhbmVsUmVmKSB7XG4gICAgICAgIHNldFBhbmVsV2lkdGgod2lkdGgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCByb290Q29udGFpbmVyID0gcGFuZWxSZWYucGFyZW50RWxlbWVudD8ucGFyZW50RWxlbWVudD8ucGFyZW50RWxlbWVudDtcbiAgICBpZiAoIXJvb3RDb250YWluZXIpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50UG9zaXRpb24gPSBwcm9wcy5sb2NhbFN0b3JlLnBvc2l0aW9uIHx8IFBPU0lUSU9OO1xuICAgIGNvbnN0IHN0eWxlUHJvcCA9IGdldFNpZGVkUHJvcChcInBhZGRpbmdcIiwgY3VycmVudFBvc2l0aW9uKTtcbiAgICBjb25zdCBpc1ZlcnRpY2FsID0gcHJvcHMubG9jYWxTdG9yZS5wb3NpdGlvbiA9PT0gXCJsZWZ0XCIgfHwgcHJvcHMubG9jYWxTdG9yZS5wb3NpdGlvbiA9PT0gXCJyaWdodFwiO1xuICAgIGNvbnN0IHByZXZpb3VzUGFkZGluZ3MgPSAoKHtcbiAgICAgIHBhZGRpbmcsXG4gICAgICBwYWRkaW5nVG9wLFxuICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgcGFkZGluZ1JpZ2h0XG4gICAgfSkgPT4gKHtcbiAgICAgIHBhZGRpbmcsXG4gICAgICBwYWRkaW5nVG9wLFxuICAgICAgcGFkZGluZ0JvdHRvbSxcbiAgICAgIHBhZGRpbmdMZWZ0LFxuICAgICAgcGFkZGluZ1JpZ2h0XG4gICAgfSkpKHJvb3RDb250YWluZXIuc3R5bGUpO1xuICAgIHJvb3RDb250YWluZXIuc3R5bGVbc3R5bGVQcm9wXSA9IGAke2lzVmVydGljYWwgPyBwcm9wcy5sb2NhbFN0b3JlLndpZHRoIDogcHJvcHMubG9jYWxTdG9yZS5oZWlnaHR9cHhgO1xuICAgIG9uQ2xlYW51cCgoKSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhwcmV2aW91c1BhZGRpbmdzKS5mb3JFYWNoKChbcHJvcGVydHksIHByZXZpb3VzVmFsdWVdKSA9PiB7XG4gICAgICAgIHJvb3RDb250YWluZXIuc3R5bGVbcHJvcGVydHldID0gcHJldmlvdXNWYWx1ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgZ2V0UGFuZWxEeW5hbWljU3R5bGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGNvbG9yc1xuICAgIH0gPSB0b2tlbnM7XG4gICAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFyayA6IGxpZ2h0O1xuICAgIGlmIChwYW5lbFdpZHRoKCkgPCBzZWNvbmRCcmVha3BvaW50KSB7XG4gICAgICByZXR1cm4gY3NzYFxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5ncmF5WzYwMF0pfTtcbiAgICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBjc3NgXG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbOTAwXSl9O1xuICAgIGA7XG4gIH07XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNyA9IF90bXBsJDMzKCksIF9lbCQ4ID0gX2VsJDcuZmlyc3RDaGlsZCwgX2VsJDkgPSBfZWwkOC5uZXh0U2libGluZztcbiAgICB2YXIgX3JlZiQzID0gcGFuZWxSZWY7XG4gICAgdHlwZW9mIF9yZWYkMyA9PT0gXCJmdW5jdGlvblwiID8gdXNlKF9yZWYkMywgX2VsJDcpIDogcGFuZWxSZWYgPSBfZWwkNztcbiAgICBfZWwkOC4kJG1vdXNlZG93biA9IGhhbmRsZURyYWdTdGFydDtcbiAgICBfZWwkOS4kJGNsaWNrID0gKCkgPT4gcHJvcHMuc2V0TG9jYWxTdG9yZShcIm9wZW5cIiwgXCJmYWxzZVwiKTtcbiAgICBpbnNlcnQoX2VsJDksIGNyZWF0ZUNvbXBvbmVudChDaGV2cm9uRG93biwge30pKTtcbiAgICBpbnNlcnQoX2VsJDcsIGNyZWF0ZUNvbXBvbmVudChDb250ZW50VmlldywgcHJvcHMpLCBudWxsKTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF9wJCkgPT4ge1xuICAgICAgdmFyIF92JCA9IGNsc3goc3R5bGVzKCkucGFuZWwsIHN0eWxlcygpW2BwYW5lbC1wb3NpdGlvbi0ke3Bvc2l0aW9uKCl9YF0sIGdldFBhbmVsRHluYW1pY1N0eWxlcygpLCB7XG4gICAgICAgIFtjc3NgXG4gICAgICAgICAgICBtaW4td2lkdGg6IG1pbi1jb250ZW50O1xuICAgICAgICAgIGBdOiBwYW5lbFdpZHRoKCkgPCB0aGlyZEJyZWFrcG9pbnQgJiYgKHBvc2l0aW9uKCkgPT09IFwicmlnaHRcIiB8fCBwb3NpdGlvbigpID09PSBcImxlZnRcIilcbiAgICAgIH0sIFwidHNxZC1tYWluLXBhbmVsXCIpLCBfdiQyID0gcG9zaXRpb24oKSA9PT0gXCJib3R0b21cIiB8fCBwb3NpdGlvbigpID09PSBcInRvcFwiID8gYCR7cHJvcHMubG9jYWxTdG9yZS5oZWlnaHQgfHwgREVGQVVMVF9IRUlHSFR9cHhgIDogXCJhdXRvXCIsIF92JDMgPSBwb3NpdGlvbigpID09PSBcInJpZ2h0XCIgfHwgcG9zaXRpb24oKSA9PT0gXCJsZWZ0XCIgPyBgJHtwcm9wcy5sb2NhbFN0b3JlLndpZHRoIHx8IERFRkFVTFRfV0lEVEh9cHhgIDogXCJhdXRvXCIsIF92JDQgPSBjbHN4KHN0eWxlcygpLmRyYWdIYW5kbGUsIHN0eWxlcygpW2BkcmFnSGFuZGxlLXBvc2l0aW9uLSR7cG9zaXRpb24oKX1gXSwgXCJ0c3FkLWRyYWctaGFuZGxlXCIpLCBfdiQ1ID0gY2xzeChzdHlsZXMoKS5jbG9zZUJ0biwgc3R5bGVzKClbYGNsb3NlQnRuLXBvc2l0aW9uLSR7cG9zaXRpb24oKX1gXSwgXCJ0c3FkLW1pbmltaXplLWJ0blwiKTtcbiAgICAgIF92JCAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQ3LCBfcCQuZSA9IF92JCk7XG4gICAgICBfdiQyICE9PSBfcCQudCAmJiAoKF9wJC50ID0gX3YkMikgIT0gbnVsbCA/IF9lbCQ3LnN0eWxlLnNldFByb3BlcnR5KFwiaGVpZ2h0XCIsIF92JDIpIDogX2VsJDcuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJoZWlnaHRcIikpO1xuICAgICAgX3YkMyAhPT0gX3AkLmEgJiYgKChfcCQuYSA9IF92JDMpICE9IG51bGwgPyBfZWwkNy5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsIF92JDMpIDogX2VsJDcuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ3aWR0aFwiKSk7XG4gICAgICBfdiQ0ICE9PSBfcCQubyAmJiBjbGFzc05hbWUoX2VsJDgsIF9wJC5vID0gX3YkNCk7XG4gICAgICBfdiQ1ICE9PSBfcCQuaSAmJiBjbGFzc05hbWUoX2VsJDksIF9wJC5pID0gX3YkNSk7XG4gICAgICByZXR1cm4gX3AkO1xuICAgIH0sIHtcbiAgICAgIGU6IHZvaWQgMCxcbiAgICAgIHQ6IHZvaWQgMCxcbiAgICAgIGE6IHZvaWQgMCxcbiAgICAgIG86IHZvaWQgMCxcbiAgICAgIGk6IHZvaWQgMFxuICAgIH0pO1xuICAgIHJldHVybiBfZWwkNztcbiAgfSkoKTtcbn07XG52YXIgQ29udGVudFZpZXcgPSAocHJvcHMpID0+IHtcbiAgc2V0dXBRdWVyeUNhY2hlU3Vic2NyaXB0aW9uKCk7XG4gIHNldHVwTXV0YXRpb25DYWNoZVN1YnNjcmlwdGlvbigpO1xuICBsZXQgY29udGFpbmVyUmVmO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlczIoY3NzKSA6IGxpZ2h0U3R5bGVzMihjc3MpO1xuICB9KTtcbiAgY29uc3QgcGlwID0gdXNlUGlQV2luZG93KCk7XG4gIGNvbnN0IFtzZWxlY3RlZFZpZXcsIHNldFNlbGVjdGVkVmlld10gPSBjcmVhdGVTaWduYWwoXCJxdWVyaWVzXCIpO1xuICBjb25zdCBzb3J0ID0gY3JlYXRlTWVtbygoKSA9PiBwcm9wcy5sb2NhbFN0b3JlLnNvcnQgfHwgREVGQVVMVF9TT1JUX0ZOX05BTUUpO1xuICBjb25zdCBzb3J0T3JkZXIgPSBjcmVhdGVNZW1vKCgpID0+IE51bWJlcihwcm9wcy5sb2NhbFN0b3JlLnNvcnRPcmRlcikgfHwgREVGQVVMVF9TT1JUX09SREVSKTtcbiAgY29uc3QgbXV0YXRpb25Tb3J0ID0gY3JlYXRlTWVtbygoKSA9PiBwcm9wcy5sb2NhbFN0b3JlLm11dGF0aW9uU29ydCB8fCBERUZBVUxUX01VVEFUSU9OX1NPUlRfRk5fTkFNRSk7XG4gIGNvbnN0IG11dGF0aW9uU29ydE9yZGVyID0gY3JlYXRlTWVtbygoKSA9PiBOdW1iZXIocHJvcHMubG9jYWxTdG9yZS5tdXRhdGlvblNvcnRPcmRlcikgfHwgREVGQVVMVF9TT1JUX09SREVSKTtcbiAgY29uc3Qgc29ydEZuID0gY3JlYXRlTWVtbygoKSA9PiBzb3J0Rm5zW3NvcnQoKV0pO1xuICBjb25zdCBtdXRhdGlvblNvcnRGbiA9IGNyZWF0ZU1lbW8oKCkgPT4gbXV0YXRpb25Tb3J0Rm5zW211dGF0aW9uU29ydCgpXSk7XG4gIGNvbnN0IG9ubGluZU1hbmFnZXIgPSBjcmVhdGVNZW1vKCgpID0+IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkub25saW5lTWFuYWdlcik7XG4gIGNvbnN0IHF1ZXJ5X2NhY2hlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuY2xpZW50LmdldFF1ZXJ5Q2FjaGUoKTtcbiAgfSk7XG4gIGNvbnN0IG11dGF0aW9uX2NhY2hlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuY2xpZW50LmdldE11dGF0aW9uQ2FjaGUoKTtcbiAgfSk7XG4gIGNvbnN0IHF1ZXJ5Q291bnQgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5sZW5ndGg7XG4gIH0sIGZhbHNlKTtcbiAgY29uc3QgcXVlcmllcyA9IGNyZWF0ZU1lbW8ob24oKCkgPT4gW3F1ZXJ5Q291bnQoKSwgcHJvcHMubG9jYWxTdG9yZS5maWx0ZXIsIHNvcnQoKSwgc29ydE9yZGVyKCldLCAoKSA9PiB7XG4gICAgY29uc3QgY3VyciA9IHF1ZXJ5X2NhY2hlKCkuZ2V0QWxsKCk7XG4gICAgY29uc3QgZmlsdGVyZWQgPSBwcm9wcy5sb2NhbFN0b3JlLmZpbHRlciA/IGN1cnIuZmlsdGVyKChpdGVtKSA9PiByYW5rSXRlbShpdGVtLnF1ZXJ5SGFzaCwgcHJvcHMubG9jYWxTdG9yZS5maWx0ZXIgfHwgXCJcIikucGFzc2VkKSA6IFsuLi5jdXJyXTtcbiAgICBjb25zdCBzb3J0ZWQgPSBzb3J0Rm4oKSA/IGZpbHRlcmVkLnNvcnQoKGEyLCBiMikgPT4gc29ydEZuKCkoYTIsIGIyKSAqIHNvcnRPcmRlcigpKSA6IGZpbHRlcmVkO1xuICAgIHJldHVybiBzb3J0ZWQ7XG4gIH0pKTtcbiAgY29uc3QgbXV0YXRpb25Db3VudCA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IHtcbiAgICByZXR1cm4gbXV0YXRpb25DYWNoZSgpLmdldEFsbCgpLmxlbmd0aDtcbiAgfSwgZmFsc2UpO1xuICBjb25zdCBtdXRhdGlvbnMgPSBjcmVhdGVNZW1vKG9uKCgpID0+IFttdXRhdGlvbkNvdW50KCksIHByb3BzLmxvY2FsU3RvcmUubXV0YXRpb25GaWx0ZXIsIG11dGF0aW9uU29ydCgpLCBtdXRhdGlvblNvcnRPcmRlcigpXSwgKCkgPT4ge1xuICAgIGNvbnN0IGN1cnIgPSBtdXRhdGlvbl9jYWNoZSgpLmdldEFsbCgpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gcHJvcHMubG9jYWxTdG9yZS5tdXRhdGlvbkZpbHRlciA/IGN1cnIuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGAke2l0ZW0ub3B0aW9ucy5tdXRhdGlvbktleSA/IEpTT04uc3RyaW5naWZ5KGl0ZW0ub3B0aW9ucy5tdXRhdGlvbktleSkgKyBcIiAtIFwiIDogXCJcIn0ke25ldyBEYXRlKGl0ZW0uc3RhdGUuc3VibWl0dGVkQXQpLnRvTG9jYWxlU3RyaW5nKCl9YDtcbiAgICAgIHJldHVybiByYW5rSXRlbSh2YWx1ZSwgcHJvcHMubG9jYWxTdG9yZS5tdXRhdGlvbkZpbHRlciB8fCBcIlwiKS5wYXNzZWQ7XG4gICAgfSkgOiBbLi4uY3Vycl07XG4gICAgY29uc3Qgc29ydGVkID0gbXV0YXRpb25Tb3J0Rm4oKSA/IGZpbHRlcmVkLnNvcnQoKGEyLCBiMikgPT4gbXV0YXRpb25Tb3J0Rm4oKShhMiwgYjIpICogbXV0YXRpb25Tb3J0T3JkZXIoKSkgOiBmaWx0ZXJlZDtcbiAgICByZXR1cm4gc29ydGVkO1xuICB9KSk7XG4gIGNvbnN0IHNldERldnRvb2xzUG9zaXRpb24gPSAocG9zKSA9PiB7XG4gICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcInBvc2l0aW9uXCIsIHBvcyk7XG4gIH07XG4gIGNvbnN0IHNldENvbXB1dGVkVmFyaWFibGVzID0gKGVsKSA9PiB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY29udGFpbmVyUmVmKTtcbiAgICBjb25zdCB2YXJpYWJsZSA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0tdHNxZC1mb250LXNpemVcIik7XG4gICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoXCItLXRzcWQtZm9udC1zaXplXCIsIHZhcmlhYmxlKTtcbiAgfTtcbiAgcmV0dXJuIFsoKCkgPT4ge1xuICAgIHZhciBfZWwkMTAgPSBfdG1wbCQyMTIoKSwgX2VsJDExID0gX2VsJDEwLmZpcnN0Q2hpbGQsIF9lbCQxMiA9IF9lbCQxMS5maXJzdENoaWxkLCBfZWwkMTMgPSBfZWwkMTIuZmlyc3RDaGlsZCwgX2VsJDE0ID0gX2VsJDEzLmZpcnN0Q2hpbGQsIF9lbCQxNSA9IF9lbCQxNC5uZXh0U2libGluZywgX2VsJDE2ID0gX2VsJDE1LmZpcnN0Q2hpbGQsIF9lbCQxNyA9IF9lbCQxMS5uZXh0U2libGluZywgX2VsJDE4ID0gX2VsJDE3LmZpcnN0Q2hpbGQsIF9lbCQxOSA9IF9lbCQxOC5maXJzdENoaWxkLCBfZWwkMjAgPSBfZWwkMTkuZmlyc3RDaGlsZCwgX2VsJDIxID0gX2VsJDE5Lm5leHRTaWJsaW5nLCBfZWwkMjQgPSBfZWwkMjEubmV4dFNpYmxpbmcsIF9lbCQyNyA9IF9lbCQxOC5uZXh0U2libGluZywgX2VsJDI4ID0gX2VsJDI3LmZpcnN0Q2hpbGQsIF9lbCQyOSA9IF9lbCQyOC5uZXh0U2libGluZztcbiAgICB2YXIgX3JlZiQ0ID0gY29udGFpbmVyUmVmO1xuICAgIHR5cGVvZiBfcmVmJDQgPT09IFwiZnVuY3Rpb25cIiA/IHVzZShfcmVmJDQsIF9lbCQxMCkgOiBjb250YWluZXJSZWYgPSBfZWwkMTA7XG4gICAgX2VsJDEzLiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoIXBpcCgpLnBpcFdpbmRvdyAmJiAhcHJvcHMuc2hvd1BhbmVsVmlld09ubHkpIHtcbiAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcIm9wZW5cIiwgXCJmYWxzZVwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLm9uQ2xvc2UpIHtcbiAgICAgICAgcHJvcHMub25DbG9zZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgaW5zZXJ0KF9lbCQxNSwgKCkgPT4gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5xdWVyeUZsYXZvciwgX2VsJDE2KTtcbiAgICBpbnNlcnQoX2VsJDE1LCAoKSA9PiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnZlcnNpb24sIG51bGwpO1xuICAgIGluc2VydChfZWwkMTIsIGNyZWF0ZUNvbXBvbmVudChyYWRpb19ncm91cF9leHBvcnRzLlJvb3QsIHtcbiAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkudmlld1RvZ2dsZSk7XG4gICAgICB9LFxuICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWaWV3KCk7XG4gICAgICB9LFxuICAgICAgb25DaGFuZ2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZFZpZXcodmFsdWUpO1xuICAgICAgICBzZXRTZWxlY3RlZFF1ZXJ5SGFzaChudWxsKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRNdXRhdGlvbklkKG51bGwpO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQocmFkaW9fZ3JvdXBfZXhwb3J0cy5JdGVtLCB7XG4gICAgICAgICAgdmFsdWU6IFwicXVlcmllc1wiLFxuICAgICAgICAgIFwiY2xhc3NcIjogXCJ0c3FkLXJhZGlvLXRvZ2dsZVwiLFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBbY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUlucHV0LCB7fSksIGNyZWF0ZUNvbXBvbmVudChyYWRpb19ncm91cF9leHBvcnRzLkl0ZW1Db250cm9sLCB7XG4gICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUluZGljYXRvciwge30pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUxhYmVsLCB7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIlRvZ2dsZSBRdWVyaWVzIFZpZXdcIixcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFwiUXVlcmllc1wiXG4gICAgICAgICAgICB9KV07XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbSwge1xuICAgICAgICAgIHZhbHVlOiBcIm11dGF0aW9uc1wiLFxuICAgICAgICAgIFwiY2xhc3NcIjogXCJ0c3FkLXJhZGlvLXRvZ2dsZVwiLFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBbY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUlucHV0LCB7fSksIGNyZWF0ZUNvbXBvbmVudChyYWRpb19ncm91cF9leHBvcnRzLkl0ZW1Db250cm9sLCB7XG4gICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUluZGljYXRvciwge30pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KHJhZGlvX2dyb3VwX2V4cG9ydHMuSXRlbUxhYmVsLCB7XG4gICAgICAgICAgICAgIHRpdGxlOiBcIlRvZ2dsZSBNdXRhdGlvbnMgVmlld1wiLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogXCJNdXRhdGlvbnNcIlxuICAgICAgICAgICAgfSldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSldO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDExLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCI7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFF1ZXJ5U3RhdHVzQ291bnQsIHt9KTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQxMSwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWaWV3KCkgPT09IFwibXV0YXRpb25zXCI7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KE11dGF0aW9uU3RhdHVzQ291bnQsIHt9KTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQxOSwgY3JlYXRlQ29tcG9uZW50KFNlYXJjaCwge30pLCBfZWwkMjApO1xuICAgIF9lbCQyMC4kJGlucHV0ID0gKGUyKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiKSB7XG4gICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJmaWx0ZXJcIiwgZTIuY3VycmVudFRhcmdldC52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy5zZXRMb2NhbFN0b3JlKFwibXV0YXRpb25GaWx0ZXJcIiwgZTIuY3VycmVudFRhcmdldC52YWx1ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpbnNlcnQoX2VsJDIxLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCI7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICB2YXIgX2VsJDIyID0gX3RtcGwkNDMoKTtcbiAgICAgICAgX2VsJDIyLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGUyKSA9PiB7XG4gICAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcInNvcnRcIiwgZTIuY3VycmVudFRhcmdldC52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpbnNlcnQoX2VsJDIyLCAoKSA9PiBPYmplY3Qua2V5cyhzb3J0Rm5zKS5tYXAoKGtleSkgPT4gKCgpID0+IHtcbiAgICAgICAgICB2YXIgX2VsJDQ1ID0gX3RtcGwkMjIzKCk7IF9lbCQ0NS5maXJzdENoaWxkO1xuICAgICAgICAgIF9lbCQ0NS52YWx1ZSA9IGtleTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDQ1LCBrZXksIG51bGwpO1xuICAgICAgICAgIHJldHVybiBfZWwkNDU7XG4gICAgICAgIH0pKCkpKTtcbiAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IF9lbCQyMi52YWx1ZSA9IHNvcnQoKSk7XG4gICAgICAgIHJldHVybiBfZWwkMjI7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkMjEsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkVmlldygpID09PSBcIm11dGF0aW9uc1wiO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgdmFyIF9lbCQyMyA9IF90bXBsJDUzKCk7XG4gICAgICAgIF9lbCQyMy5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIChlMikgPT4ge1xuICAgICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJtdXRhdGlvblNvcnRcIiwgZTIuY3VycmVudFRhcmdldC52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpbnNlcnQoX2VsJDIzLCAoKSA9PiBPYmplY3Qua2V5cyhtdXRhdGlvblNvcnRGbnMpLm1hcCgoa2V5KSA9PiAoKCkgPT4ge1xuICAgICAgICAgIHZhciBfZWwkNDcgPSBfdG1wbCQyMjMoKTsgX2VsJDQ3LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgX2VsJDQ3LnZhbHVlID0ga2V5O1xuICAgICAgICAgIGluc2VydChfZWwkNDcsIGtleSwgbnVsbCk7XG4gICAgICAgICAgcmV0dXJuIF9lbCQ0NztcbiAgICAgICAgfSkoKSkpO1xuICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gX2VsJDIzLnZhbHVlID0gbXV0YXRpb25Tb3J0KCkpO1xuICAgICAgICByZXR1cm4gX2VsJDIzO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDIxLCBjcmVhdGVDb21wb25lbnQoQ2hldnJvbkRvd24sIHt9KSwgbnVsbCk7XG4gICAgX2VsJDI0LiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiKSB7XG4gICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJzb3J0T3JkZXJcIiwgU3RyaW5nKHNvcnRPcmRlcigpICogLTEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJtdXRhdGlvblNvcnRPcmRlclwiLCBTdHJpbmcobXV0YXRpb25Tb3J0T3JkZXIoKSAqIC0xKSk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpbnNlcnQoX2VsJDI0LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiAoc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiID8gc29ydE9yZGVyKCkgOiBtdXRhdGlvblNvcnRPcmRlcigpKSA9PT0gMTtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHJldHVybiBbX3RtcGwkNjMoKSwgY3JlYXRlQ29tcG9uZW50KEFycm93VXAsIHt9KV07XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkMjQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIChzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIgPyBzb3J0T3JkZXIoKSA6IG11dGF0aW9uU29ydE9yZGVyKCkpID09PSAtMTtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHJldHVybiBbX3RtcGwkNzMoKSwgY3JlYXRlQ29tcG9uZW50KEFycm93RG93biwge30pXTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgX2VsJDI4LiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiKSB7XG4gICAgICAgIHF1ZXJ5X2NhY2hlKCkuY2xlYXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG11dGF0aW9uX2NhY2hlKCkuY2xlYXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGluc2VydChfZWwkMjgsIGNyZWF0ZUNvbXBvbmVudChUcmFzaCwge30pKTtcbiAgICBfZWwkMjkuJCRjbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChvZmZsaW5lKCkpIHtcbiAgICAgICAgb25saW5lTWFuYWdlcigpLnNldE9ubGluZSh0cnVlKTtcbiAgICAgICAgc2V0T2ZmbGluZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbmxpbmVNYW5hZ2VyKCkuc2V0T25saW5lKGZhbHNlKTtcbiAgICAgICAgc2V0T2ZmbGluZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGluc2VydChfZWwkMjksICgoKSA9PiB7XG4gICAgICB2YXIgX2MkID0gY3JlYXRlTWVtbygoKSA9PiAhIW9mZmxpbmUoKSk7XG4gICAgICByZXR1cm4gKCkgPT4gX2MkKCkgPyBjcmVhdGVDb21wb25lbnQoT2ZmbGluZSwge30pIDogY3JlYXRlQ29tcG9uZW50KFdpZmksIHt9KTtcbiAgICB9KSgpKTtcbiAgICBpbnNlcnQoX2VsJDI3LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVNZW1vKCgpID0+ICEhIXBpcCgpLnBpcFdpbmRvdykoKSAmJiAhcGlwKCkuZGlzYWJsZWQ7XG4gICAgICB9LFxuICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICB2YXIgX2VsJDMwID0gX3RtcGwkODMoKTtcbiAgICAgICAgX2VsJDMwLiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgcGlwKCkucmVxdWVzdFBpcFdpbmRvdyhOdW1iZXIod2luZG93LmlubmVyV2lkdGgpLCBOdW1iZXIocHJvcHMubG9jYWxTdG9yZS5oZWlnaHQgPz8gNTAwKSk7XG4gICAgICAgIH07XG4gICAgICAgIGluc2VydChfZWwkMzAsIGNyZWF0ZUNvbXBvbmVudChQaVBJY29uLCB7fSkpO1xuICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQzMCwgY2xzeChzdHlsZXMoKS5hY3Rpb25zQnRuLCBcInRzcWQtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLWFjdGlvbi1vcGVuLXBpcFwiKSkpO1xuICAgICAgICByZXR1cm4gX2VsJDMwO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDI3LCBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlJvb3QsIHtcbiAgICAgIGd1dHRlcjogNCxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlRyaWdnZXIsIHtcbiAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5hY3Rpb25zQnRuLCBcInRzcWQtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLWFjdGlvbi1zZXR0aW5nc1wiKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2V0dGluZ3MsIHt9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlBvcnRhbCwge1xuICAgICAgICAgIHJlZjogKGVsKSA9PiBzZXRDb21wdXRlZFZhcmlhYmxlcyhlbCksXG4gICAgICAgICAgZ2V0IG1vdW50KCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISFwaXAoKS5waXBXaW5kb3cpKCkgPyBwaXAoKS5waXBXaW5kb3cuZG9jdW1lbnQuYm9keSA6IGRvY3VtZW50LmJvZHk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5Db250ZW50LCB7XG4gICAgICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc01lbnUsIFwidHNxZC1zZXR0aW5ncy1tZW51XCIpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdmFyIF9lbCQzMSA9IF90bXBsJDkzKCk7XG4gICAgICAgICAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQzMSwgY2xzeChzdHlsZXMoKS5zZXR0aW5nc01lbnVIZWFkZXIsIFwidHNxZC1zZXR0aW5ncy1tZW51LWhlYWRlclwiKSkpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF9lbCQzMTtcbiAgICAgICAgICAgICAgICB9KSgpLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICAgICAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhcHJvcHMuc2hvd1BhbmVsVmlld09ubHk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5TdWIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIGd1dHRlcjogOCxcbiAgICAgICAgICAgICAgICAgICAgICBzaGlmdDogLTQsXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlN1YlRyaWdnZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzU3ViVHJpZ2dlciwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtc3ViLXRyaWdnZXJcIiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtc3ViLXRyaWdnZXItcG9zaXRpb25cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW190bXBsJDEwMygpLCBjcmVhdGVDb21wb25lbnQoQ2hldnJvbkRvd24sIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlBvcnRhbCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IChlbCkgPT4gc2V0Q29tcHV0ZWRWYXJpYWJsZXMoZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgbW91bnQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISFwaXAoKS5waXBXaW5kb3cpKCkgPyBwaXAoKS5waXBXaW5kb3cuZG9jdW1lbnQuYm9keSA6IGRvY3VtZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5TdWJDb250ZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzTWVudSwgXCJ0c3FkLXNldHRpbmdzLXN1Ym1lbnVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2NyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuSXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXZ0b29sc1Bvc2l0aW9uKFwidG9wXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkuc2V0dGluZ3NTdWJCdXR0b24sIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0blwiLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG4tdG9wXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtfdG1wbCQxMTMoKSwgY3JlYXRlQ29tcG9uZW50KEFycm93VXAsIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5JdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldERldnRvb2xzUG9zaXRpb24oXCJib3R0b21cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc1N1YkJ1dHRvbiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuXCIsIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0bi1ib3R0b21cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW190bXBsJDEyMygpLCBjcmVhdGVDb21wb25lbnQoQXJyb3dEb3duLCB7fSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuSXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXZ0b29sc1Bvc2l0aW9uKFwibGVmdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzU3ViQnV0dG9uLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG5cIiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuLWxlZnRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW190bXBsJDEzMigpLCBjcmVhdGVDb21wb25lbnQoQXJyb3dMZWZ0LCB7fSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuSXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREZXZ0b29sc1Bvc2l0aW9uKFwicmlnaHRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhczogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc1N1YkJ1dHRvbiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuXCIsIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0bi1yaWdodFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTQyKCksIGNyZWF0ZUNvbXBvbmVudChBcnJvd1JpZ2h0LCB7fSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSwgY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5TdWIsIHtcbiAgICAgICAgICAgICAgICAgIG92ZXJsYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgICBndXR0ZXI6IDgsXG4gICAgICAgICAgICAgICAgICBzaGlmdDogLTQsXG4gICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5TdWJUcmlnZ2VyLCB7XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsc3goc3R5bGVzKCkuc2V0dGluZ3NTdWJUcmlnZ2VyLCBcInRzcWQtc2V0dGluZ3MtbWVudS1zdWItdHJpZ2dlclwiLCBcInRzcWQtc2V0dGluZ3MtbWVudS1zdWItdHJpZ2dlci1wb3NpdGlvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTUyKCksIGNyZWF0ZUNvbXBvbmVudChDaGV2cm9uRG93biwge30pXTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLlBvcnRhbCwge1xuICAgICAgICAgICAgICAgICAgICAgIHJlZjogKGVsKSA9PiBzZXRDb21wdXRlZFZhcmlhYmxlcyhlbCksXG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IG1vdW50KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gISFwaXAoKS5waXBXaW5kb3cpKCkgPyBwaXAoKS5waXBXaW5kb3cuZG9jdW1lbnQuYm9keSA6IGRvY3VtZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KGRyb3Bkb3duX21lbnVfZXhwb3J0cy5TdWJDb250ZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdldCBbXCJjbGFzc1wiXSgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc01lbnUsIFwidHNxZC1zZXR0aW5ncy1zdWJtZW51XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLkl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJ0aGVtZV9wcmVmZXJlbmNlXCIsIFwibGlnaHRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXM6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnNldHRpbmdzU3ViQnV0dG9uLCBwcm9wcy5sb2NhbFN0b3JlLnRoZW1lX3ByZWZlcmVuY2UgPT09IFwibGlnaHRcIiAmJiBzdHlsZXMoKS50aGVtZVNlbGVjdGVkQnV0dG9uLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG5cIiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuLXRvcFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTYyKCksIGNyZWF0ZUNvbXBvbmVudChTdW4sIHt9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGNyZWF0ZUNvbXBvbmVudChkcm9wZG93bl9tZW51X2V4cG9ydHMuSXRlbSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuc2V0TG9jYWxTdG9yZShcInRoZW1lX3ByZWZlcmVuY2VcIiwgXCJkYXJrXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc1N1YkJ1dHRvbiwgcHJvcHMubG9jYWxTdG9yZS50aGVtZV9wcmVmZXJlbmNlID09PSBcImRhcmtcIiAmJiBzdHlsZXMoKS50aGVtZVNlbGVjdGVkQnV0dG9uLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG5cIiwgXCJ0c3FkLXNldHRpbmdzLW1lbnUtcG9zaXRpb24tYnRuLWJvdHRvbVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTcyKCksIGNyZWF0ZUNvbXBvbmVudChNb29uLCB7fSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBjcmVhdGVDb21wb25lbnQoZHJvcGRvd25fbWVudV9leHBvcnRzLkl0ZW0sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnNldExvY2FsU3RvcmUoXCJ0aGVtZV9wcmVmZXJlbmNlXCIsIFwic3lzdGVtXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IFtcImNsYXNzXCJdKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xzeChzdHlsZXMoKS5zZXR0aW5nc1N1YkJ1dHRvbiwgcHJvcHMubG9jYWxTdG9yZS50aGVtZV9wcmVmZXJlbmNlID09PSBcInN5c3RlbVwiICYmIHN0eWxlcygpLnRoZW1lU2VsZWN0ZWRCdXR0b24sIFwidHNxZC1zZXR0aW5ncy1tZW51LXBvc2l0aW9uLWJ0blwiLCBcInRzcWQtc2V0dGluZ3MtbWVudS1wb3NpdGlvbi1idG4tbGVmdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbX3RtcGwkMTgyKCksIGNyZWF0ZUNvbXBvbmVudChNb25pdG9yLCB7fSldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQxMCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgdmFyIF9lbCQ0MSA9IF90bXBsJDE5MigpLCBfZWwkNDIgPSBfZWwkNDEuZmlyc3RDaGlsZDtcbiAgICAgICAgaW5zZXJ0KF9lbCQ0MiwgY3JlYXRlQ29tcG9uZW50KEtleSwge1xuICAgICAgICAgIGJ5OiAocSkgPT4gcS5xdWVyeUhhc2gsXG4gICAgICAgICAgZ2V0IGVhY2goKSB7XG4gICAgICAgICAgICByZXR1cm4gcXVlcmllcygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW46IChxdWVyeSkgPT4gY3JlYXRlQ29tcG9uZW50KFF1ZXJ5Um93LCB7XG4gICAgICAgICAgICBnZXQgcXVlcnkoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBxdWVyeSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pKTtcbiAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkNDEsIGNsc3goc3R5bGVzKCkub3ZlcmZsb3dRdWVyeUNvbnRhaW5lciwgXCJ0c3FkLXF1ZXJpZXMtb3ZlcmZsb3ctY29udGFpbmVyXCIpKSk7XG4gICAgICAgIHJldHVybiBfZWwkNDE7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkMTAsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkVmlldygpID09PSBcIm11dGF0aW9uc1wiO1xuICAgICAgfSxcbiAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgdmFyIF9lbCQ0MyA9IF90bXBsJDIwMigpLCBfZWwkNDQgPSBfZWwkNDMuZmlyc3RDaGlsZDtcbiAgICAgICAgaW5zZXJ0KF9lbCQ0NCwgY3JlYXRlQ29tcG9uZW50KEtleSwge1xuICAgICAgICAgIGJ5OiAobSkgPT4gbS5tdXRhdGlvbklkLFxuICAgICAgICAgIGdldCBlYWNoKCkge1xuICAgICAgICAgICAgcmV0dXJuIG11dGF0aW9ucygpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2hpbGRyZW46IChtdXRhdGlvbikgPT4gY3JlYXRlQ29tcG9uZW50KE11dGF0aW9uUm93LCB7XG4gICAgICAgICAgICBnZXQgbXV0YXRpb24oKSB7XG4gICAgICAgICAgICAgIHJldHVybiBtdXRhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pKTtcbiAgICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KCgpID0+IGNsYXNzTmFtZShfZWwkNDMsIGNsc3goc3R5bGVzKCkub3ZlcmZsb3dRdWVyeUNvbnRhaW5lciwgXCJ0c3FkLW11dGF0aW9ucy1vdmVyZmxvdy1jb250YWluZXJcIikpKTtcbiAgICAgICAgcmV0dXJuIF9lbCQ0MztcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgIHZhciBfdiQ2ID0gY2xzeChzdHlsZXMoKS5xdWVyaWVzQ29udGFpbmVyLCBwYW5lbFdpZHRoKCkgPCBzZWNvbmRCcmVha3BvaW50ICYmIChzZWxlY3RlZFF1ZXJ5SGFzaCgpIHx8IHNlbGVjdGVkTXV0YXRpb25JZCgpKSAmJiBjc3NgXG4gICAgICAgICAgICAgIGhlaWdodDogNTAlO1xuICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA1MCU7XG4gICAgICAgICAgICBgLCBwYW5lbFdpZHRoKCkgPCBzZWNvbmRCcmVha3BvaW50ICYmICEoc2VsZWN0ZWRRdWVyeUhhc2goKSB8fCBzZWxlY3RlZE11dGF0aW9uSWQoKSkgJiYgY3NzYFxuICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBgLCBcInRzcWQtcXVlcmllcy1jb250YWluZXJcIiksIF92JDcgPSBjbHN4KHN0eWxlcygpLnJvdywgXCJ0c3FkLWhlYWRlclwiKSwgX3YkOCA9IHN0eWxlcygpLmxvZ29BbmRUb2dnbGVDb250YWluZXIsIF92JDkgPSBjbHN4KHN0eWxlcygpLmxvZ28sIFwidHNxZC10ZXh0LWxvZ28tY29udGFpbmVyXCIpLCBfdiQxMCA9IGNsc3goc3R5bGVzKCkudGFuc3RhY2tMb2dvLCBcInRzcWQtdGV4dC1sb2dvLXRhbnN0YWNrXCIpLCBfdiQxMSA9IGNsc3goc3R5bGVzKCkucXVlcnlGbGF2b3JMb2dvLCBcInRzcWQtdGV4dC1sb2dvLXF1ZXJ5LWZsYXZvclwiKSwgX3YkMTIgPSBjbHN4KHN0eWxlcygpLnJvdywgXCJ0c3FkLWZpbHRlcnMtYWN0aW9ucy1jb250YWluZXJcIiksIF92JDEzID0gY2xzeChzdHlsZXMoKS5maWx0ZXJzQ29udGFpbmVyLCBcInRzcWQtZmlsdGVycy1jb250YWluZXJcIiksIF92JDE0ID0gY2xzeChzdHlsZXMoKS5maWx0ZXJJbnB1dCwgXCJ0c3FkLXF1ZXJ5LWZpbHRlci10ZXh0ZmllbGQtY29udGFpbmVyXCIpLCBfdiQxNSA9IGNsc3goXCJ0c3FkLXF1ZXJ5LWZpbHRlci10ZXh0ZmllbGRcIiksIF92JDE2ID0gY2xzeChzdHlsZXMoKS5maWx0ZXJTZWxlY3QsIFwidHNxZC1xdWVyeS1maWx0ZXItc29ydC1jb250YWluZXJcIiksIF92JDE3ID0gYFNvcnQgb3JkZXIgJHsoc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiID8gc29ydE9yZGVyKCkgOiBtdXRhdGlvblNvcnRPcmRlcigpKSA9PT0gLTEgPyBcImRlc2NlbmRpbmdcIiA6IFwiYXNjZW5kaW5nXCJ9YCwgX3YkMTggPSAoc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiID8gc29ydE9yZGVyKCkgOiBtdXRhdGlvblNvcnRPcmRlcigpKSA9PT0gLTEsIF92JDE5ID0gY2xzeChzdHlsZXMoKS5hY3Rpb25zQ29udGFpbmVyLCBcInRzcWQtYWN0aW9ucy1jb250YWluZXJcIiksIF92JDIwID0gY2xzeChzdHlsZXMoKS5hY3Rpb25zQnRuLCBcInRzcWQtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLWFjdGlvbi1jbGVhci1jYWNoZVwiKSwgX3YkMjEgPSBgQ2xlYXIgJHtzZWxlY3RlZFZpZXcoKX0gY2FjaGVgLCBfdiQyMiA9IGNsc3goc3R5bGVzKCkuYWN0aW9uc0J0biwgb2ZmbGluZSgpICYmIHN0eWxlcygpLmFjdGlvbnNCdG5PZmZsaW5lLCBcInRzcWQtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLWFjdGlvbi1tb2NrLW9mZmxpbmUtYmVoYXZpb3JcIiksIF92JDIzID0gYCR7b2ZmbGluZSgpID8gXCJVbnNldCBvZmZsaW5lIG1vY2tpbmcgYmVoYXZpb3JcIiA6IFwiTW9jayBvZmZsaW5lIGJlaGF2aW9yXCJ9YCwgX3YkMjQgPSBvZmZsaW5lKCksIF92JDI1ID0gYCR7b2ZmbGluZSgpID8gXCJVbnNldCBvZmZsaW5lIG1vY2tpbmcgYmVoYXZpb3JcIiA6IFwiTW9jayBvZmZsaW5lIGJlaGF2aW9yXCJ9YDtcbiAgICAgIF92JDYgIT09IF9wJC5lICYmIGNsYXNzTmFtZShfZWwkMTAsIF9wJC5lID0gX3YkNik7XG4gICAgICBfdiQ3ICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDExLCBfcCQudCA9IF92JDcpO1xuICAgICAgX3YkOCAhPT0gX3AkLmEgJiYgY2xhc3NOYW1lKF9lbCQxMiwgX3AkLmEgPSBfdiQ4KTtcbiAgICAgIF92JDkgIT09IF9wJC5vICYmIGNsYXNzTmFtZShfZWwkMTMsIF9wJC5vID0gX3YkOSk7XG4gICAgICBfdiQxMCAhPT0gX3AkLmkgJiYgY2xhc3NOYW1lKF9lbCQxNCwgX3AkLmkgPSBfdiQxMCk7XG4gICAgICBfdiQxMSAhPT0gX3AkLm4gJiYgY2xhc3NOYW1lKF9lbCQxNSwgX3AkLm4gPSBfdiQxMSk7XG4gICAgICBfdiQxMiAhPT0gX3AkLnMgJiYgY2xhc3NOYW1lKF9lbCQxNywgX3AkLnMgPSBfdiQxMik7XG4gICAgICBfdiQxMyAhPT0gX3AkLmggJiYgY2xhc3NOYW1lKF9lbCQxOCwgX3AkLmggPSBfdiQxMyk7XG4gICAgICBfdiQxNCAhPT0gX3AkLnIgJiYgY2xhc3NOYW1lKF9lbCQxOSwgX3AkLnIgPSBfdiQxNCk7XG4gICAgICBfdiQxNSAhPT0gX3AkLmQgJiYgY2xhc3NOYW1lKF9lbCQyMCwgX3AkLmQgPSBfdiQxNSk7XG4gICAgICBfdiQxNiAhPT0gX3AkLmwgJiYgY2xhc3NOYW1lKF9lbCQyMSwgX3AkLmwgPSBfdiQxNik7XG4gICAgICBfdiQxNyAhPT0gX3AkLnUgJiYgc2V0QXR0cmlidXRlKF9lbCQyNCwgXCJhcmlhLWxhYmVsXCIsIF9wJC51ID0gX3YkMTcpO1xuICAgICAgX3YkMTggIT09IF9wJC5jICYmIHNldEF0dHJpYnV0ZShfZWwkMjQsIFwiYXJpYS1wcmVzc2VkXCIsIF9wJC5jID0gX3YkMTgpO1xuICAgICAgX3YkMTkgIT09IF9wJC53ICYmIGNsYXNzTmFtZShfZWwkMjcsIF9wJC53ID0gX3YkMTkpO1xuICAgICAgX3YkMjAgIT09IF9wJC5tICYmIGNsYXNzTmFtZShfZWwkMjgsIF9wJC5tID0gX3YkMjApO1xuICAgICAgX3YkMjEgIT09IF9wJC5mICYmIHNldEF0dHJpYnV0ZShfZWwkMjgsIFwidGl0bGVcIiwgX3AkLmYgPSBfdiQyMSk7XG4gICAgICBfdiQyMiAhPT0gX3AkLnkgJiYgY2xhc3NOYW1lKF9lbCQyOSwgX3AkLnkgPSBfdiQyMik7XG4gICAgICBfdiQyMyAhPT0gX3AkLmcgJiYgc2V0QXR0cmlidXRlKF9lbCQyOSwgXCJhcmlhLWxhYmVsXCIsIF9wJC5nID0gX3YkMjMpO1xuICAgICAgX3YkMjQgIT09IF9wJC5wICYmIHNldEF0dHJpYnV0ZShfZWwkMjksIFwiYXJpYS1wcmVzc2VkXCIsIF9wJC5wID0gX3YkMjQpO1xuICAgICAgX3YkMjUgIT09IF9wJC5iICYmIHNldEF0dHJpYnV0ZShfZWwkMjksIFwidGl0bGVcIiwgX3AkLmIgPSBfdiQyNSk7XG4gICAgICByZXR1cm4gX3AkO1xuICAgIH0sIHtcbiAgICAgIGU6IHZvaWQgMCxcbiAgICAgIHQ6IHZvaWQgMCxcbiAgICAgIGE6IHZvaWQgMCxcbiAgICAgIG86IHZvaWQgMCxcbiAgICAgIGk6IHZvaWQgMCxcbiAgICAgIG46IHZvaWQgMCxcbiAgICAgIHM6IHZvaWQgMCxcbiAgICAgIGg6IHZvaWQgMCxcbiAgICAgIHI6IHZvaWQgMCxcbiAgICAgIGQ6IHZvaWQgMCxcbiAgICAgIGw6IHZvaWQgMCxcbiAgICAgIHU6IHZvaWQgMCxcbiAgICAgIGM6IHZvaWQgMCxcbiAgICAgIHc6IHZvaWQgMCxcbiAgICAgIG06IHZvaWQgMCxcbiAgICAgIGY6IHZvaWQgMCxcbiAgICAgIHk6IHZvaWQgMCxcbiAgICAgIGc6IHZvaWQgMCxcbiAgICAgIHA6IHZvaWQgMCxcbiAgICAgIGI6IHZvaWQgMFxuICAgIH0pO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBfZWwkMjAudmFsdWUgPSBzZWxlY3RlZFZpZXcoKSA9PT0gXCJxdWVyaWVzXCIgPyBwcm9wcy5sb2NhbFN0b3JlLmZpbHRlciB8fCBcIlwiIDogcHJvcHMubG9jYWxTdG9yZS5tdXRhdGlvbkZpbHRlciB8fCBcIlwiKTtcbiAgICByZXR1cm4gX2VsJDEwO1xuICB9KSgpLCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgIGdldCB3aGVuKCkge1xuICAgICAgcmV0dXJuIGNyZWF0ZU1lbW8oKCkgPT4gc2VsZWN0ZWRWaWV3KCkgPT09IFwicXVlcmllc1wiKSgpICYmIHNlbGVjdGVkUXVlcnlIYXNoKCk7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFF1ZXJ5RGV0YWlscywge30pO1xuICAgIH1cbiAgfSksIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiBzZWxlY3RlZFZpZXcoKSA9PT0gXCJtdXRhdGlvbnNcIikoKSAmJiBzZWxlY3RlZE11dGF0aW9uSWQoKTtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHJldHVybiBjcmVhdGVDb21wb25lbnQoTXV0YXRpb25EZXRhaWxzLCB7fSk7XG4gICAgfVxuICB9KV07XG59O1xudmFyIFF1ZXJ5Um93ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBjb25zdCB7XG4gICAgY29sb3JzLFxuICAgIGFscGhhXG4gIH0gPSB0b2tlbnM7XG4gIGNvbnN0IHQyID0gKGxpZ2h0LCBkYXJrKSA9PiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmsgOiBsaWdodDtcbiAgY29uc3QgcXVlcnlTdGF0ZSA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5maW5kKHtcbiAgICBxdWVyeUtleTogcHJvcHMucXVlcnkucXVlcnlLZXlcbiAgfSk/LnN0YXRlLCB0cnVlLCAoZTIpID0+IGUyLnF1ZXJ5LnF1ZXJ5SGFzaCA9PT0gcHJvcHMucXVlcnkucXVlcnlIYXNoKTtcbiAgY29uc3QgaXNEaXNhYmxlZCA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5maW5kKHtcbiAgICBxdWVyeUtleTogcHJvcHMucXVlcnkucXVlcnlLZXlcbiAgfSk/LmlzRGlzYWJsZWQoKSA/PyBmYWxzZSwgdHJ1ZSwgKGUyKSA9PiBlMi5xdWVyeS5xdWVyeUhhc2ggPT09IHByb3BzLnF1ZXJ5LnF1ZXJ5SGFzaCk7XG4gIGNvbnN0IGlzU3RhbGUgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiBxdWVyeUNhY2hlKCkuZmluZCh7XG4gICAgcXVlcnlLZXk6IHByb3BzLnF1ZXJ5LnF1ZXJ5S2V5XG4gIH0pPy5pc1N0YWxlKCkgPz8gZmFsc2UsIHRydWUsIChlMikgPT4gZTIucXVlcnkucXVlcnlIYXNoID09PSBwcm9wcy5xdWVyeS5xdWVyeUhhc2gpO1xuICBjb25zdCBvYnNlcnZlcnMgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiBxdWVyeUNhY2hlKCkuZmluZCh7XG4gICAgcXVlcnlLZXk6IHByb3BzLnF1ZXJ5LnF1ZXJ5S2V5XG4gIH0pPy5nZXRPYnNlcnZlcnNDb3VudCgpID8/IDAsIHRydWUsIChlMikgPT4gZTIucXVlcnkucXVlcnlIYXNoID09PSBwcm9wcy5xdWVyeS5xdWVyeUhhc2gpO1xuICBjb25zdCBjb2xvciA9IGNyZWF0ZU1lbW8oKCkgPT4gZ2V0UXVlcnlTdGF0dXNDb2xvcih7XG4gICAgcXVlcnlTdGF0ZTogcXVlcnlTdGF0ZSgpLFxuICAgIG9ic2VydmVyQ291bnQ6IG9ic2VydmVycygpLFxuICAgIGlzU3RhbGU6IGlzU3RhbGUoKVxuICB9KSk7XG4gIGNvbnN0IGdldE9ic2VydmVyQ291bnRDb2xvclN0eWxlcyA9ICgpID0+IHtcbiAgICBpZiAoY29sb3IoKSA9PT0gXCJncmF5XCIpIHtcbiAgICAgIHJldHVybiBjc3NgXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzIwMF0sIGNvbG9yc1tjb2xvcigpXVs3MDBdKX07XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs3MDBdLCBjb2xvcnNbY29sb3IoKV1bMzAwXSl9O1xuICAgICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzIwMF0gKyBhbHBoYVs4MF0sIGNvbG9yc1tjb2xvcigpXVs5MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bODAwXSwgY29sb3JzW2NvbG9yKCldWzMwMF0pfTtcbiAgICBgO1xuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBxdWVyeVN0YXRlKCk7XG4gICAgfSxcbiAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICB2YXIgX2VsJDQ5ID0gX3RtcGwkMjQyKCksIF9lbCQ1MCA9IF9lbCQ0OS5maXJzdENoaWxkLCBfZWwkNTEgPSBfZWwkNTAubmV4dFNpYmxpbmc7XG4gICAgICBfZWwkNDkuJCRjbGljayA9ICgpID0+IHNldFNlbGVjdGVkUXVlcnlIYXNoKHByb3BzLnF1ZXJ5LnF1ZXJ5SGFzaCA9PT0gc2VsZWN0ZWRRdWVyeUhhc2goKSA/IG51bGwgOiBwcm9wcy5xdWVyeS5xdWVyeUhhc2gpO1xuICAgICAgaW5zZXJ0KF9lbCQ1MCwgb2JzZXJ2ZXJzKTtcbiAgICAgIGluc2VydChfZWwkNTEsICgpID0+IHByb3BzLnF1ZXJ5LnF1ZXJ5SGFzaCk7XG4gICAgICBpbnNlcnQoX2VsJDQ5LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gaXNEaXNhYmxlZCgpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIF90bXBsJDIzMigpO1xuICAgICAgICB9XG4gICAgICB9KSwgbnVsbCk7XG4gICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF9wJCkgPT4ge1xuICAgICAgICB2YXIgX3YkMjYgPSBjbHN4KHN0eWxlcygpLnF1ZXJ5Um93LCBzZWxlY3RlZFF1ZXJ5SGFzaCgpID09PSBwcm9wcy5xdWVyeS5xdWVyeUhhc2ggJiYgc3R5bGVzKCkuc2VsZWN0ZWRRdWVyeVJvdywgXCJ0c3FkLXF1ZXJ5LXJvd1wiKSwgX3YkMjcgPSBgUXVlcnkga2V5ICR7cHJvcHMucXVlcnkucXVlcnlIYXNofWAsIF92JDI4ID0gY2xzeChnZXRPYnNlcnZlckNvdW50Q29sb3JTdHlsZXMoKSwgXCJ0c3FkLXF1ZXJ5LW9ic2VydmVyLWNvdW50XCIpO1xuICAgICAgICBfdiQyNiAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQ0OSwgX3AkLmUgPSBfdiQyNik7XG4gICAgICAgIF92JDI3ICE9PSBfcCQudCAmJiBzZXRBdHRyaWJ1dGUoX2VsJDQ5LCBcImFyaWEtbGFiZWxcIiwgX3AkLnQgPSBfdiQyNyk7XG4gICAgICAgIF92JDI4ICE9PSBfcCQuYSAmJiBjbGFzc05hbWUoX2VsJDUwLCBfcCQuYSA9IF92JDI4KTtcbiAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgIH0sIHtcbiAgICAgICAgZTogdm9pZCAwLFxuICAgICAgICB0OiB2b2lkIDAsXG4gICAgICAgIGE6IHZvaWQgMFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gX2VsJDQ5O1xuICAgIH1cbiAgfSk7XG59O1xudmFyIE11dGF0aW9uUm93ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBjb25zdCB7XG4gICAgY29sb3JzLFxuICAgIGFscGhhXG4gIH0gPSB0b2tlbnM7XG4gIGNvbnN0IHQyID0gKGxpZ2h0LCBkYXJrKSA9PiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmsgOiBsaWdodDtcbiAgY29uc3QgbXV0YXRpb25TdGF0ZSA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCk7XG4gICAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbnMuZmluZCgobSkgPT4gbS5tdXRhdGlvbklkID09PSBwcm9wcy5tdXRhdGlvbi5tdXRhdGlvbklkKTtcbiAgICByZXR1cm4gbXV0YXRpb24/LnN0YXRlO1xuICB9KTtcbiAgY29uc3QgaXNQYXVzZWQgPSBjcmVhdGVTdWJzY3JpYmVUb011dGF0aW9uQ2FjaGVCYXRjaGVyKChtdXRhdGlvbkNhY2hlKSA9PiB7XG4gICAgY29uc3QgbXV0YXRpb25zID0gbXV0YXRpb25DYWNoZSgpLmdldEFsbCgpO1xuICAgIGNvbnN0IG11dGF0aW9uID0gbXV0YXRpb25zLmZpbmQoKG0pID0+IG0ubXV0YXRpb25JZCA9PT0gcHJvcHMubXV0YXRpb24ubXV0YXRpb25JZCk7XG4gICAgaWYgKCFtdXRhdGlvbikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBtdXRhdGlvbi5zdGF0ZS5pc1BhdXNlZDtcbiAgfSk7XG4gIGNvbnN0IHN0YXR1cyA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCk7XG4gICAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbnMuZmluZCgobSkgPT4gbS5tdXRhdGlvbklkID09PSBwcm9wcy5tdXRhdGlvbi5tdXRhdGlvbklkKTtcbiAgICBpZiAoIW11dGF0aW9uKSByZXR1cm4gXCJpZGxlXCI7XG4gICAgcmV0dXJuIG11dGF0aW9uLnN0YXRlLnN0YXR1cztcbiAgfSk7XG4gIGNvbnN0IGNvbG9yID0gY3JlYXRlTWVtbygoKSA9PiBnZXRNdXRhdGlvblN0YXR1c0NvbG9yKHtcbiAgICBpc1BhdXNlZDogaXNQYXVzZWQoKSxcbiAgICBzdGF0dXM6IHN0YXR1cygpXG4gIH0pKTtcbiAgY29uc3QgZ2V0T2JzZXJ2ZXJDb3VudENvbG9yU3R5bGVzID0gKCkgPT4ge1xuICAgIGlmIChjb2xvcigpID09PSBcImdyYXlcIikge1xuICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bMjAwXSwgY29sb3JzW2NvbG9yKCldWzcwMF0pfTtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzcwMF0sIGNvbG9yc1tjb2xvcigpXVszMDBdKX07XG4gICAgICBgO1xuICAgIH1cbiAgICByZXR1cm4gY3NzYFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bMjAwXSArIGFscGhhWzgwXSwgY29sb3JzW2NvbG9yKCldWzkwMF0pfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs4MDBdLCBjb2xvcnNbY29sb3IoKV1bMzAwXSl9O1xuICAgIGA7XG4gIH07XG4gIHJldHVybiBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgIGdldCB3aGVuKCkge1xuICAgICAgcmV0dXJuIG11dGF0aW9uU3RhdGUoKTtcbiAgICB9LFxuICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgIHZhciBfZWwkNTMgPSBfdG1wbCQyNDIoKSwgX2VsJDU0ID0gX2VsJDUzLmZpcnN0Q2hpbGQsIF9lbCQ1NSA9IF9lbCQ1NC5uZXh0U2libGluZztcbiAgICAgIF9lbCQ1My4kJGNsaWNrID0gKCkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZE11dGF0aW9uSWQocHJvcHMubXV0YXRpb24ubXV0YXRpb25JZCA9PT0gc2VsZWN0ZWRNdXRhdGlvbklkKCkgPyBudWxsIDogcHJvcHMubXV0YXRpb24ubXV0YXRpb25JZCk7XG4gICAgICB9O1xuICAgICAgaW5zZXJ0KF9lbCQ1NCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbG9yKCkgPT09IFwicHVycGxlXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFBhdXNlQ2lyY2xlLCB7fSk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkNTQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBjb2xvcigpID09PSBcImdyZWVuXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KENoZWNrQ2lyY2xlLCB7fSk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkNTQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBjb2xvcigpID09PSBcInJlZFwiO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChYQ2lyY2xlLCB7fSk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkNTQsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBjb2xvcigpID09PSBcInllbGxvd1wiO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChMb2FkaW5nQ2lyY2xlLCB7fSk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkNTUsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBwcm9wcy5tdXRhdGlvbi5vcHRpb25zLm11dGF0aW9uS2V5O1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIFtjcmVhdGVNZW1vKCgpID0+IEpTT04uc3RyaW5naWZ5KHByb3BzLm11dGF0aW9uLm9wdGlvbnMubXV0YXRpb25LZXkpKSwgXCIgLVwiLCBcIiBcIl07XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkNTUsICgpID0+IG5ldyBEYXRlKHByb3BzLm11dGF0aW9uLnN0YXRlLnN1Ym1pdHRlZEF0KS50b0xvY2FsZVN0cmluZygpLCBudWxsKTtcbiAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgIHZhciBfdiQyOSA9IGNsc3goc3R5bGVzKCkucXVlcnlSb3csIHNlbGVjdGVkTXV0YXRpb25JZCgpID09PSBwcm9wcy5tdXRhdGlvbi5tdXRhdGlvbklkICYmIHN0eWxlcygpLnNlbGVjdGVkUXVlcnlSb3csIFwidHNxZC1xdWVyeS1yb3dcIiksIF92JDMwID0gYE11dGF0aW9uIHN1Ym1pdHRlZCBhdCAke25ldyBEYXRlKHByb3BzLm11dGF0aW9uLnN0YXRlLnN1Ym1pdHRlZEF0KS50b0xvY2FsZVN0cmluZygpfWAsIF92JDMxID0gY2xzeChnZXRPYnNlcnZlckNvdW50Q29sb3JTdHlsZXMoKSwgXCJ0c3FkLXF1ZXJ5LW9ic2VydmVyLWNvdW50XCIpO1xuICAgICAgICBfdiQyOSAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQ1MywgX3AkLmUgPSBfdiQyOSk7XG4gICAgICAgIF92JDMwICE9PSBfcCQudCAmJiBzZXRBdHRyaWJ1dGUoX2VsJDUzLCBcImFyaWEtbGFiZWxcIiwgX3AkLnQgPSBfdiQzMCk7XG4gICAgICAgIF92JDMxICE9PSBfcCQuYSAmJiBjbGFzc05hbWUoX2VsJDU0LCBfcCQuYSA9IF92JDMxKTtcbiAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgIH0sIHtcbiAgICAgICAgZTogdm9pZCAwLFxuICAgICAgICB0OiB2b2lkIDAsXG4gICAgICAgIGE6IHZvaWQgMFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gX2VsJDUzO1xuICAgIH1cbiAgfSk7XG59O1xudmFyIFF1ZXJ5U3RhdHVzQ291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YWxlID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbHRlcigocSkgPT4gZ2V0UXVlcnlTdGF0dXNMYWJlbChxKSA9PT0gXCJzdGFsZVwiKS5sZW5ndGgpO1xuICBjb25zdCBmcmVzaCA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maWx0ZXIoKHEpID0+IGdldFF1ZXJ5U3RhdHVzTGFiZWwocSkgPT09IFwiZnJlc2hcIikubGVuZ3RoKTtcbiAgY29uc3QgZmV0Y2hpbmcgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiBxdWVyeUNhY2hlKCkuZ2V0QWxsKCkuZmlsdGVyKChxKSA9PiBnZXRRdWVyeVN0YXR1c0xhYmVsKHEpID09PSBcImZldGNoaW5nXCIpLmxlbmd0aCk7XG4gIGNvbnN0IHBhdXNlZCA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maWx0ZXIoKHEpID0+IGdldFF1ZXJ5U3RhdHVzTGFiZWwocSkgPT09IFwicGF1c2VkXCIpLmxlbmd0aCk7XG4gIGNvbnN0IGluYWN0aXZlID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbHRlcigocSkgPT4gZ2V0UXVlcnlTdGF0dXNMYWJlbChxKSA9PT0gXCJpbmFjdGl2ZVwiKS5sZW5ndGgpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlczIoY3NzKSA6IGxpZ2h0U3R5bGVzMihjc3MpO1xuICB9KTtcbiAgcmV0dXJuICgoKSA9PiB7XG4gICAgdmFyIF9lbCQ1NiA9IF90bXBsJDI3KCk7XG4gICAgaW5zZXJ0KF9lbCQ1NiwgY3JlYXRlQ29tcG9uZW50KFF1ZXJ5U3RhdHVzLCB7XG4gICAgICBsYWJlbDogXCJGcmVzaFwiLFxuICAgICAgY29sb3I6IFwiZ3JlZW5cIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIGZyZXNoKCk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkNTYsIGNyZWF0ZUNvbXBvbmVudChRdWVyeVN0YXR1cywge1xuICAgICAgbGFiZWw6IFwiRmV0Y2hpbmdcIixcbiAgICAgIGNvbG9yOiBcImJsdWVcIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIGZldGNoaW5nKCk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkNTYsIGNyZWF0ZUNvbXBvbmVudChRdWVyeVN0YXR1cywge1xuICAgICAgbGFiZWw6IFwiUGF1c2VkXCIsXG4gICAgICBjb2xvcjogXCJwdXJwbGVcIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHBhdXNlZCgpO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDU2LCBjcmVhdGVDb21wb25lbnQoUXVlcnlTdGF0dXMsIHtcbiAgICAgIGxhYmVsOiBcIlN0YWxlXCIsXG4gICAgICBjb2xvcjogXCJ5ZWxsb3dcIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHN0YWxlKCk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGluc2VydChfZWwkNTYsIGNyZWF0ZUNvbXBvbmVudChRdWVyeVN0YXR1cywge1xuICAgICAgbGFiZWw6IFwiSW5hY3RpdmVcIixcbiAgICAgIGNvbG9yOiBcImdyYXlcIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIGluYWN0aXZlKCk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDU2LCBjbHN4KHN0eWxlcygpLnF1ZXJ5U3RhdHVzQ29udGFpbmVyLCBcInRzcWQtcXVlcnktc3RhdHVzLWNvbnRhaW5lclwiKSkpO1xuICAgIHJldHVybiBfZWwkNTY7XG4gIH0pKCk7XG59O1xudmFyIE11dGF0aW9uU3RhdHVzQ291bnQgPSAoKSA9PiB7XG4gIGNvbnN0IHN1Y2Nlc3MgPSBjcmVhdGVTdWJzY3JpYmVUb011dGF0aW9uQ2FjaGVCYXRjaGVyKChtdXRhdGlvbkNhY2hlKSA9PiBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCkuZmlsdGVyKChtKSA9PiBnZXRNdXRhdGlvblN0YXR1c0NvbG9yKHtcbiAgICBpc1BhdXNlZDogbS5zdGF0ZS5pc1BhdXNlZCxcbiAgICBzdGF0dXM6IG0uc3RhdGUuc3RhdHVzXG4gIH0pID09PSBcImdyZWVuXCIpLmxlbmd0aCk7XG4gIGNvbnN0IHBlbmRpbmcgPSBjcmVhdGVTdWJzY3JpYmVUb011dGF0aW9uQ2FjaGVCYXRjaGVyKChtdXRhdGlvbkNhY2hlKSA9PiBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCkuZmlsdGVyKChtKSA9PiBnZXRNdXRhdGlvblN0YXR1c0NvbG9yKHtcbiAgICBpc1BhdXNlZDogbS5zdGF0ZS5pc1BhdXNlZCxcbiAgICBzdGF0dXM6IG0uc3RhdGUuc3RhdHVzXG4gIH0pID09PSBcInllbGxvd1wiKS5sZW5ndGgpO1xuICBjb25zdCBwYXVzZWQgPSBjcmVhdGVTdWJzY3JpYmVUb011dGF0aW9uQ2FjaGVCYXRjaGVyKChtdXRhdGlvbkNhY2hlKSA9PiBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCkuZmlsdGVyKChtKSA9PiBnZXRNdXRhdGlvblN0YXR1c0NvbG9yKHtcbiAgICBpc1BhdXNlZDogbS5zdGF0ZS5pc1BhdXNlZCxcbiAgICBzdGF0dXM6IG0uc3RhdGUuc3RhdHVzXG4gIH0pID09PSBcInB1cnBsZVwiKS5sZW5ndGgpO1xuICBjb25zdCBlcnJvciA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IG11dGF0aW9uQ2FjaGUoKS5nZXRBbGwoKS5maWx0ZXIoKG0pID0+IGdldE11dGF0aW9uU3RhdHVzQ29sb3Ioe1xuICAgIGlzUGF1c2VkOiBtLnN0YXRlLmlzUGF1c2VkLFxuICAgIHN0YXR1czogbS5zdGF0ZS5zdGF0dXNcbiAgfSkgPT09IFwicmVkXCIpLmxlbmd0aCk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICByZXR1cm4gKCgpID0+IHtcbiAgICB2YXIgX2VsJDU3ID0gX3RtcGwkMjcoKTtcbiAgICBpbnNlcnQoX2VsJDU3LCBjcmVhdGVDb21wb25lbnQoUXVlcnlTdGF0dXMsIHtcbiAgICAgIGxhYmVsOiBcIlBhdXNlZFwiLFxuICAgICAgY29sb3I6IFwicHVycGxlXCIsXG4gICAgICBnZXQgY291bnQoKSB7XG4gICAgICAgIHJldHVybiBwYXVzZWQoKTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQ1NywgY3JlYXRlQ29tcG9uZW50KFF1ZXJ5U3RhdHVzLCB7XG4gICAgICBsYWJlbDogXCJQZW5kaW5nXCIsXG4gICAgICBjb2xvcjogXCJ5ZWxsb3dcIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHBlbmRpbmcoKTtcbiAgICAgIH1cbiAgICB9KSwgbnVsbCk7XG4gICAgaW5zZXJ0KF9lbCQ1NywgY3JlYXRlQ29tcG9uZW50KFF1ZXJ5U3RhdHVzLCB7XG4gICAgICBsYWJlbDogXCJTdWNjZXNzXCIsXG4gICAgICBjb2xvcjogXCJncmVlblwiLFxuICAgICAgZ2V0IGNvdW50KCkge1xuICAgICAgICByZXR1cm4gc3VjY2VzcygpO1xuICAgICAgfVxuICAgIH0pLCBudWxsKTtcbiAgICBpbnNlcnQoX2VsJDU3LCBjcmVhdGVDb21wb25lbnQoUXVlcnlTdGF0dXMsIHtcbiAgICAgIGxhYmVsOiBcIkVycm9yXCIsXG4gICAgICBjb2xvcjogXCJyZWRcIixcbiAgICAgIGdldCBjb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIGVycm9yKCk7XG4gICAgICB9XG4gICAgfSksIG51bGwpO1xuICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBjbGFzc05hbWUoX2VsJDU3LCBjbHN4KHN0eWxlcygpLnF1ZXJ5U3RhdHVzQ29udGFpbmVyLCBcInRzcWQtcXVlcnktc3RhdHVzLWNvbnRhaW5lclwiKSkpO1xuICAgIHJldHVybiBfZWwkNTc7XG4gIH0pKCk7XG59O1xudmFyIFF1ZXJ5U3RhdHVzID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgY3NzID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXQgPyB1LmJpbmQoe1xuICAgIHRhcmdldDogdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5zaGFkb3dET01UYXJnZXRcbiAgfSkgOiB1O1xuICBjb25zdCBzdHlsZXMgPSBjcmVhdGVNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrU3R5bGVzMihjc3MpIDogbGlnaHRTdHlsZXMyKGNzcyk7XG4gIH0pO1xuICBjb25zdCB7XG4gICAgY29sb3JzLFxuICAgIGFscGhhXG4gIH0gPSB0b2tlbnM7XG4gIGNvbnN0IHQyID0gKGxpZ2h0LCBkYXJrKSA9PiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmsgOiBsaWdodDtcbiAgbGV0IHRhZ1JlZjtcbiAgY29uc3QgW21vdXNlT3Zlciwgc2V0TW91c2VPdmVyXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IFtmb2N1c2VkLCBzZXRGb2N1c2VkXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IHNob3dMYWJlbCA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZFF1ZXJ5SGFzaCgpKSB7XG4gICAgICBpZiAocGFuZWxXaWR0aCgpIDwgZmlyc3RCcmVha3BvaW50ICYmIHBhbmVsV2lkdGgoKSA+IHNlY29uZEJyZWFrcG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFuZWxXaWR0aCgpIDwgc2Vjb25kQnJlYWtwb2ludCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiAoKCkgPT4ge1xuICAgIHZhciBfZWwkNTggPSBfdG1wbCQyNzIoKSwgX2VsJDYwID0gX2VsJDU4LmZpcnN0Q2hpbGQsIF9lbCQ2MiA9IF9lbCQ2MC5uZXh0U2libGluZztcbiAgICB2YXIgX3JlZiQ1ID0gdGFnUmVmO1xuICAgIHR5cGVvZiBfcmVmJDUgPT09IFwiZnVuY3Rpb25cIiA/IHVzZShfcmVmJDUsIF9lbCQ1OCkgOiB0YWdSZWYgPSBfZWwkNTg7XG4gICAgX2VsJDU4LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsICgpID0+IHtcbiAgICAgIHNldE1vdXNlT3ZlcihmYWxzZSk7XG4gICAgICBzZXRGb2N1c2VkKGZhbHNlKTtcbiAgICB9KTtcbiAgICBfZWwkNTguYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIiwgKCkgPT4gc2V0TW91c2VPdmVyKHRydWUpKTtcbiAgICBfZWwkNTguYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgKCkgPT4gc2V0Rm9jdXNlZChmYWxzZSkpO1xuICAgIF9lbCQ1OC5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIiwgKCkgPT4gc2V0Rm9jdXNlZCh0cnVlKSk7XG4gICAgc3ByZWFkKF9lbCQ1OCwgbWVyZ2VQcm9wcyh7XG4gICAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiBzaG93TGFiZWwoKTtcbiAgICAgIH0sXG4gICAgICBnZXQgW1wiY2xhc3NcIl0oKSB7XG4gICAgICAgIHJldHVybiBjbHN4KHN0eWxlcygpLnF1ZXJ5U3RhdHVzVGFnLCAhc2hvd0xhYmVsKCkgJiYgY3NzYFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfSR7YWxwaGFbODBdfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBgLCBcInRzcWQtcXVlcnktc3RhdHVzLXRhZ1wiLCBgdHNxZC1xdWVyeS1zdGF0dXMtdGFnLSR7cHJvcHMubGFiZWwudG9Mb3dlckNhc2UoKX1gKTtcbiAgICAgIH1cbiAgICB9LCAoKSA9PiBtb3VzZU92ZXIoKSB8fCBmb2N1c2VkKCkgPyB7XG4gICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogXCJ0c3FkLXN0YXR1cy10b29sdGlwXCJcbiAgICB9IDoge30pLCBmYWxzZSwgdHJ1ZSk7XG4gICAgaW5zZXJ0KF9lbCQ1OCwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhISFzaG93TGFiZWwoKSkoKSAmJiAobW91c2VPdmVyKCkgfHwgZm9jdXNlZCgpKTtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHZhciBfZWwkNTkgPSBfdG1wbCQyNTIoKTtcbiAgICAgICAgaW5zZXJ0KF9lbCQ1OSwgKCkgPT4gcHJvcHMubGFiZWwpO1xuICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQ1OSwgY2xzeChzdHlsZXMoKS5zdGF0dXNUb29sdGlwLCBcInRzcWQtcXVlcnktc3RhdHVzLXRvb2x0aXBcIikpKTtcbiAgICAgICAgcmV0dXJuIF9lbCQ1OTtcbiAgICAgIH1cbiAgICB9KSwgX2VsJDYwKTtcbiAgICBpbnNlcnQoX2VsJDU4LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgIHJldHVybiBzaG93TGFiZWwoKTtcbiAgICAgIH0sXG4gICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgIHZhciBfZWwkNjEgPSBfdG1wbCQyNjIoKTtcbiAgICAgICAgaW5zZXJ0KF9lbCQ2MSwgKCkgPT4gcHJvcHMubGFiZWwpO1xuICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKCkgPT4gY2xhc3NOYW1lKF9lbCQ2MSwgY2xzeChzdHlsZXMoKS5xdWVyeVN0YXR1c1RhZ0xhYmVsLCBcInRzcWQtcXVlcnktc3RhdHVzLXRhZy1sYWJlbFwiKSkpO1xuICAgICAgICByZXR1cm4gX2VsJDYxO1xuICAgICAgfVxuICAgIH0pLCBfZWwkNjIpO1xuICAgIGluc2VydChfZWwkNjIsICgpID0+IHByb3BzLmNvdW50KTtcbiAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF9wJCkgPT4ge1xuICAgICAgdmFyIF92JDMyID0gY2xzeChjc3NgXG4gICAgICAgICAgICB3aWR0aDogJHt0b2tlbnMuc2l6ZVsxLjVdfTtcbiAgICAgICAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVsxLjVdfTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuZnVsbH07XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Rva2Vucy5jb2xvcnNbcHJvcHMuY29sb3JdWzUwMF19O1xuICAgICAgICAgIGAsIFwidHNxZC1xdWVyeS1zdGF0dXMtdGFnLWRvdFwiKSwgX3YkMzMgPSBjbHN4KHN0eWxlcygpLnF1ZXJ5U3RhdHVzQ291bnQsIHByb3BzLmNvdW50ID4gMCAmJiBwcm9wcy5jb2xvciAhPT0gXCJncmF5XCIgJiYgY3NzYFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9yc1twcm9wcy5jb2xvcl1bMTAwXSwgY29sb3JzW3Byb3BzLmNvbG9yXVs5MDBdKX07XG4gICAgICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9yc1twcm9wcy5jb2xvcl1bNzAwXSwgY29sb3JzW3Byb3BzLmNvbG9yXVszMDBdKX07XG4gICAgICAgICAgICBgLCBcInRzcWQtcXVlcnktc3RhdHVzLXRhZy1jb3VudFwiKTtcbiAgICAgIF92JDMyICE9PSBfcCQuZSAmJiBjbGFzc05hbWUoX2VsJDYwLCBfcCQuZSA9IF92JDMyKTtcbiAgICAgIF92JDMzICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDYyLCBfcCQudCA9IF92JDMzKTtcbiAgICAgIHJldHVybiBfcCQ7XG4gICAgfSwge1xuICAgICAgZTogdm9pZCAwLFxuICAgICAgdDogdm9pZCAwXG4gICAgfSk7XG4gICAgcmV0dXJuIF9lbCQ1ODtcbiAgfSkoKTtcbn07XG52YXIgUXVlcnlEZXRhaWxzID0gKCkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGNzcyA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0ID8gdS5iaW5kKHtcbiAgICB0YXJnZXQ6IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuc2hhZG93RE9NVGFyZ2V0XG4gIH0pIDogdTtcbiAgY29uc3Qgc3R5bGVzID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFya1N0eWxlczIoY3NzKSA6IGxpZ2h0U3R5bGVzMihjc3MpO1xuICB9KTtcbiAgY29uc3Qge1xuICAgIGNvbG9yc1xuICB9ID0gdG9rZW5zO1xuICBjb25zdCB0MiA9IChsaWdodCwgZGFyaykgPT4gdGhlbWUoKSA9PT0gXCJkYXJrXCIgPyBkYXJrIDogbGlnaHQ7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQ7XG4gIGNvbnN0IFtyZXN0b3JpbmdMb2FkaW5nLCBzZXRSZXN0b3JpbmdMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSk7XG4gIGNvbnN0IFtkYXRhTW9kZSwgc2V0RGF0YU1vZGVdID0gY3JlYXRlU2lnbmFsKFwidmlld1wiKTtcbiAgY29uc3QgW2RhdGFFZGl0RXJyb3IsIHNldERhdGFFZGl0RXJyb3JdID0gY3JlYXRlU2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgZXJyb3JUeXBlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLmVycm9yVHlwZXMgfHwgW107XG4gIH0pO1xuICBjb25zdCBhY3RpdmVRdWVyeSA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maW5kKChxdWVyeSkgPT4gcXVlcnkucXVlcnlIYXNoID09PSBzZWxlY3RlZFF1ZXJ5SGFzaCgpKSwgZmFsc2UpO1xuICBjb25zdCBhY3RpdmVRdWVyeUZyZXNoID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4ge1xuICAgIHJldHVybiBxdWVyeUNhY2hlKCkuZ2V0QWxsKCkuZmluZCgocXVlcnkpID0+IHF1ZXJ5LnF1ZXJ5SGFzaCA9PT0gc2VsZWN0ZWRRdWVyeUhhc2goKSk7XG4gIH0sIGZhbHNlKTtcbiAgY29uc3QgYWN0aXZlUXVlcnlTdGF0ZSA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maW5kKChxdWVyeSkgPT4gcXVlcnkucXVlcnlIYXNoID09PSBzZWxlY3RlZFF1ZXJ5SGFzaCgpKT8uc3RhdGUsIGZhbHNlKTtcbiAgY29uc3QgYWN0aXZlUXVlcnlTdGF0ZURhdGEgPSBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyKChxdWVyeUNhY2hlKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maW5kKChxdWVyeSkgPT4gcXVlcnkucXVlcnlIYXNoID09PSBzZWxlY3RlZFF1ZXJ5SGFzaCgpKT8uc3RhdGUuZGF0YTtcbiAgfSwgZmFsc2UpO1xuICBjb25zdCBzdGF0dXNMYWJlbCA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maW5kKChxKSA9PiBxLnF1ZXJ5SGFzaCA9PT0gc2VsZWN0ZWRRdWVyeUhhc2goKSk7XG4gICAgaWYgKCFxdWVyeSkgcmV0dXJuIFwiaW5hY3RpdmVcIjtcbiAgICByZXR1cm4gZ2V0UXVlcnlTdGF0dXNMYWJlbChxdWVyeSk7XG4gIH0pO1xuICBjb25zdCBxdWVyeVN0YXR1cyA9IGNyZWF0ZVN1YnNjcmliZVRvUXVlcnlDYWNoZUJhdGNoZXIoKHF1ZXJ5Q2FjaGUpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IHF1ZXJ5Q2FjaGUoKS5nZXRBbGwoKS5maW5kKChxKSA9PiBxLnF1ZXJ5SGFzaCA9PT0gc2VsZWN0ZWRRdWVyeUhhc2goKSk7XG4gICAgaWYgKCFxdWVyeSkgcmV0dXJuIFwicGVuZGluZ1wiO1xuICAgIHJldHVybiBxdWVyeS5zdGF0ZS5zdGF0dXM7XG4gIH0pO1xuICBjb25zdCBvYnNlcnZlckNvdW50ID0gY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlcigocXVlcnlDYWNoZSkgPT4gcXVlcnlDYWNoZSgpLmdldEFsbCgpLmZpbmQoKHF1ZXJ5KSA9PiBxdWVyeS5xdWVyeUhhc2ggPT09IHNlbGVjdGVkUXVlcnlIYXNoKCkpPy5nZXRPYnNlcnZlcnNDb3VudCgpID8/IDApO1xuICBjb25zdCBjb2xvciA9IGNyZWF0ZU1lbW8oKCkgPT4gZ2V0UXVlcnlTdGF0dXNDb2xvckJ5TGFiZWwoc3RhdHVzTGFiZWwoKSkpO1xuICBjb25zdCBoYW5kbGVSZWZldGNoID0gKCkgPT4ge1xuICAgIGNvbnN0IHByb21pc2UgPSBhY3RpdmVRdWVyeSgpPy5mZXRjaCgpO1xuICAgIHByb21pc2U/LmNhdGNoKCgpID0+IHtcbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgdHJpZ2dlckVycm9yID0gKGVycm9yVHlwZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gZXJyb3JUeXBlPy5pbml0aWFsaXplcihhY3RpdmVRdWVyeSgpKSA/PyBuZXcgRXJyb3IoXCJVbmtub3duIGVycm9yIGZyb20gZGV2dG9vbHNcIik7XG4gICAgY29uc3QgX19wcmV2aW91c1F1ZXJ5T3B0aW9ucyA9IGFjdGl2ZVF1ZXJ5KCkub3B0aW9ucztcbiAgICBhY3RpdmVRdWVyeSgpLnNldFN0YXRlKHtcbiAgICAgIHN0YXR1czogXCJlcnJvclwiLFxuICAgICAgZXJyb3IsXG4gICAgICBmZXRjaE1ldGE6IHtcbiAgICAgICAgLi4uYWN0aXZlUXVlcnkoKS5zdGF0ZS5mZXRjaE1ldGEsXG4gICAgICAgIF9fcHJldmlvdXNRdWVyeU9wdGlvbnNcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgcmVzdG9yZVF1ZXJ5QWZ0ZXJMb2FkaW5nT3JFcnJvciA9ICgpID0+IHtcbiAgICBjb25zdCBhY3RpdmVRdWVyeVZhbCA9IGFjdGl2ZVF1ZXJ5KCk7XG4gICAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IGFjdGl2ZVF1ZXJ5VmFsLnN0YXRlO1xuICAgIGNvbnN0IHByZXZpb3VzT3B0aW9ucyA9IGFjdGl2ZVF1ZXJ5VmFsLnN0YXRlLmZldGNoTWV0YSA/IGFjdGl2ZVF1ZXJ5VmFsLnN0YXRlLmZldGNoTWV0YS5fX3ByZXZpb3VzUXVlcnlPcHRpb25zIDogbnVsbDtcbiAgICBhY3RpdmVRdWVyeVZhbC5jYW5jZWwoe1xuICAgICAgc2lsZW50OiB0cnVlXG4gICAgfSk7XG4gICAgYWN0aXZlUXVlcnlWYWwuc2V0U3RhdGUoe1xuICAgICAgLi4ucHJldmlvdXNTdGF0ZSxcbiAgICAgIGZldGNoU3RhdHVzOiBcImlkbGVcIixcbiAgICAgIGZldGNoTWV0YTogbnVsbFxuICAgIH0pO1xuICAgIGlmIChwcmV2aW91c09wdGlvbnMpIHtcbiAgICAgIGFjdGl2ZVF1ZXJ5VmFsLmZldGNoKHByZXZpb3VzT3B0aW9ucyk7XG4gICAgfVxuICB9O1xuICBjcmVhdGVFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzdGF0dXNMYWJlbCgpICE9PSBcImZldGNoaW5nXCIpIHtcbiAgICAgIHNldFJlc3RvcmluZ0xvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGdldFF1ZXJ5U3RhdHVzQ29sb3JzID0gKCkgPT4ge1xuICAgIGlmIChjb2xvcigpID09PSBcImdyYXlcIikge1xuICAgICAgcmV0dXJuIGNzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bMjAwXSwgY29sb3JzW2NvbG9yKCldWzcwMF0pfTtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzcwMF0sIGNvbG9yc1tjb2xvcigpXVszMDBdKX07XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNDAwXSwgY29sb3JzW2NvbG9yKCldWzYwMF0pfTtcbiAgICAgIGA7XG4gICAgfVxuICAgIHJldHVybiBjc3NgXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVsxMDBdLCBjb2xvcnNbY29sb3IoKV1bOTAwXSl9O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzcwMF0sIGNvbG9yc1tjb2xvcigpXVszMDBdKX07XG4gICAgICBib3JkZXItY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzQwMF0sIGNvbG9yc1tjb2xvcigpXVs2MDBdKX07XG4gICAgYDtcbiAgfTtcbiAgcmV0dXJuIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgZ2V0IHdoZW4oKSB7XG4gICAgICByZXR1cm4gY3JlYXRlTWVtbygoKSA9PiAhIWFjdGl2ZVF1ZXJ5KCkpKCkgJiYgYWN0aXZlUXVlcnlTdGF0ZSgpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgdmFyIF9lbCQ2MyA9IF90bXBsJDMyMigpLCBfZWwkNjQgPSBfZWwkNjMuZmlyc3RDaGlsZCwgX2VsJDY1ID0gX2VsJDY0Lm5leHRTaWJsaW5nLCBfZWwkNjYgPSBfZWwkNjUuZmlyc3RDaGlsZCwgX2VsJDY3ID0gX2VsJDY2LmZpcnN0Q2hpbGQsIF9lbCQ2OCA9IF9lbCQ2Ny5maXJzdENoaWxkLCBfZWwkNjkgPSBfZWwkNjcubmV4dFNpYmxpbmcsIF9lbCQ3MCA9IF9lbCQ2Ni5uZXh0U2libGluZywgX2VsJDcxID0gX2VsJDcwLmZpcnN0Q2hpbGQsIF9lbCQ3MiA9IF9lbCQ3MS5uZXh0U2libGluZywgX2VsJDczID0gX2VsJDcwLm5leHRTaWJsaW5nLCBfZWwkNzQgPSBfZWwkNzMuZmlyc3RDaGlsZCwgX2VsJDc1ID0gX2VsJDc0Lm5leHRTaWJsaW5nLCBfZWwkNzYgPSBfZWwkNjUubmV4dFNpYmxpbmcsIF9lbCQ3NyA9IF9lbCQ3Ni5uZXh0U2libGluZywgX2VsJDc4ID0gX2VsJDc3LmZpcnN0Q2hpbGQsIF9lbCQ3OSA9IF9lbCQ3OC5maXJzdENoaWxkLCBfZWwkODAgPSBfZWwkNzgubmV4dFNpYmxpbmcsIF9lbCQ4MSA9IF9lbCQ4MC5maXJzdENoaWxkLCBfZWwkODIgPSBfZWwkODAubmV4dFNpYmxpbmcsIF9lbCQ4MyA9IF9lbCQ4Mi5maXJzdENoaWxkLCBfZWwkODQgPSBfZWwkODIubmV4dFNpYmxpbmcsIF9lbCQ4NSA9IF9lbCQ4NC5maXJzdENoaWxkLCBfZWwkODYgPSBfZWwkODQubmV4dFNpYmxpbmcsIF9lbCQ4NyA9IF9lbCQ4Ni5maXJzdENoaWxkLCBfZWwkODggPSBfZWwkODcubmV4dFNpYmxpbmcsIF9lbCQ5NyA9IF9lbCQ3Ny5uZXh0U2libGluZzsgX2VsJDk3LmZpcnN0Q2hpbGQ7IHZhciBfZWwkMTA3ID0gX2VsJDk3Lm5leHRTaWJsaW5nLCBfZWwkMTA4ID0gX2VsJDEwNy5uZXh0U2libGluZztcbiAgICAgIGluc2VydChfZWwkNjgsICgpID0+IGRpc3BsYXlWYWx1ZShhY3RpdmVRdWVyeSgpLnF1ZXJ5S2V5LCB0cnVlKSk7XG4gICAgICBpbnNlcnQoX2VsJDY5LCBzdGF0dXNMYWJlbCk7XG4gICAgICBpbnNlcnQoX2VsJDcyLCBvYnNlcnZlckNvdW50KTtcbiAgICAgIGluc2VydChfZWwkNzUsICgpID0+IG5ldyBEYXRlKGFjdGl2ZVF1ZXJ5U3RhdGUoKS5kYXRhVXBkYXRlZEF0KS50b0xvY2FsZVRpbWVTdHJpbmcoKSk7XG4gICAgICBfZWwkNzguJCRjbGljayA9IGhhbmRsZVJlZmV0Y2g7XG4gICAgICBfZWwkODAuJCRjbGljayA9ICgpID0+IHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKGFjdGl2ZVF1ZXJ5KCkpO1xuICAgICAgX2VsJDgyLiQkY2xpY2sgPSAoKSA9PiBxdWVyeUNsaWVudC5yZXNldFF1ZXJpZXMoYWN0aXZlUXVlcnkoKSk7XG4gICAgICBfZWwkODQuJCRjbGljayA9ICgpID0+IHtcbiAgICAgICAgcXVlcnlDbGllbnQucmVtb3ZlUXVlcmllcyhhY3RpdmVRdWVyeSgpKTtcbiAgICAgICAgc2V0U2VsZWN0ZWRRdWVyeUhhc2gobnVsbCk7XG4gICAgICB9O1xuICAgICAgX2VsJDg2LiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIGlmIChhY3RpdmVRdWVyeSgpPy5zdGF0ZS5kYXRhID09PSB2b2lkIDApIHtcbiAgICAgICAgICBzZXRSZXN0b3JpbmdMb2FkaW5nKHRydWUpO1xuICAgICAgICAgIHJlc3RvcmVRdWVyeUFmdGVyTG9hZGluZ09yRXJyb3IoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVRdWVyeVZhbCA9IGFjdGl2ZVF1ZXJ5KCk7XG4gICAgICAgICAgaWYgKCFhY3RpdmVRdWVyeVZhbCkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IF9fcHJldmlvdXNRdWVyeU9wdGlvbnMgPSBhY3RpdmVRdWVyeVZhbC5vcHRpb25zO1xuICAgICAgICAgIGFjdGl2ZVF1ZXJ5VmFsLmZldGNoKHtcbiAgICAgICAgICAgIC4uLl9fcHJldmlvdXNRdWVyeU9wdGlvbnMsXG4gICAgICAgICAgICBxdWVyeUZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgoKSA9PiB7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdjVGltZTogLTFcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhY3RpdmVRdWVyeVZhbC5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBkYXRhOiB2b2lkIDAsXG4gICAgICAgICAgICBzdGF0dXM6IFwicGVuZGluZ1wiLFxuICAgICAgICAgICAgZmV0Y2hNZXRhOiB7XG4gICAgICAgICAgICAgIC4uLmFjdGl2ZVF1ZXJ5VmFsLnN0YXRlLmZldGNoTWV0YSxcbiAgICAgICAgICAgICAgX19wcmV2aW91c1F1ZXJ5T3B0aW9uc1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaW5zZXJ0KF9lbCQ4NiwgKCkgPT4gcXVlcnlTdGF0dXMoKSA9PT0gXCJwZW5kaW5nXCIgPyBcIlJlc3RvcmVcIiA6IFwiVHJpZ2dlclwiLCBfZWwkODgpO1xuICAgICAgaW5zZXJ0KF9lbCQ3NywgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGVycm9yVHlwZXMoKS5sZW5ndGggPT09IDAgfHwgcXVlcnlTdGF0dXMoKSA9PT0gXCJlcnJvclwiO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgdmFyIF9lbCQ4OSA9IF90bXBsJDI4KCksIF9lbCQ5MCA9IF9lbCQ4OS5maXJzdENoaWxkLCBfZWwkOTEgPSBfZWwkOTAubmV4dFNpYmxpbmc7XG4gICAgICAgICAgX2VsJDg5LiQkY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZVF1ZXJ5KCkuc3RhdGUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgdHJpZ2dlckVycm9yKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBxdWVyeUNsaWVudC5yZXNldFF1ZXJpZXMoYWN0aXZlUXVlcnkoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBpbnNlcnQoX2VsJDg5LCAoKSA9PiBxdWVyeVN0YXR1cygpID09PSBcImVycm9yXCIgPyBcIlJlc3RvcmVcIiA6IFwiVHJpZ2dlclwiLCBfZWwkOTEpO1xuICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgICAgICB2YXIgX3YkMzQgPSBjbHN4KGNzc2BcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5yZWRbNTAwXSwgY29sb3JzLnJlZFs0MDBdKX07XG4gICAgICAgICAgICAgICAgYCwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9uLWVycm9yXCIpLCBfdiQzNSA9IHF1ZXJ5U3RhdHVzKCkgPT09IFwicGVuZGluZ1wiLCBfdiQzNiA9IGNzc2BcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLnJlZFs1MDBdLCBjb2xvcnMucmVkWzQwMF0pfTtcbiAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgX3YkMzQgIT09IF9wJC5lICYmIGNsYXNzTmFtZShfZWwkODksIF9wJC5lID0gX3YkMzQpO1xuICAgICAgICAgICAgX3YkMzUgIT09IF9wJC50ICYmIChfZWwkODkuZGlzYWJsZWQgPSBfcCQudCA9IF92JDM1KTtcbiAgICAgICAgICAgIF92JDM2ICE9PSBfcCQuYSAmJiBjbGFzc05hbWUoX2VsJDkwLCBfcCQuYSA9IF92JDM2KTtcbiAgICAgICAgICAgIHJldHVybiBfcCQ7XG4gICAgICAgICAgfSwge1xuICAgICAgICAgICAgZTogdm9pZCAwLFxuICAgICAgICAgICAgdDogdm9pZCAwLFxuICAgICAgICAgICAgYTogdm9pZCAwXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIF9lbCQ4OTtcbiAgICAgICAgfVxuICAgICAgfSksIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQ3NywgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuICEoZXJyb3JUeXBlcygpLmxlbmd0aCA9PT0gMCB8fCBxdWVyeVN0YXR1cygpID09PSBcImVycm9yXCIpO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgdmFyIF9lbCQ5MiA9IF90bXBsJDI5KCksIF9lbCQ5MyA9IF9lbCQ5Mi5maXJzdENoaWxkLCBfZWwkOTQgPSBfZWwkOTMubmV4dFNpYmxpbmcsIF9lbCQ5NSA9IF9lbCQ5NC5uZXh0U2libGluZzsgX2VsJDk1LmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgX2VsJDk1LmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGUyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclR5cGUgPSBlcnJvclR5cGVzKCkuZmluZCgoZXQpID0+IGV0Lm5hbWUgPT09IGUyLmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgdHJpZ2dlckVycm9yKGVycm9yVHlwZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQ5NSwgY3JlYXRlQ29tcG9uZW50KEZvciwge1xuICAgICAgICAgICAgZ2V0IGVhY2goKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlcnJvclR5cGVzKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2hpbGRyZW46IChlcnJvclR5cGUpID0+ICgoKSA9PiB7XG4gICAgICAgICAgICAgIHZhciBfZWwkMTA5ID0gX3RtcGwkMzMyKCk7XG4gICAgICAgICAgICAgIGluc2VydChfZWwkMTA5LCAoKSA9PiBlcnJvclR5cGUubmFtZSk7XG4gICAgICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBfZWwkMTA5LnZhbHVlID0gZXJyb3JUeXBlLm5hbWUpO1xuICAgICAgICAgICAgICByZXR1cm4gX2VsJDEwOTtcbiAgICAgICAgICAgIH0pKClcbiAgICAgICAgICB9KSwgbnVsbCk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQ5MiwgY3JlYXRlQ29tcG9uZW50KENoZXZyb25Eb3duLCB7fSksIG51bGwpO1xuICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgICAgICB2YXIgX3YkMzcgPSBjbHN4KHN0eWxlcygpLmFjdGlvbnNTZWxlY3QsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbnMtYnRuXCIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbi1lcnJvci1tdWx0aXBsZVwiKSwgX3YkMzggPSBjc3NgXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Rva2Vucy5jb2xvcnMucmVkWzQwMF19O1xuICAgICAgICAgICAgICAgIGAsIF92JDM5ID0gcXVlcnlTdGF0dXMoKSA9PT0gXCJwZW5kaW5nXCI7XG4gICAgICAgICAgICBfdiQzNyAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQ5MiwgX3AkLmUgPSBfdiQzNyk7XG4gICAgICAgICAgICBfdiQzOCAhPT0gX3AkLnQgJiYgY2xhc3NOYW1lKF9lbCQ5MywgX3AkLnQgPSBfdiQzOCk7XG4gICAgICAgICAgICBfdiQzOSAhPT0gX3AkLmEgJiYgKF9lbCQ5NS5kaXNhYmxlZCA9IF9wJC5hID0gX3YkMzkpO1xuICAgICAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgICAgICB9LCB7XG4gICAgICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgICAgICB0OiB2b2lkIDAsXG4gICAgICAgICAgICBhOiB2b2lkIDBcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gX2VsJDkyO1xuICAgICAgICB9XG4gICAgICB9KSwgbnVsbCk7XG4gICAgICBpbnNlcnQoX2VsJDk3LCAoKSA9PiBkYXRhTW9kZSgpID09PSBcInZpZXdcIiA/IFwiRXhwbG9yZXJcIiA6IFwiRWRpdG9yXCIsIG51bGwpO1xuICAgICAgaW5zZXJ0KF9lbCQ2MywgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGFNb2RlKCkgPT09IFwidmlld1wiO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgdmFyIF9lbCQ5OSA9IF90bXBsJDMwKCk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQ5OSwgY3JlYXRlQ29tcG9uZW50KEV4cGxvcmVyLCB7XG4gICAgICAgICAgICBsYWJlbDogXCJEYXRhXCIsXG4gICAgICAgICAgICBkZWZhdWx0RXhwYW5kZWQ6IFtcIkRhdGFcIl0sXG4gICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhY3RpdmVRdWVyeVN0YXRlRGF0YSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgb25FZGl0OiAoKSA9PiBzZXREYXRhTW9kZShcImVkaXRcIiksXG4gICAgICAgICAgICBnZXQgYWN0aXZlUXVlcnkoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhY3RpdmVRdWVyeSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBjcmVhdGVSZW5kZXJFZmZlY3QoKF8kcCkgPT4gKF8kcCA9IHRva2Vucy5zaXplWzJdKSAhPSBudWxsID8gX2VsJDk5LnN0eWxlLnNldFByb3BlcnR5KFwicGFkZGluZ1wiLCBfJHApIDogX2VsJDk5LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwicGFkZGluZ1wiKSk7XG4gICAgICAgICAgcmV0dXJuIF9lbCQ5OTtcbiAgICAgICAgfVxuICAgICAgfSksIF9lbCQxMDcpO1xuICAgICAgaW5zZXJ0KF9lbCQ2MywgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGFNb2RlKCkgPT09IFwiZWRpdFwiO1xuICAgICAgICB9LFxuICAgICAgICBnZXQgY2hpbGRyZW4oKSB7XG4gICAgICAgICAgdmFyIF9lbCQxMDAgPSBfdG1wbCQzMSgpLCBfZWwkMTAxID0gX2VsJDEwMC5maXJzdENoaWxkLCBfZWwkMTAyID0gX2VsJDEwMS5uZXh0U2libGluZywgX2VsJDEwMyA9IF9lbCQxMDIuZmlyc3RDaGlsZCwgX2VsJDEwNCA9IF9lbCQxMDMubmV4dFNpYmxpbmcsIF9lbCQxMDUgPSBfZWwkMTA0LmZpcnN0Q2hpbGQsIF9lbCQxMDYgPSBfZWwkMTA1Lm5leHRTaWJsaW5nO1xuICAgICAgICAgIF9lbCQxMDAuYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCAoZTIpID0+IHtcbiAgICAgICAgICAgIGUyLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YShlMi5jdXJyZW50VGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBmb3JtRGF0YS5nZXQoXCJkYXRhXCIpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gICAgICAgICAgICAgIGFjdGl2ZVF1ZXJ5KCkuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIC4uLmFjdGl2ZVF1ZXJ5KCkuc3RhdGUsXG4gICAgICAgICAgICAgICAgZGF0YTogcGFyc2VkRGF0YVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgc2V0RGF0YU1vZGUoXCJ2aWV3XCIpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgc2V0RGF0YUVkaXRFcnJvcih0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBfZWwkMTAxLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCAoKSA9PiBzZXREYXRhRWRpdEVycm9yKGZhbHNlKSk7XG4gICAgICAgICAgaW5zZXJ0KF9lbCQxMDMsICgpID0+IGRhdGFFZGl0RXJyb3IoKSA/IFwiSW52YWxpZCBWYWx1ZVwiIDogXCJcIik7XG4gICAgICAgICAgX2VsJDEwNS4kJGNsaWNrID0gKCkgPT4gc2V0RGF0YU1vZGUoXCJ2aWV3XCIpO1xuICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgICAgICB2YXIgX3YkNDAgPSBjbHN4KHN0eWxlcygpLmRldnRvb2xzRWRpdEZvcm0sIFwidHNxZC1xdWVyeS1kZXRhaWxzLWRhdGEtZWRpdG9yXCIpLCBfdiQ0MSA9IHN0eWxlcygpLmRldnRvb2xzRWRpdFRleHRhcmVhLCBfdiQ0MiA9IGRhdGFFZGl0RXJyb3IoKSwgX3YkNDMgPSBzdHlsZXMoKS5kZXZ0b29sc0VkaXRGb3JtQWN0aW9ucywgX3YkNDQgPSBzdHlsZXMoKS5kZXZ0b29sc0VkaXRGb3JtRXJyb3IsIF92JDQ1ID0gc3R5bGVzKCkuZGV2dG9vbHNFZGl0Rm9ybUFjdGlvbkNvbnRhaW5lciwgX3YkNDYgPSBjbHN4KHN0eWxlcygpLmRldnRvb2xzRWRpdEZvcm1BY3Rpb24sIGNzc2BcbiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICAgICAgICAgICAgICAgIGApLCBfdiQ0NyA9IGNsc3goc3R5bGVzKCkuZGV2dG9vbHNFZGl0Rm9ybUFjdGlvbiwgY3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ibHVlWzYwMF0sIGNvbG9ycy5ibHVlWzQwMF0pfTtcbiAgICAgICAgICAgICAgICAgICAgYCk7XG4gICAgICAgICAgICBfdiQ0MCAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQxMDAsIF9wJC5lID0gX3YkNDApO1xuICAgICAgICAgICAgX3YkNDEgIT09IF9wJC50ICYmIGNsYXNzTmFtZShfZWwkMTAxLCBfcCQudCA9IF92JDQxKTtcbiAgICAgICAgICAgIF92JDQyICE9PSBfcCQuYSAmJiBzZXRBdHRyaWJ1dGUoX2VsJDEwMSwgXCJkYXRhLWVycm9yXCIsIF9wJC5hID0gX3YkNDIpO1xuICAgICAgICAgICAgX3YkNDMgIT09IF9wJC5vICYmIGNsYXNzTmFtZShfZWwkMTAyLCBfcCQubyA9IF92JDQzKTtcbiAgICAgICAgICAgIF92JDQ0ICE9PSBfcCQuaSAmJiBjbGFzc05hbWUoX2VsJDEwMywgX3AkLmkgPSBfdiQ0NCk7XG4gICAgICAgICAgICBfdiQ0NSAhPT0gX3AkLm4gJiYgY2xhc3NOYW1lKF9lbCQxMDQsIF9wJC5uID0gX3YkNDUpO1xuICAgICAgICAgICAgX3YkNDYgIT09IF9wJC5zICYmIGNsYXNzTmFtZShfZWwkMTA1LCBfcCQucyA9IF92JDQ2KTtcbiAgICAgICAgICAgIF92JDQ3ICE9PSBfcCQuaCAmJiBjbGFzc05hbWUoX2VsJDEwNiwgX3AkLmggPSBfdiQ0Nyk7XG4gICAgICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgIGU6IHZvaWQgMCxcbiAgICAgICAgICAgIHQ6IHZvaWQgMCxcbiAgICAgICAgICAgIGE6IHZvaWQgMCxcbiAgICAgICAgICAgIG86IHZvaWQgMCxcbiAgICAgICAgICAgIGk6IHZvaWQgMCxcbiAgICAgICAgICAgIG46IHZvaWQgMCxcbiAgICAgICAgICAgIHM6IHZvaWQgMCxcbiAgICAgICAgICAgIGg6IHZvaWQgMFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoKSA9PiBfZWwkMTAxLnZhbHVlID0gSlNPTi5zdHJpbmdpZnkoYWN0aXZlUXVlcnlTdGF0ZURhdGEoKSwgbnVsbCwgMikpO1xuICAgICAgICAgIHJldHVybiBfZWwkMTAwO1xuICAgICAgICB9XG4gICAgICB9KSwgX2VsJDEwNyk7XG4gICAgICBpbnNlcnQoX2VsJDEwOCwgY3JlYXRlQ29tcG9uZW50KEV4cGxvcmVyLCB7XG4gICAgICAgIGxhYmVsOiBcIlF1ZXJ5XCIsXG4gICAgICAgIGRlZmF1bHRFeHBhbmRlZDogW1wiUXVlcnlcIiwgXCJxdWVyeUtleVwiXSxcbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgIHJldHVybiBhY3RpdmVRdWVyeUZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICAgIGNyZWF0ZVJlbmRlckVmZmVjdCgoX3AkKSA9PiB7XG4gICAgICAgIHZhciBfdiQ0OCA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0NvbnRhaW5lciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtY29udGFpbmVyXCIpLCBfdiQ0OSA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ1MCA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0JvZHksIFwidHNxZC1xdWVyeS1kZXRhaWxzLXN1bW1hcnktY29udGFpbmVyXCIpLCBfdiQ1MSA9IGNsc3goc3R5bGVzKCkucXVlcnlEZXRhaWxzU3RhdHVzLCBnZXRRdWVyeVN0YXR1c0NvbG9ycygpKSwgX3YkNTIgPSBjbHN4KHN0eWxlcygpLmRldGFpbHNIZWFkZXIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWhlYWRlclwiKSwgX3YkNTMgPSBjbHN4KHN0eWxlcygpLmFjdGlvbnNCb2R5LCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb25zLWNvbnRhaW5lclwiKSwgX3YkNTQgPSBjbHN4KGNzc2BcbiAgICAgICAgICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuYmx1ZVs2MDBdLCBjb2xvcnMuYmx1ZVs0MDBdKX07XG4gICAgICAgICAgICAgIGAsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbnMtYnRuXCIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbi1yZWZldGNoXCIpLCBfdiQ1NSA9IHN0YXR1c0xhYmVsKCkgPT09IFwiZmV0Y2hpbmdcIiwgX3YkNTYgPSBjc3NgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuYmx1ZVs2MDBdLCBjb2xvcnMuYmx1ZVs0MDBdKX07XG4gICAgICAgICAgICAgIGAsIF92JDU3ID0gY2xzeChjc3NgXG4gICAgICAgICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLnllbGxvd1s2MDBdLCBjb2xvcnMueWVsbG93WzQwMF0pfTtcbiAgICAgICAgICAgICAgYCwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9ucy1idG5cIiwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtYWN0aW9uLWludmFsaWRhdGVcIiksIF92JDU4ID0gcXVlcnlTdGF0dXMoKSA9PT0gXCJwZW5kaW5nXCIsIF92JDU5ID0gY3NzYFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLnllbGxvd1s2MDBdLCBjb2xvcnMueWVsbG93WzQwMF0pfTtcbiAgICAgICAgICAgICAgYCwgX3YkNjAgPSBjbHN4KGNzc2BcbiAgICAgICAgICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICAgICAgICAgIGAsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbnMtYnRuXCIsIFwidHNxZC1xdWVyeS1kZXRhaWxzLWFjdGlvbi1yZXNldFwiKSwgX3YkNjEgPSBxdWVyeVN0YXR1cygpID09PSBcInBlbmRpbmdcIiwgX3YkNjIgPSBjc3NgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVs0MDBdKX07XG4gICAgICAgICAgICAgIGAsIF92JDYzID0gY2xzeChjc3NgXG4gICAgICAgICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLnBpbmtbNTAwXSwgY29sb3JzLnBpbmtbNDAwXSl9O1xuICAgICAgICAgICAgICBgLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb25zLWJ0blwiLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb24tcmVtb3ZlXCIpLCBfdiQ2NCA9IHN0YXR1c0xhYmVsKCkgPT09IFwiZmV0Y2hpbmdcIiwgX3YkNjUgPSBjc3NgXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMucGlua1s1MDBdLCBjb2xvcnMucGlua1s0MDBdKX07XG4gICAgICAgICAgICAgIGAsIF92JDY2ID0gY2xzeChjc3NgXG4gICAgICAgICAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmN5YW5bNTAwXSwgY29sb3JzLmN5YW5bNDAwXSl9O1xuICAgICAgICAgICAgICBgLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb25zLWJ0blwiLCBcInRzcWQtcXVlcnktZGV0YWlscy1hY3Rpb24tbG9hZGluZ1wiKSwgX3YkNjcgPSByZXN0b3JpbmdMb2FkaW5nKCksIF92JDY4ID0gY3NzYFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmN5YW5bNTAwXSwgY29sb3JzLmN5YW5bNDAwXSl9O1xuICAgICAgICAgICAgICBgLCBfdiQ2OSA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ3MCA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ3MSA9IHRva2Vucy5zaXplWzJdO1xuICAgICAgICBfdiQ0OCAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQ2MywgX3AkLmUgPSBfdiQ0OCk7XG4gICAgICAgIF92JDQ5ICE9PSBfcCQudCAmJiBjbGFzc05hbWUoX2VsJDY0LCBfcCQudCA9IF92JDQ5KTtcbiAgICAgICAgX3YkNTAgIT09IF9wJC5hICYmIGNsYXNzTmFtZShfZWwkNjUsIF9wJC5hID0gX3YkNTApO1xuICAgICAgICBfdiQ1MSAhPT0gX3AkLm8gJiYgY2xhc3NOYW1lKF9lbCQ2OSwgX3AkLm8gPSBfdiQ1MSk7XG4gICAgICAgIF92JDUyICE9PSBfcCQuaSAmJiBjbGFzc05hbWUoX2VsJDc2LCBfcCQuaSA9IF92JDUyKTtcbiAgICAgICAgX3YkNTMgIT09IF9wJC5uICYmIGNsYXNzTmFtZShfZWwkNzcsIF9wJC5uID0gX3YkNTMpO1xuICAgICAgICBfdiQ1NCAhPT0gX3AkLnMgJiYgY2xhc3NOYW1lKF9lbCQ3OCwgX3AkLnMgPSBfdiQ1NCk7XG4gICAgICAgIF92JDU1ICE9PSBfcCQuaCAmJiAoX2VsJDc4LmRpc2FibGVkID0gX3AkLmggPSBfdiQ1NSk7XG4gICAgICAgIF92JDU2ICE9PSBfcCQuciAmJiBjbGFzc05hbWUoX2VsJDc5LCBfcCQuciA9IF92JDU2KTtcbiAgICAgICAgX3YkNTcgIT09IF9wJC5kICYmIGNsYXNzTmFtZShfZWwkODAsIF9wJC5kID0gX3YkNTcpO1xuICAgICAgICBfdiQ1OCAhPT0gX3AkLmwgJiYgKF9lbCQ4MC5kaXNhYmxlZCA9IF9wJC5sID0gX3YkNTgpO1xuICAgICAgICBfdiQ1OSAhPT0gX3AkLnUgJiYgY2xhc3NOYW1lKF9lbCQ4MSwgX3AkLnUgPSBfdiQ1OSk7XG4gICAgICAgIF92JDYwICE9PSBfcCQuYyAmJiBjbGFzc05hbWUoX2VsJDgyLCBfcCQuYyA9IF92JDYwKTtcbiAgICAgICAgX3YkNjEgIT09IF9wJC53ICYmIChfZWwkODIuZGlzYWJsZWQgPSBfcCQudyA9IF92JDYxKTtcbiAgICAgICAgX3YkNjIgIT09IF9wJC5tICYmIGNsYXNzTmFtZShfZWwkODMsIF9wJC5tID0gX3YkNjIpO1xuICAgICAgICBfdiQ2MyAhPT0gX3AkLmYgJiYgY2xhc3NOYW1lKF9lbCQ4NCwgX3AkLmYgPSBfdiQ2Myk7XG4gICAgICAgIF92JDY0ICE9PSBfcCQueSAmJiAoX2VsJDg0LmRpc2FibGVkID0gX3AkLnkgPSBfdiQ2NCk7XG4gICAgICAgIF92JDY1ICE9PSBfcCQuZyAmJiBjbGFzc05hbWUoX2VsJDg1LCBfcCQuZyA9IF92JDY1KTtcbiAgICAgICAgX3YkNjYgIT09IF9wJC5wICYmIGNsYXNzTmFtZShfZWwkODYsIF9wJC5wID0gX3YkNjYpO1xuICAgICAgICBfdiQ2NyAhPT0gX3AkLmIgJiYgKF9lbCQ4Ni5kaXNhYmxlZCA9IF9wJC5iID0gX3YkNjcpO1xuICAgICAgICBfdiQ2OCAhPT0gX3AkLlQgJiYgY2xhc3NOYW1lKF9lbCQ4NywgX3AkLlQgPSBfdiQ2OCk7XG4gICAgICAgIF92JDY5ICE9PSBfcCQuQSAmJiBjbGFzc05hbWUoX2VsJDk3LCBfcCQuQSA9IF92JDY5KTtcbiAgICAgICAgX3YkNzAgIT09IF9wJC5PICYmIGNsYXNzTmFtZShfZWwkMTA3LCBfcCQuTyA9IF92JDcwKTtcbiAgICAgICAgX3YkNzEgIT09IF9wJC5JICYmICgoX3AkLkkgPSBfdiQ3MSkgIT0gbnVsbCA/IF9lbCQxMDguc3R5bGUuc2V0UHJvcGVydHkoXCJwYWRkaW5nXCIsIF92JDcxKSA6IF9lbCQxMDguc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJwYWRkaW5nXCIpKTtcbiAgICAgICAgcmV0dXJuIF9wJDtcbiAgICAgIH0sIHtcbiAgICAgICAgZTogdm9pZCAwLFxuICAgICAgICB0OiB2b2lkIDAsXG4gICAgICAgIGE6IHZvaWQgMCxcbiAgICAgICAgbzogdm9pZCAwLFxuICAgICAgICBpOiB2b2lkIDAsXG4gICAgICAgIG46IHZvaWQgMCxcbiAgICAgICAgczogdm9pZCAwLFxuICAgICAgICBoOiB2b2lkIDAsXG4gICAgICAgIHI6IHZvaWQgMCxcbiAgICAgICAgZDogdm9pZCAwLFxuICAgICAgICBsOiB2b2lkIDAsXG4gICAgICAgIHU6IHZvaWQgMCxcbiAgICAgICAgYzogdm9pZCAwLFxuICAgICAgICB3OiB2b2lkIDAsXG4gICAgICAgIG06IHZvaWQgMCxcbiAgICAgICAgZjogdm9pZCAwLFxuICAgICAgICB5OiB2b2lkIDAsXG4gICAgICAgIGc6IHZvaWQgMCxcbiAgICAgICAgcDogdm9pZCAwLFxuICAgICAgICBiOiB2b2lkIDAsXG4gICAgICAgIFQ6IHZvaWQgMCxcbiAgICAgICAgQTogdm9pZCAwLFxuICAgICAgICBPOiB2b2lkIDAsXG4gICAgICAgIEk6IHZvaWQgMFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gX2VsJDYzO1xuICAgIH1cbiAgfSk7XG59O1xudmFyIE11dGF0aW9uRGV0YWlscyA9ICgpID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBjc3MgPSB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldCA/IHUuYmluZCh7XG4gICAgdGFyZ2V0OiB1c2VRdWVyeURldnRvb2xzQ29udGV4dCgpLnNoYWRvd0RPTVRhcmdldFxuICB9KSA6IHU7XG4gIGNvbnN0IHN0eWxlcyA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB0aGVtZSgpID09PSBcImRhcmtcIiA/IGRhcmtTdHlsZXMyKGNzcykgOiBsaWdodFN0eWxlczIoY3NzKTtcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICBjb2xvcnNcbiAgfSA9IHRva2VucztcbiAgY29uc3QgdDIgPSAobGlnaHQsIGRhcmspID0+IHRoZW1lKCkgPT09IFwiZGFya1wiID8gZGFyayA6IGxpZ2h0O1xuICBjb25zdCBpc1BhdXNlZCA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCk7XG4gICAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbnMuZmluZCgobSkgPT4gbS5tdXRhdGlvbklkID09PSBzZWxlY3RlZE11dGF0aW9uSWQoKSk7XG4gICAgaWYgKCFtdXRhdGlvbikgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBtdXRhdGlvbi5zdGF0ZS5pc1BhdXNlZDtcbiAgfSk7XG4gIGNvbnN0IHN0YXR1cyA9IGNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIoKG11dGF0aW9uQ2FjaGUpID0+IHtcbiAgICBjb25zdCBtdXRhdGlvbnMgPSBtdXRhdGlvbkNhY2hlKCkuZ2V0QWxsKCk7XG4gICAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbnMuZmluZCgobSkgPT4gbS5tdXRhdGlvbklkID09PSBzZWxlY3RlZE11dGF0aW9uSWQoKSk7XG4gICAgaWYgKCFtdXRhdGlvbikgcmV0dXJuIFwiaWRsZVwiO1xuICAgIHJldHVybiBtdXRhdGlvbi5zdGF0ZS5zdGF0dXM7XG4gIH0pO1xuICBjb25zdCBjb2xvciA9IGNyZWF0ZU1lbW8oKCkgPT4gZ2V0TXV0YXRpb25TdGF0dXNDb2xvcih7XG4gICAgaXNQYXVzZWQ6IGlzUGF1c2VkKCksXG4gICAgc3RhdHVzOiBzdGF0dXMoKVxuICB9KSk7XG4gIGNvbnN0IGFjdGl2ZU11dGF0aW9uID0gY3JlYXRlU3Vic2NyaWJlVG9NdXRhdGlvbkNhY2hlQmF0Y2hlcigobXV0YXRpb25DYWNoZSkgPT4gbXV0YXRpb25DYWNoZSgpLmdldEFsbCgpLmZpbmQoKG11dGF0aW9uKSA9PiBtdXRhdGlvbi5tdXRhdGlvbklkID09PSBzZWxlY3RlZE11dGF0aW9uSWQoKSksIGZhbHNlKTtcbiAgY29uc3QgZ2V0UXVlcnlTdGF0dXNDb2xvcnMgPSAoKSA9PiB7XG4gICAgaWYgKGNvbG9yKCkgPT09IFwiZ3JheVwiKSB7XG4gICAgICByZXR1cm4gY3NzYFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVsyMDBdLCBjb2xvcnNbY29sb3IoKV1bNzAwXSl9O1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNzAwXSwgY29sb3JzW2NvbG9yKCldWzMwMF0pfTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAke3QyKGNvbG9yc1tjb2xvcigpXVs0MDBdLCBjb2xvcnNbY29sb3IoKV1bNjAwXSl9O1xuICAgICAgYDtcbiAgICB9XG4gICAgcmV0dXJuIGNzc2BcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzW2NvbG9yKCldWzEwMF0sIGNvbG9yc1tjb2xvcigpXVs5MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNzAwXSwgY29sb3JzW2NvbG9yKCldWzMwMF0pfTtcbiAgICAgIGJvcmRlci1jb2xvcjogJHt0Mihjb2xvcnNbY29sb3IoKV1bNDAwXSwgY29sb3JzW2NvbG9yKCldWzYwMF0pfTtcbiAgICBgO1xuICB9O1xuICByZXR1cm4gY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICBnZXQgd2hlbigpIHtcbiAgICAgIHJldHVybiBhY3RpdmVNdXRhdGlvbigpO1xuICAgIH0sXG4gICAgZ2V0IGNoaWxkcmVuKCkge1xuICAgICAgdmFyIF9lbCQxMTAgPSBfdG1wbCQzNCgpLCBfZWwkMTExID0gX2VsJDExMC5maXJzdENoaWxkLCBfZWwkMTEyID0gX2VsJDExMS5uZXh0U2libGluZywgX2VsJDExMyA9IF9lbCQxMTIuZmlyc3RDaGlsZCwgX2VsJDExNCA9IF9lbCQxMTMuZmlyc3RDaGlsZCwgX2VsJDExNSA9IF9lbCQxMTQuZmlyc3RDaGlsZCwgX2VsJDExNiA9IF9lbCQxMTQubmV4dFNpYmxpbmcsIF9lbCQxMTcgPSBfZWwkMTEzLm5leHRTaWJsaW5nLCBfZWwkMTE4ID0gX2VsJDExNy5maXJzdENoaWxkLCBfZWwkMTE5ID0gX2VsJDExOC5uZXh0U2libGluZywgX2VsJDEyMCA9IF9lbCQxMTIubmV4dFNpYmxpbmcsIF9lbCQxMjEgPSBfZWwkMTIwLm5leHRTaWJsaW5nLCBfZWwkMTIyID0gX2VsJDEyMS5uZXh0U2libGluZywgX2VsJDEyMyA9IF9lbCQxMjIubmV4dFNpYmxpbmcsIF9lbCQxMjQgPSBfZWwkMTIzLm5leHRTaWJsaW5nLCBfZWwkMTI1ID0gX2VsJDEyNC5uZXh0U2libGluZywgX2VsJDEyNiA9IF9lbCQxMjUubmV4dFNpYmxpbmcsIF9lbCQxMjcgPSBfZWwkMTI2Lm5leHRTaWJsaW5nO1xuICAgICAgaW5zZXJ0KF9lbCQxMTUsIGNyZWF0ZUNvbXBvbmVudChTaG93LCB7XG4gICAgICAgIGdldCB3aGVuKCkge1xuICAgICAgICAgIHJldHVybiBhY3RpdmVNdXRhdGlvbigpLm9wdGlvbnMubXV0YXRpb25LZXk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhbGxiYWNrOiBcIk5vIG11dGF0aW9uS2V5IGZvdW5kXCIsXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gZGlzcGxheVZhbHVlKGFjdGl2ZU11dGF0aW9uKCkub3B0aW9ucy5tdXRhdGlvbktleSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICAgIGluc2VydChfZWwkMTE2LCBjcmVhdGVDb21wb25lbnQoU2hvdywge1xuICAgICAgICBnZXQgd2hlbigpIHtcbiAgICAgICAgICByZXR1cm4gY29sb3IoKSA9PT0gXCJwdXJwbGVcIjtcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IFwicGVuZGluZ1wiXG4gICAgICB9KSwgbnVsbCk7XG4gICAgICBpbnNlcnQoX2VsJDExNiwgY3JlYXRlQ29tcG9uZW50KFNob3csIHtcbiAgICAgICAgZ2V0IHdoZW4oKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbG9yKCkgIT09IFwicHVycGxlXCI7XG4gICAgICAgIH0sXG4gICAgICAgIGdldCBjaGlsZHJlbigpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdHVzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLCBudWxsKTtcbiAgICAgIGluc2VydChfZWwkMTE5LCAoKSA9PiBuZXcgRGF0ZShhY3RpdmVNdXRhdGlvbigpLnN0YXRlLnN1Ym1pdHRlZEF0KS50b0xvY2FsZVRpbWVTdHJpbmcoKSk7XG4gICAgICBpbnNlcnQoX2VsJDEyMSwgY3JlYXRlQ29tcG9uZW50KEV4cGxvcmVyLCB7XG4gICAgICAgIGxhYmVsOiBcIlZhcmlhYmxlc1wiLFxuICAgICAgICBkZWZhdWx0RXhwYW5kZWQ6IFtcIlZhcmlhYmxlc1wiXSxcbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgIHJldHVybiBhY3RpdmVNdXRhdGlvbigpLnN0YXRlLnZhcmlhYmxlcztcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgaW5zZXJ0KF9lbCQxMjMsIGNyZWF0ZUNvbXBvbmVudChFeHBsb3Jlciwge1xuICAgICAgICBsYWJlbDogXCJDb250ZXh0XCIsXG4gICAgICAgIGRlZmF1bHRFeHBhbmRlZDogW1wiQ29udGV4dFwiXSxcbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgIHJldHVybiBhY3RpdmVNdXRhdGlvbigpLnN0YXRlLmNvbnRleHQ7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICAgIGluc2VydChfZWwkMTI1LCBjcmVhdGVDb21wb25lbnQoRXhwbG9yZXIsIHtcbiAgICAgICAgbGFiZWw6IFwiRGF0YVwiLFxuICAgICAgICBkZWZhdWx0RXhwYW5kZWQ6IFtcIkRhdGFcIl0sXG4gICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICByZXR1cm4gYWN0aXZlTXV0YXRpb24oKS5zdGF0ZS5kYXRhO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgICBpbnNlcnQoX2VsJDEyNywgY3JlYXRlQ29tcG9uZW50KEV4cGxvcmVyLCB7XG4gICAgICAgIGxhYmVsOiBcIk11dGF0aW9uXCIsXG4gICAgICAgIGRlZmF1bHRFeHBhbmRlZDogW1wiTXV0YXRpb25cIl0sXG4gICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICByZXR1cm4gYWN0aXZlTXV0YXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgICAgY3JlYXRlUmVuZGVyRWZmZWN0KChfcCQpID0+IHtcbiAgICAgICAgdmFyIF92JDcyID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzQ29udGFpbmVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1jb250YWluZXJcIiksIF92JDczID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzSGVhZGVyLCBcInRzcWQtcXVlcnktZGV0YWlscy1oZWFkZXJcIiksIF92JDc0ID0gY2xzeChzdHlsZXMoKS5kZXRhaWxzQm9keSwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtc3VtbWFyeS1jb250YWluZXJcIiksIF92JDc1ID0gY2xzeChzdHlsZXMoKS5xdWVyeURldGFpbHNTdGF0dXMsIGdldFF1ZXJ5U3RhdHVzQ29sb3JzKCkpLCBfdiQ3NiA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ3NyA9IHRva2Vucy5zaXplWzJdLCBfdiQ3OCA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ3OSA9IHRva2Vucy5zaXplWzJdLCBfdiQ4MCA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ4MSA9IHRva2Vucy5zaXplWzJdLCBfdiQ4MiA9IGNsc3goc3R5bGVzKCkuZGV0YWlsc0hlYWRlciwgXCJ0c3FkLXF1ZXJ5LWRldGFpbHMtaGVhZGVyXCIpLCBfdiQ4MyA9IHRva2Vucy5zaXplWzJdO1xuICAgICAgICBfdiQ3MiAhPT0gX3AkLmUgJiYgY2xhc3NOYW1lKF9lbCQxMTAsIF9wJC5lID0gX3YkNzIpO1xuICAgICAgICBfdiQ3MyAhPT0gX3AkLnQgJiYgY2xhc3NOYW1lKF9lbCQxMTEsIF9wJC50ID0gX3YkNzMpO1xuICAgICAgICBfdiQ3NCAhPT0gX3AkLmEgJiYgY2xhc3NOYW1lKF9lbCQxMTIsIF9wJC5hID0gX3YkNzQpO1xuICAgICAgICBfdiQ3NSAhPT0gX3AkLm8gJiYgY2xhc3NOYW1lKF9lbCQxMTYsIF9wJC5vID0gX3YkNzUpO1xuICAgICAgICBfdiQ3NiAhPT0gX3AkLmkgJiYgY2xhc3NOYW1lKF9lbCQxMjAsIF9wJC5pID0gX3YkNzYpO1xuICAgICAgICBfdiQ3NyAhPT0gX3AkLm4gJiYgKChfcCQubiA9IF92JDc3KSAhPSBudWxsID8gX2VsJDEyMS5zdHlsZS5zZXRQcm9wZXJ0eShcInBhZGRpbmdcIiwgX3YkNzcpIDogX2VsJDEyMS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInBhZGRpbmdcIikpO1xuICAgICAgICBfdiQ3OCAhPT0gX3AkLnMgJiYgY2xhc3NOYW1lKF9lbCQxMjIsIF9wJC5zID0gX3YkNzgpO1xuICAgICAgICBfdiQ3OSAhPT0gX3AkLmggJiYgKChfcCQuaCA9IF92JDc5KSAhPSBudWxsID8gX2VsJDEyMy5zdHlsZS5zZXRQcm9wZXJ0eShcInBhZGRpbmdcIiwgX3YkNzkpIDogX2VsJDEyMy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInBhZGRpbmdcIikpO1xuICAgICAgICBfdiQ4MCAhPT0gX3AkLnIgJiYgY2xhc3NOYW1lKF9lbCQxMjQsIF9wJC5yID0gX3YkODApO1xuICAgICAgICBfdiQ4MSAhPT0gX3AkLmQgJiYgKChfcCQuZCA9IF92JDgxKSAhPSBudWxsID8gX2VsJDEyNS5zdHlsZS5zZXRQcm9wZXJ0eShcInBhZGRpbmdcIiwgX3YkODEpIDogX2VsJDEyNS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInBhZGRpbmdcIikpO1xuICAgICAgICBfdiQ4MiAhPT0gX3AkLmwgJiYgY2xhc3NOYW1lKF9lbCQxMjYsIF9wJC5sID0gX3YkODIpO1xuICAgICAgICBfdiQ4MyAhPT0gX3AkLnUgJiYgKChfcCQudSA9IF92JDgzKSAhPSBudWxsID8gX2VsJDEyNy5zdHlsZS5zZXRQcm9wZXJ0eShcInBhZGRpbmdcIiwgX3YkODMpIDogX2VsJDEyNy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcInBhZGRpbmdcIikpO1xuICAgICAgICByZXR1cm4gX3AkO1xuICAgICAgfSwge1xuICAgICAgICBlOiB2b2lkIDAsXG4gICAgICAgIHQ6IHZvaWQgMCxcbiAgICAgICAgYTogdm9pZCAwLFxuICAgICAgICBvOiB2b2lkIDAsXG4gICAgICAgIGk6IHZvaWQgMCxcbiAgICAgICAgbjogdm9pZCAwLFxuICAgICAgICBzOiB2b2lkIDAsXG4gICAgICAgIGg6IHZvaWQgMCxcbiAgICAgICAgcjogdm9pZCAwLFxuICAgICAgICBkOiB2b2lkIDAsXG4gICAgICAgIGw6IHZvaWQgMCxcbiAgICAgICAgdTogdm9pZCAwXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBfZWwkMTEwO1xuICAgIH1cbiAgfSk7XG59O1xudmFyIHF1ZXJ5Q2FjaGVNYXAgPSAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpO1xudmFyIHNldHVwUXVlcnlDYWNoZVN1YnNjcmlwdGlvbiA9ICgpID0+IHtcbiAgY29uc3QgcXVlcnlDYWNoZSA9IGNyZWF0ZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGNsaWVudCA9IHVzZVF1ZXJ5RGV2dG9vbHNDb250ZXh0KCkuY2xpZW50O1xuICAgIHJldHVybiBjbGllbnQuZ2V0UXVlcnlDYWNoZSgpO1xuICB9KTtcbiAgY29uc3QgdW5zdWJzY3JpYmUgPSBxdWVyeUNhY2hlKCkuc3Vic2NyaWJlKChxKSA9PiB7XG4gICAgYmF0Y2goKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBbY2FsbGJhY2ssIHZhbHVlXSBvZiBxdWVyeUNhY2hlTWFwLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAoIXZhbHVlLnNob3VsZFVwZGF0ZShxKSkgY29udGludWU7XG4gICAgICAgIHZhbHVlLnNldHRlcihjYWxsYmFjayhxdWVyeUNhY2hlKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBvbkNsZWFudXAoKCkgPT4ge1xuICAgIHF1ZXJ5Q2FjaGVNYXAuY2xlYXIoKTtcbiAgICB1bnN1YnNjcmliZSgpO1xuICB9KTtcbiAgcmV0dXJuIHVuc3Vic2NyaWJlO1xufTtcbnZhciBjcmVhdGVTdWJzY3JpYmVUb1F1ZXJ5Q2FjaGVCYXRjaGVyID0gKGNhbGxiYWNrLCBlcXVhbGl0eUNoZWNrID0gdHJ1ZSwgc2hvdWxkVXBkYXRlID0gKCkgPT4gdHJ1ZSkgPT4ge1xuICBjb25zdCBxdWVyeUNhY2hlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQ7XG4gICAgcmV0dXJuIGNsaWVudC5nZXRRdWVyeUNhY2hlKCk7XG4gIH0pO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IGNyZWF0ZVNpZ25hbChjYWxsYmFjayhxdWVyeUNhY2hlKSwgIWVxdWFsaXR5Q2hlY2sgPyB7XG4gICAgZXF1YWxzOiBmYWxzZVxuICB9IDogdm9pZCAwKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZShjYWxsYmFjayhxdWVyeUNhY2hlKSk7XG4gIH0pO1xuICBxdWVyeUNhY2hlTWFwLnNldChjYWxsYmFjaywge1xuICAgIHNldHRlcjogc2V0VmFsdWUsXG4gICAgc2hvdWxkVXBkYXRlXG4gIH0pO1xuICBvbkNsZWFudXAoKCkgPT4ge1xuICAgIHF1ZXJ5Q2FjaGVNYXAuZGVsZXRlKGNhbGxiYWNrKTtcbiAgfSk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG52YXIgbXV0YXRpb25DYWNoZU1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG52YXIgc2V0dXBNdXRhdGlvbkNhY2hlU3Vic2NyaXB0aW9uID0gKCkgPT4ge1xuICBjb25zdCBtdXRhdGlvbkNhY2hlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQ7XG4gICAgcmV0dXJuIGNsaWVudC5nZXRNdXRhdGlvbkNhY2hlKCk7XG4gIH0pO1xuICBjb25zdCB1bnN1YnNjcmliZSA9IG11dGF0aW9uQ2FjaGUoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgIGZvciAoY29uc3QgW2NhbGxiYWNrLCBzZXR0ZXJdIG9mIG11dGF0aW9uQ2FjaGVNYXAuZW50cmllcygpKSB7XG4gICAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICAgIHNldHRlcihjYWxsYmFjayhtdXRhdGlvbkNhY2hlKSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICBvbkNsZWFudXAoKCkgPT4ge1xuICAgIG11dGF0aW9uQ2FjaGVNYXAuY2xlYXIoKTtcbiAgICB1bnN1YnNjcmliZSgpO1xuICB9KTtcbiAgcmV0dXJuIHVuc3Vic2NyaWJlO1xufTtcbnZhciBjcmVhdGVTdWJzY3JpYmVUb011dGF0aW9uQ2FjaGVCYXRjaGVyID0gKGNhbGxiYWNrLCBlcXVhbGl0eUNoZWNrID0gdHJ1ZSkgPT4ge1xuICBjb25zdCBtdXRhdGlvbkNhY2hlID0gY3JlYXRlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY2xpZW50ID0gdXNlUXVlcnlEZXZ0b29sc0NvbnRleHQoKS5jbGllbnQ7XG4gICAgcmV0dXJuIGNsaWVudC5nZXRNdXRhdGlvbkNhY2hlKCk7XG4gIH0pO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IGNyZWF0ZVNpZ25hbChjYWxsYmFjayhtdXRhdGlvbkNhY2hlKSwgIWVxdWFsaXR5Q2hlY2sgPyB7XG4gICAgZXF1YWxzOiBmYWxzZVxuICB9IDogdm9pZCAwKTtcbiAgY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZShjYWxsYmFjayhtdXRhdGlvbkNhY2hlKSk7XG4gIH0pO1xuICBtdXRhdGlvbkNhY2hlTWFwLnNldChjYWxsYmFjaywgc2V0VmFsdWUpO1xuICBvbkNsZWFudXAoKCkgPT4ge1xuICAgIG11dGF0aW9uQ2FjaGVNYXAuZGVsZXRlKGNhbGxiYWNrKTtcbiAgfSk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG52YXIgc3R5bGVzRmFjdG9yeTIgPSAodGhlbWUsIGNzcykgPT4ge1xuICBjb25zdCB7XG4gICAgY29sb3JzLFxuICAgIGZvbnQsXG4gICAgc2l6ZTogc2l6ZTMsXG4gICAgYWxwaGEsXG4gICAgc2hhZG93LFxuICAgIGJvcmRlclxuICB9ID0gdG9rZW5zO1xuICBjb25zdCB0MiA9IChsaWdodCwgZGFyaykgPT4gdGhlbWUgPT09IFwibGlnaHRcIiA/IGxpZ2h0IDogZGFyaztcbiAgcmV0dXJuIHtcbiAgICBkZXZ0b29sc0J0bjogY3NzYFxuICAgICAgei1pbmRleDogMTAwMDAwO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgIGJveC1zaGFkb3c6ICR7c2hhZG93Lm1kKCl9O1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgJiBkaXYge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLThweDtcbiAgICAgICAgbGVmdDogLThweDtcbiAgICAgICAgcmlnaHQ6IC04cHg7XG4gICAgICAgIGJvdHRvbTogLThweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuXG4gICAgICAgICYgc3ZnIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlcjogYmx1cig2cHgpIHNhdHVyYXRlKDEuMikgY29udHJhc3QoMS4xKTtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBvdXRsaW5lOiAzcHggc29saWQgJHtjb2xvcnMuZ3JlZW5bNjAwXX07XG4gICAgICB9XG5cbiAgICAgICYgYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTk5cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgJiBzdmcge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICAgIHBhbmVsOiBjc3NgXG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB6LWluZGV4OiA5OTk5O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVswLjVdfTtcbiAgICAgICYgKiB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgfVxuXG4gICAgICAmICo6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDdweDtcbiAgICAgIH1cblxuICAgICAgJiAqOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAmICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbMjAwXSl9O1xuICAgICAgfVxuXG4gICAgICAmICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9O1xuICAgICAgfVxuICAgIGAsXG4gICAgcGFyZW50UGFuZWw6IGNzc2BcbiAgICAgIHotaW5kZXg6IDk5OTk7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzAuNV19O1xuICAgICAgJiAqIHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgICB9XG5cbiAgICAgICYgKjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICB3aWR0aDogN3B4O1xuICAgICAgfVxuXG4gICAgICAmICo6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG5cbiAgICAgICYgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVsyMDBdKX07XG4gICAgICB9XG5cbiAgICAgICYgKjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX07XG4gICAgICB9XG4gICAgYCxcbiAgICBcImRldnRvb2xzQnRuLXBvc2l0aW9uLWJvdHRvbS1yaWdodFwiOiBjc3NgXG4gICAgICBib3R0b206IDEycHg7XG4gICAgICByaWdodDogMTJweDtcbiAgICBgLFxuICAgIFwiZGV2dG9vbHNCdG4tcG9zaXRpb24tYm90dG9tLWxlZnRcIjogY3NzYFxuICAgICAgYm90dG9tOiAxMnB4O1xuICAgICAgbGVmdDogMTJweDtcbiAgICBgLFxuICAgIFwiZGV2dG9vbHNCdG4tcG9zaXRpb24tdG9wLWxlZnRcIjogY3NzYFxuICAgICAgdG9wOiAxMnB4O1xuICAgICAgbGVmdDogMTJweDtcbiAgICBgLFxuICAgIFwiZGV2dG9vbHNCdG4tcG9zaXRpb24tdG9wLXJpZ2h0XCI6IGNzc2BcbiAgICAgIHRvcDogMTJweDtcbiAgICAgIHJpZ2h0OiAxMnB4O1xuICAgIGAsXG4gICAgXCJkZXZ0b29sc0J0bi1wb3NpdGlvbi1yZWxhdGl2ZVwiOiBjc3NgXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYCxcbiAgICBcInBhbmVsLXBvc2l0aW9uLXRvcFwiOiBjc3NgXG4gICAgICB0b3A6IDA7XG4gICAgICByaWdodDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBtYXgtaGVpZ2h0OiA5MCU7XG4gICAgICBtaW4taGVpZ2h0OiAke3NpemUzWzE0XX07XG4gICAgICBib3JkZXItYm90dG9tOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgIGAsXG4gICAgXCJwYW5lbC1wb3NpdGlvbi1ib3R0b21cIjogY3NzYFxuICAgICAgYm90dG9tOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgbWF4LWhlaWdodDogOTAlO1xuICAgICAgbWluLWhlaWdodDogJHtzaXplM1sxNF19O1xuICAgICAgYm9yZGVyLXRvcDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICBgLFxuICAgIFwicGFuZWwtcG9zaXRpb24tcmlnaHRcIjogY3NzYFxuICAgICAgYm90dG9tOiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItbGVmdDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIG1heC13aWR0aDogOTAlO1xuICAgIGAsXG4gICAgXCJwYW5lbC1wb3NpdGlvbi1sZWZ0XCI6IGNzc2BcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3JkZXItcmlnaHQ6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICBgLFxuICAgIGNsb3NlQnRuOiBjc3NgXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB6LWluZGV4OiA1O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwXSwgY29sb3JzLmRhcmtHcmF5WzcwMF0pfTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICB9XG4gICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs2MDBdfTtcbiAgICAgIH1cbiAgICAgICYgc3ZnIHtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNjAwXSwgY29sb3JzLmdyYXlbNDAwXSl9O1xuICAgICAgICB3aWR0aDogJHtzaXplM1syXX07XG4gICAgICAgIGhlaWdodDogJHtzaXplM1syXX07XG4gICAgICB9XG4gICAgYCxcbiAgICBcImNsb3NlQnRuLXBvc2l0aW9uLXRvcFwiOiBjc3NgXG4gICAgICBib3R0b206IDA7XG4gICAgICByaWdodDogJHtzaXplM1syXX07XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxMDAlKTtcbiAgICAgIGJvcmRlci1yaWdodDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci1sZWZ0OiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBib3JkZXItcmFkaXVzOiAwcHggMHB4ICR7Ym9yZGVyLnJhZGl1cy5zbX0gJHtib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIHBhZGRpbmc6ICR7c2l6ZTNbMC41XX0gJHtzaXplM1sxLjVdfSAke3NpemUzWzFdfSAke3NpemUzWzEuNV19O1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDEwMCU7XG4gICAgICAgIGxlZnQ6IC0ke3NpemUzWzIuNV19O1xuICAgICAgICBoZWlnaHQ6ICR7c2l6ZTNbMS41XX07XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAke3NpemUzWzVdfSk7XG4gICAgICB9XG5cbiAgICAgICYgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICAgIH1cbiAgICBgLFxuICAgIFwiY2xvc2VCdG4tcG9zaXRpb24tYm90dG9tXCI6IGNzc2BcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAke3NpemUzWzJdfTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xMDAlKTtcbiAgICAgIGJvcmRlci1yaWdodDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci1sZWZ0OiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLXRvcDogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMuc219ICR7Ym9yZGVyLnJhZGl1cy5zbX0gMHB4IDBweDtcbiAgICAgIHBhZGRpbmc6ICR7c2l6ZTNbMV19ICR7c2l6ZTNbMS41XX0gJHtzaXplM1swLjVdfSAke3NpemUzWzEuNV19O1xuXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwMCU7XG4gICAgICAgIGxlZnQ6IC0ke3NpemUzWzIuNV19O1xuICAgICAgICBoZWlnaHQ6ICR7c2l6ZTNbMS41XX07XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyAke3NpemUzWzVdfSk7XG4gICAgICB9XG4gICAgYCxcbiAgICBcImNsb3NlQnRuLXBvc2l0aW9uLXJpZ2h0XCI6IGNzc2BcbiAgICAgIGJvdHRvbTogJHtzaXplM1syXX07XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEwMCUsIDApO1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgYm9yZGVyLWxlZnQ6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBib3JkZXItdG9wOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy5zbX0gMHB4IDBweCAke2JvcmRlci5yYWRpdXMuc219O1xuICAgICAgcGFkZGluZzogJHtzaXplM1sxLjVdfSAke3NpemUzWzAuNV19ICR7c2l6ZTNbMS41XX0gJHtzaXplM1sxXX07XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgJHtzaXplM1s1XX0pO1xuICAgICAgICB3aWR0aDogJHtzaXplM1sxLjVdfTtcbiAgICAgIH1cblxuICAgICAgJiBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xuICAgICAgfVxuICAgIGAsXG4gICAgXCJjbG9zZUJ0bi1wb3NpdGlvbi1sZWZ0XCI6IGNzc2BcbiAgICAgIGJvdHRvbTogJHtzaXplM1syXX07XG4gICAgICByaWdodDogMDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDEwMCUsIDApO1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6ICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfSAxcHggc29saWQ7XG4gICAgICBib3JkZXItdG9wOiAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5kYXJrR3JheVszMDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHt0Mihjb2xvcnMuZ3JheVs0MDBdLCBjb2xvcnMuZGFya0dyYXlbMzAwXSl9IDFweCBzb2xpZDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDBweCAke2JvcmRlci5yYWRpdXMuc219ICR7Ym9yZGVyLnJhZGl1cy5zbX0gMHB4O1xuICAgICAgcGFkZGluZzogJHtzaXplM1sxLjVdfSAke3NpemUzWzFdfSAke3NpemUzWzEuNV19ICR7c2l6ZTNbMC41XX07XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArICR7c2l6ZTNbNV19KTtcbiAgICAgICAgd2lkdGg6ICR7c2l6ZTNbMS41XX07XG4gICAgICB9XG5cbiAgICAgICYgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgfVxuICAgIGAsXG4gICAgcXVlcmllc0NvbnRhaW5lcjogY3NzYFxuICAgICAgZmxleDogMSAxIDcwMHB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs1MF0sIGNvbG9ycy5kYXJrR3JheVs3MDBdKX07XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICYgKiB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB1aS1zYW5zLXNlcmlmLCBJbnRlciwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmO1xuICAgICAgfVxuICAgIGAsXG4gICAgZHJhZ0hhbmRsZTogY3NzYFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjEyNXMgZWFzZTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9ycy5wdXJwbGVbNDAwXX0ke3QyKFwiXCIsIGFscGhhWzkwXSl9O1xuICAgICAgfVxuICAgICAgei1pbmRleDogNDtcbiAgICBgLFxuICAgIFwiZHJhZ0hhbmRsZS1wb3NpdGlvbi10b3BcIjogY3NzYFxuICAgICAgYm90dG9tOiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDNweDtcbiAgICAgIGN1cnNvcjogbnMtcmVzaXplO1xuICAgIGAsXG4gICAgXCJkcmFnSGFuZGxlLXBvc2l0aW9uLWJvdHRvbVwiOiBjc3NgXG4gICAgICB0b3A6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogM3B4O1xuICAgICAgY3Vyc29yOiBucy1yZXNpemU7XG4gICAgYCxcbiAgICBcImRyYWdIYW5kbGUtcG9zaXRpb24tcmlnaHRcIjogY3NzYFxuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAzcHg7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBjdXJzb3I6IGV3LXJlc2l6ZTtcbiAgICBgLFxuICAgIFwiZHJhZ0hhbmRsZS1wb3NpdGlvbi1sZWZ0XCI6IGNzc2BcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDNweDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGN1cnNvcjogZXctcmVzaXplO1xuICAgIGAsXG4gICAgcm93OiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMl19ICR7dG9rZW5zLnNpemVbMi41XX07XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMi41XX07XG4gICAgICBib3JkZXItYm90dG9tOiAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX0gMXB4IHNvbGlkO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICYgPiBidXR0b24ge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6ICR7c2l6ZTNbMC41XX07XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB9XG4gICAgYCxcbiAgICBsb2dvQW5kVG9nZ2xlQ29udGFpbmVyOiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzNdfTtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYCxcbiAgICBsb2dvOiBjc3NgXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzAuNV19O1xuICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgJjpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiA0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzgwMF19O1xuICAgICAgfVxuICAgIGAsXG4gICAgdGFuc3RhY2tMb2dvOiBjc3NgXG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLm1kfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0LmJvbGR9O1xuICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnhzfTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgYCxcbiAgICBxdWVyeUZsYXZvckxvZ286IGNzc2BcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0LnNlbWlib2xkfTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICB0byByaWdodCxcbiAgICAgICAgJHt0MihcIiNlYTQwMzcsICNmZjliMTFcIiwgXCIjZGQ1MjRiLCAjZTlhMDNiXCIpfVxuICAgICAgKTtcbiAgICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGAsXG4gICAgcXVlcnlTdGF0dXNDb250YWluZXI6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgaGVpZ2h0OiBtaW4tY29udGVudDtcbiAgICBgLFxuICAgIHF1ZXJ5U3RhdHVzVGFnOiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVs2LjVdfTtcbiAgICAgIGJhY2tncm91bmQ6ICR7dDIoY29sb3JzLmdyYXlbNTBdLCBjb2xvcnMuZGFya0dyYXlbNTAwXSl9O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnNtfTtcbiAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMV19O1xuICAgICAgcGFkZGluZy1sZWZ0OiAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICBib3JkZXI6ICR7dDIoXCIxcHggc29saWQgXCIgKyBjb2xvcnMuZ3JheVszMDBdLCBcIjFweCBzb2xpZCB0cmFuc3BhcmVudFwiKX07XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzgwMF19O1xuICAgICAgfVxuICAgIGAsXG4gICAgcXVlcnlTdGF0dXNUYWdMYWJlbDogY3NzYFxuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgYCxcbiAgICBxdWVyeVN0YXR1c0NvdW50OiBjc3NgXG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIHBhZGRpbmc6IDAgNXB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzMwMF0pfTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICBoZWlnaHQ6ICR7dG9rZW5zLnNpemVbNC41XX07XG4gICAgYCxcbiAgICBzdGF0dXNUb29sdGlwOiBjc3NgXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs1MF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICB0b3A6IDEwMCU7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCBjYWxjKCR7dG9rZW5zLnNpemVbMl19KSk7XG4gICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzAuNV19ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbNDAwXSwgY29sb3JzLmdyYXlbNjAwXSl9O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzW1wiZ3JheVwiXVs2MDBdLCBjb2xvcnNbXCJncmF5XCJdWzMwMF0pfTtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTEwMCUpO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnRcbiAgICAgICAgICAke3QyKGNvbG9ycy5ncmF5WzQwMF0sIGNvbG9ycy5ncmF5WzYwMF0pfSB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiA3cHg7XG4gICAgICAgIC8qIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7ICovXG4gICAgICB9XG5cbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgdG9wOiAwcHg7XG4gICAgICAgIGNvbnRlbnQ6ICcgJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGxlZnQ6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgY2FsYygtMTAwJSArIDJweCkpO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnRcbiAgICAgICAgICAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX0gdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci13aWR0aDogN3B4O1xuICAgICAgfVxuICAgIGAsXG4gICAgZmlsdGVyc0NvbnRhaW5lcjogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICAmID4gYnV0dG9uIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzAuNV19ICR7dG9rZW5zLnNpemVbMS41XX0gJHt0b2tlbnMuc2l6ZVswLjVdfVxuICAgICAgICAgICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVsyMDBdKX07XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAke2ZvbnQubGluZUhlaWdodC5zbX07XG4gICAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsxLjVdfTtcbiAgICAgICAgbWF4LXdpZHRoOiAxNjBweDtcbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICAgIH1cbiAgICAgICAgJiBzdmcge1xuICAgICAgICAgIHdpZHRoOiAke3Rva2Vucy5zaXplWzNdfTtcbiAgICAgICAgICBoZWlnaHQ6ICR7dG9rZW5zLnNpemVbM119O1xuICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gICAgZmlsdGVySW5wdXQ6IGNzc2BcbiAgICAgIHBhZGRpbmc6ICR7c2l6ZTNbMC41XX0gJHtzaXplM1syXX07XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMS41XX07XG4gICAgICBtYXgtd2lkdGg6IDE2MHB4O1xuICAgICAgbWluLXdpZHRoOiAxMDBweDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzIwMF0pfTtcbiAgICAgIGhlaWdodDogbWluLWNvbnRlbnQ7XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVs0MDBdKX07XG4gICAgICAmID4gc3ZnIHtcbiAgICAgICAgd2lkdGg6ICR7c2l6ZTNbM119O1xuICAgICAgICBoZWlnaHQ6ICR7c2l6ZTNbM119O1xuICAgICAgfVxuICAgICAgJiBpbnB1dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAke2ZvbnQubGluZUhlaWdodC5zbX07XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgICAgfVxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgYCxcbiAgICBmaWx0ZXJTZWxlY3Q6IGNzc2BcbiAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMC41XX0gJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICBtYXgtd2lkdGg6IDE2MHB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbMjAwXSl9O1xuICAgICAgaGVpZ2h0OiBtaW4tY29udGVudDtcbiAgICAgICYgPiBzdmcge1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVs0MDBdKX07XG4gICAgICAgIHdpZHRoOiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgaGVpZ2h0OiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIH1cbiAgICAgICYgPiBzZWxlY3Qge1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs3MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAke2ZvbnQubGluZUhlaWdodC5zbX07XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIGFjdGlvbnNDb250YWluZXI6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMl19O1xuICAgIGAsXG4gICAgYWN0aW9uc0J0bjogY3NzYFxuICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVsyMDBdKX07XG4gICAgICB3aWR0aDogJHt0b2tlbnMuc2l6ZVs2LjVdfTtcbiAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVs2LjVdfTtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6ICR7dG9rZW5zLnNpemVbMS41XX07XG4gICAgICBtYXgtd2lkdGg6IDE2MHB4O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICB9XG4gICAgICAmIHN2ZyB7XG4gICAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgICAgd2lkdGg6ICR7dG9rZW5zLnNpemVbM119O1xuICAgICAgICBoZWlnaHQ6ICR7dG9rZW5zLnNpemVbM119O1xuICAgICAgfVxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgYCxcbiAgICBhY3Rpb25zQnRuT2ZmbGluZTogY3NzYFxuICAgICAgJiBzdmcge1xuICAgICAgICBzdHJva2U6ICR7dDIoY29sb3JzLnllbGxvd1s3MDBdLCBjb2xvcnMueWVsbG93WzUwMF0pfTtcbiAgICAgICAgZmlsbDogJHt0Mihjb2xvcnMueWVsbG93WzcwMF0sIGNvbG9ycy55ZWxsb3dbNTAwXSl9O1xuICAgICAgfVxuICAgIGAsXG4gICAgb3ZlcmZsb3dRdWVyeUNvbnRhaW5lcjogY3NzYFxuICAgICAgZmxleDogMTtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAmID4gZGl2IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIH1cbiAgICBgLFxuICAgIHF1ZXJ5Um93OiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs3MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwXSwgY29sb3JzLmRhcmtHcmF5WzcwMF0pfTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB9XG4gICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXIucmFkaXVzLnhzfTtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgICAmOmhvdmVyIC50c3FkLXF1ZXJ5LWhhc2gge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs2MDBdKX07XG4gICAgICB9XG5cbiAgICAgICYgLnRzcWQtcXVlcnktb2JzZXJ2ZXItY291bnQge1xuICAgICAgICBwYWRkaW5nOiAwICR7dG9rZW5zLnNpemVbMV19O1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgbWluLXdpZHRoOiAke3Rva2Vucy5zaXplWzYuNV19O1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDFweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs3MDBdKX07XG4gICAgICB9XG4gICAgICAmIC50c3FkLXF1ZXJ5LWhhc2gge1xuICAgICAgICB1c2VyLXNlbGVjdDogdGV4dDtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIG1pbi1oZWlnaHQ6ICR7dG9rZW5zLnNpemVbNl19O1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzFdfSAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgZm9udC1mYW1pbHk6IHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLFxuICAgICAgICAgICdMaWJlcmF0aW9uIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGNsaXA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICB9XG5cbiAgICAgICYgLnRzcWQtcXVlcnktZGlzYWJsZWQtaW5kaWNhdG9yIHtcbiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbODAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs2MDBdKX07XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgfVxuICAgIGAsXG4gICAgc2VsZWN0ZWRRdWVyeVJvdzogY3NzYFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNTAwXSl9O1xuICAgIGAsXG4gICAgZGV0YWlsc0NvbnRhaW5lcjogY3NzYFxuICAgICAgZmxleDogMSAxIDcwMHB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs1MF0sIGNvbG9ycy5kYXJrR3JheVs3MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs3MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICBmb250LWZhbWlseTogdWktc2Fucy1zZXJpZiwgSW50ZXIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZjtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGAsXG4gICAgZGV0YWlsc0hlYWRlcjogY3NzYFxuICAgICAgZm9udC1mYW1pbHk6IHVpLXNhbnMtc2VyaWYsIEludGVyLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWYsIHNhbnMtc2VyaWY7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgdG9wOiAwO1xuICAgICAgei1pbmRleDogMjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzYwMF0pfTtcbiAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMS41XX0gJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICBmb250LXdlaWdodDogJHtmb250LndlaWdodC5tZWRpdW19O1xuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICBsaW5lLWhlaWdodDogJHtmb250LmxpbmVIZWlnaHQueHN9O1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBgLFxuICAgIGRldGFpbHNCb2R5OiBjc3NgXG4gICAgICBtYXJnaW46ICR7dG9rZW5zLnNpemVbMS41XX0gMHB4ICR7dG9rZW5zLnNpemVbMl19IDBweDtcbiAgICAgICYgPiBkaXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgcGFkZGluZzogMCAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnNtfTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAmID4gc3BhbiB7XG4gICAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICAgIH1cbiAgICAgICAgJiA+IHNwYW46bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAke3Rva2Vucy5zaXplWzEuNV19O1xuICAgICAgfVxuXG4gICAgICAmIGNvZGUge1xuICAgICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsXG4gICAgICAgICAgJ0xpYmVyYXRpb24gTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnhzfTtcbiAgICAgIH1cblxuICAgICAgJiBwcmUge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG4gICAgYCxcbiAgICBxdWVyeURldGFpbHNTdGF0dXM6IGNzc2BcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7Y29sb3JzLmRhcmtHcmF5WzIwMF19O1xuICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy5zbX07XG4gICAgICBmb250LXdlaWdodDogJHtmb250LndlaWdodC5tZWRpdW19O1xuICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVsxXX0gJHt0b2tlbnMuc2l6ZVsyLjVdfTtcbiAgICBgLFxuICAgIGFjdGlvbnNCb2R5OiBjc3NgXG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBtYXJnaW46ICR7dG9rZW5zLnNpemVbMl19IDBweCAke3Rva2Vucy5zaXplWzJdfSAwcHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIHBhZGRpbmc6IDBweCAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICYgPiBidXR0b24ge1xuICAgICAgICBmb250LWZhbWlseTogdWktc2Fucy1zZXJpZiwgSW50ZXIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZjtcbiAgICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICAgIHBhZGRpbmc6ICR7dG9rZW5zLnNpemVbMV19ICR7dG9rZW5zLnNpemVbMl19O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNjAwXSl9O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAke2ZvbnQubGluZUhlaWdodC54c307XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNTAwXSl9O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpkaXNhYmxlZCB7XG4gICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAmID4gc3BhbiB7XG4gICAgICAgICAgd2lkdGg6ICR7c2l6ZTNbMS41XX07XG4gICAgICAgICAgaGVpZ2h0OiAke3NpemUzWzEuNV19O1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuZnVsbH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICAgIGFjdGlvbnNTZWxlY3Q6IGNzc2BcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemUueHN9O1xuICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVswLjVdfSAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs2MDBdKX07XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzMwMF0sIGNvbG9ycy5kYXJrR3JheVs0MDBdKX07XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZ2FwOiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAke2ZvbnQud2VpZ2h0Lm1lZGl1bX07XG4gICAgICBsaW5lLWhlaWdodDogJHtmb250LmxpbmVIZWlnaHQuc219O1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLnJlZFs1MDBdLCBjb2xvcnMucmVkWzQwMF0pfTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICB9XG4gICAgICAmID4gc3BhbiB7XG4gICAgICAgIHdpZHRoOiAke3NpemUzWzEuNV19O1xuICAgICAgICBoZWlnaHQ6ICR7c2l6ZTNbMS41XX07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuZnVsbH07XG4gICAgICB9XG4gICAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzgwMF19O1xuICAgICAgfVxuICAgICAgJiBzZWxlY3Qge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgfVxuXG4gICAgICAmIHN2ZyBwYXRoIHtcbiAgICAgICAgc3Ryb2tlOiAke3Rva2Vucy5jb2xvcnMucmVkWzQwMF19O1xuICAgICAgfVxuICAgICAgJiBzdmcge1xuICAgICAgICB3aWR0aDogJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICAgIGhlaWdodDogJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICB9XG4gICAgYCxcbiAgICBzZXR0aW5nc01lbnU6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAmICoge1xuICAgICAgICBmb250LWZhbWlseTogdWktc2Fucy1zZXJpZiwgSW50ZXIsIHN5c3RlbS11aSwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZjtcbiAgICAgIH1cbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6ICR7c2l6ZTNbMC41XX07XG4gICAgICBib3JkZXItcmFkaXVzOiAke3Rva2Vucy5ib3JkZXIucmFkaXVzLnNtfTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmdyYXlbNzAwXSl9O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs1MF0sIGNvbG9ycy5kYXJrR3JheVs2MDBdKX07XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgIHotaW5kZXg6IDk5OTk5O1xuICAgICAgbWluLXdpZHRoOiAxMjBweDtcbiAgICAgIHBhZGRpbmc6ICR7c2l6ZTNbMC41XX07XG4gICAgYCxcbiAgICBzZXR0aW5nc1N1YlRyaWdnZXI6IGNzc2BcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy54c307XG4gICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzFdfSAke3Rva2Vucy5zaXplWzFdfTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbNzAwXSwgY29sb3JzLmdyYXlbMzAwXSl9O1xuICAgICAgJiBzdmcge1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVs0MDBdKX07XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG4gICAgICAgIHdpZHRoOiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgICAgaGVpZ2h0OiAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5kYXJrR3JheVs1MDBdKX07XG4gICAgICB9XG4gICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHtjb2xvcnMuYmx1ZVs4MDBdfTtcbiAgICAgIH1cbiAgICAgICYuZGF0YS1kaXNhYmxlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgIH1cbiAgICBgLFxuICAgIHNldHRpbmdzTWVudUhlYWRlcjogY3NzYFxuICAgICAgcGFkZGluZzogJHt0b2tlbnMuc2l6ZVsxXX0gJHt0b2tlbnMuc2l6ZVsxXX07XG4gICAgICBmb250LXdlaWdodDogJHtmb250LndlaWdodC5tZWRpdW19O1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7dDIoY29sb3JzLmdyYXlbMzAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzUwMF0sIGNvbG9ycy5ncmF5WzQwMF0pfTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250LnNpemVbXCJ4c1wiXX07XG4gICAgYCxcbiAgICBzZXR0aW5nc1N1YkJ1dHRvbjogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs3MDBdLCBjb2xvcnMuZ3JheVszMDBdKX07XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplW1wieHNcIl19O1xuICAgICAgYm9yZGVyLXJhZGl1czogJHt0b2tlbnMuYm9yZGVyLnJhZGl1cy54c307XG4gICAgICBwYWRkaW5nOiAke3Rva2Vucy5zaXplWzFdfSAke3Rva2Vucy5zaXplWzFdfTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgJiBzdmcge1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs2MDBdLCBjb2xvcnMuZ3JheVs0MDBdKX07XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNTAwXSl9O1xuICAgICAgfVxuICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkICR7Y29sb3JzLmJsdWVbODAwXX07XG4gICAgICB9XG4gICAgYCxcbiAgICB0aGVtZVNlbGVjdGVkQnV0dG9uOiBjc3NgXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5wdXJwbGVbMTAwXSwgY29sb3JzLnB1cnBsZVs5MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMucHVycGxlWzcwMF0sIGNvbG9ycy5wdXJwbGVbMzAwXSl9O1xuICAgICAgJiBzdmcge1xuICAgICAgICBjb2xvcjogJHt0Mihjb2xvcnMucHVycGxlWzcwMF0sIGNvbG9ycy5wdXJwbGVbMzAwXSl9O1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLnB1cnBsZVsxMDBdLCBjb2xvcnMucHVycGxlWzkwMF0pfTtcbiAgICAgIH1cbiAgICBgLFxuICAgIHZpZXdUb2dnbGU6IGNzc2BcbiAgICAgIGJvcmRlci1yYWRpdXM6ICR7dG9rZW5zLmJvcmRlci5yYWRpdXMuc219O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsyMDBdLCBjb2xvcnMuZGFya0dyYXlbNjAwXSl9O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbMjAwXSl9O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBmb250LXNpemU6ICR7Zm9udC5zaXplLnhzfTtcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzcwMF0sIGNvbG9ycy5ncmF5WzMwMF0pfTtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICY6aGFzKDpmb2N1cy12aXNpYmxlKSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzgwMF19O1xuICAgICAgfVxuXG4gICAgICAmIC50c3FkLXJhZGlvLXRvZ2dsZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgJiBsYWJlbCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICBsaW5lLWhlaWdodDogJHtmb250LmxpbmVIZWlnaHQubWR9O1xuICAgICAgICB9XG5cbiAgICAgICAgJiBsYWJlbDpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNTAwXSl9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYgPiBbZGF0YS1jaGVja2VkXSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMTAwXSwgY29sb3JzLmRhcmtHcmF5WzQwMF0pfTtcbiAgICAgICAgJiBsYWJlbDpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYgLnRzcWQtcmFkaW8tdG9nZ2xlOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgJiBsYWJlbCB7XG4gICAgICAgICAgcGFkZGluZzogMCAke3Rva2Vucy5zaXplWzEuNV19IDAgJHt0b2tlbnMuc2l6ZVsyXX07XG4gICAgICAgIH1cbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbMjAwXSl9O1xuICAgICAgfVxuXG4gICAgICAmIC50c3FkLXJhZGlvLXRvZ2dsZTpudGgtY2hpbGQoMikge1xuICAgICAgICAmIGxhYmVsIHtcbiAgICAgICAgICBwYWRkaW5nOiAwICR7dG9rZW5zLnNpemVbMl19IDAgJHt0b2tlbnMuc2l6ZVsxLjVdfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gICAgZGV2dG9vbHNFZGl0Rm9ybTogY3NzYFxuICAgICAgcGFkZGluZzogJHtzaXplM1syXX07XG4gICAgICAmID4gW2RhdGEtZXJyb3I9J3RydWUnXSB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke3QyKGNvbG9ycy5yZWRbMjAwXSwgY29sb3JzLnJlZFs4MDBdKX07XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICB9XG4gICAgYCxcbiAgICBkZXZ0b29sc0VkaXRUZXh0YXJlYTogY3NzYFxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgICAgIGZvbnQtZmFtaWx5OiAnRmlyYSBDb2RlJywgbW9ub3NwYWNlO1xuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMuc219O1xuICAgICAgZmllbGQtc2l6aW5nOiBjb250ZW50O1xuICAgICAgcGFkZGluZzogJHtzaXplM1syXX07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QyKGNvbG9ycy5ncmF5WzEwMF0sIGNvbG9ycy5kYXJrR3JheVs4MDBdKX07XG4gICAgICBjb2xvcjogJHt0Mihjb2xvcnMuZ3JheVs5MDBdLCBjb2xvcnMuZ3JheVsxMDBdKX07XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAke3QyKGNvbG9ycy5ncmF5WzIwMF0sIGNvbG9ycy5ncmF5WzcwMF0pfTtcbiAgICAgIHJlc2l6ZTogbm9uZTtcbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMueHN9O1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgJHt0Mihjb2xvcnMuYmx1ZVsyMDBdLCBjb2xvcnMuYmx1ZVs4MDBdKX07XG4gICAgICB9XG4gICAgYCxcbiAgICBkZXZ0b29sc0VkaXRGb3JtQWN0aW9uczogY3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGdhcDogJHtzaXplM1syXX07XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZy10b3A6ICR7c2l6ZTNbMV19O1xuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgYCxcbiAgICBkZXZ0b29sc0VkaXRGb3JtRXJyb3I6IGNzc2BcbiAgICAgIGNvbG9yOiAke3QyKGNvbG9ycy5yZWRbNzAwXSwgY29sb3JzLnJlZFs1MDBdKX07XG4gICAgYCxcbiAgICBkZXZ0b29sc0VkaXRGb3JtQWN0aW9uQ29udGFpbmVyOiBjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZ2FwOiAke3NpemUzWzJdfTtcbiAgICBgLFxuICAgIGRldnRvb2xzRWRpdEZvcm1BY3Rpb246IGNzc2BcbiAgICAgIGZvbnQtZmFtaWx5OiB1aS1zYW5zLXNlcmlmLCBJbnRlciwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmLCBzYW5zLXNlcmlmO1xuICAgICAgZm9udC1zaXplOiAke2ZvbnQuc2l6ZS54c307XG4gICAgICBwYWRkaW5nOiAke3NpemUzWzFdfSAke3Rva2Vucy5zaXplWzJdfTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBib3JkZXItcmFkaXVzOiAke2JvcmRlci5yYWRpdXMuc219O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt0Mihjb2xvcnMuZ3JheVsxMDBdLCBjb2xvcnMuZGFya0dyYXlbNjAwXSl9O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0Mihjb2xvcnMuZ3JheVszMDBdLCBjb2xvcnMuZGFya0dyYXlbNDAwXSl9O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogJHtzaXplM1syXX07XG4gICAgICBmb250LXdlaWdodDogJHtmb250LndlaWdodC5tZWRpdW19O1xuICAgICAgbGluZS1oZWlnaHQ6ICR7Zm9udC5saW5lSGVpZ2h0LnhzfTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7Ym9yZGVyLnJhZGl1cy54c307XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCAke2NvbG9ycy5ibHVlWzgwMF19O1xuICAgICAgfVxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dDIoY29sb3JzLmdyYXlbMjAwXSwgY29sb3JzLmRhcmtHcmF5WzUwMF0pfTtcbiAgICAgIH1cblxuICAgICAgJjpkaXNhYmxlZCB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgIH1cbiAgICBgXG4gIH07XG59O1xudmFyIGxpZ2h0U3R5bGVzMiA9IChjc3MpID0+IHN0eWxlc0ZhY3RvcnkyKFwibGlnaHRcIiwgY3NzKTtcbnZhciBkYXJrU3R5bGVzMiA9IChjc3MpID0+IHN0eWxlc0ZhY3RvcnkyKFwiZGFya1wiLCBjc3MpO1xuZGVsZWdhdGVFdmVudHMoW1wiY2xpY2tcIiwgXCJtb3VzZWRvd25cIiwgXCJpbnB1dFwiXSk7XG4vKiEgQnVuZGxlZCBsaWNlbnNlIGluZm9ybWF0aW9uOlxuXG5AdGFuc3RhY2svbWF0Y2gtc29ydGVyLXV0aWxzL2J1aWxkL2xpYi9pbmRleC5tanM6XG4gICgqKlxuICAgICAqIG1hdGNoLXNvcnRlci11dGlsc1xuICAgICAqXG4gICAgICogQ29weXJpZ2h0IChjKSBUYW5TdGFja1xuICAgICAqXG4gICAgICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gICAgICogTElDRU5TRS5tZCBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICAgICAqXG4gICAgICogQGxpY2Vuc2UgTUlUXG4gICAgICopXG4gICgqKlxuICAgKiBAbmFtZSBtYXRjaC1zb3J0ZXJcbiAgICogQGxpY2Vuc2UgTUlUIGxpY2Vuc2UuXG4gICAqIEBjb3B5cmlnaHQgKGMpIDIwOTkgS2VudCBDLiBEb2Rkc1xuICAgKiBAYXV0aG9yIEtlbnQgQy4gRG9kZHMgPG1lQGtlbnRjZG9kZHMuY29tPiAoaHR0cHM6Ly9rZW50Y2RvZGRzLmNvbSlcbiAgICopXG5cbkBrb2JhbHRlL3V0aWxzL2Rpc3QvaW5kZXguanM6XG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSBhcmlha2l0LlxuICAgKiBNSVQgTGljZW5zZWQsIENvcHlyaWdodCAoYykgRGllZ28gSGF6LlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBBcmlha2l0IHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmlha2l0L2FyaWFraXQvYmxvYi9kYTE0MjY3MmVkZGVmYTk5MzY1NzczY2VkNzIxNzFmYWNjMDZmZGNiL3BhY2thZ2VzL2FyaWFraXQtdXRpbHMvc3JjL2FycmF5LnRzXG4gICAqKVxuICAoKiFcbiAgICogT3JpZ2luYWwgY29kZSBieSBDaGFrcmEgVUlcbiAgICogTUlUIExpY2Vuc2VkLCBDb3B5cmlnaHQgKGMpIDIwMTkgU2VndW4gQWRlYmF5by5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgQ2hha3JhIFVJIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFrcmEtdWkvY2hha3JhLXVpL2Jsb2IvbWFpbi9wYWNrYWdlcy91dGlscy9zcmMvYXNzZXJ0aW9uLnRzXG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gcmVhY3Qtc3BlY3RydW0uXG4gICAqIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBDb3B5cmlnaHQgMjAyMCBBZG9iZS5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgUmVhY3QgU3BlY3RydW0gdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL3NvbGlkanMtY29tbXVuaXR5L3NvbGlkLWFyaWEvYmxvYi8yYzVmNTRmZWI1Y2ZlYTUxNGIxZWUwYTUyZDA0MTY4NzhmODgyMzUxL3BhY2thZ2VzL3V0aWxzL3NyYy9jcmVhdGVHbG9iYWxMaXN0ZW5lcnMudHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSBhcmlha2l0LlxuICAgKiBNSVQgTGljZW5zZWQsIENvcHlyaWdodCAoYykgRGllZ28gSGF6LlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBBcmlha2l0IHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmlha2l0L2FyaWFraXQvYmxvYi8yMzJiYzc5MDE4ZWMyMDk2N2ZlYzFlMDk3YTk0NzRhYmEzYmI1YmU3L3BhY2thZ2VzL2FyaWFraXQtdXRpbHMvc3JjL2RvbS50c1xuICAgKilcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIHJlYWN0LXNwZWN0cnVtLlxuICAgKiBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgQ29weXJpZ2h0IDIwMjAgQWRvYmUuXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIFJlYWN0IFNwZWN0cnVtIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL2NmOWFiMjRmMzI1NWJlMTUzMGQwZjU4NDA2MWEwMWFhMWU4MTgwZTYvcGFja2FnZXMvQHJlYWN0LWFyaWEvdXRpbHMvc3JjL3BsYXRmb3JtLnRzXG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gcmVhY3Qtc3BlY3RydW0uXG4gICAqIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBDb3B5cmlnaHQgMjAyMCBBZG9iZS5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgUmVhY3QgU3BlY3RydW0gdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlL3JlYWN0LXNwZWN0cnVtL2Jsb2IvYTlkZWE4YTM2NzIxNzllNmMzOGFhZmQxNDI5ZGFmNDRjN2VhMmZmNi9wYWNrYWdlcy9AcmVhY3QtYXJpYS91dGlscy9zcmMvZm9jdXNXaXRob3V0U2Nyb2xsaW5nLnRzXG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gYXJpYWtpdC5cbiAgICogTUlUIExpY2Vuc2VkLCBDb3B5cmlnaHQgKGMpIERpZWdvIEhhei5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgQXJpYWtpdCB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYXJpYWtpdC9hcmlha2l0L2Jsb2IvbWFpbi9wYWNrYWdlcy9hcmlha2l0LXV0aWxzL3NyYy9mb2N1cy50c1xuICAgKlxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSByZWFjdC1zcGVjdHJ1bS5cbiAgICogQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIENvcHlyaWdodCAyMDIwIEFkb2JlLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBSZWFjdCBTcGVjdHJ1bSB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9tYWluL3BhY2thZ2VzLyU0MHJlYWN0LWFyaWEvZm9jdXMvc3JjL2lzRWxlbWVudFZpc2libGUudHNcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlL3JlYWN0LXNwZWN0cnVtL2Jsb2IvOGYyZjJhY2IzZDU4NTAzODJlYmU2MzFmMDU1Zjg4YzcwNGFhN2QxNy9wYWNrYWdlcy9AcmVhY3QtYXJpYS9mb2N1cy9zcmMvRm9jdXNTY29wZS50c3hcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSByZWFjdC1zcGVjdHJ1bS5cbiAgICogQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIENvcHlyaWdodCAyMDIwIEFkb2JlLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBSZWFjdCBTcGVjdHJ1bSB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9mNmU2ODZmZTlkM2I5ODNkNDg2NTA5ODBjMWVjZmRkZTMyMGJjNjJmL3BhY2thZ2VzL0ByZWFjdC1hcmlhL2ZvY3VzL3NyYy9Gb2N1c1Njb3BlLnRzeFxuICAgKilcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIHJlYWN0LXNwZWN0cnVtLlxuICAgKiBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgQ29weXJpZ2h0IDIwMjAgQWRvYmUuXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIFJlYWN0IFNwZWN0cnVtIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL2E5ZGVhOGEzNjcyMTc5ZTZjMzhhYWZkMTQyOWRhZjQ0YzdlYTJmZjYvcGFja2FnZXMvQHJlYWN0LWFyaWEvdXRpbHMvc3JjL2dldFNjcm9sbFBhcmVudC50c1xuICAgKilcbiAgKCohXG4gICAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgYmFzZWQgb24gY29kZSBmcm9tIHJlYWN0LXNwZWN0cnVtLlxuICAgKiBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgQ29weXJpZ2h0IDIwMjAgQWRvYmUuXG4gICAqXG4gICAqIENyZWRpdHMgdG8gdGhlIFJlYWN0IFNwZWN0cnVtIHRlYW06XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hZG9iZS9yZWFjdC1zcGVjdHJ1bS9ibG9iL2E5ZGVhOGEzNjcyMTc5ZTZjMzhhYWZkMTQyOWRhZjQ0YzdlYTJmZjYvcGFja2FnZXMvQHJlYWN0LWFyaWEvdXRpbHMvc3JjL2lzVmlydHVhbEV2ZW50LnRzXG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gcmVhY3Qtc3BlY3RydW0uXG4gICAqIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBDb3B5cmlnaHQgMjAyMCBBZG9iZS5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgUmVhY3QgU3BlY3RydW0gdGVhbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlL3JlYWN0LXNwZWN0cnVtL2Jsb2IvZmYzZTY5MGZmZmM2YzU0MzY3YjgwNTdlMjhhMGU1YjkyMTFmMzdiNS9wYWNrYWdlcy9AcmVhY3Qtc3RhdGVseS91dGlscy9zcmMvbnVtYmVyLnRzXG4gICAqKVxuICAoKiFcbiAgICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBiYXNlZCBvbiBjb2RlIGZyb20gYXJpYWtpdC5cbiAgICogTUlUIExpY2Vuc2VkLCBDb3B5cmlnaHQgKGMpIERpZWdvIEhhei5cbiAgICpcbiAgICogQ3JlZGl0cyB0byB0aGUgQXJpYWtpdCB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYXJpYWtpdC9hcmlha2l0L2Jsb2IvODRlOTc5NDNhZDYzN2E1ODJjMDFjOWI1NmQ4ODBjZDk1ZjU5NTczNy9wYWNrYWdlcy9hcmlha2l0L3NyYy9ob3ZlcmNhcmQvX191dGlscy9wb2x5Z29uLnRzXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcmlha2l0L2FyaWFraXQvYmxvYi9mMmE5Njk3M2RlNTIzZDY3ZTQxZWVjOTgzMjYzOTM2YzQ4OWVmM2UyL3BhY2thZ2VzL2FyaWFraXQvc3JjL2hvdmVyY2FyZC9fX3V0aWxzL2RlYnVnLXBvbHlnb24udHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSByZWFjdC1zcGVjdHJ1bS5cbiAgICogQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIENvcHlyaWdodCAyMDIwIEFkb2JlLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBSZWFjdCBTcGVjdHJ1bSB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi9hOWRlYThhMzY3MjE3OWU2YzM4YWFmZDE0MjlkYWY0NGM3ZWEyZmY2L3BhY2thZ2VzL0ByZWFjdC1hcmlhL3V0aWxzL3NyYy9ydW5BZnRlclRyYW5zaXRpb24udHNcbiAgICopXG4gICgqIVxuICAgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGJhc2VkIG9uIGNvZGUgZnJvbSByZWFjdC1zcGVjdHJ1bS5cbiAgICogQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIENvcHlyaWdodCAyMDIwIEFkb2JlLlxuICAgKlxuICAgKiBDcmVkaXRzIHRvIHRoZSBSZWFjdCBTcGVjdHJ1bSB0ZWFtOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYWRvYmUvcmVhY3Qtc3BlY3RydW0vYmxvYi84ZjJmMmFjYjNkNTg1MDM4MmViZTYzMWYwNTVmODhjNzA0YWE3ZDE3L3BhY2thZ2VzL0ByZWFjdC1hcmlhL3V0aWxzL3NyYy9zY3JvbGxJbnRvVmlldy50c1xuICAgKilcbiovXG5cbmV4cG9ydCB7IENvbnRlbnRWaWV3LCBEZXZ0b29scywgUGFyZW50UGFuZWwsIFBpUFByb3ZpZGVyLCBRdWVyeURldnRvb2xzQ29udGV4dCwgVEhFTUVfUFJFRkVSRU5DRSwgVGhlbWVDb250ZXh0LCBjcmVhdGVMb2NhbFN0b3JhZ2UgfTtcbiJdLAogICJtYXBwaW5ncyI6ICI0YUFHQSxJQUFJQSxHQUFXLENBQUNDLEdBQ1pDLEdBQVFGLElBQVksQ0FBQyxDQUFDRyxHQUN0QkMsR0FBTyxJQUFHLEdBQ1ZDLEdBQWlCQyxHQUFPQSxHQUFNLEtBQzlCQyxHQUFxQkMsR0FBUUEsRUFBSSxPQUFPSCxFQUFhLEVBQ3pELFNBQVNJLEdBQU1DLEVBQVcsQ0FDeEIsTUFBTyxJQUFJQyxJQUFTLENBQ2xCLFFBQVdDLEtBQVlGLEVBQ3JCRSxHQUFZQSxFQUFTLEdBQUdELENBQUksQ0FDaEMsQ0FDRixDQUNBLElBQUlFLEVBQVVDLEdBQU0sT0FBT0EsR0FBTSxZQUFjLENBQUNBLEVBQUUsT0FBU0EsRUFBRSxFQUFJQSxFQUM3REMsR0FBV0MsR0FBVSxNQUFNLFFBQVFBLENBQUssRUFBSUEsRUFBUUEsRUFBUSxDQUFDQSxDQUFLLEVBQUksQ0FBQyxFQUMzRSxTQUFTQyxHQUFXQyxLQUFjUCxFQUFNLENBQ3RDLE9BQU8sT0FBT08sR0FBYyxXQUFhQSxFQUFVLEdBQUdQLENBQUksRUFBSU8sQ0FDaEUsQ0FDQSxJQUFJQyxHQUFlakIsR0FBU2tCLEdBQU9DLEdBQVMsRUFBSUMsRUFBVUYsQ0FBRSxFQUFJQSxFQUFLRSxFQUNyRSxTQUFTQyxHQUFnQkMsRUFBU0MsRUFBTUMsRUFBYUMsRUFBZSxDQUNsRSxJQUFNQyxFQUFhSixFQUFRLE9BQ3JCSyxFQUFhSixFQUFLLE9BQ3BCbkIsRUFBSyxFQUNULEdBQUksQ0FBQ3VCLEVB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QUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsS0FDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsS0FDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixRQUFTLElBQ1QsUUFBUyxJQUNULE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLEtBQ1IsT0FBUSxLQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxLQUNSLE9BQVEsS0FDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxPQUFRLFNBQ1IsT0FBUSxTQUNSLE9BQVEsU0FDUixPQUFRLFNBQ1IsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsUUFBUyxJQUNULFFBQVMsSUFDVCxRQUFTLElBQ1QsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixPQUFRLElBQ1IsT0FBUSxJQUNSLE9BQVEsSUFDUixP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TSxRQUNqQjI3QixFQUFXMzdCLEVBQU0sUUFDdkIsT0FBUXFzQixFQUFlLENBQ3JCLElBQUssTUFDSHRwQixFQUFRLEtBQUssQ0FBQzI0QixFQUFVQyxFQUFXLENBQUMsQ0FBQyxFQUNyQzU0QixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksS0FBTUEsRUFBWSxNQUFNLENBQUMsRUFDbkRxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksS0FBTUEsRUFBWSxHQUFHLENBQUMsRUFDaERxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksTUFBT0EsRUFBWSxHQUFHLENBQUMsRUFDakRxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksTUFBT0EsRUFBWSxNQUFNLENBQUMsRUFDcEQsTUFDRixJQUFLLFFBQ0hxRixFQUFRLEtBQUssQ0FBQzI0QixFQUFXLEVBQUdDLENBQVEsQ0FBQyxFQUNyQzU0QixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksS0FBTUEsRUFBWSxHQUFHLENBQUMsRUFDaERxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksTUFBT0EsRUFBWSxHQUFHLENBQUMsRUFDakRxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksTUFBT0EsRUFBWSxNQUFNLENBQUMsRUFDcERxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksS0FBTUEsRUFBWSxNQUFNLENBQUMsRUFDbkQsTUFDRixJQUFLLFNBQ0hxRixFQUFRLEtBQUssQ0FBQzI0QixFQUFVQyxFQUFXLENBQUMsQ0FBQyxFQUNyQzU0QixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksTUFBT0EsRUFBWSxHQUFHLENBQUMsRUFDakRxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksTUFBT0EsRUFBWSxNQUFNLENBQUMsRUFDcERxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksS0FBTUEsRUFBWSxNQUFNLENBQUMsRUFDbkRxRixFQUFRLEtBQUssQ0FBQ3JGLEVBQVksS0FBTUEsRUFBWSxHQUFHLENBQUMsRUFDaEQsTUFDRixJQUFLLE9BQ0hxRixFQUFRLEtBQUssQ0FBQzI0QixFQUFXLEVBQUdDLENBQVEsQ0FB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SUFBSyxTQUNQLEVBQ0EsS0FBTSxDQUNKLEdBQUksVUFDSixHQUFJLFVBQ0osSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFNBQ1AsRUFDQSxNQUFPLENBQ0wsR0FBSSxVQUNKLEdBQUksVUFDSixJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssU0FDUCxFQUNBLElBQUssQ0FDSCxHQUFJLFVBQ0osSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxTQUNQLEVBQ0EsT0FBUSxDQUNOLEdBQUksVUFDSixHQUFJLFVBQ0osSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFNBQ1AsRUFDQSxPQUFRLENBQ04sR0FBSSxVQUNKLEdBQUksVUFDSixJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssU0FDUCxFQUNBLEtBQU0sQ0FDSixHQUFJLFVBQ0osR0FBSSxVQUNKLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxTQUNQLEVBQ0EsS0FBTSxDQUNKLEdBQUksVUFDSixHQUFJLFVBQ0osSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFNBQ1AsRUFDQSxLQUFNLENBQ0os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QUFZRSxFQUFTRixFQUFPLFlBQWFHLEVBQVNELEVBQU8sWUFBYUUsRUFBU0QsRUFBTyxXQUFZRSxFQUFTRixFQUFPLFlBQWFHLEVBQVNELEVBQU8sV0FBWUUsRUFBU0YsRUFBTyxZQUFhRyxFQUFTRCxFQUFPLFlBQWFFLEVBQVNELEVBQU8sV0FBWUUsRUFBU0YsRUFBTyxZQUFhRyxFQUFTRCxFQUFPLFdBQVlFLEVBQVNGLEVBQU8sWUFBYUcsRUFBU0QsRUFBTyxZQUFhRSxFQUFTRCxFQUFPLFdBQVlFLEVBQVNGLEVBQU8sWUFBYUcsRUFBU0QsRUFBTyxXQUFZRSxFQUFTRixFQUFPLFlBQWFHLEdBQVNELEVBQU8sWUFBYUUsRUFBU0QsR0FBTyxXQUFZRSxHQUFTRixHQUFPLFlBQWFHLEdBQVNELEdBQU8sV0FBWUUsR0FBU0YsR0FBTyxZQUFhRyxHQUFTRCxHQUFPLFlBQWFFLEdBQVNELEdBQU8sV0FBWUUsR0FBU0YsR0FBTyxZQUFhRyxHQUFTRCxHQUFPLFdBQVlFLEdBQVNGLEdBQU8sWUFBYUcsR0FBU0QsR0FBTyxXQUFZRSxFQUFTRCxHQUFPLFlBQWFFLEdBQVNELEVBQU8sWUFBYUUsRUFBU0QsR0FBTyxZQUFhRSxHQUFTRCxFQUFPLFlBQWFFLEVBQVNOLEdBQU8sWUFBYU8sR0FBU0QsRUFBTyxXQUFZRSxHQUFTRixFQUFPLFlBQWFHLEdBQVNELEdBQU8sV0FBWUUsR0FBU0YsR0FBTyxZQUFhRyxHQUFTRCxHQUFPLFdBQVlFLEdBQVNELEdBQU8sWUFBYUUsR0FBU0QsR0FBTyxZQUFhRSxHQUFTRCxHQUFPLFdBQVlFLEdBQVNELEdBQU8sWUFBYUUsRUFBU0QsR0FBTyxZQUFhRSxHQUFTRCxFQUFPLFlBQWFFLEdBQVNELEdBQU8sWUFBYUUsR0FBU0QsR0FBTyxZQUFhRSxHQUFTRCxHQUFPLFlBQWFFLEdBQVNELEdBQU8sWUFBYUUsR0FBU0QsR0FBTyxZQUFhRSxFQUFTRCxHQUFPLFlBQWFFLEdBQVNELEVBQU8sWUFBYUUsR0FBU0QsR0FBTyxZQUFhRSxHQUFTaEIsR0FBTyxZQUFhaUIsR0FBU0QsR0FB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QixHQUFldHVCLEdBQVFnOEIsR0FBZSxPQUFRaDhCLENBQUcsRUFDckQ1d0IsR0FBZSxDQUFDLFFBQVMsWUFBYSxPQUFPLENBQUMiLAogICJuYW1lcyI6IFsiaXNDbGllbnQiLCAiaXNTZXJ2ZXIiLCAiaXNEZXYiLCAiREVWIiwgIm5vb3AiLCAiaXNOb25OdWxsYWJsZSIsICJpMiIsICJmaWx0ZXJOb25OdWxsYWJsZSIsICJhcnIiLCAiY2hhaW4iLCAiY2FsbGJhY2tzIiwgImFyZ3MiLCAiY2FsbGJhY2siLCAiYWNjZXNzIiwgInYiLCAiYXNBcnJheSIsICJ2YWx1ZSIsICJhY2Nlc3NXaXRoIiwgInZhbHVlT3JGbiIsICJ0cnlPbkNsZWFudXAiLCAiZm4iLCAiZ2V0T3duZXIiLCAib25DbGVhbnVwIiwgImhhbmRsZURpZmZBcnJheSIsICJjdXJyZW50IiwgInByZXYiLCAiaGFuZGxlQWRkZWQiLCAiaGFuZGxlUmVtb3ZlZCIsICJjdXJyTGVuZ3RoIiwgInByZXZMZW5ndGgiLCAicHJldkVsIiwgImN1cnJFbCIsICJjcmVhdGVTdG9yYWdlIiwgInByb3BzIiwgImVycm9yIiwgInNldEVycm9yIiwgImNyZWF0ZVNpZ25hbCIsICJoYW5kbGVFcnJvciIsICJlcnIiLCAiZmFsbGJhY2siLCAiYXBpcyIsICJwcmVmaXgiLCAic2lnbmFscyIsICJzdG9yZSIsICJfIiwgImtleSIsICJub2RlIiwgInJlc3VsdCIsICJhcGkiLCAic2V0dGVyIiwgIm9wdGlvbnMiLCAiZmlsdGVyZWRWYWx1ZSIsICJhcGlLZXkiLCAicmVtb3ZlIiwgImNsZWFyIiwgInRvSlNPTiIsICJhZGRWYWx1ZSIsICJ2YWx1ZXMiLCAiaW5kZXgiLCAib25Nb3VudCIsICJsaXN0ZW5lciIsICJldiIsICJjaGFuZ2VkIiwgImNyZWF0ZUxvY2FsU3RvcmFnZSIsICJhZGRDbGVhck1ldGhvZCIsICJzdG9yYWdlIiwgInNlcmlhbGl6ZUNvb2tpZU9wdGlvbnMiLCAibWVtbyIsICJjb29raWVTdG9yYWdlIiwgIm9sZFZhbHVlIiwgInN0b3JhZ2VFdmVudCIsICJjb3VudCIsICJmb3VuZCIsICJsZW5ndGgiLCAiZmlyc3RCcmVha3BvaW50IiwgInNlY29uZEJyZWFrcG9pbnQiLCAidGhpcmRCcmVha3BvaW50IiwgIkJVVFRPTl9QT1NJVElPTiIsICJQT1NJVElPTiIsICJUSEVNRV9QUkVGRVJFTkNFIiwgIklOSVRJQUxfSVNfT1BFTiIsICJERUZBVUxUX0hFSUdIVCIsICJQSVBfREVGQVVMVF9IRUlHSFQiLCAiREVGQVVMVF9XSURUSCIsICJERUZBVUxUX1NPUlRfRk5fTkFNRSIsICJzb3J0Rm5zIiwgIkRFRkFVTFRfU09SVF9PUkRFUiIsICJERUZBVUxUX01VVEFUSU9OX1NPUlRfRk5fTkFNRSIsICJtdXRhdGlvblNvcnRGbnMiLCAiUXVlcnlEZXZ0b29sc0NvbnRleHQiLCAiY3JlYXRlQ29udGV4dCIsICJ1c2VRdWVyeURldnRvb2xzQ29udGV4dCIsICJ1c2VDb250ZXh0IiwgIlBpUENvbnRleHQiLCAiUGlQUHJvdmlkZXIiLCAicGlwV2luZG93IiwgInNldFBpcFdpbmRvdyIsICJjbG9zZVBpcFdpbmRvdyIsICJ3IiwgInJlcXVlc3RQaXBXaW5kb3ciLCAid2lkdGgiLCAiaGVpZ2h0IiwgInBpcCIsICJjbGVhckRlbGVnYXRlZEV2ZW50cyIsICJzdHlsZVNoZWV0IiwgImNzc1J1bGVzIiwgInJ1bGUiLCAic3R5bGUiLCAic3R5bGVfbm9kZSIsICJzdHlsZV9pZCIsICJsaW5rIiwgImRlbGVnYXRlRXZlbnRzIiwgImNyZWF0ZUVmZmVjdCIsICJnb29iZXJTdHlsZXMiLCAib2JzZXJ2ZXIiLCAicGlwX3N0eWxlIiwgImNyZWF0ZU1lbW8iLCAiY3JlYXRlQ29tcG9uZW50IiwgInVzZVBpUFdpbmRvdyIsICJjdHgiLCAiVGhlbWVDb250ZXh0IiwgInVzZVRoZW1lIiwgImNoYXJhY3Rlck1hcCIsICJjaGFycyIsICJhbGxBY2NlbnRzIiwgInJlbW92ZUFjY2VudHMiLCAic3RyIiwgIm1hdGNoIiwgInJhbmtpbmdzIiwgInJhbmtJdGVtIiwgIml0ZW0iLCAiX29wdGlvbnMkdGhyZXNob2xkIiwgInJhbmsiLCAiZ2V0TWF0Y2hSYW5raW5nIiwgInZhbHVlc1RvUmFuayIsICJnZXRBbGxWYWx1ZXNUb1JhbmsiLCAicmFua2luZ0luZm8iLCAicmFua1ZhbHVlIiwgIm5ld1JhbmsiLCAibWluUmFua2luZyIsICJtYXhSYW5raW5nIiwgInRocmVzaG9sZCIsICJ0ZXN0U3RyaW5nIiwgInN0cmluZ1RvUmFuayIsICJwcmVwYXJlVmFsdWVGb3JDb21wYXJpc29uIiwgImdldEFjcm9ueW0iLCAiZ2V0Q2xvc2VuZXNzUmFua2luZyIsICJzdHJpbmciLCAiYWNyb255bSIsICJ3b3JkSW5TdHJpbmciLCAic3BsaXRCeUh5cGhlbldvcmQiLCAibWF0Y2hpbmdJbk9yZGVyQ2hhckNvdW50IiwgImNoYXJOdW1iZXIiLCAiZmluZE1hdGNoaW5nQ2hhcmFjdGVyIiwgIm1hdGNoQ2hhciIsICJqIiwgIkoiLCAiZ2V0UmFua2luZyIsICJzcHJlYWQzIiwgInNwcmVhZFBlcmNlbnRhZ2UiLCAiaW5PcmRlclBlcmNlbnRhZ2UiLCAiZmlyc3RJbmRleCIsICJJIiwgInNwcmVhZDIiLCAiX3JlZiIsICJrZWVwRGlhY3JpdGljcyIsICJnZXRJdGVtVmFsdWVzIiwgImFjY2Vzc29yIiwgImFjY2Vzc29yRm4iLCAiYWNjZXNzb3JzIiwgImFsbFZhbHVlcyIsICJhdHRyaWJ1dGVzIiwgImdldEFjY2Vzc29yQXR0cmlidXRlcyIsICJpdGVtVmFsdWVzIiwgImRlZmF1bHRLZXlBdHRyaWJ1dGVzIiwgImUiLCAidCIsICJ0MiIsICJsIiwgImEiLCAibiIsICJvIiwgImUyIiwgInIyIiwgImwyIiwgImEyIiwgIm4yIiwgImMyIiwgImUzIiwgInQzIiwgImMiLCAicyIsICJpIiwgInAyIiwgInUyIiwgImQiLCAicjMiLCAidDQiLCAibzIiLCAiZiIsICJwIiwgImU0IiwgInUiLCAiciIsICJjbHN4IiwgImNyZWF0ZUxpc3RUcmFuc2l0aW9uIiwgInNvdXJjZSIsICJpbml0U291cmNlIiwgInVudHJhY2siLCAiY29weSIsICJvbkNoYW5nZSIsICJwcmV2U2V0IiwgImV4aXRpbmciLCAidG9SZW1vdmUiLCAic2V0VG9SZW1vdmUiLCAiaXNUcmFuc2l0aW9uUGVuZGluZyIsICJ1c2VUcmFuc2l0aW9uIiwgImZpbmlzaFJlbW92ZWQiLCAiZWxzIiwgImVsIiwgImVsc1RvUmVtb3ZlIiwgInNvdXJjZUxpc3QiLCAiJFRSQUNLIiwgIm5leHQiLCAibmV4dFNldCIsICJhZGRlZCIsICJyZW1vdmVkIiwgInVuY2hhbmdlZCIsICJub3RoaW5nQ2hhbmdlZCIsICJtZXJnZVJlZnMiLCAicmVmcyIsICJkZWZhdWx0RWxlbWVudFByZWRpY2F0ZSIsICJnZXRSZXNvbHZlZEVsZW1lbnRzIiwgInByZWRpY2F0ZSIsICJyZXN1bHRzIiwgInJlc29sdmVFbGVtZW50cyIsICJzZXJ2ZXJQcmVkaWNhdGUiLCAiY2hpbGRyZW4yIiwgImNyZWF0ZUNsYXNzbmFtZXMiLCAibmFtZSIsICJuZXh0RnJhbWUiLCAiZW50ZXJUcmFuc2l0aW9uIiwgImNsYXNzZXMiLCAiZXZlbnRzIiwgImRvbmUiLCAib25CZWZvcmVFbnRlciIsICJvbkVudGVyIiwgIm9uQWZ0ZXJFbnRlciIsICJlbmRUcmFuc2l0aW9uIiwgImV4aXRUcmFuc2l0aW9uIiwgIm9uQmVmb3JlRXhpdCIsICJvbkV4aXQiLCAib25BZnRlckV4aXQiLCAiVHJhbnNpdGlvbkdyb3VwIiwgImNsYXNzbmFtZXMiLCAibGlzdCIsICJ0b01vdmUiLCAibW92ZWQiLCAicmVjdCIsICJuZXdSZWN0IiwgImRYIiwgImRZIiwgImVuZFRyYW5zaXRpb24yIiwgIkZBTExCQUNLIiwgImRpc3Bvc2UiLCAia2V5QXJyYXkiLCAiaXRlbXMiLCAia2V5Rm4iLCAibWFwRm4iLCAiaXRlbXNSZWYiLCAiczIiLCAibGVuIiwgImNyZWF0ZVJvb3QiLCAiZGlzcG9zZTIiLCAiZmIiLCAiYWRkTmV3SXRlbSIsICJwcmV2S2V5cyIsICJsb29rdXAiLCAiZ2V0SXRlbSIsICJzZXRJdGVtIiwgInNhdmUiLCAic2V0SW5kZXgiLCAiS2V5IiwgImJ5IiwgIm1ha2VFdmVudExpc3RlbmVyIiwgInRhcmdldCIsICJ0eXBlIiwgImhhbmRsZXIiLCAiY3JlYXRlRXZlbnRMaXN0ZW5lciIsICJ0YXJnZXRzIiwgImF0dGFjaExpc3RlbmVycyIsICJ0eXBlMiIsICJjcmVhdGVSZW5kZXJFZmZlY3QiLCAibWFrZVJlc2l6ZU9ic2VydmVyIiwgInJlZiIsICJjcmVhdGVSZXNpemVPYnNlcnZlciIsICJvblJlc2l6ZSIsICJwcmV2aW91c01hcCIsICJvYnNlcnZlIiwgInVub2JzZXJ2ZSIsICJlbnRyaWVzMiIsICJlbnRyeSIsICJjb250ZW50UmVjdCIsICJwcmV2aW91cyIsICJleHRyYWN0Q1NTcmVnZXgiLCAic3RyaW5nU3R5bGVUb09iamVjdCIsICJvYmplY3QiLCAiY29tYmluZVN0eWxlIiwgImIyIiwgImFkZEl0ZW1Ub0FycmF5IiwgImFycmF5IiwgInJlbW92ZUl0ZW1Gcm9tQXJyYXkiLCAidXBkYXRlZEFycmF5IiwgImlzTnVtYmVyIiwgImlzU3RyaW5nIiwgImlzRnVuY3Rpb24iLCAiY3JlYXRlR2VuZXJhdGVJZCIsICJiYXNlSWQiLCAic3VmZml4IiwgImNvbnRhaW5zIiwgInBhcmVudCIsICJjaGlsZCIsICJnZXRBY3RpdmVFbGVtZW50IiwgImFjdGl2ZURlc2NlbmRhbnQiLCAiYWN0aXZlRWxlbWVudCIsICJnZXREb2N1bWVudCIsICJpc0ZyYW1lIiwgImlkIiwgImVsZW1lbnQiLCAiZ2V0V2luZG93IiwgIkV2ZW50S2V5IiwgIkV2ZW50S2V5MiIsICJ0ZXN0UGxhdGZvcm0iLCAicmUiLCAiaXNNYWMiLCAiaXNJUGhvbmUiLCAiaXNJUGFkIiwgImlzSU9TIiwgImlzQXBwbGVEZXZpY2UiLCAiY2FsbEhhbmRsZXIiLCAiZXZlbnQiLCAiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCAiaGFuZGxlcnMiLCAiaXNDdHJsS2V5IiwgImZvY3VzV2l0aG91dFNjcm9sbGluZyIsICJzdXBwb3J0c1ByZXZlbnRTY3JvbGwiLCAic2Nyb2xsYWJsZUVsZW1lbnRzIiwgImdldFNjcm9sbGFibGVFbGVtZW50cyIsICJyZXN0b3JlU2Nyb2xsUG9zaXRpb24iLCAic3VwcG9ydHNQcmV2ZW50U2Nyb2xsQ2FjaGVkIiwgInJvb3RTY3JvbGxpbmdFbGVtZW50IiwgInNjcm9sbFRvcCIsICJzY3JvbGxMZWZ0IiwgImZvY3VzYWJsZUVsZW1lbnRzIiwgInRhYmJhYmxlRWxlbWVudHMiLCAiRk9DVVNBQkxFX0VMRU1FTlRfU0VMRUNUT1IiLCAiVEFCQkFCTEVfRUxFTUVOVF9TRUxFQ1RPUiIsICJnZXRBbGxUYWJiYWJsZUluIiwgImNvbnRhaW5lciIsICJpbmNsdWRlQ29udGFpbmVyIiwgInRhYmJhYmxlRWxlbWVudHMyIiwgImlzVGFiYmFibGUiLCAiZnJhbWVCb2R5IiwgImFsbEZyYW1lVGFiYmFibGUiLCAiaXNGb2N1c2FibGUiLCAiaGFzTmVnYXRpdmVUYWJJbmRleCIsICJpc0VsZW1lbnRWaXNpYmxlIiwgImNoaWxkRWxlbWVudCIsICJpc1N0eWxlVmlzaWJsZSIsICJpc0F0dHJpYnV0ZVZpc2libGUiLCAiZGlzcGxheSIsICJ2aXNpYmlsaXR5IiwgImlzVmlzaWJsZSIsICJnZXRDb21wdXRlZFN0eWxlMyIsICJjb21wdXRlZERpc3BsYXkiLCAiY29tcHV0ZWRWaXNpYmlsaXR5IiwgImdldEZvY3VzYWJsZVRyZWVXYWxrZXIiLCAicm9vdCIsICJvcHRzIiwgInNjb3BlIiwgInNlbGVjdG9yIiwgIndhbGtlciIsICJnZXRTY3JvbGxQYXJlbnQiLCAiaXNTY3JvbGxhYmxlIiwgIm5vb3AzIiwgImlzUG9pbnRJblBvbHlnb24iLCAicG9pbnQiLCAicG9seWdvbiIsICJ4IiwgInkiLCAiaW5zaWRlIiwgInhpIiwgInlpIiwgInhqIiwgInlqIiwgInZ5IiwgIndoZXJlIiwgIm1lcmdlRGVmYXVsdFByb3BzIiwgImRlZmF1bHRQcm9wcyIsICJtZXJnZVByb3BzIiwgInRyYW5zaXRpb25zQnlFbGVtZW50IiwgInRyYW5zaXRpb25DYWxsYmFja3MiLCAic2V0dXBHbG9iYWxFdmVudHMiLCAib25UcmFuc2l0aW9uU3RhcnQiLCAidHJhbnNpdGlvbnMiLCAib25UcmFuc2l0aW9uRW5kIiwgInByb3BlcnRpZXMiLCAiY2IiLCAic2Nyb2xsSW50b1ZpZXciLCAic2Nyb2xsVmlldyIsICJvZmZzZXRYIiwgInJlbGF0aXZlT2Zmc2V0IiwgIm9mZnNldFkiLCAibWF4WCIsICJtYXhZIiwgImFuY2VzdG9yIiwgImF4aXMiLCAicHJvcCIsICJzdW0iLCAic2Nyb2xsSW50b1ZpZXdwb3J0IiwgInRhcmdldEVsZW1lbnQiLCAic2Nyb2xsUGFyZW50IiwgIm9yaWdpbmFsTGVmdCIsICJvcmlnaW5hbFRvcCIsICJuZXdMZWZ0IiwgIm5ld1RvcCIsICJ2aXN1YWxseUhpZGRlblN0eWxlcyIsICJjcmVhdGVSZWdpc3RlcklkIiwgImNyZWF0ZVRhZ05hbWUiLCAidGFnTmFtZSIsICJzZXRUYWdOYW1lIiwgInN0cmluZ09yVW5kZWZpbmVkIiwgIlBvbHltb3JwaGljIiwgImxvY2FsIiwgIm90aGVycyIsICJzcGxpdFByb3BzIiwgIkR5bmFtaWMiLCAiRk9STV9DT05UUk9MX1BST1BfTkFNRVMiLCAiY3JlYXRlRm9ybUNvbnRyb2wiLCAiZGVmYXVsdElkIiwgImNyZWF0ZVVuaXF1ZUlkIiwgIm1lcmdlZFByb3BzIiwgImxhYmVsSWQiLCAic2V0TGFiZWxJZCIsICJmaWVsZElkIiwgInNldEZpZWxkSWQiLCAiZGVzY3JpcHRpb25JZCIsICJzZXREZXNjcmlwdGlvbklkIiwgImVycm9yTWVzc2FnZUlkIiwgInNldEVycm9yTWVzc2FnZUlkIiwgImdldEFyaWFMYWJlbGxlZEJ5IiwgImZpZWxkSWQyIiwgImZpZWxkQXJpYUxhYmVsIiwgImZpZWxkQXJpYUxhYmVsbGVkQnkiLCAiaGFzQXJpYUxhYmVsbGVkQnkiLCAiZ2V0QXJpYURlc2NyaWJlZEJ5IiwgImZpZWxkQXJpYURlc2NyaWJlZEJ5IiwgImRhdGFzZXQiLCAiRm9ybUNvbnRyb2xDb250ZXh0IiwgInVzZUZvcm1Db250cm9sQ29udGV4dCIsICJjb250ZXh0IiwgIkZvcm1Db250cm9sRGVzY3JpcHRpb24iLCAiRm9ybUNvbnRyb2xFcnJvck1lc3NhZ2UiLCAiaXNJbnZhbGlkIiwgIlNob3ciLCAiRm9ybUNvbnRyb2xMYWJlbCIsICJyJCIsICJfcmVmJCIsICJjcmVhdGVGb3JtUmVzZXRMaXN0ZW5lciIsICJvbiIsICJlbGVtZW50MiIsICJmb3JtIiwgImdldENsb3Nlc3RGb3JtIiwgImlzRm9ybUVsZW1lbnQiLCAiY3JlYXRlQ29udHJvbGxhYmxlU2lnbmFsIiwgIl92YWx1ZSIsICJfc2V0VmFsdWUiLCAiaXNDb250cm9sbGVkIiwgIm5leHRWYWx1ZSIsICJjcmVhdGVDb250cm9sbGFibGVCb29sZWFuU2lnbmFsIiwgInNldFZhbHVlIiwgImNyZWF0ZUNvbnRyb2xsYWJsZUFycmF5U2lnbmFsIiwgImNyZWF0ZVRvZ2dsZVN0YXRlIiwgImlzU2VsZWN0ZWQiLCAiX3NldElzU2VsZWN0ZWQiLCAiX19kZWZQcm9wIiwgIl9fZXhwb3J0IiwgImFsbCIsICJEb21Db2xsZWN0aW9uQ29udGV4dCIsICJ1c2VPcHRpb25hbERvbUNvbGxlY3Rpb25Db250ZXh0IiwgInVzZURvbUNvbGxlY3Rpb25Db250ZXh0IiwgImlzRWxlbWVudFByZWNlZGluZyIsICJmaW5kRE9NSW5kZXgiLCAiaXRlbUVsIiwgImN1cnJlbnRJdGVtRWwiLCAic29ydEJhc2VkT25ET01Qb3NpdGlvbiIsICJwYWlycyIsICJpc09yZGVyRGlmZmVyZW50IiwgImluZGV4QSIsICJpbmRleEIiLCAiZWxlbWVudEEiLCAiZWxlbWVudEIiLCAic2V0SXRlbXNCYXNlZE9uRE9NUG9zaXRpb24iLCAic2V0SXRlbXMiLCAic29ydGVkSXRlbXMiLCAiZ2V0Q29tbW9uUGFyZW50IiwgImZpcnN0SXRlbSIsICJsYXN0SXRlbUVsIiwgInBhcmVudEVsIiwgImNyZWF0ZVRpbWVvdXRPYnNlcnZlciIsICJ0aW1lb3V0IiwgImNyZWF0ZVNvcnRCYXNlZE9uRE9NUG9zaXRpb24iLCAicHJldmlvdXNJdGVtcyIsICJoYXNQcmV2aW91c0l0ZW1zIiwgImNyZWF0ZURvbUNvbGxlY3Rpb24iLCAicmVnaXN0ZXJJdGVtIiwgInByZXZJdGVtcyIsICJuZXh0SXRlbXMiLCAicHJldkl0ZW0iLCAicHJvcHMyIiwgImNyZWF0ZURvbUNvbGxlY3Rpb25JdGVtIiwgInVucmVnaXN0ZXIiLCAiYnVpbGROb2RlcyIsICJwYXJhbXMiLCAibGV2ZWwiLCAibm9kZXMiLCAiZ2V0S2V5IiwgImRhdGEiLCAiX2dldEtleSIsICJkYXRhS2V5IiwgImdldFRleHRWYWx1ZSIsICJfZ2V0VGV4dFZhbHVlIiwgImRhdGFUZXh0VmFsdWUiLCAiZ2V0RGlzYWJsZWQiLCAiX2dldERpc2FibGVkIiwgImdldFNlY3Rpb25DaGlsZHJlbiIsICJzZWN0aW9uQ2hpbGRyZW4iLCAiY2hpbGROb2RlcyIsICJjcmVhdGVDb2xsZWN0aW9uIiwgImRlcHMiLCAiUlRMX1NDUklQVFMiLCAiUlRMX0xBTkdTIiwgImlzUlRMIiwgImxvY2FsZSIsICJzY3JpcHQiLCAibGFuZyIsICJnZXRSZWFkaW5nRGlyZWN0aW9uIiwgImdldERlZmF1bHRMb2NhbGUiLCAiY3VycmVudExvY2FsZSIsICJsaXN0ZW5lcnMiLCAidXBkYXRlTG9jYWxlIiwgImNyZWF0ZURlZmF1bHRMb2NhbGUiLCAiZGVmYXVsdFNTUkxvY2FsZSIsICJkZWZhdWx0Q2xpZW50TG9jYWxlIiwgInNldERlZmF1bHRDbGllbnRMb2NhbGUiLCAiZGVmYXVsdExvY2FsZSIsICJJMThuQ29udGV4dCIsICJ1c2VMb2NhbGUiLCAiY2FjaGUiLCAiY3JlYXRlQ29sbGF0b3IiLCAiY2FjaGVLZXkiLCAiY29sbGF0b3IiLCAiU2VsZWN0aW9uIiwgIl9TZWxlY3Rpb24iLCAia2V5czIiLCAiYW5jaG9yS2V5IiwgImN1cnJlbnRLZXkiLCAiY3JlYXRlQ29udHJvbGxhYmxlU2VsZWN0aW9uU2lnbmFsIiwgImlzTm9uQ29udGlndW91c1NlbGVjdGlvbk1vZGlmaWVyIiwgImlzQ3RybEtleVByZXNzZWQiLCAiY29udmVydFNlbGVjdGlvbiIsICJzZWxlY3Rpb24iLCAiaXNTYW1lU2VsZWN0aW9uIiwgInNldEEiLCAic2V0QiIsICJjcmVhdGVNdWx0aXBsZVNlbGVjdGlvblN0YXRlIiwgImlzRm9jdXNlZCIsICJzZXRGb2N1c2VkIiwgImZvY3VzZWRLZXkiLCAic2V0Rm9jdXNlZEtleSIsICJzZWxlY3RlZEtleXNQcm9wIiwgImRlZmF1bHRTZWxlY3RlZEtleXMiLCAiZGVmYXVsdFNlbGVjdGlvbiIsICJzZWxlY3RlZEtleXMiLCAiX3NldFNlbGVjdGVkS2V5cyIsICJzZWxlY3Rpb25CZWhhdmlvciIsICJzZXRTZWxlY3Rpb25CZWhhdmlvciIsICJzZWxlY3Rpb25Nb2RlIiwgImRpc2FsbG93RW1wdHlTZWxlY3Rpb24iLCAic2V0U2VsZWN0ZWRLZXlzIiwgImNyZWF0ZVR5cGVTZWxlY3QiLCAic2VhcmNoIiwgInNldFNlYXJjaCIsICJ0aW1lb3V0SWQiLCAic2V0VGltZW91dElkIiwgImRlbGVnYXRlIiwgIm1hbmFnZXIiLCAiY2hhcmFjdGVyIiwgImdldFN0cmluZ0ZvcktleSIsICJuZXdTZWFyY2giLCAiaXNBbGxTYW1lTGV0dGVyIiwgImxldHRlciIsICJjcmVhdGVTZWxlY3RhYmxlQ29sbGVjdGlvbiIsICJzY3JvbGxSZWYiLCAiZmluYWxTY3JvbGxSZWYiLCAiZGlyZWN0aW9uIiwgInNjcm9sbFBvcyIsICJzY3JvbGxFbCIsICJ0eXBlU2VsZWN0SGFuZGxlcnMiLCAib3JpZW50YXRpb24iLCAib25LZXlEb3duIiwgInJlZkVsIiwgInNlbGVjdE9uRm9jdXMiLCAibmF2aWdhdGVUb0tleSIsICJzaG91bGRGb2N1c1dyYXAiLCAibmV4dEtleSIsICJpc1JUTDMiLCAiZmlyc3RLZXkiLCAibGFzdEtleSIsICJsYXN0IiwgIm9uRm9jdXNJbiIsICJuYXZpZ2F0ZVRvRmlyc3RLZXkiLCAicmVsYXRlZFRhcmdldCIsICJvbkZvY3VzT3V0IiwgIm9uTW91c2VEb3duIiwgInRyeUF1dG9Gb2N1cyIsICJhdXRvRm9jdXMiLCAibmV3VmFsdWUiLCAiaXNWaXJ0dWFsaXplZCIsICJjcmVhdGVTZWxlY3RhYmxlSXRlbSIsICJzaG91bGRVc2VWaXJ0dWFsRm9jdXMiLCAib25TZWxlY3QiLCAiaXNEaXNhYmxlZCIsICJhbGxvd3NTZWxlY3Rpb24iLCAicG9pbnRlckRvd25UeXBlIiwgIm9uUG9pbnRlckRvd24iLCAib25Qb2ludGVyVXAiLCAib25DbGljayIsICJvbkZvY3VzIiwgInRhYkluZGV4IiwgImtleTIiLCAic2hvdWxkVXNlVmlydHVhbEZvY3VzMiIsICJTZWxlY3Rpb25NYW5hZ2VyIiwgImNvbGxlY3Rpb24iLCAic3RhdGUiLCAicmV0cmlldmVkS2V5IiwgImsiLCAiZmlyc3QiLCAiaXNJdGVtQmVmb3JlRmlyc3QiLCAiaXNJdGVtQWZ0ZXJMYXN0IiwgInRvS2V5IiwgInJldHJpZXZlZFRvS2V5IiwgImZyb20iLCAidG8iLCAiZnJvbUl0ZW0iLCAidG9JdGVtIiwgIkxpc3RDb2xsZWN0aW9uIiwgImlkeCIsICJjcmVhdGVMaXN0U3RhdGUiLCAic2VsZWN0aW9uU3RhdGUiLCAic2VsZWN0aW9uTWFuYWdlciIsICJjcmVhdGVDb21wdXRlZCIsICJhY2Nlc3MyIiwgImNyZWF0ZVByZXNlbmNlIiwgInJlZlN0eWxlcyIsICJnZXRBbmltYXRpb25OYW1lIiwgInByZXNlbnRTdGF0ZSIsICJzZXRQcmVzZW50U3RhdGUiLCAiYW5pbWF0aW9uTmFtZSIsICJwcmV2U2hvdyIsICJzaG93IiwgInByZXZBbmltYXRpb25OYW1lIiwgImN1cnJlbnRBbmltYXRpb25OYW1lIiwgImhhbmRsZUFuaW1hdGlvblN0YXJ0IiwgImhhbmRsZUFuaW1hdGlvbkVuZCIsICJpc0N1cnJlbnRBbmltYXRpb24iLCAicHJlc2VuY2VfZGVmYXVsdCIsICJzcmNfZGVmYXVsdCIsICJEQVRBX1RPUF9MQVlFUl9BVFRSIiwgIm9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHMiLCAiaGFzRGlzYWJsZWRCb2R5UG9pbnRlckV2ZW50cyIsICJsYXllcnMiLCAiaW5kZXhPZiIsICJsYXllciIsICJmaW5kIiwgImlzVG9wTW9zdExheWVyIiwgImdldFBvaW50ZXJCbG9ja2luZ0xheWVycyIsICJnZXRUb3BNb3N0UG9pbnRlckJsb2NraW5nTGF5ZXIiLCAiaGFzUG9pbnRlckJsb2NraW5nTGF5ZXIiLCAiaXNCZWxvd1BvaW50ZXJCbG9ja2luZ0xheWVyIiwgImhpZ2hlc3RCbG9ja2luZ0luZGV4IiwgImFkZExheWVyIiwgInJlbW92ZUxheWVyIiwgImFzc2lnblBvaW50ZXJFdmVudFRvTGF5ZXJzIiwgImRpc2FibGVCb2R5UG9pbnRlckV2ZW50cyIsICJvd25lckRvY3VtZW50IiwgInJlc3RvcmVCb2R5UG9pbnRlckV2ZW50cyIsICJsYXllclN0YWNrIiwgImJ1dHRvbl9leHBvcnRzIiwgIkJ1dHRvbiIsICJCdXR0b25Sb290IiwgIkJVVFRPTl9JTlBVVF9UWVBFUyIsICJpc0J1dHRvbiIsICJpc05hdGl2ZUJ1dHRvbiIsICJlbGVtZW50VGFnTmFtZSIsICJpc05hdGl2ZUlucHV0IiwgImlzTmF0aXZlTGluayIsICJzaWRlcyIsICJtaW4iLCAibWF4IiwgInJvdW5kIiwgImZsb29yIiwgImNyZWF0ZUNvb3JkcyIsICJvcHBvc2l0ZVNpZGVNYXAiLCAib3Bwb3NpdGVBbGlnbm1lbnRNYXAiLCAiY2xhbXAyIiwgInN0YXJ0IiwgImVuZCIsICJldmFsdWF0ZSIsICJwYXJhbSIsICJnZXRTaWRlIiwgInBsYWNlbWVudCIsICJnZXRBbGlnbm1lbnQiLCAiZ2V0T3Bwb3NpdGVBeGlzIiwgImdldEF4aXNMZW5ndGgiLCAiZ2V0U2lkZUF4aXMiLCAiZ2V0QWxpZ25tZW50QXhpcyIsICJnZXRBbGlnbm1lbnRTaWRlcyIsICJyZWN0cyIsICJydGwiLCAiYWxpZ25tZW50IiwgImFsaWdubWVudEF4aXMiLCAibWFpbkFsaWdubWVudFNpZGUiLCAiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCAiZ2V0RXhwYW5kZWRQbGFjZW1lbnRzIiwgIm9wcG9zaXRlUGxhY2VtZW50IiwgImdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50IiwgImdldFNpZGVMaXN0IiwgInNpZGUiLCAiaXNTdGFydCIsICJsciIsICJybCIsICJ0YiIsICJidCIsICJnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzIiwgImZsaXBBbGlnbm1lbnQiLCAiZXhwYW5kUGFkZGluZ09iamVjdCIsICJwYWRkaW5nIiwgImdldFBhZGRpbmdPYmplY3QiLCAicmVjdFRvQ2xpZW50UmVjdCIsICJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsICJyZWZlcmVuY2UiLCAiZmxvYXRpbmciLCAic2lkZUF4aXMiLCAiYWxpZ25MZW5ndGgiLCAiaXNWZXJ0aWNhbCIsICJjb21tb25YIiwgImNvbW1vblkiLCAiY29tbW9uQWxpZ24iLCAiY29vcmRzIiwgImNvbXB1dGVQb3NpdGlvbiIsICJjb25maWciLCAic3RyYXRlZ3kiLCAibWlkZGxld2FyZSIsICJwbGF0Zm9ybTIiLCAidmFsaWRNaWRkbGV3YXJlIiwgInN0YXRlZnVsUGxhY2VtZW50IiwgIm1pZGRsZXdhcmVEYXRhIiwgInJlc2V0Q291bnQiLCAibmV4dFgiLCAibmV4dFkiLCAicmVzZXQiLCAiZGV0ZWN0T3ZlcmZsb3ciLCAiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwgImVsZW1lbnRzIiwgImJvdW5kYXJ5IiwgInJvb3RCb3VuZGFyeSIsICJlbGVtZW50Q29udGV4dCIsICJhbHRCb3VuZGFyeSIsICJwYWRkaW5nT2JqZWN0IiwgImNsaXBwaW5nQ2xpZW50UmVjdCIsICJvZmZzZXRQYXJlbnQiLCAib2Zmc2V0U2NhbGUiLCAiZWxlbWVudENsaWVudFJlY3QiLCAiYXJyb3ciLCAiYXJyb3dEaW1lbnNpb25zIiwgImlzWUF4aXMiLCAibWluUHJvcCIsICJtYXhQcm9wIiwgImNsaWVudFByb3AiLCAiZW5kRGlmZiIsICJzdGFydERpZmYiLCAiYXJyb3dPZmZzZXRQYXJlbnQiLCAiY2xpZW50U2l6ZSIsICJjZW50ZXJUb1JlZmVyZW5jZSIsICJsYXJnZXN0UG9zc2libGVQYWRkaW5nIiwgIm1pblBhZGRpbmciLCAibWF4UGFkZGluZyIsICJtaW4kMSIsICJtYXgyIiwgImNlbnRlciIsICJvZmZzZXQzIiwgInNob3VsZEFkZE9mZnNldCIsICJhbGlnbm1lbnRPZmZzZXQiLCAiZmxpcCIsICJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCAiX21pZGRsZXdhcmVEYXRhJGZsaXAiLCAiaW5pdGlhbFBsYWNlbWVudCIsICJjaGVja01haW5BeGlzIiwgImNoZWNrQ3Jvc3NBeGlzIiwgInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsICJmYWxsYmFja1N0cmF0ZWd5IiwgImZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24iLCAiZGV0ZWN0T3ZlcmZsb3dPcHRpb25zIiwgImluaXRpYWxTaWRlQXhpcyIsICJpc0Jhc2VQbGFjZW1lbnQiLCAiZmFsbGJhY2tQbGFjZW1lbnRzIiwgImhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24iLCAicGxhY2VtZW50czIiLCAib3ZlcmZsb3ciLCAib3ZlcmZsb3dzIiwgIm92ZXJmbG93c0RhdGEiLCAic2lkZXMyIiwgInNpZGUyIiwgIl9taWRkbGV3YXJlRGF0YSRmbGlwMiIsICJfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIiLCAibmV4dEluZGV4IiwgIm5leHRQbGFjZW1lbnQiLCAicmVzZXRQbGFjZW1lbnQiLCAiX292ZXJmbG93c0RhdGEkZmlsdGVyMiIsICJwbGFjZW1lbnQyIiwgImN1cnJlbnRTaWRlQXhpcyIsICJvdmVyZmxvdzIiLCAiYWNjIiwgImdldFNpZGVPZmZzZXRzIiwgImlzQW55U2lkZUZ1bGx5Q2xpcHBlZCIsICJoaWRlIiwgIm9mZnNldHMiLCAiY29udmVydFZhbHVlVG9Db29yZHMiLCAibWFpbkF4aXNNdWx0aSIsICJjcm9zc0F4aXNNdWx0aSIsICJyYXdWYWx1ZSIsICJtYWluQXhpcyIsICJjcm9zc0F4aXMiLCAib2Zmc2V0IiwgIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsICJkaWZmQ29vcmRzIiwgInNoaWZ0IiwgImxpbWl0ZXIiLCAieDIiLCAieTIiLCAibWFpbkF4aXNDb29yZCIsICJjcm9zc0F4aXNDb29yZCIsICJtaW5TaWRlIiwgIm1heFNpZGUiLCAibWluMiIsICJsaW1pdGVkQ29vcmRzIiwgInNpemUiLCAiYXBwbHkiLCAiaGVpZ2h0U2lkZSIsICJ3aWR0aFNpZGUiLCAibWF4aW11bUNsaXBwaW5nSGVpZ2h0IiwgIm1heGltdW1DbGlwcGluZ1dpZHRoIiwgIm92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0IiwgIm92ZXJmbG93QXZhaWxhYmxlV2lkdGgiLCAibm9TaGlmdCIsICJhdmFpbGFibGVIZWlnaHQiLCAiYXZhaWxhYmxlV2lkdGgiLCAieE1pbiIsICJ4TWF4IiwgInlNaW4iLCAieU1heCIsICJuZXh0RGltZW5zaW9ucyIsICJnZXROb2RlTmFtZSIsICJpc05vZGUiLCAiZ2V0V2luZG93MiIsICJfbm9kZSRvd25lckRvY3VtZW50IiwgImdldERvY3VtZW50RWxlbWVudCIsICJpc0VsZW1lbnQiLCAiaXNIVE1MRWxlbWVudCIsICJpc1NoYWRvd1Jvb3QiLCAiaXNPdmVyZmxvd0VsZW1lbnQiLCAib3ZlcmZsb3dYIiwgIm92ZXJmbG93WSIsICJnZXRDb21wdXRlZFN0eWxlMiIsICJpc1RhYmxlRWxlbWVudCIsICJpc1RvcExheWVyIiwgImlzQ29udGFpbmluZ0Jsb2NrIiwgImVsZW1lbnRPckNzcyIsICJ3ZWJraXQiLCAiaXNXZWJLaXQiLCAiY3NzIiwgImdldENvbnRhaW5pbmdCbG9jayIsICJjdXJyZW50Tm9kZSIsICJnZXRQYXJlbnROb2RlIiwgImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsICJnZXROb2RlU2Nyb2xsIiwgImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwgInBhcmVudE5vZGUiLCAiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCAidHJhdmVyc2VJZnJhbWVzIiwgIl9ub2RlJG93bmVyRG9jdW1lbnQyIiwgInNjcm9sbGFibGVBbmNlc3RvciIsICJpc0JvZHkiLCAid2luIiwgImdldENzc0RpbWVuc2lvbnMiLCAiaGFzT2Zmc2V0IiwgIm9mZnNldFdpZHRoIiwgIm9mZnNldEhlaWdodCIsICJzaG91bGRGYWxsYmFjayIsICJ1bndyYXBFbGVtZW50IiwgImdldFNjYWxlIiwgImRvbUVsZW1lbnQiLCAiJCIsICJub09mZnNldHMiLCAiZ2V0VmlzdWFsT2Zmc2V0cyIsICJzaG91bGRBZGRWaXN1YWxPZmZzZXRzIiwgImlzRml4ZWQiLCAiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCAiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwgImluY2x1ZGVTY2FsZSIsICJpc0ZpeGVkU3RyYXRlZ3kiLCAiY2xpZW50UmVjdCIsICJzY2FsZSIsICJ2aXN1YWxPZmZzZXRzIiwgIm9mZnNldFdpbiIsICJjdXJyZW50V2luIiwgImN1cnJlbnRJRnJhbWUiLCAiaWZyYW1lU2NhbGUiLCAiaWZyYW1lUmVjdCIsICJsZWZ0IiwgInRvcCIsICJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsICJkb2N1bWVudEVsZW1lbnQiLCAidG9wTGF5ZXIiLCAic2Nyb2xsIiwgImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IiwgIm9mZnNldFJlY3QiLCAiZ2V0Q2xpZW50UmVjdHMiLCAiZ2V0V2luZG93U2Nyb2xsQmFyWCIsICJnZXREb2N1bWVudFJlY3QiLCAiaHRtbCIsICJib2R5IiwgImdldFZpZXdwb3J0UmVjdCIsICJ2aXN1YWxWaWV3cG9ydCIsICJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwgImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwgImdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvciIsICJjbGlwcGluZ0FuY2VzdG9yIiwgImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsICJzdG9wTm9kZSIsICJnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMiLCAiY2FjaGUyIiwgImNhY2hlZFJlc3VsdCIsICJjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSIsICJlbGVtZW50SXNGaXhlZCIsICJjb21wdXRlZFN0eWxlIiwgImN1cnJlbnROb2RlSXNDb250YWluaW5nIiwgImdldENsaXBwaW5nUmVjdCIsICJjbGlwcGluZ0FuY2VzdG9ycyIsICJmaXJzdENsaXBwaW5nQW5jZXN0b3IiLCAiY2xpcHBpbmdSZWN0IiwgImFjY1JlY3QiLCAiZ2V0RGltZW5zaW9ucyIsICJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsICJpc1N0YXRpY1Bvc2l0aW9uZWQiLCAiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsICJwb2x5ZmlsbCIsICJnZXRPZmZzZXRQYXJlbnQiLCAic3ZnT2Zmc2V0UGFyZW50IiwgImdldEVsZW1lbnRSZWN0cyIsICJnZXRPZmZzZXRQYXJlbnRGbiIsICJnZXREaW1lbnNpb25zRm4iLCAiZmxvYXRpbmdEaW1lbnNpb25zIiwgImlzUlRMMiIsICJwbGF0Zm9ybSIsICJvYnNlcnZlTW92ZSIsICJvbk1vdmUiLCAiaW8iLCAiY2xlYW51cCIsICJfaW8iLCAicmVmcmVzaCIsICJza2lwIiwgImluc2V0VG9wIiwgImluc2V0UmlnaHQiLCAiaW5zZXRCb3R0b20iLCAiaW5zZXRMZWZ0IiwgImlzRmlyc3RVcGRhdGUiLCAiaGFuZGxlT2JzZXJ2ZSIsICJyYXRpbyIsICJhdXRvVXBkYXRlIiwgInVwZGF0ZSIsICJhbmNlc3RvclNjcm9sbCIsICJhbmNlc3RvclJlc2l6ZSIsICJlbGVtZW50UmVzaXplIiwgImxheW91dFNoaWZ0IiwgImFuaW1hdGlvbkZyYW1lIiwgInJlZmVyZW5jZUVsIiwgImFuY2VzdG9ycyIsICJjbGVhbnVwSW8iLCAicmVvYnNlcnZlRnJhbWUiLCAicmVzaXplT2JzZXJ2ZXIiLCAiZmlyc3RFbnRyeSIsICJfcmVzaXplT2JzZXJ2ZXIiLCAiZnJhbWVJZCIsICJwcmV2UmVmUmVjdCIsICJmcmFtZUxvb3AiLCAibmV4dFJlZlJlY3QiLCAiX3Jlc2l6ZU9ic2VydmVyMiIsICJvZmZzZXQyIiwgInNoaWZ0MiIsICJmbGlwMiIsICJzaXplMiIsICJoaWRlMiIsICJhcnJvdzIiLCAiY29tcHV0ZVBvc2l0aW9uMiIsICJtZXJnZWRPcHRpb25zIiwgInBsYXRmb3JtV2l0aENhY2hlIiwgIlBvcHBlckNvbnRleHQiLCAidXNlUG9wcGVyQ29udGV4dCIsICJfdG1wbCQiLCAidGVtcGxhdGUiLCAiREVGQVVMVF9TSVpFIiwgIkhBTEZfREVGQVVMVF9TSVpFIiwgIlJPVEFUSU9OX0RFRyIsICJQb3BwZXJBcnJvdyIsICJkaXIiLCAiY29udGVudFN0eWxlIiwgImNyZWF0ZUNvbXB1dGVkU3R5bGUiLCAiZmlsbCIsICJzdHJva2UiLCAiYm9yZGVyV2lkdGgiLCAic3Ryb2tlV2lkdGgiLCAicm90YXRlIiwgIl9lbCQiLCAiX2VsJDIiLCAic2V0QXR0cmlidXRlIiwgInNldFN0eWxlIiwgIlBvcHBlclBvc2l0aW9uZXIiLCAiY3JlYXRlRE9NUmVjdCIsICJhbmNob3JSZWN0IiwgImdldEFuY2hvckVsZW1lbnQiLCAiYW5jaG9yIiwgImdldEFuY2hvclJlY3QiLCAiaXNWYWxpZFBsYWNlbWVudCIsICJmbGlwMjIiLCAiUkVWRVJTRV9CQVNFX1BMQUNFTUVOVCIsICJnZXRUcmFuc2Zvcm1PcmlnaW4iLCAicmVhZGluZ0RpcmVjdGlvbiIsICJiYXNlUGxhY2VtZW50IiwgInJldmVyc2VQbGFjZW1lbnQiLCAiUG9wcGVyUm9vdCIsICJwb3NpdGlvbmVyUmVmIiwgInNldFBvc2l0aW9uZXJSZWYiLCAiYXJyb3dSZWYiLCAic2V0QXJyb3dSZWYiLCAiY3VycmVudFBsYWNlbWVudCIsICJzZXRDdXJyZW50UGxhY2VtZW50IiwgImFuY2hvclJlZiIsICJ1cGRhdGVQb3NpdGlvbiIsICJmbG9hdGluZ0VsIiwgImFycm93RWwiLCAiYXJyb3dPZmZzZXQiLCAiZmluYWxHdXR0ZXIiLCAiaGFzQWxpZ25tZW50IiwgInJlZmVyZW5jZVdpZHRoIiwgInBvcyIsICJhcnJvd1giLCAiYXJyb3dZIiwgImNsZWFudXBBdXRvVXBkYXRlIiwgInBvc2l0aW9uZXIiLCAiY29udGVudCIsICJQb3BwZXIiLCAiY3JlYXRlRXNjYXBlS2V5RG93biIsICJoYW5kbGVLZXlEb3duIiwgImRvY3VtZW50MiIsICJQT0lOVEVSX0RPV05fT1VUU0lERV9FVkVOVCIsICJGT0NVU19PVVRTSURFX0VWRU5UIiwgImNyZWF0ZUludGVyYWN0T3V0c2lkZSIsICJwb2ludGVyRG93blRpbWVvdXRJZCIsICJjbGlja0hhbmRsZXIiLCAib25Qb2ludGVyRG93bk91dHNpZGUiLCAib25Gb2N1c091dHNpZGUiLCAib25JbnRlcmFjdE91dHNpZGUiLCAiaXNFdmVudE91dHNpZGUiLCAiaGFuZGxlcjIiLCAicG9pbnRlckRvd25PdXRzaWRlRXZlbnQiLCAiZm9jdXNPdXRzaWRlRXZlbnQiLCAiRGlzbWlzc2FibGVMYXllckNvbnRleHQiLCAidXNlT3B0aW9uYWxEaXNtaXNzYWJsZUxheWVyQ29udGV4dCIsICJEaXNtaXNzYWJsZUxheWVyIiwgInBhcmVudENvbnRleHQiLCAibmVzdGVkTGF5ZXJzIiwgInJlZ2lzdGVyTmVzdGVkTGF5ZXIiLCAicGFyZW50VW5yZWdpc3RlciIsICJ1bnJlZ2lzdGVyRnJvbVBhcmVudExheWVyIiwgInJlZjIiLCAiZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzIiwgImNyZWF0ZURpc2Nsb3N1cmVTdGF0ZSIsICJpc09wZW4iLCAic2V0SXNPcGVuIiwgIm9wZW4iLCAiY2xvc2UiLCAicmFkaW9fZ3JvdXBfZXhwb3J0cyIsICJSYWRpb0dyb3VwSXRlbSIsICJSYWRpb0dyb3VwSXRlbUNvbnRyb2wiLCAiUmFkaW9Hcm91cEl0ZW1EZXNjcmlwdGlvbiIsICJSYWRpb0dyb3VwSXRlbUluZGljYXRvciIsICJSYWRpb0dyb3VwSXRlbUlucHV0IiwgIlJhZGlvR3JvdXBJdGVtTGFiZWwiLCAiUmFkaW9Hcm91cExhYmVsIiwgIlJhZGlvR3JvdXAiLCAiUmFkaW9Hcm91cFJvb3QiLCAiUmFkaW9Hcm91cENvbnRleHQiLCAidXNlUmFkaW9Hcm91cENvbnRleHQiLCAiUmFkaW9Hcm91cEl0ZW1Db250ZXh0IiwgInVzZVJhZGlvR3JvdXBJdGVtQ29udGV4dCIsICJmb3JtQ29udHJvbENvbnRleHQiLCAicmFkaW9Hcm91cENvbnRleHQiLCAiaW5wdXRJZCIsICJzZXRJbnB1dElkIiwgImlucHV0UmVmIiwgInNldElucHV0UmVmIiwgInNldElzRm9jdXNlZCIsICJzZXRSZWYiLCAicHJlc2VudCIsICJyYWRpb0NvbnRleHQiLCAiYXJpYUxhYmVsbGVkQnkiLCAiYXJpYURlc2NyaWJlZEJ5IiwgImlzSW50ZXJuYWxDaGFuZ2VFdmVudCIsICJzZXRJc0ludGVybmFsQ2hhbmdlRXZlbnQiLCAib25CbHVyIiwgImZvcm1Db250cm9sUHJvcHMiLCAic2VsZWN0ZWQiLCAic2V0U2VsZWN0ZWQiLCAiaXNTZWxlY3RlZFZhbHVlIiwgInJhZGlvIiwgIkxpc3RLZXlib2FyZERlbGVnYXRlIiwgImtleUFmdGVyIiwgImtleUJlZm9yZSIsICJtZW51IiwgInBhZ2VZIiwgImtleUFib3ZlIiwgImtleUJlbG93IiwgImZyb21LZXkiLCAic3Vic3RyaW5nIiwgImNyZWF0ZVNlbGVjdGFibGVMaXN0IiwgImtleWJvYXJkRGVsZWdhdGUiLCAiQVVUT0ZPQ1VTX09OX01PVU5UX0VWRU5UIiwgIkFVVE9GT0NVU19PTl9VTk1PVU5UX0VWRU5UIiwgIkVWRU5UX09QVElPTlMiLCAiZm9jdXNTY29wZVN0YWNrIiwgImNyZWF0ZUZvY3VzU2NvcGUiLCAiaXNQYXVzZWQiLCAic2V0SXNQYXVzZWQiLCAiZm9jdXNTY29wZSIsICJsYXN0Rm9jdXNlZEVsZW1lbnQiLCAib25Nb3VudEF1dG9Gb2N1cyIsICJvblVubW91bnRBdXRvRm9jdXMiLCAiY3JlYXRlU2VudGluZWwiLCAidGFiYmFibGVzIiwgImZpcnN0VGFiYmFibGUiLCAibGFzdFRhYmJhYmxlIiwgInNob3VsZFByZXZlbnRVbm1vdW50QXV0b0ZvY3VzIiwgInByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCIsICJtb3VudEV2ZW50IiwgInVubW91bnRFdmVudCIsICJzdGFydFNlbnRpbmVsIiwgImVuZFNlbnRpbmVsIiwgIm11dGF0aW9ucyIsICJtdXRhdGlvbiIsICJEQVRBX0xJVkVfQU5OT1VOQ0VSX0FUVFIiLCAiY3JlYXRlSGlkZU91dHNpZGUiLCAiYXJpYUhpZGVPdXRzaWRlIiwgInJlZkNvdW50TWFwIiwgIm9ic2VydmVyU3RhY2siLCAidmlzaWJsZU5vZGVzIiwgImhpZGRlbk5vZGVzIiwgIndhbGsiLCAicm9vdDIiLCAiYWNjZXB0Tm9kZSIsICJhY2NlcHRSb290IiwgImhpZGUzIiwgInJlZkNvdW50IiwgImNoYW5nZXMiLCAiY2hhbmdlIiwgIm9ic2VydmVyV3JhcHBlciIsICJhY3RpdmVTdHlsZXMiLCAiY3JlYXRlU3R5bGUiLCAib3JpZ2luYWxTdHlsZXMiLCAiYWN0aXZlU3R5bGUiLCAicHJvcGVydHkiLCAiYWN0aXZlU3R5bGUyIiwgInN0eWxlX2RlZmF1bHQiLCAiZ2V0U2Nyb2xsRGltZW5zaW9ucyIsICJpc1Njcm9sbENvbnRhaW5lciIsICJzdHlsZXMiLCAiZ2V0U2Nyb2xsQXRMb2NhdGlvbiIsICJsb2NhdGlvbiIsICJzdG9wQXQiLCAiZGlyZWN0aW9uRmFjdG9yIiwgImN1cnJlbnRFbGVtZW50IiwgImF2YWlsYWJsZVNjcm9sbCIsICJhdmFpbGFibGVTY3JvbGxUb3AiLCAid3JhcHBlclJlYWNoZWQiLCAic2Nyb2xsT2Zmc2V0IiwgInNjcm9sbFNpemUiLCAic2Nyb2xsZWQiLCAicHJldmVudFNjcm9sbFN0YWNrIiwgInNldFByZXZlbnRTY3JvbGxTdGFjayIsICJpc0FjdGl2ZSIsICJjcmVhdGVQcmV2ZW50U2Nyb2xsIiwgImRlZmF1bHRlZFByb3BzIiwgInByZXZlbnRTY3JvbGxJZCIsICJjdXJyZW50VG91Y2hTdGFydCIsICJjdXJyZW50VG91Y2hTdGFydEF4aXMiLCAiY3VycmVudFRvdWNoU3RhcnREZWx0YSIsICJzdGFjayIsICJzY3JvbGxiYXJXaWR0aCIsICJvZmZzZXRUb3AiLCAib2Zmc2V0TGVmdCIsICJtYXliZVByZXZlbnRXaGVlbCIsICJsb2dUb3VjaFN0YXJ0IiwgIm1heWJlUHJldmVudFRvdWNoIiwgImdldFRvdWNoWFkiLCAid3JhcHBlciIsICJkZWx0YSIsICJnZXREZWx0YVhZIiwgImF4aXNEZWx0YSIsICJyZXN1bHRzSW5TY3JvbGwiLCAid291bGRTY3JvbGwiLCAic2hvdWxkQ2FuY2VsIiwgImNvbnRhaW5zMiIsICJ0b3VjaCIsICJ3b3VsZFJlc3VsdEluU2Nyb2xsIiwgInRhcmdldEluV3JhcHBlciIsICJwcmV2ZW50U2Nyb2xsX2RlZmF1bHQiLCAic3JjX2RlZmF1bHQyIiwgIk1lbnVDb250ZXh0IiwgInVzZU9wdGlvbmFsTWVudUNvbnRleHQiLCAidXNlTWVudUNvbnRleHQiLCAiTWVudUl0ZW1Db250ZXh0IiwgInVzZU1lbnVJdGVtQ29udGV4dCIsICJNZW51Um9vdENvbnRleHQiLCAidXNlTWVudVJvb3RDb250ZXh0IiwgIk1lbnVJdGVtQmFzZSIsICJyb290Q29udGV4dCIsICJtZW51Q29udGV4dCIsICJsYWJlbFJlZiIsICJzZXRMYWJlbFJlZiIsICJpc0hpZ2hsaWdodGVkIiwgInNlbGVjdGFibGVJdGVtIiwgIm9uUG9pbnRlck1vdmUiLCAib25Qb2ludGVyTGVhdmUiLCAiYXJpYUNoZWNrZWQiLCAiTWVudUNoZWNrYm94SXRlbSIsICJjaGVja2VkIiwgIk1lbnViYXJDb250ZXh0IiwgInVzZU9wdGlvbmFsTWVudWJhckNvbnRleHQiLCAiTUVOVUJBUl9LRVlTIiwgIk1FTlVfS0VZUyIsICJNZW51VHJpZ2dlciIsICJvcHRpb25hbE1lbnViYXJDb250ZXh0IiwgImhhbmRsZUNsaWNrIiwgIm9uTW91c2VPdmVyIiwgIk5hdmlnYXRpb25NZW51Q29udGV4dCIsICJ1c2VPcHRpb25hbE5hdmlnYXRpb25NZW51Q29udGV4dCIsICJNZW51Q29udGVudEJhc2UiLCAib3B0aW9uYWxOYXZpZ2F0aW9uTWVudUNvbnRleHQiLCAibGFzdFBvaW50ZXJYIiwgImlzUm9vdE1vZGFsQ29udGVudCIsICJzZWxlY3RhYmxlTGlzdCIsICJvbkVzY2FwZUtleURvd24iLCAib25Qb2ludGVyRW50ZXIiLCAicG9pbnRlclhIYXNDaGFuZ2VkIiwgImNvbW1vbkF0dHJpYnV0ZXMiLCAiTWVudUNvbnRlbnQiLCAiTWVudUdyb3VwQ29udGV4dCIsICJ1c2VNZW51R3JvdXBDb250ZXh0IiwgIk1lbnVHcm91cCIsICJNZW51R3JvdXBMYWJlbCIsICJNZW51SWNvbiIsICJNZW51SXRlbSIsICJNZW51SXRlbURlc2NyaXB0aW9uIiwgIk1lbnVJdGVtSW5kaWNhdG9yIiwgIk1lbnVJdGVtTGFiZWwiLCAiTWVudVBvcnRhbCIsICJQb3J0YWwiLCAiTWVudVJhZGlvR3JvdXBDb250ZXh0IiwgInVzZU1lbnVSYWRpb0dyb3VwQ29udGV4dCIsICJNZW51UmFkaW9Hcm91cCIsICJNZW51UmFkaW9JdGVtIiwgImdldFBvaW50ZXJHcmFjZUFyZWEiLCAiY29udGVudEVsIiwgInBvaW50ZXJYIiwgInBvaW50ZXJZIiwgImlzUG9pbnRlckluR3JhY2VBcmVhIiwgImFyZWEiLCAiTWVudSIsICJwYXJlbnREb21Db2xsZWN0aW9uQ29udGV4dCIsICJwYXJlbnRNZW51Q29udGV4dCIsICJwb2ludGVyR3JhY2VUaW1lb3V0SWQiLCAicG9pbnRlckdyYWNlSW50ZW50IiwgInBvaW50ZXJEaXIiLCAidHJpZ2dlcklkIiwgInNldFRyaWdnZXJJZCIsICJjb250ZW50SWQiLCAic2V0Q29udGVudElkIiwgInRyaWdnZXJSZWYiLCAic2V0VHJpZ2dlclJlZiIsICJjb250ZW50UmVmIiwgInNldENvbnRlbnRSZWYiLCAiZm9jdXNTdHJhdGVneSIsICJzZXRGb2N1c1N0cmF0ZWd5IiwgIm5lc3RlZE1lbnVzIiwgInNldE5lc3RlZE1lbnVzIiwgIkRvbUNvbGxlY3Rpb25Qcm92aWRlciIsICJkaXNjbG9zdXJlU3RhdGUiLCAiY29udGVudFByZXNlbnQiLCAibGlzdFN0YXRlIiwgImZvY3VzU3RyYXRlZ3kyIiwgInJlY3Vyc2l2ZWx5IiwgInRvZ2dsZSIsICJfZm9jdXNDb250ZW50IiwgImZvY3VzQ29udGVudCIsICJyZWdpc3Rlck5lc3RlZE1lbnUiLCAiaXNQb2ludGVyTW92aW5nVG9TdWJtZW51IiwgIm9uSXRlbUVudGVyIiwgIm9uSXRlbUxlYXZlIiwgIm9uVHJpZ2dlckxlYXZlIiwgImludGVudCIsICJNZW51U3ViIiwgIlNVQl9DTE9TRV9LRVlTIiwgIk1lbnVTdWJDb250ZW50IiwgImlzS2V5RG93bkluc2lkZSIsICJpc0Nsb3NlS2V5IiwgImlzU3ViTWVudSIsICJTRUxFQ1RJT05fS0VZUyIsICJTVUJfT1BFTl9LRVlTIiwgIk1lbnVTdWJUcmlnZ2VyIiwgIm9wZW5UaW1lb3V0SWQiLCAiY2xlYXJPcGVuVGltZW91dCIsICJwYXJlbnRTZWxlY3Rpb25NYW5hZ2VyIiwgInBvaW50ZXJHcmFjZVRpbWVyIiwgIk1lbnVSb290IiwgInNlcGFyYXRvcl9leHBvcnRzIiwgIlNlcGFyYXRvclJvb3QiLCAiU2VwYXJhdG9yIiwgImRyb3Bkb3duX21lbnVfZXhwb3J0cyIsICJEcm9wZG93bk1lbnVDb250ZW50IiwgIkRyb3Bkb3duTWVudSIsICJEcm9wZG93bk1lbnVSb290IiwgImhhc0ludGVyYWN0ZWRPdXRzaWRlIiwgInRva2VucyIsICJjb2xvciIsICJfdG1wbCQyIiwgIl90bXBsJDIyIiwgIl90bXBsJDMiLCAiX3RtcGwkNCIsICJfdG1wbCQ1IiwgIl90bXBsJDYiLCAiX3RtcGwkNyIsICJfdG1wbCQ4IiwgIl90bXBsJDkiLCAiX3RtcGwkMTAiLCAiX3RtcGwkMTEiLCAiX3RtcGwkMTIiLCAiX3RtcGwkMTMiLCAiX3RtcGwkMTQiLCAiX3RtcGwkMTUiLCAiX3RtcGwkMTYiLCAiX3RtcGwkMTciLCAiX3RtcGwkMTgiLCAiX3RtcGwkMTkiLCAiX3RtcGwkMjAiLCAiX3RtcGwkMjEiLCAiX3RtcGwkMjIyIiwgIl90bXBsJDIzIiwgIlNlYXJjaCIsICJUcmFzaCIsICJDaGV2cm9uRG93biIsICJBcnJvd1VwIiwgIkFycm93RG93biIsICJBcnJvd0xlZnQiLCAiX2VsJDYiLCAiQXJyb3dSaWdodCIsICJfZWwkNyIsICJTdW4iLCAiTW9vbiIsICJNb25pdG9yIiwgIldpZmkiLCAiT2ZmbGluZSIsICJTZXR0aW5ncyIsICJQaVBJY29uIiwgIkNvcGllciIsICJQZW5jaWwiLCAiQ29waWVkQ29waWVyIiwgIl9lbCQxNyIsICJfZWwkMTgiLCAiRXJyb3JDb3BpZXIiLCAiTGlzdCIsICJDaGVjayIsICJfZWwkMjEiLCAiX2VsJDIyIiwgIl9lbCQyMyIsICJfZWwkMjQiLCAiQ2hlY2tDaXJjbGUiLCAiTG9hZGluZ0NpcmNsZSIsICJYQ2lyY2xlIiwgIlBhdXNlQ2lyY2xlIiwgIlRhbnN0YWNrTG9nbyIsICJfZWwkMjkiLCAiX2VsJDMwIiwgIl9lbCQzMSIsICJfZWwkMzIiLCAiX2VsJDMzIiwgIl9lbCQzNCIsICJfZWwkMzUiLCAiX2VsJDM2IiwgIl9lbCQzNyIsICJfZWwkMzgiLCAiX2VsJDM5IiwgIl9lbCQ0MCIsICJfZWwkNDEiLCAiX2VsJDQyIiwgIl9lbCQ0MyIsICJfZWwkNDQiLCAiX2VsJDQ1IiwgIl9lbCQ0NiIsICJfZWwkNDciLCAiX2VsJDQ4IiwgIl9lbCQ0OSIsICJfZWwkNTAiLCAiX2VsJDUxIiwgIl9lbCQ1MiIsICJfZWwkNTMiLCAiX2VsJDU0IiwgIl9lbCQ1NSIsICJfZWwkNTYiLCAiX2VsJDU3IiwgIl9lbCQ1OCIsICJfZWwkNTkiLCAiX2VsJDYwIiwgIl9lbCQ2MSIsICJfZWwkNjIiLCAiX2VsJDYzIiwgIl9lbCQ2NCIsICJfZWwkNjUiLCAiX2VsJDY2IiwgIl9lbCQ2NyIsICJfZWwkNjgiLCAiX2VsJDY5IiwgIl9lbCQ3MCIsICJfZWwkNzEiLCAiX2VsJDcyIiwgIl9lbCQ3MyIsICJfZWwkNzQiLCAiX2VsJDc1IiwgIl9lbCQ3NiIsICJfZWwkNzciLCAiX2VsJDc4IiwgIl9lbCQ3OSIsICJfZWwkODAiLCAiX2VsJDgxIiwgIl9lbCQ4MiIsICJfZWwkODMiLCAiX2VsJDg0IiwgIl9lbCQ4NSIsICJfZWwkODYiLCAiX2VsJDg3IiwgIl9lbCQ4OCIsICJfZWwkODkiLCAiX2VsJDkwIiwgIl9lbCQ5MSIsICJfZWwkOTIiLCAiX2VsJDkzIiwgIl9lbCQ5NCIsICJfZWwkOTUiLCAiX2VsJDk2IiwgIl9lbCQ5NyIsICJfZWwkOTgiLCAiX2VsJDk5IiwgIl9lbCQxMDAiLCAiX2VsJDEwMSIsICJfZWwkMTAyIiwgIl9lbCQxMDMiLCAiX2VsJDEwNCIsICJfZWwkMTA1IiwgIl9lbCQxMDYiLCAiX2VsJDEwNyIsICJfZWwkMTA4IiwgIl9lbCQxMDkiLCAiX2VsJDExMCIsICJfZWwkMTExIiwgIl9lbCQxMTIiLCAiX2VsJDExMyIsICJfZWwkMTE0IiwgIl9lbCQxMTUiLCAiX2VsJDExNiIsICJfZWwkMTE3IiwgIl9lbCQxMTgiLCAiX2VsJDExOSIsICJfZWwkMTIwIiwgIl9lbCQxMjEiLCAiX3RtcGwkMjQiLCAiX3RtcGwkMjUiLCAiX3RtcGwkMzIiLCAiX3RtcGwkNDIiLCAiX3RtcGwkNTIiLCAiX3RtcGwkNjIiLCAiX3RtcGwkNzIiLCAiX3RtcGwkODIiLCAiX3RtcGwkOTIiLCAiX3RtcGwkMTAyIiwgIl90bXBsJDExMiIsICJfdG1wbCQxMjIiLCAiY2h1bmtBcnJheSIsICJzaXplMyIsICJFeHBhbmRlciIsICJ0aGVtZSIsICJkYXJrU3R5bGVzIiwgImxpZ2h0U3R5bGVzIiwgImNsYXNzTmFtZSIsICJDb3B5QnV0dG9uIiwgImNvcHlTdGF0ZSIsICJzZXRDb3B5U3RhdGUiLCAiYWRkRXZlbnRMaXN0ZW5lciIsICJzdHJpbmdpZnkiLCAiaW5zZXJ0IiwgIlN3aXRjaCIsICJNYXRjaCIsICJfcCQiLCAiX3YkIiwgIl92JDIiLCAiQ2xlYXJBcnJheUJ1dHRvbiIsICJxdWVyeUNsaWVudCIsICJfZWwkMyIsICJvbGREYXRhIiwgIm5ld0RhdGEiLCAidXBkYXRlTmVzdGVkRGF0YUJ5UGF0aCIsICJEZWxldGVJdGVtQnV0dG9uIiwgIl9lbCQ0IiwgImRlbGV0ZU5lc3RlZERhdGFCeVBhdGgiLCAiVG9nZ2xlVmFsdWVCdXR0b24iLCAiX2VsJDUiLCAiaXNJdGVyYWJsZSIsICJFeHBsb3JlciIsICJleHBhbmRlZCIsICJzZXRFeHBhbmRlZCIsICJ0b2dnbGVFeHBhbmRlZCIsICJvbGQiLCAiZXhwYW5kZWRQYWdlcyIsICJzZXRFeHBhbmRlZFBhZ2VzIiwgInN1YkVudHJpZXMiLCAidmFsIiwgInN1YkVudHJ5UGFnZXMiLCAiY3VycmVudERhdGFQYXRoIiwgIl9lbCQ4IiwgIl9lbCQ5IiwgIl9lbCQxMCIsICJfZWwkMTEiLCAiX2VsJDEyIiwgIl9lbCQxMyIsICJfZWwkMTQiLCAic2VyaWFsaXplIiwgIl9lbCQxNSIsICJfdiQzIiwgIl92JDQiLCAiX3YkNSIsICJfZWwkMTYiLCAiSW5kZXgiLCAiX2VsJDI1IiwgIl9lbCQyNiIsICJfZWwkMjgiLCAiX3YkMTAiLCAiX3YkMTEiLCAiX2VsJDE5IiwgIl9lbCQyMCIsICJkaXNwbGF5VmFsdWUiLCAiY2hhbmdlRXZlbnQiLCAiX3YkNiIsICJfdiQ3IiwgIl92JDgiLCAiX3YkOSIsICJzdHlsZXNGYWN0b3J5IiwgImNvbG9ycyIsICJmb250IiwgImJvcmRlciIsICJsaWdodCIsICJkYXJrIiwgIl90bXBsJDI2IiwgIl90bXBsJDI3IiwgIl90bXBsJDMzIiwgIl90bXBsJDQzIiwgIl90bXBsJDUzIiwgIl90bXBsJDYzIiwgIl90bXBsJDczIiwgIl90bXBsJDgzIiwgIl90bXBsJDkzIiwgIl90bXBsJDEwMyIsICJfdG1wbCQxMTMiLCAiX3RtcGwkMTIzIiwgIl90bXBsJDEzMiIsICJfdG1wbCQxNDIiLCAiX3RtcGwkMTUyIiwgIl90bXBsJDE2MiIsICJfdG1wbCQxNzIiLCAiX3RtcGwkMTgyIiwgIl90bXBsJDE5MiIsICJfdG1wbCQyMDIiLCAiX3RtcGwkMjEyIiwgIl90bXBsJDIyMyIsICJfdG1wbCQyMzIiLCAiX3RtcGwkMjQyIiwgIl90bXBsJDI1MiIsICJfdG1wbCQyNjIiLCAiX3RtcGwkMjcyIiwgIl90bXBsJDI4IiwgIl90bXBsJDI5IiwgIl90bXBsJDMwIiwgIl90bXBsJDMxIiwgIl90bXBsJDMyMiIsICJfdG1wbCQzMzIiLCAiX3RtcGwkMzQiLCAic2VsZWN0ZWRRdWVyeUhhc2giLCAic2V0U2VsZWN0ZWRRdWVyeUhhc2giLCAic2VsZWN0ZWRNdXRhdGlvbklkIiwgInNldFNlbGVjdGVkTXV0YXRpb25JZCIsICJwYW5lbFdpZHRoIiwgInNldFBhbmVsV2lkdGgiLCAib2ZmbGluZSIsICJzZXRPZmZsaW5lIiwgIkRldnRvb2xzIiwgImRhcmtTdHlsZXMyIiwgImxpZ2h0U3R5bGVzMiIsICJidXR0b25Qb3NpdGlvbiIsICJwb3NpdGlvbiIsICJ0cmFuc2l0aW9uc0NvbnRhaW5lclJlZiIsICJwYW5lbFBvc2l0aW9uIiwgImZvbnRTaXplIiwgInBpcF9vcGVuIiwgIlBpUFBhbmVsIiwgIkNvbnRlbnRWaWV3IiwgInVzZSIsICJEcmFnZ2FibGVQYW5lbCIsICJnZXRQYW5lbER5bmFtaWNTdHlsZXMiLCAicmVzaXplQ0IiLCAiUGFyZW50UGFuZWwiLCAicGFuZWxSZWYiLCAiX3JlZiQyIiwgImlzUmVzaXppbmciLCAic2V0SXNSZXNpemluZyIsICJoYW5kbGVEcmFnU3RhcnQiLCAicGFuZWxFbGVtZW50IiwgInN0YXJ0WCIsICJzdGFydFkiLCAibmV3U2l6ZSIsICJtaW5IZWlnaHQiLCAiY29udmVydFJlbVRvUGl4ZWxzIiwgIm1pbldpZHRoIiwgInJ1bkRyYWciLCAibW92ZUV2ZW50IiwgInZhbFRvQWRkIiwgIm5ld1dpZHRoIiwgInVuc3Vic2NyaWJlIiwgInJvb3RDb250YWluZXIiLCAiY3VycmVudFBvc2l0aW9uIiwgInN0eWxlUHJvcCIsICJnZXRTaWRlZFByb3AiLCAicHJldmlvdXNQYWRkaW5ncyIsICJwYWRkaW5nVG9wIiwgInBhZGRpbmdCb3R0b20iLCAicGFkZGluZ0xlZnQiLCAicGFkZGluZ1JpZ2h0IiwgInByZXZpb3VzVmFsdWUiLCAiX3JlZiQzIiwgInNldHVwUXVlcnlDYWNoZVN1YnNjcmlwdGlvbiIsICJzZXR1cE11dGF0aW9uQ2FjaGVTdWJzY3JpcHRpb24iLCAiY29udGFpbmVyUmVmIiwgInNlbGVjdGVkVmlldyIsICJzZXRTZWxlY3RlZFZpZXciLCAic29ydCIsICJzb3J0T3JkZXIiLCAibXV0YXRpb25Tb3J0IiwgIm11dGF0aW9uU29ydE9yZGVyIiwgInNvcnRGbiIsICJtdXRhdGlvblNvcnRGbiIsICJvbmxpbmVNYW5hZ2VyIiwgInF1ZXJ5X2NhY2hlIiwgIm11dGF0aW9uX2NhY2hlIiwgInF1ZXJ5Q291bnQiLCAiY3JlYXRlU3Vic2NyaWJlVG9RdWVyeUNhY2hlQmF0Y2hlciIsICJxdWVyeUNhY2hlIiwgInF1ZXJpZXMiLCAiY3VyciIsICJmaWx0ZXJlZCIsICJtdXRhdGlvbkNvdW50IiwgImNyZWF0ZVN1YnNjcmliZVRvTXV0YXRpb25DYWNoZUJhdGNoZXIiLCAibXV0YXRpb25DYWNoZSIsICJzZXREZXZ0b29sc1Bvc2l0aW9uIiwgInNldENvbXB1dGVkVmFyaWFibGVzIiwgInZhcmlhYmxlIiwgIl9lbCQyNyIsICJfcmVmJDQiLCAiUXVlcnlTdGF0dXNDb3VudCIsICJNdXRhdGlvblN0YXR1c0NvdW50IiwgIl9jJCIsICJxIiwgInF1ZXJ5IiwgIlF1ZXJ5Um93IiwgIm0iLCAiTXV0YXRpb25Sb3ciLCAiX3YkMTIiLCAiX3YkMTMiLCAiX3YkMTQiLCAiX3YkMTUiLCAiX3YkMTYiLCAiX3YkMTciLCAiX3YkMTgiLCAiX3YkMTkiLCAiX3YkMjAiLCAiX3YkMjEiLCAiX3YkMjIiLCAiX3YkMjMiLCAiX3YkMjQiLCAiX3YkMjUiLCAiUXVlcnlEZXRhaWxzIiwgIk11dGF0aW9uRGV0YWlscyIsICJhbHBoYSIsICJxdWVyeVN0YXRlIiwgImlzU3RhbGUiLCAib2JzZXJ2ZXJzIiwgImdldFF1ZXJ5U3RhdHVzQ29sb3IiLCAiZ2V0T2JzZXJ2ZXJDb3VudENvbG9yU3R5bGVzIiwgIl92JDI2IiwgIl92JDI3IiwgIl92JDI4IiwgIm11dGF0aW9uU3RhdGUiLCAic3RhdHVzIiwgImdldE11dGF0aW9uU3RhdHVzQ29sb3IiLCAiX3YkMjkiLCAiX3YkMzAiLCAiX3YkMzEiLCAic3RhbGUiLCAiZ2V0UXVlcnlTdGF0dXNMYWJlbCIsICJmcmVzaCIsICJmZXRjaGluZyIsICJwYXVzZWQiLCAiaW5hY3RpdmUiLCAiUXVlcnlTdGF0dXMiLCAic3VjY2VzcyIsICJwZW5kaW5nIiwgInRhZ1JlZiIsICJtb3VzZU92ZXIiLCAic2V0TW91c2VPdmVyIiwgImZvY3VzZWQiLCAic2hvd0xhYmVsIiwgIl9yZWYkNSIsICJzcHJlYWQiLCAiX3YkMzIiLCAiX3YkMzMiLCAicmVzdG9yaW5nTG9hZGluZyIsICJzZXRSZXN0b3JpbmdMb2FkaW5nIiwgImRhdGFNb2RlIiwgInNldERhdGFNb2RlIiwgImRhdGFFZGl0RXJyb3IiLCAic2V0RGF0YUVkaXRFcnJvciIsICJlcnJvclR5cGVzIiwgImFjdGl2ZVF1ZXJ5IiwgImFjdGl2ZVF1ZXJ5RnJlc2giLCAiYWN0aXZlUXVlcnlTdGF0ZSIsICJhY3RpdmVRdWVyeVN0YXRlRGF0YSIsICJzdGF0dXNMYWJlbCIsICJxdWVyeVN0YXR1cyIsICJvYnNlcnZlckNvdW50IiwgImdldFF1ZXJ5U3RhdHVzQ29sb3JCeUxhYmVsIiwgImhhbmRsZVJlZmV0Y2giLCAidHJpZ2dlckVycm9yIiwgImVycm9yVHlwZSIsICJfX3ByZXZpb3VzUXVlcnlPcHRpb25zIiwgInJlc3RvcmVRdWVyeUFmdGVyTG9hZGluZ09yRXJyb3IiLCAiYWN0aXZlUXVlcnlWYWwiLCAicHJldmlvdXNTdGF0ZSIsICJwcmV2aW91c09wdGlvbnMiLCAiZ2V0UXVlcnlTdGF0dXNDb2xvcnMiLCAiX3YkMzQiLCAiX3YkMzUiLCAiX3YkMzYiLCAiZXQiLCAiRm9yIiwgIl92JDM3IiwgIl92JDM4IiwgIl92JDM5IiwgIl8kcCIsICJwYXJzZWREYXRhIiwgIl92JDQwIiwgIl92JDQxIiwgIl92JDQyIiwgIl92JDQzIiwgIl92JDQ0IiwgIl92JDQ1IiwgIl92JDQ2IiwgIl92JDQ3IiwgIl92JDQ4IiwgIl92JDQ5IiwgIl92JDUwIiwgIl92JDUxIiwgIl92JDUyIiwgIl92JDUzIiwgIl92JDU0IiwgIl92JDU1IiwgIl92JDU2IiwgIl92JDU3IiwgIl92JDU4IiwgIl92JDU5IiwgIl92JDYwIiwgIl92JDYxIiwgIl92JDYyIiwgIl92JDYzIiwgIl92JDY0IiwgIl92JDY1IiwgIl92JDY2IiwgIl92JDY3IiwgIl92JDY4IiwgIl92JDY5IiwgIl92JDcwIiwgIl92JDcxIiwgImFjdGl2ZU11dGF0aW9uIiwgIl9lbCQxMjIiLCAiX2VsJDEyMyIsICJfZWwkMTI0IiwgIl9lbCQxMjUiLCAiX2VsJDEyNiIsICJfZWwkMTI3IiwgIl92JDcyIiwgIl92JDczIiwgIl92JDc0IiwgIl92JDc1IiwgIl92JDc2IiwgIl92JDc3IiwgIl92JDc4IiwgIl92JDc5IiwgIl92JDgwIiwgIl92JDgxIiwgIl92JDgyIiwgIl92JDgzIiwgInF1ZXJ5Q2FjaGVNYXAiLCAiYmF0Y2giLCAiZXF1YWxpdHlDaGVjayIsICJzaG91bGRVcGRhdGUiLCAibXV0YXRpb25DYWNoZU1hcCIsICJzdHlsZXNGYWN0b3J5MiIsICJzaGFkb3ciXQp9Cg==
|