123 |
- !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self).zip={})}(this,(function(t){"use strict";var i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=function(t){return t&&t.Math==Math&&t},n=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof i&&i)||function(){return this}()||Function("return this")(),r={},c=function(t){try{return!!t()}catch(t){return!0}},d=!c((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),l=!c((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),o=function(){}.call,u=l?o.bind(o):function(){return o.apply(o,arguments)},s={},a={}.propertyIsEnumerable,m=Object.getOwnPropertyDescriptor,y=m&&!a.call({1:2},1);s.f=y?function(t){var i=m(this,t);return!!i&&i.enumerable}:a;var b,p,h=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}},Z=l,L=Function.prototype,X=L.bind,I=L.call,G=Z&&X.bind(I,I),K=Z?function(t){return t&&G(t)}:function(t){return t&&function(){return I.apply(t,arguments)}},W=K,f=W({}.toString),S=W("".slice),x=function(t){return S(f(t),8,-1)},w=c,Y=x,V=Object,T=K("".split),g=w((function(){return!V("z").propertyIsEnumerable(0)}))?function(t){return"String"==Y(t)?T(t,""):V(t)}:V,H=TypeError,v=function(t){if(null==t)throw H("Can't call method on "+t);return t},P=g,C=v,J=function(t){return P(C(t))},k=function(t){return"function"==typeof t},M=k,R=function(t){return"object"==typeof t?null!==t:M(t)},D=n,U=k,N=function(t){return U(t)?t:void 0},j=function(t,i){return 2>arguments.length?N(D[t]):D[t]&&D[t][i]},F=K({}.isPrototypeOf),z=j("navigator","userAgent")||"",E=n,Q=z,O=E.process,B=E.Deno,A=O&&O.versions||B&&B.version,q=A&&A.v8;q&&(p=(b=q.split("."))[0]>0&&4>b[0]?1:+(b[0]+b[1])),!p&&Q&&((b=Q.match(/Edge\/(\d+)/))&&74>b[1]||(b=Q.match(/Chrome\/(\d+)/))&&(p=+b[1]));var _=p,$=_,tt=!!Object.getOwnPropertySymbols&&!c((function(){var t=Symbol();return!(t+"")||!(Object(t)instanceof Symbol)||!Symbol.sham&&$&&41>$})),it=tt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,et=j,nt=k,rt=F,ct=Object,dt=it?function(t){return"symbol"==typeof t}:function(t){var i=et("Symbol");return nt(i)&&rt(i.prototype,ct(t))},lt=String,ot=function(t){try{return lt(t)}catch(t){return"Object"}},ut=k,st=ot,at=TypeError,mt=function(t){if(ut(t))return t;throw at(st(t)+" is not a function")},yt=mt,bt=function(t,i){var e=t[i];return null==e?void 0:yt(e)},pt=u,ht=k,Zt=R,Lt=TypeError,Xt={exports:{}},It=n,Gt=Object.defineProperty,Kt=function(t,i){try{Gt(It,t,{value:i,configurable:!0,writable:!0})}catch(e){It[t]=i}return i},Wt=Kt,ft="__core-js_shared__",St=n[ft]||Wt(ft,{}),xt=St;(Xt.exports=function(t,i){return xt[t]||(xt[t]=void 0!==i?i:{})})("versions",[]).push({version:"3.23.2",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.23.2/LICENSE",source:"https://github.com/zloirock/core-js"});var wt=v,Yt=Object,Vt=function(t){return Yt(wt(t))},Tt=Vt,gt=K({}.hasOwnProperty),Ht=Object.hasOwn||function(t,i){return gt(Tt(t),i)},vt=K,Pt=0,Ct=Math.random(),Jt=vt(1..toString),kt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+Jt(++Pt+Ct,36)},Mt=n,Rt=Xt.exports,Dt=Ht,Ut=kt,Nt=tt,jt=it,Ft=Rt("wks"),zt=Mt.Symbol,Et=zt&&zt.for,Qt=jt?zt:zt&&zt.withoutSetter||Ut,Ot=function(t){if(!Dt(Ft,t)||!Nt&&"string"!=typeof Ft[t]){var i="Symbol."+t;Nt&&Dt(zt,t)?Ft[t]=zt[t]:Ft[t]=jt&&Et?Et(i):Qt(i)}return Ft[t]},Bt=u,At=R,qt=dt,_t=bt,$t=TypeError,ti=Ot("toPrimitive"),ii=function(t,i){if(!At(t)||qt(t))return t;var e,n=_t(t,ti);if(n){if(void 0===i&&(i="default"),e=Bt(n,t,i),!At(e)||qt(e))return e;throw $t("Can't convert object to primitive value")}return void 0===i&&(i="number"),function(t,i){var e,n;if("string"===i&&ht(e=t.toString)&&!Zt(n=pt(e,t)))return n;if(ht(e=t.valueOf)&&!Zt(n=pt(e,t)))return n;if("string"!==i&&ht(e=t.toString)&&!Zt(n=pt(e,t)))return n;throw Lt("Can't convert object to primitive value")}(t,i)},ei=ii,ni=dt,ri=function(t){var i=ei(t,"string");return ni(i)?i:i+""},ci=R,di=n.document,li=ci(di)&&ci(di.createElement),oi=function(t){return li?di.createElement(t):{}},ui=oi,si=!d&&!c((function(){return 7!=Object.defineProperty(ui("div"),"a",{get:function(){return 7}}).a})),ai=d,mi=u,yi=s,bi=h,pi=J,hi=ri,Zi=Ht,Li=si,Xi=Object.getOwnPropertyDescriptor;r.f=ai?Xi:function(t,i){if(t=pi(t),i=hi(i),Li)try{return Xi(t,i)}catch(t){}if(Zi(t,i))return bi(!mi(yi.f,t,i),t[i])};var Ii={},Gi=d&&c((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ki=R,Wi=String,fi=TypeError,Si=function(t){if(Ki(t))return t;throw fi(Wi(t)+" is not an object")},xi=d,wi=si,Yi=Gi,Vi=Si,Ti=ri,gi=TypeError,Hi=Object.defineProperty,vi=Object.getOwnPropertyDescriptor;Ii.f=xi?Yi?function(t,i,e){if(Vi(t),i=Ti(i),Vi(e),"function"==typeof t&&"prototype"===i&&"value"in e&&"writable"in e&&!e.writable){var n=vi(t,i);n&&n.writable&&(t[i]=e.value,e={configurable:"configurable"in e?e.configurable:n.configurable,enumerable:"enumerable"in e?e.enumerable:n.enumerable,writable:!1})}return Hi(t,i,e)}:Hi:function(t,i,e){if(Vi(t),i=Ti(i),Vi(e),wi)try{return Hi(t,i,e)}catch(t){}if("get"in e||"set"in e)throw gi("Accessors not supported");return"value"in e&&(t[i]=e.value),t};var Pi=Ii,Ci=h,Ji=d?function(t,i,e){return Pi.f(t,i,Ci(1,e))}:function(t,i,e){return t[i]=e,t},ki={exports:{}},Mi=d,Ri=Function.prototype,Di=Mi&&Object.getOwnPropertyDescriptor,Ui=Ht(Ri,"name"),Ni={EXISTS:Ui,PROPER:Ui&&!1,CONFIGURABLE:Ui&&(!Mi||Mi&&Di(Ri,"name").configurable)},ji=k,Fi=St,zi=K(Function.toString);ji(Fi.inspectSource)||(Fi.inspectSource=function(t){return zi(t)});var Ei,Qi,Oi,Bi=Fi.inspectSource,Ai=k,qi=Bi,_i=n.WeakMap,$i=Ai(_i)&&/native code/.test(qi(_i)),te=Xt.exports,ie=kt,ee=te("keys"),ne=function(t){return ee[t]||(ee[t]=ie(t))},re={},ce=$i,de=n,le=K,oe=R,ue=Ji,se=Ht,ae=St,me=ne,ye=re,be="Object already initialized",pe=de.TypeError,he=de.WeakMap;if(ce||ae.state){var Ze=ae.state||(ae.state=new he),Le=le(Ze.get),Xe=le(Ze.has),Ie=le(Ze.set);Ei=function(t,i){if(Xe(Ze,t))throw new pe(be);return i.facade=t,Ie(Ze,t,i),i},Qi=function(t){return Le(Ze,t)||{}},Oi=function(t){return Xe(Ze,t)}}else{var Ge=me("state");ye[Ge]=!0,Ei=function(t,i){if(se(t,Ge))throw new pe(be);return i.facade=t,ue(t,Ge,i),i},Qi=function(t){return se(t,Ge)?t[Ge]:{}},Oi=function(t){return se(t,Ge)}}var Ke={set:Ei,get:Qi,has:Oi,enforce:function(t){return Oi(t)?Qi(t):Ei(t,{})},getterFor:function(t){return function(i){var e;if(!oe(i)||(e=Qi(i)).type!==t)throw pe("Incompatible receiver, "+t+" required");return e}}},We=k,fe=Ht,Se=d,xe=Ni.CONFIGURABLE,we=Bi,Ye=Ke.enforce,Ve=Ke.get,Te=Object.defineProperty,ge=Se&&!c((function(){return 8!==Te((function(){}),"length",{value:8}).length})),He=(String+"").split("String"),ve=ki.exports=function(t,i,e){"Symbol("===(i+"").slice(0,7)&&(i="["+(i+"").replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),e&&e.getter&&(i="get "+i),e&&e.setter&&(i="set "+i),(!fe(t,"name")||xe&&t.name!==i)&&Te(t,"name",{value:i,configurable:!0}),ge&&e&&fe(e,"arity")&&t.length!==e.arity&&Te(t,"length",{value:e.arity});try{e&&fe(e,"constructor")&&e.constructor?Se&&Te(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=Ye(t);return fe(n,"source")||(n.source=He.join("string"==typeof i?i:"")),t};Function.prototype.toString=ve((function(){return We(this)&&Ve(this).source||we(this)}),"toString");var Pe=k,Ce=Ii,Je=ki.exports,ke=Kt,Me=function(t,i,e,n){n||(n={});var r=n.enumerable,c=void 0!==n.name?n.name:i;return Pe(e)&&Je(e,c,n),n.global?r?t[i]=e:ke(i,e):(n.unsafe?t[i]&&(r=!0):delete t[i],r?t[i]=e:Ce.f(t,i,{value:e,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})),t},Re={},De=Math.ceil,Ue=Math.floor,Ne=Math.trunc||function(t){var i=+t;return(i>0?Ue:De)(i)},je=function(t){var i=+t;return i!=i||0===i?0:Ne(i)},Fe=je,ze=Math.max,Ee=Math.min,Qe=function(t,i){var e=Fe(t);return 0>e?ze(e+i,0):Ee(e,i)},Oe=je,Be=Math.min,Ae=function(t){return t>0?Be(Oe(t),9007199254740991):0},qe=Ae,_e=function(t){return qe(t.length)},$e=J,tn=Qe,en=_e,nn=function(t){return function(i,e,n){var r,c=$e(i),d=en(c),l=tn(n,d);if(t&&e!=e){for(;d>l;)if((r=c[l++])!=r)return!0}else for(;d>l;l++)if((t||l in c)&&c[l]===e)return t||l||0;return!t&&-1}},rn={includes:nn(!0),indexOf:nn(!1)},cn=Ht,dn=J,ln=rn.indexOf,on=re,un=K([].push),sn=function(t,i){var e,n=dn(t),r=0,c=[];for(e in n)!cn(on,e)&&cn(n,e)&&un(c,e);for(;i.length>r;)cn(n,e=i[r++])&&(~ln(c,e)||un(c,e));return c},an=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],mn=sn,yn=an.concat("length","prototype");Re.f=Object.getOwnPropertyNames||function(t){return mn(t,yn)};var bn={};bn.f=Object.getOwnPropertySymbols;var pn=j,hn=Re,Zn=bn,Ln=Si,Xn=K([].concat),In=pn("Reflect","ownKeys")||function(t){var i=hn.f(Ln(t)),e=Zn.f;return e?Xn(i,e(t)):i},Gn=Ht,Kn=In,Wn=r,fn=Ii,Sn=function(t,i,e){for(var n=Kn(i),r=fn.f,c=Wn.f,d=0;d<n.length;d++){var l=n[d];Gn(t,l)||e&&Gn(e,l)||r(t,l,c(i,l))}},xn=c,wn=k,Yn=/#|\.prototype\./,Vn=function(t,i){var e=gn[Tn(t)];return e==vn||e!=Hn&&(wn(i)?xn(i):!!i)},Tn=Vn.normalize=function(t){return(t+"").replace(Yn,".").toLowerCase()},gn=Vn.data={},Hn=Vn.NATIVE="N",vn=Vn.POLYFILL="P",Pn=Vn,Cn=n,Jn=r.f,kn=Ji,Mn=Me,Rn=Kt,Dn=Sn,Un=Pn,Nn=function(t,i){var e,n,r,c,d,l=t.target,o=t.global,u=t.stat;if(e=o?Cn:u?Cn[l]||Rn(l,{}):(Cn[l]||{}).prototype)for(n in i){if(c=i[n],r=t.dontCallGetSet?(d=Jn(e,n))&&d.value:e[n],!Un(o?n:l+(u?".":"#")+n,t.forced)&&void 0!==r){if(typeof c==typeof r)continue;Dn(c,r)}(t.sham||r&&r.sham)&&kn(c,"sham",!0),Mn(e,n,c,t)}},jn=sn,Fn=an,zn=Object.keys||function(t){return jn(t,Fn)},En=d,Qn=u,On=c,Bn=zn,An=bn,qn=s,_n=Vt,$n=g,tr=Object.assign,ir=Object.defineProperty,er=K([].concat),nr=!tr||On((function(){if(En&&1!==tr({b:1},tr(ir({},"a",{enumerable:!0,get:function(){ir(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},i={},e=Symbol(),n="abcdefghijklmnopqrst";return t[e]=7,n.split("").forEach((function(t){i[t]=t})),7!=tr({},t)[e]||Bn(tr({},i)).join("")!=n}))?function(t){for(var i=_n(t),e=arguments.length,n=1,r=An.f,c=qn.f;e>n;)for(var d,l=$n(arguments[n++]),o=r?er(Bn(l),r(l)):Bn(l),u=o.length,s=0;u>s;)d=o[s++],En&&!Qn(c,l,d)||(i[d]=l[d]);return i}:tr;Nn({target:"Object",stat:!0,arity:2,forced:Object.assign!==nr},{assign:nr});var rr={chunkSize:524288,maxWorkers:"undefined"!=typeof navigator&&navigator.hardwareConcurrency||2,terminateWorkerTimeout:5e3,useWebWorkers:!0,workerScripts:void 0},cr=Object.assign({},rr);function dr(){return cr}function lr(t){if(void 0!==t.baseURL&&(cr.baseURL=t.baseURL),void 0!==t.chunkSize&&(cr.chunkSize=t.chunkSize),void 0!==t.maxWorkers&&(cr.maxWorkers=t.maxWorkers),void 0!==t.terminateWorkerTimeout&&(cr.terminateWorkerTimeout=t.terminateWorkerTimeout),void 0!==t.useWebWorkers&&(cr.useWebWorkers=t.useWebWorkers),void 0!==t.Deflate&&(cr.Deflate=t.Deflate),void 0!==t.Inflate&&(cr.Inflate=t.Inflate),void 0!==t.workerScripts){if(t.workerScripts.deflate){if(!Array.isArray(t.workerScripts.deflate))throw Error("workerScripts.deflate must be an array");cr.workerScripts||(cr.workerScripts={}),cr.workerScripts.deflate=t.workerScripts.deflate}if(t.workerScripts.inflate){if(!Array.isArray(t.workerScripts.inflate))throw Error("workerScripts.inflate must be an array");cr.workerScripts||(cr.workerScripts={}),cr.workerScripts.inflate=t.workerScripts.inflate}}}var or={},ur=d,sr=Gi,ar=Ii,mr=Si,yr=J,br=zn;or.f=ur&&!sr?Object.defineProperties:function(t,i){mr(t);for(var e,n=yr(i),r=br(i),c=r.length,d=0;c>d;)ar.f(t,e=r[d++],n[e]);return t};var pr,hr=j("document","documentElement"),Zr=Si,Lr=or,Xr=an,Ir=re,Gr=hr,Kr=oi,Wr=ne("IE_PROTO"),fr=function(){},Sr=function(t){return"<script>"+t+"<\/script>"},xr=function(t){t.write(Sr("")),t.close();var i=t.parentWindow.Object;return t=null,i},wr=function(){try{pr=new ActiveXObject("htmlfile")}catch(t){}var t,i;wr="undefined"!=typeof document?document.domain&&pr?xr(pr):((i=Kr("iframe")).style.display="none",Gr.appendChild(i),i.src="javascript:",(t=i.contentWindow.document).open(),t.write(Sr("document.F=Object")),t.close(),t.F):xr(pr);for(var e=Xr.length;e--;)delete wr.prototype[Xr[e]];return wr()};Ir[Wr]=!0;var Yr=Object.create||function(t,i){var e;return null!==t?(fr.prototype=Zr(t),e=new fr,fr.prototype=null,e[Wr]=t):e=wr(),void 0===i?e:Lr.f(e,i)},Vr=Ot,Tr=Yr,gr=Ii.f,Hr=Vr("unscopables"),vr=Array.prototype;null==vr[Hr]&&gr(vr,Hr,{configurable:!0,value:Tr(null)});var Pr,Cr,Jr,kr=function(t){vr[Hr][t]=!0},Mr={},Rr=!c((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),Dr=Ht,Ur=k,Nr=Vt,jr=Rr,Fr=ne("IE_PROTO"),zr=Object,Er=zr.prototype,Qr=jr?zr.getPrototypeOf:function(t){var i=Nr(t);if(Dr(i,Fr))return i[Fr];var e=i.constructor;return Ur(e)&&i instanceof e?e.prototype:i instanceof zr?Er:null},Or=c,Br=k,Ar=Qr,qr=Me,_r=Ot("iterator"),$r=!1;[].keys&&("next"in(Jr=[].keys())?(Cr=Ar(Ar(Jr)))!==Object.prototype&&(Pr=Cr):$r=!0);var tc=null==Pr||Or((function(){var t={};return Pr[_r].call(t)!==t}));tc&&(Pr={}),Br(Pr[_r])||qr(Pr,_r,(function(){return this}));var ic={IteratorPrototype:Pr,BUGGY_SAFARI_ITERATORS:$r},ec=Ii.f,nc=Ht,rc=Ot("toStringTag"),cc=function(t,i,e){t&&!e&&(t=t.prototype),t&&!nc(t,rc)&&ec(t,rc,{configurable:!0,value:i})},dc=ic.IteratorPrototype,lc=Yr,oc=h,uc=cc,sc=Mr,ac=function(){return this},mc=function(t,i,e,n){var r=i+" Iterator";return t.prototype=lc(dc,{next:oc(+!n,e)}),uc(t,r,!1),sc[r]=ac,t},yc=k,bc=String,pc=TypeError,hc=K,Zc=Si,Lc=Object.setPrototypeOf||("__proto__"in{}?function(){var t,i=!1,e={};try{(t=hc(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(e,[]),i=e instanceof Array}catch(t){}return function(e,n){return Zc(e),function(t){if("object"==typeof t||yc(t))return t;throw pc("Can't set "+bc(t)+" as a prototype")}(n),i?t(e,n):e.__proto__=n,e}}():void 0),Xc=Nn,Ic=u,Gc=k,Kc=mc,Wc=Qr,fc=Lc,Sc=cc,xc=Ji,wc=Me,Yc=Mr,Vc=Ni.PROPER,Tc=Ni.CONFIGURABLE,gc=ic.IteratorPrototype,Hc=ic.BUGGY_SAFARI_ITERATORS,vc=Ot("iterator"),Pc="keys",Cc="values",Jc="entries",kc=function(){return this},Mc=function(t,i,e,n,r,c,d){Kc(e,i,n);var l,o,u,s=function(t){if(t===r&&p)return p;if(!Hc&&t in y)return y[t];switch(t){case Pc:case Cc:case Jc:return function(){return new e(this,t)}}return function(){return new e(this)}},a=i+" Iterator",m=!1,y=t.prototype,b=y[vc]||y["@@iterator"]||r&&y[r],p=!Hc&&b||s(r),h="Array"==i&&y.entries||b;if(h&&(l=Wc(h.call(new t)))!==Object.prototype&&l.next&&(Wc(l)!==gc&&(fc?fc(l,gc):Gc(l[vc])||wc(l,vc,kc)),Sc(l,a,!0)),Vc&&r==Cc&&b&&b.name!==Cc&&(Tc?xc(y,"name",Cc):(m=!0,p=function(){return Ic(b,this)})),r)if(o={values:s(Cc),keys:c?p:s(Pc),entries:s(Jc)},d)for(u in o)(Hc||m||!(u in y))&&wc(y,u,o[u]);else Xc({target:i,proto:!0,forced:Hc||m},o);return y[vc]!==p&&wc(y,vc,p,{name:r}),Yc[i]=p,o},Rc=J,Dc=kr,Uc=Mr,Nc=Ke,jc=Ii.f,Fc=Mc,zc=d,Ec="Array Iterator",Qc=Nc.set,Oc=Nc.getterFor(Ec),Bc=Fc(Array,"Array",(function(t,i){Qc(this,{type:Ec,target:Rc(t),index:0,kind:i})}),(function(){var t=Oc(this),i=t.target,e=t.kind,n=t.index++;return i&&n<i.length?"keys"==e?{value:n,done:!1}:"values"==e?{value:i[n],done:!1}:{value:[n,i[n]],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),"values"),Ac=Uc.Arguments=Uc.Array;if(Dc("keys"),Dc("values"),Dc("entries"),zc&&"values"!==Ac.name)try{jc(Ac,"name",{value:"values"})}catch(t){}var qc={};qc[Ot("toStringTag")]="z";var _c=qc+""=="[object z]",$c=_c,td=k,id=x,ed=Ot("toStringTag"),nd=Object,rd="Arguments"==id(function(){return arguments}()),cd=$c?id:function(t){var i,e,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(e=function(t,i){try{return t[i]}catch(t){}}(i=nd(t),ed))?e:rd?id(i):"Object"==(n=id(i))&&td(i.callee)?"Arguments":n},dd=cd;_c||Me(Object.prototype,"toString",_c?{}.toString:function(){return"[object "+dd(this)+"]"},{unsafe:!0});var ld=cd,od=String,ud=function(t){if("Symbol"===ld(t))throw TypeError("Cannot convert a Symbol value to a string");return od(t)},sd=K,ad=je,md=ud,yd=v,bd=sd("".charAt),pd=sd("".charCodeAt),hd=sd("".slice),Zd=function(t){return function(i,e){var n,r,c=md(yd(i)),d=ad(e),l=c.length;return 0>d||d>=l?t?"":void 0:55296>(n=pd(c,d))||n>56319||d+1===l||56320>(r=pd(c,d+1))||r>57343?t?bd(c,d):n:t?hd(c,d,d+2):r-56320+(n-55296<<10)+65536}},Ld={codeAt:Zd(!1),charAt:Zd(!0)},Xd=Ld.charAt,Id=ud,Gd=Ke,Kd=Mc,Wd="String Iterator",fd=Gd.set,Sd=Gd.getterFor(Wd);Kd(String,"String",(function(t){fd(this,{type:Wd,string:Id(t),index:0})}),(function(){var t,i=Sd(this),e=i.string,n=i.index;return n<e.length?(t=Xd(e,n),i.index+=t.length,{value:t,done:!1}):{value:void 0,done:!0}}));var xd={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},wd=oi("span").classList,Yd=wd&&wd.constructor&&wd.constructor.prototype,Vd=Yd===Object.prototype?void 0:Yd,Td=n,gd=xd,Hd=Vd,vd=Bc,Pd=Ji,Cd=Ot,Jd=Cd("iterator"),kd=Cd("toStringTag"),Md=vd.values,Rd=function(t,i){if(t){if(t[Jd]!==Md)try{Pd(t,Jd,Md)}catch(i){t[Jd]=Md}if(t[kd]||Pd(t,kd,i),gd[i])for(var e in vd)if(t[e]!==vd[e])try{Pd(t,e,vd[e])}catch(i){t[e]=vd[e]}}};for(var Dd in gd)Rd(Td[Dd]&&Td[Dd].prototype,Dd);Rd(Hd,"DOMTokenList");var Ud=c,Nd=Ot("iterator"),jd=!Ud((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),i=t.searchParams,e="";return t.pathname="c%20d",i.forEach((function(t,n){i.delete("b"),e+=n+t})),!i.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==i.get("c")||new URLSearchParams("?a=1")+""!="a=1"||!i[Nd]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==e||"x"!==new URL("http://x",void 0).host})),Fd=mt,zd=l,Ed=K(K.bind),Qd=function(t,i){return Fd(t),void 0===i?t:zd?Ed(t,i):function(){return t.apply(i,arguments)}},Od=ki.exports,Bd=Ii,Ad=F,qd=TypeError,_d=function(t,i){if(Ad(i,t))return t;throw qd("Incorrect invocation")},$d=u,tl=Si,il=bt,el=function(t,i,e){var n,r;tl(t);try{if(!(n=il(t,"return"))){if("throw"===i)throw e;return e}n=$d(n,t)}catch(t){r=!0,n=t}if("throw"===i)throw e;if(r)throw n;return tl(n),e},nl=Si,rl=el,cl=Mr,dl=Ot("iterator"),ll=Array.prototype,ol=function(t){return void 0!==t&&(cl.Array===t||ll[dl]===t)},ul=K,sl=c,al=k,ml=cd,yl=Bi,bl=function(){},pl=[],hl=j("Reflect","construct"),Zl=/^\s*(?:class|function)\b/,Ll=ul(Zl.exec),Xl=!Zl.exec(bl),Il=function(t){if(!al(t))return!1;try{return hl(bl,pl,t),!0}catch(t){return!1}},Gl=function(t){if(!al(t))return!1;switch(ml(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Xl||!!Ll(Zl,yl(t))}catch(t){return!0}};Gl.sham=!0;var Kl=!hl||sl((function(){var t;return Il(Il.call)||!Il(Object)||!Il((function(){t=!0}))||t}))?Gl:Il,Wl=ri,fl=Ii,Sl=h,xl=function(t,i,e){var n=Wl(i);n in t?fl.f(t,n,Sl(0,e)):t[n]=e},wl=cd,Yl=bt,Vl=Mr,Tl=Ot("iterator"),gl=function(t){if(null!=t)return Yl(t,Tl)||Yl(t,"@@iterator")||Vl[wl(t)]},Hl=u,vl=mt,Pl=Si,Cl=ot,Jl=gl,kl=TypeError,Ml=function(t,i){var e=2>arguments.length?Jl(t):i;if(vl(e))return Pl(Hl(e,t));throw kl(Cl(t)+" is not iterable")},Rl=Qd,Dl=u,Ul=Vt,Nl=function(t,i,e,n){try{return n?i(nl(e)[0],e[1]):i(e)}catch(i){rl(t,"throw",i)}},jl=ol,Fl=Kl,zl=_e,El=xl,Ql=Ml,Ol=gl,Bl=Array,Al=function(t){var i=Ul(t),e=Fl(this),n=arguments.length,r=n>1?arguments[1]:void 0,c=void 0!==r;c&&(r=Rl(r,n>2?arguments[2]:void 0));var d,l,o,u,s,a,m=Ol(i),y=0;if(!m||this===Bl&&jl(m))for(d=zl(i),l=e?new this(d):Bl(d);d>y;y++)a=c?r(i[y],y):i[y],El(l,y,a);else for(s=(u=Ql(i,m)).next,l=e?new this:[];!(o=Dl(s,u)).done;y++)a=c?Nl(u,r,[o.value,y],!0):o.value,El(l,y,a);return l.length=y,l},ql=Qe,_l=_e,$l=xl,to=Array,io=Math.max,eo=function(t,i,e){for(var n=_l(t),r=ql(i,n),c=ql(void 0===e?n:e,n),d=to(io(c-r,0)),l=0;c>r;r++,l++)$l(d,l,t[r]);return d.length=l,d},no=K,ro=2147483647,co=/[^\0-\u007E]/,lo=/[.\u3002\uFF0E\uFF61]/g,oo="Overflow: input needs wider integers to process",uo=RangeError,so=no(lo.exec),ao=Math.floor,mo=String.fromCharCode,yo=no("".charCodeAt),bo=no([].join),po=no([].push),ho=no("".replace),Zo=no("".split),Lo=no("".toLowerCase),Xo=function(t){return t+22+75*(26>t)},Io=function(t,i,e){var n=0;for(t=e?ao(t/700):t>>1,t+=ao(t/i);t>455;)t=ao(t/35),n+=36;return ao(n+36*t/(t+38))},Go=function(t){var i=[];t=function(t){for(var i=[],e=0,n=t.length;n>e;){var r=yo(t,e++);if(55296>r||r>56319||e>=n)po(i,r);else{var c=yo(t,e++);56320==(64512&c)?po(i,((1023&r)<<10)+(1023&c)+65536):(po(i,r),e--)}}return i}(t);var e,n,r=t.length,c=128,d=0,l=72;for(e=0;e<t.length;e++)128>(n=t[e])&&po(i,mo(n));var o=i.length,u=o;for(o&&po(i,"-");r>u;){var s=ro;for(e=0;e<t.length;e++)(n=t[e])>=c&&s>n&&(s=n);var a=u+1;if(s-c>ao((ro-d)/a))throw uo(oo);for(d+=(s-c)*a,c=s,e=0;e<t.length;e++){if(c>(n=t[e])&&++d>ro)throw uo(oo);if(n==c){for(var m=d,y=36;;){var b=y>l?l+26>y?y-l:26:1;if(b>m)break;var p=m-b,h=36-b;po(i,mo(Xo(b+p%h))),m=ao(p/h),y+=36}po(i,mo(Xo(m))),l=Io(d,a,u==o),d=0,u++}}d++,c++}return bo(i,"")},Ko=TypeError,Wo=function(t,i){if(i>t)throw Ko("Not enough arguments");return t},fo=Me,So=function(t,i,e){for(var n in i)fo(t,n,i[n],e);return t},xo=eo,wo=Math.floor,Yo=function(t,i){var e=t.length,n=wo(e/2);return 8>e?Vo(t,i):To(t,Yo(xo(t,0,n),i),Yo(xo(t,n),i),i)},Vo=function(t,i){for(var e,n,r=t.length,c=1;r>c;){for(n=c,e=t[c];n&&i(t[n-1],e)>0;)t[n]=t[--n];n!==c++&&(t[n]=e)}return t},To=function(t,i,e,n){for(var r=i.length,c=e.length,d=0,l=0;r>d||c>l;)t[d+l]=r>d&&c>l?n(i[d],e[l])>0?e[l++]:i[d++]:r>d?i[d++]:e[l++];return t},go=Yo,Ho=Nn,vo=n,Po=u,Co=K,Jo=d,ko=jd,Mo=Me,Ro=So,Do=cc,Uo=mc,No=Ke,jo=_d,Fo=k,zo=Ht,Eo=Qd,Qo=cd,Oo=Si,Bo=R,Ao=ud,qo=Yr,_o=h,$o=Ml,tu=gl,iu=Wo,eu=go,nu=Ot("iterator"),ru="URLSearchParams",cu="URLSearchParamsIterator",du=No.set,lu=No.getterFor(ru),ou=No.getterFor(cu),uu=Object.getOwnPropertyDescriptor,su=function(t){if(!Jo)return vo[t];var i=uu(vo,t);return i&&i.value},au=su("fetch"),mu=su("Request"),yu=su("Headers"),bu=mu&&mu.prototype,pu=yu&&yu.prototype,hu=vo.RegExp,Zu=vo.TypeError,Lu=vo.decodeURIComponent,Xu=vo.encodeURIComponent,Iu=Co("".charAt),Gu=Co([].join),Ku=Co([].push),Wu=Co("".replace),fu=Co([].shift),Su=Co([].splice),xu=Co("".split),wu=Co("".slice),Yu=/\+/g,Vu=[,,,,],Tu=function(t){return Vu[t-1]||(Vu[t-1]=hu("((?:%[\\da-f]{2}){"+t+"})","gi"))},gu=function(t){try{return Lu(t)}catch(i){return t}},Hu=function(t){var i=Wu(t,Yu," "),e=4;try{return Lu(i)}catch(t){for(;e;)i=Wu(i,Tu(e--),gu);return i}},vu=/[!'()~]|%20/g,Pu={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Cu=function(t){return Pu[t]},Ju=function(t){return Wu(Xu(t),vu,Cu)},ku=Uo((function(t,i){du(this,{type:cu,iterator:$o(lu(t).entries),kind:i})}),"Iterator",(function(){var t=ou(this),i=t.kind,e=t.iterator.next(),n=e.value;return e.done||(e.value="keys"===i?n.key:"values"===i?n.value:[n.key,n.value]),e}),!0),Mu=function(t){this.entries=[],this.url=null,void 0!==t&&(Bo(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Iu(t,0)?wu(t,1):t:Ao(t)))};Mu.prototype={type:ru,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var i,e,n,r,c,d,l,o=tu(t);if(o)for(e=(i=$o(t,o)).next;!(n=Po(e,i)).done;){if(c=(r=$o(Oo(n.value))).next,(d=Po(c,r)).done||(l=Po(c,r)).done||!Po(c,r).done)throw Zu("Expected sequence with length 2");Ku(this.entries,{key:Ao(d.value),value:Ao(l.value)})}else for(var u in t)zo(t,u)&&Ku(this.entries,{key:u,value:Ao(t[u])})},parseQuery:function(t){if(t)for(var i,e,n=xu(t,"&"),r=0;r<n.length;)(i=n[r++]).length&&(e=xu(i,"="),Ku(this.entries,{key:Hu(fu(e)),value:Hu(Gu(e,"="))}))},serialize:function(){for(var t,i=this.entries,e=[],n=0;n<i.length;)t=i[n++],Ku(e,Ju(t.key)+"="+Ju(t.value));return Gu(e,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var Ru=function(){jo(this,Du);var t=arguments.length>0?arguments[0]:void 0;du(this,new Mu(t))},Du=Ru.prototype;if(Ro(Du,{append:function(t,i){iu(arguments.length,2);var e=lu(this);Ku(e.entries,{key:Ao(t),value:Ao(i)}),e.updateURL()},delete:function(t){iu(arguments.length,1);for(var i=lu(this),e=i.entries,n=Ao(t),r=0;r<e.length;)e[r].key===n?Su(e,r,1):r++;i.updateURL()},get:function(t){iu(arguments.length,1);for(var i=lu(this).entries,e=Ao(t),n=0;n<i.length;n++)if(i[n].key===e)return i[n].value;return null},getAll:function(t){iu(arguments.length,1);for(var i=lu(this).entries,e=Ao(t),n=[],r=0;r<i.length;r++)i[r].key===e&&Ku(n,i[r].value);return n},has:function(t){iu(arguments.length,1);for(var i=lu(this).entries,e=Ao(t),n=0;n<i.length;)if(i[n++].key===e)return!0;return!1},set:function(t,i){iu(arguments.length,1);for(var e,n=lu(this),r=n.entries,c=!1,d=Ao(t),l=Ao(i),o=0;o<r.length;o++)(e=r[o]).key===d&&(c?Su(r,o--,1):(c=!0,e.value=l));c||Ku(r,{key:d,value:l}),n.updateURL()},sort:function(){var t=lu(this);eu(t.entries,(function(t,i){return t.key>i.key?1:-1})),t.updateURL()},forEach:function(t){for(var i,e=lu(this).entries,n=Eo(t,arguments.length>1?arguments[1]:void 0),r=0;r<e.length;)n((i=e[r++]).value,i.key,this)},keys:function(){return new ku(this,"keys")},values:function(){return new ku(this,"values")},entries:function(){return new ku(this,"entries")}},{enumerable:!0}),Mo(Du,nu,Du.entries,{name:"entries"}),Mo(Du,"toString",(function(){return lu(this).serialize()}),{enumerable:!0}),Do(Ru,ru),Ho({global:!0,constructor:!0,forced:!ko},{URLSearchParams:Ru}),!ko&&Fo(yu)){var Uu=Co(pu.has),Nu=Co(pu.set),ju=function(t){if(Bo(t)){var i,e=t.body;if(Qo(e)===ru)return i=t.headers?new yu(t.headers):new yu,Uu(i,"content-type")||Nu(i,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),qo(t,{body:_o(0,Ao(e)),headers:_o(0,i)})}return t};if(Fo(au)&&Ho({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(t){return au(t,arguments.length>1?ju(arguments[1]):{})}}),Fo(mu)){var Fu=function(t){return jo(this,bu),new mu(t,arguments.length>1?ju(arguments[1]):{})};bu.constructor=Fu,Fu.prototype=bu,Ho({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Fu})}}var zu,Eu=Nn,Qu=d,Ou=jd,Bu=n,Au=Qd,qu=K,_u=Me,$u=function(t,i,e){return e.get&&Od(e.get,i,{getter:!0}),e.set&&Od(e.set,i,{setter:!0}),Bd.f(t,i,e)},ts=_d,is=Ht,es=nr,ns=Al,rs=eo,cs=Ld.codeAt,ds=ud,ls=cc,os=Wo,us={URLSearchParams:Ru,getState:lu},ss=Ke,as=ss.set,ms=ss.getterFor("URL"),ys=us.URLSearchParams,bs=us.getState,ps=Bu.URL,hs=Bu.TypeError,Zs=Bu.parseInt,Ls=Math.floor,Xs=Math.pow,Is=qu("".charAt),Gs=qu(/./.exec),Ks=qu([].join),Ws=qu(1..toString),fs=qu([].pop),Ss=qu([].push),xs=qu("".replace),ws=qu([].shift),Ys=qu("".split),Vs=qu("".slice),Ts=qu("".toLowerCase),gs=qu([].unshift),Hs="Invalid scheme",vs="Invalid host",Ps="Invalid port",Cs=/[a-z]/i,Js=/[\d+-.a-z]/i,ks=/\d/,Ms=/^0x/i,Rs=/^[0-7]+$/,Ds=/^\d+$/,Us=/^[\da-f]+$/i,Ns=/[\0\t\n\r #%/:<>?@[\\\]^|]/,js=/[\0\t\n\r #/:<>?@[\\\]^|]/,Fs=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,zs=/[\t\n\r]/g,Es=function(t){var i,e,n,r;if("number"==typeof t){for(i=[],e=0;4>e;e++)gs(i,t%256),t=Ls(t/256);return Ks(i,".")}if("object"==typeof t){for(i="",n=function(t){for(var i=null,e=1,n=null,r=0,c=0;8>c;c++)0!==t[c]?(r>e&&(i=n,e=r),n=null,r=0):(null===n&&(n=c),++r);return r>e&&(i=n,e=r),i}(t),e=0;8>e;e++)r&&0===t[e]||(r&&(r=!1),n===e?(i+=e?":":"::",r=!0):(i+=Ws(t[e],16),7>e&&(i+=":")));return"["+i+"]"}return t},Qs={},Os=es({},Qs,{" ":1,'"':1,"<":1,">":1,"`":1}),Bs=es({},Os,{"#":1,"?":1,"{":1,"}":1}),As=es({},Bs,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),qs=function(t,i){var e=cs(t,0);return e>32&&127>e&&!is(i,t)?t:encodeURIComponent(t)},_s={ftp:21,file:null,http:80,https:443,ws:80,wss:443},$s=function(t,i){var e;return 2==t.length&&Gs(Cs,Is(t,0))&&(":"==(e=Is(t,1))||!i&&"|"==e)},ta=function(t){var i;return t.length>1&&$s(Vs(t,0,2))&&(2==t.length||"/"===(i=Is(t,2))||"\\"===i||"?"===i||"#"===i)},ia=function(t){return"."===t||"%2e"===Ts(t)},ea={},na={},ra={},ca={},da={},la={},oa={},ua={},sa={},aa={},ma={},ya={},ba={},pa={},ha={},Za={},La={},Xa={},Ia={},Ga={},Ka={},Wa=function(t,i,e){var n,r,c,d=ds(t);if(i){if(r=this.parse(d))throw hs(r);this.searchParams=null}else{if(void 0!==e&&(n=new Wa(e,!0)),r=this.parse(d,null,n))throw hs(r);(c=bs(new ys)).bindURL(this),this.searchParams=c}};Wa.prototype={type:"URL",parse:function(t,i,e){var n,r,c,d,l,o=this,u=i||ea,s=0,a="",m=!1,y=!1,b=!1;for(t=ds(t),i||(o.scheme="",o.username="",o.password="",o.host=null,o.port=null,o.path=[],o.query=null,o.fragment=null,o.cannotBeABaseURL=!1,t=xs(t,Fs,"")),t=xs(t,zs,""),n=ns(t);s<=n.length;){switch(r=n[s],u){case ea:if(!r||!Gs(Cs,r)){if(i)return Hs;u=ra;continue}a+=Ts(r),u=na;break;case na:if(r&&(Gs(Js,r)||"+"==r||"-"==r||"."==r))a+=Ts(r);else{if(":"!=r){if(i)return Hs;a="",u=ra,s=0;continue}if(i&&(o.isSpecial()!=is(_s,a)||"file"==a&&(o.includesCredentials()||null!==o.port)||"file"==o.scheme&&!o.host))return;if(o.scheme=a,i)return void(o.isSpecial()&&_s[o.scheme]==o.port&&(o.port=null));a="","file"==o.scheme?u=pa:o.isSpecial()&&e&&e.scheme==o.scheme?u=ca:o.isSpecial()?u=ua:"/"==n[s+1]?(u=da,s++):(o.cannotBeABaseURL=!0,Ss(o.path,""),u=Ia)}break;case ra:if(!e||e.cannotBeABaseURL&&"#"!=r)return Hs;if(e.cannotBeABaseURL&&"#"==r){o.scheme=e.scheme,o.path=rs(e.path),o.query=e.query,o.fragment="",o.cannotBeABaseURL=!0,u=Ka;break}u="file"==e.scheme?pa:la;continue;case ca:if("/"!=r||"/"!=n[s+1]){u=la;continue}u=sa,s++;break;case da:if("/"==r){u=aa;break}u=Xa;continue;case la:if(o.scheme=e.scheme,r==zu)o.username=e.username,o.password=e.password,o.host=e.host,o.port=e.port,o.path=rs(e.path),o.query=e.query;else if("/"==r||"\\"==r&&o.isSpecial())u=oa;else if("?"==r)o.username=e.username,o.password=e.password,o.host=e.host,o.port=e.port,o.path=rs(e.path),o.query="",u=Ga;else{if("#"!=r){o.username=e.username,o.password=e.password,o.host=e.host,o.port=e.port,o.path=rs(e.path),o.path.length--,u=Xa;continue}o.username=e.username,o.password=e.password,o.host=e.host,o.port=e.port,o.path=rs(e.path),o.query=e.query,o.fragment="",u=Ka}break;case oa:if(!o.isSpecial()||"/"!=r&&"\\"!=r){if("/"!=r){o.username=e.username,o.password=e.password,o.host=e.host,o.port=e.port,u=Xa;continue}u=aa}else u=sa;break;case ua:if(u=sa,"/"!=r||"/"!=Is(a,s+1))continue;s++;break;case sa:if("/"!=r&&"\\"!=r){u=aa;continue}break;case aa:if("@"==r){m&&(a="%40"+a),m=!0,c=ns(a);for(var p=0;p<c.length;p++){var h=c[p];if(":"!=h||b){var Z=qs(h,As);b?o.password+=Z:o.username+=Z}else b=!0}a=""}else if(r==zu||"/"==r||"?"==r||"#"==r||"\\"==r&&o.isSpecial()){if(m&&""==a)return"Invalid authority";s-=ns(a).length+1,a="",u=ma}else a+=r;break;case ma:case ya:if(i&&"file"==o.scheme){u=Za;continue}if(":"!=r||y){if(r==zu||"/"==r||"?"==r||"#"==r||"\\"==r&&o.isSpecial()){if(o.isSpecial()&&""==a)return vs;if(i&&""==a&&(o.includesCredentials()||null!==o.port))return;if(d=o.parseHost(a))return d;if(a="",u=La,i)return;continue}"["==r?y=!0:"]"==r&&(y=!1),a+=r}else{if(""==a)return vs;if(d=o.parseHost(a))return d;if(a="",u=ba,i==ya)return}break;case ba:if(!Gs(ks,r)){if(r==zu||"/"==r||"?"==r||"#"==r||"\\"==r&&o.isSpecial()||i){if(""!=a){var L=Zs(a,10);if(L>65535)return Ps;o.port=o.isSpecial()&&L===_s[o.scheme]?null:L,a=""}if(i)return;u=La;continue}return Ps}a+=r;break;case pa:if(o.scheme="file","/"==r||"\\"==r)u=ha;else{if(!e||"file"!=e.scheme){u=Xa;continue}if(r==zu)o.host=e.host,o.path=rs(e.path),o.query=e.query;else if("?"==r)o.host=e.host,o.path=rs(e.path),o.query="",u=Ga;else{if("#"!=r){ta(Ks(rs(n,s),""))||(o.host=e.host,o.path=rs(e.path),o.shortenPath()),u=Xa;continue}o.host=e.host,o.path=rs(e.path),o.query=e.query,o.fragment="",u=Ka}}break;case ha:if("/"==r||"\\"==r){u=Za;break}e&&"file"==e.scheme&&!ta(Ks(rs(n,s),""))&&($s(e.path[0],!0)?Ss(o.path,e.path[0]):o.host=e.host),u=Xa;continue;case Za:if(r==zu||"/"==r||"\\"==r||"?"==r||"#"==r){if(!i&&$s(a))u=Xa;else if(""==a){if(o.host="",i)return;u=La}else{if(d=o.parseHost(a))return d;if("localhost"==o.host&&(o.host=""),i)return;a="",u=La}continue}a+=r;break;case La:if(o.isSpecial()){if(u=Xa,"/"!=r&&"\\"!=r)continue}else if(i||"?"!=r)if(i||"#"!=r){if(r!=zu&&(u=Xa,"/"!=r))continue}else o.fragment="",u=Ka;else o.query="",u=Ga;break;case Xa:if(r==zu||"/"==r||"\\"==r&&o.isSpecial()||!i&&("?"==r||"#"==r)){if(".."===(l=Ts(l=a))||"%2e."===l||".%2e"===l||"%2e%2e"===l?(o.shortenPath(),"/"==r||"\\"==r&&o.isSpecial()||Ss(o.path,"")):ia(a)?"/"==r||"\\"==r&&o.isSpecial()||Ss(o.path,""):("file"==o.scheme&&!o.path.length&&$s(a)&&(o.host&&(o.host=""),a=Is(a,0)+":"),Ss(o.path,a)),a="","file"==o.scheme&&(r==zu||"?"==r||"#"==r))for(;o.path.length>1&&""===o.path[0];)ws(o.path);"?"==r?(o.query="",u=Ga):"#"==r&&(o.fragment="",u=Ka)}else a+=qs(r,Bs);break;case Ia:"?"==r?(o.query="",u=Ga):"#"==r?(o.fragment="",u=Ka):r!=zu&&(o.path[0]+=qs(r,Qs));break;case Ga:i||"#"!=r?r!=zu&&("'"==r&&o.isSpecial()?o.query+="%27":o.query+="#"==r?"%23":qs(r,Qs)):(o.fragment="",u=Ka);break;case Ka:r!=zu&&(o.fragment+=qs(r,Os))}s++}},parseHost:function(t){var i,e,n;if("["==Is(t,0)){if("]"!=Is(t,t.length-1))return vs;if(i=function(t){var i,e,n,r,c,d,l,o=[0,0,0,0,0,0,0,0],u=0,s=null,a=0,m=function(){return Is(t,a)};if(":"==m()){if(":"!=Is(t,1))return;a+=2,s=++u}for(;m();){if(8==u)return;if(":"!=m()){for(i=e=0;4>e&&Gs(Us,m());)i=16*i+Zs(m(),16),a++,e++;if("."==m()){if(0==e)return;if(a-=e,u>6)return;for(n=0;m();){if(r=null,n>0){if("."!=m()||n>=4)return;a++}if(!Gs(ks,m()))return;for(;Gs(ks,m());){if(c=Zs(m(),10),null===r)r=c;else{if(0==r)return;r=10*r+c}if(r>255)return;a++}o[u]=256*o[u]+r,2!=++n&&4!=n||u++}if(4!=n)return;break}if(":"==m()){if(a++,!m())return}else if(m())return;o[u++]=i}else{if(null!==s)return;a++,s=++u}}if(null!==s)for(d=u-s,u=7;0!=u&&d>0;)l=o[u],o[u--]=o[s+d-1],o[s+--d]=l;else if(8!=u)return;return o}(Vs(t,1,-1)),!i)return vs;this.host=i}else if(this.isSpecial()){if(t=function(t){var i,e,n=[],r=Zo(ho(Lo(t),lo,"."),".");for(i=0;i<r.length;i++)e=r[i],po(n,so(co,e)?"xn--"+Go(e):e);return bo(n,".")}(t),Gs(Ns,t))return vs;if(i=function(t){var i,e,n,r,c,d,l,o=Ys(t,".");if(o.length&&""==o[o.length-1]&&o.length--,(i=o.length)>4)return t;for(e=[],n=0;i>n;n++){if(""==(r=o[n]))return t;if(c=10,r.length>1&&"0"==Is(r,0)&&(c=Gs(Ms,r)?16:8,r=Vs(r,8==c?1:2)),""===r)d=0;else{if(!Gs(10==c?Ds:8==c?Rs:Us,r))return t;d=Zs(r,c)}Ss(e,d)}for(n=0;i>n;n++)if(d=e[n],n==i-1){if(d>=Xs(256,5-i))return null}else if(d>255)return null;for(l=fs(e),n=0;e.length>n;n++)l+=e[n]*Xs(256,3-n);return l}(t),null===i)return vs;this.host=i}else{if(Gs(js,t))return vs;for(i="",e=ns(t),n=0;n<e.length;n++)i+=qs(e[n],Qs);this.host=i}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return is(_s,this.scheme)},shortenPath:function(){var t=this.path,i=t.length;!i||"file"==this.scheme&&1==i&&$s(t[0],!0)||t.length--},serialize:function(){var t=this,i=t.scheme,e=t.username,n=t.password,r=t.host,c=t.port,d=t.path,l=t.query,o=t.fragment,u=i+":";return null!==r?(u+="//",t.includesCredentials()&&(u+=e+(n?":"+n:"")+"@"),u+=Es(r),null!==c&&(u+=":"+c)):"file"==i&&(u+="//"),u+=t.cannotBeABaseURL?d[0]:d.length?"/"+Ks(d,"/"):"",null!==l&&(u+="?"+l),null!==o&&(u+="#"+o),u},setHref:function(t){var i=this.parse(t);if(i)throw hs(i);this.searchParams.update()},getOrigin:function(){var t=this.scheme,i=this.port;if("blob"==t)try{return new fa(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+Es(this.host)+(null!==i?":"+i:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(ds(t)+":",ea)},getUsername:function(){return this.username},setUsername:function(t){var i=ns(ds(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var e=0;e<i.length;e++)this.username+=qs(i[e],As)}},getPassword:function(){return this.password},setPassword:function(t){var i=ns(ds(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var e=0;e<i.length;e++)this.password+=qs(i[e],As)}},getHost:function(){var t=this.host,i=this.port;return null===t?"":null===i?Es(t):Es(t)+":"+i},setHost:function(t){this.cannotBeABaseURL||this.parse(t,ma)},getHostname:function(){var t=this.host;return null===t?"":Es(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,ya)},getPort:function(){var t=this.port;return null===t?"":ds(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=ds(t))?this.port=null:this.parse(t,ba))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+Ks(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,La))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=ds(t))?this.query=null:("?"==Is(t,0)&&(t=Vs(t,1)),this.query="",this.parse(t,Ga)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=ds(t))?("#"==Is(t,0)&&(t=Vs(t,1)),this.fragment="",this.parse(t,Ka)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var fa=function(t){var i=ts(this,Sa),e=os(arguments.length,1)>1?arguments[1]:void 0,n=as(i,new Wa(t,!1,e));Qu||(i.href=n.serialize(),i.origin=n.getOrigin(),i.protocol=n.getProtocol(),i.username=n.getUsername(),i.password=n.getPassword(),i.host=n.getHost(),i.hostname=n.getHostname(),i.port=n.getPort(),i.pathname=n.getPathname(),i.search=n.getSearch(),i.searchParams=n.getSearchParams(),i.hash=n.getHash())},Sa=fa.prototype,xa=function(t,i){return{get:function(){return ms(this)[t]()},set:i&&function(t){return ms(this)[i](t)},configurable:!0,enumerable:!0}};if(Qu&&($u(Sa,"href",xa("serialize","setHref")),$u(Sa,"origin",xa("getOrigin")),$u(Sa,"protocol",xa("getProtocol","setProtocol")),$u(Sa,"username",xa("getUsername","setUsername")),$u(Sa,"password",xa("getPassword","setPassword")),$u(Sa,"host",xa("getHost","setHost")),$u(Sa,"hostname",xa("getHostname","setHostname")),$u(Sa,"port",xa("getPort","setPort")),$u(Sa,"pathname",xa("getPathname","setPathname")),$u(Sa,"search",xa("getSearch","setSearch")),$u(Sa,"searchParams",xa("getSearchParams")),$u(Sa,"hash",xa("getHash","setHash"))),_u(Sa,"toJSON",(function(){return ms(this).serialize()}),{enumerable:!0}),_u(Sa,"toString",(function(){return ms(this).serialize()}),{enumerable:!0}),ps){var wa=ps.createObjectURL,Ya=ps.revokeObjectURL;wa&&_u(fa,"createObjectURL",Au(wa,ps)),Ya&&_u(fa,"revokeObjectURL",Au(Ya,ps))}function Va(){
- /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
- Va=function(){return t};var t={},i=Object.prototype,e=i.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",c=n.asyncIterator||"@@asyncIterator",d=n.toStringTag||"@@toStringTag";function l(t,i,e){return Object.defineProperty(t,i,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[i]}try{l({},"")}catch(t){l=function(t,i,e){return t[i]=e}}function o(t,i,e,n){var r=i&&i.prototype instanceof a?i:a,c=Object.create(r.prototype),d=new W(n||[]);return c._invoke=function(t,i,e){var n="suspendedStart";return function(r,c){if("executing"===n)throw Error("Generator is already running");if("completed"===n){if("throw"===r)throw c;return{value:void 0,done:!0}}for(e.method=r,e.arg=c;;){var d=e.delegate;if(d){var l=I(d,e);if(l){if(l===s)continue;return l}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===n)throw n="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);n="executing";var o=u(t,i,e);if("normal"===o.type){if(n=e.done?"completed":"suspendedYield",o.arg===s)continue;return{value:o.arg,done:e.done}}"throw"===o.type&&(n="completed",e.method="throw",e.arg=o.arg)}}}(t,e,d),c}function u(t,i,e){try{return{type:"normal",arg:t.call(i,e)}}catch(t){return{type:"throw",arg:t}}}t.wrap=o;var s={};function a(){}function m(){}function y(){}var b={};l(b,r,(function(){return this}));var p=Object.getPrototypeOf,h=p&&p(p(f([])));h&&h!==i&&e.call(h,r)&&(b=h);var Z=y.prototype=a.prototype=Object.create(b);function L(t){["next","throw","return"].forEach((function(i){l(t,i,(function(t){return this._invoke(i,t)}))}))}function X(t,i){function n(r,c,d,l){var o=u(t[r],t,c);if("throw"!==o.type){var s=o.arg,a=s.value;return a&&"object"==typeof a&&e.call(a,"__await")?i.resolve(a.__await).then((function(t){n("next",t,d,l)}),(function(t){n("throw",t,d,l)})):i.resolve(a).then((function(t){s.value=t,d(s)}),(function(t){return n("throw",t,d,l)}))}l(o.arg)}var r;this._invoke=function(t,e){function c(){return new i((function(i,r){n(t,e,i,r)}))}return r=r?r.then(c,c):c()}}function I(t,i){var e=t.iterator[i.method];if(void 0===e){if(i.delegate=null,"throw"===i.method){if(t.iterator.return&&(i.method="return",i.arg=void 0,I(t,i),"throw"===i.method))return s;i.method="throw",i.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var n=u(e,t.iterator,i.arg);if("throw"===n.type)return i.method="throw",i.arg=n.arg,i.delegate=null,s;var r=n.arg;return r?r.done?(i[t.resultName]=r.value,i.next=t.nextLoc,"return"!==i.method&&(i.method="next",i.arg=void 0),i.delegate=null,s):r:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,s)}function G(t){var i={tryLoc:t[0]};1 in t&&(i.catchLoc=t[1]),2 in t&&(i.finallyLoc=t[2],i.afterLoc=t[3]),this.tryEntries.push(i)}function K(t){var i=t.completion||{};i.type="normal",delete i.arg,t.completion=i}function W(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(G,this),this.reset(!0)}function f(t){if(t){var i=t[r];if(i)return i.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,c=function i(){for(;++n<t.length;)if(e.call(t,n))return i.value=t[n],i.done=!1,i;return i.value=void 0,i.done=!0,i};return c.next=c}}return{next:S}}function S(){return{value:void 0,done:!0}}return m.prototype=y,l(Z,"constructor",y),l(y,"constructor",m),m.displayName=l(y,d,"GeneratorFunction"),t.isGeneratorFunction=function(t){var i="function"==typeof t&&t.constructor;return!!i&&(i===m||"GeneratorFunction"===(i.displayName||i.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,l(t,d,"GeneratorFunction")),t.prototype=Object.create(Z),t},t.awrap=function(t){return{__await:t}},L(X.prototype),l(X.prototype,c,(function(){return this})),t.AsyncIterator=X,t.async=function(i,e,n,r,c){void 0===c&&(c=Promise);var d=new X(o(i,e,n,r),c);return t.isGeneratorFunction(e)?d:d.next().then((function(t){return t.done?t.value:d.next()}))},L(Z),l(Z,d,"Generator"),l(Z,r,(function(){return this})),l(Z,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var i=[];for(var e in t)i.push(e);return i.reverse(),function e(){for(;i.length;){var n=i.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=f,W.prototype={constructor:W,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(K),!t)for(var i in this)"t"===i.charAt(0)&&e.call(this,i)&&!isNaN(+i.slice(1))&&(this[i]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var i=this;function n(e,n){return d.type="throw",d.arg=t,i.next=e,n&&(i.method="next",i.arg=void 0),!!n}for(var r=this.tryEntries.length-1;r>=0;--r){var c=this.tryEntries[r],d=c.completion;if("root"===c.tryLoc)return n("end");if(c.tryLoc<=this.prev){var l=e.call(c,"catchLoc"),o=e.call(c,"finallyLoc");if(l&&o){if(this.prev<c.catchLoc)return n(c.catchLoc,!0);if(this.prev<c.finallyLoc)return n(c.finallyLoc)}else if(l){if(this.prev<c.catchLoc)return n(c.catchLoc,!0)}else{if(!o)throw Error("try statement without catch or finally");if(this.prev<c.finallyLoc)return n(c.finallyLoc)}}}},abrupt:function(t,i){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&e.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var c=r;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=i&&i<=c.finallyLoc&&(c=null);var d=c?c.completion:{};return d.type=t,d.arg=i,c?(this.method="next",this.next=c.finallyLoc,s):this.complete(d)},complete:function(t,i){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&i&&(this.next=i),s},finish:function(t){for(var i=this.tryEntries.length-1;i>=0;--i){var e=this.tryEntries[i];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),K(e),s}},catch:function(t){for(var i=this.tryEntries.length-1;i>=0;--i){var e=this.tryEntries[i];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var r=n.arg;K(e)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,i,e){return this.delegate={iterator:f(t),resultName:i,nextLoc:e},"next"===this.method&&(this.arg=void 0),s}},t}function Ta(t){this.wrapped=t}function ga(t){var i,e;function n(i,e){try{var c=t[i](e),d=c.value,l=d instanceof Ta;Promise.resolve(l?d.wrapped:d).then((function(t){l?n("return"===i?"return":"next",t):r(c.done?"return":"normal",t)}),(function(t){n("throw",t)}))}catch(t){r("throw",t)}}function r(t,r){switch(t){case"return":i.resolve({value:r,done:!0});break;case"throw":i.reject(r);break;default:i.resolve({value:r,done:!1})}(i=i.next)?n(i.key,i.arg):e=null}this._invoke=function(t,r){return new Promise((function(c,d){var l={key:t,arg:r,resolve:c,reject:d,next:null};e?e=e.next=l:(i=e=l,n(t,r))}))},"function"!=typeof t.return&&(this.return=void 0)}function Ha(t){return function(){return new ga(t.apply(this,arguments))}}function va(t){return new Ta(t)}function Pa(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function Ca(t,i){for(var e=0;e<i.length;e++){var n=i[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function Ja(t,i,e){return i&&Ca(t.prototype,i),e&&Ca(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function ka(t,i,e){return i in t?Object.defineProperty(t,i,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[i]=e,t}function Ma(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(i&&i.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),i&&Da(t,i)}function Ra(t){return Ra=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ra(t)}function Da(t,i){return Da=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},Da(t,i)}function Ua(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Na(t,i){if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw new TypeError("Derived constructors may only return object or undefined");return Ua(t)}function ja(t){var i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var e,n=Ra(t);if(i){var r=Ra(this).constructor;e=Reflect.construct(n,arguments,r)}else e=n.apply(this,arguments);return Na(this,e)}}function Fa(t,i){for(;!{}.hasOwnProperty.call(t,i)&&null!==(t=Ra(t)););return t}function za(){return za="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,i,e){var n=Fa(t,i);if(n){var r=Object.getOwnPropertyDescriptor(n,i);return r.get?r.get.call(3>arguments.length?t:e):r.value}},za.apply(this,arguments)}function Ea(t,i){return function(t){if(Array.isArray(t))return t}(t)||function(t,i){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,r,c=[],d=!0,l=!1;try{for(e=e.call(t);!(d=(n=e.next()).done)&&(c.push(n.value),!i||c.length!==i);d=!0);}catch(t){l=!0,r=t}finally{try{d||null==e.return||e.return()}finally{if(l)throw r}}return c}}(t,i)||Qa(t,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Qa(t,i){if(t){if("string"==typeof t)return Oa(t,i);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Oa(t,i):void 0}}function Oa(t,i){(null==i||i>t.length)&&(i=t.length);for(var e=0,n=Array(i);i>e;e++)n[e]=t[e];return n}function Ba(t,i){var e="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!e){if(Array.isArray(t)||(e=Qa(t))||i&&t&&"number"==typeof t.length){e&&(t=e);var n=0,r=function(){};return{s:r,n:function(){return n<t.length?{done:!1,value:t[n++]}:{done:!0}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,d=!0,l=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return d=t.done,t},e:function(t){l=!0,c=t},f:function(){try{d||null==e.return||e.return()}finally{if(l)throw c}}}}ls(fa,"URL"),Eu({global:!0,constructor:!0,forced:!Ou,sham:!Qu},{URL:fa}),ga.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},ga.prototype.next=function(t){return this._invoke("next",t)},ga.prototype.throw=function(t){return this._invoke("throw",t)},ga.prototype.return=function(t){return this._invoke("return",t)};var Aa="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,qa=je,_a=Ae,$a=RangeError,tm=function(t){if(void 0===t)return 0;var i=qa(t),e=_a(i);if(i!==e)throw $a("Wrong length or index");return e},im=Array,em=Math.abs,nm=Math.pow,rm=Math.floor,cm=Math.log,dm=Vt,lm=Qe,om=_e,um=function(t){for(var i=dm(this),e=om(i),n=arguments.length,r=lm(n>1?arguments[1]:void 0,e),c=n>2?arguments[2]:void 0,d=void 0===c?e:lm(c,e);d>r;)i[r++]=t;return i},sm=n,am=K,mm=d,ym=Aa,bm=Ni,pm=Ji,hm=So,Zm=c,Lm=_d,Xm=je,Im=Ae,Gm=tm,Km=Qr,Wm=Lc,fm=Re.f,Sm=Ii.f,xm=um,wm=eo,Ym=cc,Vm=bm.PROPER,Tm=bm.CONFIGURABLE,gm=Ke.get,Hm=Ke.set,vm="ArrayBuffer",Pm="Wrong index",Cm=sm.ArrayBuffer,Jm=Cm,km=Jm&&Jm.prototype,Mm=sm.DataView,Rm=Mm&&Mm.prototype,Dm=Object.prototype,Um=sm.Array,Nm=sm.RangeError,jm=am(xm),Fm=am([].reverse),zm=function(t,i,e){var n,r,c,d=im(e),l=8*e-i-1,o=(1<<l)-1,u=o>>1,s=23===i?nm(2,-24)-nm(2,-77):0,a=0>t||0===t&&0>1/t?1:0,m=0;for((t=em(t))!=t||t===1/0?(r=t!=t?1:0,n=o):(n=rm(cm(t)/.6931471805599453),1>t*(c=nm(2,-n))&&(n--,c*=2),2>(t+=1>n+u?s*nm(2,1-u):s/c)*c||(n++,c/=2),o>n+u?1>n+u?(r=t*nm(2,u-1)*nm(2,i),n=0):(r=(t*c-1)*nm(2,i),n+=u):(r=0,n=o));i>=8;)d[m++]=255&r,r/=256,i-=8;for(n=n<<i|r,l+=i;l>0;)d[m++]=255&n,n/=256,l-=8;return d[--m]|=128*a,d},Em=function(t,i){var e,n=t.length,r=8*n-i-1,c=(1<<r)-1,d=c>>1,l=r-7,o=n-1,u=t[o--],s=127&u;for(u>>=7;l>0;)s=256*s+t[o--],l-=8;for(e=s&(1<<-l)-1,s>>=-l,l+=i;l>0;)e=256*e+t[o--],l-=8;if(0===s)s=1-d;else{if(s===c)return e?NaN:u?-1/0:1/0;e+=nm(2,i),s-=d}return(u?-1:1)*e*nm(2,s-i)},Qm=function(t){return[255&t]},Om=function(t){return[255&t,t>>8&255]},Bm=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Am=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},qm=function(t){return zm(t,23,4)},_m=function(t){return zm(t,52,8)},$m=function(t,i){Sm(t.prototype,i,{get:function(){return gm(this)[i]}})},ty=function(t,i,e,n){var r=Gm(e),c=gm(t);if(r+i>c.byteLength)throw Nm(Pm);var d=gm(c.buffer).bytes,l=r+c.byteOffset,o=wm(d,l,l+i);return n?o:Fm(o)},iy=function(t,i,e,n,r,c){var d=Gm(e),l=gm(t);if(d+i>l.byteLength)throw Nm(Pm);for(var o=gm(l.buffer).bytes,u=d+l.byteOffset,s=n(+r),a=0;i>a;a++)o[u+a]=s[c?a:i-a-1]};if(ym){var ey=Vm&&Cm.name!==vm;if(Zm((function(){Cm(1)}))&&Zm((function(){new Cm(-1)}))&&!Zm((function(){return new Cm,new Cm(1.5),new Cm(NaN),ey&&!Tm})))ey&&Tm&&pm(Cm,"name",vm);else{(Jm=function(t){return Lm(this,km),new Cm(Gm(t))}).prototype=km;for(var ny,ry=fm(Cm),cy=0;ry.length>cy;)(ny=ry[cy++])in Jm||pm(Jm,ny,Cm[ny]);km.constructor=Jm}Wm&&Km(Rm)!==Dm&&Wm(Rm,Dm);var dy=new Mm(new Jm(2)),ly=am(Rm.setInt8);dy.setInt8(0,2147483648),dy.setInt8(1,2147483649),!dy.getInt8(0)&&dy.getInt8(1)||hm(Rm,{setInt8:function(t,i){ly(this,t,i<<24>>24)},setUint8:function(t,i){ly(this,t,i<<24>>24)}},{unsafe:!0})}else km=(Jm=function(t){Lm(this,km);var i=Gm(t);Hm(this,{bytes:jm(Um(i),0),byteLength:i}),mm||(this.byteLength=i)}).prototype,Rm=(Mm=function(t,i,e){Lm(this,Rm),Lm(t,km);var n=gm(t).byteLength,r=Xm(i);if(0>r||r>n)throw Nm("Wrong offset");if(r+(e=void 0===e?n-r:Im(e))>n)throw Nm("Wrong length");Hm(this,{buffer:t,byteLength:e,byteOffset:r}),mm||(this.buffer=t,this.byteLength=e,this.byteOffset=r)}).prototype,mm&&($m(Jm,"byteLength"),$m(Mm,"buffer"),$m(Mm,"byteLength"),$m(Mm,"byteOffset")),hm(Rm,{getInt8:function(t){return ty(this,1,t)[0]<<24>>24},getUint8:function(t){return ty(this,1,t)[0]},getInt16:function(t){var i=ty(this,2,t,arguments.length>1?arguments[1]:void 0);return(i[1]<<8|i[0])<<16>>16},getUint16:function(t){var i=ty(this,2,t,arguments.length>1?arguments[1]:void 0);return i[1]<<8|i[0]},getInt32:function(t){return Am(ty(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Am(ty(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Em(ty(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Em(ty(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,i){iy(this,1,t,Qm,i)},setUint8:function(t,i){iy(this,1,t,Qm,i)},setInt16:function(t,i){iy(this,2,t,Om,i,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,i){iy(this,2,t,Om,i,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,i){iy(this,4,t,Bm,i,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,i){iy(this,4,t,Bm,i,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,i){iy(this,4,t,qm,i,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,i){iy(this,8,t,_m,i,arguments.length>2?arguments[2]:void 0)}});Ym(Jm,vm),Ym(Mm,"DataView");var oy={ArrayBuffer:Jm,DataView:Mm},uy=Kl,sy=ot,ay=TypeError,my=function(t){if(uy(t))return t;throw ay(sy(t)+" is not a constructor")},yy=Si,by=my,py=Ot("species"),hy=function(t,i){var e,n=yy(t).constructor;return void 0===n||null==(e=yy(n)[py])?i:by(e)},Zy=Nn,Ly=K,Xy=c,Iy=Si,Gy=Qe,Ky=Ae,Wy=hy,fy=oy.ArrayBuffer,Sy=oy.DataView,xy=Sy.prototype,wy=Ly(fy.prototype.slice),Yy=Ly(xy.getUint8),Vy=Ly(xy.setUint8);Zy({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:Xy((function(){return!new fy(2).slice(1,void 0).byteLength}))},{slice:function(t,i){if(wy&&void 0===i)return wy(Iy(this),t);for(var e=Iy(this).byteLength,n=Gy(t,e),r=Gy(void 0===i?e:i,e),c=new(Wy(this,fy))(Ky(r-n)),d=new Sy(this),l=new Sy(c),o=0;r>n;)Vy(l,o++,Yy(d,n++));return c}});var Ty={exports:{}},gy=Ot("iterator"),Hy=!1;try{var vy=0,Py={next:function(){return{done:!!vy++}},return:function(){Hy=!0}};Py[gy]=function(){return this},Array.from(Py,(function(){throw 2}))}catch(t){}var Cy,Jy,ky,My=function(t,i){if(!i&&!Hy)return!1;var e=!1;try{var n={};n[gy]=function(){return{next:function(){return{done:e=!0}}}},t(n)}catch(t){}return e},Ry=Aa,Dy=d,Uy=n,Ny=k,jy=R,Fy=Ht,zy=cd,Ey=ot,Qy=Ji,Oy=Me,By=Ii.f,Ay=F,qy=Qr,_y=Lc,$y=Ot,tb=kt,ib=Ke.enforce,eb=Ke.get,nb=Uy.Int8Array,rb=nb&&nb.prototype,cb=Uy.Uint8ClampedArray,db=cb&&cb.prototype,lb=nb&&qy(nb),ob=rb&&qy(rb),ub=Object.prototype,sb=Uy.TypeError,ab=$y("toStringTag"),mb=tb("TYPED_ARRAY_TAG"),yb=Ry&&!!_y&&"Opera"!==zy(Uy.opera),bb=!1,pb={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},hb={BigInt64Array:8,BigUint64Array:8},Zb=function(t){var i=qy(t);if(jy(i)){var e=eb(i);return e&&Fy(e,"TypedArrayConstructor")?e.TypedArrayConstructor:Zb(i)}},Lb=function(t){if(!jy(t))return!1;var i=zy(t);return Fy(pb,i)||Fy(hb,i)};for(Cy in pb)(ky=(Jy=Uy[Cy])&&Jy.prototype)?ib(ky).TypedArrayConstructor=Jy:yb=!1;for(Cy in hb)(ky=(Jy=Uy[Cy])&&Jy.prototype)&&(ib(ky).TypedArrayConstructor=Jy);if((!yb||!Ny(lb)||lb===Function.prototype)&&(lb=function(){throw sb("Incorrect invocation")},yb))for(Cy in pb)Uy[Cy]&&_y(Uy[Cy],lb);if((!yb||!ob||ob===ub)&&(ob=lb.prototype,yb))for(Cy in pb)Uy[Cy]&&_y(Uy[Cy].prototype,ob);if(yb&&qy(db)!==ob&&_y(db,ob),Dy&&!Fy(ob,ab))for(Cy in bb=!0,By(ob,ab,{get:function(){return jy(this)?this[mb]:void 0}}),pb)Uy[Cy]&&Qy(Uy[Cy],mb,Cy);var Xb={NATIVE_ARRAY_BUFFER_VIEWS:yb,TYPED_ARRAY_TAG:bb&&mb,aTypedArray:function(t){if(Lb(t))return t;throw sb("Target is not a typed array")},aTypedArrayConstructor:function(t){if(Ny(t)&&(!_y||Ay(lb,t)))return t;throw sb(Ey(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,i,e,n){if(Dy){if(e)for(var r in pb){var c=Uy[r];if(c&&Fy(c.prototype,t))try{delete c.prototype[t]}catch(e){try{c.prototype[t]=i}catch(t){}}}ob[t]&&!e||Oy(ob,t,e?i:yb&&rb[t]||i,n)}},exportTypedArrayStaticMethod:function(t,i,e){var n,r;if(Dy){if(_y){if(e)for(n in pb)if((r=Uy[n])&&Fy(r,t))try{delete r[t]}catch(t){}if(lb[t]&&!e)return;try{return Oy(lb,t,e?i:yb&&lb[t]||i)}catch(t){}}for(n in pb)!(r=Uy[n])||r[t]&&!e||Oy(r,t,i)}},getTypedArrayConstructor:Zb,isView:function(t){if(!jy(t))return!1;var i=zy(t);return"DataView"===i||Fy(pb,i)||Fy(hb,i)},isTypedArray:Lb,TypedArray:lb,TypedArrayPrototype:ob},Ib=n,Gb=c,Kb=My,Wb=Xb.NATIVE_ARRAY_BUFFER_VIEWS,fb=Ib.ArrayBuffer,Sb=Ib.Int8Array,xb=!Wb||!Gb((function(){Sb(1)}))||!Gb((function(){new Sb(-1)}))||!Kb((function(t){new Sb,new Sb(null),new Sb(1.5),new Sb(t)}),!0)||Gb((function(){return 1!==new Sb(new fb(2),1,void 0).length})),wb=R,Yb=Math.floor,Vb=Number.isInteger||function(t){return!wb(t)&&isFinite(t)&&Yb(t)===t},Tb=je,gb=RangeError,Hb=RangeError,vb=function(t,i){var e=function(t){var i=Tb(t);if(0>i)throw gb("The argument can't be less than 0");return i}(t);if(e%i)throw Hb("Wrong offset");return e},Pb=Qd,Cb=u,Jb=my,kb=Vt,Mb=_e,Rb=Ml,Db=gl,Ub=ol,Nb=Xb.aTypedArrayConstructor,jb=x,Fb=Array.isArray||function(t){return"Array"==jb(t)},zb=Fb,Eb=Kl,Qb=R,Ob=Ot("species"),Bb=Array,Ab=function(t,i){return new(function(t){var i;return zb(t)&&(i=t.constructor,(Eb(i)&&(i===Bb||zb(i.prototype))||Qb(i)&&null===(i=i[Ob]))&&(i=void 0)),void 0===i?Bb:i}(t))(0===i?0:i)},qb=Qd,_b=g,$b=Vt,tp=_e,ip=Ab,ep=K([].push),np=function(t){var i=1==t,e=2==t,n=3==t,r=4==t,c=6==t,d=7==t,l=5==t||c;return function(o,u,s,a){for(var m,y,b=$b(o),p=_b(b),h=qb(u,s),Z=tp(p),L=0,X=a||ip,I=i?X(o,Z):e||d?X(o,0):void 0;Z>L;L++)if((l||L in p)&&(y=h(m=p[L],L,b),t))if(i)I[L]=y;else if(y)switch(t){case 3:return!0;case 5:return m;case 6:return L;case 2:ep(I,m)}else switch(t){case 4:return!1;case 7:ep(I,m)}return c?-1:n||r?r:I}},rp={forEach:np(0),map:np(1),filter:np(2),some:np(3),every:np(4),find:np(5),findIndex:np(6),filterReject:np(7)},cp=j,dp=Ii,lp=d,op=Ot("species"),up=function(t){var i=cp(t),e=dp.f;lp&&i&&!i[op]&&e(i,op,{configurable:!0,get:function(){return this}})},sp=k,ap=R,mp=Lc,yp=function(t,i,e){var n,r;return mp&&sp(n=i.constructor)&&n!==e&&ap(r=n.prototype)&&r!==e.prototype&&mp(t,r),t},bp=Nn,pp=n,hp=u,Zp=d,Lp=xb,Xp=Xb,Ip=oy,Gp=_d,Kp=h,Wp=Ji,fp=Vb,Sp=Ae,xp=tm,wp=vb,Yp=ri,Vp=Ht,Tp=cd,gp=R,Hp=dt,vp=Yr,Pp=F,Cp=Lc,Jp=Re.f,kp=function(t){var i,e,n,r,c,d,l=Jb(this),o=kb(t),u=arguments.length,s=u>1?arguments[1]:void 0,a=void 0!==s,m=Db(o);if(m&&!Ub(m))for(d=(c=Rb(o,m)).next,o=[];!(r=Cb(d,c)).done;)o.push(r.value);for(a&&u>2&&(s=Pb(s,arguments[2])),e=Mb(o),n=new(Nb(l))(e),i=0;e>i;i++)n[i]=a?s(o[i],i):o[i];return n},Mp=rp.forEach,Rp=up,Dp=Ii,Up=r,Np=yp,jp=Ke.get,Fp=Ke.set,zp=Ke.enforce,Ep=Dp.f,Qp=Up.f,Op=Math.round,Bp=pp.RangeError,Ap=Ip.ArrayBuffer,qp=Ap.prototype,_p=Ip.DataView,$p=Xp.NATIVE_ARRAY_BUFFER_VIEWS,th=Xp.TYPED_ARRAY_TAG,ih=Xp.TypedArray,eh=Xp.TypedArrayPrototype,nh=Xp.aTypedArrayConstructor,rh=Xp.isTypedArray,ch="BYTES_PER_ELEMENT",dh="Wrong length",lh=function(t,i){nh(t);for(var e=0,n=i.length,r=new t(n);n>e;)r[e]=i[e++];return r},oh=function(t,i){Ep(t,i,{get:function(){return jp(this)[i]}})},uh=function(t){var i;return Pp(qp,t)||"ArrayBuffer"==(i=Tp(t))||"SharedArrayBuffer"==i},sh=function(t,i){return rh(t)&&!Hp(i)&&i in t&&fp(+i)&&i>=0},ah=function(t,i){return i=Yp(i),sh(t,i)?Kp(2,t[i]):Qp(t,i)},mh=function(t,i,e){return i=Yp(i),!(sh(t,i)&&gp(e)&&Vp(e,"value"))||Vp(e,"get")||Vp(e,"set")||e.configurable||Vp(e,"writable")&&!e.writable||Vp(e,"enumerable")&&!e.enumerable?Ep(t,i,e):(t[i]=e.value,t)};Zp?($p||(Up.f=ah,Dp.f=mh,oh(eh,"buffer"),oh(eh,"byteOffset"),oh(eh,"byteLength"),oh(eh,"length")),bp({target:"Object",stat:!0,forced:!$p},{getOwnPropertyDescriptor:ah,defineProperty:mh}),Ty.exports=function(t,i,e){var n=t.match(/\d+$/)[0]/8,r=t+(e?"Clamped":"")+"Array",c="get"+t,d="set"+t,l=pp[r],o=l,u=o&&o.prototype,s={},a=function(t,i){Ep(t,i,{get:function(){return function(t,i){var e=jp(t);return e.view[c](i*n+e.byteOffset,!0)}(this,i)},set:function(t){return function(t,i,r){var c=jp(t);e&&(r=0>(r=Op(r))?0:r>255?255:255&r),c.view[d](i*n+c.byteOffset,r,!0)}(this,i,t)},enumerable:!0})};$p?Lp&&(o=i((function(t,i,e,r){return Gp(t,u),Np(gp(i)?uh(i)?void 0!==r?new l(i,wp(e,n),r):void 0!==e?new l(i,wp(e,n)):new l(i):rh(i)?lh(o,i):hp(kp,o,i):new l(xp(i)),t,o)})),Cp&&Cp(o,ih),Mp(Jp(l),(function(t){t in o||Wp(o,t,l[t])})),o.prototype=u):(o=i((function(t,i,e,r){Gp(t,u);var c,d,l,s=0,m=0;if(gp(i)){if(!uh(i))return rh(i)?lh(o,i):hp(kp,o,i);c=i,m=wp(e,n);var y=i.byteLength;if(void 0===r){if(y%n)throw Bp(dh);if(0>(d=y-m))throw Bp(dh)}else if((d=Sp(r)*n)+m>y)throw Bp(dh);l=d/n}else l=xp(i),c=new Ap(d=l*n);for(Fp(t,{buffer:c,byteOffset:m,byteLength:d,length:l,view:new _p(c)});l>s;)a(t,s++)})),Cp&&Cp(o,ih),u=o.prototype=vp(eh)),u.constructor!==o&&Wp(u,"constructor",o),zp(u).TypedArrayConstructor=o,th&&Wp(u,th,r);var m=o!=l;s[r]=o,bp({global:!0,constructor:!0,forced:m,sham:!$p},s),ch in o||Wp(o,ch,n),ch in u||Wp(u,ch,n),Rp(r)}):Ty.exports=function(){},(0,Ty.exports)("Uint8",(function(t){return function(i,e,n){return t(this,i,e,n)}}));var yh=ot,bh=TypeError,ph=function(t,i){if(!delete t[i])throw bh("Cannot delete property "+yh(i)+" of "+yh(t))},hh=Vt,Zh=Qe,Lh=_e,Xh=ph,Ih=Math.min,Gh=[].copyWithin||function(t,i){var e=hh(this),n=Lh(e),r=Zh(t,n),c=Zh(i,n),d=arguments.length>2?arguments[2]:void 0,l=Ih((void 0===d?n:Zh(d,n))-c,n-r),o=1;for(r>c&&c+l>r&&(o=-1,c+=l-1,r+=l-1);l-- >0;)c in e?e[r]=e[c]:Xh(e,r),r+=o,c+=o;return e},Kh=Xb,Wh=K(Gh),fh=Kh.aTypedArray;(0,Kh.exportTypedArrayMethod)("copyWithin",(function(t,i){return Wh(fh(this),t,i,arguments.length>2?arguments[2]:void 0)}));var Sh=rp.every,xh=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("every",(function(t){return Sh(xh(this),t,arguments.length>1?arguments[1]:void 0)}));var wh=ii,Yh=TypeError,Vh=um,Th=function(t){var i=wh(t,"number");if("number"==typeof i)throw Yh("Can't convert number to bigint");return BigInt(i)},gh=cd,Hh=u,vh=c,Ph=Xb.aTypedArray,Ch=Xb.exportTypedArrayMethod,Jh=K("".slice);Ch("fill",(function(t){var i=arguments.length;Ph(this);var e="Big"===Jh(gh(this),0,3)?Th(t):+t;return Hh(Vh,this,e,i>1?arguments[1]:void 0,i>2?arguments[2]:void 0)}),vh((function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),1!==t})));var kh=_e,Mh=hy,Rh=Xb.aTypedArrayConstructor,Dh=Xb.getTypedArrayConstructor,Uh=function(t){return Rh(Mh(t,Dh(t)))},Nh=Uh,jh=rp.filter,Fh=function(t,i){return function(t,i){for(var e=0,n=kh(i),r=new t(n);n>e;)r[e]=i[e++];return r}(Nh(t),i)},zh=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("filter",(function(t){var i=jh(zh(this),t,arguments.length>1?arguments[1]:void 0);return Fh(this,i)}));var Eh=rp.find,Qh=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("find",(function(t){return Eh(Qh(this),t,arguments.length>1?arguments[1]:void 0)}));var Oh=rp.findIndex,Bh=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("findIndex",(function(t){return Oh(Bh(this),t,arguments.length>1?arguments[1]:void 0)}));var Ah=rp.forEach,qh=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("forEach",(function(t){Ah(qh(this),t,arguments.length>1?arguments[1]:void 0)}));var _h=rn.includes,$h=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("includes",(function(t){return _h($h(this),t,arguments.length>1?arguments[1]:void 0)}));var tZ=rn.indexOf,iZ=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("indexOf",(function(t){return tZ(iZ(this),t,arguments.length>1?arguments[1]:void 0)}));var eZ=n,nZ=c,rZ=K,cZ=Xb,dZ=Bc,lZ=Ot("iterator"),oZ=eZ.Uint8Array,uZ=rZ(dZ.values),sZ=rZ(dZ.keys),aZ=rZ(dZ.entries),mZ=cZ.aTypedArray,yZ=cZ.exportTypedArrayMethod,bZ=oZ&&oZ.prototype,pZ=!nZ((function(){bZ[lZ].call([1])})),hZ=!!bZ&&bZ.values&&bZ[lZ]===bZ.values&&"values"===bZ.values.name,ZZ=function(){return uZ(mZ(this))};yZ("entries",(function(){return aZ(mZ(this))}),pZ),yZ("keys",(function(){return sZ(mZ(this))}),pZ),yZ("values",ZZ,pZ||!hZ,{name:"values"}),yZ(lZ,ZZ,pZ||!hZ,{name:"values"});var LZ=Xb.aTypedArray,XZ=Xb.exportTypedArrayMethod,IZ=K([].join);XZ("join",(function(t){return IZ(LZ(this),t)}));var GZ=l,KZ=Function.prototype,WZ=KZ.apply,fZ=KZ.call,SZ="object"==typeof Reflect&&Reflect.apply||(GZ?fZ.bind(WZ):function(){return fZ.apply(WZ,arguments)}),xZ=c,wZ=function(t,i){var e=[][t];return!!e&&xZ((function(){e.call(null,i||function(){return 1},1)}))},YZ=SZ,VZ=J,TZ=je,gZ=_e,HZ=Math.min,vZ=[].lastIndexOf,PZ=!!vZ&&!1,CZ=wZ("lastIndexOf"),JZ=PZ||!CZ?function(t){if(PZ)return YZ(vZ,this,arguments)||0;var i=VZ(this),e=gZ(i),n=e-1;for(arguments.length>1&&(n=HZ(n,TZ(arguments[1]))),0>n&&(n=e+n);n>=0;n--)if(n in i&&i[n]===t)return n||0;return-1}:vZ,kZ=SZ,MZ=JZ,RZ=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("lastIndexOf",(function(t){var i=arguments.length;return kZ(MZ,RZ(this),i>1?[t,arguments[1]]:[t])}));var DZ=rp.map,UZ=Uh,NZ=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("map",(function(t){return DZ(NZ(this),t,arguments.length>1?arguments[1]:void 0,(function(t,i){return new(UZ(t))(i)}))}));var jZ=mt,FZ=Vt,zZ=g,EZ=_e,QZ=TypeError,OZ=function(t){return function(i,e,n,r){jZ(e);var c=FZ(i),d=zZ(c),l=EZ(c),o=t?l-1:0,u=t?-1:1;if(2>n)for(;;){if(o in d){r=d[o],o+=u;break}if(o+=u,t?0>o:o>=l)throw QZ("Reduce of empty array with no initial value")}for(;t?o>=0:l>o;o+=u)o in d&&(r=e(r,d[o],o,c));return r}},BZ={left:OZ(!1),right:OZ(!0)},AZ=BZ.left,qZ=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("reduce",(function(t){var i=arguments.length;return AZ(qZ(this),t,i,i>1?arguments[1]:void 0)}));var _Z=BZ.right,$Z=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("reduceRight",(function(t){var i=arguments.length;return _Z($Z(this),t,i,i>1?arguments[1]:void 0)}));var tL=Xb.aTypedArray,iL=Math.floor;(0,Xb.exportTypedArrayMethod)("reverse",(function(){for(var t,i=this,e=tL(i).length,n=iL(e/2),r=0;n>r;)t=i[r],i[r++]=i[--e],i[e]=t;return i}));var eL=n,nL=u,rL=Xb,cL=_e,dL=vb,lL=Vt,oL=c,uL=eL.RangeError,sL=eL.Int8Array,aL=sL&&sL.prototype,mL=aL&&aL.set,yL=rL.aTypedArray,bL=rL.exportTypedArrayMethod,pL=!oL((function(){var t=new Uint8ClampedArray(2);return nL(mL,t,{length:1,0:3},1),3!==t[1]})),hL=pL&&rL.NATIVE_ARRAY_BUFFER_VIEWS&&oL((function(){var t=new sL(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));bL("set",(function(t){yL(this);var i=dL(arguments.length>1?arguments[1]:void 0,1),e=lL(t);if(pL)return nL(mL,this,e,i);var n=this.length,r=cL(e),c=0;if(r+i>n)throw uL("Wrong length");for(;r>c;)this[i+c]=e[c++]}),!pL||hL);var ZL=K([].slice),LL=Uh,XL=ZL,IL=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("slice",(function(t,i){for(var e=XL(IL(this),t,i),n=LL(this),r=0,c=e.length,d=new n(c);c>r;)d[r]=e[r++];return d}),c((function(){new Int8Array(1).slice()})));var GL=rp.some,KL=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("some",(function(t){return GL(KL(this),t,arguments.length>1?arguments[1]:void 0)}));var WL=z.match(/firefox\/(\d+)/i),fL=!!WL&&+WL[1],SL=/MSIE|Trident/.test(z),xL=z.match(/AppleWebKit\/(\d+)\./),wL=!!xL&&+xL[1],YL=K,VL=c,TL=mt,gL=go,HL=fL,vL=SL,PL=_,CL=wL,JL=Xb.aTypedArray,kL=Xb.exportTypedArrayMethod,ML=n.Uint16Array,RL=ML&&YL(ML.prototype.sort),DL=!(!RL||VL((function(){RL(new ML(2),null)}))&&VL((function(){RL(new ML(2),{})}))),UL=!!RL&&!VL((function(){if(PL)return 74>PL;if(HL)return 67>HL;if(vL)return!0;if(CL)return 602>CL;var t,i,e=new ML(516),n=Array(516);for(t=0;516>t;t++)i=t%4,e[t]=515-t,n[t]=t-2*i+3;for(RL(e,(function(t,i){return(t/4|0)-(i/4|0)})),t=0;516>t;t++)if(e[t]!==n[t])return!0}));kL("sort",(function(t){return void 0!==t&&TL(t),UL?RL(this,t):gL(JL(this),function(t){return function(i,e){return void 0!==t?+t(i,e)||0:e!=e?-1:i!=i?1:0===i&&0===e?1/i>0&&0>1/e?1:-1:i>e}}(t))}),!UL||DL);var NL=Ae,jL=Qe,FL=Uh,zL=Xb.aTypedArray;(0,Xb.exportTypedArrayMethod)("subarray",(function(t,i){var e=zL(this),n=e.length,r=jL(t,n);return new(FL(e))(e.buffer,e.byteOffset+r*e.BYTES_PER_ELEMENT,NL((void 0===i?n:jL(i,n))-r))}));var EL=SZ,QL=Xb,OL=c,BL=ZL,AL=n.Int8Array,qL=QL.aTypedArray,_L=QL.exportTypedArrayMethod,$L=[].toLocaleString,tX=!!AL&&OL((function(){$L.call(new AL(1))}));_L("toLocaleString",(function(){return EL($L,tX?BL(qL(this)):qL(this),BL(arguments))}),OL((function(){return[1,2].toLocaleString()!=new AL([1,2]).toLocaleString()}))||!OL((function(){AL.prototype.toLocaleString.call([1,2])})));var iX=Xb.exportTypedArrayMethod,eX=c,nX=K,rX=n.Uint8Array,cX=rX&&rX.prototype||{},dX=[].toString,lX=nX([].join);eX((function(){dX.call({})}))&&(dX=function(){return lX(this)});var oX=cX.toString!=dX;function uX(t,i,e){return function(){function r(n){Pa(this,r);var c=this;c.codec=new t(Object.assign({},i,n)),e(c.codec,(function(t){if(c.pendingData){var i=c.pendingData;c.pendingData=new Uint8Array(i.length+t.length),c.pendingData.set(i,0),c.pendingData.set(t,i.length)}else c.pendingData=new Uint8Array(t)}))}return Ja(r,[{key:"append",value:function(t){return this.codec.push(t),n(this)}},{key:"flush",value:function(){return this.codec.push(new Uint8Array(0),!0),n(this)}}]),r}();function n(t){if(t.pendingData){var i=t.pendingData;return t.pendingData=null,i}return new Uint8Array(0)}}iX("toString",dX,oX);var sX=Nn,aX=rp.find,mX=kr,yX="find",bX=!0;yX in[]&&[,].find((function(){bX=!1})),sX({target:"Array",proto:!0,forced:bX},{find:function(t){return aX(this,t,arguments.length>1?arguments[1]:void 0)}}),mX(yX);var pX,hX,ZX,LX,XX="process"==x(n.process),IX=/(?:ipad|iphone|ipod).*applewebkit/i.test(z),GX=n,KX=SZ,WX=Qd,fX=k,SX=Ht,xX=c,wX=hr,YX=ZL,VX=oi,TX=Wo,gX=IX,HX=XX,vX=GX.setImmediate,PX=GX.clearImmediate,CX=GX.process,JX=GX.Dispatch,kX=GX.Function,MX=GX.MessageChannel,RX=GX.String,DX=0,UX={};try{pX=GX.location}catch(t){}var NX=function(t){if(SX(UX,t)){var i=UX[t];delete UX[t],i()}},jX=function(t){return function(){NX(t)}},FX=function(t){NX(t.data)},zX=function(t){GX.postMessage(RX(t),pX.protocol+"//"+pX.host)};vX&&PX||(vX=function(t){TX(arguments.length,1);var i=fX(t)?t:kX(t),e=YX(arguments,1);return UX[++DX]=function(){KX(i,void 0,e)},hX(DX),DX},PX=function(t){delete UX[t]},HX?hX=function(t){CX.nextTick(jX(t))}:JX&&JX.now?hX=function(t){JX.now(jX(t))}:MX&&!gX?(LX=(ZX=new MX).port2,ZX.port1.onmessage=FX,hX=WX(LX.postMessage,LX)):GX.addEventListener&&fX(GX.postMessage)&&!GX.importScripts&&pX&&"file:"!==pX.protocol&&!xX(zX)?(hX=zX,GX.addEventListener("message",FX,!1)):hX="onreadystatechange"in VX("script")?function(t){wX.appendChild(VX("script")).onreadystatechange=function(){wX.removeChild(this),NX(t)}}:function(t){setTimeout(jX(t),0)});var EX,QX,OX,BX,AX,qX,_X,$X,tI={set:vX,clear:PX},iI=n,eI=/ipad|iphone|ipod/i.test(z)&&void 0!==iI.Pebble,nI=/web0s(?!.*chrome)/i.test(z),rI=n,cI=Qd,dI=r.f,lI=tI.set,oI=IX,uI=eI,sI=nI,aI=XX,mI=rI.MutationObserver||rI.WebKitMutationObserver,yI=rI.document,bI=rI.process,pI=rI.Promise,hI=dI(rI,"queueMicrotask"),ZI=hI&&hI.value;ZI||(EX=function(){var t,i;for(aI&&(t=bI.domain)&&t.exit();QX;){i=QX.fn,QX=QX.next;try{i()}catch(t){throw QX?BX():OX=void 0,t}}OX=void 0,t&&t.enter()},oI||aI||sI||!mI||!yI?!uI&&pI&&pI.resolve?((_X=pI.resolve(void 0)).constructor=pI,$X=cI(_X.then,_X),BX=function(){$X(EX)}):aI?BX=function(){bI.nextTick(EX)}:(lI=cI(lI,rI),BX=function(){lI(EX)}):(AX=!0,qX=yI.createTextNode(""),new mI(EX).observe(qX,{characterData:!0}),BX=function(){qX.data=AX=!AX}));var LI=ZI||function(t){var i={fn:t,next:void 0};OX&&(OX.next=i),QX||(QX=i,BX()),OX=i},XI=n,II=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},GI=function(){this.head=null,this.tail=null};GI.prototype={add:function(t){var i={item:t,next:null};this.head?this.tail.next=i:this.head=i,this.tail=i},get:function(){var t=this.head;if(t)return this.head=t.next,this.tail===t&&(this.tail=null),t.item}};var KI=GI,WI=n.Promise,fI="object"==typeof window&&"object"!=typeof Deno,SI=n,xI=WI,wI=k,YI=Pn,VI=Bi,TI=Ot,gI=fI,HI=_;xI&&xI.prototype;var vI=TI("species"),PI=!1,CI=wI(SI.PromiseRejectionEvent),JI=YI("Promise",(function(){var t=VI(xI),i=t!==xI+"";if(!i&&66===HI)return!0;if(HI>=51&&/native code/.test(t))return!1;var e=new xI((function(t){t(1)})),n=function(t){t((function(){}),(function(){}))};return(e.constructor={})[vI]=n,!(PI=e.then((function(){}))instanceof n)||!i&&gI&&!CI})),kI={CONSTRUCTOR:JI,REJECTION_EVENT:CI,SUBCLASSING:PI},MI={},RI=mt,DI=function(t){var i,e;this.promise=new t((function(t,n){if(void 0!==i||void 0!==e)throw TypeError("Bad Promise constructor");i=t,e=n})),this.resolve=RI(i),this.reject=RI(e)};MI.f=function(t){return new DI(t)};var UI,NI,jI,FI=Nn,zI=XX,EI=n,QI=u,OI=Me,BI=Lc,AI=cc,qI=up,_I=mt,$I=k,tG=R,iG=_d,eG=hy,nG=tI.set,rG=LI,cG=II,dG=KI,lG=Ke,oG=WI,uG=MI,sG="Promise",aG=kI.CONSTRUCTOR,mG=kI.REJECTION_EVENT,yG=kI.SUBCLASSING,bG=lG.getterFor(sG),pG=lG.set,hG=oG&&oG.prototype,ZG=oG,LG=hG,XG=EI.TypeError,IG=EI.document,GG=EI.process,KG=uG.f,WG=KG,fG=!!(IG&&IG.createEvent&&EI.dispatchEvent),SG="unhandledrejection",xG=function(t){var i;return!(!tG(t)||!$I(i=t.then))&&i},wG=function(t,i){var e,n,r,c=i.value,d=1==i.state,l=d?t.ok:t.fail,o=t.resolve,u=t.reject,s=t.domain;try{l?(d||(2===i.rejection&&HG(i),i.rejection=1),!0===l?e=c:(s&&s.enter(),e=l(c),s&&(s.exit(),r=!0)),e===t.promise?u(XG("Promise-chain cycle")):(n=xG(e))?QI(n,e,o,u):o(e)):u(c)}catch(t){s&&!r&&s.exit(),u(t)}},YG=function(t,i){t.notified||(t.notified=!0,rG((function(){for(var e,n=t.reactions;e=n.get();)wG(e,t);t.notified=!1,i&&!t.rejection&&TG(t)})))},VG=function(t,i,e){var n,r;fG?((n=IG.createEvent("Event")).promise=i,n.reason=e,n.initEvent(t,!1,!0),EI.dispatchEvent(n)):n={promise:i,reason:e},!mG&&(r=EI["on"+t])?r(n):t===SG&&function(t,i){var e=XI.console;e&&e.error&&(1==arguments.length?e.error(t):e.error(t,i))}("Unhandled promise rejection",e)},TG=function(t){QI(nG,EI,(function(){var i,e=t.facade,n=t.value;if(gG(t)&&(i=cG((function(){zI?GG.emit("unhandledRejection",n,e):VG(SG,e,n)})),t.rejection=zI||gG(t)?2:1,i.error))throw i.value}))},gG=function(t){return 1!==t.rejection&&!t.parent},HG=function(t){QI(nG,EI,(function(){var i=t.facade;zI?GG.emit("rejectionHandled",i):VG("rejectionhandled",i,t.value)}))},vG=function(t,i,e){return function(n){t(i,n,e)}},PG=function(t,i,e){t.done||(t.done=!0,e&&(t=e),t.value=i,t.state=2,YG(t,!0))},CG=function(t,i,e){if(!t.done){t.done=!0,e&&(t=e);try{if(t.facade===i)throw XG("Promise can't be resolved itself");var n=xG(i);n?rG((function(){var e={done:!1};try{QI(n,i,vG(CG,e,t),vG(PG,e,t))}catch(i){PG(e,i,t)}})):(t.value=i,t.state=1,YG(t,!1))}catch(i){PG({done:!1},i,t)}}};if(aG&&(LG=(ZG=function(t){iG(this,LG),_I(t),QI(UI,this);var i=bG(this);try{t(vG(CG,i),vG(PG,i))}catch(t){PG(i,t)}}).prototype,(UI=function(){pG(this,{type:sG,done:!1,notified:!1,parent:!1,reactions:new dG,rejection:!1,state:0,value:void 0})}).prototype=OI(LG,"then",(function(t,i){var e=bG(this),n=KG(eG(this,ZG));return e.parent=!0,n.ok=!$I(t)||t,n.fail=$I(i)&&i,n.domain=zI?GG.domain:void 0,0==e.state?e.reactions.add(n):rG((function(){wG(n,e)})),n.promise})),NI=function(){var t=new UI,i=bG(t);this.promise=t,this.resolve=vG(CG,i),this.reject=vG(PG,i)},uG.f=KG=function(t){return t===ZG||void 0===t?new NI(t):WG(t)},$I(oG)&&hG!==Object.prototype)){jI=hG.then,yG||OI(hG,"then",(function(t,i){var e=this;return new ZG((function(t,i){QI(jI,e,t,i)})).then(t,i)}),{unsafe:!0});try{delete hG.constructor}catch(t){}BI&&BI(hG,LG)}FI({global:!0,constructor:!0,wrap:!0,forced:aG},{Promise:ZG}),AI(ZG,sG,!1),qI(sG);var JG=Qd,kG=u,MG=Si,RG=ot,DG=ol,UG=_e,NG=F,jG=Ml,FG=gl,zG=el,EG=TypeError,QG=function(t,i){this.stopped=t,this.result=i},OG=QG.prototype,BG=function(t,i,e){var n,r,c,d,l,o,u,s=e&&e.that,a=!(!e||!e.AS_ENTRIES),m=!(!e||!e.IS_ITERATOR),y=!(!e||!e.INTERRUPTED),b=JG(i,s),p=function(t){return n&&zG(n,"normal",t),new QG(!0,t)},h=function(t){return a?(MG(t),y?b(t[0],t[1],p):b(t[0],t[1])):y?b(t,p):b(t)};if(m)n=t;else{if(!(r=FG(t)))throw EG(RG(t)+" is not iterable");if(DG(r)){for(c=0,d=UG(t);d>c;c++)if((l=h(t[c]))&&NG(OG,l))return l;return new QG(!1)}n=jG(t,r)}for(o=n.next;!(u=kG(o,n)).done;){try{l=h(u.value)}catch(t){zG(n,"throw",t)}if("object"==typeof l&&l&&NG(OG,l))return l}return new QG(!1)},AG=WI,qG=kI.CONSTRUCTOR||!My((function(t){AG.all(t).then(void 0,(function(){}))})),_G=u,$G=mt,tK=MI,iK=II,eK=BG;Nn({target:"Promise",stat:!0,forced:qG},{all:function(t){var i=this,e=tK.f(i),n=e.resolve,r=e.reject,c=iK((function(){var e=$G(i.resolve),c=[],d=0,l=1;eK(t,(function(t){var o=d++,u=!1;l++,_G(e,i,t).then((function(t){u||(u=!0,c[o]=t,--l||n(c))}),r)})),--l||n(c)}));return c.error&&r(c.value),e.promise}});var nK=Nn,rK=kI.CONSTRUCTOR,cK=WI,dK=j,lK=k,oK=Me,uK=cK&&cK.prototype;if(nK({target:"Promise",proto:!0,forced:rK,real:!0},{catch:function(t){return this.then(void 0,t)}}),lK(cK)){var sK=dK("Promise").prototype.catch;uK.catch!==sK&&oK(uK,"catch",sK,{unsafe:!0})}var aK=u,mK=mt,yK=MI,bK=II,pK=BG;Nn({target:"Promise",stat:!0,forced:qG},{race:function(t){var i=this,e=yK.f(i),n=e.reject,r=bK((function(){var r=mK(i.resolve);pK(t,(function(t){aK(r,i,t).then(e.resolve,n)}))}));return r.error&&n(r.value),e.promise}});var hK=u,ZK=MI;Nn({target:"Promise",stat:!0,forced:kI.CONSTRUCTOR},{reject:function(t){var i=ZK.f(this);return hK(i.reject,void 0,t),i.promise}});var LK=Si,XK=R,IK=MI,GK=Nn,KK=kI.CONSTRUCTOR;j("Promise"),GK({target:"Promise",stat:!0,forced:KK},{resolve:function(t){return function(t,i){if(LK(t),XK(i)&&i.constructor===t)return i;var e=IK.f(t);return(0,e.resolve)(i),e.promise}(this,t)}});var WK=TypeError,fK=function(t){if(t>9007199254740991)throw WK("Maximum allowed index exceeded");return t},SK=c,xK=_,wK=Ot("species"),YK=function(t){return xK>=51||!SK((function(){var i=[];return(i.constructor={})[wK]=function(){return{foo:1}},1!==i[t](Boolean).foo}))},VK=Nn,TK=Vt,gK=Qe,HK=je,vK=_e,PK=fK,CK=Ab,JK=xl,kK=ph,MK=YK("splice"),RK=Math.max,DK=Math.min;VK({target:"Array",proto:!0,forced:!MK},{splice:function(t,i){var e,n,r,c,d,l,o=TK(this),u=vK(o),s=gK(t,u),a=arguments.length;for(0===a?e=n=0:1===a?(e=0,n=u-s):(e=a-2,n=DK(RK(HK(i),0),u-s)),PK(u+e-n),r=CK(o,n),c=0;n>c;c++)(d=s+c)in o&&JK(r,c,o[d]);if(r.length=n,n>e){for(c=s;u-n>c;c++)l=c+e,(d=c+n)in o?o[l]=o[d]:kK(o,l);for(c=u;c>u-n+e;c--)kK(o,c-1)}else if(e>n)for(c=u-n;c>s;c--)l=c+e-1,(d=c+n-1)in o?o[l]=o[d]:kK(o,l);for(c=0;e>c;c++)o[c+s]=arguments[c+2];return o.length=u-n+e,r}});var UK=n.isFinite;Nn({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&UK(t)}});var NK=K(1..valueOf),jK=v,FK=ud,zK=K("".replace),EK=/^[ \n\r \u2028\u2029][ \n\r \u2028\u2029]*/,QK=/[ \n\r \u2028\u2029][ \n\r \u2028\u2029]*$/,OK=function(t){return function(i){var e=FK(jK(i));return 1&t&&(e=zK(e,EK,"")),2&t&&(e=zK(e,QK,"")),e}},BK={start:OK(1),end:OK(2),trim:OK(3)},AK=d,qK=n,_K=K,$K=Pn,tW=Me,iW=Ht,eW=yp,nW=F,rW=dt,cW=ii,dW=c,lW=Re.f,oW=r.f,uW=Ii.f,sW=NK,aW=BK.trim,mW="Number",yW=qK.Number,bW=yW.prototype,pW=qK.TypeError,hW=_K("".slice),ZW=_K("".charCodeAt),LW=function(t){var i=cW(t,"number");return"bigint"==typeof i?i:XW(i)},XW=function(t){var i,e,n,r,c,d,l,o,u=cW(t,"number");if(rW(u))throw pW("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=aW(u),43===(i=ZW(u,0))||45===i){if(88===(e=ZW(u,2))||120===e)return NaN}else if(48===i){switch(ZW(u,1)){case 66:case 98:n=2,r=49;break;case 79:case 111:n=8,r=55;break;default:return+u}for(d=(c=hW(u,2)).length,l=0;d>l;l++)if(48>(o=ZW(c,l))||o>r)return NaN;return parseInt(c,n)}return+u};if($K(mW,!yW(" 0o1")||!yW("0b1")||yW("+0x1"))){for(var IW,GW=function(t){var i=1>arguments.length?0:yW(LW(t)),e=this;return nW(bW,e)&&dW((function(){sW(e)}))?eW(Object(i),e,GW):i},KW=AK?lW(yW):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),WW=0;KW.length>WW;WW++)iW(yW,IW=KW[WW])&&!iW(GW,IW)&&uW(GW,IW,oW(yW,IW));GW.prototype=bW,bW.constructor=GW,tW(qK,mW,GW,{constructor:!0})}var fW=rp.filter;Nn({target:"Array",proto:!0,forced:!YK("filter")},{filter:function(t){return fW(this,t,arguments.length>1?arguments[1]:void 0)}});var SW=rp.forEach,xW=wZ("forEach")?[].forEach:function(t){return SW(this,t,arguments.length>1?arguments[1]:void 0)},wW=n,YW=xd,VW=Vd,TW=xW,gW=Ji,HW=function(t){if(t&&t.forEach!==TW)try{gW(t,"forEach",TW)}catch(i){t.forEach=TW}};for(var vW in YW)YW[vW]&&HW(wW[vW]&&wW[vW].prototype);HW(VW);const PW=function(){function t(){}return t.prototype.then=function(i,e){const n=new t,r=this.s;if(r){const t=1&r?i:e;if(t){try{CW(n,1,t(this.v))}catch(t){CW(n,2,t)}return n}return this}return this.o=function(t){try{const r=t.v;1&t.s?CW(n,1,i?i(r):r):e?CW(n,1,e(r)):CW(n,2,r)}catch(t){CW(n,2,t)}},n},t}();function CW(t,i,e){if(!t.s){if(e instanceof PW){if(!e.s)return void(e.o=CW.bind(null,t,i));1&i&&(i=e.s),e=e.v}if(e&&e.then)return void e.then(CW.bind(null,t,i),CW.bind(null,t,2));t.s=i,t.v=e;const n=t.o;n&&n(t)}}function JW(t){return t instanceof PW&&1&t.s}function kW(t){return function(){for(var i=[],e=0;arguments.length>e;e++)i[e]=arguments[e];try{return Promise.resolve(t.apply(this,i))}catch(t){return Promise.reject(t)}}}function MW(t,i,e){return e?i?i(t):t:(t&&t.then||(t=Promise.resolve(t)),i?t.then(i):t)}function RW(t,i){if(!i)return t&&t.then?t.then(_W):Promise.resolve()}function DW(t,i){return t&&t.then?t.then(i):i(t)}function UW(t){if(t&&t.then)return t.then(_W)}const NW="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol()):"@@iterator";function jW(t,i,e){if("function"==typeof t[NW]){var n,r,c,d=t[NW]();function s(t){try{for(;!((n=d.next()).done||e&&e());)if((t=i(n.value))&&t.then){if(!JW(t))return void t.then(s,c||(c=CW.bind(null,r=new PW,2)));t=t.v}r?CW(r,1,t):r=t}catch(t){CW(r||(r=new PW),2,t)}}if(s(),d.return){var l=function(t){try{n.done||d.return()}catch(t){}return t};if(r&&r.then)return r.then(l,(function(t){throw l(t)}));l()}return r}if(!("length"in t))throw new TypeError("Object is not iterable");for(var o=[],u=0;u<t.length;u++)o.push(t[u]);return function(t,i,e){var n,r,c=-1;return function d(l){try{for(;++c<t.length&&(!e||!e());)if((l=i(c))&&l.then){if(!JW(l))return void l.then(d,r||(r=CW.bind(null,n=new PW,2)));l=l.v}n?CW(n,1,l):n=l}catch(t){CW(n||(n=new PW),2,t)}}(),n}(o,(function(t){return i(o[t])}),e)}function FW(t,i,e){for(var n;;){var r=t();if(JW(r)&&(r=r.v),!r)return c;if(r.then){n=0;break}var c=e();if(c&&c.then){if(!JW(c)){n=1;break}c=c.s}if(i){var d=i();if(d&&d.then&&!JW(d)){n=2;break}}}var l=new PW,o=CW.bind(null,l,2);return(0===n?r.then(s):1===n?c.then(u):d.then(a)).then(void 0,o),l;function u(n){c=n;do{if(i&&(d=i())&&d.then&&!JW(d))return void d.then(a).then(void 0,o);if(!(r=t())||JW(r)&&!r.v)return void CW(l,1,c);if(r.then)return void r.then(s).then(void 0,o);JW(c=e())&&(c=c.v)}while(!c||!c.then);c.then(u).then(void 0,o)}function s(t){t?(c=e())&&c.then?c.then(u).then(void 0,o):u(c):CW(l,1,c)}function a(){(r=t())?r.then?r.then(s).then(void 0,o):s(r):CW(l,1,c)}}function zW(t,i){var e;do{var n=t();if(n&&n.then){if(!JW(n)){e=!0;break}n=n.v}var r=i();if(JW(r)&&(r=r.v),!r)return n}while(!r.then);const c=new PW,d=CW.bind(null,c,2);return(e?n.then(l):r.then(o)).then(void 0,d),c;function l(e){for(n=e;JW(r=i())&&(r=r.v),r;){if(r.then)return void r.then(o).then(void 0,d);if((n=t())&&n.then){if(!JW(n))return void n.then(l).then(void 0,d);n=n.v}}CW(c,1,n)}function o(e){if(e){do{if((n=t())&&n.then){if(!JW(n))return void n.then(l).then(void 0,d);n=n.v}if(JW(e=i())&&(e=e.v),!e)return void CW(c,1,n)}while(!e.then);e.then(o).then(void 0,d)}else CW(c,1,n)}}function EW(t,i){return function(t,i,e){if(e)return i?i(t()):t();try{var n=Promise.resolve(t());return i?n.then(i):n}catch(t){return Promise.reject(t)}}(t,_W,i)}function QW(t,i){var e=t();return e&&e.then?e.then(i):i(e)}function OW(t){var i=t();if(i&&i.then)return i.then(_W)}function BW(t,i){try{var e=t()}catch(t){return i(t)}return e&&e.then?e.then(void 0,i):e}function AW(t,i){try{var e=t()}catch(t){return i(!0,t)}return e&&e.then?e.then(i.bind(null,!1),i.bind(null,!0)):i(!1,e)}function qW(t,i){if(t)throw i;return i}function _W(){}"undefined"==typeof Symbol||Symbol.asyncIterator||(Symbol.asyncIterator=Symbol());var $W,tf=R,ef=x,nf=Ot("match"),rf=function(t){var i;return tf(t)&&(void 0!==(i=t[nf])?!!i:"RegExp"==ef(t))},cf=rf,df=TypeError,lf=function(t){if(cf(t))throw df("The method doesn't accept regular expressions");return t},of=Ot("match"),uf=function(t){var i=/./;try{"/./"[t](i)}catch(e){try{return i[of]=!1,"/./"[t](i)}catch(t){}}return!1},sf=Nn,af=K,mf=r.f,yf=Ae,bf=ud,pf=lf,hf=v,Zf=uf,Lf=af("".startsWith),Xf=af("".slice),If=Math.min,Gf=Zf("startsWith");sf({target:"String",proto:!0,forced:!(!Gf&&($W=mf(String.prototype,"startsWith"),$W&&!$W.writable)||Gf)},{startsWith:function(t){var i=bf(hf(this));pf(t);var e=yf(If(arguments.length>1?arguments[1]:void 0,i.length)),n=bf(t);return Lf?Lf(i,n,e):Xf(i,e,e+n.length)===n}});for(var Kf=[],Wf=0;256>Wf;Wf++){for(var ff=Wf,Sf=0;8>Sf;Sf++)1&ff?ff=ff>>>1^3988292384:ff>>>=1;Kf[Wf]=ff}var xf=function(){function t(i){Pa(this,t),this.crc=i||-1}return Ja(t,[{key:"append",value:function(t){for(var i=0|this.crc,e=0,n=0|t.length;n>e;e++)i=i>>>8^Kf[255&(i^t[e])];this.crc=i}},{key:"get",value:function(){return~this.crc}}]),t}(),wf=Al;function Yf(t){if("undefined"==typeof TextEncoder){t=unescape(encodeURIComponent(t));for(var i=new Uint8Array(t.length),e=0;e<i.length;e++)i[e]=t.charCodeAt(e);return i}return(new TextEncoder).encode(t)}Nn({target:"Array",stat:!0,forced:!My((function(t){Array.from(t)}))},{from:wf});var Vf=Nn,Tf=c,gf=Fb,Hf=R,vf=Vt,Pf=_e,Cf=fK,Jf=xl,kf=Ab,Mf=YK,Rf=_,Df=Ot("isConcatSpreadable"),Uf=Rf>=51||!Tf((function(){var t=[];return t[Df]=!1,t.concat()[0]!==t})),Nf=Mf("concat"),jf=function(t){if(!Hf(t))return!1;var i=t[Df];return void 0!==i?!!i:gf(t)};Vf({target:"Array",proto:!0,arity:1,forced:!Uf||!Nf},{concat:function(){var t,i,e,n,r,c=vf(this),d=kf(c,0),l=0;for(t=-1,e=arguments.length;e>t;t++)if(jf(r=-1===t?c:arguments[t]))for(n=Pf(r),Cf(l+n),i=0;n>i;i++,l++)i in r&&Jf(d,l,r[i]);else Cf(l+1),Jf(d,l++,r);return d.length=l,d}});var Ff=Nn,zf=Fb,Ef=Kl,Qf=R,Of=Qe,Bf=_e,Af=J,qf=xl,_f=Ot,$f=ZL,tS=YK("slice"),iS=_f("species"),eS=Array,nS=Math.max;Ff({target:"Array",proto:!0,forced:!tS},{slice:function(t,i){var e,n,r,c=Af(this),d=Bf(c),l=Of(t,d),o=Of(void 0===i?d:i,d);if(zf(c)&&(e=c.constructor,(Ef(e)&&(e===eS||zf(e.prototype))||Qf(e)&&null===(e=e[iS]))&&(e=void 0),e===eS||void 0===e))return $f(c,l,o);for(n=new(void 0===e?eS:e)(nS(o-l,0)),r=0;o>l;l++,r++)l in c&&qf(n,r,c[l]);return n.length=r,n}}),(0,Ty.exports)("Uint32",(function(t){return function(i,e,n){return t(this,i,e,n)}}));var rS=up,cS=oy.ArrayBuffer;Nn({global:!0,constructor:!0,forced:n.ArrayBuffer!==cS},{ArrayBuffer:cS}),rS("ArrayBuffer");var dS={concat:function(t,i){if(0===t.length||0===i.length)return t.concat(i);var e=t[t.length-1],n=dS.getPartial(e);return 32===n?t.concat(i):dS._shiftRight(i,n,0|e,t.slice(0,t.length-1))},bitLength:function(t){var i=t.length;if(0===i)return 0;var e=t[i-1];return 32*(i-1)+dS.getPartial(e)},clamp:function(t,i){if(32*t.length<i)return t;var e=(t=t.slice(0,Math.ceil(i/32))).length;return i&=31,e>0&&i&&(t[e-1]=dS.partial(i,t[e-1]&2147483648>>i-1,1)),t},partial:function(t,i,e){return 32===t?i:(e?0|i:i<<32-t)+1099511627776*t},getPartial:function(t){return Math.round(t/1099511627776)||32},_shiftRight:function(t,i,e,n){for(void 0===n&&(n=[]);i>=32;i-=32)n.push(e),e=0;if(0===i)return n.concat(t);for(var r=0;r<t.length;r++)n.push(e|t[r]>>>i),e=t[r]<<32-i;var c=t.length?t[t.length-1]:0,d=dS.getPartial(c);return n.push(dS.partial(i+d&31,i+d>32?e:n.pop(),1)),n}},lS={bytes:{fromBits:function(t){for(var i,e=dS.bitLength(t)/8,n=new Uint8Array(e),r=0;e>r;r++)0==(3&r)&&(i=t[r/4]),n[r]=i>>>24,i<<=8;return n},toBits:function(t){var i,e=[],n=0;for(i=0;i<t.length;i++)n=n<<8|t[i],3==(3&i)&&(e.push(n),n=0);return 3&i&&e.push(dS.partial(8*(3&i),n)),e}}},oS={sha1:function(t){t?(this._h=t._h.slice(0),this._buffer=t._buffer.slice(0),this._length=t._length):this.reset()}};oS.sha1.prototype={blockSize:512,reset:function(){var t=this;return t._h=this._init.slice(0),t._buffer=[],t._length=0,t},update:function(t){var i=this;"string"==typeof t&&(t=lS.utf8String.toBits(t));var e=i._buffer=dS.concat(i._buffer,t),n=i._length,r=i._length=n+dS.bitLength(t);if(r>9007199254740991)throw Error("Cannot hash more than 2^53 - 1 bits");for(var c=new Uint32Array(e),d=0,l=i.blockSize+n-(i.blockSize+n&i.blockSize-1);r>=l;l+=i.blockSize)i._block(c.subarray(16*d,16*(d+1))),d+=1;return e.splice(0,16*d),i},finalize:function(){for(var t=this,i=t._buffer,e=t._h,n=(i=dS.concat(i,[dS.partial(1,1)])).length+2;15&n;n++)i.push(0);for(i.push(Math.floor(t._length/4294967296)),i.push(0|t._length);i.length;)t._block(i.splice(0,16));return t.reset(),e},_init:[1732584193,4023233417,2562383102,271733878,3285377520],_key:[1518500249,1859775393,2400959708,3395469782],_f:function(t,i,e,n){return t>19?t>39?t>59?t>79?void 0:i^e^n:i&e|i&n|e&n:i^e^n:i&e|~i&n},_S:function(t,i){return i<<t|i>>>32-t},_block:function(t){for(var i=this,e=i._h,n=Array(80),r=0;16>r;r++)n[r]=t[r];for(var c=e[0],d=e[1],l=e[2],o=e[3],u=e[4],s=0;79>=s;s++){16>s||(n[s]=i._S(1,n[s-3]^n[s-8]^n[s-14]^n[s-16]));var a=i._S(5,c)+i._f(s,d,l,o)+u+n[s]+i._key[Math.floor(s/20)]|0;u=o,o=l,l=i._S(30,d),d=c,c=a}e[0]=e[0]+c|0,e[1]=e[1]+d|0,e[2]=e[2]+l|0,e[3]=e[3]+o|0,e[4]=e[4]+u|0}};var uS={};uS.aes=function(){function t(i){Pa(this,t);var e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();var n,r,c,d=e._tables[0][4],l=e._tables[1],o=i.length,u=1;if(4!==o&&6!==o&&8!==o)throw Error("invalid aes key size");for(e._key=[r=i.slice(0),c=[]],n=o;4*o+28>n;n++){var s=r[n-1];(n%o==0||8===o&&n%o==4)&&(s=d[s>>>24]<<24^d[s>>16&255]<<16^d[s>>8&255]<<8^d[255&s],n%o==0&&(s=s<<8^s>>>24^u<<24,u=u<<1^283*(u>>7))),r[n]=r[n-o]^s}for(var a=0;n;a++,n--){var m=r[3&a?n:n-4];c[a]=4>=n||4>a?m:l[0][d[m>>>24]]^l[1][d[m>>16&255]]^l[2][d[m>>8&255]]^l[3][d[255&m]]}}return Ja(t,[{key:"encrypt",value:function(t){return this._crypt(t,0)}},{key:"decrypt",value:function(t){return this._crypt(t,1)}},{key:"_precompute",value:function(){for(var t,i,e,n=this._tables[0],r=this._tables[1],c=n[4],d=r[4],l=[],o=[],u=0;256>u;u++)o[(l[u]=u<<1^283*(u>>7))^u]=u;for(var s=t=0;!c[s];s^=i||1,t=o[t]||1){var a=t^t<<1^t<<2^t<<3^t<<4;a=a>>8^255&a^99,c[s]=a,d[a]=s;for(var m=16843009*l[e=l[i=l[s]]]^65537*e^257*i^16843008*s,y=257*l[a]^16843008*a,b=0;4>b;b++)n[b][s]=y=y<<24^y>>>8,r[b][a]=m=m<<24^m>>>8}for(var p=0;5>p;p++)n[p]=n[p].slice(0),r[p]=r[p].slice(0)}},{key:"_crypt",value:function(t,i){if(4!==t.length)throw Error("invalid aes block size");for(var e,n,r,c=this._key[i],d=c.length/4-2,l=[0,0,0,0],o=this._tables[i],u=o[0],s=o[1],a=o[2],m=o[3],y=o[4],b=t[0]^c[0],p=t[i?3:1]^c[1],h=t[2]^c[2],Z=t[i?1:3]^c[3],L=4,X=0;d>X;X++)e=u[b>>>24]^s[p>>16&255]^a[h>>8&255]^m[255&Z]^c[L],n=u[p>>>24]^s[h>>16&255]^a[Z>>8&255]^m[255&b]^c[L+1],r=u[h>>>24]^s[Z>>16&255]^a[b>>8&255]^m[255&p]^c[L+2],Z=u[Z>>>24]^s[b>>16&255]^a[p>>8&255]^m[255&h]^c[L+3],L+=4,b=e,p=n,h=r;for(var I=0;4>I;I++)l[i?3&-I:I]=y[b>>>24]<<24^y[p>>16&255]<<16^y[h>>8&255]<<8^y[255&Z]^c[L++],e=b,b=p,p=h,h=Z,Z=e;return l}}]),t}();var sS={};sS.ctrGladman=function(){function t(i,e){Pa(this,t),this._prf=i,this._initIv=e,this._iv=e}return Ja(t,[{key:"reset",value:function(){this._iv=this._initIv}},{key:"update",value:function(t){return this.calculate(this._prf,t,this._iv)}},{key:"incWord",value:function(t){if(255==(t>>24&255)){var i=t>>16&255,e=t>>8&255,n=255&t;255===i?(i=0,255===e?(e=0,255===n?n=0:++n):++e):++i,t=0,t+=i<<16,t+=e<<8,t+=n}else t+=1<<24;return t}},{key:"incCounter",value:function(t){0===(t[0]=this.incWord(t[0]))&&(t[1]=this.incWord(t[1]))}},{key:"calculate",value:function(t,i,e){var n;if(!(n=i.length))return[];for(var r=dS.bitLength(i),c=0;n>c;c+=4){this.incCounter(e);var d=t.encrypt(e);i[c]^=d[0],i[c+1]^=d[1],i[c+2]^=d[2],i[c+3]^=d[3]}return dS.clamp(i,r)}}]),t}();var aS={importKey:function(t){return new aS.hmacSha1(lS.bytes.toBits(t))},pbkdf2:function(t,i,e,n){if(e=e||1e4,0>n||0>e)throw Error("invalid params to pbkdf2");var r,c,d,l,o,u=1+(n>>5)<<2,s=new ArrayBuffer(u),a=new DataView(s),m=0,y=dS;for(i=lS.bytes.toBits(i),o=1;(u||1)>m;o++){for(r=c=t.encrypt(y.concat(i,[o])),d=1;e>d;d++)for(c=t.encrypt(c),l=0;l<c.length;l++)r[l]^=c[l];for(d=0;(u||1)>m&&d<r.length;d++)a.setInt32(m,r[d]),m+=4}return s.slice(0,n/8)}};aS.hmacSha1=function(){function t(i){Pa(this,t);var e=this,n=e._hash=oS.sha1,r=[[],[]],c=n.prototype.blockSize/32;e._baseHash=[new n,new n],i.length>c&&(i=n.hash(i));for(var d=0;c>d;d++)r[0][d]=909522486^i[d],r[1][d]=1549556828^i[d];e._baseHash[0].update(r[0]),e._baseHash[1].update(r[1]),e._resultHash=new n(e._baseHash[0])}return Ja(t,[{key:"reset",value:function(){var t=this;t._resultHash=new t._hash(t._baseHash[0]),t._updated=!1}},{key:"update",value:function(t){this._updated=!0,this._resultHash.update(t)}},{key:"digest",value:function(){var t=this,i=t._resultHash.finalize(),e=new t._hash(t._baseHash[1]).update(i).finalize();return t.reset(),e}},{key:"encrypt",value:function(t){if(this._updated)throw Error("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}]),t}();var mS=kW((function(t,i,e){return wS&&YS&&"function"==typeof crypto.subtle.deriveBits?crypto.subtle.deriveBits(t,i,e):aS.pbkdf2(i,t.salt,GS.iterations,e)})),yS=kW((function(t,i,e){var n=Yf(i);return MW(function(t,i,e,n,r){return wS&&YS&&"function"==typeof crypto.subtle.importKey?crypto.subtle.importKey(t,i,e,!1,r):aS.importKey(i)}(LS,n,IS,0,KS),(function(i){return MW(mS(Object.assign({salt:e},GS),i,8*(2*fS[t.strength]+2)),(function(i){var e=new Uint8Array(i);t.keys={key:VS.toBits(kS(e,0,fS[t.strength])),authentication:VS.toBits(kS(e,fS[t.strength],2*fS[t.strength])),passwordVerification:kS(e,2*fS[t.strength])}}))}))})),bS=kW((function(t,i){var e,n=(e=new Uint8Array(WS[t.strength]),wS&&"function"==typeof crypto.getRandomValues?crypto.getRandomValues(e):function(t){for(var i,e=new Uint32Array(t.buffer),n=function(t){var i=987654321,e=4294967295;return function(){return((((i=36969*(65535&i)+(i>>16)&e)<<16)+(t=18e3*(65535&t)+(t>>16)&e)&e)/4294967296+.5)*(Math.random()>.5?1:-1)}},r=0;r<t.length;r+=4){var c=n(4294967296*(i||Math.random()));i=987654071*c(),e[r/4]=4294967296*c()|0}return t}(e));return MW(yS(t,i,n),(function(){return JS(n,t.keys.passwordVerification)}))})),pS=kW((function(t,i,e){return MW(yS(t,e,kS(i,0,WS[t.strength])),(function(){var e=kS(i,WS[t.strength]),n=t.keys.passwordVerification;if(n[0]!=e[0]||n[1]!=e[1])throw Error(hS)}))})),hS="Invalid pasword",ZS=16,LS="raw",XS={name:"PBKDF2"},IS=Object.assign({hash:{name:"HMAC"}},XS),GS=Object.assign({iterations:1e3,hash:{name:"SHA-1"}},XS),KS=["deriveBits"],WS=[8,12,16],fS=[16,24,32],SS=10,xS=[0,0,0,0],wS="undefined"!=typeof crypto,YS=wS&&void 0!==crypto.subtle,VS=lS.bytes,TS=uS.aes,gS=sS.ctrGladman,HS=aS.hmacSha1,vS=function(){function t(i,e,n){Pa(this,t),Object.assign(this,{password:i,signed:e,strength:n-1,pendingInput:new Uint8Array(0)})}return Ja(t,[{key:"append",value:function(t){try{var i=this;return MW(QW((function(){if(i.password){var e=kS(t,0,WS[i.strength]+2);return MW(pS(i,e,i.password),(function(){i.password=null,i.aesCtrGladman=new gS(new TS(i.keys.key),Array.from(xS)),i.hmac=new HS(i.keys.authentication),t=kS(t,WS[i.strength]+2)}))}}),(function(){var e=new Uint8Array(t.length-SS-(t.length-SS)%ZS);return CS(i,t,e,0,SS,!0)})))}catch(t){return Promise.reject(t)}}},{key:"flush",value:function(){var t=this,i=t.pendingInput,e=kS(i,0,i.length-SS),n=kS(i,i.length-SS),r=new Uint8Array(0);if(e.length){var c=VS.toBits(e);t.hmac.update(c);var d=t.aesCtrGladman.update(c);r=VS.fromBits(d)}var l=!0;if(t.signed)for(var o=kS(VS.fromBits(t.hmac.digest()),0,SS),u=0;SS>u;u++)o[u]!=n[u]&&(l=!1);return{valid:l,data:r}}}]),t}(),PS=function(){function t(i,e){Pa(this,t),Object.assign(this,{password:i,strength:e-1,pendingInput:new Uint8Array(0)})}return Ja(t,[{key:"append",value:function(t){try{var i=this,e=new Uint8Array(0);return MW(QW((function(){if(i.password)return MW(bS(i,i.password),(function(t){e=t,i.password=null,i.aesCtrGladman=new gS(new TS(i.keys.key),Array.from(xS)),i.hmac=new HS(i.keys.authentication)}))}),(function(){var n=new Uint8Array(e.length+t.length-t.length%ZS);return n.set(e,0),CS(i,t,n,e.length,0)})))}catch(t){return Promise.reject(t)}}},{key:"flush",value:function(){var t=this,i=new Uint8Array(0);if(t.pendingInput.length){var e=t.aesCtrGladman.update(VS.toBits(t.pendingInput));t.hmac.update(e),i=VS.fromBits(e)}var n=kS(VS.fromBits(t.hmac.digest()),0,SS);return{data:JS(i,n),signature:n}}}]),t}();function CS(t,i,e,n,r,c){var d,l=i.length-r;for(t.pendingInput.length&&(i=JS(t.pendingInput,i),e=function(t,i){if(i&&i>t.length){var e=t;(t=new Uint8Array(i)).set(e,0)}return t}(e,l-l%ZS)),d=0;l-ZS>=d;d+=ZS){var o=VS.toBits(kS(i,d,d+ZS));c&&t.hmac.update(o);var u=t.aesCtrGladman.update(o);c||t.hmac.update(u),e.set(VS.fromBits(u),d+n)}return t.pendingInput=kS(i,d),e}function JS(t,i){var e=t;return t.length+i.length&&((e=new Uint8Array(t.length+i.length)).set(t,0),e.set(i,t.length)),e}function kS(t,i,e){return t.subarray(i,e)}var MS=Math.imul;Nn({target:"Math",stat:!0,forced:c((function(){return-5!=MS(4294967295,5)||2!=MS.length}))},{imul:function(t,i){var e=65535,n=+t,r=+i,c=e&n,d=e&r;return 0|c*d+((e&n>>>16)*d+c*(e&r>>>16)<<16>>>0)}});var RS=function(){function t(i,e){Pa(this,t),Object.assign(this,{password:i,passwordVerification:e}),jS(this,i)}return Ja(t,[{key:"append",value:function(t){var i=this;if(i.password){var e=US(i,t.subarray(0,12));if(i.password=null,e[11]!=i.passwordVerification)throw Error(hS);t=t.subarray(12)}return US(i,t)}},{key:"flush",value:function(){return{valid:!0,data:new Uint8Array(0)}}}]),t}(),DS=function(){function t(i,e){Pa(this,t),Object.assign(this,{password:i,passwordVerification:e}),jS(this,i)}return Ja(t,[{key:"append",value:function(t){var i,e,n=this;if(n.password){n.password=null;var r=crypto.getRandomValues(new Uint8Array(12));r[11]=n.passwordVerification,(i=new Uint8Array(t.length+r.length)).set(NS(n,r),0),e=12}else i=new Uint8Array(t.length),e=0;return i.set(NS(n,t),e),i}},{key:"flush",value:function(){return{data:new Uint8Array(0)}}}]),t}();function US(t,i){for(var e=new Uint8Array(i.length),n=0;n<i.length;n++)e[n]=zS(t)^i[n],FS(t,e[n]);return e}function NS(t,i){for(var e=new Uint8Array(i.length),n=0;n<i.length;n++)e[n]=zS(t)^i[n],FS(t,i[n]);return e}function jS(t,i){t.keys=[305419896,591751049,878082192],t.crcKey0=new xf(t.keys[0]),t.crcKey2=new xf(t.keys[2]);for(var e=0;e<i.length;e++)FS(t,i.charCodeAt(e))}function FS(t,i){t.crcKey0.append([i]),t.keys[0]=~t.crcKey0.get(),t.keys[1]=QS(t.keys[1]+ES(t.keys[0])),t.keys[1]=QS(Math.imul(t.keys[1],134775813)+1),t.crcKey2.append([t.keys[1]>>>24]),t.keys[2]=~t.crcKey2.get()}function zS(t){var i=2|t.keys[2];return ES(Math.imul(i,1^i)>>>8)}function ES(t){return 255&t}function QS(t){return 4294967295&t}var OS="deflate",BS="inflate",AS="Invalid signature",qS=function(){function t(i,e,n){var r=e.signature,c=e.password,d=e.signed,l=e.compressed,o=e.zipCrypto,u=e.passwordVerification,s=e.encryptionStrength,a=n.chunkSize;Pa(this,t);var m=!!c;Object.assign(this,{signature:r,encrypted:m,signed:d,compressed:l,inflate:l&&new i({chunkSize:a}),crc32:d&&new xf,zipCrypto:o,decrypt:m&&o?new RS(c,u):new vS(c,d,s)})}return Ja(t,[{key:"append",value:function(t){try{var i=this;return MW(QW((function(){if(i.encrypted&&t.length)return MW(i.decrypt.append(t),(function(i){t=i}))}),(function(){return QW((function(){if(i.compressed&&t.length)return MW(i.inflate.append(t),(function(i){t=i}))}),(function(){return(!i.encrypted||i.zipCrypto)&&i.signed&&t.length&&i.crc32.append(t),t}))})))}catch(t){return Promise.reject(t)}}},{key:"flush",value:function(){try{var t,i=this,e=new Uint8Array(0);if(i.encrypted){var n=i.decrypt.flush();if(!n.valid)throw Error(AS);e=n.data}if((!i.encrypted||i.zipCrypto)&&i.signed){var r=new DataView(new Uint8Array(4).buffer);if(t=i.crc32.get(),r.setUint32(0,t),i.signature!=r.getUint32(0,!1))throw Error(AS)}return MW(QW((function(){if(i.compressed)return MW(i.inflate.append(e),(function(t){return e=t||new Uint8Array(0),RW(i.inflate.flush())}))}),(function(){return{data:e,signature:t}})))}catch(t){return Promise.reject(t)}}}]),t}(),_S=function(){function t(i,e,n){var r=e.encrypted,c=e.signed,d=e.compressed,l=e.level,o=e.zipCrypto,u=e.password,s=e.passwordVerification,a=e.encryptionStrength,m=n.chunkSize;Pa(this,t),Object.assign(this,{encrypted:r,signed:c,compressed:d,deflate:d&&new i({level:l||5,chunkSize:m}),crc32:c&&new xf,zipCrypto:o,encrypt:r&&o?new DS(u,s):new PS(u,a)})}return Ja(t,[{key:"append",value:function(t){try{var i=this,e=t;return MW(QW((function(){if(i.compressed&&t.length)return MW(i.deflate.append(t),(function(t){e=t}))}),(function(){return QW((function(){if(i.encrypted&&e.length)return MW(i.encrypt.append(e),(function(t){e=t}))}),(function(){return(!i.encrypted||i.zipCrypto)&&i.signed&&t.length&&i.crc32.append(t),e}))})))}catch(t){return Promise.reject(t)}}},{key:"flush",value:function(){try{var t,i=this,e=new Uint8Array(0);return MW(QW((function(){if(i.compressed)return MW(i.deflate.flush(),(function(t){e=t||new Uint8Array(0)}))}),(function(){return QW((function(){if(i.encrypted)return MW(i.encrypt.append(e),(function(n){e=n;var r=i.encrypt.flush();t=r.signature;var c=new Uint8Array(e.length+r.data.length);c.set(e,0),c.set(r.data,e.length),e=c}))}),(function(){return i.encrypted&&!i.zipCrypto||!i.signed||(t=i.crc32.get()),{data:e,signature:t}}))})))}catch(t){return Promise.reject(t)}}}]),t}(),$S="init",tx="append",ix="flush",ex=!0,nx=function(t,i,e,n,r,c,d){return Object.assign(t,{busy:!0,codecConstructor:i,options:Object.assign({},e),scripts:d,terminate:function(){t.worker&&!t.busy&&(t.worker.terminate(),t.interface=null)},onTaskFinished:function(){t.busy=!1,r(t)}}),c?function(t,i){var e,n=kW((function(n){return QW((function(){if(!e){var n=t.options;return RW(d({scripts:t.scripts.slice(1),type:$S,options:n,config:{chunkSize:i.chunkSize}}))}}),(function(){return d(n)}))})),r={type:"module"};if(!t.interface){if(ex)try{t.worker=c({},i.baseURL)}catch(e){ex=!1,t.worker=c(r,i.baseURL)}else t.worker=c(r,i.baseURL);t.worker.addEventListener("message",(function(i){var n=i.data;if(e){var r=n.error,c=n.type;if(r){var d=Error(r.message);d.stack=r.stack,e.reject(d),e=null,t.onTaskFinished()}else if(c==$S||c==ix||c==tx){var l=n.data;c==ix?(e.resolve({data:new Uint8Array(l),signature:n.signature}),e=null,t.onTaskFinished()):e.resolve(l&&new Uint8Array(l))}}}),!1),t.interface={append:function(t){return n({type:tx,data:t})},flush:function(){return n({type:ix})},abort:function(){t.onTaskFinished()}}}return t.interface;function c(i,e){var n,r;"function"==typeof(n=t.scripts[0])&&(n=n());try{r=new URL(n,e)}catch(t){r=n}return new Worker(r,i)}function d(i){var n=t.worker,r=new Promise((function(t,i){return e={resolve:t,reject:i}}));try{if(i.data)try{i.data=i.data.buffer,n.postMessage(i,[i.data])}catch(t){n.postMessage(i)}else n.postMessage(i)}catch(i){e.reject(i),e=null,t.onTaskFinished()}return r}}(t,n):function(t,i){var e=function(t,i,e){return i.codecType.startsWith(OS)?new _S(t,i,e):i.codecType.startsWith(BS)?new qS(t,i,e):void 0}(t.codecConstructor,t.options,i);return{append:function(i){try{return MW(BW((function(){return MW(e.append(i))}),(function(i){throw t.onTaskFinished(),i})))}catch(t){return Promise.reject(t)}},flush:function(){try{return MW(AW((function(){return MW(e.flush())}),(function(i,e){return t.onTaskFinished(),qW(i,e)})))}catch(t){return Promise.reject(t)}},abort:function(){t.onTaskFinished()}}}(t,n)},rx=[],cx=[];function dx(t,i,e){var n=!(!i.compressed&&!i.signed&&!i.encrypted)&&(i.useWebWorkers||void 0===i.useWebWorkers&&e.useWebWorkers),r=n&&e.workerScripts?e.workerScripts[i.codecType]:[];if(rx.length<e.maxWorkers){var c={};return rx.push(c),nx(c,t,i,e,l,n,r)}var d=rx.find((function(t){return!t.busy}));return d?(lx(d),nx(d,t,i,e,l,n,r)):new Promise((function(e){return cx.push({resolve:e,codecConstructor:t,options:i,webWorker:n,scripts:r})}));function l(t){if(cx.length){var i=Ea(cx.splice(0,1),1)[0],n=i.resolve,r=i.codecConstructor,c=i.options,d=i.webWorker,o=i.scripts;n(nx(t,r,c,e,l,d,o))}else t.worker?(lx(t),Number.isFinite(e.terminateWorkerTimeout)&&e.terminateWorkerTimeout>=0&&(t.terminateTimeout=setTimeout((function(){rx=rx.filter((function(i){return i!=t})),t.terminate()}),e.terminateWorkerTimeout))):rx=rx.filter((function(i){return i!=t}))}}function lx(t){t.terminateTimeout&&(clearTimeout(t.terminateTimeout),t.terminateTimeout=null)}var ox=n,ux={},sx=Ot;ux.f=sx;var ax=ox,mx=Ht,yx=ux,bx=Ii.f,px=function(t){var i=ax.Symbol||(ax.Symbol={});mx(i,t)||bx(i,t,{value:yx.f(t)})};px("iterator");var hx={},Zx=x,Lx=J,Xx=Re.f,Ix=eo,Gx="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];hx.f=function(t){return Gx&&"Window"==Zx(t)?function(t){try{return Xx(t)}catch(t){return Ix(Gx)}}(t):Xx(Lx(t))};var Kx=u,Wx=j,fx=Ot,Sx=Me,xx=Nn,wx=n,Yx=u,Vx=K,Tx=d,gx=tt,Hx=c,vx=Ht,Px=F,Cx=Si,Jx=J,kx=ri,Mx=ud,Rx=h,Dx=Yr,Ux=zn,Nx=Re,jx=hx,Fx=bn,zx=r,Ex=Ii,Qx=or,Ox=s,Bx=Me,Ax=Xt.exports,qx=re,_x=kt,$x=Ot,tw=ux,iw=px,ew=cc,nw=Ke,rw=rp.forEach,cw=ne("hidden"),dw="Symbol",lw=nw.set,ow=nw.getterFor(dw),uw=Object.prototype,sw=wx.Symbol,aw=sw&&sw.prototype,mw=wx.TypeError,yw=wx.QObject,bw=zx.f,pw=Ex.f,hw=jx.f,Zw=Ox.f,Lw=Vx([].push),Xw=Ax("symbols"),Iw=Ax("op-symbols"),Gw=Ax("wks"),Kw=!yw||!yw.prototype||!yw.prototype.findChild,Ww=Tx&&Hx((function(){return 7!=Dx(pw({},"a",{get:function(){return pw(this,"a",{value:7}).a}})).a}))?function(t,i,e){var n=bw(uw,i);n&&delete uw[i],pw(t,i,e),n&&t!==uw&&pw(uw,i,n)}:pw,fw=function(t,i){var e=Xw[t]=Dx(aw);return lw(e,{type:dw,tag:t,description:i}),Tx||(e.description=i),e},Sw=function(t,i,e){t===uw&&Sw(Iw,i,e),Cx(t);var n=kx(i);return Cx(e),vx(Xw,n)?(e.enumerable?(vx(t,cw)&&t[cw][n]&&(t[cw][n]=!1),e=Dx(e,{enumerable:Rx(0,!1)})):(vx(t,cw)||pw(t,cw,Rx(1,{})),t[cw][n]=!0),Ww(t,n,e)):pw(t,n,e)},xw=function(t,i){Cx(t);var e=Jx(i),n=Ux(e).concat(Tw(e));return rw(n,(function(i){Tx&&!Yx(ww,e,i)||Sw(t,i,e[i])})),t},ww=function(t){var i=kx(t),e=Yx(Zw,this,i);return!(this===uw&&vx(Xw,i)&&!vx(Iw,i))&&(!(e||!vx(this,i)||!vx(Xw,i)||vx(this,cw)&&this[cw][i])||e)},Yw=function(t,i){var e=Jx(t),n=kx(i);if(e!==uw||!vx(Xw,n)||vx(Iw,n)){var r=bw(e,n);return!r||!vx(Xw,n)||vx(e,cw)&&e[cw][n]||(r.enumerable=!0),r}},Vw=function(t){var i=hw(Jx(t)),e=[];return rw(i,(function(t){vx(Xw,t)||vx(qx,t)||Lw(e,t)})),e},Tw=function(t){var i=t===uw,e=hw(i?Iw:Jx(t)),n=[];return rw(e,(function(t){!vx(Xw,t)||i&&!vx(uw,t)||Lw(n,Xw[t])})),n};gx||(sw=function(){if(Px(aw,this))throw mw("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?Mx(arguments[0]):void 0,i=_x(t),e=function(t){this===uw&&Yx(e,Iw,t),vx(this,cw)&&vx(this[cw],i)&&(this[cw][i]=!1),Ww(this,i,Rx(1,t))};return Tx&&Kw&&Ww(uw,i,{configurable:!0,set:e}),fw(i,t)},Bx(aw=sw.prototype,"toString",(function(){return ow(this).tag})),Bx(sw,"withoutSetter",(function(t){return fw(_x(t),t)})),Ox.f=ww,Ex.f=Sw,Qx.f=xw,zx.f=Yw,Nx.f=jx.f=Vw,Fx.f=Tw,tw.f=function(t){return fw($x(t),t)},Tx&&(pw(aw,"description",{configurable:!0,get:function(){return ow(this).description}}),Bx(uw,"propertyIsEnumerable",ww,{unsafe:!0}))),xx({global:!0,constructor:!0,wrap:!0,forced:!gx,sham:!gx},{Symbol:sw}),rw(Ux(Gw),(function(t){iw(t)})),xx({target:dw,stat:!0,forced:!gx},{useSetter:function(){Kw=!0},useSimple:function(){Kw=!1}}),xx({target:"Object",stat:!0,forced:!gx,sham:!Tx},{create:function(t,i){return void 0===i?Dx(t):xw(Dx(t),i)},defineProperty:Sw,defineProperties:xw,getOwnPropertyDescriptor:Yw}),xx({target:"Object",stat:!0,forced:!gx},{getOwnPropertyNames:Vw}),function(){var t=Wx("Symbol"),i=t&&t.prototype,e=i&&i.valueOf,n=fx("toPrimitive");i&&!i[n]&&Sx(i,n,(function(){return Kx(e,this)}),{arity:1})}(),ew(sw,dw),qx[cw]=!0;var gw=tt&&!!Symbol.for&&!!Symbol.keyFor,Hw=Nn,vw=j,Pw=Ht,Cw=ud,Jw=Xt.exports,kw=gw,Mw=Jw("string-to-symbol-registry"),Rw=Jw("symbol-to-string-registry");Hw({target:"Symbol",stat:!0,forced:!kw},{for:function(t){var i=Cw(t);if(Pw(Mw,i))return Mw[i];var e=vw("Symbol")(i);return Mw[i]=e,Rw[e]=i,e}});var Dw=Nn,Uw=Ht,Nw=dt,jw=ot,Fw=gw,zw=(0,Xt.exports)("symbol-to-string-registry");Dw({target:"Symbol",stat:!0,forced:!Fw},{keyFor:function(t){if(!Nw(t))throw TypeError(jw(t)+" is not a symbol");if(Uw(zw,t))return zw[t]}});var Ew=Nn,Qw=j,Ow=SZ,Bw=u,Aw=K,qw=c,_w=Fb,$w=k,tY=R,iY=dt,eY=ZL,nY=tt,rY=Qw("JSON","stringify"),cY=Aw(/./.exec),dY=Aw("".charAt),lY=Aw("".charCodeAt),oY=Aw("".replace),uY=Aw(1..toString),sY=/[\uD800-\uDFFF]/g,aY=/^[\uD800-\uDBFF]$/,mY=/^[\uDC00-\uDFFF]$/,yY=!nY||qw((function(){var t=Qw("Symbol")();return"[null]"!=rY([t])||"{}"!=rY({a:t})||"{}"!=rY(Object(t))})),bY=qw((function(){return'"\\udf06\\ud834"'!==rY("\udf06\ud834")||'"\\udead"'!==rY("\udead")})),pY=function(t,i){var e=eY(arguments),n=i;if((tY(i)||void 0!==t)&&!iY(t))return _w(i)||(i=function(t,i){if($w(n)&&(i=Bw(n,this,t,i)),!iY(i))return i}),e[1]=i,Ow(rY,null,e)},hY=function(t,i,e){var n=dY(e,i-1),r=dY(e,i+1);return cY(aY,t)&&!cY(mY,r)||cY(mY,t)&&!cY(aY,n)?"\\u"+uY(lY(t,0),16):t};rY&&Ew({target:"JSON",stat:!0,arity:3,forced:yY||bY},{stringify:function(){var t=eY(arguments),i=Ow(yY?pY:rY,null,t);return bY&&"string"==typeof i?oY(i,sY,hY):i}});var ZY=bn,LY=Vt;Nn({target:"Object",stat:!0,forced:!tt||c((function(){ZY.f(1)}))},{getOwnPropertySymbols:function(t){var i=ZY.f;return i?i(LY(t)):[]}});var XY=Nn,IY=d,GY=n,KY=K,WY=Ht,fY=k,SY=F,xY=ud,wY=Ii.f,YY=Sn,VY=GY.Symbol,TY=VY&&VY.prototype;if(IY&&fY(VY)&&(!("description"in TY)||void 0!==VY().description)){var gY={},HY=function(){var t=1>arguments.length||void 0===arguments[0]?void 0:xY(arguments[0]),i=SY(TY,this)?new VY(t):void 0===t?VY():VY(t);return""===t&&(gY[i]=!0),i};YY(HY,VY),HY.prototype=TY,TY.constructor=HY;var vY=VY("test")+""=="Symbol(test)",PY=KY(TY.toString),CY=KY(TY.valueOf),JY=/^Symbol\((.*)\)[^)]+$/,kY=KY("".replace),MY=KY("".slice);wY(TY,"description",{configurable:!0,get:function(){var t=CY(this),i=PY(t);if(WY(gY,t))return"";var e=vY?MY(i,7,-1):kY(i,JY,"$1");return""===e?void 0:e}}),XY({global:!0,constructor:!0,forced:!0},{Symbol:HY})}var RY=BG,DY=xl;Nn({target:"Object",stat:!0},{fromEntries:function(t){var i={};return RY(t,(function(t,e){DY(i,t,e)}),{AS_ENTRIES:!0}),i}});var UY,NY,jY=Si,FY=c,zY=n.RegExp,EY=FY((function(){var t=zY("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),QY=EY||FY((function(){return!zY("a","y").sticky})),OY={BROKEN_CARET:EY||FY((function(){var t=zY("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),MISSED_STICKY:QY,UNSUPPORTED_Y:EY},BY=c,AY=n.RegExp,qY=BY((function(){var t=AY(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),_Y=c,$Y=n.RegExp,tV=_Y((function(){var t=$Y("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),iV=u,eV=K,nV=ud,rV=function(){var t=jY(this),i="";return t.hasIndices&&(i+="d"),t.global&&(i+="g"),t.ignoreCase&&(i+="i"),t.multiline&&(i+="m"),t.dotAll&&(i+="s"),t.unicode&&(i+="u"),t.unicodeSets&&(i+="v"),t.sticky&&(i+="y"),i},cV=OY,dV=Xt.exports,lV=Yr,oV=Ke.get,uV=qY,sV=tV,aV=dV("native-string-replace","".replace),mV=/t/.exec,yV=mV,bV=eV("".charAt),pV=eV("".indexOf),hV=eV("".replace),ZV=eV("".slice),LV=(NY=/b*/g,iV(mV,UY=/a/,"a"),iV(mV,NY,"a"),0!==UY.lastIndex||0!==NY.lastIndex),XV=cV.BROKEN_CARET,IV=void 0!==/()??/.exec("")[1];(LV||IV||XV||uV||sV)&&(yV=function(t){var i,e,n,r,c,d,l,o=this,u=oV(o),s=nV(t),a=u.raw;if(a)return a.lastIndex=o.lastIndex,i=iV(yV,a,s),o.lastIndex=a.lastIndex,i;var m=u.groups,y=XV&&o.sticky,b=iV(rV,o),p=o.source,h=0,Z=s;if(y&&(b=hV(b,"y",""),-1===pV(b,"g")&&(b+="g"),Z=ZV(s,o.lastIndex),o.lastIndex>0&&(!o.multiline||o.multiline&&"\n"!==bV(s,o.lastIndex-1))&&(p="(?: "+p+")",Z=" "+Z,h++),e=RegExp("^(?:"+p+")",b)),IV&&(e=RegExp("^"+p+"$(?!\\s)",b)),LV&&(n=o.lastIndex),r=iV(mV,y?e:o,Z),y?r?(r.input=ZV(r.input,h),r[0]=ZV(r[0],h),r.index=o.lastIndex,o.lastIndex+=r[0].length):o.lastIndex=0:LV&&r&&(o.lastIndex=o.global?r.index+r[0].length:n),IV&&r&&r.length>1&&iV(aV,r[0],e,(function(){for(c=1;arguments.length-2>c;c++)void 0===arguments[c]&&(r[c]=void 0)})),r&&m)for(r.groups=d=lV(null),c=0;c<m.length;c++)d[(l=m[c])[0]]=r[l[1]];return r});var GV=yV;Nn({target:"RegExp",proto:!0,forced:/./.exec!==GV},{exec:GV});var KV=K,WV=Me,fV=GV,SV=c,xV=Ot,wV=Ji,YV=xV("species"),VV=RegExp.prototype,TV=function(t,i,e,n){var r=xV(t),c=!SV((function(){var i={};return i[r]=function(){return 7},7!=""[t](i)})),d=c&&!SV((function(){var i=!1,e=/a/;return"split"===t&&((e={}).constructor={},e.constructor[YV]=function(){return e},e.flags="",e[r]=/./[r]),e.exec=function(){return i=!0,null},e[r](""),!i}));if(!c||!d||e){var l=KV(/./[r]),o=i(r,""[t],(function(t,i,e,n,r){var d=KV(t),o=i.exec;return o===fV||o===VV.exec?c&&!r?{done:!0,value:l(i,e,n)}:{done:!0,value:d(e,i,n)}:{done:!1}}));WV(String.prototype,t,o[0]),WV(VV,r,o[1])}n&&wV(VV[r],"sham",!0)},gV=Ld.charAt,HV=function(t,i,e){return i+(e?gV(t,i).length:1)},vV=u,PV=Si,CV=k,JV=x,kV=GV,MV=TypeError,RV=function(t,i){var e=t.exec;if(CV(e)){var n=vV(e,t,i);return null!==n&&PV(n),n}if("RegExp"===JV(t))return vV(kV,t,i);throw MV("RegExp#exec called on incompatible receiver")},DV=SZ,UV=u,NV=K,jV=TV,FV=rf,zV=Si,EV=v,QV=hy,OV=HV,BV=Ae,AV=ud,qV=bt,_V=eo,$V=RV,tT=GV,iT=c,eT=OY.UNSUPPORTED_Y,nT=4294967295,rT=Math.min,cT=[].push,dT=NV(/./.exec),lT=NV(cT),oT=NV("".slice),uT=!iT((function(){var t=/(?:)/,i=t.exec;t.exec=function(){return i.apply(this,arguments)};var e="ab".split(t);return 2!==e.length||"a"!==e[0]||"b"!==e[1]}));jV("split",(function(t,i,e){var n;return n="".split(/.?/).length?function(t,e){var n=AV(EV(this)),r=void 0===e?nT:e>>>0;if(0===r)return[];if(void 0===t)return[n];if(!FV(t))return UV(i,n,t,r);for(var c,d,l,o=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),s=0,a=RegExp(t.source,u+"g");(c=UV(tT,a,n))&&((d=a.lastIndex)<=s||(lT(o,oT(n,s,c.index)),c.length>1&&c.index<n.length&&DV(cT,o,_V(c,1)),l=c[0].length,s=d,r>o.length));)a.lastIndex===c.index&&a.lastIndex++;return s===n.length?!l&&dT(a,"")||lT(o,""):lT(o,oT(n,s)),o.length>r?_V(o,0,r):o}:i,[function(i,e){var r=EV(this),c=null==i?void 0:qV(i,t);return c?UV(c,i,r,e):UV(n,AV(r),i,e)},function(t,r){var c=zV(this),d=AV(t),l=e(n,c,d,r,n!==i);if(l.done)return l.value;var o=QV(c,RegExp),u=c.unicode,s=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(eT?"g":"y"),a=new o(eT?"^(?:"+c.source+")":c,s),m=void 0===r?nT:r>>>0;if(0===m)return[];if(0===d.length)return null===$V(a,d)?[d]:[];for(var y=0,b=0,p=[];b<d.length;){a.lastIndex=eT?0:b;var h,Z=$V(a,eT?oT(d,b):d);if(null===Z||(h=rT(BV(a.lastIndex+(eT?b:0)),d.length))===y)b=OV(d,b,u);else{if(lT(p,oT(d,y,b)),p.length===m)return p;for(var L=1;L<=Z.length-1;L++)if(lT(p,Z[L]),p.length===m)return p;b=y=h}}return lT(p,oT(d,y)),p}]}),!uT,eT);var sT=Ni.PROPER,aT="\t\n\v\f\r \u2028\u2029\ufeff",mT=BK.trim;Nn({target:"String",proto:!0,forced:("trim",c((function(){return sT&&"trim"!==aT.trim.name})))},{trim:function(){return mT(this)}});var yT=K,bT=Vt,pT=Math.floor,hT=yT("".charAt),ZT=yT("".replace),LT=yT("".slice),XT=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,IT=/\$([$&'`]|\d{1,2})/g,GT=SZ,KT=u,WT=K,fT=TV,ST=c,xT=Si,wT=k,YT=je,VT=Ae,TT=ud,gT=v,HT=HV,vT=bt,PT=function(t,i,e,n,r,c){var d=e+t.length,l=n.length,o=IT;return void 0!==r&&(r=bT(r),o=XT),ZT(c,o,(function(c,o){var u;switch(hT(o,0)){case"$":return"$";case"&":return t;case"`":return LT(i,0,e);case"'":return LT(i,d);case"<":u=r[LT(o,1,-1)];break;default:var s=+o;if(0===s)return c;if(s>l){var a=pT(s/10);return 0===a||a>l?c:void 0===n[a-1]?hT(o,1):n[a-1]+hT(o,1)}u=n[s-1]}return void 0===u?"":u}))},CT=RV,JT=Ot("replace"),kT=Math.max,MT=Math.min,RT=WT([].concat),DT=WT([].push),UT=WT("".indexOf),NT=WT("".slice),jT=!!/./[JT]&&""===/./[JT]("a","$0");fT("replace",(function(t,i,e){var n=jT?"$":"$0";return[function(t,e){var n=gT(this),r=null==t?void 0:vT(t,JT);return r?KT(r,t,n,e):KT(i,TT(n),t,e)},function(t,r){var c=xT(this),d=TT(t);if("string"==typeof r&&-1===UT(r,n)&&-1===UT(r,"$<")){var l=e(i,c,d,r);if(l.done)return l.value}var o=wT(r);o||(r=TT(r));var u=c.global;if(u){var s=c.unicode;c.lastIndex=0}for(var a=[];;){var m=CT(c,d);if(null===m)break;if(DT(a,m),!u)break;""===TT(m[0])&&(c.lastIndex=HT(d,VT(c.lastIndex),s))}for(var y,b="",p=0,h=0;a.length>h;h++){for(var Z=TT((m=a[h])[0]),L=kT(MT(YT(m.index),d.length),0),X=[],I=1;I<m.length;I++)DT(X,void 0===(y=m[I])?y:y+"");var G=m.groups;if(o){var K=RT([Z],X,L,d);void 0!==G&&DT(K,G);var W=TT(GT(r,void 0,K))}else W=PT(Z,d,L,X,G,r);p>L||(b+=NT(d,p,L)+W,p=L+Z.length)}return b+NT(d,p)}]}),!!ST((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}))||jT);var FT={exports:{}},zT=c((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),ET=R,QT=x,OT=zT,BT=Object.isExtensible,AT=c((function(){BT(1)}))||OT?function(t){return!!ET(t)&&(!OT||"ArrayBuffer"!=QT(t))&&(!BT||BT(t))}:BT,qT=!c((function(){return Object.isExtensible(Object.preventExtensions({}))})),_T=Nn,$T=K,tg=re,ig=R,eg=Ht,ng=Ii.f,rg=Re,cg=hx,dg=AT,lg=qT,og=!1,ug=kt("meta"),sg=0,ag=function(t){ng(t,ug,{value:{objectID:"O"+sg++,weakData:{}}})},mg=FT.exports={enable:function(){mg.enable=function(){},og=!0;var t=rg.f,i=$T([].splice),e={};e[ug]=1,t(e).length&&(rg.f=function(e){for(var n=t(e),r=0,c=n.length;c>r;r++)if(n[r]===ug){i(n,r,1);break}return n},_T({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:cg.f}))},fastKey:function(t,i){if(!ig(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!eg(t,ug)){if(!dg(t))return"F";if(!i)return"E";ag(t)}return t[ug].objectID},getWeakData:function(t,i){if(!eg(t,ug)){if(!dg(t))return!0;if(!i)return!1;ag(t)}return t[ug].weakData},onFreeze:function(t){return lg&&og&&dg(t)&&!eg(t,ug)&&ag(t),t}};tg[ug]=!0;var yg=Nn,bg=n,pg=K,hg=Pn,Zg=Me,Lg=FT.exports,Xg=BG,Ig=_d,Gg=k,Kg=R,Wg=c,fg=My,Sg=cc,xg=yp,wg=function(t,i,e){var n=-1!==t.indexOf("Map"),r=-1!==t.indexOf("Weak"),c=n?"set":"add",d=bg[t],l=d&&d.prototype,o=d,u={},s=function(t){var i=pg(l[t]);Zg(l,t,"add"==t?function(t){return i(this,0===t?0:t),this}:"delete"==t?function(t){return!(r&&!Kg(t))&&i(this,0===t?0:t)}:"get"==t?function(t){return r&&!Kg(t)?void 0:i(this,0===t?0:t)}:"has"==t?function(t){return!(r&&!Kg(t))&&i(this,0===t?0:t)}:function(t,e){return i(this,0===t?0:t,e),this})};if(hg(t,!Gg(d)||!(r||l.forEach&&!Wg((function(){(new d).entries().next()})))))o=e.getConstructor(i,t,n,c),Lg.enable();else if(hg(t,!0)){var a=new o,m=a[c](r?{}:-0,1)!=a,y=Wg((function(){a.has(1)})),b=fg((function(t){new d(t)})),p=!r&&Wg((function(){for(var t=new d,i=5;i--;)t[c](i,i);return!t.has(-0)}));b||((o=i((function(t,i){Ig(t,l);var e=xg(new d,t,o);return null!=i&&Xg(i,e[c],{that:e,AS_ENTRIES:n}),e}))).prototype=l,l.constructor=o),(y||p)&&(s("delete"),s("has"),n&&s("get")),(p||m)&&s(c),r&&l.clear&&delete l.clear}return u[t]=o,yg({global:!0,constructor:!0,forced:o!=d},u),Sg(o,t),r||e.setStrong(o,t,n),o},Yg=Ii.f,Vg=Yr,Tg=So,gg=Qd,Hg=_d,vg=BG,Pg=Mc,Cg=up,Jg=d,kg=FT.exports.fastKey,Mg=Ke.set,Rg=Ke.getterFor,Dg={getConstructor:function(t,i,e,n){var r=t((function(t,r){Hg(t,c),Mg(t,{type:i,index:Vg(null),first:void 0,last:void 0,size:0}),Jg||(t.size=0),null!=r&&vg(r,t[n],{that:t,AS_ENTRIES:e})})),c=r.prototype,d=Rg(i),l=function(t,i,e){var n,r,c=d(t),l=o(t,i);return l?l.value=e:(c.last=l={index:r=kg(i,!0),key:i,value:e,previous:n=c.last,next:void 0,removed:!1},c.first||(c.first=l),n&&(n.next=l),Jg?c.size++:t.size++,"F"!==r&&(c.index[r]=l)),t},o=function(t,i){var e,n=d(t),r=kg(i);if("F"!==r)return n.index[r];for(e=n.first;e;e=e.next)if(e.key==i)return e};return Tg(c,{clear:function(){for(var t=d(this),i=t.index,e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=void 0),delete i[e.index],e=e.next;t.first=t.last=void 0,Jg?t.size=0:this.size=0},delete:function(t){var i=this,e=d(i),n=o(i,t);if(n){var r=n.next,c=n.previous;delete e.index[n.index],n.removed=!0,c&&(c.next=r),r&&(r.previous=c),e.first==n&&(e.first=r),e.last==n&&(e.last=c),Jg?e.size--:i.size--}return!!n},forEach:function(t){for(var i,e=d(this),n=gg(t,arguments.length>1?arguments[1]:void 0);i=i?i.next:e.first;)for(n(i.value,i.key,this);i&&i.removed;)i=i.previous},has:function(t){return!!o(this,t)}}),Tg(c,e?{get:function(t){var i=o(this,t);return i&&i.value},set:function(t,i){return l(this,0===t?0:t,i)}}:{add:function(t){return l(this,t=0===t?0:t,t)}}),Jg&&Yg(c,"size",{get:function(){return d(this).size}}),r},setStrong:function(t,i,e){var n=i+" Iterator",r=Rg(i),c=Rg(n);Pg(t,i,(function(t,i){Mg(this,{type:n,target:t,state:r(t),kind:i,last:void 0})}),(function(){for(var t=c(this),i=t.kind,e=t.last;e&&e.removed;)e=e.previous;return t.target&&(t.last=e=e?e.next:t.state.first)?"keys"==i?{value:e.key,done:!1}:"values"==i?{value:e.value,done:!1}:{value:[e.key,e.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),e?"entries":"values",!e,!0),Cg(i)}};wg("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Dg);var Ug=d,Ng=K,jg=zn,Fg=J,zg=Ng(s.f),Eg=Ng([].push),Qg=function(t){return function(i){for(var e,n=Fg(i),r=jg(n),c=r.length,d=0,l=[];c>d;)e=r[d++],Ug&&!zg(n,e)||Eg(l,t?[e,n[e]]:n[e]);return l}},Og=[Qg(!0),Qg(!1)][0];Nn({target:"Object",stat:!0},{entries:function(t){return Og(t)}});var Bg=kW((function(t,i,e){var n=i.options,r=i.url;return MW(fetch(r,Object.assign({},n,{method:t,headers:e})),(function(t){if(400>t.status)return t;throw Error(eH+(t.statusText||t.status))}))})),Ag=kW((function(t,i,e){return OW((function(){return t.preventHeadRequest?RW(e(t,t.options)):MW(i(sH,t,VH(t)),(function(i){var n=i.headers.get(dH);return OW((function(){if(!n)return RW(e(t,t.options));t.size=Number(n)}))}))}))})),qg=kW((function(t,i){return MW(i(aH,t,VH(t)),(function(i){return MW(i.arrayBuffer(),(function(i){t.data=new Uint8Array(i),t.size||(t.size=t.data.length)}))}))})),_g=kW((function(t){return RW(qg(t,TH))})),$g=kW((function(t){return RW(qg(t,Bg))})),tH=kW((function(t,i,e,n,r){return t.useRangeHeader||t.forceRangeRequests?MW(n(aH,t,YH(t,i,e)),(function(t){if(206!=t.status)throw Error(nH);return MW(t.arrayBuffer(),(function(t){return new Uint8Array(t)}))})):QW((function(){if(!t.data)return RW(r(t,t.options))}),(function(){return new Uint8Array(t.data.subarray(i,i+e))}))})),iH=kW((function(t,i,e){return function(t){if("undefined"!=typeof document){var i=document.createElement("a");return i.href=t,"http:"==i.protocol||"https:"==i.protocol}return/^https?:\/\//i.test(t)}(t.url)&&(t.useRangeHeader||t.forceRangeRequests)?MW(i(aH,t,YH(t)),(function(n){return function(){if(t.forceRangeRequests||n.headers.get(oH)==mH){var r,c=n.headers.get(lH);if(c){var d=c.trim().split(/\s*\/\s*/);if(d.length){var l=d[1];l&&"*"!=l&&(r=Number(l))}}return OW((function(){if(void 0===r)return RW(Ag(t,i,e));t.size=r}))}throw Error(nH)}()})):RW(Ag(t,i,e))})),eH="HTTP error ",nH="HTTP Range not supported",rH="Reader is not seekable",cH="text/plain",dH="Content-Length",lH="Content-Range",oH="Accept-Ranges",uH="Range",sH="HEAD",aH="GET",mH="bytes",yH=function(){function t(){Pa(this,t),this.size=0}return Ja(t,[{key:"init",value:function(){this.initialized=!0}}]),t}(),bH=function(t){Ma(e,t);var i=ja(e);function e(){return Pa(this,e),i.apply(this,arguments)}return Ja(e)}(yH),pH=function(t){Ma(e,t);var i=ja(e);function e(){return Pa(this,e),i.apply(this,arguments)}return Ja(e,[{key:"writeUint8Array",value:function(t){this.size+=t.length}}]),e}(yH),hH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;return Pa(this,e),(n=i.call(this)).blobReader=new IH(new Blob([t],{type:cH})),n}return Ja(e,[{key:"init",value:function(){za(Ra(e.prototype),"init",this).call(this),this.blobReader.init(),this.size=this.blobReader.size}},{key:"readUint8Array",value:function(t,i){return this.blobReader.readUint8Array(t,i)}}]),e}(bH),ZH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;return Pa(this,e),(n=i.call(this)).encoding=t,n.blob=new Blob([],{type:cH}),n}return Ja(e,[{key:"writeUint8Array",value:function(t){za(Ra(e.prototype),"writeUint8Array",this).call(this,t),this.blob=new Blob([this.blob,t.buffer],{type:cH})}},{key:"getData",value:function(){var t=this;if(this.blob.text)return this.blob.text();var i=new FileReader;return new Promise((function(e,n){i.onload=function(t){return e(t.target.result)},i.onerror=function(){return n(i.error)},i.readAsText(t.blob,t.encoding)}))}}]),e}(pH),LH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;Pa(this,e),(n=i.call(this)).dataURI=t;for(var r=t.length;"="==t.charAt(r-1);)r--;return n.dataStart=t.indexOf(",")+1,n.size=Math.floor(.75*(r-n.dataStart)),n}return Ja(e,[{key:"readUint8Array",value:function(t,i){for(var e=new Uint8Array(i),n=4*Math.floor(t/3),r=atob(this.dataURI.substring(n+this.dataStart,4*Math.ceil((t+i)/3)+this.dataStart)),c=t-3*Math.floor(n/4),d=c;c+i>d;d++)e[d-c]=r.charCodeAt(d);return e}}]),e}(bH),XH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;return Pa(this,e),(n=i.call(this)).data="data:"+(t||"")+";base64,",n.pending=[],n}return Ja(e,[{key:"writeUint8Array",value:function(t){za(Ra(e.prototype),"writeUint8Array",this).call(this,t);var i=0,n=this.pending,r=this.pending.length;for(this.pending="",i=0;i<3*Math.floor((r+t.length)/3)-r;i++)n+=String.fromCharCode(t[i]);for(;i<t.length;i++)this.pending+=String.fromCharCode(t[i]);n.length>2?this.data+=btoa(n):this.pending=n}},{key:"getData",value:function(){return this.data+btoa(this.pending)}}]),e}(pH),IH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;return Pa(this,e),(n=i.call(this)).blob=t,n.size=t.size,n}return Ja(e,[{key:"readUint8Array",value:function(t,i){try{var e=this;if(e.blob.arrayBuffer)return MW(e.blob.slice(t,t+i).arrayBuffer(),(function(t){return new Uint8Array(t)}));var n=new FileReader;return MW(new Promise((function(r,c){n.onload=function(t){return r(new Uint8Array(t.target.result))},n.onerror=function(){return c(n.error)},n.readAsArrayBuffer(e.blob.slice(t,t+i))})))}catch(t){return Promise.reject(t)}}}]),e}(bH),GH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;return Pa(this,e),(n=i.call(this)).contentType=t,n.arrayBuffersMaxlength=8,KH(Ua(n)),n}return Ja(e,[{key:"writeUint8Array",value:function(t){za(Ra(e.prototype),"writeUint8Array",this).call(this,t),this.arrayBuffers.length==this.arrayBuffersMaxlength&&WH(this),this.arrayBuffers.push(t.buffer)}},{key:"getData",value:function(){return this.blob||(this.arrayBuffers.length&&WH(this),this.blob=this.pendingBlob,KH(this)),this.blob}}]),e}(pH);function KH(t){t.pendingBlob=new Blob([],{type:t.contentType}),t.arrayBuffers=[]}function WH(t){var i;t.pendingBlob=new Blob([t.pendingBlob].concat(function(t){if(Array.isArray(t))return Oa(t)}(i=t.arrayBuffers)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||Qa(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),{type:t.contentType}),t.arrayBuffers=[]}var fH=function(){function t(i){Pa(this,t),this.readableStream=i,this.reader=i.getReader(),this.size=1/0,this.index=0,this.currentSize=0,this.pendingValue=new Uint8Array}return Ja(t,[{key:"init",value:function(){this.initialized=!0}},{key:"readUint8Array",value:function(t,i){try{var e=this;if(e.index!=t)throw Error(rH);var n,r=new Uint8Array(i),c=0;return MW(DW(zW((function(){return MW(e.reader.read(),(function(t){var d=t.value;if(n=t.done,d?e.currentSize+=d.length:(d=e.pendingValue,e.pendingValue=new Uint8Array),e.pendingValue.length){var l=new Uint8Array(e.pendingValue.length+d.length);l.set(e.pendingValue),l.set(d,e.pendingValue.length),e.pendingValue=new Uint8Array,d=l}c+d.length>i?(r.set(d.subarray(0,i),c),e.pendingValue=d.subarray(i),c+=i):(r.set(d,c),c+=d.length)}))}),(function(){return i>c&&!n})),(function(){return n&&e.size==1/0&&(e.size=e.currentSize),e.size<i&&(r=r.slice(0,e.size),i=e.size),e.index+=i,r})))}catch(t){return Promise.reject(t)}}}]),t}(),SH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;return Pa(this,e),(n=i.call(this)).writableStream=t,n.writer=t.getWriter(),n}return Ja(e,[{key:"writeUint8Array",value:function(t){try{var i=this;return MW(i.writer.ready,(function(){return i.writer.write(t)}))}catch(t){return Promise.reject(t)}}},{key:"getData",value:function(){try{var t=this;return MW(t.writer.ready,(function(){return MW(t.writer.close(),(function(){return t.writableStream}))}))}catch(t){return Promise.reject(t)}}}]),e}(pH),xH=function(t){Ma(e,t);var i=ja(e);function e(t,n){var r;return Pa(this,e),(r=i.call(this)).url=t,r.preventHeadRequest=n.preventHeadRequest,r.useRangeHeader=n.useRangeHeader,r.forceRangeRequests=n.forceRangeRequests,r.options=Object.assign({},n),delete r.options.preventHeadRequest,delete r.options.useRangeHeader,delete r.options.forceRangeRequests,delete r.options.useXHR,r}return Ja(e,[{key:"init",value:function(){try{var t=this;return za(Ra(e.prototype),"init",t).call(t),MW(RW(iH(t,Bg,$g)))}catch(t){return Promise.reject(t)}}},{key:"readUint8Array",value:function(t,i){return tH(this,t,i,Bg,$g)}}]),e}(bH),wH=function(t){Ma(e,t);var i=ja(e);function e(t,n){var r;return Pa(this,e),(r=i.call(this)).url=t,r.preventHeadRequest=n.preventHeadRequest,r.useRangeHeader=n.useRangeHeader,r.forceRangeRequests=n.forceRangeRequests,r.options=n,r}return Ja(e,[{key:"init",value:function(){try{var t=this;return za(Ra(e.prototype),"init",t).call(t),MW(RW(iH(t,TH,_g)))}catch(t){return Promise.reject(t)}}},{key:"readUint8Array",value:function(t,i){return tH(this,t,i,TH,_g)}}]),e}(bH);function YH(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Object.assign({},VH(t),ka({},uH,mH+"="+i+"-"+(i+e-1)))}function VH(t){var i=t.options.headers;if(i)return Symbol.iterator in i?Object.fromEntries(i):i}function TH(t,i,e){var n=i.url;return new Promise((function(i,r){var c=new XMLHttpRequest;if(c.addEventListener("load",(function(){if(400>c.status){var t=[];c.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach((function(i){var e=i.trim().split(/\s*:\s*/);e[0]=e[0].trim().replace(/^[a-z]|-[a-z]/g,(function(t){return t.toUpperCase()})),t.push(e)})),i({status:c.status,arrayBuffer:function(){return c.response},headers:new Map(t)})}else r(Error(eH+(c.statusText||c.status)))}),!1),c.addEventListener("error",(function(t){return r(t.detail.error)}),!1),c.open(t,n),e)for(var d=0,l=Object.entries(e);d<l.length;d++){var o=l[d];c.setRequestHeader(o[0],o[1])}c.responseType="arraybuffer",c.send()}))}var gH=function(t){Ma(e,t);var i=ja(e);function e(t){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Pa(this,e),(n=i.call(this)).url=t,r.useXHR?n.reader=new wH(t,r):n.reader=new xH(t,r),n}return Ja(e,[{key:"size",get:function(){return this.reader.size},set:function(){}},{key:"init",value:function(){try{var t=this;return za(Ra(e.prototype),"init",t).call(t),MW(RW(t.reader.init()))}catch(t){return Promise.reject(t)}}},{key:"readUint8Array",value:function(t,i){return this.reader.readUint8Array(t,i)}}]),e}(bH),HH=function(t){Ma(e,t);var i=ja(e);function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Pa(this,e),n.useRangeHeader=!0,i.call(this,t,n)}return Ja(e)}(gH),vH=function(t){Ma(e,t);var i=ja(e);function e(t){var n;return Pa(this,e),(n=i.call(this)).array=t,n.size=t.length,n}return Ja(e,[{key:"readUint8Array",value:function(t,i){return this.array.slice(t,t+i)}}]),e}(bH),PH=function(t){Ma(e,t);var i=ja(e);function e(){var t;return Pa(this,e),(t=i.call(this)).array=new Uint8Array(0),t}return Ja(e,[{key:"writeUint8Array",value:function(t){za(Ra(e.prototype),"writeUint8Array",this).call(this,t);var i=this.array;this.array=new Uint8Array(i.length+t.length),this.array.set(i),this.array.set(t,i.length)}},{key:"getData",value:function(){return this.array}}]),e}(pH),CH=Nn,JH=K,kH=r.f,MH=Ae,RH=ud,DH=lf,UH=v,NH=uf,jH=JH("".endsWith),FH=JH("".slice),zH=Math.min,EH=NH("endsWith"),QH=!EH&&!!function(){var t=kH(String.prototype,"endsWith");return t&&!t.writable}();CH({target:"String",proto:!0,forced:!QH&&!EH},{endsWith:function(t){var i=RH(UH(this));DH(t);var e=arguments.length>1?arguments[1]:void 0,n=i.length,r=void 0===e?n:zH(MH(e),n),c=RH(t);return jH?jH(i,c,r):FH(i,r-c.length,r)===c}});var OH=4294967295,BH=65535,AH=67324752,qH=33639248,_H=101010256,$H=101075792,tv=117853008,iv=20,ev=56,nv=21589,rv=2048,cv="/",dv=new Date(2107,11,31),lv=new Date(1980,0,1),ov="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function uv(t,i){if(i&&"cp437"==i.trim().toLowerCase())return function(t){for(var i="",e=0;e<t.length;e++)i+=ov[t[e]];return i}(t);if("undefined"==typeof TextDecoder){var e=new FileReader;return new Promise((function(i,n){e.onload=function(t){return i(t.target.result)},e.onerror=function(){return n(e.error)},e.readAsText(new Blob([t]))}))}return new TextDecoder(i).decode(t)}var sv=kW((function(t,i){return QW((function(){if(i.length)return RW(t.writeUint8Array(i))}),(function(){return i.length}))})),av=kW((function(t,i,e,n,r,c,d){var l=kW((function(){var c=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=d.signal,a=r();return a>c?(bv(s,t),MW(i.readUint8Array(c+n,Math.min(o,a-c)),(function(i){var n=i.length;return bv(s,t),MW(t.append(i),(function(i){return bv(s,t),MW(sv(e,i),(function(t){if(u+=t,d.onprogress)try{d.onprogress(c+n,a)}catch(t){}return l(c+o,u)}))}))}))):MW(t.flush(),(function(t){return MW(sv(e,t.data),(function(i){return u+=i,{signature:t.signature,length:u}}))}))})),o=Math.max(c.chunkSize,mv);return l()})),mv=64,yv="Abort error";function bv(t,i){if(t&&t.aborted)throw i.abort(),Error(yv)}var pv=["filename","rawFilename","directory","encrypted","compressedSize","uncompressedSize","lastModDate","rawLastModDate","comment","rawComment","signature","extraField","rawExtraField","bitFlag","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","filenameUTF8","commentUTF8","offset","zip64","compressionMethod","extraFieldNTFS","lastAccessDate","creationDate","extraFieldExtendedTimestamp","version","versionMadeBy","msDosCompatible","internalFileAttribute","externalFileAttribute"],hv=Ja((function t(i){var e=this;Pa(this,t),pv.forEach((function(t){return e[t]=i[t]}))})),Zv=kW((function(t,i,e,n,r){var c,d=kW((function(i){var r=e-i;return MW(Fv(t,r,i),(function(t){for(var i=t.length-n;i>=0;i--)if(t[i]==l[0]&&t[i+1]==l[1]&&t[i+2]==l[2]&&t[i+3]==l[3])return{offset:r+i,buffer:t.slice(i,i+n).buffer}}))})),l=new Uint8Array(4);c=i,jv(l).setUint32(0,c,!0);var o=n+r;return MW(d(n),(function(t){return MW(t||d(Math.min(o,e)),void 0,t)}))})),Lv=kW((function(t,i,e,n,r){var c=jv(t.data);t.version=Rv(c,0),t.signature=Uv(c,1);var d=new xf;d.append(r[e]);var l=jv(new Uint8Array(4));return l.setUint32(0,d.get(),!0),MW(uv(t.data.subarray(5)),(function(e){t[i]=e,t.valid=!r.bitFlag.languageEncodingFlag&&t.signature==Uv(l,0),t.valid&&(n[i]=t[i],n[i+"UTF8"]=!0)}))})),Xv=kW((function(t,i,e,n){var r=i.rawExtraField,c=i.extraField=new Map,d=jv(new Uint8Array(r)),l=0;try{for(;l<r.length;){var o=Dv(d,l),u=Dv(d,l+2);c.set(o,{type:o,data:r.slice(l+4,l+4+u)}),l+=4+u}}catch(t){}var s=Dv(e,n+4);i.signature=Uv(e,n+10),i.uncompressedSize=Uv(e,n+18),i.compressedSize=Uv(e,n+14);var a=c.get(1);a&&(function(t,i){i.zip64=!0;var e=jv(t.data);t.values=[];for(var n=0;n<Math.floor(t.data.length/8);n++)t.values.push(Nv(e,0+8*n));for(var r=Hv.filter((function(t){return i[t]==OH})),c=0;c<r.length;c++)t[r[c]]=t.values[c];Hv.forEach((function(e){if(i[e]==OH){if(void 0===t[e])throw Error(xv);i[e]=t[e]}}))}(a,i),i.extraFieldZip64=a);var m=c.get(28789);return QW((function(){if(m)return MW(Lv(m,"filename","rawFilename",i,t),(function(){i.extraFieldUnicodePath=m}))}),(function(){var e=c.get(25461);return QW((function(){if(e)return MW(Lv(e,"comment","rawComment",i,t),(function(){i.extraFieldUnicodeComment=e}))}),(function(){var t=c.get(39169);t?(function(t,i,e){var n=jv(t.data);t.vendorVersion=Rv(n,0),t.vendorId=Rv(n,2);var r=Rv(n,4);t.strength=r,t.originalCompressionMethod=e,i.compressionMethod=t.compressionMethod=Dv(n,5)}(t,i,s),i.extraFieldAES=t):i.compressionMethod=s;var e=c.get(10);e&&(function(t,i){var e,n=jv(t.data),r=4;try{for(;r<t.data.length&&!e;){var c=Dv(n,r),d=Dv(n,r+2);1==c&&(e=t.data.slice(r+4,r+4+d)),r+=4+d}}catch(t){}try{if(e&&24==e.length){var l=jv(e),o=l.getBigUint64(0,!0),u=l.getBigUint64(8,!0),s=l.getBigUint64(16,!0);Object.assign(t,{rawLastModDate:o,rawLastAccessDate:u,rawCreationDate:s});var a={lastModDate:Mv(o),lastAccessDate:Mv(u),creationDate:Mv(s)};Object.assign(t,a),Object.assign(i,a)}}catch(t){}}(e,i),i.extraFieldNTFS=e);var n=c.get(nv);n&&(function(t,i){var e=jv(t.data),n=Rv(e,0),r=[],c=[];1==(1&n)&&(r.push("lastModDate"),c.push("rawLastModDate")),2==(2&n)&&(r.push("lastAccessDate"),c.push("rawLastAccessDate")),4==(4&n)&&(r.push("creationDate"),c.push("rawCreationDate"));var d=1;r.forEach((function(n,r){if(t.data.length>=d+4){var l=Uv(e,d);i[n]=t[n]=new Date(1e3*l);var o=c[r];t[o]=l}d+=4}))}(n,i),i.extraFieldExtendedTimestamp=n)}))}))})),Iv="File format is not recognized",Gv="End of central directory not found",Kv="End of Zip64 central directory not found",Wv="End of Zip64 central directory locator not found",fv="Central directory header not found",Sv="Local file header not found",xv="Zip64 extra field not found",wv="File contains encrypted entry",Yv="Encryption method not supported",Vv="Compression method not supported",Tv="utf-8",gv="cp437",Hv=["uncompressedSize","compressedSize","offset"],vv=function(){function t(i){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Pa(this,t),Object.assign(this,{reader:i,options:e,config:dr()})}return Ja(t,[{key:"getEntriesGenerator",value:function(){var t=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Ha(Va().mark((function e(){var n,r,c,d,l,o,u,s,a,m,y,b,p,h,Z,L,X,I,G,K,W;return Va().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((r=(n=t).reader).initialized){e.next=5;break}return e.next=5,va(r.init());case 5:if(r.size>=22){e.next=7;break}throw Error(Iv);case 7:return e.next=9,va(Zv(r,_H,r.size,22,1048560));case 9:if(c=e.sent){e.next=12;break}throw Error(Gv);case 12:if(d=jv(c),l=Uv(d,12),o=Uv(d,16),u=Dv(d,8),s=0,o!=OH&&l!=OH&&u!=BH){e.next=43;break}return e.next=20,va(Fv(r,c.offset-iv,iv));case 20:if(a=e.sent,Uv(m=jv(a),0)==tv){e.next=24;break}throw Error(Kv);case 24:return o=Nv(m,8),e.next=27,va(Fv(r,o,ev));case 27:if(y=e.sent,b=jv(y),p=c.offset-iv-ev,Uv(b,0)==$H||o==p){e.next=38;break}return h=o,s=(o=p)-h,e.next=36,va(Fv(r,o,ev));case 36:y=e.sent,b=jv(y);case 38:if(Uv(b,0)==$H){e.next=40;break}throw Error(Wv);case 40:u=Nv(b,32),l=Nv(b,40),o-=l;case 43:if(o>=0&&o<r.size){e.next=45;break}throw Error(Iv);case 45:return Z=0,e.next=48,va(Fv(r,o,l));case 48:if(L=e.sent,X=jv(L),!l){e.next=60;break}if(I=c.offset-l,Uv(X,Z)==qH||o==I){e.next=60;break}return G=o,s=(o=I)-G,e.next=58,va(Fv(r,o,l));case 58:L=e.sent,X=jv(L);case 60:if(o>=0&&o<r.size){e.next=62;break}throw Error(Iv);case 62:K=Va().mark((function t(e){var c,d,l,o,a,m,y,b,p,h,I,G,K,W,f;return Va().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=new Pv(r,n.config,n.options),Uv(X,Z)==qH){t.next=3;break}throw Error(fv);case 3:return Cv(c,X,Z+6),d=!!c.bitFlag.languageEncodingFlag,o=(l=Z+46)+c.filenameLength,a=o+c.extraFieldLength,m=Dv(X,Z+4),Object.assign(c,{versionMadeBy:m,msDosCompatible:y=0==(0&m),compressedSize:0,uncompressedSize:0,commentLength:Dv(X,Z+32),directory:y&&16==(16&Rv(X,Z+38)),offset:Uv(X,Z+42)+s,internalFileAttribute:Uv(X,Z+34),externalFileAttribute:Uv(X,Z+38),rawFilename:L.subarray(l,o),filenameUTF8:d,commentUTF8:d,rawExtraField:L.subarray(o,a)}),b=a+c.commentLength,c.rawComment=L.subarray(a,b),p=Jv(n,i,"filenameEncoding"),h=Jv(n,i,"commentEncoding"),t.next=17,va(Promise.all([uv(c.rawFilename,c.filenameUTF8?Tv:p||gv),uv(c.rawComment,c.commentUTF8?Tv:h||gv)]));case 17:return I=t.sent,G=Ea(I,2),K=G[0],W=G[1],c.filename=K,c.comment=W,!c.directory&&c.filename.endsWith(cv)&&(c.directory=!0),t.next=26,va(Xv(c,c,X,Z+6));case 26:if((f=new hv(c)).getData=function(t,i){return c.getData(t,f,i)},Z=b,i.onprogress)try{i.onprogress(e+1,u,new hv(c))}catch(t){}return t.next=32,f;case 32:case"end":return t.stop()}}),t)})),W=0;case 64:if(W>=u){e.next=69;break}return e.delegateYield(K(W),"t0",66);case 66:W++,e.next=64;break;case 69:return e.abrupt("return",!0);case 70:case"end":return e.stop()}}),e)})))()}},{key:"getEntries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var i=this,e=[],n=i.getEntriesGenerator(t),r=n.next();return MW(DW(FW((function(){return MW(!!r,(function(t){return!t.done}))}),void 0,(function(){var t=e.push;return MW(r,(function(i){t.call(e,i.value),r=n.next()}))})),(function(){return e})))}catch(t){return Promise.reject(t)}}},{key:"close",value:function(){return MW()}}]),t}(),Pv=function(){function t(i,e,n){Pa(this,t),Object.assign(this,{reader:i,config:e,options:n})}return Ja(t,[{key:"getData",value:function(t,i){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{var n=this,r=n,c=r.reader,d=r.offset,l=r.extraFieldAES,o=r.compressionMethod,u=r.config,s=r.bitFlag,a=r.signature,m=r.rawLastModDate,y=r.compressedSize,b=r.localDirectory={};return MW(QW((function(){if(!c.initialized)return RW(c.init())}),(function(){return MW(Fv(c,d,30),(function(n){var p=jv(n),h=Jv(r,e,"password");if(h=h&&h.length&&h,l&&99!=l.originalCompressionMethod)throw Error(Vv);if(0!=o&&8!=o)throw Error(Vv);if(Uv(p,0)!=AH)throw Error(Sv);return Cv(b,p,4),MW(Fv(c,d,30+b.filenameLength+b.extraFieldLength),(function(Z){return n=Z,b.rawExtraField=n.subarray(30+b.filenameLength),MW(Xv(r,b,p,4),(function(){i.lastAccessDate=b.lastAccessDate,i.creationDate=b.creationDate;var n=r.encrypted&&b.encrypted,p=n&&!l;if(n){if(!p&&void 0===l.strength)throw Error(Yv);if(!h)throw Error(wv)}return MW(dx(u.Inflate,{codecType:BS,password:h,zipCrypto:p,encryptionStrength:l&&l.strength,signed:Jv(r,e,"checkSignature"),passwordVerification:p&&(s.dataDescriptor?m>>>8&255:a>>>24&255),signature:a,compressed:0!=o,encrypted:n,useWebWorkers:Jv(r,e,"useWebWorkers")},u),(function(i){return QW((function(){if(!t.initialized)return RW(t.init())}),(function(){var n=Jv(r,e,"signal"),l=d+30+b.filenameLength+b.extraFieldLength;return MW(av(i,c,t,l,(function(){return y}),u,{onprogress:e.onprogress,signal:n}),(function(){return t.getData()}))}))}))}))}))}))})))}catch(t){return Promise.reject(t)}}}]),t}();function Cv(t,i,e){var n=t.rawBitFlag=Dv(i,e+2),r=1==(1&n),c=Uv(i,e+6);Object.assign(t,{encrypted:r,version:Dv(i,e),bitFlag:{level:(6&n)>>1,dataDescriptor:8==(8&n),languageEncodingFlag:(n&rv)==rv},rawLastModDate:c,lastModDate:kv(c),filenameLength:Dv(i,e+22),extraFieldLength:Dv(i,e+24)})}function Jv(t,i,e){return void 0===i[e]?t.options[e]:i[e]}function kv(t){var i=(4294901760&t)>>16,e=65535&t;try{return new Date(1980+((65024&i)>>9),((480&i)>>5)-1,31&i,(63488&e)>>11,(2016&e)>>5,2*(31&e),0)}catch(t){}}function Mv(t){return new Date(Number(t/BigInt(1e4)-BigInt(116444736e5)))}function Rv(t,i){return t.getUint8(i)}function Dv(t,i){return t.getUint16(i,!0)}function Uv(t,i){return t.getUint32(i,!0)}function Nv(t,i){return Number(t.getBigUint64(i,!0))}function jv(t){return new DataView(t.buffer)}function Fv(t,i,e){return t.readUint8Array(i,e)}wg("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Dg);var zv=d,Ev=Ni.EXISTS,Qv=K,Ov=Ii.f,Bv=Function.prototype,Av=Qv(Bv.toString),qv=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,_v=Qv(qv.exec);zv&&!Ev&&Ov(Bv,"name",{configurable:!0,get:function(){try{return _v(qv,Av(this))[1]}catch(t){return""}}}),(0,Ty.exports)("Uint16",(function(t){return function(i,e,n){return t(this,i,e,n)}}));var $v=kW((function(t,i){var e=kW((function(){return OW((function(){if(n<i.size)return MW(ZP(i,n,n+r),(function(i){return MW(t.writeUint8Array(new Uint8Array(i)),(function(){return n+=r,EW(e)}))}))}))})),n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=536870912;return EW(e)})),tP=kW((function(t,i,e){var n,r=t.writer,c=t.files,d=0,l=0,o=t.offset,u=c.size,s=Ba(c);try{for(s.s();!(n=s.n()).done;){var a=Ea(n.value,2)[1];l+=46+a.rawFilename.length+a.rawComment.length+a.rawExtraFieldZip64.length+a.rawExtraFieldAES.length+a.rawExtraFieldExtendedTimestamp.length+a.rawExtraFieldNTFS.length+a.rawExtraField.length}}catch(t){s.e(t)}finally{s.f()}var m=e.zip64||t.options.zip64||!1;if(o>=OH||l>=OH||u>=BH){if(!1===e.zip64||!1===t.options.zip64)throw Error(mP);m=!0}var y=new Uint8Array(l+(m?98:22)),b=SP(y);if(i&&i.length){if(i.length>BH)throw Error(cP);GP(b,d+20,i.length)}var p,h=Ba(Array.from(c.values()).entries());try{for(h.s();!(p=h.n()).done;){var Z=Ea(p.value,2),L=Z[0],X=Z[1],I=X.rawFilename,G=X.rawExtraFieldZip64,K=X.rawExtraFieldAES,W=X.rawExtraField,f=X.rawComment,S=X.versionMadeBy,x=X.headerArray,w=X.directory,Y=X.zip64,V=X.msDosCompatible,T=X.internalFileAttribute,g=X.externalFileAttribute,H=void 0,v=void 0;if(X.extendedTimestamp){v=X.rawExtraFieldNTFS;var P=SP(H=new Uint8Array(9));GP(P,0,nv),GP(P,2,H.length-4),IP(P,4,1),KP(P,5,Math.floor(X.lastModDate.getTime()/1e3))}else v=H=new Uint8Array(0);var C=G.length+K.length+H.length+v.length+W.length;if(KP(b,d,qH),GP(b,d+4,S),fP(y,x,d+6),GP(b,d+30,C),GP(b,d+32,f.length),KP(b,d+34,T),g?KP(b,d+38,g):w&&V&&IP(b,d+38,16),KP(b,d+42,Y?OH:X.offset),fP(y,I,d+46),fP(y,G,d+46+I.length),fP(y,K,d+46+I.length+G.length),fP(y,H,d+46+I.length+G.length+K.length),fP(y,v,d+46+I.length+G.length+K.length+H.length),fP(y,W,d+46+I.length+G.length+K.length+H.length+v.length),fP(y,f,d+46+I.length+C),d+=46+I.length+C+f.length,e.onprogress)try{e.onprogress(L+1,c.size,new hv(X))}catch(t){}}}catch(t){h.e(t)}finally{h.f()}return m&&(KP(b,d,$H),WP(b,d+4,BigInt(44)),GP(b,d+12,45),GP(b,d+14,45),WP(b,d+24,BigInt(u)),WP(b,d+32,BigInt(u)),WP(b,d+40,BigInt(l)),WP(b,d+48,BigInt(o)),KP(b,d+56,tv),WP(b,d+64,BigInt(o)+BigInt(l)),KP(b,d+72,1),u=BH,o=OH,l=OH,d+=76),KP(b,d,_H),GP(b,d+8,u),GP(b,d+10,u),KP(b,d+12,l),KP(b,d+16,o),MW(r.writeUint8Array(y),(function(){return OW((function(){if(i&&i.length)return RW(r.writeUint8Array(i))}))}))})),iP=kW((function(t,i,e,n){var r,c,d,l=n.rawFilename,o=n.lastAccessDate,u=n.creationDate,s=n.password,a=n.level,m=n.zip64,y=n.zipCrypto,b=n.dataDescriptor,p=n.dataDescriptorSignature,h=n.directory,Z=n.version,L=n.versionMadeBy,X=n.rawComment,I=n.rawExtraField,G=n.useWebWorkers,K=n.onprogress,W=n.signal,f=n.encryptionStrength,S=n.extendedTimestamp,x=n.msDosCompatible,w=n.internalFileAttribute,Y=n.externalFileAttribute,V=!(!s||!s.length),T=0!==a&&!h;if(V&&!y){var g=SP(r=new Uint8Array(yP.length+2));GP(g,0,39169),fP(r,yP,2),IP(g,8,f)}else r=new Uint8Array(0);if(S){var H=SP(d=new Uint8Array(9+(o?4:0)+(u?4:0)));GP(H,0,nv),GP(H,2,d.length-4),IP(H,4,1+(o?2:0)+(u?4:0)),KP(H,5,Math.floor(n.lastModDate.getTime()/1e3)),o&&KP(H,9,Math.floor(o.getTime()/1e3)),u&&KP(H,13,Math.floor(u.getTime()/1e3));try{var v=SP(c=new Uint8Array(36)),P=LP(n.lastModDate);GP(v,0,10),GP(v,2,32),GP(v,8,1),GP(v,10,24),WP(v,12,P),WP(v,20,LP(o)||P),WP(v,28,LP(u)||P)}catch(t){c=new Uint8Array(0)}}else c=d=new Uint8Array(0);var C={version:Z||20,versionMadeBy:L,zip64:m,directory:!!h,filenameUTF8:!0,rawFilename:l,commentUTF8:!0,rawComment:X,rawExtraFieldZip64:m?new Uint8Array(bP+4):new Uint8Array(0),rawExtraFieldExtendedTimestamp:d,rawExtraFieldNTFS:c,rawExtraFieldAES:r,rawExtraField:I,extendedTimestamp:S,msDosCompatible:x,internalFileAttribute:w,externalFileAttribute:Y},J=C.uncompressedSize=0,k=rv;b&&(k|=8);var M=0;T&&(M=8),m&&(C.version=C.version>45?C.version:45),V&&(k|=1,y||(C.version=C.version>51?C.version:51,M=99,T&&(C.rawExtraFieldAES[9]=8))),C.compressionMethod=M;var R=C.headerArray=new Uint8Array(26),D=SP(R);GP(D,0,C.version),GP(D,2,k),GP(D,4,M);var U,N=new Uint32Array(1),j=SP(N);GP(j,0,((U=n.lastModDate<lv?lv:n.lastModDate>dv?dv:n.lastModDate).getHours()<<6|U.getMinutes())<<5|U.getSeconds()/2),GP(j,2,(U.getFullYear()-1980<<4|U.getMonth()+1)<<5|U.getDate());var F=N[0];KP(D,6,F),GP(D,22,l.length);var z=r.length+d.length+c.length+C.rawExtraField.length;GP(D,24,z);var E,Q=new Uint8Array(30+l.length+z);KP(SP(Q),0,AH),fP(Q,R,4),fP(Q,l,30),fP(Q,r,30+l.length),fP(Q,d,30+l.length+r.length),fP(Q,c,30+l.length+r.length+d.length),fP(Q,C.rawExtraField,30+l.length+r.length+d.length+c.length);var O=0;return QW((function(){return t?MW(dx(e.Deflate,{codecType:OS,level:a,password:s,encryptionStrength:f,zipCrypto:V&&y,passwordVerification:V&&y&&F>>8&255,signed:!0,compressed:T,encrypted:V,useWebWorkers:G},e),(function(n){return MW(i.writeUint8Array(Q),(function(){return C.dataWritten=!0,MW(av(n,t,i,0,(function(){return t.size}),e,{onprogress:K,signal:W}),(function(i){E=i,J=C.uncompressedSize=t.size,O=E.length}))}))})):MW(i.writeUint8Array(Q),(function(){C.dataWritten=!0}))}),(function(){var e,n=new Uint8Array(0),r=0;if(b&&(e=SP(n=new Uint8Array(m?p?24:20:p?16:12)),p&&(r=4,KP(e,0,134695760))),t){var c=E.signature;if(V&&!y||void 0===c||(KP(D,10,c),C.signature=c,b&&KP(e,r,c)),m){var d=SP(C.rawExtraFieldZip64);GP(d,0,1),GP(d,2,bP),KP(D,14,OH),WP(d,12,BigInt(O)),KP(D,18,OH),WP(d,4,BigInt(J)),b&&(WP(e,r+4,BigInt(O)),WP(e,r+12,BigInt(J)))}else KP(D,14,O),KP(D,18,J),b&&(KP(e,r+4,O),KP(e,r+8,J))}return QW((function(){if(b)return RW(i.writeUint8Array(n))}),(function(){var t=Q.length+O+n.length;return Object.assign(C,{compressedSize:O,lastModDate:U,rawLastModDate:F,creationDate:u,lastAccessDate:o,encrypted:V,length:t}),C}))}))})),eP=kW((function(t,i,e,n){var r,c,d,l=t.files,o=t.writer,u=Array.from(l.values()).pop(),s={};return l.set(i,s),AW((function(){return BW((function(){var a,m,y;return n.keepOrder&&(a=u&&u.lock),s.lock=y=new Promise((function(t){return d=t})),QW((function(){if(!n.bufferedWrite&&!t.lockWrite&&n.dataDescriptor)return t.lockWrite=new Promise((function(t){return c=t})),QW((function(){if(!o.initialized)return RW(o.init())}),(function(){m=o}));(m=new GH).init(),r=!0}),(function(){return MW(iP(e,m,t.config,n),(function(e){return(s=e).lock=y,l.set(i,s),s.filename=i,QW((function(){if(r){var i=0,e=m.getData();return MW(Promise.all([t.lockWrite,a]),(function(){var t;return DW(zW((function(){return t=Array.from(l.values()).find((function(t){return t.writingBufferedData})),OW((function(){if(t)return RW(t.lock)}))}),(function(){return!!t&&!!t.lock})),(function(){return s.writingBufferedData=!0,QW((function(){if(!n.dataDescriptor)return MW(ZP(e,0,26),(function(t){var e=new DataView(t);return s.encrypted&&!n.zipCrypto||KP(e,14,s.signature),s.zip64?(KP(e,18,OH),KP(e,22,OH)):(KP(e,18,s.compressedSize),KP(e,22,s.uncompressedSize)),MW(o.writeUint8Array(new Uint8Array(t)),(function(){i=26}))}))}),(function(){return MW($v(o,e,i),(function(){delete s.writingBufferedData}))}))}))}))}}),(function(){if(s.offset=t.offset,s.zip64)WP(SP(s.rawExtraFieldZip64),20,BigInt(s.offset));else if(s.offset>=OH)throw Error(mP);return t.offset+=s.length,s}))}))}))}),(function(e){throw(r&&s.writingBufferedData||!r&&s.dataWritten)&&(e.corruptedEntry=t.hasCorruptedEntries=!0,s.uncompressedSize&&(t.offset+=s.uncompressedSize)),l.delete(i),e}))}),(function(t,i){return d(),c&&c(),qW(t,i)}))})),nP=kW((function(t,i,e,n){if(i=i.trim(),n.directory&&!i.endsWith(cv)?i+=cv:n.directory=i.endsWith(cv),t.files.has(i))throw Error(rP);var r=Yf(i);if(r.length>BH)throw Error(lP);var c=n.comment||"",d=Yf(c);if(d.length>BH)throw Error(dP);var l=t.options.version||n.version||0;if(l>BH)throw Error(oP);var o=t.options.versionMadeBy||n.versionMadeBy||20;if(o>BH)throw Error(oP);var u=XP(t,n,"lastModDate")||new Date,s=XP(t,n,"lastAccessDate"),a=XP(t,n,"creationDate"),m=XP(t,n,"password"),y=XP(t,n,"encryptionStrength")||3,b=XP(t,n,"zipCrypto");if(void 0!==m&&void 0!==y&&(1>y||y>3))throw Error(uP);var p=new Uint8Array(0),h=n.extraField;if(h){var Z=0,L=0;h.forEach((function(t){return Z+=4+t.length})),p=new Uint8Array(Z),h.forEach((function(t,i){if(i>BH)throw Error(sP);if(t.length>BH)throw Error(aP);fP(p,new Uint16Array([i]),L),fP(p,new Uint16Array([t.length]),L+2),fP(p,t,L+4),L+=4+t.length}))}var X=XP(t,n,"extendedTimestamp");void 0===X&&(X=!0);var I=0,G=XP(t,n,"keepOrder");void 0===G&&(G=!0);var K=0,W=XP(t,n,"msDosCompatible");void 0===W&&(W=!0);var f=XP(t,n,"internalFileAttribute")||0,S=XP(t,n,"externalFileAttribute")||0;return QW((function(){if(e)return QW((function(){if(!e.initialized)return RW(e.init())}),(function(){K=e.size,I=function(t){return t+5*(Math.floor(t/16383)+1)}(K)}))}),(function(){var Z=n.zip64||t.options.zip64||!1;if(t.offset+t.pendingCompressedSize>=OH||K>=OH||I>=OH){if(!1===n.zip64||!1===t.options.zip64||!G)throw Error(mP);Z=!0}return t.pendingCompressedSize+=I,MW(Promise.resolve(),(function(){var L=XP(t,n,"level"),K=XP(t,n,"useWebWorkers"),x=XP(t,n,"bufferedWrite"),w=XP(t,n,"dataDescriptor"),Y=XP(t,n,"dataDescriptorSignature"),V=XP(t,n,"signal");return void 0===w&&(w=!0),w&&void 0===Y&&(Y=!1),MW(eP(t,i,e,Object.assign({},n,{rawFilename:r,rawComment:d,version:l,versionMadeBy:o,lastModDate:u,lastAccessDate:s,creationDate:a,rawExtraField:p,zip64:Z,password:m,level:L,useWebWorkers:K,encryptionStrength:y,extendedTimestamp:X,zipCrypto:b,bufferedWrite:x,keepOrder:G,dataDescriptor:w,dataDescriptorSignature:Y,signal:V,msDosCompatible:W,internalFileAttribute:f,externalFileAttribute:S})),(function(e){return I&&(t.pendingCompressedSize-=I),Object.assign(e,{name:i,comment:c,extraField:h}),new hv(e)}))}))}))})),rP="File already exists",cP="Zip file comment exceeds 64KB",dP="File entry comment exceeds 64KB",lP="File entry name exceeds 64KB",oP="Version exceeds 65535",uP="The strength must equal 1, 2, or 3",sP="Extra field type exceeds 65535",aP="Extra field data exceeds 64KB",mP="Zip64 is not supported",yP=new Uint8Array([7,0,2,0,65,69,3,0,0]),bP=24,pP=0,hP=function(){function t(i){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Pa(this,t),Object.assign(this,{writer:i,options:e,config:dr(),files:new Map,offset:i.size,pendingCompressedSize:0,pendingEntries:[],pendingAddFileCalls:new Set})}return Ja(t,[{key:"add",value:function(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{var r=this,c=r;return MW(pP<c.config.maxWorkers?(pP++,AW((function(){return t=nP(c,i,e,n),r.pendingAddFileCalls.add(t),MW(t)}),(function(i,e){r.pendingAddFileCalls.delete(t),pP--;var n=c.pendingEntries.shift();return n&&c.add(n.name,n.reader,n.options).then(n.resolve).catch(n.reject),qW(i,e)}))):new Promise((function(t,r){return c.pendingEntries.push({name:i,reader:e,options:n,resolve:t,reject:r})})))}catch(t){return Promise.reject(t)}}},{key:"close",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{var e=this;return void 0===t&&(t=new Uint8Array(0)),MW(DW(FW((function(){return!!e.pendingAddFileCalls.size}),void 0,(function(){return RW(Promise.all(Array.from(e.pendingAddFileCalls)))})),(function(){return MW(tP(e,t,i),(function(){return e.writer.getData()}))})))}catch(t){return Promise.reject(t)}}}]),t}();function ZP(t,i,e){if(t.arrayBuffer)return i||e?t.slice(i,e).arrayBuffer():t.arrayBuffer();var n=new FileReader;return new Promise((function(r,c){n.onload=function(t){return r(t.target.result)},n.onerror=function(){return c(n.error)},n.readAsArrayBuffer(i||e?t.slice(i,e):t)}))}function LP(t){if(t)return(BigInt(t.getTime())+BigInt(116444736e5))*BigInt(1e4)}function XP(t,i,e){return void 0===i[e]?t.options[e]:i[e]}function IP(t,i,e){t.setUint8(i,e)}function GP(t,i,e){t.setUint16(i,e,!0)}function KP(t,i,e){t.setUint32(i,e,!0)}function WP(t,i,e){t.setBigUint64(i,e,!0)}function fP(t,i,e){t.set(i,e)}function SP(t){return new DataView(t.buffer)}var xP=rp.map;Nn({target:"Array",proto:!0,forced:!YK("map")},{map:function(t){return xP(this,t,arguments.length>1?arguments[1]:void 0)}});var wP,YP=kW((function(t,i){var e=kW((function(t,i){return MW(function(t){return new Promise((function(i,e){var n=[];t.isDirectory&&function t(r){r.readEntries((function(e){e.length?(n=n.concat(e),t(r)):i(n)}),e)}(t.createReader()),t.isFile&&i(n)}))}(i),(function(i){return UW(jW(i,(function(i){return OW((function(){return i.isDirectory?RW(e(t.addDirectory(i.name),i)):RW(new Promise((function(e,n){i.file((function(n){var r=t.addBlob(i.name,n);r.uncompressedSize=n.size,e(r)}),n)})))}))})))}))}));if(i.isDirectory){var n=t.addDirectory(i.name);return MW(e(n,i),(function(){return n}))}return new Promise((function(e,n){return i.file((function(n){return e(t.addBlob(i.name,n))}),n)}))})),VP=kW((function(t,i,e,n){var r=kW((function(t,i){var l=kW((function(i){var l=n.relativePath?i.getRelativeName(c):i.getFullname();return MW(t.add(l,i.reader,Object.assign({directory:i.directory},Object.assign({},n,{onprogress:function(t){if(n.onprogress){d.set(l,t);try{n.onprogress(Array.from(d.values()).reduce((function(t,i){return t+i})),e)}catch(t){}}}}))),(function(){return RW(r(t,i))}))}));return EW(kW((function(){return OW((function(){return n.bufferedWrite?RW(Promise.all(i.children.map(l))):UW(jW(i.children,(function(t){return RW(l(t))})))}))})))})),c=i,d=new Map;return RW(r(t,i))})),TP=kW((function(t){return OW((function(){if(t.children.length)return UW(jW(t.children,(function(t){return OW((function(){return t.directory?RW(TP(t)):(t.reader=new t.Reader(t.data),MW(t.reader.init(),(function(){t.uncompressedSize=t.reader.size})))}))})))}))})),gP=524288,HP=function(){function t(i,e,n,r){Pa(this,t);var c=this;if(i.root&&r&&r.getChildByName(e))throw Error("Entry filename already exists");n||(n={}),Object.assign(c,{fs:i,name:e,data:n.data,id:i.entries.length,parent:r,children:[],uncompressedSize:0}),i.entries.push(c),r&&c.parent.children.push(c)}return Ja(t,[{key:"moveTo",value:function(t){this.fs.move(this,t)}},{key:"getFullname",value:function(){return this.getRelativeName()}},{key:"getRelativeName",value:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.fs.root,i=this,e=i.name,n=i.parent;n&&n!=t;)e=(n.name?n.name+"/":"")+e,n=n.parent;return e}},{key:"isDescendantOf",value:function(t){for(var i=this.parent;i&&i.id!=t.id;)i=i.parent;return!!i}}]),t}(),vP=function(t){Ma(e,t);var i=ja(e);function e(t,n,r,c){var d;Pa(this,e);var l=Ua(d=i.call(this,t,n,r,c));return l.Reader=r.Reader,l.Writer=r.Writer,r.getData&&(l.getData=r.getData),d}return Ja(e,[{key:"getData",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{var e=this,n=e;return!t||t.constructor==n.Writer&&n.data?MW(n.data):(n.reader=new n.Reader(n.data,i),MW(n.reader.init(),(function(){return QW((function(){if(!t.initialized)return RW(t.init())}),(function(){return n.uncompressedSize=n.reader.size,DP(n.reader,t)}))})))}catch(t){return Promise.reject(t)}}},{key:"getText",value:function(t,i){return this.getData(new ZH(t),i)}},{key:"getBlob",value:function(t,i){return this.getData(new GH(t),i)}},{key:"getData64URI",value:function(t,i){return this.getData(new XH(t),i)}},{key:"getUint8Array",value:function(t){return this.getData(new PH,t)}},{key:"replaceBlob",value:function(t){Object.assign(this,{data:t,Reader:IH,Writer:GH,reader:null})}},{key:"replaceText",value:function(t){Object.assign(this,{data:t,Reader:hH,Writer:ZH,reader:null})}},{key:"replaceData64URI",value:function(t){Object.assign(this,{data:t,Reader:LH,Writer:XH,reader:null})}},{key:"replaceUint8Array",value:function(t){Object.assign(this,{data:t,Reader:vH,Writer:PH,reader:null})}}]),e}(HP),PP=function(t){Ma(e,t);var i=ja(e);function e(t,n,r,c){var d;return Pa(this,e),(d=i.call(this,t,n,r,c)).directory=!0,d}return Ja(e,[{key:"addDirectory",value:function(t){return UP(this,t,null,!0)}},{key:"addText",value:function(t,i){return UP(this,t,{data:i,Reader:hH,Writer:ZH})}},{key:"addBlob",value:function(t,i){return UP(this,t,{data:i,Reader:IH,Writer:GH})}},{key:"addData64URI",value:function(t,i){return UP(this,t,{data:i,Reader:LH,Writer:XH})}},{key:"addUint8Array",value:function(t,i){return UP(this,t,{data:i,Reader:vH,Writer:PH})}},{key:"addHttpContent",value:function(t,i){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return UP(this,t,{data:i,Reader:function(t){Ma(n,t);var i=ja(n);function n(t){return Pa(this,n),i.call(this,t,e)}return Ja(n)}(gH)})}},{key:"addFileSystemEntry",value:function(t){return YP(this,t)}},{key:"addData",value:function(t,i){return UP(this,t,i)}},{key:"importBlob",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{var e=this;return MW(RW(e.importZip(new IH(t),i)))}catch(t){return Promise.reject(t)}}},{key:"importData64URI",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{var e=this;return MW(RW(e.importZip(new LH(t),i)))}catch(t){return Promise.reject(t)}}},{key:"importUint8Array",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{var e=this;return MW(RW(e.importZip(new vH(t),i)))}catch(t){return Promise.reject(t)}}},{key:"importHttpContent",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{var e=this;return MW(RW(e.importZip(new gH(t,i),i)))}catch(t){return Promise.reject(t)}}},{key:"exportBlob",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.exportZip(new GH("application/zip"),t)}},{key:"exportData64URI",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.exportZip(new XH("application/zip"),t)}},{key:"exportUint8Array",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.exportZip(new PH,t)}},{key:"importZip",value:function(t,i){try{var n=this;return MW(QW((function(){if(!t.initialized)return RW(t.init())}),(function(){return MW(new vv(t,i).getEntries(),(function(t){t.forEach((function(t){var r=n,c=t.filename.split("/"),d=c.pop();c.forEach((function(t){return r=r.getChildByName(t)||new e(n.fs,t,null,r)})),t.directory||UP(r,d,{data:t,Reader:kP(Object.assign({},i))})}))}))})))}catch(t){return Promise.reject(t)}}},{key:"exportZip",value:function(t,i){var e=this;return MW(TP(e),(function(){return MW(t.init(),(function(){var n,r=new hP(t,i);return MW(VP(r,e,(n=0,[e].forEach((function t(i){n+=i.uncompressedSize,i.children&&i.children.forEach(t)})),n),i),(function(){return MW(r.close(),(function(){return t.getData()}))}))}))}))}},{key:"getChildByName",value:function(t){for(var i=this.children,e=0;e<i.length;e++){var n=i[e];if(n.name==t)return n}}}]),e}(HP),CP=function(){function t(){Pa(this,t),RP(this)}return Ja(t,[{key:"children",get:function(){return this.root.children}},{key:"remove",value:function(t){MP(t),this.entries[t.id]=null}},{key:"move",value:function(t,i){if(t==this.root)throw Error("Root directory cannot be moved");if(!i.directory)throw Error("Target entry is not a directory");if(i.isDescendantOf(t))throw Error("Entry is a ancestor of target entry");if(t!=i){if(i.getChildByName(t.name))throw Error("Entry filename already exists");MP(t),t.parent=i,i.children.push(t)}}},{key:"find",value:function(t){for(var i=t.split("/"),e=this.root,n=0;e&&n<i.length;n++)e=e.getChildByName(i[n]);return e}},{key:"getById",value:function(t){return this.entries[t]}},{key:"getChildByName",value:function(t){return this.root.getChildByName(t)}},{key:"addDirectory",value:function(t){return this.root.addDirectory(t)}},{key:"addText",value:function(t,i){return this.root.addText(t,i)}},{key:"addBlob",value:function(t,i){return this.root.addBlob(t,i)}},{key:"addData64URI",value:function(t,i){return this.root.addData64URI(t,i)}},{key:"addHttpContent",value:function(t,i,e){return this.root.addHttpContent(t,i,e)}},{key:"addFileSystemEntry",value:function(t){return this.root.addFileSystemEntry(t)}},{key:"addData",value:function(t,i){return this.root.addData(t,i)}},{key:"importBlob",value:function(t,i){try{return RP(this),MW(RW(this.root.importBlob(t,i)))}catch(t){return Promise.reject(t)}}},{key:"importData64URI",value:function(t,i){try{return RP(this),MW(RW(this.root.importData64URI(t,i)))}catch(t){return Promise.reject(t)}}},{key:"importHttpContent",value:function(t,i){try{return RP(this),MW(RW(this.root.importHttpContent(t,i)))}catch(t){return Promise.reject(t)}}},{key:"exportBlob",value:function(t){return this.root.exportBlob(t)}},{key:"exportData64URI",value:function(t){return this.root.exportData64URI(t)}}]),t}(),JP={FS:CP,ZipDirectoryEntry:PP,ZipFileEntry:vP};function kP(t){return function(i){Ma(n,i);var e=ja(n);function n(t){var i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Pa(this,n),(i=e.call(this)).entry=t,i.options=r,i}return Ja(n,[{key:"init",value:function(){try{var i=this;return i.size=i.entry.uncompressedSize,MW(i.entry.getData(new GH,Object.assign({},i.options,t)),(function(t){i.data=t,i.blobReader=new IH(t)}))}catch(t){return Promise.reject(t)}}},{key:"readUint8Array",value:function(t,i){return this.blobReader.readUint8Array(t,i)}}]),n}(bH)}function MP(t){var i=t.parent.children;i.forEach((function(e,n){e.id==t.id&&i.splice(n,1)}))}function RP(t){t.entries=[],t.root=new PP(t)}function DP(t,i){var e=kW((function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=n*gP;return r<t.size?MW(t.readUint8Array(r,Math.min(gP,t.size-r)),(function(t){return MW(i.writeUint8Array(t),(function(){return e(n+1)}))})):i.getData()}));return e()}function UP(t,i,e,n){if(t.directory)return n?new PP(t.fs,i,e,t):new vP(t.fs,i,e,t);throw Error("Parent entry is not a directory")}try{wP="undefined"==typeof document&&void 0===pX?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?pX.href:document.currentScript&&document.currentScript.src||new URL("zip-fs-es5.min.js",document.baseURI).href}catch(t){}lr({baseURL:wP}),function(t){if("function"==typeof URL.createObjectURL){var i=function(){return URL.createObjectURL(new Blob([atob("dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjp7fSx0PWZ1bmN0aW9uKHIpe3JldHVybiByJiZyLk1hdGg9PU1hdGgmJnJ9LG49dCgib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHx0KCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHx0KCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fHQoIm9iamVjdCI9PXR5cGVvZiByJiZyKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxlPXt9LGk9ZnVuY3Rpb24ocil7dHJ5e3JldHVybiEhcigpfWNhdGNoKHIpe3JldHVybiEwfX0sbz0haSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpLHU9IWkoKGZ1bmN0aW9uKCl7dmFyIHI9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2Ygcnx8ci5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIil9KSksZj1mdW5jdGlvbigpe30uY2FsbCxhPXU/Zi5iaW5kKGYpOmZ1bmN0aW9uKCl7cmV0dXJuIGYuYXBwbHkoZixhcmd1bWVudHMpfSxjPXt9LHM9e30ucHJvcGVydHlJc0VudW1lcmFibGUsdj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGg9diYmIXMuY2FsbCh7MToyfSwxKTtjLmY9aD9mdW5jdGlvbihyKXt2YXIgdD12KHRoaXMscik7cmV0dXJuISF0JiZ0LnR9OnM7dmFyIGwsZCx5PWZ1bmN0aW9uKHIsdCl7cmV0dXJue3Q6ISgxJnIpLGk6ISgyJnIpLHdyaXRhYmxlOiEoNCZyKSx2YWx1ZTp0fX0sdz11LGI9RnVuY3Rpb24ucHJvdG90eXBlLHA9Yi5iaW5kLGc9Yi5jYWxsLG09dyYmcC5iaW5kKGcsZyksUz13P2Z1bmN0aW9uKHIpe3JldHVybiByJiZtKHIpfTpmdW5jdGlvbihyKXtyZXR1cm4gciYmZnVuY3Rpb24oKXtyZXR1cm4gZy5hcHBseShyLGFyZ3VtZW50cyl9fSxBPVMsaj1BKHt9LnRvU3RyaW5nKSxPPUEoIiIuc2xpY2UpLGs9ZnVuY3Rpb24ocil7cmV0dXJuIE8oaihyKSw4LC0xKX0sRT1pLFQ9ayx4PU9iamVjdCxVPVMoIiIuc3BsaXQpLE09RSgoZnVuY3Rpb24oKXtyZXR1cm4heCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKHIpe3JldHVybiJTdHJpbmciPT1UKHIpP1UociwiIik6eChyKX06eCxJPVR5cGVFcnJvcixMPWZ1bmN0aW9uKHIpe2lmKG51bGw9PXIpdGhyb3cgSSgiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIityKTtyZXR1cm4gcn0sUD1NLF89TCxSPWZ1bmN0aW9uKHIpe3JldHVybiBQKF8ocikpfSxGPWZ1bmN0aW9uKHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByfSxOPUYsQz1mdW5jdGlvbihyKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHI/bnVsbCE9PXI6TihyKX0sQj1uLEc9RixEPWZ1bmN0aW9uKHIpe3JldHVybiBHKHIpP3I6dm9pZCAwfSxWPWZ1bmN0aW9uKHIsdCl7cmV0dXJuIDI+YXJndW1lbnRzLmxlbmd0aD9EKEJbcl0pOkJbcl0mJkJbcl1bdF19LFk9Uyh7fS5pc1Byb3RvdHlwZU9mKSx6PVYoIm5hdmlnYXRvciIsInVzZXJBZ2VudCIpfHwiIixXPW4sJD16LEg9Vy5wcm9jZXNzLEs9Vy5vLHE9SCYmSC51fHxLJiZLLnZlcnNpb24sSj1xJiZxLnY7SiYmKGQ9KGw9Si5zcGxpdCgiLiIpKVswXT4wJiY0PmxbMF0/MTorKGxbMF0rbFsxXSkpLCFkJiYkJiYoKGw9JC5tYXRjaCgvRWRnZVwvKFxkKykvKSkmJjc0PmxbMV18fChsPSQubWF0Y2goL0Nocm9tZVwvKFxkKykvKSkmJihkPStsWzFdKSk7dmFyIFg9ZCxRPVgsWj0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFpKChmdW5jdGlvbigpe3ZhciByPVN5bWJvbCgpO3JldHVybiEocisiIil8fCEoT2JqZWN0KHIpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLmgmJlEmJjQxPlF9KSkscnI9WiYmIVN5bWJvbC5oJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcix0cj1WLG5yPUYsZXI9WSxpcj1PYmplY3Qsb3I9cnI/ZnVuY3Rpb24ocil7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiByfTpmdW5jdGlvbihyKXt2YXIgdD10cigiU3ltYm9sIik7cmV0dXJuIG5yKHQpJiZlcih0LnByb3RvdHlwZSxpcihyKSl9LHVyPVN0cmluZyxmcj1mdW5jdGlvbihyKXt0cnl7cmV0dXJuIHVyKHIpfWNhdGNoKHIpe3JldHVybiJPYmplY3QifX0sYXI9Rixjcj1mcixzcj1UeXBlRXJyb3IsdnI9ZnVuY3Rpb24ocil7aWYoYXIocikpcmV0dXJuIHI7dGhyb3cgc3IoY3IocikrIiBpcyBub3QgYSBmdW5jdGlvbiIpfSxocj12cixscj1mdW5jdGlvbihyLHQpe3ZhciBuPXJbdF07cmV0dXJuIG51bGw9PW4/dm9pZCAwOmhyKG4pfSxkcj1hLHlyPUYsd3I9Qyxicj1UeXBlRXJyb3IscHI9e2V4cG9ydHM6e319LGdyPW4sbXI9T2JqZWN0LmRlZmluZVByb3BlcnR5LFNyPWZ1bmN0aW9uKHIsdCl7dHJ5e21yKGdyLHIse3ZhbHVlOnQsaTohMCx3cml0YWJsZTohMH0pfWNhdGNoKG4pe2dyW3JdPXR9cmV0dXJuIHR9LEFyPVNyLGpyPW5bImwiXXx8QXIoIl9fY29yZS1qc19zaGFyZWRfXyIse30pLE9yPWpyOyhwci5leHBvcnRzPWZ1bmN0aW9uKHIsdCl7cmV0dXJuIE9yW3JdfHwoT3Jbcl09dm9pZCAwIT09dD90Ont9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMjMuMiIsbW9kZToiZ2xvYmFsIixwOiLCqSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkiLGc6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMjMuMi9MSUNFTlNFIixzb3VyY2U6Imh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzIn0pO3ZhciBrcj1MLEVyPU9iamVjdCxUcj1mdW5jdGlvbihyKXtyZXR1cm4gRXIoa3IocikpfSx4cj1UcixVcj1TKHt9Lmhhc093blByb3BlcnR5KSxNcj1PYmplY3QuaGFzT3dufHxmdW5jdGlvbihyLHQpe3JldHVybiBVcih4cihyKSx0KX0sSXI9UyxMcj0wLFByPU1hdGgucmFuZG9tKCksX3I9SXIoMS4udG9TdHJpbmcpLFJyPWZ1bmN0aW9uKHIpe3JldHVybiJTeW1ib2woIisodm9pZCAwPT09cj8iIjpyKSsiKV8iK19yKCsrTHIrUHIsMzYpfSxGcj1uLE5yPXByLmV4cG9ydHMsQ3I9TXIsQnI9UnIsR3I9WixEcj1ycixWcj1Ocigid2tzIiksWXI9RnIuU3ltYm9sLHpyPVlyJiZZci5mb3IsV3I9RHI/WXI6WXImJllyLm18fEJyLCRyPWZ1bmN0aW9uKHIpe2lmKCFDcihWcixyKXx8IUdyJiYic3RyaW5nIiE9dHlwZW9mIFZyW3JdKXt2YXIgdD0iU3ltYm9sLiIrcjtHciYmQ3IoWXIscik/VnJbcl09WXJbcl06VnJbcl09RHImJnpyP3pyKHQpOldyKHQpfXJldHVybiBWcltyXX0sSHI9YSxLcj1DLHFyPW9yLEpyPWxyLFhyPVR5cGVFcnJvcixRcj0kcigidG9QcmltaXRpdmUiKSxacj1mdW5jdGlvbihyLHQpe2lmKCFLcihyKXx8cXIocikpcmV0dXJuIHI7dmFyIG4sZT1KcihyLFFyKTtpZihlKXtpZih2b2lkIDA9PT10JiYodD0iZGVmYXVsdCIpLG49SHIoZSxyLHQpLCFLcihuKXx8cXIobikpcmV0dXJuIG47dGhyb3cgWHIoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXJldHVybiB2b2lkIDA9PT10JiYodD0ibnVtYmVyIiksZnVuY3Rpb24ocix0KXt2YXIgbixlO2lmKCJzdHJpbmciPT09dCYmeXIobj1yLnRvU3RyaW5nKSYmIXdyKGU9ZHIobixyKSkpcmV0dXJuIGU7aWYoeXIobj1yLnZhbHVlT2YpJiYhd3IoZT1kcihuLHIpKSlyZXR1cm4gZTtpZigic3RyaW5nIiE9PXQmJnlyKG49ci50b1N0cmluZykmJiF3cihlPWRyKG4scikpKXJldHVybiBlO3Rocm93IGJyKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX0ocix0KX0scnQ9WnIsdHQ9b3IsbnQ9ZnVuY3Rpb24ocil7dmFyIHQ9cnQociwic3RyaW5nIik7cmV0dXJuIHR0KHQpP3Q6dCsiIn0sZXQ9QyxpdD1uLmRvY3VtZW50LG90PWV0KGl0KSYmZXQoaXQuY3JlYXRlRWxlbWVudCksdXQ9ZnVuY3Rpb24ocil7cmV0dXJuIG90P2l0LmNyZWF0ZUVsZW1lbnQocik6e319LGZ0PXV0LGF0PSFvJiYhaSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGZ0KCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSksY3Q9byxzdD1hLHZ0PWMsaHQ9eSxsdD1SLGR0PW50LHl0PU1yLHd0PWF0LGJ0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5mPWN0P2J0OmZ1bmN0aW9uKHIsdCl7aWYocj1sdChyKSx0PWR0KHQpLHd0KXRyeXtyZXR1cm4gYnQocix0KX1jYXRjaChyKXt9aWYoeXQocix0KSlyZXR1cm4gaHQoIXN0KHZ0LmYscix0KSxyW3RdKX07dmFyIHB0PXt9LGd0PW8mJmkoKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksInByb3RvdHlwZSIse3ZhbHVlOjQyLHdyaXRhYmxlOiExfSkucHJvdG90eXBlfSkpLG10PUMsU3Q9U3RyaW5nLEF0PVR5cGVFcnJvcixqdD1mdW5jdGlvbihyKXtpZihtdChyKSlyZXR1cm4gcjt0aHJvdyBBdChTdChyKSsiIGlzIG5vdCBhbiBvYmplY3QiKX0sT3Q9byxrdD1hdCxFdD1ndCxUdD1qdCx4dD1udCxVdD1UeXBlRXJyb3IsTXQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LEl0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7cHQuZj1PdD9FdD9mdW5jdGlvbihyLHQsbil7aWYoVHQociksdD14dCh0KSxUdChuKSwiZnVuY3Rpb24iPT10eXBlb2YgciYmInByb3RvdHlwZSI9PT10JiYidmFsdWUiaW4gbiYmIndyaXRhYmxlImluIG4mJiFuLndyaXRhYmxlKXt2YXIgZT1JdChyLHQpO2UmJmUud3JpdGFibGUmJihyW3RdPW4udmFsdWUsbj17aToiaSJpbiBuP24uaTplLmksdDoidCJpbiBuP24udDplLnQsd3JpdGFibGU6ITF9KX1yZXR1cm4gTXQocix0LG4pfTpNdDpmdW5jdGlvbihyLHQsbil7aWYoVHQociksdD14dCh0KSxUdChuKSxrdCl0cnl7cmV0dXJuIE10KHIsdCxuKX1jYXRjaChyKXt9aWYoImdldCJpbiBufHwic2V0ImluIG4pdGhyb3cgVXQoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7cmV0dXJuInZhbHVlImluIG4mJihyW3RdPW4udmFsdWUpLHJ9O3ZhciBMdD1wdCxQdD15LF90PW8/ZnVuY3Rpb24ocix0LG4pe3JldHVybiBMdC5mKHIsdCxQdCgxLG4pKX06ZnVuY3Rpb24ocix0LG4pe3JldHVybiByW3RdPW4scn0sUnQ9e2V4cG9ydHM6e319LEZ0PW8sTnQ9RnVuY3Rpb24ucHJvdG90eXBlLEN0PUZ0JiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEJ0PU1yKE50LCJuYW1lIiksR3Q9e1M6QnQsQTpCdCYmITEsajpCdCYmKCFGdHx8RnQmJkN0KE50LCJuYW1lIikuaSl9LER0PUYsVnQ9anIsWXQ9UyhGdW5jdGlvbi50b1N0cmluZyk7RHQoVnQuTyl8fChWdC5PPWZ1bmN0aW9uKHIpe3JldHVybiBZdChyKX0pO3ZhciB6dCxXdCwkdCxIdD1WdC5PLEt0PUYscXQ9SHQsSnQ9bi5XZWFrTWFwLFh0PUt0KEp0KSYmL25hdGl2ZSBjb2RlLy50ZXN0KHF0KEp0KSksUXQ9cHIuZXhwb3J0cyxadD1Scixybj1RdCgia2V5cyIpLHRuPWZ1bmN0aW9uKHIpe3JldHVybiBybltyXXx8KHJuW3JdPVp0KHIpKX0sbm49e30sZW49WHQsb249bix1bj1TLGZuPUMsYW49X3QsY249TXIsc249anIsdm49dG4saG49bm4sbG49b24uVHlwZUVycm9yLGRuPW9uLldlYWtNYXA7aWYoZW58fHNuLnN0YXRlKXt2YXIgeW49c24uc3RhdGV8fChzbi5zdGF0ZT1uZXcgZG4pLHduPXVuKHluLmdldCksYm49dW4oeW4uaGFzKSxwbj11bih5bi5zZXQpO3p0PWZ1bmN0aW9uKHIsdCl7aWYoYm4oeW4scikpdGhyb3cgbmV3IGxuKCJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIpO3JldHVybiB0Lms9cixwbih5bixyLHQpLHR9LFd0PWZ1bmN0aW9uKHIpe3JldHVybiB3bih5bixyKXx8e319LCR0PWZ1bmN0aW9uKHIpe3JldHVybiBibih5bixyKX19ZWxzZXt2YXIgZ249dm4oInN0YXRlIik7aG5bZ25dPSEwLHp0PWZ1bmN0aW9uKHIsdCl7aWYoY24ocixnbikpdGhyb3cgbmV3IGxuKCJPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCIpO3JldHVybiB0Lms9cixhbihyLGduLHQpLHR9LFd0PWZ1bmN0aW9uKHIpe3JldHVybiBjbihyLGduKT9yW2duXTp7fX0sJHQ9ZnVuY3Rpb24ocil7cmV0dXJuIGNuKHIsZ24pfX12YXIgbW49e3NldDp6dCxnZXQ6V3QsaGFzOiR0LFQ6ZnVuY3Rpb24ocil7cmV0dXJuICR0KHIpP1d0KHIpOnp0KHIse30pfSxVOmZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbjtpZighZm4odCl8fChuPVd0KHQpKS50eXBlIT09cil0aHJvdyBsbigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3IrIiByZXF1aXJlZCIpO3JldHVybiBufX19LFNuPUYsQW49TXIsam49byxPbj1HdC5qLGtuPUh0LEVuPW1uLlQsVG49bW4uZ2V0LHhuPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxVbj1qbiYmIWkoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT14bigoZnVuY3Rpb24oKXt9KSwibGVuZ3RoIix7dmFsdWU6OH0pLmxlbmd0aH0pKSxNbj0oU3RyaW5nKyIiKS5zcGxpdCgiU3RyaW5nIiksSW49UnQuZXhwb3J0cz1mdW5jdGlvbihyLHQsbil7IlN5bWJvbCgiPT09KHQrIiIpLnNsaWNlKDAsNykmJih0PSJbIisodCsiIikucmVwbGFjZSgvXlN5bWJvbFwoKFteKV0qKVwpLywiJDEiKSsiXSIpLG4mJm4uTSYmKHQ9ImdldCAiK3QpLG4mJm4uSSYmKHQ9InNldCAiK3QpLCghQW4ociwibmFtZSIpfHxPbiYmci5uYW1lIT09dCkmJnhuKHIsIm5hbWUiLHt2YWx1ZTp0LGk6ITB9KSxVbiYmbiYmQW4obiwiYXJpdHkiKSYmci5sZW5ndGghPT1uLkwmJnhuKHIsImxlbmd0aCIse3ZhbHVlOm4uTH0pO3RyeXtuJiZBbihuLCJjb25zdHJ1Y3RvciIpJiZuLmNvbnN0cnVjdG9yP2puJiZ4bihyLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOnIucHJvdG90eXBlJiYoci5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChyKXt9dmFyIGU9RW4ocik7cmV0dXJuIEFuKGUsInNvdXJjZSIpfHwoZS5zb3VyY2U9TW4uam9pbigic3RyaW5nIj09dHlwZW9mIHQ/dDoiIikpLHJ9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1JbigoZnVuY3Rpb24oKXtyZXR1cm4gU24odGhpcykmJlRuKHRoaXMpLnNvdXJjZXx8a24odGhpcyl9KSwidG9TdHJpbmciKTt2YXIgTG49RixQbj1wdCxfbj1SdC5leHBvcnRzLFJuPVNyLEZuPWZ1bmN0aW9uKHIsdCxuLGUpe2V8fChlPXt9KTt2YXIgaT1lLnQsbz12b2lkIDAhPT1lLm5hbWU/ZS5uYW1lOnQ7cmV0dXJuIExuKG4pJiZfbihuLG8sZSksZS5nbG9iYWw/aT9yW3RdPW46Um4odCxuKTooZS5QP3JbdF0mJihpPSEwKTpkZWxldGUgclt0XSxpP3JbdF09bjpQbi5mKHIsdCx7dmFsdWU6bix0OiExLGk6IWUuXyx3cml0YWJsZTohZS5SfSkpLHJ9LE5uPXt9LENuPU1hdGguY2VpbCxCbj1NYXRoLmZsb29yLEduPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKHIpe3ZhciB0PStyO3JldHVybih0PjA/Qm46Q24pKHQpfSxEbj1mdW5jdGlvbihyKXt2YXIgdD0rcjtyZXR1cm4gdCE9dHx8MD09PXQ/MDpHbih0KX0sVm49RG4sWW49TWF0aC5tYXgsem49TWF0aC5taW4sV249ZnVuY3Rpb24ocix0KXt2YXIgbj1WbihyKTtyZXR1cm4gMD5uP1luKG4rdCwwKTp6bihuLHQpfSwkbj1EbixIbj1NYXRoLm1pbixLbj1mdW5jdGlvbihyKXtyZXR1cm4gcj4wP0huKCRuKHIpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9LHFuPUtuLEpuPWZ1bmN0aW9uKHIpe3JldHVybiBxbihyLmxlbmd0aCl9LFhuPVIsUW49V24sWm49Sm4scmU9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKHQsbixlKXt2YXIgaSxvPVhuKHQpLHU9Wm4obyksZj1RbihlLHUpO2lmKHImJm4hPW4pe2Zvcig7dT5mOylpZigoaT1vW2YrK10pIT1pKXJldHVybiEwfWVsc2UgZm9yKDt1PmY7ZisrKWlmKChyfHxmIGluIG8pJiZvW2ZdPT09bilyZXR1cm4gcnx8Znx8MDtyZXR1cm4hciYmLTF9fSx0ZT17aW5jbHVkZXM6cmUoITApLGluZGV4T2Y6cmUoITEpfSxuZT1NcixlZT1SLGllPXRlLmluZGV4T2Ysb2U9bm4sdWU9UyhbXS5wdXNoKSxmZT1mdW5jdGlvbihyLHQpe3ZhciBuLGU9ZWUociksaT0wLG89W107Zm9yKG4gaW4gZSkhbmUob2UsbikmJm5lKGUsbikmJnVlKG8sbik7Zm9yKDt0Lmxlbmd0aD5pOyluZShlLG49dFtpKytdKSYmKH5pZShvLG4pfHx1ZShvLG4pKTtyZXR1cm4gb30sYWU9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXSxjZT1mZSxzZT1hZS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO05uLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHIpe3JldHVybiBjZShyLHNlKX07dmFyIHZlPXt9O3ZlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgaGU9VixsZT1ObixkZT12ZSx5ZT1qdCx3ZT1TKFtdLmNvbmNhdCksYmU9aGUoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKHIpe3ZhciB0PWxlLmYoeWUocikpLG49ZGUuZjtyZXR1cm4gbj93ZSh0LG4ocikpOnR9LHBlPU1yLGdlPWJlLG1lPWUsU2U9cHQsQWU9ZnVuY3Rpb24ocix0LG4pe2Zvcih2YXIgZT1nZSh0KSxpPVNlLmYsbz1tZS5mLHU9MDt1PGUubGVuZ3RoO3UrKyl7dmFyIGY9ZVt1XTtwZShyLGYpfHxuJiZwZShuLGYpfHxpKHIsZixvKHQsZikpfX0samU9aSxPZT1GLGtlPS8jfFwucHJvdG90eXBlXC4vLEVlPWZ1bmN0aW9uKHIsdCl7dmFyIG49eGVbVGUocildO3JldHVybiBuPT1NZXx8biE9VWUmJihPZSh0KT9qZSh0KTohIXQpfSxUZT1FZS5ub3JtYWxpemU9ZnVuY3Rpb24ocil7cmV0dXJuKHIrIiIpLnJlcGxhY2Uoa2UsIi4iKS50b0xvd2VyQ2FzZSgpfSx4ZT1FZS5kYXRhPXt9LFVlPUVlLkY9Ik4iLE1lPUVlLk49IlAiLEllPUVlLExlPW4sUGU9ZS5mLF9lPV90LFJlPUZuLEZlPVNyLE5lPUFlLENlPUllLEJlPWZ1bmN0aW9uKHIsdCl7dmFyIG4sZSxpLG8sdSxmPXIudGFyZ2V0LGE9ci5nbG9iYWwsYz1yLkM7aWYobj1hP0xlOmM/TGVbZl18fEZlKGYse30pOihMZVtmXXx8e30pLnByb3RvdHlwZSlmb3IoZSBpbiB0KXtpZihvPXRbZV0saT1yLkI/KHU9UGUobixlKSkmJnUudmFsdWU6bltlXSwhQ2UoYT9lOmYrKGM/Ii4iOiIjIikrZSxyLkcpJiZ2b2lkIDAhPT1pKXtpZih0eXBlb2Ygbz09dHlwZW9mIGkpY29udGludWU7TmUobyxpKX0oci5ofHxpJiZpLmgpJiZfZShvLCJzaGFtIiwhMCksUmUobixlLG8scil9fSxHZT17fTtHZVskcigidG9TdHJpbmdUYWciKV09InoiO3ZhciBEZSxWZT1HZSsiIj09IltvYmplY3Qgel0iLFllPVZlLHplPUYsV2U9aywkZT0kcigidG9TdHJpbmdUYWciKSxIZT1PYmplY3QsS2U9IkFyZ3VtZW50cyI9PVdlKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSkscWU9WWU/V2U6ZnVuY3Rpb24ocil7dmFyIHQsbixlO3JldHVybiB2b2lkIDA9PT1yPyJVbmRlZmluZWQiOm51bGw9PT1yPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKG49ZnVuY3Rpb24ocix0KXt0cnl7cmV0dXJuIHJbdF19Y2F0Y2gocil7fX0odD1IZShyKSwkZSkpP246S2U/V2UodCk6Ik9iamVjdCI9PShlPVdlKHQpKSYmemUodC5EKT8iQXJndW1lbnRzIjplfSxKZT1xZSxYZT1TdHJpbmcsUWU9ZnVuY3Rpb24ocil7aWYoIlN5bWJvbCI9PT1KZShyKSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIik7cmV0dXJuIFhlKHIpfSxaZT1DLHJpPWssdGk9JHIoIm1hdGNoIiksbmk9VHlwZUVycm9yLGVpPSRyKCJtYXRjaCIpLGlpPUJlLG9pPVMsdWk9ZS5mLGZpPUtuLGFpPVFlLGNpPWZ1bmN0aW9uKHIpe2lmKGZ1bmN0aW9uKHIpe3ZhciB0O3JldHVybiBaZShyKSYmKHZvaWQgMCE9PSh0PXJbdGldKT8hIXQ6IlJlZ0V4cCI9PXJpKHIpKX0ocikpdGhyb3cgbmkoIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9ucyIpO3JldHVybiByfSxzaT1MLHZpPW9pKCIiLnN0YXJ0c1dpdGgpLGhpPW9pKCIiLnNsaWNlKSxsaT1NYXRoLm1pbixkaT1mdW5jdGlvbigpe3ZhciByPS8uLzt0cnl7Ii8uLyIuc3RhcnRzV2l0aChyKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHJbZWldPSExLCIvLi8iLnN0YXJ0c1dpdGgocil9Y2F0Y2gocil7fX1yZXR1cm4hMX0oKTtpaSh7dGFyZ2V0OiJTdHJpbmciLFY6ITAsRzohKCFkaSYmKERlPXVpKFN0cmluZy5wcm90b3R5cGUsInN0YXJ0c1dpdGgiKSxEZSYmIURlLndyaXRhYmxlKXx8ZGkpfSx7c3RhcnRzV2l0aDpmdW5jdGlvbihyKXt2YXIgdD1haShzaSh0aGlzKSk7Y2kocik7dmFyIG49ZmkobGkoYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsdC5sZW5ndGgpKSxlPWFpKHIpO3JldHVybiB2aT92aSh0LGUsbik6aGkodCxuLG4rZS5sZW5ndGgpPT09ZX19KTt2YXIgeWk9e30sd2k9ZmUsYmk9YWUscGk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHIpe3JldHVybiB3aShyLGJpKX0sZ2k9byxtaT1ndCxTaT1wdCxBaT1qdCxqaT1SLE9pPXBpO3lpLmY9Z2kmJiFtaT9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbihyLHQpe0FpKHIpO2Zvcih2YXIgbixlPWppKHQpLGk9T2kodCksbz1pLmxlbmd0aCx1PTA7bz51OylTaS5mKHIsbj1pW3UrK10sZVtuXSk7cmV0dXJuIHJ9O3ZhciBraSxFaT1WKCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIpLFRpPWp0LHhpPXlpLFVpPWFlLE1pPW5uLElpPUVpLExpPXV0LFBpPXRuKCJJRV9QUk9UTyIpLF9pPWZ1bmN0aW9uKCl7fSxSaT1mdW5jdGlvbihyKXtyZXR1cm4iPHNjcmlwdD4iK3IrIjxcL3NjcmlwdD4ifSxGaT1mdW5jdGlvbihyKXtyLndyaXRlKFJpKCIiKSksci5jbG9zZSgpO3ZhciB0PXIucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gcj1udWxsLHR9LE5pPWZ1bmN0aW9uKCl7dHJ5e2tpPW5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKHIpe312YXIgcix0O05pPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZraT9GaShraSk6KCh0PUxpKCJpZnJhbWUiKSkuc3R5bGUuZGlzcGxheT0ibm9uZSIsSWkuYXBwZW5kQ2hpbGQodCksdC5zcmM9ImphdmFzY3JpcHQ6Iiwocj10LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSxyLndyaXRlKFJpKCJkb2N1bWVudC5GPU9iamVjdCIpKSxyLmNsb3NlKCksci5ZKTpGaShraSk7Zm9yKHZhciBuPVVpLmxlbmd0aDtuLS07KWRlbGV0ZSBOaS5wcm90b3R5cGVbVWlbbl1dO3JldHVybiBOaSgpfTtNaVtQaV09ITA7dmFyIENpPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHIsdCl7dmFyIG47cmV0dXJuIG51bGwhPT1yPyhfaS5wcm90b3R5cGU9VGkociksbj1uZXcgX2ksX2kucHJvdG90eXBlPW51bGwsbltQaV09cik6bj1OaSgpLHZvaWQgMD09PXQ/bjp4aS5mKG4sdCl9LEJpPSRyLEdpPUNpLERpPXB0LmYsVmk9QmkoInVuc2NvcGFibGVzIiksWWk9QXJyYXkucHJvdG90eXBlO251bGw9PVlpW1ZpXSYmRGkoWWksVmkse2k6ITAsdmFsdWU6R2kobnVsbCl9KTt2YXIgemksV2ksJGksSGk9ZnVuY3Rpb24ocil7WWlbVmldW3JdPSEwfSxLaT17fSxxaT0haSgoZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7fXJldHVybiByLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsLE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgcikhPT1yLnByb3RvdHlwZX0pKSxKaT1NcixYaT1GLFFpPVRyLFppPXFpLHJvPXRuKCJJRV9QUk9UTyIpLHRvPU9iamVjdCxubz10by5wcm90b3R5cGUsZW89Wmk/dG8uZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24ocil7dmFyIHQ9UWkocik7aWYoSmkodCxybykpcmV0dXJuIHRbcm9dO3ZhciBuPXQuY29uc3RydWN0b3I7cmV0dXJuIFhpKG4pJiZ0IGluc3RhbmNlb2Ygbj9uLnByb3RvdHlwZTp0IGluc3RhbmNlb2YgdG8/bm86bnVsbH0saW89aSxvbz1GLHVvPWVvLGZvPUZuLGFvPSRyKCJpdGVyYXRvciIpLGNvPSExO1tdLmtleXMmJigibmV4dCJpbigkaT1bXS5rZXlzKCkpPyhXaT11byh1bygkaSkpKSE9PU9iamVjdC5wcm90b3R5cGUmJih6aT1XaSk6Y289ITApO3ZhciBzbz1udWxsPT16aXx8aW8oKGZ1bmN0aW9uKCl7dmFyIHI9e307cmV0dXJuIHppW2FvXS5jYWxsKHIpIT09cn0pKTtzbyYmKHppPXt9KSxvbyh6aVthb10pfHxmbyh6aSxhbywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgdm89e1c6emksJDpjb30saG89cHQuZixsbz1Ncix5bz0kcigidG9TdHJpbmdUYWciKSx3bz1mdW5jdGlvbihyLHQsbil7ciYmIW4mJihyPXIucHJvdG90eXBlKSxyJiYhbG8ocix5bykmJmhvKHIseW8se2k6ITAsdmFsdWU6dH0pfSxibz12by5XLHBvPUNpLGdvPXksbW89d28sU289S2ksQW89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sam89RixPbz1TdHJpbmcsa289VHlwZUVycm9yLEVvPVMsVG89anQseG89T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIHIsdD0hMSxuPXt9O3RyeXsocj1FbyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIpLnNldCkpKG4sW10pLHQ9biBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKHIpe31yZXR1cm4gZnVuY3Rpb24obixlKXtyZXR1cm4gVG8obiksZnVuY3Rpb24ocil7aWYoIm9iamVjdCI9PXR5cGVvZiByfHxqbyhyKSlyZXR1cm4gcjt0aHJvdyBrbygiQ2FuJ3Qgc2V0ICIrT28ocikrIiBhcyBhIHByb3RvdHlwZSIpfShlKSx0P3IobixlKTpuLl9fcHJvdG9fXz1lLG59fSgpOnZvaWQgMCksVW89QmUsTW89YSxJbz1GLExvPWVvLFBvPXhvLF9vPXdvLFJvPV90LEZvPUZuLE5vPUtpLENvPUd0LkEsQm89R3QuaixHbz12by5XLERvPXZvLiQsVm89JHIoIml0ZXJhdG9yIiksWW89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sem89ZnVuY3Rpb24ocix0LG4sZSxpLG8sdSl7IWZ1bmN0aW9uKHIsdCxuKXt2YXIgZT10KyIgSXRlcmF0b3IiO3IucHJvdG90eXBlPXBvKGJvLHtuZXh0OmdvKDEsbil9KSxtbyhyLGUsITEpLFNvW2VdPUFvfShuLHQsZSk7dmFyIGYsYSxjLHM9ZnVuY3Rpb24ocil7aWYocj09PWkmJnkpcmV0dXJuIHk7aWYoIURvJiZyIGluIGwpcmV0dXJuIGxbcl07c3dpdGNoKHIpe2Nhc2Uia2V5cyI6Y2FzZSJ2YWx1ZXMiOmNhc2UiZW50cmllcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMscil9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzKX19LHY9dCsiIEl0ZXJhdG9yIixoPSExLGw9ci5wcm90b3R5cGUsZD1sW1ZvXXx8bFsiQEBpdGVyYXRvciJdfHxpJiZsW2ldLHk9IURvJiZkfHxzKGkpLHc9IkFycmF5Ij09dCYmbC5lbnRyaWVzfHxkO2lmKHcmJihmPUxvKHcuY2FsbChuZXcgcikpKSE9PU9iamVjdC5wcm90b3R5cGUmJmYubmV4dCYmKExvKGYpIT09R28mJihQbz9QbyhmLEdvKTpJbyhmW1ZvXSl8fEZvKGYsVm8sWW8pKSxfbyhmLHYsITApKSxDbyYmInZhbHVlcyI9PWkmJmQmJiJ2YWx1ZXMiIT09ZC5uYW1lJiYoQm8/Um8obCwibmFtZSIsInZhbHVlcyIpOihoPSEwLHk9ZnVuY3Rpb24oKXtyZXR1cm4gTW8oZCx0aGlzKX0pKSxpKWlmKGE9e3ZhbHVlczpzKCJ2YWx1ZXMiKSxrZXlzOm8/eTpzKCJrZXlzIiksZW50cmllczpzKCJlbnRyaWVzIil9LHUpZm9yKGMgaW4gYSkoRG98fGh8fCEoYyBpbiBsKSkmJkZvKGwsYyxhW2NdKTtlbHNlIFVvKHt0YXJnZXQ6dCxWOiEwLEc6RG98fGh9LGEpO3JldHVybiBsW1ZvXSE9PXkmJkZvKGwsVm8seSx7bmFtZTppfSksTm9bdF09eSxhfSxXbz1SLCRvPUhpLEhvPUtpLEtvPW1uLHFvPXB0LmYsSm89em8sWG89byxRbz1Lby5zZXQsWm89S28uVSgiQXJyYXkgSXRlcmF0b3IiKSxydT1KbyhBcnJheSwiQXJyYXkiLChmdW5jdGlvbihyLHQpe1FvKHRoaXMse3R5cGU6IkFycmF5IEl0ZXJhdG9yIix0YXJnZXQ6V28ociksaW5kZXg6MCxraW5kOnR9KX0pLChmdW5jdGlvbigpe3ZhciByPVpvKHRoaXMpLHQ9ci50YXJnZXQsbj1yLmtpbmQsZT1yLmluZGV4Kys7cmV0dXJuIHQmJmU8dC5sZW5ndGg/ImtleXMiPT1uP3t2YWx1ZTplLGRvbmU6ITF9OiJ2YWx1ZXMiPT1uP3t2YWx1ZTp0W2VdLGRvbmU6ITF9Ont2YWx1ZTpbZSx0W2VdXSxkb25lOiExfTooci50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfSksInZhbHVlcyIpLHR1PUhvLkg9SG8uQXJyYXk7aWYoJG8oImtleXMiKSwkbygidmFsdWVzIiksJG8oImVudHJpZXMiKSxYbyYmInZhbHVlcyIhPT10dS5uYW1lKXRyeXtxbyh0dSwibmFtZSIse3ZhbHVlOiJ2YWx1ZXMifSl9Y2F0Y2gocil7fXZhciBudT0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3LGV1PUZuLGl1PVksb3U9VHlwZUVycm9yLHV1PWZ1bmN0aW9uKHIsdCl7aWYoaXUodCxyKSlyZXR1cm4gcjt0aHJvdyBvdSgiSW5jb3JyZWN0IGludm9jYXRpb24iKX0sZnU9RG4sYXU9S24sY3U9UmFuZ2VFcnJvcixzdT1mdW5jdGlvbihyKXtpZih2b2lkIDA9PT1yKXJldHVybiAwO3ZhciB0PWZ1KHIpLG49YXUodCk7aWYodCE9PW4pdGhyb3cgY3UoIldyb25nIGxlbmd0aCBvciBpbmRleCIpO3JldHVybiBufSx2dT1BcnJheSxodT1NYXRoLmFicyxsdT1NYXRoLnBvdyxkdT1NYXRoLmZsb29yLHl1PU1hdGgubG9nLHd1PVRyLGJ1PVduLHB1PUpuLGd1PWZ1bmN0aW9uKHIpe2Zvcih2YXIgdD13dSh0aGlzKSxuPXB1KHQpLGU9YXJndW1lbnRzLmxlbmd0aCxpPWJ1KGU+MT9hcmd1bWVudHNbMV06dm9pZCAwLG4pLG89ZT4yP2FyZ3VtZW50c1syXTp2b2lkIDAsdT12b2lkIDA9PT1vP246YnUobyxuKTt1Pmk7KXRbaSsrXT1yO3JldHVybiB0fSxtdT1udCxTdT1wdCxBdT15LGp1PWZ1bmN0aW9uKHIsdCxuKXt2YXIgZT1tdSh0KTtlIGluIHI/U3UuZihyLGUsQXUoMCxuKSk6cltlXT1ufSxPdT1XbixrdT1KbixFdT1qdSxUdT1BcnJheSx4dT1NYXRoLm1heCxVdT1mdW5jdGlvbihyLHQsbil7Zm9yKHZhciBlPWt1KHIpLGk9T3UodCxlKSxvPU91KHZvaWQgMD09PW4/ZTpuLGUpLHU9VHUoeHUoby1pLDApKSxmPTA7bz5pO2krKyxmKyspRXUodSxmLHJbaV0pO3JldHVybiB1Lmxlbmd0aD1mLHV9LE11PW4sSXU9UyxMdT1vLFB1PW51LF91PUd0LFJ1PV90LEZ1PWZ1bmN0aW9uKHIsdCxuKXtmb3IodmFyIGUgaW4gdClldShyLGUsdFtlXSxuKTtyZXR1cm4gcn0sTnU9aSxDdT11dSxCdT1EbixHdT1LbixEdT1zdSxWdT1lbyxZdT14byx6dT1Obi5mLFd1PXB0LmYsJHU9Z3UsSHU9VXUsS3U9d28scXU9X3UuQSxKdT1fdS5qLFh1PW1uLmdldCxRdT1tbi5zZXQsWnU9TXUuQXJyYXlCdWZmZXIscmY9WnUsdGY9cmYmJnJmLnByb3RvdHlwZSxuZj1NdS5EYXRhVmlldyxlZj1uZiYmbmYucHJvdG90eXBlLG9mPU9iamVjdC5wcm90b3R5cGUsdWY9TXUuQXJyYXksZmY9TXUuUmFuZ2VFcnJvcixhZj1JdSgkdSksY2Y9SXUoW10ucmV2ZXJzZSksc2Y9ZnVuY3Rpb24ocix0LG4pe3ZhciBlLGksbyx1PXZ1KG4pLGY9OCpuLXQtMSxhPSgxPDxmKS0xLGM9YT4+MSxzPTIzPT09dD9sdSgyLC0yNCktbHUoMiwtNzcpOjAsdj0wPnJ8fDA9PT1yJiYwPjEvcj8xOjAsaD0wO2Zvcigocj1odShyKSkhPXJ8fHI9PT0xLzA/KGk9ciE9cj8xOjAsZT1hKTooZT1kdSh5dShyKS8uNjkzMTQ3MTgwNTU5OTQ1MyksMT5yKihvPWx1KDIsLWUpKSYmKGUtLSxvKj0yKSwyPihyKz0xPmUrYz9zKmx1KDIsMS1jKTpzL28pKm98fChlKyssby89MiksYT5lK2M/MT5lK2M/KGk9cipsdSgyLGMtMSkqbHUoMix0KSxlPTApOihpPShyKm8tMSkqbHUoMix0KSxlKz1jKTooaT0wLGU9YSkpO3Q+PTg7KXVbaCsrXT0yNTUmaSxpLz0yNTYsdC09ODtmb3IoZT1lPDx0fGksZis9dDtmPjA7KXVbaCsrXT0yNTUmZSxlLz0yNTYsZi09ODtyZXR1cm4gdVstLWhdfD0xMjgqdix1fSx2Zj1mdW5jdGlvbihyLHQpe3ZhciBuLGU9ci5sZW5ndGgsaT04KmUtdC0xLG89KDE8PGkpLTEsdT1vPj4xLGY9aS03LGE9ZS0xLGM9clthLS1dLHM9MTI3JmM7Zm9yKGM+Pj03O2Y+MDspcz0yNTYqcytyW2EtLV0sZi09ODtmb3Iobj1zJigxPDwtZiktMSxzPj49LWYsZis9dDtmPjA7KW49MjU2Km4rclthLS1dLGYtPTg7aWYoMD09PXMpcz0xLXU7ZWxzZXtpZihzPT09bylyZXR1cm4gbj9OYU46Yz8tMS8wOjEvMDtuKz1sdSgyLHQpLHMtPXV9cmV0dXJuKGM/LTE6MSkqbipsdSgyLHMtdCl9LGhmPWZ1bmN0aW9uKHIpe3JldHVyblsyNTUmcl19LGxmPWZ1bmN0aW9uKHIpe3JldHVyblsyNTUmcixyPj44JjI1NV19LGRmPWZ1bmN0aW9uKHIpe3JldHVyblsyNTUmcixyPj44JjI1NSxyPj4xNiYyNTUscj4+MjQmMjU1XX0seWY9ZnVuY3Rpb24ocil7cmV0dXJuIHJbM108PDI0fHJbMl08PDE2fHJbMV08PDh8clswXX0sd2Y9ZnVuY3Rpb24ocil7cmV0dXJuIHNmKHIsMjMsNCl9LGJmPWZ1bmN0aW9uKHIpe3JldHVybiBzZihyLDUyLDgpfSxwZj1mdW5jdGlvbihyLHQpe1d1KHIucHJvdG90eXBlLHQse2dldDpmdW5jdGlvbigpe3JldHVybiBYdSh0aGlzKVt0XX19KX0sZ2Y9ZnVuY3Rpb24ocix0LG4sZSl7dmFyIGk9RHUobiksbz1YdShyKTtpZihpK3Q+by5ieXRlTGVuZ3RoKXRocm93IGZmKCJXcm9uZyBpbmRleCIpO3ZhciB1PVh1KG8uYnVmZmVyKS5LLGY9aStvLmJ5dGVPZmZzZXQsYT1IdSh1LGYsZit0KTtyZXR1cm4gZT9hOmNmKGEpfSxtZj1mdW5jdGlvbihyLHQsbixlLGksbyl7dmFyIHU9RHUobiksZj1YdShyKTtpZih1K3Q+Zi5ieXRlTGVuZ3RoKXRocm93IGZmKCJXcm9uZyBpbmRleCIpO2Zvcih2YXIgYT1YdShmLmJ1ZmZlcikuSyxjPXUrZi5ieXRlT2Zmc2V0LHM9ZSgraSksdj0wO3Q+djt2KyspYVtjK3ZdPXNbbz92OnQtdi0xXX07aWYoUHUpe3ZhciBTZj1xdSYmIkFycmF5QnVmZmVyIiE9PVp1Lm5hbWU7aWYoTnUoKGZ1bmN0aW9uKCl7WnUoMSl9KSkmJk51KChmdW5jdGlvbigpe25ldyBadSgtMSl9KSkmJiFOdSgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFp1LG5ldyBadSgxLjUpLG5ldyBadShOYU4pLFNmJiYhSnV9KSkpU2YmJkp1JiZSdShadSwibmFtZSIsIkFycmF5QnVmZmVyIik7ZWxzZXsocmY9ZnVuY3Rpb24ocil7cmV0dXJuIEN1KHRoaXMsdGYpLG5ldyBadShEdShyKSl9KS5wcm90b3R5cGU9dGY7Zm9yKHZhciBBZixqZj16dShadSksT2Y9MDtqZi5sZW5ndGg+T2Y7KShBZj1qZltPZisrXSlpbiByZnx8UnUocmYsQWYsWnVbQWZdKTt0Zi5jb25zdHJ1Y3Rvcj1yZn1ZdSYmVnUoZWYpIT09b2YmJll1KGVmLG9mKTt2YXIga2Y9bmV3IG5mKG5ldyByZigyKSksRWY9SXUoZWYuc2V0SW50OCk7a2Yuc2V0SW50OCgwLDIxNDc0ODM2NDgpLGtmLnNldEludDgoMSwyMTQ3NDgzNjQ5KSwha2YuZ2V0SW50OCgwKSYma2YuZ2V0SW50OCgxKXx8RnUoZWYse3NldEludDg6ZnVuY3Rpb24ocix0KXtFZih0aGlzLHIsdDw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24ocix0KXtFZih0aGlzLHIsdDw8MjQ+PjI0KX19LHtQOiEwfSl9ZWxzZSB0Zj0ocmY9ZnVuY3Rpb24ocil7Q3UodGhpcyx0Zik7dmFyIHQ9RHUocik7UXUodGhpcyx7SzphZih1Zih0KSwwKSxieXRlTGVuZ3RoOnR9KSxMdXx8KHRoaXMuYnl0ZUxlbmd0aD10KX0pLnByb3RvdHlwZSxlZj0obmY9ZnVuY3Rpb24ocix0LG4pe0N1KHRoaXMsZWYpLEN1KHIsdGYpO3ZhciBlPVh1KHIpLmJ5dGVMZW5ndGgsaT1CdSh0KTtpZigwPml8fGk+ZSl0aHJvdyBmZigiV3Jvbmcgb2Zmc2V0Iik7aWYoaSsobj12b2lkIDA9PT1uP2UtaTpHdShuKSk+ZSl0aHJvdyBmZigiV3JvbmcgbGVuZ3RoIik7UXUodGhpcyx7YnVmZmVyOnIsYnl0ZUxlbmd0aDpuLGJ5dGVPZmZzZXQ6aX0pLEx1fHwodGhpcy5idWZmZXI9cix0aGlzLmJ5dGVMZW5ndGg9bix0aGlzLmJ5dGVPZmZzZXQ9aSl9KS5wcm90b3R5cGUsTHUmJihwZihyZiwiYnl0ZUxlbmd0aCIpLHBmKG5mLCJidWZmZXIiKSxwZihuZiwiYnl0ZUxlbmd0aCIpLHBmKG5mLCJieXRlT2Zmc2V0IikpLEZ1KGVmLHtnZXRJbnQ4OmZ1bmN0aW9uKHIpe3JldHVybiBnZih0aGlzLDEscilbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24ocil7cmV0dXJuIGdmKHRoaXMsMSxyKVswXX0sZ2V0SW50MTY6ZnVuY3Rpb24ocil7dmFyIHQ9Z2YodGhpcywyLHIsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybih0WzFdPDw4fHRbMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbihyKXt2YXIgdD1nZih0aGlzLDIscixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7cmV0dXJuIHRbMV08PDh8dFswXX0sZ2V0SW50MzI6ZnVuY3Rpb24ocil7cmV0dXJuIHlmKGdmKHRoaXMsNCxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSl9LGdldFVpbnQzMjpmdW5jdGlvbihyKXtyZXR1cm4geWYoZ2YodGhpcyw0LHIsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24ocil7cmV0dXJuIHZmKGdmKHRoaXMsNCxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSwyMyl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24ocil7cmV0dXJuIHZmKGdmKHRoaXMsOCxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSw1Mil9LHNldEludDg6ZnVuY3Rpb24ocix0KXttZih0aGlzLDEscixoZix0KX0sc2V0VWludDg6ZnVuY3Rpb24ocix0KXttZih0aGlzLDEscixoZix0KX0sc2V0SW50MTY6ZnVuY3Rpb24ocix0KXttZih0aGlzLDIscixsZix0LGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0VWludDE2OmZ1bmN0aW9uKHIsdCl7bWYodGhpcywyLHIsbGYsdCxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEludDMyOmZ1bmN0aW9uKHIsdCl7bWYodGhpcyw0LHIsZGYsdCxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldFVpbnQzMjpmdW5jdGlvbihyLHQpe21mKHRoaXMsNCxyLGRmLHQsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRGbG9hdDMyOmZ1bmN0aW9uKHIsdCl7bWYodGhpcyw0LHIsd2YsdCxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEZsb2F0NjQ6ZnVuY3Rpb24ocix0KXttZih0aGlzLDgscixiZix0LGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX19KTtLdShyZiwiQXJyYXlCdWZmZXIiKSxLdShuZiwiRGF0YVZpZXciKTt2YXIgVGY9e0FycmF5QnVmZmVyOnJmLERhdGFWaWV3Om5mfSx4Zj1TLFVmPWksTWY9RixJZj1xZSxMZj1IdCxQZj1mdW5jdGlvbigpe30sX2Y9W10sUmY9VigiUmVmbGVjdCIsImNvbnN0cnVjdCIpLEZmPS9eXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXGIvLE5mPXhmKEZmLmV4ZWMpLENmPSFGZi5leGVjKFBmKSxCZj1mdW5jdGlvbihyKXtpZighTWYocikpcmV0dXJuITE7dHJ5e3JldHVybiBSZihQZixfZixyKSwhMH1jYXRjaChyKXtyZXR1cm4hMX19LEdmPWZ1bmN0aW9uKHIpe2lmKCFNZihyKSlyZXR1cm4hMTtzd2l0Y2goSWYocikpe2Nhc2UiQXN5bmNGdW5jdGlvbiI6Y2FzZSJHZW5lcmF0b3JGdW5jdGlvbiI6Y2FzZSJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIjpyZXR1cm4hMX10cnl7cmV0dXJuIENmfHwhIU5mKEZmLExmKHIpKX1jYXRjaChyKXtyZXR1cm4hMH19O0dmLmg9ITA7dmFyIERmPSFSZnx8VWYoKGZ1bmN0aW9uKCl7dmFyIHI7cmV0dXJuIEJmKEJmLmNhbGwpfHwhQmYoT2JqZWN0KXx8IUJmKChmdW5jdGlvbigpe3I9ITB9KSl8fHJ9KSk/R2Y6QmYsVmY9RGYsWWY9ZnIsemY9VHlwZUVycm9yLFdmPWZ1bmN0aW9uKHIpe2lmKFZmKHIpKXJldHVybiByO3Rocm93IHpmKFlmKHIpKyIgaXMgbm90IGEgY29uc3RydWN0b3IiKX0sJGY9anQsSGY9V2YsS2Y9JHIoInNwZWNpZXMiKSxxZj1mdW5jdGlvbihyLHQpe3ZhciBuLGU9JGYocikuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PWV8fG51bGw9PShuPSRmKGUpW0tmXSk/dDpIZihuKX0sSmY9QmUsWGY9UyxRZj1pLFpmPWp0LHJhPVduLHRhPUtuLG5hPXFmLGVhPVRmLkFycmF5QnVmZmVyLGlhPVRmLkRhdGFWaWV3LG9hPWlhLnByb3RvdHlwZSx1YT1YZihlYS5wcm90b3R5cGUuc2xpY2UpLGZhPVhmKG9hLmdldFVpbnQ4KSxhYT1YZihvYS5zZXRVaW50OCk7SmYoe3RhcmdldDoiQXJyYXlCdWZmZXIiLFY6ITAsUDohMCxHOlFmKChmdW5jdGlvbigpe3JldHVybiFuZXcgZWEoMikuc2xpY2UoMSx2b2lkIDApLmJ5dGVMZW5ndGh9KSl9LHtzbGljZTpmdW5jdGlvbihyLHQpe2lmKHVhJiZ2b2lkIDA9PT10KXJldHVybiB1YShaZih0aGlzKSxyKTtmb3IodmFyIG49WmYodGhpcykuYnl0ZUxlbmd0aCxlPXJhKHIsbiksaT1yYSh2b2lkIDA9PT10P246dCxuKSxvPW5ldyhuYSh0aGlzLGVhKSkodGEoaS1lKSksdT1uZXcgaWEodGhpcyksZj1uZXcgaWEobyksYT0wO2k+ZTspYWEoZixhKyssZmEodSxlKyspKTtyZXR1cm4gb319KTt2YXIgY2E9cWU7VmV8fEZuKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIixWZT97fS50b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJbb2JqZWN0ICIrY2EodGhpcykrIl0ifSx7UDohMH0pO3ZhciBzYT17ZXhwb3J0czp7fX0sdmE9JHIoIml0ZXJhdG9yIiksaGE9ITE7dHJ5e3ZhciBsYT0wLGRhPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFsYSsrfX0scTpmdW5jdGlvbigpe2hhPSEwfX07ZGFbdmFdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEFycmF5LmZyb20oZGEsKGZ1bmN0aW9uKCl7dGhyb3cgMn0pKX1jYXRjaChyKXt9dmFyIHlhLHdhLGJhLHBhPWZ1bmN0aW9uKHIsdCl7aWYoIXQmJiFoYSlyZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIGU9e307ZVt2YV09ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9fX19LHIoZSl9Y2F0Y2gocil7fXJldHVybiBufSxnYT1udSxtYT1vLFNhPW4sQWE9RixqYT1DLE9hPU1yLGthPXFlLEVhPWZyLFRhPV90LHhhPUZuLFVhPXB0LmYsTWE9WSxJYT1lbyxMYT14byxQYT0kcixfYT1ScixSYT1tbi5ULEZhPW1uLmdldCxOYT1TYS5JbnQ4QXJyYXksQ2E9TmEmJk5hLnByb3RvdHlwZSxCYT1TYS5VaW50OENsYW1wZWRBcnJheSxHYT1CYSYmQmEucHJvdG90eXBlLERhPU5hJiZJYShOYSksVmE9Q2EmJklhKENhKSxZYT1PYmplY3QucHJvdG90eXBlLHphPVNhLlR5cGVFcnJvcixXYT1QYSgidG9TdHJpbmdUYWciKSwkYT1fYSgiVFlQRURfQVJSQVlfVEFHIiksSGE9Z2EmJiEhTGEmJiJPcGVyYSIhPT1rYShTYS5vcGVyYSksS2E9ITEscWE9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSxKYT17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9LFhhPWZ1bmN0aW9uKHIpe3ZhciB0PUlhKHIpO2lmKGphKHQpKXt2YXIgbj1GYSh0KTtyZXR1cm4gbiYmT2EobiwiVHlwZWRBcnJheUNvbnN0cnVjdG9yIik/bi5KOlhhKHQpfX0sUWE9ZnVuY3Rpb24ocil7aWYoIWphKHIpKXJldHVybiExO3ZhciB0PWthKHIpO3JldHVybiBPYShxYSx0KXx8T2EoSmEsdCl9O2Zvcih5YSBpbiBxYSkoYmE9KHdhPVNhW3lhXSkmJndhLnByb3RvdHlwZSk/UmEoYmEpLko9d2E6SGE9ITE7Zm9yKHlhIGluIEphKShiYT0od2E9U2FbeWFdKSYmd2EucHJvdG90eXBlKSYmKFJhKGJhKS5KPXdhKTtpZigoIUhhfHwhQWEoRGEpfHxEYT09PUZ1bmN0aW9uLnByb3RvdHlwZSkmJihEYT1mdW5jdGlvbigpe3Rocm93IHphKCJJbmNvcnJlY3QgaW52b2NhdGlvbiIpfSxIYSkpZm9yKHlhIGluIHFhKVNhW3lhXSYmTGEoU2FbeWFdLERhKTtpZigoIUhhfHwhVmF8fFZhPT09WWEpJiYoVmE9RGEucHJvdG90eXBlLEhhKSlmb3IoeWEgaW4gcWEpU2FbeWFdJiZMYShTYVt5YV0ucHJvdG90eXBlLFZhKTtpZihIYSYmSWEoR2EpIT09VmEmJkxhKEdhLFZhKSxtYSYmIU9hKFZhLFdhKSlmb3IoeWEgaW4gS2E9ITAsVWEoVmEsV2Ese2dldDpmdW5jdGlvbigpe3JldHVybiBqYSh0aGlzKT90aGlzWyRhXTp2b2lkIDB9fSkscWEpU2FbeWFdJiZUYShTYVt5YV0sJGEseWEpO3ZhciBaYT17WDpIYSxaOkthJiYkYSxycjpmdW5jdGlvbihyKXtpZihRYShyKSlyZXR1cm4gcjt0aHJvdyB6YSgiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LHRyOmZ1bmN0aW9uKHIpe2lmKEFhKHIpJiYoIUxhfHxNYShEYSxyKSkpcmV0dXJuIHI7dGhyb3cgemEoRWEocikrIiBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxucjpmdW5jdGlvbihyLHQsbixlKXtpZihtYSl7aWYobilmb3IodmFyIGkgaW4gcWEpe3ZhciBvPVNhW2ldO2lmKG8mJk9hKG8ucHJvdG90eXBlLHIpKXRyeXtkZWxldGUgby5wcm90b3R5cGVbcl19Y2F0Y2gobil7dHJ5e28ucHJvdG90eXBlW3JdPXR9Y2F0Y2gocil7fX19VmFbcl0mJiFufHx4YShWYSxyLG4/dDpIYSYmQ2Fbcl18fHQsZSl9fSxlcjpmdW5jdGlvbihyLHQsbil7dmFyIGUsaTtpZihtYSl7aWYoTGEpe2lmKG4pZm9yKGUgaW4gcWEpaWYoKGk9U2FbZV0pJiZPYShpLHIpKXRyeXtkZWxldGUgaVtyXX1jYXRjaChyKXt9aWYoRGFbcl0mJiFuKXJldHVybjt0cnl7cmV0dXJuIHhhKERhLHIsbj90OkhhJiZEYVtyXXx8dCl9Y2F0Y2gocil7fX1mb3IoZSBpbiBxYSkhKGk9U2FbZV0pfHxpW3JdJiYhbnx8eGEoaSxyLHQpfX0saXI6WGEsaXNWaWV3OmZ1bmN0aW9uKHIpe2lmKCFqYShyKSlyZXR1cm4hMTt2YXIgdD1rYShyKTtyZXR1cm4iRGF0YVZpZXciPT09dHx8T2EocWEsdCl8fE9hKEphLHQpfSx1cjpRYSxhcjpEYSxjcjpWYX0scmM9bix0Yz1pLG5jPXBhLGVjPVphLlgsaWM9cmMuQXJyYXlCdWZmZXIsb2M9cmMuSW50OEFycmF5LHVjPSFlY3x8IXRjKChmdW5jdGlvbigpe29jKDEpfSkpfHwhdGMoKGZ1bmN0aW9uKCl7bmV3IG9jKC0xKX0pKXx8IW5jKChmdW5jdGlvbihyKXtuZXcgb2MsbmV3IG9jKG51bGwpLG5ldyBvYygxLjUpLG5ldyBvYyhyKX0pLCEwKXx8dGMoKGZ1bmN0aW9uKCl7cmV0dXJuIDEhPT1uZXcgb2MobmV3IGljKDIpLDEsdm9pZCAwKS5sZW5ndGh9KSksZmM9QyxhYz1NYXRoLmZsb29yLGNjPU51bWJlci5pc0ludGVnZXJ8fGZ1bmN0aW9uKHIpe3JldHVybiFmYyhyKSYmaXNGaW5pdGUocikmJmFjKHIpPT09cn0sc2M9RG4sdmM9UmFuZ2VFcnJvcixoYz1SYW5nZUVycm9yLGxjPWZ1bmN0aW9uKHIsdCl7dmFyIG49ZnVuY3Rpb24ocil7dmFyIHQ9c2Mocik7aWYoMD50KXRocm93IHZjKCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDAiKTtyZXR1cm4gdH0ocik7aWYobiV0KXRocm93IGhjKCJXcm9uZyBvZmZzZXQiKTtyZXR1cm4gbn0sZGM9dnIseWM9dSx3Yz1TKFMuYmluZCksYmM9ZnVuY3Rpb24ocix0KXtyZXR1cm4gZGMociksdm9pZCAwPT09dD9yOnljP3djKHIsdCk6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseSh0LGFyZ3VtZW50cyl9fSxwYz1xZSxnYz1scixtYz1LaSxTYz0kcigiaXRlcmF0b3IiKSxBYz1mdW5jdGlvbihyKXtpZihudWxsIT1yKXJldHVybiBnYyhyLFNjKXx8Z2MociwiQEBpdGVyYXRvciIpfHxtY1twYyhyKV19LGpjPWEsT2M9dnIsa2M9anQsRWM9ZnIsVGM9QWMseGM9VHlwZUVycm9yLFVjPWZ1bmN0aW9uKHIsdCl7dmFyIG49Mj5hcmd1bWVudHMubGVuZ3RoP1RjKHIpOnQ7aWYoT2MobikpcmV0dXJuIGtjKGpjKG4scikpO3Rocm93IHhjKEVjKHIpKyIgaXMgbm90IGl0ZXJhYmxlIil9LE1jPUtpLEljPSRyKCJpdGVyYXRvciIpLExjPUFycmF5LnByb3RvdHlwZSxQYz1mdW5jdGlvbihyKXtyZXR1cm4gdm9pZCAwIT09ciYmKE1jLkFycmF5PT09cnx8TGNbSWNdPT09cil9LF9jPWJjLFJjPWEsRmM9V2YsTmM9VHIsQ2M9Sm4sQmM9VWMsR2M9QWMsRGM9UGMsVmM9WmEudHIsWWM9ayx6Yz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihyKXtyZXR1cm4iQXJyYXkiPT1ZYyhyKX0sV2M9emMsJGM9RGYsSGM9QyxLYz0kcigic3BlY2llcyIpLHFjPUFycmF5LEpjPWZ1bmN0aW9uKHIsdCl7cmV0dXJuIG5ldyhmdW5jdGlvbihyKXt2YXIgdDtyZXR1cm4gV2MocikmJih0PXIuY29uc3RydWN0b3IsKCRjKHQpJiYodD09PXFjfHxXYyh0LnByb3RvdHlwZSkpfHxIYyh0KSYmbnVsbD09PSh0PXRbS2NdKSkmJih0PXZvaWQgMCkpLHZvaWQgMD09PXQ/cWM6dH0ocikpKDA9PT10PzA6dCl9LFhjPWJjLFFjPU0sWmM9VHIscnM9Sm4sdHM9SmMsbnM9UyhbXS5wdXNoKSxlcz1mdW5jdGlvbihyKXt2YXIgdD0xPT1yLG49Mj09cixlPTM9PXIsaT00PT1yLG89Nj09cix1PTc9PXIsZj01PT1yfHxvO3JldHVybiBmdW5jdGlvbihhLGMscyx2KXtmb3IodmFyIGgsbCxkPVpjKGEpLHk9UWMoZCksdz1YYyhjLHMpLGI9cnMoeSkscD0wLGc9dnx8dHMsbT10P2coYSxiKTpufHx1P2coYSwwKTp2b2lkIDA7Yj5wO3ArKylpZigoZnx8cCBpbiB5KSYmKGw9dyhoPXlbcF0scCxkKSxyKSlpZih0KW1bcF09bDtlbHNlIGlmKGwpc3dpdGNoKHIpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIGg7Y2FzZSA2OnJldHVybiBwO2Nhc2UgMjpucyhtLGgpfWVsc2Ugc3dpdGNoKHIpe2Nhc2UgNDpyZXR1cm4hMTtjYXNlIDc6bnMobSxoKX1yZXR1cm4gbz8tMTplfHxpP2k6bX19LGlzPXtmb3JFYWNoOmVzKDApLG1hcDplcygxKSxmaWx0ZXI6ZXMoMiksc29tZTplcygzKSxldmVyeTplcyg0KSxmaW5kOmVzKDUpLGZpbmRJbmRleDplcyg2KSxzcjplcyg3KX0sb3M9Vix1cz1wdCxmcz1vLGFzPSRyKCJzcGVjaWVzIiksY3M9ZnVuY3Rpb24ocil7dmFyIHQ9b3Mociksbj11cy5mO2ZzJiZ0JiYhdFthc10mJm4odCxhcyx7aTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX0sc3M9Rix2cz1DLGhzPXhvLGxzPUJlLGRzPW4seXM9YSx3cz1vLGJzPXVjLHBzPVphLGdzPVRmLG1zPXV1LFNzPXksQXM9X3QsanM9Y2MsT3M9S24sa3M9c3UsRXM9bGMsVHM9bnQseHM9TXIsVXM9cWUsTXM9QyxJcz1vcixMcz1DaSxQcz1ZLF9zPXhvLFJzPU5uLmYsRnM9ZnVuY3Rpb24ocil7dmFyIHQsbixlLGksbyx1LGY9RmModGhpcyksYT1OYyhyKSxjPWFyZ3VtZW50cy5sZW5ndGgscz1jPjE/YXJndW1lbnRzWzFdOnZvaWQgMCx2PXZvaWQgMCE9PXMsaD1HYyhhKTtpZihoJiYhRGMoaCkpZm9yKHU9KG89QmMoYSxoKSkubmV4dCxhPVtdOyEoaT1SYyh1LG8pKS5kb25lOylhLnB1c2goaS52YWx1ZSk7Zm9yKHYmJmM+MiYmKHM9X2Mocyxhcmd1bWVudHNbMl0pKSxuPUNjKGEpLGU9bmV3KFZjKGYpKShuKSx0PTA7bj50O3QrKyllW3RdPXY/cyhhW3RdLHQpOmFbdF07cmV0dXJuIGV9LE5zPWlzLmZvckVhY2gsQ3M9Y3MsQnM9cHQsR3M9ZSxEcz1tbi5nZXQsVnM9bW4uc2V0LFlzPW1uLlQsenM9QnMuZixXcz1Hcy5mLCRzPU1hdGgucm91bmQsSHM9ZHMuUmFuZ2VFcnJvcixLcz1ncy5BcnJheUJ1ZmZlcixxcz1Lcy5wcm90b3R5cGUsSnM9Z3MuRGF0YVZpZXcsWHM9cHMuWCxRcz1wcy5aLFpzPXBzLmFyLHJ2PXBzLmNyLHR2PXBzLnRyLG52PXBzLnVyLGV2PWZ1bmN0aW9uKHIsdCl7dHYocik7Zm9yKHZhciBuPTAsZT10Lmxlbmd0aCxpPW5ldyByKGUpO2U+bjspaVtuXT10W24rK107cmV0dXJuIGl9LGl2PWZ1bmN0aW9uKHIsdCl7enMocix0LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRHModGhpcylbdF19fSl9LG92PWZ1bmN0aW9uKHIpe3ZhciB0O3JldHVybiBQcyhxcyxyKXx8IkFycmF5QnVmZmVyIj09KHQ9VXMocikpfHwiU2hhcmVkQXJyYXlCdWZmZXIiPT10fSx1dj1mdW5jdGlvbihyLHQpe3JldHVybiBudihyKSYmIUlzKHQpJiZ0IGluIHImJmpzKCt0KSYmdD49MH0sZnY9ZnVuY3Rpb24ocix0KXtyZXR1cm4gdD1Ucyh0KSx1dihyLHQpP1NzKDIsclt0XSk6V3Mocix0KX0sYXY9ZnVuY3Rpb24ocix0LG4pe3JldHVybiB0PVRzKHQpLCEodXYocix0KSYmTXMobikmJnhzKG4sInZhbHVlIikpfHx4cyhuLCJnZXQiKXx8eHMobiwic2V0Iil8fG4uaXx8eHMobiwid3JpdGFibGUiKSYmIW4ud3JpdGFibGV8fHhzKG4sImVudW1lcmFibGUiKSYmIW4udD96cyhyLHQsbik6KHJbdF09bi52YWx1ZSxyKX07d3M/KFhzfHwoR3MuZj1mdixCcy5mPWF2LGl2KHJ2LCJidWZmZXIiKSxpdihydiwiYnl0ZU9mZnNldCIpLGl2KHJ2LCJieXRlTGVuZ3RoIiksaXYocnYsImxlbmd0aCIpKSxscyh7dGFyZ2V0OiJPYmplY3QiLEM6ITAsRzohWHN9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnYsZGVmaW5lUHJvcGVydHk6YXZ9KSxzYS5leHBvcnRzPWZ1bmN0aW9uKHIsdCxuKXt2YXIgZT1yLm1hdGNoKC9cZCskLylbMF0vOCxpPXIrKG4/IkNsYW1wZWQiOiIiKSsiQXJyYXkiLG89ImdldCIrcix1PSJzZXQiK3IsZj1kc1tpXSxhPWYsYz1hJiZhLnByb3RvdHlwZSxzPXt9LHY9ZnVuY3Rpb24ocix0KXt6cyhyLHQse2dldDpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihyLHQpe3ZhciBuPURzKHIpO3JldHVybiBuLnZpZXdbb10odCplK24uYnl0ZU9mZnNldCwhMCl9KHRoaXMsdCl9LHNldDpmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24ocix0LGkpe3ZhciBvPURzKHIpO24mJihpPTA+KGk9JHMoaSkpPzA6aT4yNTU/MjU1OjI1NSZpKSxvLnZpZXdbdV0odCplK28uYnl0ZU9mZnNldCxpLCEwKX0odGhpcyx0LHIpfSx0OiEwfSl9O1hzP2JzJiYoYT10KChmdW5jdGlvbihyLHQsbixpKXtyZXR1cm4gbXMocixjKSxmdW5jdGlvbihyLHQsbil7dmFyIGUsaTtyZXR1cm4gaHMmJnNzKGU9dC5jb25zdHJ1Y3RvcikmJmUhPT1uJiZ2cyhpPWUucHJvdG90eXBlKSYmaSE9PW4ucHJvdG90eXBlJiZocyhyLGkpLHJ9KE1zKHQpP292KHQpP3ZvaWQgMCE9PWk/bmV3IGYodCxFcyhuLGUpLGkpOnZvaWQgMCE9PW4/bmV3IGYodCxFcyhuLGUpKTpuZXcgZih0KTpudih0KT9ldihhLHQpOnlzKEZzLGEsdCk6bmV3IGYoa3ModCkpLHIsYSl9KSksX3MmJl9zKGEsWnMpLE5zKFJzKGYpLChmdW5jdGlvbihyKXtyIGluIGF8fEFzKGEscixmW3JdKX0pKSxhLnByb3RvdHlwZT1jKTooYT10KChmdW5jdGlvbihyLHQsbixpKXttcyhyLGMpO3ZhciBvLHUsZixzPTAsaD0wO2lmKE1zKHQpKXtpZighb3YodCkpcmV0dXJuIG52KHQpP2V2KGEsdCk6eXMoRnMsYSx0KTtvPXQsaD1FcyhuLGUpO3ZhciBsPXQuYnl0ZUxlbmd0aDtpZih2b2lkIDA9PT1pKXtpZihsJWUpdGhyb3cgSHMoIldyb25nIGxlbmd0aCIpO2lmKDA+KHU9bC1oKSl0aHJvdyBIcygiV3JvbmcgbGVuZ3RoIil9ZWxzZSBpZigodT1PcyhpKSplKStoPmwpdGhyb3cgSHMoIldyb25nIGxlbmd0aCIpO2Y9dS9lfWVsc2UgZj1rcyh0KSxvPW5ldyBLcyh1PWYqZSk7Zm9yKFZzKHIse2J1ZmZlcjpvLGJ5dGVPZmZzZXQ6aCxieXRlTGVuZ3RoOnUsbGVuZ3RoOmYsdmlldzpuZXcgSnMobyl9KTtmPnM7KXYocixzKyspfSkpLF9zJiZfcyhhLFpzKSxjPWEucHJvdG90eXBlPUxzKHJ2KSksYy5jb25zdHJ1Y3RvciE9PWEmJkFzKGMsImNvbnN0cnVjdG9yIixhKSxZcyhjKS5KPWEsUXMmJkFzKGMsUXMsaSk7dmFyIGg9YSE9ZjtzW2ldPWEsbHMoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxHOmgsaDohWHN9LHMpLCJCWVRFU19QRVJfRUxFTUVOVCJpbiBhfHxBcyhhLCJCWVRFU19QRVJfRUxFTUVOVCIsZSksIkJZVEVTX1BFUl9FTEVNRU5UImluIGN8fEFzKGMsIkJZVEVTX1BFUl9FTEVNRU5UIixlKSxDcyhpKX0pOnNhLmV4cG9ydHM9ZnVuY3Rpb24oKXt9LCgwLHNhLmV4cG9ydHMpKCJVaW50OCIsKGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHIodGhpcyx0LG4sZSl9fSkpO3ZhciBjdj1mcixzdj1UeXBlRXJyb3IsdnY9ZnVuY3Rpb24ocix0KXtpZighZGVsZXRlIHJbdF0pdGhyb3cgc3YoIkNhbm5vdCBkZWxldGUgcHJvcGVydHkgIitjdih0KSsiIG9mICIrY3YocikpfSxodj1Ucixsdj1Xbixkdj1Kbix5dj12dix3dj1NYXRoLm1pbixidj1aYSxwdj1TKFtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHIsdCl7dmFyIG49aHYodGhpcyksZT1kdihuKSxpPWx2KHIsZSksbz1sdih0LGUpLHU9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsZj13digodm9pZCAwPT09dT9lOmx2KHUsZSkpLW8sZS1pKSxhPTE7Zm9yKGk+byYmbytmPmkmJihhPS0xLG8rPWYtMSxpKz1mLTEpO2YtLSA+MDspbyBpbiBuP25baV09bltvXTp5dihuLGkpLGkrPWEsbys9YTtyZXR1cm4gbn0pLGd2PWJ2LnJyOygwLGJ2Lm5yKSgiY29weVdpdGhpbiIsKGZ1bmN0aW9uKHIsdCl7cmV0dXJuIHB2KGd2KHRoaXMpLHIsdCxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9KSk7dmFyIG12PWlzLmV2ZXJ5LFN2PVphLnJyOygwLFphLm5yKSgiZXZlcnkiLChmdW5jdGlvbihyKXtyZXR1cm4gbXYoU3YodGhpcykscixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIEF2PVpyLGp2PVR5cGVFcnJvcixPdj1ndSxrdj1mdW5jdGlvbihyKXt2YXIgdD1BdihyLCJudW1iZXIiKTtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cganYoIkNhbid0IGNvbnZlcnQgbnVtYmVyIHRvIGJpZ2ludCIpO3JldHVybiBCaWdJbnQodCl9LEV2PXFlLFR2PWEseHY9aSxVdj1aYS5ycixNdj1aYS5ucixJdj1TKCIiLnNsaWNlKTtNdigiZmlsbCIsKGZ1bmN0aW9uKHIpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg7VXYodGhpcyk7dmFyIG49IkJpZyI9PT1JdihFdih0aGlzKSwwLDMpP2t2KHIpOityO3JldHVybiBUdihPdix0aGlzLG4sdD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsdD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSkseHYoKGZ1bmN0aW9uKCl7dmFyIHI9MDtyZXR1cm4gbmV3IEludDhBcnJheSgyKS5maWxsKHt2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHIrK319KSwxIT09cn0pKSk7dmFyIEx2PUpuLFB2PXFmLF92PVphLnRyLFJ2PVphLmlyLEZ2PWZ1bmN0aW9uKHIpe3JldHVybiBfdihQdihyLFJ2KHIpKSl9LE52PUZ2LEN2PWlzLmZpbHRlcixCdj1mdW5jdGlvbihyLHQpe3JldHVybiBmdW5jdGlvbihyLHQpe2Zvcih2YXIgbj0wLGU9THYodCksaT1uZXcgcihlKTtlPm47KWlbbl09dFtuKytdO3JldHVybiBpfShOdihyKSx0KX0sR3Y9WmEucnI7KDAsWmEubnIpKCJmaWx0ZXIiLChmdW5jdGlvbihyKXt2YXIgdD1DdihHdih0aGlzKSxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKTtyZXR1cm4gQnYodGhpcyx0KX0pKTt2YXIgRHY9aXMuZmluZCxWdj1aYS5ycjsoMCxaYS5ucikoImZpbmQiLChmdW5jdGlvbihyKXtyZXR1cm4gRHYoVnYodGhpcykscixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIFl2PWlzLmZpbmRJbmRleCx6dj1aYS5ycjsoMCxaYS5ucikoImZpbmRJbmRleCIsKGZ1bmN0aW9uKHIpe3JldHVybiBZdih6dih0aGlzKSxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgV3Y9aXMuZm9yRWFjaCwkdj1aYS5ycjsoMCxaYS5ucikoImZvckVhY2giLChmdW5jdGlvbihyKXtXdigkdih0aGlzKSxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgSHY9dGUuaW5jbHVkZXMsS3Y9WmEucnI7KDAsWmEubnIpKCJpbmNsdWRlcyIsKGZ1bmN0aW9uKHIpe3JldHVybiBIdihLdih0aGlzKSxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgcXY9dGUuaW5kZXhPZixKdj1aYS5ycjsoMCxaYS5ucikoImluZGV4T2YiLChmdW5jdGlvbihyKXtyZXR1cm4gcXYoSnYodGhpcykscixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIFh2PW4sUXY9aSxadj1TLHJoPVphLHRoPXJ1LG5oPSRyKCJpdGVyYXRvciIpLGVoPVh2LlVpbnQ4QXJyYXksaWg9WnYodGgudmFsdWVzKSxvaD1adih0aC5rZXlzKSx1aD1adih0aC5lbnRyaWVzKSxmaD1yaC5ycixhaD1yaC5ucixjaD1laCYmZWgucHJvdG90eXBlLHNoPSFRdigoZnVuY3Rpb24oKXtjaFtuaF0uY2FsbChbMV0pfSkpLHZoPSEhY2gmJmNoLnZhbHVlcyYmY2hbbmhdPT09Y2gudmFsdWVzJiYidmFsdWVzIj09PWNoLnZhbHVlcy5uYW1lLGhoPWZ1bmN0aW9uKCl7cmV0dXJuIGloKGZoKHRoaXMpKX07YWgoImVudHJpZXMiLChmdW5jdGlvbigpe3JldHVybiB1aChmaCh0aGlzKSl9KSxzaCksYWgoImtleXMiLChmdW5jdGlvbigpe3JldHVybiBvaChmaCh0aGlzKSl9KSxzaCksYWgoInZhbHVlcyIsaGgsc2h8fCF2aCx7bmFtZToidmFsdWVzIn0pLGFoKG5oLGhoLHNofHwhdmgse25hbWU6InZhbHVlcyJ9KTt2YXIgbGg9WmEucnIsZGg9WmEubnIseWg9UyhbXS5qb2luKTtkaCgiam9pbiIsKGZ1bmN0aW9uKHIpe3JldHVybiB5aChsaCh0aGlzKSxyKX0pKTt2YXIgd2g9dSxiaD1GdW5jdGlvbi5wcm90b3R5cGUscGg9YmguYXBwbHksZ2g9YmguY2FsbCxtaD0ib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuYXBwbHl8fCh3aD9naC5iaW5kKHBoKTpmdW5jdGlvbigpe3JldHVybiBnaC5hcHBseShwaCxhcmd1bWVudHMpfSksU2g9aSxBaD1mdW5jdGlvbihyLHQpe3ZhciBuPVtdW3JdO3JldHVybiEhbiYmU2goKGZ1bmN0aW9uKCl7bi5jYWxsKG51bGwsdHx8ZnVuY3Rpb24oKXtyZXR1cm4gMX0sMSl9KSl9LGpoPW1oLE9oPVIsa2g9RG4sRWg9Sm4sVGg9TWF0aC5taW4seGg9W10ubGFzdEluZGV4T2YsVWg9ISF4aCYmITEsTWg9QWgoImxhc3RJbmRleE9mIiksSWg9bWgsTGg9VWh8fCFNaD9mdW5jdGlvbihyKXtpZihVaClyZXR1cm4gamgoeGgsdGhpcyxhcmd1bWVudHMpfHwwO3ZhciB0PU9oKHRoaXMpLG49RWgodCksZT1uLTE7Zm9yKGFyZ3VtZW50cy5sZW5ndGg+MSYmKGU9VGgoZSxraChhcmd1bWVudHNbMV0pKSksMD5lJiYoZT1uK2UpO2U+PTA7ZS0tKWlmKGUgaW4gdCYmdFtlXT09PXIpcmV0dXJuIGV8fDA7cmV0dXJuLTF9OnhoLFBoPVphLnJyOygwLFphLm5yKSgibGFzdEluZGV4T2YiLChmdW5jdGlvbihyKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO3JldHVybiBJaChMaCxQaCh0aGlzKSx0PjE/W3IsYXJndW1lbnRzWzFdXTpbcl0pfSkpO3ZhciBfaD1pcy5tYXAsUmg9RnYsRmg9WmEucnI7KDAsWmEubnIpKCJtYXAiLChmdW5jdGlvbihyKXtyZXR1cm4gX2goRmgodGhpcykscixhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwoZnVuY3Rpb24ocix0KXtyZXR1cm4gbmV3KFJoKHIpKSh0KX0pKX0pKTt2YXIgTmg9dnIsQ2g9VHIsQmg9TSxHaD1KbixEaD1UeXBlRXJyb3IsVmg9ZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKHQsbixlLGkpe05oKG4pO3ZhciBvPUNoKHQpLHU9QmgobyksZj1HaChvKSxhPXI/Zi0xOjAsYz1yPy0xOjE7aWYoMj5lKWZvcig7Oyl7aWYoYSBpbiB1KXtpPXVbYV0sYSs9YzticmVha31pZihhKz1jLHI/MD5hOmE+PWYpdGhyb3cgRGgoIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKX1mb3IoO3I/YT49MDpmPmE7YSs9YylhIGluIHUmJihpPW4oaSx1W2FdLGEsbykpO3JldHVybiBpfX0sWWg9e2xlZnQ6VmgoITEpLHJpZ2h0OlZoKCEwKX0semg9WWgubGVmdCxXaD1aYS5ycjsoMCxaYS5ucikoInJlZHVjZSIsKGZ1bmN0aW9uKHIpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIHpoKFdoKHRoaXMpLHIsdCx0PjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyICRoPVloLnJpZ2h0LEhoPVphLnJyOygwLFphLm5yKSgicmVkdWNlUmlnaHQiLChmdW5jdGlvbihyKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoO3JldHVybiAkaChIaCh0aGlzKSxyLHQsdD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBLaD1aYS5ycixxaD1NYXRoLmZsb29yOygwLFphLm5yKSgicmV2ZXJzZSIsKGZ1bmN0aW9uKCl7Zm9yKHZhciByLHQ9dGhpcyxuPUtoKHQpLmxlbmd0aCxlPXFoKG4vMiksaT0wO2U+aTspcj10W2ldLHRbaSsrXT10Wy0tbl0sdFtuXT1yO3JldHVybiB0fSkpO3ZhciBKaD1uLFhoPWEsUWg9WmEsWmg9Sm4scmw9bGMsdGw9VHIsbmw9aSxlbD1KaC5SYW5nZUVycm9yLGlsPUpoLkludDhBcnJheSxvbD1pbCYmaWwucHJvdG90eXBlLHVsPW9sJiZvbC5zZXQsZmw9UWgucnIsYWw9UWgubnIsY2w9IW5sKChmdW5jdGlvbigpe3ZhciByPW5ldyBVaW50OENsYW1wZWRBcnJheSgyKTtyZXR1cm4gWGgodWwscix7bGVuZ3RoOjEsMDozfSwxKSwzIT09clsxXX0pKSxzbD1jbCYmUWguWCYmbmwoKGZ1bmN0aW9uKCl7dmFyIHI9bmV3IGlsKDIpO3JldHVybiByLnNldCgxKSxyLnNldCgiMiIsMSksMCE9PXJbMF18fDIhPT1yWzFdfSkpO2FsKCJzZXQiLChmdW5jdGlvbihyKXtmbCh0aGlzKTt2YXIgdD1ybChhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwxKSxuPXRsKHIpO2lmKGNsKXJldHVybiBYaCh1bCx0aGlzLG4sdCk7dmFyIGU9dGhpcy5sZW5ndGgsaT1aaChuKSxvPTA7aWYoaSt0PmUpdGhyb3cgZWwoIldyb25nIGxlbmd0aCIpO2Zvcig7aT5vOyl0aGlzW3Qrb109bltvKytdfSksIWNsfHxzbCk7dmFyIHZsPVMoW10uc2xpY2UpLGhsPUZ2LGxsPXZsLGRsPVphLnJyOygwLFphLm5yKSgic2xpY2UiLChmdW5jdGlvbihyLHQpe2Zvcih2YXIgbj1sbChkbCh0aGlzKSxyLHQpLGU9aGwodGhpcyksaT0wLG89bi5sZW5ndGgsdT1uZXcgZShvKTtvPmk7KXVbaV09bltpKytdO3JldHVybiB1fSksaSgoZnVuY3Rpb24oKXtuZXcgSW50OEFycmF5KDEpLnNsaWNlKCl9KSkpO3ZhciB5bD1pcy5zb21lLHdsPVphLnJyOygwLFphLm5yKSgic29tZSIsKGZ1bmN0aW9uKHIpe3JldHVybiB5bCh3bCh0aGlzKSxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgYmw9VXUscGw9TWF0aC5mbG9vcixnbD1mdW5jdGlvbihyLHQpe3ZhciBuPXIubGVuZ3RoLGU9cGwobi8yKTtyZXR1cm4gOD5uP21sKHIsdCk6U2wocixnbChibChyLDAsZSksdCksZ2woYmwocixlKSx0KSx0KX0sbWw9ZnVuY3Rpb24ocix0KXtmb3IodmFyIG4sZSxpPXIubGVuZ3RoLG89MTtpPm87KXtmb3IoZT1vLG49cltvXTtlJiZ0KHJbZS0xXSxuKT4wOylyW2VdPXJbLS1lXTtlIT09bysrJiYocltlXT1uKX1yZXR1cm4gcn0sU2w9ZnVuY3Rpb24ocix0LG4sZSl7Zm9yKHZhciBpPXQubGVuZ3RoLG89bi5sZW5ndGgsdT0wLGY9MDtpPnV8fG8+Zjspclt1K2ZdPWk+dSYmbz5mP2UodFt1XSxuW2ZdKT4wP25bZisrXTp0W3UrK106aT51P3RbdSsrXTpuW2YrK107cmV0dXJuIHJ9LEFsPWdsLGpsPXoubWF0Y2goL2ZpcmVmb3hcLyhcZCspL2kpLE9sPSEhamwmJitqbFsxXSxrbD0vTVNJRXxUcmlkZW50Ly50ZXN0KHopLEVsPXoubWF0Y2goL0FwcGxlV2ViS2l0XC8oXGQrKVwuLyksVGw9ISFFbCYmK0VsWzFdLHhsPVMsVWw9aSxNbD12cixJbD1BbCxMbD1PbCxQbD1rbCxfbD1YLFJsPVRsLEZsPVphLnJyLE5sPVphLm5yLENsPW4uVWludDE2QXJyYXksQmw9Q2wmJnhsKENsLnByb3RvdHlwZS5zb3J0KSxHbD0hKCFCbHx8VWwoKGZ1bmN0aW9uKCl7QmwobmV3IENsKDIpLG51bGwpfSkpJiZVbCgoZnVuY3Rpb24oKXtCbChuZXcgQ2woMikse30pfSkpKSxEbD0hIUJsJiYhVWwoKGZ1bmN0aW9uKCl7aWYoX2wpcmV0dXJuIDc0Pl9sO2lmKExsKXJldHVybiA2Nz5MbDtpZihQbClyZXR1cm4hMDtpZihSbClyZXR1cm4gNjAyPlJsO3ZhciByLHQsbj1uZXcgQ2woNTE2KSxlPUFycmF5KDUxNik7Zm9yKHI9MDs1MTY+cjtyKyspdD1yJTQsbltyXT01MTUtcixlW3JdPXItMip0KzM7Zm9yKEJsKG4sKGZ1bmN0aW9uKHIsdCl7cmV0dXJuKHIvNHwwKS0odC80fDApfSkpLHI9MDs1MTY+cjtyKyspaWYobltyXSE9PWVbcl0pcmV0dXJuITB9KSk7TmwoInNvcnQiLChmdW5jdGlvbihyKXtyZXR1cm4gdm9pZCAwIT09ciYmTWwociksRGw/QmwodGhpcyxyKTpJbChGbCh0aGlzKSxmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwIT09cj8rcih0LG4pfHwwOm4hPW4/LTE6dCE9dD8xOjA9PT10JiYwPT09bj8xL3Q+MCYmMD4xL24/MTotMTp0Pm59fShyKSl9KSwhRGx8fEdsKTt2YXIgVmw9S24sWWw9V24semw9RnYsV2w9WmEucnI7KDAsWmEubnIpKCJzdWJhcnJheSIsKGZ1bmN0aW9uKHIsdCl7dmFyIG49V2wodGhpcyksZT1uLmxlbmd0aCxpPVlsKHIsZSk7cmV0dXJuIG5ldyh6bChuKSkobi5idWZmZXIsbi5ieXRlT2Zmc2V0K2kqbi5CWVRFU19QRVJfRUxFTUVOVCxWbCgodm9pZCAwPT09dD9lOllsKHQsZSkpLWkpKX0pKTt2YXIgJGw9bWgsSGw9WmEsS2w9aSxxbD12bCxKbD1uLkludDhBcnJheSxYbD1IbC5ycixRbD1IbC5ucixabD1bXS50b0xvY2FsZVN0cmluZyxyZD0hIUpsJiZLbCgoZnVuY3Rpb24oKXtabC5jYWxsKG5ldyBKbCgxKSl9KSk7UWwoInRvTG9jYWxlU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4gJGwoWmwscmQ/cWwoWGwodGhpcykpOlhsKHRoaXMpLHFsKGFyZ3VtZW50cykpfSksS2woKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IEpsKFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSkpfHwhS2woKGZ1bmN0aW9uKCl7SmwucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpKTt2YXIgdGQ9WmEubnIsbmQ9aSxlZD1TLGlkPW4uVWludDhBcnJheSxvZD1pZCYmaWQucHJvdG90eXBlfHx7fSx1ZD1bXS50b1N0cmluZyxmZD1lZChbXS5qb2luKTtuZCgoZnVuY3Rpb24oKXt1ZC5jYWxsKHt9KX0pKSYmKHVkPWZ1bmN0aW9uKCl7cmV0dXJuIGZkKHRoaXMpfSk7dmFyIGFkPW9kLnRvU3RyaW5nIT11ZDt0ZCgidG9TdHJpbmciLHVkLGFkKTt2YXIgY2Qsc2QsdmQsaGQsbGQ9InByb2Nlc3MiPT1rKG4ucHJvY2VzcyksZGQ9VHlwZUVycm9yLHlkPS8oPzppcGFkfGlwaG9uZXxpcG9kKS4qYXBwbGV3ZWJraXQvaS50ZXN0KHopLHdkPW4sYmQ9bWgscGQ9YmMsZ2Q9RixtZD1NcixTZD1pLEFkPUVpLGpkPXZsLE9kPXV0LGtkPWZ1bmN0aW9uKHIsdCl7aWYodD5yKXRocm93IGRkKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpO3JldHVybiByfSxFZD15ZCxUZD1sZCx4ZD13ZC5zZXRJbW1lZGlhdGUsVWQ9d2QuY2xlYXJJbW1lZGlhdGUsTWQ9d2QucHJvY2VzcyxJZD13ZC52cixMZD13ZC5GdW5jdGlvbixQZD13ZC5NZXNzYWdlQ2hhbm5lbCxfZD13ZC5TdHJpbmcsUmQ9MCxGZD17fTt0cnl7Y2Q9d2QubG9jYXRpb259Y2F0Y2gocil7fXZhciBOZD1mdW5jdGlvbihyKXtpZihtZChGZCxyKSl7dmFyIHQ9RmRbcl07ZGVsZXRlIEZkW3JdLHQoKX19LENkPWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbigpe05kKHIpfX0sQmQ9ZnVuY3Rpb24ocil7TmQoci5kYXRhKX0sR2Q9ZnVuY3Rpb24ocil7d2QucG9zdE1lc3NhZ2UoX2QociksY2QucHJvdG9jb2wrIi8vIitjZC5ob3N0KX07eGQmJlVkfHwoeGQ9ZnVuY3Rpb24ocil7a2QoYXJndW1lbnRzLmxlbmd0aCwxKTt2YXIgdD1nZChyKT9yOkxkKHIpLG49amQoYXJndW1lbnRzLDEpO3JldHVybiBGZFsrK1JkXT1mdW5jdGlvbigpe2JkKHQsdm9pZCAwLG4pfSxzZChSZCksUmR9LFVkPWZ1bmN0aW9uKHIpe2RlbGV0ZSBGZFtyXX0sVGQ/c2Q9ZnVuY3Rpb24ocil7TWQuaHIoQ2QocikpfTpJZCYmSWQubm93P3NkPWZ1bmN0aW9uKHIpe0lkLm5vdyhDZChyKSl9OlBkJiYhRWQ/KGhkPSh2ZD1uZXcgUGQpLnBvcnQyLHZkLnBvcnQxLm9ubWVzc2FnZT1CZCxzZD1wZChoZC5wb3N0TWVzc2FnZSxoZCkpOndkLmFkZEV2ZW50TGlzdGVuZXImJmdkKHdkLnBvc3RNZXNzYWdlKSYmIXdkLmxyJiZjZCYmImZpbGU6IiE9PWNkLnByb3RvY29sJiYhU2QoR2QpPyhzZD1HZCx3ZC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixCZCwhMSkpOnNkPSJvbnJlYWR5c3RhdGVjaGFuZ2UiaW4gT2QoInNjcmlwdCIpP2Z1bmN0aW9uKHIpe0FkLmFwcGVuZENoaWxkKE9kKCJzY3JpcHQiKSkub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7QWQucmVtb3ZlQ2hpbGQodGhpcyksTmQocil9fTpmdW5jdGlvbihyKXtzZXRUaW1lb3V0KENkKHIpLDApfSk7dmFyIERkLFZkLFlkLHpkLFdkLCRkLEhkLEtkLHFkPXtzZXQ6eGQsY2xlYXI6VWR9LEpkPW4sWGQ9L2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KHopJiZ2b2lkIDAhPT1KZC5kcixRZD0vd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KHopLFpkPW4scnk9YmMsdHk9ZS5mLG55PXFkLnNldCxleT15ZCxpeT1YZCxveT1RZCx1eT1sZCxmeT1aZC5NdXRhdGlvbk9ic2VydmVyfHxaZC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLGF5PVpkLmRvY3VtZW50LGN5PVpkLnByb2Nlc3Msc3k9WmQuUHJvbWlzZSx2eT10eShaZCwicXVldWVNaWNyb3Rhc2siKSxoeT12eSYmdnkudmFsdWU7aHl8fChEZD1mdW5jdGlvbigpe3ZhciByLHQ7Zm9yKHV5JiYocj1jeS5kb21haW4pJiZyLnlyKCk7VmQ7KXt0PVZkLndyLFZkPVZkLm5leHQ7dHJ5e3QoKX1jYXRjaChyKXt0aHJvdyBWZD96ZCgpOllkPXZvaWQgMCxyfX1ZZD12b2lkIDAsciYmci5icigpfSxleXx8dXl8fG95fHwhZnl8fCFheT8haXkmJnN5JiZzeS5yZXNvbHZlPygoSGQ9c3kucmVzb2x2ZSh2b2lkIDApKS5jb25zdHJ1Y3Rvcj1zeSxLZD1yeShIZC50aGVuLEhkKSx6ZD1mdW5jdGlvbigpe0tkKERkKX0pOnV5P3pkPWZ1bmN0aW9uKCl7Y3kuaHIoRGQpfToobnk9cnkobnksWmQpLHpkPWZ1bmN0aW9uKCl7bnkoRGQpfSk6KFdkPSEwLCRkPWF5LmNyZWF0ZVRleHROb2RlKCIiKSxuZXcgZnkoRGQpLm9ic2VydmUoJGQse2NoYXJhY3RlckRhdGE6ITB9KSx6ZD1mdW5jdGlvbigpeyRkLmRhdGE9V2Q9IVdkfSkpO3ZhciBseT1oeXx8ZnVuY3Rpb24ocil7dmFyIHQ9e3dyOnIsbmV4dDp2b2lkIDB9O1lkJiYoWWQubmV4dD10KSxWZHx8KFZkPXQsemQoKSksWWQ9dH0sZHk9bix5eT1mdW5jdGlvbihyKXt0cnl7cmV0dXJue2Vycm9yOiExLHZhbHVlOnIoKX19Y2F0Y2gocil7cmV0dXJue2Vycm9yOiEwLHZhbHVlOnJ9fX0sd3k9ZnVuY3Rpb24oKXt0aGlzLmhlYWQ9bnVsbCx0aGlzLnByPW51bGx9O3d5LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHIpe3ZhciB0PXtpdGVtOnIsbmV4dDpudWxsfTt0aGlzLmhlYWQ/dGhpcy5wci5uZXh0PXQ6dGhpcy5oZWFkPXQsdGhpcy5wcj10fSxnZXQ6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLmhlYWQ7aWYocilyZXR1cm4gdGhpcy5oZWFkPXIubmV4dCx0aGlzLnByPT09ciYmKHRoaXMucHI9bnVsbCksci5pdGVtfX07dmFyIGJ5PXd5LHB5PW4uUHJvbWlzZSxneT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmIm9iamVjdCIhPXR5cGVvZiBEZW5vLG15PW4sU3k9cHksQXk9RixqeT1JZSxPeT1IdCxreT0kcixFeT1neSxUeT1YO1N5JiZTeS5wcm90b3R5cGU7dmFyIHh5PWt5KCJzcGVjaWVzIiksVXk9ITEsTXk9QXkobXkuUHJvbWlzZVJlamVjdGlvbkV2ZW50KSxJeT1qeSgiUHJvbWlzZSIsKGZ1bmN0aW9uKCl7dmFyIHI9T3koU3kpLHQ9ciE9PVN5KyIiO2lmKCF0JiY2Nj09PVR5KXJldHVybiEwO2lmKFR5Pj01MSYmL25hdGl2ZSBjb2RlLy50ZXN0KHIpKXJldHVybiExO3ZhciBuPW5ldyBTeSgoZnVuY3Rpb24ocil7cigxKX0pKSxlPWZ1bmN0aW9uKHIpe3IoKGZ1bmN0aW9uKCl7fSksKGZ1bmN0aW9uKCl7fSkpfTtyZXR1cm4obi5jb25zdHJ1Y3Rvcj17fSlbeHldPWUsIShVeT1uLnRoZW4oKGZ1bmN0aW9uKCl7fSkpaW5zdGFuY2VvZiBlKXx8IXQmJkV5JiYhTXl9KSksTHk9e2dyOkl5LG1yOk15LFNyOlV5fSxQeT17fSxfeT12cixSeT1mdW5jdGlvbihyKXt2YXIgdCxuO3RoaXMucHJvbWlzZT1uZXcgcigoZnVuY3Rpb24ocixlKXtpZih2b2lkIDAhPT10fHx2b2lkIDAhPT1uKXRocm93IFR5cGVFcnJvcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PXIsbj1lfSkpLHRoaXMucmVzb2x2ZT1feSh0KSx0aGlzLnJlamVjdD1feShuKX07UHkuZj1mdW5jdGlvbihyKXtyZXR1cm4gbmV3IFJ5KHIpfTt2YXIgRnksTnksQ3ksQnk9QmUsR3k9bGQsRHk9bixWeT1hLFl5PUZuLHp5PXhvLFd5PXdvLCR5PWNzLEh5PXZyLEt5PUYscXk9QyxKeT11dSxYeT1xZixReT1xZC5zZXQsWnk9bHkscnc9eXksdHc9Ynksbnc9bW4sZXc9cHksaXc9UHksb3c9THkuZ3IsdXc9THkubXIsZnc9THkuU3IsYXc9bncuVSgiUHJvbWlzZSIpLGN3PW53LnNldCxzdz1ldyYmZXcucHJvdG90eXBlLHZ3PWV3LGh3PXN3LGx3PUR5LlR5cGVFcnJvcixkdz1EeS5kb2N1bWVudCx5dz1EeS5wcm9jZXNzLHd3PWl3LmYsYnc9d3cscHc9ISEoZHcmJmR3LmNyZWF0ZUV2ZW50JiZEeS5kaXNwYXRjaEV2ZW50KSxndz1mdW5jdGlvbihyKXt2YXIgdDtyZXR1cm4hKCFxeShyKXx8IUt5KHQ9ci50aGVuKSkmJnR9LG13PWZ1bmN0aW9uKHIsdCl7dmFyIG4sZSxpLG89dC52YWx1ZSx1PTE9PXQuc3RhdGUsZj11P3Iub2s6ci5BcixhPXIucmVzb2x2ZSxjPXIucmVqZWN0LHM9ci5kb21haW47dHJ5e2Y/KHV8fCgyPT09dC5qciYma3codCksdC5qcj0xKSwhMD09PWY/bj1vOihzJiZzLmJyKCksbj1mKG8pLHMmJihzLnlyKCksaT0hMCkpLG49PT1yLnByb21pc2U/YyhsdygiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKTooZT1ndyhuKSk/VnkoZSxuLGEsYyk6YShuKSk6YyhvKX1jYXRjaChyKXtzJiYhaSYmcy55cigpLGMocil9fSxTdz1mdW5jdGlvbihyLHQpe3IuT3J8fChyLk9yPSEwLFp5KChmdW5jdGlvbigpe2Zvcih2YXIgbixlPXIua3I7bj1lLmdldCgpOyltdyhuLHIpO3IuT3I9ITEsdCYmIXIuanImJmp3KHIpfSkpKX0sQXc9ZnVuY3Rpb24ocix0LG4pe3ZhciBlLGk7cHc/KChlPWR3LmNyZWF0ZUV2ZW50KCJFdmVudCIpKS5wcm9taXNlPXQsZS5yZWFzb249bixlLmluaXRFdmVudChyLCExLCEwKSxEeS5kaXNwYXRjaEV2ZW50KGUpKTplPXtwcm9taXNlOnQscmVhc29uOm59LCF1dyYmKGk9RHlbIm9uIityXSk/aShlKToidW5oYW5kbGVkcmVqZWN0aW9uIj09PXImJmZ1bmN0aW9uKHIsdCl7dmFyIG49ZHkuY29uc29sZTtuJiZuLmVycm9yJiYoMT09YXJndW1lbnRzLmxlbmd0aD9uLmVycm9yKHIpOm4uZXJyb3Iocix0KSl9KCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24iLG4pfSxqdz1mdW5jdGlvbihyKXtWeShReSxEeSwoZnVuY3Rpb24oKXt2YXIgdCxuPXIuayxlPXIudmFsdWU7aWYoT3cocikmJih0PXJ3KChmdW5jdGlvbigpe0d5P3l3LkVyKCJ1bmhhbmRsZWRSZWplY3Rpb24iLGUsbik6QXcoInVuaGFuZGxlZHJlamVjdGlvbiIsbixlKX0pKSxyLmpyPUd5fHxPdyhyKT8yOjEsdC5lcnJvcikpdGhyb3cgdC52YWx1ZX0pKX0sT3c9ZnVuY3Rpb24ocil7cmV0dXJuIDEhPT1yLmpyJiYhci5wYXJlbnR9LGt3PWZ1bmN0aW9uKHIpe1Z5KFF5LER5LChmdW5jdGlvbigpe3ZhciB0PXIuaztHeT95dy5FcigicmVqZWN0aW9uSGFuZGxlZCIsdCk6QXcoInJlamVjdGlvbmhhbmRsZWQiLHQsci52YWx1ZSl9KSl9LEV3PWZ1bmN0aW9uKHIsdCxuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cih0LGUsbil9fSxUdz1mdW5jdGlvbihyLHQsbil7ci5kb25lfHwoci5kb25lPSEwLG4mJihyPW4pLHIudmFsdWU9dCxyLnN0YXRlPTIsU3cociwhMCkpfSx4dz1mdW5jdGlvbihyLHQsbil7aWYoIXIuZG9uZSl7ci5kb25lPSEwLG4mJihyPW4pO3RyeXtpZihyLms9PT10KXRocm93IGx3KCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpO3ZhciBlPWd3KHQpO2U/WnkoKGZ1bmN0aW9uKCl7dmFyIG49e2RvbmU6ITF9O3RyeXtWeShlLHQsRXcoeHcsbixyKSxFdyhUdyxuLHIpKX1jYXRjaCh0KXtUdyhuLHQscil9fSkpOihyLnZhbHVlPXQsci5zdGF0ZT0xLFN3KHIsITEpKX1jYXRjaCh0KXtUdyh7ZG9uZTohMX0sdCxyKX19fTtpZihvdyYmKGh3PSh2dz1mdW5jdGlvbihyKXtKeSh0aGlzLGh3KSxIeShyKSxWeShGeSx0aGlzKTt2YXIgdD1hdyh0aGlzKTt0cnl7cihFdyh4dyx0KSxFdyhUdyx0KSl9Y2F0Y2gocil7VHcodCxyKX19KS5wcm90b3R5cGUsKEZ5PWZ1bmN0aW9uKCl7Y3codGhpcyx7dHlwZToiUHJvbWlzZSIsZG9uZTohMSxPcjohMSxwYXJlbnQ6ITEsa3I6bmV3IHR3LGpyOiExLHN0YXRlOjAsdmFsdWU6dm9pZCAwfSl9KS5wcm90b3R5cGU9WXkoaHcsInRoZW4iLChmdW5jdGlvbihyLHQpe3ZhciBuPWF3KHRoaXMpLGU9d3coWHkodGhpcyx2dykpO3JldHVybiBuLnBhcmVudD0hMCxlLm9rPSFLeShyKXx8cixlLkFyPUt5KHQpJiZ0LGUuZG9tYWluPUd5P3l3LmRvbWFpbjp2b2lkIDAsMD09bi5zdGF0ZT9uLmtyLmFkZChlKTpaeSgoZnVuY3Rpb24oKXttdyhlLG4pfSkpLGUucHJvbWlzZX0pKSxOeT1mdW5jdGlvbigpe3ZhciByPW5ldyBGeSx0PWF3KHIpO3RoaXMucHJvbWlzZT1yLHRoaXMucmVzb2x2ZT1Fdyh4dyx0KSx0aGlzLnJlamVjdD1FdyhUdyx0KX0saXcuZj13dz1mdW5jdGlvbihyKXtyZXR1cm4gcj09PXZ3fHx2b2lkIDA9PT1yP25ldyBOeShyKTpidyhyKX0sS3koZXcpJiZzdyE9PU9iamVjdC5wcm90b3R5cGUpKXtDeT1zdy50aGVuLGZ3fHxZeShzdywidGhlbiIsKGZ1bmN0aW9uKHIsdCl7dmFyIG49dGhpcztyZXR1cm4gbmV3IHZ3KChmdW5jdGlvbihyLHQpe1Z5KEN5LG4scix0KX0pKS50aGVuKHIsdCl9KSx7UDohMH0pO3RyeXtkZWxldGUgc3cuY29uc3RydWN0b3J9Y2F0Y2gocil7fXp5JiZ6eShzdyxodyl9Qnkoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCx3cmFwOiEwLEc6b3d9LHtQcm9taXNlOnZ3fSksV3kodncsIlByb21pc2UiLCExKSwkeSgiUHJvbWlzZSIpO3ZhciBVdz1hLE13PWp0LEl3PWxyLEx3PWZ1bmN0aW9uKHIsdCxuKXt2YXIgZSxpO013KHIpO3RyeXtpZighKGU9SXcociwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBuO3JldHVybiBufWU9VXcoZSxyKX1jYXRjaChyKXtpPSEwLGU9cn1pZigidGhyb3ciPT09dCl0aHJvdyBuO2lmKGkpdGhyb3cgZTtyZXR1cm4gTXcoZSksbn0sUHc9YmMsX3c9YSxSdz1qdCxGdz1mcixOdz1QYyxDdz1KbixCdz1ZLEd3PVVjLER3PUFjLFZ3PUx3LFl3PVR5cGVFcnJvcix6dz1mdW5jdGlvbihyLHQpe3RoaXMuc3RvcHBlZD1yLHRoaXMucmVzdWx0PXR9LFd3PXp3LnByb3RvdHlwZSwkdz1mdW5jdGlvbihyLHQsbil7dmFyIGUsaSxvLHUsZixhLGMscz1uJiZuLlRyLHY9ISghbnx8IW4uVXIpLGg9ISghbnx8IW4uTXIpLGw9ISghbnx8IW4uSXIpLGQ9UHcodCxzKSx5PWZ1bmN0aW9uKHIpe3JldHVybiBlJiZWdyhlLCJub3JtYWwiLHIpLG5ldyB6dyghMCxyKX0sdz1mdW5jdGlvbihyKXtyZXR1cm4gdj8oUncociksbD9kKHJbMF0sclsxXSx5KTpkKHJbMF0sclsxXSkpOmw/ZChyLHkpOmQocil9O2lmKGgpZT1yO2Vsc2V7aWYoIShpPUR3KHIpKSl0aHJvdyBZdyhGdyhyKSsiIGlzIG5vdCBpdGVyYWJsZSIpO2lmKE53KGkpKXtmb3Iobz0wLHU9Q3cocik7dT5vO28rKylpZigoZj13KHJbb10pKSYmQncoV3csZikpcmV0dXJuIGY7cmV0dXJuIG5ldyB6dyghMSl9ZT1HdyhyLGkpfWZvcihhPWUubmV4dDshKGM9X3coYSxlKSkuZG9uZTspe3RyeXtmPXcoYy52YWx1ZSl9Y2F0Y2gocil7VncoZSwidGhyb3ciLHIpfWlmKCJvYmplY3QiPT10eXBlb2YgZiYmZiYmQncoV3csZikpcmV0dXJuIGZ9cmV0dXJuIG5ldyB6dyghMSl9LEh3PXB5LEt3PUx5LmdyfHwhcGEoKGZ1bmN0aW9uKHIpe0h3LmFsbChyKS50aGVuKHZvaWQgMCwoZnVuY3Rpb24oKXt9KSl9KSkscXc9YSxKdz12cixYdz1QeSxRdz15eSxadz0kdztCZSh7dGFyZ2V0OiJQcm9taXNlIixDOiEwLEc6S3d9LHthbGw6ZnVuY3Rpb24ocil7dmFyIHQ9dGhpcyxuPVh3LmYodCksZT1uLnJlc29sdmUsaT1uLnJlamVjdCxvPVF3KChmdW5jdGlvbigpe3ZhciBuPUp3KHQucmVzb2x2ZSksbz1bXSx1PTAsZj0xO1p3KHIsKGZ1bmN0aW9uKHIpe3ZhciBhPXUrKyxjPSExO2YrKyxxdyhuLHQscikudGhlbigoZnVuY3Rpb24ocil7Y3x8KGM9ITAsb1thXT1yLC0tZnx8ZShvKSl9KSxpKX0pKSwtLWZ8fGUobyl9KSk7cmV0dXJuIG8uZXJyb3ImJmkoby52YWx1ZSksbi5wcm9taXNlfX0pO3ZhciByYj1CZSx0Yj1MeS5ncixuYj1weSxlYj1WLGliPUYsb2I9Rm4sdWI9bmImJm5iLnByb3RvdHlwZTtpZihyYih7dGFyZ2V0OiJQcm9taXNlIixWOiEwLEc6dGIsTHI6ITB9LHtjYXRjaDpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxyKX19KSxpYihuYikpe3ZhciBmYj1lYigiUHJvbWlzZSIpLnByb3RvdHlwZS5jYXRjaDt1Yi5jYXRjaCE9PWZiJiZvYih1YiwiY2F0Y2giLGZiLHtQOiEwfSl9dmFyIGFiPWEsY2I9dnIsc2I9UHksdmI9eXksaGI9JHc7QmUoe3RhcmdldDoiUHJvbWlzZSIsQzohMCxHOkt3fSx7cmFjZTpmdW5jdGlvbihyKXt2YXIgdD10aGlzLG49c2IuZih0KSxlPW4ucmVqZWN0LGk9dmIoKGZ1bmN0aW9uKCl7dmFyIGk9Y2IodC5yZXNvbHZlKTtoYihyLChmdW5jdGlvbihyKXthYihpLHQscikudGhlbihuLnJlc29sdmUsZSl9KSl9KSk7cmV0dXJuIGkuZXJyb3ImJmUoaS52YWx1ZSksbi5wcm9taXNlfX0pO3ZhciBsYj1hLGRiPVB5O0JlKHt0YXJnZXQ6IlByb21pc2UiLEM6ITAsRzpMeS5ncn0se3JlamVjdDpmdW5jdGlvbihyKXt2YXIgdD1kYi5mKHRoaXMpO3JldHVybiBsYih0LnJlamVjdCx2b2lkIDAsciksdC5wcm9taXNlfX0pO3ZhciB5Yj1qdCx3Yj1DLGJiPVB5LHBiPUJlLGdiPUx5LmdyO1YoIlByb21pc2UiKSxwYih7dGFyZ2V0OiJQcm9taXNlIixDOiEwLEc6Z2J9LHtyZXNvbHZlOmZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbihyLHQpe2lmKHliKHIpLHdiKHQpJiZ0LmNvbnN0cnVjdG9yPT09cilyZXR1cm4gdDt2YXIgbj1iYi5mKHIpO3JldHVybigwLG4ucmVzb2x2ZSkodCksbi5wcm9taXNlfSh0aGlzLHIpfX0pO3ZhciBtYj17fSxTYj1rLEFiPVIsamI9Tm4uZixPYj1VdSxrYj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdO21iLmY9ZnVuY3Rpb24ocil7cmV0dXJuIGtiJiYiV2luZG93Ij09U2Iocik/ZnVuY3Rpb24ocil7dHJ5e3JldHVybiBqYihyKX1jYXRjaChyKXtyZXR1cm4gT2Ioa2IpfX0ocik6amIoQWIocikpfTt2YXIgRWI9e30sVGI9JHI7RWIuZj1UYjt2YXIgeGI9bixVYj1NcixNYj1FYixJYj1wdC5mLExiPWZ1bmN0aW9uKHIpe3ZhciB0PXhiLlN5bWJvbHx8KHhiLlN5bWJvbD17fSk7VWIodCxyKXx8SWIodCxyLHt2YWx1ZTpNYi5mKHIpfSl9LFBiPWEsX2I9VixSYj0kcixGYj1GbixOYj1CZSxDYj1uLEJiPWEsR2I9UyxEYj1vLFZiPVosWWI9aSx6Yj1NcixXYj1ZLCRiPWp0LEhiPVIsS2I9bnQscWI9UWUsSmI9eSxYYj1DaSxRYj1waSxaYj1ObixycD1tYix0cD12ZSxucD1lLGVwPXB0LGlwPXlpLG9wPWMsdXA9Rm4sZnA9cHIuZXhwb3J0cyxhcD1ubixjcD1ScixzcD0kcix2cD1FYixocD1MYixscD13byxkcD1tbix5cD1pcy5mb3JFYWNoLHdwPXRuKCJoaWRkZW4iKSxicD1kcC5zZXQscHA9ZHAuVSgiU3ltYm9sIiksZ3A9T2JqZWN0LnByb3RvdHlwZSxtcD1DYi5TeW1ib2wsU3A9bXAmJm1wLnByb3RvdHlwZSxBcD1DYi5UeXBlRXJyb3IsanA9Q2IuUHIsT3A9bnAuZixrcD1lcC5mLEVwPXJwLmYsVHA9b3AuZix4cD1HYihbXS5wdXNoKSxVcD1mcCgic3ltYm9scyIpLE1wPWZwKCJvcC1zeW1ib2xzIiksSXA9ZnAoIndrcyIpLExwPSFqcHx8IWpwLnByb3RvdHlwZXx8IWpwLnByb3RvdHlwZS5fcixQcD1EYiYmWWIoKGZ1bmN0aW9uKCl7cmV0dXJuIDchPVhiKGtwKHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGtwKHRoaXMsImEiLHt2YWx1ZTo3fSkuYX19KSkuYX0pKT9mdW5jdGlvbihyLHQsbil7dmFyIGU9T3AoZ3AsdCk7ZSYmZGVsZXRlIGdwW3RdLGtwKHIsdCxuKSxlJiZyIT09Z3AmJmtwKGdwLHQsZSl9OmtwLF9wPWZ1bmN0aW9uKHIsdCl7dmFyIG49VXBbcl09WGIoU3ApO3JldHVybiBicChuLHt0eXBlOiJTeW1ib2wiLHRhZzpyLGRlc2NyaXB0aW9uOnR9KSxEYnx8KG4uZGVzY3JpcHRpb249dCksbn0sUnA9ZnVuY3Rpb24ocix0LG4pe3I9PT1ncCYmUnAoTXAsdCxuKSwkYihyKTt2YXIgZT1LYih0KTtyZXR1cm4gJGIobiksemIoVXAsZSk/KG4udD8oemIocix3cCkmJnJbd3BdW2VdJiYoclt3cF1bZV09ITEpLG49WGIobix7dDpKYigwLCExKX0pKTooemIocix3cCl8fGtwKHIsd3AsSmIoMSx7fSkpLHJbd3BdW2VdPSEwKSxQcChyLGUsbikpOmtwKHIsZSxuKX0sRnA9ZnVuY3Rpb24ocix0KXskYihyKTt2YXIgbj1IYih0KSxlPVFiKG4pLmNvbmNhdChHcChuKSk7cmV0dXJuIHlwKGUsKGZ1bmN0aW9uKHQpe0RiJiYhQmIoTnAsbix0KXx8UnAocix0LG5bdF0pfSkpLHJ9LE5wPWZ1bmN0aW9uKHIpe3ZhciB0PUtiKHIpLG49QmIoVHAsdGhpcyx0KTtyZXR1cm4hKHRoaXM9PT1ncCYmemIoVXAsdCkmJiF6YihNcCx0KSkmJighKG58fCF6Yih0aGlzLHQpfHwhemIoVXAsdCl8fHpiKHRoaXMsd3ApJiZ0aGlzW3dwXVt0XSl8fG4pfSxDcD1mdW5jdGlvbihyLHQpe3ZhciBuPUhiKHIpLGU9S2IodCk7aWYobiE9PWdwfHwhemIoVXAsZSl8fHpiKE1wLGUpKXt2YXIgaT1PcChuLGUpO3JldHVybiFpfHwhemIoVXAsZSl8fHpiKG4sd3ApJiZuW3dwXVtlXXx8KGkudD0hMCksaX19LEJwPWZ1bmN0aW9uKHIpe3ZhciB0PUVwKEhiKHIpKSxuPVtdO3JldHVybiB5cCh0LChmdW5jdGlvbihyKXt6YihVcCxyKXx8emIoYXAscil8fHhwKG4scil9KSksbn0sR3A9ZnVuY3Rpb24ocil7dmFyIHQ9cj09PWdwLG49RXAodD9NcDpIYihyKSksZT1bXTtyZXR1cm4geXAobiwoZnVuY3Rpb24ocil7IXpiKFVwLHIpfHx0JiYhemIoZ3Ascil8fHhwKGUsVXBbcl0pfSkpLGV9O1ZifHwodXAoU3A9KG1wPWZ1bmN0aW9uKCl7aWYoV2IoU3AsdGhpcykpdGhyb3cgQXAoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciIpO3ZhciByPWFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9xYihhcmd1bWVudHNbMF0pOnZvaWQgMCx0PWNwKHIpLG49ZnVuY3Rpb24ocil7dGhpcz09PWdwJiZCYihuLE1wLHIpLHpiKHRoaXMsd3ApJiZ6Yih0aGlzW3dwXSx0KSYmKHRoaXNbd3BdW3RdPSExKSxQcCh0aGlzLHQsSmIoMSxyKSl9O3JldHVybiBEYiYmTHAmJlBwKGdwLHQse2k6ITAsc2V0Om59KSxfcCh0LHIpfSkucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHBwKHRoaXMpLnRhZ30pKSx1cChtcCwid2l0aG91dFNldHRlciIsKGZ1bmN0aW9uKHIpe3JldHVybiBfcChjcChyKSxyKX0pKSxvcC5mPU5wLGVwLmY9UnAsaXAuZj1GcCxucC5mPUNwLFpiLmY9cnAuZj1CcCx0cC5mPUdwLHZwLmY9ZnVuY3Rpb24ocil7cmV0dXJuIF9wKHNwKHIpLHIpfSxEYiYmKGtwKFNwLCJkZXNjcmlwdGlvbiIse2k6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHBwKHRoaXMpLmRlc2NyaXB0aW9ufX0pLHVwKGdwLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsTnAse1A6ITB9KSkpLE5iKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsd3JhcDohMCxHOiFWYixoOiFWYn0se1N5bWJvbDptcH0pLHlwKFFiKElwKSwoZnVuY3Rpb24ocil7aHAocil9KSksTmIoe3RhcmdldDoiU3ltYm9sIixDOiEwLEc6IVZifSx7UnI6ZnVuY3Rpb24oKXtMcD0hMH0sRnI6ZnVuY3Rpb24oKXtMcD0hMX19KSxOYih7dGFyZ2V0OiJPYmplY3QiLEM6ITAsRzohVmIsaDohRGJ9LHtjcmVhdGU6ZnVuY3Rpb24ocix0KXtyZXR1cm4gdm9pZCAwPT09dD9YYihyKTpGcChYYihyKSx0KX0sZGVmaW5lUHJvcGVydHk6UnAsZGVmaW5lUHJvcGVydGllczpGcCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6Q3B9KSxOYih7dGFyZ2V0OiJPYmplY3QiLEM6ITAsRzohVmJ9LHtnZXRPd25Qcm9wZXJ0eU5hbWVzOkJwfSksZnVuY3Rpb24oKXt2YXIgcj1fYigiU3ltYm9sIiksdD1yJiZyLnByb3RvdHlwZSxuPXQmJnQudmFsdWVPZixlPVJiKCJ0b1ByaW1pdGl2ZSIpO3QmJiF0W2VdJiZGYih0LGUsKGZ1bmN0aW9uKCl7cmV0dXJuIFBiKG4sdGhpcyl9KSx7TDoxfSl9KCksbHAobXAsIlN5bWJvbCIpLGFwW3dwXT0hMDt2YXIgRHA9WiYmISFTeW1ib2wuZm9yJiYhIVN5bWJvbC5rZXlGb3IsVnA9QmUsWXA9Vix6cD1NcixXcD1RZSwkcD1wci5leHBvcnRzLEhwPURwLEtwPSRwKCJzdHJpbmctdG8tc3ltYm9sLXJlZ2lzdHJ5IikscXA9JHAoInN5bWJvbC10by1zdHJpbmctcmVnaXN0cnkiKTtWcCh7dGFyZ2V0OiJTeW1ib2wiLEM6ITAsRzohSHB9LHtmb3I6ZnVuY3Rpb24ocil7dmFyIHQ9V3Aocik7aWYoenAoS3AsdCkpcmV0dXJuIEtwW3RdO3ZhciBuPVlwKCJTeW1ib2wiKSh0KTtyZXR1cm4gS3BbdF09bixxcFtuXT10LG59fSk7dmFyIEpwPUJlLFhwPU1yLFFwPW9yLFpwPWZyLHJnPURwLHRnPSgwLHByLmV4cG9ydHMpKCJzeW1ib2wtdG8tc3RyaW5nLXJlZ2lzdHJ5Iik7SnAoe3RhcmdldDoiU3ltYm9sIixDOiEwLEc6IXJnfSx7a2V5Rm9yOmZ1bmN0aW9uKHIpe2lmKCFRcChyKSl0aHJvdyBUeXBlRXJyb3IoWnAocikrIiBpcyBub3QgYSBzeW1ib2wiKTtpZihYcCh0ZyxyKSlyZXR1cm4gdGdbcl19fSk7dmFyIG5nPUJlLGVnPVYsaWc9bWgsb2c9YSx1Zz1TLGZnPWksYWc9emMsY2c9RixzZz1DLHZnPW9yLGhnPXZsLGxnPVosZGc9ZWcoIkpTT04iLCJzdHJpbmdpZnkiKSx5Zz11ZygvLi8uZXhlYyksd2c9dWcoIiIuY2hhckF0KSxiZz11ZygiIi5jaGFyQ29kZUF0KSxwZz11ZygiIi5yZXBsYWNlKSxnZz11ZygxLi50b1N0cmluZyksbWc9L1tcdUQ4MDAtXHVERkZGXS9nLFNnPS9eW1x1RDgwMC1cdURCRkZdJC8sQWc9L15bXHVEQzAwLVx1REZGRl0kLyxqZz0hbGd8fGZnKChmdW5jdGlvbigpe3ZhciByPWVnKCJTeW1ib2wiKSgpO3JldHVybiJbbnVsbF0iIT1kZyhbcl0pfHwie30iIT1kZyh7YTpyfSl8fCJ7fSIhPWRnKE9iamVjdChyKSl9KSksT2c9ZmcoKGZ1bmN0aW9uKCl7cmV0dXJuJyJcXHVkZjA2XFx1ZDgzNCInIT09ZGcoIlx1ZGYwNlx1ZDgzNCIpfHwnIlxcdWRlYWQiJyE9PWRnKCJcdWRlYWQiKX0pKSxrZz1mdW5jdGlvbihyLHQpe3ZhciBuPWhnKGFyZ3VtZW50cyksZT10O2lmKChzZyh0KXx8dm9pZCAwIT09cikmJiF2ZyhyKSlyZXR1cm4gYWcodCl8fCh0PWZ1bmN0aW9uKHIsdCl7aWYoY2coZSkmJih0PW9nKGUsdGhpcyxyLHQpKSwhdmcodCkpcmV0dXJuIHR9KSxuWzFdPXQsaWcoZGcsbnVsbCxuKX0sRWc9ZnVuY3Rpb24ocix0LG4pe3ZhciBlPXdnKG4sdC0xKSxpPXdnKG4sdCsxKTtyZXR1cm4geWcoU2cscikmJiF5ZyhBZyxpKXx8eWcoQWcscikmJiF5ZyhTZyxlKT8iXFx1IitnZyhiZyhyLDApLDE2KTpyfTtkZyYmbmcoe3RhcmdldDoiSlNPTiIsQzohMCxMOjMsRzpqZ3x8T2d9LHtzdHJpbmdpZnk6ZnVuY3Rpb24ocix0LG4pe3ZhciBlPWhnKGFyZ3VtZW50cyksaT1pZyhqZz9rZzpkZyxudWxsLGUpO3JldHVybiBPZyYmInN0cmluZyI9PXR5cGVvZiBpP3BnKGksbWcsRWcpOml9fSk7dmFyIFRnPXZlLHhnPVRyO0JlKHt0YXJnZXQ6Ik9iamVjdCIsQzohMCxHOiFafHxpKChmdW5jdGlvbigpe1RnLmYoMSl9KSl9LHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24ocil7dmFyIHQ9VGcuZjtyZXR1cm4gdD90KHhnKHIpKTpbXX19KTt2YXIgVWc9QmUsTWc9byxJZz1uLExnPVMsUGc9TXIsX2c9RixSZz1ZLEZnPVFlLE5nPXB0LmYsQ2c9QWUsQmc9SWcuU3ltYm9sLEdnPUJnJiZCZy5wcm90b3R5cGU7aWYoTWcmJl9nKEJnKSYmKCEoImRlc2NyaXB0aW9uImluIEdnKXx8dm9pZCAwIT09QmcoKS5kZXNjcmlwdGlvbikpe3ZhciBEZz17fSxWZz1mdW5jdGlvbigpe3ZhciByPTE+YXJndW1lbnRzLmxlbmd0aHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP3ZvaWQgMDpGZyhhcmd1bWVudHNbMF0pLHQ9UmcoR2csdGhpcyk/bmV3IEJnKHIpOnZvaWQgMD09PXI/QmcoKTpCZyhyKTtyZXR1cm4iIj09PXImJihEZ1t0XT0hMCksdH07Q2coVmcsQmcpLFZnLnByb3RvdHlwZT1HZyxHZy5jb25zdHJ1Y3Rvcj1WZzt2YXIgWWc9QmcoInRlc3QiKSsiIj09IlN5bWJvbCh0ZXN0KSIsemc9TGcoR2cudG9TdHJpbmcpLFdnPUxnKEdnLnZhbHVlT2YpLCRnPS9eU3ltYm9sXCgoLiopXClbXildKyQvLEhnPUxnKCIiLnJlcGxhY2UpLEtnPUxnKCIiLnNsaWNlKTtOZyhHZywiZGVzY3JpcHRpb24iLHtpOiEwLGdldDpmdW5jdGlvbigpe3ZhciByPVdnKHRoaXMpLHQ9emcocik7aWYoUGcoRGcscikpcmV0dXJuIiI7dmFyIG49WWc/S2codCw3LC0xKTpIZyh0LCRnLCIkMSIpO3JldHVybiIiPT09bj92b2lkIDA6bn19KSxVZyh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLEc6ITB9LHtTeW1ib2w6Vmd9KX1MYigiaXRlcmF0b3IiKTt2YXIgcWc9UyxKZz1EbixYZz1RZSxRZz1MLFpnPXFnKCIiLmNoYXJBdCkscm09cWcoIiIuY2hhckNvZGVBdCksdG09cWcoIiIuc2xpY2UpLG5tPWZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciBlLGksbz1YZyhRZyh0KSksdT1KZyhuKSxmPW8ubGVuZ3RoO3JldHVybiAwPnV8fHU+PWY/cj8iIjp2b2lkIDA6NTUyOTY+KGU9cm0obyx1KSl8fGU+NTYzMTl8fHUrMT09PWZ8fDU2MzIwPihpPXJtKG8sdSsxKSl8fGk+NTczNDM/cj9aZyhvLHUpOmU6cj90bShvLHUsdSsyKTppLTU2MzIwKyhlLTU1Mjk2PDwxMCkrNjU1MzZ9fSxlbT0obm0oITEpLG5tKCEwKSksaW09UWUsb209bW4sdW09em8sZm09b20uc2V0LGFtPW9tLlUoIlN0cmluZyBJdGVyYXRvciIpO3VtKFN0cmluZywiU3RyaW5nIiwoZnVuY3Rpb24ocil7Zm0odGhpcyx7dHlwZToiU3RyaW5nIEl0ZXJhdG9yIixzdHJpbmc6aW0ociksaW5kZXg6MH0pfSksKGZ1bmN0aW9uKCl7dmFyIHIsdD1hbSh0aGlzKSxuPXQuc3RyaW5nLGU9dC5pbmRleDtyZXR1cm4gZTxuLmxlbmd0aD8ocj1lbShuLGUpLHQuaW5kZXgrPXIubGVuZ3RoLHt2YWx1ZTpyLGRvbmU6ITF9KTp7dmFsdWU6dm9pZCAwLGRvbmU6ITB9fSkpO3ZhciBjbT17Q1NTUnVsZUxpc3Q6MCxDU1NTdHlsZURlY2xhcmF0aW9uOjAsQ1NTVmFsdWVMaXN0OjAsQ2xpZW50UmVjdExpc3Q6MCxET01SZWN0TGlzdDowLERPTVN0cmluZ0xpc3Q6MCxET01Ub2tlbkxpc3Q6MSxEYXRhVHJhbnNmZXJJdGVtTGlzdDowLEZpbGVMaXN0OjAsSFRNTEFsbENvbGxlY3Rpb246MCxIVE1MQ29sbGVjdGlvbjowLEhUTUxGb3JtRWxlbWVudDowLEhUTUxTZWxlY3RFbGVtZW50OjAsTWVkaWFMaXN0OjAsTWltZVR5cGVBcnJheTowLE5hbWVkTm9kZU1hcDowLE5vZGVMaXN0OjEsUGFpbnRSZXF1ZXN0TGlzdDowLFBsdWdpbjowLFBsdWdpbkFycmF5OjAsU1ZHTGVuZ3RoTGlzdDowLFNWR051bWJlckxpc3Q6MCxTVkdQYXRoU2VnTGlzdDowLFNWR1BvaW50TGlzdDowLFNWR1N0cmluZ0xpc3Q6MCxTVkdUcmFuc2Zvcm1MaXN0OjAsU291cmNlQnVmZmVyTGlzdDowLFN0eWxlU2hlZXRMaXN0OjAsVGV4dFRyYWNrQ3VlTGlzdDowLFRleHRUcmFja0xpc3Q6MCxUb3VjaExpc3Q6MH0sc209dXQoInNwYW4iKS5jbGFzc0xpc3Qsdm09c20mJnNtLmNvbnN0cnVjdG9yJiZzbS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsaG09dm09PT1PYmplY3QucHJvdG90eXBlP3ZvaWQgMDp2bSxsbT1uLGRtPWNtLHltPWhtLHdtPXJ1LGJtPV90LHBtPSRyLGdtPXBtKCJpdGVyYXRvciIpLG1tPXBtKCJ0b1N0cmluZ1RhZyIpLFNtPXdtLnZhbHVlcyxBbT1mdW5jdGlvbihyLHQpe2lmKHIpe2lmKHJbZ21dIT09U20pdHJ5e2JtKHIsZ20sU20pfWNhdGNoKHQpe3JbZ21dPVNtfWlmKHJbbW1dfHxibShyLG1tLHQpLGRtW3RdKWZvcih2YXIgbiBpbiB3bSlpZihyW25dIT09d21bbl0pdHJ5e2JtKHIsbix3bVtuXSl9Y2F0Y2godCl7cltuXT13bVtuXX19fTtmb3IodmFyIGptIGluIGRtKUFtKGxtW2ptXSYmbG1bam1dLnByb3RvdHlwZSxqbSk7QW0oeW0sIkRPTVRva2VuTGlzdCIpLExiKCJhc3luY0l0ZXJhdG9yIik7dmFyIE9tPVYsa209d287TGIoInRvU3RyaW5nVGFnIiksa20oT20oIlN5bWJvbCIpLCJTeW1ib2wiKSx3byhuLkpTT04sIkpTT04iLCEwKSx3byhNYXRoLCJNYXRoIiwhMCk7dmFyIEVtPVRyLFRtPWVvLHhtPXFpO0JlKHt0YXJnZXQ6Ik9iamVjdCIsQzohMCxHOmkoKGZ1bmN0aW9uKCl7VG0oMSl9KSksaDoheG19LHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbihyKXtyZXR1cm4gVG0oRW0ocikpfX0pO3ZhciBVbT1pcy5mb3JFYWNoLE1tPW4sSW09Y20sTG09aG0sUG09QWgoImZvckVhY2giKT9bXS5mb3JFYWNoOmZ1bmN0aW9uKHIpe3JldHVybiBVbSh0aGlzLHIsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxfbT1fdCxSbT1mdW5jdGlvbihyKXtpZihyJiZyLmZvckVhY2ghPT1QbSl0cnl7X20ociwiZm9yRWFjaCIsUG0pfWNhdGNoKHQpe3IuZm9yRWFjaD1QbX19O2Zvcih2YXIgRm0gaW4gSW0pSW1bRm1dJiZSbShNbVtGbV0mJk1tW0ZtXS5wcm90b3R5cGUpO1JtKExtKTt2YXIgTm09byxDbT1HdC5TLEJtPVMsR209cHQuZixEbT1GdW5jdGlvbi5wcm90b3R5cGUsVm09Qm0oRG0udG9TdHJpbmcpLFltPS9mdW5jdGlvblxiKD86XHN8XC9cKltcU1xzXSo/XCpcL3xcL1wvW15cblxyXSpbXG5ccl0rKSooW15ccygvXSopLyx6bT1CbShZbS5leGVjKTtObSYmIUNtJiZHbShEbSwibmFtZSIse2k6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3JldHVybiB6bShZbSxWbSh0aGlzKSlbMV19Y2F0Y2gocil7cmV0dXJuIiJ9fX0pO3ZhciBXbT1CZSwkbT16YyxIbT1TKFtdLnJldmVyc2UpLEttPVsxLDJdO1dtKHt0YXJnZXQ6IkFycmF5IixWOiEwLEc6S20rIiI9PUttLnJldmVyc2UoKSsiIn0se3JldmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gJG0odGhpcykmJih0aGlzLmxlbmd0aD10aGlzLmxlbmd0aCksSG0odGhpcyl9fSk7dmFyIHFtPWksSm09WCxYbT0kcigic3BlY2llcyIpLFFtPWZ1bmN0aW9uKHIpe3JldHVybiBKbT49NTF8fCFxbSgoZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4odC5jb25zdHJ1Y3Rvcj17fSlbWG1dPWZ1bmN0aW9uKCl7cmV0dXJue05yOjF9fSwxIT09dFtyXShCb29sZWFuKS5Ocn0pKX0sWm09QmUsclM9emMsdFM9RGYsblM9QyxlUz1XbixpUz1KbixvUz1SLHVTPWp1LGZTPSRyLGFTPXZsLGNTPVFtKCJzbGljZSIpLHNTPWZTKCJzcGVjaWVzIiksdlM9QXJyYXksaFM9TWF0aC5tYXg7Wm0oe3RhcmdldDoiQXJyYXkiLFY6ITAsRzohY1N9LHtzbGljZTpmdW5jdGlvbihyLHQpe3ZhciBuLGUsaSxvPW9TKHRoaXMpLHU9aVMobyksZj1lUyhyLHUpLGE9ZVModm9pZCAwPT09dD91OnQsdSk7aWYoclMobykmJihuPW8uY29uc3RydWN0b3IsKHRTKG4pJiYobj09PXZTfHxyUyhuLnByb3RvdHlwZSkpfHxuUyhuKSYmbnVsbD09PShuPW5bc1NdKSkmJihuPXZvaWQgMCksbj09PXZTfHx2b2lkIDA9PT1uKSlyZXR1cm4gYVMobyxmLGEpO2ZvcihlPW5ldyh2b2lkIDA9PT1uP3ZTOm4pKGhTKGEtZiwwKSksaT0wO2E+ZjtmKyssaSsrKWYgaW4gbyYmdVMoZSxpLG9bZl0pO3JldHVybiBlLmxlbmd0aD1pLGV9fSk7dmFyIGxTPW8sZFM9YSx5Uz1pLHdTPXBpLGJTPXZlLHBTPWMsZ1M9VHIsbVM9TSxTUz1PYmplY3QuYXNzaWduLEFTPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxqUz1TKFtdLmNvbmNhdCksT1M9IVNTfHx5UygoZnVuY3Rpb24oKXtpZihsUyYmMSE9PVNTKHtiOjF9LFNTKEFTKHt9LCJhIix7dDohMCxnZXQ6ZnVuY3Rpb24oKXtBUyh0aGlzLCJiIix7dmFsdWU6Myx0OiExfSl9fSkse2I6Mn0pKS5iKXJldHVybiEwO3ZhciByPXt9LHQ9e30sbj1TeW1ib2woKSxlPSJhYmNkZWZnaGlqa2xtbm9wcXJzdCI7cmV0dXJuIHJbbl09NyxlLnNwbGl0KCIiKS5mb3JFYWNoKChmdW5jdGlvbihyKXt0W3JdPXJ9KSksNyE9U1Moe30scilbbl18fHdTKFNTKHt9LHQpKS5qb2luKCIiKSE9ZX0pKT9mdW5jdGlvbihyLHQpe2Zvcih2YXIgbj1nUyhyKSxlPWFyZ3VtZW50cy5sZW5ndGgsaT0xLG89YlMuZix1PXBTLmY7ZT5pOylmb3IodmFyIGYsYT1tUyhhcmd1bWVudHNbaSsrXSksYz1vP2pTKHdTKGEpLG8oYSkpOndTKGEpLHM9Yy5sZW5ndGgsdj0wO3M+djspZj1jW3YrK10sbFMmJiFkUyh1LGEsZil8fChuW2ZdPWFbZl0pO3JldHVybiBufTpTUztCZSh7dGFyZ2V0OiJPYmplY3QiLEM6ITAsTDoyLEc6T2JqZWN0LmFzc2lnbiE9PU9TfSx7YXNzaWduOk9TfSk7Zm9yKHZhciBrUz1bXSxFUz0wOzI1Nj5FUztFUysrKXtmb3IodmFyIFRTPUVTLHhTPTA7OD54Uzt4UysrKTEmVFM/VFM9VFM+Pj4xXjM5ODgyOTIzODQ6VFM+Pj49MTtrU1tFU109VFN9dmFyIFVTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXshZnVuY3Rpb24ocix0KXtpZighKHIgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxyKSx0aGlzLkNyPXR8fC0xfXJldHVybiBmdW5jdGlvbihyLHQpe3QmJmZ1bmN0aW9uKHIsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBlPXRbbl07ZS50PWUudHx8ITEsZS5pPSEwLCJ2YWx1ZSJpbiBlJiYoZS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZS5rZXksZSl9fShyLnByb3RvdHlwZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KX0ocixbe2tleToiYXBwZW5kIix2YWx1ZTpmdW5jdGlvbihyKXtmb3IodmFyIHQ9MHx0aGlzLkNyLG49MCxlPTB8ci5sZW5ndGg7ZT5uO24rKyl0PXQ+Pj44XmtTWzI1NSYodF5yW25dKV07dGhpcy5Dcj10fX0se2tleToiZ2V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybn50aGlzLkNyfX1dKSxyfSgpLE1TPWp0LElTPUx3LExTPWJjLFBTPWEsX1M9VHIsUlM9ZnVuY3Rpb24ocix0LG4sZSl7dHJ5e3JldHVybiBlP3QoTVMobilbMF0sblsxXSk6dChuKX1jYXRjaCh0KXtJUyhyLCJ0aHJvdyIsdCl9fSxGUz1QYyxOUz1EZixDUz1KbixCUz1qdSxHUz1VYyxEUz1BYyxWUz1BcnJheTtmdW5jdGlvbiBZUyhyKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFRleHRFbmNvZGVyKXtyPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChyKSk7Zm9yKHZhciB0PW5ldyBVaW50OEFycmF5KHIubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXT1yLmNoYXJDb2RlQXQobik7cmV0dXJuIHR9cmV0dXJuKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKHIpfUJlKHt0YXJnZXQ6IkFycmF5IixDOiEwLEc6IXBhKChmdW5jdGlvbihyKXtBcnJheS5mcm9tKHIpfSkpfSx7ZnJvbTpmdW5jdGlvbihyKXt2YXIgdD1fUyhyKSxuPU5TKHRoaXMpLGU9YXJndW1lbnRzLmxlbmd0aCxpPWU+MT9hcmd1bWVudHNbMV06dm9pZCAwLG89dm9pZCAwIT09aTtvJiYoaT1MUyhpLGU+Mj9hcmd1bWVudHNbMl06dm9pZCAwKSk7dmFyIHUsZixhLGMscyx2LGg9RFModCksbD0wO2lmKCFofHx0aGlzPT09VlMmJkZTKGgpKWZvcih1PUNTKHQpLGY9bj9uZXcgdGhpcyh1KTpWUyh1KTt1Pmw7bCsrKXY9bz9pKHRbbF0sbCk6dFtsXSxCUyhmLGwsdik7ZWxzZSBmb3Iocz0oYz1HUyh0LGgpKS5uZXh0LGY9bj9uZXcgdGhpczpbXTshKGE9UFMocyxjKSkuZG9uZTtsKyspdj1vP1JTKGMsaSxbYS52YWx1ZSxsXSwhMCk6YS52YWx1ZSxCUyhmLGwsdik7cmV0dXJuIGYubGVuZ3RoPWwsZn19KTt2YXIgelM9VHlwZUVycm9yLFdTPWZ1bmN0aW9uKHIpe2lmKHI+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyB6UygiTWF4aW11bSBhbGxvd2VkIGluZGV4IGV4Y2VlZGVkIik7cmV0dXJuIHJ9LCRTPUJlLEhTPWksS1M9emMscVM9QyxKUz1UcixYUz1KbixRUz1XUyxaUz1qdSxyQT1KYyx0QT1RbSxuQT1YLGVBPSRyKCJpc0NvbmNhdFNwcmVhZGFibGUiKSxpQT1uQT49NTF8fCFIUygoZnVuY3Rpb24oKXt2YXIgcj1bXTtyZXR1cm4gcltlQV09ITEsci5jb25jYXQoKVswXSE9PXJ9KSksb0E9dEEoImNvbmNhdCIpLHVBPWZ1bmN0aW9uKHIpe2lmKCFxUyhyKSlyZXR1cm4hMTt2YXIgdD1yW2VBXTtyZXR1cm4gdm9pZCAwIT09dD8hIXQ6S1Mocil9OyRTKHt0YXJnZXQ6IkFycmF5IixWOiEwLEw6MSxHOiFpQXx8IW9BfSx7Y29uY2F0OmZ1bmN0aW9uKHIpe3ZhciB0LG4sZSxpLG8sdT1KUyh0aGlzKSxmPXJBKHUsMCksYT0wO2Zvcih0PS0xLGU9YXJndW1lbnRzLmxlbmd0aDtlPnQ7dCsrKWlmKHVBKG89LTE9PT10P3U6YXJndW1lbnRzW3RdKSlmb3IoaT1YUyhvKSxRUyhhK2kpLG49MDtpPm47bisrLGErKyluIGluIG8mJlpTKGYsYSxvW25dKTtlbHNlIFFTKGErMSksWlMoZixhKyssbyk7cmV0dXJuIGYubGVuZ3RoPWEsZn19KSwoMCxzYS5leHBvcnRzKSgiVWludDMyIiwoZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcih0aGlzLHQsbixlKX19KSk7dmFyIGZBPUJlLGFBPVRyLGNBPVduLHNBPURuLHZBPUpuLGhBPVdTLGxBPUpjLGRBPWp1LHlBPXZ2LHdBPVFtKCJzcGxpY2UiKSxiQT1NYXRoLm1heCxwQT1NYXRoLm1pbjtmQSh7dGFyZ2V0OiJBcnJheSIsVjohMCxHOiF3QX0se3NwbGljZTpmdW5jdGlvbihyLHQpe3ZhciBuLGUsaSxvLHUsZixhPWFBKHRoaXMpLGM9dkEoYSkscz1jQShyLGMpLHY9YXJndW1lbnRzLmxlbmd0aDtmb3IoMD09PXY/bj1lPTA6MT09PXY/KG49MCxlPWMtcyk6KG49di0yLGU9cEEoYkEoc0EodCksMCksYy1zKSksaEEoYytuLWUpLGk9bEEoYSxlKSxvPTA7ZT5vO28rKykodT1zK28paW4gYSYmZEEoaSxvLGFbdV0pO2lmKGkubGVuZ3RoPWUsZT5uKXtmb3Iobz1zO2MtZT5vO28rKylmPW8rbiwodT1vK2UpaW4gYT9hW2ZdPWFbdV06eUEoYSxmKTtmb3Iobz1jO28+Yy1lK247by0tKXlBKGEsby0xKX1lbHNlIGlmKG4+ZSlmb3Iobz1jLWU7bz5zO28tLSlmPW8rbi0xLCh1PW8rZS0xKWluIGE/YVtmXT1hW3VdOnlBKGEsZik7Zm9yKG89MDtuPm87bysrKWFbbytzXT1hcmd1bWVudHNbbysyXTtyZXR1cm4gYS5sZW5ndGg9Yy1lK24saX19KTt2YXIgZ0E9Y3MsbUE9VGYuQXJyYXlCdWZmZXI7ZnVuY3Rpb24gU0Eocix0KXtpZighKHIgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBBQShyLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgZT10W25dO2UudD1lLnR8fCExLGUuaT0hMCwidmFsdWUiaW4gZSYmKGUud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUua2V5LGUpfX1mdW5jdGlvbiBqQShyLHQsbil7cmV0dXJuIHQmJkFBKHIucHJvdG90eXBlLHQpLG4mJkFBKHIsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSkscn1CZSh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLEc6bi5BcnJheUJ1ZmZlciE9PW1BfSx7QXJyYXlCdWZmZXI6bUF9KSxnQSgiQXJyYXlCdWZmZXIiKTt2YXIgT0E9e2NvbmNhdDpmdW5jdGlvbihyLHQpe2lmKDA9PT1yLmxlbmd0aHx8MD09PXQubGVuZ3RoKXJldHVybiByLmNvbmNhdCh0KTt2YXIgbj1yW3IubGVuZ3RoLTFdLGU9T0EuQnIobik7cmV0dXJuIDMyPT09ZT9yLmNvbmNhdCh0KTpPQS5Hcih0LGUsMHxuLHIuc2xpY2UoMCxyLmxlbmd0aC0xKSl9LERyOmZ1bmN0aW9uKHIpe3ZhciB0PXIubGVuZ3RoO2lmKDA9PT10KXJldHVybiAwO3ZhciBuPXJbdC0xXTtyZXR1cm4gMzIqKHQtMSkrT0EuQnIobil9LFZyOmZ1bmN0aW9uKHIsdCl7aWYoMzIqci5sZW5ndGg8dClyZXR1cm4gcjt2YXIgbj0ocj1yLnNsaWNlKDAsTWF0aC5jZWlsKHQvMzIpKSkubGVuZ3RoO3JldHVybiB0Jj0zMSxuPjAmJnQmJihyW24tMV09T0EuWXIodCxyW24tMV0mMjE0NzQ4MzY0OD4+dC0xLDEpKSxyfSxZcjpmdW5jdGlvbihyLHQsbil7cmV0dXJuIDMyPT09cj90OihuPzB8dDp0PDwzMi1yKSsxMDk5NTExNjI3Nzc2KnJ9LEJyOmZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLnJvdW5kKHIvMTA5OTUxMTYyNzc3Nil8fDMyfSxHcjpmdW5jdGlvbihyLHQsbixlKXtmb3Iodm9pZCAwPT09ZSYmKGU9W10pO3Q+PTMyO3QtPTMyKWUucHVzaChuKSxuPTA7aWYoMD09PXQpcmV0dXJuIGUuY29uY2F0KHIpO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKWUucHVzaChufHJbaV0+Pj50KSxuPXJbaV08PDMyLXQ7dmFyIG89ci5sZW5ndGg/cltyLmxlbmd0aC0xXTowLHU9T0EuQnIobyk7cmV0dXJuIGUucHVzaChPQS5Zcih0K3UmMzEsdCt1PjMyP246ZS5wb3AoKSwxKSksZX19LGtBPXtLOnt6cjpmdW5jdGlvbihyKXtmb3IodmFyIHQsbj1PQS5EcihyKS84LGU9bmV3IFVpbnQ4QXJyYXkobiksaT0wO24+aTtpKyspMD09KDMmaSkmJih0PXJbaS80XSksZVtpXT10Pj4+MjQsdDw8PTg7cmV0dXJuIGV9LFdyOmZ1bmN0aW9uKHIpe3ZhciB0LG49W10sZT0wO2Zvcih0PTA7dDxyLmxlbmd0aDt0KyspZT1lPDw4fHJbdF0sMz09KDMmdCkmJihuLnB1c2goZSksZT0wKTtyZXR1cm4gMyZ0JiZuLnB1c2goT0EuWXIoOCooMyZ0KSxlKSksbn19fSxFQT17JHI6ZnVuY3Rpb24ocil7cj8odGhpcy5Icj1yLkhyLnNsaWNlKDApLHRoaXMuS3I9ci5Lci5zbGljZSgwKSx0aGlzLnFyPXIucXIpOnRoaXMucmVzZXQoKX19O0VBLiRyLnByb3RvdHlwZT17YmxvY2tTaXplOjUxMixyZXNldDpmdW5jdGlvbigpe3ZhciByPXRoaXM7cmV0dXJuIHIuSHI9dGhpcy5Kci5zbGljZSgwKSxyLktyPVtdLHIucXI9MCxyfSx1cGRhdGU6ZnVuY3Rpb24ocil7dmFyIHQ9dGhpczsic3RyaW5nIj09dHlwZW9mIHImJihyPWtBLlhyLldyKHIpKTt2YXIgbj10LktyPU9BLmNvbmNhdCh0LktyLHIpLGU9dC5xcixpPXQucXI9ZStPQS5EcihyKTtpZihpPjkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgRXJyb3IoIkNhbm5vdCBoYXNoIG1vcmUgdGhhbiAyXjUzIC0gMSBiaXRzIik7Zm9yKHZhciBvPW5ldyBVaW50MzJBcnJheShuKSx1PTAsZj10LmJsb2NrU2l6ZStlLSh0LmJsb2NrU2l6ZStlJnQuYmxvY2tTaXplLTEpO2k+PWY7Zis9dC5ibG9ja1NpemUpdC5RcihvLnN1YmFycmF5KDE2KnUsMTYqKHUrMSkpKSx1Kz0xO3JldHVybiBuLnNwbGljZSgwLDE2KnUpLHR9LFpyOmZ1bmN0aW9uKCl7Zm9yKHZhciByPXRoaXMsdD1yLktyLG49ci5IcixlPSh0PU9BLmNvbmNhdCh0LFtPQS5ZcigxLDEpXSkpLmxlbmd0aCsyOzE1JmU7ZSsrKXQucHVzaCgwKTtmb3IodC5wdXNoKE1hdGguZmxvb3Ioci5xci80Mjk0OTY3Mjk2KSksdC5wdXNoKDB8ci5xcik7dC5sZW5ndGg7KXIuUXIodC5zcGxpY2UoMCwxNikpO3JldHVybiByLnJlc2V0KCksbn0sSnI6WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSxydDpbMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMzM5NTQ2OTc4Ml0sdHQ6ZnVuY3Rpb24ocix0LG4sZSl7cmV0dXJuIHI+MTk/cj4zOT9yPjU5P3I+Nzk/dm9pZCAwOnRebl5lOnQmbnx0JmV8biZlOnRebl5lOnQmbnx+dCZlfSxudDpmdW5jdGlvbihyLHQpe3JldHVybiB0PDxyfHQ+Pj4zMi1yfSxRcjpmdW5jdGlvbihyKXtmb3IodmFyIHQ9dGhpcyxuPXQuSHIsZT1BcnJheSg4MCksaT0wOzE2Pmk7aSsrKWVbaV09cltpXTtmb3IodmFyIG89blswXSx1PW5bMV0sZj1uWzJdLGE9blszXSxjPW5bNF0scz0wOzc5Pj1zO3MrKyl7MTY+c3x8KGVbc109dC5udCgxLGVbcy0zXV5lW3MtOF1eZVtzLTE0XV5lW3MtMTZdKSk7dmFyIHY9dC5udCg1LG8pK3QudHQocyx1LGYsYSkrYytlW3NdK3QucnRbTWF0aC5mbG9vcihzLzIwKV18MDtjPWEsYT1mLGY9dC5udCgzMCx1KSx1PW8sbz12fW5bMF09blswXStvfDAsblsxXT1uWzFdK3V8MCxuWzJdPW5bMl0rZnwwLG5bM109blszXSthfDAsbls0XT1uWzRdK2N8MH19O3ZhciBUQT17fTtUQS5ldD1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7U0EodGhpcyxyKTt2YXIgbj10aGlzO24uaXQ9W1tbXSxbXSxbXSxbXSxbXV0sW1tdLFtdLFtdLFtdLFtdXV0sbi5pdFswXVswXVswXXx8bi5vdCgpO3ZhciBlLGksbyx1PW4uaXRbMF1bNF0sZj1uLml0WzFdLGE9dC5sZW5ndGgsYz0xO2lmKDQhPT1hJiY2IT09YSYmOCE9PWEpdGhyb3cgRXJyb3IoImludmFsaWQgYWVzIGtleSBzaXplIik7Zm9yKG4ucnQ9W2k9dC5zbGljZSgwKSxvPVtdXSxlPWE7NCphKzI4PmU7ZSsrKXt2YXIgcz1pW2UtMV07KGUlYT09MHx8OD09PWEmJmUlYT09NCkmJihzPXVbcz4+PjI0XTw8MjRedVtzPj4xNiYyNTVdPDwxNl51W3M+PjgmMjU1XTw8OF51WzI1NSZzXSxlJWE9PTAmJihzPXM8PDhecz4+PjI0XmM8PDI0LGM9Yzw8MV4yODMqKGM+PjcpKSksaVtlXT1pW2UtYV1ec31mb3IodmFyIHY9MDtlO3YrKyxlLS0pe3ZhciBoPWlbMyZ2P2U6ZS00XTtvW3ZdPTQ+PWV8fDQ+dj9oOmZbMF1bdVtoPj4+MjRdXV5mWzFdW3VbaD4+MTYmMjU1XV1eZlsyXVt1W2g+PjgmMjU1XV1eZlszXVt1WzI1NSZoXV19fXJldHVybiBqQShyLFt7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy51dChyLDApfX0se2tleToiZGVjcnlwdCIsdmFsdWU6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMudXQociwxKX19LHtrZXk6Il9wcmVjb21wdXRlIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgcix0LG4sZT10aGlzLml0WzBdLGk9dGhpcy5pdFsxXSxvPWVbNF0sdT1pWzRdLGY9W10sYT1bXSxjPTA7MjU2PmM7YysrKWFbKGZbY109Yzw8MV4yODMqKGM+PjcpKV5jXT1jO2Zvcih2YXIgcz1yPTA7IW9bc107c149dHx8MSxyPWFbcl18fDEpe3ZhciB2PXJecjw8MV5yPDwyXnI8PDNecjw8NDt2PXY+PjheMjU1JnZeOTksb1tzXT12LHVbdl09cztmb3IodmFyIGg9MTY4NDMwMDkqZltuPWZbdD1mW3NdXV1eNjU1Mzcqbl4yNTcqdF4xNjg0MzAwOCpzLGw9MjU3KmZbdl1eMTY4NDMwMDgqdixkPTA7ND5kO2QrKyllW2RdW3NdPWw9bDw8MjRebD4+PjgsaVtkXVt2XT1oPWg8PDI0Xmg+Pj44fWZvcih2YXIgeT0wOzU+eTt5KyspZVt5XT1lW3ldLnNsaWNlKDApLGlbeV09aVt5XS5zbGljZSgwKX19LHtrZXk6Il9jcnlwdCIsdmFsdWU6ZnVuY3Rpb24ocix0KXtpZig0IT09ci5sZW5ndGgpdGhyb3cgRXJyb3IoImludmFsaWQgYWVzIGJsb2NrIHNpemUiKTtmb3IodmFyIG4sZSxpLG89dGhpcy5ydFt0XSx1PW8ubGVuZ3RoLzQtMixmPVswLDAsMCwwXSxhPXRoaXMuaXRbdF0sYz1hWzBdLHM9YVsxXSx2PWFbMl0saD1hWzNdLGw9YVs0XSxkPXJbMF1eb1swXSx5PXJbdD8zOjFdXm9bMV0sdz1yWzJdXm9bMl0sYj1yW3Q/MTozXV5vWzNdLHA9NCxnPTA7dT5nO2crKyluPWNbZD4+PjI0XV5zW3k+PjE2JjI1NV1edlt3Pj44JjI1NV1eaFsyNTUmYl1eb1twXSxlPWNbeT4+PjI0XV5zW3c+PjE2JjI1NV1edltiPj44JjI1NV1eaFsyNTUmZF1eb1twKzFdLGk9Y1t3Pj4+MjRdXnNbYj4+MTYmMjU1XV52W2Q+PjgmMjU1XV5oWzI1NSZ5XV5vW3ArMl0sYj1jW2I+Pj4yNF1ec1tkPj4xNiYyNTVdXnZbeT4+OCYyNTVdXmhbMjU1JnddXm9bcCszXSxwKz00LGQ9bix5PWUsdz1pO2Zvcih2YXIgbT0wOzQ+bTttKyspZlt0PzMmLW06bV09bFtkPj4+MjRdPDwyNF5sW3k+PjE2JjI1NV08PDE2Xmxbdz4+OCYyNTVdPDw4XmxbMjU1JmJdXm9bcCsrXSxuPWQsZD15LHk9dyx3PWIsYj1uO3JldHVybiBmfX1dKSxyfSgpO3ZhciB4QT17fTt4QS5mdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxuKXtTQSh0aGlzLHIpLHRoaXMuY3Q9dCx0aGlzLnN0PW4sdGhpcy52dD1ufXJldHVybiBqQShyLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnZ0PXRoaXMuc3R9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLmh0KHRoaXMuY3Qscix0aGlzLnZ0KX19LHtrZXk6ImluY1dvcmQiLHZhbHVlOmZ1bmN0aW9uKHIpe2lmKDI1NT09KHI+PjI0JjI1NSkpe3ZhciB0PXI+PjE2JjI1NSxuPXI+PjgmMjU1LGU9MjU1JnI7MjU1PT09dD8odD0wLDI1NT09PW4/KG49MCwyNTU9PT1lP2U9MDorK2UpOisrbik6Kyt0LHI9MCxyKz10PDwxNixyKz1uPDw4LHIrPWV9ZWxzZSByKz0xPDwyNDtyZXR1cm4gcn19LHtrZXk6ImluY0NvdW50ZXIiLHZhbHVlOmZ1bmN0aW9uKHIpezA9PT0oclswXT10aGlzLmx0KHJbMF0pKSYmKHJbMV09dGhpcy5sdChyWzFdKSl9fSx7a2V5OiJjYWxjdWxhdGUiLHZhbHVlOmZ1bmN0aW9uKHIsdCxuKXt2YXIgZTtpZighKGU9dC5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIgaT1PQS5Ecih0KSxvPTA7ZT5vO28rPTQpe3RoaXMuZHQobik7dmFyIHU9ci5lbmNyeXB0KG4pO3Rbb11ePXVbMF0sdFtvKzFdXj11WzFdLHRbbysyXV49dVsyXSx0W28rM11ePXVbM119cmV0dXJuIE9BLlZyKHQsaSl9fV0pLHJ9KCk7dmFyIFVBPXtpbXBvcnRLZXk6ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyBVQS55dChrQS5LLldyKHIpKX0sd3Q6ZnVuY3Rpb24ocix0LG4sZSl7aWYobj1ufHwxZTQsMD5lfHwwPm4pdGhyb3cgRXJyb3IoImludmFsaWQgcGFyYW1zIHRvIHBia2RmMiIpO3ZhciBpLG8sdSxmLGEsYz0xKyhlPj41KTw8MixzPW5ldyBBcnJheUJ1ZmZlcihjKSx2PW5ldyBEYXRhVmlldyhzKSxoPTAsbD1PQTtmb3IodD1rQS5LLldyKHQpLGE9MTsoY3x8MSk+aDthKyspe2ZvcihpPW89ci5lbmNyeXB0KGwuY29uY2F0KHQsW2FdKSksdT0xO24+dTt1KyspZm9yKG89ci5lbmNyeXB0KG8pLGY9MDtmPG8ubGVuZ3RoO2YrKylpW2ZdXj1vW2ZdO2Zvcih1PTA7KGN8fDEpPmgmJnU8aS5sZW5ndGg7dSsrKXYuc2V0SW50MzIoaCxpW3VdKSxoKz00fXJldHVybiBzLnNsaWNlKDAsZS84KX19O2Z1bmN0aW9uIE1BKHIpe3JldHVybiBNQT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihyKXtyZXR1cm4gdHlwZW9mIHJ9OmZ1bmN0aW9uKHIpe3JldHVybiByJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZyLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZyIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2Ygcn0sTUEocil9ZnVuY3Rpb24gSUEoKXsvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICovSUE9ZnVuY3Rpb24oKXtyZXR1cm4gcn07dmFyIHI9e30sdD1PYmplY3QucHJvdG90eXBlLG49dC5oYXNPd25Qcm9wZXJ0eSxlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9ZS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLG89ZS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIix1PWUudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBmKHIsdCxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsdCx7dmFsdWU6bix0OiEwLGk6ITAsd3JpdGFibGU6ITB9KSxyW3RdfXRyeXtmKHt9LCIiKX1jYXRjaChyKXtmPWZ1bmN0aW9uKHIsdCxuKXtyZXR1cm4gclt0XT1ufX1mdW5jdGlvbiBhKHIsdCxuLGUpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2Ygdj90OnYsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKGV8fFtdKTtyZXR1cm4gby5idD1mdW5jdGlvbihyLHQsbil7dmFyIGU9InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oaSxvKXtpZigiZXhlY3V0aW5nIj09PWUpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PWUpe2lmKCJ0aHJvdyI9PT1pKXRocm93IG87cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Iobi5tZXRob2Q9aSxuLmd0PW87Oyl7dmFyIHU9bi5TdDtpZih1KXt2YXIgZj1tKHUsbik7aWYoZil7aWYoZj09PXMpY29udGludWU7cmV0dXJuIGZ9fWlmKCJuZXh0Ij09PW4ubWV0aG9kKW4uQXQ9bi5qdD1uLmd0O2Vsc2UgaWYoInRocm93Ij09PW4ubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09ZSl0aHJvdyBlPSJjb21wbGV0ZWQiLG4uZ3Q7bi5PdChuLmd0KX1lbHNlInJldHVybiI9PT1uLm1ldGhvZCYmbi5rdCgicmV0dXJuIixuLmd0KTtlPSJleGVjdXRpbmciO3ZhciBhPWMocix0LG4pO2lmKCJub3JtYWwiPT09YS50eXBlKXtpZihlPW4uZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGEuZ3Q9PT1zKWNvbnRpbnVlO3JldHVybnt2YWx1ZTphLmd0LGRvbmU6bi5kb25lfX0idGhyb3ciPT09YS50eXBlJiYoZT0iY29tcGxldGVkIixuLm1ldGhvZD0idGhyb3ciLG4uZ3Q9YS5ndCl9fX0ocixuLHUpLG99ZnVuY3Rpb24gYyhyLHQsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGd0OnIuY2FsbCh0LG4pfX1jYXRjaChyKXtyZXR1cm57dHlwZToidGhyb3ciLGd0OnJ9fX1yLndyYXA9YTt2YXIgcz17fTtmdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGgoKXt9ZnVuY3Rpb24gbCgpe312YXIgZD17fTtmKGQsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysdz15JiZ5KHkoTyhbXSkpKTt3JiZ3IT09dCYmbi5jYWxsKHcsaSkmJihkPXcpO3ZhciBiPWwucHJvdG90eXBlPXYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZCk7ZnVuY3Rpb24gcChyKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Yocix0LChmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5idCh0LHIpfSkpfSkpfWZ1bmN0aW9uIGcocix0KXtmdW5jdGlvbiBlKGksbyx1LGYpe3ZhciBhPWMocltpXSxyLG8pO2lmKCJ0aHJvdyIhPT1hLnR5cGUpe3ZhciBzPWEuZ3Qsdj1zLnZhbHVlO3JldHVybiB2JiYib2JqZWN0Ij09TUEodikmJm4uY2FsbCh2LCJfX2F3YWl0Iik/dC5yZXNvbHZlKHYuRXQpLnRoZW4oKGZ1bmN0aW9uKHIpe2UoIm5leHQiLHIsdSxmKX0pLChmdW5jdGlvbihyKXtlKCJ0aHJvdyIscix1LGYpfSkpOnQucmVzb2x2ZSh2KS50aGVuKChmdW5jdGlvbihyKXtzLnZhbHVlPXIsdShzKX0pLChmdW5jdGlvbihyKXtyZXR1cm4gZSgidGhyb3ciLHIsdSxmKX0pKX1mKGEuZ3QpfXZhciBpO3RoaXMuYnQ9ZnVuY3Rpb24ocixuKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LGkpe2UocixuLHQsaSl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fWZ1bmN0aW9uIG0ocix0KXt2YXIgbj1yLml0ZXJhdG9yW3QubWV0aG9kXTtpZih2b2lkIDA9PT1uKXtpZih0LlN0PW51bGwsInRocm93Ij09PXQubWV0aG9kKXtpZihyLml0ZXJhdG9yLnEmJih0Lm1ldGhvZD0icmV0dXJuIix0Lmd0PXZvaWQgMCxtKHIsdCksInRocm93Ij09PXQubWV0aG9kKSlyZXR1cm4gczt0Lm1ldGhvZD0idGhyb3ciLHQuZ3Q9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBzfXZhciBlPWMobixyLml0ZXJhdG9yLHQuZ3QpO2lmKCJ0aHJvdyI9PT1lLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5ndD1lLmd0LHQuU3Q9bnVsbCxzO3ZhciBpPWUuZ3Q7cmV0dXJuIGk/aS5kb25lPyh0W3IuVHRdPWkudmFsdWUsdC5uZXh0PXIueHQsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0Lmd0PXZvaWQgMCksdC5TdD1udWxsLHMpOmk6KHQubWV0aG9kPSJ0aHJvdyIsdC5ndD1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuU3Q9bnVsbCxzKX1mdW5jdGlvbiBTKHIpe3ZhciB0PXtVdDpyWzBdfTsxIGluIHImJih0Lk10PXJbMV0pLDIgaW4gciYmKHQuSXQ9clsyXSx0Lkx0PXJbM10pLHRoaXMuUHQucHVzaCh0KX1mdW5jdGlvbiBBKHIpe3ZhciB0PXIuX3R8fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5ndCxyLl90PXR9ZnVuY3Rpb24gaihyKXt0aGlzLlB0PVt7VXQ6InJvb3QifV0sci5mb3JFYWNoKFMsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gTyhyKXtpZihyKXt2YXIgdD1yW2ldO2lmKHQpcmV0dXJuIHQuY2FsbChyKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygci5uZXh0KXJldHVybiByO2lmKCFpc05hTihyLmxlbmd0aCkpe3ZhciBlPS0xLG89ZnVuY3Rpb24gdCgpe2Zvcig7KytlPHIubGVuZ3RoOylpZihuLmNhbGwocixlKSlyZXR1cm4gdC52YWx1ZT1yW2VdLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIG8ubmV4dD1vfX1yZXR1cm57bmV4dDprfX1mdW5jdGlvbiBrKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gaC5wcm90b3R5cGU9bCxmKGIsImNvbnN0cnVjdG9yIixsKSxmKGwsImNvbnN0cnVjdG9yIixoKSxoLmRpc3BsYXlOYW1lPWYobCx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpLHIuUnQ9ZnVuY3Rpb24ocil7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHImJnIuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWh8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LHIubWFyaz1mdW5jdGlvbihyKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihyLGwpOihyLl9fcHJvdG9fXz1sLGYocix1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGIpLHJ9LHIuRnQ9ZnVuY3Rpb24ocil7cmV0dXJue0V0OnJ9fSxwKGcucHJvdG90eXBlKSxmKGcucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksci5OdD1nLHIuYXN5bmM9ZnVuY3Rpb24odCxuLGUsaSxvKXt2b2lkIDA9PT1vJiYobz1Qcm9taXNlKTt2YXIgdT1uZXcgZyhhKHQsbixlLGkpLG8pO3JldHVybiByLlJ0KG4pP3U6dS5uZXh0KCkudGhlbigoZnVuY3Rpb24ocil7cmV0dXJuIHIuZG9uZT9yLnZhbHVlOnUubmV4dCgpfSkpfSxwKGIpLGYoYix1LCJHZW5lcmF0b3IiKSxmKGIsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxmKGIsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxyLmtleXM9ZnVuY3Rpb24ocil7dmFyIHQ9W107Zm9yKHZhciBuIGluIHIpdC5wdXNoKG4pO3JldHVybiB0LnJldmVyc2UoKSxmdW5jdGlvbiBuKCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciBlPXQucG9wKCk7aWYoZSBpbiByKXJldHVybiBuLnZhbHVlPWUsbi5kb25lPSExLG59cmV0dXJuIG4uZG9uZT0hMCxufX0sci52YWx1ZXM9TyxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihyKXtpZih0aGlzLkN0PTAsdGhpcy5uZXh0PTAsdGhpcy5BdD10aGlzLmp0PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5TdD1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmd0PXZvaWQgMCx0aGlzLlB0LmZvckVhY2goQSksIXIpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJm4uY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciByPXRoaXMuUHRbMF0uX3Q7aWYoInRocm93Ij09PXIudHlwZSl0aHJvdyByLmd0O3JldHVybiB0aGlzLkJ0fSxPdDpmdW5jdGlvbihyKXtpZih0aGlzLmRvbmUpdGhyb3cgcjt2YXIgdD10aGlzO2Z1bmN0aW9uIGUobixlKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5ndD1yLHQubmV4dD1uLGUmJih0Lm1ldGhvZD0ibmV4dCIsdC5ndD12b2lkIDApLCEhZX1mb3IodmFyIGk9dGhpcy5QdC5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIG89dGhpcy5QdFtpXSx1PW8uX3Q7aWYoInJvb3QiPT09by5VdClyZXR1cm4gZSgiZW5kIik7aWYoby5VdDw9dGhpcy5DdCl7dmFyIGY9bi5jYWxsKG8sImNhdGNoTG9jIiksYT1uLmNhbGwobywiZmluYWxseUxvYyIpO2lmKGYmJmEpe2lmKHRoaXMuQ3Q8by5NdClyZXR1cm4gZShvLk10LCEwKTtpZih0aGlzLkN0PG8uSXQpcmV0dXJuIGUoby5JdCl9ZWxzZSBpZihmKXtpZih0aGlzLkN0PG8uTXQpcmV0dXJuIGUoby5NdCwhMCl9ZWxzZXtpZighYSl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLkN0PG8uSXQpcmV0dXJuIGUoby5JdCl9fX19LGt0OmZ1bmN0aW9uKHIsdCl7Zm9yKHZhciBlPXRoaXMuUHQubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBpPXRoaXMuUHRbZV07aWYoaS5VdDw9dGhpcy5DdCYmbi5jYWxsKGksImZpbmFsbHlMb2MiKSYmdGhpcy5DdDxpLkl0KXt2YXIgbz1pO2JyZWFrfX1vJiYoImJyZWFrIj09PXJ8fCJjb250aW51ZSI9PT1yKSYmby5VdDw9dCYmdDw9by5JdCYmKG89bnVsbCk7dmFyIHU9bz9vLl90Ont9O3JldHVybiB1LnR5cGU9cix1Lmd0PXQsbz8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1vLkl0LHMpOnRoaXMuY29tcGxldGUodSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHIsdCl7aWYoInRocm93Ij09PXIudHlwZSl0aHJvdyByLmd0O3JldHVybiJicmVhayI9PT1yLnR5cGV8fCJjb250aW51ZSI9PT1yLnR5cGU/dGhpcy5uZXh0PXIuZ3Q6InJldHVybiI9PT1yLnR5cGU/KHRoaXMuQnQ9dGhpcy5ndD1yLmd0LHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1yLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksc30sZmluaXNoOmZ1bmN0aW9uKHIpe2Zvcih2YXIgdD10aGlzLlB0Lmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgbj10aGlzLlB0W3RdO2lmKG4uSXQ9PT1yKXJldHVybiB0aGlzLmNvbXBsZXRlKG4uX3Qsbi5MdCksQShuKSxzfX0sY2F0Y2g6ZnVuY3Rpb24ocil7Zm9yKHZhciB0PXRoaXMuUHQubGVuZ3RoLTE7dD49MDstLXQpe3ZhciBuPXRoaXMuUHRbdF07aWYobi5VdD09PXIpe3ZhciBlPW4uX3Q7aWYoInRocm93Ij09PWUudHlwZSl7dmFyIGk9ZS5ndDtBKG4pfXJldHVybiBpfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LEd0OmZ1bmN0aW9uKHIsdCxuKXtyZXR1cm4gdGhpcy5TdD17aXRlcmF0b3I6TyhyKSxUdDp0LHh0Om59LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5ndD12b2lkIDApLHN9fSxyfWZ1bmN0aW9uIExBKHIsdCxuLGUsaSxvLHUpe3RyeXt2YXIgZj1yW29dKHUpLGE9Zi52YWx1ZX1jYXRjaChyKXtyZXR1cm4gdm9pZCBuKHIpfWYuZG9uZT90KGEpOlByb21pc2UucmVzb2x2ZShhKS50aGVuKGUsaSl9ZnVuY3Rpb24gUEEocil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsaSl7dmFyIG89ci5hcHBseSh0LG4pO2Z1bmN0aW9uIHUocil7TEEobyxlLGksdSxmLCJuZXh0IixyKX1mdW5jdGlvbiBmKHIpe0xBKG8sZSxpLHUsZiwidGhyb3ciLHIpfXUodm9pZCAwKX0pKX19ZnVuY3Rpb24gX0Eocix0KXtpZighKHIgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBSQShyLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgZT10W25dO2UudD1lLnR8fCExLGUuaT0hMCwidmFsdWUiaW4gZSYmKGUud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUua2V5LGUpfX1mdW5jdGlvbiBGQShyLHQsbil7cmV0dXJuIHQmJlJBKHIucHJvdG90eXBlLHQpLG4mJlJBKHIsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSkscn1VQS55dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7U0EodGhpcyxyKTt2YXIgbj10aGlzLGU9bi5EdD1FQS4kcixpPVtbXSxbXV0sbz1lLnByb3RvdHlwZS5ibG9ja1NpemUvMzI7bi5WdD1bbmV3IGUsbmV3IGVdLHQubGVuZ3RoPm8mJih0PWUuaGFzaCh0KSk7Zm9yKHZhciB1PTA7bz51O3UrKylpWzBdW3VdPTkwOTUyMjQ4Nl50W3VdLGlbMV1bdV09MTU0OTU1NjgyOF50W3VdO24uVnRbMF0udXBkYXRlKGlbMF0pLG4uVnRbMV0udXBkYXRlKGlbMV0pLG4uWXQ9bmV3IGUobi5WdFswXSl9cmV0dXJuIGpBKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXM7ci5ZdD1uZXcgci5EdChyLlZ0WzBdKSxyLnp0PSExfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbihyKXt0aGlzLnp0PSEwLHRoaXMuWXQudXBkYXRlKHIpfX0se2tleToiZGlnZXN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMsdD1yLll0LlpyKCksbj1uZXcgci5EdChyLlZ0WzFdKS51cGRhdGUodCkuWnIoKTtyZXR1cm4gci5yZXNldCgpLG59fSx7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbihyKXtpZih0aGlzLnp0KXRocm93IEVycm9yKCJlbmNyeXB0IG9uIGFscmVhZHkgdXBkYXRlZCBobWFjIGNhbGxlZCEiKTtyZXR1cm4gdGhpcy51cGRhdGUociksdGhpcy5kaWdlc3Qocil9fV0pLHJ9KCk7dmFyIE5BPXtuYW1lOiJQQktERjIifSxDQT1PYmplY3QuYXNzaWduKHtoYXNoOntuYW1lOiJITUFDIn19LE5BKSxCQT1PYmplY3QuYXNzaWduKHtpdGVyYXRpb25zOjFlMyxoYXNoOntuYW1lOiJTSEEtMSJ9fSxOQSksR0E9WyJkZXJpdmVCaXRzIl0sREE9WzgsMTIsMTZdLFZBPVsxNiwyNCwzMl0sWUE9WzAsMCwwLDBdLHpBPSJ1bmRlZmluZWQiIT10eXBlb2YgY3J5cHRvLFdBPXpBJiZ2b2lkIDAhPT1jcnlwdG8uc3VidGxlLCRBPWtBLkssSEE9VEEuZXQsS0E9eEEuZnQscUE9VUEueXQsSkE9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQsbixlKXtfQSh0aGlzLHIpLE9iamVjdC5hc3NpZ24odGhpcyx7cGFzc3dvcmQ6dCxzaWduZWQ6bixXdDplLTEsJHQ6bmV3IFVpbnQ4QXJyYXkoMCl9KX12YXIgdDtyZXR1cm4gRkEocixbe2tleToiYXBwZW5kIix2YWx1ZToodD1QQShJQSgpLm1hcmsoKGZ1bmN0aW9uIHIodCl7dmFyIG4sZSxpO3JldHVybiBJQSgpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5DdD1yLm5leHQpe2Nhc2UgMDppZighKG49dGhpcykucGFzc3dvcmQpe3IubmV4dD05O2JyZWFrfXJldHVybiBlPXNqKHQsMCxEQVtuLld0XSsyKSxyLm5leHQ9NSxaQShuLGUsbi5wYXNzd29yZCk7Y2FzZSA1Om4ucGFzc3dvcmQ9bnVsbCxuLkh0PW5ldyBLQShuZXcgSEEobi5rZXlzLmtleSksQXJyYXkuZnJvbShZQSkpLG4uS3Q9bmV3IHFBKG4ua2V5cy5xdCksdD1zaih0LERBW24uV3RdKzIpO2Nhc2UgOTpyZXR1cm4gaT1uZXcgVWludDhBcnJheSh0Lmxlbmd0aC0xMC0odC5sZW5ndGgtMTApJTE2KSxyLmt0KCJyZXR1cm4iLFFBKG4sdCxpLDAsMTAsITApKTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSksZnVuY3Rpb24ocil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9LHtrZXk6ImZsdXNoIix2YWx1ZTpmdW5jdGlvbigpe3ZhciByPXRoaXMsdD1yLiR0LG49c2oodCwwLHQubGVuZ3RoLTEwKSxlPXNqKHQsdC5sZW5ndGgtMTApLGk9bmV3IFVpbnQ4QXJyYXkoMCk7aWYobi5sZW5ndGgpe3ZhciBvPSRBLldyKG4pO3IuS3QudXBkYXRlKG8pO3ZhciB1PXIuSHQudXBkYXRlKG8pO2k9JEEuenIodSl9dmFyIGY9ITA7aWYoci5zaWduZWQpZm9yKHZhciBhPXNqKCRBLnpyKHIuS3QuZGlnZXN0KCkpLDAsMTApLGM9MDsxMD5jO2MrKylhW2NdIT1lW2NdJiYoZj0hMSk7cmV0dXJue3ZhbGlkOmYsZGF0YTppfX19XSkscn0oKSxYQT1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxuKXtfQSh0aGlzLHIpLE9iamVjdC5hc3NpZ24odGhpcyx7cGFzc3dvcmQ6dCxXdDpuLTEsJHQ6bmV3IFVpbnQ4QXJyYXkoMCl9KX12YXIgdDtyZXR1cm4gRkEocixbe2tleToiYXBwZW5kIix2YWx1ZToodD1QQShJQSgpLm1hcmsoKGZ1bmN0aW9uIHIodCl7dmFyIG4sZSxpO3JldHVybiBJQSgpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5DdD1yLm5leHQpe2Nhc2UgMDppZihuPXRoaXMsZT1uZXcgVWludDhBcnJheSgwKSwhbi5wYXNzd29yZCl7ci5uZXh0PTk7YnJlYWt9cmV0dXJuIHIubmV4dD01LHRqKG4sbi5wYXNzd29yZCk7Y2FzZSA1OmU9ci5BdCxuLnBhc3N3b3JkPW51bGwsbi5IdD1uZXcgS0EobmV3IEhBKG4ua2V5cy5rZXkpLEFycmF5LmZyb20oWUEpKSxuLkt0PW5ldyBxQShuLmtleXMucXQpO2Nhc2UgOTpyZXR1cm4oaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCt0Lmxlbmd0aC10Lmxlbmd0aCUxNikpLnNldChlLDApLHIua3QoInJldHVybiIsUUEobix0LGksZS5sZW5ndGgsMCkpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKSxmdW5jdGlvbihyKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiZmx1c2giLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcyx0PW5ldyBVaW50OEFycmF5KDApO2lmKHIuJHQubGVuZ3RoKXt2YXIgbj1yLkh0LnVwZGF0ZSgkQS5XcihyLiR0KSk7ci5LdC51cGRhdGUobiksdD0kQS56cihuKX12YXIgZT1zaigkQS56cihyLkt0LmRpZ2VzdCgpKSwwLDEwKTtyZXR1cm57ZGF0YTpjaih0LGUpLHNpZ25hdHVyZTplfX19XSkscn0oKTtmdW5jdGlvbiBRQShyLHQsbixlLGksbyl7dmFyIHUsZj10Lmxlbmd0aC1pO2ZvcihyLiR0Lmxlbmd0aCYmKHQ9Y2ooci4kdCx0KSxuPWZ1bmN0aW9uKHIsdCl7aWYodCYmdD5yLmxlbmd0aCl7dmFyIG49cjsocj1uZXcgVWludDhBcnJheSh0KSkuc2V0KG4sMCl9cmV0dXJuIHJ9KG4sZi1mJTE2KSksdT0wO2YtMTY+PXU7dSs9MTYpe3ZhciBhPSRBLldyKHNqKHQsdSx1KzE2KSk7byYmci5LdC51cGRhdGUoYSk7dmFyIGM9ci5IdC51cGRhdGUoYSk7b3x8ci5LdC51cGRhdGUoYyksbi5zZXQoJEEuenIoYyksdStlKX1yZXR1cm4gci4kdD1zaih0LHUpLG59ZnVuY3Rpb24gWkEocix0LG4pe3JldHVybiByai5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcmooKXtyZXR1cm4gcmo9UEEoSUEoKS5tYXJrKChmdW5jdGlvbiByKHQsbixlKXt2YXIgaSxvO3JldHVybiBJQSgpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5DdD1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsZWoodCxlLHNqKG4sMCxEQVt0Lld0XSkpO2Nhc2UgMjppZihpPXNqKG4sREFbdC5XdF0pLChvPXQua2V5cy5wYXNzd29yZFZlcmlmaWNhdGlvbilbMF09PWlbMF0mJm9bMV09PWlbMV0pe3IubmV4dD02O2JyZWFrfXRocm93IEVycm9yKCJJbnZhbGlkIHBhc3dvcmQiKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSkscmouYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHRqKHIsdCl7cmV0dXJuIG5qLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBuaigpe3JldHVybiBuaj1QQShJQSgpLm1hcmsoKGZ1bmN0aW9uIHIodCxuKXt2YXIgZTtyZXR1cm4gSUEoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIuQ3Q9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIGU9b2oobmV3IFVpbnQ4QXJyYXkoREFbdC5XdF0pKSxyLm5leHQ9Myxlaih0LG4sZSk7Y2FzZSAzOnJldHVybiByLmt0KCJyZXR1cm4iLGNqKGUsdC5rZXlzLnBhc3N3b3JkVmVyaWZpY2F0aW9uKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpLG5qLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBlaihyLHQsbil7cmV0dXJuIGlqLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBpaigpe3JldHVybihpaj1QQShJQSgpLm1hcmsoKGZ1bmN0aW9uIHIodCxuLGUpe3ZhciBpLG8sdSxmO3JldHVybiBJQSgpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5DdD1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gaT1ZUyhuKSxyLm5leHQ9Myx1aigicmF3IixpLENBLCExLEdBKTtjYXNlIDM6cmV0dXJuIG89ci5BdCxyLm5leHQ9NixmaihPYmplY3QuYXNzaWduKHtzYWx0OmV9LEJBKSxvLDgqKDIqVkFbdC5XdF0rMikpO2Nhc2UgNjp1PXIuQXQsZj1uZXcgVWludDhBcnJheSh1KSx0LmtleXM9e2tleTokQS5XcihzaihmLDAsVkFbdC5XdF0pKSxxdDokQS5XcihzaihmLFZBW3QuV3RdLDIqVkFbdC5XdF0pKSxwYXNzd29yZFZlcmlmaWNhdGlvbjpzaihmLDIqVkFbdC5XdF0pfTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBvaihyKXtyZXR1cm4gekEmJiJmdW5jdGlvbiI9PXR5cGVvZiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP2NyeXB0by5nZXRSYW5kb21WYWx1ZXMocik6ZnVuY3Rpb24ocil7Zm9yKHZhciB0LG49bmV3IFVpbnQzMkFycmF5KHIuYnVmZmVyKSxlPWZ1bmN0aW9uKHIpe3ZhciB0PTk4NzY1NDMyMSxuPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuKCgoKHQ9MzY5NjkqKDY1NTM1JnQpKyh0Pj4xNikmbik8PDE2KSsocj0xOGUzKig2NTUzNSZyKSsocj4+MTYpJm4pJm4pLzQyOTQ5NjcyOTYrLjUpKihNYXRoLnJhbmRvbSgpPi41PzE6LTEpfX0saT0wO2k8ci5sZW5ndGg7aSs9NCl7dmFyIG89ZSg0Mjk0OTY3Mjk2Kih0fHxNYXRoLnJhbmRvbSgpKSk7dD05ODc2NTQwNzEqbygpLG5baS80XT00Mjk0OTY3Mjk2Km8oKXwwfXJldHVybiByfShyKX1mdW5jdGlvbiB1aihyLHQsbixlLGkpe3JldHVybiB6QSYmV0EmJiJmdW5jdGlvbiI9PXR5cGVvZiBjcnlwdG8uc3VidGxlLmltcG9ydEtleT9jcnlwdG8uc3VidGxlLmltcG9ydEtleShyLHQsbixlLGkpOlVBLmltcG9ydEtleSh0KX1mdW5jdGlvbiBmaihyLHQsbil7cmV0dXJuIGFqLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhaigpe3JldHVybihhaj1QQShJQSgpLm1hcmsoKGZ1bmN0aW9uIHIodCxuLGUpe3JldHVybiBJQSgpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5DdD1yLm5leHQpe2Nhc2UgMDppZighekF8fCFXQXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGNyeXB0by5zdWJ0bGUuZGVyaXZlQml0cyl7ci5uZXh0PTY7YnJlYWt9cmV0dXJuIHIubmV4dD0zLGNyeXB0by5zdWJ0bGUuZGVyaXZlQml0cyh0LG4sZSk7Y2FzZSAzOnJldHVybiByLmt0KCJyZXR1cm4iLHIuQXQpO2Nhc2UgNjpyZXR1cm4gci5rdCgicmV0dXJuIixVQS53dChuLHQuc2FsdCxCQS5pdGVyYXRpb25zLGUpKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBjaihyLHQpe3ZhciBuPXI7cmV0dXJuIHIubGVuZ3RoK3QubGVuZ3RoJiYoKG49bmV3IFVpbnQ4QXJyYXkoci5sZW5ndGgrdC5sZW5ndGgpKS5zZXQociwwKSxuLnNldCh0LHIubGVuZ3RoKSksbn1mdW5jdGlvbiBzaihyLHQsbil7cmV0dXJuIHIuc3ViYXJyYXkodCxuKX12YXIgdmo9TWF0aC5pbXVsO2Z1bmN0aW9uIGhqKHIsdCl7aWYoIShyIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbGoocix0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGU9dFtuXTtlLnQ9ZS50fHwhMSxlLmk9ITAsInZhbHVlImluIGUmJihlLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkocixlLmtleSxlKX19ZnVuY3Rpb24gZGoocix0LG4pe3JldHVybiB0JiZsaihyLnByb3RvdHlwZSx0KSxuJiZsaihyLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHJ9QmUoe3RhcmdldDoiTWF0aCIsQzohMCxHOmkoKGZ1bmN0aW9uKCl7cmV0dXJuLTUhPXZqKDQyOTQ5NjcyOTUsNSl8fDIhPXZqLmxlbmd0aH0pKX0se2ltdWw6ZnVuY3Rpb24ocix0KXt2YXIgbj02NTUzNSxlPStyLGk9K3Qsbz1uJmUsdT1uJmk7cmV0dXJuIDB8byp1KygobiZlPj4+MTYpKnUrbyoobiZpPj4+MTYpPDwxNj4+PjApfX0pO3ZhciB5aj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxuKXtoaih0aGlzLHIpLE9iamVjdC5hc3NpZ24odGhpcyx7cGFzc3dvcmQ6dCxwYXNzd29yZFZlcmlmaWNhdGlvbjpufSksZ2oodGhpcyx0KX1yZXR1cm4gZGoocixbe2tleToiYXBwZW5kIix2YWx1ZTpmdW5jdGlvbihyKXt2YXIgdD10aGlzO2lmKHQucGFzc3dvcmQpe3ZhciBuPWJqKHQsci5zdWJhcnJheSgwLDEyKSk7aWYodC5wYXNzd29yZD1udWxsLG5bMTFdIT10LnBhc3N3b3JkVmVyaWZpY2F0aW9uKXRocm93IEVycm9yKCJJbnZhbGlkIHBhc3dvcmQiKTtyPXIuc3ViYXJyYXkoMTIpfXJldHVybiBiaih0LHIpfX0se2tleToiZmx1c2giLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3ZhbGlkOiEwLGRhdGE6bmV3IFVpbnQ4QXJyYXkoMCl9fX1dKSxyfSgpLHdqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LG4pe2hqKHRoaXMsciksT2JqZWN0LmFzc2lnbih0aGlzLHtwYXNzd29yZDp0LHBhc3N3b3JkVmVyaWZpY2F0aW9uOm59KSxnaih0aGlzLHQpfXJldHVybiBkaihyLFt7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKHIpe3ZhciB0LG4sZT10aGlzO2lmKGUucGFzc3dvcmQpe2UucGFzc3dvcmQ9bnVsbDt2YXIgaT1jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEyKSk7aVsxMV09ZS5wYXNzd29yZFZlcmlmaWNhdGlvbiwodD1uZXcgVWludDhBcnJheShyLmxlbmd0aCtpLmxlbmd0aCkpLnNldChwaihlLGkpLDApLG49MTJ9ZWxzZSB0PW5ldyBVaW50OEFycmF5KHIubGVuZ3RoKSxuPTA7cmV0dXJuIHQuc2V0KHBqKGUsciksbiksdH19LHtrZXk6ImZsdXNoIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkYXRhOm5ldyBVaW50OEFycmF5KDApfX19XSkscn0oKTtmdW5jdGlvbiBiaihyLHQpe2Zvcih2YXIgbj1uZXcgVWludDhBcnJheSh0Lmxlbmd0aCksZT0wO2U8dC5sZW5ndGg7ZSsrKW5bZV09U2oociledFtlXSxtaihyLG5bZV0pO3JldHVybiBufWZ1bmN0aW9uIHBqKHIsdCl7Zm9yKHZhciBuPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxlPTA7ZTx0Lmxlbmd0aDtlKyspbltlXT1TaihyKV50W2VdLG1qKHIsdFtlXSk7cmV0dXJuIG59ZnVuY3Rpb24gZ2oocix0KXtyLmtleXM9WzMwNTQxOTg5Niw1OTE3NTEwNDksODc4MDgyMTkyXSxyLkp0PW5ldyBVUyhyLmtleXNbMF0pLHIuWHQ9bmV3IFVTKHIua2V5c1syXSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspbWoocix0LmNoYXJDb2RlQXQobikpfWZ1bmN0aW9uIG1qKHIsdCl7ci5KdC5hcHBlbmQoW3RdKSxyLmtleXNbMF09fnIuSnQuZ2V0KCksci5rZXlzWzFdPWpqKHIua2V5c1sxXStBaihyLmtleXNbMF0pKSxyLmtleXNbMV09amooTWF0aC5pbXVsKHIua2V5c1sxXSwxMzQ3NzU4MTMpKzEpLHIuWHQuYXBwZW5kKFtyLmtleXNbMV0+Pj4yNF0pLHIua2V5c1syXT1+ci5YdC5nZXQoKX1mdW5jdGlvbiBTaihyKXt2YXIgdD0yfHIua2V5c1syXTtyZXR1cm4gQWooTWF0aC5pbXVsKHQsMV50KT4+PjgpfWZ1bmN0aW9uIEFqKHIpe3JldHVybiAyNTUmcn1mdW5jdGlvbiBqaihyKXtyZXR1cm4gNDI5NDk2NzI5NSZyfWZ1bmN0aW9uIE9qKHIpe3JldHVybiBPaj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihyKXtyZXR1cm4gdHlwZW9mIHJ9OmZ1bmN0aW9uKHIpe3JldHVybiByJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZyLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZyIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2Ygcn0sT2oocil9ZnVuY3Rpb24ga2ooKXsvKiEgcmVnZW5lcmF0b3ItcnVudGltZSAtLSBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4gLS0gbGljZW5zZSAoTUlUKTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2Jsb2IvbWFpbi9MSUNFTlNFICova2o9ZnVuY3Rpb24oKXtyZXR1cm4gcn07dmFyIHI9e30sdD1PYmplY3QucHJvdG90eXBlLG49dC5oYXNPd25Qcm9wZXJ0eSxlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sOnt9LGk9ZS5pdGVyYXRvcnx8IkBAaXRlcmF0b3IiLG89ZS5hc3luY0l0ZXJhdG9yfHwiQEBhc3luY0l0ZXJhdG9yIix1PWUudG9TdHJpbmdUYWd8fCJAQHRvU3RyaW5nVGFnIjtmdW5jdGlvbiBmKHIsdCxuKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsdCx7dmFsdWU6bix0OiEwLGk6ITAsd3JpdGFibGU6ITB9KSxyW3RdfXRyeXtmKHt9LCIiKX1jYXRjaChyKXtmPWZ1bmN0aW9uKHIsdCxuKXtyZXR1cm4gclt0XT1ufX1mdW5jdGlvbiBhKHIsdCxuLGUpe3ZhciBpPXQmJnQucHJvdG90eXBlIGluc3RhbmNlb2Ygdj90OnYsbz1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSx1PW5ldyBqKGV8fFtdKTtyZXR1cm4gby5idD1mdW5jdGlvbihyLHQsbil7dmFyIGU9InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oaSxvKXtpZigiZXhlY3V0aW5nIj09PWUpdGhyb3cgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZigiY29tcGxldGVkIj09PWUpe2lmKCJ0aHJvdyI9PT1pKXRocm93IG87cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1mb3Iobi5tZXRob2Q9aSxuLmd0PW87Oyl7dmFyIHU9bi5TdDtpZih1KXt2YXIgZj1tKHUsbik7aWYoZil7aWYoZj09PXMpY29udGludWU7cmV0dXJuIGZ9fWlmKCJuZXh0Ij09PW4ubWV0aG9kKW4uQXQ9bi5qdD1uLmd0O2Vsc2UgaWYoInRocm93Ij09PW4ubWV0aG9kKXtpZigic3VzcGVuZGVkU3RhcnQiPT09ZSl0aHJvdyBlPSJjb21wbGV0ZWQiLG4uZ3Q7bi5PdChuLmd0KX1lbHNlInJldHVybiI9PT1uLm1ldGhvZCYmbi5rdCgicmV0dXJuIixuLmd0KTtlPSJleGVjdXRpbmciO3ZhciBhPWMocix0LG4pO2lmKCJub3JtYWwiPT09YS50eXBlKXtpZihlPW4uZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLGEuZ3Q9PT1zKWNvbnRpbnVlO3JldHVybnt2YWx1ZTphLmd0LGRvbmU6bi5kb25lfX0idGhyb3ciPT09YS50eXBlJiYoZT0iY29tcGxldGVkIixuLm1ldGhvZD0idGhyb3ciLG4uZ3Q9YS5ndCl9fX0ocixuLHUpLG99ZnVuY3Rpb24gYyhyLHQsbil7dHJ5e3JldHVybnt0eXBlOiJub3JtYWwiLGd0OnIuY2FsbCh0LG4pfX1jYXRjaChyKXtyZXR1cm57dHlwZToidGhyb3ciLGd0OnJ9fX1yLndyYXA9YTt2YXIgcz17fTtmdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGgoKXt9ZnVuY3Rpb24gbCgpe312YXIgZD17fTtmKGQsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgeT1PYmplY3QuZ2V0UHJvdG90eXBlT2Ysdz15JiZ5KHkoTyhbXSkpKTt3JiZ3IT09dCYmbi5jYWxsKHcsaSkmJihkPXcpO3ZhciBiPWwucHJvdG90eXBlPXYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZCk7ZnVuY3Rpb24gcChyKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Yocix0LChmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5idCh0LHIpfSkpfSkpfWZ1bmN0aW9uIGcocix0KXtmdW5jdGlvbiBlKGksbyx1LGYpe3ZhciBhPWMocltpXSxyLG8pO2lmKCJ0aHJvdyIhPT1hLnR5cGUpe3ZhciBzPWEuZ3Qsdj1zLnZhbHVlO3JldHVybiB2JiYib2JqZWN0Ij09T2oodikmJm4uY2FsbCh2LCJfX2F3YWl0Iik/dC5yZXNvbHZlKHYuRXQpLnRoZW4oKGZ1bmN0aW9uKHIpe2UoIm5leHQiLHIsdSxmKX0pLChmdW5jdGlvbihyKXtlKCJ0aHJvdyIscix1LGYpfSkpOnQucmVzb2x2ZSh2KS50aGVuKChmdW5jdGlvbihyKXtzLnZhbHVlPXIsdShzKX0pLChmdW5jdGlvbihyKXtyZXR1cm4gZSgidGhyb3ciLHIsdSxmKX0pKX1mKGEuZ3QpfXZhciBpO3RoaXMuYnQ9ZnVuY3Rpb24ocixuKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyB0KChmdW5jdGlvbih0LGkpe2UocixuLHQsaSl9KSl9cmV0dXJuIGk9aT9pLnRoZW4obyxvKTpvKCl9fWZ1bmN0aW9uIG0ocix0KXt2YXIgbj1yLml0ZXJhdG9yW3QubWV0aG9kXTtpZih2b2lkIDA9PT1uKXtpZih0LlN0PW51bGwsInRocm93Ij09PXQubWV0aG9kKXtpZihyLml0ZXJhdG9yLnEmJih0Lm1ldGhvZD0icmV0dXJuIix0Lmd0PXZvaWQgMCxtKHIsdCksInRocm93Ij09PXQubWV0aG9kKSlyZXR1cm4gczt0Lm1ldGhvZD0idGhyb3ciLHQuZ3Q9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBzfXZhciBlPWMobixyLml0ZXJhdG9yLHQuZ3QpO2lmKCJ0aHJvdyI9PT1lLnR5cGUpcmV0dXJuIHQubWV0aG9kPSJ0aHJvdyIsdC5ndD1lLmd0LHQuU3Q9bnVsbCxzO3ZhciBpPWUuZ3Q7cmV0dXJuIGk/aS5kb25lPyh0W3IuVHRdPWkudmFsdWUsdC5uZXh0PXIueHQsInJldHVybiIhPT10Lm1ldGhvZCYmKHQubWV0aG9kPSJuZXh0Iix0Lmd0PXZvaWQgMCksdC5TdD1udWxsLHMpOmk6KHQubWV0aG9kPSJ0aHJvdyIsdC5ndD1uZXcgVHlwZUVycm9yKCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdCIpLHQuU3Q9bnVsbCxzKX1mdW5jdGlvbiBTKHIpe3ZhciB0PXtVdDpyWzBdfTsxIGluIHImJih0Lk10PXJbMV0pLDIgaW4gciYmKHQuSXQ9clsyXSx0Lkx0PXJbM10pLHRoaXMuUHQucHVzaCh0KX1mdW5jdGlvbiBBKHIpe3ZhciB0PXIuX3R8fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5ndCxyLl90PXR9ZnVuY3Rpb24gaihyKXt0aGlzLlB0PVt7VXQ6InJvb3QifV0sci5mb3JFYWNoKFMsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gTyhyKXtpZihyKXt2YXIgdD1yW2ldO2lmKHQpcmV0dXJuIHQuY2FsbChyKTtpZigiZnVuY3Rpb24iPT10eXBlb2Ygci5uZXh0KXJldHVybiByO2lmKCFpc05hTihyLmxlbmd0aCkpe3ZhciBlPS0xLG89ZnVuY3Rpb24gdCgpe2Zvcig7KytlPHIubGVuZ3RoOylpZihuLmNhbGwocixlKSlyZXR1cm4gdC52YWx1ZT1yW2VdLHQuZG9uZT0hMSx0O3JldHVybiB0LnZhbHVlPXZvaWQgMCx0LmRvbmU9ITAsdH07cmV0dXJuIG8ubmV4dD1vfX1yZXR1cm57bmV4dDprfX1mdW5jdGlvbiBrKCl7cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX1yZXR1cm4gaC5wcm90b3R5cGU9bCxmKGIsImNvbnN0cnVjdG9yIixsKSxmKGwsImNvbnN0cnVjdG9yIixoKSxoLmRpc3BsYXlOYW1lPWYobCx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpLHIuUnQ9ZnVuY3Rpb24ocil7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIHImJnIuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PWh8fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LHIubWFyaz1mdW5jdGlvbihyKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihyLGwpOihyLl9fcHJvdG9fXz1sLGYocix1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGIpLHJ9LHIuRnQ9ZnVuY3Rpb24ocil7cmV0dXJue0V0OnJ9fSxwKGcucHJvdG90eXBlKSxmKGcucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksci5OdD1nLHIuYXN5bmM9ZnVuY3Rpb24odCxuLGUsaSxvKXt2b2lkIDA9PT1vJiYobz1Qcm9taXNlKTt2YXIgdT1uZXcgZyhhKHQsbixlLGkpLG8pO3JldHVybiByLlJ0KG4pP3U6dS5uZXh0KCkudGhlbigoZnVuY3Rpb24ocil7cmV0dXJuIHIuZG9uZT9yLnZhbHVlOnUubmV4dCgpfSkpfSxwKGIpLGYoYix1LCJHZW5lcmF0b3IiKSxmKGIsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxmKGIsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxyLmtleXM9ZnVuY3Rpb24ocil7dmFyIHQ9W107Zm9yKHZhciBuIGluIHIpdC5wdXNoKG4pO3JldHVybiB0LnJldmVyc2UoKSxmdW5jdGlvbiBuKCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciBlPXQucG9wKCk7aWYoZSBpbiByKXJldHVybiBuLnZhbHVlPWUsbi5kb25lPSExLG59cmV0dXJuIG4uZG9uZT0hMCxufX0sci52YWx1ZXM9TyxqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aixyZXNldDpmdW5jdGlvbihyKXtpZih0aGlzLkN0PTAsdGhpcy5uZXh0PTAsdGhpcy5BdD10aGlzLmp0PXZvaWQgMCx0aGlzLmRvbmU9ITEsdGhpcy5TdD1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmd0PXZvaWQgMCx0aGlzLlB0LmZvckVhY2goQSksIXIpZm9yKHZhciB0IGluIHRoaXMpInQiPT09dC5jaGFyQXQoMCkmJm4uY2FsbCh0aGlzLHQpJiYhaXNOYU4oK3Quc2xpY2UoMSkpJiYodGhpc1t0XT12b2lkIDApfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciByPXRoaXMuUHRbMF0uX3Q7aWYoInRocm93Ij09PXIudHlwZSl0aHJvdyByLmd0O3JldHVybiB0aGlzLkJ0fSxPdDpmdW5jdGlvbihyKXtpZih0aGlzLmRvbmUpdGhyb3cgcjt2YXIgdD10aGlzO2Z1bmN0aW9uIGUobixlKXtyZXR1cm4gdS50eXBlPSJ0aHJvdyIsdS5ndD1yLHQubmV4dD1uLGUmJih0Lm1ldGhvZD0ibmV4dCIsdC5ndD12b2lkIDApLCEhZX1mb3IodmFyIGk9dGhpcy5QdC5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIG89dGhpcy5QdFtpXSx1PW8uX3Q7aWYoInJvb3QiPT09by5VdClyZXR1cm4gZSgiZW5kIik7aWYoby5VdDw9dGhpcy5DdCl7dmFyIGY9bi5jYWxsKG8sImNhdGNoTG9jIiksYT1uLmNhbGwobywiZmluYWxseUxvYyIpO2lmKGYmJmEpe2lmKHRoaXMuQ3Q8by5NdClyZXR1cm4gZShvLk10LCEwKTtpZih0aGlzLkN0PG8uSXQpcmV0dXJuIGUoby5JdCl9ZWxzZSBpZihmKXtpZih0aGlzLkN0PG8uTXQpcmV0dXJuIGUoby5NdCwhMCl9ZWxzZXtpZighYSl0aHJvdyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLkN0PG8uSXQpcmV0dXJuIGUoby5JdCl9fX19LGt0OmZ1bmN0aW9uKHIsdCl7Zm9yKHZhciBlPXRoaXMuUHQubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciBpPXRoaXMuUHRbZV07aWYoaS5VdDw9dGhpcy5DdCYmbi5jYWxsKGksImZpbmFsbHlMb2MiKSYmdGhpcy5DdDxpLkl0KXt2YXIgbz1pO2JyZWFrfX1vJiYoImJyZWFrIj09PXJ8fCJjb250aW51ZSI9PT1yKSYmby5VdDw9dCYmdDw9by5JdCYmKG89bnVsbCk7dmFyIHU9bz9vLl90Ont9O3JldHVybiB1LnR5cGU9cix1Lmd0PXQsbz8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1vLkl0LHMpOnRoaXMuY29tcGxldGUodSl9LGNvbXBsZXRlOmZ1bmN0aW9uKHIsdCl7aWYoInRocm93Ij09PXIudHlwZSl0aHJvdyByLmd0O3JldHVybiJicmVhayI9PT1yLnR5cGV8fCJjb250aW51ZSI9PT1yLnR5cGU/dGhpcy5uZXh0PXIuZ3Q6InJldHVybiI9PT1yLnR5cGU/KHRoaXMuQnQ9dGhpcy5ndD1yLmd0LHRoaXMubWV0aG9kPSJyZXR1cm4iLHRoaXMubmV4dD0iZW5kIik6Im5vcm1hbCI9PT1yLnR5cGUmJnQmJih0aGlzLm5leHQ9dCksc30sZmluaXNoOmZ1bmN0aW9uKHIpe2Zvcih2YXIgdD10aGlzLlB0Lmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgbj10aGlzLlB0W3RdO2lmKG4uSXQ9PT1yKXJldHVybiB0aGlzLmNvbXBsZXRlKG4uX3Qsbi5MdCksQShuKSxzfX0sY2F0Y2g6ZnVuY3Rpb24ocil7Zm9yKHZhciB0PXRoaXMuUHQubGVuZ3RoLTE7dD49MDstLXQpe3ZhciBuPXRoaXMuUHRbdF07aWYobi5VdD09PXIpe3ZhciBlPW4uX3Q7aWYoInRocm93Ij09PWUudHlwZSl7dmFyIGk9ZS5ndDtBKG4pfXJldHVybiBpfX10aHJvdyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LEd0OmZ1bmN0aW9uKHIsdCxuKXtyZXR1cm4gdGhpcy5TdD17aXRlcmF0b3I6TyhyKSxUdDp0LHh0Om59LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5ndD12b2lkIDApLHN9fSxyfWZ1bmN0aW9uIEVqKHIsdCxuLGUsaSxvLHUpe3RyeXt2YXIgZj1yW29dKHUpLGE9Zi52YWx1ZX1jYXRjaChyKXtyZXR1cm4gdm9pZCBuKHIpfWYuZG9uZT90KGEpOlByb21pc2UucmVzb2x2ZShhKS50aGVuKGUsaSl9ZnVuY3Rpb24gVGoocil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsaSl7dmFyIG89ci5hcHBseSh0LG4pO2Z1bmN0aW9uIHUocil7RWoobyxlLGksdSxmLCJuZXh0IixyKX1mdW5jdGlvbiBmKHIpe0VqKG8sZSxpLHUsZiwidGhyb3ciLHIpfXUodm9pZCAwKX0pKX19ZnVuY3Rpb24geGoocix0KXtpZighKHIgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBVaihyLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgZT10W25dO2UudD1lLnR8fCExLGUuaT0hMCwidmFsdWUiaW4gZSYmKGUud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUua2V5LGUpfX1mdW5jdGlvbiBNaihyLHQsbil7cmV0dXJuIHQmJlVqKHIucHJvdG90eXBlLHQpLG4mJlVqKHIsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSkscn12YXIgSWo9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQsbixlKXt2YXIgaT1uLnNpZ25hdHVyZSxvPW4ucGFzc3dvcmQsdT1uLnNpZ25lZCxmPW4uY29tcHJlc3NlZCxhPW4uemlwQ3J5cHRvLGM9bi5wYXNzd29yZFZlcmlmaWNhdGlvbixzPW4uZW5jcnlwdGlvblN0cmVuZ3RoLHY9ZS5RdDt4aih0aGlzLHIpO3ZhciBoPSEhbztPYmplY3QuYXNzaWduKHRoaXMse3NpZ25hdHVyZTppLGVuY3J5cHRlZDpoLHNpZ25lZDp1LGNvbXByZXNzZWQ6ZixadDpmJiZuZXcgdCh7UXQ6dn0pLHJuOnUmJm5ldyBVUyx6aXBDcnlwdG86YSxkZWNyeXB0OmgmJmE/bmV3IHlqKG8sYyk6bmV3IEpBKG8sdSxzKX0pfXZhciB0O3JldHVybiBNaihyLFt7a2V5OiJhcHBlbmQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHI9VGooa2ooKS5tYXJrKChmdW5jdGlvbiByKHQpe3ZhciBuO3JldHVybiBraigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5DdD1yLm5leHQpe2Nhc2UgMDppZighKG49dGhpcykuZW5jcnlwdGVkfHwhdC5sZW5ndGgpe3IubmV4dD01O2JyZWFrfXJldHVybiByLm5leHQ9NCxuLmRlY3J5cHQuYXBwZW5kKHQpO2Nhc2UgNDp0PXIuQXQ7Y2FzZSA1OmlmKCFuLmNvbXByZXNzZWR8fCF0Lmxlbmd0aCl7ci5uZXh0PTk7YnJlYWt9cmV0dXJuIHIubmV4dD04LG4uWnQuYXBwZW5kKHQpO2Nhc2UgODp0PXIuQXQ7Y2FzZSA5OnJldHVybighbi5lbmNyeXB0ZWR8fG4uemlwQ3J5cHRvKSYmbi5zaWduZWQmJnQubGVuZ3RoJiZuLnJuLmFwcGVuZCh0KSxyLmt0KCJyZXR1cm4iLHQpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0se2tleToiZmx1c2giLHZhbHVlOih0PVRqKGtqKCkubWFyaygoZnVuY3Rpb24gcigpe3ZhciB0LG4sZSxpLG87cmV0dXJuIGtqKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLkN0PXIubmV4dCl7Y2FzZSAwOmlmKHQ9dGhpcyxlPW5ldyBVaW50OEFycmF5KDApLCF0LmVuY3J5cHRlZCl7ci5uZXh0PTc7YnJlYWt9aWYoKGk9dC5kZWNyeXB0LmZsdXNoKCkpLnZhbGlkKXtyLm5leHQ9NjticmVha310aHJvdyBFcnJvcigiSW52YWxpZCBzaWduYXR1cmUiKTtjYXNlIDY6ZT1pLmRhdGE7Y2FzZSA3OmlmKHQuZW5jcnlwdGVkJiYhdC56aXBDcnlwdG98fCF0LnNpZ25lZCl7ci5uZXh0PTEzO2JyZWFrfWlmKG89bmV3IERhdGFWaWV3KG5ldyBVaW50OEFycmF5KDQpLmJ1ZmZlciksbj10LnJuLmdldCgpLG8uc2V0VWludDMyKDAsbiksdC5zaWduYXR1cmU9PW8uZ2V0VWludDMyKDAsITEpKXtyLm5leHQ9MTM7YnJlYWt9dGhyb3cgRXJyb3IoIkludmFsaWQgc2lnbmF0dXJlIik7Y2FzZSAxMzppZighdC5jb21wcmVzc2VkKXtyLm5leHQ9MjI7YnJlYWt9cmV0dXJuIHIubmV4dD0xNix0Llp0LmFwcGVuZChlKTtjYXNlIDE2OmlmKHIudG49ci5BdCxyLnRuKXtyLm5leHQ9MTk7YnJlYWt9ci50bj1uZXcgVWludDhBcnJheSgwKTtjYXNlIDE5OnJldHVybiBlPXIudG4sci5uZXh0PTIyLHQuWnQuZmx1c2goKTtjYXNlIDIyOnJldHVybiByLmt0KCJyZXR1cm4iLHtkYXRhOmUsc2lnbmF0dXJlOm59KTtjYXNlIDIzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSksZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dKSxyfSgpLExqPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LG4sZSl7dmFyIGk9bi5lbmNyeXB0ZWQsbz1uLnNpZ25lZCx1PW4uY29tcHJlc3NlZCxmPW4ubGV2ZWwsYT1uLnppcENyeXB0byxjPW4ucGFzc3dvcmQscz1uLnBhc3N3b3JkVmVyaWZpY2F0aW9uLHY9bi5lbmNyeXB0aW9uU3RyZW5ndGgsaD1lLlF0O3hqKHRoaXMsciksT2JqZWN0LmFzc2lnbih0aGlzLHtlbmNyeXB0ZWQ6aSxzaWduZWQ6byxjb21wcmVzc2VkOnUsbm46dSYmbmV3IHQoe2xldmVsOmZ8fDUsUXQ6aH0pLHJuOm8mJm5ldyBVUyx6aXBDcnlwdG86YSxlbmNyeXB0OmkmJmE/bmV3IHdqKGMscyk6bmV3IFhBKGMsdil9KX12YXIgdCxuO3JldHVybiBNaihyLFt7a2V5OiJhcHBlbmQiLHZhbHVlOihuPVRqKGtqKCkubWFyaygoZnVuY3Rpb24gcih0KXt2YXIgbixlO3JldHVybiBraigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5DdD1yLm5leHQpe2Nhc2UgMDppZihlPXQsIShuPXRoaXMpLmNvbXByZXNzZWR8fCF0Lmxlbmd0aCl7ci5uZXh0PTY7YnJlYWt9cmV0dXJuIHIubmV4dD01LG4ubm4uYXBwZW5kKHQpO2Nhc2UgNTplPXIuQXQ7Y2FzZSA2OmlmKCFuLmVuY3J5cHRlZHx8IWUubGVuZ3RoKXtyLm5leHQ9MTA7YnJlYWt9cmV0dXJuIHIubmV4dD05LG4uZW5jcnlwdC5hcHBlbmQoZSk7Y2FzZSA5OmU9ci5BdDtjYXNlIDEwOnJldHVybighbi5lbmNyeXB0ZWR8fG4uemlwQ3J5cHRvKSYmbi5zaWduZWQmJnQubGVuZ3RoJiZuLnJuLmFwcGVuZCh0KSxyLmt0KCJyZXR1cm4iLGUpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKSxmdW5jdGlvbihyKXtyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX0se2tleToiZmx1c2giLHZhbHVlOih0PVRqKGtqKCkubWFyaygoZnVuY3Rpb24gcigpe3ZhciB0LG4sZSxpLG87cmV0dXJuIGtqKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLkN0PXIubmV4dCl7Y2FzZSAwOmlmKHQ9dGhpcyxlPW5ldyBVaW50OEFycmF5KDApLCF0LmNvbXByZXNzZWQpe3IubmV4dD05O2JyZWFrfXJldHVybiByLm5leHQ9NSx0Lm5uLmZsdXNoKCk7Y2FzZSA1OmlmKHIudG49ci5BdCxyLnRuKXtyLm5leHQ9ODticmVha31yLnRuPW5ldyBVaW50OEFycmF5KDApO2Nhc2UgODplPXIudG47Y2FzZSA5OmlmKCF0LmVuY3J5cHRlZCl7ci5uZXh0PTE5O2JyZWFrfXJldHVybiByLm5leHQ9MTIsdC5lbmNyeXB0LmFwcGVuZChlKTtjYXNlIDEyOmU9ci5BdCxpPXQuZW5jcnlwdC5mbHVzaCgpLG49aS5zaWduYXR1cmUsKG89bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgraS5kYXRhLmxlbmd0aCkpLnNldChlLDApLG8uc2V0KGkuZGF0YSxlLmxlbmd0aCksZT1vO2Nhc2UgMTk6cmV0dXJuIHQuZW5jcnlwdGVkJiYhdC56aXBDcnlwdG98fCF0LnNpZ25lZHx8KG49dC5ybi5nZXQoKSksci5rdCgicmV0dXJuIix7ZGF0YTplLHNpZ25hdHVyZTpufSk7Y2FzZSAyMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9XSkscn0oKTtmdW5jdGlvbiBQaihyKXtyZXR1cm4gUGo9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24ocil7cmV0dXJuIHR5cGVvZiByfTpmdW5jdGlvbihyKXtyZXR1cm4gciYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmci5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmciE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHJ9LFBqKHIpfWZ1bmN0aW9uIF9qKCl7LyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9ibG9iL21haW4vTElDRU5TRSAqL19qPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9O3ZhciByPXt9LHQ9T2JqZWN0LnByb3RvdHlwZSxuPXQuaGFzT3duUHJvcGVydHksZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxpPWUuaXRlcmF0b3J8fCJAQGl0ZXJhdG9yIixvPWUuYXN5bmNJdGVyYXRvcnx8IkBAYXN5bmNJdGVyYXRvciIsdT1lLnRvU3RyaW5nVGFnfHwiQEB0b1N0cmluZ1RhZyI7ZnVuY3Rpb24gZihyLHQsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLHQse3ZhbHVlOm4sdDohMCxpOiEwLHdyaXRhYmxlOiEwfSksclt0XX10cnl7Zih7fSwiIil9Y2F0Y2gocil7Zj1mdW5jdGlvbihyLHQsbil7cmV0dXJuIHJbdF09bn19ZnVuY3Rpb24gYShyLHQsbixlKXt2YXIgaT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHY/dDp2LG89T2JqZWN0LmNyZWF0ZShpLnByb3RvdHlwZSksdT1uZXcgaihlfHxbXSk7cmV0dXJuIG8uYnQ9ZnVuY3Rpb24ocix0LG4pe3ZhciBlPSJzdXNwZW5kZWRTdGFydCI7cmV0dXJuIGZ1bmN0aW9uKGksbyl7aWYoImV4ZWN1dGluZyI9PT1lKXRocm93IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1lKXtpZigidGhyb3ciPT09aSl0aHJvdyBvO3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19Zm9yKG4ubWV0aG9kPWksbi5ndD1vOzspe3ZhciB1PW4uU3Q7aWYodSl7dmFyIGY9bSh1LG4pO2lmKGYpe2lmKGY9PT1zKWNvbnRpbnVlO3JldHVybiBmfX1pZigibmV4dCI9PT1uLm1ldGhvZCluLkF0PW4uanQ9bi5ndDtlbHNlIGlmKCJ0aHJvdyI9PT1uLm1ldGhvZCl7aWYoInN1c3BlbmRlZFN0YXJ0Ij09PWUpdGhyb3cgZT0iY29tcGxldGVkIixuLmd0O24uT3Qobi5ndCl9ZWxzZSJyZXR1cm4iPT09bi5tZXRob2QmJm4ua3QoInJldHVybiIsbi5ndCk7ZT0iZXhlY3V0aW5nIjt2YXIgYT1jKHIsdCxuKTtpZigibm9ybWFsIj09PWEudHlwZSl7aWYoZT1uLmRvbmU/ImNvbXBsZXRlZCI6InN1c3BlbmRlZFlpZWxkIixhLmd0PT09cyljb250aW51ZTtyZXR1cm57dmFsdWU6YS5ndCxkb25lOm4uZG9uZX19InRocm93Ij09PWEudHlwZSYmKGU9ImNvbXBsZXRlZCIsbi5tZXRob2Q9InRocm93IixuLmd0PWEuZ3QpfX19KHIsbix1KSxvfWZ1bmN0aW9uIGMocix0LG4pe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixndDpyLmNhbGwodCxuKX19Y2F0Y2gocil7cmV0dXJue3R5cGU6InRocm93IixndDpyfX19ci53cmFwPWE7dmFyIHM9e307ZnVuY3Rpb24gdigpe31mdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIGwoKXt9dmFyIGQ9e307ZihkLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIHk9T2JqZWN0LmdldFByb3RvdHlwZU9mLHc9eSYmeSh5KE8oW10pKSk7dyYmdyE9PXQmJm4uY2FsbCh3LGkpJiYoZD13KTt2YXIgYj1sLnByb3RvdHlwZT12LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQpO2Z1bmN0aW9uIHAocil7WyJuZXh0IiwidGhyb3ciLCJyZXR1cm4iXS5mb3JFYWNoKChmdW5jdGlvbih0KXtmKHIsdCwoZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuYnQodCxyKX0pKX0pKX1mdW5jdGlvbiBnKHIsdCl7ZnVuY3Rpb24gZShpLG8sdSxmKXt2YXIgYT1jKHJbaV0scixvKTtpZigidGhyb3ciIT09YS50eXBlKXt2YXIgcz1hLmd0LHY9cy52YWx1ZTtyZXR1cm4gdiYmIm9iamVjdCI9PVBqKHYpJiZuLmNhbGwodiwiX19hd2FpdCIpP3QucmVzb2x2ZSh2LkV0KS50aGVuKChmdW5jdGlvbihyKXtlKCJuZXh0IixyLHUsZil9KSwoZnVuY3Rpb24ocil7ZSgidGhyb3ciLHIsdSxmKX0pKTp0LnJlc29sdmUodikudGhlbigoZnVuY3Rpb24ocil7cy52YWx1ZT1yLHUocyl9KSwoZnVuY3Rpb24ocil7cmV0dXJuIGUoInRocm93IixyLHUsZil9KSl9ZihhLmd0KX12YXIgaTt0aGlzLmJ0PWZ1bmN0aW9uKHIsbil7ZnVuY3Rpb24gbygpe3JldHVybiBuZXcgdCgoZnVuY3Rpb24odCxpKXtlKHIsbix0LGkpfSkpfXJldHVybiBpPWk/aS50aGVuKG8sbyk6bygpfX1mdW5jdGlvbiBtKHIsdCl7dmFyIG49ci5pdGVyYXRvclt0Lm1ldGhvZF07aWYodm9pZCAwPT09bil7aWYodC5TdD1udWxsLCJ0aHJvdyI9PT10Lm1ldGhvZCl7aWYoci5pdGVyYXRvci5xJiYodC5tZXRob2Q9InJldHVybiIsdC5ndD12b2lkIDAsbShyLHQpLCJ0aHJvdyI9PT10Lm1ldGhvZCkpcmV0dXJuIHM7dC5tZXRob2Q9InRocm93Iix0Lmd0PW5ldyBUeXBlRXJyb3IoIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2QiKX1yZXR1cm4gc312YXIgZT1jKG4sci5pdGVyYXRvcix0Lmd0KTtpZigidGhyb3ciPT09ZS50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuZ3Q9ZS5ndCx0LlN0PW51bGwsczt2YXIgaT1lLmd0O3JldHVybiBpP2kuZG9uZT8odFtyLlR0XT1pLnZhbHVlLHQubmV4dD1yLnh0LCJyZXR1cm4iIT09dC5tZXRob2QmJih0Lm1ldGhvZD0ibmV4dCIsdC5ndD12b2lkIDApLHQuU3Q9bnVsbCxzKTppOih0Lm1ldGhvZD0idGhyb3ciLHQuZ3Q9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LlN0PW51bGwscyl9ZnVuY3Rpb24gUyhyKXt2YXIgdD17VXQ6clswXX07MSBpbiByJiYodC5NdD1yWzFdKSwyIGluIHImJih0Lkl0PXJbMl0sdC5MdD1yWzNdKSx0aGlzLlB0LnB1c2godCl9ZnVuY3Rpb24gQShyKXt2YXIgdD1yLl90fHx7fTt0LnR5cGU9Im5vcm1hbCIsZGVsZXRlIHQuZ3Qsci5fdD10fWZ1bmN0aW9uIGoocil7dGhpcy5QdD1be1V0OiJyb290In1dLHIuZm9yRWFjaChTLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIE8ocil7aWYocil7dmFyIHQ9cltpXTtpZih0KXJldHVybiB0LmNhbGwocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHIubmV4dClyZXR1cm4gcjtpZighaXNOYU4oci5sZW5ndGgpKXt2YXIgZT0tMSxvPWZ1bmN0aW9uIHQoKXtmb3IoOysrZTxyLmxlbmd0aDspaWYobi5jYWxsKHIsZSkpcmV0dXJuIHQudmFsdWU9cltlXSx0LmRvbmU9ITEsdDtyZXR1cm4gdC52YWx1ZT12b2lkIDAsdC5kb25lPSEwLHR9O3JldHVybiBvLm5leHQ9b319cmV0dXJue25leHQ6a319ZnVuY3Rpb24gaygpe3JldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH19cmV0dXJuIGgucHJvdG90eXBlPWwsZihiLCJjb25zdHJ1Y3RvciIsbCksZihsLCJjb25zdHJ1Y3RvciIsaCksaC5kaXNwbGF5TmFtZT1mKGwsdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSxyLlJ0PWZ1bmN0aW9uKHIpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiByJiZyLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1ofHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxyLm1hcms9ZnVuY3Rpb24ocil7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YocixsKTooci5fX3Byb3RvX189bCxmKHIsdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSksci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShiKSxyfSxyLkZ0PWZ1bmN0aW9uKHIpe3JldHVybntFdDpyfX0scChnLnByb3RvdHlwZSksZihnLnByb3RvdHlwZSxvLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHIuTnQ9ZyxyLmFzeW5jPWZ1bmN0aW9uKHQsbixlLGksbyl7dm9pZCAwPT09byYmKG89UHJvbWlzZSk7dmFyIHU9bmV3IGcoYSh0LG4sZSxpKSxvKTtyZXR1cm4gci5SdChuKT91OnUubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKHIpe3JldHVybiByLmRvbmU/ci52YWx1ZTp1Lm5leHQoKX0pKX0scChiKSxmKGIsdSwiR2VuZXJhdG9yIiksZihiLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZihiLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksci5rZXlzPWZ1bmN0aW9uKHIpe3ZhciB0PVtdO2Zvcih2YXIgbiBpbiByKXQucHVzaChuKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gbigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgZT10LnBvcCgpO2lmKGUgaW4gcilyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT0hMSxufXJldHVybiBuLmRvbmU9ITAsbn19LHIudmFsdWVzPU8sai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmoscmVzZXQ6ZnVuY3Rpb24ocil7aWYodGhpcy5DdD0wLHRoaXMubmV4dD0wLHRoaXMuQXQ9dGhpcy5qdD12b2lkIDAsdGhpcy5kb25lPSExLHRoaXMuU3Q9bnVsbCx0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5ndD12b2lkIDAsdGhpcy5QdC5mb3JFYWNoKEEpLCFyKWZvcih2YXIgdCBpbiB0aGlzKSJ0Ij09PXQuY2hhckF0KDApJiZuLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09dm9pZCAwKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgcj10aGlzLlB0WzBdLl90O2lmKCJ0aHJvdyI9PT1yLnR5cGUpdGhyb3cgci5ndDtyZXR1cm4gdGhpcy5CdH0sT3Q6ZnVuY3Rpb24ocil7aWYodGhpcy5kb25lKXRocm93IHI7dmFyIHQ9dGhpcztmdW5jdGlvbiBlKG4sZSl7cmV0dXJuIHUudHlwZT0idGhyb3ciLHUuZ3Q9cix0Lm5leHQ9bixlJiYodC5tZXRob2Q9Im5leHQiLHQuZ3Q9dm9pZCAwKSwhIWV9Zm9yKHZhciBpPXRoaXMuUHQubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBvPXRoaXMuUHRbaV0sdT1vLl90O2lmKCJyb290Ij09PW8uVXQpcmV0dXJuIGUoImVuZCIpO2lmKG8uVXQ8PXRoaXMuQ3Qpe3ZhciBmPW4uY2FsbChvLCJjYXRjaExvYyIpLGE9bi5jYWxsKG8sImZpbmFsbHlMb2MiKTtpZihmJiZhKXtpZih0aGlzLkN0PG8uTXQpcmV0dXJuIGUoby5NdCwhMCk7aWYodGhpcy5DdDxvLkl0KXJldHVybiBlKG8uSXQpfWVsc2UgaWYoZil7aWYodGhpcy5DdDxvLk10KXJldHVybiBlKG8uTXQsITApfWVsc2V7aWYoIWEpdGhyb3cgRXJyb3IoInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5Iik7aWYodGhpcy5DdDxvLkl0KXJldHVybiBlKG8uSXQpfX19fSxrdDpmdW5jdGlvbihyLHQpe2Zvcih2YXIgZT10aGlzLlB0Lmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgaT10aGlzLlB0W2VdO2lmKGkuVXQ8PXRoaXMuQ3QmJm4uY2FsbChpLCJmaW5hbGx5TG9jIikmJnRoaXMuQ3Q8aS5JdCl7dmFyIG89aTticmVha319byYmKCJicmVhayI9PT1yfHwiY29udGludWUiPT09cikmJm8uVXQ8PXQmJnQ8PW8uSXQmJihvPW51bGwpO3ZhciB1PW8/by5fdDp7fTtyZXR1cm4gdS50eXBlPXIsdS5ndD10LG8/KHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLm5leHQ9by5JdCxzKTp0aGlzLmNvbXBsZXRlKHUpfSxjb21wbGV0ZTpmdW5jdGlvbihyLHQpe2lmKCJ0aHJvdyI9PT1yLnR5cGUpdGhyb3cgci5ndDtyZXR1cm4iYnJlYWsiPT09ci50eXBlfHwiY29udGludWUiPT09ci50eXBlP3RoaXMubmV4dD1yLmd0OiJyZXR1cm4iPT09ci50eXBlPyh0aGlzLkJ0PXRoaXMuZ3Q9ci5ndCx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ci50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLHN9LGZpbmlzaDpmdW5jdGlvbihyKXtmb3IodmFyIHQ9dGhpcy5QdC5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIG49dGhpcy5QdFt0XTtpZihuLkl0PT09cilyZXR1cm4gdGhpcy5jb21wbGV0ZShuLl90LG4uTHQpLEEobiksc319LGNhdGNoOmZ1bmN0aW9uKHIpe2Zvcih2YXIgdD10aGlzLlB0Lmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgbj10aGlzLlB0W3RdO2lmKG4uVXQ9PT1yKXt2YXIgZT1uLl90O2lmKCJ0aHJvdyI9PT1lLnR5cGUpe3ZhciBpPWUuZ3Q7QShuKX1yZXR1cm4gaX19dGhyb3cgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxHdDpmdW5jdGlvbihyLHQsbil7cmV0dXJuIHRoaXMuU3Q9e2l0ZXJhdG9yOk8ociksVHQ6dCx4dDpufSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuZ3Q9dm9pZCAwKSxzfX0scn1mdW5jdGlvbiBSaihyLHQsbixlLGksbyx1KXt0cnl7dmFyIGY9cltvXSh1KSxhPWYudmFsdWV9Y2F0Y2gocil7cmV0dXJuIHZvaWQgbihyKX1mLmRvbmU/dChhKTpQcm9taXNlLnJlc29sdmUoYSkudGhlbihlLGkpfWZ1bmN0aW9uIEZqKHIpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGkpe3ZhciBvPXIuYXBwbHkodCxuKTtmdW5jdGlvbiB1KHIpe1JqKG8sZSxpLHUsZiwibmV4dCIscil9ZnVuY3Rpb24gZihyKXtSaihvLGUsaSx1LGYsInRocm93IixyKX11KHZvaWQgMCl9KSl9fXZhciBOaixDaj17aW5pdDpmdW5jdGlvbihyKXtyLnNjcmlwdHMmJnIuc2NyaXB0cy5sZW5ndGgmJmltcG9ydFNjcmlwdHMuYXBwbHkodm9pZCAwLHIuc2NyaXB0cyk7dmFyIHQsbj1yLm9wdGlvbnM7c2VsZi5pbml0Q29kZWMmJnNlbGYuaW5pdENvZGVjKCksbi5jb2RlY1R5cGUuc3RhcnRzV2l0aCgiZGVmbGF0ZSIpP3Q9c2VsZi5EZWZsYXRlOm4uY29kZWNUeXBlLnN0YXJ0c1dpdGgoImluZmxhdGUiKSYmKHQ9c2VsZi5JbmZsYXRlKSxOaj1mdW5jdGlvbihyLHQsbil7cmV0dXJuIHQuY29kZWNUeXBlLnN0YXJ0c1dpdGgoImRlZmxhdGUiKT9uZXcgTGoocix0LG4pOnQuY29kZWNUeXBlLnN0YXJ0c1dpdGgoImluZmxhdGUiKT9uZXcgSWoocix0LG4pOnZvaWQgMH0odCxuLHIuY29uZmlnKX0sYXBwZW5kOmZ1bmN0aW9uKHIpe3JldHVybiBGaihfaigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gX2ooKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQuQ3Q9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLE5qLmFwcGVuZChyLmRhdGEpO2Nhc2UgMjpyZXR1cm4gdC50bj10LkF0LHQua3QoInJldHVybiIse2RhdGE6dC50bn0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKSgpfSxmbHVzaDpmdW5jdGlvbigpe3JldHVybiBOai5mbHVzaCgpfX07YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24oKXt2YXIgcj1GaihfaigpLm1hcmsoKGZ1bmN0aW9uIHIodCl7dmFyIG4sZSxpLG87cmV0dXJuIF9qKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLkN0PXIubmV4dCl7Y2FzZSAwOmlmKG49dC5kYXRhLGU9bi50eXBlLCEoaT1DaltlXSkpe3IubmV4dD0xOTticmVha31yZXR1cm4gci5DdD00LG4uZGF0YSYmKG4uZGF0YT1uZXcgVWludDhBcnJheShuLmRhdGEpKSxyLm5leHQ9OCxpKG4pO2Nhc2UgODppZihyLnRuPXIuQXQsci50bil7ci5uZXh0PTExO2JyZWFrfXIudG49e307Y2FzZSAxMTppZigobz1yLnRuKS50eXBlPWUsby5kYXRhKXRyeXtvLmRhdGE9by5kYXRhLmJ1ZmZlcixwb3N0TWVzc2FnZShvLFtvLmRhdGFdKX1jYXRjaChyKXtwb3N0TWVzc2FnZShvKX1lbHNlIHBvc3RNZXNzYWdlKG8pO3IubmV4dD0xOTticmVhaztjYXNlIDE2OnIuQ3Q9MTYsci5lbj1yLmNhdGNoKDQpLHBvc3RNZXNzYWdlKHt0eXBlOmUsZXJyb3I6e21lc3NhZ2U6ci5lbi5tZXNzYWdlLHN0YWNrOnIuZW4uc3RhY2t9fSk7Y2FzZSAxOTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzQsMTZdXSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKTt2YXIgQmo9aXMubWFwO0JlKHt0YXJnZXQ6IkFycmF5IixWOiEwLEc6IVFtKCJtYXAiKX0se21hcDpmdW5jdGlvbihyKXtyZXR1cm4gQmoodGhpcyxyLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgR2o9SGk7QmUoe3RhcmdldDoiQXJyYXkiLFY6ITB9LHtmaWxsOmd1fSksR2ooImZpbGwiKSwoMCxzYS5leHBvcnRzKSgiVWludDE2IiwoZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gcih0aGlzLHQsbixlKX19KSk7dmFyIERqLFZqLFlqLHpqLFdqPWp0LCRqPWksSGo9bi5SZWdFeHAsS2o9JGooKGZ1bmN0aW9uKCl7dmFyIHI9SGooImEiLCJ5Iik7cmV0dXJuIHIubGFzdEluZGV4PTIsbnVsbCE9ci5leGVjKCJhYmNkIil9KSkscWo9S2p8fCRqKChmdW5jdGlvbigpe3JldHVybiFIaigiYSIsInkiKS5zdGlja3l9KSksSmo9e29uOktqfHwkaigoZnVuY3Rpb24oKXt2YXIgcj1IaigiXnIiLCJneSIpO3JldHVybiByLmxhc3RJbmRleD0yLG51bGwhPXIuZXhlYygic3RyIil9KSksdW46cWosZm46S2p9LFhqPWksUWo9bi5SZWdFeHAsWmo9WGooKGZ1bmN0aW9uKCl7dmFyIHI9UWooIi4iLCJzIik7cmV0dXJuIShyLmRvdEFsbCYmci5leGVjKCJcbiIpJiYicyI9PT1yLmZsYWdzKX0pKSxyTz1pLHRPPW4uUmVnRXhwLG5PPXJPKChmdW5jdGlvbigpe3ZhciByPXRPKCIoPzxhPmIpIiwiZyIpO3JldHVybiJiIiE9PXIuZXhlYygiYiIpLmFuLmF8fCJiYyIhPT0iYiIucmVwbGFjZShyLCIkPGE+YyIpfSkpLGVPPWEsaU89UyxvTz1RZSx1Tz1mdW5jdGlvbigpe3ZhciByPVdqKHRoaXMpLHQ9IiI7cmV0dXJuIHIuaGFzSW5kaWNlcyYmKHQrPSJkIiksci5nbG9iYWwmJih0Kz0iZyIpLHIuaWdub3JlQ2FzZSYmKHQrPSJpIiksci5tdWx0aWxpbmUmJih0Kz0ibSIpLHIuZG90QWxsJiYodCs9InMiKSxyLnVuaWNvZGUmJih0Kz0idSIpLHIuY24mJih0Kz0idiIpLHIuc3RpY2t5JiYodCs9InkiKSx0fSxmTz1KaixhTz1wci5leHBvcnRzLGNPPUNpLHNPPW1uLmdldCx2Tz1aaixoTz1uTyxsTz1hTygibmF0aXZlLXN0cmluZy1yZXBsYWNlIiwiIi5yZXBsYWNlKSxkTz0vdC8uZXhlYyx5Tz1kTyx3Tz1pTygiIi5jaGFyQXQpLGJPPWlPKCIiLmluZGV4T2YpLHBPPWlPKCIiLnJlcGxhY2UpLGdPPWlPKCIiLnNsaWNlKSxtTz0oVmo9L2IqL2csZU8oZE8sRGo9L2EvLCJhIiksZU8oZE8sVmosImEiKSwwIT09RGoubGFzdEluZGV4fHwwIT09VmoubGFzdEluZGV4KSxTTz1mTy5vbixBTz12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07ZnVuY3Rpb24gak8ocil7cmV0dXJuIGZ1bmN0aW9uKHIpe2lmKEFycmF5LmlzQXJyYXkocikpcmV0dXJuIGtPKHIpfShyKXx8ZnVuY3Rpb24ocil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXJbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9clsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHIpfShyKXx8T08ocil8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gT08ocix0KXtpZihyKXtpZigic3RyaW5nIj09dHlwZW9mIHIpcmV0dXJuIGtPKHIsdCk7dmFyIG49e30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnIuY29uc3RydWN0b3ImJihuPXIuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbShyKToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2tPKHIsdCk6dm9pZCAwfX1mdW5jdGlvbiBrTyhyLHQpeyhudWxsPT10fHx0PnIubGVuZ3RoKSYmKHQ9ci5sZW5ndGgpO2Zvcih2YXIgbj0wLGU9QXJyYXkodCk7dD5uO24rKyllW25dPXJbbl07cmV0dXJuIGV9ZnVuY3Rpb24gRU8ocil7cmV0dXJuIFRPKHIubWFwKChmdW5jdGlvbihyKXt2YXIgdCxuPWZ1bmN0aW9uKHIpe2lmKEFycmF5LmlzQXJyYXkocikpcmV0dXJuIHJ9KHQ9cil8fGZ1bmN0aW9uKHIpe3ZhciB0PW51bGw9PXI/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmcltTeW1ib2wuaXRlcmF0b3JdfHxyWyJAQGl0ZXJhdG9yIl07aWYobnVsbCE9dCl7dmFyIG4sZSxpPVtdLG89ITAsdT0hMTt0cnl7Zm9yKHQ9dC5jYWxsKHIpOyEobz0obj10Lm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksMiE9PWkubGVuZ3RoKTtvPSEwKTt9Y2F0Y2gocil7dT0hMCxlPXJ9ZmluYWxseXt0cnl7b3x8bnVsbD09dC5xfHx0LnEoKX1maW5hbGx5e2lmKHUpdGhyb3cgZX19cmV0dXJuIGl9fSh0KXx8T08odCwyKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpLGU9blswXSxpPW5bMV07cmV0dXJuIEFycmF5KGUpLmZpbGwoaSwwLGUpfSkpKX1mdW5jdGlvbiBUTyhyKXtyZXR1cm4gci5yZWR1Y2UoKGZ1bmN0aW9uKHIsdCl7cmV0dXJuIHIuY29uY2F0KEFycmF5LmlzQXJyYXkodCk/VE8odCk6dCl9KSxbXSl9KG1PfHxBT3x8U098fHZPfHxoTykmJih5Tz1mdW5jdGlvbihyKXt2YXIgdCxuLGUsaSxvLHUsZixhPXRoaXMsYz1zTyhhKSxzPW9PKHIpLHY9Yy5yYXc7aWYodilyZXR1cm4gdi5sYXN0SW5kZXg9YS5sYXN0SW5kZXgsdD1lTyh5Tyx2LHMpLGEubGFzdEluZGV4PXYubGFzdEluZGV4LHQ7dmFyIGg9Yy5hbixsPVNPJiZhLnN0aWNreSxkPWVPKHVPLGEpLHk9YS5zb3VyY2Usdz0wLGI9cztpZihsJiYoZD1wTyhkLCJ5IiwiIiksLTE9PT1iTyhkLCJnIikmJihkKz0iZyIpLGI9Z08ocyxhLmxhc3RJbmRleCksYS5sYXN0SW5kZXg+MCYmKCFhLm11bHRpbGluZXx8YS5tdWx0aWxpbmUmJiJcbiIhPT13TyhzLGEubGFzdEluZGV4LTEpKSYmKHk9Iig/OiAiK3krIikiLGI9IiAiK2IsdysrKSxuPVJlZ0V4cCgiXig/OiIreSsiKSIsZCkpLEFPJiYobj1SZWdFeHAoIl4iK3krIiQoPyFcXHMpIixkKSksbU8mJihlPWEubGFzdEluZGV4KSxpPWVPKGRPLGw/bjphLGIpLGw/aT8oaS5pbnB1dD1nTyhpLmlucHV0LHcpLGlbMF09Z08oaVswXSx3KSxpLmluZGV4PWEubGFzdEluZGV4LGEubGFzdEluZGV4Kz1pWzBdLmxlbmd0aCk6YS5sYXN0SW5kZXg9MDptTyYmaSYmKGEubGFzdEluZGV4PWEuZ2xvYmFsP2kuaW5kZXgraVswXS5sZW5ndGg6ZSksQU8mJmkmJmkubGVuZ3RoPjEmJmVPKGxPLGlbMF0sbiwoZnVuY3Rpb24oKXtmb3Iobz0xO2FyZ3VtZW50cy5sZW5ndGgtMj5vO28rKyl2b2lkIDA9PT1hcmd1bWVudHNbb10mJihpW29dPXZvaWQgMCl9KSksaSYmaClmb3IoaS5hbj11PWNPKG51bGwpLG89MDtvPGgubGVuZ3RoO28rKyl1WyhmPWhbb10pWzBdXT1pW2ZbMV1dO3JldHVybiBpfSksQmUoe3RhcmdldDoiUmVnRXhwIixWOiEwLEc6Ly4vLmV4ZWMhPT15T30se2V4ZWM6eU99KTt2YXIgeE89KFlqPVswLDEsMiwzXSkuY29uY2F0LmFwcGx5KFlqLGpPKEVPKFtbMiw0XSxbMiw1XSxbNCw2XSxbNCw3XSxbOCw4XSxbOCw5XSxbMTYsMTBdLFsxNiwxMV0sWzMyLDEyXSxbMzIsMTNdLFs2NCwxNF0sWzY0LDE1XSxbMiwwXSxbMSwxNl0sWzEsMTddLFsyLDE4XSxbMiwxOV0sWzQsMjBdLFs0LDIxXSxbOCwyMl0sWzgsMjNdLFsxNiwyNF0sWzE2LDI1XSxbMzIsMjZdLFszMiwyN10sWzY0LDI4XSxbNjQsMjldXSkpKTtmdW5jdGlvbiBVTygpe3ZhciByPXRoaXM7ZnVuY3Rpb24gdChyLHQpe3ZhciBuPTA7ZG97bnw9MSZyLHI+Pj49MSxuPDw9MX13aGlsZSgtLXQ+MCk7cmV0dXJuIG4+Pj4xfXIuc249ZnVuY3Rpb24obil7dmFyIGUsaSxvLHU9ci52bixmPXIubG4uaG4sYT1yLmxuLmRuLGM9LTE7Zm9yKG4ueW49MCxuLnduPTU3MyxlPTA7YT5lO2UrKykwIT09dVsyKmVdPyhuLmJuWysrbi55bl09Yz1lLG4ucG5bZV09MCk6dVsyKmUrMV09MDtmb3IoOzI+bi55bjspdVsyKihvPW4uYm5bKytuLnluXT0yPmM/KytjOjApXT0xLG4ucG5bb109MCxuLmduLS0sZiYmKG4ubW4tPWZbMipvKzFdKTtmb3Ioci5Tbj1jLGU9TWF0aC5mbG9vcihuLnluLzIpO2U+PTE7ZS0tKW4uQW4odSxlKTtvPWE7ZG97ZT1uLmJuWzFdLG4uYm5bMV09bi5ibltuLnluLS1dLG4uQW4odSwxKSxpPW4uYm5bMV0sbi5iblstLW4ud25dPWUsbi5iblstLW4ud25dPWksdVsyKm9dPXVbMiplXSt1WzIqaV0sbi5wbltvXT1NYXRoLm1heChuLnBuW2VdLG4ucG5baV0pKzEsdVsyKmUrMV09dVsyKmkrMV09byxuLmJuWzFdPW8rKyxuLkFuKHUsMSl9d2hpbGUobi55bj49Mik7bi5iblstLW4ud25dPW4uYm5bMV0sZnVuY3Rpb24odCl7dmFyIG4sZSxpLG8sdSxmLGE9ci52bixjPXIubG4uaG4scz1yLmxuLmpuLHY9ci5sbi5PbixoPXIubG4ua24sbD0wO2ZvcihvPTA7MTU+PW87bysrKXQuRW5bb109MDtmb3IoYVsyKnQuYm5bdC53bl0rMV09MCxuPXQud24rMTs1NzM+bjtuKyspKG89YVsyKmFbMiooZT10LmJuW25dKSsxXSsxXSsxKT5oJiYobz1oLGwrKyksYVsyKmUrMV09byxlPnIuU258fCh0LkVuW29dKyssdT0wLHY+ZXx8KHU9c1tlLXZdKSxmPWFbMiplXSx0LmduKz1mKihvK3UpLGMmJih0Lm1uKz1mKihjWzIqZSsxXSt1KSkpO2lmKDAhPT1sKXtkb3tmb3Iobz1oLTE7MD09PXQuRW5bb107KW8tLTt0LkVuW29dLS0sdC5FbltvKzFdKz0yLHQuRW5baF0tLSxsLT0yfXdoaWxlKGw+MCk7Zm9yKG89aDswIT09bztvLS0pZm9yKGU9dC5FbltvXTswIT09ZTspKGk9dC5iblstLW5dKT5yLlNufHwoYVsyKmkrMV0hPW8mJih0LmduKz0oby1hWzIqaSsxXSkqYVsyKmldLGFbMippKzFdPW8pLGUtLSl9fShuKSxmdW5jdGlvbihyLG4sZSl7dmFyIGksbyx1LGY9W10sYT0wO2ZvcihpPTE7MTU+PWk7aSsrKWZbaV09YT1hK2VbaS0xXTw8MTtmb3Iobz0wO24+PW87bysrKTAhPT0odT1yWzIqbysxXSkmJihyWzIqb109dChmW3VdKyssdSkpfSh1LHIuU24sbi5Fbil9fWZ1bmN0aW9uIE1PKHIsdCxuLGUsaSl7dmFyIG89dGhpcztvLmhuPXIsby5qbj10LG8uT249bixvLmRuPWUsby5rbj1pfVVPLlRuPSh6aj1bMCwxLDIsMyw0LDUsNiw3XSkuY29uY2F0LmFwcGx5KHpqLGpPKEVPKFtbMiw4XSxbMiw5XSxbMiwxMF0sWzIsMTFdLFs0LDEyXSxbNCwxM10sWzQsMTRdLFs0LDE1XSxbOCwxNl0sWzgsMTddLFs4LDE4XSxbOCwxOV0sWzE2LDIwXSxbMTYsMjFdLFsxNiwyMl0sWzE2LDIzXSxbMzIsMjRdLFszMiwyNV0sWzMyLDI2XSxbMzEsMjddLFsxLDI4XV0pKSksVU8ueG49WzAsMSwyLDMsNCw1LDYsNyw4LDEwLDEyLDE0LDE2LDIwLDI0LDI4LDMyLDQwLDQ4LDU2LDY0LDgwLDk2LDExMiwxMjgsMTYwLDE5MiwyMjQsMF0sVU8uVW49WzAsMSwyLDMsNCw2LDgsMTIsMTYsMjQsMzIsNDgsNjQsOTYsMTI4LDE5MiwyNTYsMzg0LDUxMiw3NjgsMTAyNCwxNTM2LDIwNDgsMzA3Miw0MDk2LDYxNDQsODE5MiwxMjI4OCwxNjM4NCwyNDU3Nl0sVU8uTW49ZnVuY3Rpb24ocil7cmV0dXJuIDI1Nj5yP3hPW3JdOnhPWzI1Nisocj4+PjcpXX0sVU8uSW49WzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMF0sVU8uTG49WzAsMCwwLDAsMSwxLDIsMiwzLDMsNCw0LDUsNSw2LDYsNyw3LDgsOCw5LDksMTAsMTAsMTEsMTEsMTIsMTIsMTMsMTNdLFVPLlBuPVswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMyw3XSxVTy5fbj1bMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07dmFyIElPPUVPKFtbMTQ0LDhdLFsxMTIsOV0sWzI0LDddLFs4LDhdXSk7TU8uUm49VE8oWzEyLDE0MCw3NiwyMDQsNDQsMTcyLDEwOCwyMzYsMjgsMTU2LDkyLDIyMCw2MCwxODgsMTI0LDI1MiwyLDEzMCw2NiwxOTQsMzQsMTYyLDk4LDIyNiwxOCwxNDYsODIsMjEwLDUwLDE3OCwxMTQsMjQyLDEwLDEzOCw3NCwyMDIsNDIsMTcwLDEwNiwyMzQsMjYsMTU0LDkwLDIxOCw1OCwxODYsMTIyLDI1MCw2LDEzNCw3MCwxOTgsMzgsMTY2LDEwMiwyMzAsMjIsMTUwLDg2LDIxNCw1NCwxODIsMTE4LDI0NiwxNCwxNDIsNzgsMjA2LDQ2LDE3NCwxMTAsMjM4LDMwLDE1OCw5NCwyMjIsNjIsMTkwLDEyNiwyNTQsMSwxMjksNjUsMTkzLDMzLDE2MSw5NywyMjUsMTcsMTQ1LDgxLDIwOSw0OSwxNzcsMTEzLDI0MSw5LDEzNyw3MywyMDEsNDEsMTY5LDEwNSwyMzMsMjUsMTUzLDg5LDIxNyw1NywxODUsMTIxLDI0OSw1LDEzMyw2OSwxOTcsMzcsMTY1LDEwMSwyMjksMjEsMTQ5LDg1LDIxMyw1MywxODEsMTE3LDI0NSwxMywxNDEsNzcsMjA1LDQ1LDE3MywxMDksMjM3LDI5LDE1Nyw5MywyMjEsNjEsMTg5LDEyNSwyNTMsMTksMjc1LDE0Nyw0MDMsODMsMzM5LDIxMSw0NjcsNTEsMzA3LDE3OSw0MzUsMTE1LDM3MSwyNDMsNDk5LDExLDI2NywxMzksMzk1LDc1LDMzMSwyMDMsNDU5LDQzLDI5OSwxNzEsNDI3LDEwNywzNjMsMjM1LDQ5MSwyNywyODMsMTU1LDQxMSw5MSwzNDcsMjE5LDQ3NSw1OSwzMTUsMTg3LDQ0MywxMjMsMzc5LDI1MSw1MDcsNywyNjMsMTM1LDM5MSw3MSwzMjcsMTk5LDQ1NSwzOSwyOTUsMTY3LDQyMywxMDMsMzU5LDIzMSw0ODcsMjMsMjc5LDE1MSw0MDcsODcsMzQzLDIxNSw0NzEsNTUsMzExLDE4Myw0MzksMTE5LDM3NSwyNDcsNTAzLDE1LDI3MSwxNDMsMzk5LDc5LDMzNSwyMDcsNDYzLDQ3LDMwMywxNzUsNDMxLDExMSwzNjcsMjM5LDQ5NSwzMSwyODcsMTU5LDQxNSw5NSwzNTEsMjIzLDQ3OSw2MywzMTksMTkxLDQ0NywxMjcsMzgzLDI1NSw1MTEsMCw2NCwzMiw5NiwxNiw4MCw0OCwxMTIsOCw3Miw0MCwxMDQsMjQsODgsNTYsMTIwLDQsNjgsMzYsMTAwLDIwLDg0LDUyLDExNiwzLDEzMSw2NywxOTUsMzUsMTYzLDk5LDIyN10ubWFwKChmdW5jdGlvbihyLHQpe3JldHVybltyLElPW3RdXX0pKSk7dmFyIExPPUVPKFtbMzAsNV1dKTtmdW5jdGlvbiBQTyhyLHQsbixlLGkpe3ZhciBvPXRoaXM7by5Gbj1yLG8uTm49dCxvLkNuPW4sby5Cbj1lLG8uR249aX1NTy5Ebj1UTyhbMCwxNiw4LDI0LDQsMjAsMTIsMjgsMiwxOCwxMCwyNiw2LDIyLDE0LDMwLDEsMTcsOSwyNSw1LDIxLDEzLDI5LDMsMTksMTEsMjcsNywyM10ubWFwKChmdW5jdGlvbihyLHQpe3JldHVybltyLExPW3RdXX0pKSksTU8uVm49bmV3IE1PKE1PLlJuLFVPLkluLDI1NywyODYsMTUpLE1PLlluPW5ldyBNTyhNTy5EbixVTy5MbiwwLDMwLDE1KSxNTy56bj1uZXcgTU8obnVsbCxVTy5QbiwwLDE5LDcpO3ZhciBfTz1bbmV3IFBPKDAsMCwwLDAsMCksbmV3IFBPKDQsNCw4LDQsMSksbmV3IFBPKDQsNSwxNiw4LDEpLG5ldyBQTyg0LDYsMzIsMzIsMSksbmV3IFBPKDQsNCwxNiwxNiwyKSxuZXcgUE8oOCwxNiwzMiwzMiwyKSxuZXcgUE8oOCwxNiwxMjgsMTI4LDIpLG5ldyBQTyg4LDMyLDEyOCwyNTYsMiksbmV3IFBPKDMyLDEyOCwyNTgsMTAyNCwyKSxuZXcgUE8oMzIsMjU4LDI1OCw0MDk2LDIpXSxSTz1bIm5lZWQgZGljdGlvbmFyeSIsInN0cmVhbSBlbmQiLCIiLCIiLCJzdHJlYW0gZXJyb3IiLCJkYXRhIGVycm9yIiwiIiwiYnVmZmVyIGVycm9yIiwiIiwiIl07ZnVuY3Rpb24gRk8ocix0LG4sZSl7dmFyIGk9clsyKnRdLG89clsyKm5dO3JldHVybiBvPml8fGk9PW8mJmVbdF08PWVbbl19ZnVuY3Rpb24gTk8oKXt2YXIgcix0LG4sZSxpLG8sdSxmLGEsYyxzLHYsaCxsLGQseSx3LGIscCxnLG0sUyxBLGosTyxrLEUsVCx4LFUsTSxJLEwsUCxfLFIsRixOLEMsQj10aGlzLEc9bmV3IFVPLEQ9bmV3IFVPLFY9bmV3IFVPO2Z1bmN0aW9uIFkoKXt2YXIgcjtmb3Iocj0wOzI4Nj5yO3IrKylNWzIqcl09MDtmb3Iocj0wOzMwPnI7cisrKUlbMipyXT0wO2ZvcihyPTA7MTk+cjtyKyspTFsyKnJdPTA7TVs1MTJdPTEsQi5nbj1CLm1uPTAsXz1SPTB9ZnVuY3Rpb24geihyLHQpe3ZhciBuLGU9LTEsaT1yWzFdLG89MCx1PTcsZj00OzA9PT1pJiYodT0xMzgsZj0zKSxyWzIqKHQrMSkrMV09NjU1MzU7Zm9yKHZhciBhPTA7dD49YTthKyspbj1pLGk9clsyKihhKzEpKzFdLCsrbzx1JiZuPT1pfHwoZj5vP0xbMipuXSs9bzowIT09bj8obiE9ZSYmTFsyKm5dKyssTFszMl0rKyk6bz4xMD9MWzM2XSsrOkxbMzRdKyssbz0wLGU9biwwPT09aT8odT0xMzgsZj0zKTpuPT1pPyh1PTYsZj0zKToodT03LGY9NCkpfWZ1bmN0aW9uIFcocil7Qi5XbltCLnBlbmRpbmcrK109cn1mdW5jdGlvbiAkKHIpe1coMjU1JnIpLFcocj4+PjgmMjU1KX1mdW5jdGlvbiBIKHIsdCl7dmFyIG4sZT10O0M+MTYtZT8oJChOfD0obj1yKTw8QyY2NTUzNSksTj1uPj4+MTYtQyxDKz1lLTE2KTooTnw9cjw8QyY2NTUzNSxDKz1lKX1mdW5jdGlvbiBLKHIsdCl7dmFyIG49MipyO0goNjU1MzUmdFtuXSw2NTUzNSZ0W24rMV0pfWZ1bmN0aW9uIHEocix0KXt2YXIgbixlLGk9LTEsbz1yWzFdLHU9MCxmPTcsYT00O2ZvcigwPT09byYmKGY9MTM4LGE9Myksbj0wO3Q+PW47bisrKWlmKGU9byxvPXJbMioobisxKSsxXSwrK3U+PWZ8fGUhPW8pe2lmKGE+dSlkb3tLKGUsTCl9d2hpbGUoMCE9LS11KTtlbHNlIDAhPT1lPyhlIT1pJiYoSyhlLEwpLHUtLSksSygxNixMKSxIKHUtMywyKSk6dT4xMD8oSygxOCxMKSxIKHUtMTEsNykpOihLKDE3LEwpLEgodS0zLDMpKTt1PTAsaT1lLDA9PT1vPyhmPTEzOCxhPTMpOmU9PW8/KGY9NixhPTMpOihmPTcsYT00KX19ZnVuY3Rpb24gSigpezE2PT1DPygkKE4pLE49MCxDPTApOjg+Q3x8KFcoMjU1Jk4pLE4+Pj49OCxDLT04KX1mdW5jdGlvbiBYKHIsdCl7dmFyIG4sZSxpO2lmKEIuJG5bX109cixCLkhuW19dPTI1NSZ0LF8rKywwPT09cj9NWzIqdF0rKzooUisrLHItLSxNWzIqKFVPLlRuW3RdKzI1NisxKV0rKyxJWzIqVU8uTW4ocildKyspLDA9PSg4MTkxJl8pJiZFPjIpe2ZvcihuPTgqXyxlPW0tdyxpPTA7MzA+aTtpKyspbis9SVsyKmldKig1K1VPLkxuW2ldKTtpZihuPj4+PTMsTWF0aC5mbG9vcihfLzIpPlImJk1hdGguZmxvb3IoZS8yKT5uKXJldHVybiEwfXJldHVybiBfPT1QLTF9ZnVuY3Rpb24gUShyLHQpe3ZhciBuLGUsaSxvLHU9MDtpZigwIT09Xylkb3tuPUIuJG5bdV0sZT1CLkhuW3VdLHUrKywwPT09bj9LKGUscik6KEsoKGk9VU8uVG5bZV0pKzI1NisxLHIpLDAhPT0obz1VTy5JbltpXSkmJkgoZS09VU8ueG5baV0sbyksbi0tLEsoaT1VTy5NbihuKSx0KSwwIT09KG89VU8uTG5baV0pJiZIKG4tPVVPLlVuW2ldLG8pKX13aGlsZShfPnUpO0soMjU2LHIpLEY9cls1MTNdfWZ1bmN0aW9uIFooKXtDPjg/JChOKTpDPjAmJlcoMjU1Jk4pLE49MCxDPTB9ZnVuY3Rpb24gcnIocix0LG4pe0goMCsobj8xOjApLDMpLGZ1bmN0aW9uKHIsdCl7WigpLEY9OCwkKHQpLCQofnQpLEIuV24uc2V0KGYuc3ViYXJyYXkocixyK3QpLEIucGVuZGluZyksQi5wZW5kaW5nKz10fShyLHQpfWZ1bmN0aW9uIHRyKHQpeyhmdW5jdGlvbihyLHQsbil7dmFyIGUsaSxvPTA7RT4wPyhHLnNuKEIpLEQuc24oQiksbz1mdW5jdGlvbigpe3ZhciByO2Zvcih6KE0sRy5TbikseihJLEQuU24pLFYuc24oQikscj0xODtyPj0zJiYwPT09TFsyKlVPLl9uW3JdKzFdO3ItLSk7cmV0dXJuIEIuZ24rPTE0KzMqKHIrMSkscn0oKSxlPUIuZ24rMys3Pj4+MywoaT1CLm1uKzMrNz4+PjMpPmV8fChlPWkpKTplPWk9dCs1LHQrND5lfHwtMT09cj9pPT1lPyhIKDIrKG4/MTowKSwzKSxRKE1PLlJuLE1PLkRuKSk6KEgoNCsobj8xOjApLDMpLGZ1bmN0aW9uKHIsdCxuKXt2YXIgZTtmb3IoSChyLTI1Nyw1KSxIKHQtMSw1KSxIKG4tNCw0KSxlPTA7bj5lO2UrKylIKExbMipVTy5fbltlXSsxXSwzKTtxKE0sci0xKSxxKEksdC0xKX0oRy5TbisxLEQuU24rMSxvKzEpLFEoTSxJKSk6cnIocix0LG4pLFkoKSxuJiZaKCl9KSgwPnc/LTE6dyxtLXcsdCksdz1tLHIuS24oKX1mdW5jdGlvbiBucigpe3ZhciB0LG4sZSxvO2Rve2lmKDA9PShvPWEtQS1tKSYmMD09PW0mJjA9PT1BKW89aTtlbHNlIGlmKC0xPT1vKW8tLTtlbHNlIGlmKG0+PWkraS0yNjIpe2Yuc2V0KGYuc3ViYXJyYXkoaSxpK2kpLDApLFMtPWksbS09aSx3LT1pLGU9dD1oO2Rve249NjU1MzUmc1stLWVdLHNbZV09aT5uPzA6bi1pfXdoaWxlKDAhPS0tdCk7ZT10PWk7ZG97bj02NTUzNSZjWy0tZV0sY1tlXT1pPm4/MDpuLWl9d2hpbGUoMCE9LS10KTtvKz1pfWlmKDA9PT1yLnFuKXJldHVybjt0PXIuSm4oZixtK0EsbyksMz4oQSs9dCl8fCh2PSgodj0yNTUmZlttXSk8PHleMjU1JmZbbSsxXSkmZCl9d2hpbGUoMjYyPkEmJjAhPT1yLnFuKX1mdW5jdGlvbiBlcihyKXt2YXIgdCxuLGU9TyxvPW0sYT1qLHM9bT5pLTI2Mj9tLShpLTI2Mik6MCx2PVUsaD11LGw9bSsyNTgsZD1mW28rYS0xXSx5PWZbbythXTt4Pmp8fChlPj49Miksdj5BJiYodj1BKTtkb3tpZihmWyh0PXIpK2FdPT15JiZmW3QrYS0xXT09ZCYmZlt0XT09ZltvXSYmZlsrK3RdPT1mW28rMV0pe28rPTIsdCsrO2Rve313aGlsZShmWysrb109PWZbKyt0XSYmZlsrK29dPT1mWysrdF0mJmZbKytvXT09ZlsrK3RdJiZmWysrb109PWZbKyt0XSYmZlsrK29dPT1mWysrdF0mJmZbKytvXT09ZlsrK3RdJiZmWysrb109PWZbKyt0XSYmZlsrK29dPT1mWysrdF0mJmw+byk7aWYobj0yNTgtKGwtbyksbz1sLTI1OCxuPmEpe2lmKFM9cixhPW4sbj49dilicmVhaztkPWZbbythLTFdLHk9ZltvK2FdfX19d2hpbGUoKHI9NjU1MzUmY1tyJmhdKT5zJiYwIT0tLWUpO3JldHVybiBhPkE/QTphfUIucG49W10sQi5Fbj1bXSxCLmJuPVtdLE09W10sST1bXSxMPVtdLEIuQW49ZnVuY3Rpb24ocix0KXtmb3IodmFyIG49Qi5ibixlPW5bdF0saT10PDwxO2k8PUIueW4mJihpPEIueW4mJkZPKHIsbltpKzFdLG5baV0sQi5wbikmJmkrKywhRk8ocixlLG5baV0sQi5wbikpOyluW3RdPW5baV0sdD1pLGk8PD0xO25bdF09ZX0sQi5Ybj1mdW5jdGlvbihyLHAsUyxfLFIseil7cmV0dXJuIF98fChfPTgpLFJ8fChSPTgpLHp8fCh6PTApLHIuUW49bnVsbCwtMT09cCYmKHA9NiksMT5SfHxSPjl8fDghPV98fDk+U3x8Uz4xNXx8MD5wfHxwPjl8fDA+enx8ej4yPy0yOihyLlpuPUIsdT0oaT0xPDwobz1TKSktMSxkPShoPTE8PChsPVIrNykpLTEseT1NYXRoLmZsb29yKChsKzMtMSkvMyksZj1uZXcgVWludDhBcnJheSgyKmkpLGM9W10scz1bXSxQPTE8PFIrNixCLlduPW5ldyBVaW50OEFycmF5KDQqUCksbj00KlAsQi4kbj1uZXcgVWludDE2QXJyYXkoUCksQi5Ibj1uZXcgVWludDhBcnJheShQKSxFPXAsVD16LGZ1bmN0aW9uKHIpe3JldHVybiByLnJlPXIudGU9MCxyLlFuPW51bGwsQi5wZW5kaW5nPTAsQi5uZT0wLHQ9MTEzLGU9MCxHLnZuPU0sRy5sbj1NTy5WbixELnZuPUksRC5sbj1NTy5ZbixWLnZuPUwsVi5sbj1NTy56bixOPTAsQz0wLEY9OCxZKCksZnVuY3Rpb24oKXthPTIqaSxzW2gtMV09MDtmb3IodmFyIHI9MDtoLTE+cjtyKyspc1tyXT0wO2s9X09bRV0uTm4seD1fT1tFXS5GbixVPV9PW0VdLkNuLE89X09bRV0uQm4sbT0wLHc9MCxBPTAsYj1qPTIsZz0wLHY9MH0oKSwwfShyKSl9LEIuZWU9ZnVuY3Rpb24oKXtyZXR1cm4gNDIhPXQmJjExMyE9dCYmNjY2IT10Py0yOihCLkhuPW51bGwsQi4kbj1udWxsLEIuV249bnVsbCxzPW51bGwsYz1udWxsLGY9bnVsbCxCLlpuPW51bGwsMTEzPT10Py0zOjApfSxCLmllPWZ1bmN0aW9uKHIsdCxuKXt2YXIgZT0wO3JldHVybi0xPT10JiYodD02KSwwPnR8fHQ+OXx8MD5ufHxuPjI/LTI6KF9PW0VdLkduIT1fT1t0XS5HbiYmMCE9PXIucmUmJihlPXIubm4oMSkpLEUhPXQmJihrPV9PW0U9dF0uTm4seD1fT1tFXS5GbixVPV9PW0VdLkNuLE89X09bRV0uQm4pLFQ9bixlKX0sQi5vZT1mdW5jdGlvbihyLG4sZSl7dmFyIG8sYT1lLGg9MDtpZighbnx8NDIhPXQpcmV0dXJuLTI7aWYoMz5hKXJldHVybiAwO2ZvcihhPmktMjYyJiYoaD1lLShhPWktMjYyKSksZi5zZXQobi5zdWJhcnJheShoLGgrYSksMCksbT1hLHc9YSx2PSgodj0yNTUmZlswXSk8PHleMjU1JmZbMV0pJmQsbz0wO2EtMz49bztvKyspdj0odjw8eV4yNTUmZltvKzJdKSZkLGNbbyZ1XT1zW3ZdLHNbdl09bztyZXR1cm4gMH0sQi5ubj1mdW5jdGlvbihhLGwpe3ZhciBPLHgsVSxNLEksTDtpZihsPjR8fDA+bClyZXR1cm4tMjtpZighYS51ZXx8IWEuZmUmJjAhPT1hLnFufHw2NjY9PXQmJjQhPWwpcmV0dXJuIGEuUW49Uk9bNF0sLTI7aWYoMD09PWEuYWUpcmV0dXJuIGEuUW49Uk9bN10sLTU7aWYocj1hLE09ZSxlPWwsNDI9PXQmJih4PTgrKG8tODw8NCk8PDgsKFU9KEUtMSYyNTUpPj4xKT4zJiYoVT0zKSx4fD1VPDw2LDAhPT1tJiYoeHw9MzIpLHQ9MTEzLFcoKEw9eCs9MzEteCUzMSk+PjgmMjU1KSxXKDI1NSZMKSksMCE9PUIucGVuZGluZyl7aWYoci5LbigpLDA9PT1yLmFlKXJldHVybiBlPS0xLDB9ZWxzZSBpZigwPT09ci5xbiYmTT49bCYmNCE9bClyZXR1cm4gci5Rbj1ST1s3XSwtNTtpZig2NjY9PXQmJjAhPT1yLnFuKXJldHVybiBhLlFuPVJPWzddLC01O2lmKDAhPT1yLnFufHwwIT09QXx8MCE9bCYmNjY2IT10KXtzd2l0Y2goST0tMSxfT1tFXS5Hbil7Y2FzZSAwOkk9ZnVuY3Rpb24odCl7dmFyIGUsbz02NTUzNTtmb3Iobz5uLTUmJihvPW4tNSk7Oyl7aWYoMT49QSl7aWYobnIoKSwwPT09QSYmMD09dClyZXR1cm4gMDtpZigwPT09QSlicmVha31pZihtKz1BLEE9MCxlPXcrbywoMD09PW18fG0+PWUpJiYoQT1tLWUsbT1lLHRyKCExKSwwPT09ci5hZSkpcmV0dXJuIDA7aWYobS13Pj1pLTI2MiYmKHRyKCExKSwwPT09ci5hZSkpcmV0dXJuIDB9cmV0dXJuIHRyKDQ9PXQpLDA9PT1yLmFlPzQ9PXQ/MjowOjQ9PXQ/MzoxfShsKTticmVhaztjYXNlIDE6ST1mdW5jdGlvbih0KXtmb3IodmFyIG4sZT0wOzspe2lmKDI2Mj5BKXtpZihucigpLDI2Mj5BJiYwPT10KXJldHVybiAwO2lmKDA9PT1BKWJyZWFrfWlmKDM+QXx8KHY9KHY8PHleMjU1JmZbbSsyXSkmZCxlPTY1NTM1JnNbdl0sY1ttJnVdPXNbdl0sc1t2XT1tKSwwPT09ZXx8KG0tZSY2NTUzNSk+aS0yNjJ8fDIhPVQmJihiPWVyKGUpKSwzPmIpbj1YKDAsMjU1JmZbbV0pLEEtLSxtKys7ZWxzZSBpZihuPVgobS1TLGItMyksQS09YixiPmt8fDM+QSltKz1iLGI9MCx2PSgodj0yNTUmZlttXSk8PHleMjU1JmZbbSsxXSkmZDtlbHNle2ItLTtkb3ttKyssdj0odjw8eV4yNTUmZlttKzJdKSZkLGU9NjU1MzUmc1t2XSxjW20mdV09c1t2XSxzW3ZdPW19d2hpbGUoMCE9LS1iKTttKyt9aWYobiYmKHRyKCExKSwwPT09ci5hZSkpcmV0dXJuIDB9cmV0dXJuIHRyKDQ9PXQpLDA9PT1yLmFlPzQ9PXQ/MjowOjQ9PXQ/MzoxfShsKTticmVhaztjYXNlIDI6ST1mdW5jdGlvbih0KXtmb3IodmFyIG4sZSxvPTA7Oyl7aWYoMjYyPkEpe2lmKG5yKCksMjYyPkEmJjA9PXQpcmV0dXJuIDA7aWYoMD09PUEpYnJlYWt9aWYoMz5BfHwodj0odjw8eV4yNTUmZlttKzJdKSZkLG89NjU1MzUmc1t2XSxjW20mdV09c1t2XSxzW3ZdPW0pLGo9YixwPVMsYj0yLDAhPT1vJiZrPmomJmktMjYyPj0obS1vJjY1NTM1KSYmKDIhPVQmJihiPWVyKG8pKSw1Pj1iJiYoMT09VHx8Mz09YiYmbS1TPjQwOTYpJiYoYj0yKSksMz5qfHxiPmopaWYoMCE9PWcpe2lmKChuPVgoMCwyNTUmZlttLTFdKSkmJnRyKCExKSxtKyssQS0tLDA9PT1yLmFlKXJldHVybiAwfWVsc2UgZz0xLG0rKyxBLS07ZWxzZXtlPW0rQS0zLG49WChtLTEtcCxqLTMpLEEtPWotMSxqLT0yO2RveysrbT5lfHwodj0odjw8eV4yNTUmZlttKzJdKSZkLG89NjU1MzUmc1t2XSxjW20mdV09c1t2XSxzW3ZdPW0pfXdoaWxlKDAhPS0taik7aWYoZz0wLGI9MixtKyssbiYmKHRyKCExKSwwPT09ci5hZSkpcmV0dXJuIDB9fXJldHVybiAwIT09ZyYmKG49WCgwLDI1NSZmW20tMV0pLGc9MCksdHIoND09dCksMD09PXIuYWU/ND09dD8yOjA6ND09dD8zOjF9KGwpfWlmKDIhPUkmJjMhPUl8fCh0PTY2NiksMD09SXx8Mj09SSlyZXR1cm4gMD09PXIuYWUmJihlPS0xKSwwO2lmKDE9PUkpe2lmKDE9PWwpSCgyLDMpLEsoMjU2LE1PLlJuKSxKKCksOT4xK0YrMTAtQyYmKEgoMiwzKSxLKDI1NixNTy5SbiksSigpKSxGPTc7ZWxzZSBpZihycigwLDAsITEpLDM9PWwpZm9yKE89MDtoPk87TysrKXNbT109MDtpZihyLktuKCksMD09PXIuYWUpcmV0dXJuIGU9LTEsMH19cmV0dXJuIDQhPWw/MDoxfX1mdW5jdGlvbiBDTygpe3ZhciByPXRoaXM7ci5jZT0wLHIuc2U9MCxyLnFuPTAsci5yZT0wLHIuYWU9MCxyLnRlPTB9ZnVuY3Rpb24gQk8ocil7dmFyIHQsbj1uZXcgQ08sZT0odD1yJiZyLlF0P3IuUXQ6NjU1MzYpKzUqKE1hdGguZmxvb3IodC8xNjM4MykrMSksaT1uZXcgVWludDhBcnJheShlKSxvPXI/ci5sZXZlbDotMTt2b2lkIDA9PT1vJiYobz0tMSksbi5YbihvKSxuLnVlPWksdGhpcy5hcHBlbmQ9ZnVuY3Rpb24ocix0KXt2YXIgbyx1PTAsZj0wLGE9MCxjPVtdO2lmKHIubGVuZ3RoKXtuLmNlPTAsbi5mZT1yLG4ucW49ci5sZW5ndGg7ZG97aWYobi5zZT0wLG4uYWU9ZSwwIT1uLm5uKDApKXRocm93IEVycm9yKCJkZWZsYXRpbmc6ICIrbi5Rbik7bi5zZSYmKG4uc2U9PWU/Yy5wdXNoKG5ldyBVaW50OEFycmF5KGkpKTpjLnB1c2goaS5zbGljZSgwLG4uc2UpKSksYSs9bi5zZSx0JiZuLmNlPjAmJm4uY2UhPXUmJih0KG4uY2UpLHU9bi5jZSl9d2hpbGUobi5xbj4wfHwwPT09bi5hZSk7cmV0dXJuIGMubGVuZ3RoPjE/KG89bmV3IFVpbnQ4QXJyYXkoYSksYy5mb3JFYWNoKChmdW5jdGlvbihyKXtvLnNldChyLGYpLGYrPXIubGVuZ3RofSkpKTpvPWNbMF18fG5ldyBVaW50OEFycmF5KDApLG99fSx0aGlzLmZsdXNoPWZ1bmN0aW9uKCl7dmFyIHIsdCxvPTAsdT0wLGY9W107ZG97aWYobi5zZT0wLG4uYWU9ZSwxIT0ocj1uLm5uKDQpKSYmMCE9cil0aHJvdyBFcnJvcigiZGVmbGF0aW5nOiAiK24uUW4pO2Utbi5hZT4wJiZmLnB1c2goaS5zbGljZSgwLG4uc2UpKSx1Kz1uLnNlfXdoaWxlKG4ucW4+MHx8MD09PW4uYWUpO3JldHVybiBuLmVlKCksdD1uZXcgVWludDhBcnJheSh1KSxmLmZvckVhY2goKGZ1bmN0aW9uKHIpe3Quc2V0KHIsbyksbys9ci5sZW5ndGh9KSksdH19Q08ucHJvdG90eXBlPXtYbjpmdW5jdGlvbihyLHQpe3ZhciBuPXRoaXM7cmV0dXJuIG4uWm49bmV3IE5PLHR8fCh0PTE1KSxuLlpuLlhuKG4scix0KX0sbm46ZnVuY3Rpb24ocil7dmFyIHQ9dGhpcztyZXR1cm4gdC5abj90LlpuLm5uKHQscik6LTJ9LGVlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcztpZighci5abilyZXR1cm4tMjt2YXIgdD1yLlpuLmVlKCk7cmV0dXJuIHIuWm49bnVsbCx0fSxpZTpmdW5jdGlvbihyLHQpe3ZhciBuPXRoaXM7cmV0dXJuIG4uWm4/bi5abi5pZShuLHIsdCk6LTJ9LG9lOmZ1bmN0aW9uKHIsdCl7dmFyIG49dGhpcztyZXR1cm4gbi5abj9uLlpuLm9lKG4scix0KTotMn0sSm46ZnVuY3Rpb24ocix0LG4pe3ZhciBlPXRoaXMsaT1lLnFuO3JldHVybiBpPm4mJihpPW4pLDA9PT1pPzA6KGUucW4tPWksci5zZXQoZS5mZS5zdWJhcnJheShlLmNlLGUuY2UraSksdCksZS5jZSs9aSxlLnJlKz1pLGkpfSxLbjpmdW5jdGlvbigpe3ZhciByPXRoaXMsdD1yLlpuLnBlbmRpbmc7dD5yLmFlJiYodD1yLmFlKSwwIT09dCYmKHIudWUuc2V0KHIuWm4uV24uc3ViYXJyYXkoci5abi5uZSxyLlpuLm5lK3QpLHIuc2UpLHIuc2UrPXQsci5abi5uZSs9dCxyLnRlKz10LHIuYWUtPXQsci5abi5wZW5kaW5nLT10LDA9PT1yLlpuLnBlbmRpbmcmJihyLlpuLm5lPTApKX19LCgwLHNhLmV4cG9ydHMpKCJJbnQzMiIsKGZ1bmN0aW9uKHIpe3JldHVybiBmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHIodGhpcyx0LG4sZSl9fSkpO3ZhciBHTz1bMCwxLDMsNywxNSwzMSw2MywxMjcsMjU1LDUxMSwxMDIzLDIwNDcsNDA5NSw4MTkxLDE2MzgzLDMyNzY3LDY1NTM1XSxETz1bOTYsNywyNTYsMCw4LDgwLDAsOCwxNiw4NCw4LDExNSw4Miw3LDMxLDAsOCwxMTIsMCw4LDQ4LDAsOSwxOTIsODAsNywxMCwwLDgsOTYsMCw4LDMyLDAsOSwxNjAsMCw4LDAsMCw4LDEyOCwwLDgsNjQsMCw5LDIyNCw4MCw3LDYsMCw4LDg4LDAsOCwyNCwwLDksMTQ0LDgzLDcsNTksMCw4LDEyMCwwLDgsNTYsMCw5LDIwOCw4MSw3LDE3LDAsOCwxMDQsMCw4LDQwLDAsOSwxNzYsMCw4LDgsMCw4LDEzNiwwLDgsNzIsMCw5LDI0MCw4MCw3LDQsMCw4LDg0LDAsOCwyMCw4NSw4LDIyNyw4Myw3LDQzLDAsOCwxMTYsMCw4LDUyLDAsOSwyMDAsODEsNywxMywwLDgsMTAwLDAsOCwzNiwwLDksMTY4LDAsOCw0LDAsOCwxMzIsMCw4LDY4LDAsOSwyMzIsODAsNyw4LDAsOCw5MiwwLDgsMjgsMCw5LDE1Miw4NCw3LDgzLDAsOCwxMjQsMCw4LDYwLDAsOSwyMTYsODIsNywyMywwLDgsMTA4LDAsOCw0NCwwLDksMTg0LDAsOCwxMiwwLDgsMTQwLDAsOCw3NiwwLDksMjQ4LDgwLDcsMywwLDgsODIsMCw4LDE4LDg1LDgsMTYzLDgzLDcsMzUsMCw4LDExNCwwLDgsNTAsMCw5LDE5Niw4MSw3LDExLDAsOCw5OCwwLDgsMzQsMCw5LDE2NCwwLDgsMiwwLDgsMTMwLDAsOCw2NiwwLDksMjI4LDgwLDcsNywwLDgsOTAsMCw4LDI2LDAsOSwxNDgsODQsNyw2NywwLDgsMTIyLDAsOCw1OCwwLDksMjEyLDgyLDcsMTksMCw4LDEwNiwwLDgsNDIsMCw5LDE4MCwwLDgsMTAsMCw4LDEzOCwwLDgsNzQsMCw5LDI0NCw4MCw3LDUsMCw4LDg2LDAsOCwyMiwxOTIsOCwwLDgzLDcsNTEsMCw4LDExOCwwLDgsNTQsMCw5LDIwNCw4MSw3LDE1LDAsOCwxMDIsMCw4LDM4LDAsOSwxNzIsMCw4LDYsMCw4LDEzNCwwLDgsNzAsMCw5LDIzNiw4MCw3LDksMCw4LDk0LDAsOCwzMCwwLDksMTU2LDg0LDcsOTksMCw4LDEyNiwwLDgsNjIsMCw5LDIyMCw4Miw3LDI3LDAsOCwxMTAsMCw4LDQ2LDAsOSwxODgsMCw4LDE0LDAsOCwxNDIsMCw4LDc4LDAsOSwyNTIsOTYsNywyNTYsMCw4LDgxLDAsOCwxNyw4NSw4LDEzMSw4Miw3LDMxLDAsOCwxMTMsMCw4LDQ5LDAsOSwxOTQsODAsNywxMCwwLDgsOTcsMCw4LDMzLDAsOSwxNjIsMCw4LDEsMCw4LDEyOSwwLDgsNjUsMCw5LDIyNiw4MCw3LDYsMCw4LDg5LDAsOCwyNSwwLDksMTQ2LDgzLDcsNTksMCw4LDEyMSwwLDgsNTcsMCw5LDIxMCw4MSw3LDE3LDAsOCwxMDUsMCw4LDQxLDAsOSwxNzgsMCw4LDksMCw4LDEzNywwLDgsNzMsMCw5LDI0Miw4MCw3LDQsMCw4LDg1LDAsOCwyMSw4MCw4LDI1OCw4Myw3LDQzLDAsOCwxMTcsMCw4LDUzLDAsOSwyMDIsODEsNywxMywwLDgsMTAxLDAsOCwzNywwLDksMTcwLDAsOCw1LDAsOCwxMzMsMCw4LDY5LDAsOSwyMzQsODAsNyw4LDAsOCw5MywwLDgsMjksMCw5LDE1NCw4NCw3LDgzLDAsOCwxMjUsMCw4LDYxLDAsOSwyMTgsODIsNywyMywwLDgsMTA5LDAsOCw0NSwwLDksMTg2LDAsOCwxMywwLDgsMTQxLDAsOCw3NywwLDksMjUwLDgwLDcsMywwLDgsODMsMCw4LDE5LDg1LDgsMTk1LDgzLDcsMzUsMCw4LDExNSwwLDgsNTEsMCw5LDE5OCw4MSw3LDExLDAsOCw5OSwwLDgsMzUsMCw5LDE2NiwwLDgsMywwLDgsMTMxLDAsOCw2NywwLDksMjMwLDgwLDcsNywwLDgsOTEsMCw4LDI3LDAsOSwxNTAsODQsNyw2NywwLDgsMTIzLDAsOCw1OSwwLDksMjE0LDgyLDcsMTksMCw4LDEwNywwLDgsNDMsMCw5LDE4MiwwLDgsMTEsMCw4LDEzOSwwLDgsNzUsMCw5LDI0Niw4MCw3LDUsMCw4LDg3LDAsOCwyMywxOTIsOCwwLDgzLDcsNTEsMCw4LDExOSwwLDgsNTUsMCw5LDIwNiw4MSw3LDE1LDAsOCwxMDMsMCw4LDM5LDAsOSwxNzQsMCw4LDcsMCw4LDEzNSwwLDgsNzEsMCw5LDIzOCw4MCw3LDksMCw4LDk1LDAsOCwzMSwwLDksMTU4LDg0LDcsOTksMCw4LDEyNywwLDgsNjMsMCw5LDIyMiw4Miw3LDI3LDAsOCwxMTEsMCw4LDQ3LDAsOSwxOTAsMCw4LDE1LDAsOCwxNDMsMCw4LDc5LDAsOSwyNTQsOTYsNywyNTYsMCw4LDgwLDAsOCwxNiw4NCw4LDExNSw4Miw3LDMxLDAsOCwxMTIsMCw4LDQ4LDAsOSwxOTMsODAsNywxMCwwLDgsOTYsMCw4LDMyLDAsOSwxNjEsMCw4LDAsMCw4LDEyOCwwLDgsNjQsMCw5LDIyNSw4MCw3LDYsMCw4LDg4LDAsOCwyNCwwLDksMTQ1LDgzLDcsNTksMCw4LDEyMCwwLDgsNTYsMCw5LDIwOSw4MSw3LDE3LDAsOCwxMDQsMCw4LDQwLDAsOSwxNzcsMCw4LDgsMCw4LDEzNiwwLDgsNzIsMCw5LDI0MSw4MCw3LDQsMCw4LDg0LDAsOCwyMCw4NSw4LDIyNyw4Myw3LDQzLDAsOCwxMTYsMCw4LDUyLDAsOSwyMDEsODEsNywxMywwLDgsMTAwLDAsOCwzNiwwLDksMTY5LDAsOCw0LDAsOCwxMzIsMCw4LDY4LDAsOSwyMzMsODAsNyw4LDAsOCw5MiwwLDgsMjgsMCw5LDE1Myw4NCw3LDgzLDAsOCwxMjQsMCw4LDYwLDAsOSwyMTcsODIsNywyMywwLDgsMTA4LDAsOCw0NCwwLDksMTg1LDAsOCwxMiwwLDgsMTQwLDAsOCw3NiwwLDksMjQ5LDgwLDcsMywwLDgsODIsMCw4LDE4LDg1LDgsMTYzLDgzLDcsMzUsMCw4LDExNCwwLDgsNTAsMCw5LDE5Nyw4MSw3LDExLDAsOCw5OCwwLDgsMzQsMCw5LDE2NSwwLDgsMiwwLDgsMTMwLDAsOCw2NiwwLDksMjI5LDgwLDcsNywwLDgsOTAsMCw4LDI2LDAsOSwxNDksODQsNyw2NywwLDgsMTIyLDAsOCw1OCwwLDksMjEzLDgyLDcsMTksMCw4LDEwNiwwLDgsNDIsMCw5LDE4MSwwLDgsMTAsMCw4LDEzOCwwLDgsNzQsMCw5LDI0NSw4MCw3LDUsMCw4LDg2LDAsOCwyMiwxOTIsOCwwLDgzLDcsNTEsMCw4LDExOCwwLDgsNTQsMCw5LDIwNSw4MSw3LDE1LDAsOCwxMDIsMCw4LDM4LDAsOSwxNzMsMCw4LDYsMCw4LDEzNCwwLDgsNzAsMCw5LDIzNyw4MCw3LDksMCw4LDk0LDAsOCwzMCwwLDksMTU3LDg0LDcsOTksMCw4LDEyNiwwLDgsNjIsMCw5LDIyMSw4Miw3LDI3LDAsOCwxMTAsMCw4LDQ2LDAsOSwxODksMCw4LDE0LDAsOCwxNDIsMCw4LDc4LDAsOSwyNTMsOTYsNywyNTYsMCw4LDgxLDAsOCwxNyw4NSw4LDEzMSw4Miw3LDMxLDAsOCwxMTMsMCw4LDQ5LDAsOSwxOTUsODAsNywxMCwwLDgsOTcsMCw4LDMzLDAsOSwxNjMsMCw4LDEsMCw4LDEyOSwwLDgsNjUsMCw5LDIyNyw4MCw3LDYsMCw4LDg5LDAsOCwyNSwwLDksMTQ3LDgzLDcsNTksMCw4LDEyMSwwLDgsNTcsMCw5LDIxMSw4MSw3LDE3LDAsOCwxMDUsMCw4LDQxLDAsOSwxNzksMCw4LDksMCw4LDEzNywwLDgsNzMsMCw5LDI0Myw4MCw3LDQsMCw4LDg1LDAsOCwyMSw4MCw4LDI1OCw4Myw3LDQzLDAsOCwxMTcsMCw4LDUzLDAsOSwyMDMsODEsNywxMywwLDgsMTAxLDAsOCwzNywwLDksMTcxLDAsOCw1LDAsOCwxMzMsMCw4LDY5LDAsOSwyMzUsODAsNyw4LDAsOCw5MywwLDgsMjksMCw5LDE1NSw4NCw3LDgzLDAsOCwxMjUsMCw4LDYxLDAsOSwyMTksODIsNywyMywwLDgsMTA5LDAsOCw0NSwwLDksMTg3LDAsOCwxMywwLDgsMTQxLDAsOCw3NywwLDksMjUxLDgwLDcsMywwLDgsODMsMCw4LDE5LDg1LDgsMTk1LDgzLDcsMzUsMCw4LDExNSwwLDgsNTEsMCw5LDE5OSw4MSw3LDExLDAsOCw5OSwwLDgsMzUsMCw5LDE2NywwLDgsMywwLDgsMTMxLDAsOCw2NywwLDksMjMxLDgwLDcsNywwLDgsOTEsMCw4LDI3LDAsOSwxNTEsODQsNyw2NywwLDgsMTIzLDAsOCw1OSwwLDksMjE1LDgyLDcsMTksMCw4LDEwNywwLDgsNDMsMCw5LDE4MywwLDgsMTEsMCw4LDEzOSwwLDgsNzUsMCw5LDI0Nyw4MCw3LDUsMCw4LDg3LDAsOCwyMywxOTIsOCwwLDgzLDcsNTEsMCw4LDExOSwwLDgsNTUsMCw5LDIwNyw4MSw3LDE1LDAsOCwxMDMsMCw4LDM5LDAsOSwxNzUsMCw4LDcsMCw4LDEzNSwwLDgsNzEsMCw5LDIzOSw4MCw3LDksMCw4LDk1LDAsOCwzMSwwLDksMTU5LDg0LDcsOTksMCw4LDEyNywwLDgsNjMsMCw5LDIyMyw4Miw3LDI3LDAsOCwxMTEsMCw4LDQ3LDAsOSwxOTEsMCw4LDE1LDAsOCwxNDMsMCw4LDc5LDAsOSwyNTVdLFZPPVs4MCw1LDEsODcsNSwyNTcsODMsNSwxNyw5MSw1LDQwOTcsODEsNSw1LDg5LDUsMTAyNSw4NSw1LDY1LDkzLDUsMTYzODUsODAsNSwzLDg4LDUsNTEzLDg0LDUsMzMsOTIsNSw4MTkzLDgyLDUsOSw5MCw1LDIwNDksODYsNSwxMjksMTkyLDUsMjQ1NzcsODAsNSwyLDg3LDUsMzg1LDgzLDUsMjUsOTEsNSw2MTQ1LDgxLDUsNyw4OSw1LDE1MzcsODUsNSw5Nyw5Myw1LDI0NTc3LDgwLDUsNCw4OCw1LDc2OSw4NCw1LDQ5LDkyLDUsMTIyODksODIsNSwxMyw5MCw1LDMwNzMsODYsNSwxOTMsMTkyLDUsMjQ1NzddLFlPPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDAsMF0sek89WzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMCwxMTIsMTEyXSxXTz1bMSwyLDMsNCw1LDcsOSwxMywxNywyNSwzMyw0OSw2NSw5NywxMjksMTkzLDI1NywzODUsNTEzLDc2OSwxMDI1LDE1MzcsMjA0OSwzMDczLDQwOTcsNjE0NSw4MTkzLDEyMjg5LDE2Mzg1LDI0NTc3XSwkTz1bMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM107ZnVuY3Rpb24gSE8oKXt2YXIgcix0LG4sZSxpLG87ZnVuY3Rpb24gdShyLHQsdSxmLGEsYyxzLHYsaCxsLGQpe3ZhciB5LHcsYixwLGcsbSxTLEEsaixPLGssRSxULHgsVTtPPTAsZz11O2Rve25bclt0K09dXSsrLE8rKyxnLS19d2hpbGUoMCE9PWcpO2lmKG5bMF09PXUpcmV0dXJuIHNbMF09LTEsdlswXT0wLDA7Zm9yKEE9dlswXSxtPTE7MTU+PW0mJjA9PT1uW21dO20rKyk7Zm9yKFM9bSxtPkEmJihBPW0pLGc9MTU7MCE9PWcmJjA9PT1uW2ddO2ctLSk7Zm9yKGI9ZyxBPmcmJihBPWcpLHZbMF09QSx4PTE8PG07Zz5tO20rKyx4PDw9MSlpZigwPih4LT1uW21dKSlyZXR1cm4tMztpZigwPih4LT1uW2ddKSlyZXR1cm4tMztmb3IobltnXSs9eCxvWzFdPW09MCxPPTEsVD0yOzAhPS0tZzspb1tUXT1tKz1uW09dLFQrKyxPKys7Zz0wLE89MDtkb3swIT09KG09clt0K09dKSYmKGRbb1ttXSsrXT1nKSxPKyt9d2hpbGUoKytnPHUpO2Zvcih1PW9bYl0sb1swXT1nPTAsTz0wLHA9LTEsRT0tQSxpWzBdPTAsaz0wLFU9MDtiPj1TO1MrKylmb3IoeT1uW1NdOzAhPXktLTspe2Zvcig7Uz5FK0E7KXtpZihwKyssVT0oVT1iLShFKz1BKSk+QT9BOlUsKHc9MTw8KG09Uy1FKSk+eSsxJiYody09eSsxLFQ9UyxVPm0pKWZvcig7KyttPFUmJih3PDw9MSk+blsrK1RdOyl3LT1uW1RdO2lmKFU9MTw8bSxsWzBdK1U+MTQ0MClyZXR1cm4tMztpW3BdPWs9bFswXSxsWzBdKz1VLDAhPT1wPyhvW3BdPWcsZVswXT1tLGVbMV09QSxtPWc+Pj5FLUEsZVsyXT1rLWlbcC0xXS1tLGguc2V0KGUsMyooaVtwLTFdK20pKSk6c1swXT1rfWZvcihlWzFdPVMtRSx1Pk8/ZFtPXTxmPyhlWzBdPTI1Nj5kW09dPzA6OTYsZVsyXT1kW08rK10pOihlWzBdPWNbZFtPXS1mXSsxNis2NCxlWzJdPWFbZFtPKytdLWZdKTplWzBdPTE5Mix3PTE8PFMtRSxtPWc+Pj5FO1U+bTttKz13KWguc2V0KGUsMyooayttKSk7Zm9yKG09MTw8Uy0xOzAhPShnJm0pO20+Pj49MSlnXj1tO2ZvcihnXj1tLGo9KDE8PEUpLTE7KGcmaikhPW9bcF07KXAtLSxqPSgxPDwoRS09QSkpLTF9cmV0dXJuIDAhPT14JiYxIT1iPy01OjB9ZnVuY3Rpb24gZih1KXt2YXIgZjtmb3Iocnx8KHI9W10sdD1bXSxuPW5ldyBJbnQzMkFycmF5KDE2KSxlPVtdLGk9bmV3IEludDMyQXJyYXkoMTUpLG89bmV3IEludDMyQXJyYXkoMTYpKSx0Lmxlbmd0aDx1JiYodD1bXSksZj0wO3U+ZjtmKyspdFtmXT0wO2ZvcihmPTA7MTY+ZjtmKyspbltmXT0wO2ZvcihmPTA7Mz5mO2YrKyllW2ZdPTA7aS5zZXQobi5zdWJhcnJheSgwLDE1KSwwKSxvLnNldChuLnN1YmFycmF5KDAsMTYpLDApfXRoaXMudmU9ZnVuY3Rpb24obixlLGksbyxhKXt2YXIgYztyZXR1cm4gZigxOSksclswXT0wLC0zPT0oYz11KG4sMCwxOSwxOSxudWxsLG51bGwsaSxlLG8scix0KSk/YS5Rbj0ib3ZlcnN1YnNjcmliZWQgZHluYW1pYyBiaXQgbGVuZ3RocyB0cmVlIjotNSE9YyYmMCE9PWVbMF18fChhLlFuPSJpbmNvbXBsZXRlIGR5bmFtaWMgYml0IGxlbmd0aHMgdHJlZSIsYz0tMyksY30sdGhpcy5oZT1mdW5jdGlvbihuLGUsaSxvLGEsYyxzLHYsaCl7dmFyIGw7cmV0dXJuIGYoMjg4KSxyWzBdPTAsMCE9KGw9dShpLDAsbiwyNTcsWU8sek8sYyxvLHYscix0KSl8fDA9PT1vWzBdPygtMz09bD9oLlFuPSJvdmVyc3Vic2NyaWJlZCBsaXRlcmFsL2xlbmd0aCB0cmVlIjotNCE9bCYmKGguUW49ImluY29tcGxldGUgbGl0ZXJhbC9sZW5ndGggdHJlZSIsbD0tMyksbCk6KGYoMjg4KSwwIT0obD11KGksbixlLDAsV08sJE8scyxhLHYscix0KSl8fDA9PT1hWzBdJiZuPjI1Nz8oLTM9PWw/aC5Rbj0ib3ZlcnN1YnNjcmliZWQgZGlzdGFuY2UgdHJlZSI6LTU9PWw/KGguUW49ImluY29tcGxldGUgZGlzdGFuY2UgdHJlZSIsbD0tMyk6LTQhPWwmJihoLlFuPSJlbXB0eSBkaXN0YW5jZSB0cmVlIHdpdGggbGVuZ3RocyIsbD0tMyksbCk6MCl9fWZ1bmN0aW9uIEtPKCl7dmFyIHIsdCxuLGUsaT10aGlzLG89MCx1PTAsZj0wLGE9MCxjPTAscz0wLHY9MCxoPTAsbD0wLGQ9MDtmdW5jdGlvbiB5KHIsdCxuLGUsaSxvLHUsZil7dmFyIGEsYyxzLHYsaCxsLGQseSx3LGIscCxnLG0sUyxBLGo7ZD1mLmNlLHk9Zi5xbixoPXUubGUsbD11LmRlLGI9KHc9dS53cml0ZSk8dS5yZWFkP3UucmVhZC13LTE6dS5lbmQtdyxwPUdPW3JdLGc9R09bdF07ZG97Zm9yKDsyMD5sOyl5LS0saHw9KDI1NSZmLnllKGQrKykpPDxsLGwrPTg7aWYoMCE9PSh2PShjPW4pW2o9MyooKHM9ZSkrKGE9aCZwKSldKSlmb3IoOzspe2lmKGg+Pj1jW2orMV0sbC09Y1tqKzFdLDAhPSgxNiZ2KSl7Zm9yKHYmPTE1LG09Y1tqKzJdKyhoJkdPW3ZdKSxoPj49dixsLT12OzE1Pmw7KXktLSxofD0oMjU1JmYueWUoZCsrKSk8PGwsbCs9ODtmb3Iodj0oYz1pKVtqPTMqKChzPW8pKyhhPWgmZykpXTs7KXtpZihoPj49Y1tqKzFdLGwtPWNbaisxXSwwIT0oMTYmdikpe2Zvcih2Jj0xNTt2Pmw7KXktLSxofD0oMjU1JmYueWUoZCsrKSk8PGwsbCs9ODtpZihTPWNbaisyXSsoaCZHT1t2XSksaD4+PXYsbC09dixiLT1tLFM+dyl7QT13LVM7ZG97QSs9dS5lbmR9d2hpbGUoMD5BKTtpZihtPih2PXUuZW5kLUEpKXtpZihtLT12LHctQT4wJiZ2PnctQSlkb3t1LndlW3crK109dS53ZVtBKytdfXdoaWxlKDAhPS0tdik7ZWxzZSB1LndlLnNldCh1LndlLnN1YmFycmF5KEEsQSt2KSx3KSx3Kz12LEErPXYsdj0wO0E9MH19ZWxzZSB3LShBPXctUyk+MCYmMj53LUE/KHUud2VbdysrXT11LndlW0ErK10sdS53ZVt3KytdPXUud2VbQSsrXSxtLT0yKToodS53ZS5zZXQodS53ZS5zdWJhcnJheShBLEErMiksdyksdys9MixBKz0yLG0tPTIpO2lmKHctQT4wJiZtPnctQSlkb3t1LndlW3crK109dS53ZVtBKytdfXdoaWxlKDAhPS0tbSk7ZWxzZSB1LndlLnNldCh1LndlLnN1YmFycmF5KEEsQSttKSx3KSx3Kz1tLEErPW0sbT0wO2JyZWFrfWlmKDAhPSg2NCZ2KSlyZXR1cm4gZi5Rbj0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIix5Kz1tPShtPWYucW4teSk+bD4+Mz9sPj4zOm0sZC09bSxsLT1tPDwzLHUubGU9aCx1LmRlPWwsZi5xbj15LGYucmUrPWQtZi5jZSxmLmNlPWQsdS53cml0ZT13LC0zO2ErPWNbaisyXSx2PWNbaj0zKihzKyhhKz1oJkdPW3ZdKSldfWJyZWFrfWlmKDAhPSg2NCZ2KSlyZXR1cm4gMCE9KDMyJnYpPyh5Kz1tPShtPWYucW4teSk+bD4+Mz9sPj4zOm0sZC09bSxsLT1tPDwzLHUubGU9aCx1LmRlPWwsZi5xbj15LGYucmUrPWQtZi5jZSxmLmNlPWQsdS53cml0ZT13LDEpOihmLlFuPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLHkrPW09KG09Zi5xbi15KT5sPj4zP2w+PjM6bSxkLT1tLGwtPW08PDMsdS5sZT1oLHUuZGU9bCxmLnFuPXksZi5yZSs9ZC1mLmNlLGYuY2U9ZCx1LndyaXRlPXcsLTMpO2lmKGErPWNbaisyXSwwPT09KHY9Y1tqPTMqKHMrKGErPWgmR09bdl0pKV0pKXtoPj49Y1tqKzFdLGwtPWNbaisxXSx1LndlW3crK109Y1tqKzJdLGItLTticmVha319ZWxzZSBoPj49Y1tqKzFdLGwtPWNbaisxXSx1LndlW3crK109Y1tqKzJdLGItLX13aGlsZShiPj0yNTgmJnk+PTEwKTtyZXR1cm4geSs9bT0obT1mLnFuLXkpPmw+PjM/bD4+MzptLGQtPW0sbC09bTw8Myx1LmxlPWgsdS5kZT1sLGYucW49eSxmLnJlKz1kLWYuY2UsZi5jZT1kLHUud3JpdGU9dywwfWkuaW5pdD1mdW5jdGlvbihpLG8sdSxmLGEsYyl7cj0wLHY9aSxoPW8sbj11LGw9ZixlPWEsZD1jLHQ9bnVsbH0saS5iZT1mdW5jdGlvbihpLHcsYil7dmFyIHAsZyxtLFMsQSxqLE8saz0wLEU9MCxUPTA7Zm9yKFQ9dy5jZSxTPXcucW4saz1pLmxlLEU9aS5kZSxqPShBPWkud3JpdGUpPGkucmVhZD9pLnJlYWQtQS0xOmkuZW5kLUE7Oylzd2l0Y2gocil7Y2FzZSAwOmlmKGo+PTI1OCYmUz49MTAmJihpLmxlPWssaS5kZT1FLHcucW49Uyx3LnJlKz1ULXcuY2Usdy5jZT1ULGkud3JpdGU9QSxiPXkodixoLG4sbCxlLGQsaSx3KSxUPXcuY2UsUz13LnFuLGs9aS5sZSxFPWkuZGUsaj0oQT1pLndyaXRlKTxpLnJlYWQ/aS5yZWFkLUEtMTppLmVuZC1BLDAhPWIpKXtyPTE9PWI/Nzo5O2JyZWFrfWY9dix0PW4sdT1sLHI9MTtjYXNlIDE6Zm9yKHA9ZjtwPkU7KXtpZigwPT09UylyZXR1cm4gaS5sZT1rLGkuZGU9RSx3LnFuPVMsdy5yZSs9VC13LmNlLHcuY2U9VCxpLndyaXRlPUEsaS5wZSh3LGIpO2I9MCxTLS0sa3w9KDI1NSZ3LnllKFQrKykpPDxFLEUrPTh9aWYoaz4+Pj10WzErKGc9MyoodSsoayZHT1twXSkpKV0sRS09dFtnKzFdLDA9PT0obT10W2ddKSl7YT10W2crMl0scj02O2JyZWFrfWlmKDAhPSgxNiZtKSl7Yz0xNSZtLG89dFtnKzJdLHI9MjticmVha31pZigwPT0oNjQmbSkpe2Y9bSx1PWcvMyt0W2crMl07YnJlYWt9aWYoMCE9KDMyJm0pKXtyPTc7YnJlYWt9cmV0dXJuIHI9OSx3LlFuPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLGI9LTMsaS5sZT1rLGkuZGU9RSx3LnFuPVMsdy5yZSs9VC13LmNlLHcuY2U9VCxpLndyaXRlPUEsaS5wZSh3LGIpO2Nhc2UgMjpmb3IocD1jO3A+RTspe2lmKDA9PT1TKXJldHVybiBpLmxlPWssaS5kZT1FLHcucW49Uyx3LnJlKz1ULXcuY2Usdy5jZT1ULGkud3JpdGU9QSxpLnBlKHcsYik7Yj0wLFMtLSxrfD0oMjU1JncueWUoVCsrKSk8PEUsRSs9OH1vKz1rJkdPW3BdLGs+Pj1wLEUtPXAsZj1oLHQ9ZSx1PWQscj0zO2Nhc2UgMzpmb3IocD1mO3A+RTspe2lmKDA9PT1TKXJldHVybiBpLmxlPWssaS5kZT1FLHcucW49Uyx3LnJlKz1ULXcuY2Usdy5jZT1ULGkud3JpdGU9QSxpLnBlKHcsYik7Yj0wLFMtLSxrfD0oMjU1JncueWUoVCsrKSk8PEUsRSs9OH1pZihrPj49dFsxKyhnPTMqKHUrKGsmR09bcF0pKSldLEUtPXRbZysxXSwwIT0oMTYmKG09dFtnXSkpKXtjPTE1Jm0scz10W2crMl0scj00O2JyZWFrfWlmKDA9PSg2NCZtKSl7Zj1tLHU9Zy8zK3RbZysyXTticmVha31yZXR1cm4gcj05LHcuUW49ImludmFsaWQgZGlzdGFuY2UgY29kZSIsYj0tMyxpLmxlPWssaS5kZT1FLHcucW49Uyx3LnJlKz1ULXcuY2Usdy5jZT1ULGkud3JpdGU9QSxpLnBlKHcsYik7Y2FzZSA0OmZvcihwPWM7cD5FOyl7aWYoMD09PVMpcmV0dXJuIGkubGU9ayxpLmRlPUUsdy5xbj1TLHcucmUrPVQtdy5jZSx3LmNlPVQsaS53cml0ZT1BLGkucGUodyxiKTtiPTAsUy0tLGt8PSgyNTUmdy55ZShUKyspKTw8RSxFKz04fXMrPWsmR09bcF0saz4+PXAsRS09cCxyPTU7Y2FzZSA1OmZvcihPPUEtczswPk87KU8rPWkuZW5kO2Zvcig7MCE9PW87KXtpZigwPT09aiYmKEE9PWkuZW5kJiYwIT09aS5yZWFkJiYoaj0oQT0wKTxpLnJlYWQ/aS5yZWFkLUEtMTppLmVuZC1BKSwwPT09aiYmKGkud3JpdGU9QSxiPWkucGUodyxiKSxqPShBPWkud3JpdGUpPGkucmVhZD9pLnJlYWQtQS0xOmkuZW5kLUEsQT09aS5lbmQmJjAhPT1pLnJlYWQmJihqPShBPTApPGkucmVhZD9pLnJlYWQtQS0xOmkuZW5kLUEpLDA9PT1qKSkpcmV0dXJuIGkubGU9ayxpLmRlPUUsdy5xbj1TLHcucmUrPVQtdy5jZSx3LmNlPVQsaS53cml0ZT1BLGkucGUodyxiKTtpLndlW0ErK109aS53ZVtPKytdLGotLSxPPT1pLmVuZCYmKE89MCksby0tfXI9MDticmVhaztjYXNlIDY6aWYoMD09PWomJihBPT1pLmVuZCYmMCE9PWkucmVhZCYmKGo9KEE9MCk8aS5yZWFkP2kucmVhZC1BLTE6aS5lbmQtQSksMD09PWomJihpLndyaXRlPUEsYj1pLnBlKHcsYiksaj0oQT1pLndyaXRlKTxpLnJlYWQ/aS5yZWFkLUEtMTppLmVuZC1BLEE9PWkuZW5kJiYwIT09aS5yZWFkJiYoaj0oQT0wKTxpLnJlYWQ/aS5yZWFkLUEtMTppLmVuZC1BKSwwPT09aikpKXJldHVybiBpLmxlPWssaS5kZT1FLHcucW49Uyx3LnJlKz1ULXcuY2Usdy5jZT1ULGkud3JpdGU9QSxpLnBlKHcsYik7Yj0wLGkud2VbQSsrXT1hLGotLSxyPTA7YnJlYWs7Y2FzZSA3OmlmKEU+NyYmKEUtPTgsUysrLFQtLSksaS53cml0ZT1BLGI9aS5wZSh3LGIpLGo9KEE9aS53cml0ZSk8aS5yZWFkP2kucmVhZC1BLTE6aS5lbmQtQSxpLnJlYWQhPWkud3JpdGUpcmV0dXJuIGkubGU9ayxpLmRlPUUsdy5xbj1TLHcucmUrPVQtdy5jZSx3LmNlPVQsaS53cml0ZT1BLGkucGUodyxiKTtyPTg7Y2FzZSA4OnJldHVybiBiPTEsaS5sZT1rLGkuZGU9RSx3LnFuPVMsdy5yZSs9VC13LmNlLHcuY2U9VCxpLndyaXRlPUEsaS5wZSh3LGIpO2Nhc2UgOTpyZXR1cm4gYj0tMyxpLmxlPWssaS5kZT1FLHcucW49Uyx3LnJlKz1ULXcuY2Usdy5jZT1ULGkud3JpdGU9QSxpLnBlKHcsYik7ZGVmYXVsdDpyZXR1cm4gYj0tMixpLmxlPWssaS5kZT1FLHcucW49Uyx3LnJlKz1ULXcuY2Usdy5jZT1ULGkud3JpdGU9QSxpLnBlKHcsYil9fSxpLmdlPWZ1bmN0aW9uKCl7fX1ITy5tZT1mdW5jdGlvbihyLHQsbixlKXtyZXR1cm4gclswXT05LHRbMF09NSxuWzBdPURPLGVbMF09Vk8sMH07dmFyIHFPPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XTtmdW5jdGlvbiBKTyhyLHQpe3ZhciBuLGU9dGhpcyxpPTAsbz0wLHU9MCxmPTAsYT1bMF0sYz1bMF0scz1uZXcgS08sdj0wLGg9bmV3IEludDMyQXJyYXkoNDMyMCksbD1uZXcgSE87ZS5kZT0wLGUubGU9MCxlLndlPW5ldyBVaW50OEFycmF5KHQpLGUuZW5kPXQsZS5yZWFkPTAsZS53cml0ZT0wLGUucmVzZXQ9ZnVuY3Rpb24ocix0KXt0JiYodFswXT0wKSw2PT1pJiZzLmdlKHIpLGk9MCxlLmRlPTAsZS5sZT0wLGUucmVhZD1lLndyaXRlPTB9LGUucmVzZXQocixudWxsKSxlLnBlPWZ1bmN0aW9uKHIsdCl7dmFyIG4saSxvO3JldHVybiBpPXIuc2UsKG49KChvPWUucmVhZCk+ZS53cml0ZT9lLmVuZDplLndyaXRlKS1vKT5yLmFlJiYobj1yLmFlKSwwIT09biYmLTU9PXQmJih0PTApLHIuYWUtPW4sci50ZSs9bixyLnVlLnNldChlLndlLnN1YmFycmF5KG8sbytuKSxpKSxpKz1uLChvKz1uKT09ZS5lbmQmJihvPTAsZS53cml0ZT09ZS5lbmQmJihlLndyaXRlPTApLChuPWUud3JpdGUtbyk+ci5hZSYmKG49ci5hZSksMCE9PW4mJi01PT10JiYodD0wKSxyLmFlLT1uLHIudGUrPW4sci51ZS5zZXQoZS53ZS5zdWJhcnJheShvLG8rbiksaSksaSs9bixvKz1uKSxyLnNlPWksZS5yZWFkPW8sdH0sZS5iZT1mdW5jdGlvbihyLHQpe3ZhciBkLHksdyxiLHAsZyxtLFM7Zm9yKGI9ci5jZSxwPXIucW4seT1lLmxlLHc9ZS5kZSxtPShnPWUud3JpdGUpPGUucmVhZD9lLnJlYWQtZy0xOmUuZW5kLWc7Oyl7dmFyIEE9dm9pZCAwLGo9dm9pZCAwLE89dm9pZCAwLGs9dm9pZCAwLEU9dm9pZCAwLFQ9dm9pZCAwLHg9dm9pZCAwLFU9dm9pZCAwO3N3aXRjaChpKXtjYXNlIDA6Zm9yKDszPnc7KXtpZigwPT09cClyZXR1cm4gZS5sZT15LGUuZGU9dyxyLnFuPXAsci5yZSs9Yi1yLmNlLHIuY2U9YixlLndyaXRlPWcsZS5wZShyLHQpO3Q9MCxwLS0seXw9KDI1NSZyLnllKGIrKykpPDx3LHcrPTh9c3dpdGNoKHY9MSYoZD03JnkpLGQ+Pj4xKXtjYXNlIDA6eT4+Pj0zLHk+Pj49ZD03Jih3LT0zKSx3LT1kLGk9MTticmVhaztjYXNlIDE6QT1bXSxqPVtdLE89W1tdXSxrPVtbXV0sSE8ubWUoQSxqLE8saykscy5pbml0KEFbMF0salswXSxPWzBdLDAsa1swXSwwKSx5Pj4+PTMsdy09MyxpPTY7YnJlYWs7Y2FzZSAyOnk+Pj49Myx3LT0zLGk9MzticmVhaztjYXNlIDM6cmV0dXJuIHk+Pj49Myx3LT0zLGk9OSxyLlFuPSJpbnZhbGlkIGJsb2NrIHR5cGUiLHQ9LTMsZS5sZT15LGUuZGU9dyxyLnFuPXAsci5yZSs9Yi1yLmNlLHIuY2U9YixlLndyaXRlPWcsZS5wZShyLHQpfWJyZWFrO2Nhc2UgMTpmb3IoOzMyPnc7KXtpZigwPT09cClyZXR1cm4gZS5sZT15LGUuZGU9dyxyLnFuPXAsci5yZSs9Yi1yLmNlLHIuY2U9YixlLndyaXRlPWcsZS5wZShyLHQpO3Q9MCxwLS0seXw9KDI1NSZyLnllKGIrKykpPDx3LHcrPTh9aWYoKH55Pj4+MTYmNjU1MzUpIT0oNjU1MzUmeSkpcmV0dXJuIGk9OSxyLlFuPSJpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzIix0PS0zLGUubGU9eSxlLmRlPXcsci5xbj1wLHIucmUrPWItci5jZSxyLmNlPWIsZS53cml0ZT1nLGUucGUocix0KTtvPTY1NTM1JnkseT13PTAsaT0wIT09bz8yOjAhPT12Pzc6MDticmVhaztjYXNlIDI6aWYoMD09PXApcmV0dXJuIGUubGU9eSxlLmRlPXcsci5xbj1wLHIucmUrPWItci5jZSxyLmNlPWIsZS53cml0ZT1nLGUucGUocix0KTtpZigwPT09bSYmKGc9PWUuZW5kJiYwIT09ZS5yZWFkJiYobT0oZz0wKTxlLnJlYWQ/ZS5yZWFkLWctMTplLmVuZC1nKSwwPT09bSYmKGUud3JpdGU9Zyx0PWUucGUocix0KSxtPShnPWUud3JpdGUpPGUucmVhZD9lLnJlYWQtZy0xOmUuZW5kLWcsZz09ZS5lbmQmJjAhPT1lLnJlYWQmJihtPShnPTApPGUucmVhZD9lLnJlYWQtZy0xOmUuZW5kLWcpLDA9PT1tKSkpcmV0dXJuIGUubGU9eSxlLmRlPXcsci5xbj1wLHIucmUrPWItci5jZSxyLmNlPWIsZS53cml0ZT1nLGUucGUocix0KTtpZih0PTAsKGQ9byk+cCYmKGQ9cCksZD5tJiYoZD1tKSxlLndlLnNldChyLkpuKGIsZCksZyksYis9ZCxwLT1kLGcrPWQsbS09ZCwwIT0oby09ZCkpYnJlYWs7aT0wIT09dj83OjA7YnJlYWs7Y2FzZSAzOmZvcig7MTQ+dzspe2lmKDA9PT1wKXJldHVybiBlLmxlPXksZS5kZT13LHIucW49cCxyLnJlKz1iLXIuY2Usci5jZT1iLGUud3JpdGU9ZyxlLnBlKHIsdCk7dD0wLHAtLSx5fD0oMjU1JnIueWUoYisrKSk8PHcsdys9OH1pZih1PWQ9MTYzODMmeSwoMzEmZCk+Mjl8fChkPj41JjMxKT4yOSlyZXR1cm4gaT05LHIuUW49InRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzIix0PS0zLGUubGU9eSxlLmRlPXcsci5xbj1wLHIucmUrPWItci5jZSxyLmNlPWIsZS53cml0ZT1nLGUucGUocix0KTtpZihkPTI1OCsoMzEmZCkrKGQ+PjUmMzEpLCFufHxuLmxlbmd0aDxkKW49W107ZWxzZSBmb3IoUz0wO2Q+UztTKyspbltTXT0wO3k+Pj49MTQsdy09MTQsZj0wLGk9NDtjYXNlIDQ6Zm9yKDs0Kyh1Pj4+MTApPmY7KXtmb3IoOzM+dzspe2lmKDA9PT1wKXJldHVybiBlLmxlPXksZS5kZT13LHIucW49cCxyLnJlKz1iLXIuY2Usci5jZT1iLGUud3JpdGU9ZyxlLnBlKHIsdCk7dD0wLHAtLSx5fD0oMjU1JnIueWUoYisrKSk8PHcsdys9OH1uW3FPW2YrK11dPTcmeSx5Pj4+PTMsdy09M31mb3IoOzE5PmY7KW5bcU9bZisrXV09MDtpZihhWzBdPTcsMCE9KGQ9bC52ZShuLGEsYyxoLHIpKSlyZXR1cm4tMz09KHQ9ZCkmJihuPW51bGwsaT05KSxlLmxlPXksZS5kZT13LHIucW49cCxyLnJlKz1iLXIuY2Usci5jZT1iLGUud3JpdGU9ZyxlLnBlKHIsdCk7Zj0wLGk9NTtjYXNlIDU6Zm9yKDtmPDI1OCsoMzEmKGQ9dSkpKyhkPj41JjMxKTspe3ZhciBNPXZvaWQgMCxJPXZvaWQgMDtmb3IoZD1hWzBdO2Q+dzspe2lmKDA9PT1wKXJldHVybiBlLmxlPXksZS5kZT13LHIucW49cCxyLnJlKz1iLXIuY2Usci5jZT1iLGUud3JpdGU9ZyxlLnBlKHIsdCk7dD0wLHAtLSx5fD0oMjU1JnIueWUoYisrKSk8PHcsdys9OH1pZihkPWhbMyooY1swXSsoeSZHT1tkXSkpKzFdLDE2PihJPWhbMyooY1swXSsoeSZHT1tkXSkpKzJdKSl5Pj4+PWQsdy09ZCxuW2YrK109STtlbHNle2ZvcihTPTE4PT1JPzc6SS0xNCxNPTE4PT1JPzExOjM7ZCtTPnc7KXtpZigwPT09cClyZXR1cm4gZS5sZT15LGUuZGU9dyxyLnFuPXAsci5yZSs9Yi1yLmNlLHIuY2U9YixlLndyaXRlPWcsZS5wZShyLHQpO3Q9MCxwLS0seXw9KDI1NSZyLnllKGIrKykpPDx3LHcrPTh9aWYody09ZCxNKz0oeT4+Pj1kKSZHT1tTXSx5Pj4+PVMsdy09UywoUz1mKStNPjI1OCsoMzEmKGQ9dSkpKyhkPj41JjMxKXx8MTY9PUkmJjE+UylyZXR1cm4gbj1udWxsLGk9OSxyLlFuPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0Iix0PS0zLGUubGU9eSxlLmRlPXcsci5xbj1wLHIucmUrPWItci5jZSxyLmNlPWIsZS53cml0ZT1nLGUucGUocix0KTtJPTE2PT1JP25bUy0xXTowO2Rve25bUysrXT1JfXdoaWxlKDAhPS0tTSk7Zj1TfX1pZihjWzBdPS0xLFQ9W10seD1bXSxVPVtdLChFPVtdKVswXT05LFRbMF09NixkPXUsMCE9KGQ9bC5oZSgyNTcrKDMxJmQpLDErKGQ+PjUmMzEpLG4sRSxULHgsVSxoLHIpKSlyZXR1cm4tMz09ZCYmKG49bnVsbCxpPTkpLHQ9ZCxlLmxlPXksZS5kZT13LHIucW49cCxyLnJlKz1iLXIuY2Usci5jZT1iLGUud3JpdGU9ZyxlLnBlKHIsdCk7cy5pbml0KEVbMF0sVFswXSxoLHhbMF0saCxVWzBdKSxpPTY7Y2FzZSA2OmlmKGUubGU9eSxlLmRlPXcsci5xbj1wLHIucmUrPWItci5jZSxyLmNlPWIsZS53cml0ZT1nLDEhPSh0PXMuYmUoZSxyLHQpKSlyZXR1cm4gZS5wZShyLHQpO2lmKHQ9MCxzLmdlKHIpLGI9ci5jZSxwPXIucW4seT1lLmxlLHc9ZS5kZSxtPShnPWUud3JpdGUpPGUucmVhZD9lLnJlYWQtZy0xOmUuZW5kLWcsMD09PXYpe2k9MDticmVha31pPTc7Y2FzZSA3OmlmKGUud3JpdGU9Zyx0PWUucGUocix0KSxtPShnPWUud3JpdGUpPGUucmVhZD9lLnJlYWQtZy0xOmUuZW5kLWcsZS5yZWFkIT1lLndyaXRlKXJldHVybiBlLmxlPXksZS5kZT13LHIucW49cCxyLnJlKz1iLXIuY2Usci5jZT1iLGUud3JpdGU9ZyxlLnBlKHIsdCk7aT04O2Nhc2UgODpyZXR1cm4gdD0xLGUubGU9eSxlLmRlPXcsci5xbj1wLHIucmUrPWItci5jZSxyLmNlPWIsZS53cml0ZT1nLGUucGUocix0KTtjYXNlIDk6cmV0dXJuIHQ9LTMsZS5sZT15LGUuZGU9dyxyLnFuPXAsci5yZSs9Yi1yLmNlLHIuY2U9YixlLndyaXRlPWcsZS5wZShyLHQpO2RlZmF1bHQ6cmV0dXJuIHQ9LTIsZS5sZT15LGUuZGU9dyxyLnFuPXAsci5yZSs9Yi1yLmNlLHIuY2U9YixlLndyaXRlPWcsZS5wZShyLHQpfX19LGUuZ2U9ZnVuY3Rpb24ocil7ZS5yZXNldChyLG51bGwpLGUud2U9bnVsbCxoPW51bGx9LGUuU2U9ZnVuY3Rpb24ocix0LG4pe2Uud2Uuc2V0KHIuc3ViYXJyYXkodCx0K24pLDApLGUucmVhZD1lLndyaXRlPW59LGUuQWU9ZnVuY3Rpb24oKXtyZXR1cm4gMT09aT8xOjB9fXZhciBYTz1bMCwwLDI1NSwyNTVdO2Z1bmN0aW9uIFFPKCl7dmFyIHI9dGhpcztmdW5jdGlvbiB0KHIpe3JldHVybiByJiZyLmplPyhyLnJlPXIudGU9MCxyLlFuPW51bGwsci5qZS5tb2RlPTcsci5qZS5PZS5yZXNldChyLG51bGwpLDApOi0yfXIubW9kZT0wLHIubWV0aG9kPTAsci5rZT1bMF0sci5FZT0wLHIubWFya2VyPTAsci5UZT0wLHIueGU9ZnVuY3Rpb24odCl7cmV0dXJuIHIuT2UmJnIuT2UuZ2UodCksci5PZT1udWxsLDB9LHIuVWU9ZnVuY3Rpb24obixlKXtyZXR1cm4gbi5Rbj1udWxsLHIuT2U9bnVsbCw4PmV8fGU+MTU/KHIueGUobiksLTIpOihyLlRlPWUsbi5qZS5PZT1uZXcgSk8obiwxPDxlKSx0KG4pLDApfSxyLlp0PWZ1bmN0aW9uKHIsdCl7dmFyIG4sZTtpZighcnx8IXIuamV8fCFyLmZlKXJldHVybi0yO3ZhciBpPXIuamU7Zm9yKHQ9ND09dD8tNTowLG49LTU7Oylzd2l0Y2goaS5tb2RlKXtjYXNlIDA6aWYoMD09PXIucW4pcmV0dXJuIG47aWYobj10LHIucW4tLSxyLnJlKyssOCE9KDE1JihpLm1ldGhvZD1yLnllKHIuY2UrKykpKSl7aS5tb2RlPTEzLHIuUW49InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIixpLm1hcmtlcj01O2JyZWFrfWlmKDgrKGkubWV0aG9kPj40KT5pLlRlKXtpLm1vZGU9MTMsci5Rbj0iaW52YWxpZCB3aW4gc2l6ZSIsaS5tYXJrZXI9NTticmVha31pLm1vZGU9MTtjYXNlIDE6aWYoMD09PXIucW4pcmV0dXJuIG47aWYobj10LHIucW4tLSxyLnJlKyssZT0yNTUmci55ZShyLmNlKyspLCgoaS5tZXRob2Q8PDgpK2UpJTMxIT0wKXtpLm1vZGU9MTMsci5Rbj0iaW5jb3JyZWN0IGhlYWRlciBjaGVjayIsaS5tYXJrZXI9NTticmVha31pZigwPT0oMzImZSkpe2kubW9kZT03O2JyZWFrfWkubW9kZT0yO2Nhc2UgMjppZigwPT09ci5xbilyZXR1cm4gbjtuPXQsci5xbi0tLHIucmUrKyxpLkVlPSgyNTUmci55ZShyLmNlKyspKTw8MjQmNDI3ODE5MDA4MCxpLm1vZGU9MztjYXNlIDM6aWYoMD09PXIucW4pcmV0dXJuIG47bj10LHIucW4tLSxyLnJlKyssaS5FZSs9KDI1NSZyLnllKHIuY2UrKykpPDwxNiYxNjcxMTY4MCxpLm1vZGU9NDtjYXNlIDQ6aWYoMD09PXIucW4pcmV0dXJuIG47bj10LHIucW4tLSxyLnJlKyssaS5FZSs9KDI1NSZyLnllKHIuY2UrKykpPDw4JjY1MjgwLGkubW9kZT01O2Nhc2UgNTpyZXR1cm4gMD09PXIucW4/bjoobj10LHIucW4tLSxyLnJlKyssaS5FZSs9MjU1JnIueWUoci5jZSsrKSxpLm1vZGU9NiwyKTtjYXNlIDY6cmV0dXJuIGkubW9kZT0xMyxyLlFuPSJuZWVkIGRpY3Rpb25hcnkiLGkubWFya2VyPTAsLTI7Y2FzZSA3OmlmKC0zPT0obj1pLk9lLmJlKHIsbikpKXtpLm1vZGU9MTMsaS5tYXJrZXI9MDticmVha31pZigwPT1uJiYobj10KSwxIT1uKXJldHVybiBuO249dCxpLk9lLnJlc2V0KHIsaS5rZSksaS5tb2RlPTEyO2Nhc2UgMTI6cmV0dXJuIHIucW49MCwxO2Nhc2UgMTM6cmV0dXJuLTM7ZGVmYXVsdDpyZXR1cm4tMn19LHIuTWU9ZnVuY3Rpb24ocix0LG4pe3ZhciBlPTAsaT1uO2lmKCFyfHwhci5qZXx8NiE9ci5qZS5tb2RlKXJldHVybi0yO3ZhciBvPXIuamU7cmV0dXJuIGk8MTw8by5UZXx8KGU9bi0oaT0oMTw8by5UZSktMSkpLG8uT2UuU2UodCxlLGkpLG8ubW9kZT03LDB9LHIuSWU9ZnVuY3Rpb24ocil7dmFyIG4sZSxpLG8sdTtpZighcnx8IXIuamUpcmV0dXJuLTI7dmFyIGY9ci5qZTtpZigxMyE9Zi5tb2RlJiYoZi5tb2RlPTEzLGYubWFya2VyPTApLDA9PT0obj1yLnFuKSlyZXR1cm4tNTtmb3IoZT1yLmNlLGk9Zi5tYXJrZXI7MCE9PW4mJjQ+aTspci55ZShlKT09WE9baV0/aSsrOmk9MCE9PXIueWUoZSk/MDo0LWksZSsrLG4tLTtyZXR1cm4gci5yZSs9ZS1yLmNlLHIuY2U9ZSxyLnFuPW4sZi5tYXJrZXI9aSw0IT1pPy0zOihvPXIucmUsdT1yLnRlLHQociksci5yZT1vLHIudGU9dSxmLm1vZGU9NywwKX0sci5MZT1mdW5jdGlvbihyKXtyZXR1cm4gciYmci5qZSYmci5qZS5PZT9yLmplLk9lLkFlKCk6LTJ9fWZ1bmN0aW9uIFpPKCl7fWZ1bmN0aW9uIHJrKHIpe3ZhciB0PW5ldyBaTyxuPXImJnIuUXQ/TWF0aC5mbG9vcigyKnIuUXQpOjEzMTA3MixlPW5ldyBVaW50OEFycmF5KG4pLGk9ITE7dC5VZSgpLHQudWU9ZSx0aGlzLmFwcGVuZD1mdW5jdGlvbihyLG8pe3ZhciB1LGYsYT1bXSxjPTAscz0wLHY9MDtpZigwIT09ci5sZW5ndGgpe3QuY2U9MCx0LmZlPXIsdC5xbj1yLmxlbmd0aDtkb3tpZih0LnNlPTAsdC5hZT1uLDAhPT10LnFufHxpfHwodC5jZT0wLGk9ITApLHU9dC5adCgwKSxpJiYtNT09PXUpe2lmKDAhPT10LnFuKXRocm93IEVycm9yKCJpbmZsYXRpbmc6IGJhZCBpbnB1dCIpfWVsc2UgaWYoMCE9PXUmJjEhPT11KXRocm93IEVycm9yKCJpbmZsYXRpbmc6ICIrdC5Rbik7aWYoKGl8fDE9PT11KSYmdC5xbj09PXIubGVuZ3RoKXRocm93IEVycm9yKCJpbmZsYXRpbmc6IGJhZCBpbnB1dCIpO3Quc2UmJih0LnNlPT09bj9hLnB1c2gobmV3IFVpbnQ4QXJyYXkoZSkpOmEucHVzaChlLnNsaWNlKDAsdC5zZSkpKSx2Kz10LnNlLG8mJnQuY2U+MCYmdC5jZSE9YyYmKG8odC5jZSksYz10LmNlKX13aGlsZSh0LnFuPjB8fDA9PT10LmFlKTtyZXR1cm4gYS5sZW5ndGg+MT8oZj1uZXcgVWludDhBcnJheSh2KSxhLmZvckVhY2goKGZ1bmN0aW9uKHIpe2Yuc2V0KHIscykscys9ci5sZW5ndGh9KSkpOmY9YVswXXx8bmV3IFVpbnQ4QXJyYXkoMCksZn19LHRoaXMuZmx1c2g9ZnVuY3Rpb24oKXt0LnhlKCl9fVpPLnByb3RvdHlwZT17VWU6ZnVuY3Rpb24ocil7dmFyIHQ9dGhpcztyZXR1cm4gdC5qZT1uZXcgUU8scnx8KHI9MTUpLHQuamUuVWUodCxyKX0sWnQ6ZnVuY3Rpb24ocil7dmFyIHQ9dGhpcztyZXR1cm4gdC5qZT90LmplLlp0KHQscik6LTJ9LHhlOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcztpZighci5qZSlyZXR1cm4tMjt2YXIgdD1yLmplLnhlKHIpO3JldHVybiByLmplPW51bGwsdH0sSWU6ZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiByLmplP3IuamUuSWUocik6LTJ9LE1lOmZ1bmN0aW9uKHIsdCl7dmFyIG49dGhpcztyZXR1cm4gbi5qZT9uLmplLk1lKG4scix0KTotMn0seWU6ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuZmVbcl19LEpuOmZ1bmN0aW9uKHIsdCl7cmV0dXJuIHRoaXMuZmUuc3ViYXJyYXkocixyK3QpfX0sc2VsZi5pbml0Q29kZWM9ZnVuY3Rpb24oKXtzZWxmLkRlZmxhdGU9Qk8sc2VsZi5JbmZsYXRlPXJrfTsK")],{type:"text/javascript"}))};t({workerScripts:{inflate:[i],deflate:[i]}})}}(lr),t.BlobReader=IH,t.BlobWriter=GH,t.Data64URIReader=LH,t.Data64URIWriter=XH,t.ERR_ABORT=yv,t.ERR_BAD_FORMAT=Iv,t.ERR_CENTRAL_DIRECTORY_NOT_FOUND=fv,t.ERR_DUPLICATED_NAME=rP,t.ERR_ENCRYPTED=wv,t.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=Wv,t.ERR_EOCDR_NOT_FOUND=Gv,t.ERR_EOCDR_ZIP64_NOT_FOUND=Kv,t.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=xv,t.ERR_HTTP_RANGE=nH,t.ERR_INVALID_COMMENT=cP,t.ERR_INVALID_ENCRYPTION_STRENGTH=uP,t.ERR_INVALID_ENTRY_COMMENT=dP,t.ERR_INVALID_ENTRY_NAME=lP,t.ERR_INVALID_EXTRAFIELD_DATA=aP,t.ERR_INVALID_EXTRAFIELD_TYPE=sP,t.ERR_INVALID_PASSWORD=hS,t.ERR_INVALID_SIGNATURE=AS,t.ERR_INVALID_VERSION=oP,t.ERR_LOCAL_FILE_HEADER_NOT_FOUND=Sv,t.ERR_NOT_SEEKABLE_READER=rH,t.ERR_UNSUPPORTED_COMPRESSION=Vv,t.ERR_UNSUPPORTED_ENCRYPTION=Yv,t.ERR_UNSUPPORTED_FORMAT=mP,t.HttpRangeReader=HH,t.HttpReader=gH,t.ReadableStreamReader=fH,t.Reader=bH,t.TextReader=hH,t.TextWriter=ZH,t.Uint8ArrayReader=vH,t.Uint8ArrayWriter=PH,t.WritableStreamWriter=SH,t.Writer=pH,t.ZipReader=vv,t.ZipWriter=hP,t.configure=lr,t.fs=JP,t.getMimeType=function(){return"application/octet-stream"},t.initShimAsyncCodec=function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=arguments.length>2?arguments[2]:void 0;return{Deflate:uX(t.Deflate,i.deflate,e),Inflate:uX(t.Inflate,i.inflate,e)}},t.terminateWorkers=function(){rx.forEach((function(t){lx(t),t.terminate()}))},Object.defineProperty(t,"__esModule",{value:!0})}));
|